原创 c語言char數組測試

const size_t  len=10; char dest[len]; char *src="1234567777777777777777777"; char src2[]={'1','2','3'}; strncpy(dest,sr

原创 利用裝飾者模式通過層層封裝以達到動態增強類的功能。

提示:它優於繼承在編譯時靜態綁定的行爲。 代碼待續。。。 點贊 收藏 分享 文章舉報 要淡定_少年 發佈了50 篇原創文章 · 獲贊 0 · 訪問量 3萬+ 私信

原创 策略模式實現可拓展可插拔的功能。

package com.main; public interface Calculator { int calculate(int input); } package com.main; public class C1 imp

原创 冒泡排序算法代碼

private void bubleSort(int[] data) { int size = data.length; while (size >= 2) { boolean

原创 動態規劃鋼條切割算法簡記

private int dynamicAlgorithm(int n) { int[] cache = new int[n + 1]; for (int i = 1; i <= n; i++) {/

原创 將構件發佈到maven

摘要(本文轉自https://my.oschina.net/songxinqiang/blog/313226) 同時可參考文章(https://github.com/chrisbanes/gradle-mvn-push) maven的神威

原创 Android studio中正確引入so文件的方法

轉自http://blog.csdn.net/wulianghuan/article/details/44567001 相信很多朋友在使用Android studio開發中,遇到過如何引入第三方so文件的問題,然而第三方官方僅僅給出了A

原创 Android使用gradle快速生成渠道apk包。

https://github.com/GavinCT/AndroidMultiChannelBuildTool AndroidMultiChannelBuildTool 安卓多渠道打包工具。 實現思路講解: Android批量打包

原创 快速排序算法筆記

1,思想:快速排序算法通過避免不必要的比較操作來減少時間複雜度。同時不會增加空間複雜度。 2,實現方式: 1)通過選定一個數據項作爲參照軸,從數據兩端開始向中間掃描,把比軸小的數據項交換到低端,把比軸大的數據項交換到高端,直到低端指針與高

原创 插入排序算法筆記

1,思想:通過選取子序列最右端的數作爲標記,向左比較,把比標記小的數存儲在它的後邊相鄰位置,到頭後將標記值存儲在當前指針的位置。每完成一次內部循環會產生一個局部有序的子序列。 2,時間複雜度爲N的平方。比冒泡和選擇排序快。 3,java實

原创 【android安全】保護app本地數據文件

方法步驟: 1,將文件放在儘量安全的位置,比如內部存儲而不是sd卡。 2,對文件內容使用對稱加密或基於口令的加密。 3,對於數據庫可用相關工具加密比如SQLCiper。 4,使用android設備管理策略。 5,使用加密的SharePre

原创 堆排序算法筆記

1,堆排序算法是樹形選擇排序的改進,使其空間複雜度降低到O(1),時間複雜度O(nlogn)。 思想:通過將輸入序列構建成大頂堆。並在插入,刪除,修改的過程中重新向上或向下調整成大頂堆。使最大的數據在堆頂。所以在輸出過程中每次取出堆頂元素

原创 【android安全】之保護app組件

1,android四大組件Activity,Service,BroadcastReceiver,ContentProvider. 1)如果組件不允許其他任何app調用的話,可將android:exported="false" 2)如果組件

原创 android依賴注入框架Butter Knife的使用。

優點: 1,Butter Knife基於編譯時生成代碼的方式優於其他基於反射的注入框架,因爲反射需要運行時注入會影響程序性能。 2,Butter Knife使用簡單,不需額外的繼承規定的父類。組合優於繼承。 3,支持字段和方法的注入實現。

原创 敏捷核心思想、設計模式與過度設計

這兒只談敏捷開發的核心思想,而不談其他表現形式比如結對編程,測試驅動等。本文不是談設計模式,而是談何時該用設計模式。 敏捷開發的核心思想是:只對當前已經發生過>=2次的同類需求變更,去應用抽象,封裝,或設計模式來調整當前架構,以使之能夠