- 博客(27)
- 资源 (11)
- 收藏
- 关注
原创 重构改善即有代码的设计
(一)重构原则1、何谓重构对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。另一种解释是:使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。重构不止是代码整理,它提供了一种高效且受控的代码整理技术2、为何重构改进软件设计:如果没有重构,程序的设计会逐渐变质,重构很像是在整理代码,你所做的就是让所有的东西回到应处的位置上。帮...
2018-11-30 18:07:26 1085
原创 设计模式:工厂方法
工厂方法模式的定义定义一个用于创建对象的接口, 让子类决定实例化哪一个类。 工厂方法使一个类的实例化延迟到其子类。工厂方法模式的通用类图如图所示。在工厂方法模式中, 抽象产品类Product负责定义产品的共性, 实现对事物最抽象的定义; Creator为抽象创建类, 也就是抽象工厂, 具体如何创建产品类是由具体的实现工厂ConcreteCreator完成的。/** * 抽象产品类 */pub...
2018-06-14 10:58:57 182
原创 设计模式:单例模式
单例模式的定义单例模式( Singleton Pattern) 是一个比较简单的模式, 其定义如下:确保某一个类只有一个实例, 而且自行实例化并向整个系统提供这个实例。单例模式的通用类图如图所示:Singleton类称为单例类, 通过使用private的构造函数确保了在一个应用中只产生一个实例, 并且是自行实例化的( 在Singleton中自己使用new Singleton()) 。 单例模式的通...
2018-06-14 10:33:14 269
原创 设计模式:门面模式
定义门面模式也叫外观模式,是一种比较常见的封装模式,定义如下: 一个子系统的外部与其内容的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。门面模式注重“统一“,也就是提供一个访问子系统的接口,除了这个接口不允许有任何访问子系统的行为发生。其通用类图如下:类图很简单,但是它代表的意义可是异常复杂,SubSystem是子系统中所有类的简称。门面
2018-01-28 15:54:18 798
原创 设计模式:代理模式
定义为其他对象提供一种代理以控制对这个对象的访问。代理模式通用类图代理模式也叫委托模式,它是一种设计技巧,许多其他的模式如状态模式、策略模式、访问者模式本质上是在更特殊的场合采用委托模式。代理模式可以提供非常好的访问控制。抽象主题类public interface Subject { //定义一个方法 public void request();}真实主题类public clas
2018-01-19 17:03:26 215
原创 设计模式:策略模式
定义策略模式是一种比较简单的模式:定义一组算法,将每个算法封装起来,并且使他们之间可以互换。策略模式的通用类图:策略模式使用的是面向对象的继承和多态机制,非常容易理解和掌握,Context封装角色也叫上下文角色,起承上启下封装作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化。Strategy抽象策略角色策略、算法的
2018-01-14 04:52:10 271
原创 Springboot集成Redis
Redis 简介Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。Redis 与其他 key - value 缓存产品有以下三个特点:Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。Redis支持
2018-01-11 17:39:54 645
原创 Java NIO
Java NIO 概述Java NIO 由以下几个核心部分组成: * Channels * Buffers * SelectorsChannel 和 Buffer基本上,所有的IO在NIO中都从一个Channel开始。Channel有点象流。 数据可以从Channel读到Buffer中,也可以从Buffer写到Channel中 SelectorSelector允许单线程处理多个Channel
2018-01-09 13:40:30 173
原创 设计模式:适配器模式
定义将一个类的接口变换称客户所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作。适配模式通用类图:适配器模式就是把一个接口或类转换成其他的接口或类,从另一个方面来说,适配器模式就是一个包装模式,它把Adaptee包装成一个Target接口的类,加一层衣服,包装成另一类。下面来看看适配器的三个角色:Tagret目标角色: 该角色定义把其他类转换为何种接口,也就是我们所期
2017-12-24 16:15:25 175
原创 设计模式:6大设计原则
单一职责原则单一职责原则(Single Responsibility Principle,简称SRP)定义:应该有且仅有一个原因引起类的变更。 单一职责原则要求一个接口或类只有一个原因引起变化,也就是一个接口或类只有一个职责。优点:类的复杂性降低,实现什么职责都有明确的定义。可读性提高,复杂度降低。可维护性提高。变更引起的风险降低,单一职责使用于接口、类,同时也适用
2017-12-20 00:02:45 173
原创 设计模式:模板方法模式
模板方法模式:定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法非常简单,仅仅使用了Java的即成机制,但它是一个应用非常广泛的模式,其中AbstractClass叫做抽象模版,它的方法分为两类:基本方法:由子类实现,并且在模板方法中被调用。模板方法:可以有一个或几个,一般是一个具体的方法,也就是一个
2017-12-17 10:11:14 418
原创 Mac下PHP Fatal error: Class 'Memcache' not found
这几天开发PHP Memcache遇到了这个奇葩的问题。Memcache环境安装成功但是运行代码总是报错$mem = new Memcache();$mem->connect('127.0.0.1',11211);$mem->set("foo","3",0,10);echo $mem->get("foo");运行提示PHP Fatal error: Class ‘Memcache’ not
2017-12-12 17:05:57 5614 1
原创 Spring(一):HelloWord
概述Spring 是最受欢迎的企业级 Java 应用程序开发框架。数以百万的来自世界各地的开发人员使用 Spring 框架来创建好性能、易于测试、可重用的代码。Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。目的:解决企业应用开发的复杂性功能:使用基本的JavaBean代替EJB,并提供了更多的企业应
2017-12-07 20:39:01 222
原创 MVC、MVP、MVVM
MVCMVC,Model View Controller,是软件架构中最常见的一种框架,简单来说就是通过controller的控制去操作model层的数据,并且返回给view层展示,具体见下图当用户出发事件的时候,view层会发送指令到controller层,接着controller去通知model层更新数据,model层更新完数据以后直接显示在view层上,这就是MVC的工作原理。
2017-12-07 16:09:26 270
原创 Android7.0适配总结
一、权限更改对于面向 Android 7.0 的应用,Android 框架执行的 StrictMode API 政策禁止在您的应用外部公开 file:// URI。如果一项包含文件 URI 的 intent 离开您的应用,则应用出现故障,并出现 FileUriExposedException 异常。要在应用间共享文件,您应发送一项 content:// URI,并授予 URI 临时访问权限。也就是说
2017-11-18 22:56:30 12456
原创 ArrayList源码分析
ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。ArrayList不是线程安全的,只能在单线程环境下,多线程环境下可以考虑用collections.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的CopyOnWriteArrayList类。ArrayL
2016-10-19 13:38:38 448
原创 Java程序优化-设计优化
设计优化1.单例模式(1)对于频繁使用的对象,可以省略创建对象所花费的时间,这对于那些重量级的对象而言,是非常可观的一笔系统消耗。(2)由于new操作的次数减少,因而对系统内存的使用频率降低,这将减轻GC的压力。2.代理模式使用代理对象完成用户的请求,屏蔽用户对真实对象的访问,这里主要讨论使用代理模式实现延迟加载,从而提升系统的性能和反映速度。例如,使用代理类封装对数据库查询中的初始化操作,当系统启
2016-10-18 23:52:17 390
原创 Android安全-数字证书
数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名)。它是由权威机构——CA机构,又称为证书授权(Certificate Authority)中心发行的证书的内容包括:电子签证机关的信息、公钥用户信息、公钥、权威机构的签字和有效期等等
2016-01-11 18:36:50 1588
原创 Android安全-HASH算法
HASH,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。HASH特点:易变性:即使原始信息发生1bit的变化,HASH算法的输出将会有不可
2016-01-08 14:42:48 3823
原创 Android安全-对称加密和非对称加密
秘钥:分为加密秘钥和解密秘钥明文:没有进行加密,能够直接代表原文含义的信息密文:经过加密处理之后,隐藏原文含义的信息加密:将明文转换为密文的过程解密:将密文转换为明文的过程AES:更快,兼容设备,安全级别高;SHA1:公钥后处理回传DES:本地数据,安全级别低RSA:非对称加密,有公钥和私钥
2016-01-07 19:31:44 5636 1
原创 Android图像色彩处理
Android对图像的处理一般都是针对Bitmap来处理的,bitmap中整个图片都是由点阵和颜色组成的,点阵就是像素的矩阵,每一个元素对应着图片的一个像素。而颜色值就是ARGB,我们知道ARGB指的是一种色彩模式,里面A代表Alpha,R表示red,G表示green,B表示blue,其实所有的可见色都是右红绿蓝组成的,所以红绿蓝又称为三原色,每个原色都存储着所表示颜色的信息值说白了就AL
2015-11-26 22:45:07 269
原创 Android---认识进程与IPC架构
IPC(Inter-Process Communication)通信,是跨越两个不同进程之间的通信一般而言,一个Android应用程序里的各个组件(如activity、service)都在同一个进程里执行。这种在同一进程内的通信,又称短程通信,意味着两个activity在同一个进程里执行。相对地:远程(Remote)通信的意思是:两个组件(activity或service)分别在不同的进程执行,两者之间的IPC通信又称远程通信。
2014-09-16 15:15:25 1721 2
原创 android屏幕触摸事件机制
android中的事件类型分为按键事件和屏幕触摸事件,Touch事件是屏幕触摸事件的基础事件,有必要对它进行深入的了解。一个最简单的屏幕触摸动作触发了一系列Touch事件:ACTION_DOWN->ACTION_MOVE->ACTION_MOVE->ACTION_MOVE...->ACTION_MOVE->ACTION_UP当屏幕中包含一个ViewGroup,而这个ViewGroup又包含
2013-05-30 10:20:30 759
原创 Thread.UncaughtExceptionHandler捕获未知异常
在Android开发中,常常会出现uncheched Exception 导致程序的crash,为了提供良好的用户体验,并对出错的信息进行收集,以便对程序进行改进,提高程序的健壮性。因此,常使用Thread.UncaughtExceptionHandler来进行处理。首先需要继承Thread.UncaughtExceptionHandler类public class CrashHand
2013-05-08 10:05:09 851
转载 Android学习笔记之AndroidManifest.xml文件解析
一、关于AndroidManifest.xmlAndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。 除了能声明程序中的Activities, ContentProviders, Services, 和
2013-04-19 14:21:11 460
原创 Android应用开发之BitmapFactory.Options详解
由于Android对图片使用内存有限制,若是加载几兆的大图片便内存溢出。Bitmap会将图片的所有像素(即长x宽)加载到内存中,如果图片分辨率过大,会直接导致内存溢出(java.lang.OutOfMemoryError),只有在BitmapFactory加载图片时使用BitmapFactory.Options对相关参数进行配置来减少加载的像素。首先我们把这个图片转成Bitmap,然后再利
2012-11-22 14:25:57 678
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人