- 博客(34)
- 收藏
- 关注
原创 AOP切入同类调用方法不起作用,AopContext.currentProxy()帮帮你解决
今天翻看公司之前代码时,无意中看到了如下一段代码:(UserService)AopContext.currentProxy()).getWechatInfo() 心里在想,好好的方法为啥不通过this.getWechatInfo()调用,而是通过AopContext.currentProxy()这个aop方式调用,于是乎一顿查找,并了解到:当在Service中定义了一个方法并且...
2019-01-11 17:01:45
9633
5
原创 Spring事务传播机制
Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播,即协调已经有事务标识的方法之间的发生调用时的事务上下文的规则(是否要有独立的事务隔离级别和锁)概述 当我们调用一个基于Spring的Service接口方法(如UserService#addUser())时...
2018-12-18 15:18:23
1188
转载 java多线程 ThreadPoolExecutor 策略及坑
无论是使用jdk的线程池ThreadPoolExecutor 还是spring的线程池ThreadPoolTaskExecutor 都会使用到一个阻塞队列来进行存储线程任务。 当线程不够用时,则将后续的任务暂存到 阻塞队列中,等待有空闲线程来进行。 当这个阻塞队列满了的时候,会出现两种情况 正在运行的线程数量小于 maximumPoolSize,那么还是要创建线程运行这个任务...
2018-10-12 17:35:50
1196
2
转载 Java线程安全之volatile关键字
一、前言我们知道在多线程的场景下,线程安全是必须要着重考虑的。Java语言包含两种内在的同步机制:同步块(synchronize关键字)和 volatile 变量。但是其中 Volatile 变量虽然使用简单,有时候开销也比较低,但是同时它的同步性较差,而且其使用也更容易出错。下面我们先使用一个例子来展示下volatile有可能出现线程不安全的情况:public class ShareD...
2018-07-12 19:06:10
214
原创 Jackson异常情况处理
1、空值转换-异常情况: Can not instantiate value of type [map type; class java.util.HashMap, [simple type, class java.lang.String] -> [simple type, class java.lang.String]] from JSON String; no singl
2017-04-11 18:07:05
1358
原创 Linux vmstat命令实战详解
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。
2017-04-11 18:07:02
224
原创 java中HashSet的去重以及容量扩增原理
首先需要明白java中HastSet实际上是用散列表实现的,散列表的大小默认大小为16(也叫散列表元的数量),加载因子为0,75(下面会解释什么是加载因子)。 去重原理:当hashset add一个元素A的时候,首先获取这个元素的散列码(hashcode方法),假设散列码为400,然后将散列码对散列表元的数量取模,400%16=0; 0表示第一个元素,然后将元素
2017-04-11 18:06:57
1104
原创 深度优先和广度优先遍历及其 Java 实现
图的遍历,所谓遍历,即是对结点的访问。一个图有那么多个结点,如何遍历这些结点,需要特定策略,一般有两种访问策略: 深度优先遍历 广度优先遍历 深度优先 深度优先遍历,从初始访问结点出发,我们知道初始访问结点可能有多个邻接结点,深度优先遍历的策略就是首先访问第一个邻接结点,然后再以这个被访问的邻接结点作为初始结点,访问它的第一个邻接结点。总结起来可以这样说:每次都在访问完当前结
2017-04-11 18:06:53
259
原创 jstat的使用方法 -- 分析JVM的使用情况
JDK自带VM分析工具jps,jstat,jmap,jconsole 关键字: jdk自带vm分析工具jps,jstat,jmap,jconsole 一、概述 SUN 的JDK中的几个工具,非常好用。秉承着有免费,不用商用的原则。以下简单介绍一下这几种工具。(注:本文章下的所有工具都存在JDK5.0以上版本的工具集里,同javac一样,不须特意安装) 。
2017-04-11 18:06:45
276
原创 VMware Workstation cannot connect to the virtual
1: 遇到的问题:打开虚拟机(VMware Workstation)时报如下提示: VMware Workstation cannot connect to the virtual machine. Make sure you have rights to run the program, access all directories t
2017-04-11 18:06:40
320
原创 压力测试工具jmeter的使用
1.使用绿色版,双击jmeter.bat启动,如图: 2.启动界面 3.添加线程组: 4.添加http请求默认值 添加完成如下图: 5.添加http请求,如下图: 6.添加数据源(我们采用CSV Data Set Config) 数据源如下图所示: 内容:(每一列与上面的别名对应) 7.下面就可以添加查看结果的方式了(添加“聚合报告
2017-04-11 18:06:36
244
原创 Java中Properties类的使用
一、Java Properties类 Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支 持的配置文件,配置文件中很多变量是经常改变的,这样做也是为了方便用户,让用户能够脱离程序本身去修改相关的变量设置。像Python支持的配置文件 是.ini文件,同样,它也有自己读取配置文件的类ConfigParse
2017-04-11 18:06:31
636
原创 js脚本 处理js注入
function checkData(v) { var entry = { "'": "'", '"': '"', '': '>' }; v = v.replace(/(['")-><&\\\/\.])/g, function ($0) { return entry[$0] || $0; }); return v;
2017-04-11 18:06:27
1522
原创 大数据之数据库mysql优化实战之索引的使用
大家带着问题,去看下面的段落 索引在什么情况下使用 如何使用索引 索引在什么情况下使用 以下是不使用索引的情况 表行数少,使用查询次数少,update少 RESET QUERY CACHE; **#未创建索引:时间:0.227s/1W条 , 0.331s/5W条,0.516s/10W**#SELECT max(ObuID)
2017-04-11 18:06:22
189
原创 数据库优化方案
1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库. 备注、描述、评论之类的
2017-04-11 18:06:18
164
原创 java synchronized详解
Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 二、然而,当一个线程访问object的一个synchroni
2017-04-11 18:06:08
204
原创 事务
javaweb学习总结(三十八)——事务 一、事务的概念 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。 例如:A——B转帐,对应于如下两条sql语句 update from account set money=money+100 where name='B'; update from account set mone
2017-04-11 18:06:04
209
原创 微信公众号开发,代码自定义菜单
package com.wzqj.wsp.util;import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject;import com.google.common.cache.Cache;import com.google.common.cache.CacheBuilder;import com
2017-04-11 18:06:00
347
原创 idea提示忽略大小写
Editor=>Code Completion里把Case sensitive completion设置为None 输入:sensitive 将右侧的 case sensitive completion 修改为NONE
2017-04-11 18:05:57
495
原创 idea问题(maven忽略版本)
-Dmaven.multiModuleProjectDirectory system properties is not set.check $M2_HOME environment variable and mvn script match 解决办法:(IDEA 14)File->setting->Build,Exe…->Build Tools->Maven->Runner->设置VM O
2017-04-11 18:05:53
1398
原创 java的IO性能调整
Java语言采取两种截然不同的磁盘文件结构。一个是基于字节流,另一个是字符序列。在Java语言中一个字符有两个字节表示,而不是像通常的语言如c语言那样是一个字节。因此,从一个文件读取字符时需要进行转换。这个不同在某些情况下是很重要的,就像下面的几个例子将要展示的那样。 低级I/O相关的问题: 缓冲 读写文本文件 格式化的代价 随机访问 高级I/O问题 压缩
2017-04-11 18:05:49
1249
原创 Java反射 getFields()和getDeclaredFields()的区别
getFields()获得某个类的所有的公共(public)的字段,包括父类。 getDeclaredFields()获得某个类的所有申明的字段,即包括public、private和proteced,但是不包括父类的申明字段。 同样类似的还有getConstructors()和getDeclaredConstructors(),getMethods()和getDeclaredMet
2017-04-11 18:05:41
193
原创 java类的生命周期
首先来了解一下jvm(java虚拟机)中的几个比较重要的内存区域,这几个区域在java类的生命周期中扮演着比较重要的角色: 方法区:在java的虚拟机中有一块专门用来存放已经加载的类信息、常量、静态变量以及方法代码的内存区域,叫做方法区。 常量池:常量池是方法区的一部分,主要用来存放常量和类中的符号引用等信息。 堆区:用于存放类的对象实例。 栈区:也叫java虚拟机栈,是由一个
2017-04-11 18:05:36
166
原创 提交中文数据乱码问题总结
1、如果提交方式为post,想不乱码,只需要在服务器端设置request对象的编码即可,客户端以哪种编码提交的,服务器端的request对象就以对应的编码接收,比如客户端是以UTF-8编码提交的,那么服务器端request对象就以UTF-8编码接收(request.setCharacterEncoding("UTF-8")) 2、如果提交方式为get,设置request对象的编码是无效的,r
2017-04-11 18:05:26
213
原创 java web项目启动加载顺序
web.xml加载过程(步骤): 1.启动WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: 和 2.紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文. 3.容器将转化为键值对,并交给ServletContext. 4.容器创建中的类实例,即创建监听. 5.在监听中会有c
2017-04-11 18:05:22
289
原创 MySql四种存储引擎
前言 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySql的核心就是存储引擎。 存储引擎查看 MySQL给开发者提供了查询存储引擎的功能,我这里使用的是MySQL5.
2017-04-11 18:05:17
182
原创 MyBatis通用Mapper3
MyBatis通用Mapper3 极其方便的使用MyBatis单表的增删改查 3.3.3 - 2015-12-30 解决OGNL中的and,or大写导致的错误 解决SpecialProvider不支持insertable的bug#77 解决JDK6,7无法获取字段泛型类型的问题。 提供一个Spring Boot集成的示例: https://github.com/abel
2017-04-11 18:05:13
2726
原创 xml中Integer判空
一:问题的由来 业务需求在设置最小数量(minCount)时用到了Integer类型,发现设置为0时不能入库 二:解决问题过程 直接在*Mapper.xml中找到对应minCount判断语句 原写法如下: minCount != ''>,min_count = #{minCount} 三:解决方法 去掉and minCount != '' >,min_count = #{minCo
2017-04-11 18:05:08
1019
原创 比较全的pom.xml maven依赖
自行搜索地址:http://mvnrepository.com/tags/maven xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.
2017-04-11 18:05:05
1027
原创 mysql存储过程语法及实例
MySQL 存储过程是从 MySQL 5.0 开始增加的新功能。存储过程的优点有一箩筐。不过最主要的还是执行效率和SQL 代码封装。特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库时(例如 PHP),要组织很多 SQL 语句。特别是业务逻辑复杂的时候,一大堆的 SQL 和条件夹杂在 PHP 代码中,让人不寒而栗。现在有了 MySQL 存储过程,业务逻辑可以封装存储过程中,这样不
2017-04-11 18:05:00
303
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人