<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[520_LH]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_42917455</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_42917455]]></copyright><item><title><![CDATA[fork/join的使用]]></title><link>https://blog.youkuaiyun.com/qq_42917455/article/details/118366582</link><guid>https://blog.youkuaiyun.com/qq_42917455/article/details/118366582</guid><author>qq_42917455</author><pubDate>Wed, 30 Jun 2021 18:11:36 +0800</pubDate><description><![CDATA[CPU密集型（CPU-bound）
CPU密集型也叫计算密集型，指的是系统的硬盘、内存性能相对CPU要好很多，此时，系统运作大部分的状况是CPU Loading 100%，CPU要读/写I/O(硬盘/内存)，I/O在很短的时间就可以完成，而CPU还有许多运算要处理，CPU Loading很高。 在多重程序系统中，大部份时间用来做计算、逻辑判断等CPU动作的程序称之CPU bound。例如一个计算圆周率至小数点一千位以下 的程序，在执行的过程当中绝大部份时间用在三角函数和开根号的计算，便是属于CPU boun]]></description><category></category></item><item><title><![CDATA[Executor线程池原理与源码解读]]></title><link>https://blog.youkuaiyun.com/qq_42917455/article/details/118211257</link><guid>https://blog.youkuaiyun.com/qq_42917455/article/details/118211257</guid><author>qq_42917455</author><pubDate>Mon, 28 Jun 2021 10:59:12 +0800</pubDate><description><![CDATA[线程
线程是调度CPU资源的最小单位，线程模型分为KLT模型与ULT模型，JVM使用的KLT模型，Java线程与OS线程保持1:1的映射关系，也就是说有一个java线程也会在操作系统里有一个对应的线程。Java线程有多种生命状态
NEW,新建
RUNNABLE,运行
BLOCKED,阻塞
WAITING,等待
TIMED_WAITING,超时等待
TERMINATED，终结
线程状态切换图

线程池
在web开发中，服务器需要接受并处理请求，所以会为一个请求来分配一个线程来进行处理。如果每次请求都新创建一个]]></description><category></category></item><item><title><![CDATA[深入理解JVM]]></title><link>https://blog.youkuaiyun.com/qq_42917455/article/details/116006564</link><guid>https://blog.youkuaiyun.com/qq_42917455/article/details/116006564</guid><author>qq_42917455</author><pubDate>Thu, 22 Apr 2021 11:32:22 +0800</pubDate><description><![CDATA[推荐一个大佬写的文档，写的确实不错，也可以参考周志明先生在《深入理解 Java 虚拟机》

https://snailclimb.gitee.io/javaguide/#/docs/java/jvm/JVM%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6


]]></description><category></category></item><item><title><![CDATA[ThreadPoolExecutor使用详解]]></title><link>https://blog.youkuaiyun.com/qq_42917455/article/details/115478932</link><guid>https://blog.youkuaiyun.com/qq_42917455/article/details/115478932</guid><author>qq_42917455</author><pubDate>Wed, 07 Apr 2021 10:04:00 +0800</pubDate><description><![CDATA[1. 通过Executors创建线程池的弊端

在创建线程池的时候，大部分人还是会选择使用Executors去创建。



下面是创建定长线程池（FixedThreadPool）的一个例子，严格来说，当使用如下代码创建线程池时，是不符合编程规范的。


ExecutorServicefixedThreadPool=Executors.newFixedThreadPool(5);


原因在于：（摘自阿里编码规约）

线程池不允许使用Executors去创建，而是通过ThreadPoolExecutor...]]></description><category></category></item><item><title><![CDATA[自定义类加载器]]></title><link>https://blog.youkuaiyun.com/qq_42917455/article/details/115422991</link><guid>https://blog.youkuaiyun.com/qq_42917455/article/details/115422991</guid><author>qq_42917455</author><pubDate>Sun, 04 Apr 2021 00:02:59 +0800</pubDate><description><![CDATA[1.大概讲下四种类加载器

《1》引导类加载器 主要是加载jdk下面的jre中的核心包

《2》扩展类加载器（ExtClassLoader）加载jdk下ext包下的核心包

《3》应用程序类加载器（AppClassLoader）加载我们自已写的应用程序

《4》自定义类加载器  （类加载机制的实质就是调用ClassLoader类中的findClass()）

2.手写一个自定义类加载器


package com.lz.md.test;

import java.io.FileInputStream;...]]></description><category></category></item><item><title><![CDATA[Logstash之MySQL做数据同步 报错记录]]></title><link>https://blog.youkuaiyun.com/qq_42917455/article/details/113120181</link><guid>https://blog.youkuaiyun.com/qq_42917455/article/details/113120181</guid><author>qq_42917455</author><pubDate>Mon, 25 Jan 2021 16:33:05 +0800</pubDate><description><![CDATA[1.首先说明的是 ES采用UTC 时区，比北京时间早8小时，所以ES读取数据时让最后更新时间加8小时（后半句错误说法）


where timestamp &gt; date_add(:sql_last_value,INTERVAL 8 HOUR)

 我用的logstash-input-jdbc版本是4.3.9 ，ES采用UTC 时区，比北京时间早8小时，这点是没有问题的，但是在插件在取最后的时间已经默认加上8小时了，所以我们不需要加



2.最无语的一个bug，就是做数据同步启动不了Logs...]]></description><category></category></item><item><title><![CDATA[vue-devtools安装报错]]></title><link>https://blog.youkuaiyun.com/qq_42917455/article/details/112917826</link><guid>https://blog.youkuaiyun.com/qq_42917455/article/details/112917826</guid><author>qq_42917455</author><pubDate>Thu, 21 Jan 2021 10:40:55 +0800</pubDate><description><![CDATA[1.环境准备工作

1》要安装node.js，node.js中有npm，不需要额外的安装npm，还需要安装webpack，webpack依赖webpack-cli ,高版本没有内置，需要手动安装

2》去github上下载源码https://github.com/vuejs/vue-devtools

2.安装

github上安装步骤如下：

Make sure you are using Node 6+ and NPM 3+

Clone this repo
	npm install(Orya...]]></description><category></category></item><item><title><![CDATA[SpringTask 并行任务的实现]]></title><link>https://blog.youkuaiyun.com/qq_42917455/article/details/112788373</link><guid>https://blog.youkuaiyun.com/qq_42917455/article/details/112788373</guid><author>qq_42917455</author><pubDate>Mon, 18 Jan 2021 16:45:13 +0800</pubDate><description><![CDATA[引入：一般在项目中会有多个定时任务去调度，这时候如果使用串行的定时任务会造成结果不准确，具体解决方案如下：

在config文件夹中引入如下配置类，不需要在springboot启动类添加@EnableScheduling这个注解


/**
 * @author lz
 * @Description: springTask 并行任务执行方法
 **/
@Configuration
@EnableScheduling
public class AsyncTaskConfig implements Schedu]]></description><category></category></item><item><title><![CDATA[redisson 实现分布式锁]]></title><link>https://blog.youkuaiyun.com/qq_42917455/article/details/112785735</link><guid>https://blog.youkuaiyun.com/qq_42917455/article/details/112785735</guid><author>qq_42917455</author><pubDate>Mon, 18 Jan 2021 15:59:45 +0800</pubDate><description><![CDATA[1.引入redisson依赖


	&lt;dependency&gt;
			&lt;groupId&gt;org.redisson&lt;/groupId&gt;
			&lt;artifactId&gt;redisson&lt;/artifactId&gt;
			&lt;version&gt;3.5.4&lt;/version&gt;
   &lt;/dependency&gt;

2.自定义注解实现redisson分布式锁


/**
 * @Description: 基于注解的分布式式锁
 * ]]></description><category></category></item><item><title><![CDATA[分布式事务介绍]]></title><link>https://blog.youkuaiyun.com/qq_42917455/article/details/112647356</link><guid>https://blog.youkuaiyun.com/qq_42917455/article/details/112647356</guid><author>qq_42917455</author><pubDate>Fri, 15 Jan 2021 09:30:18 +0800</pubDate><description><![CDATA[1、什么是分布式系统

部署在不同结点上的系统通过网络交互来完成协同工作的系统。

比如：充值加积分的业务，用户在充值系统向自己的账户充钱，在积分系统中自己积分相应的增加。充值系统和积分系统是两个不同的系统，一次充值加积分的业务就需要这两个系统协同工作来完成。

2、什么是事务

事务是指由一组操作组成的一个工作单元，这个工作单元具有原子性（atomicity）、一致性（consistency）、隔 离性（isolation）和持久性（durability）。

原子性：执行单元中的操作要么全部执行成功，要]]></description><category></category></item><item><title><![CDATA[SQL Server字符串切割函数]]></title><link>https://blog.youkuaiyun.com/qq_42917455/article/details/112524589</link><guid>https://blog.youkuaiyun.com/qq_42917455/article/details/112524589</guid><author>qq_42917455</author><pubDate>Tue, 12 Jan 2021 14:18:38 +0800</pubDate><description><![CDATA[SQL Server中把一个字符串切割成多个数据函数


CREATE FUNCTION SplitStringToTable
    (
      in Input VARCHAR(MAX(VARCHAR)) ,  -- 输入切割的字符串 
      in Separator VARCHAR(MAX(VARCHAR)) = ','  -- 切割标识 
    )
RETURNS out TABLE TABLE
    (
      Id INT IDENTITY(1, 1) , -- 返回一个表有i]]></description><category></category></item><item><title><![CDATA[@Component注解部分场景不生效问题]]></title><link>https://blog.youkuaiyun.com/qq_42917455/article/details/111884444</link><guid>https://blog.youkuaiyun.com/qq_42917455/article/details/111884444</guid><author>qq_42917455</author><pubDate>Tue, 29 Dec 2020 11:04:18 +0800</pubDate><description><![CDATA[1.出现问题的原因：@Component这个注解把该类注入到spring容器中了，但是在拦截器之中不生效，再在Utils使用到dao，我们就不能直接注入了

解决方案：使用ApplicationContextAware解决问题。而ApplicationContextAware实现了这个接口的bean，当spring容器初始化的时候，会自动的将ApplicationContext注入进来

2 案例demo


/**
 * @author zhenglong
 * @Description:解决部分@Co.]]></description><category></category></item><item><title><![CDATA[logback日志文件记录]]></title><link>https://blog.youkuaiyun.com/qq_42917455/article/details/110530902</link><guid>https://blog.youkuaiyun.com/qq_42917455/article/details/110530902</guid><author>qq_42917455</author><pubDate>Thu, 03 Dec 2020 14:32:25 +0800</pubDate><description><![CDATA[1.加入logback配置xml


&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;configuration debug="false" scan="false"&gt;
    &lt;springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue="logs"/&gt;
    &lt;property]]></description><category></category></item><item><title><![CDATA[DESC结合Aop对铭感数据注解式加解密]]></title><link>https://blog.youkuaiyun.com/qq_42917455/article/details/110220636</link><guid>https://blog.youkuaiyun.com/qq_42917455/article/details/110220636</guid><author>qq_42917455</author><pubDate>Fri, 27 Nov 2020 09:39:27 +0800</pubDate><description><![CDATA[1.引入aop依赖


 &lt;dependency&gt;
            &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
            &lt;artifactId&gt;spring-boot-starter-aop&lt;/artifactId&gt;
  &lt;/dependency&gt;

2.自定义注解，使用Aspect 对传入数据加密，出参解密


/**
 * @author zhenglong
 * ]]></description><category></category></item><item><title><![CDATA[OWASP插件的使用]]></title><link>https://blog.youkuaiyun.com/qq_42917455/article/details/110001320</link><guid>https://blog.youkuaiyun.com/qq_42917455/article/details/110001320</guid><author>qq_42917455</author><pubDate>Mon, 23 Nov 2020 17:19:56 +0800</pubDate><description><![CDATA[1.介绍：Dependency-Check更方便的知道哪些jar存在高危漏洞，进而进行安全升级

2.官网下载地址：https://www.owasp.org/index.php/OWASP_Dependency_Check

3.下载完以后解压：把如下plugins.zip解压到到此插件的bin目录下；如下图：

  

4.上图中标注出来的创建快捷方式；将快捷方式剪切并粘贴到%appdata%\Roaming\Microsoft\Windows\SendTo目录下

5.找到本地lib文件夹下的...]]></description><category></category></item><item><title><![CDATA[java 保存操作日志的实现]]></title><link>https://blog.youkuaiyun.com/qq_42917455/article/details/110000733</link><guid>https://blog.youkuaiyun.com/qq_42917455/article/details/110000733</guid><author>qq_42917455</author><pubDate>Mon, 23 Nov 2020 16:42:37 +0800</pubDate><description><![CDATA[1.加入依赖


     &lt;dependency&gt;
                &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
                &lt;artifactId&gt;spring-boot-starter-aop&lt;/artifactId&gt;
     &lt;/dependency&gt;

1.1.因为springboot是自动开启aspect代理的，所以不需要加 @EnableA..]]></description><category></category></item><item><title><![CDATA[redis集群搭建]]></title><link>https://blog.youkuaiyun.com/qq_42917455/article/details/109451251</link><guid>https://blog.youkuaiyun.com/qq_42917455/article/details/109451251</guid><author>qq_42917455</author><pubDate>Mon, 02 Nov 2020 16:17:04 +0800</pubDate><description><![CDATA[基于docker搭建redis集群


准备工作





服务
端口
服务器
容器名




Redis-master1
6379
120.55.164.91
Redis-master1


Redis-master2
6380
120.55.164.91
Redis-master2


Redis-master3
6381
120.55.164.91
Redis-master3


Redis-slave1
6382
120.55.164.91
Redis-...]]></description><category></category></item><item><title><![CDATA[MySQL------存储过程]]></title><link>https://blog.youkuaiyun.com/qq_42917455/article/details/108621883</link><guid>https://blog.youkuaiyun.com/qq_42917455/article/details/108621883</guid><author>qq_42917455</author><pubDate>Wed, 16 Sep 2020 17:37:44 +0800</pubDate><description><![CDATA[存储过程和函数都是事先在数据库中经过执行一段sql语句的集合，存储过程没有返回值，而函数必须有返回值，使用存储过程可以减少数据在数据库和应用服务器之间的传输，简化开发人员的工作。
	创建存储过程

 CREATE  PROCEDURE pro_name()
  BEGIN
    ---sql语句
  END;

  2.1 调用存储过程


call pro_name();

 2.2 删除存储过程



DROP PROCEDURE IF EXISTS pro_name ；

3.存储过程...]]></description><category></category></item><item><title><![CDATA[MySQL-----触发器]]></title><link>https://blog.youkuaiyun.com/qq_42917455/article/details/108506973</link><guid>https://blog.youkuaiyun.com/qq_42917455/article/details/108506973</guid><author>qq_42917455</author><pubDate>Thu, 10 Sep 2020 11:45:12 +0800</pubDate><description><![CDATA[触发器定义：触发器是有关表的数据库对象，指的是在update/insert/delete操作之前或之后，会执行在触发器其中定义的sql语句集合，可以用来日志记录，数据的校验等。



1.创建触发器：


create trigger trigger_name before/after insert/update/delete

on table-name for each row

begin

sql 语句

end;

2.删除触发器：


drop trigger trigger_n...]]></description><category></category></item><item><title><![CDATA[MySQL---视图]]></title><link>https://blog.youkuaiyun.com/qq_42917455/article/details/108505265</link><guid>https://blog.youkuaiyun.com/qq_42917455/article/details/108505265</guid><author>qq_42917455</author><pubDate>Thu, 10 Sep 2020 00:25:11 +0800</pubDate><description><![CDATA[视图的定义：

 视图是一种虚拟的表，在数据库中并不是真实存在的，简单的来说，视图就是一组查询sql返回的结果集合。

视图的优点：

简单：使用视图的用户只需要查询视图返回对应的结果，不需要具体关注多张表之间的对应关系，以及查询条件。

安全：使用视图的用户只能只能查到视图中返回的结果集合，并不能访问到表的具体行和列。

数据独立：源表增加了列，并不会影响视图的结果，源表修改了部分列，视图中作对应的修改即可，并不会对访问者有影响。

1.创建视图sql 语句

create or replace v...]]></description><category></category></item></channel></rss>