`
alchimie
  • 浏览: 20524 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论
文章列表
最近在研究kafka,本着先理清框架脉络,再看细节实现的想法,先抱着文档一阵猛看,本来以为Coordinator和Controller的流程基本一样,选举一个Coordinator为主来接收Consumer的分配。哪知后来看了下源码,坑爹呢,选举去哪了: KafkaServer.scala /* start kafka coordinator */ consumerCoordinator = GroupCoordinator.create(config, zkUtils, replicaManager) consumerCoordinator.startup()  GroupCoo ...

ActiveMQ笔记

配置: 1. brokerURL     failover:(tcp://xxx.xxx.xxx.1:61616?tcpNoDelay=true,tcp://xxx.xxx.xxx.2:61616?tcpNoDelay=true,tcp://xxx.xxx.xxx.3:61616?tcpNoDelay=true)?timeout=10000&randomize=false     主从模式必须加上randomize=false。   发送: 1. 重要消息采用默认的同步发送useAsyncSend=true; 2. 加上线程池; 3. 批量发送加上事务。 同步 ...
8月份遇到的一个面试题,整理了下解法: /** * 题目:给定一个函数rand5(),该函数可以随机生成1-5的整数,且生成概率一样。现 * 要求使用该函数构造函数rand7(),使函数rand7()可以随机等概率的生成1-7 * 的整数。 * * 解题:这种思想是基于,rand()产生[0,N-1],把rand()视为N进制的一位数产生器, * 那么可以使用rand()*N+rand()来产生2位的N进制数,以此类推,可以产生3位, * 4位,5位...的N进制数。这种按构造N进制数的方式生成的随机数,必定能保证 * 随机 ...
快速排序的基准数随机选择版本: package arithmetic.sort; import java.util.Arrays; import java.util.Random; /** * * @author alchimie * * 随机快速排序(不稳定) * */ public class RandomQuickSort { Random random = new Random(); public void randomQuickSort(int[] arrs) { randomQuickSort(arrs, 0, ...
         在现在计算机的硬件构架中,每个处理器都有自己的高速缓冲存储器,用来解决处理器的运算速度和内存之前几个数理级的差距。而各个高速缓存与主内存之间的数据一致性要求则是通过缓存一致性协议来保证的。而Java虚拟机也有自己的内存模型,并且与硬件的缓存操作具有很高的可比性:     1.Java内存模型        规定了所有的变量都存储在主内存(Main Memory)中(与物理硬件的命名一致,可以类比,但此处仅是JVM内存的一部分),每个线程还有自己的工作内存(Working Memory,可与高速缓存类比),线程的工作内存中保存了被该线程使用到的变量的主内存副本拷 ...
单链表倒置   package arithmetic.line; /* * 单链表倒置 * * @author alchimie */ public class ReverseSingleLinked { // 倒置传入的单链表 public static SingleLinkedNode getReverseSingleLinked(SingleLinkedNode node) { SingleLinkedNode reverseSingleLinked = new SingleLinkedNode( node.getValue(), ...

快速排序

快速排序:快排是一种不稳定的算法,其平均时间复杂度为O(nlgn),最坏为O(n^2)。 设当前待排序的无序区为R[low..high],那么在R[low..high]中任选一个记录作为基准(Pivot),以此基准将当前无序区划分为左、右两个较小的子区间R[low..pivotpos-1]和R[pivotpos+1..high],并使左边子区间所有记录的值小于等于基准值,右边子区间所有记录的值大于等于基准值,这时基准值就会处于正确的位置上。   /** * 快速排序(不稳定) * * @author alchimie */ public class QuickSort ...
  1. 方法区:由类装载子系统查找并加载类到内存时,会提取类信息、常量、静态变量放入方法区中。虽然虚拟机规范把方法区描述为堆的一个逻辑部分,但它有个别名叫Non-Heap(非堆)。在HotSpot虚拟机中,方法区也被叫做" ...
栅栏(Barrier) 栅栏(Barrier):如果说CountDownLatch是一扇打开了就永远关不上的门,那么栅栏就是一扇能反反复复打开关闭的门。例如:大家应该都跟过团去旅游,早上,大家陆陆续续来到出发点集合乘车等待出发,导游清点人头后出发,到达景区后大家自由活动,然后回到集合点集合上车准备前往下一个景点。   API如下: // 创建一个新的 CyclicBarrier,它将在给定数量的参与者(线程)处于等待状态时启动,但它不会在启动 // barrier 时执行预定义的操作。 public CyclicBarrier(int parties)  // 创建一个新的 C ...
信号量(Semaphore) 信号量(Semaphore):信号量可以用来控制同时访问某个特定资源的线程数量,或者同时执行某个指定操作的数量(例:可比作是控制流量的红绿灯,比如XX马路要限制流量,只允许同时有一百辆车在这条路上行使,其他的都必须在路口等待,所以前一百辆车会看到绿灯,可以开进这条马路,后面的车会看到红灯,不能驶入XX马路,但是如果前一百辆中有五辆车已经离开了XX马路,那么后面就允许有5辆车驶入马路,这个例子里说的车就是线程,驶入马路就表示线程在执行,离开马路就表示线程执行完成,看见红灯就表示线程被阻塞,不能执行 *)。   Semaphore中管理着一组虚拟的许可(per ...

单例模式

单例模式  确保一个类只有一个实例,并提供一个全局访问点。 注意:①如果使用多个类加载器,就有可能导致单例模式失交并产生多个实例。    ②Java1.2之前如果只有该单例类引用它本身,那么该实例会被GC。   1.饿汉模式:类加载后就自动创建一个实例,不管用不用都存在。实用于程序总是使用此单例,或者创建和运行时负担不高时使用。   public class Singleton { private static Singleton instance = new Singleton(); private Singleton() {} public stati ...
闭锁(Latch) 闭锁(Latch):一种同步工具类,可以延迟线程的进度直到其到达终止状态。其作用相当于一扇门,这扇门打开之前,所有线程的将被阻塞在门前,只有在门打开后,所有的线程才能通过。并且门(闭锁)的状态是一次性的(栅栏则是可控),只要门一打开,就不能再关闭。闭锁可以用来确保某些活动直到其它活动都完成后才继续执行。   CountDownLatch是java.util.concurrent包里关于闭锁的一种实现,其API如下:  public CountDownLatch(int count) // 使当前线程在锁存器倒计数至零之前一直等待,除非线程被中断 public ...
1.朴素的模式匹配算法( O(n+m)~O(nXm) /** * @param sStr 源字符串 * @param tStr 比较字符串 * @return int */ public static int getIndex(String sStr, String tStr) { if (tStr.length() > sStr.length()) { return -1; } if (tStr.length() == sStr.length()) { return 0; } char s[] = sStr.toC ...
1.使用AtomicInteger进行线程间数据共享: package threads; import java.util.concurrent.atomic.AtomicInteger; /** * @author alchimie * * 三个线程交替打印A、B、C */ public class XunleiThread1 extends Thread { private final String str[] = { "A", "B", "C" }; private final st ...
一、servlet容器对url的匹配过程: (转) 当一个请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url,比如我访问的是http://localhost/test/aaa.html,我的应用上下文是test,容器会将http://localho ...
Global site tag (gtag.js) - Google Analytics