自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Yang

一壶浊酒,水调歌头

  • 博客(45)
  • 收藏
  • 关注

原创 设计模式六大原则综述

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

2017-11-22 11:04:01 391

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

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

2017-11-22 10:51:57 554

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

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

2017-11-22 00:32:23 533

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

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

2017-11-21 00:29:50 512

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

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

2017-11-20 09:37:31 366

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

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

2017-11-19 19:00:12 635

原创 设计模式最简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

2017-11-19 16:41:49 352

原创 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

2017-10-24 15:44:22 405

转载 Kali Linux工具集——信息搜集

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

2017-10-17 14:08:58 3441

原创 SSH内网穿透的N种姿势

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

2017-10-10 11:04:28 17651 4

原创 协议-传输层-ICMP

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

2017-10-07 15:34:06 1305

原创 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、

2017-09-30 01:16:49 550

原创 Java ip工具类

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

2017-09-28 19:25:13 1237

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

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

2017-09-27 20:46:48 465

原创 Spring学习(六):各种注解解释——长期更新

1. 什么是注解解释何为注解的最佳方式就是元数据这个词:描述数据自身的数据。注解就是代码的元数据,他们包含了代码自身的信息。注解可以被用在包,类,方法,变量,参数上。被注解的代码并不会直接被注解影响。这只会向第三系统(比如Spring)提供关于自己的信息以用于不同的需求。声明一个注解需要使用“@”作为前缀,这便向编译器说明,该元素为注解。我们目前已经接触过了几个Spring注解,那么我们来看下这些注

2017-09-27 18:12:39 385

原创 协议-网络层-IPv4

1. 数据包准备我们首先通过wireshark抓取一个ICMP的数据包,该协议是IPv4上层的协议,我们可以通过分析该数据包查看IPv4数据包的组成。0000 04 f9 38 b8 31 5d 00 21 86 29 c5 aa 08 00 45 000010 00 3c 41 88 00 00 40 01 00 00 0a 0a 0c a3 0a 0a0020 02 58 08

2017-09-26 21:55:40 1067

原创 Spring学习(五):自动化装配Bean

1. 引言在本系列之前的文章中,我们实现了Spring的HelloWorld应用,也通过了解Spring的容器知道了容器的职责是创建程序中的bean并通过依赖注入把协调这些对象之间的关系,但是要创建哪些bean并且如何装配是你需要告诉Spring的,Spring提供了三种主要的装配机制:在XML中显式配置在Java中显式配置隐式的bean发现机制和自动装配三种方式都可以实现bean的装配,具

2017-09-25 21:00:37 417

原创 协议-数据链路层-以太网

我们从wireshark抓取一个TCP的数据包:0000 04 f9 38 b8 31 5d 00 21 86 29 c5 aa 08 00 45 000010 00 3c 11 ce 00 00 80 06 00 00 0a 0a 0c a3 ca 6c0020 17 71 ed 37 00 50 73 ea ee f1 d1 58 df b4 50 180030 01 03

2017-09-24 16:45:21 867

原创 新买的阿里云ECS基本安全运维

1. 引言购买了阿里云的ECS后,默认很多配置不够安全,我们需要进行一些维护操作。2. 添加新用户#不推荐用useradd,不会帮我们创建同名的用户主目录adduser xxx # xxx为你的用户名#系统会让你输入几个信息,输入回车就好,同时会设置密码3. 给新用户设置管理权限#1.root用户下,修改/etc/sudoerschmod u+w /etc/sudoersvim /etc/s

2017-09-22 09:40:09 2251

原创 Springboot配置https访问

1. 购买或本地生成ssl证书要使用https,首先需要ssl证书,获取SSL证书有两种方式:自己通过keytool生成通过证书授权机构购买作为演示,我们使用keytool生成:C:\Users\xxx>keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p

2017-09-21 17:00:50 14404 1

原创 用Docker解决坑爹的环境搭建系列——lamp(php5+mysql+apache2)

1. 下载适合镜像首先在docker hub中搜索lampdocker search lamplocalhost:~ yangyue$ docker search lampNAME DESCRIPTION STARS OFFICIAL AUTOMA

2017-09-21 09:34:04 12558 7

原创 用Docker解决坑爹的环境搭建系列——PHP+Apache2

1. 引言之前我们说过用docker来管理我们的mysql,今天我们来使用docker生成我们的PHP+Apache2环境,和mysql一起组成lamp环境2. 环境搭建从官方拉取镜像,我这儿使用的是eboraas/apache-phpMason:~ yangyue$ docker pull eboraas/apache-phpUsing default tag: latestlatest: P

2017-09-19 21:21:11 3372

原创 用Docker解决坑爹的环境搭建系列——Mysql

1. 引言本人用的mac电脑,做开发和实验时候离不开很多环境搭建,但是久而久之我发现电脑的环境已经被自己污染的惨不忍睹。其实之前也有想法使用docker,但是之前比较懒,不想学习docker复杂的命令,最近需求实在强烈,所以想试试慢慢把生活中一些必须的环境迁移到docker。今天主要说下如何将mysql环境迁移到docker中。2. docker中安装mysql2.1 获取mysql镜像从docke

2017-09-19 20:58:03 2071

原创 协议-网络层-ARP

1. ARP包解析从网络底层看来,一个ARP包是分为两个部分的,前面一个是物理帧头,后面一个才是ARP帧。2.1 物理帧

2017-09-19 16:56:31 491

原创 Docker可视化管理工具shipyard安装

安装shipyardcurl -sSL http://dockerclub.net/public/script/deploy | bash -s ==> 中文版curl -sSL https://shipyard-project.com/deploy | bash -s ==> 英文版如果出现错误

2017-09-19 14:14:13 1786

原创 Wireshark常用过滤器

一、针对wireshark最常用的自然是针对IP地址的过滤。其中有几种情况: (1)对源地址为192.168.0.1的包的过滤,即抓取源地址满足要求的包。 表达式为:ip.src == 192.168.0.1 (2)对目的地址为192.168.0.1的包的过滤,即抓取目的地址满足要求的包。 表达式为:ip.dst == 192.168.0.1 (3)对源

2017-09-19 09:02:38 897

原创 ELK-005-Beats-Filebeat配置项详解之global

1. global所有配置项#========================= Filebeat global options ============================# Event count spool threshold - forces network flush if exceeded#filebeat.spool_size: 2048# Enable async pu

2017-09-17 21:37:16 828

原创 ELK-004-Beats-Filebeat配置项详解之prospectors

Filebeat的配置文件是使用YAML标记语言编写的,Filebeat的配置文件主要分为以下几个部分:2. prospectors具体配置prospectors直译是勘探者或者淘金者,在Filebeat中主要用于配置你要从哪个地方去获取日志信息.

2017-09-17 11:07:00 3385

原创 ELK-003-Beats-Filebeat的工作原理

1. 引言本系列上一篇文章《 ELK-002-Beats-Filebeat的HelloWorld》中我们降到了Filebeat的应用场景,同时搭建Filebeat完成了HelloWorld示例,今天我们来探讨下Filebeat的工作原理。Filebeat主要是靠两个组件共同工作完成日志采集的:harvester(收割者)和prospector(勘探者),这两个组件共同工作去获取最新的日志事件然后推送

2017-09-15 23:27:01 963

原创 ELK-002-Beats-Filebeat的HelloWorld

1. 引言Filebeat是一个轻量级的日志采集器,当您要面对成百上千、甚至成千上万的服务器、虚拟机和容器生成的日志时,请告别 SSH 吧。Filebeat 将为您提供一种轻量型方法,用于转发和汇总日志与文件,让简单的事情不再繁杂。可以用官网一幅图直观地对其进行描述: 官网地址:https://www.elastic.co/cn/downloads/beats/filebeat 文档地址:htt

2017-09-15 20:47:57 751

原创 ELK-001-Elastic技术栈概览

1. 概述当了解一门技术、一个框架时候,打开官网是最直接的也是最好的学习方法。当你打开Elastic官网https://www.elastic.co/products时候,Elastic这个技术栈清晰地呈现在你面前,可以用下面这幅图表示: 下面将分别对每个模块作简要解释。方向为图下到图上。2. Beats & Logstash之所以把Beats和Logstash放到一个模块作介绍,是因为这两个

2017-09-15 19:13:55 649

原创 利用Logstash plugins做更多的事情

1. 引言之前一篇文章《Logstash 介绍及linux下部署》,我们实现了logstash的安装以及简单的控制台标准输入输出测试,那么logstash能不能做更多的事情呢?答案是肯定的,logstash就是为了处理日志数据而生的。一个最直接的应用是,我们从事java web开发,将应用放到tomcat中,tomcat会生成大量的访问日志,那么如何实现对大量访问日志的搜集、处理、分析呢?logst

2017-09-15 16:51:15 4179

原创 Logstash 介绍及linux下部署

1. Logstash 介绍Logstash 是一款强大的数据处理工具,它可以实现数据传输,格式处理,格式化输出,还有强大的插件功能,常用于日志处理。官网地址:https://www.elastic.co/products/logstash2. Logstash 流程2.1 inputInput 作为数据输入端,可以接收来自任何地方的源数据。主要有以下四种类型: - file:从文件中读取

2017-09-15 15:31:18 6185 4

原创 ElasticSearch安装及配置

1. 下载ElasticSearch# https://www.elastic.co/downloads/elasticsearchwget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.0.tar.gz2. 解压tar -zxvf elasticsearch-5.6.0.tar.gz3. 配置elas

2017-09-15 11:40:45 614

原创 Spring学习(四):一览Spring的风景线

1. 引言在本系列的第一篇中,我们提到了Spring能够简化很多事情,Spring框架关注于通过DI、AOP和消除样板式代码来简化企业级Java开发。但是,Spring实际上的功能超乎你的想象。在框架之外是一个庞大的生态系统。2. Spring生态系统如上图所示,Spring核心容器及容器之外衍生出了许多其他的生态,我们逐一看下这些板块都是做的什么事情:2.1 Spring核心容器容器是Spring

2017-09-14 20:37:27 430

原创 Spring学习(三):初探Spring容器

1. 引言在本系列的上一篇文章《 Spring学习(二):Hello Spring你的第一个Spring应用》中,我们完成了一个简单的Spring应用编写,细看程序,我们发现在该Spring应用中我们只是对Person,WorkTask几个Bean加了一些注解:@Component、@Autowired,Spring就能帮助我们完成对象的创建,依赖注入,那么Spring是如何做的呢?2. Sprin

2017-09-14 19:36:24 350

原创 Python 安装pip

Windows1. 安装setup tools1.1 下载网址: https://pypi.python.org/pypi/setuptools下载 setuptools-36.4.0.zip 源码包1.2 安装解压下载的zip包,在包目录下按住Shift同时点击右键,调出cmd或powershell,通过以下命令安装python setup.py install2. 安装pip2.1 下载

2017-09-14 13:16:03 791

原创 Spring学习(二):Hello Spring你的第一个Spring应用

1. 开发环境说明jdk 1.8mavenIDEA2. 搭建Spring的基础环境2.1 新建一个Maven项目新建maven项目设置项目信息2.2 引入Spring依赖包pom.xml 设置如下,我们主要引入了Spring的核心依赖包和单元测试的相关包:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.a

2017-09-14 09:51:48 408

原创 Python安装和配置

1. windows1.1 安装python下载https://www.python.org/安装1.2 配置环境变量打开我的电脑,鼠标右键点击属性,点击右侧高级系统设置,点击环境变量,找到系统变量中的path,设置python的安装路径到path中:

2017-09-14 09:40:25 361

原创 IDEA修改toString方法模板为JSON格式

1. 打开toString方法设置界面在你的代码上,右键选择Generate,然后选择toString(); 也可以使用快捷键,windows下是Alt + Insert, mac下是 command + N点击设置选择模板,点击左上角绿色的+, 添加一个模板 2. 复制以下代码到新建的模板中public java.lang.String toString() {final java.lang.

2017-09-14 09:13:17 9740 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除