原创 PS中光芒四射遊戲效果

PS中效果(加了黑色背景方便對比): 遊戲編輯器中實際效果: 看到這裏大家是不是很熟悉,只要加個循環旋轉動畫就能讓它動起來了,哈哈 那麼來說下實現流程: #. 新建一個500*500透明圖層(大小可以自己調整) #. 菜單欄-

原创 PS去除鋸齒

複製圖層 0圖層->魔棒選中圖像->菜單欄->選擇->修改->收縮(1-2)像素->反選->del刪除 1圖層->魔棒選中圖像->菜單欄->選擇->修改->羽化(1-2)像素->反選->del刪除 修改0/1圖層模式爲疊加->選

原创 JavaScript(ES 6)統計數組內符合條件數據的簡潔方法

數組示例 let users = [ {“name”:“張三”,“age”: 10}, {“name”:“李四”,age: 14}, {“name”:“王五”,age: 9}, … ] 要求統計出數組裏年齡大於10的人數。 方法一

原创 C++線程安全的定時器(時間堆)實現

time_heap(時間堆) 適合事件驅動系統的時間堆定時器,所有接口都儘量設計的簡單易用。 現在大部分流行的定時器一般分爲兩種,時間輪,時間堆。基於設計上而言。時間輪可以設計爲滴答檢測超時事件,或者直接在循環中檢查超時事件。而

原创 應用程序沒有調用 WSAStartup,或者 WSAStartup 失敗。一次奇怪的錯誤

在release環境下,我的代碼原本是這樣: assert(WSAStartup(MAKEWORD(2, 2), &wsa) == 0); 莫名其妙的出現的這個錯誤,結果我認真看了幾次,發現vs直接跳過了這個函數的執行, 當時就

原创 使用VS編譯opencv項目出現無法打開包括文件: “opencv2/core/utils/tls.hpp”解決

必須使用相同版本的opencv和opencv_contrib來編譯就不會報錯了

原创 C++基礎數據類型最大值/最小值宏

包含#include <cstdint> 頭文件後就能使用這些宏

原创 單臨界區管理和多臨界區管理的效率對比

測試代碼: struct test1 { int value; CRITICAL_SECTION _critical; //臨界區 test1() : value(0) { // 初始化臨界區 InitializeC

原创 淺析std::string的append方法

string內部有多個append函數,我們就拿其中一個來說(基本原理都一樣)。 其中第一步中的if (_Count <= _Mypair._Myval2._Myres - _Old_size)可以翻譯爲 如果(加入的字符大小<= 當前大

原创 C++ 一句代碼打印當前線程ID

功能代碼: printf("ThreadID: %d\n", GetCurrentThreadId()); //經測試這個函數速度更快 printf("ThreadID: %d\n", (*(uint32_t*)&std::thi

原创 關閉AcceptEx緩衝區導致延遲增加問題

經測試,在AcceptEx函數指針投遞accept請求的時候如果把接收緩衝區的大小設置爲零,那麼server端消息到client端延遲會增加10ms左右(各機器性能不同...)    上對比圖 關閉了緩衝區的server端  client

原创 C++線程安全的高精度定時器(時間堆)實現

time_heap(時間堆) 適合事件驅動系統的時間堆定時器,所有接口都儘量設計的簡單易用。 現在大部分流行的定時器一般分爲兩種,時間輪,時間堆。基於設計上而言。時間輪可以設計爲滴答檢測超時事件,或者直接在循環中檢查超時事件。而

原创 C++ Sleep以及this_thread::sleep_for精度不夠的問題

代碼測試休眠5秒鐘,一秒鐘休眠一次測試, WaitForSingleObject函數的精度比sleep和sleep_for的精度提高10ms左右; WaitForSingleObject在等待的過程中會進入一個非常高效的沉睡等待狀態,只佔

原创 C++線程安全的智能指針

smart_ptr.hpp #pragma once #include <cstdint> #include <memory> template <class T> class smart_ptr { private: T* _ob

原创 關於inline的小知識

1. 要想實現inline函數必須將inline放在函數定義前,而不是函數聲明前 2. protected和public裏的inline函數如果將定義放在了cpp文件中那麼如果在其他源文件中使用此函數將會編譯錯誤 3. 最好將inline