<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[我思故我在 coding很澎湃]]></title><description><![CDATA[不积跬步 无以千里]]></description><link>https://blog.youkuaiyun.com/wlccomeon</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wlccomeon]]></copyright><item><title><![CDATA[一道关于synchronized和wait的面试题]]></title><link>https://blog.youkuaiyun.com/wlccomeon/article/details/116500702</link><guid>https://blog.youkuaiyun.com/wlccomeon/article/details/116500702</guid><author>wlccomeon</author><pubDate>Tue, 11 May 2021 18:23:01 +0800</pubDate><description><![CDATA[今天看到一个面试题，刚开始竟然没搞懂。经过一番摸索之后才发现问题所在，特此记录下来。
1.面试题
下面的代码在绝大部分时间内都运行得很正常，请问在什么情况下会出现问题？问题的根源在哪里？
  import java.util.LinkedList;

  public class Stack {
    LinkedList list = new LinkedList();
    public synchronized void push(Object x) {
      synchronized(li]]></description><category></category></item><item><title><![CDATA[Bean的拷贝工具对比]]></title><link>https://blog.youkuaiyun.com/wlccomeon/article/details/110308706</link><guid>https://blog.youkuaiyun.com/wlccomeon/article/details/110308706</guid><author>wlccomeon</author><pubDate>Sun, 29 Nov 2020 12:10:41 +0800</pubDate><description><![CDATA[文章目录1.前言2.Apache BeanUtils3.Spring BeanUtils4.BeanCopier5.MapStruct6.对比6.1 代码样例6.2 结论
1.前言
在进行分层和微服务模式下的开发时，我们经常回遇到DTO、DO、VO等之间的转换，如果手动对各个属性进行set的话容易漏掉,同时碰到字段特别多的情况会让人写到吐，当我们对字段进行增减的时候还需要手动处理。为了避免出现这些臃肿又容易出错的代码，我们一般都会使用Bean的拷贝工具。下面来介绍常见的几种。
2.Apache BeanUt]]></description><category></category></item><item><title><![CDATA[IDEA中启动RocketMQ的Broker源码]]></title><link>https://blog.youkuaiyun.com/wlccomeon/article/details/106479637</link><guid>https://blog.youkuaiyun.com/wlccomeon/article/details/106479637</guid><author>wlccomeon</author><pubDate>Mon, 01 Jun 2020 18:51:36 +0800</pubDate><description><![CDATA[文章目录1.添加启动类和配置1.1 添加新的启动模块1.2 修改broker模块配置2.添加broker配置文件3.启动broker
在 IDEA中启动RocketMQ的NameServer源码 这篇文章中，我们创建了RocketMQ环境变量，设置好了运行NameServer所需要的目录和文件，最后成功启动。接下来就是对Broker的源码启动流程了。
1.添加启动类和配置
1.1 添加新的启动模块
点击NamesrvStartup,选择Edit Configurations:

弹出框中选择添→Applic]]></description><category></category></item><item><title><![CDATA[RocketMQ可视化界面搭建]]></title><link>https://blog.youkuaiyun.com/wlccomeon/article/details/106473773</link><guid>https://blog.youkuaiyun.com/wlccomeon/article/details/106473773</guid><author>wlccomeon</author><pubDate>Mon, 01 Jun 2020 15:46:11 +0800</pubDate><description><![CDATA[文章目录普通安装Docker安装
普通安装
1.下载rocketmq-externals
打开Git Bash，在合适的目录下执行以下命令：
git clone git@github.com:apache/rocketmq-externals.git

2.打包rocketmq-console
cd rocketmq-externals/rocketmq-console
mvn clean package -DskipTests

经过较长时间的下载jar包过程，最终打包完毕。
3.启动：进入到rocket]]></description><category></category></item><item><title><![CDATA[IDEA中启动RocketMQ的NameServer源码]]></title><link>https://blog.youkuaiyun.com/wlccomeon/article/details/106472757</link><guid>https://blog.youkuaiyun.com/wlccomeon/article/details/106472757</guid><author>wlccomeon</author><pubDate>Mon, 01 Jun 2020 15:09:36 +0800</pubDate><description><![CDATA[文章目录1.下载源码2.配置启动参数2.1添加NameServer启动类2.2 配置NameServer启动参数3.创建运行所需目录和文件3.1创建文件夹4.启动NameServer
1.下载源码
git命令下载源码：
git clone git@github.com:apache/rocketmq.git

配置Maven相关环境，使用IDEA打开该源码，并等待加载完成，这一步骤就不详细描述了。
2.配置启动参数
2.1添加NameServer启动类
在打开RocketMQ项目的IDEA中，找到如下图：
]]></description><category></category></item><item><title><![CDATA[Redis安装及生产环境启动方案]]></title><link>https://blog.youkuaiyun.com/wlccomeon/article/details/104732352</link><guid>https://blog.youkuaiyun.com/wlccomeon/article/details/104732352</guid><author>wlccomeon</author><pubDate>Sun, 08 Mar 2020 14:24:09 +0800</pubDate><description><![CDATA[文章目录安装Redis修改配置，Deamon启动设置随系统启动
生产环境当中，reis是以守护进程即系统的 daemon 进程去运行的，并且redis会随着系统启动而一起启动，下面就一起来配置一下。本记录基于Redis3.2.8，CentOS6.5。
安装Redis

安装依赖tcl

wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.t...]]></description><category></category></item><item><title><![CDATA[SpringBoot多数据源+Mybatis配置实现]]></title><link>https://blog.youkuaiyun.com/wlccomeon/article/details/104728489</link><guid>https://blog.youkuaiyun.com/wlccomeon/article/details/104728489</guid><author>wlccomeon</author><pubDate>Sun, 08 Mar 2020 10:48:29 +0800</pubDate><description><![CDATA[文章目录目录结构sql脚本pom引用jar包application.yml配置数据源数据源配置Mapper接口Mapper配置文件PO测试
目录结构
由于在springboot项目当中需要同时操作不止一个数据库，需要用到多个数据源。在本例当中以first和second来区分两个数据源。同时为了书写方便，在Controller当中直接调用的Mapper接口。最终结果整合和测试，通过了获取不同数据源中...]]></description><category></category></item><item><title><![CDATA[ArrayList遍历删除方式总结]]></title><link>https://blog.youkuaiyun.com/wlccomeon/article/details/104372854</link><guid>https://blog.youkuaiyun.com/wlccomeon/article/details/104372854</guid><author>wlccomeon</author><pubDate>Tue, 18 Feb 2020 12:34:38 +0800</pubDate><description><![CDATA[文章目录1. fori 删除(顺序会漏删，倒序可正常)顺序删除倒序删除2. foreach 删除(删除一个元素停止遍历可正常，多个元素删除有CME问题)3. iterator 删除(可正常删除)
我们知道，在Java语言当中对集合的遍历方式大致分为3种：fori，foreach，iterator。假如给定一个ArrayList，对其中的某些指定元素进行循环遍历查找并且删除的话，它们之间又有什么不同...]]></description><category></category></item><item><title><![CDATA[linux常用命令]]></title><link>https://blog.youkuaiyun.com/wlccomeon/article/details/87522432</link><guid>https://blog.youkuaiyun.com/wlccomeon/article/details/87522432</guid><author>wlccomeon</author><pubDate>Sun, 17 Feb 2019 11:48:15 +0800</pubDate><description><![CDATA[目录 日志操作进程操作vim编辑文件文件、文件夹的操作搜索命令其他，待补充和归类
作为一个非运维人员，基本的linux操作还是需要会的，下面的命令都是自己在工作中使用过的，以后用到其他的命令之后，会及时补充。
日志操作
more/less的使用：
	more 日志文件:
	    打开日志的时候，可以按下空格键，一屏一屏的查看日志。Ctrl+C结束。
    less 日志文件：
        ...]]></description><category></category></item><item><title><![CDATA[Tomcat集群Session共享的几个方案]]></title><link>https://blog.youkuaiyun.com/wlccomeon/article/details/87425977</link><guid>https://blog.youkuaiyun.com/wlccomeon/article/details/87425977</guid><author>wlccomeon</author><pubDate>Sat, 16 Feb 2019 10:12:45 +0800</pubDate><description><![CDATA[Tomcat集群Session共享的几个解决方案
问题由来
当我们的业务使用单个Tomcat不足以支持访问请求的时候，需要引入Tomcat集群。而每个Tomcat的Session是不互通的，如果用户的请求落入到不同的Tomcat中，用户需要频繁的登录，给用户造成困扰。所以，在一个应用服务器产生Session之后，应该让其他应用服务器也能够获取到，也就是Session共享。
解决方法
以下几种方案有...]]></description><category></category></item><item><title><![CDATA[Tomcat集群的Debug方法]]></title><link>https://blog.youkuaiyun.com/wlccomeon/article/details/87347558</link><guid>https://blog.youkuaiyun.com/wlccomeon/article/details/87347558</guid><author>wlccomeon</author><pubDate>Fri, 15 Feb 2019 11:40:38 +0800</pubDate><description><![CDATA[文章目录前言实现过程配置hosts配置和启动Nginx配置和启动Tomcat踩的坑总结
前言
在使用Tomcat集群的时候，有时我们想在测试环境中定位一个问题不得不通过分析代码，在多个地方添加和分析日志来一遍一遍的重复确定。这个时候，如果能对某一个节点进行debug调试的话，定位问题就相当easy了。当然，如果问题比较简单，一眼能看出来，也不需要debug。至于Nginx的安装，搜一下教程即可。
...]]></description><category></category></item><item><title><![CDATA[Redis常用集群分片实现方案以及ShardedJedis分片源码简析]]></title><link>https://blog.youkuaiyun.com/wlccomeon/article/details/86934099</link><guid>https://blog.youkuaiyun.com/wlccomeon/article/details/86934099</guid><author>wlccomeon</author><pubDate>Sun, 10 Feb 2019 21:54:03 +0800</pubDate><description><![CDATA[这两天项目上需要添加一个限流，基于redis+lua的实现方案，项目中使用ShardedJedis进行redis集群分片，但是ShardedJedis并不支持eval和evalsha函数，所以就对jedis包中SharedJedis部分做了一点修改，使其可以支持这两个函数。顺便看了一下ShardedJedis中分片部分的实现源码，以前也用过基于代理的方式访问redis集群的方案，这里结合着自己的理...]]></description><category></category></item><item><title><![CDATA[AOP实现MySql数据库的读写分离—支持一主多从]]></title><link>https://blog.youkuaiyun.com/wlccomeon/article/details/86709018</link><guid>https://blog.youkuaiyun.com/wlccomeon/article/details/86709018</guid><author>wlccomeon</author><pubDate>Wed, 30 Jan 2019 22:06:38 +0800</pubDate><description><![CDATA[文章目录前言主从复制原理实现主库配置从库配置读写分离原理实现数据库变量配置数据库连接池配置AOP相关配置动态决定多数据源的关键点AOP切面
前言
我们知道，数据库的写和读大致上是遵循二八定律的。尤其是针对互联网业务，读的操作要比写操作的概率高更多。为了消除读写锁冲突，缓解数据库压力，提高读写性能，我们提出了读写分离的数据库架构：将数据库分为了主(master)从(slave)库，一个主库用于写数据...]]></description><category></category></item><item><title><![CDATA[彻底搞懂设计模式之—单例模式]]></title><link>https://blog.youkuaiyun.com/wlccomeon/article/details/86692544</link><guid>https://blog.youkuaiyun.com/wlccomeon/article/details/86692544</guid><author>wlccomeon</author><pubDate>Tue, 29 Jan 2019 17:06:23 +0800</pubDate><description><![CDATA[文章目录单例简介单例的N种写法及优缺点饿汉式（均可用）静态代码块实现静态常量实现懒汉式经典饿汉式（不可用）经典加锁懒汉式（可用，不推荐）双重检查懒汉式（可用，推荐）静态内部类懒汉式(可用，推荐)容器单例（根据实际情况）对单例的破坏序列化与反序列化反射枚举单例（可用，推荐）总结
单例简介
单例模式（Singleton Pattern），是一种创建型设计模式。它的定义为：保证一个类仅有一个实例，并提供...]]></description><category></category></item><item><title><![CDATA[分布式redis连接池工具类的封装和踩的坑]]></title><link>https://blog.youkuaiyun.com/wlccomeon/article/details/86566203</link><guid>https://blog.youkuaiyun.com/wlccomeon/article/details/86566203</guid><author>wlccomeon</author><pubDate>Mon, 21 Jan 2019 11:17:31 +0800</pubDate><description><![CDATA[文章目录环境与目录一、引入Jar包并添加配置文件二、添加读取配置文件的工具类三、连接池封装四、Redis操作工具类五、踩过的坑六、结语
环境与目录
IDE： IntelliJ IDEA 2018.2
Redis：2.0.8 and 4.0.12 （给自己挖了个坑）
Server：VmWare中的两个CentOS7系统（也可以一个系统安装两个Redis节点）
前提：保证每个redis节点能用，并将防...]]></description><category></category></item><item><title><![CDATA[前后端分离的由来和优缺点]]></title><link>https://blog.youkuaiyun.com/wlccomeon/article/details/86559229</link><guid>https://blog.youkuaiyun.com/wlccomeon/article/details/86559229</guid><author>wlccomeon</author><pubDate>Sun, 20 Jan 2019 09:20:47 +0800</pubDate><description><![CDATA[目录

一、前戏

二、术业有专攻（开发人员分离）

三、原始人时代（各种耦合）

四、JSP的痛点

五、开发模式

六、请求方式

七、前后分离的优势

八、前后端分离注意事项

九、扩展阅读

十、总结

一、前戏

前后端分离已成为互联网项目开发的业界标准使用方式，通过nginx+tomcat的方式（也可以中间加一个nodejs）有效的进行解耦，并且前后端分离会为以后的大型分布式架构、弹性...]]></description><category></category></item><item><title><![CDATA[Redis分布式算法原理—Hash一致性理解]]></title><link>https://blog.youkuaiyun.com/wlccomeon/article/details/86553831</link><guid>https://blog.youkuaiyun.com/wlccomeon/article/details/86553831</guid><author>wlccomeon</author><pubDate>Sat, 19 Jan 2019 17:42:20 +0800</pubDate><description><![CDATA[Hash一致性理解前言Redis集群使用功能快捷键合理的创建标题，有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能，丰富你的文章UML 图表FLowchart流程图导出与导入导出导入
前言

一致性Hash算法在分...]]></description><category></category></item></channel></rss>