<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[jerryJavaCoding的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/jerryJavaCoding</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jerryJavaCoding]]></copyright><item><title><![CDATA[spring-data-elasticsearch中集成search Guard]]></title><link>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/103467223</link><guid>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/103467223</guid><author>jerryJavaCoding</author><pubDate>Mon, 09 Dec 2019 23:53:27 +0800</pubDate><description><![CDATA[近期项目中接入elasticsearch，供管理台大表的数据模糊查询，在原有spring项目中引入spring-data-elasticsearch，以及使用searchGuard进行鉴权
版本
spring-data-es与使用的es版本有直接关系，这里找到响应的spring-data-es版本。注意spring-data-es依赖包中包含spring的相关框架，如果与原有系统的冲突需要兼容

...]]></description><category></category></item><item><title><![CDATA[你在guava cache上设置的更新参数是否有用？]]></title><link>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/103334577</link><guid>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/103334577</guid><author>jerryJavaCoding</author><pubDate>Sun, 01 Dec 2019 14:18:38 +0800</pubDate><description><![CDATA[guava cache是一种支持自动回收、刷新的concurrentHashMap。显然防止内存溢出是其核心功能，包括主动刷新refresh、过期失效expire、java的软/虚引用以及设置最大的size和weight。在实际开发中，个人对于expire和refresh使用较多，expire又分为expireAfterAccess、expireAfterWrite，现对比下三者的区别：




...]]></description><category></category></item><item><title><![CDATA[关于积分系统的一点总结]]></title><link>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/103129025</link><guid>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/103129025</guid><author>jerryJavaCoding</author><pubDate>Mon, 18 Nov 2019 21:00:44 +0800</pubDate><description><![CDATA[近期完成一个积分（钱）系统的搭建，可用于兑换实体奖品，具备价值符号。其中遇到的问题和积累的方案进行小小的总结和思考。

功能设计


绑定与账户
1、标识同一个用户，在积分系统外部并没有暴露账户id，而是由其他能标识用户身份的信息W组合而成，如手机号、微信号、邮箱。通过将多个外部信息W映射（绑定）到唯一的内部账号id，就认同为是同一个账号。同时支持同类外部信息绑定，如多个手机号绑定同一账号id（但...]]></description><category></category></item><item><title><![CDATA[springMVC重定向method转换问题排查]]></title><link>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/102961459</link><guid>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/102961459</guid><author>jerryJavaCoding</author><pubDate>Thu, 07 Nov 2019 19:56:18 +0800</pubDate><description><![CDATA[问题
springMVC中使用redirect方式进行接口重定向时，默认http返回码是302，该返回码会强制将原本post请求转换成get，而对于重定向后只支持post请求的接口可能会抛出method not support异常，以下是抓包的情况。

解决思路
在http重定向中，post方法可以重定向成get和post，如果要强制转换成post，我们需要在重定向的返回码设置为307
案例
下面...]]></description><category></category></item><item><title><![CDATA[kafka与zk的leader选举的混沌不清]]></title><link>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/101000993</link><guid>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/101000993</guid><author>jerryJavaCoding</author><pubDate>Wed, 18 Sep 2019 23:41:02 +0800</pubDate><description><![CDATA[在kafka中，同个topic下的partition分布在多个broker中，topic下的partitions使用zookeeper进行分布式协调，可以说kafka与zk是牢牢联系在一起的。但其中，都存在leader选举、主从复制、同步有效个数（zk是超过一半，kafka则是在isr列表中个数），在学习的初始造成一些混淆与困惑。
认清zookeeper的leader选举的内与外
内
一般书籍或者...]]></description><category></category></item><item><title><![CDATA[Apache Kafka简介]]></title><link>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/92224546</link><guid>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/92224546</guid><author>jerryJavaCoding</author><pubDate>Sat, 15 Jun 2019 23:31:30 +0800</pubDate><description><![CDATA[分布式流式平台的三大特征：


流式记录的发布订阅


采用容错持久的方式存储流式消息


流式记录实时处理


kafka通常用于处理两大类应用：

在异构系统和应用之间构建实时流式数据处理管道
数据的传输和响应的实时流式应用

kafka的基础概念

kafka以集群方式启动，运行在一台或多台的服务器上，可跨数据中心
kafka在存储数据流的时通过一个叫“topic”的进行分类
每条数据记录由...]]></description><category></category></item><item><title><![CDATA[Apache RocketMQ官网翻译（四）]]></title><link>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/91348376</link><guid>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/91348376</guid><author>jerryJavaCoding</author><pubDate>Sat, 08 Jun 2019 22:22:52 +0800</pubDate><description><![CDATA[事务例子
什么是事务消息？
可以认为是两阶段提交的消息实现，以确保在分布式系统中的最终一致性。事务消息确保了以原子的方式执行本地事务的执行和消息的发送。
使用限制
（1）事务消息不支持延迟和批量操作。
（2）为了避免单个消息被检查太多次而导致过半的队列消息累积，我们默认限制了检查单个消息15次，但是用户可以通过在broker的配置中修改“transactionCheckMax"参数来改变这个限制。...]]></description><category></category></item><item><title><![CDATA[Apache RocketMQ官网翻译（三）]]></title><link>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/91345932</link><guid>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/91345932</guid><author>jerryJavaCoding</author><pubDate>Sat, 08 Jun 2019 16:58:52 +0800</pubDate><description><![CDATA[有序消息
rocketMQ提供了FIFO的顺序消息。
以下例子演示了发送/接收全局和部分的有序消息
发送消息的简单代码
public class OrderedProducer {
    public static void main(String[] args) throws Exception {
        //Instantiate with a producer group nam...]]></description><category></category></item><item><title><![CDATA[Apache RocketMQ官网翻译（二）]]></title><link>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/91319975</link><guid>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/91319975</guid><author>jerryJavaCoding</author><pubDate>Sat, 08 Jun 2019 11:47:18 +0800</pubDate><description><![CDATA[简单消息例子

使用rocketMQ发送消息会有三种模式：可靠同步、可靠异步和单向三种传输
使用rocketMQ消费消息

1、添加依赖包
maven：
  &lt;dependency&gt;
        &lt;groupId&gt;org.apache.rocketmq&lt;/groupId&gt;
        &lt;artifactId&gt;rocketmq-client&l...]]></description><category></category></item><item><title><![CDATA[新司入职满月总结]]></title><link>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/91126748</link><guid>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/91126748</guid><author>jerryJavaCoding</author><pubDate>Fri, 07 Jun 2019 15:15:07 +0800</pubDate><description><![CDATA[导语
今日刚好入职国内某互联网金融公司W（后台开发岗）满一个月，趁此机会总结和分享下入职后的一些感慨。顺便与老东家互联网Y公司从工程技术方面进行对比，从个人角度上看互金与互联网公司之间的细微差异。
职能角色
每一次版本迭代，都需要不同的角色参与协作完成。从职能角色中可以看出W公司还有业务运维岗，与开发、测试三者构成目前流行的devOps工作模式，三个角色对于业务应用服务都非常清楚。一般跨系统的复杂...]]></description><category></category></item><item><title><![CDATA[Apache RocketMQ官网翻译（一）]]></title><link>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/90815513</link><guid>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/90815513</guid><author>jerryJavaCoding</author><pubDate>Tue, 04 Jun 2019 23:53:33 +0800</pubDate><description><![CDATA[翻译来自：https://rocketmq.apache.org/docs/motivation/

背景
在早期，我们的分布式消息中间件都是建立在ActiveMQ 5.x(prior to 5.3)之上。我们通过其作为异步消息通信、搜索、社交网络信息流、数据管道甚至在交易处理上，为我们的复杂多样的业务服务。但是随着我们业务交易的吞吐量上升，消息集群的压力也变得越来越大。
Why RocketM...]]></description><category></category></item><item><title><![CDATA[两条线程分别打印奇偶数]]></title><link>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/82976799</link><guid>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/82976799</guid><author>jerryJavaCoding</author><pubDate>Tue, 09 Oct 2018 08:16:13 +0800</pubDate><description><![CDATA[两条线程分别打印奇偶数最基本的线程通信方式
最基本的线程通信方式
  //不一定需要volatile，因为已经sync保证了可见性
    public static int num = 0;
    private static Object lock = new Object();
    private static CountDownLatch countDownLatch = new C...]]></description><category></category></item><item><title><![CDATA[mongo索引对排序sort的规则]]></title><link>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/82317840</link><guid>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/82317840</guid><author>jerryJavaCoding</author><pubDate>Sun, 02 Sep 2018 22:36:46 +0800</pubDate><description><![CDATA[索引对排序的意义

假设在读取数据库时没有对待排序的字段进行合适的索引，在mongo中，会将符合条件的数据load到内存中，然后进行排序。这样的性能将会变差，尤其当数据量比较大的时候。如果 不使用 索引的排序操作使用了超过32M的内存，那么操作会终止。

索引的匹配规则


如果一个递增或递减索引是单键索引，那么在该键上的排序操作可以是任意方向（正序or倒序）
如果是复合索引，那么排序语句的所有键...]]></description><category></category></item><item><title><![CDATA[关于粉丝号的一点总结]]></title><link>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/82263633</link><guid>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/82263633</guid><author>jerryJavaCoding</author><pubDate>Sat, 01 Sep 2018 00:36:46 +0800</pubDate><description><![CDATA[初期场景

最近产品结了一个需求，要给每个进入频道用户颁发一张粉丝卡，这个粉丝卡上的粉丝号每个频道唯一，每个人在每个频道也只能唯一拥有一张粉丝卡。粉丝号段由管理系统录入，粉丝号不保证连续，如录入1-100，102-105，中间独缺了101，过了105，后面进频道的用户无法拥有粉丝卡了。而且必须小号优先发，不能有粉丝先进是102，后进是100。项目使用mongodb开发

初期方案

两张mongo...]]></description><category></category></item><item><title><![CDATA[关于列表自建索引的一点总结]]></title><link>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/82263410</link><guid>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/82263410</guid><author>jerryJavaCoding</author><pubDate>Fri, 31 Aug 2018 23:43:01 +0800</pubDate><description><![CDATA[问题场景

最近接到一个产品需求，需要展示用户的参与的活动列表，这个列表需要根据活动的状态先排序，也即未结束的总是放在前，已结束都放在后面，并且相同状态下按照时间倒序，并支持分页功能

前期缺陷方案

项目使用mongo作为db，一开始看起来似乎挺简单，利用mongo多重order排序出来，再给个lastId作为分页就行了。后面发现产品需求未结束和已结束的时间排序并不是同一个时间，未结束按照创建时...]]></description><category></category></item><item><title><![CDATA[https是如何保证安全的？]]></title><link>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/81323317</link><guid>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/81323317</guid><author>jerryJavaCoding</author><pubDate>Wed, 01 Aug 2018 00:55:07 +0800</pubDate><description><![CDATA[总所周知，http是明文传输的，也就是你在发往目标服务器的过程中，中间路径下的所有的计算机都能抓取到ip数据包。中间服务器作为路由中转，数据流只会到达网络层，但是因为是明文传输，所以可以看到ip数据包上面携带的http明文。

https之所以安全，是因为使用了tls、ssl协议（下文所有安全协议都以tls讲述）。同样是建立在http的基础上的，对于http协议的应用程序开发者，其实是透明的，因为...]]></description><category></category></item><item><title><![CDATA[java与网络io模型总结]]></title><link>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/81273286</link><guid>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/81273286</guid><author>jerryJavaCoding</author><pubDate>Sun, 29 Jul 2018 17:34:32 +0800</pubDate><description><![CDATA[根据《unix网络编程·卷一》所载，目前操作系统的网络io模型分为5中，分别为


blocking io ：阻塞型io，再熟悉不过，处理accept、read、write都会阻塞用户进程，对应java中的bio
non blocking io：简称非阻塞，当通过系统调用的时候，如果没有连接或者数据到达就直接返回一个错误，用户进程不阻塞但是不断的轮询。注意这个不是java nio框架中对应的网络模...]]></description><category></category></item><item><title><![CDATA[http协议笔记]]></title><link>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/81270994</link><guid>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/81270994</guid><author>jerryJavaCoding</author><pubDate>Sun, 29 Jul 2018 15:32:33 +0800</pubDate><description><![CDATA[http1.1的特性


长连接connection：keep alive
块编码：transfer-encoding：123 表示有多少字节将会以块编码模式发送。在http1.0时候，每条连接就是一个connection，发送时候通过content-length便可以知晓回报内容长度。但在http1.1上，每个connction负责多个请求，一些请求在还未完全加载完就要先发送，这时候就要用块编码...]]></description><category></category></item><item><title><![CDATA[kafka的学习心得]]></title><link>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/81107299</link><guid>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/81107299</guid><author>jerryJavaCoding</author><pubDate>Wed, 18 Jul 2018 23:44:07 +0800</pubDate><description><![CDATA[最近项目开始使用kafka作为消息中间件，理由是支持更高的吞吐量和轻量级（相对传统的mq，如rabbit）。



与rabbitmq的不同



重broker与重consumer

kafka跟rabbit的设计上有很多不同，rabbit上存在exchange、queue以及两者binding，生产者根据需要需要发送给不同类型exchange，经exchange的绑定关系路由到特定的queue...]]></description><category></category></item><item><title><![CDATA[关于状态的一点总结]]></title><link>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/80159070</link><guid>https://blog.youkuaiyun.com/jerryJavaCoding/article/details/80159070</guid><author>jerryJavaCoding</author><pubDate>Tue, 01 May 2018 20:07:49 +0800</pubDate><description><![CDATA[每次有活动的需求，都会离不开用户的状态，比如用户今日已登录，已抽奖，已提现。 
这些状态的变更，归根结底，也就需要一个事件event， 
这个事件，可以是用户的触发（手动点击按钮或者用户触发的二级事件，如mq消息），也可以是时间的触发（轮询作业，这种其实也是一个事件，时间点触发的事件）。

存储在数据库的状态，一定需要上述的一个事件去更新，但是展示给用户的看的状态，却不一定。 
比如用户金额的提现...]]></description><category></category></item></channel></rss>