<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
  <channel>
  	<title>优客志</title>
  	<description>优客志</description>
  	<link>https:https://www.youcl.com</link>
  	<copyright>Copyright 2026 www.youcl.com. All Rights Reserved.</copyright>
  	<language>zh-cn</language>
  	<item>
  		<title>WSL安装、升级和优化使用</title>
  		<link>https:https://www.youcl.com/info/11641</link>
  		<pubDate>2021-04-30 17:25:16</pubDate>
  		<description><![CDATA[欢迎使用WSL 你好！ 这可能是你第一次使用 WSL(Windows Subsystem for Linux) ，这篇blog是在准备操作系统实验的时候写的，看到很多身边的同学还在苦苦挣扎搞虚拟机，搞个虚拟机都搞个一天，这里就介绍一下WSL。 Why WSL？ 开始前可以思考一个问题，为什么用WSL，其实有了解过的同学答案都很显而易见，WSL轻量，简洁，几乎可以和原生态Windows无缝交互，安装简单，所占用资源少，对于初学者来说可以说是特别友好了，对于比较专业的人来说，双系统和WSL肯定是首选，至于虚拟机像VMware之类的就看宁喜欢用就用吧。 配置 电脑：舍友电脑（普通游戏本轻薄本都带得动） 系统：Win10-2004 Step 1 设置Windows功能 设置Windows功能，打开 控制面板 - 卸载程序，右侧，启用或关闭Windows功能。 图中三个功能，重启开机 Step 2 下载Ubuntu 重开机后打开Microsoft Store，搜索Ubuntu，我这里选择的是18.]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Spring Cloud + Mybatis 多数据源配置</title>
  		<link>https:https://www.youcl.com/info/11615</link>
  		<pubDate>2019-07-25 14:28:05</pubDate>
  		<description><![CDATA[一、数据源自动配置禁用 1、将spring boot自带的DataSourceAutoConfiguration禁掉，防止自动配置数据源。在@SpringBootApplication注解中添加exclude属性即可。 2、添加注解@EnableTransactionManagement 并创建两个事务管理器 
@SpringBootApplication(exclude = {
		DataSourceAutoConfiguration.class
})
@EnableTransactionManagement
public class ManagerApplication {

	public static void main(String[] args) {
		SpringApplication.run(ManagerApplication.class, args);
	}
	@Bean
	public PlatformTransactionManager]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>分布式系统的负载均衡</title>
  		<link>https:https://www.youcl.com/info/11614</link>
  		<pubDate>2019-07-24 13:08:59</pubDate>
  		<description><![CDATA[一、 什么是负载均衡？ 什么是负载均衡？ 记得第一次接触 Nginx 是在实验室，那时候在服务器部署网站需要用 Nginx 。Nginx 是一个服务组件，用来反向代理、负载平衡和 HTTP 缓存等。那么这里的 负载均衡 是什么？ 负载均衡（LB，Load Balance），是一种技术解决方案。用来在多个资源（一般是服务器）中分配负载，达到最优化资源使用，避免过载。 资源，相当于每个服务实例的执行操作单元，负载均衡就是将大量的数据处理操作分摊到多个操作单元进行执行，用来解决互联网分布式系统的大流量、高并发和高可用的问题。那什么是高可用呢？ 二、什么是高可用？ 首先了解什么是高可用？ 这是 CAP 定理是分布式系统的基础，也是分布式系统的 3 个指标： Consistency（一致性） Availability（可用性） Partition tolerance（分区容错性） 那高可用（High Availability）是什么？高可用，简称 HA，是系统一种特征或者指标，通常是指，提供一定性]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Jenkins集成SonarQube 实现构建项目同时审查代码</title>
  		<link>https:https://www.youcl.com/info/11613</link>
  		<pubDate>2019-07-18 01:55:31</pubDate>
  		<description><![CDATA[软件版本： SonarQube:7.7 Jenkins:2.164.3 一、简介 SonarQube是一个开源的代码质量分析平台，便于管理代码的质量，可检查出项目代码的漏洞和潜在的逻辑问题。同时，它提供了丰富的插件，支持多种语言的检测， 如 Java、Python、Groovy、C#、C、C++等几十种编程语言的检测。 核心价值观： 检查代码是否遵循编程标准：如命名规范，编写的规范等。 检查设计存在的潜在缺陷：SonarQube通过插件Findbugs、Checkstyle等工具检测代码存在的缺陷。 检测代码的重复代码量：SonarQube可以展示项目中存在大量复制粘贴的代码。 检测代码中注释的程度：源码注释过多或者太少都不好，影响程序的可读可理解性。 检测代码中包、类之间的关系：分析类之间的关系是否合理，复杂度情况。 SonarQube主要由4个组件组成： 一个SonarQube服务器启动3个主要流程： Web服务器，供开发人员，管理人员浏览高质量快照并配置SonarQube实例 基于]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Spring Cloud Hystrix 熔断</title>
  		<link>https:https://www.youcl.com/info/11610</link>
  		<pubDate>2019-07-17 01:44:19</pubDate>
  		<description><![CDATA[一、什么是熔断 在一个家庭中有各种各样的家电，我们假设每个家电都没有保险丝，一旦有一天某个家电出现短路，造成整个电路短路然后很有可能就把整个家庭的电器及电路给烧坏了。但如果每个家电入口线路都有一个保险丝（断路器），那么不管那个家电发生短路这个家电的保险丝就会快速熔断（断开电路），从而保护了整个电路及电路上其它的家电的正常运行。 软件行业里面的熔断机制与这个一致，在整个微服务集群中，由于其中一个或者几个微服务出现故障或堵塞，若没有快速的熔断机制，就会造成整个微服务集群的拥堵最终整个微服务出现雪崩被拖死。熔断机制的核心机制就是在确保某个微服务出现故障的时候实现快速熔断（断路）或者服务降级快速失败，避免拥堵。从而保证其它业务其它服务的正常运行。 二、Hystrix 设计原则 防止单个服务的故障，耗尽整个系统服务的容器（比如tomcat）的线程资源，避免分布式环境里大量级联失败。通过第三方客户端访问（通常是通过网络）依赖服务出现失败、拒绝、超时或短路时执行回退逻辑。 用快速失败代替排队(每个依赖]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>使用Jenkins进行自动化部署</title>
  		<link>https:https://www.youcl.com/info/11612</link>
  		<pubDate>2019-07-16 01:53:54</pubDate>
  		<description><![CDATA[Jenkins是一个独立的开源软件项目，是基于Java开发的一种持续集成工具，用于监控持续重复的工作，旨在提供一个开放易用的软件平台，使软件的持续集成变成可能。前身是Hudson是一个可扩展的持续集成引擎。可用于自动化各种任务，如构建，测试和部署软件。Jenkins可以通过本机系统包Docker安装，甚至可以通过安装Java Runtime Environment的任何机器独立运行。 主要用于： 持续、自动地构建/测试软件项目，如CruiseControl与DamageControl。 监控一些定时执行的任务。 安装前的准备 CentOS7 安装2.0之后的需要安装jdk1.8及以上 rpm安装包地址 一、安装 1. 安装rpm包 2.Jenkins配置jdk 
vi /etc/rc.d/init.d/jenkins
 3.修改Jenkins默认端口 Jenkins的默认JENKINS_PORT是8080，同Tomcat默认端口冲突 
vi /etc/sysconfig/jenki]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>SpringBoot2.0 整合 RocketMQ ,实现请求异步处理</title>
  		<link>https:https://www.youcl.com/info/11609</link>
  		<pubDate>2019-07-02 00:42:03</pubDate>
  		<description><![CDATA[一、RocketMQ 1、架构图片 2、角色分类 (1)、Broker RocketMQ 的核心，接收 Producer 发过来的消息、处理 Consumer 的消费消息请求、消息的持 久化存储、服务端过滤功能等 。 (2)、NameServer 消息队列中的状态服务器，集群的各个组件通过它来了解全局的信息 。类似微服务中注册中心的服务注册，发现，下线，上线的概念。 热备份： NamServer可以部署多个，相互之间独立，其他角色同时向多个NameServer 机器上报状态信息。 心跳机制： NameServer 中的 Broker、 Topic等状态信息不会持久存储，都是由各个角色定时上报并存储到内存中，超时不上报的话， NameServer会认为某个机器出故障不可用。 (3)、Producer 消息的生成者，最常用的producer类就是DefaultMQProducer。 (4)、Consumer 消息的消费者，常用Consumer类 DefaultMQPushConsumer 收]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Redis从入门到放弃系列(十) Cluster</title>
  		<link>https:https://www.youcl.com/info/11611</link>
  		<pubDate>2019-07-01 01:49:33</pubDate>
  		<description><![CDATA[Redis从入门到放弃系列(十) Cluster 本文例子基于：5.0.4 Redis Cluster集群高可用方案,去中心化,最基本三主多从,主从切换类似Sentinel,关于Sentinel内容可以查看编者另外一篇【Redis从入门到放弃系列(九) Sentinel】. 在Redis Cluster中,只存在index为0的数据库,而且其实Redis作为单线程,如果在同一个实例上创建多个库的话,也是需要上下文切换的. slot 由于Redis Cluster是采用16384个slot来划分数据的,也就是说你当前插入的数据会存在不同的节点上,简而言之不支持比较复杂的多建操作(可以对key打上hash tags来解决). 我们说Cluster是按照16384个slot来划分数据的,那么是如何来确定一个key落在那个节点上呢? 
//计算slot
HASH_SLOT = CRC16(key) mod 16384

 每个节点会拥有一部分的slot,通过上述获取到具体key的slot]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>RabbitMQ指南之五：主题交换器（Topic Exchange）</title>
  		<link>https:https://www.youcl.com/info/11608</link>
  		<pubDate>2019-07-01 00:41:03</pubDate>
  		<description><![CDATA[在上一章中，我们完善了我们的日志系统，用direct交换器替换了fanout交换器，使得我们可以有选择性地接收消息。尽管如此，仍然还有限制：不能基于多个标准进行路由。在我们的日志系统中，我们可能不仅希望根据日志等级订阅日志，还希望根据日志来源订阅日志。这个概念来自于unix工具syslog，它不仅可以根据日志等级(info/warn/crit...)来路由日志，同时还可以根据设备（auth/cron/kern...）来路由日志。这将更加灵活，我们可能希望只监听来自'cron'的error级别日志，同时又要接收来自'kern'的所有级别的日志。我们的日志系统如果要实现这个功能，就需要使用到另外一种交换器：主题交换器（Topic Exchange）。 1、主题交换器（Topic Exchange） 　　发送到主题交换器的消息不能有任意的routing key，必须是由点号分开的一串单词，这些单词可以是任意的，但通常是与消息相关的一些特征。比如以下是几个有效的routing key： "sto]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>RabbitMQ指南之四：路由（Routing）和直连交换机（Direct Exchange）</title>
  		<link>https:https://www.youcl.com/info/11607</link>
  		<pubDate>2019-07-01 00:40:20</pubDate>
  		<description><![CDATA[　在上一章中，我们构建了一个简单的日志系统，我们可以把消息广播给很多的消费者。在本章中我们将增加一个特性：我们可以订阅这些信息中的一些信息。例如，我们希望只将error级别的错误存储到硬盘中，同时可以将所有级别（error、info、warning等）的日志都打印在控制台上。 1、绑定（Bindings） 　　在上一章中，我们已经创建了绑定关系，回顾一下代码： 
1 channel.queueBind(queueName, EXCHANGE_NAME, "");
 　　一个绑定是一个交换器与队列之间的关系。意思是指：这个队列对这个交换器的消息感兴趣。 　　该方法同时还有另一个routing Key参数，为了避免与basic_public参数产生中的路由键(routing key)混淆，我们称之为绑定键(bingind key)，下面展示了如何通过一个绑定key创建一个绑定： 
1 channel.queueBind(queueName, EXCHANGE_NAME, "black"]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>RabbitMQ指南之三：发布/订阅模式（Publish/Subscribe）</title>
  		<link>https:https://www.youcl.com/info/11606</link>
  		<pubDate>2019-06-29 00:44:34</pubDate>
  		<description><![CDATA[在上一章中，我们创建了一个工作队列，工作队列模式的设想是每一条消息只会被转发给一个消费者。本章将会讲解完全不一样的场景： 我们会把一个消息转发给多个消费者，这种模式称之为发布-订阅模式。 　　为了阐述这个模式，我们将会搭建一个简单的日志系统，它包含两种程序：一种发送日志消息，另一种接收并打印日志消息。在这个日志系统里，每一个运行的消费者都可以获取到消息，在这种情况下，我们可以实现这种需求：一个消费者接收消息并写入磁盘，另一个消费者接收消息并打印在电脑屏幕上。简单来说，生产者发布的消息将会以广播的形式转发到所有的消费者。 1、交换器（Exchange） 　　在前两章节我们，我们往队列中发布消息或获取消息，然而，前面的讲解其实并不完整，接下来，是时候介绍完整的RabbitMq消息模型了。 　　回忆一下我们前两章指南中包含的内容： 一个生产者用以发送消息； 一个队列缓存消息； 一个消费者用以消费队列中的消息。 　　RabbitMq消息模式的核心思想是：一个生产者并不会直接往一个队列中发送消息，]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>RabbitMQ指南之二：工作队列（Work Queues）</title>
  		<link>https:https://www.youcl.com/info/11605</link>
  		<pubDate>2019-06-28 15:38:45</pubDate>
  		<description><![CDATA[在上一章的指南中，我们写了一个命名队列：生产者往该命名队列发送消息、消费从从该命名队列中消费消息。在本章中，我们将创建一个工作队列，用于在多个工作者之间分配耗时的任务。工作队列(即任务队列)的主要思想是避免立即执行那些需要等他们执行完成的资源密集型任务。相反，我们将任务安排在稍后完成。我们将任务封装为消息并将其发送到队列，后台运行的工作进程将取出任务并执行完成。如果你启动了多个工作者，这些任务将在多个工作者之间分享。 这个概念也即我们说的异步，在项目中，有时候一个简单的Web请求，后台要做一系统的操作，这时候，如果后台执行完成之后再给前台返回消息将会导致浏览器页面等待从而出现假死状态。因此，通常的做法是，在这个Http请求到后台，后台获取到正确的参数等信息后立即给前台返回一个成功标志，然后后台异步地进行后续的操作。 1、准备 　　本章中，我们将发送字符串消息来模拟复杂的任务。这里因为没有一个真实的复杂任务，因此用Thread.sleep()方法来模拟复杂耗时的任务。我们用字符串中的含点（]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>RabbitMQ指南之一："Hello World!" </title>
  		<link>https:https://www.youcl.com/info/11604</link>
  		<pubDate>2019-06-28 00:35:05</pubDate>
  		<description><![CDATA[　　为什么要使用MQ消息中间件？它解决了什么问题？关于为什么要使用消息中间件？消息中间件是如何做到同步变异步、流量削锋、应用解耦的？网上已经有很多说明，我这里就不再说明。我在接下来的RabbitMq系列博客里会将官方的讲解翻译过来，同时加以自己的理解整理成博客，希望能和大家共同交流，一起进步。 　　　　　　　　　　　　　　　　　　RabbitMq原理图 1、RabbitMq简介 　　RabbitMq是一个消息中间件：它接收消息、转发消息。你可以把它理解为一个邮局：当你向邮箱里寄出一封信后，邮递员们就能最终将信送到收信人手中。类似的，RabbitMq就好比是一个邮箱、邮局和邮递员。RabbitMq和邮局最大的区别是：RabbitMq接收、转发的都是二进制数据块--消息，而不是纸质的数据文件。 　　RabbitMq、消息相关术语如下： 　　生产者：生产者只发送消息，发送消息的程序即为生产者： 　　消息队列：消息队列就相当于RabbitMq中的邮箱名称。尽管消息在你的程序和RabbitMq中流]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Redis从入门到放弃系列(九) Sentinel</title>
  		<link>https:https://www.youcl.com/info/11603</link>
  		<pubDate>2019-06-23 00:31:07</pubDate>
  		<description><![CDATA[Redis从入门到放弃系列(九) Sentinel 本文例子基于：5.0.4 Redis Sentinel作为Redis高可用方案,具有监听,通知,自动故障转移等功能.这一切都是依赖主备同步的大前提(参考上一节:Redis从入门到放弃系列(八) 主备同步). 监听: Sentinel会不断检查master节点跟replica节点是否正常工作 通知: 当某个节点运行出现问题的时候,能够通知其他的进程(eg:客户端) 自动故障转移: 当master节点down了,Sentinel会启用故障转移进程,将replica节点提升为master节点,其他的replica节点重新配置新的master节点,并且告知客户端需要重新连接的是哪个master地址. 在互联网应用中,程序如果只是单台部署的话,都会存在单点问题,那么作为Redis高可用方案的Sentinel是如何解决这一问题呢? 欢迎关注微信公众号黑搜丶D(black-search) 启动方式 redis-server sentinel配置文件]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>act-morphia 1.7.2 带来不一样的数据聚合体验</title>
  		<link>https:https://www.youcl.com/info/11591</link>
  		<pubDate>2019-06-19 01:06:17</pubDate>
  		<description><![CDATA[1. 概述 Mongodb 2.2 开始就提供了数据Aggregation Pipeline (聚合管道)用于简单数据分析统计,包括计数(count),求和(sum),均值(average),标准差(stddev) 等. 这个特性相较以前的 Map Reduce 方式提升了很多. 遗憾的是在服务端代码上使用 Aggregation Pipeline 还是需要使用比较繁复的 API, 包括 Spring Data 和 Morphia 提供的 API. 这大多是因为 Aggregation Pipeline 需要兼顾各种情况, 比如嵌入数组的 rewind, 还有对第一次聚合数据进行再聚合等. 在很多常用情况下, 应用只需要简单的分组聚合, 最多对聚合结果数据进行过滤和排序. 这时候我们希望能通过更简单的方式来获得结果. Act-morphia 插件在随 act-starter-1.8.23.2 最新发布的 1.7.2 版本中提供了一组简单易用的 API 来实现常用聚合逻辑. 2. API ]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>RPC的负载均衡策略</title>
  		<link>https:https://www.youcl.com/info/11592</link>
  		<pubDate>2019-06-18 06:07:52</pubDate>
  		<description><![CDATA[抽空自己写了个简易版的rpc框架，想了下怎么搞负载均衡， 最简单的方式就是搞个配置文件放置服务地址，直接读配置文件，转而想到配置文件可以放zk，相当于用zk来做配置中心或者服务发现。 优秀的dubbo项目就可以这么做，马上参考了下谷歌的grpc,发现了一篇谷歌很棒的文章，拜读了下（也借用了谷歌这篇文章的图片），很不错，想写一些我自己的见解。 传送门： https://grpc.io/blog/loadbalancing/ rpc通信本身并不复杂，只要定好协议怎么处理问题不大，但是负载均衡的策略是值得推敲的。 一般情况下，负载均衡的策略有以下两种 1. 代理服务 客户端并不知道服务端的存在，它所有的请求都打到代理服务，由代理服务去分发到服务端，并且实现公平的负载算法。 客户机可能不可信，这种情况通过用户面向用户的服务，类似于我们的nginx将请求分发到后端机器。 缺点： 客户端不知道后端的存在，且客户端不可信，延迟会更高且代理服务会影响服务本身的吞吐量 优点： 在中间层做监控等拦截操作特别]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Redis从入门到放弃系列(八) 主备同步</title>
  		<link>https:https://www.youcl.com/info/11602</link>
  		<pubDate>2019-06-16 00:29:18</pubDate>
  		<description><![CDATA[Redis从入门到放弃系列(八) 主备同步 本文例子基于：5.0.4 在现在不管啥应用都谈分布式的阶段下(真的有必要???),我们的redis都会做一下主备,唔,如果redis存的数据不重要的话,其实也可以不用做[手动狗头].为了能进一步上分布式,先让我们来了解一下CAP原理吧~ Consistent(一致性) Availability(可用性) Partition tolerance(容错性) 在分布式系统中,只能保证CP or AP,那么Redis里面采用哪一种机制呢? Redis采用的是AP机制,Redis的主备是异步同步数据的。也就是说,当Redis主服务接受了客户端的修改请求之后,会立即返回,这期间就算备服务节点网络不通(嗯,绝大部分是挖断了光缆),主服务依然走得风生水起。那么此时Redis备节点就处于数据落后的一种情况,此时Redis主节点同步的时候会采用快照同步的方式去将数据发送到备节点上(下文会讲到).正常情况下的数据同步都是通过增量buffer去同步的(即我的光缆开启了]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Redis从入门到放弃系列(七) 过期、内存淘汰策略</title>
  		<link>https:https://www.youcl.com/info/11600</link>
  		<pubDate>2019-06-07 01:16:20</pubDate>
  		<description><![CDATA[Redis从入门到放弃系列(七) 过期、内存淘汰策略 本文例子基于：5.0.4 过期策略 Redis对于设置了过期时间的key的过期策略有两种 惰性删除 定时随机删除 惰性删除 惰性删除的时机在于当你要获取该key的时候再去做判断.这里我以String类型作为演示画图: 
int expireIfNeeded(redisDb *db, robj *key) {
    if (!keyIsExpired(db,key)) return 0;

    /* If we are running in the context of a slave, instead of
     * evicting the expired key from the database, we return ASAP:
     * the slave key expiration is controlled by the master that will
     * send us synt]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Redis从入门到放弃系列(六) 持久化</title>
  		<link>https:https://www.youcl.com/info/11599</link>
  		<pubDate>2019-06-06 01:15:42</pubDate>
  		<description><![CDATA[Redis从入门到放弃系列(六) 持久化 本文例子基于：5.0.4 Redis持久化机制包括两种,RDB和AOF,当两种机制都存在的时候,redis启动时会采用aof来恢复数据 Redis为了保证数据的持久性,提供了RDB跟AOF机制,RDB是内存数据的二进制序列化形式,在存储上非常紧凑,AOF日志记录的是数据修改的指令记录文本。 RDB RDB机制其具体实现为使用系统的多进程写时复制(Copy On Write)，写时复制是一种可以推迟甚至避免拷贝数据的技术。内核此时并不复制整个进程的地址空间，而是让父子进程共享同一个地址空间。只用在需要写入的时候才会复制地址空间，从而使各个进行拥有各自的地址空间。 我们知道redis是单线程的,当redis在接受请求的时候还要处理rdb save,如果数据量很大,那么对于业务的影响是致命的,所以redis采用了多进程写时复制技术来解决该问题.父进程首先fork一个子进程，RDB持久化交给了子进程来进行,父进程继续处理客户端的请求. 那么redis在什]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Redis从入门到放弃系列(五) ZSet</title>
  		<link>https:https://www.youcl.com/info/11598</link>
  		<pubDate>2019-06-05 01:14:52</pubDate>
  		<description><![CDATA[Redis从入门到放弃系列(五) ZSet 本文例子基于：5.0.4 ZSet是Redis中一种比较复杂的数据结构,当存储大小在128之内且member得长度在64以下,其实现为zipList,超过为SkipList 忽然发现,到现在第五篇文章,还没有讲到zipList,然而前面例如Hash,List的篇章都涉及到了zipList的,后面会单独写一篇zipList的实现的~立Flag 请期待 【Redis从入门到放弃系列(外传) ZipList】 言归正传，首先让我们来看一下该如何在redis里面使用ZSet类型 
//将一个或多个元素及其分数加入到有序集合里面
ZADD key [NX|XX] [CH] [INCR] score member [score member ...]

 代码示例： 
//添加元素
>zadd store 1000 xiaoming 2000 xiaoqiang 3000 xiaoyue
(integer) 3
//返回指定区间内的有序集合]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Redis从入门到放弃系列(四) Set</title>
  		<link>https:https://www.youcl.com/info/11597</link>
  		<pubDate>2019-06-04 01:14:20</pubDate>
  		<description><![CDATA[Redis从入门到放弃系列(四) Set 本文例子基于：5.0.4 Set是Redis中一种比较常见的数据结构,当存储的member为十进制64位有符号整数范围内的整数的字符串的时候其实现为intset,其他为hashtable Redis从入门到放弃系列(三) List 首先让我们来看一下该如何在redis里面使用Set类型 
//设置key的集合中的值为member
sadd key member [member ...]

 代码示例： 
> sadd books java python c
(integer) 3
//当我们重复添加相同的数据的时候，redis返回为0
> sadd books java python c
(integer) 0
----------------------------------
//返回books集合的所有元素
>smembers books 
1) "c"
2) "python"
3) "java"
-----]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Redis从入门到放弃系列(三) List</title>
  		<link>https:https://www.youcl.com/info/11596</link>
  		<pubDate>2019-06-03 01:13:46</pubDate>
  		<description><![CDATA[Redis从入门到放弃系列(三) List 本文例子基于：5.0.4 List是Redis中一种比较常见的数据结构,其实现为quicklist,quicklist是一个ziplist的双向链表 Redis从入门到放弃系列(一) String Redis从入门到放弃系列(二) Hash 首先让我们来看一下该如何在redis里面使用List类型 
//设置key的列表为value
lpush key value [value...]

 代码示例： 
//栈的用法，rpush rpop一样~ 通过rpush,lpop相当于堆的用法
> lpush books java python c
(integer) 3
> lpop books
"c"
> lpop books
"python"
> lpop books
"java"
----------------------------------
//返回列表key指定区间的元素,区间偏移量start跟stop指定]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Redis从入门到放弃系列(二) Hash</title>
  		<link>https:https://www.youcl.com/info/11595</link>
  		<pubDate>2019-06-02 01:13:10</pubDate>
  		<description><![CDATA[Redis从入门到放弃系列(二) Hash 本文例子基于：5.0.4 Hash是Redis中一种比较常见的数据结构,其实现为hashtable/ziplist,默认创建时为ziplist,当到达一定量级时,redis会将ziplist转化为hashtable Redis从入门到放弃系列(一) String 首先让我们来看一下该如何在redis里面使用Hash类型 
//将hash表中key的域field的值设为value
//如果key不存在，一个新的哈希表被创建并进行HSET操作
//如果域field已经存在于哈希表中，旧值将被覆盖
hset key field value

 代码示例： 
//创建不存在的field
>hset user:1 id 1
(integer) 1
//覆盖原先的field
>hset user:1 id 2
(integer) 0
>hget user:1 id
"2"
//获取不存在的field
>hget user:1]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Redis从入门到放弃系列(一) String</title>
  		<link>https:https://www.youcl.com/info/11594</link>
  		<pubDate>2019-06-01 01:12:41</pubDate>
  		<description><![CDATA[Redis从入门到放弃系列(一) String 本文例子基于：5.0.4 字符串是Redis中最常见的数据结构,底层是采用SDS,是可以修改的字符串,类似ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配。 首先让我们来看一下该如何在redis里面使用字符串这种类型 
// 将字符串 value 关联到 key
// 如果key 已经有值了，直接覆盖 emmmm.跟我们使用HashMap是不是很像~
// 如果已经存在一个带有过期时间的key,我们重新set会将原先的过期时间清除 (重点)
>set key value [expiration EX seconds|PX milliseconds] [NX|XX]
 可选参数：[expiration EX seconds|PX milliseconds] [NX|XX] 我们发现 set 方法存在两个可选参数 [expiration EX seconds|PX milliseconds] 跟 [NX|XX] 
>]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>深入MyBatis源码，理解Java设计模式之适配器模式</title>
  		<link>https:https://www.youcl.com/info/11593</link>
  		<pubDate>2019-05-21 01:11:36</pubDate>
  		<description><![CDATA[什么是适配器模式 定义：将一个系统的接口转换成另外一种形式，从而使原来不能直接调用的接口变得可以调用。 适配器模式角色划分 
适配器模式涉及3个角色：
1.源（Adaptee）：需要被适配的对象或类型，相当于插头。
2.适配器（Adapter）：连接目标和源的中间对象，相当于插头转换器。
3.目标（Target）：期待得到的目标，相当于插座。
适配器模式包括3种形式：类适配器模式、对象适配器模式、接口适配器模式（或又称作缺省适配器模式）。
 适配器模式应用场景 
1、新老版本接口的兼容
2、Mybatis多种日志框架的整合
 适配器创建的方式 
1.对象适配器(组合模式)
2.类适配器(继承模式)
 适配器快速入门例子 比如早期的时候V1版本订单接口的入参为Map类型，随着业务的更新和迭代在V2版本的时候该订单接口的入参需要支持List的类型？ 请问不改变的该接口代码的情况下，如何支持List类型。 1.源（Adaptee）：需要被适配的对象或类型，相当于插头。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>多线程知识总结</title>
  		<link>https:https://www.youcl.com/info/11589</link>
  		<pubDate>2019-03-02 15:02:26</pubDate>
  		<description><![CDATA[一、ThreadLocal ThreadLocal是一个线程级的局部变量，“本地线程”只是俗称但并不准确。 假设是拿Map去做线程的局部变量，一般就两种思路：以Thread为key的共享区域，使用上不会有什么问题，但因为是共享区域访问，我们要做并发控制比如synchronized这样的悲观策略来保证线程安全，可同步会限制吞吐。第二种就是线程封闭，ThreadLocal正是使用了这种方式，线程本地维护一个区域ThreadLocalMap，以ThreadLocal实例为key，线程间数据隔离，自然就不存在线程安全的问题了。即ThreadLocal作为句柄、一个入口，来连接ThreadLocalMap和Thread。 内存泄漏问题：ThreadLocalMap的key使用了弱引用，指向某个ThreadLocal实例。当把ThreadLocal实例置为null后，那么它将会被GC回收。但ThreadLocalMap中的value不会被回收，因为存在一条current thread的强引用。因为T]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>React的组件模式</title>
  		<link>https:https://www.youcl.com/info/11585</link>
  		<pubDate>2019-02-20 10:30:55</pubDate>
  		<description><![CDATA[组件是 React 的核心，因此了解如何利用它们对于创建优秀的设计结构至关重要。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Redis实现分布式锁的方法</title>
  		<link>https:https://www.youcl.com/info/11584</link>
  		<pubDate>2019-01-20 14:10:54</pubDate>
  		<description><![CDATA[在我们日常工作中，除了Spring和Mybatis外，用到最多无外乎分布式缓存框架——Redis。但是很多工作很多年的朋友对Redis还处于一个最基础的使用和认识。所以我就像把自己对分布式缓存的一些理解和应用整理一个系列，希望可以帮助到大家加深对Redis的理解。本系列的文章思路先从Redis的应用开始。再解析Redis的内部实现原理。最后以经常会问到Redist相关的面试题为结尾。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Mysql 事务原理简单分析</title>
  		<link>https:https://www.youcl.com/info/11580</link>
  		<pubDate>2019-01-13 17:32:48</pubDate>
  		<description><![CDATA[Mysql Innodb中的事务隔离级别 隔离级别 脏读（Dirty Read） 不可重复读（NonRepeatable Read） 幻读（Phantom Read） 未提交读（Read uncommitted） 可能 可能 可能 已提交读（Read committed） 不可能 可能 可能 可重复读（Repeatable read） 不可能 不可能 Innodb中不可能，后面解释 可串行化（Serializable ） 不可能 不可能 不可能 脏读 不可重复读 幻读 不可重复读和幻读的区别 这两者有些相似。但不可重复读重点在于update和delete，而幻读的重点在于insert。如果使用锁机制来实现这两种隔离级别，在可重复读中，该sql第一次读取到数据后，就将这些数据加锁，其它事务无法修改这些数据，就可以实现可重复读了。但这种方法却无法锁住insert的数据，所以当事务A先前读取了数据，或者修改了全部数据，事务B还是可以insert数据提交，这时事务A就会发现莫名其妙多了一条之前没]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>SpringBoot开发案例之整合Dubbo分布式服务</title>
  		<link>https:https://www.youcl.com/info/11579</link>
  		<pubDate>2019-01-13 16:31:58</pubDate>
  		<description><![CDATA[在 SpringBoot 很火热的时候，阿里巴巴的分布式框架 Dubbo 不知是处于什么考虑，在停更N年之后终于进行维护了。在之前的微服务中，使用的是当当维护的版本 Dubbox，整合方式也是使用的 xml 配置方式。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Mybatis-Generator的配置、使用</title>
  		<link>https:https://www.youcl.com/info/11581</link>
  		<pubDate>2019-01-13 12:33:34</pubDate>
  		<description><![CDATA[项目结构： 1.配置相关文件 ams\pom.xml ams\src\main\resources\generator\generatorConfig.xml 2.pom.xml 设置 2.1 下载mybatis-generator的jar包，添加如下依赖： 
<dependencies>
        
    <dependency>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-maven-plugin</artifactId>
        <version>1.3.7</version>
    </dependency>

</dependencies> 注：jar包下载完毕后以上依赖代码可删除 2.2 配置mybatis-generator自动生成代码插件 
<build>
    <plugins>
        <]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Supervisor 为服务创建守护进程</title>
  		<link>https:https://www.youcl.com/info/11582</link>
  		<pubDate>2019-01-11 16:14:00</pubDate>
  		<description><![CDATA[在linux或者unix操作系统中，守护进程（Daemon）是一种运行在后台的特殊进程，它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。由于在linux中，每个系统与用户进行交流的界面称为终端，每一个从此终端开始运行的进程都会依附于这个终端，这个终端被称为这些进程的控制终端，当控制终端被关闭的时候，相应的进程都会自动关闭。但是守护进程却能突破这种限制，它脱离于终端并且在后台运行，并且它脱离终端的目的是为了避免进程在运行的过程中的信息在任何终端中显示并且进程也不会被任何终端所产生的终端信息所打断。它从被执行的时候开始运转，直到整个系统关闭才退出。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Java高并发编程：取消和关闭</title>
  		<link>https:https://www.youcl.com/info/11578</link>
  		<pubDate>2019-01-09 11:44:08</pubDate>
  		<description><![CDATA[Java没有提供任何机制来安全地终止线程，但是它提供了中断(Interruption).这是一种协作机制，能够使一个线程终止另一个线程当前的工作。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Java的四种线程池的使用，以及自定义线程工厂</title>
  		<link>https:https://www.youcl.com/info/11571</link>
  		<pubDate>2019-01-07 20:51:31</pubDate>
  		<description><![CDATA[四种线程池分别是：newCachedThreadPool、newFixedThreadPool 、newScheduledThreadPool 和newSingleThreadExecutor ，下面对这几个线程池一一讲解。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Redis管理及监控工具treeNMS安装指南</title>
  		<link>https:https://www.youcl.com/info/11572</link>
  		<pubDate>2019-01-07 18:53:59</pubDate>
  		<description><![CDATA[Redis做为现在web应用开发的黄金搭担组合，大量的被应用，广泛用于存储session信息,权限信息，交易作业等热数据。做为一名有10年以上JAVA开发经验的程序员，工作中项目也是广泛使用了Redis，工作中也遇到了Redis的数据可视化不便、Redis的数据查看维护困难、Redis状态监控运维不易等问题。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>数据库设计原则</title>
  		<link>https:https://www.youcl.com/info/11570</link>
  		<pubDate>2019-01-07 15:48:47</pubDate>
  		<description><![CDATA[数据库设计是一个软件项目成功的基石 。数据库设计也是门学问 。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>linux下安装和使用ffmpeg进行视频转换</title>
  		<link>https:https://www.youcl.com/info/11569</link>
  		<pubDate>2019-01-07 13:47:45</pubDate>
  		<description><![CDATA[ffmpeg是一个很强大的音视频处理工具，官网是：http://ffmpeg.org/ 官网介绍ffmpeg是：一个完整的、跨平台的解决方案，可以记录、转换和传输音频和视频。ffmpeg既可以播放视频，也提供命令行工具来处理视频，另外还有强大的视频处理库用于开发]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Docker的网络模式详解</title>
  		<link>https:https://www.youcl.com/info/11568</link>
  		<pubDate>2019-01-07 11:45:29</pubDate>
  		<description><![CDATA[docker的网络模式大致可以分成五种类型，在安装完docker之后，宿主机上会创建三个网络，分别是bridge网络，host网络，none网络，可以使用docker network ls命令查看。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Ubuntu网卡融合bonding方法步骤</title>
  		<link>https:https://www.youcl.com/info/11576</link>
  		<pubDate>2019-01-07 10:35:09</pubDate>
  		<description><![CDATA[网卡绑定就是把多张物理网卡通过软件虚拟成一个虚拟的网卡，配置完毕后，所有的物理网卡的ip和mac将会变成相同的。多网卡同时工作可以提高网络速度，还可以实现网卡的负载均衡、冗余。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>mybatis 多对一关联查询</title>
  		<link>https:https://www.youcl.com/info/11577</link>
  		<pubDate>2019-01-07 10:14:53</pubDate>
  		<description><![CDATA[根据ID查询学生信息，要求该学生的教师和班级信息一并查出 第一种关联方式 1.修改实体类Student，追加关联属性，用于封装关联的数据 修改完以后重新生成get set方法还有toString方法 
private Teacher teacher;
private Classes classes; 2.修改TeacherMapper相关配置 1.接口类 增加 
Teacher selectTeacherById(Integer tid); 2.xml映射文件 增加 
<sql id="params">tid,tname</sql>
<select id="selectTeacherById" resultType="Teacher">
    select
    <include refid="params"></include>
    from teacher where tid=#{tid}
</select> 3.修改ClassesMapper 相关配置 1]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Tomcat配置安全优化</title>
  		<link>https:https://www.youcl.com/info/11573</link>
  		<pubDate>2019-01-07 01:54:33</pubDate>
  		<description><![CDATA[知道在linux情况下如何进行tomcat安全配置]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>spring boot 2.0 集成 shiro 和 pac4j cas单点登录</title>
  		<link>https:https://www.youcl.com/info/11567</link>
  		<pubDate>2019-01-05 17:24:27</pubDate>
  		<description><![CDATA[新开的项目，果断使用 spring boot 最新版本 2.0.3 ，免得后期升级坑太多，前期把雷先排了。 由于对 shiro 比较熟，故使用 shiro 来做权限控制。同时已经存在了 cas 认证中心， shiro 官方在 1.2 中就表明已经弃用了 CasFilter ，建议使用 buji-pac4j ，故使用 pac4j 来做单点登录的控制。 废话不说，代码如下： 2018-08-29更新：由于pac4j 3.1 版本未支持单点登出，故升级到 4.0.0 版本，pac4j-cas 升级到 3.0.2版本，可以实现单点登出。 首先是 maven 配置。 
<dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-spring</artifactId>
            <version>1.4.0</version>
        </depe]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>性能工具之linux常见日志统计分析命令</title>
  		<link>https:https://www.youcl.com/info/11574</link>
  		<pubDate>2019-01-05 11:45:14</pubDate>
  		<description><![CDATA[本文主要介绍的是在 Tomcat 和 Nginx access日志的统计分析。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>如何在Ubuntu 18.04上安装和配置Apache ZooKeeper集群</title>
  		<link>https:https://www.youcl.com/info/11622</link>
  		<pubDate>2019-01-04 12:55:47</pubDate>
  		<description><![CDATA[作者选择了Wikimedia Foundation Inc.作为Write for DOnations计划的一部分进行捐赠。 介绍 Apache ZooKeeper是一种开源软件，可实现弹性和高度可靠的分布式协调。 它通常用于分布式系统，以管理配置信息，命名服务，分布式同步，仲裁和状态。 此外，分布式系统依靠ZooKeeper来实现共识，领导者选举和组管理。 在本指南中，您将在Ubuntu 18.04上安装和配置Apache ZooKeeper 3.4.13。 为了实现弹性和高可用性，ZooKeeper旨在通过一组称为集合的主机进行复制。 首先，您将创建单节点ZooKeeper服务器的独立安装，然后添加有关设置多节点集群的详细信息。 独立安装在开发和测试环境中很有用，但集群是生产环境中最实用的解决方案。 先决条件 在开始本安装和配置指南之前，您需要具备以下条件： 独立安装需要一个Ubuntu 18.04服务器，其中至少有4GB的RAM设置，遵循Ubuntu 18.04初始服务器设置指南]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>如何在Ubuntu 18.04上安装和保护Memcached</title>
  		<link>https:https://www.youcl.com/info/11621</link>
  		<pubDate>2019-01-04 12:35:30</pubDate>
  		<description><![CDATA[介绍 像Memcached这样的内存对象缓存系统可以通过在内存中临时存储信息，保留频繁或最近请求的记录来优化后端数据库性能。 通过这种方式，它们可以减少对数据库的直接请求数。 因为如果配置不当，Memcached等系统可能会导致拒绝服务攻击，因此保护Memcached服务器非常重要。 在本指南中，我们将介绍如何通过将安装绑定到本地或专用网络接口以及为Memcached实例创建授权用户来保护Memcached服务器。 先决条件 本教程假定您使用非root sudo用户和基本防火墙设置服务器。 如果不是这样，请设置以下内容： 一个Ubuntu 18.04服务器， 使用Ubuntu 18.04教程设置我们的初始服务器设置 。 有了这些先决条件，您就可以安装和保护Memcached服务器了。 第1步 - 从官方存储库安装Memcached 如果您的服务器上尚未安装Memcached，则可以从官方Ubuntu存储库安装它。 首先，确保更新本地包索引： 
sudo apt update
 接下来]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>SpringBoot2.0完美整合Dubbo</title>
  		<link>https:https://www.youcl.com/info/11566</link>
  		<pubDate>2019-01-01 14:15:49</pubDate>
  		<description><![CDATA[现在微服务越来越普遍，基本现在的新项目基本都是采用微服务的方式，这里我们暂不讨论微服务的好处什么的，我们常见的微服务架构就是SpirngCloud，它整合了各种组件，让我们的开发确实变得非常的方便，除了SpringCloud之外，其实还有另外的一种架构风格，SpringBoot + Dubbo，那么我们今天就来说一下，SpringBoot如何集成Dubbo做微服务架构。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Hystrix 的设计思想</title>
  		<link>https:https://www.youcl.com/info/11565</link>
  		<pubDate>2018-12-30 14:13:40</pubDate>
  		<description><![CDATA[在了解Hystrix的思想之前最好先了解它是一项什么技术，为什么目的而产生的，能帮助更好的理解它的隔离思想。我认为Hystrix主要是一项为了提高系统的容错性和高可用性而产生的技术。隔离技术也是为这个大目标而服务的。Hystrix本质上来说是一种保护性技术，它对整个系统进行保护。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>基于Vue的手机端UI框架整理</title>
  		<link>https:https://www.youcl.com/info/11564</link>
  		<pubDate>2018-12-30 12:04:10</pubDate>
  		<description><![CDATA[1. vonic 一个基于 vue.js 和 ionic 样式的 UI 框架，用于快速构建移动端单页应用，很简约 star 2.3k 中文文档 在线预览 2.vux 基于WeUI和Vue(2.x)开发的移动端UI组件库 star 10k 基于webpack+vue-loader+vux可以快速开发移动端页面，配合vux-loader方便你在WeUI的基础上定制需要的样式。 中文文档 在线预览 3.Mint UI 由饿了么前端团队推出的 Mint UI 是一个基于 Vue.js 的移动端组件库 star 8.3k 中文文档 github地址 在线预览 4.MUI 最接近原生APP体验的高性能前端框架 star 7.5k 中文文档 github地址 5.Muse-ui 基于 Vue 2.0 和 Material Design 的 UI 组件库 star 4.9k 中文文档 github地址 6.Vant是有赞前端团队基于有赞统一的规范实现的 Vue 组件库，提供了一整套 UI 基础组件和业务]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>RabbitMQ 高可用之镜像队列</title>
  		<link>https:https://www.youcl.com/info/11563</link>
  		<pubDate>2018-12-29 13:19:16</pubDate>
  		<description><![CDATA[如果RabbitMQ集群只有一个broker节点，那么该节点的失效将导致整个服务临时性的不可用，并且可能会导致message的丢失（尤其是在非持久化message存储于非持久化queue中的时候）。可以将所有message都设置为持久化，并且使用持久化的queue，但是这样仍然无法避免由于缓存导致的问题：因为message在发送之后和被写入磁盘并执行fsync之间存在一个虽然短暂但是会产生问题的时间窗。通过publisher的confirm机制能够确保客户端知道哪些message已经存入磁盘，尽管如此，一般不希望遇到因单点故障导致服务不可用。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>rsync的基本操作</title>
  		<link>https:https://www.youcl.com/info/11562</link>
  		<pubDate>2018-12-28 22:13:32</pubDate>
  		<description><![CDATA[rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步，支持本地复制，与其他SSH、rsync主机同步数据。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Linux磁盘管理df、du命令</title>
  		<link>https:https://www.youcl.com/info/11561</link>
  		<pubDate>2018-12-28 14:12:50</pubDate>
  		<description><![CDATA[在服务端开发的道路上，如果没有收到过磁盘不足的报警信息，职业生涯绝对是不完美的，每当服务器磁盘报警的时候，运维小姐姐都会怼我一句："100G的磁盘，三天的日志都保存不了，真不知道你都往日志里输出啥玩意～"，其实呢！磁盘报警有时候也不能怪我这个纯良的开发把业务日志输出太多，还可能是其他原因导致的，这个时候我们就需要通过磁盘管理命令定位一下问题到底出在哪里。日常服务器磁盘管理，常使用 df、du 这两个命令。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>深入理解单例模式的几种实现方式</title>
  		<link>https:https://www.youcl.com/info/11556</link>
  		<pubDate>2018-12-27 09:59:00</pubDate>
  		<description><![CDATA[单例模式是一种很常用的设计模式，其定义是单例对象的类只允许有一个实例存在。在使用spring自动创建对象时默认就是单例的。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Windows OpenSSH 基本用法</title>
  		<link>https:https://www.youcl.com/info/11558</link>
  		<pubDate>2018-12-27 08:51:00</pubDate>
  		<description><![CDATA[在前文《Windows 支持 OpenSSH 》中介绍了 Windows 对 OpenSSH 支持的基本内容，本文在前文的基础上介绍一些 OpenSSH Server 的配置和常见用法。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Redis集群架构</title>
  		<link>https:https://www.youcl.com/info/11559</link>
  		<pubDate>2018-12-26 22:47:00</pubDate>
  		<description><![CDATA[集群的核心意义只有一个：保证一个节点出现了问题之后，其他的节点可以继续提供服务使用。Redis基础部分讲解过主从配置：对于主从配置可以有两类：一主二从，层级关系。开发者一主二从是常用的手段。Redis的主从配置是所有Redis集群的一个基础。但是只是依靠主从依然无法实现高可用的配置。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>“三次握手，四次挥手”你真的懂吗？</title>
  		<link>https:https://www.youcl.com/info/11560</link>
  		<pubDate>2018-12-26 22:15:00</pubDate>
  		<description><![CDATA[记得刚毕业找工作面试的时候，经常会被问到：你知道“3次握手，4次挥手”吗？这时候我会“胸有成竹”地“背诵”前期准备好的“答案”，第一次怎么怎么，第二次……答完就没有下文了，面试官貌似也没有深入下去的意思，深入下去我也不懂，皆大欢喜！]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>深入了解Ping的过程</title>
  		<link>https:https://www.youcl.com/info/11555</link>
  		<pubDate>2018-12-24 14:40:04</pubDate>
  		<description><![CDATA[对于ping命令，想必只要是程序员都知道吧？当我们检查网络情况的时候，最先使用的命令肯定是ping命令吧？一般我们用ping查看网络情况，主要是检查两个指标，第一个是看看是不是超时，第二个看看是不是延迟太高。如果超时那么肯定是网络有问题啦（禁ping情况除外），如果延迟太高，网络情况肯定也是很糟糕的。那么对于ping命令的原理，ping是如何检查网络的？大家之前有了解吗？接下来我们来跟着ping命令走一圈，看看ping是如何工作的。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Windows 支持 OpenSSH </title>
  		<link>https:https://www.youcl.com/info/11557</link>
  		<pubDate>2018-12-24 07:04:00</pubDate>
  		<description><![CDATA[从 Win10 1809 和 Windows Server 2019 开始 Windows 开始支持 OpenSSH Server。本文介绍一下其基本的概念和配置方法，本文演示用的环境为 Win10 1809(ssh 客户端)和 Windows Server 2019(ssh 服务器)。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>HBase的架构、数据模型及读写流程</title>
  		<link>https:https://www.youcl.com/info/11554</link>
  		<pubDate>2018-12-22 13:13:12</pubDate>
  		<description><![CDATA[HBase是一个分布式的、面向列的开源数据库存储系统 ，是对Google论文Bigtable的实现，具有高可靠性、高性能和可伸缩性，它可以处理分布在数千台通用服务器上的PB级的海量数据 。Bigtable是通过Google文件系统（GFS）来存储数据的，而HBase对应的是通过Hadoop分布式文件系统（HDFS）来存储数据的。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>深入理解Hadoop之HDFS架构</title>
  		<link>https:https://www.youcl.com/info/11552</link>
  		<pubDate>2018-12-20 00:34:38</pubDate>
  		<description><![CDATA[Hadoop分布式文件系统（HDFS）是一种分布式文件系统。它与现有的分布式文件系统有许多相似之处。HDFS最初是作为Apache Nutch网络搜索引擎项目的基础设施而构建的。HDFS是Apache Hadoop Core项目的一部分。

]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Maven环境隔离</title>
  		<link>https:https://www.youcl.com/info/11553</link>
  		<pubDate>2018-12-19 14:39:11</pubDate>
  		<description><![CDATA[顾名思义，Maven环境隔离就是将开发中的环境与beat环境、生产环境分隔开，方便进行开发和维护。这个在实际项目中用的还是很多的，如果你的项目用的Maven构建但是没用环境隔离，请立即将项目做一下环境隔离，这在实际的开发工作中是非常重要的。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>设计模式之原型模式</title>
  		<link>https:https://www.youcl.com/info/11551</link>
  		<pubDate>2018-12-19 10:29:00</pubDate>
  		<description><![CDATA[在系统中有时候可能需要创建多个一模一样的对象，而有的对象创建过程十分复杂，或者创建对象很耗费资源亦或是创建对象十分频繁，那么这个时候就必须要解决这个问题，而原型模式则能很好的解决这个问题。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Docker 异常总结</title>
  		<link>https:https://www.youcl.com/info/11533</link>
  		<pubDate>2018-12-17 13:17:47</pubDate>
  		<description><![CDATA[提起容器，大家可能首先想到的是 Docker，Docker 已经当之无愧的成为容器界巨头。如果你使用 Kubernetes 作为私有云的解决方案，Docker 也是首选的容器解决方案。虽然 Docker 很优秀，但 Docker 并不是完美的，甚至存在很多问题。下面介绍我们下在生产环境中遇到的关于 Docker 的一些问题及排查过程。避免大家再踩坑。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>深入解析ES6之数据解构的用法</title>
  		<link>https:https://www.youcl.com/info/11532</link>
  		<pubDate>2018-12-17 08:15:39</pubDate>
  		<description><![CDATA[本文介绍了深入理解ES6之数据解构的用法，写的十分的全面细致，具有一定的参考价值，对此有需要的朋友可以参考学习下。如有不足之处，欢迎批评指正。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>分布式之数据库和缓存双写一致性方案解析</title>
  		<link>https:https://www.youcl.com/info/11534</link>
  		<pubDate>2018-12-17 07:21:55</pubDate>
  		<description><![CDATA[本文其实是对目前互联网中已有的一致性方案，进行了一个总结。对于先删缓存，再更新数据库的更新策略，还有方案提出维护一个内存队列的方式，小编看了一下，觉得实现异常复杂，没有必要，因此没有必要在文中给出。最后，希望大家有所收获。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>4个顶级开源JavaScript图表库</title>
  		<link>https:https://www.youcl.com/info/11535</link>
  		<pubDate>2018-12-17 00:25:56</pubDate>
  		<description><![CDATA[图表对于可视化数据和使网站具有吸引力非常重要。可视化演示使分析大块数据和传达信息变得更加容易。JavaScript图表库使你能够以易于理解和交互的方式可视化数据，并改善网站的设计。有四个顶级开源JavaScript图表库，你一定要Get!]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>常用的ES6语法</title>
  		<link>https:https://www.youcl.com/info/11525</link>
  		<pubDate>2018-12-16 20:47:10</pubDate>
  		<description><![CDATA[ECMAScript 6（以下简称ES6）是JavaScript语言的下一代标准，已经在2015年6月正式发布了。Mozilla公司将在这个标准的基础上，推出JavaScript 2.0。ECMAScript和JavaScript到底是什么关系？很多初学者会感到困惑，简单来说，ECMAScript是JavaScript语言的国际标准，JavaScript是ECMAScript的实现。



]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>基于 Docker 快速部署多需求 Spark 自动化测试环境</title>
  		<link>https:https://www.youcl.com/info/11524</link>
  		<pubDate>2018-12-16 18:34:27</pubDate>
  		<description><![CDATA[在进行数据分析时，Spark 越来越广泛的被使用。在测试需求越来越多、测试用例数量越来越大的情况下，能够根据需求快速自动化部署 Spark 环境、快速完成所有测试越来越重要。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Docker的架构与自制镜像的发布</title>
  		<link>https:https://www.youcl.com/info/11523</link>
  		<pubDate>2018-12-16 17:27:43</pubDate>
  		<description><![CDATA[docker 就是对 linux 容器的封装，提供简单实用的用户接口，是目前最流行的 linux容器解决方案。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>解析Nuxt.js Vue服务端渲染摸索</title>
  		<link>https:https://www.youcl.com/info/11521</link>
  		<pubDate>2018-12-16 14:11:21</pubDate>
  		<description><![CDATA[本篇文章主要介绍了详解Nuxt.js Vue服务端渲染摸索，写的十分的全面细致，具有一定的参考价值，对此有需要的朋友可以参考学习下。如有不足之处，欢迎批评指正。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>深入解析React中的元素、组件、实例和节点</title>
  		<link>https:https://www.youcl.com/info/11522</link>
  		<pubDate>2018-12-16 10:24:25</pubDate>
  		<description><![CDATA[React 深入系列，深入讲解了React中的重点概念、特性和模式等，旨在帮助大家加深对React的理解，以及在项目中更加灵活地使用React。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>深入解析VueJs中的V-bind指令</title>
  		<link>https:https://www.youcl.com/info/11526</link>
  		<pubDate>2018-12-16 10:11:16</pubDate>
  		<description><![CDATA[v-bind 主要用于属性绑定，比方你的class属性，style属性，value属性，href属性等等，只要是属性，就可以用v-bind指令进行绑定.这次主要介绍了VueJs中的V-bind指令,需要的朋友可以参考下]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>SpringBoot整合系列--整合MyBatis-plus</title>
  		<link>https:https://www.youcl.com/info/11513</link>
  		<pubDate>2018-12-15 22:53:00</pubDate>
  		<description><![CDATA[MyBatis-Plus（简称 MP）是一个 MyBatis 的增强工具，在 MyBatis 的基础上只做增强不做改变，为简化开发、提高效率而生。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Systemd简介与使用</title>
  		<link>https:https://www.youcl.com/info/11509</link>
  		<pubDate>2018-12-15 04:18:13</pubDate>
  		<description><![CDATA[systemd 是一个 Linux 系统基础组件的集合，提供了一个系统和服务管理器，运行为 PID 1 并负责启动其它程序。功能包括：支持并行化任务；同时采用 socket 式与 D-Bus 总线式激活服务；按需启动守护进程（daemon）；利用 Linux 的 cgroups 监视进程；支持快照和系统恢复；维护挂载点和自动挂载点；各服务间基于依赖关系进行精密控制。systemd 支持 SysV 和 LSB 初始脚本，可以替代 sysvinit。除此之外，功能还包括日志进程、控制基础系统配置，维护登陆用户列表以及系统账户、运行时目录和设置，可以运行容器和虚拟机，可以简单的管理网络配置、网络时间同步、日志转发和名称解析等。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>常见的Web容器</title>
  		<link>https:https://www.youcl.com/info/11506</link>
  		<pubDate>2018-12-14 20:56:00</pubDate>
  		<description><![CDATA[Web容器Web服务器及常见的Web容器有哪些？]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Linux日志对接Kibana</title>
  		<link>https:https://www.youcl.com/info/11507</link>
  		<pubDate>2018-12-14 11:53:00</pubDate>
  		<description><![CDATA[ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎，基于RESTFul web接口。ElasticSearch是用Java开发的，并作为Apache许可条款下的开放源码发布，是当前流行的企业级搜索引擎。ElasticSearch常用于全文检索，结构化检索，数据分析等。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Dubbo SPI 机制</title>
  		<link>https:https://www.youcl.com/info/11508</link>
  		<pubDate>2018-12-14 11:25:00</pubDate>
  		<description><![CDATA[最近抽空开始了 Dubbo 源码的阅读之旅，希望可以通过写文章的方式记录和分享自己对 Dubbo 的理解。如果在本文出现一些纰漏或者错误之处，也希望大家不吝指出。

]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>MyBatis开发Dao层之Mapper动态代理方式</title>
  		<link>https:https://www.youcl.com/info/11504</link>
  		<pubDate>2018-12-13 23:43:00</pubDate>
  		<description><![CDATA[Mapper接口开发方法只需要程序员编写Mapper接口（相当于Dao接口），由Mybatis框架根据接口定义创建接口的动态代理对象，代理对象的方法体同上一篇博客中Dao接口实现类方法。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>final 关键字的作用及示例</title>
  		<link>https:https://www.youcl.com/info/11502</link>
  		<pubDate>2018-12-13 16:55:00</pubDate>
  		<description><![CDATA[谈到final关键字，想必很多人都不陌生，在使用匿名内部类的时候可能会经常用到final关键字。另外，Java中的String类就是一个final类，那么今天我们就来了解final这个关键字的用法。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>聊聊Java内存模型</title>
  		<link>https:https://www.youcl.com/info/11503</link>
  		<pubDate>2018-12-13 12:04:00</pubDate>
  		<description><![CDATA[Java内存模型即Java Memory Model，简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型，所以JMM是隶属于JVM的。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>MyBatis开发Dao层之原始Dao层开发</title>
  		<link>https:https://www.youcl.com/info/11505</link>
  		<pubDate>2018-12-13 00:17:00</pubDate>
  		<description><![CDATA[本文将介绍使用框架mybatis开发原始Dao层来对一个对数据库进行增删改查的案例。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>消息队列中间件（三）Kafka 入门指南</title>
  		<link>https:https://www.youcl.com/info/11495</link>
  		<pubDate>2018-12-12 00:26:00</pubDate>
  		<description><![CDATA[Kafka的前身是由LinkedIn开源的一款产品，2011年初开始开源，加入了 Apache 基金会，2012年从 Apache Incubator 毕业变成了 Apache 顶级开源项目。同时LinkedIn还有许多著名的开源产品。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>浅析java中的四种线程池</title>
  		<link>https:https://www.youcl.com/info/11501</link>
  		<pubDate>2018-12-11 18:41:00</pubDate>
  		<description><![CDATA[线程池为线程的容器，通过减少线程的创建和销毁时间来提高线程的利用率，但是不能控制线程池中线程的开始，挂起和中止。

]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>MongoDB 常用运维命令</title>
  		<link>https:https://www.youcl.com/info/11490</link>
  		<pubDate>2018-12-11 02:12:13</pubDate>
  		<description><![CDATA[总所周知，MongoDB是一个NoSQL非数据库系统，即一个数据库可以包含多个集合（Collection），每个集合对应于关系数据库中的表；而每个集合中可以存储一组由列标识的记录，列是可以自由定义的，非常灵活，由一组列标识的实体的集合对应于关系数据库表中的行。下面通过熟悉MongoDB的基本管理命令，来了解MongoDB提供的DBMS的基本功能和行为。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>消息队列中间件（二）使用 ActiveMQ</title>
  		<link>https:https://www.youcl.com/info/11494</link>
  		<pubDate>2018-12-11 00:23:00</pubDate>
  		<description><![CDATA[Active MQ 是由 Apache 出品的一款流行的功能强大的开源消息中间件，它速度快，支持跨语言的客户端，具有易于使用的企业集成模式和许多的高级功能，同时完全支持 JSM1.1 和 J2EE1.4 。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>MySQL中optimize优化表</title>
  		<link>https:https://www.youcl.com/info/11489</link>
  		<pubDate>2018-12-10 16:20:31</pubDate>
  		<description><![CDATA[当对MySQL进行大量的增删改操作的时候，很容易产生一些碎片，这些碎片占据着空间，所以可能会出现删除很多数据后，数据文件大小变化不大的现象。当然新插入的数据仍然会利用这些碎片。但过多的碎片，对数据的插入操作是有一定影响的，此时，我们可以通过optimize来对表的优化。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>消息队列中间件（一）介绍</title>
  		<link>https:https://www.youcl.com/info/11493</link>
  		<pubDate>2018-12-09 23:36:00</pubDate>
  		<description><![CDATA[消息队列中间件是大型系统中的重要组件，已经逐渐成为企业系统内部通信的核心手段。它具有松耦合、异步消息、流量削峰、可靠投递、广播、流量控制、最终一致性等一系列功能，已经成为异步RPC的主要手段之一。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Ansible批量自动化管理工具</title>
  		<link>https:https://www.youcl.com/info/11510</link>
  		<pubDate>2018-12-09 00:03:42</pubDate>
  		<description><![CDATA[批量管理服务器的工具，无需部署agent，通过ssh进行管理，流行的自动化运维工具。
]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>深入理解JVM——虚拟机GC</title>
  		<link>https:https://www.youcl.com/info/11483</link>
  		<pubDate>2018-12-07 23:37:00</pubDate>
  		<description><![CDATA[Java的GC基于可达性分析算法(Python用引用计数法)，通过可达性分析来判定对象是否存活。这个算法的基本思想是通过一系列"GC Roots"的对象作为起始点，从这些节点开始向下搜索，搜索所走过的路径称为引用链，当一个对象到GC Roots没有任何引用链相连时（图论称之为不可达），则证明此对象是不可用的。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>利用Vue构造器创建Form组件的通用解决方法</title>
  		<link>https:https://www.youcl.com/info/11481</link>
  		<pubDate>2018-12-07 19:30:10</pubDate>
  		<description><![CDATA[在前端平常的业务中，无论是官网、展示页还是后台运营系统都离不开表单，它承载了大部分的数据采集工作。所以如何更好地实现它，是平常工作中的一个重要问题。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>java类的加载过程</title>
  		<link>https:https://www.youcl.com/info/11484</link>
  		<pubDate>2018-12-06 14:06:00</pubDate>
  		<description><![CDATA[加载 “加载”(Loading)阶段是“类加载”(Class Loading)过程的第一个阶段，在此阶段，虚拟机需要完成以下三件事情： 1、通过一个类的全限定名来获取定义此类的二进制字节流。 2、将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。 3、在Java堆中生成一个代表这个类的java.lang.Class对象，作为方法区这些数据的访问入口。 加载阶段即可以使用系统提供的类加载器在完成，也可以由用户自定义的类加载器来完成。加载阶段与连接阶段的部分内容(如一部分字节码文件格式验证动作)是交叉进行的，加载阶段尚未完成，连接阶段可能已经开始。 验证 验证是连接阶段的第一步，这一阶段的目的是为了确保Class文件的字节流中包含的信息符合当前虚拟机的要求，并且不会危害虚拟机自身的安全。 Java语言本身是相对安全的语言，使用Java编码是无法做到如访问数组边界以外的数据、将一个对象转型为它并未实现的类型等，如果这样做了，编译器将拒绝编译。但是，Class文件并不一定是由Java]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>注解@CrossOrigin详解</title>
  		<link>https:https://www.youcl.com/info/11467</link>
  		<pubDate>2018-12-06 11:15:19</pubDate>
  		<description><![CDATA[出于安全原因，浏览器禁止Ajax调用驻留在当前原点之外的资源。例如，当你在一个标签中检查你的银行账户时，你可以在另一个选项卡上拥有EVILL网站。来自EVILL的脚本不能够对你的银行API做出Ajax请求（从你的帐户中取出钱！）使用您的凭据。
跨源资源共享（CORS）是由大多数浏览器实现的W3C规范，允许您灵活地指定什么样的跨域请求被授权，而不是使用一些不太安全和不太强大的策略，如IFRAME或JSONP。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Spring Cloud之Feign</title>
  		<link>https:https://www.youcl.com/info/11452</link>
  		<pubDate>2018-12-04 14:34:46</pubDate>
  		<description><![CDATA[Feign是一个声明式Web Service客户端。使用Feign能让编写Web Service客户端更加简单, 它的使用方法是定义一个接口，然后在上面添加注解，同时也支持`JAX-RS`标准的注解。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装，使其支持了Spring MVC标准注解和`HttpMessageConverters`。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Spring Cloud之Eureka</title>
  		<link>https:https://www.youcl.com/info/11451</link>
  		<pubDate>2018-12-04 14:28:42</pubDate>
  		<description><![CDATA[Spring Cloud Netflix提供了对 Netflix 开源项目的集成，使得我们可以以Spring Boot编程风格使用Netflix旗下相关框架。你只需要在程序中添加注解，就能使用成熟的Netflix组件来快速实现分布式系统的常见架构模式。这些模式包括服务发现(Eureka), 断路器(Hystrix), 智能路由(Zuul)和客户端负载均衡(Ribbon)。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Vue项目中设置mock数据</title>
  		<link>https:https://www.youcl.com/info/11471</link>
  		<pubDate>2018-12-02 19:41:17</pubDate>
  		<description><![CDATA[我们在使用Vue写前端项目的时候，可能会需要后端传回来的数据来进行测试。但是有的时候我们没有后端的环境，不能获取到我们想要的数据。这个时候我们就需要在Vue项目中设置一些假数据，即mock数据。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Calendar类的使用</title>
  		<link>https:https://www.youcl.com/info/11468</link>
  		<pubDate>2018-12-02 14:56:28</pubDate>
  		<description><![CDATA[Calendar定义 Calendar（日历） 类是一个抽象类，它为特定时间（特定时间转化的毫秒数）与日历字段之间的转换提供了一些方法，并为操作日历字段提供了一些方法。该类还为实现包范围外的具体日历系统提供了其他字段和方法（这些字段和方法被定义为 protected）。 注意：1.这里的特定时间转化的毫秒数为：距历元（格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000，格里高利历）的偏移量。 2.日期或时间格式字符串不是日历定义的一部分，因为在运行时，用户必须能够修改或重写它们。可以使用DateFormat 格式化日期。 如何获得Catendar对象？ Calendar 提供了一个类方法 getInstance，以获得此类型的一个通用的对象。Calendar 的 getInstance 方法返回一个 Calendar 对象，其日历字段已由当前日期和时间初始化： Calendar now = Calendar.getInstance(); 字段操作 可以使用三种方法]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Java反射机制、动态代理（过滤器Filter和拦截器Interceptor）</title>
  		<link>https:https://www.youcl.com/info/11466</link>
  		<pubDate>2018-12-02 11:14:25</pubDate>
  		<description><![CDATA[在介绍过滤器Filter和拦截器Interceptor之前，先大篇幅介绍下Java反射机制和动态代理（本来想着只是简单说明下这两个名称，但下笔介绍过程中发现对反射机制和动态代理一知半解，随进行了深入了解和源码剖析），动态代理主要使用了Java凡是机制来实现，而拦截器Interceptor又是通过动态代理实现的。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>详解CentOS中定时执行释放内存的Shell脚本及相关原理</title>
  		<link>https:https://www.youcl.com/info/11463</link>
  		<pubDate>2018-12-01 16:29:47</pubDate>
  		<description><![CDATA[本文总体结构： 第一部分：本文中释放系统内存的原理 第二部分：创建用于释放内存的Shell脚本并加入到系统定时任务 第三部分：详细分析Shell脚本中的每一条指令 第四部分：系统定时任务的工作方式 第一部分：本文中释放系统内存的原理 本文中介绍的方法是通过释放内存缓冲区的数据，达到降低系统内存占用的目的。 当我们在Linux系统中输入 top 指令时，可以在 Mem 这一栏看到下面这些内存指标： total, free, used, buff/cache 其中， total 是物理内存总量； free 是目前的空闲内存总量； used 是目前已使用的内存总量； buff/cache (即 Buffers/Cached )是内存缓冲区的大小。 在Linux中： total = free + used + buff/cache Linux系统在运行的过程中，CPU需要和外存进行数据交换，但是一般情况下，CPU的读写速度远大于外存设备（如硬盘）的读写速度，为了提升外存的I/O性能，提升系统的运]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>weblogic12.2静默安装篇</title>
  		<link>https:https://www.youcl.com/info/11461</link>
  		<pubDate>2018-12-01 14:22:31</pubDate>
  		<description><![CDATA[安装最新的weblogic版本，版本号为 12.2.X（12.2.1.2.0）。开始以为和旧版安装一样，使用控制台的方式，下载bin文件，然后一步步在console执行下来就行了。万万没想到，从12C版本后，bin文件不提供了，改成全系统通用的jar文件 （generic.jar）。试了半天原来那种安装方式不能用了，非得用图形界面安装。由于服务器只能远程登录，于是各种百度、各种找材料，最后终于找到一种静默方式的安装。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>Ubuntu 18.04 Server 设置静态IP</title>
  		<link>https:https://www.youcl.com/info/11485</link>
  		<pubDate>2018-11-30 10:51:00</pubDate>
  		<description><![CDATA[Netplan是Ubuntu 17.10中引入的一种新的命令行网络配置实用程序，用于在Ubuntu系统中轻松管理和配置网络设置。它允许您使用YAML抽象来配置网络接口。它可与NetworkManager和systemd-networkd网络守护程序（称为渲染程序，您可以选择使用其中的哪一个）一起作为内核的接口。在本文中。我们将解释如何使用Netplan实用程序在Ubuntu 18.04中为网络接口配置网络静态或动态IP地址。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  	<item>
  		<title>如何使用Docker构建Node.js应用程序</title>
  		<link>https:https://www.youcl.com/info/3261</link>
  		<pubDate>2018-11-29 11:44:52</pubDate>
  		<description><![CDATA[对Node.js感兴趣但不知道从哪里开始使用Docker？本教程将引导您完成第一步：为Node.js应用程序构建映像并从中创建容器。我们还将引导您将该图像推送到Docker Hub并使用保存的图像重新创建应用程序容器。]]></description>
  		<author>www.youcl.com</author>
  	</item>
  </channel>
</rss>
