Java
文章平均质量分 72
乱在长安
一位不甘平凡的码农
展开
-
Spring REST 配置CSRF防护
Spring REST 配置CSRF防护内容从以下几个方面展开什么是CSRF防护如何运用CSRF进行防御(WEB)如何将CSRF防御,运用到REST中 1.什么是CSRFCSRF 攻击简单来说,是多Tab页面浏览器的一个安全漏洞,比如你正在访问A网站,此时如果浏览器有你的cookie,并且session没有过期,此时你去访问B网站,那么B网站可以直接调用A网站的接口,而A网站则认为是你本人进行原创 2016-09-23 13:14:04 · 6411 阅读 · 2 评论 -
利用asm对jar进行修改
一.导读有些时候,需要对jar进行修改,并加入一些“自定义”的代码,利用asm工具就可以到。二.流程图三.操作步骤1,2 直接跳过了,这里从步骤3开始讲。首先需要Idea中安装一个插件Asm byteCode outline,这个工具可以通过.class文件生成我们需要的asm代码。目前有个Source.class文件,这个函数比较简单,就是输出一个hello,如下所示(这个代码是根...原创 2018-10-19 17:40:47 · 3572 阅读 · 0 评论 -
zooKeeper leader选举
zooKeeper leader选举1.所有server处于looking状态,则进行交流选举一个leader,具体做法是某个server向其他节点发送通知信息(vote),该信息包含两个部分:当前server的sid以及该server的最大zxid(包含epoch和自增计数器)。 例如有选票A(voteId表示sid,voteZxid表示它的最大事务id),节点B此时的si...原创 2018-06-05 22:36:29 · 381 阅读 · 0 评论 -
spring 动态切换数据源 多数据库
1.背景对于数据量在1千万,单个mysql数据库就可以支持,但是如果数据量大于这个数的时候,例如1亿,那么查询的性能就会很低。此时需要对数据库做水平切分,常见的做法是按照用户的账号进行hash,然后选择对应的数据库。水平切分图,数据落入不同的库中 2.实现2.1示意图先来看下大致示意图: - 图1是比较常见的情况,单个数据库 - 图2展示了web应用和数据库之间的一个中间层,这个中间层去原创 2018-01-03 19:57:44 · 47311 阅读 · 25 评论 -
Kafka client 消息接收的三种模式
Kafka client 消息接收的三种模式引言kafka的消费模式总共有3种:最多一次,最少一次,正好一次。为什么会有这3种模式,是因为客户端处理消息,提交反馈(commit)这两个动作不是原子性。 1.最多一次:客户端收到消息后,在处理消息前自动提交,这样kafka就认为consumer已经消费过了,偏移量增加。2.最少一次:客户端收到消息,处理消息,再提交反馈。这样就可原创 2018-01-11 15:29:17 · 40129 阅读 · 8 评论 -
Guava本地缓存托底缓存以及异步更新缓存
1.简介1.1 guava本地缓存是开发中比较常用的组件原创 2017-12-02 23:05:42 · 2434 阅读 · 0 评论 -
JackSon反序列化报错,Unrecognized field, not marked as ignorable
JackSon反序列化报错,Unrecognized field, not marked as ignorable1.报错的情景 字段 JavaBean redis 是否报错 包含字段 a,b a 否 包含字段 a a,b 是2.解决办法2.1对于JaveBean的类定义上加上注解@JsonIgnoreProperties(ignoreUnknow原创 2017-12-02 20:51:25 · 4487 阅读 · 0 评论 -
JAVA 阻塞队列实现 生产者和消费者 模式
这是java多线程经常会遇到的问题。供初学者学习。import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;原创 2015-08-07 13:26:58 · 607 阅读 · 0 评论 -
重构——以多态取代条件表达式(状态模式)
在写代码的时候,经常会遇到switch语句,根据状态码进行不同的操作,该方法简单,快捷,但维护起来较麻烦,也不易扩展。 例如,如下代码public class Employee { private int mType; static final int salary=500; static final int commission=500;原创 2015-08-18 20:31:07 · 4328 阅读 · 3 评论 -
压测和Http长链接
压测和Http长链接1.背景一般进行压测的时候,通常是一台施压机进行压测,这其中可能会存在施压机端口耗尽,导致压测性能降低的问题.本文针对最普通的场景进行说明(施压机直接压服务端代码):1.1 一条TCP链接一条完整的TCP链接有四个要素组成源地址IP源地址端口目标地址ip目标地址端口服务端的ip和端口是固定,源地址的ip也是固定的,只有源地址的端口是可以变的,而源端口的数...原创 2019-08-20 07:44:10 · 783 阅读 · 0 评论