关闭
当前搜索:

设计模式六大原则综述

1. 开闭原则(Open Close Principle)开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。2. 里氏代换原则(Liskov Substitution Principle)里氏代换原则是面向对象设计...
阅读(77) 评论(0)

设计模式最简Demo:工厂方法模式[Factory Method Pattern]

1. 程序需求在简单工厂模式中,我们实现了一个简单的计算器,客户端在不知道运算类的情况下只需要传入一个简单的运算符就可以获取相应的操作进行运算,但是,如果我们想增加一个运算法则,比如乘方,我们考虑一下程序中需要修改的地方,首先需要扩展Operation类,增加一个乘方运算的子类,同时需要修改OperationFactory类,修改分支语句,添加case分支,这显然不满足关闭-开放原则,我们对扩展开放...
阅读(101) 评论(0)

设计模式最简Demo:代理模式[Proxy Pattern]

1. 程序需求在现实生活中,我们经常遇到这样的场景,我们喜欢某个女生,但是却没有机会认识,为了表达爱意,通常找一个好哥们儿去代替我们送一些小礼物,表达爱意。其实这就是一个代理模式的案例。2. UML3. Java实现GiveGiftpackage proxy_pattern.girl;public interface GiveGift { void giveFlower(); voi...
阅读(91) 评论(0)

设计模式最简Demo:装饰者模式[Decorator Pattern]

1. 程序说明新开了一家咖啡店,可以往咖啡里面加各种配料,牛奶、糖、奶泡等。按照面向对象的设计中,我们最先想到的是设计一个简单咖啡类,然后分别设计加牛奶的咖啡,加糖的咖啡,加奶泡的咖啡去继承简单咖啡类,但是当有一天,配料越来越多,而且用户需求越来越千奇百怪,比如加糖的同时又要加奶泡……那么子类会灾难性地增长,装饰者模式为解决这个而生,提供了比继承更好的解决方法。2. UML3. Java实现Cof...
阅读(87) 评论(0)

设计模式最简Demo:策略模式[Strategy Pattern]

1. 程序需求在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。在旅行系统开发中,我们需要为旅行者准备自行车、开车、火车等不同的策略,旅行者可以根据自身情况选择不同策略。2. UML3. Java 实现Transportationpackage strategy_pattern.travel;public abstr...
阅读(71) 评论(0)

设计模式最简Demo:策略模式 + 简单工厂模式

1. 程序需求商场收费系统,需要支持正常收费,打折收费,现金返利,积分等计费方式。2. 简单工厂模式2.1 UML2.2 Java实现Cashpackage simple_factory_pattern.market;public abstract class Cash { protected double originCash; //原价 public abstract doubl...
阅读(84) 评论(0)

设计模式最简Demo:简单工厂模式[Simple Factory Pattern]

1. 程序需求实现一个计算器程序,要求能实现加减乘除等常用操作,且扩展性强。2. UML图3. Java实现Operationpackage simple_factory_pattern;public abstract class Operation { protected double numberA; protected double numberB; public abs...
阅读(69) 评论(0)

Tor - 洋葱路由 - 在Ubuntu 16.04 安装tor代理

1 系统要求Ubuntu 16.042 安装步骤sudo -i echo deb http://deb.torproject.org/torproject.org xenial main > /etc/apt/sources.list.d/tor.list echo deb-src http://deb.torproject.org/torproject.org xenial main >> /et...
阅读(183) 评论(0)

SSH常用操作

1. 登录# 口令登录[如果客户端的用户名和服务器的用户名相同,可以省略user] ssh user@host -p port #私钥 user@host 公钥登录,需要在服务器的.ssh的authorized_keys下有客户端的公钥 ssh -i 私钥 user@host -p port2. 文件操作#上传文件example到远程服务器 tar -zc example | ssh yangyue...
阅读(141) 评论(0)

Kali Linux工具集——信息搜集

0trace、tcptraceroute、traceroute描述:进行路径枚举时,传统基于ICMP协议的探测工具经常会受到屏蔽,造成探测结果不够全面的问题。与此相对基于TCP协议的探测,则成功率会有所提高,同时基于已经建立的合法TCP会话的探测则更具优势,甚至可以探测到目标内网。虽然没有银弹,但结合多种技术手段,则可以收集更加完整的目标信息,为后续渗透测试做准备。 Acccheck描述:近期泄露的...
阅读(536) 评论(0)

SSH内网穿透的N种姿势

作为一名开发者,我们生活中常遇到公司做不完的工作需要在家接着做,但是,公司的服务器有统一管理,多为内网ip,在家不能直接访问到公司服务器,如果解决这个问题呢?本文就以下两种情景给出SSH内网穿透的解决方案。...
阅读(326) 评论(0)

协议-传输层-ICMP

1. ICMP简介ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。主要目的是为了提高 IP 数据报交付成功的机会。2. 数据...
阅读(149) 评论(0)

MySQL数据库操作总结

1 数据库1.1 数据库常用命令 show databases;#查看数据库 create database db_name;#创建数据库 use db_name;#使用数据库 drop database db_name;#删除数据库 show create database db_name\G #查看创建详情 1.2 数据库存储引擎 show engines;#查看数据库支持引擎 InnoDB、...
阅读(177) 评论(0)

Java ip工具类

1. 功能:输入一个子网中的ip和子网掩码,可以获取: 起始ip 结束ip 子网中所有ip集合 2. 代码import java.util.*;public class IpUtil { /** * 测试 * @param args */ public static void main(String[] args) { String ip...
阅读(133) 评论(0)

Spring学习(七):通过Java代码装配bean

1. 引言尽管在很多场景下通过组件扫描和自动装配实现Spring的自动化配置是更为 推荐的方式,但有时候自动化配置的方案行不通,因此需要明确配置 Spring。比如说,你想要将第三方库中的组件装配到你的应用中,在这种情况下,是没有办法在它的类上添加@Component和@Autowired注解的,因此 就不能使用自动化装配的方案了。在这种情况下,你必须要采用显式装配的方式。在进行显式配置的时候,有两...
阅读(127) 评论(0)
47条 共4页1 2 3 4 下一页 尾页
    文章分类
    文章存档