- 浏览: 14748 次
最新评论
文章列表
Andoid:popwindow里嵌入webview使用报错解决方案:d.view.WindowManager$BadTokenException: Unable to add window --
//配合的webview该属性一定不能打开,否则一触屏就报错,开发中发现小米系统是
兼容的,魅族和锤子系统是不好使的。
mWebView.getSettings().setBuiltInZoomControls(true);
装饰模式:就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象实例。
Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态的添加一些功能。
装饰器模式的应用场景:
1、需要扩展一个类的功能;
2、动态的为一个对象增加功能,而且是动态撤销
缺点:产生过多相似的对象,不易排错。
设计模式--适配器模式
- 博客分类:
- java-设计模式
适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三种:类的适配器模式、对象适配器模式、接口适配器模式。
1、类的适配器:
核心思想:有一个Source类,拥有一个方法,带待适配,目标接口是Targetable,通过Adapter类,将Source的扩展到Targetable里。
Adapter类继承Source类,实现Targetable接口。
2、对象的适配器:
核心思想:只是将Adapter类作修改,这次不继承Source类,而是持有Source类的实例。
3、接口的适 ...
原型模式虽然是创建型模式,但是与工厂模式没有关系,该模式是将一个对象作为原型,对其进行复制,克隆,产生一个和原对象类似的新对象。在java中,复制对象是通过clone()实现的。
一个原型类,只要实现了Cloneable接口,覆写clone()方法,此处clone方法可以改为任意名称,因为Cloneable接口是个空接口,可以是任意定义实现类的方法名。因此,重点就是super.clone()这句话,调用的是Object的clone()方法。
浅赋值:将一个对象赋值后,基本数据类型的变量就会重新创建,而引用类型,指向的还是原对象所指向的。
深复制:将一个对 ...
设计模式--建造者模式
- 博客分类:
- java-设计模式
工厂模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中进行管理,用来创建符合对象。所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是前面抽象工厂模式和最后的Test结合起来得到的。
建造者模式是将很多功能集成到一个类里,这个类可以创造出比较复杂的东西。所以与工程模式区别就是:工厂模式关注的是创建单个模式,而建造者模式则关注创建符合对象,多个部分,因此,选择工厂模式还是建造者模式,依赖情况而定。
单例模式:
单例对象是一种常用的设计模式。在java应用中,单例对象能保证在JVM中,该对象只有一个实例存在。
单例模式的好处:
1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。
2、省去了new操作符,降低了系统内存的使用频繁,减轻了GC压力。
3、有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统就乱了。所以只有使用单例模式,才能保证核心交易服务器独立控制整个流程。
实现步骤:
01、持有私有静态实例,防止被引用,赋值为null,目的是实 ...
使用背景:公司访问外网限制,项目组大部分人员不能访问maven的center repository,因此在局域网里找一台有外网权限的机器,搭建nenux私服,然后开发人员连接到这台私服上。
环境:nexus-2.1.1、maven-3.04,jdk-1.6.0
一、使用admin用户登陆nexus
二、为nexus配置代理服务器
由于这台机器需要通过代理才能访问外网,所以首先要配置代理服务器,在Adminstrain->Server进行配置
配置之后,nexus才能连上center repository,如果私服所在机器可以直接上外网,则可以省略这 ...
一、为什么使用Maven?
1、解决SSH包依赖的问题?
2、公司项目目录结构不规范?
二、maven环境变量的配置:
1、下载路径:
http://apache.fayea.com/maven/maven-3/3.2.5/binaries/apache-maven-3.2.5-bin.zip
2、首先必须安装JDK, ...
抽象工厂模式:
工厂模式有一个问题就是,类的创建依赖于工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则。我们采用抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。
总结:这个模式的好处就是,如果想增加一个功能,就需要做一个实现类,实现Sender接口,同时做一个工厂类,实现provider接口,就是可以了,无需改动现成的代码,这样拓展性比较好。
工厂方式模式分为三种:
1、普通工厂模式:建立一个工厂类,对实现了同一个接口的一些类进行实例的创建。
2、多个工厂方法的模式:就是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式就是提供多个工厂方法,分别创建对象。
3、静态工厂方法模式:就是将上面的多个工厂方法模式里的方法置为静态,不需要创建实例,直接调用即可。
总结:凡事出现了大量的产品需要创建,并且是具有共同的接口时,可以通过工厂方法模式进行创建,以上三种方法中,第一种如果传入了字符串有误,不能正确创建对象,第三种相对于第二种,不需要实例工厂类。所以大多数情 ...
设计模式的分类:
一、 设计模式总体分为三大类:
1、创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。
2、结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。
3、行为型模式(11种):策略模式,模版方法模式,观察者模式,迭代子模式,责任链模式,命令模式,备忘录模式,状态模式,访问者模式,中介者模式,解释器模式。
二、设计模式的六大原则:
1、开闭原则
开闭原则就是对扩展开放,对修改关闭。想要达到这种效果,我们需要使用接口和抽象类。
2、里氏代换原则
里氏代换原则 ...
1、安装java环境jdk:
一般系统都会默认自带的JDK,但是不太好用,都会卸载了,然后重新安装。
1.1)、卸载:
(rpm -qa :查询已经安装哪些软件包;
rmp -q 软件包:查询指定包是否已经安装;
rpm -e 软件包:删除指定软件包。
)
rpm -qa | grep jdk (查询jdk的信息)
jdk信息:jdk-1.6.0_31-fcs.x86_64
卸载命令:rpm -e --nodeps jdk-1.6.0_31-fcs.x86_64
1.2)、下载软件jdk
...
MyBatis传多个参数:
1、采用#{0},#{1}获得参数:
Dao层函数方法:
public User selectUser(String name,String area);
对应的Mapper.xml
<select id="selectUser" resultMap="BaseResultMap">
select * from user where user user_na ...
1、java容器的关系:
Collection
List 接口
LinkedList 链表
ArrayList 顺序结构动态数组类
Vector 向量
Stack 栈
Set
Map
HashTable
HashMap
WeakHashMap List接口
2、线程安全和线程不安全的
Vector和HashTable是线程安全的
LinkedList,ArrayList和HashMap是线程不安全的
线程安全:
如果代码所在的进程中有多个线程同时运行,而这些线程可能会同时运行这段代码。如果每次运行的结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。
servlet是多线程的,同时一个servlet实现类只会有一个实例对象,也就是说是单例,所以多个线程是可能会访问同一个servlet实例对象的。
线程安全问题都是由于全局变量及静态变量引起的。
一、servlet和struts1
通常情况下,系统只能生成servlet的单一实例之后,为每个用户请求建立新的线程。如果很多请求同时到来,那么多个线程可能会并发的访问同一个serv ...