avatar
文章
102
标签
50
分类
23

首页
归档
标签
分类
关于
haominglfs的博客
首页
归档
标签
分类
关于
设计模式-代理模式
发表于2018-10-05|设计模式
定义为其他对象提供一种代理,以控制对这个对象的访问。代理对象在客户端和目标对象之间起到中介的作用。 适用场景 保护目标对象。 增强目标对象。 UML 静态代理 动态代理 总结 优点 代理模式能将代理对象与真实被调用的目标对象分离。 一定程度上降低了系统的耦合度,扩展性好。 保护目标对象。 增强目标对象。 缺点 代理模式会造成系统设计中类的数目增加。 在客户端和目标对象增加一个代理对象,会造成请求处理速度变慢。 增加系统的复杂度。
设计模式-桥接模式
发表于2018-10-04|设计模式
定义将抽象部分与它的具体实现部分分离,使他们都可以独立的变化。通过组合的方式建立两个类之间的联系,而不是继承。 适用场景 抽象和具体实现之间增加更多的灵活性 一个类存在两个(或多个)独立变化的纬度,且这两个(或读个)纬度都需要进行独立的扩展。 不希望使用继承,或因为多继承导致系统类的个数剧增。 UML 在桥接模式结构图中包含如下几个角色: Abstraction(抽象类):用于定义抽象类的接口,它一般是抽象类而不是接口,其中定义了 一个Implementor(实现类接口)类型的对象并可以维护该对象,它与Implementor之间具有关 联关系,它既可以包含抽象业务方法,也可以包含具体业务方法。 RefinedAbstraction(扩充抽象类):扩充由Abstraction定义的接口,通常情况下它不再是抽象类而是具体类,它实现了在Abstraction中声明的抽象业务方法,在RefinedAbstraction中可以调用在Implementor中定义的业务方法。 Implementor(实现类接口):定义实现类的接口,这个接口不一定要与Abstraction的接口完全一致,事实上 ...
设计模式-组合模式
发表于2018-10-04|设计模式
定义将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使客户端对单个对象和组合对象保持一致的处理方式。 适用场景 希望客户端可以忽略组合对象与单个对象的差异时。 处理一个树形结构时。 UML 总结 优点 清楚的定义分层次的复杂对象,表示对象的全部或部分层次。 让客户端忽略层次的差异,方便对整个层次结构进行控制。 简化客户端代码。 符合开闭原则 缺点 限制类型时会较为复杂。 使设计变的更加抽象。
设计模式-享元模式
发表于2018-10-03|设计模式
定义提供了减少对象数量从而改善应用所需的对象结构的方式。运用共享技术有效的支持大量细粒度的对象。 适用场景 常常应用于系统底层的开发,以便解决系统性能的问题。 系统有大量相似对象,需要缓冲池的场景。 UML 总结 优点 减少对象的创建,降低内存中对象的数量,降低系统的内存,提高效率。 减少内存之外的其他资源的占用。(减少new操作所需的时间) 缺点 关注内/外部状态,关注线程安全问题。 使程序的逻辑复杂化。
设计模式-外观模式
发表于2018-10-03|设计模式
定义为子系统中的一组接口提供一个统一的入口。外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 UML 总结 外观模式的主要优点如下: (1) 它对客户端屏蔽了子系统组件,减少了客户端所需处理的对象数目,并使得子系统使用起来更加容易。通过引入外观模式,客户端代码将变得很简单,与之关联的对象也很少。 (2) 它实现了子系统与客户端之间的松耦合关系,这使得子系统的变化不会影响到调用它的客 户端,只需要调整外观类即可。 (3) 一个子系统的修改对其他子系统没有任何影响,而且子系统内部变化也不会影响到外观对象。 外观模式的主要缺点如下: (1) 不能很好地限制客户端直接使用子系统类,如果对客户端访问子系统类做太多的限制则减少了可变性和灵活性。 (2) 如果设计不当,增加新的子系统可能需要修改外观类的源代码,违背了开闭原则。
设计模式-单例模式2
发表于2018-10-01|设计模式
单例模式安全问题 序列化和反射问题: public class HungrySingleton implements Serializable,Cloneable{ private final static HungrySingleton hungrySingleton; static{ hungrySingleton = new HungrySingleton(); } private HungrySingleton(){ //反射时处理,如果已存在则抛出异常 if(hungrySingleton != null){ throw new RuntimeException("单例构造器禁止反射调用"); } } public static HungrySingleton getInstance(){ return hungrySingleton; } ...
jenkins自动构建配置
发表于2018-09-04
安装jenkins 官网下载jenkins jenkins 终端运行:java -jar jenkins.war –httpPort=8080 8080为端口号,可以自行设置 在浏览器中输入:http://localhost:8080 访问jenkins服务 首次启动jenkins,出于安全考虑,jenkins会生成一个随机的口令到 /root/.jenkins/secrets/initialAdminPassword 文件中,复制文件中的口令到jenkins即可通过访问。 安装ant 官网下载Ant Ant 配置环境变量 ANT_HOME   ant的根路径 path             $ANT_HOME/bin classpath      $ANT_HOME/lib 验证 终端输入 ant 有正常的输出,则表示安装成功 配置tomcat 配置tomcat-users.xml 添加角色和用户 <role rolename="manager-gui"/> <r ...
高性能js读书笔记
发表于2018-08-07
动态脚本元素var script = document.createElement("script"); script.type = "text/javascript"; script.src = "file1.js"; document.getElementsByTagName("head")[0].appendChild(script); 这种技术的重点在于:无论何时启动下载,文件的下载和执行过程都不会阻塞页面其他进程。
memcached
发表于2018-08-05
安装Libevent: 官网下载,解压缩 ./configure –prefix=/opt/install/libevent make && make install memecached: 解压缩 ./configure –prefix=/opt/install/memcached –with-libevent=/opt/install/libevent make && make instll 启动启动参数: -d 启动一个守护进程 -m 分配给memcached 的内存数量(单位为M) -u 运行memcached 的用户 -L 监听的服务器IP地址 -p 监听的端口号 -c 最大运行的并发连接数 -P 设置Pid 文件 操作 java客户端
mac安装autojump
发表于2018-08-01
brew install autojump 编辑 vim ~/.zshrc 找到 plugins=,在后面添加autojump:plugins=(git autojump) 新开一行,添加:[[ -s $(brew –prefix)/etc/profile.d/autojump.sh ]] && . $(brew –prefix)/etc/profile.d/autojump.sh j + 跳转的目录
tmux配置使用
发表于2018-07-23
什么是tmuxtmux是一个工具,用于在终端窗口中运行多个终端会话,可以使终端会话进入后台运行。 安装 $ brew install tmux 快捷键前缀为了使自身的快捷键不和其他软件的快捷键产生冲突,tmux提供了一个快捷键前缀。当使用快捷键时要先按下快捷键前缀,然后再按下快捷键,默认的前缀是Ctrl-b 创建会话 tmux new -s 假如还需要开发另一个项目,可以再创建一个新会话,但原来的会话不会消失,若要创建一个新会话,只需要按下 :,然后输入 new -s 除非显式的关闭会话,否则tmux的会话在重启计算机之前都不会消失。 切换会话 获取会话列表 s 列表中的每个会话都有一个 ID,该 ID 是从 0 开始的。按下对应的 ID 就可以进入会话。如果你已经创建了一个或多个会话,但是还没有运行 tmux,那么可以输入如下命令以接入已开启的会话: tmux attach 会话外获取会话列表: tmux ls tmux attach/a -t 在会话外进入session tmux attach/a 进入列表第一个 ...
svn安装和配置
发表于2018-07-16
安装服务器端程序 yum install -y subversion 创建并配置版本库 创建版本库目录 mkdir -p /var/svn/repository 版本库目录下创建具体的项目目录(可以多个) 创建svn版本库 svnadmin create /var/svn/repository/项目目录 配置svn对应的服务 svn://ip:3690/项目目录 (默认端口号3690) 修改服务配置 /etc/rc.d/init.d/svnserve (注意备份) 原版:args=”–daemon –pid-file=${pidfile} $OPTIONS” 修改版:args=”–daemon –root=/var/svn/repository(版本库根目录) –listen-port 2255(实际的端口号) –pid-file= ...
1…6789
avatar
haominglfs
A programmer's blog
文章
102
标签
50
分类
23
Follow Me
公告
This is my Blog
最新文章
springboot之bean别名2023-03-11
云计算之kvm2023-03-10
AssertJ2022-03-24
ceph部署2022-03-19
JUnit2022-03-09
分类
  • SpringSecurity1
  • ceph1
  • echart1
  • exception1
  • git1
  • hexo1
  • iTerm21
  • idea2
标签
jenkins ceph exception JUnit iTerm2配置 js高级程序设计 shell tomcat vue hexo bean 虚拟化 thymeleaf jvm nfs mysql java redis -echart -百度地图 effective-java mariadb 设计模式 windows 类图 java haproxy 浏览器 java8 时间 keepalived AssertJ hibernate rabbitMQ SpringSecurity svn kvm springboot 断言 Elasticsearch Logstash Kibana 工作 消息队列 热加载
归档
  • 三月 20232
  • 三月 20224
  • 十一月 20201
  • 十月 20203
  • 八月 20201
  • 七月 20201
  • 六月 20204
  • 五月 20202
网站资讯
文章数目 :
102
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2023 By haominglfs
框架 Hexo|主题 Butterfly