自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 资源 (6)
  • 收藏
  • 关注

原创 代理模式------读书笔记

意图代理模式主要是为了控制对象的访问,意图只要有以下三种:1、代理模式主要是为另一个对象提供代理,以控制对另一个对象的访问。2、通过代理间接支持分布式、受控以及智能访问,3、添加一个包装器或者委托以保护真正的组件不受过度复杂性的影响。代理的种类设计一个代理:当客户端第一次请求代理时,就实例化真实的对象,并将引发的请求转发给这个真实的对象。然后,所有之后的请求都直接转发到封装的真实对象。...

2019-03-18 18:47:15 260

原创 命令模式----读书笔记

定义命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持撤销操作。例子我们写一个遥控器的例子。在遥控器上按lightOn的按钮,远程控制电灯打开。interface Command {//命令接口,其他命令需要实现该接口 fun excute()} class Light{ fun on(){ ...

2019-03-04 10:43:45 258

转载 kotlin伴生对象

Kotlin中没有静态成员,主要原因在于它允许包级属性和函数的存在;Kotlin为静态成员提供了多种替代的方案:使用包级属性和函数:主要用于全局常量和工具函数;使用伴生对象:主要用于与类有紧密联系的变量和函数;使用@JvmStatic注解:与伴生对象搭配使用,将变量和函数声明为真正的JVM静态成员。伴生对象Kotlin中的对象指的是使用object关键字定义的类型声明,一般用作单例模式和...

2019-02-16 21:17:44 1123

原创 单例模式----读书笔记

单例模式—读书笔记单例模式,顾名思义,就是用来创建一个独一无二的,只能有一个实例的对象的入场券。因为在实际应用中,有些对象我们只需要一个,比如说,线程池、缓存、对话框、注册表等。当然,我们也可以使用全局对象来达到和单例模式一样的作用,但是全局对象有一些缺点,比如说:如果将对象赋值给一个全局变量,那么必须在程序一开始就创建好该对象,如果这个对象很耗资源,但是我们又没有用到它,那就会形成一种浪费。...

2019-02-16 20:38:45 151

转载 从原理分析Kotlin的延迟初始化: lateinit var和by lazy

Koltin中属性在声明的同时也要求要被初始化,否则会报错。例如以下代码:private var name0: String //报错private var name1: String = "xiaoming" //不报错private var name2: String? = null //不报错  可是有的时候,我并不想声明一个类型可空的对象,而且我也没办法在...

2019-02-16 11:01:11 715

原创 工厂模式读书笔记

简单工厂模式在我们平时的编码过程中,我们会经常使用到new,而当我们使用new的时候,就会想到"具体",因为我们的确是在实例化一个具体类,这样子,可能会导致代码更脆弱。比如说,我们可能会写出以下代码:Duck duck;if(picnic){duck = new MallardDuck();}else if (hunting){duck = new DecoyDuck();}else...

2019-01-22 21:53:23 127

原创 装饰者模式读书笔记

装饰者模式读书笔记在平时写代码的过程中,大量的继承会造成继承滥用的现象,而我们可以使用组合(composition)和委托(delegation)在运行时具有继承的效果,通过动态的组合对象,可以写新的代码添加新的功能,而无需改变现有代码。既然没有改变现有代码,那么引进bug或者产生意外的副作用机会将大幅度减少。而装饰者模式恰恰是使用对象组合的方式,在运行时装饰类,从而避免使用大量的继承。类应...

2019-01-16 21:18:10 171

原创 观察者模式读书笔记

一般观察者模式用在一对多的关系中,当一个对象发生改变时,依赖这个对象的其他对象就要自动做出改变。气象站例子这个气象站系统中包含三个部分,气象站代表获取实际气象数据的物理装置,WeatherData对象可以追踪来自气象站的数据,并更新布告板,布告板是展示给用户看的。WeatherData对象知道如何跟物理气象站联系,拿到相应数据之后,会更新布告板,如果我们写代码的话,可能会写成如下样子:p...

2018-12-17 21:40:16 118

原创 设计模式之策略模式------读书笔记

前言在开发一个系统的过程中,我们可能会时不时的问自己,我们这么设计这块逻辑到底好不好,如果以后需要扩展这部分会不会很困难。有了这么多疑问,我们自然而然的就会想到去寻找问题的答案。幸运的是,Head First设计模式这本书为我们提供了很多问题的解答。我们要善于利用其它开发人员的经验与智慧,他们也曾遇到过相似的问题,也顺利解决过这些问题。这周,读了一下策略模式,读完之后,犹如醍醐灌顶。鸭子的故事...

2018-12-01 21:11:01 135

转载 动态代理初探

代理可以看成一种包装器,通过调用自己的方法来传递函数的调用,在传递过程中,可能会增加一些新的功能。而动态代理,可以使用一个类的一个方法为任意一个类提供多个方法的调用,可以看做是任何接口的一个实现。它将所有的方法调用都路由到一个handler中——invoke()方法。动态代理可以用于这种情况下,当有多个逻辑相似的代码时,我们可以通过使用动态代理。代理类主要负责为委托类预处理消息、过滤消息、把消...

2018-09-06 11:56:53 120

转载 GC频繁抖动的主要原因

内存抖动内存抖动是因为大量的对象被创建又在短时间内马上被释放,如循环中分配对象,很容易引起GC,特别是在较大的循环次数或者一个循环中分配较多的临时对象时。瞬间产生大量的对象瞬间产生大量的对象,即使对象不大,也可能使得堆的可用空间达到阈值出发GC或导致堆的扩容产生GC。分配大内存块的对象分配大内存块的对象,如图片,大的byte数组等,虽然堆剩余内存空间足够,但是仍然可能出发GC,...

2018-08-02 16:44:35 39380

转载 Android ART虚拟机

转载自:https://blog.csdn.net/luoshengyang/article/details/45017207 Android与ios相比,一直被人诟病它的流畅性。android的流畅性问题,有一部分原因就归结于它的应用程序和部分系统服务是运行虚拟机之上的,也就是运行在Dalvik虚拟机之上,而ios的应用程序和系统服务都是直接执行本地机器指令的。除了使用ATR替换Dalvik之...

2018-08-02 16:26:21 11464 3

转载 android Dalvik虚拟机

转载自:https://blog.csdn.net/luoshengyang/article/details/41338251简介在android5.0中,ART运行时取代了Dalvik虚拟机。虽然Dalvik虚拟机不再使用,但是它曾经的作用是不可磨灭的。因此,在研究ART运行时的垃圾收集机制之前,先理解Dalvik虚拟机的垃圾收集机制也是很重要和有帮助的。因此,本文就对Dalvik虚拟机...

2018-08-01 20:54:53 1715

原创 常见加密算法

加密算法分为对称加密、非对称加密和Hash算法。对称加密加密和解密使用相同的秘钥的加密算法。优点在于加解密的高速度和使用长秘钥时的难破解性。 常见的对称加密算法有DES、3DES、AES。AES高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。具体的加密流程如下图: 明文P:...

2018-07-26 15:28:32 559

原创 二叉树遍历非递归实现

import java.util.*;public class Solution { List<Integer> list = new ArrayList<>(); public List<Integer> preorderTraversal(TreeNode root) { // write your code here ...

2018-07-06 10:42:24 118

原创 二叉树遍历的递归实现

import java.util.ArrayDeque;import java.util.LinkedList;import java.util.Queue;import java.util.Stack;public class BinaryTreeNode { int data; BinaryTreeNode left; BinaryTreeNode right...

2018-07-06 10:18:22 122

转载 Android消息机制之ThreadLocal的工作原理

转载自:https://blog.csdn.net/singwhatiwanna/article/details/48350919 从开发的角度来说,Handler是Android消息机制的上层接口,这使得开发过程中只需要和Handler交互即可。Handler的使用过程很简单,通过它可以轻松的将一个任务切换到Handler所在的线程中去执行。很多人认为Handler的作用是更新UI,这说的的确...

2018-07-02 16:05:24 270

原创 android 热修复方案总结

代码修复主要有三个方案,分别是底层替换方案、类加载方案和Instant Run方案。类加载方案在android类加载过程中,其中一个环节就是调用DexPathList的findClass方法,如下图所示。 public Class<?> findClass(String name, List<Throwable> suppressed) { ...

2018-06-29 10:27:03 313

原创 java类加载机制

类加载机制jvm类加载机制分为五个部分:加载,验证,准备,解析,初始化,下面我们就分别来看一下这个5个过程加载加载是类加载过程中的一个阶段,这个阶段会在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的入口。注意这里不一定非得要从一个Class文件获取,这里既可以从zip包中获取(比如从jar包和war包中读取),也可以在运行时计算生成(动态...

2018-06-28 13:09:40 132

原创 java对象的生命周期

在java中,对象的生命周期包含以下几个阶段: 1、创建阶段(Created) 2、应用阶段(In Use) 3、不可见阶段(Invisible) 4、不可达阶段(Unreachable) 5、收集阶段(Collected) 6、终结阶段(Finalized) 7、对象空间重分配阶段(De-allocated)创建阶段通过以下步骤,完成对象的创建(1)为对象分配存储空间 ...

2018-06-20 16:11:52 471

转载 java 线程池总结

如果我们使用线程的时候就去创建一个线程,这样实现起来非常方便,但是会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个事件很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种方法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?java中可以通过线程池来达到这样的效果。java中的Thr...

2018-06-19 23:25:45 132

转载 查找算法之B树、B+树

B树是为了磁盘或其他存储设备而设计的一种多叉平衡查找树.磁盘中有两个机械运动的部分,分别是盘片旋转和磁臂移动。盘片旋转就是我们市面上所提的多少转每分钟,而磁盘移动则是在盘片旋转到指定位置以后,移动磁臂后开始进行数据的读写,那么这就存在一个定位到磁盘中的块的过程,而定位是磁盘的存取中花费的时间比较大的一块,毕竟机械运动花费的时间要远远大于电子于东的时间。当大规模数据存储到磁盘中的时候,显然定位是一个...

2018-06-17 20:15:52 1310

原创 查找算法之红黑二叉查找树

红黑二叉查找树背后的基本思想是用标准的二叉查找树(完全由2-节点构成)和一些额外信息(替换3-节点)来表示2-3树。我们将树中的链接分为两种类型:红链接将两个2-节点连接起来构成3-节点,黑链接是2-3树中的普通链接。确切地说,我们将3-节点表示为由一条左斜的红色链接(两个2-节点其中之一是另一个的左子节点)相连的两个2-节点 定义红黑树的另一种定义是含有红黑链接并满足下列条件的二叉树:...

2018-06-16 22:58:46 335

原创 查找算法之平衡查找树

前面介绍的算法在最坏的情况下还是很糟糕。这次会介绍一种二分查找树并能保证无论如何构造它,他的运行时间都是对数级别的。理想情况下我们希望能够保持二分查找树的平衡性。但是,在动态插入中保证树的完美平衡的代价太高了。2-3查找树我们将一棵标准的二叉查找树中的节点成为2-节点(含有一个键和两条链接),现在我们引入3-节点,它含有两个键和三条链接。 查找要判断一个键是否在树中,我们先将它和...

2018-06-16 00:27:56 1925

原创 查找算法之二叉查找树

定义一棵二叉查找树(BST)是一棵二叉树,其中每个节点都含有一个键且每个节点的键都大于其左子树中的任意节点的键而小于右子树的任意节点的键。查找从根节点开始查找,如果要查找的元素大于根节点,就在根节点的右子树中开始查找,如果要查找的元素小于根节点,就在根节点的左子树中进行查找。 从根节点开始,在每个节点中查找的进程都会递归地在它的一个子节点上展开,因此一次查找也就定义了树的一条路径...

2018-06-15 15:44:11 664

转载 android Binder机制介绍

Binder是android系统进程间通信(IPC)方式之一。Linux已经拥有管道,system V IPC,socket等IPC手段,却还要依赖Binder来实现进程间通信,说明Binder具有无可比拟的优势。深入了解Binder并将之与传统IPC作对比有助于我们深入领会进程间通信的实现和性能优化。本文将对Binder的设计细节做一个全面阐述,首先通过介绍Binder通信模型和Binder通信...

2018-05-17 10:55:53 146

原创 android 进程间通信

在一个android APP中,如果有占用内存比较大的操作,我们一般使用进程拆分。比如说对于Webview,图库等,由于存在内存系统泄露或者占用内存过多的问题,我们可以采用单独的进程。不仅如此,我们在一个app中可能会访问其他app的信息。因此,此时就需要用到进程通信。android中进程种类系统强制销毁进程时,面临一个问题:系统当中可能会运行多个进程,销毁哪些合适呢?这就是我们要讨论...

2018-05-09 21:20:15 342

原创 EventBus--事件总线:观察者模式的拓展

为何要使用android应用开发中,经常会涉及Activity,Fragment,Service等不同组件或者模块之间的消息传递。使用传统的方法实现,往往代码不够优雅,而且不同组件和模块之间的耦合严重。随着模块的增多、代码逻辑的不断新增和修改,整个代码的架构就会显得越来越混乱。为了便于理解,下面举例说明:例1Activity中的不同的fragment之间需要进行通信,传统的做法是 ...

2018-05-08 20:10:41 2545

转载 线性排序原理及其实现

转载自:https://www.cnblogs.com/onepixel/articles/7674659.html计数排序计数排序不是基于比较的排序算法,其核心在于将输入的数据转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。算法描述1、找出待排序的数组中的最大和最小元素。 2、统计数组中每个值为i的元素出现的次...

2018-05-03 22:13:53 2823 1

原创 非线性排序算法原理及其实现

为了更方便的实现排序算法,我们将元素交换算法单独写入到方法swap中,如下面代码://将c数组中a位置和b位置的元素交换一下 public void swap(int [] c,int a,int b){ int temp = c[a]; c[a] = c[b]; c[b] = temp; }冒泡排序原理重...

2018-05-02 21:42:06 1497

转载 android 进程保活

转载自: https://blog.csdn.net/xiaoxiaohu_/article/details/73639637 http://www.infoq.com/cn/articles/wechat-android-background-keep-alive https://www.jianshu.com/p/63aafe3c12af 在安卓系统中,进程被杀的原因通常分为几个方面:...

2018-04-23 10:14:10 608

转载 android 网络连接保活

转载自: http://www.infoq.com/cn/articles/wechat-android-background-keep-alive http://www.52im.net/thread-341-1-1.html 在开发某些安卓应用中,如何做到客户端的后台保活是很重要的。保活,按照我们的理解包含两部分: 1、网络连接保活:如何保证消息接收的实时性 2、进程保活:尽量保证应...

2018-04-20 16:36:39 1606

转载 android activity 四大启动模式及使用场景

转载自:https://blog.csdn.net/YeeCeeYee/article/details/64958184android activity的启动模式有4种。分别是standard,singleTop,singleTask和singleInstance。在AndroidManifest.xml中,通过标签的android:launchMode属性可以设置启动模式。stand...

2018-04-17 19:40:28 4695

转载 android 如何查找内存泄漏

转载自https://blog.csdn.net/itachi85/article/details/77826112?utm_source=gold_browser_extension https://blog.csdn.net/u012760183/article/details/52068490 对于内存泄漏,在Android中如果不注意的...

2018-04-17 16:28:47 3007

转载 android 内存泄漏原因及解决方案

转载自:https://blog.csdn.net/u012482178/article/details/78988176 https://blog.csdn.net/u010687392/article/details/49909477内存泄漏的原因android 系统为每个应用分配的内存是有限的,当一个对象已经不需要再使用了,本该被回收时,而有另外一个正在使用的对...

2018-04-17 13:08:55 1579 1

转载 Android图片加载方案--Bitmap的内存管理和优化方案

转载自:http://blog.csdn.net/mxm691292118/article/details/51028953一、加载按显示需要的比例缩小的图片1、先来说说屏幕密度在Android中,Imageview控件的长宽单位一般设置为dp/dip,而不用px。这样做的原因,是因为dp/dip与屏幕像素密度无关,px与屏...

2018-04-11 16:50:59 270

原创 android view的绘制流程

当一个应用启动的时候,会启动一个主activity,android系统会根据activity的布局来对它进行绘制。每个view负责绘制自己,而viewgroup还需要负责通知自己的子view进行绘制操作。视图绘制的过程可以分为三个步骤,分别是 Measure Layout 和 Drawprivate void performTraversals() { ...... ...

2018-04-11 16:41:55 155

原创 android 触摸事件传递机制

一次完整的事件传递主要包括三个阶段,分别是事件的分发、拦截、和消费。事件传递的三个阶段分发(dispatch) 事件分发对应dispatchTouchEvent方法,在安卓系统中,所有的触摸事件都是通过这个方法来分发的 public boolean dispatchTouchEvent(MotionEvent ev) 方法返回true代表事件被当前视图消费掉,不再继续分发事...

2018-04-11 12:39:43 303

原创 c++ 之类成员

可变数据成员有时(但不会特别频繁)会发生这样一种情况,我们希望能修改类的某个数据成员,即使是在一个const成员函数内,可以通过在变量的声明中加入mutable关键字做到这一点。一个const成员函数可以改变一个可变成员的值。举个例子,我们将给Screen添加一个名为access_ctr的可变成员,通过它我们可以追踪每个Screen的成员函数被调用了多少次。class Screen

2018-01-30 23:44:53 172

原创 c++ 之类的控制与封装

class和struct的区别我们可以使用class 和struct 的任何一个来定义类,唯一的一点区别就是struct和class的访问权限不太一样。当我们希望定义的类的所有成员是publ的是,使用struct,反之,如果希望成员是private的,使用classfriend 友元类可以允许其他类或者函数访问他的非公有成员,方法是领其他类或者函数称为他的友元。clas

2018-01-26 15:59:25 263

android进程通信之使用AIDL

android 使用AIDL进行进程通信,分为客户端和服务端。

2018-05-09

android进程通信之使用Messenger

android使用Messenger进程通信的例子,分为客户端和服务端,客户端发送一个消息给服务端,由服务器进行处理

2018-05-09

MPI_Alltoallv详细介绍ppt

详细介绍了MPI_Alltoallv的各个参数使用,并举例说明具体用法

2018-01-01

mpi测试全局通信mpi_Alltoall

这个代码用于测试mpi全局通信,针对不同的情况,分别使用了MPI_Alltoall和MPI_Alltoallv

2018-01-01

MPI_Bcast和MPI_Gather例子

测试mpi集合通信的例子,包含MPI_Bcast和MPI_Gather。

2018-01-01

数据结构堆的插入与删除 堆排序

数据结构堆的初始化,堆的插入,堆的删除,语言c++,堆排序

2015-05-09

空空如也

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

TA关注的人

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