<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[spjich的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/spjich</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; spjich]]></copyright><item><title><![CDATA[Curator使用琐事杂记]]></title><link>https://blog.youkuaiyun.com/spjich/article/details/84916920</link><guid>https://blog.youkuaiyun.com/spjich/article/details/84916920</guid><author>spjich</author><pubDate>Fri, 02 Mar 2018 14:57:43 +0800</pubDate><description><![CDATA[
Watcher部分

 这种方式只能监听一次，监听完了需要重新注册watcher

 
client.getChildren().usingWatcher(new AA2.Watcher()).forPath(&quot;/b&quot;);
 

PathChildrenCache 只能监听本层以及第一层子层（监听/b 只能监听到/b/c,不能监听到/b/c/d），且每次生成时，假如节点存在，会被重复...]]></description><category></category></item><item><title><![CDATA[logback配置黄金法则]]></title><link>https://blog.youkuaiyun.com/spjich/article/details/84914856</link><guid>https://blog.youkuaiyun.com/spjich/article/details/84914856</guid><author>spjich</author><pubDate>Fri, 12 Jan 2018 16:41:42 +0800</pubDate><description><![CDATA[
 
不少人会有logback.xml里面root与logger关系，他们之间如何继承如何配置才能达到需求的问题，网上归纳的很凌乱，以下是个人总结的几条黄金法则。
 

root是公共属性，没有logger时会找root里对应level的appender
additivity默认为true，为true时会忽略level限制并继承root节点中配置的所有属性

说明：additivity...]]></description><category></category></item><item><title><![CDATA[更优雅的延迟执行实现---环形队列]]></title><link>https://blog.youkuaiyun.com/spjich/article/details/84877705</link><guid>https://blog.youkuaiyun.com/spjich/article/details/84877705</guid><author>spjich</author><pubDate>Mon, 20 Mar 2017 14:09:50 +0800</pubDate><description><![CDATA[
在做业务时经常遇到某些一次性的延迟需求，比如新闻的定时发布，过了一个时间阈值后某个任务的状态置为超时或触发某个接口。
之前实现这种一次性的延迟需求基本会有3种思路。
(1)线程轮询扫库
(2)Timer类
(3)定时框架Quartz
这三种方案都存在各自的问题
对于“线程轮询扫库”，性能开销巨大，实时性差
对于“Timer类”来说，假如项目重启，之前设置的定时就荡然无存
对于“...]]></description><category></category></item><item><title><![CDATA[关于Mybatis一级缓存]]></title><link>https://blog.youkuaiyun.com/spjich/article/details/84835816</link><guid>https://blog.youkuaiyun.com/spjich/article/details/84835816</guid><author>spjich</author><pubDate>Tue, 17 Jan 2017 14:41:56 +0800</pubDate><description><![CDATA[
关于Mybatis一级缓存的介绍 https://yq.aliyun.com/articles/18678 这篇已经介绍的非常详尽了。
但是读完以后我产生了一个疑问，如果在同一个session中2次相同的数据库操作之间，DB里的数据改变了，Mybatis一级缓存如何确保数据一致性，带着以上疑问我做了如下实验：
 
1.方法级别没有开启@Transactional，Mybatis查询记录如...]]></description><category></category></item><item><title><![CDATA[Java concurrent 之 AQS]]></title><link>https://blog.youkuaiyun.com/spjich/article/details/84833356</link><guid>https://blog.youkuaiyun.com/spjich/article/details/84833356</guid><author>spjich</author><pubDate>Fri, 30 Dec 2016 17:58:33 +0800</pubDate><description><![CDATA[
转自:http://www.blogjava.net/xylz/archive/2010/07/06/325390.html
AQS
AbstractQueuedSynchronizer，简称AQS，是J.U.C最复杂的一个类，导致绝大多数讲解并发原理或者实战的时候都不会提到此类。但是虚心的作者愿意借助自己有限的能力和精力来探讨一二（参考资源中也有一些作者做了部分的分析。）。
首先从理论...]]></description><category></category></item><item><title><![CDATA[spring-data-redis消息订阅RedisMessageListenerContainer源码解读]]></title><link>https://blog.youkuaiyun.com/spjich/article/details/84825361</link><guid>https://blog.youkuaiyun.com/spjich/article/details/84825361</guid><author>spjich</author><pubDate>Mon, 07 Nov 2016 15:40:43 +0800</pubDate><description><![CDATA[
项目中一直在使用redis的subscribe功能，偶然会发生订阅断开的问题，一直无法定位，在此之下只能阅读源码定位问题
首先从spring.xml入手观察配置
 
    &amp;lt;bean id=&quot;twaListener&quot; class=&quot;org.springframework.data.redis.listener.adapter.MessageListenerAdapter&quot;&amp;gt;...]]></description><category></category></item><item><title><![CDATA[使用unsion完成机器文件夹容灾备份]]></title><link>https://blog.youkuaiyun.com/spjich/article/details/84811652</link><guid>https://blog.youkuaiyun.com/spjich/article/details/84811652</guid><author>spjich</author><pubDate>Fri, 29 Jul 2016 17:53:12 +0800</pubDate><description><![CDATA[
安装ocaml
wget http://caml.inria.fr/pub/distrib/ocaml-4.03/ocaml-4.03.0.tar
tar -zvxf ocaml-4.03.0.tar.gz 
cd ocaml-4.03.0
./configure
make world opt
make install
 
 
 
 
安装unison
tar -zxvf...]]></description><category></category></item><item><title><![CDATA[自己动手实现sso]]></title><link>https://blog.youkuaiyun.com/spjich/article/details/84801808</link><guid>https://blog.youkuaiyun.com/spjich/article/details/84801808</guid><author>spjich</author><pubDate>Mon, 09 May 2016 17:42:34 +0800</pubDate><description><![CDATA[
原公司业务中有sso系统，我当时完成的角色是接入，现在自己动手写了一个sso
项目地址
https://git.oschina.net/spjich/sso-simple.git
 
 
模拟sso跨域，同域登录
同域域名oa.ji.comsso.ji.com
跨域域名oa.comsso.com

加密算法
cookie内容加密-ASE服务器间信息验证-RSA证书

同域流...]]></description><category></category></item><item><title><![CDATA[分布式配置文件管理工具disconf部署以及运用]]></title><link>https://blog.youkuaiyun.com/spjich/article/details/84795178</link><guid>https://blog.youkuaiyun.com/spjich/article/details/84795178</guid><author>spjich</author><pubDate>Wed, 27 Apr 2016 17:59:12 +0800</pubDate><description><![CDATA[
disconf之前有搭建过一次但是没有成功，比较纠结它的基于nginx实现动静分离的思想，其实明明可以少一个组件的依赖和配置，或许开发者有其自己的考虑吧。
这次终于搭建完毕并且跑通，下面写几个碰到但是官方文档中没给出的坎。
 
 
 
 
搭建项目
 --就是一个disconf-web
安装依赖软件

安装Mysql（Ver 14.12 Distrib 5.0.45, for...]]></description><category></category></item><item><title><![CDATA[公交位置模拟工具]]></title><link>https://blog.youkuaiyun.com/spjich/article/details/84757708</link><guid>https://blog.youkuaiyun.com/spjich/article/details/84757708</guid><author>spjich</author><pubDate>Tue, 22 Dec 2015 15:37:31 +0800</pubDate><description><![CDATA[
承接上一篇 
http://spjich.iteye.com/blog/2264025
 
公交位置判断完成以后，模拟测试会比较麻烦，要模拟公交的动态移动，所以我做了一个模拟工具，模拟公交运动
以下是git地址
https://git.oschina.net/spjich/busMonitor.git
运行环境
java1.7/java1.6
tomcat7
redis可选...]]></description><category></category></item><item><title><![CDATA[让人困惑的ThreadLocal]]></title><link>https://blog.youkuaiyun.com/spjich/article/details/84756708</link><guid>https://blog.youkuaiyun.com/spjich/article/details/84756708</guid><author>spjich</author><pubDate>Wed, 16 Dec 2015 11:01:12 +0800</pubDate><description><![CDATA[
目前网上介绍ThreadLocal类用法的博文很多，看过后我们基本可以得出以下结论
ThreadLocal的作用和目的：用于实现线程内的数据共享，即对于相同的程序代码，多个模块在同一个线程中运行时要共享一份数据，而在另外线程中运行时又共享另外一份数据。
好了，至此ThreadLocal的概念我们弄清了，它是每个线程的菊部变量（该死的输入法）。但是java有了类的局部变量，这个ThreadL...]]></description><category></category></item><item><title><![CDATA[实时公交位置系统的实现]]></title><link>https://blog.youkuaiyun.com/spjich/article/details/84756391</link><guid>https://blog.youkuaiyun.com/spjich/article/details/84756391</guid><author>spjich</author><pubDate>Mon, 14 Dec 2015 17:30:27 +0800</pubDate><description><![CDATA[
假如你的城市，每台公交车上都装了一个gps，更幸运的是你还可以获得这些gps上报的位置信息，那如何做一款公交位置查询app，或者公交位置监控软件呢？
宏观上：   实时性（每辆车每10秒上报一次位置信息，全市上万量公交,个接口的吞吐量以及实时性是一个考验）
               准确性（如何准确判断每辆车的位置，以及行驶方向）
微观上：   火星坐标系的转换（gps上报的是原生坐...]]></description><category></category></item><item><title><![CDATA[keepalive做HA热备]]></title><link>https://blog.youkuaiyun.com/spjich/article/details/84740537</link><guid>https://blog.youkuaiyun.com/spjich/article/details/84740537</guid><author>spjich</author><pubDate>Mon, 07 Sep 2015 17:20:18 +0800</pubDate><description><![CDATA[
最近在做服务器的高可用性，考虑主从热备初步准备采用keepalive这个工具来完成这个需求，下面主要做了一个keepalive入门实验
 
测试环境
两台centos
172.171.48.151 主
172.171.48.158 备
 
keepalive两台机器都要安装
 
 
安装前准备工作
keepalive依赖下面几个包
 rpm -qa |grep gcc ...]]></description><category></category></item><item><title><![CDATA[HttpClient 4.3与4.3版本以下版本比较]]></title><link>https://blog.youkuaiyun.com/spjich/article/details/84733103</link><guid>https://blog.youkuaiyun.com/spjich/article/details/84733103</guid><author>spjich</author><pubDate>Thu, 16 Jul 2015 16:46:05 +0800</pubDate><description><![CDATA[
网上利用java发送http请求的代码很多，一搜一大把，有的利用的是java.net.*下的HttpURLConnection，有的用httpclient，而且发送的代码也分门别类。今天我们主要来说的是利用httpclient发送请求。
httpclient又可分为

httpclient3.x
httpclient4.x到httpclient4.3以下
httpclient4.3以上...]]></description><category></category></item><item><title><![CDATA[(二)androidpn-server tomcat版源码解析之--push消息处理]]></title><link>https://blog.youkuaiyun.com/spjich/article/details/84732156</link><guid>https://blog.youkuaiyun.com/spjich/article/details/84732156</guid><author>spjich</author><pubDate>Fri, 10 Jul 2015 11:03:45 +0800</pubDate><description><![CDATA[
在 (一)androidpn-server tomcat版源码解析之--项目启动这篇中，已经描述了整个推送服务器的启动过程，并且把握到了消息的入口即XmppIoHandler这个类，今天我将继续往下分析下面的核心代码，主要分为3大块，链接创建，消息的发送，链接关闭。
先贴一段XmppIoHandler的部分代码
/**
     * Invoked from an I/O process...]]></description><category></category></item><item><title><![CDATA[(一)androidpn-server  tomcat版源码解析之--项目启动]]></title><link>https://blog.youkuaiyun.com/spjich/article/details/84732046</link><guid>https://blog.youkuaiyun.com/spjich/article/details/84732046</guid><author>spjich</author><pubDate>Thu, 09 Jul 2015 15:31:08 +0800</pubDate><description><![CDATA[
最新项目在搞安卓推送，选用的xmpp协议，用了一套androidpn推送框架服务端是tomcat的版本的androidpn-server，网上对于这套服务端源码的理解比较少，于是我抽空把源码给解析了一遍并且了解到了整个服务的启动过程。
下面是项目的git地址:https://github.com/msdx/androidpn/tree/master/androidpn-server-bin-...]]></description><category></category></item><item><title><![CDATA[两种启动监听器ApplicationListener和ServletContextListener ]]></title><link>https://blog.youkuaiyun.com/spjich/article/details/84731795</link><guid>https://blog.youkuaiyun.com/spjich/article/details/84731795</guid><author>spjich</author><pubDate>Wed, 08 Jul 2015 10:13:47 +0800</pubDate><description><![CDATA[
引言:有时候需要在项目初始化的时候进行一系列工作，比如初始化一个线程池，初始化配置文件，初始化缓存等等，这时候就需要用到启动监听器，下面分别介绍一下两种常用的项目启动监听器
 
ServletContextListener 
特点: 依赖于sevlet容器，需要配置web.xml
使用方法:
public class StartListener implements ServletCo...]]></description><category></category></item><item><title><![CDATA[div设置半透明效果]]></title><link>https://blog.youkuaiyun.com/spjich/article/details/84731685</link><guid>https://blog.youkuaiyun.com/spjich/article/details/84731685</guid><author>spjich</author><pubDate>Tue, 07 Jul 2015 15:47:56 +0800</pubDate><description><![CDATA[
为div设置如下样式：
 
div{filter:alpha(Opacity=80);-moz-opacity:0.5;opacity: 0.5;} 
 
 
 
 说明：
1、filter：对win IE设置半透明滤镜效果，filter:alpha(Opacity=80)代表该对象80%半透明，火狐浏览器不认2、-moz-opacity：对mozilla firefox火狐浏览...]]></description><category></category></item><item><title><![CDATA[基于HAproxy的 session同步实践]]></title><link>https://blog.youkuaiyun.com/spjich/article/details/84730444</link><guid>https://blog.youkuaiyun.com/spjich/article/details/84730444</guid><author>spjich</author><pubDate>Mon, 29 Jun 2015 16:10:05 +0800</pubDate><description><![CDATA[
首先安装，启动，配置HAproxy的方法网上已经有很多的介绍，此处不再作过多阐述
推荐2个比较有用的安装配置资料：
安装说明
http://blog.chinaunix.net/uid-17291169-id-4744949.html
配置文件说明
http://www.linuxidc.com/Linux/2012-07/65350.htm
 
另附简单操作代码
重启 关闭 ...]]></description><category></category></item><item><title><![CDATA[nginx配置文件粗解]]></title><link>https://blog.youkuaiyun.com/spjich/article/details/84730380</link><guid>https://blog.youkuaiyun.com/spjich/article/details/84730380</guid><author>spjich</author><pubDate>Mon, 29 Jun 2015 11:40:10 +0800</pubDate><description><![CDATA[
#运行用户#user  nobody;#启动进程,通常设置成和cpu的数量相等worker_processes  2;#全局错误日志及PID文件#error_log  logs/error.log;#error_log  logs/error.log  notice;#error_log  logs/error.log  info;#pid        logs/nginx.pid;#工作模...]]></description><category></category></item></channel></rss>