<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[eumenides_的博客]]></title><description><![CDATA[越努力越幸运]]></description><link>https://blog.csdn.net/eumenides_</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; eumenides_]]></copyright><item><title><![CDATA[mysql事务隔离级别探险]]></title><link>https://blog.csdn.net/eumenides_/article/details/103635767</link><guid>https://blog.csdn.net/eumenides_/article/details/103635767</guid><author>eumenides_</author><pubDate>Fri, 20 Dec 2019 17:32:35 +0800</pubDate><description><![CDATA[阅读完本章你能学到什么
• 了解到mysql中的几种日志和它的作用
• 加深对mysql事务隔离级别的理解
• 现代互联网企业会选择什么样的隔离级别
先来思考几个问题

mysql的4种隔离级别都有什么问题？
mysql的默认隔离级别是哪一种？为什么和其他主流数据库入：oracle和sqlserver不一样？
现代互联网企业到底应该选择哪一种隔离级别？

关系型数据库（RDBMS）中事务的ACID...]]></description><category></category></item><item><title><![CDATA[怎么肥四？mysql联合索引的最左原则失效了？？？]]></title><link>https://blog.csdn.net/eumenides_/article/details/102951067</link><guid>https://blog.csdn.net/eumenides_/article/details/102951067</guid><author>eumenides_</author><pubDate>Thu, 07 Nov 2019 11:40:11 +0800</pubDate><description><![CDATA[最近新工作忙活告一段落，开始着手梳理老系统的业务逻辑写成文档，没想到看到了祖传代码：存储过程。虽然我没写过存储过程不过好在我sql功底不错，也能看得懂，我把存储过程的sql整理出来，发现有一断sql慢查询严重，经过EXPLAIN分析发现有一小段sql扫描了全表，心里想着难道没给这个字段加索引？于是看看对应的表发现虽然没有专门为这个字段加索引，不过这个字段有组合索引，

了解过组合索引的同学知道有个...]]></description><category></category></item><item><title><![CDATA[分布式锁的选择与应用]]></title><link>https://blog.csdn.net/eumenides_/article/details/102625419</link><guid>https://blog.csdn.net/eumenides_/article/details/102625419</guid><author>eumenides_</author><pubDate>Fri, 18 Oct 2019 16:24:09 +0800</pubDate><description><![CDATA[分布式锁的3点原则:

可用性  只要大多数节点能够正常工作那么客户端就能获取或释放锁。
安全性  一定要互斥，即不管何时只能有一个客户端持有锁。
不能死锁  任何时候都不能死锁，不能阻碍其他线程获取锁。

分布式锁的比较：
目前业界使用分布式锁通常是依赖于redis或zookeeper，下面我们就以这两种方式分析比较下优劣。
基于Redis实现的分布式锁：
实现原理：
基于Redis的setnx...]]></description><category></category></item><item><title><![CDATA[mysql日志打印时间与系统时间差8h--------坑爹参数log_timestamps]]></title><link>https://blog.csdn.net/eumenides_/article/details/94719944</link><guid>https://blog.csdn.net/eumenides_/article/details/94719944</guid><author>eumenides_</author><pubDate>Fri, 05 Jul 2019 10:39:44 +0800</pubDate><description><![CDATA[最近在玩docker，轻量级的操作真是棒棒哒，恨不得所有软件都装上去，想重启就重启想删就删，想下载就下来，而且速度还很快。可是我在拉下来mysql5.7的镜像后，启动时发现2个小问题：

我用sqlyog工具连上容器的mysql时，select now()；发现时间比当前时间晚8h。
mysql启动日志时间比当前时间晚8个小时。

很明显当前时间是东八区，是CST时间，mysql是UTC时间
一开...]]></description><category></category></item><item><title><![CDATA[spring boot2.0整合activeMQ，配置连接池，启动项目报错，JmsMessagingTemplate无法注入]]></title><link>https://blog.csdn.net/eumenides_/article/details/91850332</link><guid>https://blog.csdn.net/eumenides_/article/details/91850332</guid><author>eumenides_</author><pubDate>Thu, 13 Jun 2019 13:56:40 +0800</pubDate><description><![CDATA[上一篇讲到在整合activeMQ如何将queue和topic两种模式共存：spring boot2.0整合activeMQ，实现p2p和topic两者消息模式兼容共存
然后还遗留了一个问题，有读者评论因为配置文件里一句启用连接池导致项目启动报错，只要把那句配置注释掉或者改为false就可以了，这实际上是治标不治本，因毕竟流量大的时候不启用连接池效率会很低：
# 启用连接池
spring.activ...]]></description><category></category></item><item><title><![CDATA[spring boot2.0整合activeMQ，实现p2p和topic两者消息模式兼容共存]]></title><link>https://blog.csdn.net/eumenides_/article/details/91845155</link><guid>https://blog.csdn.net/eumenides_/article/details/91845155</guid><author>eumenides_</author><pubDate>Thu, 13 Jun 2019 13:30:51 +0800</pubDate><description><![CDATA[上篇文章讲到使用spring boot整合activeMQ，实现ptp和topic两者消息模式，默认情况下是queue模式(也就是p2p)，如果要想实现topic需要在配置文件里配上：
# 默认情况下该配置是false,activemq提供的是queue模式，若要使用topic模式需要配置为true
spring.jms.pub-sub-domain=false

上篇文章遗留了两个问题：
1.我...]]></description><category></category></item><item><title><![CDATA[我的一个基于springboot2.0+的汇聚个大小技术要点，热门常用中间件，分布式技术的demo集合]]></title><link>https://blog.csdn.net/eumenides_/article/details/91420873</link><guid>https://blog.csdn.net/eumenides_/article/details/91420873</guid><author>eumenides_</author><pubDate>Tue, 11 Jun 2019 11:56:25 +0800</pubDate><description><![CDATA[工作3年半了，大大小小技术用了不少了一直都没有提炼出一种通俗、快捷、易懂的方式，索性把过去工作中，学习中用到的所有热门技术，中间件，分布式技术以demo的形式呈现出来放在我的github上，后续会放在gitee。

每一个demo我都会手动单元测试保证能跑通，无问题。
每一个demo我都会用最必要、最简化的方式呈现出来
后期会为每一个demo编写文档，包括工作中使用新的和想法
虽然github上已...]]></description><category></category></item><item><title><![CDATA[微服务网关统一灵活动态鉴权url方案]]></title><link>https://blog.csdn.net/eumenides_/article/details/89713184</link><guid>https://blog.csdn.net/eumenides_/article/details/89713184</guid><author>eumenides_</author><pubDate>Tue, 30 Apr 2019 17:13:48 +0800</pubDate><description><![CDATA[做微服务时候会有一个网关的概念，网关的作用就是：

统一请求鉴权
请求日志记录
请求路由分发

这里我们来讨论第一种解决方案。
比方说我们项目api接口层里大大小小数百个接口，也就是会有数百个请求路径(url),
其中有些不需要登录就能访问有些需要登录来访问，传统单体应用我们怎么做？

如果用shiro的话我们会配置不用鉴权的接口用“anon”声明。
用token方式的话我们会用aop写个注解放在...]]></description><category></category></item><item><title><![CDATA[mysql事物sql语句死锁，定时任务启动失败Lock wait timeout exceeded；try restarting transaction]]></title><link>https://blog.csdn.net/eumenides_/article/details/89182805</link><guid>https://blog.csdn.net/eumenides_/article/details/89182805</guid><author>eumenides_</author><pubDate>Wed, 10 Apr 2019 14:41:44 +0800</pubDate><description><![CDATA[把定时任务quartz配置mysql里多台机器启动时可能会出现数据库死锁，然后控制台报错：
Lock wait timeout exceeded；try restarting transaction

项目启动失败，这时候只需要去mysql中查两个语句，然后杀掉对应的死锁线程就行：
1.查询mysql所有正在执行的sql，看到query就说明是正在执行的，有时候慢查询导致程序卡住无响应也可以这么查...]]></description><category></category></item><item><title><![CDATA[一个炒鸡方便的持续集成打包发布插件Alibaba Cloud Toolkit内置于idea,程序员的福音]]></title><link>https://blog.csdn.net/eumenides_/article/details/88842065</link><guid>https://blog.csdn.net/eumenides_/article/details/88842065</guid><author>eumenides_</author><pubDate>Wed, 27 Mar 2019 13:06:01 +0800</pubDate><description><![CDATA[以前我们写完代码要打包发布到服务器需要：

maven编译打包
用xshell/xftp把包上传到服务器
操作xshell 把服务器的项目进程杀掉，然后写命令部署发布
如果发现有bug什么的还得改完代码后重新走一遍1，2，3，来回切换工具烦得要死，有时候一天都能打好几个包。

后来有了jenkins，我们在服务器上安装这个工具然后一通复杂的配置git地址，帐号，maven，jdk啊反正一开始配置还...]]></description><category></category></item><item><title><![CDATA[Spring Boot自动配置原理流程]]></title><link>https://blog.csdn.net/eumenides_/article/details/86064003</link><guid>https://blog.csdn.net/eumenides_/article/details/86064003</guid><author>eumenides_</author><pubDate>Tue, 08 Jan 2019 10:54:51 +0800</pubDate><description><![CDATA[



链接：http://www.cnblogs.com/xiaoxi/
作者：平凡希

&amp;amp;nbsp;
我们开发任何一个Spring Boot项目，都会用到如下的启动类
1&amp;amp;nbsp;@SpringBootApplication2&amp;amp;nbsp;public&amp;amp;nbsp;class&amp;amp;nbsp;Application&amp;amp;nbsp;{3&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&]]></description><category></category></item><item><title><![CDATA[springboot整合rabbitmq实现延时队列之rabbitmq_delayed_message_exchange插件方式]]></title><link>https://blog.csdn.net/eumenides_/article/details/86027185</link><guid>https://blog.csdn.net/eumenides_/article/details/86027185</guid><author>eumenides_</author><pubDate>Mon, 07 Jan 2019 21:07:26 +0800</pubDate><description><![CDATA[上篇讲的是springboot整合rabbitmq实现延时队列之TTL方式实现rabbitmq的延时队列功能，在消息死亡时间比较灵活复杂的时候我们不可能声明很多死信队列去管理，而且声明一个就要6个bean，很蛋疼，所以希望能够有种方式使其消息死亡异步化，到期即死即消费，不会被阻塞，这里介绍使用插件的方式，不过需要rabbitmq要是3.6版本以上，也就是说，加入你的rabbitmq版本太老只能用T...]]></description><category></category></item><item><title><![CDATA[springboot整合rabbitmq实现延时队列之TTL方式]]></title><link>https://blog.csdn.net/eumenides_/article/details/86025773</link><guid>https://blog.csdn.net/eumenides_/article/details/86025773</guid><author>eumenides_</author><pubDate>Mon, 07 Jan 2019 20:43:50 +0800</pubDate><description><![CDATA[很多时候我们想定时去做某件事情的时候我们会首先想到定时任务，quartz是个不错的选择，但是也有缺点，假如配置在项目中，集群部署会有重复执行的问题，如果持久化在mysql中，解决了集群的问题，但是过于依赖mysql，耦合严重，当然还有日志量庞大、执行时间精度、过于耗费系统资源等等问题。所以这时候使用消息队列中间件的的延时队列就是一个很好得解决方案，我们设置要触发消费的时间和必要的参数入队mq，到时...]]></description><category></category></item><item><title><![CDATA[springboot整合websocket实现点对点和全体发消息]]></title><link>https://blog.csdn.net/eumenides_/article/details/85777129</link><guid>https://blog.csdn.net/eumenides_/article/details/85777129</guid><author>eumenides_</author><pubDate>Fri, 04 Jan 2019 15:04:49 +0800</pubDate><description><![CDATA[**背景：**最近项目里有个类似备忘录的功能，每个用户管理多个客户，每个客户都有一个备忘录，一旦员工管理的客户多了，备忘录自然也多了，往往这时员工就搞不清啥时候该干啥了，所以要做一个类似小秘书的功能，按照备忘录里设置执行时间前30分钟通知一下员工，当然其他的消息都可以通知。
**功能介绍：**员工会针对某个客户添加一个执行计划，哪天几点上门/电话/短信拜访客户或其他事项。如果说我们设置在执行时间前...]]></description><category></category></item><item><title><![CDATA[The temporary upload location [/tmp/tomcat.4519862041770988807.8082/work/Tomcat/localhost/ROOT] is n]]></title><link>https://blog.csdn.net/eumenides_/article/details/84066539</link><guid>https://blog.csdn.net/eumenides_/article/details/84066539</guid><author>eumenides_</author><pubDate>Wed, 14 Nov 2018 14:53:56 +0800</pubDate><description><![CDATA[今天线上遇到一个问题，编辑部分表单页面保存时报错，我随便点了点，发现有的页面ok有的页面不行，不行的页面都是带图片上传的，也就是form指定了enctype=“multipart/form-data”，想了一下，生产环境两周没迭代了，没人动啊，而且还有部分数据存在呢，也是测试过的不可能出有问题，然后看了下日志：
2018-11-14 13:36:53.202 [http-nio-8082-exec...]]></description><category></category></item><item><title><![CDATA[Centos7之idea远程debug之jar包版]]></title><link>https://blog.csdn.net/eumenides_/article/details/84061128</link><guid>https://blog.csdn.net/eumenides_/article/details/84061128</guid><author>eumenides_</author><pubDate>Wed, 14 Nov 2018 09:41:11 +0800</pubDate><description><![CDATA[上一篇写过打war包放在外置tomcat的远程debug，Centos7之idea远程debug
现在由于springboot免配置之风大肆盛行，这边也写一个jar包版的远程debug，其实java -jar 使用remote debug比外置tomcat更简单。

选择Remote,idea会帮你自动配置好，然后你只需要在Host中填写你的服务器的ip就行


2.复制For JDK 1.4x下...]]></description><category></category></item><item><title><![CDATA[provisional headers are shown问题解决]]></title><link>https://blog.csdn.net/eumenides_/article/details/83412758</link><guid>https://blog.csdn.net/eumenides_/article/details/83412758</guid><author>eumenides_</author><pubDate>Fri, 26 Oct 2018 11:49:57 +0800</pubDate><description><![CDATA[本来页面里展示产品图片，点击图片会跳转链接的，结果点了后没反应，F12调试看一下，没有js报错，但是请求却没到后台，看了请求头出现了provisional headers are shown,其他啥也没有，百度了下发现有的说是跨域的问题，有的说是其他乱七八糟问题，反正对我都没用，但是我把链接复制出来单独访问发现没有问题，这我就尴尬了，为啥单独访问链接没问题，从图片里的A标签跳转就不行呢？于是我在前...]]></description><category></category></item><item><title><![CDATA[一点点关于工厂模式的使用]]></title><link>https://blog.csdn.net/eumenides_/article/details/83341294</link><guid>https://blog.csdn.net/eumenides_/article/details/83341294</guid><author>eumenides_</author><pubDate>Wed, 24 Oct 2018 11:26:25 +0800</pubDate><description><![CDATA[背景：
　　　入行写java也快3年了，从一开始不懂什么事设计模式，死记硬背设计模式的概念，到后来随着写代码的深入，慢慢的开始理解设计模式的强大，就像古装片武功的心法一样，需要自身去主动地理解去体会，才能化为己用，在编码层面在上升一个阶段。
　　　最近我带着几个同事做了一个媒体运营推广的项目，一开始的业务设计是我们开发一个产品对应一个唯一的H5页面，用户方文H5页面后填写一个信息，然后提交到后台，...]]></description><category></category></item><item><title><![CDATA[springboot集群下多节点整合quartz持久化到mysql]]></title><link>https://blog.csdn.net/eumenides_/article/details/82999874</link><guid>https://blog.csdn.net/eumenides_/article/details/82999874</guid><author>eumenides_</author><pubDate>Wed, 10 Oct 2018 17:00:59 +0800</pubDate><description><![CDATA[单个节点的情况下直接使用spring的@Scheduled注解就可以玩定时任务，但是多节点的情况下就凉凉了，会重复执行定时任务 ，因此这时候很有必要把定时任务放在mysql里，让数据库控制执行定时任务的实例。
1.pom引3个包
		&amp;lt;!--quartz依赖--&amp;gt;
		&amp;lt;dependency&amp;gt;
			&amp;lt;groupId&amp;gt;org.springframework&amp;lt...]]></description><category></category></item><item><title><![CDATA[中国夏令时导致的一起前端展示的时间比后台少一天奇葩案例]]></title><link>https://blog.csdn.net/eumenides_/article/details/82698156</link><guid>https://blog.csdn.net/eumenides_/article/details/82698156</guid><author>eumenides_</author><pubDate>Fri, 14 Sep 2018 10:03:15 +0800</pubDate><description><![CDATA[项目快要上线了，突然测试问我为什么我测试的部分数据其中生日字段比我设置生日时候少一天呢？我当时回答怎么可能，同样的生日字段保存的date日期怎么可能部分数据会少一天，于是我就让测试指出哪几条数据有问题，然后我对照mysql看了一下，卧槽！什么鬼，真的是尼玛少了一天，举个栗子： 
mysql:1989-04-10 
前端:1989-04-09 
卧槽，神特么见鬼了，于是一波断点打起来发现有问题的数据...]]></description><category></category></item></channel></rss>