- 博客(35)
- 资源 (2)
- 收藏
- 关注
原创 EventBus的优化——KeventBus
一、版本说明: 基于android eventbus 3.0 版本优化:优化前期以类为区分监听接收对象,需要创建很多类,优化后采用字符串方式区分,避免创建太多类,减少代码量,比较优雅支持返回值,支持private和static的方法优化前,订阅者需要订阅很多监听方法来区分分类,优化后可以减少监听方法,在一个方法或多个方法里面进行分类判断即可,思想来自handler优化前维护...
2020-05-07 13:38:20
2188
1
原创 加密过程安全研究
数据加密安全一、不加密的数据有何安全问题?1、数据容易被不法问题抓包,一览无余,特别是密码,与金融相关的数据,数据安全问题尤其重要。2、易被篡改,接收方与发送方的内容不一致。3、没有鉴权,易被假冒身份。网络数据安全建议使用HTTPS(iOS在appstore上线审核有建议要求),但HTTPS需要收费。https = http + 加密+ 认证 + 完整性保护,可自己在ht...
2020-04-20 17:29:16
442
原创 Shell脚本语言
开始编写脚本文件,需要编写的文本功能如下:1. 脚本文件的创建与执行 在终端输入 vim 命令打开编辑文件,eg : vim 01.sh 开始编写脚本文件 输入echo “hello world” (echo 是输出的 函数),让脚本文件执行后输入“hello world” 退出保存 : 按下ese, 输入 :wq ,保存退出 自动回...
2020-04-19 16:12:05
308
原创 Linux 终端命令
1. cd : 当前目录切换 a、cd dir: 切换到当前目录的 dir目录 b、cd .. : 切换到上一级目录 c、cd ../.. 切换 上二级目录 d、cd / : 切换到根目录 e、cd ~ : 切换到用户目录,比如是root是当前的用户目录,则切换到root...
2020-04-19 15:53:59
298
原创 Android 进程通信方式
一、android 提供了几种进程通信(IPC)方式:1、共享内存(只能用于共享,传递得用Binder) 实现方式: 序列化到内存,如paracelable和serializable序列化到共享内存(有其中一个进程提供)2、文件共享(只能用于共享,传递得用Binder) 实现方式:序列化到外部存储,如paracelable和serializable序列化到...
2020-04-07 10:48:38
1050
原创 Android注解、反射、泛型的学习记录
注解: Annotation其实就是代码里的特殊标记, 它用于替代配置文件,也就是说,传统方式通过配置文件告诉类如何运行,有了注解技术后,开发人员可以通过注解告诉类如何运行,注解本身对程序运行不会发生什么变化,而通过反射取得注解的对象进行处理才会对程序发生变化。注解的一些意义: 1、系统的一些注解,如@override @NoNull 是为了更好的给程序开发者更友好的...
2020-03-29 18:18:54
318
原创 HashMap、HashSet、TreeMap、TreeSet、LinkedHashMap的数据结构以及适用场景
HashMap: 数组+链表+红黑树实现。通过hashcode映射方式,能更快的查询。一般用于对健值对方式快速查询的使用场景。但是线程不安全,线程的安全的话可以使用tableMap,但tableMap的锁太重,因此可以使用ConcurretHashMap采取分段锁的方式性能更搞。 HashMap无序,如果要有序遍历的情况可以使用treeMap。Concurr...
2020-03-27 18:45:37
898
原创 搜索二叉树的手写
/** * 文件描述:手写二叉搜索树(左小右大的) * 作者:chenjingkun708 * 创建时间:2020/3/24 * 更改时间:2020/3/24 */public class MyBinarySearchTree { public Node root;//树的根节点 public MyBinarySearchTree() { } /...
2020-03-27 12:59:44
125
原创 单链表的代码(java)
1、单链表代码实现 /** * 文件描述:手写单链表以及单链表的翻转(不考虑代码优化的情况) * 作者:chenjingkun708 * 创建时间:2020/3/20 * 更改时间:2020/3/20 */public class MyLinkedList<V>{ Node<V> head; int size; public...
2020-03-24 16:41:45
116
原创 Java HashMap源码分析与手写
1. HashMap是怎样一种数据结构2. HashMap为什么取值快?3. HashMap怎么扩容?4. HashMap的大小为什么是2的n次方?5. jdk1.8之后,HashMap为为何引入红黑树?6. 手写HashMap...
2020-03-20 15:27:29
147
原创 树-数据结构与算法(学习记录过程笔记)
一、树的定义? 程序中什么是树? 符合下面两点定义的,可以成为程序中的树的结构: 1、有且只有存在一个根节点 2、有若干互不相交的子节点,从子节点出发,又是一个子树,子树也是一个树(所以可以用递归的思想去求解树)二、树的分类 1. 普通树: 满足树的定义的都是普通树。 2. 二叉树:子节点最多只有两个节点的树,即为二叉树。 ...
2020-03-19 18:25:12
191
原创 汉诺塔求解过程(C\C++学习过程记录)
原文链接:(转载改写出处)https://dmego.me/2016/10/16/hanoi起源汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。抽象为...
2020-03-12 14:25:02
863
原创 快速排序算法(C\C++算法学习过程记录)
一、快速排序思想 快速排序是冒泡排序的改善算法,冒泡排序只能在相邻的两个值之间进行比较交换,这样交换的次数比较多的情况下,效率比较低,而快速排序的思想是分治和递归的思想,取定数组其中一个值作为基数,将待排序数组排序分为左边小于基数的数组,右边大于基数的思想(假设是是升序排序,递归方法后面讲解),然后排序完的左右两边的数组再和初始数组的排序分治方法一样再进行排序(也就是递归过程),直到待...
2020-03-12 13:39:22
135
原创 插入排序(c\c++算法学习过程记录)
一、思想 将数组分为已排序和未排序两部分,遍历未排序的部分,插入到已排序的数组中,最优O(n),最差O(n平方),接近排序好的最优。二、代码实现void insertSort(int* list,int len){ int k; for (int i = 1; i < len ; ++i) { int temp = list[i]...
2020-03-09 14:14:37
86
原创 选择排序(c/c++算法学习记录)
一、思想遍历找出最小值,再进行交换,时间复杂度O(n平方)二、代码实现void swap(int* num1,int*num2){ int temp; temp = *num1; *num1 = *num2; *num2 = temp;}void selectSort(int* list,int len){ for (in...
2020-03-09 14:10:24
70
原创 冒泡排序(c/c++算法学习过程笔记)
一、思想像冒泡一样,从前到到后遍历数组,前后做对比,前面比后面大的则交换(升序)二、冒泡排序(未优化的)代码实现,升序:遍历找出最大值,时间复杂度O(n平方)void bullurSort(int* list,int len){ for (int i = 0; i < len-1; ++i) { //注意k还是从0开始, for (i...
2020-03-09 14:08:01
101
原创 MAC电脑在终端修改用户变量
1. 开发用户变量文件 : open ~/. base_profile2. 创建或修改用户变量文件 : vim ~/.bash_profile3. 编辑后保存: 按esc键,然后输入 :wq 就会保存退出4. 让编辑的内容生效: source ~/.bash_profile5. 查看生效没有 : echo $PATH...
2019-05-31 18:07:22
739
原创 Android:View的事件分发
一、概述1、了解并掌握View的事件分发,可以让我们解决一些view的事件冲突和做一些自定义view的事件。我将以测试代码打印的log的形式去跟踪并了解事件分发的过程。了解事件分发,需要了解view三个重要的函数。public boolean dispatchTouchEvent(MotionEvent ev)public boolean onInterceptTouchEvent...
2019-01-17 15:58:07
375
原创 java知识:synchronized 、wait、notify、notifyAll
1、synchronized对所在的线程的方法或对象加锁,synchronized 加锁修饰的代码块或对象没有执行完,下个执行此代码块的方法或对象,被加进锁池处于等待状态,直到代码块执行完或者对象不用,下个执行才能正常执行。synchronized 比较重,要排队等待,有些场景比较耗性能,但是加锁提升了线程安全问题。2、wait()wait()方法是超类Object 的方法,f...
2018-12-26 13:46:26
290
原创 Java: Hook技术
一、什么是Hook Hook翻译成中文就是勾子的意思,在java中它表示在事件到达终点前进行拦截或监控的一种行为。 二、Hook的实现实现hook我们必须要知道java的反射和动态代理。 1、反射 反射是java的查看、检测、修改自身的一种行为。 在编译阶段,编译器将我们编写的java文件编译成.class文件。而在运行期,jvm又将.class文件通过...
2018-12-24 10:50:39
19844
3
原创 Java : 数据流 InputStream 和 OutputStream
一、文件 输入输出流 :FileInputStream 与 FileOutputStream 1、FileInputStream、FileOutputStream 顾名思义 属于文件流,用于 文件流操作。继承 InputSream,outputSream,属于InputSream,outputSream 2、用法 //读取一个字符// ...
2018-12-18 16:57:28
350
原创 FFMpeg Linux环境编译
网上看了很多篇文章,试过了很多次,结果都编译不过,也经历了很多坑。下面我提供一套自己编译通过的经历,仅供分享。一、编译需要的支持1、FFmpeg(3.3.9)源码:下载地址( http://www.ffmpeg.org/download.html#releases )2、NDK(r14b):下载地址( https://developer.android.google...
2018-12-12 19:33:53
253
原创 Android知识点:HandlerThread
一、什么是HandlerThread? 让我们贴出来HandlerThread的源码,分析Handler。/* * Copyright (C) 2006 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may no...
2018-11-26 18:28:45
236
原创 Android知识点:IntentService
一、什么是IntentService? IntentService本质上是一个特殊的Service,它继承了Service,是一个抽象的类型的Servive,内部运用Service和HandlerThread的机制,实现异步耗时操作。 二、IntentService源码分析public abstract class IntentService extends Servi...
2018-11-22 19:48:12
318
原创 Android知识点:AsyncTask
一、什么是AsyncTask AsyncTask是封装了Thread 和 Handler 的 异步操作机制。内部用Thread实现了异步操作,又通过Handler和getMainLooper方式将ui的更新操作放到主线程去更新。 二、AsyncTask 的使用 AsyncTask task = new AysncTask(); task.execute(...
2018-11-20 20:46:37
118
原创 Android知识点:Service
一、什么是Service? service是运行在后台,没有提供用户界面、具有自己独立生命周期的应用组件。运行在ui线程,所以也不能执行耗时操作二、Service和Thread的相同点与区别 相同点:后台运行,用户不可见 区别: 1、service拥有自己独立的生命周期,thread一般依赖于其他组件。 ...
2018-11-20 10:32:48
223
原创 Android知识点:Handler
一、什么是HandlerHandler是种消息的传递机制,通过发送Message和处理Meesage和Runnable对象,来关联对应线程的Looper和MessageQueue实现线程消息传递。常用于子线程向主线程发送消息更新ui。当然也有其他用处。 二、Handler的使用1、sendMessage(Message msg)2、post (Runnable runnable...
2018-11-19 18:47:03
184
原创 Android知识点:BroadcastReceiver
一、定义BroadcastReceiver是android的四大组件之一,是android应用的广播接收者。广播包括系统广播和自定义广播,按照优先级,又可以分为有序广播和无序广播。二、广播注册:1、静态注册,类似Activity 在清单文件中注册,一次注册,直到应用进程杀死才取消注册。2、动态注册,根据时机,动态注册广播。可以动态的取消注册广播三、系统广播实现机制...
2018-11-19 17:18:30
181
原创 Android知识点:Webview
一、概述 webview是android承载网页的一个控件,使用的是android系统自带的webkit浏览器。 二、使用 跟其他控件使用一样,webview可以以标签或者动态生成。 1、loadUrl(String url) 使用此方法加载网页url 加载网页 2、addJavascriptInterface(Object o, Stri...
2018-11-07 18:25:14
477
原创 Android知识点:Fragment
一、概述在android开发中fragment的使用频率很高,fragment拥有自己非独立的生命周期(依附于acitivty),被称为是android的第五大组件之一。二、fragment的使用方式 1、在布局文件中以标签的形式(类似使用控件)布局。 2、动态注册: 通过fragmentManager管理fragmentTracsation 的添加显示隐藏移除三、frag...
2018-11-07 10:48:17
202
原创 Android知识点 : Acitivity
一、什么Acitivity? 概念:提供给用户可见界面、可操作的android组件二、Acitity 的四种状态 running 、pause 、stop 、kill1、running : 用户可见可操作的状态,比如正在前台操作的activity2、pause : 用户可见 或者 不完全不可见但不可操作的状态、比如被覆盖一层透明Activity A的A...
2018-10-24 10:43:37
496
原创 Android技术复盘
一、基础知识点 1、四大组件:Activity、Service、BrocastReceiver、ContenrProvider 2、常用控件 Fragment、Webview 3、异步消息处理机制:Handler、AsyncTask、IntentService、HandlerThread 基础 与 之间的区别二、进阶知识点1、跨进程通信机制:Binder2、Han...
2018-10-23 11:34:36
336
2
原创 android常用设计模式
一、设计模式 1、单例模式 一般单例模式的意思是全局中只用一个实例。下面示范使用单例的案例。 ⑴ 懒汉模式/** 懒汉模式 * Created by chenjk on 2018/8/6. */public class Single { //单例 private static Single _instant; //注意设置为priv...
2018-08-01 15:22:53
530
原创 android 学习与整理章程
1、ARount了解与熟悉使用 2018-05-292、MVP了解与熟悉使用 2018-05-293、常用与优秀的组件整理收藏 2018-05-30至2018-06-154、组件化开发的使用。 2018-05-31 5、gith...
2018-05-29 10:22:36
155
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人