`
粟谷_sugu
  • 浏览: 25372 次
社区版块
存档分类
最新评论
文章列表
       本文主要讲一下Disruptor的写入部分,也就是生产者怎么将数据成功的写入RingBuffer                                                  写入RingBuffer需要关注的几个问题           1:如何避免生产者的生产速度过快而造成的新消息覆盖了未被消费的旧消息的问题           2:如何解决多个生产者抢占生产位的问题         带着问题去看代码,会更有目的性,所以本文主要会围绕这两个问题作出解答,在解答的过程中,我们都会分为单生产者和多生产者两种情况进行解答。 首先看第一个问题:        ...
本来准备写一篇AQS的完成解析,已经写了大部分了,但是觉得写得实在太乱了,而且很多细节的东西很难讲清楚,所以还是决定先写一些前文,都是属于AQS整体的一部分,也都是AQS的灵魂组件,所以单拎出来说一下。 本文先争 ...
    看netty源码的时候,看到有一个关于如何判断一个int数值是否为2的幂次方的算法,感觉蛮有意思的,所以简单记录一下。     先说一下通常判断一个数是否为2的幂次方我会怎么做, 随便写一个最暴力的 public static boolean isPowerOf2(int n) { if (n < 1) return false; int i = 1; while (i <= n) { if (i == n) return true; ...
本文没有参考意义,仅作为我的读书笔记吧,所有功劳归功于下面链接的原作者 https://segmentfault.com/a/1190000014969780 下面这个链接也给我很大帮助 https://www.iteye.com/magazines/132-Java-NIO#579] netty学习笔记 不像之前的的阻塞性IO,必须为每个任务都分配一个Thread,大量的Thread会造成上下文的大量切换,耗费时间 NIO提供了一种非阻塞性IO,用一个selector来为IO操作选择空闲的Thread  Netty的几个关键知识点 1:channel  因为IO操作的几个原语bind ...
    从今天开始,尽量多花一点时间在这个技术博客上,去成为一个优秀程序员 dloading...     好了这个系列是想要系统的研究一下java的几乎可以是最重要的并发包(java.util.concurrent 以下简称JUC)里的一些东西,聊到JUC就不可避免的要聊到AbstractQueuedSynchronizer(以下简称AQS)这个关键的类,在我们本系列的文章中也会反复的出现。但是作为本系列的第一篇文章,我并不想先对AQS这个东西做详细的介绍,我会先从一个我认为比较简单的实现方法中进入到整个的java并发的世界,所以开始我们的并发之旅吧 介绍我们本文的主人公CountdownL ...
        又好久没有写相关的技术博客了,有很多东西想写,但是自我的约束力还是太差了。总是坚持不了多久又不想继续写下去了。就想上次准备写的Disruptor系列,是我在公司这个季度的分享内容,研究了一个多星期,算是有了一点想法,准备写关于这个的一系列文章,但是还是只写了一篇。每次都感觉自己没时间写,但是这都是一些借口,总是偷懒去看些娱乐的东西去了,所以并没有太多的东西积累下来。 这篇文章算是对这段时间的反省吧,堆了很多作业没有做,在这边记录一下,间歇性的提醒一下自己曾经想做过这些事情但是还没做的。 1: 这个大概是一年前了, 想做的一个mvn打包时想压缩打出的jar包的大小,所以需要在打包时 ...
之前看书的时候就看过,线程之间通信的两种方式,共享变量和管道通信,一直不知道管道通信是什么,今天终于看到了,话不多数,直接show the code public class Pipe { public static void main(String[] args) throws IOException, InterruptedException { PipedWriter out = new PipedWriter(); PipedReader in = new PipedReader(); int recive = 0; ...
    最近在看java中线程相关的知识,学会很多以前感觉很模糊的知识点,今天准备记录一下线程的join方法    开始写join方法前,先说一下java编程时会用到的一种等待-通知的模型,也就是wait和notify    有时候我们并发编程时,一个线程修改了一个对象的值,另一个线程感知到了这个改变之后,开始进行处理其他的逻辑,这种模型的第一个线程叫做通知者,第二个线程是等待者。 实现这种模型有一种最简单的方法,就是等待者不断轮询变量的值,满足条件就开始执行自己的方法逻辑。 while(value!=desire){ Thread.sleep(1000); } dosomet ...
        nested doc,是solr提供的一种父子文档嵌套的结构,但是由于在lucene中,所有文档的存储都是扁平结构的,所以嵌套只是逻辑上的说法,在物理存储中,父子嵌套是根据所有相关联的父子文档紧密排列,并且按照 子->子->父 的顺序排序,每个区块都必须父作为结尾。 如何添加nested doc结构的索引?         直接上代码 SolrInputDocument doc = new SolrInputDocument(); doc.setField("id",1); doc.set ...
        这几天在工作中遇到一个关于docValue的小问题,特此记录一下。         问题是这样的,同事在用solr对一个字段进行facet操作的时候,报出了一个错误 you are intending to use sorting,facet,group or other statistic feature, please set field:[ex_payModeDetailName] docValue property 'true'         错误提示也很明显,就是在做facet时要把这个字段的docValue打开,所以就照着做了 <dynamicFiel ...
    业务开发过程中,经常需要利用maven,将代码进行打包成jar包的形式在服务器上进行运行。但是在打包过程中,maven会将所有的依赖都打进包内,不管有些递归依赖是不必要的 ,虽然我们可以利用 mvn dependence:tree 命令得到所 ...
本文主要结合一个业务需求,记录一下solr中一个functionQuery的用法。 需求 简要说明一下业务需求。在店铺搜索时,要根据查询的坐标值与店铺的距离以及每个店铺所打出的权重字段做自定义排序。排序规则为:以查询坐标为圆心 ...
这次要分享的是关于近期在工作中的一个业务需求实现 需求-------------------------     需求很简单,简化来说就是需要对一个title字段,根据中文拼音的首字母进行排序 实现-------------------------     理所当然的想到直接用solr的sort功能对title desc排序,发现结果不如预期 "response": { "numFound": 7, "start": 0, "docs": [ { &quo ...
1:关于反射的例子 2018/3/10 3:0:29 class Student{ int id; String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { ...
代码review 写这篇文章的原因是昨天在工作期间完成业务要求的时候,根据组长的要求写了自己的代码,结果在之后组长review的时候,发现了很多不足的地方,所以写这篇博客进行记录。 话不多说,先上原始代码。 public class DocValuesWarmUpListener extends AbstractSolrEventListener{ private static final Logger logger = LoggerFactory.getLogger(DocValuesWarmUpListener.class); private List<String ...
Global site tag (gtag.js) - Google Analytics