<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[oliver486的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/oliver486</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; oliver486]]></copyright><item><title><![CDATA[idea 编译后class文件中文乱码]]></title><link>https://blog.csdn.net/oliver486/article/details/144449143</link><guid>https://blog.csdn.net/oliver486/article/details/144449143</guid><author>oliver486</author><pubDate>Fri, 13 Dec 2024 14:29:06 +0800</pubDate><description><![CDATA[setting->Editor->File Encodings里path的编码方式不一致，比如既有utf-8也有GBK,就会导致编译后class文件出现中文乱码，将编码改成一直即可避免乱码。]]></description><category></category></item><item><title><![CDATA[NCC参照开发]]></title><link>https://blog.csdn.net/oliver486/article/details/141261951</link><guid>https://blog.csdn.net/oliver486/article/details/141261951</guid><author>oliver486</author><pubDate>Fri, 16 Aug 2024 15:55:13 +0800</pubDate><description><![CDATA[高级版参照开发]]></description><category></category></item><item><title><![CDATA[ncc开发rest接口]]></title><link>https://blog.csdn.net/oliver486/article/details/137602495</link><guid>https://blog.csdn.net/oliver486/article/details/137602495</guid><author>oliver486</author><pubDate>Wed, 10 Apr 2024 16:48:54 +0800</pubDate><description><![CDATA[将上面的代码部署到dm模块后，重启中间件，Postman测试时，测试URL设置为：http://ip:port/uapws/rest//hcr/positionclass/add，其中service/hello为代码中的类声明中的Path和方法中的Path，uapws/rest/为固定的NC中的REST服务访问路径。从NC65开始,NC中除了支持SOAP协议的webservice接口外，还支持REST协议的接口，NC65的REST服务封装的是restlet。NCC项目中Rest接口符合restful规范。]]></description><category></category></item><item><title><![CDATA[JAVA发射调用参数为数组时的注意事项]]></title><link>https://blog.csdn.net/oliver486/article/details/126780971</link><guid>https://blog.csdn.net/oliver486/article/details/126780971</guid><author>oliver486</author><pubDate>Fri, 09 Sep 2022 13:17:17 +0800</pubDate><description><![CDATA[JAVA发射调用参数为数组时的注意事项]]></description><category></category></item><item><title><![CDATA[卸载骑安信，超爽]]></title><link>https://blog.csdn.net/oliver486/article/details/126373565</link><guid>https://blog.csdn.net/oliver486/article/details/126373565</guid><author>oliver486</author><pubDate>Tue, 16 Aug 2022 20:16:18 +0800</pubDate><description><![CDATA[卸载骑安信，超爽]]></description><category></category></item><item><title><![CDATA[ssh 私钥公钥生成]]></title><link>https://blog.csdn.net/oliver486/article/details/126278011</link><guid>https://blog.csdn.net/oliver486/article/details/126278011</guid><author>oliver486</author><pubDate>Thu, 11 Aug 2022 08:43:10 +0800</pubDate><description><![CDATA[ssh公钥私钥生成]]></description><category></category></item><item><title><![CDATA[JAVA线程]]></title><link>https://blog.csdn.net/oliver486/article/details/124426725</link><guid>https://blog.csdn.net/oliver486/article/details/124426725</guid><author>oliver486</author><pubDate>Tue, 26 Apr 2022 15:33:10 +0800</pubDate><description><![CDATA[线程的概念：线程是指一个操作系统能够运行、调度的最小单位，被包含在进程中，是进程的实际运作单位。

java中的创建一个线程的方式：

继承Thread类
	实现Runnable接口
	通过Callable接口和Future接口实现有返回值的线程调用（FutureTask或者CompletableFuture），还能捕获异常
通过继承Thread来实现



通过继承Runnable接口来实现







通过FutureTask来创建线程



通过CompletableFuture来实现




..]]></description><category></category></item><item><title><![CDATA[mybatis缓存机制]]></title><link>https://blog.csdn.net/oliver486/article/details/124329313</link><guid>https://blog.csdn.net/oliver486/article/details/124329313</guid><author>oliver486</author><pubDate>Sun, 24 Apr 2022 14:51:46 +0800</pubDate><description><![CDATA[一级缓存

一级缓存的作用域是Executor,实际就是SqlSession，默认开启并且无法关闭，

查询的时候会先判断SqlSession是否缓存存在，如果存在直接走缓存，如果不存在则走数据库



如下操作默认会走缓存：

SqlSession sqlSession1 = factory.openSession(true);

SqlSession sqlSession2 = factory.openSession(true);

StudentMapper studentMapper ...]]></description><category></category></item><item><title><![CDATA[Mybatis动态代理和拦截器的实现]]></title><link>https://blog.csdn.net/oliver486/article/details/124326663</link><guid>https://blog.csdn.net/oliver486/article/details/124326663</guid><author>oliver486</author><pubDate>Thu, 21 Apr 2022 18:10:23 +0800</pubDate><description><![CDATA[通过mybatis的加载和sql语句的执行过程，咱们不难发现mybatis代码中大量使用了动态代理，比如：

1:Mapper接口代理类，mybatis为所有的mapper接口类都生成了代理接口类

2:SqlSessionTemplate的SqlSession属性

3:Executor的拦截器会生成代理类

4:StatementHandler拦截器会生产代理类

5:ParameterHandler拦截器会生产代理类

4:ResultSetHandler拦截器会生产代理类



接下来我们来看一下四]]></description><category></category></item><item><title><![CDATA[Mybatis Sql执行流程]]></title><link>https://blog.csdn.net/oliver486/article/details/124323576</link><guid>https://blog.csdn.net/oliver486/article/details/124323576</guid><author>oliver486</author><pubDate>Thu, 21 Apr 2022 17:06:03 +0800</pubDate><description><![CDATA[执行流程图（不包含缓存）



1:使用Mapper接口调用具体方法，会调用到Mapper接口的代理实现类MapperProxy.invok方法

2:MapperProxy.invok根据method信息找到MapperMethod（每一个mapper.xml文件的方法都会对应一个MapperMethod），MapperMethod执行mapperMethod.execute(sqlSession, args)，参数sqlSession是sqlSessionTemplate对象

3:MapperMeth]]></description><category></category></item><item><title><![CDATA[Mybatis缓存]]></title><link>https://blog.csdn.net/oliver486/article/details/124322079</link><guid>https://blog.csdn.net/oliver486/article/details/124322079</guid><author>oliver486</author><pubDate>Thu, 21 Apr 2022 15:41:15 +0800</pubDate><description><![CDATA[一级缓存

一级缓存的作用域是Executor,实际就是SqlSession，默认开启并且无法关闭，

查询的时候会先判断SqlSession是否缓存存在，如果存在直接走缓存，如果不存在则走数据库



如下操作默认会走缓存：

SqlSession sqlSession1 = factory.openSession(true);

SqlSession sqlSession2 = factory.openSession(true);

StudentMapper studentMapper ...]]></description><category></category></item><item><title><![CDATA[RocketMQ动态调整写队列和读队列]]></title><link>https://blog.csdn.net/oliver486/article/details/123917425</link><guid>https://blog.csdn.net/oliver486/article/details/123917425</guid><author>oliver486</author><pubDate>Sat, 02 Apr 2022 12:28:50 +0800</pubDate><description><![CDATA[topic创建的时候会指定读、写队列的数量



写的时候会按照下面的对应关系写数据



如果想减少读、写队列数的数量，先减少写队列的数量





这样队列3和队列4就不会继续写入数据，等3和4没有数据之后，将3、4读队列删掉，避免等数据丢失
...]]></description><category></category></item><item><title><![CDATA[一致性hash算发（转）]]></title><link>https://blog.csdn.net/oliver486/article/details/123914483</link><guid>https://blog.csdn.net/oliver486/article/details/123914483</guid><author>oliver486</author><pubDate>Sat, 02 Apr 2022 10:26:57 +0800</pubDate><description><![CDATA[当服务器的数据量和访问量很大的时候，我们可能需要寻找一种解决方案去解决诸如分布式、缓存优化的问题，这也是面试高级或资深服务器开发经常会遇到的问题。

我们先以一个例子来说明为什么要使用一致性哈希算法，这里以著名的开源缓存库memcache来说明：



MemCache是什么

MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统，用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数，从而提高了网站访问的速度。MemCaChe是一个存储键值对的Ha]]></description><category></category></item><item><title><![CDATA[数据库扩容方案]]></title><link>https://blog.csdn.net/oliver486/article/details/123912657</link><guid>https://blog.csdn.net/oliver486/article/details/123912657</guid><author>oliver486</author><pubDate>Sat, 02 Apr 2022 09:47:55 +0800</pubDate><description><![CDATA[历史背景：

业务系统在设计初期，由于数据量小，一般会采取单服务+单数据库





随着访问量的上升，需要对数据库做垂直或者水平拆分





如上图通过分片算法我们对数据做了水平拆分，比如订单的库，我们按照订单号对数据表的数量做取于9算法，如订单号为1000，1000/4取余=0，则将数据存入orderdb_1中

随着业务量对上升经过拆分的数据库表的数据里已经达到极限，影响到数据查询等表操作，需要对数据库做扩容操作，扩容方案（扩容一倍）

方案一：

     1:增加新表

   ...]]></description><category></category></item><item><title><![CDATA[RocketMQ消息ACK机制]]></title><link>https://blog.csdn.net/oliver486/article/details/123900921</link><guid>https://blog.csdn.net/oliver486/article/details/123900921</guid><author>oliver486</author><pubDate>Fri, 01 Apr 2022 17:05:38 +0800</pubDate><description><![CDATA[最详细的RocketMQ Ack机制分析]]></description><category></category></item><item><title><![CDATA[mat使用]]></title><link>https://blog.csdn.net/oliver486/article/details/123822843</link><guid>https://blog.csdn.net/oliver486/article/details/123822843</guid><author>oliver486</author><pubDate>Tue, 29 Mar 2022 15:32:02 +0800</pubDate><description><![CDATA[打开Mat后File&gt;OpenHeapDump打开一个对应的dump文件后，此时对应的打开后结果如图所示





默认情况下打开该dump文件后，直接展示的就是一个Overview(概览)的页签，其中可以看到上面标注为（1,2）的地方所对应的图标与Overview页签中所对应的部分图标是相似的；如果你不小心关掉了Overview的页签，那么直接单击当前dump页签第一行导航栏的第一个 I字的图标即可，同理，如果此时想要打开Histogram，那么在不打开Overview的情况下，直接点击第一行导航栏]]></description><category></category></item><item><title><![CDATA[threadlocal内存泄漏的原因]]></title><link>https://blog.csdn.net/oliver486/article/details/123798272</link><guid>https://blog.csdn.net/oliver486/article/details/123798272</guid><author>oliver486</author><pubDate>Mon, 28 Mar 2022 16:33:30 +0800</pubDate><description><![CDATA[ThreadLocal的原理：

ThreadLocal的set实际实在当前线程对象里创建了一个内部变量ThreadLocalMap&lt;ThreadLocal,object&gt; ,ThreadLocalMap的key是ThreadLocal的引用。



造成泄漏的原因：

由于ThreadLocal对象是弱引用，如果外部没有强引用指向它，它就会被GC回收，导致Entry的Key为null

如果当前的情况下在栈中将threadlocal1的引用设置为null，强引用1将会失效，那堆中的thre..]]></description><category></category></item><item><title><![CDATA[jvm常用配置]]></title><link>https://blog.csdn.net/oliver486/article/details/123566186</link><guid>https://blog.csdn.net/oliver486/article/details/123566186</guid><author>oliver486</author><pubDate>Fri, 18 Mar 2022 09:19:44 +0800</pubDate><description><![CDATA[常用的JVM调优参数总结汇总【随时查阅学习】

本文章参数根据后期用的参数会持续更新 ---

（1）-Xms20M

表示设置JVM启动内存的最小值为20M，必须以M为单位

（2）-Xmx20M

表示设置JVM启动内存的最大值为20M，必须以M为单位。将-Xmx和-Xms设置为一样可以避免JVM内存自动扩展。大的项目-Xmx和-Xms一般都要设置到10G、20G甚至还要高

（3）-verbose:gc

表示输出虚拟机中GC的详细情况

（4）-Xss128k

表示可以设置虚拟机栈的大小为128.]]></description><category></category></item><item><title><![CDATA[java 线程池核心运行原理]]></title><link>https://blog.csdn.net/oliver486/article/details/123082956</link><guid>https://blog.csdn.net/oliver486/article/details/123082956</guid><author>oliver486</author><pubDate>Wed, 23 Feb 2022 10:40:12 +0800</pubDate><description><![CDATA[一：er说到线程池，离不开线程池的参数，线程池的参数主要有如下

1：corePoolSize核心线程数

始终在运行的线程数，始终都有这些线程在运行，但是始终在运行的线程数并不保证是同样的 线程（这一点很重要）



2：maximumPoolSize最大线程数

同时运行的最大的线程数数量



3 BlockingQueue 阻塞队列

核心线程数已经达到配置值时，新进来的任务会进入到该队列中等待执行，因为是queue所以先进先出，队列里等待时间长的会先被执行

阻塞队列有：

ArrayBlocki]]></description><category></category></item><item><title><![CDATA[大数据量分库分表之后的非分片键查询解决方案]]></title><link>https://blog.csdn.net/oliver486/article/details/122886206</link><guid>https://blog.csdn.net/oliver486/article/details/122886206</guid><author>oliver486</author><pubDate>Fri, 11 Feb 2022 18:14:05 +0800</pubDate><description><![CDATA[大数据量分库分表之后的非分片键查询解决方案]]></description><category></category></item></channel></rss>