自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(487)
  • 资源 (1)
  • 收藏
  • 关注

原创 666!这三本大佬写的资料,就能帮你进大厂,拿走不谢。

很多程序员都希望自己能成为技术高手,能进入大厂拿高薪。无论为了提高技术,还是为了面试,算法、多线程、并发编程都是必须要学会的。花了好久时间,给大家找了一些高质量的技术资料(下载方式在文末):1. 《LeetCode Cook》说到 LeetCode,作为一个程序员来说,应该不陌生,近几年参加面试都会提到它。这本书是一位大厂大佬写的 LeetCode 刷题笔记。大佬写这本书,是想和大家分享一些做题心得。本书的代码都已经 Beats 100% 了。没有 Beats 100% 题解就没有放到本书中了。

2021-06-02 14:27:55 557 1

原创 看这一篇就够了:写简历、面试、谈薪酬的技巧和防坑指南

读者大大们好,好几天没更新了。一方面因为这几天工作忙,占了写作的时间。另一方面是在准备这篇文章各种素材,今年是最难求职年,我希望通过这篇文章能帮大家提供高求职成功率。这篇文章分为简历篇、面试篇、谈薪酬篇,包括了找工作过程中各个环节的技巧和防坑指南。1. 简历篇如果把自己看成一个产品,那么简历就是说明书。写简历看似简单,想写好实则不容易。一份好的简历能帮你在一堆简历中脱颖而出。以前写过一篇...

2020-03-20 14:52:52 1260

原创 技术总监灵魂一问:精通那么多技术,为何还是做不好一个项目?

编写高质量可维护的代码既是程序员的基本修养,也是能决定项目成败的关键因素,本文试图总结出问题项目普遍存在的共性问题并给出相应的解决方案。1. 程序员的宿命?程序员的职业生涯中难免遇到烂项目,有些项目是你加入时已经烂了,有些是自己从头开始亲手做成了烂项目,有些是从里到外的烂,有些是表面光鲜等你深入进去发现是个“焦油坑”,有些是此时还没烂但是已经出现问题征兆走在了腐烂的路上。国内基本上是这样,国...

2020-02-12 22:42:48 14380 27

原创 52类110个主流的Java框架

上次写了一篇讲 Java 工具的文章。有读者看完在微信问我,能不能总结一个更全的 Java 主流框架?我本以为整理这个没多难,后来一边整理一边感觉越来越多……花了不少时间,最后经过删减,一共整理出来52 类 110 个常用的组件和框架!以下排序是按照从技术组件到开发框架到代码工具,也有一些实在不好分类的,就放到最后了。WEB 容器Tomcathttps://tomcat.apache.org/Jettyhttps://www.jetty.com/JBosshttps://www.jbo

2022-03-29 13:46:57 1889

原创 面试题详解:如何用Redis实现分布式锁?

说一道常见面试题:使用Redis分布式锁的详细方案是什么?一个很简单的答案就是去使用 Redission 客户端。Redission 中的锁方案就是 Redis 分布式锁的比较完美的详细方案。那么,Redission 中的锁方案为什么会比较完美呢?正好,我用 Redis 做分布式锁经验十分丰富,在实际工作中,也探索过许多种使用 Redis 做分布式锁的方案,经过了无数血泪教训。所以,在谈及 Redission 锁为什么比较完美之前,先给大家看看我曾经使用 Redis 做分布式锁遇到过的问题。

2022-03-16 10:46:18 1935 1

原创 接下来或许是一年中跳槽的最佳时间

一般来说,很多人都认为一年中最佳的跳槽时间是三、四月份,也就是我们常说的“金三银四”。但我认为“金三银四”不一定是性价比最佳的时间。为什么这么说?听我从团队管理者、面试官的角度给大家解释一下。三、四月份是跳槽的旺季,背后主要的原因就是年终奖。就拿我管理的技术团队来说吧,我们团队有 100 多人。每年三、四月份跳槽的人确实是最多。原因也很简单,一般来说,上一年底最晚年初,每个人的绩效分数都出来了。其中绩效好的人,年终奖拿到手之后可以踏踏实实、美滋滋的走了。绩效不好的人,估计自己心里也有数,也不指望年终

2021-10-20 14:07:57 602

原创 整理了两天!B站最全Java学习视频和学习路线

一两年前,一说的 B 站,我脑子里就是二次元、番剧、鬼畜、弹幕……总觉得这些东西和我这个年龄段的人不太相符,所以我很少上 B 站。但是后来,我发现我们部门很多人在 B 站学编程,于是我也试着看了看,好家伙,编程视频还真不少。之前写了几篇文章,推荐了学编程的一些书籍和读书方法。然后就有读者问,有没有推荐的视频。于是我就与时俱进了一把,花了周末一天的时间,整理了一些 B 站的编程视频分享给大家。分享之前,先说明一下:以下视频都是播放量和点赞多的,评价好的视频。我写的这个顺序,就是一份学习路线,可以直

2021-10-12 16:46:29 4468 4

原创 是不是从Java培训班出来的人都被淘汰了?

被淘汰肯定是有的。。。。。。但是,都被淘汰了?那培训班还开个啥劲,大家谁还去送人头。很多年之前,我就是参加过java培训班,当时我们班30人左右,学完之后找工作,当时有2/3的人找到了程序员的工作。如果你觉得这个比例还可以的话,这是有前提的,当时班里有一半的人大学学的是计算机,另一半人就是我这种,非计算机专业的。再后来一直到现在还有多少人还在做程序员,这数字还真不清楚。我只知道和我关系好的5、6个人现在都还在这个行业。我能不被淘汰,一方面是运气好,一直都有牛人带,碰到了很多好领导、好同事。另一方面,

2021-09-06 01:15:48 2546 1

原创 zookeeper-客户端注册 Watcher 实现

(1)调用 getData()/getChildren()/exist()三个 API,传入 Watcher 对象(2)标记请求 request,封装 Watcher 到 WatchRegistration(3)封装成 Packet 对象,发服务端发送 request(4)收到服务端响应后,将 Watcher 注册到 ZKWatcherManager 中进行管理(5)请求返回,完成注册。...

2021-09-02 21:35:22 416

原创 kafka主从同步

Kafka允许topic的分区拥有若干副本,这个数量是可以配置的,你可以为每个topci配置副本的数量。Kafka会自动在每个个副本上备份数据,所以当一个节点down掉时数据依然是可用的。Kafka的副本功能不是必须的,你可以配置只有一个副本,这样其实就相当于只有一份数据。...

2021-09-02 21:35:11 691

原创 快速学会微服务的诀窍

这就是我日常学习技术的几板斧:我是先通过对要学习的技术分类,去减少学习负担。再去根据技术分类,提取出要解决的一些问题。然后,根据问题去预测出想要读的书的内容范围。又根据这些范围,去各种卖书、评书网站去选书。选书完,采用一些读书技巧,去快速学习。学习完后,必须实践,加深理解。如此,完成一整套新技术学习。...

2021-09-02 21:34:56 200

原创 微服务学习实践

书读完了,肯定有很多不足的地方。这时候,就需要通过技术实践去加深理解、弥补不足。实践分为两种:书中的实验大部分技术书籍,大部分都有些对应的课后习题或者实验。因为这些实验都是附属在某些具体讲解、某些概念的章节后,针对性非常强。所以,如果能不看书,根据自己的理解,去顺利把实践做出来,那就证明,确实学习到位了,可以把学到的东西用到实战中了。实际中的场景当书中的实验都做完了,就可以考虑真实的项目场景了。可以先根据工作需求,打造出一个包含了所学新技术全栈的 Demo 出来。比如,微服务,就可以

2021-09-02 21:33:24 166

原创 读技术书,需要技巧

选完了书,就要去读书。但是,任何一本 IT 书籍,可都是不薄的。像我前面举例的《Implementing Domain-Driven Design》,这本书就是六百多页的厚度。如果一天读 20 页,需要 30 多天,这个时间就太慢了。所以,就需要技巧:先速读后精读一般来说,对于六百多页的书,尤其是讲解的概念穿插实战的,应该开始的时候,快速阅读。我大概一天是 100 - 200 页左右,时间控制在 4 个小时,连续不断的阅读。这种阅读,看上去很难,其实是建立在快速的跳读和略读上的。读取的时候,只找关键

2021-09-02 21:31:23 276

原创 学微服务,看什么书?

当我们根据技术栈分类定出学习计划后,接下来就要选择合适的书籍学习了。这里需要强调一下,以我的经验,对一门全新的技术学习,不建议完全通过看网上的文章。因为网上的文章有好也有坏,坏的是真坑人,而且作为初学者,你没有什么经验,不知道文章是否有错误。我举个例子,网上的链路跟踪,尤其讲 SkyWalking 的相关文章,很多都是错的,如果对链路跟踪不熟悉,就很难分辨出错误,到时候不慎把错误的观念用到了系统里,再改正就非常费劲了。所以,入门阶段还是老老实实的找一些权威书籍看吧。但是,权威书籍也有问题,因为书的

2021-09-02 21:30:32 516

原创 微服务的学习计划和重点

分完类之后,再结合当时的情况,我的计划是这样的。首先,由于我是从零开始,需要设计到落地一条龙。所以,我决定优先摸熟微服务的设计。这里我会找书看,通过看书弄清楚概念和知道怎么划分业务。为什么是看书不是看网上文章,原因后面会说。然后,再根据落地的需要,去学习微服务的架构最佳实践以及微服务的开发框架和代码规范。学好这些内容,等以后把微服务落地的时候都用得上。学的时候,先不需要去深入语法细节,我只需要明白框架的核心思想和代码规范,把控技术落地不会脱离大方向。技术的细节可以等后面真正写代码的时候,

2021-09-02 21:28:24 470

原创 学微服务之前,技术栈需要先分类

当想要学习任何新技术的时候,我经常做的第一件事就是对要学习的技术领域去做一个分类比如,几年前,公司的系统要改造成微服务架构,那我就必须去学习微服务的这套技术栈。但是,一学我才发现,微服务的技术栈怎么这么多……这时候,就要对微服务的技术栈进行分类。目的也很简单,就是为了对学习作出一个规划,根据技术栈的分类,作出一个有着明显轻重缓急的学习计划。就微服务而言,我将其划分为如下几类:微服务的设计微服务的原理微服务的架构微服务的开发框架和代码规范微服务的安全微服务的运维...

2021-09-02 21:27:17 176

原创 Zookeeper 下 Server 工作状态

服务器具有四种状态,分别是 LOOKING、FOLLOWING、LEADING、OBSERVING。(1)LOOKING:寻 找 Leader 状态。当服务器处于该状态时,它会认为当前集群中没有 Leader,因此需要进入 Leader 选举状态。(2)FOLLOWING:跟随者状态。表明当前服务器角色是 Follower。(3)LEADING:领导者状态。表明当前服务器角色是 Leader。(4)OBSERVING:观察者状态。表明当前服务器角色是 Observer。...

2021-08-31 11:58:04 368

原创 Nginx的异步非阻塞机制

每个工作进程 使用 异步非阻塞方式 ,可以处理 多个客户端请求 。当某个 工作进程 接收到客户端的请求以后,调用 IO 进行处理,如果不能立即得到结果,就去 处理其他请求 (即为 非阻塞 );而 客户端 在此期间也 无需等待响应 ,可以去处理其他事情(即为 异步)。当 IO 返回时,就会通知此 工作进程 ;该进程得到通知,暂时 挂起 当前处理的事务去 响应客户端请求...

2021-08-31 11:57:51 682

原创 Nginx的特性

Nginx服务器的特性包括:反向代理/L7负载均衡器嵌入式Perl解释器动态二进制升级可用于重新编写URL,具有非常好的PCRE支持

2021-08-31 11:57:41 1245

原创 zookeeper-四种类型的数据节点 Znode

(1)PERSISTENT-持久节点除非手动删除,否则节点一直存在于 Zookeeper 上(2)EPHEMERAL-临时节点临时节点的生命周期与客户端会话绑定,一旦客户端会话失效(客户端与zookeeper 连接断开不一定会话失效),那么这个客户端创建的所有临时节点都会被移除。(3)PERSISTENT_SEQUENTIAL-持久顺序节点基本特性同持久节点,只是增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。(4)EPHEMERAL_SEQUENTIAL-临时顺序节点基本特性

2021-08-31 11:57:20 708

原创 Nginx的多进程机制

服务器每当收到一个客户端时,就有 服务器主进程 ( master process )生成一个 子进程( worker process )出来和客户端建立连接进行交互,直到连接断开,该子进程就结束了。使用进程的好处是各个进程之间相互独立,不需要加锁,减少了使用锁对性能造成影响,同时降低编程的复杂度,降低开发成本。其次,采用独立的进程,可以让进程互相之间不会影响 ,如果一个进程发生异常退出时,其它进程正常工作, master 进程则很快启动新的 worker 进程,确保服务不会中断,从而将风险降到最低。缺点

2021-08-31 11:57:09 718

原创 Nginx有什么优势和功能?

Nginx是一个web服务器和方向代理服务器,用于HTTP、HTTPS、SMTP、POP3和IMAP协议。因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。Nginx—Ngine X,是一款免费的、自由的、开源的、高性能HTTP服务器和反向代理服务器;也是一个IMAP、POP3、SMTP代理服务器;Nginx以其高性能、稳定性、丰富的功能、简单的配置和 低资源消耗而闻名。也就是说Nginx本身就可以托管网站(类似于Tomcat一样),进行Http服务处理,也可以作为反 向代理服务器

2021-08-31 11:56:55 1294

原创 RPC 的实现原理

首先需要有处理网络连接通讯的模块,负责连接建立、管理和消息的传输。其次需要有编解码的模块,因为网络通讯都是传输的字节码,需要将我们使用的对象序列化和反序列化。剩下的就是客户端和服务器端的部分,服务器端暴露要开放的服务接口,客户调用服务接口的一个代理实现,这个代理实现负责收集数据、编码并传输给服务器然后等待结果返回。...

2021-08-31 11:56:44 129

原创 Redis事务

Redis事务功能是通过MULTI、EXEC、DISCARD和WATCH 四个原语实现的Redis会将一个事务中的所有命令序列化,然后按顺序执行。1.redis 不支持回滚“Redis 在事务失败时不进行回滚,而是继续执行余下的命令”, 所以 Redis 的内部可以保持简单且快速。2.如果在一个事务中的命令出现错误,那么所有的命令都不会执行;3.如果在一个事务中出现运行错误,那么正确的命令会被执行。1)MULTI命令用于开启一个事务,它总是返回OK。 MULTI执行之后,客户端可以继续向服务器发送

2021-08-31 11:56:36 91

原创 为什么Redis的操作是原子性的,怎么保证原子性的?

对于Redis而言,命令的原子性指的是:一个操作的不可以再分,操作要么执行,要么不执行。Redis的操作之所以是原子性的,是因为Redis是单线程的。Redis本身提供的所有API都是原子操作,Redis中的事务其实是要保证批量操作的原子性。多个命令在并发中也是原子性的吗?不一定, 将get和set改成单命令操作,incr 。使用Redis的事务,或者使用Redis+Lua==的方式实现....

2021-08-31 11:56:26 4021 2

原创 Redis 常见性能问题和解决方案?

(1) Master 最好不要做任何持久化工作,如 RDB 内存快照和 AOF 日志文件(2) 如果数据比较重要,某个 Slave 开启 AOF 备份数据,策略设置为每秒同步一次(3) 为了主从复制的速度和连接的稳定性, Master 和 Slave 最好在同一个局域网内(4) 尽量避免在压力很大的主库上增加从库(5) 主从复制不要用图状结构,用单向链表结构更为稳定,即: Master <- Slave1 <- Slave2 <-Slave3…...

2021-08-31 11:56:18 104

原创 redis的过期策略以及内存淘汰机制

redis采用的是定期删除+惰性删除策略。为什么不用定时删除策略?定时删除,用一个定时器来负责监视key,过期则自动删除。虽然内存及时释放,但是十分消耗CPU资源。在大并发请求下,CPU要将时间应用在处理请求,而不是删除key,因此没有采用这一策略.定期删除+惰性删除是如何工作的呢?定期删除,redis默认每个100ms检查,是否有过期的key,有过期key则删除。需要说明的是,redis不是每个100ms将所有的key检查一次,而是随机抽取进行检查(如果每隔100ms,全部key进行检查,redi

2021-08-30 16:44:33 163

原创 热点数据和冷数据是什么

热点数据,缓存才有价值对于冷数据而言,大部分数据可能还没有再次访问到就已经被挤出内存,不仅占用内存,而且价值不大。频繁修改的数据,看情况考虑使用缓存对于热点数据,比如我们的某IM产品,生日祝福模块,当天的寿星列表,缓存以后可能读取数十万次。再举个例子,某导航产品,我们将导航信息,缓存以后可能读取数百万次。数据更新前至少读取两次,缓存才有意义。这个是最基本的策略,如果缓存还没有起作用就失效了,那就没有太大价值了。那存不存在,修改频率很高,但是又不得不考虑缓存的场景呢?有!比如,这个读取接口对数据库的

2021-08-30 15:44:15 790 1

原创 缓存雪崩是什么?

我们可以简单的理解为:由于原有缓存失效,新缓存未到期间(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。解决办法大多数系统设计者考虑用加锁( 最多的解决方案)或者队列的方式保证来保证不会有大量的线程对数据库一次性进行读写,从而避免失效时大量的并发请求落到底层存储系统上。还有一个简单方案就时讲缓存失效时间分散开。...

2021-08-30 15:10:38 81

原创 mysql有关权限的表都有哪几个

MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库里,由mysql_install_db脚本初始化。这些权限表分别user,db,table_priv,columns_priv和host。下面分别介绍一下这些表的结构和内容:user权限表:记录允许连接到服务器的用户帐号信息,里面的权限是全局级的。db权限表:记录各个帐号在各个数据库上的操作权限。table_priv权限表:记录数据表级的操作权限。columns_priv权限表:记录数据列级的操作权限。host权限表

2021-08-30 15:05:17 1661

原创 分库分表之后,id 主键如何处理?

因为要是分成多个表之后,每个表都是从 1 开始累加,这样是不对的,我们需要一个全局唯一的 id 来支持。生成全局 id 有下面这几种方式:UUID:不适合作为主键,因为太长了,并且无序不可读,查询效率低。比较适合用于生成唯一的名字的标示比如文件的名字。数据库自增 id : 两台数据库分别设置不同步长,生成不重复ID的策略来实现高可用。这种方式生成的 id 有序,但是需要独立部署数据库实例,成本高,还会有性能瓶颈。利用 redis 生成 id : 性能比较好,灵活方便,不依赖于数据库。但是,引入了新

2021-08-30 15:03:36 383

原创 大表如何优化?

当MySQL单表记录数过大时,数据库的CRUD性能会明显下降,一些常见的优化措施如下:1. 限定数据的范围务必禁止不带任何限制数据范围条件的查询语句。比如:我们当用户在查询订单历史的时候,我们可以控制在一个月的范围内;2. 读/写分离经典的数据库拆分方案,主库负责写,从库负责读;3. 垂直分区根据数据库里面数据表的相关性进行拆分。 例如,用户表中既有用户的登录信息又有用户的基本信息,可以将用户表拆分成两个单独的表,甚至放到单独的库做分库。简单来说垂直拆分是指数据表列的拆分,把一张列比较多的表拆

2021-08-30 15:00:55 516

原创 并发事务带来哪些问题?

在典型的应用程序中,多个事务并发运行,经常会操作相同的数据来完成各自的任务(多个用户对同一数据进行操作)。并发虽然是必须的,但可能会导致以下的问题。脏读(Dirty read): 当一个事务正在访问数据并且对数据进行了修改,而这种修改还没有提交到数据库中,这时另外一个事务也访问了这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是“脏数据”,依据“脏数据”所做的操作可能是不正确的。丢失修改(Lost to modify): 指在一个事务读取一个数据时,另

2021-08-30 14:52:25 372

原创 数据库的索引

索引是对数据库表中一个或多个列的值进行排序的结构,建立索引有助于快速获取信息。你也可以这样理解:索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。mysql 有4种不同的索引:主键索引(PRIMARY)数据列不允许重复,不允许为NULL,一个表只能有一个主键。唯一索引(UNIQUE)数据列不允许重复,允许为NULL值,一个表允许多个列创建唯一索

2021-08-30 14:43:31 184

原创 数据库的事务

什么是事务?多条sql语句,要么全部成功,要么全部失败。事务的特性:数据库事务特性:原子性(Atomic)、一致性(Consistency)、隔离性(Isolation)、持久性(Durabiliy)。简称ACID。原子性:组成一个事务的多个数据库操作是一个不可分割的原子单元,只有所有操作都成功,整个事务才会提交。任何一个操作失败,已经执行的任何操作都必须撤销,让数据库返回初始状态。一致性:事务操作成功后,数据库所处的状态和它的业务规则是一致的。即数据不会被破坏。如A转账100元给B,不管操作是

2021-08-30 14:37:50 79

原创 如何查看mysql提供的所有存储引擎?

如何查看mysql提供的所有存储引擎mysql> show engines;mysql常用引擎包括:MYISAM、Innodb、Memory、MERGEMYISAM:全表锁,拥有较高的执行速度,不支持事务,不支持外键,并发性能差,占用空间相对较小,对事务完整性没有要求,以select、insert为主的应用基本上可以使用这引擎Innodb:行级锁,提供了具有提交、回滚和崩溃回复能力的事务安全,支持自动增长列,支持外键约束,并发能力强,占用空间是MYISAM的2.5倍,处理效率相对会差一些

2021-08-30 14:35:50 445

原创 垃圾回收-G1算法

G1算法1.9后默认的垃圾回收算法,特点保持高回收率的同时减少停顿.采用每次只清理一部分,而不是清理全部的增量式清理,以保证停顿时间不会过长其取消了年轻代与老年代的物理划分,但仍属于分代收集器,算法将堆分为若干个逻辑区域(region),一部分用作年轻代,一部分用作老年代,还有用来存储巨型对象的分区.同CMS相同,会遍历所有对象,标记引用情况,清除对象后会对区域进行复制移动,以整合碎片空间.年轻代回收:并行复制采用复制算法,并行收集,会StopTheWorld.老年代回收:会对年轻代一并回收

2021-08-29 01:38:24 796

原创 引用类型的分类

对象引用类型分为强引用、软引用、弱引用和虚引用。强引用:就是我们一般声明对象是时虚拟机生成的引用,强引用环境下,垃圾回收时需要严格判断当前对象是否被强引用,如果被强引用,则不会被垃圾回收软引用:软引用一般被做为缓存来使用。与强引用的区别是,软引用在垃圾回收时,虚拟机会根据当前系统的剩余内存来决定是否对软引用进行回收。如果剩余内存比较紧张,则虚拟机会回收软引用所引用的空间;如果剩余内存相对富裕,则不会进行回收。换句话说,虚拟机在发生OutOfMemory 时,肯定是没有软引用存在的。弱引用:弱引用与软引

2021-08-29 01:37:40 884

原创 Hashcode的作用

java的集合有两类,一类是List,还有一类是Set。前者有序可重复,后者无序不重复。当我们在set中插入的时候怎么判断是否已经存在该元素呢,可以通过equals方法。但是如果元素太多,用这样的方法就会比较满。于是有人发明了哈希算法来提高集合中查找元素的效率。 这种方式将集合分成若干个存储区域,每个对象可以计算出一个哈希码,可以将哈希码分组,每组分别对应某个存储区域,根据一个对象的哈希码就可以确定该对象应该存储的那个区域。hashCode方法可以这样理解:它返回的就是根据对象的内存地址换算出的一个值。

2021-08-29 01:37:09 110

原创 JVM内存分哪几个区,每个区的作用是什么?

Java虚拟机主要分为以下几个区:方法区:有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生GC,在这里进行的GC主要是对方法区里的常量池和对类 型的卸载方法区主要用来存储已被虚拟机加载的类的信息、常量、静态变量和即时编译器编译后的代码等数据。该区域是被线程共享的。方法区里有一个运行时常量池,用于存放静态编译产生的字面量和符号引用。该常量池具有动态性,也就是说常量并不一定是编 译时确定,运行时生成的常量也会存在这个常量池中。虚拟机栈:虚拟机栈也就是我们平常所称的栈内存,它为

2021-08-29 01:36:57 238

经验+血泪史,程序员跳槽涨薪成功宝典

分为简历篇、面试篇、谈薪酬篇,包括了找工作过程中各个环节的技巧和防坑指南。市面上最全的程序员面试经验、技巧,看过的人评价都很高。已经帮助很多人跳槽成功。

2021-08-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除