原创 windows下設置最大連接數
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters] "MaxUserPo
原创 boost 庫 Simple HTTP Client
#include <boost/beast/core.hpp> #include <boost/beast/http.hpp> #include <boost/beast/version.hpp> #include <boost/asio
原创 一臺機器配置多個git賬號
# 配置user1 Host u1.github.com HostName github.com IdentityFile C:\\Users\\admin\\.ssh\\id_rsa1 PreferredAuthentications
原创 git revert 和git reset區別
git revert與git reset最大的不同是,git revert 僅僅是撤銷某次提交,而git reset會將撤銷點之後的操作都回退到暫存區中。1、git revert是用一次新的commit來回滾之前的commit,g
原创 幾種 I/O Multiplexing 方式的比較
select 和 poll 的缺陷 I/O多路複用允許進程同時監聽多個文件描述符,這樣進程就可以知道哪些文件描述符存在I/O就緒了。select()是最早出現的I/O多路複用方式,然而由於早期select()的API設計不當,導致了s
原创 c++測試boot.asio選擇I/O模型
#include <iostream> #include <string> #include <boost/asio.hpp> int main() { std::string output; #if defined(BOOST_ASIO
原创 boost中asio多線程模型總結
Boost.Asio 有兩種支持多線程的方式,第一種方式比較簡單:在多線程的場景下,每個線程都持有一個io_service,並且每個線程都調用各自的io_service的run()方法。 另一種支持多線程的方式:全局只分配一個io_
原创 c++11sizeof操作
C++98, sizeof只能對實例的變量或者類的靜態成員進行操作,不能對類的非靜態成員進行操作,若要想達成對類的非靜態成員的操作,可以用如下ugly方式, 0強轉成對象的指針,並解析訪問對應非靜態成員變量。 struct S
原创 linux下用wrk進行http服務器測試
wrk -t 6 -c 15000 -d 20 --latency http://127.0.0.1:9090/test 命令行解釋 -c 15000: 啓動1500個連接 -t 6: 開啓6個線程做壓力測試 -d 2-: 壓測持續20s
原创 vs編譯openssl-1.0.1
前提條件請安裝perl軟件,否則編譯不過 VS2013中編譯openssl的步驟和使用設置一.VS2013中編譯openssl的步驟版本號:openssl-1.0.1e 1.下載 OpenSSL http://www.openssl.
原创 c++簡單實現udp操作和總結
//客戶端 #include <iostream> #include <winsock2.h> #include <wheel/unit.hpp> int main(){ WSADATA wsadata; WSAStart
原创 vscode配置cmake調試程序
1:cmake 和cmake-tool要安裝 taks.json { // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentati
原创 一個簡單的select的列子說明select內部實現原理
1:select內部是個數組,而epoll內部結構是紅黑二叉樹 2:select查詢起來慢,而epoll查詢起來快 3:每次循環,內部都要發生拷貝(查看相關代碼)而epoll不需要這樣的操作,也就是初始化一次拷貝 #include<ios
原创 插入排序和冒泡排序
插入排序的最好的情況是O(n),最壞的情況O(n^2),因此是穩定的 冒泡排序最好的情況是O(n),最壞的情況O(n^2)因此是穩定的 //插入排序 void insert_sort(int* arr, int n) { in
原创 二叉樹的遍歷和查找 刪除
//前序 //用廣度搜索 template <class T> void AVLTree<T>::preOrder(AVLTreeNode* tree) const { /*************遞歸形式走*/ //if