在標準ax中,允許在table中上傳文件,而這些文件是專用乙個表來儲存的,這個表是docuvalue
ax將所有table的文件都儲存在一起,那麼必定有關係將記錄連線,這種關係就是:
dataareaid
tableid
recid
文件儲存使用到了兩個表,docuref與docuvalue.
docuref存放的是各表的引用關係,而docuvalue則存放的是文件的核心內容。
這種關係可以用一條sql來說明:
select firstonly tableid from docuref
where docuref.refcompanyid == inventtable.dataareaid &&
docuref.reftableid == inventtable.tableid &&
docuref.refrecid == inventtable.recid &&
docuref.typeid == 「"
join docuvalue
where
docuvalue.recid == docuref,valuerecid;
docuvalue.file欄位是文件內容,另外如果是指定路徑而非將文件存放在docuvalue中,除了使用上述邏輯之外,還需要獲取文件存放路徑。
在docuvalue中有幾個欄位是存放檔案路徑用的,乙個完整的檔案路徑存放在下面三個欄位中。
path
filename
filetype
不過,docuref表為我們提供了乙個方法用於取檔案路徑,此方法名是:
docuref.completefilename();
這個方法使用很簡單:
docuref::findrecid(….).completefilename(); //即可返回需要的檔案路徑
對於「多執行緒訪問同乙個變數是否需要加鎖」的研究
對於多執行緒訪問同一變數是否需要加鎖的問題,先前大家都討論過。今天用 驗證了一下之前的猜想 32位cpu與記憶體的最小交換資料為4位元組 次,這也是結構體要對齊4位元組的原因。在物理上,cpu對於同一4位元組的記憶體單元,不可能寫2個位元組的同時,又讀了3位元組。測試環境為 xeon 2cpu 2 ...