- 博客(44)
- 资源 (2)
- 问答 (2)
- 收藏
- 关注

原创 Spring 事务管理 @Transactional 注解 , TransactionInterceptor 原理深度剖析
一、 @Transactional 注解解析方法入口:SpringTransactionAnnotationParser#parseTransactionAnnotation(java.lang.reflect.AnnotatedElement)下面看 parseTransactionAnnotation方法做了什么 :parseTransactionAnnotation 方法的作用是...
2018-11-16 15:09:08
2789
原创 带着问题看源码系列之mybatis:mybatis Interceptor 源码解析
Interceptor 接口声明 , 有三个方法Objectintercept(Invocation invocation)throws Throwable;Objectplugin(Object target);void setProperties(Properties properties);问题一: 我们的 Interceptor 是何时被注册到 ibatis 的, 注册到哪...
2019-08-24 23:38:59
360
1
转载 架构学习笔记--缓存-缓存穿透:缓存雪崩:缓存热点
什么是缓存穿透缓存没有生效,大量请求访问某一个key的数据 , 实际缓存中并不存在该key的缓存 , 然后都转而降级查询DB 去了,最终的结果是DB查询压力增大。 关键词:缓存未生效,导致DB压力骤增可能的发生场景某一个很偏僻的数据, 因为程序bug或者某种重试机制 , 或者某一活动突然请求查询该数据 , 使用了这种接口;操作有误 ,活动前提是需要先做一个操作产生数据然后...
2018-07-23 23:46:55
351
转载 (转)JMX之介绍和简单使用(一)
在InfoQ上有专门一系列文章来介绍监控系统的构建,聊聊监控(一):什么值得监控以及监控指标的取舍,如果想深入了解可以看一下。JMX的简介所谓JMX,是Java Management Extensions的缩写,从官方的文档上来看,他就是一个框架,和JPA、JMS是一样的,和我们平时使用的Spring、Hibernate也没有什么区别。就是通过将监控和管理涉及到的各个方面的问题和解决办...
2018-07-04 10:14:00
632
原创 chrome ,fireFox,IE 屏蔽默认F1 帮助功能,执行自定义操作
/*IE*/window.onhelp = function () { return false }; document.onkeydown=function (event) { var key=event.keyCode; if(key==112) { event.preventDefault(); al...
2018-05-31 10:50:32
5454
转载 Lodop常用属性和方法字典(转)
只是保存 , 方便查询 ,原创地址,点击这里 例子: LODOP.PRINT_INIT(“打印任务名”); LODOP.SET_PRINT_COPIES(2); bdhtml=window.document.body.innerHTML; var hei = $(‘#div1’).outerHeight(); string = prnhtml; LODOP.SET_PRINT_PAG...
2018-03-05 18:27:17
1237
转载 log4j2.xml 配置
1. 关于配置文件的名称以及在项目中的存放位置log4j 2.x版本不再支持像1.x中的.properties后缀的文件配置方式,2.x版本配置文件后缀名只能为”.xml”,”.json”或者”.jsn”. 系统选择配置文件的优先级(从先到后)如下: (1).classpath下的名为log4j2-test.json 或者log4j2-test.jsn的文件. (2).class
2017-12-18 22:48:27
350
转载 ReentrantLock可重入锁的原理及使用场景
摘要从使用场景的角度出发来介绍对ReentrantLock的使用,相对来说容易理解一些。场景1:如果已加锁,则不再重复加锁a、忽略重复加锁。 b、用在界面交互时点击执行较长时间请求操作时,防止多次点击导致后台重复执行(忽略重复触发)。以上两种情况多用于进行非重要任务防止重复执行,(如:清除无用临时文件,检查某些资源的可用性,数据备份操作等)if (lock.tryLock()) { //如果已经
2017-12-16 22:59:20
544
原创 使用Lamdba 表达式 从A集合中去除不存在于B集合的元素加入到C集合中(快速找出两个集合中不同的元素)
业务场景介绍前台通过导入excell批量对商品的等级进行调整(良品,残品)。 A列表,成功列表(初始化要导入的数据均为默认成功) B列表,通过A列表中的sku批量查询库存的查询结果列表 C列表,失败列表,不满足条件的元素会被加入到此列表中(C列表的数据来源于A列表)后端需要通过使用前端导入的excel的其他商品信息查询此sku(批量查询—>B列表) ,如果后端无此sku,则将此exc
2017-09-25 00:19:52
1944
1
转载 MySQL 百万级分页优化(Mysql千万级快速分页)
以下分享一点我的经验 一般刚开始学SQL的时候,会这样写SELECT * FROM table ORDER BY id LIMIT 1000, 10; 但在数据达到百万级的时候,这样写会慢死 SELECT * FROM table ORDER BY id LIMIT 1000000, 10; 也许耗费几十秒 网上很多优化的方法是这样的 SELECT * FROM table WHERE id >=
2017-09-06 20:14:47
648
原创 使用frame 进行文件下载 ; ajax 服务端返回下载链接进行文件下载
页面代码:<iframe id="downloadFile" src=""></iframe>js代码: $("#export").on('click',function(){ var downloadFile= $("#downloadFile"); $.ajax({ type: "post", url: "http:
2017-09-06 19:48:59
1272
转载 AspectJ(Spring切面)的Execution表达式
Aspectj切入点语法定义在使用spring框架配置AOP的时候,不管是通过XML配置文件还是注解的方式都需要定义pointcut"切入点"例如定义切入点表达式 execution (* com.sample.service.impl..*.*(..))execution()是最常用的切点函数,其语法如下所示: 整个表达式可以分为五个部分: . execution(): 表达式主体。 . 第一个
2017-08-28 17:25:05
776
原创 Java-多个多线程求和例子以及各种方式的执行效率对比
一、使用Synchronized 同步代码块 ;package thread.worker;import org.junit.Test;import java.util.concurrent.atomic.AtomicInteger;/** * Created by hl on 2017/8/17. */public class CountWorker { private int un
2017-08-21 18:03:11
1077
原创 Spring-Service-事务中线程异常执行事务回滚的方式
方式一: 使用Callable, 利用Callable的返回值判断是否需要进行事务回滚 ExecutorService service = Executors.newCachedThreadPool(); Future<Integer> submit = service.submit(new Callable<Integer>() { @Override
2017-08-15 14:48:09
5262
原创 SpringMvc之HandlerExceptionResolver
故事先从SpringMvc的dispatcherServlert开始1.执行onRefresh时调用initStrategiesprotected void onRefresh(ApplicationContext context) { this.initStrategies(context); }2.执行initStrategies protected void initS
2017-08-14 21:28:50
470
原创 Java-死磕算法-排序-冒泡排序
冒泡排序的思想是比较相邻的两个元素,将大的数据置换到右边,一直换到不能再换为止。public void sort(int [] a){ int temp=0; for(int i = a.length-1; i>0 ; –i){ for(int j = 0 ; j
2017-06-08 23:02:09
386
原创 redis:Unable to validate object ;Could not get a resource from the pool;(error) MISCONF Redis is con
原因: 强制关闭Redis快照导致不能持久化。解决方式: 登录redis :redis-cli 127.0.0.1:6379>config set stop-writes-on-bgsave-error no ok解决 !参考文章:http://www.cnblogs.com/softidea/archive/2016/08/09/5754550.htmlhttp://www.cnblogs
2017-05-27 13:09:11
4947
原创 BootStrap的validate表单验证使用
第一步: 引入js<% String contextPath = request.getContextPath();%><script src="<%=contextPath%>/static/js/bootstrap/bootstrapValidator.js"></script>第二步: 页面中使用<script type="text/javascript" language="Ja
2017-04-03 23:24:30
9430
原创 Java小记__抽象类和接口
抽象类: 没有足够的信息来描述这个类而需要其他类来支持他 , 这样的类为抽象类. 特点介绍:抽象类中可以有变量 , 可以有方法 .抽象的出发点是为了继承.(所以一般叶子节点是更具体的实现类)不能实例化抽象方法必须由子类来写有抽象方法就必须为抽象类可以不包含抽象方法子类的抽象方法不能与父类相同一个类不能既是抽象的又是final的一个方法不能既是抽象的又是private,static
2017-02-28 11:13:41
372
原创 JVM调试和优化(一)服务内存占用高然后CPU高最后宕机
JVM调试和优化(一)概述 事情发生的过程是这样的有一天突然收到亚马逊amazon的邮件说我的web服务cpu over max , memory 也over max 了 ,这一刻,我的内心是崩溃的 , 心里设想了一万种意外和不可能是程序问题的理由 . 事实是太天真了,不是程序问题才怪 . 临时处理方式是重启服务 ,毕竟内存和cpu使用率爆棚还是需要很长时间的 , 这段时间可以排查到底是因为什
2017-02-16 00:19:32
5456
原创 classpath是什么,classpath用来做什么
classpath用来做什么What’s a CLASSPATH ?This environment variable is used by the operating system to find library classes. Java uses these at compile time to locate the *.class files.是一个环境变量被操作系统用于寻找class类库
2017-02-15 23:28:42
5654
原创 当前日期减去指定天数后 ,日期没有减少反而增加了
当前日期减去指定天数后 ,日期没有减少反而增加了这也许是一个很蠢的事情,之所以写下来是为了 铭记 这次蠢事 , 告诫自己以后细心一些 , 另一反面也抱着侥幸心理 , 觉得自己不是第一个干这种事情人 , 伟大点说是帮助后者解惑 , 自私些就是当你看到这篇博文是我也在”嘲笑”你和我一样 , 希望你也长点心. 事情的经过是这样的需求是提供一个API接口供合作方查询指定日期的订单情况 , 有一个起始日
2017-02-15 19:37:44
1963
原创 JSONArray 数组 在不转为对象的情况下取出 某个元素组成列表
欢迎来到小胡de博客 写之前百度搜索了一下 , 没有找到能够直接解决问题的代码 , 并非重复造轮子,。代码没有什么难度 , 小计一下。情景描述:用户向A服务器获取当前可参加/召开的会议列表。这些会议可以是自己预约的 , 自己的部门领导预约的 , 或者他人预约把自己列为参会人的 等等 , 强调的是预约的会议中有此用户。个人属于公司 , A服务器向B服务器获取会议列表获取的是全公司所有的会议列表。
2016-05-04 14:05:26
4123
原创 springmvc mybatis 声明式事务管理回滚失效,(checked回滚)捕捉异常,传输错误信息
一、知识点及问题后端框架: Spring 、Spring mvc 、mybatis业务需求: 客户端先从服务端获取用户大量信息到客户端,编辑完成之后统一Post至服务端,对于数据的修改要么全成功,要么全失败,所以需要使用事务支持。问题: 配置Spring声明式事务,执行中出现异常未回滚.从网上查询得到一开始是自己的配置出了问题,由于配置文件的加载顺序决定了容器的加载顺序导致Spring事务没有
2016-03-21 01:06:43
5526
2
原创 Mybatis分页配置,jar配比 myeclipse 配置mybatis分页插件启动不起来且不报错 和 超时之后会报java heap space
1.场景描述:后台管理系统2.需求:对查询结果分页展示3.使用框架:mybatis ,Spring,Springmvc问题描述:在以tomcat启动项目时卡在2013-11-10 10:36:43,963 [pool-2-thread-1] INFO com.mchange.v2.log.MLog - MLog clients using log4j logging.2013-11-10 10:3
2016-01-17 00:30:34
1378
原创 Java学习笔记_反射_Class.forName()加载并修改一个类的私有成员变量
我相信实例比文字更能说明问题Demo1,被加载的类package com.text.hl;public class Demo1 { private int hl; }在这里我用junit单元测试测试的,去方法中加载Demo1类获得其私有成员变量并改变其值为指定的值,这里为200.大家也可以将此方法写在自己定义的类的Main方法中执行.依个人习惯和喜好而定.@Test publi
2015-08-31 00:50:37
2940
原创 Java_Web开发之绝对路径与相对路径(学习笔记)
一、转发:1.转发的目的是为了实现多个页面交互过程中的请求数据共享,即携带数据的转发,算一次请求,地址栏的地址是不会改变的,是服务器端做的事情,浏览器是被”蒙在鼓里”的.2.转发的实现// 当使用绝对路径时,‘/’代表的是web项目①ServletContext.getRequestDispatcher(String url)中的url只能使用绝对路径,因为ServletRequest具有相对路径的
2015-08-15 21:51:48
3376
原创 JavaWeb开发常见乱码处理之设置编码方式
request.setCharacterEncoding()是设置获得请求参数的编码方式,主要用于获取带有汉字的信息的正确提取以及后来的使用.response.setCharacterEncoding()是设置响应时的数据的编码方式response.setContentType()指定http响应的编码及浏览器显示的编码,mime类型一般设置为text/html 编码指定为charset=utf
2015-08-14 23:37:51
759
原创 Java_命名规范
基本命名规范本来要自己整理,时间紧急,先附上,以后再整2015\7\24 00:39包命名 包名按照域名的范围从大到小逐步列出,恰好和Internet上的域名命名规则相反。 由一组以“.”连接的标识符构成,通常第一个标识符为符合网络域名的两个或者三个英文小写字母。 People TestPage XMLExample类,接口命名 类的名字必须由大写字母开头而单词中的其他字母均为小写;如果
2015-07-24 00:40:22
782
原创 JAVA_ 网络编程,写一个可以上传文件的服务器和客户端
服务端class Server { public static void main(String[] args) throws Exception { //建立服务端Socket ServerSocket ss = new ServerSocket(10005); //接收客户端Socket Socket f
2015-07-23 22:48:41
19306
原创 Java_ArrayList与List解析
List list=new ArrayList();与 ArrayList list=new ArrayList;首先将一下这两个的区别:存储内容的区别ArrayList 可以存储任何类型的项List<类型> 只可以存储指定类型的项使用是否方便List<>比ArrayList使用方便因为在使用ArrayList内部的值时,必须强制转换才行相信使用过ArrayList的都深有体会,因为存
2015-07-23 13:49:53
1694
原创 Java_流的操作规律(技巧)
流的操作规律1. 明确源和目的。数据源:就是需要读取,可以使用两个体系:InputStream、Reader;数据汇:就是需要写入,可以使用两个体系:OutputStream、Writer;2. 操作的数据是否是纯文本数据?如果是:数据源:Reader 数据汇:Writer 如果不是:数据源:InputStream 数据汇:OutputStream3. 虽然确定
2015-07-23 01:09:58
828
原创 JAVA基础_Java网络编程
网络编程端口:物理端口:就是路由的接口,可插线、看得到、摸得到逻辑端口:用于标识进程的逻辑地址,不同进程的标识;有效端口:0~65535,其中0~1024系统使用或保留端口。 java 中ip对象:InetAddress.import java.net.*;class IPDemo{ public static void main(String[] args) throws Unk
2015-07-20 00:49:52
441
原创 JAVA基础__eclipse常用快捷键
【Ctrl+Shift+O】 快速导包,快速导入开发所需的包【Alt+Shift+S】 选择Generate Getters and Setters可以快速生成Bean中的Getter和Setter 方法,以及Generate Constructor Using Filed 用已定义的变量快速生成带参数或
2015-07-19 22:50:01
466
原创 JAVA基础_Date,Calender应用
java.util.Date:日期类,月份从0-11; 在JDK 1.1后,java.util.Date 类型的大多数方法已经不推荐使用了。代替它的是Calendar。而在java.sql.Date 和 java.util.Date之间,有些微妙的关系。如何将Date类型插入数据库中,成为好多人的一个不小的障碍。我们将
2015-07-19 21:56:36
534
原创 JAVA基础_Java 学习之 异常
异常:就是不正常。程序在运行时出现的不正常情况。其实就是程序中出现的问题。这个问题按照面向对象思想进行描述,并封装成了对象。因为问题的产生有产生的原因、有问题的名称、有问题的描述等多个属性信息存在。当出现多属性信息最方便的方式就是将这些信息进行封装。异常就是java按照面向对象的思想将问题进行对象封装。这样就方便于操作问题以及处
2015-07-19 18:21:44
542
原创 JAVA基础_Java反射
反射技术:其实就是动态加载一个指定的类,并获取该类中的所有的内容。而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员。简单说:反射技术可以对一个类进行解剖。反射的好处:大大的增强了程序的扩展性。反射的基本步骤: 1、获得Class对象,就是获取到指定的名称的字节码文件对象。 2、实例化对象,获得类的属性、方法或构造函数。 3、访问属性、调用方法、调用构造函数创
2015-07-19 17:54:30
561
原创 JAVA基础_多线程、锁
多线程:进程:正在进行中的程序。其实进程就是一个应用程序运行时的内存分配空间。 线程:其实就是进程中一个程序执行控制单元,一条执行路径。进程负责的是应用程序的空间的标示。线程负责的是应用程序的执行顺序。一个进程至少有一个线程在运行,当一个进程中出现多个线程时,就称这个应用程序是多线程应用程序,每个线程在栈区中都有自己的执行空间,自己
2015-07-19 17:22:19
453
一个线程中多次使用共享变量,每一次使用都是从主存获取的吗?
2017-08-21
多线程静态变量累加求和 , 计算结果是对的,但是不明白为什么是对的.
2017-08-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人