主頁 > 資料庫 > pb9.0與二代身份證通信問題

pb9.0與二代身份證通信問題

2020-09-15 16:26:59 資料庫

想要用pb制作一個出生醫學證明卡,需要錄入父母的身份證資訊,購買了一家公司的二代身份證讀卡機。現在主要的問題是如何實作pb與此設備的介面問題,以實作刷卡時自動將身份證相關資訊填充到相應位置,請高手指點思路

uj5u.com熱心網友回復:

問硬體開發商要介面,不給就換硬體。

uj5u.com熱心網友回復:

硬體開發商都有各種語言的DEMO

uj5u.com熱心網友回復:

一般硬體廠商都提供介面的

uj5u.com熱心網友回復:

這是我原來做的一個專案用來獲取身份證資訊的。
下面是設備商提供的介面說明

1.前言
本應用程式介面(API)用于二代證驗證系統的驗證終端應用系統的開發。

2.系統要求
使用本API的PC機,必須滿足下列條件:
? Windows 98,Windows 2000 Pro,Windows 2000 Server,WinXP
? 至少32兆記憶體(32M RAM or Larger)
? 至少10兆空閑硬碟空間(10M Free Hard Disk Space or Larger)
? 至少一個空閑普通串口或USB口(視用戶需求而定)。
3.API串列
應用函式開發包含下列檔案:
cardapi.lib       API函式的VC開發包
cardapi.h            API函式宣告
cardapi.dll       API函式的動態聯接庫
stdapi.dll           cardapi.dll的依賴動態聯接庫
WltRS.dll       cardapi.dll的依賴動態聯接庫

序號 函式名 功能描述
1. checkCardReaderValid 檢查讀卡器是否可以正常作業
2. getImagePath 獲取保存照片檔案的路徑
3. getPersonMsg 獲取身份證的基本資訊
4. getNewAddress 獲取更新地址資訊
5. resetCardReader 復位讀卡器

4.API詳細說明
4.1 checkCardReaderValid

檢查讀卡器是否可以正常作業。
char*  checkCardReaderValid (int iPort);

引數說明:
int iPort 
0為自動檢測
1-16為串口1-16口
1001-1016為USB1-16口

回傳值:字串
第一個字符為’1’,表示讀卡器可以正常作業;
第一個字符為’0’,表示檢測失敗;
第一個字符后緊接檢測成功或失敗的中文描述。

4.2 getImagePath

從card.ini中獲取獲取保存照片檔案的路徑。
char*  getImagePath ();

引數說明:無

回傳值:字串
保存照片檔案目錄的路徑。

4.3 getPersonMsg

讀取身份證的基本資訊。
char*  getPersonMsg (int iPort);

引數說明:
int iPort 
0為自動檢測
1-16為串口1-16口
1001-1016為USB1-16口


回傳值:字串
第一個字符為’1’,表示成功獲取到身份證資訊,其后緊接身份證資訊;
第一個字符為’0’,表示獲取身份證資訊失敗,其后緊接失敗原因的中文描述;
身份證資訊包括:姓名|性別|民族|出生年月(格式為YYYY-MM-DD)|身份證號碼|地址|簽發機構|有效起始時間(YYYY-MM-DD)|有效終止時間(YYYY-MM-DD或長期),資訊項以字符’|’分隔。
4.4 getNewAddress

讀取更新地址資訊。
char*  getNewAddress (int iPort);

引數說明:
int iPort 
0為自動檢測
1-16為串口1-16口
1001-1016為USB1-16口

回傳值:字串
第一個字符為’1’,表示成功獲取到更新地址資訊,其后緊接地址資訊;
第一個字符為’0’,表示獲取更新地址資訊失敗,其后緊接失敗原因的中文描述;
4.5 resetCardReader

復位讀卡器。當身份證停留在身份證讀卡器的有效閱讀范圍,此時而需要連續讀取身份證資訊或更新地址資訊,則需要在兩次讀取操作之間插入復位操作。
Void  resetCardReader (int iPort);

引數說明:
int iPort 
0為自動檢測
1-16為串口1-16口
1001-1016為USB1-16口回傳值:無

5.API呼叫說明
5.1 API呼叫順序
請首先呼叫檢測讀卡器介面checkCardReaderValid (),讀卡器介面會自動檢測當前設備所指定的埠。成功后再呼叫讀取身份證資訊介面getPersonMsg()。
5.2 照片說明
照片檔案命名規則是:P+身份證號碼.bmp。
默認的照片保存路徑為當前運行路徑下的bmp子目錄。
也可通過組態檔CARDII.INI指定保存路徑,CARDII.INI放置在當前運行目錄下,內容如下,即照片的保存路徑為d:\CardII\BMP目錄。
[Save]
SavePath=d:\CardII\BMP\
5.3 示例代碼

VC示例代碼:

變數定義:
static HINSTANCE DLLInst = NULL;
函式指標定義:
char*  (__stdcall *checkCardReaderValid)(int iPort);
動態載入:
DLLInst = LoadLibrary(“cardapi.dll”);
checkCardReaderValid=(char* (__stdcall *)(int ))GetProcAddress((HMODULE)DLLInst, " checkCardReaderValid ");
使用函式:
    ret = checkCardReaderValid(0);
使用后釋放:
   if( DLLInst != NULL )
FreeLibrary(DLLInst);

VB示例代碼:
宣告:
Declare Function checkCardReaderValid Lib "cardapi.dll" (ByVal lPort As Long) As String
Declare Function getImagePath Lib "cardapi.dll" () As String
Declare Function getPersonMsg Lib "cardapi.dll" (ByVal iPort As Long) As String
Declare Function getNewAddress Lib "cardapi.dll" (ByVal iPort As Long) As String
Declare Sub resetCardReader Lib "cardapi.dll" (ByVal iPort As Long)
使用:
Dim sRtn As String

 sRtn = checkCardReaderValid(glPortNo)


uj5u.com熱心網友回復:

要主要是取得政府相關技術部門的技術支持. 因為CPU芯片的加密方式,產家也不清楚

uj5u.com熱心網友回復:

一般硬體廠家都有專門介面的

uj5u.com熱心網友回復:

廠家都有介面函式的,網上也可以下載到的

uj5u.com熱心網友回復:

一般硬體廠家都有專門介面的 

uj5u.com熱心網友回復:

看demo,根據需求自己再做調整就可以了。

uj5u.com熱心網友回復:

這個一般得分是哪個廠家型號的:如下是新中新的
函式定義:

//////////////////////////////////////////////////////////////////////////
// SAM埠函式
//
//////////////////////////////////////////////////////////////////////////
function int Syn_SetMaxRFByte ( int iPort, int ucByte,int bIfOpen ) library "SynIDCardAPI.Dll"
function int Syn_GetCOMBaud ( int iPort, ref UnSignedLong puiBaudRate ) library "SynIDCardAPI.Dll"
function int Syn_SetCOMBaud ( int iPort, UnSignedLong uiCurrBaud, UnSignedLong uiSetBaud )  library "SynIDCardAPI.Dll"
function int Syn_OpenPort( int iPort ) library "SynIDCardAPI.Dll"
function int Syn_ClosePort( int iPort ) library "SynIDCardAPI.Dll"
//////////////////////////////////////////////////////////////////////////
// SAM類函式
//
//////////////////////////////////////////////////////////////////////////
function int Syn_ResetSAM ( int  iPort, int iIfOpen ) library "SynIDCardAPI.Dll"
function int Syn_GetSAMStatus ( int iPort, int iIfOpen ) library "SynIDCardAPI.Dll"
function int Syn_GetSAMID ( int iPort, ref string pucSAMID, int iIfOpen ) library "SynIDCardAPI.Dll"
function int Syn_GetSAMIDToStr ( int iPort, ref string pcSAMID, int iIfOpen )  library "SynIDCardAPI.Dll"
//////////////////////////////////////////////////////////////////////////
// 身份證卡類函式
//
//////////////////////////////////////////////////////////////////////////
function int Syn_StartFindIDCard ( int iPort , ref string pucIIN, int iIfOpen )  library "SynIDCardAPI.Dll"
function int Syn_SelectIDCard ( int iPort , ref string pucSN, int iIfOpen ) library "SynIDCardAPI.Dll"
function int Syn_ReadBaseMsg (int iPort ,ref string pucCHMsg ,ref int puiCHMsgLen ,ref string pucPHMsg , ref int puiPHMsgLen ,int iIfOpen)  library "SynIDCardAPI.Dll"
function int Syn_ReadIINSNDN ( int iPort , ref string pucIINSNDN , int iIfOpen ) library "SynIDCardAPI.Dll"
function int Syn_ReadBaseMsgToFile (int iPort,ref string  pcCHMsgFileName,ref int puiCHMsgFileLen,ref string pcPHMsgFileName,ref int puiPHMsgFileLen,int iIfOpen)  library "SynIDCardAPI.Dll"
function int Syn_ReadIINSNDNToASCII ( int iPort ,ref string pucIINSNDN , int iIfOpen ) library "SynIDCardAPI.Dll"
function int Syn_ReadNewAppMsg(int iPort , ref string pucAppMsg , ref int puiAppMsgLen , int iIfOpen)  library "SynIDCardAPI.Dll"
function int Syn_GetBmp( int iPort , ref string Wlt_File )  library "SynIDCardAPI.Dll"

function int Syn_ReadMsg( int iPort,int iIfOpen,ref tagidcarddata pIDCardData )  library "SynIDCardAPI.Dll"
function int Syn_FindReader() library "SynIDCardAPI.Dll"
//////////////////////////////////////////////////////////////////////////
// 設定附加功能函式
//
//////////////////////////////////////////////////////////////////////////
function int Syn_SetPhotoPath( int iOption , ref string cPhotoPath ) library "SynIDCardAPI.Dll"
function int Syn_SetPhotoType( int iType ) library "SynIDCardAPI.Dll"
function int Syn_SetPhotoName( int iType ) library "SynIDCardAPI.Dll"
function int Syn_SetSexType( int iType ) library "SynIDCardAPI.Dll"
function int Syn_SetNationType( int iType ) library "SynIDCardAPI.Dll"
function int Syn_SetBornType( int iType ) library "SynIDCardAPI.Dll"
function int Syn_SetUserLifeBType( int iType ) library "SynIDCardAPI.Dll"
function int Syn_SetUserLifeEType( int iType ,int iOption) library "SynIDCardAPI.Dll"

結構定義:
global type tagidcarddata from structure
character Name[32]
character Sex[6]
character Nation[20]
character Born[18]
character Address[72]
character IDCardNo[38]
character GrantDept[32]
character UserLifeBegin[18]
character UserLifeEnd[18]
character reserved[38]
character PhotoFileName[255]
end type

身份證讀取代碼:(有多余的代碼,是從開發的軟體里復制出來的)
UnSignedLong uiCurrBaud;
string sMsg;
tagidcarddata m_IDCardData;
String strResult="";
int nRet;
int ifOpen;
string pucIIN="";
string pucSN="";
long ll_start, ll_used;
string ls_name,ls_sex,ls_mz,ls_csrq,ls_zz,ls_photopath,ls_sfzh,ls_file,ls_path,ls_cardclassname,ls_cardclass
string ls_sfzm
blob lb_small
datetime lda_csrq
integer li_file,loops,i,li_sign,li_ws
long flen,new_pos,bytes_read,ll_sfzxy,ll_sfzxy2
ls_cardclassname=st_4.text
select z into :li_ws from system_Setup where flbh='0002' and idx='0030';
if len(sle_2.text) - 2<>li_ws then
messagebox("","會員卡位數必須為"+string(li_ws)+'位')
sle_2.text=''
return 1
end if
if rb_1.checked=true  and cbx_1.checked=false and sle_1.enabled=false then
iPort = Syn_FindReader();
ifOpen = 0;
if iPort >0 then
if iPort >1000 then
sMsg = String(Now(), "YYYY-MM-DD hh:mm:ss") + "  讀卡器連接在USB  " + String(iPort) + "  上"; 
else
Sleep(1)
Syn_GetCOMBaud( iPort ,ref uiCurrBaud);
sMsg = String(Now(), "YYYY-MM-DD hh:mm:ss") +  "  讀卡器連接在COM  " + String(iPort) + "  上"; 
end if
ifOpen = 0;
m_IDCardData.name=space(32) ;
m_IDCardData.Sex=space(6);
m_IDCardData.Nation=space(20);
m_IDCardData.Born=space(18);
m_IDCardData.Address=space(72);
m_IDCardData.IDCardNo=space(38);
m_IDCardData.GrantDept=space(32);
m_IDCardData.UserLifeBegin=space(18);
m_IDCardData.UserLifeEnd=space(18);
m_IDCardData.reserved=space(38);
m_IDCardData.PhotoFileName=space(255);
Syn_SetPhotoName(2);
//ll_start = Cpu();
nRet = Syn_OpenPort( iPort );
if nRet = 0 then
Syn_SetMaxRFByte( iPort , 80, ifOpen);
Syn_StartFindIDCard( iPort,pucIIN,ifOpen );
Syn_SelectIDCard( iPort,pucSN,ifOpen );
m_IDCardData.name="";
m_IDCardData.Sex="";
m_IDCardData.Nation="";
m_IDCardData.Born="";
m_IDCardData.Address="";
m_IDCardData.IDCardNo="";
m_IDCardData.UserLifeBegin="";
m_IDCardData.UserLifeEnd="";
m_IDCardData.GrantDept="";
m_IDCardData.reserved="";
m_IDCardData.PhotoFileName="";
   nRet = Syn_ReadMsg( iPort,0,m_IDCardData );
if nRet = 0 then
ll_used = Cpu() - ll_start;
sMsg = String(Now(), "YYYY-MM-DD hh:mm:ss") + "  讀卡成功,讀卡時間" + String(ll_used) + "ms"
sMsg = String(Now(), "YYYY-MM-DD hh:mm:ss") + "  姓名:" + m_IDCardData.Name
sMsg = String(Now(), "YYYY-MM-DD hh:mm:ss") + "  性別:" + m_IDCardData.Sex
sMsg = String(Now(), "YYYY-MM-DD hh:mm:ss") + "  民族:" + m_IDCardData.Nation
sMsg = String(Now(), "YYYY-MM-DD hh:mm:ss") + "  出生日期:" + m_IDCardData.Born
sMsg = String(Now(), "YYYY-MM-DD hh:mm:ss") + "  地址:" + m_IDCardData.Address
sMsg = String(Now(), "YYYY-MM-DD hh:mm:ss") + "  身份證號:" + m_IDCardData.IDCardNo
sle_1.text=m_IDCardData.IDCardNo
sMsg = String(Now(), "YYYY-MM-DD hh:mm:ss") + "  有效期開始:" + m_IDCardData.UserLifeBegin
sMsg = String(Now(), "YYYY-MM-DD hh:mm:ss") + "  有效期結束:" + m_IDCardData.UserLifeEnd
sMsg = String(Now(), "YYYY-MM-DD hh:mm:ss") + "  發證機關:" + m_IDCardData.GrantDept
sMsg = String(Now(), "YYYY-MM-DD hh:mm:ss") + "  照片檔案名:" + m_IDCardData.PhotoFileName
//------------------------如果資料庫正常則查出資料寫入會員資料庫中
//-------------------------------------------------------------------------
//-------------------------資料寫入會員資料庫---------------------
ls_name=m_IDCardData.Name
ls_sex=m_IDCardData.Sex
ls_mz=m_IDCardData.Nation
ls_csrq=m_IDCardData.Born
ls_sfzh=m_IDCardData.IDCardNo
ls_zz=m_IDCardData.Address
ls_photopath=m_IDCardData.PhotoFileName
ls_csrq=left(ls_csrq,4)+'-'+mid(ls_csrq,5,2)+'-'+right(ls_csrq,2)
lda_csrq=datetime(date(ls_csrq))
select count(*) into :li_sign from hyxx_Table where sfzbh=:ls_sfzh and zxsign='0';
if li_sign>0 then
messagebox("","此身份證已經注冊,不能重復注冊!")
return 1
end if
select count(*) into :ll_sfzxy from TRFF_APP.QQHR_DRIVINGLICENSE where sfzmhm=:ls_sfzh USING SQLCB; 
if cbx_2.checked=false then
if ll_sfzxy<=0 then
messagebox("","非本地駕駛人!")
return 1
end if
end if
select idx into :ls_cardclass from cardclass_Table where namex=:ls_cardclassname;
stru_hy.cardid=is_cardid
stru_hy.sfzbh=ls_sfzh
stru_hy.xm=ls_name
stru_hy.sex=ls_sex
stru_hy.mz=ls_mz
stru_hy.csrq=lda_csrq
stru_hy.zz=ls_zz
stru_hy.cardclass=ls_cardclass
if cbx_2.checked=true then
stru_hy.rysign='1'
else
stru_hy.rysign='0'
end if
// insert into hyxx_Table(cardid,SFZBH,XM,SEX,MZ,CSRQ,ZZ,cardclass) 
//VALUES (:is_cardid,:ls_sfzh, :ls_name,:ls_sex,:ls_mz,:lda_csrq,:ls_zz,:ls_cardclass) USING SQLCA;
// if sqlca.sqlcode=0 then
// commit;
// end if
//--------------------存入照片--------------------
setnull(lb_image)
    if li_file <> -1 then
setpointer(hourglass!)
ls_file=ls_photopath
ls_path=ls_photopath
        flen = filelength(ls_file)
       li_file = fileopen(ls_path,streammode!,read!,lockread!)
            if flen > 32765 then
                if mod(flen,32765)=0 then
                   loops = flen/32765
                else
                   loops = (flen/32765) + 1
                end if
            else
              loops = 1
            end if
           new_pos = 1
           for i = 1 to loops
              bytes_read = fileread(li_file,lb_small)
              if i = 1 then
                 lb_image = lb_small
              else
                 lb_image = lb_image + lb_small
              end if
           next
          fileclose(li_file)
//       p_1.setpicture(lb_image)
//       updateblob hyxx_Table set photo = :lb_image where sfzbh = :ls_sfzh using sqlca;
//         if sqlca.sqlcode = 0 then
//          commit;
//         else
//           rollback;
//           messagebox('','存取失敗,請退出后試!',stopsign!)
//       
//       end if
stru_hy.photo=lb_image
else
sMsg = String(Now(), "YYYY-MM-DD hh:mm:ss") + "  讀卡失敗,nRet=" + String(nRet)
end if
else
sMsg = String(Now(), "YYYY-MM-DD hh:mm:ss") + "  打開埠失敗"
end if 
else
sMsg =  String(Now(), "YYYY-MM-DD hh:mm:ss") + "  沒有找到讀卡器";
end if
st_2.text=smsg
  end if
   openwithparm(w_hy_sk,stru_hy)
  close(parent)
  return 1
end if

uj5u.com熱心網友回復:

有DLL調的吧 應該廠家還有例子的

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/48244.html

標籤:API 調用

上一篇:PB 將word檔案中表格匯入

下一篇:SQL中的亂碼問題

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more