首页
学习
活动
专区
工具
TVP
发布

java达人

专栏作者
284
文章
425365
阅读量
90
订阅数
LSM树 与B+树比较
现在假设有 1000 个节点的key。对于磁盘,一定是将这1000个节点依次写入磁盘的速度最快。但是这样读很糟糕,因为key在磁盘中完全乱了,每次读都得扫描。
java达人
2022-05-16
6980
Kafka Streams 核心讲解
•Kafka Stream 提供了一个非常简单而轻量的 Library,它可以非常方便地嵌入任意Java应用中,也可以任意方式打包和部署•除了 Kafka 外,无任何外部依赖•充分利用 Kafka 分区机制实现水平扩展和顺序性保证•通过可容错的 state store 实现高效的状态操作(如 windowed join 和aggregation)•支持正好一次处理语义•提供记录级的处理能力,从而实现毫秒级的低延迟•支持基于事件时间的窗口操作,并且可处理晚到的数据(late arrival of records)•同时提供底层的处理原语 Processor(类似于 Storm 的 spout 和 bolt),以及高层抽象的DSL(类似于 Spark 的 map/group/reduce)
java达人
2021-06-21
2.4K0
分布式系统模式13-Consistent Core
维护较小的集群可提供更强的一致性,以允许大型数据集群协调服务器活动,而无需实现基于 quorum 的算法。
java达人
2021-04-09
5000
海盗分赃难题
船上有十个海盗,有一天,他们抢到了一箱100斤的黄金,打算分赃(以斤为最小单位)。十个海盗从高到低分为10个等级,分配权在最高等级的海盗手里。他可以任意分配每个海盗的所得,但必须取得半数或半数以上的海盗(包括自己在内)的支持,否则他将被同伴处死。处死之后分配权将转移到下一个等级最高的海盗手里,当然,他也将面临同样艰难的选择。
java达人
2020-12-16
4440
递归与尾递归简析
与之相对的是非尾递归函数,你先执行递归调用,然后获取递归调用的结果进行计算, 这样你需要先获取每次递归调用的结果,才能获取最后的计算结果。看下面计算n阶乘的函数,它是一个非尾递归函数。我们发现cal(n-1)返回的值被cal(n)使用,因此对cal(n-1)的调用并不是cal(n)所做的最后一步。
java达人
2020-12-16
7840
分布式系统模式5-Leader和Follower
来源: https://martinfowler.com/articles/patterns-of-distributed-systems/
java达人
2020-12-16
9500
ConcurrentHashMap#Put
其余分支我们后面可以细讲,现在简略讲下分支2,它使用cas无锁模式将元素添加到空桶,代码如下:
java达人
2020-10-29
7190
ConcurrentHashMap#概述
https://tva1.sinaimg.cn/large/00831rSTly1gct5k9ijijj30rh0hbgn1.jpg
java达人
2020-10-10
3910
Zuul 2: Netflix的异步、无阻塞系统之旅
来源: https://medium.com/netflix-techblog/zuul-2-the-netflix-journey-to-asynchronous-non-blocking-systems-45947377fb5c
java达人
2020-02-14
1.7K0
透过源码学习设计模式6—策略模式与Comparator
定义算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户端。它首先定义不同的算法策略,然后客户端把算法策略作为它的一个参数。使用这种模式的一个不错的例子是Collection.sort()方法了,它使用Comparator对象作为参数。根据Comparator接口不同实现,对象会被不同的方法排序。
java达人
2019-09-24
1K0
一致性哈希指南
来源: https://www.toptal.com/big-data/consistent-hashing
java达人
2019-08-21
7310
深入理解ThreadLocal
在每个线程Thread内部有一个ThreadLocalMap,这是用来存储实际的变量副本的,键值key为当前ThreadLocal变量,value为变量副本。初始时,在Thread里面,ThreadLocalMap为空,当通过ThreadLocal变量调用get()方法或者set()方法,就会对Thread类中的ThreadLocalMap进行初始化,并且以当前ThreadLocal变量为键值,以ThreadLocal要保存的副本变量为value,存到ThreadLocalMap。然后在当前线程里面,如果要使用副本变量,就可以通过get方法在ThreadLocalMap里面查找。 一个Thread中只有一个ThreadLocalMap,一个ThreadLocalMap中可以有多个ThreadLocal对象,其中一个ThreadLocal对象对应一个ThreadLocalMap中的一个Entry(即一个Thread可以依附有多个ThreadLocal对象)。
java达人
2019-03-08
9380
对JVM还一知半解?这篇文章让你彻底搞定JVM!
对于Java开发者来说,想把自身能力提升到更高层次,某些JVM相关知识应该是优先级很高的。比如说GC策略,JVM调优。
java达人
2018-10-25
5210
共识算法三巨头的碰面
一天,区块链共识算法的三巨头在蜂巢会上碰了碰头,一起探讨共识算法在区块链中的应用前景,三方各执一词,都觉得自己才是未来的老大。
java达人
2018-07-31
5120
回顾下以前经历的两类项目
春节期间一直在读一本书,《项目管理修炼之道》,理论性非常强,但又极具实践价值,其中不少话也点出了开发的一些的痛处,现摘录几句: “不是每个人都善于估算,有些人会过于乐观,对于任何任务都会少估算50%的工作量。有些人过于悲观,为每个任务添加缓冲的时间,有些人在估算不超过3~4天的小任务时没有问题,但是对于超过一周的任务,却很难估算准确。” “使用日期范围,可以让项目不至于受过早承诺之苦,不必在一个不可能的日期前完成。” “日程安排并不是预言,仅是猜测而已。但是有些项目经理的出资人会将这个猜测视为承诺。”
java达人
2018-03-20
7280
程序员成长路上常见的坑(一)
程序员成为高手需要有一张地图,借助这样一张地图,程序员可以尝试成为架构师、Guru或者纯管理者。但这条路总是不会那么顺畅。 升级练功流的网文中总会给修仙的主人公设置下几大关卡,比如:金丹难成、元神难成、成了元神后还有天人五衰等等。没有这些关口,情节很难推动,所以仙侠类的网文几乎无一例外依赖于这类设定。这一传统甚至可以追溯到《西游记》和《封神演义》。 拿这个来对照程序员的增值道路,就会猛地发现,升级练功流也不完全是扯淡。不管走那条道路,程序员的修炼路上同样的也有三灾九难,要想成就高手,还是得一个个跨过去才行。
java达人
2018-02-01
7410
防止表单重复提交的思路和方法
作为一个软件开发者,绝不能奢望你的用户会规规矩矩地使用你的软件,他们一般都是缺乏耐心,“胡作非为”的。比如当他点击提交表单时,服务器处理比较慢, 页面上没有任何反应,他会迫不及待地再点击几次,这样就会产生重复数据或者报错,或者他会刷新一下再次提交。所以,你必须保证你的软件足够地健壮,尽可能地考虑各种用例,增加限制,抵御使用者的摧残。 对于如何处理重复提交,一般教科书上都有点明,不外乎是在js代码中增加限制或者通过session来处理。关于js代码限制,就是当用户第一次提交后,将提交按钮设置为“disable
java达人
2018-01-31
1.8K0
把好方法参数的大门
做编程工作这几年来,见识了不少烂代码,最常见的就是像下面那样的: public void execute(Args args){ //方法体内对args没有作任何检查,直接使用执行。 } 所有的参数都从Args对象中取,多的时候大概有十几个参数,而在方法体内,直接使用参数,对参数没有作任何检查,大家可以想象一下调用这样的方法有多痛苦,经常执行到中途报一个错误,修改对参数后又抛出另一个异常,查了很久发现是另一个参数传错了,我说你不仅偷懒不写注释,连最基本的参数有效性检查都不做,这种方法写出来简直是对使用者的
java达人
2018-01-31
6590
eclipse常用快捷键
1几个最重要的快捷键 代码助手:Ctrl+Space(简体中文操作系统是Alt+/) 快速修正:Ctrl+1 单词补全:Alt+/ 打开外部Java文档:Shift+F2 显示搜索对话框:Ctrl+H 快速Outline:Ctrl+O 打开资源:Ctrl+Shift+R 打开类型:Ctrl+Shift+T 显示重构菜单:Alt+Shift+T 上一个/下一个光标的位置:Alt+Left/Right 上一个/下一个成员(成员对象或成员函数):Ctrl+Shift+Up/Down 选中闭合元素:Alt+Sh
java达人
2018-01-31
4780
分治法
一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)…… 任何一个可以用计算机求解的问题所需的计算时间都与其规模有关。问题的规模越小,越容易直接求解,解题所需的计算时间也越少。例如,对于n个元素的排序问题,当n=1时,不需任何计算。n=2
java达人
2018-01-31
8230
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档