<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[技术人生]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/zdp072</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zdp072]]></copyright><item><title><![CDATA[实现mysql的sequence]]></title><link>https://blog.youkuaiyun.com/zdp072/article/details/89378692</link><guid>https://blog.youkuaiyun.com/zdp072/article/details/89378692</guid><author>zdp072</author><pubDate>Thu, 18 Apr 2019 14:49:26 +0800</pubDate><description><![CDATA[背景
因为做oracle迁移mysql的工作，mysql并不具有sequence语法，所以需要自己想办法模拟实现一个sequence。
步骤

建一张表e_sys_sequence用来记录序列名称和值

CREATE TABLE `e_sys_sequence` (
    `sequence_name`  varchar(64) NOT NULL COMMENT '序列名称' ,
    `va...]]></description><category></category></item><item><title><![CDATA[记录两个工作中用到的存储过程]]></title><link>https://blog.youkuaiyun.com/zdp072/article/details/88886391</link><guid>https://blog.youkuaiyun.com/zdp072/article/details/88886391</guid><author>zdp072</author><pubDate>Fri, 29 Mar 2019 10:53:50 +0800</pubDate><description><![CDATA[使用存储过程批量删除数据
按天删除目标表中xxx_no重复的数据, 只保留最近的一条。
declare
  pragma autonomous_transaction;
  n_delete number := 0;
begin
  while 1 = 1 loop
    EXECUTE IMMEDIATE 'delete from xxx_log t where t.rowid not in ...]]></description><category></category></item><item><title><![CDATA[服务框架的技术栈]]></title><link>https://blog.youkuaiyun.com/zdp072/article/details/88538541</link><guid>https://blog.youkuaiyun.com/zdp072/article/details/88538541</guid><author>zdp072</author><pubDate>Wed, 13 Mar 2019 18:23:35 +0800</pubDate><description><![CDATA[1. 概述
架构的改变，往往是因为业务规模的扩张。
随着业务规模的扩张，为了满足业务对技术的要求，技术架构需要从单体应用架构升级到分布式服务架构，来降低公司的技术成本，更好的适应业务的发展。分布式服务架构的诸多优势，这里就不一一列举了，今天围绕的话题是服务框架，为了推行服务化，必然需要一套易用的服务框架，来支撑业务技术架构升级。
2. 服务框架
服务框架的核心是服务调用，分布式服务架构中的服务分布...]]></description><category></category></item><item><title><![CDATA[使用zookeeper实现分布式锁]]></title><link>https://blog.youkuaiyun.com/zdp072/article/details/88429000</link><guid>https://blog.youkuaiyun.com/zdp072/article/details/88429000</guid><author>zdp072</author><pubDate>Tue, 12 Mar 2019 20:53:53 +0800</pubDate><description><![CDATA[#分布式锁原理

每个线程在/locks节点下创建一个临时有序节点test_lock_0000000040
获得/locks节点下所有子节点A、B、C，排序得出最小值
若当前节点A为最小值则获得锁，执行业务逻辑
若当前节点C不是最小值则watch比自己小1的节点A，节点A存在则await，否则获得锁

总结：临时有序节点排序后watch比自己小1的节点。

#开源框架curator实现分布式锁
使...]]></description><category></category></item><item><title><![CDATA[zookeeper数据结构模型和特点]]></title><link>https://blog.youkuaiyun.com/zdp072/article/details/88404562</link><guid>https://blog.youkuaiyun.com/zdp072/article/details/88404562</guid><author>zdp072</author><pubDate>Mon, 11 Mar 2019 19:05:24 +0800</pubDate><description><![CDATA[zookeeper数据结构模型和特点
zk数据结构模型
zk的数据结构类似linux中的文件系统结构, 如下图所示:

zk数据结构特点

每个子目录都被称为znode, 每个znode是它所在路径的唯一标识, 如Server1这个znode的标识为/NameService/Server1。
znode可以有子目录, 每个znode可以存储数据。
每个访问路径中可以存储多份数据
znode可以是临...]]></description><category></category></item><item><title><![CDATA[Java中的锁]]></title><link>https://blog.youkuaiyun.com/zdp072/article/details/84991514</link><guid>https://blog.youkuaiyun.com/zdp072/article/details/84991514</guid><author>zdp072</author><pubDate>Thu, 13 Dec 2018 17:18:11 +0800</pubDate><description><![CDATA[前言
Java中有很多的锁, 本文将对锁进行归纳总结, 便于自己以后学习理解。

乐观锁和悲观锁
乐观锁和悲观锁都是一种广义上的概念，在Java和数据库中都有对此概念的实际应用。
悲观锁认为自己在使用数据的时候一定有别的线程来修改数据，因此在获取数据的时候会先加锁，确保数据不会被别的线程修改。在Java中synchronized关键字和Lock的实现类都是悲观锁。
乐观锁认为自己在使用数据的时候不...]]></description><category></category></item><item><title><![CDATA[设计模式之简单工厂]]></title><link>https://blog.youkuaiyun.com/zdp072/article/details/82818633</link><guid>https://blog.youkuaiyun.com/zdp072/article/details/82818633</guid><author>zdp072</author><pubDate>Sat, 22 Sep 2018 23:10:40 +0800</pubDate><description><![CDATA[简单工厂也是一种比较简单的设计模式，下面为简单的代码实现。
ProductFactory
工厂类，负责创建具体的产品
public class ProductFactory {
	/**
	 * 创建产品对象
	 * 使用泛型对输入参数做了两层限制：
	 * 1.必须为class类型
	 * 2.必须为Product的实现类
	 * 输入参数通常为String、Enum、Class等
	 * @p...]]></description><category></category></item><item><title><![CDATA[设计模式之简单工厂]]></title><link>https://blog.youkuaiyun.com/zdp072/article/details/82818554</link><guid>https://blog.youkuaiyun.com/zdp072/article/details/82818554</guid><author>zdp072</author><pubDate>Sat, 22 Sep 2018 23:00:38 +0800</pubDate><description><![CDATA[简单工厂通用的实现代码：
ProductFactory：
工厂类，通过它产生product
public class ProductFactory {
	/**
	 * 创建产品对象
	 * 使用泛型对输入参数做了两层限制：
	 * 1.必须为class类型
	 * 2.必须为Product的实现类
	 * 输入参数通常为String、Enum、Class等
	 * @param c
	 * @r...]]></description><category></category></item><item><title><![CDATA[设计模式之多例模式]]></title><link>https://blog.youkuaiyun.com/zdp072/article/details/82818048</link><guid>https://blog.youkuaiyun.com/zdp072/article/details/82818048</guid><author>zdp072</author><pubDate>Sat, 22 Sep 2018 21:51:33 +0800</pubDate><description><![CDATA[###多例模式：
类可以存在有限的多个实例对象。
###多例模式的特点

通过容器保存实例对象
利用私有构造器阻止外部创建对象
通过getInstance方法获取实例对象

###代码演示
创建两个机器人对象：
package com.company.section5;

import java.util.HashMap;
import java.util.Random;

/**
 * 机器人
...]]></description><category></category></item><item><title><![CDATA[mac安装brew报错及解决办法]]></title><link>https://blog.youkuaiyun.com/zdp072/article/details/82563320</link><guid>https://blog.youkuaiyun.com/zdp072/article/details/82563320</guid><author>zdp072</author><pubDate>Sun, 09 Sep 2018 22:27:55 +0800</pubDate><description><![CDATA[1.-bash: brew: command not found 
解决办法:

vi ~/.bash_profile
export PATH=/usr/local/bin:$PATH
source ~/.bash_profile

2.chown: /usr/local: Operation not permitted 
先卸载已安装的homebrew，命令如下：

/usr/bin/ruby ...]]></description><category></category></item><item><title><![CDATA[virtualbox中搭建centos环境]]></title><link>https://blog.youkuaiyun.com/zdp072/article/details/80141096</link><guid>https://blog.youkuaiyun.com/zdp072/article/details/80141096</guid><author>zdp072</author><pubDate>Sun, 29 Apr 2018 09:22:20 +0800</pubDate><description><![CDATA[创建虚拟机

打开Virtual Box，点击“新建”按钮，点击“下一步”，输入虚拟机名称为eshop-cache01，选择操作系统为Linux，选择版本为Red Hat，分配1024MB内存，后面的选项全部用默认，在Virtual Disk File location and size中，一定要自己选择一个目录来存放虚拟机文件，最后点击“create”按钮，开始创建虚拟机。



设置虚拟机网卡...]]></description><category></category></item><item><title><![CDATA[Hbase入门笔记]]></title><link>https://blog.youkuaiyun.com/zdp072/article/details/79831291</link><guid>https://blog.youkuaiyun.com/zdp072/article/details/79831291</guid><author>zdp072</author><pubDate>Fri, 06 Apr 2018 09:54:26 +0800</pubDate><description><![CDATA[在我学习Hbase的时候有几个概念需要重点理解一下，列出4个基础概念如下图所示： 




Column Family的概念

Column Family又叫列族，Hbase通过列族划分数据的存储，列族下面可以包含任意多的列，实现灵活的数据存取。刚接触的时候，理解起来有点吃力。我想到了一个非常类似的概念，理解起来就非常容易了。那就是家族的概念，我们知道一个家族是由于很多个的家庭组成的。列族也类似，...]]></description><category></category></item><item><title><![CDATA[Springboot企业微信点餐系统笔记]]></title><link>https://blog.youkuaiyun.com/zdp072/article/details/79783682</link><guid>https://blog.youkuaiyun.com/zdp072/article/details/79783682</guid><author>zdp072</author><pubDate>Mon, 02 Apr 2018 00:22:27 +0800</pubDate><description><![CDATA[lombok插件的使用

lombok能在编译生成的字节码文件中会帮我们生成这些方法, 让代码更简洁 
使用方法:  
1. 下载lombok.jar插件并双击安装到eclipse目录 
2. maven项目引入依赖 
3. 类实体类上添加注解@Data



DO/DTO/VO

DO: 对应数据库的实体对象, 和数据库字段一一对应 
DTO: 数据传输对象, DTO本身并不是业务对象 
VO:...]]></description><category></category></item><item><title><![CDATA[docker入门笔记]]></title><link>https://blog.youkuaiyun.com/zdp072/article/details/79781243</link><guid>https://blog.youkuaiyun.com/zdp072/article/details/79781243</guid><author>zdp072</author><pubDate>Sun, 01 Apr 2018 20:19:24 +0800</pubDate><description><![CDATA[三大组件

仓库, 镜像, 容器



仓库

镜像存放在仓库中, 仓库分公开仓库和私有仓库



镜像

镜像其实就是一个创建并打包好的环境, 如mysql环境, redis环境 
Docker运行容器前需要本地存在对应的镜像.

容器

容器是镜像的一个运行实例, 使用镜像可以快速的创建很多容器, 容器和容器之间是隔离的, 互不影响...]]></description><category></category></item><item><title><![CDATA[springcloud入门笔记]]></title><link>https://blog.youkuaiyun.com/zdp072/article/details/79773549</link><guid>https://blog.youkuaiyun.com/zdp072/article/details/79773549</guid><author>zdp072</author><pubDate>Sat, 31 Mar 2018 21:41:37 +0800</pubDate><description><![CDATA[注册中心Eureka

1.服务提供者将服务注册到注册中心 
2.服务消费者通过注册中心查找服务 
3.查找到服务后进行调用 
4.服务的消费者与服务注册中心保持心跳连接, 一旦服务提供者的地址发生变更时,注册中心会通知服务消费者 




负载均衡Ribbon

为Ribbion配置服务提供者地址列表后, Ribbon默认使用轮询的负载均衡算法, 自动地帮助服务消费者去请求. 




断路器H...]]></description><category></category></item><item><title><![CDATA[解决maven下载慢的问题]]></title><link>https://blog.youkuaiyun.com/zdp072/article/details/79767189</link><guid>https://blog.youkuaiyun.com/zdp072/article/details/79767189</guid><author>zdp072</author><pubDate>Sat, 31 Mar 2018 11:18:17 +0800</pubDate><description><![CDATA[1.将D:\apache-maven-3.2.1\conf 目录下的settings.xml文件复制到.m2文件夹中 
2.修改settings.xml文件, 在中添加以下代码：



    &amp;lt;!-- 阿里云仓库 --&amp;gt;
    &amp;lt;mirror&amp;gt;
       &amp;lt;id&amp;gt;alimaven&amp;lt;/id&amp;gt;
       &amp;lt;mirrorOf&amp;gt;cen...]]></description><category></category></item><item><title><![CDATA[springboot入门笔记]]></title><link>https://blog.youkuaiyun.com/zdp072/article/details/79720671</link><guid>https://blog.youkuaiyun.com/zdp072/article/details/79720671</guid><author>zdp072</author><pubDate>Tue, 27 Mar 2018 22:37:42 +0800</pubDate><description><![CDATA[@Configuration和@Bean

@Configuration作用于类上, 相当于一个xml配置文件 
@Bean作用于方法上, 相当于xml配置中的



@Configuration
// 通过该注解来表明该类是一个Spring的配置，相当于一个xml文件
@ComponentScan(basePackages = &quot;cn.itcast.springboot.javaconfig&quot;)...]]></description><category></category></item><item><title><![CDATA[淘淘商城笔记 - day11]]></title><link>https://blog.youkuaiyun.com/zdp072/article/details/79679720</link><guid>https://blog.youkuaiyun.com/zdp072/article/details/79679720</guid><author>zdp072</author><pubDate>Sat, 24 Mar 2018 17:12:32 +0800</pubDate><description><![CDATA[http与RPC

http请求走的是http协议，短连接，访问完后连接关闭 
RPC为长连接，用完后连接不会关闭



Dubbo

Dubbo缺省协议采用单一长连接和NIO异步通讯，适合于小数据量大并发的服务调用，以及适用于服务消费者机器数远大于服务提供者机器数的情况。 
Dubbo缺省协议不适合传送大数据量的服务，比如传文件、视频等...]]></description><category></category></item><item><title><![CDATA[淘淘商城笔记 - day10]]></title><link>https://blog.youkuaiyun.com/zdp072/article/details/79605052</link><guid>https://blog.youkuaiyun.com/zdp072/article/details/79605052</guid><author>zdp072</author><pubDate>Sun, 18 Mar 2018 21:46:45 +0800</pubDate><description><![CDATA[联合索引

tb_cart表user_id和item_id设为联合索引 
sql1, sql2, sql3会走索引, sql4不走索引 
使用联合索引, 一定要注意索引字段的顺序



SELECT * FROM tb_cart WHERE user_id = 1 AND item_id = 1;
SELECT * FROM tb_cart WHERE item_id = 1 AND user_i...]]></description><category></category></item><item><title><![CDATA[淘淘商城笔记 - day09]]></title><link>https://blog.youkuaiyun.com/zdp072/article/details/79522034</link><guid>https://blog.youkuaiyun.com/zdp072/article/details/79522034</guid><author>zdp072</author><pubDate>Mon, 12 Mar 2018 00:04:29 +0800</pubDate><description><![CDATA[耦合度

耦合度是指其他团队的版本升级会影响到我们系统

rabbitmq的5中队列



简单队列:

生产者将消息发送到队列, 消费者从队列中获取消息

Work模式

一个生产者, 2个消费者, 同一个消息只能被一个消费者获取



订阅模式

一个生产者, 多个消费者, 每个消费者都有自己的一个队列 
生产者没有将消息直接发送到队列, 而是发送到交换机 
每个队列都要绑定到交换机, 生产者...]]></description><category></category></item></channel></rss>