Skip to main content

December 2018

再好那么一点点

Submitted by taotao on Fri, 12/14/2018 - 22:04

 

dev

今天项目发布正式环境,在生产环境执行flyway的db migration脚本的时后,出现了如下的错误

caused by java.sql.sqlexception statement violates GTID consistency create temporary table and drop temporary table can nonly be executed outside transactional conext

经过分析这是由于mysql开启了GTID的特性导致db migration脚本中的如下开头语句都报错

CREATE TEMPORARY TABLE ....

这个语句存在的目的是为了从一个表迁移数据到另外一个表中,然后再删除该临时表。

Tags

TCP/IP学习日志四-分组交换协议

Submitted by taotao on Thu, 12/13/2018 - 19:25

什么是分组交换协议

datagram-packet-switching

分组交换协议可以干什么

我们打电话(不管是用手机或者座机)、上网,在线路上传输的数据都是被切割成一个个的数据包, 利用分组交换协议进行传输, 网络上有多个交换节点,数据包中含有包序号、原地址、目的地址信息,交换 节点根据这些信息将数据包发送到目的地址,其中接收端利用包序号进行有序组织接受到的数据包。

Tags

TCP/IP学习日志三

Submitted by taotao on Wed, 12/12/2018 - 20:13

啊Q

什么是连接?

在手机普及之前,我们都用座机打电话,一般都有一根电话线连接到家里的座机上。 当我们播下号码,和另一方进行通话的时候,此时就在通话双方之间产生了一个连接。 这个连接我们很容易理解,因为有一根电话线接入到家里的座机上,当在通话的时候, 通话双方的语音就靠这个连接来传输。

我们的语音是如何在线路上传输的?

我说话就会在空气中产生一个声波,这个声波被话筒采集之后,先被转换成模拟信号,再被转换成数字信号,然后在线路上传输。

如何高效的利用线路?

如果一条线路同一个时间段内只能给一个通话占用,那么就会出现打电话需要排队等待的情况。 我们就需要思考如何可以高效的利用这个线路。

Tags

如何调整Spring-Data读请求不开启事务

Submitted by taotao on Tue, 12/11/2018 - 20:05

概述

接着上一篇的文章MyCAT-Spring-Boot-JPA中间件使用过程的问题提到的问题, Spring Data 默认会对所有的读数据请求加上事务, 但是在使用类似MyCAT、KingShard的读写分离中间件的时后, 会将带有事务的请求都发送到主库上去,而达不到读写分离需求。 因此我们需要对Spring Data进行一定的改造,能够让读数据的请求不被事务包裹, 而达到利用中间件读写分离的目的。

基于之前的文章MyCAT-Spring-Boot-JPA中间件使用过程的问题中的分析, 我们发现SimpleJapRepository是在类级别加上了@Transaction(readOnly=true)的标注, 这会导致所有的 读请求都被事务包裹,所以我们需要将这个默认的设置删除掉。

TCP/IP学习日志二-协议

Submitted by taotao on Tue, 12/11/2018 - 19:02
协议

概述

TCP/IP首先是一个网络通信协议, 那么我们就需要了解和协议相关的一些知识,本文主要以类比的方法来介绍协议。

什么是协议?

比如说小王和小李为了一起完成某项工作,因此二人就约定做这个事情的时候他们如何相互配合, 他们二人的约定就是一个协议。

什么是协议簇

如果小王和小李需要配合完成另一项工作,他们二人又进行一次如何分工协作的约定,那么他们彼此 又创造了一个协议。当小王和小李配合完成的工作越来越多,他们之间达成的协议也就越来越多, 协议多了,我们可以把小王和小李之间的这些协议统称为协议簇。

Tags

TCP/IP学习日志一

Submitted by taotao on Mon, 12/10/2018 - 20:16

 

认知
认知

 

TCP/IP详解 卷1:协议 这本书是2016年底,公司年底抽奖用奖金买的, 买回来大概有2年多了,一直都没看它,虽然不看它,但是每次看它静静的躺在书架上面,心里还是有一些充实感,这种 感觉可能是虽然我不看你,但是我拥有你,我想看你可以随时看你。其实还是内心的一种贪婪的表现。这个周末这本书 终于被我从书架上取下,取下的原因是我要之前写了一篇 学习方法的文章, 想通过这本书的学习来检验我总结的这一套的方法论。

Tags

openjdk编译后出现的中文乱码问题及解决过程

Submitted by taotao on Mon, 12/10/2018 - 18:45

概述

项目的打包是通过Jenkins进行的, 由于对Jenkins进行了一次升级和数据迁移之后, 凡是在Java类中有中文字符输出的地方,都变为乱码。 乱码问题是发生在升级迁移之后, 后来通过在jvm的启动参数追加-Dfile.encoding解决该问题,下面是问题的详细分析过程:

发生问题之前的打包环境

[root@server ~]# java -version
java -version
java version "1.8.0_152"
Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)

Jenkins版本为2.53,启动方式为

SpringBoot-Async-线程池爆满问题解决过程

Submitted by taotao on Fri, 12/07/2018 - 19:32

问题概述

前几天生产环境的购物车服务突然不能正常访问,分析日志中的报错信息,发现是购物车使用的异步工作线程池的队列达到了设置的上限, 致使新的http请求生成的task不能被继续放入到线程池的队列中。这是直接的报错原因,深入分析日志,发现有大量的超时错误,这些超时错误 都是发生在购物车服务调用另一个用户中心服务时发生的。所以问题是由于大量的超时请求将工作线程池中的线程消耗光导致。 故障发生持续了10-15分钟,最后是以重启购物车服务的方式恢复服务。

下面就基于该问题进行详细的分析过程。

超时错误分析

首先查看问题发生时的错误日志信息,在20:00 至 20:05 之间,从日志系统统计下来有大概1600 到 1700条超时的错误日志