<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[夕阳的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hcd321</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hcd321]]></copyright><item><title><![CDATA[postgresql数据库使用AES加解密和java使用AES加解密不一致的问题]]></title><link>https://blog.youkuaiyun.com/hcd321/article/details/84920523</link><guid>https://blog.youkuaiyun.com/hcd321/article/details/84920523</guid><author>hcd321</author><pubDate>Mon, 14 May 2018 11:20:44 +0800</pubDate><description><![CDATA[
       公司内部的P2P平台由于监管，进行了一系列不合规项的整改。其中有一条就是要对数据库中一些比较敏感的信息进行加密，比如：手机，邮箱，身份证，银行卡之类的。解决方案是，在整个过程，查询的时候在java服务端进行解密，插入和更新的时候在java服务端进行加密。数据库端则存放加密后的信息。本来只需要考虑java服务端加解密后能保持一致即可，但是为了方便某些在数据库端进行运维的人能使用sq...]]></description><category></category></item><item><title><![CDATA[网络协议学习笔记]]></title><link>https://blog.youkuaiyun.com/hcd321/article/details/84919121</link><guid>https://blog.youkuaiyun.com/hcd321/article/details/84919121</guid><author>hcd321</author><pubDate>Mon, 16 Apr 2018 16:54:39 +0800</pubDate><description><![CDATA[
       网络学习的学习笔记，记录一些学习要点。
1.网络的五层模型：从下到上 ：物理层，链路层，网络层，传输层，应用层。
 
2.物理层：物理层面把电脑连接起来：可以是光纤电缆无线信号之类的，传输0和1。
3.链路层：主要是以太网协议，定义了帧，即一组电信号。协议头记录通讯双方MAC地址（硬件网卡的唯一标识，前六位是厂商id，后六位是厂商内部的流水id）以及其他协议信息。MAC地...]]></description><category></category></item><item><title><![CDATA[dubbo协议报文格式]]></title><link>https://blog.youkuaiyun.com/hcd321/article/details/84909105</link><guid>https://blog.youkuaiyun.com/hcd321/article/details/84909105</guid><author>hcd321</author><pubDate>Tue, 19 Sep 2017 10:15:04 +0800</pubDate><description><![CDATA[
       dubbo默认采用netty进行TCP通讯。TCP是传输层协议，在应用层，往往会拓展自定义的协议，一是可以处理TCP本身的粘包拆包问题，二是约定通讯过程的其他细节。
       所以dubbo默认采用自定义的dubbo协议。文档描述：
Dubbo缺省协议采用单一长连接和NIO异步通讯，适合于小数据量大并发的服务调用，以及服务消费者机器数远大于服务提供者机器数的情况。
缺省...]]></description><category></category></item><item><title><![CDATA[配合线程池定义可继承的线程变量InheritableThreadLocal]]></title><link>https://blog.youkuaiyun.com/hcd321/article/details/84907906</link><guid>https://blog.youkuaiyun.com/hcd321/article/details/84907906</guid><author>hcd321</author><pubDate>Tue, 29 Aug 2017 17:09:10 +0800</pubDate><description><![CDATA[
        说到可继承的线程变量，大家可能会想到jdk里的实现java.lang.InheritableThreadLocal。它拥有和线程变量ThreadLocal一样的功能，并且，在当前线程上创建一个新的线程实例Thread时，会把这些线程变量从当前线程传递给新的线程实例。（此时线程变量不再线程安全，需要考虑线程安全问题）
InheritableThreadLocal:
 
pu...]]></description><category></category></item><item><title><![CDATA[扩展mybatis重写mybatis执行器实现灵活批处理]]></title><link>https://blog.youkuaiyun.com/hcd321/article/details/84907750</link><guid>https://blog.youkuaiyun.com/hcd321/article/details/84907750</guid><author>hcd321</author><pubDate>Sun, 27 Aug 2017 00:41:19 +0800</pubDate><description><![CDATA[
     在用mybatis作为持久层框架时，有时候会有需要进行批量增删改的操作。
百度了一下，大致有两种方法，一种是拼接SQL的方式。类似这样：
&amp;lt;insert id=&quot;insertList&quot; parameterType=&quot;java.util.List&quot; &amp;gt;
     insert into t_project ( projectid,productid ) values...]]></description><category></category></item><item><title><![CDATA[springboot使用undertow作为web容器而引发的中文乱码问题]]></title><link>https://blog.youkuaiyun.com/hcd321/article/details/84904985</link><guid>https://blog.youkuaiyun.com/hcd321/article/details/84904985</guid><author>hcd321</author><pubDate>Tue, 25 Jul 2017 11:19:25 +0800</pubDate><description><![CDATA[
 先说一下出现这种情况的场景。该场景在使用jetty,tomcat作为容器时是可以正常运行的。首先是表单提交。
&amp;lt;form id=&quot;submitForm&quot; action=&quot;${base}/test/aa.html&quot; method=&quot;post&quot;&amp;gt;
            &amp;lt;input type=&quot;hidden&quot; name=&quot;userSource&quot; value=&]]></description><category></category></item><item><title><![CDATA[动态代理在RPC框架中的性能对比]]></title><link>https://blog.youkuaiyun.com/hcd321/article/details/84897119</link><guid>https://blog.youkuaiyun.com/hcd321/article/details/84897119</guid><author>hcd321</author><pubDate>Sun, 04 Jun 2017 00:34:51 +0800</pubDate><description><![CDATA[
       这几天打算自己写一个RPC框架，参考了阿里的dubbo,微博的motan等框架的设计。在选择代理技术时，dubbo有两种方案，一个是jdk的动态代理，一个JAVAASSIST的字节码生成技术，在dubbo作者梁飞的博客《动态代理方案性能对比》http://javatar.iteye.com/blog/814426中，因为作者在编写服务框架需要用动态代理生成客户端接口的stub，进...]]></description><category></category></item><item><title><![CDATA[从二进制指令看包装类Integer在编译期处理优化及二进制指令代码解析]]></title><link>https://blog.youkuaiyun.com/hcd321/article/details/84896370</link><guid>https://blog.youkuaiyun.com/hcd321/article/details/84896370</guid><author>hcd321</author><pubDate>Thu, 25 May 2017 17:23:55 +0800</pubDate><description><![CDATA[
      先看一段demo:
package com.onlyou;

/**
 * Created by cd_huang on 2017/5/25.
 */
public class Test {
	public static void main(String args[]) {
		intTest();
	}
	public static String intTes...]]></description><category></category></item><item><title><![CDATA[用dubbo直接调用webservice]]></title><link>https://blog.youkuaiyun.com/hcd321/article/details/84883302</link><guid>https://blog.youkuaiyun.com/hcd321/article/details/84883302</guid><author>hcd321</author><pubDate>Mon, 24 Apr 2017 12:39:34 +0800</pubDate><description><![CDATA[
       场景：他人的服务端暴露的webservice接口，我这边客户端集成了dubbo，所以想用dubbo直接去调用webservice。因为dubbo的官方文档上说dubbo有提供这些功能。
      dubbo版本2.3.0以上版本支持。需要在pom里添加依赖，它是基于CXF的frontend-simple和transports-http实现。maven依赖：
&amp;lt;depe...]]></description><category></category></item><item><title><![CDATA[java增强for循环的原理验证]]></title><link>https://blog.youkuaiyun.com/hcd321/article/details/84882076</link><guid>https://blog.youkuaiyun.com/hcd321/article/details/84882076</guid><author>hcd321</author><pubDate>Fri, 14 Apr 2017 10:35:12 +0800</pubDate><description><![CDATA[
     在java里，我们是怎么写for循环的代码呢。一般都是用这两种写法：
第一种：最传统的for循环写法，for(代码段a;代码段b;代码段c)，其中代码段a是初次进入for循环时执行的代码，代码段b是一个boolean的表达式，true则继续执行for循环内容，false则停止for循环，代码段c则是在for循环内部执行完后执行。
第二种：针对集合的遍历，for(类型 单个对象:集...]]></description><category></category></item><item><title><![CDATA[junit 4只是简单的加了一个@Test，程序是怎么跑起来的]]></title><link>https://blog.youkuaiyun.com/hcd321/article/details/84882035</link><guid>https://blog.youkuaiyun.com/hcd321/article/details/84882035</guid><author>hcd321</author><pubDate>Thu, 13 Apr 2017 23:53:09 +0800</pubDate><description><![CDATA[
    在写测试用例的时候，突然很疑惑，为什么我只是加了一个@Test的注解，就能运行一个程序。我们知道，main方法才是一个java程序的起点。那junit4的测试用例是怎么跑起来的呢。
为了解决这个疑惑，我就自己写测试用例debug调试了下。
    测试用例如下：
package com.onlyou.olyfinance.remote.base;

import org.ju...]]></description><category></category></item><item><title><![CDATA[java字符串拼接在编译时优化测试]]></title><link>https://blog.youkuaiyun.com/hcd321/article/details/84880462</link><guid>https://blog.youkuaiyun.com/hcd321/article/details/84880462</guid><author>hcd321</author><pubDate>Sat, 01 Apr 2017 16:11:40 +0800</pubDate><description><![CDATA[
为了验证编译器对于String相关代码的字节码优化，我简单的做了个测试：jdk版本:1.7.0_51
 java 用例代码：
package com.rsp.shiro;

/**
 * Created by cd_huang on 2017/4/1.
 */
public class StringTest {
	public static String StaticStrin...]]></description><category></category></item><item><title><![CDATA[java线程池增强实现]]></title><link>https://blog.youkuaiyun.com/hcd321/article/details/84853574</link><guid>https://blog.youkuaiyun.com/hcd321/article/details/84853574</guid><author>hcd321</author><pubDate>Thu, 19 Jan 2017 17:01:26 +0800</pubDate><description><![CDATA[
       前两天在开涛的公众号里，开涛聊到一次请求生成唯一的traceId在各个业务系统中传递，然后通过日志收集各个业务服务中的日志，形成一次请求的完整日志。开涛简单的提到了是使用自己实现的线程池增强技术来传递traceId。
       我这边系统也有类似的需求。所以我就尝试性地实现了下线程池增强。本来想着既然是增强，第一反应是用代理技术去实现，后来发现不需要代理就可以简单地实现。...]]></description><category></category></item><item><title><![CDATA[用spring目标对象处理Transaction rolled back because it has been marked as rollback-only]]></title><link>https://blog.youkuaiyun.com/hcd321/article/details/84825273</link><guid>https://blog.youkuaiyun.com/hcd321/article/details/84825273</guid><author>hcd321</author><pubDate>Mon, 07 Nov 2016 10:18:40 +0800</pubDate><description><![CDATA[
      在使用spring做事务管理时，很多人都会遇到这样一段异常：
org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only 
at org.springframework.transa...]]></description><category></category></item><item><title><![CDATA[java多线程基础知识]]></title><link>https://blog.youkuaiyun.com/hcd321/article/details/84795661</link><guid>https://blog.youkuaiyun.com/hcd321/article/details/84795661</guid><author>hcd321</author><pubDate>Sat, 30 Apr 2016 16:01:07 +0800</pubDate><description><![CDATA[    在大学的java课本上，或者是一些java理论知识里，都是这样子写着Java多线程的实现的：
1、继承java.lang.Thread，并重写它的run()方法。
[code=&quot;java&quot;]
public
class Thread implements Runnable {
...
@Override
    public void run() {
        if (...]]></description><category></category></item></channel></rss>