<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[z8756413的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/z8756413</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; z8756413]]></copyright><item><title><![CDATA[zookeepe学习-客户端命令]]></title><link>https://blog.youkuaiyun.com/z8756413/article/details/101963109</link><guid>https://blog.youkuaiyun.com/z8756413/article/details/101963109</guid><author>z8756413</author><pubDate>Thu, 03 Oct 2019 04:06:26 +0800</pubDate><description><![CDATA[zookeeper学习-客户端访问
客户端启动
由于只有一台机器，按照之前的步骤，分别在三个zookeeper根目录中启动了三个zookeeper节点组成的集群，server端口分别为2181、2182、2183.
客户端启动的命令如下

如果这里不加-server参数的话，默认去本机的2181端口查看是否有服务
连接成功如下

客户端命令
创建节点
我们可以看到，节点成功创建，同时，在另外一个节...]]></description><category></category></item><item><title><![CDATA[zookeeper学习-节点]]></title><link>https://blog.youkuaiyun.com/z8756413/article/details/101948861</link><guid>https://blog.youkuaiyun.com/z8756413/article/details/101948861</guid><author>z8756413</author><pubDate>Wed, 02 Oct 2019 23:45:49 +0800</pubDate><description><![CDATA[一、集群角色
Leader
集群工作的核心
事务请求（写操作）的唯一调度和处理，保证集群事务处理的顺序性，所有写操作，统一转发给leader，leader决定编号，执行操作，
Follower
（1）处理读请求，转发事务请求给leader
（2）参与集群leader选举投票
Observer
处理读请求
不会参与任何形式的投票
二、节点属性
dataVersion：数据版本号
cversion：子...]]></description><category></category></item><item><title><![CDATA[《重构》读书笔记-20191001]]></title><link>https://blog.youkuaiyun.com/z8756413/article/details/101872525</link><guid>https://blog.youkuaiyun.com/z8756413/article/details/101872525</guid><author>z8756413</author><pubDate>Tue, 01 Oct 2019 23:14:38 +0800</pubDate><description><![CDATA[Replace Method with Method Object
处理场景
有一个大型函数，其中有一段逻辑对多个局部变量进行了写操作（如果只有一个，可以用返回值，如果只是读，可以作为参数）。使得我无法对其进行提取函数的动作
处理方法

建立一个新类，根据待处理函数的用途，为这个类起个好名字。
在新类中建立一个const字段，用来保存源函数所在的对象，我们将这个函数称为源对象。同时针对原函数的每个...]]></description><category></category></item><item><title><![CDATA[zookeeper学习-单机集群部署]]></title><link>https://blog.youkuaiyun.com/z8756413/article/details/101867577</link><guid>https://blog.youkuaiyun.com/z8756413/article/details/101867577</guid><author>z8756413</author><pubDate>Tue, 01 Oct 2019 21:46:53 +0800</pubDate><description><![CDATA[集群模式
集群模式有如下两种：
1）使用多台机器，在每台机器上运行一个ZooKeeper Server进程；
2）使用一台机器，在该台机器上运行多个ZooKeeper Server进程。
在生产环境中，一般使用第一种形式。在本地环境中，一般使用第二种形式。
下面我们演示下单台机器上如何实现集群部署。
下载&amp;解压
http://mirrors.hust.edu.cn/apache/zooke...]]></description><category></category></item><item><title><![CDATA[一次mysql死锁问题的分析]]></title><link>https://blog.youkuaiyun.com/z8756413/article/details/98335536</link><guid>https://blog.youkuaiyun.com/z8756413/article/details/98335536</guid><author>z8756413</author><pubDate>Sat, 03 Aug 2019 14:38:19 +0800</pubDate><description><![CDATA[首先问题始于生产环境的一批报错


### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction
### The erro...]]></description><category></category></item><item><title><![CDATA[ListHelper为什么不是线程安全的]]></title><link>https://blog.youkuaiyun.com/z8756413/article/details/88097474</link><guid>https://blog.youkuaiyun.com/z8756413/article/details/88097474</guid><author>z8756413</author><pubDate>Mon, 04 Mar 2019 04:37:21 +0800</pubDate><description><![CDATA[java已经有很多有用的模块了。但是很多时候，一个类只能支持一部分操作，需要我们再不破坏线程安全的前提下，添加新操作，比如我们需要一个线程安全的list，给他加这么一个方法：缺少即加入

有这么几种实现方式

（1） 直接改源码

（2）扩展类，继承原有的vector









（3）扩展功能类：就是helper，原有模块作为其中的关键成员



下面是一个错误的实现案例：

Ja...]]></description><category></category></item><item><title><![CDATA[elasticsearch 中term与match区别]]></title><link>https://blog.youkuaiyun.com/z8756413/article/details/85068970</link><guid>https://blog.youkuaiyun.com/z8756413/article/details/85068970</guid><author>z8756413</author><pubDate>Tue, 18 Dec 2018 16:36:44 +0800</pubDate><description><![CDATA[elasticsearch 中term与match区别
两者的查询语句分别如下所示
GET mall3/mall_info3/_search
{
  &quot;query&quot;:{
    &quot;term&quot;:{
      &quot;refund_address&quot;:&quot;上海市&quot;
    }
  }
}

GET mall3/mall_info3/_count
{
  &quot;query&quot;:{
    &quot;match&quot;:{
]]></description><category></category></item><item><title><![CDATA[JVM垃圾收集器概述]]></title><link>https://blog.youkuaiyun.com/z8756413/article/details/84207204</link><guid>https://blog.youkuaiyun.com/z8756413/article/details/84207204</guid><author>z8756413</author><pubDate>Mon, 19 Nov 2018 00:18:46 +0800</pubDate><description><![CDATA[第一章 概述

G1(Garbage First)垃圾收集器是当今垃圾回收技术最前沿的成果之一。早在JDK7就已加入JVM的收集器大家庭中，成为HotSpot重点发展的垃圾回收技术。同优秀的CMS垃圾回收器一样，G1也是关注最小时延的垃圾回收器，也同样适合大尺寸堆内存的垃圾收集，官方也推荐使用G1来代替选择CMS。G1最大的特点是引入分区的思路，弱化了分代的概念，合理利用垃圾收集各个周期的资源，解...]]></description><category></category></item><item><title><![CDATA[各种垃圾收集器整理]]></title><link>https://blog.youkuaiyun.com/z8756413/article/details/84206645</link><guid>https://blog.youkuaiyun.com/z8756413/article/details/84206645</guid><author>z8756413</author><pubDate>Sun, 18 Nov 2018 23:37:34 +0800</pubDate><description><![CDATA[一、垃圾收集器示意图



 

（1）Serial收集器

（2）ParNew收集器

（3）Parallel Scavenge 收集器：使用复制算法，和ParNew的区别在于

(1) parallel scanvenge 的关键点在于它关注的是吞吐量，

    吞吐量 = 用户代码运行时间 / （用户代码运行时间 + 垃圾收集时间）

 

    而与之对比的是，CMS收集器等的关注点是...]]></description><category></category></item><item><title><![CDATA[各种各样的编码]]></title><link>https://blog.youkuaiyun.com/z8756413/article/details/84069614</link><guid>https://blog.youkuaiyun.com/z8756413/article/details/84069614</guid><author>z8756413</author><pubDate>Wed, 14 Nov 2018 17:23:57 +0800</pubDate><description><![CDATA[开发过程中我们一直会遇到各种各样的编码方式，basee64、utf-8、gbk等，这里做一个通俗易懂的梳理（转自其他微博）

一、base64

  百度百科中对Base64有一个很好的解释：“Base64是网络上最常见的用于传输8Bit字节码的编码方式之一，Base64就是一种基于64个可打印字符来表示二进制数据的方法”。

        什么是“可打印字符”呢？为什么要用它来传输8Bit字节...]]></description><category></category></item><item><title><![CDATA[数据库中的 varchar(255)]]></title><link>https://blog.youkuaiyun.com/z8756413/article/details/84069283</link><guid>https://blog.youkuaiyun.com/z8756413/article/details/84069283</guid><author>z8756413</author><pubDate>Wed, 14 Nov 2018 16:46:37 +0800</pubDate><description><![CDATA[在字符集为UTF-8的情况下：


MySQL | ver &amp;lt; 4.1： VARCHAR以字节为单位存储，所以假设全部为常用汉字（UTF-8

3字节编码长度），则VARCHAR(255)共可存放约85个汉字；

MySQL | ver &amp;gt;= 4.1：

VARCHAR以字符为单位存储，假设输入仍然为常用汉字，则VARCHAR(255)可以存放255个汉字。 


另外，据我所知，My...]]></description><category></category></item><item><title><![CDATA[Http状态码梳理]]></title><link>https://blog.youkuaiyun.com/z8756413/article/details/83996063</link><guid>https://blog.youkuaiyun.com/z8756413/article/details/83996063</guid><author>z8756413</author><pubDate>Mon, 12 Nov 2018 18:04:11 +0800</pubDate><description><![CDATA[对网站管理工作者来说有个词不陌生，HTTP状态码，它是用以表示网页服务器HTTP响应状态的3位数字代码。状态码的第一个数字代表了响应的五种状态之一。

　　1XX系列：指定客户端应相应的某些动作，代表请求已被接受，需要继续处理。由于 HTTP/1.0 协议中没有定义任何 1xx 状态码，所以除非在某些试验条件下，服务器禁止向此类客户端发送 1xx 响应。

 

　　2XX系列：代表请求已成功被服...]]></description><category></category></item><item><title><![CDATA[VO、DTO、DO、PO概念，区别与联系]]></title><link>https://blog.youkuaiyun.com/z8756413/article/details/78581106</link><guid>https://blog.youkuaiyun.com/z8756413/article/details/78581106</guid><author>z8756413</author><pubDate>Mon, 20 Nov 2017 12:28:44 +0800</pubDate><description><![CDATA[转自 http://blog.youkuaiyun.com/zjrbiancheng/article/details/6253232                         概念： VO（View Object）：视图对象，用于展示层，它的作用是把某个指定页面（或组件）的所有数据封装起来。 DTO（Data Transfer Object）：数据传输对象，这个概念来源于J2EE的设计模式，原来的目的是为]]></description><category></category></item><item><title><![CDATA[Spring mvc的注解是如何工作的]]></title><link>https://blog.youkuaiyun.com/z8756413/article/details/78578382</link><guid>https://blog.youkuaiyun.com/z8756413/article/details/78578382</guid><author>z8756413</author><pubDate>Sun, 19 Nov 2017 23:43:41 +0800</pubDate><description><![CDATA[从前年开始使用spring和hibernate，mybatis等框架时，就转到注解来了。直到前些时，突然对注解开始好奇起来。为什么写注解就可以了？不需要大量配置文件呢？于是我查看了一些资料，对注解有了初步了解。
引言：什么是注解？
在IDE中，我们可以链接spring mvc中的@RequestMapping注解，发现以下源码[java] view plain copy print?@Target(]]></description><category></category></item><item><title><![CDATA[JAVA注解]]></title><link>https://blog.youkuaiyun.com/z8756413/article/details/78571799</link><guid>https://blog.youkuaiyun.com/z8756413/article/details/78571799</guid><author>z8756413</author><pubDate>Sat, 18 Nov 2017 22:30:34 +0800</pubDate><description><![CDATA[自定义注解
定义注解后，需要有相应的注解解释器才有用。如dpsf的@Reference注解，定义的相关属性需要在启动的时候由相应的注解解释方法读取，才能对代码产生实质作用。]]></description><category></category></item><item><title><![CDATA[git 相关知识]]></title><link>https://blog.youkuaiyun.com/z8756413/article/details/78571527</link><guid>https://blog.youkuaiyun.com/z8756413/article/details/78571527</guid><author>z8756413</author><pubDate>Sat, 18 Nov 2017 21:51:49 +0800</pubDate><description><![CDATA[（1）git  config
 Git有一个工具被称为git config，它允许你获得和设置配置变量；这些变量可以控制Git的外观和操作的各个方面。这些变量可以被存储在三个不同的位置：  
　　1./etc/gitconfig 文件：包含了适用于系统所有用户和所有库的值。如果你传递参数选项’--system’ 给 git config，它将明确的读和写这个文件。  
　　2.~/.gitc]]></description><category></category></item><item><title><![CDATA[数据库相关]]></title><link>https://blog.youkuaiyun.com/z8756413/article/details/78570938</link><guid>https://blog.youkuaiyun.com/z8756413/article/details/78570938</guid><author>z8756413</author><pubDate>Sat, 18 Nov 2017 20:21:30 +0800</pubDate><description><![CDATA[DML（data manipulation language）是数据操纵语言：它们是SELECT、UPDATE、INSERT、DELETE，就象它的名字一样，这4条命令是用来对数据库里的数据进行操作的语言。
DDL（data definition language）是数据定义语言：DDL比DML要多，主要的命令有CREATE、ALTER、DROP等，DDL主要是用在定义或改变表（TABLE）的结]]></description><category></category></item><item><title><![CDATA[git从无到有过程]]></title><link>https://blog.youkuaiyun.com/z8756413/article/details/78560311</link><guid>https://blog.youkuaiyun.com/z8756413/article/details/78560311</guid><author>z8756413</author><pubDate>Fri, 17 Nov 2017 13:54:47 +0800</pubDate><description><![CDATA[（1）github申请账号
（2）本地安装git
（3）安装git
（4）本地建立目录并新建test.txt
（5）远端建立相同目录
（6）添加ssh密钥
由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的，所以我们需要配置验证信息：

使用以下命令生成SSH Key： 

$ ssh-keygen -t rsa -C "youremail@example.c]]></description><category></category></item><item><title><![CDATA[进程地址空间和虚拟地址空间]]></title><link>https://blog.youkuaiyun.com/z8756413/article/details/49757573</link><guid>https://blog.youkuaiyun.com/z8756413/article/details/49757573</guid><author>z8756413</author><pubDate>Tue, 10 Nov 2015 11:42:00 +0800</pubDate><description><![CDATA[见链接：http://soft.chinabyte.com/os/51/12324551.shtml]]></description><category></category></item><item><title><![CDATA[Volatile关键字]]></title><link>https://blog.youkuaiyun.com/z8756413/article/details/49359009</link><guid>https://blog.youkuaiyun.com/z8756413/article/details/49359009</guid><author>z8756413</author><pubDate>Fri, 23 Oct 2015 11:18:27 +0800</pubDate><description><![CDATA[volatile的作用是： 作为指令关键字，确保本条指令不会因编译器的优化而省略，且要求每次直接读值.

简单地说就是防止编译器对代码进行优化.比如如下程序：
XBYTE[2]=0x55;
XBYTE[2]=0x56;
XBYTE[2]=0x57;
XBYTE[2]=0x58;


对外部硬件而言，上述四条语句分别表示不同的操作，会产生四种不同的动作，但是编译器却会对上述四条语句进行优化]]></description><category></category></item></channel></rss>