写给新手的 github 设置指南
如果你的团队决定在github上管理项目代码,那么下面这些设置你一定要会。首先进入到仓库的Settings页面,左边会有菜单选项设置谁能提交代码设置成员添加你的team成员账号,这样他们才能向这个仓库提交代码设置默认分支开发过程中,我们并不直接向master提交分支,而是会新建一个开发分支devel
老大喊我用AOP记录下日志
老大喊我记录下API的操作日志,免得前端甩锅,主要记录新增,修改,删除等操作。我想了下就决定用AOP来实现这个功能。由于使用的是SpringBoot,所以首先应该在依赖中引入AOP包。<dependency><groupId>org.springframework.boot&
面试官:如何用LinkedHashMap实现LRU
上一篇文章分析了HashMap的原理,有网友留言想看LinkedHashMap分析,今天它来了。LinkedHashMap是HashMap的子类,在原有HashMap数据结构的基础上,它还维护着一个双向链表链接所有entry,这个链表定义了迭代顺序,通常是数据插入的顺序。LinkedHashMap结
再也不怕面试官问我Jdk8 HashMap了
上一篇文章中提到了ThreadLocalMap是使用开放地址法来解决冲突问题的,而我们今天的主角HashMap是采用了链表法来处理冲突的,什么是链表法呢?jdk8链表法在散列表中,每个“桶(bucket)”或者“槽(slot)”会对应一条链表,所有散列值相同的元素我们都放到相同槽位对应的链表中。jd
开放寻址的ThreadLocalMap分析
什么是散列散列表(hashtable)我们平时也叫它哈希表或者Hash表,它用的是数组支持按照下标随机访问数据的特性,所以散列表其实就是数组的一种扩展,由数组演化而来。可以说,没有数组就没有散列表。比如我们有100件商品,编号没有规律的4位数字,现在我们想要通过编号快速获取商品信息,如何做呢?我们可
为什么零拷贝可以提升Kafka性能?
从操作系统说起计算机系统是由“硬件”和“软件”两大部分组成,计算机硬件包括一个或多个处理器(CPU)、内存、键盘、显示器、磁盘、I/O接口以及其他一些外围设备比如打印机,绘图仪等等。总之,计算机硬件部分是一个由多种电子和机械设备组成的硬件系统。为了让人方便正确使用这些设备,就需要编写若干程序来管理这
MongoDB锁事
MongoDB有4个粒度级别的锁Global(MongoD实例)--所有的数据库上加锁Database--锁定某个数据库Collection--锁定某个集合Document--锁定某个文档MongoDB本身只提供Global,Database,Collection三个级别的锁,Document级别的
MongoDB中有几种日志?
任何一种数据库都有各种各样的日志,MongoDB也不例外。MongoDB中有4种日志,分别是系统日志、Journal日志、oplog主从日志、慢查询日志等。这些日志记录着MongoDB数据库不同方面的踪迹。下面分别介绍这几种日志。系统日志系统日志在MongoDB数据库中很重要,它记录着MongoDB
为什么要有复合索引?
什么是索引要理解索引,你需要在脑中有个画面,这里建议想象一本食谱,不是普通食谱,而是5000页的厚重食谱,包含各种场合、菜肴和季节的食谱。虽然这个食谱很全,但是它有个缺点就是它是乱序的,第一页可能是鱼香茄子,第3000页是红烧茄子。这还不是很要紧,关键问题是这本食谱没有索引!下面是你要问自己的第一个
Kafka Consumer 源码分析之分区方案
consumer提供三种不同的分区策略,可以通过partition.assignment.strategy参数进行配置,默认使用的策略是org.apache.kafka.clients.consumer.RangeAssignor,还存在org.apache.kafka.clients.consum
Kafka Consumer的offset是如何提交的?
Kafkaconsumer的offset提交机制有以下两种手动提交同步提交consumer.commitSync()方式提交异步提交consumer.commitAsync(callback)方式提交自动提交props.put("enable.auto.commit","true");props.p
Kafka Consumer源码之Offset及Fetcher分析
上一篇讲了consumer如何加入consumergroup的,现在加入组成功之后,就要准备开始消费,但是我们需要知道consumer从offset为多少的位置开始消费。consumer中关于如何消费有2种策略:1.手动指定调用consumer.seek(TopicPartition,offset)
Kafka Consumer如何加入Consumer Group
consumer比producer要复杂许多,producer没有组的概念,也不需要关注offset,而consumer不一样,它有组织(consumergroup),有纪律(offset)。这些对consumer的要求就会很高,这篇文章就先从consumer如何加入consumergroup说起。
优雅的使用Kafka Consumer
如何消费数据我们已经知道了如何发送数据到Kafka,既然有数据发送,那么肯定就有数据消费,消费者也是Kafka整个体系中不可缺少的一环publicclassKafkaConsumerDemo{publicstaticvoidmain(String[]args)throwsInterruptedExc
我终于搞清楚了和String有关的那点事儿。
String,是Java中除了基本数据类型以外,最为重要的一个类型了。很多人会认为他比较简单。但是和String有关的面试题有很多,下面我随便找两道面试题,看看你能不能都答对:Q1:Strings=newString("hollis");定义了几个对象。Q2:如何理解String的intern方法?
Kafka Producer消息收发设计
前几篇文章分析了Kafka的发送流程以及NIO的使用方式,但是还是留下了不少坑,这里就对剩下的问题做一个总结。收到的数据为什么要缓存起来?Kafka中Selector读取从远端回来的数据的时候会先把收到的数据缓存起来privatevoidattemptRead(SelectionKeykey,Kaf
从Kafka到Java NIO
在谈NIO之前,简单回顾下内核态和用户态内核空间是Linux内核运行的空间,而用户空间是用户程序的运行空间,为了保证内核安全,它们之间是隔离的,即使用户的程序崩溃了,内核也不受影响。内核空间可以执行任意命令,调用系统的一切资源,用户空间只能执行简单运算,不能直接调用系统资源(I/O,进程资源,内存分
Kafka Producer网络层源码分析
上一篇讲了KafkaProducer发送消息的主体流程,这一篇我们分析下Kafka的网络层源码。对于发送消息而言,Producer是客户端,Broker是服务器端。Kafka使用了JavaNIO向服务器发送消息,所以在这之前需要了解javanio的基本知识。这次网络层源码分析从metadatareq
图说HTTPS协议
故事还要从月月给她老公亮亮发了一条消息说起。晚上亮亮下班回到家,刚一进门“给我跪下”,“咋了,媳妇儿?”,嘴上这样问着,可是亮亮的身体还是很诚实。“你不是给我发消息说今晚不回家吗?”说着月月掏出了手机。“天地良心我没这么说过,我今天收到了你的消息还是你骂我呢”,亮亮也掏出了自己的手机。“好神奇,我们
从 Java 字节码分析中我学到了什么
实参和形参publicintsum(intx,inty){returnx+y;}sum(2,3);上面的代码中sum()方法中的x,y就是形参,而调用方法sum(2,3)中的2与3就是实参。形参是在方法定义阶段,而实参实在方法调用阶段。查看字节码基本类型参数调用privatestaticintint