HP-Socket v3.2.2

简介:

==========================================================================================
v3.2.2 upgrade :
==========================================================================================

> Increase some methods for helps:
-----------------

  1. Batch sending methods: SendPackets()
        1) IClient / IServer / IAgent add the sending methods: SendPackets(dwConnID, pBuffers[], iBufferCount)
        2) For TCP component - send all packets in order
        3) For UDP component - make all the packets combined into one packet and send (the length of the packet can not be greater than the maxinum of length of a UDP packet which is set up)
  2. small files sending methods: SendSmallFile()
        1) ITcpClient / ITcpServer / ITcpAgent add the small files sending methods: SendSmallFile(dwConnID, lpszFileName, pHead, pTail)
        2) By the parameters: pHead and pTail,each can add some definitions int the files heads and tails
        3) SendSmallFile() only send the files whose size small than  4096 KB
  3. HPSocket.dll and HPSocket4C.dll add following export methods:
        1) SYS_WSAGetLastError():call the system's WSAGetLastError()
        2) SYS_SetSocketOption():call the system's setsockopt()
        3) SYS_GetSocketOption():call the system's getsockopt()
        4) SYS_IoctlSocket()           :call the system's ioctlsocket()
        5) SYS_WSAIoctl()               :call the system's WSAIoctl()

> update instructions:
-----------------

  1. HP-Socket v3.2.1 or previous versions for applications can upgrade to HP-Socket v3.2.2 safely

 

==========================================================================================
v3.2.1 upgrade:
==========================================================================================

> add communication components TcpAgent / TcpPullAgent :
-----------------

  1. for the proxy server and transit server etc. , server can be the client and launche a large-scale service connections to other servers.
  2. TcpClient / TcpPullClient basic on  Event Select communication model,every component object manages one Socket and open a thread ,but the above scenario is not suitable.
  3. TcpAgent / TcpPullAgent basic on IOCP communication model,one componet object manages many Sockets,for the clients communication components of the proxy server and transit server.
  4. TcpAgent / TcpPullAgent methods are easy to use and provide following interface methods:
         1) notice interface methods:
           OnPrepareConnect(CONNID dwConnID, SOCKET socket)
            OnConnect(CONNID dwConnID)
            OnSend(CONNID dwConnID, const BYTE* pData, int iLength)
            OnReceive(CONNID dwConnID, const BYTE* pData, int iLength)    //(Push model)
            OnReceive(CONNID dwConnID, int iLength)                        //(Pull model)
            OnClose(CONNID dwConnID)
            OnError(CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode)
            OnAgentShutdown()
         2) main operating methods:
           Start(LPCTSTR pszBindAddress = nullptr, BOOL bAsyncConnect = TRUE)
            Stop()
            Connect(LPCTSTR pszRemoteAddress, USHORT usPort, CONNID* pdwConnID = nullptr)
            Send(CONNID dwConnID, const BYTE* pBuffer, int iLength, int iOffset = 0)
            Disconnect(CONNID dwConnID, BOOL bForce = TRUE)
            Fetch(CONNID dwConnID, BYTE* pData, int iLength)    //(Pull model)
  5. add TcpAgent / TcpPullAgent excemples for user:
        1) Agent-PFM
        2) Agent-Pull
        3) Agent-4C
  6. add TcpAgent + TcpServer HTTP proxy server excemple:HttpProxy

> add HPSocket for Java SDK:
-----------------

  1. provide Java development package:hpsocket-3.2.1.jar(by JNA ,now only supports Windows platform)
  2. running environment:JDK 1.6+,JVM runs server mode("java -server",in client mode,the properties affected)
  3. add the project TestEcho-4J,show the HPSocket4J using methods (includes Pull model examples and sample performance tests)
  4. MBCS and Unicode version are in the jars: org.jessma.hpsocket.mbcs and org.jessma.hpsocket.unicode
  5. HPSocket for Java SDK provides following communication components :
        1) TcpServer:TCP communication server component ,supports  PUSH/Pull model
        2) TcpClient:TCP communication client component ,supports  PUSH/Pull model
        3) TcpAgent :TCP communication  Agent component ,supports  PUSH/Pull model
        4) UdpServer:UDP communication server component ,supports  Push model
        5) UdpClient:UDP communication client component ,supports  Push model
  6. HPSocket4J using methods (using TcpAgent for example):
       /* 0: add the jars into the project: hpsocket-3.2.1.jar and jna-4.1.0.jar */
       
        /* 1: create communication component object  */
        TcpAgent agent = TcpAgent.create(Mode.PUSH);
       
        /* 2: set the callback function object  */
        // (optional )
        agent.setCallBackOnPrepareConnect(new OnPrepareConnectImpl());
        // (optional )
        agent.setCallBackOnConnect(new OnConnectImpl());
        // (required )Push model need to set OnReceive callback function object
        agent.setCallBackOnReceive(new OnReceiveImpl());
        // (required )Pull model need to set OnPullReceive callback function object
        // agent.setCallBackOnPullReceive(new OnPullReceiveImpl());
        // (optional )
        agent.setCallBackOnSend(new OnSendImpl());
        // (required )
        agent.setCallBackOnClose(new OnCloseImpl());
        // (required )
        agent.setCallBackOnError(new OnErrorImpl());
        // (optional )
        agent.setCallBackOnAgentShutdown(new OnAgentShutdownImpl());
       
        /* 3:start communication component  */
        agent.start("127.0.0.1", false);
       
        /* 4:connect server */
        agent.connect("localhost", (short)5555, pdwConnID);
       
        /* 5:handle communication data */
        // response OnReceive / OnPullReceive events and receive data
        // use    agent.send(dwConnID, data, data.length) to send data
       
        /* 6:close communication component  */
        agent.stop();
       
        /* 7:destroy communication component  */
        TcpAgent.destroy(agent);

> optimize data transmission / reception strategies:
-----------------

  1. Server and Agent components provide the following three types of data transmission policy:
        1)PACK - packing mode(default)    :try to send data formmultiple operetions together to send and add transmission efficiency.
        2)SAFE - sage mode        :try to make data formmultiple operetions together to send,control the transmission rate ,and avoid buffer overflow
        3)DIRECT - direct mode        :each sending operation is delivered directly ,for when the loading is not high but it requires real-time high places.
  2. Server and Agent components provide the following two data-accept events:
        1)SERIAL - serial mode(default):trigger the same connection in the order: OnReceive and OnClose/OnError event
        2)PARALLEL - parallel mode    :in different communication threads , trigger the same connection OnReceive and OnClose/OnError event in the same time

> other updates :
-----------------

  1. IServer' GetClientAddress() method changes the name to : GetRemoteAddress()
  2. IClient' Send() method deletes the parameter: “CONNID dwConnID”
  3. IClient/IServer/IAgent' Send() method adds the pointer offset parameter “int iOffset” for sending data buffer
  4. add EnSendPolicy enumerated type,IServer/IAgent add sending mode setting method: SetSendPolicy()
  5. add EnRecvPolicy enumerated type,IServer/IAgent add receving mode setting method: SetRecvPolicy()
  6. IServer/IAgent add method:BOOL GetAllConnectionIDs(),get all connected CONNID
  7. IUdpServer add method:SetPostReceiveCount(),set Receive Number of predelivery
  8. EnServerError / EnClientError enumerated type unite into EnSocketError
  9. EnSocketError / EnHandleResult / EnFetchResult enumerated type moves out of the original class
  10. IClient/IServer/IAgent add method:BOOL GetPendingDataLength() to get the length of the data which is not issued
  11. HPSocket4C.dll add method SendPart(),supports assigning the pointer offset parameter for data buffer
  12. add HPSocket for C# SDK(by int 2e )
  13. add HPSocket easy language support lib(by Yecate )
  14. public code package vc-common-src upgrade tp v2.3.5(reference:vc-common-src v2.3.5' Change Log)


   
> update instructions:
-----------------

  1. HP-Socket v3.2.1 Comply HP-Socket v3.1.3 and previous versions in the functions
  2. interface changes,it's needed to modify the programcode. Notice:the program can be replaced directly by v3.1.3' DLL
  3. EnServerError / EnClientError enumerated type unite into EnSocketError,notice some of the enumerated tyoe changed

 

==========================================================================================
v3.1.3 upgrade:
==========================================================================================

> add other language Demo:
-----------------

  1. C#
  2. Delphi
  3. E language

> Bug Fixed:
-----------------

  1. repair IP address misjudgment bug:
        1) when client component connnecting to the server,if the IP of the server has full bit(12个numbers:‘AAA.BBB.CCC.DDD’),then judged as the domain name
        2) affect component :all TCP/UDP client components
        3) affect version:v3.1.2 and all previous versions
  2. repair the domain name and host name's IP parsing error bug:
        1) when client component connecting to the server by the domain name or host name,it may be resolved to the wrong IP address.
        2) affectcomponent :all TCP/UDP client components
        3) affect versions:v3.1.2 and all previous versions

   
> update instructions:
-----------------
1、use HP-Socket v3.1.2 or previous versions for applications can upgrade to HP-Socket v3.1.3 safely

 

==========================================================================================
v3.1.2 upgrade:
==========================================================================================

> alter the Server component's OnClose() / OnError() event's trigger rules:
-----------------

  1. The TCP/UDP Server component of original versions,when you close a connection ,it might also fire the OnClose() event and several OnError() events
  2. for this possibility,the application need to make OnClose() / OnError() to process the event synchronously
  3. from v3.1.2 ,when there are OnClose() / OnError() events occuring together,component only notice the first event ,and ignore the left event.
  4. Therefore,when the application processes the OnClose() / OnError() event , it not need to deal with syschronization,and reduce the possibile bugs and writing or testing code burdens.

    Example One:
    --------------------------------------------------------------------------------------
    ISocketListener::EnHandleResult CServerDlg::OnClose(CONNID dwConnID)
    {
        // original versions:there are the concurrency of OnClose()/OnError(),put the code in the critical area and test the returned value

        CCriSecLock locallock(m_csPkgInfo);    // <-- critical area

        PVOID pInfo = nullptr;

        if(m_Server->GetConnectionExtra(dwConnID, &pInfo) && pInfo != nullptr)    // <-- testing the returned value
        {
            m_Server->SetConnectionExtra(dwConnID, nullptr);
            delete pInfo;
        }
    }

    Example two:
    --------------------------------------------------------------------------------------
   ISocketListener::EnHandleResult CServerDlg::OnClose(CONNID dwConnID)
    {
        // v3.1.2 version:only receive one OnClose()/OnError() event ,can remove the code out of the critical area and testing the code.

        PVOID pInfo = nullptr;
        m_Server->GetConnectionExtra(dwConnID, &pInfo);
        ASSERT(pInfo != nullptr);

        delete pInfo;
    }

> other updates :
-----------------

  1. change TCP Server default parameters :
        1) DEFAULT_SOCKET_LISTEN_QUEUE    : 300
        2) DEFAULT_ACCEPT_SOCKET_COUNT    : 300
        3) DEFAULT_FREE_SOCKETOBJ_POOL    : 150
        4) DEFAULT_FREE_SOCKETOBJ_HOLD    : 450
        5) DEFAULT_FREE_BUFFEROBJ_POOL    : 300
        6) DEFAULT_FREE_BUFFEROBJ_HOLD    : 900
  2. change  UDP Server default parameters :
       1) DEFAULT_FREE_SOCKETOBJ_POOL    : 150
        2) DEFAULT_FREE_SOCKETOBJ_HOLD    : 450
        3) DEFAULT_FREE_BUFFEROBJ_POOL    : 300
        4) DEFAULT_FREE_BUFFEROBJ_HOLD    : 900

> update instructions:
-----------------
1、 HP-Socket v3.1.1 or previous versions for applications can upgrade to HP-Socket v3.1.2 safely

 

==========================================================================================
v3.1.1 upgrade:
==========================================================================================

> add export the C function's dynamic link library: HPSocket4C.dll:
-----------------

  1. add the code files: HPSocket4C.h and HPSocket4C.cpp,for creating  HPSocket4C.dll
  2. export the C function and make other language(as:C/C#/Delphi etc)to use HPSocket easily
  3. HPSocket4C.dll using methods
      method one:
        --------------------------------------------------------------------------------------
            (0) (C/C++ programs)include HPSocket4C.h header files
            (1) call  ::Create_HP_XxxListener() function to create listener object
            (2) call  ::Create_HP_Xxx(pListener) function to create  HPSocket object
            (3) call  ::HP_Set_FN_Xxx_OnYyy(pListener, ...) function to set the call back function of listener
            (4) call export functions to operate HPSocket object
            (5) ...... ......
            (6) call  ::Destroy_HP_Xxx(pSocket) function to destory HPSocket object
            (7) call  ::Destroy_HP_XxxListener(pListener) functions to destory the listener object
    method two:
        --------------------------------------------------------------------------------------
            (1) the application need to use the export functions of the package to the specific language class.
            (2) after packaging encapsulated,use HPSocket in the OOP way
  4. HPSocket4C.dll dynamic link library (release version)
        (1) x86/HPSocket4C.dll        - (32bit/MBCS/Release)
        (2) x86/HPSocket4C_D.dll    - (32bit/MBCS/DeBug)
        (3) x86/HPSocket4C_U.dll    - (32bit/UNICODE/Release)
        (4) x86/HPSocket4C_UD.dll    - (32bit/UNICODE/DeBug)
        (5) x64/HPSocket4C.dll        - (64bit/MBCS/Release)
        (6) x64/HPSocket4C_D.dll    - (64bit/MBCS/DeBug)
        (7) x64/HPSocket4C_U.dll    - (64bit/UNICODE/Release)
        (8) x64/HPSocket4C_UD.dll    - (64bit/UNICODE/DeBug)

> start the Buffer Pool caching mechanism:
-----------------

  1. Common/Src adds the code file : bufferpool.h and bufferpool.cpp ,and achieve the Buffer Pool caching mechanism
  2. by the Buffer Pool caching mechanism and enhance the efficiency of memory usage,reduce the dynamic memory allocation and release operation and avoid the memory hole
  3. CTcpClient use CItemPool and TItemList to achieve transmit buffer
  4. CUdpClient use CItemPool and TItemList to achieve transmit buffer
  5. CTcpPullClient use CItemPool and TItemList to achieve transmit bufferand PULL bufferand
  6. CTcpPullServer use CBufferPool and TBuffer to achieve PULL bufferand

> other updates :
-----------------

  1. IServer adds the interface method DisconnectLongConnections() to disconnect all long connections.
  2. IServer deletes interface method GetConnectionCriSec()
  3. IClient adds methods Get/SetFreeBufferPoolSize()、Get/SetFreeBufferPoolHold() to set the size and threshold of Buffer Pool
  4. IPullServer deletes  methods  Get/SetFreePullBufferPool()、Get/SetFreePullBufferHold()
  5. HPSocket.dll and HPSocket4C.dll use /MT(d) for the options recompile,eliminate dependency on the runtime library
  6. add the TestEcho-4C testing program,show the using methods of HPSocket4C.dll

> update instructions:
-----------------

  1. HP-Socket v3.0.2 or previous versions for applications can upgrade to HP-Socket v3.1.1 safely
  2. if you want to import HPSocket4C.dll into the project , see the way of using HP-Socket,refer to the example project TestEcho-4C

 

==========================================================================================
v3.0.2 upgrade:
==========================================================================================

> HP-Socket complied as a dynamic link library:
-----------------

  1. applications can use the HP-Socket by the source code or importing the dynamic link library mode.
  2. dynamic link library using methods
        method one:
        -----------------------------------------------------------------------
            (0) the application contains the SocketInterface.h and HPSocket.h head files
            (1) call  HP_Create_Xxx() function to create  HPSocket object
            (2) after using the call  HP_Destroy_Xxx() function to destroy HPSocket object
        method two:
        -----------------------------------------------------------------------
            (0) the application contains the SocketInterface.h and HPSocket.h head files
            (1) create the CXxxWrapper wrapper and use the HPSocket object by the smart pointer wrapper.
  3. dynamic link library(release version)
        (1) x86/HPSocket.dll    - (32bit/MBCS/Release)
        (2) x86/HPSocket_D.dll    - (32bit/MBCS/DeBug)
        (3) x86/HPSocket_U.dll    - (32bit/UNICODE/Release)
        (4) x86/HPSocket_UD.dll    - (32bit/UNICODE/DeBug)
        (5) x64/HPSocket.dll    - (64bit/MBCS/Release)
        (6) x64/HPSocket_D.dll    - (64bit/MBCS/DeBug)
        (7) x64/HPSocket_U.dll    - (64bit/UNICODE/Release)
        (8) x64/HPSocket_UD.dll    - (64bit/UNICODE/DeBug)

> other updates :
-----------------

  1. move the component interface and the statement listener to SocketInterface.h
  2. IServer add interface methods GetConnectionCount()/GetConnectPeriod() and  each gets the number of connections and the time of connection.
  3. IServer interface methods GetListenAddress()/GetClientAddress()'s CString& change the parameter to LPTSTR
  4. IClient interface methods GetLocalAddress()'s CString& change the parameter to LPTSTR
  5. the function's CString& in SocketHelper.h change the parameter to LPTSTR
  6. the example projects: TestEcho-Pull and TestEcho-PFM use HP-Socket by importing the dynamic link library mode

> update instructions:
-----------------

  1. HP-Socket v3.0.1 or previous versions for applications can upgrade to HP-Socket v3.0.2
  2. Beacause some parameters of the interface methods have changed ,so please alter it refer to the example project.
  3. if the project want to use HP-Socket by the way of a dynamic link library,please refer to the TestEcho-Pull or TestEcho-PFM example project.

 

==========================================================================================
v3.0.1 upgrade:
==========================================================================================

> add UDP communication component :
-----------------

  1. add two UDP communication components :CUdpServer as the server component and CUdpClient as the client component
  2. server component  CUdpServer use IOCP communication model
  3. client component  CUdpClient use Event Select communication model
  4. UDP communication component Interface is the same of the original TCP communication component ,simple and practical
  5. UDP communication component includes communication line automatic monitoring mechanism
  6. add UDP communication component example project: TestEcho-UDP


> Code refactoring and optimization:
-----------------

  1. Specification the name of all Interface、class and code file
  2. Refactoring and optimization a lot of component code
  3. server component add the mechanism of read-write lock,effect balance deal-performance and safety
  4. server component's Socket object Cache list set locking the time,upgrade the degree of access-safety

> update instructions:
-----------------

  1. the Application of using HP-Socket v2.2.3 can safely upgrade to HP-Socket v3.0.1
  2. because of renaming a lot of Interface、class and code file ,so when system upgrading , this need to relevant change

 

==========================================================================================
v2.2.3 upgrade:
==========================================================================================

> the data type of connect ID change to ‘CONNID’:
-----------------

  1. in SocketHelper.h ,it defines as CONNID data type(default:typedef ULONG_PTR CONNID)
  2. Application can make  CONNID defined as it hoped type(eg:ULONG / ULONGLONG ...)
  3. order to easy to transplant and aegis,Application's everywhere should use the‘CONNID’ type quote connect ID

> server  Socket component support as every connection tie attached data:
----------------

  1. IServerSocket and CIocpServer add method  Get/SetConnectionExtra()
  2. Through the above two method ,application can make every connection tie random attached data and take it out

> other updates :
-----------------

  1. broaden CIocpServer's the limit of the number of the biggset IOCP work thread  (64 change to 500)
  2. server  Socket component's Disconnect()  method adds one marked parametric ‘bForce’,directive whether forcibly disconnect connection
  3. change connect ID's generate rule , avert generated number is 0 connection ID

 

==========================================================================================
v2.2.2 upgrade:
==========================================================================================

> optimization heartbeat checking's interrelated function:
-----------------

  1. IServerSocket and IClientSocket ,theirs Get/SetKeepAliveTimes()  method changes to Get/SetKeepAliveTime()
  2. CIocpServer and CClientSocket ,theirs default KeepAliveTime attribute changes to 5000
  3. CIocpServer and CClientSocket ,theirs default KeepAliveInterval attribute changes to 3000

==========================================================================================
v2.2.1 upgrade:
==========================================================================================

> Pull modelsupport :
-----------------

  1. ISocketListener add the method for the Pull model to get the data receiving notification :OnReceive(dwConnID, int)
  2. add PULL Socket Interface: IPullSocket,the interface's Fetch(dwConnID, pBuffer, iLength)  method to catch the data of communication

> Server:
-----------------

  1. server  Socket Interface: ISocketServer renamed to IServerSocket
  2. add PULL Server Socket Listrner abstract class: CPullServerSocketListener
  3. add PULL Server Socket Listrner: IPullServerSocket
  4. add PULL Server Socket Implementation class : CIocpPullServer

> Client:
-----------------

  1. client  Socket Interface: ISocketClient renamed to IClientSocket
  2. client  Socket Implementation class :CSocketClient renamed to CClientSocket
  3. add PULL Client Socket Listrner abstract class: CPullClientSocketListener
  4. add PULL Client Socket Interface: IPullClientSocket
  5. add PULL Client Socket Implementation class: CPullClientSocket

> other upgrade:
-----------------

  1. add PULL Socket testing program: TestEcho-Pull
  2. In the SocketHelper.h (.cpp) there are some structures for help.

> update instructions:
-----------------

  1. use HP-Socket v2.1.1 or previous versions for applications can upgrade to v2.2.1 safely
  2. beacause the names of  ISocketServer、ISocketClient and CSocketClient have changed,therefore,the application need to modifie the name and header file name .

==========================================================================================
v2.1.1 upgrade:
==========================================================================================

> Server:
-----------------

  1. IServerSocketListener cancel OnPrepareSocket(connID, socket) notification method
  2. IServerSocketListener alter OnAccept((connID, soClient) notification method ,add the parameter :‘soClient’,to achieve the original OnPrepareSocket(connID, socket) notification method function
  3. IServerSocketListener add OnPrepareListen(soListen) notification method ,to set the listerner to the SOCKET Options of socket
  4. ISocketServer add method  GetListenAddress(strAddress, usPort),to get the address information of the listen to Socket
  5. ISocketServer add method  GetClientAddress(connID, strAddress, usPort),for a connection of a client address.
  6. the optimization of Socket buffer pools and the managements of memory block buffer pool.
  7. change the method names for some roperty-accessings
  8. fix bugs : deadlock phenomenon may happen under special circumstances.

> Client:
-----------------

  1. ISocketServer add method  GetLocalAddress(strAddress, usPort),for get the  address information of Client Socket.
  2. Optimize the data-transmission mode , and improve the efficiency of data transmission


> other upgrade:
-----------------

  1. TestEcho and TestEcho-PFM testing program optimization
  2. in SocketHelper.h (.cpp) , there are some functions for help
  3. for SocketHelper.h ,there are the comments of all interfaces ,classes and methods defined.

 

==========================================================================================
v2.0.1 upgrade:
==========================================================================================

> Server
-----------------

  1. IServerSocketListener add OnPrepareSocket(connID, socket) notice the method  for set the SOCKET Options or filter client connection before using the socket
  2. ISocketServer add method  Disconnect(connID) to disconnect the client connections
  3. add IServerSocketListener' subclass CServerSocketListener,provide a default(full) notification processing method

> Client:
-----------------

  1. IClientSocketListener add OnPrepareSocket(connID, socket) notification method for set the SOCKET Options before using the socket
  2. support asynchronous Connect:ISocketServer  Start() method add one parameter (BOOL bAsyncConnect) set whether to use the asynchronous Connect
  3. add IClientSocketListener subclass: CClientSocketListener,provide default(null)notification handle methods。
  4. repair BUG:appear package loss when  its ultra-high load


> other upgrade:
-----------------

  1. support  Windows x64 platform
  2. optimzate TestEcho and TestEcho-PFM testing program.
  3. TestEcho client adds “asychronous connection” program for example.
  4. TestEcho server adds “connection filter” and “initiative disconnect ” programs for example
相关文章
element-ui下拉框el-select多选出现滚动条闪现
弹窗组件中放置了el-select下拉框组件,多选项较多时,聚焦弹出下拉选择框时,下方会出现一个横向滚动条闪现一下,虽然不影响使用,但是作为一个追求完美的码农肯定是受不了
|
网络协议 文件存储 Docker
如何搭建HomeAssistant智能家居管理平台并实现公网访问内网管理界面
如何搭建HomeAssistant智能家居管理平台并实现公网访问内网管理界面
|
机器学习/深度学习 人工智能 PyTorch
AI计算机视觉笔记三十二:LPRNet车牌识别
LPRNet是一种基于Pytorch的高性能、轻量级车牌识别框架,适用于中国及其他国家的车牌识别。该网络无需对字符进行预分割,采用端到端的轻量化设计,结合了squeezenet和inception的思想。其创新点在于去除了RNN,仅使用CNN与CTC Loss,并通过特定的卷积模块提取上下文信息。环境配置包括使用CPU开发板和Autodl训练环境。训练和测试过程需搭建虚拟环境并安装相关依赖,执行训练和测试脚本时可能遇到若干错误,需相应调整代码以确保正确运行。使用官方模型可获得较高的识别准确率,自行训练时建议增加训练轮数以提升效果。
1541 4
|
程序员 编译器 数据处理
汇编高手秘籍:解锁性能优化新境界,用汇编语言让你的程序飞起来!
【8月更文挑战第31天】汇编语言作为编程基石,其高效性能备受推崇。尽管现代软件开发更偏爱高级语言,但在性能要求极高的场景下,汇编优化仍不可或缺。本文通过示例代码介绍四种优化技巧:循环展开、寄存器分配、指令重排及SIMD指令使用,显著提升执行效率。同时强调分析性能瓶颈、测试优化效果及保持代码可读性的重要性,助力开发者在关键代码路径上实现性能突破。
770 0
|
存储 算法 程序员
【专栏】二进制这一计算机科学基础,包括其概念历史、在计算机科学中的应用及与编程的联系
【4月更文挑战第28天】本文探索了二进制这一计算机科学基础,包括其概念历史、在计算机科学中的应用及与编程的联系。二进制作为基数为2的数制,由0和1构成,是计算机处理和存储数据的语言。从古代阴阳哲学到莱布尼茨的理论,二进制影响了现代计算技术。在硬件、数据存储、传输和处理中,二进制扮演关键角色。编程中,位运算和布尔逻辑基于二进制,理解二进制能优化代码和提升性能。掌握二进制知识,是理解数字世界的关键。
1408 1
|
存储 NoSQL 安全
go 连接mongodb执行查询的代码
在Go语言中,你可以使用官方的MongoDB驱动程序 `"go.mongodb.org/mongo-driver/mongo"` 来连接MongoDB并执行查询。以下是一个简单的示例代码,演示如何连接MongoDB并执行查询: 首先,确保你已经安装了MongoDB驱动程序: ```bash go get go.mongodb.org/mongo-driver/mongo ``` 然后,可以使用以下示例代码: ```go package main import ( "context" "fmt" "log" "time" "go.mongodb.org/mongo-driv
311 0
|
算法 程序员 Linux
MKL.NET:为.NET开发者提供高性能数学计算支持的开源库
MKL.NET:为.NET开发者提供高性能数学计算支持的开源库
276 0
|
存储 关系型数据库 网络安全
CEPH搭建
CEPH搭建
427 0
|
运维 安全 Java
我和我的团队使用 Codeup后的体验
我是公司数据中心负责人,会参与到一些软件开发,架构设计等工作,在团队工具选型时也会亲力亲为,争取为团队能选择效率高、好用的工具。由于我们团队处于前期开发阶段,业务主要是围绕能源互联网,可以想象的未来业务领域及数据量会很多,为了减少运维成本、保障安全性、高可用性、能较好地链接devops,并能很好的自动检测代码(每次对于一些简单的非业务的逻辑错误人为CR效率低下,容易错漏),结合对比使用了开源的gitlab和Codeup后,结合自己和团队的使用体验来做一些测评。
288 0
|
Ubuntu Linux Shell
【初学推荐】ubuntu下安装交叉编译链
【初学推荐】ubuntu下安装交叉编译链
747 0