彤哥读源码所有文章汇总
你知道几种实例化一个类的方式? new?反射?还有呢?
——日拱一卒,不期而至! 简介 hash是我们工作中经常听到的词,比如哈希表、哈希函数、hashCode、HashTable、HashMap等等,那么它们之间到底有怎样的爱恨情仇呢?来一起看一看吧~~ 数组 讲哈希表之前,我们先来看看数据结构的鼻祖——数组。 数组比较简单,我就不多说了,大家都会都懂
前言 本文收录于专辑:http://dwz.win/HjK,点击解锁更多数据结构与算法的知识。 你好,我是彤哥。 前面两节,我们一起学习了关于跳表的理论知识,并手写了两种完全不同的实现,我们放一张图来简单地回顾一下: 实现跳表的关键之处是在有序链表的基础上加上各层索引,通过这些索引可以做到O(log
础数据结构
很多同学经常问我:彤哥,你的源码为什么讲的那么好那么细,有没有什么方法? 此时,我一般回复四个字:调试大法。 然后,他们就会很懵逼:调试我也会呀,但是,我就做不到你那么细(像是在夸我),难道调试还有我不知道的技巧? 我:是的,调试也是有技巧的。 同学:那你能分享一下么? 我:可以是可以,不过,调试更
你的源码讲得那么细那么好,有没有什么方法呢?
背景 做过2B类系统的同学都知道,2B系统最恶心的操作就是什么都喜欢批量,这不,我最近就遇到了一个恶心的需求——50个用户同时每人导入1万条单据,每个单据七八十个字段,请给我优化。 Excel导入技术选型 说起Excel导入的需求,很多同学都做过,也很熟悉,这里面用到的技术就是POI系列了。 但是,
不是在加班,就是在去加班的路上…… 今天,我们来讨论一个有趣的话题: 技术人如何做好技术管理? 首先,何为技术管理呢? 技术管理是相对于纯管理的,它等于 技术 + 管理,技术为手段,管理是目的。 所以,今天我们不讨论一些纯管理的东西,比如,放权之类的,我们主要从技术的角度看看如何管理好整个团队,如何
背景 你好,我是彤哥。 昨天晚上下班回家,在地铁上,老大突然打来电话,B系统生产环境响应缓慢,影响了A系统的使用,几万小哥收不了单,大概有30万单卡住了,你去帮忙定位一下。 我8点半左右到家,立马上线入会。 重启 我入会的时候,已经有同事在帮忙定位了,俗话说的好,重启能解决80%的问题,如果重启解决
前言 本文收录于专辑:http://dwz.win/HjK,点击解锁更多数据结构与算法的知识。 你好,我是彤哥。 上一节,我们一起学习了关于跳表的理论知识,相信通过上一节的学习,你一定可以给面试官完完整整地讲清楚跳表的来龙去脉,甚至能够边讲边画图。 然而,面试官说,既然你这么精通跳表,不如实现一个呗
前言 本文收录于专辑:http://dwz.win/HjK,点击解锁更多数据结构与算法的知识。 你好,我是彤哥。 上一节,我们一起学习了,在Java中如何构建高性能队列,里面牵涉到很多底层的知识,不知道你有Get到多少呢?! 本节,我想跟着大家一起重新学习下关于哈希的一切——哈希、哈希函数、哈希表。
前言 本文收录于专辑:http://dwz.win/HjK,点击解锁更多数据结构与算法的知识。 你好,我是彤哥,一个每天爬二十六层楼还不忘读源码的硬核男人。 相信大家都有过抢票、刷票的经验,每年年底,这都是一场盛宴。 然而,你有没有想过12306的抢票算法是怎么实现的呢? 没有吧,想过,还是没有头绪
前言 本篇文章收录于专辑:http://dwz.win/HjK,点击解锁更多数据结构与算法的知识。 你好,我是彤哥,一个每天爬二十六层楼还不忘读源码的硬核男人。 前面几节,我们一起学习了算法的复杂度如何分析,并从最坏、平均、最好以及不能使用最坏情况全方位无死角的剖析了算法的复杂度,在我们表示复杂度的
拜托,面试别再问我跳表了! 何为跳表? 跳表使用什么样的存储结构? 为何Redis选择用跳表来实现有序集合?
什么是堆? 什么是堆化? 什么是堆排序? 时间复杂度各是多少? 有哪些应用?
你好,我是彤哥,本篇是netty系列的第四篇。欢迎来我的公从号彤哥读源码系统地学习源码&架构的知识。简介上一章我们一起学习了Java中的BIO/NIO/AIO的故事,本章将带着大家一起使用纯纯的NIO实现一个越聊越上瘾的“群聊系统”。业务逻辑分析首先,我们先来分析一下群聊的功能点:(1)加入群聊,并通知其他人;(2)发言,并通知其他人;(3)退出群聊,并通知其他人;一个简单的群聊系统差不多
最近在做新项目,一直在加班,期间遇到很多问题,我把一部分归类为设计原则的问题,当然,这里的设计原则不是特指那个SOLID五大原则,这里是指更广义的设计原则,不喜勿喷。 今天,我们来看第一个问题: 日志到底该如何打印? 咋一看,这个问题很简单,其实不然,我随手写几个,您看看。 log.error("x
上一章,我们一起学习了打日志的点点滴滴,很多同学跟我反馈,自己好像从来没打对过日志,也有同学跟我吐槽,MD,最讨厌那些吞异常的SX。 今天,我们就来看看这个有意思的问题: 异常到底该怎么抛? 今天,我依然在地铁上与你分享,加班
好了,下班了,今天躺在床上与你分享: 打工人如何持续提升自己的技术能力? 说实话,今天这个主题还真的不知道从哪开始说起,我就简单说说我的想法吧。 不管做哪一行,企业最不可或缺的都是那些能够解决问题的人。 作为打工人,只有不断的为企业解决各种问题,才能体现你的价值,然而,只有当你能够为企业解决越来越大
今天天气不错,我们来分享一个能让你技术获得增强的主题: 开发中间件。 很多同学听到这个主题,可能会说我们是小公司,没有机会开发中间件。 那你就错了,我们这里说的中间件,并不一定是那些如dubbo之类很牛逼的开源组件,而是,你们公司内部自己使用的公共组件。 首先,我们要刻意培养这方面的能力,其次,我们
不知道你有没有这样一些困惑,面试的时候对于一个知识点总是答不好,给老板汇报的时候总是讲不好,晋升答辩的时候总是讲不清楚过去一年自己的贡献,撩妹的时候总是拿捏不到重点,咳咳。 这是你没有具备结构化思维的表现。 什么是结构化思维呢? 大白话来说,结构化思维是一种以结构化的方式思考问题的方法,使得你考虑问
背景 昨天跟同事聊天,他提了一个问题,我觉得挺有意思,分享给大家。 原话是这样的:我提供了一个批量锁库存的接口,结果那谁传了十万条数据过来,把我弄死了,麻蛋,我就不应该给他提供这个批量的接口,我现在怎么办?(头大) 所以,我们应不应该提供批量的接口呢? 我认为不应该提供。 动机 首先,我们分析一下需
背景 今天,我们来讨论一个问题:技术实力的本质究竟是什么? 在工作中,你可能会遇到,为什么他的实力不如我,他却可以晋升? 在面试中,你可能会遇到,我把系统性能优化了10倍,为什么面试官还是看不上我? 为什么?到底是为什么? 如果你有同样的困惑,或者彻夜难眠,我认为你需要停下来思考一下了。 可能是你的
问题 今天的话题比较沉重,可能会被打。 我先提两个问题: 1、离开spring,你还会写代码吗? 2、现在培训机构的广告满天飞,都在营造一种技术牛逼就能进大厂,还各种贩卖焦虑,你认为学习完各种牛逼的技术就能进大厂吗? 如果第一个问题你回答不能,第二个问题你回答能。 那我得警告你了,你可能陷入了技术泥
勘误 上一讲,我写了一篇关于批量导入请求的性能优化过程,其中,关于Elasticsearch源码中写死了最大连接数的问题,是我错了,有同学留言说是HttpClientConfigCallback中可以修改,后来经过证实,确实可以修改,大家注意一下,同时,也非常感谢这位同学的留言。 好了,下面进入本篇
昨日回顾昨天我们讨论了服务间是否应该提供批量接口的问题,很多同学留言讨论,非常好,一起讨论一起进步。其中,留言最多的一种观点是说可以提供,但是要限制条数,比如每次最多传1000条数据过来。说句实话,我们的项目很多也是这么做的。不过我还是坚持我的观点,最好就不要提供批量接口。因为随着数据量的不断增大,势必导致存储架构升级。我们以商品查询为例,数据量变大,肯定是要上Redis的吧,以前批量接口可能直接
前言早上好,我是彤哥。上一节,我们一起从二叉树、二叉查找树、平衡树、AVL树、2-3树、2-3-4树、B树,一路讲到红黑树,最后得出红黑树的本质:红黑树就是2-3-4树,请看下图:我们知道2-3-4的插入、删除、查找元素的原理是相当简单的,那么,我们是不是可以利用2-3-4树来记忆红黑树呢?答案是肯定的,本节,我们就来看看如何利用2-3-4树来快速掌握红黑树,再也不用死记硬背了~~好了,让我们进入
前言本文收录于专辑:http://dwz.win/HjK,点击解锁更多数据结构与算法的知识。你好,我是彤哥。上一节,我们一起学习了关于哈希的一切,特别是哈希表的进化过程,相信通过上一节的学习,你一定可以从头到尾完整地给面试官讲讲哈希表是如何发展到如今这一步的。但是,难道HashMap的终极形态只能通过“数组+链表+红黑树”的形式实现吗?有没有可替代方案?为什么Java没有使用你说的这种替代方案呢?
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号