原创 文本編碼檢測算法代碼的一個BUG

網上流行的文本編碼自動檢測,一般都是拷貝過來的,一個名爲erik peterson的人寫的。 看了一下其代碼,似乎有個地方寫錯了。 看代碼中添加的中文註解: sjis_probability(unsigned char* rawtext

原创 rxjava2要點介紹

rxjava2比1有什麼差異? 如果說開發rxjava1的時候,作者只是個程序初哥,那麼rxjava2的時候,作者已經是有點經驗的人了,rxjava2的接口函數、類名的命名以及接口調用方式,都比rxjava1成熟不少,且更容易理解,邏輯也

原创 深圖系列:Android Studio使用C/C++

前言 Android Studio支持C/C++,自從有了嚮導,用起來不再那麼麻煩,但是配置起來還是有點複雜。特別是拿到別人的C和C++庫要合併到自己的Java中使用,更爲明顯。 本文針對在Android Studio中使用C/C++語言

原创 pthread-2.9.1有關tsd的bug

問題現象 多線程如果使用pthread來實現tsd,在pthread_key_delete的時候卡死。 原因 pthread_key_delete內部代碼有錯,lock一次後多次unlock,導致卡住。 ...  ptw32_mcs_l

原创 win32下不同方法實現tsd效率對比

前言 簡單地說,tsd是同一個變量在不同線程代表的不同的內容。 本文針對以下兩種方法進行對比效率: 1.__declspec(thread) 聲明 2.pthread方式 測試方法 測試代碼如下: // __declspec(threa

原创 ios的uitableview:實現不顯示選中項顏色效果

現象 uitablview點擊一下後,還遺留選定的顏色效果,這在setting類似的界面中肯定是不好看的, 目標 希望能類似delphi裏面列表控件有個hideselection一樣,按下的時候看到反饋顏色,擡起的時候不要再顯示顏色。 方

原创 攔截任意object-c類的函數

一種有缺點的方法 想攔截object-c類的函數,有一種方法是額外寫擴展類,例如下面代碼: @interface UIView(fordebug) - (void)removeFromSuperview; @end @implemen

原创 vmware中安裝Mac os桌面無法全屏的問題解決辦法

1.虛擬機啓動mac時候按command+R按鍵,直到出現蘋果公司的圖標; 注意,如果是windows鍵盤,按windows按鍵+R。 2.進入到修復模式,打開終端: 3.輸入:csrutil disable 4.回車後看下圖效果:

原创 使用ios各種鎖注意事項

抱歉,本文不教你怎麼寫代碼調用鎖。。。咱們談談高級點玩意,:) 性能的選擇 鎖的性能對比: 安全的選擇 OSSpinLock性能很高,但是,不安全,會出大事。除非保證每條使用它的線程的優先級是一致的。 所以,如果無法保證每條線程優先級一

原创 ios中pthread_mutex和dispatch_semaphore性能對比

因爲自旋鎖有風險已經別踢出局不再使用,所以對比了一下pthread提供的pthread_mutex_t以及dispatch_semaphore。 測試時候特別注意debug模式和release模式,結果可能會完全不一樣。 測試方法 模擬實

原创 object-c的property有關注意事項

自定義setter和getter,標識無效 property僅僅是爲了幫你節省setter和getter兩個函數, 通過指定atomic、strong之類的標識,xcode幫你自動生成相應不同的setter和getter函數。 所以,如果

原创 讓Xcode的異常斷點和微軟的vs一樣便捷!

囉嗦 用過vs調試的人都知道,程序異常了,會自動地斷點定位在發生異常的代碼處, 但是,換了xcode後,默認是不會自動定位在異常的代碼處的,而是在更上幾層的main函數裏面, 從調試的便捷性來看,這明顯是非常浪費程序員的時間的,程序員在調

原创 Xcode開發ios項目遇到自定義運行時屬性異常

異常包含以下字樣: this class is not key value coding-compliant for the key 原因: 添加了用戶定義的運行時屬性,去檢查一下, 點擊報錯對應的控件,然後看一下,不需要的刪除,如果是空

原创 pjsip加入amr支持

1.開啓開關 pjsip加入amr支持,需要開啓編譯宏開關。 可以通過configure來配置("opencore-amr路徑"需要替換爲自己實際的): ./configure --with-opencore-amr=/opencore

原创 xcode第三方庫自動下載管理工具cocoapods和Carthage

代碼倉庫工具介紹 不管是android studio還是xcode,如果沒有遠程代碼倉庫工具支持,那麼你的項目引用的第三方庫,必須手動下載放到代碼文件夾一起存放,複雜的話甚至還要額外做一些配置。 用上代碼倉庫工具,您只需寫上需要依賴庫的名