自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (1)
  • 收藏
  • 关注

原创 记一次蛋疼的tomcat、shiro自动生成的JESSIONID去除历程..........

近日手头上有一份蛋疼的渗透测试报告,洋洋洒洒列了几十条,本菇凉连月加班才勉勉强强,从对这些漏洞的无知,到为web打补丁、防攻击,真是心力交瘁,内忧外患。今天遇到的漏洞,学名为:会话cookie通过URL传递按照字面理解呢,就是JESSIONID放在url中,直接列在浏览器上,安全公司认为这是敏感信息,不宜大张旗鼓的展示。好吧,我改。55555555555...........先给大...

2018-08-25 03:46:23 6246 20

原创 代码编排与领域设计

讲代码重构前,必须讲到软件架构设计,初期没有好的设计,再厉害的程序员,在堆积如山的屎山代码面前,都没有办法把原本一团乱麻的逻辑,层层剖析开,建立起新的代码金字塔软件结构设计1、垂直切分+水平扩展想象一下,一个复杂的、具有类似功能的、具有个性功能的多表业务,如何去编排他的代码结构?1、把业务按照简单的操作步骤,抽象出多个表之间共性的操作2、将这些共性操作划分成具体的步骤,封装成一个抽象类,在业务层面进行简单的业务步骤垂直切分public abstract class Abstract

2021-09-15 18:03:54 645

原创 【源码与设计模式】——SpringBoot

最近小女子换了份新工作,相较于之前的工作,轻松了许多,还不用承担项目大佬的角色,平时上班时闲下来的时光变得相当多,于是乎,重新拾起过去写一系列源码剖析的article的想法,与各位有研究优秀源码与设计模式的小哥哥小姐姐们,分享讨论。该篇文章将会从一下几个方面,进行深刻剖析入参构造run启动流程返回...

2020-07-03 14:49:21 260

原创 Hystrix断路机制下的Exception异常传递

本菇凉最近发现一个很奇特的问题,基于SpringCloud的微服务项目下与DDD领域设计模型的架构下,难免会存在服务间大量相互Feign调用的场景,但是当一些模块开发人员进行个体服务开发时,走进异常流程会直接抛出基于RuntimeException的封装好的异常信息给到前端,这原本是非常常见的做法,但是基于DDD领域模型的设计思想下,经常性的需要对后端各服务进行接口聚合封装,提供统一的API入口,分离领域与api,那么原先已开发好的子服务的流程Exception,经过这一层Feign的封装聚合调用,Feig

2020-06-12 15:33:57 1742

原创 SpringBoot——自动配置依赖[spring-boot-starter-XXX]

SpringBoot之所以流行的原因,主要就是因为自动配置依赖——【约定优先于配置】,提供日常企业应用的各种场景。有非常多的“开箱即用”的依赖模块,也是SpringBoot快速高效的原因。默认支持和提供了【80+的自动配置依赖模块】SpringBoot提供的自动配置依赖模块都以spring-boot-starter-为命名前缀,并且这些依赖都在org.springframework.boot下。

2017-10-18 16:01:53 13300 3

原创 SpringBoot——configuration

在Spring4之前,是通过xml配置文件配置的,十分麻烦 从Spring4开始,推荐使用java Config的方式,使用Annoation来进行配置。举例:mybatis在SpringBoot项目中的配置@Configurationpublic class MybatisConfiguration { //加载datasource配置文件 @Bean @Confi

2017-10-18 15:47:32 1311

原创 SpringBoot——基于条件的自动配置

在Spring框架中,可以使用【@Conditional+@Configuration】或者【@Conditional+@Bean】来干预一个配置或者bean定义是否能够生效 ——即依赖模块都是按需加载的,只有符合某些特定的条件,这些依赖条件才会生效,即“智能”自动配置

2017-10-18 15:34:52 591

原创 SpringBoot——run启动流程

SpringApplicationRunListener是SpringBoot应用的main()执行过程中接不同执行时点通知的【监听者】。 applicationListener是Spring框架对【监听者】模式的一种框架实现 SpringBoot中添加自定义的ApplicationListener的两种方式 ApplicationContextInitialzerCommandLineR

2017-10-18 11:14:21 7365 2

原创 SpringBoot启动的http异常

在搭建完Spring Boot入门项目之后,成功启动,然后在浏览器上测试访问,结果显示没有此页面,控制台报错如下 试了很多办法,最后才发现不是项目本身的问题,而是在浏览器输入url的时候,默认会直接用https,而这里是http,所以访问不到 注意:Spring Boot入门项目在搭建的过程中,如果在pom.xml配置了相关依赖项,但是在application.properties项目配置文件中

2017-07-13 17:51:15 624

原创 CSS3 :nth-child() 选择器

最近做项目的时候,需要修改jqGrid源代码来修改外观,把模态框(弹出框)从原来的竖直显示变成多列显示,而jqGrid插件是自动根据绑定数据来生成前端样式的,由于对CSS并不熟悉,经过一整天才相处了解决办法nth-child()用于选择子元素 这是我原创的加入jqGrid源代码的css样式,会根据弹出框的显示条目数来自动决定是否浮动显示(即是直接垂直显示,还是分两列显示).ui-jqdialog-

2017-07-12 09:59:29 1032

原创 java.io.EOFException

最近在做项目的时候,使用多线程来提高网络数据读取速度,然后报 java.io.EOFException错误。java.io.EOFExceptionJava对此的解释: public class EOFException extends IOException当输入过程中意外到达文件或流的末尾时,抛出此异常。 这个解释很模糊,但是我学到一个新的知识:因为使用多线程来提高速度,但是网络传输流是

2017-07-12 09:51:27 3270 2

原创 shiro

http://canann.iteye.com/blog/1929180

2017-07-03 15:08:28 281

原创 Maven使用教程

详细教程点击这里

2017-06-02 09:16:57 292

原创 ES6

ES6新特性参考: http://www.jianshu.com/p/ebfeb687eb70 http://www.cnblogs.com/Wayou/p/es6_new_features.html

2017-05-11 11:40:26 378

原创 通过阿里云发布一个Tomcat,并通过域名访问

详细内容

2017-05-01 19:21:14 681

原创 Linux安装JDK+Tomcat+mySql

我想把自己写的网站发布一下,所以选用了阿里的云服务器,用了个学生价9.9,先玩一个月。- 安装JDK进入profile编辑[root@localhost~]# cd /etc [root@localhost etc]# vi profile 在profile结尾处插入export JAVA_HOME=/usr/lib/jvm/java export JRE_HOME=${JAVA_HOME}

2017-05-01 16:59:12 567

原创 阿里云Linux服务器安装配置ftp及上传网站全教程

安装ftp详细教程使用xshell上传文件上传文件使用rz与sz命令,远程Linux系统上需要安装lrzsz工具包下载安装包lrzsz-0.12.20.tar.gz: http://www.linuxidc.com/Linux/2010-08/27739.htm安装如下:[Linuxidc@Linuxidc /]# yum install lrzsz注意:我使用的命令是yum,如果你的是其他的请在

2017-05-01 15:14:03 2049

原创 逆向工程错误

写cappella项目的时候遇到一个让我解决了很久的问题: Result Maps collection already contains value for xyx.dsw.dao.mapper.admin.quotationwish.TempTestTableMapper.TempTestTableResultCaused by: java.lang.IllegalArgumentExcept

2017-04-29 14:46:34 942

原创 启动Tomcat出现“Bad version number in .class file (unable to load class XXX)”解决

今天写ssm项目的时候遇到一个常见的问题:Bad version number in .class file,是一个比较常见的问题。Caused by: java.lang.UnsupportedClassVersionError: Bad version number in .class file (unable to load class cn.hl.ssm.ItemsController)因

2017-04-09 20:21:44 1214

原创 Proxy代理模式

当别人给你了源包,当你是用该源包方法的时候,无法修改源代码(比如只给你一个编译过的class文件)来修改实现你所需要的功能,或者需要把业务代码和日志打印完全分离开,不想要业务代码里面混着日志代码,或者需要提供的java类什么地方是瓶颈,肯定需要在方法的前后加上一些代码,就需要用到代理模式。Tankpackage Proxy;import java.util.Random;public class T

2017-03-08 13:39:27 519

原创 其他模式(调停者模式和门面模式)

Mediator模式:每个类之间都不要互相打交道了,都通过一个调停者来交互Facade模式:门面模式,比如,要和系统中的多个类打交道,还必须理解这多个类之前的关系,太麻烦了,可以直接把这些错综复杂关系的类用一个Facade门面封装起来,就是对外的一个门面,调用者只需要和这个门面打交道即可。 【EJB中如果SessionBean粒度非常细,性能就会产生问题,所以每个模块设置一个单独的SessionB

2017-03-07 20:58:27 697

原创 State模式

实际开发工作中,首要是把功能完成,再考虑怎么样进行重构,使用什么样的设计模式。一个类的动作是根据这个类的内部状态的不同而有不同的动作。

2017-03-07 08:55:29 344

原创 观察者模式

观察者模式

2017-03-06 22:35:34 262

原创 command模式

struct1和struct2都实现了command模式 1、当一个请求来了之后,会把请求交给一个业务去处理,是通过命令来处理这个请求。 2、当做了一件事情后悔了,想要undo,command模式也可以实现撤销Command接口package command;public abstract class Command { public abstract void execute();/

2017-03-06 22:34:31 309

原创 JavaScript面向对象编程

JavaScript 语言是通过一种叫做 原型(prototype)的方式来实现面向对象编程的。 下面就来讨论 基于类的(class-based)面向对象和 基于原型的 (prototype-based) 面向对象这两种方式在构造客观世界的方式上的差别。 1、在基于类的面向对象方式中,对象(object)依靠 类(class)来产生。 2、而在基于原型的面向对象方式中,对象(object)则是

2017-02-28 10:02:57 233

原创 桥接模式Bridge

桥接模式

2017-02-26 15:37:08 463

原创 单例、多例模式&&工厂模式

单例、多例模式假设,老张开车去东北public class Car { public void run(){ System.out.println("冒着烟奔跑中car........."); }}public class Test { public static void main(String[] args) { //如果把new交给司

2017-02-22 15:20:19 5260 1

原创 struct和typedef

struct 把一组变量组合成一个构造的一种方式 1、struct可以写在函数里,也可以单独写在外面,自成一体,C++的class对象的语法就是由struct演化而来的。 2、注意以分号结束。struct Student{ string name; int age; int number;};int main(){ struct Student s;//如果

2017-02-22 14:04:14 385

原创 策略模式

多态的最重要特性就是支持可扩展性。比如,排序算法,多种不同数据类型的值想要排序,通过同一个方法名的方法来排序,可以通过方法重载实现。 问题:如果要对某些对象进行排序比较,而不是基本数据类型,怎么样排序?Cat类package Strategy;public class Cat { private int age; private String name; public C

2017-02-21 13:10:48 909

原创 C++—连接

标识符表示存放变量或被编译过的函数体的存储空间,连接用连接器所见的方式描述存储空间,连接方式由两种:内部连接和外部连接1、内部连接:只对正被编译的文件创建存储空间,用内部连接,别的文件可以使用相同的标识符或者全局变量,连接器不会发现冲突——也就是为为一个标识符创建单独的存储空间,在C和C++中,内部连接使由关键字static指定的。2、外部连接:为所有被编译过的文件创建一片单独的存储空间,一旦创建存

2017-02-19 21:37:21 1019

原创 C++变量类型

全部变量 全局变量不受作用域影响 如果在一个文件中使用extern关键字来声明另一个文件中存在的全局变量,那么这个文件可以使用这个数据(即另一个文件中使用已存在文件中的变量,两者共用一个变量)//**test1.cpp:**#include <iostream>using namespace std;//声明int globe;void f();int main(){ glo

2017-02-19 20:40:51 1576

原创 指针

指针是用来专门存放地址的数据类型 定义一个指针时,必须规定它指向的变量类型,如int* p【注意:如果写成int * ipa,ipb,ipc,其实只有ipa是指针类型,ipb、ipc还是int类型】,且最好能初始化,即int a=47;int* p=&a;,C++编程的一般原则是定义时初始化通常,向函数传递参数时,在函数内部生成该参数的拷贝,称为“按值传递”。 如果我们传递一个指针给函数,实际上

2017-02-19 14:15:02 319

原创 说明符

C++中有4种说明符:short、long、singed、unsigned 说明符short、long的使用 signed、unsigned unsigned不保留符号位,即有一个多余的位可以用,所以比signed能存储的数大两倍。 通过规定unsigned char,可以强制使用符号位 通过sizeof运算符显示不同数据类型的大小#include<iostream>using name

2017-02-19 13:44:24 1611

原创 Iterator迭代器模式

ArryList和LinkedList遍历的方式肯定是不一样的,如果用for循环中遍历,那么每一种不同的容器实现遍历肯定不一样,要统一所有的容器的遍历(调用一样,但容器底层不一样),那么让每一种容器都实现Iterator接口,用此接口对容器进行遍历。Iterator迭代器接口,用于统一不同容器的迭代方式package test;public interface Iterator { pub

2017-01-31 05:26:36 307

原创 容器剖析

主要用于容器类的遍历 容器:不用关心数组的边界问题,动态扩展。 所有的容器类都实现Collection或Map接口,用Iterator迭代器进行元素得带,且java中提供了容器的工具类Collections和Arrays模拟ArrayList类 ArrayList内部是数组package test;//手动写一个容器类,用数组模拟public class ArrayList { //

2017-01-31 04:40:24 288

原创 责任链--双向使用

客户端发送给服务器,用一条责任链来过滤数据,如果服务器反馈给客户端信息,也想要过滤信息,是再定义一组过滤器,还是复用这些已经定义好的责任链呢?当然是复用这些已经定义好的责任链。 1、Request请求经过FilterChain(过滤器链),在FilterChain中依次进行处理,再到达服务器处理。 2、Response响应,倒序经过FilterChain 处理的过程有点类似于栈。 它们处理的

2017-01-19 02:45:14 1086

原创 责任链--基本模式

举例:如Structs2框架中的FilterChain过滤器链,当如果需要对一个字符串进行多次不同的处理,都属于同一类的操作,但是注意过滤过程也许会有顺序的要求。main函数 用极限编程,现在main函数中写测试函数,再写功能模块 极限编程:先写调用程序,再写功能模块。当你写完测试程序之后,就会发现写功能模块目标明确,很方便package test;public class main {

2017-01-19 01:41:27 398

原创 Vector容器的使用

C++库中的contrainer类:标准容器类 最基本的标准容器Vector类 如vector<string>,规定该vector对象只装string类型的对象,如果试图加入其它类型,会报错 //Vector示例#include <iostream>#include <vector>#include <fstream>#include <string>using namespace

2017-01-18 14:30:17 305

原创 文件的读写

文件拷贝getline(fin,s),成功读出一行,把读出的结果放入s,并返回true,如果到达结束,就返回false getline读出一行,遇到换行符则终止,将丢弃换行符而不存入s对象 因此,想使得拷贝的文件和源文件看上去一样,必须加上换行符//文件读写示例//:#include <string>#include <fstream>#include <iostream>using

2017-01-18 13:32:10 275

原创 标准输入输出流cin、cout

//标准输入输出流使用示例//:#include <iostream>//C++标准输入输出流#include <cstdlib>//C语言的标准输入输出流#include <string>//C++的string类using namespace std;uint main(void){ cout<<"hello," <<8<<",Today"<<std::end

2017-01-18 13:09:59 558

notepad++.exe

notepad++超级记事本

2016-10-31

空空如也

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

TA关注的人

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