- 博客(39)
- 收藏
- 关注
原创 日常记录:Nginx 访问403解决过程
现象 解决思路 打开错误日志记录,查看ngnix错误日志 error.log 2020/02/12 20:20:34 [error] 29889#0: *1 "/web/index.html" is forbidden (13: Permission denied), client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1",...
2020-02-12 20:48:53
1412
1
原创 为什么说无锁并发、CAS能减少上下文切换?
前言: 在并发编程学习中,我们知道并不是更多的线程就能让程序最大限度地并发执行。因为这其中涉及到线程间的上下文切换。而其中减少上下文切换的手段有 无锁并发编程、CAS算法、使用少的线程、协程等手段。 那么为什么说无锁并发、CAS能减少上下文切换呢? 本文导读 什么是线程间的上下文切换? CAS会没有线程上下文切换这话对吗? 既然是多线程开发,必然会涉及到上下文切换。那为什么无锁并发编程能减少...
2019-10-24 20:37:22
1601
1
原创 性能优化|tomcat 优化点整理记录
性能优化|tomcat 优化点整理记录 整理 提高并发能力 设置线程池 在配置文件的 Service 下 <executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="20" maxIdleTime="60000"/> <...
2019-10-15 15:24:24
431
原创 记录|常用的性能测试工具使用
记录|常用的性能测试工具使用 开发人员,掌握基本的接口并发测试,可以模拟一些并发场景,对系统的性能优化有很好的帮助 本文内容 AB测试工具 JMeter AB测试工具 介绍 ab 测试工具是 Apache 提供的一款测试工具,具有简单易上手的特点,在测试 Web 服务时非常实用。 ab的原理: ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。 ...
2019-10-15 12:38:13
527
原创 linux|Centos下Redis安装配置
Linux下Redis安装配置 旧文。整理发布 系统:Centos7 [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) 下载 官网:https://redis.io/ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-isFgSTVJ-1571113...
2019-10-15 12:33:34
540
原创 接口限流算法:令牌桶
接口限流算法:令牌桶 本文内容: 令牌桶算法原理 实现令牌桶算法 Guava中RateLimiter令牌桶的使用 限流算法的应用场景 令牌桶算法原理 简单说明:设定固定的速率往桶中放入令牌,如果到达桶的最大容量就溢出(不能放置)。当每一次接口请求时,需要申请一个令牌,如果获取到则进行业务操作,如果桶中无令牌,则拒绝请求。通过令牌桶就可以对接口进行限流了。 JAVA实现令牌桶算法 pa...
2019-10-14 13:18:23
387
原创 分布式事务学习-几种分布式事务的实现思路
分布式事务学习-几种分布式事务的实现思路 旧文。整理出来发布。 本文记录了学习分布式事务相关的理论知识的笔记和自己的一些思考 什么是事务 在之前我们讲事务,很多情况下是将单体事务。 事务是用来保证一组数据操作的完整性和一直性 四大特性ACID 四种隔离级别 七种传播级别 什么是分布式事务 概念 分布式事务就是将多个节点的事务看成一个整体来处理 分布式事务由事务的参与者、资源服务器、事务管...
2019-08-10 13:41:52
508
原创 设计模式-策略模式学习及案例演示
设计模式-策略模式学习及案例演示 概念 定义 定义一组算法,将每个算法都封装起来,并且使他们之间可以互换(继承和多态) 使用场景 代码中如果有大量的if…else… 系统中有很多类,而他们的区别仅仅在于他们的行为不同 一个系统需要动态地在几种算法中进行选择 类型 行为型 优点 满足了开闭原则 避免使用多重条件转移语句 提高算法的保密性和安全性 缺点 客户端必须...
2019-05-13 00:14:44
252
原创 myBatis实践-插件plugins
myBatis实践-插件plugins 前言 概述 知识点 官方文档 截图来自http://www.mybatis.org/mybatis-3/zh/configuration.html#plugins 理解总结 在mybatis中的插件,其本质还是通过代理模式进行实现。 Mybatis拦截器设计的一个初衷就是为了供用户在某些时候可以实现自己的逻辑而不必去动Mybatis固有的逻辑。打...
2019-04-13 17:11:34
294
原创 mybatis实践-objectFactory对象工厂
mybatis实践-objectFactory对象工厂 前言 概念 截图来自http://www.mybatis.org/mybatis-3/zh/configuration.html#objectFactory 理解 根据文档的说明objectFactory是每次返回数据时,会利用objectFactory来生产一个实例的目标类,那么如果我们默认的映射关系和初始化不能满足我们的要求的时候...
2019-04-13 15:55:37
685
原创 mybatis实践-自定义Mybatis类型转换器
mybatis实践-自定义Mybatis类型转换器 这两天重新去看了http://www.mybatis.org/mybatis-3/zh/index.html上的文档一遍,按照文档上面的操作重新实践后,整理成文档记录分享。 概念 概念 截图自http://www.mybatis.org 总结就是:mybatis在预处理语句(PreparedStatement)中设置一个参数时将java类型(...
2019-04-13 14:58:33
624
原创 linux|centos7下安装rabbitmq
linux下安装rabbitmq 介绍 官网http://www.rabbitmq.com/tutorials/tutorial-one-java.html 安装 1、安装erlang RabbitMQ团队生成一个剥离的包,只提供运行RabbitMQ所需的那些组件 来自RabbitMQ的零依赖Erlang 下载地址:https://bintray.com/rabbitmq-erlang/rpm...
2019-03-10 15:21:10
253
原创 Spring-boot集成freemarker入门|实践
Spring-boot集成freemarker入门|实践 介绍 官方介绍 https://freemarker.apache.org/ 百度百科:https://baike.baidu.com/item/freemarker/9489366?fr=aladdin 关于介绍本文就不重复叙述了 下面直接开始实践! Freemarker + Springboot Maven配置基础工程 创建一个mave...
2019-02-12 14:42:50
516
原创 mac下WebPack 安装
webpack安装 首先必须要先安装nodejs nodejs可以直接去官网下载mac 推荐使用本地安装,不建议用全局安装。因为我们不同的项目可能使用不同的版本号 安装步骤演示如下: 第一、初始化package.json文件 进如一个空的文件夹 # 1.初始化package.json文件 10:webpack-learning cll$ npm init -y Wrote to /User...
2019-02-08 16:47:59
2666
原创 linux下安装MongoDB
介绍 官网:https://www.mongodb.com/ 安装步骤 一、创建目录 [root@10 ~]# cd /usr/local/ [root@10 local]# mkdir momgodb [root@10 local]# cd momgodb/ 下载地址:https://www.mongodb.com/download-center/community 选择版本 复制链接进...
2019-01-30 14:57:47
349
原创 Spring-boot|如何自定义@Enable模块装配
背景 在学习SpringBoot的时候,我们会使用到@Enable***注解的地方,使用上也都是加在@Configuration 类注解的类上面,比如: (1)@EnableAutoConfiguration 开启自动扫描装配Bean (2)@EnableScheduling 开启计划任务的支持 (3)@EnableTransactionManagement 开启注解式事务的支持。 (4)@Ena...
2018-12-16 23:13:26
3664
原创 spring-boot|从@SpringBootApplication注解的装配来看模式注解
从spring-boot的@SpringBootApplication注解来重新了解sring的注解。 我们知道每一个spring-boot的初始是的程序入口都有一个@SpringBootApplication注解。点开@SpringBootApplication的源码可以看到如下 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTI...
2018-12-15 22:54:01
765
原创 日志框架|入门slf4j 理解为何推荐使用slf4j
介绍 Simple Logging Facade for Java(SLF4J)用作各种日志框架的简单外观或抽象,例如java.util.logging,logback和log4j。SLF4J允许最终用户在部署时插入所需的日志记录框架。请注意,启用SLF4J的库/应用程序意味着只添加一个强制依赖项,即 slf4j-api-1.8.0-beta2.jar。 官网 https://www.slf4j...
2018-11-27 15:58:31
392
原创 工具&mybatis | Mybatis-PageHelper分页处理插件
支持 MyBatis 3.1.0+ 这个只是简单入门集成,更加详细的使用推荐查看官方的文档 https://github.com/pagehelper/Mybatis-PageHelper/blob/master/README_zh.md 集成pom.xml依赖添加 <!-- mybatis pager --> <dependency> <groupId&g...
2018-11-21 17:05:45
259
原创 工具&maven|maven项目集成mybatis-generator
pom.xml文件中添加插件 &lt;plugin&gt; &lt;groupId&gt;org.mybatis.generator&lt;/groupId&gt; &lt;artifactId&gt;mybatis-generator-maven-plugin&lt;/artifactId&gt; &
2018-11-20 14:01:22
373
原创 工具&MAven|Maven环境隔离应用场景及实战
背景:在开发过程中,我们在测试和开发环境的配置不同。每次更改很麻烦。 coding 原来的资源结构 改造过程 一、在resource下分别创建目录如下: 二、修改pom.xml文件 根据创建的目录结构添加如下的节点 <profiles> <profile> <id>dev</id><!--执行打包命令时将使用...
2018-11-13 11:38:43
283
原创 Spring Data| spring data(3) Repository的子接口
接上篇 spring data(2) 使用repository的子接口,之间使用接口的方法即可使用。 在idea中按住alt+ctrl+B键查看repository的子接口,可以看到有四个子接口。 CrudRepository接口 有以下的默认方法 以save方法为例进行测试; package com.dsdj.repository; import com.dsdj.domain.Emp...
2018-11-04 17:23:03
297
原创 spring data|spring data 详解(2)查询规则、@Query、事务
接上篇spring data(1) 目录 repository接口是spring data的核心接口,不提供任何方法 public interface Repository<T, ID extends Serializable> 注解的使用 repository的子接口 repository 中查询方法定义规则和使用 规则 使用 查询以test开头,年龄大于12的员工 pu...
2018-11-04 15:10:51
491
原创 设计模式|原型模式
概念 定义 用原型实例指定创建对象的种类,并且通过拷贝折现原型创建新的对象。 优点 性能优良 原型模式是在内存二进制流的拷贝,要比直接new一个镀锌性能好很多,特别是要在一个循环体内产生大量的对象时,原型模式可以更好地体现其优点。 逃避构造函数的约束 直接在内存中进行拷贝,是不会执行构造函数的。 缺点 必须配备克隆方法 对克隆复杂对象或者对克隆出的对象进行复杂的改造时,容...
2018-11-03 22:35:42
198
原创 spring data|三分钟spring data JPA 快速入门(1)
环境搭建 <dependencies> <!--mysql driver--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> &a
2018-10-31 21:21:52
225
原创 设计模式|单例模式(3) Enum枚举单例
上篇文章已经讨论了单例模式的安全问题。而枚举类型的单例模式是实现单例模式的最好的方法 参考:《Effective Java中文版》 p14-p15 只需编写一个包含单个元素的枚举类型。 代码 枚举类 public enum EnumSingleton { INSTANCE; private Object data; public Object getData() ...
2018-10-31 09:06:11
272
原创 设计模式|单例模式(2) 单例模式下反序列化和反射带来的安全问题
接上篇 单例模式(1) 序列化破坏单例模式 饿汉式的单例类 public class HungarySingleton { private final static HungarySingleton hungarySingleton = new HungarySingleton(); private HungarySingleton(){ } ...
2018-10-28 14:24:34
327
1
原创 设计模式|单例模式(1)
设计模式|单例模式(1) 概念 定义:保证一个类仅有一个实例,并提供一个全局访问点 类型:创建型 适用场景 想确保任何情况下都绝对使用同一个情况 优点 减少内存开销 避免对资源的多从占用 设置全局访问点,严格控制访问 缺点 没有接口,扩展比较难 案例 懒汉式 /** * @ClassName 懒汉式单例模式:延迟加载 * @Description TODO ...
2018-10-24 22:35:02
166
原创 传统方式和spring jdbcTemplate方式 访问数据库
传统方式和spring jdbcTemplate方式 访问数据库 环境准备 导入依赖 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version&
2018-10-20 14:30:43
218
原创 设计模式|建造者模式
建造者模式 概念 定义 将一个复杂对象的构建和它的表示分离,使得同一的构建过程可以创建不同的表示 用户只需要指定需要建造的类型就可以得到他们,建造过程及细节不需要知道 类型 创建型 试用场景 如果一个对象有非常复杂的内部结构(很多属性) 想把复杂对象的创建和使用分离 优点 封装性好,创建和使用分离 扩展性好、建造类之间独立、一定程度上解耦 缺点 产生对于的builder对象 ...
2018-10-17 22:00:11
220
原创 研究基于spring通过对http请求数据的预处理(数据加解密、校验、日志)(2)拦截器篇
研究基于spring通过对http请求数据的预处理(数据加解密、校验、日志)(2)过拦截器篇 上文已经详细讲解了如何对request进行处理,本文主要是案例演示 spring MVC 的写法 添加拦截器 定义一个拦截器 public class AppRequestInterceptor implements HandlerInterceptor { /** * 在请...
2018-10-17 08:46:16
1214
原创 设计模式|简单工厂、工厂方法、抽象工厂
简单工厂 概念 定义: 由一个工厂对象决定创建出哪一种产品类的实例 类型: 创建型,但不属于GOF23种设计模式 使用场景 优点 缺点 案例一 动物的抽象类 public abstract class Animal { public abstract void eat(); } public class Cat extends Animal { publi...
2018-10-14 13:46:37
213
原创 设计模式| 单一职责原则&接口隔离原则
记录学习设计模式的过程 #单一职责原则 概念 定义:不要存在多于一个导致类变更的原因 一个类、接口、方法只负责一项职责 优点:、、 案例 单一职责原则很简单,一个方法 一个类只负责一个职责,各个职责的程序改动,不影响其它程序。 这个比较容易理解,就举个一个平常会碰到的情况。 package com.dsdj.design.principle.singleresponsibility; /...
2018-10-11 20:29:30
4441
原创 研究基于spring对http请求数据的预处理(数据加解密、校验、日志)(1)过滤器篇
研究基于spring-mvc对http请求数据的预处理(数据加解密、校验、日志) 背景:在做拦截器的时候想获取请求Request中获取输入流,解析里面的内容。但InputStream只能被读取一次,在进入Spring MVC的controller方法的时候body的数据已经无法获取了 创建spring-boot项目 https://start.spring.io/ spring-boot整合...
2018-10-10 13:23:06
1768
2
原创 设计模式|设计原则之依赖倒置原则
设计模式|设计原则之依赖倒置原则 记录对设计模式学习的过程 前言 定义:高层模块不应以依赖低层模块,二者都应依赖其抽象 抽象不应该依赖细节;细节应该依赖抽象 针对接口编程,不要针对实现编程 优点:低耦合 、、、、等等 详细概念可以网上查询 案例实验 有一个查询数据的类SearchDao.java package com.dsdj.design.principle.depen...
2018-10-09 20:53:19
240
原创 设计模式|六大原则之开闭原则 实验
设计模式|六大原则之开闭原则 实验 原理 定义: 优点: 网上随便一找都有 案例演示 课程购买的例子 抽象课程 定义一个接口ICourse.java package com.dsdj.design.principle.openclose; /** * @ClassName ICourse * @Description TODO * @Author ChenLiLin * @Dat...
2018-10-08 23:55:49
413
原创 工具&git| git初学者的日常操作干货
工具&git| git初学者的日常操作干货 工作中使用版本控制是必不可少的 这个笔记可以当做平常使用中的参考文档 基本操作 git clone git@127.0.0.1:test git status git add . git commit –m ‘说明这次提交’ git push 分支的使用 创建分支 工作场景:有了一个新的需求,需要新建一个分支。 1. 本人先创建分支 git ...
2018-10-08 15:56:35
232
原创 基础&java|实现Tterable接口
基础&amp;amp;java|实现Iterable接口 Node.java /** * @ClassName Node * @Description TODO * @Version 1.0 **/ public class Node { private final Integer vaule; private Node nextNode; public Node(...
2018-10-05 16:31:49
232
原创 基础&算法|Java递归算法练习
Java递归算法练习 使用java实现几个比较简单的递归面试题 写递归算法的时候,可以类比数学归纳法。 将每步先简化 单向链表与递归算法 实现单向链表 Node.java /** * @ClassName Node * @Description TODO * @Version 1.0 **/ public class Node { private final Integer v...
2018-10-04 21:35:54
1440
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅