自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

风无言

我的决心,不可撼动!

  • 博客(111)
  • 资源 (4)
  • 收藏
  • 关注

原创 EventBus源码分析

## 总结1. 需要先通过register接口进行注册为订阅者,订阅方法才能生效,不再接收消息的时候主动调用unregister取消注册,也避免内存泄漏(特别是一些有生命周期的activity等);2. 只有通过注释@Subscribe声明为订阅者方法(消息处理)才能接收EventBus接口发送的消息,并且要求必须是public,非sstatic,非abstract,而且入参数量只能是1个;3. @Subscribe注释提供了3个属性字段: 3.1 threadMode: 指明...

2020-08-02 18:38:33 314

转载 Kotlin协程入门初级篇

协程包含很多的功能点,这边只是一些基本功能点的介绍,只适合小白,已经掌握的可以忽略~协程入门(一):协程介绍与调用方式协程入门(二):挂起与取消协程入门(三):调度器协程入门(四):启动模式协程入门(五):异常处理式协程入门(六):调度方案比较协程入门(七):异常处理方案比较微信公众号...

2019-09-01 23:18:16 430

原创 协程入门(一):启动与挂起

什么是协程协程: 是一种更为灵活高效的"用户线程",能够选择异步还是同步执行,指定运行的线程。异步、同步编程 : 是指的协程能够选择自身的启动模式,在当前线程堵塞式运行,还是在后台线程异步执行;指定运行线程:能够方便的选择执行的线程是后台线程还是UI主线程;在并发处理上会比使用线程来得更加的高效。进程、线程、协程关系进程 > 线程 > 协程, 即一个进程可以包含...

2019-08-18 16:45:39 3627

原创 LeakCanary源码解析

开源库路径https://github.com/square/leakcanary源码结构   leakcanary-watcher: 这是一个通用的内存检测器,对外提供一个 RefWatcher#watch(Object watchedReference),它不仅能够检测Activity,还能监测任意常规的 Java Object 的泄漏情况。 leakcanary-a...

2019-02-24 22:58:13 235

原创 小白设计模式:桥接模式

定义将抽象部分与实现部分分离开来,使得二者可以独立变化,互不影响的结构型设计模式。主要组成抽象部分(Abstraction) : 该类保持一个对实现部分的引用,抽象部分中的方法需要调用实现部分的对象的方法来实现;这部分一般为抽象类居多。具体抽象部分(Concrete Abstraction):抽象部分的具体实现,一般用于抽象部分方法的完善和扩展;实现部分(Implemento...

2019-02-17 21:56:28 195

原创 代码整洁之道

《Clean Code》代码整洁之道 一书相关读书笔记,整洁的代码是自解释的,阅读代码应该如同阅读一篇优秀的文章,见字知意,能够一下子明白大概的代码功能。代码首先要能读懂,其次才去要求功能实现。 作为开发者来说,在现在基本都讲究团队合作的工作方式下,规范远比功能重要,开发的功能也许在版本迭代中就不复存在了,但是规范却是一直存在的。 为了整洁的代码,就必须遵循一些统一的团队规...

2019-01-27 22:09:26 687

原创 小白设计模式:策略模式

定义策略模式(Strategy),是一种对象行为模式:定义一系列的算法,将可变的部分封装起来,使得它们可以相互替换,让变化的部分于独立调用它的客户而变化,不会导致调用方需要跟着修改。 (这边的"算法"指的是系统中经常会变的部分,可能是超类定义的行为,或者特征之类的)主要组成抽象策略接口(Strategy): 定义同一组算法的公共接口;具体策略实现(Concrete Strategy...

2018-12-23 11:03:07 205

原创 小白设计模式:装饰者模式

  定义能够动态的给对象增加行为职责的一种模式,灵活性远胜于继承。主要组成抽象组件(Component): 定义抽象行为接口。具体组件(Concrete component): 定义具体实现行为接口的类,继承自抽象组件,也做被装饰者,用于被附加各种行为。抽象装饰者(Decorator):持有一个Component的引用,并继承自Component,提供其一致的接口。这边...

2018-12-08 21:45:01 176

原创 小白设计模式:组合模式

定义将对象组合成树形结构来表现出“整体/部分”的层次结构。组合能让客户以一致性的方式处理个别的对象以及对象组合。主要组成抽象组件(Component): 为组合中的对象(节点或者组件)声明接口,也可提供默认的接口缺省实现;节点对象(Leaf): 组合中的叶节点对象,叶节点对象不再拥有子节点;复合对象(Composite):允许存在多个子部件,需要包含的子部件,并实现对子部件的操...

2018-11-29 11:42:19 177 1

原创 小白设计模式:访问者模式

定义可作用于对象结构中各个元素,在不改变各元素类的前提下,定义作用于这些元素新操作方法的一种行为型设计模式。主要组成抽象访问者(Visitor): 声明出对对象结构中每一个具体元素的访问方法visit,传入Concrete Element对象作为参数具体访问者(Concrete Visitor): 实现各种visit方法,调用具体元素对象完成对应的各种操作元素(Element)...

2018-11-25 15:35:08 170

原创 算法(八):图解KNN算法

K最相邻算法(K-NearestNeighbor Classification Algorithm,KNN)是数据挖掘分类技术中最简单的方法之一,所谓K最近邻,就是K个最近的邻居的意思,说的是每个样本都可以用它最接近的K个邻居来代表。KNN算法的核心思想是如果一个样本在特征空间中的K个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策...

2018-11-24 23:32:01 3518

原创 小白设计模式:责任链模式

定义将多个接收对象(处理者)组成链式结构,按序对输入的信号事件进行处理直到事件被处理。主要组成抽象处理者(Handler) : 责任链上每一环的处理对象,抽象处理接口。具体处理者(concrete Handler) : 实现Handler相关接口,并持有责任链上下一个处理者的引用。对输入的事件进行判断,符合条件则截断事件传递并进行处理,否则将事件接着往下传递。输入事件(requ...

2018-11-18 22:24:20 151

原创 算法(七):图解动态规划

算法简介动态规划,将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法与贪婪算法区别 2者都是将大问题划分为规模更小的子问题 动态规划实质是分治法以及解决冗余,将各个子问题的解保存下来,让后面再次遇到的时候可以直接引用,避免重复计算,动态规划的显著特征之一,会有大量的子问题重复,可以直接使用前面的解 贪心算法的每一次操作都对结果产生直接影响(处理问题的范围...

2018-09-24 17:37:10 2559

原创 JAVA集合(四、ConcurrentHashMap)

参考自: https://javadoop.com/post/hashmap https://blog.csdn.net/lsgqjh/article/details/54867107 https://www.baidu.com/link?url=EdjLYTP4UFbVMXPGGe76qAfAFuqEIshx2_xFwZkkIcYrMXs1P5qV0Hhmx6FzJR...

2018-09-09 00:45:52 374

原创 算法(六):图解贪婪算法

算法简介参考:https://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741375.html贪婪算法(贪心算法)是指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够导致结果是最好或者最优的算法。贪婪算法所得到的结果往往不是最优的结果(有时候会是最优解),但是都是相对近似(接近)最优解的结果。...

2018-08-26 13:01:51 81582 9

原创 Java集合(三、Hashtable)

Hashtable源码实现上和HashMap基本上没什么大的差别,有兴趣可以查看HashMap一章了解下。要点总结1.Hashtable不支持key或者value为null的情况,HashMap和LinkMap可以支持:并非由于啥特别的原因,只是Hashtable源码进行put操作时,判断null抛出了NullPointerException异常,如下:```public s...

2018-08-19 11:16:51 227

原创 算法(五):图解贝尔曼-福特算法

算法简介贝尔曼-福特算法(Bellman–Ford algorithm )用于计算出起点到各个节点的最短距离,支持存在负权重的情况 它的原理是对图进行最多V-1次松弛操作,得到所有可能的最短路径。其优于迪科斯彻算法的方面是边的权值可以为负数、实现简单,缺点是时间复杂度过高,高达O(VE)。但算法可以进行若干种优化,提高了效率。 Bellman Ford算法每次对所有的边进行松弛...

2018-08-18 19:22:40 33741 8

原创 算法(四):图解狄克斯特拉算法

算法简介狄克斯特拉算法(Dijkstra )用于计算出不存在非负权重的情况下,起点到各个节点的最短距离可用于解决2类问题:从A出发是否存在到达B的路径; 从A出发到达B的最短路径(时间最少、或者路径最少等),事实上最后计算完成后,已经得到了A到各个节点的最短路径了;其思路为:(1) 找出“最便宜”的节点,即可在最短时间内到达的节点。(2) 更新该节点对应的邻居节点的开销,其...

2018-08-12 17:54:40 7993

原创 Java集合(二、LinkHashMap)

继承自HashMap,需要先查看"HashMap"一文先了解要点总结1.LinkHaspMap继承自HashMap,除了HashMap遍历无序的外,其余特性,比如扩容机制、key和value允许为Null等都是和HashMap一致;2.LinkHaspMap内部额外维护了一个双向链表,在每次增删改查时,会增加或者调整链表的节点顺序,用于迭代时输出的顺序3.默认遍历时是按照插入节点的...

2018-08-08 22:24:31 804

原创 算法(三):图解广度优先搜索算法

算法(三):图解广度优先搜索算法算法简介广度优先搜索算法(Breadth First Search),又称为"宽度优先搜索"或"横向优先搜索",简称BFS; BFS是用于图的查找算法(要求能用图表示出问题的关联性)。BFS可用于解决2类问题:从A出发是否存在到达B的路径; 从A出发到达B的最短路径(这个应该叫最少步骤合理);其思路为从图上一个节点出发,访问先访问其直接相连的子节...

2018-08-03 22:26:09 41814 5

原创 Java集合(一、HashMap)

参考:https://juejin.im/post/5b5bf507f265da0fa42ce89e 要点总结1.HashMap内部数据元素(Map.Entry<key,value>)的存储采用的是数组+链表+红黑树(JDK8新增)的形式存储的,并且存储顺序是无序的,如图一所示,数组上每个节点所存在的元素的个数是不一定的;实现 Map<K,V>, Clo...

2018-07-28 13:44:41 214

原创 Android源码之路(二、AsyncTask)

参考https://www.baidu.com/link?url=QNRznJEBT25k0bpgVD3bOniOia2W85eiPIWrS93YFknyrHoFDGrJVtoax2ZYpiiErtRW7VD-sNEgCRNespIhSK&wd=&eqid=9a27957100030dcd000000065aac77c0https://www.jianshu.com/p/7...

2018-07-25 14:20:38 208

原创 算法(二):分而治之

算法篇的文章主要为对”图解算法”一书的记录与总结分而治之 分而治之(divide and conquer, D&C),一种著名的 **递归式** 解决问题的方法.快速排序中便使用到了该方法;D&C的工作原理:    - 找出简单的基线条件;    - 确定如何缩小问题的规模,使其符合基线条件分而治之的例子java实现    /**     *...

2018-07-24 18:39:06 3356

原创 算法(一):二分查找法

算法基础:一、大O表示法:指示算法的速度有多快,用于指出随数量的增大,算法的所需步骤增加的速度,常见的大O运行时间(时间复杂度):O(1)表示常数阶时间复杂度O(log n),也叫对数时间复杂度,这样的算法包括二分查找。O(n),也叫线性阶时间复杂度,这样的算法包括简单查找。O(n * log n), (n*对数复杂度)O(n^2),平方阶时间复杂度O(n!),阶乘阶时间复杂...

2018-07-23 13:23:48 11883 1

原创 Android源码之路(一、IntentService)

前言源码分析篇,分析过程也参考过各位大神的成果。知识在于分享,学会了就是自己的,有参考过的,也会尽量给出链接(看了很多,可能无法一一给出);希望共同进步,站在巨人肩膀上看世界!参考:http://blog.csdn.net/smbroe/article/details/45009721以下用法和源码分析基于android-27(即版本android 8.1.0)要点总结1.生...

2018-07-23 13:22:07 157

转载 Android APK 签名比对

Android APK 签名比对转载请注明出处:http://www.blogjava.net/zh-weir/archive/2011/07/19/354663.htmlAndroid APK 签名比对发布过Android应用的朋友们应该都知道,Android APK的发布是需要签名的。签名机制在Android应用和框架中有着十分重要的作用。例如,Android系

2014-09-12 10:44:43 486

转载 APK Crack

APK Crack转载请注明出处: http://www.blogjava.net/zh-weir/archive/2011/06/11/352099.htmlAPK Crack写这篇文章之前,有些犹豫,我会不会因此而打开了一个潘多拉魔盒呢?后来一想,Android类似的恶意软件早已问世,说明这世上已经有不少软件安全专家或者黑客们对此并不陌生了。

2014-09-12 10:39:44 1040

转载 Android中的长度单位详解(dp、sp、px、in、pt、mm)

Android中的长度单位详解(dp、sp、px、in、pt、mm)    看到有很多网友不太理解dp、sp和px的区别:现在这里介绍一下dp和sp。dp也就是dip。这个和sp基本类似。如果设置表示长度、高度等属性时可以使用dp 或sp。但如果设置字体,需要使用sp。dp是与密度无关,sp除了与密度无关外,还与scale无关。如果屏幕密度为160,这时dp和sp和px是一样的。1

2014-07-02 18:57:30 639

转载 Android 完全退出应用程序实现代码

android退出应用程序会调用android.os.Process.killProcess(android.os.Process.myPid())或是System.exit(0),这只是针对第一个Activity(也就是入口的Activity)时生效。如果有A,B,C三个Activity,而想在B或C中Activity退出,调用上面的方法,往往会销毁当前的Activity返回上一个Activit

2014-05-27 10:05:25 845

转载 Android 怎么退出整个应用程序?[转]

我们在写android应用程序时,经常会遇到想退出当前Acitivity,或者直接退出应用程序.我之前的一般操作是按返回键,或者直接按home键直接返回,其实这两种操作都没有关闭当前应用程序,没有释放系统资源。有时跳转的activity较多时,还需要多次按返回键,这样感觉一点都不爽。后面添加了一个菜单返回功能键,这个方法也只能用system.exit(0)来关闭当前活动的Activity,附代码:

2014-05-27 10:04:49 678

转载 u-boot源码配置原理分析

作者:杨老师,华清远见嵌入式学院讲师。u-boot的源代码默认是不针对任何目标平台的,当我们要移植u-boot到一个特定的目标平台时,需要生成针对目标平台的配置文件。u-boot目前已经支持的芯片可以在include/configs/下面找到。比如我们要编译针对s3c2410芯片的u-boot.bin,那么我们就需要在u-boot源码根路径下执行:make smdk2410_con

2014-04-21 14:54:52 557

转载 ubuntu 10.04 虚拟机建立tftp服务器

习惯把总结放到前面通过这个实验,我明白了tftp一些基本的概念问题.知道如何正确的进行上传和下载.这个实验说明了,root下,在tftpboot下,具有666的文件,才能被覆盖掉.深刻体会了chmod 的用法.也明白了读说明书的重要性.反应了我对英文说明书,还是读的能力不够. Ubuntu 的 openbsd-inetd 預設將 tftpd 的路徑指

2014-04-20 19:31:54 1076

转载 linux diff详解

diff是Unix系统的一个很重要的工具程序。它用来比较两个文本文件的差异,是代码版本管理的基石之一。你在命令行下,输入:  $ diff diff就会告诉你,这两个文件有何差异。它的显示结果不太好懂,下面我就来说明,如何读懂diff。一、diff的三种格式由于历史原因,diff有三种格式:  * 正常格式(normal dif

2014-04-09 14:23:04 13782

转载 Ubuntu 12.04下NFS安装配置图解

下面介绍安装步骤1、执行命令:sudo apt-get install nfs-kernel-server 我之前安装了,之所以写下来是防止重装系统后,这些东西都怎么安装。2、执行命令:mkdir /home/song/nfs 建立一个nfs服务的专有的文件夹,这里路径依自己喜好而定!不过要记得这个路径3、建立好文件夹后,接着执行命令:sudo vi

2014-03-30 10:50:16 734

转载 Ubuntu 11.04下编译kernel

Ubuntu 11.04下编译kernel 1. 下载并解压Linux内核源代码, 内核源码下载地址为www.kernel.org,查看当前内核版本命令为uname -r。下载后解压至目录/usr/src.2. 解压完成后在终端下进入/usr/src/linux-2.6.34.13目录(其中2.6.34.13为我使用的版本号)3. 输入命令make mrprop

2014-03-29 22:24:53 720

转载 查看当前环境下内核导出了哪些符号

查看当前环境下内核导出了哪些符号#cat /proc/kallsyms >log#vi log

2014-03-26 19:56:23 1023

转载 Unknown symbol platform_driver_unregister (err 0)

关于那个什么 Unknown symbol platform_driver_unregister (err 0) 等之类的错误,如果内核里有这个函数,比如(注意不一定是在 这个里面,具体看你编译的模块了)platform_driver_unregister这个函数在内核代码中有定义(/drivers/base/Platform.c中)但是还是报错,因为有这一行:EXPORT_SYMBOL_GPL(

2014-03-26 19:54:59 5711 1

转载 DEVICE_ATTR

sysfs接口函数的建立_DEVICE_ATTR  2012-05-09 11:36:46|  分类:linux文件系统 |  标签:device_attr  sysfs接口函数  |字号大中小 订阅说道sysfs接口,就不得不提到函数宏 DEVICE_ATTR,原型是#define DEVICE_ATTR(_name, _mode, _show, _s

2014-03-24 14:22:41 518

转载 struct device结构体(2.6.23)

struct device结构体(2.6.23)  一、定义:linux/include/linux/device.hstruct device {        struct klist     klist_children;        struct klist_node   knode_parent;      /* node in sibling list */ 

2014-03-24 13:39:10 818

转载 介绍struct bus_type非常好的

总线总线是处理器和一个或多个设备之间的通道,在设备模型中, 所有的设备都通过总线相连, 甚至是内部的虚拟"platform"总线。总线可以相互插入。设备模型展示了总线和它们所控制的设备之间的实际连接。在 Linux 设备模型中, 总线由 bus_type 结构表示, 定义在 :struct bus_type {    const char        * nam

2014-03-23 10:07:53 2216

腾讯ai人脸识别

腾讯ai人脸识别相关api调用测试,https://ai.qq.com/,有兴趣可以看下

2018-08-08

百度v3人脸识别相关

实现百度V3版本人脸识别和人脸库相关接口的调用实现,需要替换appid和appkey相关字段

2018-08-08

MFC半成品哦,纯粹找人交流

尚存在小问题,正在解决,完成时再与大家分享

2012-06-05

各种电路设计总结

各种电路设计总结,包含各种电子设计的电路图

2012-04-02

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除