
Java编程
文章平均质量分 82
Java程序V
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Elasticsearch创建一个索引怎么也这么复杂
假总结,真心理总结通过上面的学习,我们知道了设置索引时的常用参数、常见的字段类型以及建立字段映射关系时的参数设置,可以看得出来,创建索引就这三块,只要这三块使用熟练了,哪怕不查看官网也可以直接创建出一个满足自己需求的索引,鉴于考试时也都是可以参考官网的,所以上面的内容也不用死记硬背,只需要理解,多操作,记住常见的配置项即可了。原创 2022-10-17 10:32:14 · 340 阅读 · 0 评论 -
面试官问:Stream 中的 map、peek、foreach 方法的区别?傻傻分不清楚。。
根据文中的示例,大家应该都搞清楚了 map、peek、foreach 的区别和用法了,现在再来总结下吧!map:用于对流中的每个元素进行映射处理,然后再形成新的流;peek:用于 debug 调试流中间结果,不能形成新的流,但能修改引用类型字段的值;foreach:用于遍历,会中断流操作;所以说,大家都搞清楚了吧?还有谁用错,把这篇文章发给他吧,让大家少走弯路,少写垃圾代码,共同进步。原创 2022-10-17 10:25:20 · 1866 阅读 · 0 评论 -
图解 ReentrantLock 公平锁和非公平锁实现
ReentrantLock 是 Java 并发中十分常用的一个类,具备类似 synchronized 锁的作用。但是相比 synchronized, 它具备更强的能力,同时支持公平锁和非公平锁。指多个线程按照申请锁的顺序来获取锁,线程直接进入队列中排队,队列中的第一个线程才能获得锁。多个线程加锁时直接尝试获取锁,能抢到锁到直接占有锁,抢不到才会到等待队列的队尾等待。那 ReentrantLock 中具体是怎么实现公平和非公锁的呢?它们之间又有什么优缺点呢?本文就带大家一探究竟。原创 2022-10-17 10:12:59 · 616 阅读 · 0 评论 -
深入浅出理解 Java 并发 AQS 的独占锁模式
稍微对并发源码了解的朋友都知道,很多并发工具如 ReentrantLock、CountdownLatch 的实现都是依赖 AQS, 全称 AbstractQueuedSynchronizer。AQS 是一种提供了原子式管理同步状态、阻塞和唤醒线程功能以及队列模型的简单框架。一般来说,同步工具实现锁的控制分为独占锁和共享锁,而 AQS 提供了对这两种模式的支持。也叫排他锁,即锁只能由一个线程获取,若一个线程获取了锁,则其他想要获取锁的线程只能等待,直到锁被释放。原创 2022-10-17 10:05:00 · 584 阅读 · 0 评论 -
啃完这些Spring知识点,面试官刮目相看,而我内心毫无波澜(附面经+笔记)
关于大厂面试,总的来说,技术相关的考察主要分为两大块,一是基础,二是经验,基础包括java基础、数据库、中间件等,来自于日常的积累和面试前的准备。经验包括以往做过的项目、解决的问题、以及一些场景题(比如你的项目如果流量大了十倍如何保证可用)。既然有进入大厂工作的理想,就要为此付诸行动——学习,刻不容缓。更多资料展示:关注文中公众号即可领取关注公众号【编程程序V】,分享更多Java技术前沿文章,Java学习面试资源。原创 2022-10-14 15:28:04 · 189 阅读 · 0 评论 -
阿里 2022 最新 JDK 源码深度解析小册,Github 全站热榜第二,涨星中
前几日闲来无事逛微信公众号时有幸看到了一位博主分享自己阅读开源框架源码的心得,看了之后也引发了我的一些深度思考。我们为什么要看源码?我们该怎么样去看源码?其中前者那位博主描述的我觉得很全了(如下图所示),就不做过多的赘述了,我这篇主要跟大家说说怎么去看源码。原创 2022-10-13 16:45:19 · 344 阅读 · 0 评论 -
太难了,面试阿里被 Redis 挂掉,回家还要被怼,程序员需要保护啊
前不久有小伙伴投稿私信我说最近面试阿里因为简历上写的精通 Redis 被狂问相关问题,后面一不小心就挂掉了,回去后更是被内推他的表哥一顿怼,这不来我这边想问问最近有没有什么优秀的 Redis 笔记,来帮助他面试ps:已经被其他部门的捞了,阿里面试一般比较慢,准备利用这个时间把 Redis 好好补一下我给他找来了这份 Redis 深度笔记,这里也免费分享给大家,下面将这份笔记的内容展示出来,感兴趣的小伙伴可以看看。原创 2022-10-12 11:02:52 · 1260 阅读 · 0 评论 -
面试题:一头牛重800公斤,一座桥承重700公斤,牛应该怎么过桥
回答这类问题结论不是最重要的,因为本质上是考察思考方法,所以思考过程才是最重要的。原创 2022-10-12 10:41:16 · 3346 阅读 · 0 评论 -
性能问题从发现到优化一般思路
两个维度定义性能:速度慢压力大两个维度描述性能:定性:直观感受定量:指标分析第一本文讨论了系统早期、中期、后期如何看待性能问题,第二讨论了什么是性能,第三讨论了如果发现性能问题,第四讨论了如何优化性能问题,希望本文对大家有所帮助。原创 2022-10-12 10:33:28 · 752 阅读 · 0 评论 -
通过一款插件动态观察ES分片如何分布
第一本文介绍了ES基本概念并提出了两个问题,第二本文为了回答这两个问题搭建了ES集群,第三本文从六个角度回答了第一个问题,第四本文从五个角度回答了第二个问题,希望本文对大家有所帮助。原创 2022-10-12 10:30:57 · 188 阅读 · 0 评论 -
异步性能不如同步?通过压测讨论应该如何设置线程数
同步执行耗时为每个节点耗时累加异步执行耗时为节点中耗时最长节点单次执行耗时异步优于同步线程池选择不合适,异步性能不如同步如果任务耗时长,应该增加配置线程数关注公众号【编程程序V】,分享更多Java技术前沿文章,Java学习面试资源。本文第一编写了同步和异步代码,并在代码中输出了耗时日志。第二分析单次执行同步和异步的表现,异步优于同步。第三结合不同线程池配置进行压测,如果线程池选择不合适,异步执行性能不如同步,所以应该配置合适线程数。原创 2022-10-12 10:25:11 · 339 阅读 · 0 评论 -
程序员跳槽一次到底能涨多少?今天带你见识下跳槽天花板
跳槽才是程序员永远的出路!”2022 年已经过去了大半了,最近内卷严重,各种跳槽裁员,相信很多小伙伴也在准备今年金九银十的面试计划。在此展示一套学习笔记 / 面试手册,准备跳槽的朋友可以好好刷一刷,还是挺有必要的,它几乎涵盖了所有的 Java 技术栈,非常珍贵,肝完进大厂!妥妥的。原创 2022-10-09 10:25:15 · 333 阅读 · 0 评论 -
Alibaba爆款《SpringBoot+vue 全栈开发实战项目》笔记,
Spring 作为一个轻量级的容器,在 JavaEE 开发中得到了广泛的应用,但是 Spring 的配置繁琐臃肿,在和各种第三方框架进行整合时代码量都非常大,并且整合的代码大多是重复的,为了使开发者能够快速上手 Spring,利用 Spring 框架快速搭建 JavaEE 项目,Spring Boot 应运而生。原创 2022-10-09 10:08:55 · 458 阅读 · 0 评论 -
太强了,Alibaba最新分享,如何构建大型分布式系统?重点来了
简单来说,在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就好像是一个系统似的。分布式系统作为一个整体对用户提供服务,而整个系统的内部的协作对用户来说是透明的,用户就像是指使用一个 Mysql 一样,如:分布式 Mysq|中间件 Mycat , 来处理大并发大数据量的构架。原创 2022-10-09 10:04:03 · 167 阅读 · 0 评论 -
仅靠一文便火爆全网,开源阿里绝密 Java 面试笔记:霸榜GitHub,火热涨星ing
招聘网站上 Java 岗位众多,Java 工程师似乎不愁找工作。但仔细一看就会发现,。而在 Java 工程师求职过程中,也是冷暖自知。简历不知道写什么,或者随便写写,或者只是项目罗列,投出去石沉大海;等待面试过程中不知道面试考什么,也知道该怎么准备,随便百度搜搜看看;面试过程自我感觉不错,但是不知道为什么就是没有通过。近期有很多朋友在考虑跳槽,“面试造火箭,工作拧螺丝”这话说得十分吻合他们的现状!而说到准备面试,那是真不容易,趁着空挡我也收集了不少 Java 高级面试资源!原创 2022-10-09 09:59:18 · 194 阅读 · 0 评论 -
根本停不下来,GitHub顶级数据结构刷题教程,Star已飙升36k
提起数据结构与算法,大家可能第一时间想到的就是蓝桥杯这种算法竞赛,并不会太过于在意它在面试中的占比。因为在若干年前,你去面试这种互联网公司或者大的 IT 公司,面试官并不会过于考察你的算法能力,甚至说你会简单的写一些框架,搭一些数据库,就能找到一份不错的工作但是直至今日,大家会发现面试的门槛越来越高,甚至来说去到一些大公司去面试算法与数据结构的题目已经成为必问了,算法的在面试的占比已经越来越高,为了帮助小伙伴们更好的学习数据结构与算法,我找来了这份 GitHub 定级数据机构刷题教程,希望能够帮助到大家。原创 2022-10-09 09:53:05 · 222 阅读 · 0 评论 -
久违了,腾讯大咖亲笔手书JVM性能优化实践手册,再次飙升榜首
性能调优包含多个层次,比如:架构调优、代码调优、JVM 调优、数据库调优、操作系统调优等。架构调优和代码调优是 JVM 调优的基础,其中架构调优是对系统影响最大的。为了帮助小伙伴更好学习和掌握性能优化相关的知识,我带来了这份性能优化笔记,下面展示给大家,原创 2022-10-09 09:50:21 · 127 阅读 · 0 评论 -
足足 2000 页,阿里大咖十年心得总结的高并发核心编程手册
说起高并发一直是中,无论是 618 还是双十一等大型秒杀活动都是,所以导致很多都会把高并发作为面试中的重要一环。很多程序员在高并发上面并没有,并他们通过大厂的高并发的,下面小编会给大家展示出一份 2000 页左右的大牛整理的《原创 2022-10-09 09:47:28 · 489 阅读 · 0 评论 -
阿里 P8 爆出学透这份算法面试文档,不再怕任何大厂算法题
程序员代码面试指南 lT 名企算法与数据结构题目最优解这是一本程序员面试宝典!书中对 IT 名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。针对当前程序员面试缺乏权威题目汇总这一痛点,本书选取将近 200 道真实出现过的经典代码面试题,帮助广大程序员的面试准备做到万无一失。“刷”完本书后,你就是“题王”!本书采用题目+解答的方式组织内容,并把面试题类型相近或者解法相近的题目尽量放在一起,读者在学习本书时很容易看出面试题解法之间的联系,使知识的学习避免碎片化。原创 2022-10-08 11:46:10 · 162 阅读 · 0 评论 -
通过一款插件动态观察ES分片如何分布
1.1 ES基本概念(1) 索引(Index)类比关系型数据库概念:数据库(database)(2) 类型(Type)类比关系型数据库概念:表(table),类型这个概念已经逐步被官方弱化,7.X不再支持自定义类型,默认类型是_doc,在类型弱化之后也可以把索引(Index)类比为表(3) 文档(Document)类比关系型数据库概念:行(row)(4) 分片(Shard)原创 2022-10-05 14:23:55 · 403 阅读 · 0 评论 -
异步性能不如同步?通过压测讨论应该如何设置线程数
同步执行耗时为每个节点耗时累加异步执行耗时为节点中耗时最长节点单次执行耗时异步优于同步线程池选择不合适,异步性能不如同步如果任务耗时长,应该增加配置线程数本文第一编写了同步和异步代码,并在代码中输出了耗时日志。第二分析单次执行同步和异步的表现,异步优于同步。第三结合不同线程池配置进行压测,如果线程池选择不合适,异步执行性能不如同步,所以应该配置合适线程数。原创 2022-10-05 14:18:12 · 201 阅读 · 0 评论 -
日常学习MySQL底层之MVCC、回滚段、一致性读、锁定读
多版本控制: 指的是一种提高并发的技术。找回的数据历史版本可以提供给用户读(按照隔离级别的定义,有些读请求只能看到比较老的数据版本),也可以在回滚的时候覆盖数据页上的数据。数据版本可见性规则:当前数据某个版本是否可见,取决于当前数据的DB_TRX_ID以及这个一致性视图数组中记录的事务ID做对比来判断:低水位以前的数据版本可见,高水位以后的数据版本不可见,低水位和高水位之间得查看当前数据版本的DB_TRX_ID是否存在数组中,若存在意味着事务未提交,不可见,若不存在意味着事务已提交,可见。原创 2022-10-05 14:10:23 · 141 阅读 · 0 评论 -
面试官:用过哪些MQ,它们之间有啥区别呢?不太熟悉诶
这是从API调用是否阻塞的角度看的。基本特点(必须记住哦):RabbitMQ实现了AMQP协议,没有遵守 JMS规范,使用Erlang语言实现,默认采用点对点模型,消费端默认采用推模式(push),也支持pull模式,消息实时性高,可靠性好,不会重复消费,但是吞吐率不高。UNMATCHED_ACK_TYPE = 5 在Topic中,如果一条消息在转发给“订阅者”时,发现此消息不符合Selector过滤条件,那么此消息将不会转发给订阅者,消息将会被存储引擎删除(相当于在Broker上确认了消息)。原创 2022-10-05 14:01:26 · 104 阅读 · 0 评论 -
后端程序员对于 Docker 要掌握多少才行?我的答案是...
使用 Compose,我们需要在一个 YAML 文件中定义所有服务,然后使用单个命令,就可以启动或停止所有服务。最后整篇的安装文章就到这里了,通过 Docker 的安装还是非常简单的,主要网络和端口没问题,基本上都能安装成功的,剩下的就是 docker 的一些使用技巧了,不在本文讨论的范围之内就不细说了。下面这几个都是阿粉常用的wordpress 的网站,感兴趣的小伙伴可以去看看,有条件的也可以尝试自己去搭建一个,搭建过程中如果遇到问题,可以通过文末的形式进读者群,我们一起探讨。原创 2022-10-05 13:45:06 · 222 阅读 · 0 评论 -
面试20K的职位必须要熟悉的Java线程池面试题
然后那个线程处理完一个任务之后,就会用阻塞的方式尝试从任务队列里获取任务,如果队列是空的,他就会阻塞卡在那儿不动,直到有人放一个任务到队列里,他才会获取到一个任务然后继续执行,循环往复,如下图。此时线程池里的线程都阻塞式在workQueue上等待获取任务,有一个任务进来就会唤醒一个线程来处理这个任务,处理完了任务再次阻塞在workQueue上尝试获取下一个任务,如下图所示这个意思。因为在面互联网大厂的时候,一定会问并发,问并发的时候一定会问到线程池,问到线程池一定会问构造线程池的一些参数的含义。原创 2022-10-05 13:41:40 · 144 阅读 · 0 评论 -
Java中自定义扩展Swagger的能力,自动通过枚举类生成参数取值含义描述的实现策略
因为@ApiParam中指定的内容会被显示到Swagger界面上,那么在Swagger的框架中,一定有个地方会尝试去获取此注解中指定的相关字段值,然后将注解的内容转为界面上的文档内容。所以想要定制,首先必须要了解当前是如何处理的。先来看下面给定的这个枚举类,其中包含order、value、desc三个属性值,而value字段是我们的接口字段需要传入的真实取值,desc是其对应的含义描述,那么该如何让我们自定义Swagger扩展类知晓应该使用value和desc字段来生成文档描述内容呢?原创 2022-10-05 13:38:10 · 1231 阅读 · 0 评论 -
浅谈自旋锁和 JVM 对锁的优化
一个对象在被初始化后,如果还没有任何线程来获取它的锁时,它就是可偏向的,当有第一个线程来访问它尝试获取锁的时候,它就记录下来这个线程,如果后面尝试获取锁的线程正是这个偏向锁的拥有者,就可以直接获取锁,开销很小。虽然避免了线程切换的开销,但是在避免线程切换开销的同时带来新的开销:不停尝试获取锁,如果这个锁一直不能被释放那么这种尝试知识无用的尝试,浪费处理器资源,就是说一开始自旋锁开销低于线程切换,但是随着时间增加,这种开销后期甚至超过线程切换的开销,得不偿失。重量级锁则会把获取不到锁的线程阻塞,性能最差。原创 2022-10-05 13:15:14 · 165 阅读 · 0 评论 -
操作系统TCP/IP协议都不会?来人,给我叉出去
其实我那时候也是半吊子水平,至于为什么能进京东这样的大厂,完全是在家猛复习的成果。并且现在各大厂面试的时候都会问很多关于操作系统的面试题,记得我当时面试京东的时候就差点自闭,面试官夺命连环问我操作系统,回答完这一题还有下一题。原创 2022-09-29 11:43:24 · 186 阅读 · 0 评论 -
Spring Boot加一个注解,轻松实现 Redis 分布式锁
对于耗时业务和核心数据,不能让重复的请求同时操作数据,避免数据的不正确,所以要使用分布式锁来对它们进行保护。新建注解 @interface,在注解里设定入参标志增加 AOP 切点,扫描特定注解建立 @Aspect 切面任务,注册 bean 和拦截特定方法特定方法参数 ProceedingJoinPoint,对方法 pjp.proceed() 前后进行拦截切点前进行加锁,任务执行后进行删除 key。原创 2022-09-28 20:01:54 · 187 阅读 · 0 评论 -
ThreadLocal 你真的用不上吗?
ThreadLocal算是一种并发容器吧,因为他的内部是有ThreadLocalMap组成,ThreadLocal是为了解决多线程情况下变量不能被共享的问题,也就是多线程共享变量的问题。原创 2022-09-28 19:58:44 · 131 阅读 · 0 评论 -
别用XShell了,这款SSH工具绝对惊艳,还支持网页版...
后端程序员,ssh工具几乎是每天都会用到的工具,之前给大家推荐过多款好用的ssh工具;其中有一款工具叫Tabby,因为其支持网页版的,使得年初春节期间,和他还发生了一段小小的故事。程序员平常虽说放假,但也都是24小时随时待命,电脑常年不离身,过年放假也一样,走亲访友,都带在身边,一旦有任何风吹草动,以便随时顶上;在一天走亲戚的时候,突然要紧急处理点事情;而今年过年,天气异常的冷,好巧不巧的是,带在身边电脑SSD不工作了(当时以为坏了),导致开不了机!原创 2022-09-28 19:46:46 · 246 阅读 · 0 评论 -
Java服务异常排查定位大图
引言研发工程师日常的工作除了开发实现新需求之外,排查定位问题也是重要的组成部分。如果在发生线上故障的时能够快速定位线上bug并且修复bug,不仅是研发工程师技术能力的重要体现,同时也可以帮助线上及时止血避免平台故障进一步蔓延,从而导致影响用户体验或者产生不可挽回的资损。但是实际上很多研发工程师由于工作经验还不充足,导致经常在遇到问题的时候不知所措,不知道该如何分析排查定位问题。原创 2022-09-28 19:45:25 · 251 阅读 · 0 评论 -
Java多线程系列--掌握Future,轻松获取异步任务结果
在后续的系列文章中,我们将展开AQS、HAPPENS-BEFORE等内容,以及和本文高度关联的CompleteFutureTask,JUC工具等。在前文中我们谈到,通过编码实现Runnable接口,将获得具有边界性的 "任务",在指定的线程(或者线程池)中运行。在并行开发过程中,为确保数据的一致性和正确性,有必要对对象进行同步,而同步操作会对程序系统的性能产生相当的损耗。业务方在使用时,已经明确了任务被分离到其他线程执行时有等待期,在此期间,可以干点别的事情,不必浪费系统资源。原创 2022-09-26 20:30:41 · 2289 阅读 · 0 评论 -
Java保证线程安全的方式有哪些?
当然,保证对象线程安全的方式还有很多,比如还可以使用ThreadLocal实现多个线程之间的数据隔离,使用final关键字等等,我这里就不一一列举了。(2)另外,Java还提供了各种锁机制,来保证锁内的代码块在同一时刻只能被一个线程执行。这样,就可以保证一个线程对资源进行读、写操作时,其他线程不可以对这个资源进行操作,从而保证了线程安全。有时候,动态编译器为了程序的整体性能会对指令进行重排序,但是,这又会导致源代码中指定的内存访问顺序和实际的执行顺序不一致,就会出现线程不安全的问题。第1个,针对原子性。原创 2022-09-26 20:29:35 · 2417 阅读 · 0 评论 -
spring cloud gateway演示及源码
本文在说明spring cloud gateway如何起作用的后面附有源码。原创 2022-09-26 20:28:48 · 704 阅读 · 0 评论 -
Java List 核心应用通关指南
本篇文章把Java List 的各种操作和实战应用给大家梳理了一下,List 是开发中使用非常高频的结果,操作又多,所以即使完全记不住也没事,多回来参考。集合框架中还有两类数据结构 Set 和 Map 接下来会分两种介绍。其实这些结构和 Stream 操作,Stream 和 Lambda 结合紧密经常一起使用,不过不要着急,后面会一一给大家梳理串联起来。原创 2022-09-26 20:25:42 · 551 阅读 · 0 评论 -
大裁员席卷阿里,P9 大咖连夜赠书,奋战 2 个月成功斩获 offer
是的,我也就是被选上的幸运儿之一,不过出于领导对我的怜惜和不舍,根据我多年的工作情况送给我一本自藏书籍,希望我通过这段空档时间,多多提升自我解决实际架构问题的能力,功夫不负有心人我利用此书成功拿下了腾讯的 offer!这本书是一本像字典一样的参考书,快速的列举了架构设计过程中可以使用的方法和工具,并贴心的提供了许多小例子,让我印象很深的是架构拟人化的例子,以及架构隐喻的例子。通过相关知识的学习,读者能够掌握设计稳定、易维护、易扩展的软件架构的方法,也能够提升日常维护已有项目的能力。原创 2022-09-25 11:45:57 · 742 阅读 · 0 评论 -
IDEA远程部署项目到Docker
最近在写东西部署到服务器,结构是springboot工程配合docker部署。本地构建jar复制jar到远程服务器用DockerFile构建镜像部署次数一多,我就怀疑人生了。就在找有没有IDEA远程部署Docker的方案,于是就有本篇博客。环境:本地IP:192.168.1.5Docker远程主机:192.168.1.199本文介绍了两种远程部署Docker的方法,一种需要用到IDEA,一种只需要用到Maven。原创 2022-09-25 11:42:15 · 643 阅读 · 0 评论 -
MyBatis批量插入几千条数据慎用foreach
近日,项目中有一个耗时较长的 Job 存在 CPU 占用过高的问题,经排查发现,主要时间消耗在往 MyBatis 中批量插入数据。mapper configuration是用 foreach 循环做的,差不多是这样。(由于项目保密,以下代码均为自己手写的demo代码)原创 2022-09-23 10:03:33 · 186 阅读 · 0 评论 -
JavaWeb核心之ServletConfig
它是Servlet的配置参数对象,在Servlet规范中,允许为每个Servlet都提供一些初始化配置。所以,每个Servlet都一个自己的ServletConfig。它的作用是在Servlet初始化期间,把一些配置信息传递给Servlet。原创 2022-09-23 10:02:07 · 150 阅读 · 0 评论