<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[fatshaw的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/fatshaw</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; fatshaw]]></copyright><item><title><![CDATA[搬家]]></title><link>https://blog.csdn.net/fatshaw/article/details/77934286</link><guid>https://blog.csdn.net/fatshaw/article/details/77934286</guid><author>fatshaw</author><pubDate>Mon, 11 Sep 2017 16:07:54 +0800</pubDate><description><![CDATA[move to fatshaw.github.io]]></description><category></category></item><item><title><![CDATA[mysql encode&decode]]></title><link>https://blog.csdn.net/fatshaw/article/details/77640570</link><guid>https://blog.csdn.net/fatshaw/article/details/77640570</guid><author>fatshaw</author><pubDate>Mon, 28 Aug 2017 10:14:09 +0800</pubDate><description><![CDATA[MySQL urlencode 函数、urldecode函数 、multiurldecode 函数




?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23
]]></description><category></category></item><item><title><![CDATA[高效工作]]></title><link>https://blog.csdn.net/fatshaw/article/details/76984679</link><guid>https://blog.csdn.net/fatshaw/article/details/76984679</guid><author>fatshaw</author><pubDate>Wed, 09 Aug 2017 14:00:55 +0800</pubDate><description><![CDATA[1. 结果导向
2. 忙碌的人认为所有的事情都重要，而高效的人认为只有少数重要的任务。如果遇到意外，不能完成，也会把其他的拖延，而非重要的任务
3. 聚焦关键：每个时刻关注一件事情
4. 每件事情都有结果，即使失败也有结果
5. 自己完成所有事情，高效人士会考虑利用周围所有资源完成结果
6. 忙碌的人来者不拒，高效的人，知道什么时候说不，弄不清楚会说我想一下，而不随便说好
7. 高效的]]></description><category></category></item><item><title><![CDATA[Nonce、Timestamp——解决Replay-Attack问题]]></title><link>https://blog.csdn.net/fatshaw/article/details/71425548</link><guid>https://blog.csdn.net/fatshaw/article/details/71425548</guid><author>fatshaw</author><pubDate>Mon, 08 May 2017 17:22:46 +0800</pubDate><description><![CDATA[Nonce、Timestamp——解决Replay-Attack问题

Nonce是由服务器生成的一个随机数，在客户端第一次请求页面时将其发回客户端；客户端拿到这个Nonce，将其与用户密码串联在一起并进行非可逆加密（MD5、SHA1等等），然后将这个加密后的字符串和用户名、Nonce、加密算法名称一起发回服务器；服务器使用接收到的用户名到数据库搜索密码，然后跟客户端使用同样的算法对其进行加密]]></description><category></category></item><item><title><![CDATA[java cpu过高排查]]></title><link>https://blog.csdn.net/fatshaw/article/details/70171315</link><guid>https://blog.csdn.net/fatshaw/article/details/70171315</guid><author>fatshaw</author><pubDate>Fri, 14 Apr 2017 13:22:41 +0800</pubDate><description><![CDATA[当某个java进程cpu较高时，可以通过linux命令排查问题。
1. 根据top查看java进程号pid，如52210
2. 查看某个进程的线程以及使用时间，cpu情况
ps -mp 52210 -o THREAD,tid,time


3. printf "%x\n" 18080
46a0



4. jstack 52210 | grep 46a0 -A 30]]></description><category></category></item><item><title><![CDATA[基于角色的权限控制]]></title><link>https://blog.csdn.net/fatshaw/article/details/68926524</link><guid>https://blog.csdn.net/fatshaw/article/details/68926524</guid><author>fatshaw</author><pubDate>Fri, 31 Mar 2017 16:13:16 +0800</pubDate><description><![CDATA[基于角色的权限控制


RBAC模型的基本思想是将访问许可权分配给一定的角色，用户通过饰演不同的角色获得角色所拥有的访问许可权。


用户（User）：一个具有唯一标识符的用户，与权限相分离，只能通过所属的Role去关联权限，一个用户可以拥有多项角色；角色（Role）:一定数量的权限的集合，角色可以继承，一个角色对应多项权限；权限（Resource）：也可以看作是资源，它对应了应用系统]]></description><category></category></item><item><title><![CDATA[单元测试方法]]></title><link>https://blog.csdn.net/fatshaw/article/details/68921782</link><guid>https://blog.csdn.net/fatshaw/article/details/68921782</guid><author>fatshaw</author><pubDate>Fri, 31 Mar 2017 09:39:47 +0800</pubDate><description><![CDATA[单元测试一些原则AAA模式：arrange、act、assert单元测试关注语义（函数名称、方法）一个测试就测试一个点Test Doubles (测试替换) 代码测试dummy，fake，spy, stub, mock前面4种注重状态（内部数据固定，不管输入什么都是同样的行为）mock关注在于行为（当传入参数A返回值为B，传入参数B则行为发生变化）...]]></description><category></category></item><item><title><![CDATA[设计模式原则SOLID]]></title><link>https://blog.csdn.net/fatshaw/article/details/54706782</link><guid>https://blog.csdn.net/fatshaw/article/details/54706782</guid><author>fatshaw</author><pubDate>Tue, 24 Jan 2017 12:04:48 +0800</pubDate><description><![CDATA[一、单一职责原则（SRP）


定义：不要存在多于一个导致类变更的原因。通俗的说，即一个类只负责一项职责。

问题由来：类T负责两个不同的职责：职责P1，职责P2。当由于职责P1需求发生改变而需要修改类T时，有可能会导致原本运行正常的职责P2功能发生故障。

解决方案：遵循单一职责原则。分别建立两个类T1、T2，使T1完成职责P1功能，T2完成职责P2功能。这样，当修改类T1时，不会]]></description><category></category></item><item><title><![CDATA[2016年双12总结]]></title><link>https://blog.csdn.net/fatshaw/article/details/53965470</link><guid>https://blog.csdn.net/fatshaw/article/details/53965470</guid><author>fatshaw</author><pubDate>Sun, 01 Jan 2017 13:56:17 +0800</pubDate><description><![CDATA[2016年的双12总结
2016年双12结束了，第一次参加双12，有些感受，也有些收获。
  
    研发：接口定义、幂等、并发、数据兼容、影响范围、异常处理等
    测试：整体流程、异常处理、业务回归等

    监控：系统指标（接口tps、ERROR数、cpu、内存等）、业务指标（活动个数、发券、领券数、商品个数、预算消耗），核对监控（上下游数据一致性、关键字段核对、资金流水核]]></description><category></category></item><item><title><![CDATA[缓存更新机制思考]]></title><link>https://blog.csdn.net/fatshaw/article/details/52815404</link><guid>https://blog.csdn.net/fatshaw/article/details/52815404</guid><author>fatshaw</author><pubDate>Fri, 14 Oct 2016 14:02:56 +0800</pubDate><description><![CDATA[普通应用一般使用数据库作为存储，缓存用于热点数据暂存，提高访问速度。数据库和缓存之间的同步有很多方式，这边是我自己的一些思考，仅供记录。




前提

缓存必须具有失效时间，根据业务场景设置

缓存不做持久化，无法保存全量数据，需要设置缓存空间大小。

重启即数据丢失

 


几种更新缓存方法

1. 更新数据库，同步更新缓存。缓存失败，异步继续更新。保证重]]></description><category></category></item><item><title><![CDATA[mysql 几个常用锁机制]]></title><link>https://blog.csdn.net/fatshaw/article/details/52724115</link><guid>https://blog.csdn.net/fatshaw/article/details/52724115</guid><author>fatshaw</author><pubDate>Sun, 02 Oct 2016 16:18:54 +0800</pubDate><description><![CDATA[锁机制：分两种情况：乐观锁，悲观锁

数据库中有记录，可以通过乐观锁或者悲观锁进行锁定记录。
乐观锁：update tablename set version=version+1 where key=${key} and version=${version},判断update结果影响的行数。将乐观锁放在一个事务中，通过行级锁进行控制。一个事务占用了行级锁，另一个事务无法获得锁，会产生两种情况]]></description><category></category></item><item><title><![CDATA[IDEA 使用入门]]></title><link>https://blog.csdn.net/fatshaw/article/details/52126962</link><guid>https://blog.csdn.net/fatshaw/article/details/52126962</guid><author>fatshaw</author><pubDate>Fri, 05 Aug 2016 10:51:57 +0800</pubDate><description><![CDATA[intellij

来阿里之前，还在使用eclipse，后来受@无独 同学影响，开始使用intellij，从此以后再也没想过回到eclipse。最近周边的人使用intellij越来越多，还有一部分在eclipse和intellij之间徘徊选择，本文目的是通过我们介绍intellij的功能，让大家对intellij更了解，如果想从eclipse改到intellij，下面增加eclipse中常用功]]></description><category></category></item><item><title><![CDATA[如果有人问你数据库的原理，叫他看这篇文章]]></title><link>https://blog.csdn.net/fatshaw/article/details/52100996</link><guid>https://blog.csdn.net/fatshaw/article/details/52100996</guid><author>fatshaw</author><pubDate>Wed, 03 Aug 2016 10:15:08 +0800</pubDate><description><![CDATA[一提到关系型数据库，我禁不住想：有些东西被忽视了。关系型数据库无处不在，而且种类繁多，从小巧实用的 SQLite 到强大的 Teradata 。但很少有文章讲解数据库是如何工作的。你可以自己谷歌/百度一下『关系型数据库原理』，看看结果多么的稀少【译者注：百度为您找到相关结果约1,850,000个…】 ，而且找到的那些文章都很短。现在如果你查找最近时髦的技术（大数据、NoSQL或JavaScript]]></description><category></category></item><item><title><![CDATA[mysql更新死锁问题]]></title><link>https://blog.csdn.net/fatshaw/article/details/52064668</link><guid>https://blog.csdn.net/fatshaw/article/details/52064668</guid><author>fatshaw</author><pubDate>Fri, 29 Jul 2016 14:28:48 +0800</pubDate><description><![CDATA[mysql更新死锁问题




问题现象
同一时间点，一个商户下多个模板（模板id不同）同时更新；
券模板操作流水更新时发生死锁，报 Deadlock found
 when trying to get lock; try restarting transaction 错误

相关业务表信息

表：log_xx索引信息：log_no：分库分表全局唯一uk; merchant]]></description><category></category></item><item><title><![CDATA[lucene入门简介]]></title><link>https://blog.csdn.net/fatshaw/article/details/51959020</link><guid>https://blog.csdn.net/fatshaw/article/details/51959020</guid><author>fatshaw</author><pubDate>Tue, 19 Jul 2016 20:04:25 +0800</pubDate><description><![CDATA[一、总论

根据http://lucene.apache.org/java/docs/index.html 定义：

"Apache Lucene(TM) is a high-performance, full-featured text search engine library written entirely in Java. It is a technology suitable ]]></description><category></category></item><item><title><![CDATA[下游系统访问思考]]></title><link>https://blog.csdn.net/fatshaw/article/details/51849423</link><guid>https://blog.csdn.net/fatshaw/article/details/51849423</guid><author>fatshaw</author><pubDate>Thu, 07 Jul 2016 10:54:08 +0800</pubDate><description><![CDATA[一般系统都会访问外部系统，比如请求支付，会员卡，营销等各种系统，有时候一次请求需要访问多个下游系统，这种情况下失败是避免不了的。这里总结了几个注意事项




访问下游系统必须设置超时时间，一般设置3s，不同业务系统需要进行相应调整访问下游系统qps必须控制，不能给下游系统压力过大幂等操作：访问下游失败了，可能是由于网络超时，下游系统已经处理成功。这个时候有两种方式

下游提供查询接]]></description><category></category></item><item><title><![CDATA[代码模拟join操作]]></title><link>https://blog.csdn.net/fatshaw/article/details/51837196</link><guid>https://blog.csdn.net/fatshaw/article/details/51837196</guid><author>fatshaw</author><pubDate>Wed, 06 Jul 2016 11:55:24 +0800</pubDate><description><![CDATA[mysql支持join操作，可以将两张或者多张表进行join关联在一起后进行查询操作。为了避免大表的join性能问题，有些场景我们不希望进行join查询，那我们可以怎么办呢？
我们可以通过代码模拟join操作，比如我们有两张表，domain_entity, domain_attribute
CREATE TABLE `domain_entity` (
	`id` BIGINT(20) NOT]]></description><category></category></item><item><title><![CDATA[Spring之FactoryBean]]></title><link>https://blog.csdn.net/fatshaw/article/details/51784471</link><guid>https://blog.csdn.net/fatshaw/article/details/51784471</guid><author>fatshaw</author><pubDate>Wed, 29 Jun 2016 17:13:06 +0800</pubDate><description><![CDATA[首先要分辨BeanFactory 与 FactoryBean的区别， 两个名字很像，所以容易搞混

BeanFactory： 以Factory结尾，表示它是一个工厂类，是用于管理Bean的一个工厂

FactoryBean：以Bean结尾，表示它是一个Bean，不同于普通Bean的是：它是实现了FactoryBean接口的Bean，根据该Bean的Id从BeanFactory中获取的实际上]]></description><category></category></item><item><title><![CDATA[Spring之FactoryBean]]></title><link>https://blog.csdn.net/fatshaw/article/details/51782996</link><guid>https://blog.csdn.net/fatshaw/article/details/51782996</guid><author>fatshaw</author><pubDate>Wed, 29 Jun 2016 14:42:16 +0800</pubDate><description><![CDATA[首先要分辨BeanFactory 与 FactoryBean的区别， 两个名字很像，所以容易搞混

BeanFactory： 以Factory结尾，表示它是一个工厂类，是用于管理Bean的一个工厂

FactoryBean：以Bean结尾，表示它是一个Bean，不同于普通Bean的是：它是实现了FactoryBean接口的Bean，根据该Bean的Id从BeanFactory中获取的实际上]]></description><category></category></item><item><title><![CDATA[left_join、inner_join中的on与where的区别]]></title><link>https://blog.csdn.net/fatshaw/article/details/51735913</link><guid>https://blog.csdn.net/fatshaw/article/details/51735913</guid><author>fatshaw</author><pubDate>Wed, 22 Jun 2016 17:32:42 +0800</pubDate><description><![CDATA[以下是对在sql语句中left_join、inner_join中的on与where的区别进行了详细的分析介绍，需要的朋友可以参考下




table a(id, type):
id     type 
----------------------------------
1      1         
2      1          
3      2        ]]></description><category></category></item></channel></rss>