<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[木子固的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/qq_16717565</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; qq_16717565]]></copyright><item><title><![CDATA[Netty启动的那点事（一）]]></title><link>https://blog.csdn.net/qq_16717565/article/details/87385993</link><guid>https://blog.csdn.net/qq_16717565/article/details/87385993</guid><author>qq_16717565</author><pubDate>Fri, 15 Feb 2019 21:26:12 +0800</pubDate><description><![CDATA[背景

   对于netty一直比较好奇，之前看过《Netty权威指南》、《Netty实战》，但是可能因为自己对于netty没有很好的实践感受，才促使自己深入学习，也可能对于没有静下心来，多种原因吧。

   新年伊始，刚好年前一段时间对于netty也进去了项目上手，自己也能静下来一行一行阅读源码。

启动Netty服务端代码


public class HelloWorldSe...]]></description><category></category></item><item><title><![CDATA[Dubbo Failover机制]]></title><link>https://blog.csdn.net/qq_16717565/article/details/87375469</link><guid>https://blog.csdn.net/qq_16717565/article/details/87375469</guid><author>qq_16717565</author><pubDate>Fri, 15 Feb 2019 18:04:30 +0800</pubDate><description><![CDATA[背景：

       某个服务有2台机器，但是其中一台机器挂了，dubbo的重试还是会调用这台机器，经过查资料，推荐使用Failover机制；

 

过程：

        经过跟踪源码，发现dubbo默认的容错机制就是使用了Failover，在执行调用前会直接进入FailoverClusterInvoker.class的doInvoke中，翻开源码：


public Result doI...]]></description><category></category></item><item><title><![CDATA[dubbo的路由规则]]></title><link>https://blog.csdn.net/qq_16717565/article/details/86603231</link><guid>https://blog.csdn.net/qq_16717565/article/details/86603231</guid><author>qq_16717565</author><pubDate>Tue, 22 Jan 2019 23:30:55 +0800</pubDate><description><![CDATA[因为项目部署分需要灰度发布，涉及到公用依赖需要根据版本号来路由到不同机器。

使用了dubbo的keeper项目作为后台管理来新增路由规则，翻看dubbo源码，

 

发现dubbo使用了代理，代理会做的一件事就是使用路由规则，


//AbstractDirectory 类
public List&amp;lt;Invoker&amp;lt;T&amp;gt;&amp;gt; list(Invocation invocati...]]></description><category></category></item><item><title><![CDATA[通俗的理解ThreadLocal]]></title><link>https://blog.csdn.net/qq_16717565/article/details/80008299</link><guid>https://blog.csdn.net/qq_16717565/article/details/80008299</guid><author>qq_16717565</author><pubDate>Thu, 19 Apr 2018 17:43:39 +0800</pubDate><description><![CDATA[网上有很多如何使用ThreadLocal的文章，可参考：https://www.cnblogs.com/yxysuanfa/p/7125761.html但是对于通俗化的解释目前没有怎么看到。我的理解就是ThreadLocal相当于一个保险库，而且是刷脸的那种，首先A先去ThreadLocal调用set里存放了一本秘籍，过了一会B也调用set往里面存放了自己的宝剑，然后A过了1天再来保险库里面，只能...]]></description><category></category></item><item><title><![CDATA[简单工厂、工厂方法和抽象工厂的区别]]></title><link>https://blog.csdn.net/qq_16717565/article/details/79905440</link><guid>https://blog.csdn.net/qq_16717565/article/details/79905440</guid><author>qq_16717565</author><pubDate>Wed, 11 Apr 2018 23:53:34 +0800</pubDate><description><![CDATA[现在有2种产品需要生产，各个工厂模式的方式简单工厂：    产品类和工厂类耦合在一起。          有一个工厂，里面有二条流水线，只能生产A、B，如果工厂要增加新产品，需要对工厂进行翻修，要有第三条流水线。  工厂方法：    产品类未抽象，工厂抽象出来了。   A工厂里一条流水线生产A，B工厂一条流水线生产B，如果此时要有第三种产品，则有C工厂去生产C。   父工厂通过统一的装修模式，来声...]]></description><category></category></item><item><title><![CDATA[James启动报错]]></title><link>https://blog.csdn.net/qq_16717565/article/details/60473294</link><guid>https://blog.csdn.net/qq_16717565/article/details/60473294</guid><author>qq_16717565</author><pubDate>Sun, 05 Mar 2017 20:11:30 +0800</pubDate><description><![CDATA[james启动失败]]></description><category></category></item><item><title><![CDATA[Java map 存取对象]]></title><link>https://blog.csdn.net/qq_16717565/article/details/52951523</link><guid>https://blog.csdn.net/qq_16717565/article/details/52951523</guid><author>qq_16717565</author><pubDate>Fri, 28 Oct 2016 00:17:28 +0800</pubDate><description><![CDATA[今天刚好做一个了相关功能


import java.util.HashMap;
import java.util.Map;

public class TestKey{
	
	public static void main(String[] args){
		Key k1 = new Key(1, 1);
		
		Map map = new HashMap();
		
		map.put]]></description><category></category></item><item><title><![CDATA[mybatis  在dao层插入数据, 返回了影响的行数, 但是数据库里面有看到数据]]></title><link>https://blog.csdn.net/qq_16717565/article/details/51395503</link><guid>https://blog.csdn.net/qq_16717565/article/details/51395503</guid><author>qq_16717565</author><pubDate>Fri, 13 May 2016 15:13:42 +0800</pubDate><description><![CDATA[mybatis,  在批量插入数据的时候, insert into  返回了影响的行数, 但是查数据库一直是没有记录的.


如果此时最后一条数据的ID为20的话,  调用insert into, ,此时查询数据库, 发现数据还是显示20条,


但是直接在数据库里进行手动执行一条insert into的时候, 然后select  你会发现, 此时最后一条数据的ID为41,


]]></description><category></category></item><item><title><![CDATA[通过get或post请求URL获取返回数据]]></title><link>https://blog.csdn.net/qq_16717565/article/details/51065862</link><guid>https://blog.csdn.net/qq_16717565/article/details/51065862</guid><author>qq_16717565</author><pubDate>Tue, 05 Apr 2016 16:40:12 +0800</pubDate><description><![CDATA[通过GET或者POST来解析请求URL后, 返回的JSON数据]]></description><category></category></item><item><title><![CDATA[解析http中的xml, 同时返回xml文件]]></title><link>https://blog.csdn.net/qq_16717565/article/details/50834162</link><guid>https://blog.csdn.net/qq_16717565/article/details/50834162</guid><author>qq_16717565</author><pubDate>Wed, 09 Mar 2016 12:00:14 +0800</pubDate><description><![CDATA[解析http中的xml文件]]></description><category></category></item><item><title><![CDATA[导出CSV格式的文件]]></title><link>https://blog.csdn.net/qq_16717565/article/details/50505564</link><guid>https://blog.csdn.net/qq_16717565/article/details/50505564</guid><author>qq_16717565</author><pubDate>Tue, 12 Jan 2016 17:18:01 +0800</pubDate><description><![CDATA[package com.snowfish.omsdk.channelsdk.common.csv;public abstract class AbstractCSVItemProcessor {protected ICSVWriter writer;public void setWriter(ICSVWriter writer){this.writer = writer;}/** * Write]]></description><category></category></item><item><title><![CDATA[UML系列---时序图（顺序图）]]></title><link>https://blog.csdn.net/qq_16717565/article/details/40616597</link><guid>https://blog.csdn.net/qq_16717565/article/details/40616597</guid><author>qq_16717565</author><pubDate>Thu, 30 Oct 2014 11:07:54 +0800</pubDate><description><![CDATA[个人认为讲的很好http://www.lupaworld.com/article-233409-1.html]]></description><category></category></item><item><title><![CDATA[Syidentifier starts immediately after numeric literal]]></title><link>https://blog.csdn.net/qq_16717565/article/details/40304071</link><guid>https://blog.csdn.net/qq_16717565/article/details/40304071</guid><author>qq_16717565</author><pubDate>Mon, 20 Oct 2014 17:42:15 +0800</pubDate><description><![CDATA[js异常：javascript Firebug error: Identifier starts immediately after numeric literal 
异常原因：标识符以数字开头 
异常分析： 
示例1·



?





1

2

3

4

5

6

7

8

9

10

11

12

13]]></description><category></category></item><item><title><![CDATA[年月日三级联动菜单]]></title><link>https://blog.csdn.net/qq_16717565/article/details/40110349</link><guid>https://blog.csdn.net/qq_16717565/article/details/40110349</guid><author>qq_16717565</author><pubDate>Wed, 15 Oct 2014 14:19:10 +0800</pubDate><description><![CDATA[String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>





">


My JSP 'Test.jsp]]></description><category></category></item><item><title><![CDATA[js二级联动菜单]]></title><link>https://blog.csdn.net/qq_16717565/article/details/40109911</link><guid>https://blog.csdn.net/qq_16717565/article/details/40109911</guid><author>qq_16717565</author><pubDate>Wed, 15 Oct 2014 13:53:50 +0800</pubDate><description><![CDATA[String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>







My JSP 'index.jsp' s]]></description><category></category></item><item><title><![CDATA[js 直接初始化和赋值初始化?]]></title><link>https://blog.csdn.net/qq_16717565/article/details/39933895</link><guid>https://blog.csdn.net/qq_16717565/article/details/39933895</guid><author>qq_16717565</author><pubDate>Thu, 09 Oct 2014 16:58:57 +0800</pubDate><description><![CDATA[js 中
(1)var box1 = document.getElementById("box1");
box1.style.display="";

(2)document.getElementById("box1").style.display="";


jsp中]]></description><category></category></item><item><title><![CDATA[Ajax中的应用中的GET、POST方法原理分析]]></title><link>https://blog.csdn.net/qq_16717565/article/details/39643945</link><guid>https://blog.csdn.net/qq_16717565/article/details/39643945</guid><author>qq_16717565</author><pubDate>Sun, 28 Sep 2014 17:05:58 +0800</pubDate><description><![CDATA[Http定义了与服务器交互的不同方法，最基本的方法有4种，分别是GET，POST，PUT，DELETE。URL全称是资源描述符，我们可以这样认为：一个URL地址，它用于描述一个网络上的资源，而HTTP中的GET，POST，PUT，DELETE就对应着对这个资源的查，改，增，删4个操作。到这里，大家应该有个大概的了解了，GET一般用于获取/查询资源信息，而POST一般用于更新资源信息。
HTTP/]]></description><category></category></item><item><title><![CDATA[jquery  $(this).attr $(this).val方法使用介绍]]></title><link>https://blog.csdn.net/qq_16717565/article/details/39582543</link><guid>https://blog.csdn.net/qq_16717565/article/details/39582543</guid><author>qq_16717565</author><pubDate>Fri, 26 Sep 2014 16:39:42 +0800</pubDate><description><![CDATA[$(this).attr(key); 获取节点属性名的值，相当于getAttribute(key)方法 

$(this).attr(key, value); 设置节点属性的值，相当于setAttribute(key,value)方法 

eg: 

var diywidgetid = $('#w_1').attr('diywidgetid'); //获取节点属性的值 

$(th]]></description><category></category></item></channel></rss>