原创 C++ 並行編程之memory_order

一.如果只是簡單地解決在多線程中對共享資源的讀寫併發問題,只需要用C++以下內容: 線程類 thread, 原子數據類模板 atomic<T> t, 互斥 mutex, 鎖 lock, 條件變量 condition_variables.  

原创 自旋鎖與信號量的區別

自旋鎖最多隻能被一個可執行線程持有(讀寫自旋鎖除外)。自旋鎖不會引起調用者睡眠,如果一個執行線程試圖獲得一個已經被持有的自旋鎖,那麼線程就會一直進行忙循環,一直等待下去(一直佔用 CPU ),在那裏看是否該自旋鎖的保持者已經釋放了鎖, "

原创 urlEncode和urlDecode

絕對不編碼的,僅僅有字母、數字、短橫線(-)、下劃線(_)、點(.)和波浪號(~),其它字符要視情況而定。所以一般性的urlencode僅僅需保留上述字符不進行編碼。   /** @file url.cpp * @note

原创 Linux內核參數

1.內核設置 Linux 操作系統修改內核參數有3種方式: 1). 修改 /etc/sysctl.conf 文件,加入配置選項,格式爲 key = value ,修改保存後調用 sysctl -p 加載新配置2). 使用 sysctl 命令

原创 reentrant,thread-safe 和 async-signal-safe

可重入,線程安全和異步信號安全POSIX定義: Reentrant Function A function whose effect, when called by two or more threads, is guaranteed

原创 abort exit _exit return的區別

exit()函數導致子進程的正常退出,並且參數status&這個值將被返回給父進程。exit()應該是庫函數。exit()函數其實是對_exit()函數的一種封裝(庫函數就是對系統調用的一種封裝)。 _exit()函數終止調用的進程,進程所

原创 siglongjmp和sigsetjmp 用法

1. 引入原因 由於在信號處理期間自動屏蔽了正在被處理的信號,而使用setjmp/longjmp跳出信號處理程序時又不會自動將 信號屏蔽碼修改會原來的屏蔽碼,從而引起該信號被永久屏蔽。 可以使用sigsetjmp/siglongjmp來解決

原创 HTTP Keep-Alive模式

一般情況,HTTP協議中客戶端發送一個小請求,服務器響應以所期望的信息(例如一個html文件或一副gif圖像)。服務器通常在發送回所請求的數據之後就關閉連接。這樣客戶端讀數據時會返回EOF(-1),就知道數據已經接收完全了。 1. Keep

原创 DNS域名解析過程

1、在瀏覽器中輸入www.qq.com域名,操作系統會先檢查自己本地的hosts文件是否有這個網址映射關係,如果有,就先調用這個IP地址映射,完成域名解析。  2、如果hosts裏沒有這個域名的映射,則查找本地DNS解析器緩存,是否有這個網

原创 HTTP的長連接和短連接

  https://www.cnblogs.com/gotodsp/p/6366163.html https://www.cnblogs.com/cswuyg/p/3653263.html

原创 代碼許可

   

原创 C++17新特性optional和string_view

1. optional的作用 類模板 std::optional 管理一個可選的容納值,即可以存在也可以不存在的值。 一種常見的 optional 使用情況是一個可能失敗的函數的返回值。與其他手段,如 std::pair<T,bool> 相

原创 類的大小2

  #include<stdio.h> #include<stdlib.h> #include<iostream> #include<iomanip> using namespace std; class A {

原创 override final default delete修飾的成員函數

1. override 重載   當你在父類中使用了虛函數時候,你可能需要在某個子類中對這個虛函數進行重寫,以下方法都可以: class A { virtual void foo(); } class B :public

原创 三分技術,七分業務

對於一個以實現業務爲主要目標的碼員來說,三分技術,七分業務,更多理解業務也就更好地完成項目.