自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Hakey的博客

爱编程,爱事业,爱分享,爱交流,爱生活。

  • 博客(43)
  • 资源 (2)
  • 问答 (2)
  • 收藏
  • 关注

原创 Spring 事务管理 @Transactional 注解 , TransactionInterceptor 原理深度剖析

一、 @Transactional 注解解析方法入口:SpringTransactionAnnotationParser#parseTransactionAnnotation(java.lang.reflect.AnnotatedElement)下面看 parseTransactionAnnotation方法做了什么 :parseTransactionAnnotation 方法的作用是...

2018-11-16 15:09:08 2618

原创 带着问题看源码系列之mybatis:mybatis Interceptor 源码解析

Interceptor 接口声明 , 有三个方法Objectintercept(Invocation invocation)throws Throwable;Objectplugin(Object target);void setProperties(Properties properties);问题一: 我们的 Interceptor 是何时被注册到 ibatis 的, 注册到哪...

2019-08-24 23:38:59 294

转载 架构学习笔记--缓存-缓存穿透:缓存雪崩:缓存热点

什么是缓存穿透缓存没有生效,大量请求访问某一个key的数据 , 实际缓存中并不存在该key的缓存 , 然后都转而降级查询DB 去了,最终的结果是DB查询压力增大。 关键词:缓存未生效,导致DB压力骤增可能的发生场景某一个很偏僻的数据, 因为程序bug或者某种重试机制 , 或者某一活动突然请求查询该数据 , 使用了这种接口;操作有误 ,活动前提是需要先做一个操作产生数据然后...

2018-07-23 23:46:55 298

转载 (转)JMX之介绍和简单使用(一)

在InfoQ上有专门一系列文章来介绍监控系统的构建,聊聊监控(一):什么值得监控以及监控指标的取舍,如果想深入了解可以看一下。JMX的简介所谓JMX,是Java Management Extensions的缩写,从官方的文档上来看,他就是一个框架,和JPA、JMS是一样的,和我们平时使用的Spring、Hibernate也没有什么区别。就是通过将监控和管理涉及到的各个方面的问题和解决办...

2018-07-04 10:14:00 544

原创 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 5036

转载 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 1120

转载 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 283

转载 ReentrantLock可重入锁的原理及使用场景

摘要从使用场景的角度出发来介绍对ReentrantLock的使用,相对来说容易理解一些。场景1:如果已加锁,则不再重复加锁a、忽略重复加锁。 b、用在界面交互时点击执行较长时间请求操作时,防止多次点击导致后台重复执行(忽略重复触发)。以上两种情况多用于进行非重要任务防止重复执行,(如:清除无用临时文件,检查某些资源的可用性,数据备份操作等)if (lock.tryLock()) { //如果已经

2017-12-16 22:59:20 480

原创 使用Lamdba 表达式 从A集合中去除不存在于B集合的元素加入到C集合中(快速找出两个集合中不同的元素)

业务场景介绍前台通过导入excell批量对商品的等级进行调整(良品,残品)。 A列表,成功列表(初始化要导入的数据均为默认成功) B列表,通过A列表中的sku批量查询库存的查询结果列表 C列表,失败列表,不满足条件的元素会被加入到此列表中(C列表的数据来源于A列表)后端需要通过使用前端导入的excel的其他商品信息查询此sku(批量查询—>B列表) ,如果后端无此sku,则将此exc

2017-09-25 00:19:52 1823 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 594

原创 使用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 1200

转载 AspectJ(Spring切面)的Execution表达式

Aspectj切入点语法定义在使用spring框架配置AOP的时候,不管是通过XML配置文件还是注解的方式都需要定义pointcut"切入点"例如定义切入点表达式 execution (* com.sample.service.impl..*.*(..))execution()是最常用的切点函数,其语法如下所示: 整个表达式可以分为五个部分: . execution(): 表达式主体。 . 第一个

2017-08-28 17:25:05 647

原创 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 999

原创 Spring-Service-事务中线程异常执行事务回滚的方式

方式一: 使用Callable, 利用Callable的返回值判断是否需要进行事务回滚 ExecutorService service = Executors.newCachedThreadPool(); Future<Integer> submit = service.submit(new Callable<Integer>() { @Override

2017-08-15 14:48:09 5165 1

原创 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 419

原创 mysql 设计优化及性能调优

每个字段都有默认值,not null尽量使用int

2017-07-09 22:23:08 408

原创 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 341

原创 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 4806

原创 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 9216 4

原创 Java小记__抽象类和接口

抽象类: 没有足够的信息来描述这个类而需要其他类来支持他 , 这样的类为抽象类. 特点介绍:抽象类中可以有变量 , 可以有方法 .抽象的出发点是为了继承.(所以一般叶子节点是更具体的实现类)不能实例化抽象方法必须由子类来写有抽象方法就必须为抽象类可以不包含抽象方法子类的抽象方法不能与父类相同一个类不能既是抽象的又是final的一个方法不能既是抽象的又是private,static

2017-02-28 11:13:41 326

原创 JVM调试和优化(一)服务内存占用高然后CPU高最后宕机

JVM调试和优化(一)概述 事情发生的过程是这样的有一天突然收到亚马逊amazon的邮件说我的web服务cpu over max , memory 也over max 了 ,这一刻,我的内心是崩溃的 , 心里设想了一万种意外和不可能是程序问题的理由 . 事实是太天真了,不是程序问题才怪 . 临时处理方式是重启服务 ,毕竟内存和cpu使用率爆棚还是需要很长时间的 , 这段时间可以排查到底是因为什

2017-02-16 00:19:32 5364

原创 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 5476

原创 当前日期减去指定天数后 ,日期没有减少反而增加了

当前日期减去指定天数后 ,日期没有减少反而增加了这也许是一个很蠢的事情,之所以写下来是为了 铭记 这次蠢事 , 告诫自己以后细心一些 , 另一反面也抱着侥幸心理 , 觉得自己不是第一个干这种事情人 , 伟大点说是帮助后者解惑 , 自私些就是当你看到这篇博文是我也在”嘲笑”你和我一样 , 希望你也长点心. 事情的经过是这样的需求是提供一个API接口供合作方查询指定日期的订单情况 , 有一个起始日

2017-02-15 19:37:44 1847

原创 JSONArray 数组 在不转为对象的情况下取出 某个元素组成列表

欢迎来到小胡de博客 写之前百度搜索了一下 , 没有找到能够直接解决问题的代码 , 并非重复造轮子,。代码没有什么难度 , 小计一下。情景描述:用户向A服务器获取当前可参加/召开的会议列表。这些会议可以是自己预约的 , 自己的部门领导预约的 , 或者他人预约把自己列为参会人的 等等 , 强调的是预约的会议中有此用户。个人属于公司 , A服务器向B服务器获取会议列表获取的是全公司所有的会议列表。

2016-05-04 14:05:26 4035

原创 springmvc mybatis 声明式事务管理回滚失效,(checked回滚)捕捉异常,传输错误信息

一、知识点及问题后端框架: Spring 、Spring mvc 、mybatis业务需求: 客户端先从服务端获取用户大量信息到客户端,编辑完成之后统一Post至服务端,对于数据的修改要么全成功,要么全失败,所以需要使用事务支持。问题: 配置Spring声明式事务,执行中出现异常未回滚.从网上查询得到一开始是自己的配置出了问题,由于配置文件的加载顺序决定了容器的加载顺序导致Spring事务没有

2016-03-21 01:06:43 5418 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 1327

原创 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 2869

原创 Java_Web开发之绝对路径与相对路径(学习笔记)

一、转发:1.转发的目的是为了实现多个页面交互过程中的请求数据共享,即携带数据的转发,算一次请求,地址栏的地址是不会改变的,是服务器端做的事情,浏览器是被”蒙在鼓里”的.2.转发的实现// 当使用绝对路径时,‘/’代表的是web项目①ServletContext.getRequestDispatcher(String url)中的url只能使用绝对路径,因为ServletRequest具有相对路径的

2015-08-15 21:51:48 3316

原创 JavaWeb开发常见乱码处理之设置编码方式

request.setCharacterEncoding()是设置获得请求参数的编码方式,主要用于获取带有汉字的信息的正确提取以及后来的使用.response.setCharacterEncoding()是设置响应时的数据的编码方式response.setContentType()指定http响应的编码及浏览器显示的编码,mime类型一般设置为text/html 编码指定为charset=utf

2015-08-14 23:37:51 705

原创 Java_命名规范

基本命名规范本来要自己整理,时间紧急,先附上,以后再整2015\7\24 00:39包命名  包名按照域名的范围从大到小逐步列出,恰好和Internet上的域名命名规则相反。  由一组以“.”连接的标识符构成,通常第一个标识符为符合网络域名的两个或者三个英文小写字母。 People TestPage XMLExample类,接口命名  类的名字必须由大写字母开头而单词中的其他字母均为小写;如果

2015-07-24 00:40:22 729

原创 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 18392

原创 Java_ArrayList与List解析

List list=new ArrayList();与 ArrayList list=new ArrayList;首先将一下这两个的区别:存储内容的区别ArrayList 可以存储任何类型的项List<类型> 只可以存储指定类型的项使用是否方便List<>比ArrayList使用方便因为在使用ArrayList内部的值时,必须强制转换才行相信使用过ArrayList的都深有体会,因为存

2015-07-23 13:49:53 1627

原创 Java_流的操作规律(技巧)

流的操作规律1. 明确源和目的。数据源:就是需要读取,可以使用两个体系:InputStream、Reader;数据汇:就是需要写入,可以使用两个体系:OutputStream、Writer;2. 操作的数据是否是纯文本数据?如果是:数据源:Reader 数据汇:Writer 如果不是:数据源:InputStream 数据汇:OutputStream3. 虽然确定

2015-07-23 01:09:58 758

原创 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 393

原创 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 419

原创 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 488

原创 JAVA基础_Java 学习之 异常

异常:就是不正常。程序在运行时出现的不正常情况。其实就是程序中出现的问题。这个问题按照面向对象思想进行描述,并封装成了对象。因为问题的产生有产生的原因、有问题的名称、有问题的描述等多个属性信息存在。当出现多属性信息最方便的方式就是将这些信息进行封装。异常就是java按照面向对象的思想将问题进行对象封装。这样就方便于操作问题以及处

2015-07-19 18:21:44 451

原创 JAVA基础_Java反射

反射技术:其实就是动态加载一个指定的类,并获取该类中的所有的内容。而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员。简单说:反射技术可以对一个类进行解剖。反射的好处:大大的增强了程序的扩展性。反射的基本步骤: 1、获得Class对象,就是获取到指定的名称的字节码文件对象。 2、实例化对象,获得类的属性、方法或构造函数。 3、访问属性、调用方法、调用构造函数创

2015-07-19 17:54:30 506

原创 JAVA基础_多线程、锁

多线程:进程:正在进行中的程序。其实进程就是一个应用程序运行时的内存分配空间。 线程:其实就是进程中一个程序执行控制单元,一条执行路径。进程负责的是应用程序的空间的标示。线程负责的是应用程序的执行顺序。一个进程至少有一个线程在运行,当一个进程中出现多个线程时,就称这个应用程序是多线程应用程序,每个线程在栈区中都有自己的执行空间,自己

2015-07-19 17:22:19 410

原创 JAVA基础_Java面向对象三大特征

封装(面向对象特征之一)首先,属性可用来描述同一类事物的特征,方法可描述一类事物可做的操作。封装就是把属于同一类事物的共性(包括属性与方法)归到一个类中,以方便使用。 1.概念:封装也称为信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的

2015-07-19 17:05:22 607

hakey_poi导入excel示例文件.xlsx

poi导入excel示例文件.xlsx

2016-10-20

poi导入excel示例文件.xlsx

poi导入excel示例文件.xlsx

2016-10-20

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

TA关注的人

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