- 浏览: 166929 次
- 性别:
- 来自: 上海
最新评论
-
Mr.San:
binbinyouli 写道run(Enums.random( ...
java 枚举高级应用之状态机 -
Mr.San:
class Enums
{
private static ...
java 枚举高级应用之状态机 -
nocb:
对,Enums 没有
java 枚举高级应用之状态机 -
binbinyouli:
run(Enums.random(MONEY.getValue ...
java 枚举高级应用之状态机
文章列表
单例模式定义:
确保某一个类只有一个实例, 而且自行实例化并向整个系统提供这个实例。
单例模式优点:1.单例模式在内存中只保存一个对象,减少了内存的开支,特别是当一个对象需要重复创建和销毁的时候,而且创建和销毁的时候内存无法优化。
2.单例模式减少了系统的性能开销,当一个对象需要频繁的读取配置,产生其他
开闭原则定义:
一个软件实体如类、 模块和函数应该对扩展开放, 对修改关闭。通俗一点讲,就是一个软件实体应该通过扩展来实现变化,而不是通过修改原有的代码来实现变化。开闭原则的优点:
1.不修改原有代码,只通过继承或者实现一个接口来完成功能的变更,避免了修改代码带来的风险,大大提升了系统的可扩展性和稳定性。
2.原有代码一般不变,维护人员如果需要新增功能只需要添加新类和新的方法而不需要看懂原来的代码,提高系统的可维护性的同时也增强了系统应对变更的灵活性。
3.减少了测试成本,一旦修改了原有方法的代码,那么所有引用该方法的地方都可能需要再重新测试一次,无形中增加了测试的成本。但是如果仅仅 ...
设计模式学习- 迪米特法则
- 博客分类:
- 设计模式
迪米特法则定义:
一个对象应该对其他对象有最少的了解,通俗的说,就是一个类应该对外暴露尽量少的公共接口,如有必要,可以把对象之间的耦合度降到最低。迪米特法则的优点:
1.一个类暴露的公用接口越少,那么后期修改时涉及的面就越小,由于修改造成的风险也会降到最低。
2.类之间解耦了,独立性也会相应的提升。那么类的复用率就会大大提高。
迪米特法则的缺点:
因为要求耦合度很低,那么可能要调用一个类要经过多次跳转,这样的话就导致了系统的复杂性,
同时也为维护带来了难度。
使用心得:
迪米特法则利弊参半,在高度解耦的同时会增加系统的复杂性,不过总体来说还是利大于弊,所以采用迪米特法则时需要 ...
接口隔离原则定义:
客户端不应该依赖它不需要的接口。 类间的依赖关系应该建立在最小的接口上。
接口隔离原则的优点:
1.提升系统的灵活性。
2.减少系统变更时的工作量,试想如果每个接口的方法都很少,那么修改对应接口也会使得系统的改动变的很少。
接口隔离原则的缺点:
1.接口变多了,让开发人员目不暇接。
接口隔离原则是对接口进行规范约束, 其包含以下4层含义:1.接口要尽量小
2.接口要高内聚
3.定制服务
4.接口设计是有限度的
设计模式学习-依赖倒置原则
- 博客分类:
- 设计模式
依赖倒置原则定义:
模块间的依赖通过抽象发生, 实现类之间不发生直接的依赖关系, 其依赖关系是通过接口或抽象类产生的 ,接口或抽象类不依赖于实现类,实现类依赖接口或抽象类。
依赖倒置原则的优点:
1.降低模块之 ...
设计模式学习-里氏替换原则
- 博客分类:
- 设计模式
里氏替换原则定义:
在一个父类可以出现的地方必须也 可以透明的使用其子类的对象。
里氏替换原则优点:
1.代码共享, 减少创建类的工作量2.提高代码的重用性3.子类可以形似父类, 但又异于父类4.提高代码的可扩展性5.提高产品或项目的开放性
单一职责原则的定义:
只能有一个原因引起类的变更
单一职责原则的优点:
1.类的复杂性降低, 实现什么职责都有清晰明确的定义;2.可读性提高, 复杂性降低, 那当然可读性提高了;3.可维护性提高, 可读性提高, 那当 ...
大部分应用系统都有上传图片或文件的功能,攻击者利用这些功能上传一个网页木马,如果存放上传文件的目录有执行脚本的权限,那么攻击者就可以直接得到一个WebShell,进而控制Web服务器。这个漏洞有两个必要条件,一是可以上传木马,二是存放上传文件的目录具备执行脚本的权限。上传是业务的功能需要,即便有做各种安全过滤,限制木马上传,但也有各种绕过过滤的攻击方法,比较难以限制。所以漏洞的关键就在上传的目录是否具备执行脚本的权限上,很多设计者会基于降低成本的考虑,将存储上传文件的位置与Web应用程序放在同一服务器,甚至同一目录下,这样上传的目录也和Web应用程序一样具备执行脚本的权限,从而导致 ...
一、 查看是否安装 VNC 并设置中文编码
1)打开配置文件的目录: cd /etc/sysconfig
2)编辑配置文件: vi i18n
3)用#号把第一行(LANG="en_US.UTF-8")注释掉,其实直接在这行改也是可以的,不过保险点的做法,还是 ...
最近需要迁移服务器,之前服务器系统是Centos 5.8,现在是6.5,使用的都是Oracle11GR2数据库,都说在linux下安装oracle比较复杂,我因为也是第一次安装,所以也搞了挺久,中间还因为卸载了系统的libgcc包而导致无法登录操作系统,幸 ...
最近公司迁移服务器,搞好所有环境后我发现防火墙没开,就设置了一下,然而发现设置完之后本机的应用连接不到同机的oracle数据库,但是我远程用plsql dev是可以连接的,而且1521端口也是开放的。但是就是本机连接不到,我就纳了闷了,然后我用netstat -apnt命令查看了一下java程序已经连接的端口,结果发现和oracle建立了很多10000-65535的端口连接,而且这些端口都是随机生成的,每次启动应用都会变。
netstat -anpt|grep java
tcp 0 0 0.0.0.0:8080 0.0.0.0 ...
public static int[] insertSort(){
int temp = 0;
for (int i = 1,j=0; i < arr.length; i++) {
temp = arr[i];
j = i-1;
for(;j >=0 && temp < arr[j];j--){
arr[j+1] = arr[j];
}
arr[j+1] = temp;
}
return arr;
}
public static int[] insertSort(i ...
static int [] arr = new int []{ 4, 2, 3, 6,99, 5 ,56,23,41};
public static void main(String[] args) {
show(order1());
}
public static int[] order1(){
int count = 0;
boolean a = false;
int temp = 0;
for (int i = 0;i<arr.length-1;i++) {
a = true;
for (int j = 0 ...
Ext.define('BM.ux.MoneyFiled', {
extend:'Ext.form.NumberField',
alias: 'widget.moneyfield',
trulyValue:null,
setValue: function(v){
if(isNaN(v)){
this.setRawValue('');
this.trulyValue = null;
}else{
this.setRawValue(this.getForm ...
1、检查系统参数:SQL> show parameter passwordNAME TYPE VALUE------------------------------------ ----------- ------------------------------remote_login_passwordfile string EXCLUSIVE2、select * from v$pwfile_users;SQL>