
JAVA SE
ahua186186
这个作者很懒,什么都没留下…
展开
-
shiro落地的设计复杂度(最后总结)
经过1周的源码研究,终于对shiro的原理有了深刻的理解,基于原理我们识别出生产环境落地这个技术的设计复杂度shiro落地的设计复杂度:(1)自定义CachingSessionDAO,这是核心,因为它存储了session,Principals,AuthenticationState等所有可以持久化的数据。(2)sessionid无状态化设计:我们就可以通过继承DefaultWe...原创 2018-06-19 17:22:30 · 408 阅读 · 0 评论 -
IDEA14+JREBEL+TOMCAT成功
1. idea安装和jrebel破解:JRebel是一款JAVA虚拟机插件,它使得JAVA程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。JRebel使你能即时分别看到代码、类和资源的变化,你可以一个个地上传而不是一次性全部部署。 Intellij JRebel安装、破解 1.下载文章底部的附件,包含官方插件zip文件以及破解需要的zip文件。 2....原创 2015-08-25 23:19:40 · 171 阅读 · 0 评论 -
GAEA-58服务端初始化生成的服务“动态代理类”和“代理工厂类”
以服务实现类NewsService为例:思考:不明白作者为什么要这样生成服务代理类,根据服务名用反射获取服务实例不行吗?性能貌似也不低啊。 还是说为了热部署才这么做的,我能想到的只有这么个需求才会这么做。ProxyFactoryCreater类动态生成的代码:[code="java"]//动态代理工厂类public class ProxyFac...原创 2015-08-17 15:26:49 · 302 阅读 · 0 评论 -
oceanus-58总体框架理解
1.总体思路:通过约定的XML规则(分表分库规则)和 封装jdbc的Connection和PreparedStatement来实现SQL解析,sql路由和sql重写。2. 3个核心类:ConnectionWrapper(JDBC Connection包装),PreparedStatementWrapper( JDBC PreparedStatement包装),SimpleExecut...原创 2015-08-12 18:30:12 · 356 阅读 · 0 评论 -
MySQL分库分表环境下全局ID生成方案
1.最简单的方案就是UUID.2.flicker的方案:(一种极为优秀的主键生成策略)http://my.oschina.net/u/142836/blog/1744653.最常用的是:twitter的snowflake方案以及它的变种,拼方案的话这个完胜。...原创 2015-08-12 17:17:17 · 157 阅读 · 0 评论 -
Permission Denied(publickey) 解决
1.生成公钥和私钥放到C:\Users\itservice\.ssh,并在oschina添加公钥http://blog.crazyphper.com/?p=34722.添加本地仓库到远程仓库:http://blog.youkuaiyun.com/xdonx/article/details/88603101. git init2. git add .3. git commit...原创 2016-07-14 19:18:28 · 698 阅读 · 0 评论 -
HTML5
http://echarts.baidu.com/doc/example.html原创 2014-09-19 17:35:09 · 83 阅读 · 0 评论 -
Guava学习目录
转自:http://www.cnblogs.com/peida/p/3229259.html1.Guava学习笔记:Google Guava 类库简介 2.Guava学习笔记:Optional优雅的使用null 3.Guava学习笔记:Preconditions优雅的检验参数 4.Guava学习笔记:复写的Object常用方法 5.Guava学习笔记...原创 2014-09-18 17:44:24 · 129 阅读 · 0 评论 -
通过MQ进行A和B之间的双向通信
现在有两台机器A和B,分别安装了MQ6.0,我要通过MQ进行A和B之间的双向通信。我打算分两步,第一步:实现A到B的数据传输。在A上:1、创建队列管理器 QM_1001。2、创建本地队列 LQ_10013、创建传输队列 XQ_10014、创建远程队列 RQ_10025、创建发送方通道 1001.1002在B上:1、创建队列管理器 QM_10022、创建本地队...原创 2015-04-03 18:34:20 · 1172 阅读 · 0 评论 -
整合apache和tomcat构建Web服务器
http://wenzhongxiang.blog.51cto.com/6370734/1285892http://blog.youkuaiyun.com/lifetragedy/article/details/7698555原创 2014-08-29 18:23:17 · 122 阅读 · 0 评论 -
netty学习
最近购买啦李林锋的Netty 权威指南,学习学习。使用Netty代理你的请求:http://www.importnew.com/7496.html《Netty代码分析》 by 阿里中间件团队博客: http://jm-blog.aliapp.com/?p=423《netty从入门到精通》: http://cqupt123.iteye.com/blog/1682657...原创 2014-08-28 18:00:53 · 106 阅读 · 0 评论 -
Java 7 Concurrency Cookbook(定制并发类) 翻译地址
Java 7 并发编程指南中文版http://ifeve.com/java-7-concurrency-cookbook/#more-6051原创 2014-08-28 12:43:14 · 166 阅读 · 0 评论 -
总结--线程池拒绝策略+线程中断处理+多线程并发任务处理
线程池的拒绝策略,是指当任务添加到线程池中被拒绝,而采取的处理措施。当任务添加到线程池中之所以被拒绝,可能是由于:第一,线程池异常关闭。第二,任务数量超过线程池的最大限制。线程池共包括4种拒绝策略,它们分别是:AbortPolicy, CallerRunsPolicy, DiscardOldestPolicy和DiscardPolicy。AbortPolicy ...原创 2014-08-27 12:28:35 · 587 阅读 · 0 评论 -
解决linux下tif转jpg找不到com.sun.image.codec.jpeg.JPEGImageEncoder
1.今天搞一个下午UAT环境,tif转jpg的问题,换JBOSS tomcat,检查代码测试都没有问题,但是一放到UAT就有问题,后来无意中看下JDK版本,靠,测试人员用的是OPENJDK,换成sun的JDK后图片转换正常。...原创 2014-08-20 20:16:00 · 289 阅读 · 0 评论 -
根据开始时间和结束时间返回时间段内的时间集合
[code="java"]/** * 根据开始时间和结束时间返回时间段内的时间集合 * @param beginDate * @param endDate * @return List */ @SuppressWarnings("unchecked") public static List getDatesBetweenTwoDate(Date beg...原创 2014-08-18 18:04:15 · 628 阅读 · 0 评论 -
解决生产环境quartz 部分定时任务没有启动的问题
1.最近生产环境问题比较多,服务端连接池,接口包连接池各种泄露,监控报警,并且quartz 部分定时任务最近也出现问题:问题描述:部分quartz定时任务没有启动。定时任务:[code="java"] ...原创 2015-09-15 18:09:22 · 2369 阅读 · 0 评论 -
解决生产环境接口应用包jboss数据库连接池满的问题
以前只排查过DHCP连接池泄露的问题,思路是通过btrace脚本收集日志排查问题,jboss用的是自带的连接池,不熟悉,经过查看官方文档终于找到jboss连接池的核心类,如下:(1)Jboss连接池核心类:InternalManagedConnectionPool :包含2个核心方法:returnConnection (),getConnection()方法。(2) 当应用需要进...原创 2015-09-15 18:22:16 · 528 阅读 · 0 评论 -
shiro login成功后保存了哪些数据
shiro login成功后 保存了Principals 和 AuthenticationState到session中,所以我们每次请求都能从session成功获取到这2个属性。 核心类:DefaultSubjectDAO[code="java"]public Subject save(Subject subject) { if...原创 2018-06-19 17:05:58 · 3065 阅读 · 0 评论 -
shiro 会话原理分析
1、从哪里获取sessionid每次请求都会尝试获取sessionid获取流程:DefaultWebSessionManager -->getReferencedSessionId-->getSessionIdCookieValue-->simpleCookie(JSESSIONID) 抛出问题:为什么能从cookie中获取sessionid, 请看第3点的初始化...原创 2018-06-19 12:40:51 · 798 阅读 · 0 评论 -
shiro内部原理分析
一句话总结:会话域Context一路收集principals, authenticated, host, session(readSession()返回), sessionEnabled, request, response, securityManager ; 最终被存入到了返回的这个Subject中 1.第一步:ShiroFilterFactoryBean的初始化和创建(1)实现B...原创 2018-06-15 17:07:22 · 665 阅读 · 0 评论 -
Zookeeper入门-001 源码环境搭建
1.到github下载源码:https://github.com/apache/zookeeper 2.使用ant对源码编译成eclipse工程:ant eclipse ant eclipse执行失败的问题解决: get src="http://downloads.sourceforge.net/project/ant-eclipse/ant-eclipse...原创 2018-03-15 11:47:26 · 159 阅读 · 0 评论 -
dubbo服务治理之路由规则研究
1.今天没太多事情,挤出点时间,研究了下dubbo的路由规则实现。首先,看看dubbo消费端的主要调用流程(这里就不画图了),以后补充:第一步:创建消费端代理:ReferenceConfig.createProxy,这里没什么特别,典型的C/S调用设计,都是通过JAVA动态代理或是Javassist的代理实现,比如mybatis mapper。思考:假如我想实现API网...原创 2018-01-31 15:50:42 · 1230 阅读 · 0 评论 -
shiro SecurityUtils.getSubject()深度分析
1.总的来说,SecurityUtils.getSubject()是每个请求创建一个Subject, 并保存到ThreadContext的resources(ThreadLocal)变量中,也就是一个http请求一个subject,并绑定到当前线程。问题来了:.subject.login()登陆认证成功后,下一次请求如何知道是那个用户的请求呢?友情提示:本文唯一可以读一下的就是分析...原创 2018-01-12 17:38:58 · 6424 阅读 · 0 评论 -
@Async核心实现1 --------AsyncExecutionAspectSupport
基本原理:通过spring的扩展接口AbstractBeanFactoryAwareAdvisingPostProcessor,初始化自定义的切面AsyncAnnotationAdvisor来实现方法的代理,最后通过自定义方法拦截器AsyncExecutionInterceptor实现异步执行。核心实现是:1.继续接口MethodInterceptor2.获取自定义注解:g...原创 2017-12-27 10:34:02 · 825 阅读 · 0 评论 -
解决了DeferredResult请求长时间占用数据库连接的问题
最近看了看开源项目appllo配置中心的源码,发现一个很有意思的东东:(1)原理:由于使用了DeferredResult,根据Spring DispatcherServlet的默认逻辑,数据库连接只有在异步请求真正返回给客户端的时候才会释放回连接池(2)应用场景:长连接时间很长,对于大部分请求可能都要数小时以上才会返回。在这么长的一段时间内一直占用着数据库连接是不合理的长连...原创 2017-08-04 09:55:43 · 1112 阅读 · 0 评论 -
JMX学习
JMX远程管理启动参数http://rabbit9898.iteye.com/blog/1152107[动态修改程序的配置的思想值得学习:http://www.cnblogs.com/itech/archive/2010/09/16/1827999.htmlJVM Management API:http://blog.youkuaiyun.com/gaojava/article/d...原创 2014-12-12 14:55:37 · 95 阅读 · 0 评论 -
spring AOP何时添加AnnotationAwareAspectJAutoProxyCreator
1.spring AOP的原理都知道是从解析自定义标签时注册一个beanDefiniton到beanFactory,然后在bean加载过程中做动态代理(initializeBean时会做一些最后的初始化,包括aware接口的调用,applyBeanPostProcessorsBefore/AfterXXX,initMethod,InitializingBean接口的调用)2.但是真正添加A...原创 2015-12-27 00:46:07 · 204 阅读 · 0 评论 -
JAVA 实现大批量数据的分组统计
[code="java"]package com.xxx;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * * 使用demo * * group(data,new String[]{"c...原创 2015-12-18 11:37:57 · 3229 阅读 · 0 评论 -
与大师面对面交流:Chris Richardson 来华布道微服务架构
http://www.daocloud.io/microservices.html原创 2016-11-28 21:28:56 · 166 阅读 · 0 评论 -
单线程锁数据单线程执行任务+单线程锁数据多线程执行任务+quartz
注: 这种锁数据的做法虽然比较稳定,但感觉有点弱智,性能也低,以后准备考虑生产数据的时候给数据分配一个机器号(随机算法即可),然后通过一个配置表配置机器号节点,消费数据的应用进程通过竞争机器号消费或处理数据相关逻辑即可。一:单线程锁数据单线程执行任务(即当包工头和又当工人,即拉皮条又接客)[code="java"]package xxx.thread;i...原创 2015-12-09 15:39:13 · 371 阅读 · 0 评论 -
解决java.io.NotSerializableException: java.util.RandomAccessSubList
1.List.subList()返回的是一个RandomAccessSubList实例,该类型没有实现序列化 2.list newList = new ArrayList(); newList.addAll(subList);//解决RandomAccessSubList未序列化的方法:重新放入ArrayList中 ...原创 2014-10-23 13:01:44 · 770 阅读 · 0 评论 -
线程池的原理和连接池的原理
一、 线程池的原理: 线程池,究竟是怎么一回事?其实线程池的原理很简单,类似于操作系统中的缓冲区的概念,它的流程如下:先启动若干数量的线程,并让这些线程都处于睡眠状态,当客户端有一个新请求时,就会唤醒线程池中的某一个睡眠线程,让它来处理客户端的这个请求,当处理完这个请求后,线程又处于睡眠状态。可能你也许会问:为什么要搞得这么麻烦,如果每当客户端有新的请求时,我就创建...原创 2013-10-17 21:56:00 · 147 阅读 · 0 评论 -
处理 Oracle SQL in 超过1000 的解决方案
1.用union all.(以500为间隔,拼接数据集合)思路:select count(*) from (select * from test where id in (1..500) union all (select * from test where id in(501...1000))).2.用or:思路:可以用 where id (1, 2, ..., 10...原创 2013-10-16 22:11:33 · 1014 阅读 · 0 评论 -
Java里面的商业计算--BigDecimal类
1.Java里面的商业计算,不能用float和double,因为他们无法进行精确计算.2.Java的设计者给编程人员提供了一个很有用的类BigDecimal,他可以完善float和double类无法进行精确计算的缺憾.float和double会失去精度的原因:原因在于我们的计算机是二进制的。浮点数没有办法是用二进制进行精确表示。我们的CPU表示浮点数由两个部分组成:指数和尾...原创 2013-10-16 22:03:18 · 152 阅读 · 0 评论 -
工具类2:DateUtil
import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import java.util.TimeZone;/** * 时间处...原创 2014-02-21 10:22:18 · 127 阅读 · 0 评论 -
工具类1:StringUtil
import java.io.File;import java.io.UnsupportedEncodingException;import java.math.BigDecimal;import java.net.URLDecoder;import java.net.URLEncoder;import java.text.ParseException;import jav...原创 2014-02-21 10:21:24 · 126 阅读 · 0 评论 -
浅析JVM崩溃的原因及解决方法
最近发现用了很久的JNI接口,今天突然有崩溃的现象。分析和解决办法:http://developer.51cto.com/art/200907/135694_all.htmhttp://www.cnblogs.com/shiyangxt/archive/2009/01/06/1370627.htmlhttp://www.ibm.com/developerworks/cn/jav...原创 2014-01-23 20:41:09 · 444 阅读 · 0 评论 -
Java 线程/内存模型的缺陷和增强
转自:http://tech.163.com/06/0525/09/2HV7DCJ20009159T.html#本文是由JR主持写作的《J2SE进阶》一书的部分章节整理而成,《J2SE进阶》正在写作、完善阶段。您阅读后,有任何建议、批评,请 和我联系 ,或在 这儿留言 。《J2SE进阶》写作项目组感谢您阅读本文。 Java在语言层次上实现了对线程的支持。它提供了Thr...原创 2014-01-22 12:57:36 · 100 阅读 · 0 评论 -
Java中HashMap的数据结构和缺陷
在Java的世界里,无论类还是各种数据,其结构的处理是整个程序的逻辑以及性能的关键。由于本人接触了一个有关性能与逻辑同时并存的问题,于是就开始研究这方面的问题。找遍了大大小小的论坛,也把《Java 虚拟机规范》,《apress,.java.collections.(2001),.bm.ocr.6.0.shareconnector》,和《Thinking in Java》翻了也找不到很好的答案,...原创 2014-01-22 12:53:05 · 108 阅读 · 0 评论 -
apche CXF使用和生成客户端代码
CXF2.6.1通过Endpoint发布服务关键依赖包 从Apache官网下载的apache-cxf-2.6.1.zip中jar包很多 如果是通过Endpoint发布服务,则只需要在工程中引入如下关键依赖包 包的官方下载地址:http://www.apache.org/dyn/closer.cgi?path=/cxf/2.6.1/apache-cxf-2.6.1-src.zip下载...原创 2014-01-20 15:06:09 · 229 阅读 · 0 评论