- 博客(34)
- 资源 (7)
- 收藏
- 关注
转载 HTTP状态码
HTTP状态码 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。 HTTP状态码的英文为HTTP Status Code。 下面是常见的HTTP状态码: 200 - 请求成功 301 - 资源(网页等)被永久转移到其它URL 404 - ...
2018-11-12 15:40:06
342
原创 Activity 中View 加载顺序
示例代码:View:public class FirstView extends View{ private Paint mPaint; private int radiu = 100; private String TAG = FirstView.class.getName(); private void initPaint(){ mPain...
2018-03-15 14:36:59
443
原创 设计模式——备忘录模式
个人理解: 1. 备忘录模式又叫做快照模式,是对象的行为模式。 2. 备忘录功能: 备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。备忘录模式常常与命令模式和迭代子模式一同使用。 3. 备忘录角色模式角色: 发起人(Originator):
2018-01-19 17:05:44
257
原创 设计模式——命令模式
个人理解: 1. 命令模式把一个请求或者操作封装到一个对象中,改变为请求者与行为实现者之间的紧耦合的关系,实现二者之间的松耦合; 2. 模式中角色: 抽象命令(Command):定义命令的接口,声明执行的方法。 具体命令(ConcreteCommand):具体命令,实现要执行的方法,它通常是“虚”的实现;通常会有接收者,并调用接收者的功能来完成命令要执行的操作。 接收者(Receiver
2018-01-18 15:31:07
370
原创 设计模式——责任链模式
个人理解: 1. 责任链模式是一个行为模式。责任链就是从一个起点发起请求,然后沿着任务链依次传递给每一个节点上的对象,直到有一个节点处理这个请求为止。 2. 使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递改请求,直到有对象处理它为止 3. 成员角色 AbstractHandler:抽象处理者角色,声明一个处理请求的方法,持有
2018-01-15 16:32:42
333
原创 设计模式——迭代器模式
个人理解: 1. 迭代器模式:提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。 2. 迭代器模式结构: Iterator: 抽象迭代器:所有迭代器都需要实现的接口,提供了游走聚合对象元素之间的方法。 ConcreteIterator: 具体迭代器。利用这个具体的迭代器能够对具体的聚合对象进行遍历。每一个聚合对象都应该对应一个具体的迭代器。 Aggregate:
2018-01-10 15:15:18
206
原创 设计模式——观察者模式
个人理解: 1. 观察者模式属于行为模式 2. 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己 3. 观察者模式UML图: 4. 成员说明 Observer:抽象观察者(抽象订阅者),为具体观察者定义update方法,在Subject通知后更新自己,可为接口或抽象类 Con
2017-12-21 15:14:18
290
原创 设计模式——模板方法模式
个人理解: 1. 模板方法模式属于行为模式,定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤 2. 适用情景:不同子类有相同操作步骤,但每一步骤具体操作不同,可将子类抽象为abstract类,在父类中某一方法中定义好操作步骤,子类通过继承,在子类中实现具体操作 3. 模板方法模式应该没有具体形式,只是一种设计模式的思想 4
2017-12-20 16:16:32
239
原创 设计模式——策略模式
个人理解: 1. 策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。 2. 策略模式是将对象的行为模式抽象为一个类,可以改变行为而不影响对象本身 3. UML图: 4. 包含部分: 环境(Context)角色:持有一个Strategy的引用。 抽象策略(S
2017-12-20 15:00:27
263
1
原创 设计模式——享元模式
个人理解: 1. 享元模式主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。 2. 享元模式可以看做是一个对象池,存放的都是单例对象,是不重复的,如果我们创建一个对象,正好对象池里面已经存在,就直接复用即可,不需要重新创建。如果创建的对象对象池里面没有,就创建一个对象加入这个对象池,方便下次使用。 3
2017-12-14 17:08:34
341
原创 设计模式——组合模式
个人理解; 1. 组合模式:将对象组合成树形结构以表示“部分—整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。它将对象组织到树结构中,可以用来描述整体与部分的关系。同时它也模糊了简单元素(叶子对象)和复杂元素(容器对象)的概念,使得客户能够像处理简单元素一样来处理复杂元素,从而使客户程序能够与复杂元素的内部结构解耦。 2. 在Android开发中用到组合模式并不很多,组
2017-12-12 17:28:21
277
原创 设计模式——桥接模式
概念:将首相部分与它的实现部分分离,使它们都可以独立地变化 个人理解: 1. 某个对象有多角度分类,每一种分类可能有多种变化,那么就把这种多角度分离出来让他们独立变化,减少他们之间的耦合 2. 桥接模式就是依据合成/聚合复用的设计原则替代面向对象设计中的"继承",或减少对象继承的层次 3. 聚合表示一种弱的“拥有”关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分;合成则是
2017-12-05 16:56:44
269
原创 设计模式——外观模式
个人理解: 1. 外观模式即:将多个子系统封装至一个类中,客户端通过该类可实现对多个子系统的调用 2. 示例代码中Audio、AudioImpl为音频系统,Camera、CameraImpl为音频系统,HuaweiPhone 为封装音频、视频系统的外观类,客户端只需要实例化HuaweiPhone即可调用音频、视频系统 3. 示例代码: 音频系统: public interface A
2017-11-30 18:03:48
268
原创 设计模式——代理模式
个人理解: 1. 代理模式也叫委托模式,为其他对象提供一种代理以控制对这个对象的访问 2. 一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用, 其特征是代理类与委托类有同样的接口 3. 从Code区分代理模式分为:静态代理、动态代理两种 4. 从使用范围区分为:远程代理、虚拟代理、保护代理、智能引用 5. UML图 6. 示例代码:
2017-11-30 16:09:53
283
原创 设计模式——装饰器模式
个人理解: 1. 装饰器模式作用:在已有基本功能的基础之上,动态地添加更多功能的一种方式 2. 扩展对象功能的功能,通过子类继承也可实现,装饰器模式装饰模式可以提供比继承更多的灵活性,而且实现相同功能生成更少的类 鸿洋大神的优雅的为RecyclerView添加HeaderView和FooterView使用了装饰器模式:http://blog.youkuaiyun.com/lmj623565791
2017-11-29 18:05:17
272
原创 设计模式——适配器模式
个人理解: 1. 适配器模式属于结构设计模式,有类适配器、对象适配器,示例代码中AndroidPhone为类适配器、IPhone为对象适配器; 2. 示例代码中Power为电源类,有5V,10V,220V,iPhone手机只有10V电压才可开机使用,Android手机只有5V电压才可开机使用,高电压可适配至低电压,低电压无法适配为高电压; 3. 类适配: (1) Android手机要开机使
2017-11-06 17:38:25
236
原创 设计模式——原型模式
个人理解: 1. 原型模式用于一个类的实例化的的完全复制 2. 原型模式关键字在于实现Cloneable 接口,与要被复制的类的实例调用clone方法 3. 示例代码中ShapeCache存在的关键在于getShape(String shapeId)方法,该方法获取 id为shapeId的Shape实例,并返回它的clone 4. 本人在Android开发中未应用过该模式,个人认为该模式可
2017-11-02 15:58:16
207
转载 设计模式——单例模式
单例模式在项目中应用比较多,有各种实现单例的方式,本文Copy于菜鸟教程,原文如下: 1、懒汉式,线程不安全 是否 Lazy 初始化:是 是否多线程安全:否 实现难度:易 描述:这种方式是最基本的实现方式,这种实现最大的问题就是不支持多线程。因为没有加锁 synchronized,所以严格意义上它并不算单例模式。 这种方式 lazy loading 很明显,不要求线程安
2017-11-01 16:22:00
230
原创 设计模式——抽象工厂模式
个人理解: 1. 抽象工厂模式是简单工厂模式的升级版,对简单工厂模式的Factory类进行管理。 2. 抽象工厂类包含元素:产品抽象类、产品实现类、工厂抽象类、工厂实现类、工厂管理类 3. 工厂管理类通过传入参数生成相应Factory类,Factory生成相应产品 4. 抽象工厂模式可以对两级商品的创建进行管理,A类商品有Aa、Ab两种产品,B类商品有B1、B2两种商品 如下示例代码:
2017-11-01 15:17:04
232
原创 设计模式——工厂方法模式
工厂方法模式个人理解: 工厂方法模式包含的元素有: 1. 抽象产品类 2. 产品实现类 3. 抽象工厂类 4. 工厂实现类 其他理解: 1. 要通过工厂方法模式实例化类,需先实例化该类对应的Factory类 2. 在对项目进行扩展的时候,不需要改动别处代码,只需要添加新产品的实现类(继承抽象产品类||实现抽象产品接口)、工厂实现类即可,改动地方比较少 3. 与简单工厂模式差异在于
2017-10-31 17:23:49
217
原创 设计模式——工厂模式总结
工厂模式总结——简单工厂模式、工厂方法模式、抽象工厂模式 简单工厂模式的劣势: 1. 工厂类集中了所有实例(产品)的创建逻辑,一旦这个工厂不能正常工作,整个系统都会受到影响; 2. 违背“开放 - 关闭原则”,一旦添加新产品就不得不修改工厂类的逻辑,这样就会造成工厂逻辑过于复杂。 3. 简单工厂模式由于使用了静态工厂方法,静态方法不能被继承和重写,会造成工厂角色无法形成基于继承的等
2017-10-31 16:10:52
402
原创 设计模式——Simple Factory模式
Factory模式个人理解: 适用情景:某些类具有共同的方法、属性,可继承同一抽象父类或者实现同一接口的情况下,新建这些类的时候使用。如下实例:不同的类具有相同方法,但方法有不同的实现,抽象继承与abstract类 OilOrderState,工厂类有静态方法create,根据传参不同创建不同的实体实现类。 实例代码: 父类: abstract class OilOrderStat
2017-10-31 14:50:00
243
原创 设计模式——Builder 模式
我的总结: Builder 模式为创建某个实体类,该实体类有过多属性需要配置,用Builder模式可以流式调用,也可以默认赋值,一下代码为项目中实际代码应用。 PayConfig类中有内部类Builder,Builder中有PayConfig的属性,Builder内部类中每个赋值方法返回Builder自己,Builder内部类中有个builder方法,最终通过Pay
2017-10-24 09:32:53
433
原创 Android注销功能
private void goIntent(){ Intent intent = new Intent(this,LoginActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); }
2016-07-21 16:05:41
335
转载 Android新建项目,或者导入项目出现R文件丢失,解决方案
当你更新了sdk版本后可能会遇到这样的情况:导入人家的完整的项目会出现R文件丢失,或者新建一个项目直接就不生成R文件,这种情况下,你可能Fix了好多次,clean了N次,但是还是不行,你可以试试下面的办法。 打开Android SDK Manager,查看一下这俩个tools安装没有: 如果没有的话,安装一下,就万籁归于沉寂,一切恢复如初了。
2016-06-01 17:47:56
369
原创 各种数据类型转换
1. 时间类型&&String 互转 SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-DD"); Date birthDay = sdf.parse(birthDayStr); String birthDay = sdf.format(System.currentTimeMillis()); 注:System.currentTime
2016-05-16 10:35:58
319
原创 遇到的问题总结
1. http://tool.chinaz.com/Tools/UTF-8.aspx URL 地址编码 如:http://113.142.33.133:10004/cinda/policyQueryService.do?parametersJson={%22requestType%22:%20%221%22,%22policyNo%22:%20%226162504000518000004%
2016-05-12 13:48:11
733
转载 邮箱验证
public static boolean isEmail(String email){ String str="^([a-zA-Z0-9]*[-_]?[a-zA-Z0-9]+)*@([a-zA-Z0-9]*[-_]?[a-zA-Z0-9]+)+[\\.][A-Za-z]{2,3}([\\.][A-Za-z]{2})?$"; Pattern p = Patt
2016-05-11 15:34:43
353
原创 车牌号码验证
public boolean vcNumCheck(String vcNumber){ Context context =getContext(); String carnumRegex = "[A-Z]{1}[A-Z_0-9]{5}"; if (TextUtils.isEmpty(vcNumber)){ return false; }else{ return vcNumber.mat
2016-05-11 15:30:28
832
转载 车辆识别号(VIN)验证
//车辆识别号VIN中字母对应的数值 @SuppressWarnings({ "unchecked", "rawtypes" }) public static Hashtable htbVIN(){ Hashtable ht = new Hashtable(); ht.put("A", 1); ht.put("B", 2);
2016-05-11 15:23:32
4717
转载 身份证号码校验
/** * author:qiaoyongjun * StrNo:用户输入的身份证件号码 * _id:用来承载错误信息的控件ID号,用来进行友好提示 *判断身份证号码格式函数 *公民身份号码是特征组合码, *排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码 *如果验证通过 返回 true */ func
2016-05-11 15:20:02
534
转载 Android 银行账号校验2
/** * 校验银行卡卡号 * @param cardId * @return */ public static boolean checkBankCard(String cardId) { char bit = getBankCardCheckCode(cardI
2016-05-11 15:18:04
669
转载 Android 银行账号
根据银行卡号判断是哪个银行的卡,依据是银行卡号的前6位数,称之为bin号。 我们把bin号转化为长整形,再把各个银行卡的bin号做成有序表。通过二分查找的方法,找到bin号在有序表的位置,然后读出银行卡的信息。 作者: menghnhhuan 转载出处: http://blog.youkuaiyun.com/menghnhhuan/article/details/7351621 我把这
2016-05-11 14:58:28
2237
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅