- 博客(74)
- 资源 (10)
- 收藏
- 关注
原创 工具类org.apache.commons.lang3.StringUtils
sEmpty 和 isBlank 的区别你知道吗?也许你除了isEmpty/isNotEmpty/isNotBlank/isBlank外,并不知道还有isAnyEmpty/isNoneEmpty/isAnyBlank/isNoneBlank的存在, come on ,让我们一起来探索org.apache.commons.lang3.StringUtils;这个工具类sEmpty系列StringUtils.isEmpty()是否为空. 可以看到 " " 空格是会绕过这种空判断,因为是一个空格,并不
2021-08-10 10:09:48
1317
原创 排查CPU过高步骤
TOP找出CPU占比最高的线程得到pid ps -ef | grep pid 或者jps -lv | grep pid 得知是哪个项目及启动参数等等 定位具体哪个线程ps -mp pid -o THREAD,tid,time 得到时间最长TID线程号 -m 显示所有线程 -p pid进程使用cpu的时间 -o 该参数后是用户自定义格式 将线程ID转换为16进制格式(英文小写格式) jstack pid | grep tid(16进制格式英文小写格式) -C60(前后60行)...
2021-07-07 19:26:46
118
转载 Spring Boot中的事务管理
负载均衡和容错,限流,降级。这些。什么是事务?我们在开发企业应用时,对于业务人员的一个操作实际是对数据读写的多步操作的结合。由于数据操作在顺序执行的过程中,任何一步操作都有可能发生异常,异常会导致后续操作无法完成,此时由于业务逻辑并未正确的完成,之前成功操作数据的并不可靠,需要在这种情况下进行回退。事务的作用就是为了保证用户的每一个操作都是可靠的,事务中的每一步操作都必须成功执行,只要...
2018-08-02 17:23:22
257
转载 MongoDB学习笔记之 第4章 MongoDB整合Spring
MongoDB学习笔记之 第1章 MongoDB的安装MongoDB学习笔记之 第2章 MongoDB的增删改查MongoDB学习笔记之 第3章 MongoDB的Java驱动MongoDB学习笔记之 第4章 MongoDB整合Spring 第4章 MongoDB整合Spring(黎明你好原创作品,转载请注明)4.1 创建maven项目4.1.1 reposit...
2018-07-24 15:22:50
226
转载 mybatis xml中特殊字符处理
出处:http://yaobenzhang.blog.163.com/blog/static/214395113201561523017861/ 1,CDATA区:它的全称为character data,以"<![CDATA[ "开始,以" ]]>" 结束,在两者之间嵌入不想被解析程序解析的原始数据,解析器不对CDATA区中的内容进行解析,而是将这些数据原封不动地交给...
2018-07-16 16:37:48
659
转载 基于jwt的token验证
JWT简介JWT(json web token)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源。比如用在用户登录上。基于session的登录认证在传统的用户登录认证中,因为http是无状态的,所以都是采用session方式。用户登录成功,服务端会保证一个session,当然会给客...
2018-07-12 17:33:55
394
转载 Dubbo入门---搭建一个最简单的Demo框架
Dubbo背景和简介Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起。单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本。 缺点:单一的系统架构,使得在开发过程中,占用的资源越来越多,而且随着流量的增加越来越难以维护 垂直应用框架(MVC) 垂直应用架构解决了单一应用架构所面临的扩容问题,流量能够分散到各个子系统当中,且系统的...
2018-07-10 17:58:26
151
原创 在mac OSX中安装启动zookeeper
1、Mac安装ZooKeeperzookeeper支持brew安装,检查安装环境brew info zookeeperbrew install zookeeper安装后zookeeper配置文件位置:/usr/local/etc/zookeeper2 、配置文件zookeeper详解3、参数详解:tickTime:ZK中的一个时间单元。ZK中所有时间都是以这个时间单元为基础,进行整数倍配置的。例...
2018-07-10 13:35:30
2546
转载 理解maven命令package、install、deploy的联系与区别
我们在用maven构建java项目时,最常用的打包命令有mvn package、mvn install、deploy,这三个命令都可完成打jar包或war(当然也可以是其它形式的包)的功能,但这三个命令还是有区别的。下面通过分别执行这三个命令的输出结果,来分析各自所执行的maven的生命周期。mvn clean packagemvn clean installmvn clean deploy(...
2018-07-10 09:58:39
444
转载 Docker与CI持续集成/CD
Docker与CI持续集成/CD背景 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 持续集成(Continuous integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集...
2018-07-09 15:05:01
1347
转载 SpringMVC的拦截器(Interceptor)和过滤器(Filter)的区别与联系
一 简介(1)过滤器:依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据,比如:在过滤器中修改字符编码;在过滤器中修改HttpServletRequest的一些参数,包括:过滤低俗文字、危险字符等关于过滤器的一些用法可以参考我写过的这些文章:继承HttpServ...
2018-06-08 11:34:05
149
转载 Spring web过滤器-各种filter讲解
http://liuluo129.iteye.com/blog/1965268图来自上面连接http://blog.csdn.net/geloin/article/details/7441330整理于上面Spring的web包中中有很多过滤器,这些过滤器位于org.springframework.web.filter并且理所当然地实现了javax.servlet.Filter,不过实现的方式有以下...
2018-06-07 16:28:38
13012
转载 正向代理与反向代理的区别
正向代理的概念正向代理,也就是传说中的代理,他的工作原理就像一个跳板,简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器这个代理服务器呢,他能访问那个我不能访问的网站于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容代理服务器去取回来,然后返回给我从网站的角度,只在代理服务器来取内容的时候有一次记录有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站结...
2018-05-31 15:56:37
103
转载 nginx负载均衡配置
原文链接:http://blog.csdn.net/xyang81/article/details/51702900Nginx安装请参考:《Nginx源码安装》 负载均衡的目的是为了解决单个节点压力过大,造成Web服务响应过慢,严重的情况下导致服务瘫痪,无法正常提供服务。春节期间在12306网站上买过火车票的朋友应该深有体会,有时查询一张火车票都会很慢,甚至整个网页都卡住不动了。通常一个...
2018-05-31 15:36:55
100
转载 springboot(集成篇):RabbitMQ集成详解
RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。消息中间件在互联网公司的使用中越来越多,刚才还看到新闻阿里将RocketMQ捐献给了apache,当然了今天的主角还是讲RabbitMQ。消息中间件最主要的作用是解耦,中间件最标准的用法是生产者生产消息传送到队列,消费者从队列中拿取消息并处理,生产者不用关心是谁来消费,消费者不用关心谁在生产...
2018-05-30 16:20:58
188
原创 spring-boot获取form-data数据及json数据
@PostMapping("/")public ObjectNode getCourses(Request request, @RequestHeader(value = "area") String city) { if(StringUtils.isBlank(request.getPhone())){ Map<String, Object> reqMap...
2018-05-25 15:34:57
8550
转载 Java 8 Optional类深度解析
思考: 调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法。原来解决方案: 我们首先要判断这个返回值是否为null,只有在非空的前提下才能将其作为其他方法的参数。这正是一些类似Guava的外部API试图解决的问题。 一些JVM编程语言比如Scala、Ceylon等已经将对在核心API中解决了这个问题。 新版本的Java,比如Java 8引入了一个新的Optional类。...
2018-05-24 09:49:01
243
转载 Mysql分库分表方案
相关文章:1、 使用Spring AOP实现MySQL数据库读写分离案例分析2、MySQL5.6 数据库主从(Master/Slave)同步安装与配置详解3、MySQL主从复制的常见拓扑、原理分析以及如何提高主从复制的效率总结4、使用mysqlreplicate命令快速搭建 Mysql 主从复制5、大型网站应用之海量数据和高并发解决方案总结一二一、MySQL扩展具体的实现方式随着业务规模的不断扩大...
2018-05-22 15:46:44
1041
1
转载 RabbitMQ的应用场景以及基本原理介绍
1.背景RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue)的开源实现。2.应用场景2.1异步处理场景说明:用户注册后,需要发注册邮件和注册短信,传统的做法有两种1.串行的方式;2.并行的方式 (1)串行方式:将注册信息写入数据库后,发送注册邮件,再发送注册短信,以上三个任务全部完成后才返回给客户端。 这有一个问题是,邮件,短信并不是必须的,它只是一个...
2018-05-22 10:12:26
134
转载 shell脚本基本语法详解
编写shell脚本的时候,最前面要加上一行:#!/bin/bash,因为linux里面不仅仅只有bash一个解析器,还有其它的,它们之间的语法会有一些不同,所以最好加上这一句话,告诉系统要用这个解析器。一.shell变量shell变量和一些编程语言不同,一般shell的变量赋值的时候不用带“$”,而使用或者输出的时候要带“$”。加减乘除的时候要加两层小括号。括号外面要有一个“$”,括号里面的变量可...
2018-05-08 15:09:06
1327
原创 Spring IOC原理总结
Spring容器高层视图Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配好Bean之间的依赖关系,为上层应用提供准备就绪的运行环境。Bean缓存池:HashMap实现IOC容器介绍Spring 通过一个配置文件描述 Bean 及 Bean 之间的依赖关系,利用 Java 语言的反射功能实例化 Be...
2018-04-10 15:02:01
234
原创 Spring两大核心之一AOP的基本原理
AOP:面向切面编程,可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。主要功能有日志记录,性能统计,安全控制,事务处理,异常处理等等。主要意图就是把以上功能从业务逻辑代码中分离出来,进而改变这些行为的时候不影响业务逻辑的代码。说白了,就是扩展功能不修改源代码实现。在说具体原理之前,我们先看看原来我们是怎么实现功能扩展的。后来出现了纵向继承机制这两种方法...
2018-04-10 14:31:48
2221
转载 深入理解Java类加载器(ClassLoader)
关联文章:深入理解Java类型信息(Class对象)与反射机制深入理解Java枚举类型(enum)深入理解Java注解类型(@Annotation)深入理解Java类加载器(ClassLoader)深入理解Java并发之synchronized实现原理Java并发编程-无锁CAS与Unsafe类及其并发包Atomic深入理解Java内存模型(JMM)及volatile关键字剖析基于并发AQS的重入...
2018-04-10 14:07:12
126
转载 Redis、Memcache和MongoDB的区别
>>MemcachedMemcached的优点:Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key、value的字节大小以及服务器硬件性能,日常环境中QPS高峰大约在4-6w左右)。适用于最大程度扛量。支持直接配置为session handle。Memcached的局限性:只支持简单的key/value数据结构,不像Redis可以支持丰富的数据类型...
2018-03-26 10:36:59
93
原创 面试总结------Spring框架相关
1、什么是Spring框架?Spring框架有哪些主要模块?Spring框架是一个为Java应用程序的开发提供了综合、广泛的基础性支持的Java平台。Spring帮助开发者解决了开发中基础性的问题,使得开发人员可以专注于应用程序的开发。Spring框架本身亦是按照设计模式精心打造,这使得我们可以在开发环境中安心的集成Spring框架,不必担心Spring是如何在后台进行工作的。Spring框架至...
2018-03-26 10:03:07
139
转载 Spring官方文档翻译(7章)
三、核心技术这部分的文档覆盖了Spring完整的技术。在这些技术中最重要的要属Spring的控制反转(IoC)容器了,紧随其后的是全面覆盖的面向切面编程(AOP)技术。Spring有它自己的AOP框架,它很容易理解,而且成功解决了Java企业编程中80%的AOP需求。Spring也集成了AspectsJ(目前在Java领域使用最丰富最成熟的AOP实现 )。7. IoC容器8. 资源9. 数据检验、...
2018-03-26 09:27:38
324
转载 Spring官方文档翻译(1~6章)
Spring官方文档:http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/一、Spring框架概述Spring框架是一个轻量级的解决方案,可以一站式地构建企业级应用。Spring是模块化的...
2018-03-26 09:25:33
395
转载 mysql联合索引
mysql联合索引命名规则:表名_字段名1、需要加索引的字段,要在where条件中2、数据量少的字段不需要加索引3、如果where条件中是OR关系,加索引不起作用4、符合最左原则https://segmentfault.com/q/1010000003984016/a-1020000003984281联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中...
2018-03-26 09:08:41
163
转载 mysql联合索引
我一个表 students 表,有3个字段 ,id,name,age 我要查询 通过 name 和age,在这两个字段 是创建 联合索引?还是分别在name和age上创建 单列索引呢? 多个字段查询什么情况下用联合索引 什么时候分别创建单列索引呢?1,首先要确定优化的目标,在什么样的业务场景下,表的大小等等。如果表比较小的话,可能都不需要加索引。2,哪些字段可以建索引,一般都where、order...
2018-03-26 08:46:10
353
转载 Mysql索引会失效的几种情况分析
索引并不是时时都会生效的,比如以下几种情况,将导致索引失效:1.如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因) 注意:要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引2.对于多列索引,不是使用的第一部分(第一个),则不会使用索引3.like查询是以%开头4.如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引5.如果mys...
2018-03-26 08:32:43
304
转载 常见数据结构(二)-树(二叉树,红黑树,B树)
本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树写在前面本文所有图片均截图自coursera上普林斯顿的课程《Algorithms, Part I》中的Slides相关命题的证明可参考《算法(第4版)》源码可在官网下载,也可以在我的github仓库 algorithms-learning下载,已经使用maven构建仓库下载:git clone git@github.com:bri...
2018-03-15 17:22:54
173
转载 java数组详解
数组概念同一种类型数据的集合。其实数组就是一个容器。数组的好处可以自动给数组中的元素从0开始编号,方便操作这些元素。格式1:元素类型[] 数组名 = new 元素类型[元素个数或数组长度];示例:int[] arr = new int[5];格式2:元素类型[] 数组名 = new 元素类型[]{元素,元素,……};int[] arr = new int[]{3,5,1,7};int[] arr...
2018-03-15 09:17:38
167
转载 关于合理使用SpringMVC统一异常处理机制以改善代码风格的一些思考
问题背景:统一异常处理在WEB开发中可不是一个新颖的问题,然而,根据项目的实际情况,用的恰到好处,是可以在项目中省去大量冗余代码的。在以spring/springMVC做IOC容器的web项目中,常见的统一异常处理不外乎如下三种方式: springMVC处理异常的3种方式: (1) 使用Spring MVC提供的简单异常处理器SimpleMappin...
2018-03-14 11:26:32
120
转载 execution切入点表达式
Spring AOP 用户可能会经常使用 execution切入点指示符。执行表达式的格式如下:execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) ...
2018-03-13 09:56:57
597
转载 数据库:Mysql中“select ... for update”排他锁分析
用法: select … for update;例如:select * from goods where id = 1 for update;排他锁的申请前提:没有线程对该结果集中的任何行数据使用排他锁或共享锁,否则申请会阻塞。for update仅适用于InnoDB,且必须在事务块(BEGIN/COMMIT)中才能生效。在进行事务操作时,通过“for update”语句,MySQL会对查询结果集...
2018-02-09 14:01:57
176
转载 对mysql乐观锁、悲观锁、共享锁、排它锁、行锁、表锁概念的理解
实验环境:mysql5.6存储引擎:innoDB我们在操作数据库的时候,可能会由于并发问题而引起的数据的不一致性(数据冲突)乐观锁乐观锁不是数据库自带的,需要我们自己去实现。乐观锁是指操作数据库时(更新操作),想法很乐观,认为这次的操作不会导致冲突,在操作数据时,并不进行任何其他的特殊处理(也就是不加锁),而在进行更新后,再去判断是否有冲突了。通常实现是这样的:在表中的数据进行操作时(更新),先给...
2018-02-09 13:54:45
404
转载 spring中用到哪些设计模式
1.工厂模式,这个很明显,在各种BeanFactory以及ApplicationContext创建中都用到了;2.模版模式,这个也很明显,在各种BeanFactory以及ApplicationContext实现中也都用到了;3.代理模式,在Aop实现中用到了JDK的动态代理;4.单例模式,这个比如在创建bean的时候。5.Tomcat中有很多场景都使用到了外观模式,因为Tomcat
2018-02-07 20:03:08
844
转载 Java自旋锁
自旋锁的由来 计算机系统资源总是有限的,有些资源需要互斥访问,因此就有了锁机制,只有获得锁的线程才能访问资源。锁保证了每次只有一个线程可以访问资源。当线程申请一个已经被其他线程占用的锁,就会出现两种情况。一种是没有获得锁的线程会阻塞自己,等到锁被释放后再被唤起,这就是互斥锁;另一种是没有获得锁的线程一直循环在那里看是否该锁的保持者已经释放了锁,这就是自旋锁。自旋
2018-01-04 10:21:58
311
转载 JAVA CAS原理深度分析
看了一堆文章,终于把JAVA CAS的原理深入分析清楚了。感谢GOOGLE强大的搜索,借此挖苦下百度,依靠百度什么都学习不到! 参考文档:http://www.blogjava.net/xylz/archive/2010/07/04/325206.htmlhttp://blog.hesey.net/2011/09/resolve-aba-by-atomicstampedrefe
2018-01-04 10:16:14
408
转载 Spring Boot 动态数据源(多数据源自动切换)
本文实现案例场景: 某系统除了需要从自己的主要数据库上读取和管理数据外,还有一部分业务涉及到其他多个数据库,要求可以在任何方法上可以灵活指定具体要操作的数据库。为了在开发中以最简单的方法使用,本文基于注解和AOP的方法实现,在spring boot框架的项目中,添加本文实现的代码类后,只需要配置好数据源就可以直接通过注解使用,简单方便。一配置二使用 1. 启动类注册动态数据源
2018-01-03 16:53:45
497
MongoDB权威指南第2版
2018-08-03
算法 第4版-谢路云 Java描述-完整版.pdf
2018-03-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人