自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (2)
  • 收藏
  • 关注

原创 Bash On Windows 安装和修改存储位置

第一步打开控制面板->程序->启动Windows功能,勾选适用于Linux的Windows子系统。第二步以管理员权限打开命令行执行安装wslwsl --install--install 命令执行以下操作:启用可选的 WSL 和虚拟机平台组件 下载并安装最新的 Linux 内核 将 WSL 2 设置为默认值 下载并安装 Linux 发行版(可能需要重新启动)服务启动与关闭net stop LxssManager net start Lx...

2021-08-18 10:14:32 407

原创 Python基础之哈希加密摘要信息MD5、SHA1、SHA-256

一种不可逆的消息摘要加密算法,全称哈希消息认证码。摘要模式(digestmod)有MD5、SHA1、SHA-256和SHA-512等。因有不可逆的性质,通过用来做校验、关系映射、凭据等。# coding=utf=8import hashlibmessage = 'xinye'print(hashlib.md5(message.encode('utf-8')).hexdigest...

2019-09-14 05:08:35 994

原创 Python基础之AES加解密

AES属于一种对称加密算法,每4*4字节矩阵为一体进行加密,加密模式有CBC、ECB、CFB、PGP、OFB、CTR、OPENPGP七种之多,本篇主讲目前广泛使用的CBC模式。CBC模式必须要有Key(密钥)和IV(偏移量),Key字节长度可以是16位(AES-128)、24位(AES-192)、32位(AES-256),IV字节长度必须为16位。因AES算法会将明文分为若干4*4字节矩阵,所...

2019-09-14 04:51:56 557

原创 Linux权限管理之文件权限

介绍在Linux下输入ls -l或者ll就可以查看文件或者目录的权限第一列是文件类型和权限,一共十个字符(除了点),第一个字符为文件类型,之后每三个字符为一组权限,第一组为拥有者权限,第二组所属组权限,第三组其他人权限。第三列为拥有者,第四列为所属组。Linux下的文件和目录有三种权限r(read) 可读 w(write) 可写 x(execute) 可执行权限的表示是...

2018-09-27 23:42:21 242

原创 Docker踩坑日记之修改容器时区

想必刚接触Docker的同学直接run各种容器玩耍,或许直接投入使用,久而久之,就会发现数据库的时间与我们现在时间整整差8个小时。为什么会差8个小时,因为官方容器默认是UTF时区,我们这里是差8个时区,也就是UTF8。如何修改修改应用或者数据库时间(不推荐,治标不治本,直接省略)容器内修改 (不推荐,重启容器就无效,直接省略)Run阶段挂载宿主机localtimedocker...

2018-09-11 21:16:24 3140

原创 Android与JavaSocket的简单示例

开头最近忙于比赛,遇到一个长连接的难题,第一想到就是Socket。比赛中是不会提供第三方框架,经常依赖第三方网络框架的我重新使用Socket发现很多问题,从而总结了这篇文章。方法用意都在注释里。

2017-05-03 01:19:06 669 1

原创 设计模式之代理模式

代理模式定义:为其他对象提供一种代理以控制对这个对象的访问。某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式中真实角色有可能没能力去与客户端直接操作,而通过代理去转达,比如让人去代购,因为我省了签证的麻烦。代理类就像客户端与真实角色建起的一座桥梁,将客户端要做的事让代理类去转达。就比如Java与C通信,就得有JNI负责转达。代理角色还可以在调用真实角

2017-04-24 01:44:48 388

原创 设计模式之组合模式

组合模式定义:将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。组合模式解耦了客户程序与复杂元素内部结构,从而使客户程序可以像处理简单元素一样来处理复杂元素。如果你想要创建层次结构,并可以在其中以相同的方式对待所有元素,那么组合模式就是最理想的选择。这里使用了一个文件系统的例子来举例说明了组合模式的用途。在这个例子中,文件和目录都执行相同的接口,这是组合模

2017-04-23 02:08:41 323

原创 设计模式之桥接模式

桥接模式定义:将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化。将两个角色之间的继承关系改为聚合关系,就是将它们之间的强关联改换成为弱关联。因此,桥梁模式中的所谓脱耦,就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以相对独立地变化。这就是桥梁模式的用意。

2017-04-22 23:57:18 322

原创 设计模式之享元模式

享元模式定义:运行共享技术有效地支持大量细粒度对象的复用。享元模式角色介绍Flyweight :抽象享元角色,定义公共接口。ConcreteFlyweight:具体享元角色,实现Flyweight接口。FlyweightFactory:享元工厂,内部持有Flyweight集合实例,负责创建和管理Flyweight实例。从UML图上看这模式非常好理解很容易掌握。它使用共享物件,用来尽可能减少内存使用量以及分享资

2017-04-22 02:50:24 388

原创 设计模式之外观模式

外观模式定义:为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。外观模式就只有一个角色,经过内部实例逻辑处理之后提供外部方法。外观模式是最最最简单又最最最常用的模式,我们经常在使用却不知道叫外观模式,我个人觉得这不像设计模式。它作用在很多第三方SDK里,给调用者提供一些API,只要调用就好了,不需要了解内部实现。

2017-04-21 22:55:24 466

原创 设计模式之适配器模式

适配器模式定义:将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。适配器模式角色介绍Target:目标角色,客户端将要调用的接口。Adaptee:受改角色,原始接口也是实际调用的接口。Adapter:适配器角色,负责兼容Target与Adaptee之间的不兼容。适配器模式属于结构型模式,也很容易理解。

2017-04-21 22:13:50 328

原创 设计模式之装饰者模式

装饰者模式定义:在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。装饰者模式角色介绍Componet:抽象组件角色,定义公共责任接口。ConcreteComponet:具体组件角色,定义一个将要接收附加责任的类。Decorator:抽象装饰角色,内部持有Componet对象实例,并在实现Componet的方法里使用Componet实例的方法

2017-04-21 21:17:19 308

原创 设计模式之访问者模式

访问者模式定义:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。上面的例子很明白看出其实就是每个访问者所关心的地方不一样。访问者模式带来的好处很明显,扩展性强。正如《设计模式》的作者GoF对访问者模式的描述:大多数情况下,你并需要使用访问者模式,但是当你一旦需要使用它时,那你就是真的需要它了。不足之处望指教。

2017-04-21 01:47:37 380

原创 设计模式之中介者模式

中介者模式定义:中介者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用。从而使它们可以松散耦合。中介者模式可以将多对多的相互作用转化为一对多的相互作用。比如电脑主机一般由CPU、硬盘、内存等设备组成,但这都是零散的部件,我们需要将它们整合起来变成完整的整体,这东西就是主板。主板充当中介者,各部件为各位同事类。

2017-04-17 02:48:44 288

原创 设计模式之责任链模式

定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。比如学生请假三

2017-04-16 01:48:46 294

原创 设计模式之解释器模式

解释器模式定义:给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表达式来解释语言中的句子。解释器模式是一种用得比较少的行为型模式,使用场景其实相当广泛,总的概括下来大致有两种,一是如果某个简单的语言需要解释执行而且可以将该语言中的语句表示为一个抽象语法树时可以考虑使用解释器模式;二是在某些特定的领域出现不断重复的问题时,可以将该领域的问题转化为一种语法规则下的语句,然后构建解释器来解释该语句。

2017-04-15 20:04:27 322

原创 设计模式之备忘录模式

备忘录模式定义:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。甚至你可以管理一系列的状态,记录和撤销都可以,就像象棋每走一步就保存了当前的棋局,悔棋就是恢复上一步的棋局。总的来说,备忘录模式好处是给用户提供了一种可以恢复状态的机制,而且实现信息的封装,用户不需要关系状态的细节,但是保存的状态过多就会占用大量的资源。不足之处望指教。

2017-04-15 03:27:40 294

原创 设计模式之命令模式

命令模式定义:将一个请求封装成一个对象,从而让用户使用不同的请求把客户端参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式。

2017-04-15 02:35:49 280

原创 设计模式之迭代器模式

迭代器模式定义:提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。迭代器解决了两个不同容器的访问方式,比如说两个公司合并,但是A公司使用数组,B公司使用列表集合,两个访问方式都不一样,这时迭代器模式就派上用场了。

2017-04-07 04:34:16 341

原创 设计模式之模版模式

模版模式定义:一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。模版模式最常见模式之一,也许你就在使用当中。模版模式运用了面向对象的继承特性,把通用的流程都提炼到父类,把具体行为让子类去实现。比如上网买东西通用的流程都是登录、购物、结账、注销四个步骤,网上商超平台有很多,像mila,waka等,也不外乎这四个步骤

2017-04-06 03:45:03 335

原创 简单实现图库辅助器

写在前面实际开发经常会遇到读取相册或者拍照功能,网上也很非常多图库框架,都各有风格,也因此与自己的项目格格不入。再者,框架API太多,需要的配置太多,还要吃力研究。所以,本人摸索大多图库框架,提炼核心,写一个只提供核心的辅助类,剩下的就可以自行玩耍。

2017-04-05 22:10:37 517

原创 设计模式之观察者模式

观察者模式定义:定义了对象间的一种一对多的依赖关系,以便一个对象的状态发生变化时,所有依赖于它的对象都得到通知并自动刷新。通常观察者模式包括四个角色:Subject,抽象主题类,定义公共管理观察者的接口。ConcreteSubject,具体主题类,实现抽象主题接口,内部存储被订阅的观察者列表。Observer,抽象观察者,定义公共接口。ConcreteObserver,具体观察者,实现抽象观

2017-04-05 01:41:09 509

原创 设计模式之状态模式

状态模式定义:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。也就是说封装逻辑。

2017-04-04 01:26:51 296

原创 设计模式之策略模式

策略模式定义:定义了一系列算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式属于行为型模式,将算法封装起来,利用多态使代码更灵活。通常策略模式包含三个角色:Context 环境类,提供策略环境,负责策略之间的交互和数据传递。Strategy 抽象策略类,定义公共接口,各种不同的算法以不同的方式实现这接口,让Context类调用不同算法。

2017-04-03 11:53:05 371

原创 设计模式之原型模式

原型模式定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式属于创建型模式,前面已经讲了四个创建型模式,原型模式是最后一个。通过定义描述,不难理解原型模式相当于复制对象,避免复杂对象的初始化过程。从图上看,原型模式非常简单。只要具体类实现Cloneable接口,覆盖Object类下都有的clone方法。clone方法是通过jni调用,虚拟机会调用已实现Cloneable接口

2017-04-03 02:03:52 218

原创 设计模式之抽象工厂模式

抽象工厂模式定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。上一节讲到简单工厂模式,那抽象工厂模式就是简单工厂的升级版。不止是简单工厂一个工厂,而是N个工厂。一个具体工厂会有个产品族。而每一个具体工厂创建属于同一个产品族,但是分属于不同等级结构的产品。从图里可以看出简单工厂的身影,其实相当把多个简单工厂再进行管理。

2017-03-31 23:29:46 408

原创 设计模式之简单工厂模式

简单工厂模式定义:专门负责创建其他实例的一个类。简单工厂模式属于创建型模式,根据需求创建不同类。顾名思义,简单工厂,真是非常简单。通常简单工厂模式包括三个角色:Creator : 工厂类,实例化对象的核心类,按照逻辑创建实例。Product : 抽象产品类,所有具体产品类的父类,可以是接口或者抽象类,主要定义抽象类型。Concrete Product :具体产品类,具体实例对象。

2017-03-30 00:09:33 290

原创 设计模式之建造者模式

建造者模式定义:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以有不同的表示。比如不同的车有不同的牌子、车型、颜色等。客户端想要白色SUV的宝马,或者黑色轿车的宝马,而又不想干涉建造它们,毕竟客户端要处理很多事情,那么就把建造任务交给其他人,返回车给客户端就行,不需要知道怎么建造的。建造者通常包括四个角色:

2017-03-29 01:13:27 309

原创 设计模式之单例模式

单例模式定义:一个类有且仅有一个实例,并且自行实例化向整个系统提供。设计模式中最简单也是最理解的模式,实用性很大,通常用于访问数据库、弹出对话框、网络请求等情况。写法单例是自行实例化,首先把默认构造方法设置为私有,不允许外部实例化。然后内部自行实例化,最后提供一个静态方法返回这实例。

2017-03-27 22:30:49 270

原创 设计模式之SOLID原则

介绍设计模式中的SOLID原则,分别是单一原则、开闭原则、里氏替换原则、接口隔离原则、依赖倒置原则。前辈们总结出来的,遵循五大原则可以使程序解决紧耦合,更加健壮。 SRP 单一责任原则 OCP 开放封闭原则 LSP 里氏替换原则

2017-03-27 03:39:22 2098 1

原创 Java基础之反射机制

反射机制JAVA有着一个非常突出的动态相关机制:反射。JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。

2017-03-26 03:04:05 327

原创 Java基础之注解

注解其实注解就是注释的意思。我想这样叫法是跟平时用的注释不一样吧。Java内置了三种注解,想必都见过。总的来说,注解并不难,只是被注解是一种标识,也可以取属性值。掌握注解就很多玩法了,配置处理应用注解比较多。

2017-03-24 22:48:05 467

原创 Java基础之泛型

介绍来自《Effective Java》介绍泛型的一段话。在没有泛型之前,从集合中读取到的每一个对象都必须进行转换。如果有人不小心插入了类型错误的对象,在运行时的转换处理就会出错。有了泛型之后,可以告诉编译器每个集合中接受哪些对象类型。编译器自动地为你的插入进行转化,并在编译时告知是否插入了类型错误的对象。最能表示是Java 1.5版本之前的集合类。

2017-03-24 01:17:55 791

原创 简单实现上拉加载的RecyclerView

写在前面Google提供了下拉刷新控件,但是并没有提供上拉加载的控件。即使是没有提供,我们一样可以实现。毕竟Android开放性强。目前有很多第三方开源的控件,做的非常优秀,也不外乎上拉加载。也正因为如此,很多人只停留在用轮子,而没思考轮子怎么造成的。用谁都会用,但是又有几个人知道其中实现原理。归回主题,今天打造一个简单的轮子,也可以不是轮子。基于RecyclerView的上拉加载。

2017-03-22 23:58:14 649

原创 JavaIO流基础之文件读写

File类从jdk文档上描述,File类是文件和目录路径名的抽象表示形式。简单明了。 RandomAccessFile类,随机访问文件。存在指向该隐含数组的光标或索引,称为文件指针。

2017-03-22 00:42:54 1225

原创 JavaIO流基础之字节流与字符流

IO流IO,Input Out的缩写,也就是输入输出,对数据的输入输出。流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流。IO通常有两种分类。按流的方向分为输入流和输出流按流的数据单位分为字节流和字符流字节流与字符流两者区别在于数据单位不一样。顾名思义,字节是计算机存储容量的一种计量单位,字符是字形和符号(占2个字节)。下面来看看他们的类。字符流

2017-03-21 00:02:10 531

原创 Java多线程基础之常用方法

sleep方法这方法理解起来简单,使用也简单。作用是让当前线程休眠指定的时间,也就是暂停当前线程。wait、notify方法interrupt方法join与yeId方法

2017-03-20 00:07:35 337

原创 Java多线程基础之线程安全

多线程存在漏洞,我们是不是不用了呢。也许你是对的,但是开发程序避免不了多线程,到最后发现线程是多么好的一个东西。

2017-03-18 22:22:07 363

原创 Java多线程基础之线程使用

线程创建在上一节讲到线程的入口,那么线程怎么创建呢,怎么使用在工作中呢。 创建新执行线程有两种方法。一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法,接下来可以分配并启动该子类的实例

2017-03-18 00:39:40 311

Android简单的上拉加载

谢谢支持!!

2017-03-22

android studio接入ZXing Demo

为了分享经验,自己也能从得经验。

2016-06-29

空空如也

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

TA关注的人

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