![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
架构师
IT茶馆技术斋
这个作者很懒,什么都没留下…
展开
-
7000 字说清楚 HashMap,面试点都在里面了,看完进大厂
这是上篇文章有趣的条漫版 HashMap,25岁大爷都能看懂的文字版。有不少同学说条漫版的比较有意思,简单易懂,但是毕竟图片画不了那么详细,只能从大面而上理解。真正的了解细节,还得看这一篇。其实是这篇先写完,然后画了不少图片,所以就写了一篇图片版的。本篇 7000 多字,建议三连呦。在 Java 中,最常用的数据类型是 8 中基本类型以及他们的包装类型以及字符串类型,其次应该就是ArrayList和HashMap了吧。HashMap存的是键值对类型的数据,其存储和获取的速度快、性能高,是...原创 2020-06-23 13:10:01 · 374 阅读 · 0 评论 -
JSON类库Jackson优雅序列化Java枚举类
1. 前言在Java开发中我们为了避免过多的魔法值,使用枚举类来封装一些静态的状态代码。但是在将这些枚举的意思正确而全面的返回给前端却并不是那么顺利,我们通常会使用Jackson类库序列化对象为JSON,今天就来讲一个关于使用Jackson序列化枚举的通用性技巧。2. 通用枚举方式为了便于统一处理和规范统一的风格,建议指定一个统一的抽象接口,例如:/** * The interface Enumerator. */public interface Enumerator {...原创 2020-06-22 13:42:41 · 708 阅读 · 0 评论 -
Java容器相关知识点整理,梳理好,靠这些拿到了京东的offer
Java容器相关知识点整理结合一些文章阅读源码后整理的Java容器常见知识点。对于一些代码细节,本文不展开来讲,有兴趣可以自行阅读参考文献。1. 思维导图各个容器的知识点比较分散,没有在思维导图上体现,因此看上去右半部分很像类的继承关系。2. 容器对比操作的时间复杂度ArrayList下标查找O(1),插入O(n) 涉及到树,查找和插入都可以看做log(n) 链表查找O(n),插入O(1) Hash直接查找hash值为 O(1)注1:关于容器的线程安...原创 2020-06-18 15:39:09 · 271 阅读 · 0 评论 -
GitHub男人的天堂,你真的玩的转吗?超强超详细GitHub教程
摘要:常用命令:git init 新建一个空的仓库git status 查看状态git add . 添加文件git commit -m '注释' 提交添加的文件并备注说明git remote add origin xxx连接远程仓库git push -u origin master 将本地仓库文件推送到远程仓库git log 查看变更日志git reset --hard 版本号前六位 回归到指定版本git branch 查看分支git branch newnam...原创 2020-06-16 14:01:18 · 9929 阅读 · 0 评论 -
面试大厂必问题:分布式锁实现之zk(Zookeeper)+面试资料
点赞再看,养成习惯,感谢大家的阅读!前言说我想不需要我过多的去说,大家都知道是怎么一回事了吧?在多线程环境下,由于上下文的切换,数据可能出现不一致的情况或者数据被污染,我们需要保证数据安全,所以想到了加锁。所谓的加锁机制呢,就是当一个线程访问该类的某个数据时,进行保护,其它线程不能进行访问,直到该线程读取完,其他线程才可使用。还记得我之前说过Redis在分布式的情况下,需要对存在并发竞争的数据进行加锁,十分费解,Redis是单线程的嘛?为啥还要加锁呢?看来老公们还是年...原创 2020-06-15 15:07:08 · 346 阅读 · 0 评论 -
同事埋了个坑:Insert into select语句把生产服务器炸了
前言Insert into select请慎用。这天xxx接到一个需求,需要将表A的数据迁移到表B中去做一个备份。本想通过程序先查询查出来然后批量插入。但xxx觉得这样有点慢,需要耗费大量的网络I/O,决定采取别的方法进行实现。通过在Baidu的海洋里遨游,他发现了可以使用insert into select实现,这样就可以避免使用网络I/O,直接使用SQL依靠数据库I/O完成,这样简直不要太棒了。然后他就被开除了。事故发生的经过由于数据数据库中order_today数据量过大,当时好像有700原创 2020-06-14 19:55:37 · 954 阅读 · 0 评论 -
「从单体架构到分布式架构」请求增多,单点变集群(2):Nginx
上一个章节,我们学习了负载均衡的理论知识,那么是不是把应用部署多套,前面挂一个负载均衡的软件或硬件就可以应对高并发了?其实还有很多问题需要考虑。比如:1. 当一台服务器挂掉,请求如何转发到其他正常的服务器上?2. 挂掉的服务器,怎么才能不再访问?3. 如何保证负载均衡的高可用性?等等等等...让我们带着这些问题,实战学习一下 Nginx 的配置和使用。1. 前置概念在正式介绍 Nginx 之前,首先让我们先了解一下概念。1. 中间件干 IT 太累了,我准备辞职...原创 2020-06-14 18:47:56 · 242 阅读 · 0 评论 -
2020再见,后端
前言虽然 2020 开局不顺,但生活工作还是要往前看的。目前在互联网行业内,尤其是大厂之间对人才的抢夺愈演愈烈。如何在后疫情时代,快速提升自身实力,尽快达到心仪企业的用人要求,成为当下技术人找工作或跳槽时必须考虑的问题。然而,很多朋友在准备时,往往不成体系,一会学会儿 Spring Cloud,一会看下 redis,过后几天就忘。这里贴上一张进阶学习Xmind图,图中将大厂需求归纳为五项能力:硬核编码能力、分布式技术栈、必备中间件、微服务主流架构、高并发实战能力。具体学习哪些技术分享,图中都有.原创 2020-06-13 14:37:45 · 342 阅读 · 0 评论 -
学习java的你!知不知道IO 和 NIO的区别呢?NIO优点有哪些?
Java NIO提供了与标准IO不同的IO工作方式:Channels and Buffers(通道和缓冲区):标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。Asynchronous IO(异步IO):Java NIO可以让你异步的使用IO,例如:当线程从通道读取数据到缓冲区时,线程还是可以进行其他事情。当数据被写入到缓冲区时,线程可以继续处理它。从缓冲区写入通道也类似。Sele原创 2020-06-08 20:09:08 · 261 阅读 · 0 评论