<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_42271561的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_42271561</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_42271561]]></copyright><item><title><![CDATA[go入门（channel 理解）龟兔赛跑]]></title><link>https://blog.youkuaiyun.com/qq_42271561/article/details/122684349</link><guid>https://blog.youkuaiyun.com/qq_42271561/article/details/122684349</guid><author>qq_42271561</author><pubDate>Tue, 25 Jan 2022 14:21:39 +0800</pubDate><description><![CDATA[go入门]]></description><category></category></item><item><title><![CDATA[jvm常用垃圾收集器分析]]></title><link>https://blog.youkuaiyun.com/qq_42271561/article/details/120992120</link><guid>https://blog.youkuaiyun.com/qq_42271561/article/details/120992120</guid><author>qq_42271561</author><pubDate>Wed, 27 Oct 2021 17:38:21 +0800</pubDate><description><![CDATA[1.前言
当我们在java程序中创建对象，这个对象就存储到jvm的堆区域（heap）
为了满足程序持续运转的开销，jvm会在适当的时间进行垃圾收集，将未被引用的对象清除。
2.GC分类
大致将GC分为4类




类型
含义




Young GC
负责回收年轻代对象的GC


Old GC
负责回收老年代对象的GC


Full GC
回收整个堆的对象，包括年轻代、老年代


Mixed GC
回收年轻代和部分老年代的GC (G1)


3.常见垃圾回收算法

目前主流垃圾回收器都采用的是可达性分析算法]]></description><category></category></item><item><title><![CDATA[简单聊一下AQS]]></title><link>https://blog.youkuaiyun.com/qq_42271561/article/details/120795208</link><guid>https://blog.youkuaiyun.com/qq_42271561/article/details/120795208</guid><author>qq_42271561</author><pubDate>Sat, 16 Oct 2021 10:54:16 +0800</pubDate><description><![CDATA[何为AQS
AQS 的全称为 AbstractQueuedSynchronizer ，翻译过来的意思就是抽象队列同步器。

public abstract class AbstractQueuedSynchronizer extends AbstractOwnableSynchronizer implements java.io.Serializable {
}



AQS 为构建锁和同步器提供了一些通用功能的是实现，因此，使用 AQS 能简单且高效地构造出应用广泛的大量的同步器，比如我们提到的 Reen]]></description><category></category></item><item><title><![CDATA[图解BIO/NIO/AIO]]></title><link>https://blog.youkuaiyun.com/qq_42271561/article/details/120693149</link><guid>https://blog.youkuaiyun.com/qq_42271561/article/details/120693149</guid><author>qq_42271561</author><pubDate>Sun, 10 Oct 2021 22:07:39 +0800</pubDate><description><![CDATA[何为 I/O?

I/O（Input/Outpu） 即输入／输出 。

根据大学里学到的操作系统相关的知识：为了保证操作系统的稳定性和安全性，一个进程的地址空间划分为 用户空间（User space） 和 内核空间（Kernel space ） 。
像我们平常运行的应用程序都是运行在用户空间，只有内核空间才能进行系统态级别的资源有关的操作，比如文件管理、进程通信、内存管理等等。也就是说，我们想要进行 IO 操作，一定是要依赖内核空间的能力。
并且，用户空间的程序不能直接访问内核空间。
当想要执行 IO 操作]]></description><category></category></item><item><title><![CDATA[代理模式详解（JDK/Cglib实现）]]></title><link>https://blog.youkuaiyun.com/qq_42271561/article/details/120683598</link><guid>https://blog.youkuaiyun.com/qq_42271561/article/details/120683598</guid><author>qq_42271561</author><pubDate>Sun, 10 Oct 2021 12:47:05 +0800</pubDate><description><![CDATA[代理模式详解（JDK/Cglib实现）1.何为代理模式2.静态代理2.1实现步骤3.动态代理3.1.JDK 动态代理3.1.1.实现步骤3.2.CGLIB 动态代理机制3.2.1.实现步骤总结
1.何为代理模式

代理模式是一种比较好理解的设计模式。简单来说就是 我们使用代理对象来代替对真实对象(real object)的访问，这样就可以在不修改原目标对象的前提下，提供额外的功能操作，扩展目标对象的功能。

代理模式的主要作用是扩展目标对象的功能，比如说在目标对象的某个方法执行前后你可以增加一些自定义的操作]]></description><category></category></item><item><title><![CDATA[详解Ribbon负载均衡]]></title><link>https://blog.youkuaiyun.com/qq_42271561/article/details/120377302</link><guid>https://blog.youkuaiyun.com/qq_42271561/article/details/120377302</guid><author>qq_42271561</author><pubDate>Sun, 19 Sep 2021 10:10:10 +0800</pubDate><description><![CDATA[Ribbon是一个客户端负载均衡器，能够给HTTP和TCP客户端带来灵活的控制。

描述
Ribbon的核心概念是命名的客户端。每一个负载均衡器都是一系列工作在一起的组件的一部分，并用于按需联系远程服务。你可以给这一系列一个名字（例如使用@FeignClient注解）。Spring Cloud使用RibbonClientConfiguration为每一个命名的客户端建立一个新系列为满足ApplicationContext的需求。 这包括一个ILoadBalancer， 一个RestClient和一个Ser.]]></description><category></category></item><item><title><![CDATA[数据库 常用分片算法分析]]></title><link>https://blog.youkuaiyun.com/qq_42271561/article/details/119895640</link><guid>https://blog.youkuaiyun.com/qq_42271561/article/details/119895640</guid><author>qq_42271561</author><pubDate>Tue, 24 Aug 2021 20:12:10 +0800</pubDate><description><![CDATA[分片算法
【范围法】
以用户中心的业务主键uid为划分依据，将数据水平切分到两个数据库实例上去：
soap_db1：存储0到1千万的uid数据
soap_db2：存储1到2千万的uid数据
范围法的优点是：
切分策略简单，根据uid，按照范围，业务很快能够定位到数据在哪个库上
扩容简单，如果容量不够，只要增加soap_db3即可
范围法的不足是：
uid必须要满足递增的特性
数据量不均，新增的soap_db3，在初期的数据会比较少
请求量不均，一般来说，新注册的用户活跃度会比较高，故soap_db2往往会比]]></description><category></category></item><item><title><![CDATA[基于拦截器的水平分表实现]]></title><link>https://blog.youkuaiyun.com/qq_42271561/article/details/119683777</link><guid>https://blog.youkuaiyun.com/qq_42271561/article/details/119683777</guid><author>qq_42271561</author><pubDate>Fri, 13 Aug 2021 21:08:50 +0800</pubDate><description><![CDATA[水平分表的场景
当单表数据激增，比如mysql单表数据量超过千万级别,查询速度会变慢。当数据继续增长，就需要使用到分库分表。
根据业务量增加表的数量，来提升查询效率。这里提到是水平分表，只考虑数据量增长，当字段较长，可以考虑垂直分表，按照字段将一张表拆成多张表进行存储。
水平分表实现原理

如图，分表的是根据sql请求中参数，或参数组合进行数据标识，我见过流水业务频繁的按照日期分表，他就根据创建时间来分表，分片策略算法，一般按需实现 。在sharding-jdbc中实现分片接口，doSharding()的方]]></description><category></category></item><item><title><![CDATA[多线程模拟孩子抓糖经典问题]]></title><link>https://blog.youkuaiyun.com/qq_42271561/article/details/118198082</link><guid>https://blog.youkuaiyun.com/qq_42271561/article/details/118198082</guid><author>qq_42271561</author><pubDate>Fri, 25 Jun 2021 09:02:48 +0800</pubDate><description><![CDATA[请听题

共11颗糖，有两个小孩，一个小孩一次只能抓三颗糖，另一个小孩一次只能抓四颗糖
如果剩余糖果不够当前小孩拿的数量，当前小孩不在抓糖，请用多线程模拟上面的描述

废话不多说先上码
public class TestFunction {

    static volatile Integer num = 11;

    //孩子线程
    static class Child extends Thread {
        //每次拿取的糖数
        private int r;
   ]]></description><category></category></item><item><title><![CDATA[synchronized和ReentrantLock性能分析]]></title><link>https://blog.youkuaiyun.com/qq_42271561/article/details/118144355</link><guid>https://blog.youkuaiyun.com/qq_42271561/article/details/118144355</guid><author>qq_42271561</author><pubDate>Wed, 23 Jun 2021 11:00:03 +0800</pubDate><description><![CDATA[这个文章的起因和一个同事的激烈学术性讨论，快打起来那种。

我：ReentrantLock解决多路并发查询的数据合并方式更合适。
棒哥：用synchronized在资源竞争激烈的性能更好。
我：synchronized在资源竞争激烈的时候有极大的概率会进行锁升级，且锁的升级是不可逆的。
棒哥：ReentrantLock内部的乐观锁自旋比线程挂起更消耗cpu的资源。

存在即合理，我觉得单纯的认为某一种方式好或坏是一种片面的看法，这两种方式应该区分场景和并发量和处理时间来判定使用哪一种合适。特别是synchr]]></description><category></category></item><item><title><![CDATA[浅谈Nginx的负载均衡策略]]></title><link>https://blog.youkuaiyun.com/qq_42271561/article/details/116272940</link><guid>https://blog.youkuaiyun.com/qq_42271561/article/details/116272940</guid><author>qq_42271561</author><pubDate>Thu, 29 Apr 2021 17:50:00 +0800</pubDate><description><![CDATA[Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器

同时nginx 可以通过upstream指令来实现负载均衡，我们常见的负载均衡的策略，nginx都支持。
负载均衡策略




策略
说明




轮询
nginx默认的负载均衡策略，将请求以轮询的方式分发不同服务器上。


weight (权重方式)
按照不同服务器的权重比进行分发请求


ip_hash （ip地址hash）
将ip地址进行hash ,映射到固定服务器上


url_hash（url请求路劲hash）
将.]]></description><category></category></item><item><title><![CDATA[如何使用Nacos （简单示例）]]></title><link>https://blog.youkuaiyun.com/qq_42271561/article/details/116258946</link><guid>https://blog.youkuaiyun.com/qq_42271561/article/details/116258946</guid><author>qq_42271561</author><pubDate>Thu, 29 Apr 2021 11:25:36 +0800</pubDate><description><![CDATA[环境准备
JDK1.80
Maven
下载源码或者安装包
我们可以从 Github 上下载java源码,自己进行编译运行。
克隆源码
git clone https://github.com/alibaba/nacos.git

编译源码
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U  

启动nacos服务
cd distribution/target/nacos-server-$version/nacos/bi]]></description><category></category></item><item><title><![CDATA[linux日志排查常用命令总结]]></title><link>https://blog.youkuaiyun.com/qq_42271561/article/details/116236772</link><guid>https://blog.youkuaiyun.com/qq_42271561/article/details/116236772</guid><author>qq_42271561</author><pubDate>Wed, 28 Apr 2021 16:45:25 +0800</pubDate><description><![CDATA[一般先出现bug，日志排查是一种分析bug的方式。通过查看预先埋下的日志点位记录的关键信息，来分析bug成因，来解决bug。（虽然现在有着kibana这种工具的存在）
但是往往bug的记录的关键信息不好定位，关键行不好定位。
下面有简至繁。介绍一下常用的命令。
cat命令
cat  blog.out.log

如上，需要查看那个文件，直接cat + 文件名就行，但是由于cat是浏览全文本，导致如果文本过大，cat会一直翻页，需要很长时间才能停下来，很显然这不是我们想要的结果，所以cat在查大日志文件时不适应]]></description><category></category></item><item><title><![CDATA[记录一次XSS（跨站脚本攻击）]]></title><link>https://blog.youkuaiyun.com/qq_42271561/article/details/115663760</link><guid>https://blog.youkuaiyun.com/qq_42271561/article/details/115663760</guid><author>qq_42271561</author><pubDate>Tue, 13 Apr 2021 14:07:01 +0800</pubDate><description><![CDATA[XSS攻击通常指的是通过利用网页开发时留下的漏洞，通过巧妙的方法注入恶意指令代码到网页，使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript，但实际上也可以包括Java、
VBScript、ActiveX、 Flash
或者甚至是普通的HTML。攻击成功后，攻击者可能得到包括但不限于更高的权限（如执行一些操作）、私密网页内容、会话和cookie等各种内容。

问题
首先这个平台是一个物流园的门户网站，网站有一些相关的实时新闻和其他站点的友情链接。
这是当时他们网安部门的漏洞.]]></description><category></category></item><item><title><![CDATA[RGB转换成HSV（java实现）]]></title><link>https://blog.youkuaiyun.com/qq_42271561/article/details/115465061</link><guid>https://blog.youkuaiyun.com/qq_42271561/article/details/115465061</guid><author>qq_42271561</author><pubDate>Tue, 06 Apr 2021 17:12:41 +0800</pubDate><description><![CDATA[从RGB 到 HSV 的转换详细介绍
1.RGB

RGB是从颜色发光的原理来设计定的，通俗点说它的颜色混合方式就好像有红、绿、蓝三盏灯，当它们的光相互叠合的时候，色彩相混，而亮度却等于两者亮度之总和，越混合亮度越高，即加法混合。


红、绿、蓝三个颜色通道每种色各分为256阶亮度，在0时“灯”最弱——是关掉的，而在255时“灯”最亮。当三色灰度数值相同时，产生不同灰度值的灰色调，即三色灰度都为0时，是最暗的黑色调；三色灰度都为255时，是最亮的白色调。


在电脑中，RGB的所谓“多少”就是指亮度，并使用]]></description><category></category></item><item><title><![CDATA[Mysql存储引擎 和 索引结构推导（面经）]]></title><link>https://blog.youkuaiyun.com/qq_42271561/article/details/115398147</link><guid>https://blog.youkuaiyun.com/qq_42271561/article/details/115398147</guid><author>qq_42271561</author><pubDate>Fri, 02 Apr 2021 15:03:48 +0800</pubDate><description><![CDATA[Mysql存储引擎]]></description><category></category></item><item><title><![CDATA[Mybatis自定义轻量级分页组件(易集成，易拓展)]]></title><link>https://blog.youkuaiyun.com/qq_42271561/article/details/110733134</link><guid>https://blog.youkuaiyun.com/qq_42271561/article/details/110733134</guid><author>qq_42271561</author><pubDate>Sun, 06 Dec 2020 13:16:34 +0800</pubDate><description><![CDATA[Mybatis自定义轻量级分页组件(易集成，易拓展)
其实github有一个叫做PageHelper的开源分页组件，我也用过，封装的还可以。只是感觉他的量级偏重，其实很多参数，都是我们开发中不需要的参数，而且它的获取分页信息方式是通过构造方法，不是很优雅。所以我在查阅完他的源码后，结合自己的需求，实现了一个轻量级，便携式的分页组件SmallPage。

SmallPage
轻量级分页组件，基于入参类型
核心依赖
		&lt;dependency&gt;
			&lt;groupId&gt;org.mybat]]></description><category></category></item><item><title><![CDATA[Java常见加密使用和分析]]></title><link>https://blog.youkuaiyun.com/qq_42271561/article/details/110690710</link><guid>https://blog.youkuaiyun.com/qq_42271561/article/details/110690710</guid><author>qq_42271561</author><pubDate>Sat, 05 Dec 2020 16:24:44 +0800</pubDate><description><![CDATA[Java常见加密使用和分析
最近项目里碰到很多加解密的场景，使用多种加密的方式，大概整理了一下，一共有一下几种





加密方式
安全性
是否可逆




1
MD5
高
不可逆


2
AES
中
可逆


3
RSA
高
可逆


3
Base64
低
可逆


1.MD5加密

MD5即Message-Digest Algorithm 5（信息-摘要算法5），用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一（又译摘要算法、哈希算法）

MD5的一般在项目中的使用场景是密码加密，在校验密码时直]]></description><category></category></item><item><title><![CDATA[如何在国内完成个人建站]]></title><link>https://blog.youkuaiyun.com/qq_42271561/article/details/109968128</link><guid>https://blog.youkuaiyun.com/qq_42271561/article/details/109968128</guid><author>qq_42271561</author><pubDate>Sun, 22 Nov 2020 23:55:55 +0800</pubDate><description><![CDATA[国内建站的条件

服务器
域名
网站备案

1.服务器
服务器，个人建站，不建议购买高配置的服务器。如果你的money够多，请随意。学生党可以购买阿里云或者腾讯云的云服务器，折扣还蛮多的，aws还有免费的服务器可以申请。我这边是购买的阿里云的云服务器，最低配置的哪一种，不限时，但是限制下行带宽，打开网页贼慢就对了。购买过阿里云的服务器，他会分配一个服务器实例给你，同时绑定了一个外网ip地址。
部署服务
服务器的下行是很慢，但是服务器的上行还蛮快的，去下载资源，使用国内的镜像还是很快的。
一般部署服务最先需要]]></description><category></category></item><item><title><![CDATA[Spring-Boot快速集成Sqlite数据库(动态创建，动态切换)]]></title><link>https://blog.youkuaiyun.com/qq_42271561/article/details/109897497</link><guid>https://blog.youkuaiyun.com/qq_42271561/article/details/109897497</guid><author>qq_42271561</author><pubDate>Sat, 21 Nov 2020 15:07:14 +0800</pubDate><description><![CDATA[Spring-Boot快速集成Sqlite数据库(动态创建，动态切换)

首先分析集成sqlite，然后需要完成的需求

动态创建sqlite数据
动态连接sqlite数据库
操作sqlite数据库


相比较传统的数据，使用mybaits集成，需要变更是数据库驱动driver，这个需要引入sqlite的依赖
	&lt;dependencies&gt;
	   &lt;!--mybaits--&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;org.mybatis.sp]]></description><category></category></item></channel></rss>