自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(144)
  • 收藏
  • 关注

原创 阿里直呼真省钱,全网首发IntelliJ IDEA应用实战手册竟遭哄抢

很多读者会对Spring与Spring Boot的概念产生混淆,可以这样理解,Spring Boot是一个基于Spring并封装了多种功能而且拿来即用的工具集,包括目前多数公司都在使用的Spring微服务,这些都是封装在Spring Boot中的一个又一个插件。IntelliJ IDEA提供了很多有用的工具以期为用户带来便利,掌握这些工具的使用不仅可以提高我们的应用技巧,还可以以更加灵活的方式来处理问题题并加深对IntelliJ IDEA的了解与使用。IDEA所提倡的是智能编码,是减少程序员的工作!....

2022-08-13 11:35:27 353 1

原创 Java多线程中——部分场景使用实现

解:首先我们要知道不安全的可能是因为多线程调用时,可能会有多个实例来getInstance(),那么我们就给他加锁,然后解决性能问题:外层判断使创建的实例只能有一个因为给他上锁了,但是内存可见性怎么保证呢,万一读缓存呢?解:因为阻塞队列中的任务都有各自的执行时刻 (delay). 最先执行的任务一定是 delay 最小的. 使用带优先级的队列就可以高效地把这个 delay 最小的任务找出来。但是,众所周知,加锁 、 解锁是一件开销比较高的事情.,否则StringBuffer。...

2022-08-13 11:28:08 452

原创 HUAWEI内网最新发布了一份452页网络协议手册,GitHb百万收藏

相信大家都听过通天塔的故事,上帝为了阻止人类联合起来,让人类说不同的语言,人类没法沟通,达不成“协议”,通天塔的计划就失败了。但是千年以后,有一种叫“程序猿”的物种,“敲”着一种这个群体通用的语言,打造着互联网世界的“通天塔”。网络协议作为当下久经不衰的话题,如果你经常看一些CSDN,GitHub,开源中国等较大的程序员网站就可以发现相关于网络协议的博文非常之多!人们形象地把这三个要素描述为语义表示要做什么,语法表示要怎么做,时序表示做的顺序。添加图片注释,不超过140字(可选)...

2022-07-30 14:49:42 642

原创 京东发布这份SpringBoot实战手册带你从0手动搭建企业级商城项目

现在,企业对Java开发工程师的要求更高,需要有一些实际开发的项目经验,并且多半是SSM(Spring+SpringMVC+MyBatis)或者SpringBoot相关的项目经验。无论应届毕业生还是有经验的Java开发人员,SpringBoot技术栈及相关项目经验都已经成为他们简历中的必要元素。添加图片注释,不超过140字(可选)添加图片注释,不超过140字(可选)添加图片注释,不超过140字(可选)添加图片注释,不超过140字(可选)添加图片注释,不超过140字(可选)...

2022-07-30 14:47:55 261

原创 只分享这一次。阿里软件架构师深入底层手写JDK源码

一个程序员,只要工作好,就离不开bug,jdk的源码大部分都是专家写的,代码严谨性非常强,我们看了代码,改变自己平时错误的编码习惯,包括最基本的判空啊。这是为了在“读”的时候不加锁。我们知道,阅读别人的代码是非常痛苦的事,尤其是一些比较差的的代码,可读性非常差,当然jdk源码也比较头痛。通过和大厂的面试官聊了一下发现,现在大厂特别爱考底层的一些原理,因为一些底层是不涉及到语言的,语言对于开发工程师来说是是吃饭的工具,但对于架构师的层面的人来说就工具而已,这也是大厂培养人的一个方向。...

2022-07-30 14:43:31 306

原创 我给大家免费公开五份阿里Java架构师学习手册助力金九银十

阿里巴巴数据结构与算法一、树二、BST树三、BST树四、AVL树五、红黑树六、B-树七、B+树八、字典树九、跳表十、HashMap十一、ConcurrentHashMap十二、ConcurrentLinkedQueue十三、Topk问题十四、资源池思想十五、JVM内存管理算法十六、容器虚拟化技术,Doocker思想十七、持续集成、持续发布,jenkins。添加图片注释,不超过140字(可选)添加图片注释,不超过140字(可选)​阿里巴巴Java性能调优实战。...

2022-07-30 14:41:44 286

原创 MySQL中的日志“binlog”的三种格式这么好玩

MySQL中的日志比较重要的有binlog(归档日志)、redolog(重做日志)以及undolog,那么跟我们本文相关的主要是binlog,另外两个日志松哥将来有空了再和大家详细介绍。

2022-07-21 13:42:04 455

原创 接招吧。最强“高并发”系统设计 46 连问,分分钟秒杀一众面试者

所以当你面试时,面试官会要求你有高并发设计经验,且有的面试官会询问你的系统在遭遇百万并发时可能有哪些瓶颈点,以及有什么优化思路等问题...为的就是检验你是否真的了解这方面的内容...为助你迅速掌握“高并发”系统设计的相关知识内容等,这46连问(含解析)你必须铭记于心,包含基础篇-数据库篇-缓存篇-消息队列篇-分布式服务篇-维护篇-实战篇。在实际的项目中,你可能已经将系统拆分成独立的服务部署了,那么在一开始,你在开发和运维的过程中是遇到了哪些问题促使你走上了微服务化的道路呢?...

2022-07-21 13:35:36 181

原创 继SpringCloudAlibaba后又一神作,阿里微服务架构深度笔记太无敌

、java学习路线:骆驼祥子思维导图 - GitMind最近收到一个粉丝投来的消息,阿里三面凉凉!输在了:微服务,Redis,JVM。本人自己说在看到阿里的面试真题之后人都是懵的,发现自己一窍不通。今天先结合我这个粉丝的经历和面的题,分析一下微服务,以及我在这方面的学习经验也给大家分享一下。阿里微服务面试真题Q1:单片,SOA 和微服务架构有什么区别?Q2:SOA 和微服务架构之间的主要区别是什么?Q3:什么是领域驱动设计?Q4:为什么需要域驱动设计(DDD)?Q5:什么是 REST / RESTful 以

2022-07-07 17:11:53 310

原创 Redis核心原理与实践--事务实践与源码分析

Redis支持事务机制,但Redis的事务机制与传统关系型数据库的事务机制并不相同。 Redis事务的本质是一组命令的集合(命令队列)。事务可以一次执行多个命令,并提供以下保证: (1)事务中的所有命令都按顺序执行。事务命令执行过程中,其他客户端提交的命令请求需要等待当前事务所有命令执行完成后再处理,不会插入当前事务命令队列中。 (2)事务中的命令要么都执行,要么都不执行,即使事务中有些命令执行失败,后续命令依然被执行。因此Redis事务也是原子的。 注意Redis不支持回滚,如果事务中有命令执行失败了,那

2022-07-07 17:08:55 201

原创 字符串可以这样加索引,你知吗?

相信大多数小伙伴跟咔咔一样,给字符串添加索引从未设置过长度,今天就来聊聊如何正确的给字符串加索引。一、如何建立索引大多数系统都会存在用户表,并且系统初始设计使用了手机号码登录的。这是产品提出了一个需求,让系统也可以支持邮箱登录。添加图片注释,不超过 140 字(可选)肯定知道的是若不给邮箱字段添加索引执行查询是会全表扫描。此时你心里窃喜这还不简单,给邮箱字段加个索引完事呗!但要做到复杂的需求做好,简单的需求要最好,减轻一切对系统的压力。此时的你拿起键盘就执行了alter table table_name a

2022-07-07 17:04:52 431

原创 Spring中还有一招集合注入的写法

哈喽大家好啊,我是Hydra。Spring作为项目中不可缺少的底层框架,提供的最基础的功能就是bean的管理了。bean的注入相信大家都比较熟悉了,但是有几种不太常用到的集合注入方式,可能有的同学会不太了解,今天我们就通过实例看看它的使用。首先,声明一个接口:public interface UserDao { String getName();}然后定义两个类来分别实现这个接口,并通过@Component注解把bean放入spring容器中:@Componentpublic class

2022-07-05 17:34:18 283

原创 8位卷王,总结1135页Java核心面试手册,硬钢BATJ一线大厂面试官

又到了金九银十求职季!HR开始拼业绩,招聘网站也开始释放出大量岗位,转行跳槽、毕业求职的人都开始行动起来!此时,对于大多数程序员来说,最大的目标就是:进大厂!大厂为什么这么吸引程序员?在招聘网站搜索大厂JAVA开发岗,本科毕业薪资达到30K,甚至更高!是中小企业的2-3倍!高额的薪水、丰厚的福利。简历大厂背书简直是超级buff加成。还有相对公平的竞争机制、优秀的人脉圈子、以及平台附加的资源配置等,都是绝大多数小企业难以达到的!所以,很多程序员的终极目标,都是进互联网大厂!就Java开发这个职业来说,准备毕业

2022-07-05 17:31:47 92

原创 Flink-使用流批一体API统计单词数量

DataStream API 支持不同的运行时执行模式,你可以根据你的用例需要和作业特点进行选择。DataStream API 有一种”经典“的执行行为,我们称之为流(STREAMING)执行模式。这种模式适用于需要连续增量处理,而且预计无限期保持在线的无边界作业。此外,还有一种批式执行模式,我们称之为批(BATCH)执行模式。这种执行作业的方式更容易让人联想到批处理框架,比如 MapReduce。这种执行模式适用于有一个已知的固定输入,而且不会连续运行的有边界作业。Apache Flink 对流处理和批处

2022-06-29 19:28:34 396

原创 全网最牛批的java八股面试文(针对秋招)堪称2022最强

前言2022秋招即将来临,很多同学会问Java面试八股文有必要背吗?我的回答是:很有必要。你可以讨厌这种模式,但你一定要去背,因为不背你就进不了大厂。国内的互联网面试,恐怕是现存的、最接近科举考试的制度。而且,我国的八股文确实是独树一帜。以美国为例,北美工程师面试比较重视算法(Coding),近几年也会加入Design轮(系统设计和面向对象设计OOD)和BQ轮(Behavioral question,行为面试问题)。那么为什么国内面试不采取这样的考察方式呢?简单来说,互联网IT行业的求职者太多了,如果考察

2022-06-28 15:02:36 693 2

原创 java性能优化——编译器优化进阶(编译线程、内联、逃逸分析)

当达到编译阈值时,方法或循环就是进入编译队列,在后台异步地获取队列的代码进行编译。编译队列不是严格的先进先出,执行次数越多的代码具有更高的优先级。这也是在上一章节,我们通过标志PrintCompilation查看被编译方法时,compilationg_id不完全按顺序递增的原因。使用不同的编译器,在不同平台下会有不同的线程数,与平台的cpu数有关。通常来说,使用client编译器,则会开启一个线程;使用server编译器,则会开启两个线程。当开启分层编译时,将会开启多个线程,在不同的平台的CPU数量下,线程

2022-06-21 15:03:26 464

原创 java& JSR303之自定义校验注解

JSR是Java Specification Requests的缩写,意思是Java 规范提案。是指向JCP(Java Community Process)提出新增 一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java 界定的一个重要标准。提供的注解都在 importjavax.validation.constraints这个包下面的注解 @NotNull 校验 page 和 limit 属性 这里手动制定了message 如果不手动指定的话会去

2022-06-13 19:50:23 397

原创 分布式服务架构精讲pdf文档:原理+设计+实战,(收藏再看)

java学习 成长思维导图:骆驼祥子思维导图 - GitMind如果你期待对分布式系统有一个更全面的认识,想要了解各个技术在分布式系统中如何应用、分别解决哪些问题、有怎样优秀的实现,推荐阅读、收藏本篇。分布式、微服务几乎是现在的技术人员必须要了解的架构方向,从理论上来讲确实解稿了很多结构,但另 方面,又会带来更多衍生的复杂度及难点 如何保证事物的最终 致性?如何进行性能及容量预估?如何处理分布式系统的日志?如何进行线上应急?如果你 曾有和我样的困惑,那么相信你一样能从本PDF文档中得到非常宝贵的解答。面对越

2022-06-13 19:49:12 268

原创 Servlet全解:继承关系、生命周期、容器和请求转发与重定向等

1、Servlet名字Server:服务器 applet:小程序 Servlet:服务器端的小程序2、Servlet在Web应用中的作用①生活中的例子②对应Web应用③具体细节④Servlet扮演角色 在整个Web应用中,Servlet主要负责处理请求、协调调度功能。我们可以把Servlet称为Web应用中的『控制器』1、HelloWorld分析①目标 在页面上点击超链接,由Servlet处理这个请求,并返回一个响应字符串:Hello,I am Servlet! 。②思路2、具体操作①创建动态Web Mod

2022-06-13 19:47:18 140

原创 京东高级工程师开发十年,编写出:“亿级流量网站架构核心技术”

前言: java学习 成长思维导图:骆驼祥子思维导图 - GitMind相信大家都知道,说起亿万流量网站高性框架的设计方案,就能想到关键的两点,那就是高可用和高并发。而要谈对高并发和高可用有多熟悉,京东的大佬们还是有一定发言权,而作为京东高级工程师更是大佬级别。而今天分享的正是京东十年开发经验工程师编写的:“亿级流量网站架构核心技术”。笔记作者:京东高级工程师:大飞笔记特点:条理清晰,含图像化,内容创新深奥却易懂。笔记大致分为四部分∶概述、高可用原则、高并发原则、案例实战。从负载均衡、限流、降级、隔

2022-06-13 19:46:30 192

原创 「面试高频题」难度大 1.5/5,经典「前缀和 + 二分」运用题

题目描述这是 LeetCode 上的 209. 长度最小的子数组 ,难度为 中等。Tag : 「前缀和」、「二分」给定一个含有 n 个正整数的数组和一个正整数 target。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl,numsl+1,...,numsr−1,numsr][nums_l, nums_{l+1}, ..., nums_{r-1}, nums_r][numsl,numsl+1​,...,numsr−1​,numsr​] ,并返回其长度。如果不存在符合条件的子数组

2022-06-13 19:44:02 141

原创 逛了五年GitHub,终于整理出七大java开源技术项目文档,赶紧收藏

java学习 成长思维导图:骆驼祥子思维导图 - GitMind大家都知道 Github 是一个程序员福地,这里有各种厉害的开源框架、软件或者教程。这些东西对于我们学习和进步有着莫大的进步,所以将 Github 上非常棒的七大Java开源项目技术文档整理下来供大家学习!!!本文共分为16章,各章主要内容如下。第1章介绍了什么是微服务、为什么需要微服务、微服务的优缺点和挑战,并且将单体架构的系统和微服务架构的系统进行了比较。第2章主要介绍微服务应该具备的功能,以及SpringCloud的基本组件,最后介绍了S

2022-06-13 19:43:20 283

原创 Redis zadd导致的一次线上问题排查和处理

最近有用户反馈,主播收了1881数值礼物,头像下数字显示881, 正常来说,应该显示1881的数值。经过排查,是因为redis zadd在并发情况下导致数据不一致的问题。经过对送礼日志的排查,发现mongodb数据更新正常,但是redis数据异常,查看业务代码后发现了问题。业务代码如下:这里的逻辑是先更新 mongodb, 然后对redis数值进行zadd覆盖. 一般情况下没啥问题, 但如果稍微遇到高并发:使用Lua脚本修改redis值,并发情况下不处理覆盖逻辑, 避免旧值覆盖新值,利用mongodb自增保

2022-06-13 19:32:28 823

原创 「Redis源码系列」关于源码阅读的学习与思考

通过之前的源码阅读与分析, 我们通过服务的启动, 数据流的接受与处理, 整体DB结构, 详细的存储数据结构等方面的学习对于Redis6.0有了一个较为系统的认知。尤其是其中的一些优秀的设计我们在学习完成后也要深入的加以分析和思考, 是否可以将这些经验借鉴到我们实际的工作中呢?这次就和大家一起讨论一下我学习完成后的收获。在Redis6.0之前的版本服务器采用单进程单线程的处理方式, 优点就是避免了并发的锁开销, 缺点是不能充分利用CPU的多核处理。在现在业务场景中, CPU通常不会成为负载的主要瓶颈, 更多在

2022-06-09 16:56:36 346

原创 原来我们每天都在使用 SPI 服务提供者设计模式

接口是对行为的抽象,是接口的实现者和调用者之间建立的约定(协议-protocol)。我们可以根据需要为接口提供不同的实现。通过将不同的接口实现注入到调用方,就可以实现在不修改调用方代码的情况下改变调用方的行为。SPI(Service Provider Interface)就是服务提供者接口模式。框架或者系统可以 SPI 模式支持,让使用费可以根据需要为某个行为选择不同的提供方实现版本,从而实现灵活的可定制扩展。比如Java SDK JDBC 定义了数据库操作的标准接口,但是 Java SDK 并没有提供具体

2022-06-09 16:54:17 313

转载 我服了,MySQL表500W行,居然有人不做分区?

表分区,是指根据一定规则,将数据库中的一张表分解成多个更小的,容易管理的部分,本文做了详细的说明————————————————表分区的主要缺点表分区的主要优点 2.3 HASH分区create table user7(id int) partition by hash(id) partitions 3; 3.常见分区管理命令 4.表分区实战 4.1 分区管理数据存储文件将根据分区被拆分成多份普通表转分区表语句:ALTER TABLE st

2022-06-09 16:51:16 914

原创 以字节跳动内部 Data Catalog 架构升级为例聊业务系统的性能优化

字节跳动 Data Catalog 产品早期,是基于 LinkedIn Wherehows 进行二次改造,产品早期只支持 Hive 一种数据源。后续为了支持业务发展,做了很多修修补补的工作,系统的可维护性和扩展性变得不可忍受。比如为了支持数据血缘能力,引入了字节内部的图数据库 veGraph,写入时,需要业务层处理 MySQL、ElasticSearch 和 veGraph 三种存储,模型也需要同时理解关系型和图两种。更多的背景可以参照之前的文章。新版本保留了原有版本全量的产品能力,将存储层替换成了 Apa

2022-06-09 16:47:41 140

原创 一问Kafka就心慌?我却凭着这份《Kafka源码实战》碾压面试官

Kafka是一个高度可扩展的消息系统,它在LinkedIn的中央数据库管理中扮演着十分重要的角色,因其可水平扩展和高吞吐率而被广泛使用,现在已经被多家不同类型的公司作为多种类型的数据管道和消息系统。我觉得最高效的方式就是去读最核心的源码,先看一张 Kafka结构图 以及 Kafka 源码全景图梳理一下关于 Kafka 框架,找到学习的重点。前5章分别是:Kafka简介、Kafka的架构、Broker概述、Broker的基本模块、Broker的控制管理模块后5章分别是 Topic的管理工具、生产者、消费者、K

2022-06-09 16:47:02 86

原创 十年开发经验的程序员告诉你,你还缺少哪些核心竞争力?

源码分析是一种临界知识,掌握了这种临界知识,能不变应万变,源码分析对于很多人来说很枯燥,生涩难懂。源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心。我认为是阅读源码的最核心驱动力。我见到绝大多数程序员,对学习的态度,基本上就是这几个层次(很偏激哦):只关注项目本身,不懂就baidu一下。除了做好项目,还会阅读和项目有关的技术书籍,看wikipedia。除了阅读和项目相关的书外,还会阅读IT行业的书,比如学Java时,还会去了解函数语言,如LISP。找一些开源项目看看,大量试用第三方框架,还会写写d

2022-06-09 16:45:19 157

原创 Spring中的Controller和Service是线程安全的吗?我有点懵

结论:不是线程安全的Spring容器中的Bean是否线程安全,容器本身并没有提供Bean的线程安全策略,因此可以说Spring容器中的Bean本身不具备线程安全的特性,但是具体还是要结合具体scope的Bean去研究。Spring 的 bean 作用域(scope)类型线程安全这个问题,要从单例与原型Bean分别进行说明。原型Bean对于原型Bean,每次创建一个新对象,也就是线程之间并不存在Bean共享,自然是不会有线程安全的问题。单例Bean对于单例Bean,所有线程都共享一个单例实例Bean,因此是存

2022-06-08 19:15:38 1159

原创 京东面试官问:LEFT JOIN关联表中用ON还是WHERE跟条件有什么区别

之前有码友去京东面试,被问到 LEFT JOIN 关联表中用 ON 还是 WHERE 跟条件有什么区别,很快就答出来了,可是追问什么原因造成这一情况的,一时没回答上来。下面说说,想通过 A left B join on and 后面的条件来使查出的两条记录变成一条,奈何发现还是有两条。后来发现 join on and 不会过滤结果记录条数,只会根据and后的条件是否显示 B表的记录,A表的记录一定会显示。不管and 后面的是A.id=1还是B.id=1,都显示出A表中所有的记录,并关联显示B中对应A表中id

2022-06-08 19:13:56 218

原创 Cloudreve自建云盘实践,我说了没人能限制得了我的容量和速度

为啥要用自建网盘,市面上的云盘不香了?每一个用户需求的背后都是因为有场景存在,而这些差异化的场景也都是因为不同的用户类型产生的。就像我作为技术号主想分享一些自己总结的资料,放到一些云盘以后有时候会被其他不知道从哪冒出来的小伙伴给举报,举报链接就取消了,取消了链接也就影响了我的资料分享。同时我可能还希望我的分享内容能被记录到下载次数、允许几次下载、下载时是否要做一些引流动作等等。所以类似这样的特殊场景下就需要自建网盘来维护个人需要的资料,与之类似的还有一些公司或者组织都会建相对私域的网盘功能服务功能,给予内部

2022-06-08 19:11:24 1309

原创 聊聊消息队列高性能的秘密——零拷贝技术

RocketMQ为什么这么快、Kafka为什么这么快?用了零拷贝技术?什么是零拷贝技术,它们二者的零拷贝技术有不同吗?在计算机产业中,I/O的速度相较CPU,总是太慢的。SSD硬盘的IOPS可以达到2W、4W,但是我们CPU的主频有2GHz以上,也就意味着每秒会有20亿次的操作。如果对于I/O操作,都是由CPU发出对应的指令,然后等待I/O设备完成操作之后返回,那CPU有大量的时间其实都是在等待I/O设备完成操作。但是,这个 CPU 的等待,在很多时候,其实并没有太多的实际意义。我们对于 I/O 设备的大量

2022-06-08 19:08:03 231

原创 程序员到国企太养生,担心以后太颓废了,网友:这就是正常上班啊

很多程序员在国企和私企之间选择的时候,多数人会选择国企,但也有网友认为,国企虽然不加班但不代表工作轻松,很多时候,精神透支比身体透支更容易疲惫。近日逛脉脉的时候,看到有网友发帖:“到国企后,太养生,唯一担心的一点就是以后会不会太颓废了。”引起网友热议。楼主表示,国企的硬伤:工资低,才7K,怪自己自控力不足。有不少网友表示和楼主有相同的感觉。@产品汪:到事业单位,每天9点上班,中午十一点到一点午休两小时。下午四点四十下班。也很担心废掉了,同样工资低。@一字剑戚少商:确实,同国企,每周出去带薪面试@猿辅导员工:

2022-06-08 19:05:58 152

原创 一文带你深入理解JVM - ZGC垃圾收集器

ZGC(Z Garbage Collector)是一款由Oracle公司研发的,以低延迟为首要目标的一款垃圾收集器。它是基于动态Region内存布局,(暂时)不设年龄分代,使用了读屏障、染色指针和内存多重映射等技术来实现可并发的标记-整理算法的收集器。在JDK 11新加入,还在实验阶段,主要特点是:回收TB级内存(最大4T),停顿时间不超过10ms。ZGC的Region可以具有如图所示的大、中、小三类容量:HotSpot虚拟机的标记实现方案有如下几种:染色指针是一种直接将少量额外的信息存储在指针上的技术。目

2022-06-07 17:03:05 174

原创 美团面试真题:jvm堆内存溢出后,其他线程是否可继续工作?

最近网上出现一个美团面试题:“一个线程OOM后,其他线程还能运行吗?”我看网上出现了很多不靠谱的答案。这道题其实很有难度,涉及的知识点有jvm内存分配、作用域、gc等,不是简单的是与否的问题。由于题目中给出的OOM,java中OOM又分很多类型;比如:堆溢出(“java.lang.OutOfMemoryError: Java heap space”)、永久带溢出(“java.lang.OutOfMemoryError:Permgen space”)、不能创建线程(“java.lang.OutOfMemor

2022-06-07 16:59:43 200

原创 Java背后的故事与初心

别人都说我们是搬砖的码农,但我们知道自己是追求个性的艺术家。也许我们不会过多在意自己的外表和穿着,但在我们不羁的外表下,骨子里追求着代码的美、系统的美,代码规范其实就是一个对程序美的定义。但是这种美离程序员的生活有些遥远,尽管编码规范的价值在业内有着广泛的共识,在现实中却被否定得一塌糊涂。工程师曾经最引以为豪的代码,因为编码规范的缺失、命名的草率而全面地摧毁了彼此的信任,并严重地制约了相互的高效协同。工程师一边吐槽别人的代码,一边写着被吐槽的代码,频繁的系统重构和心惊胆战的维护似乎成了工作的主旋律。那么如何

2022-06-07 16:56:14 105

原创 你还在统一返回ApiResult吗?duck不必,来看API错误处理最佳实践

相信不少 Java 开发都在项目中使用过类似 ApiResult 这样的对象来包装 Api 返回类型,这相比什么都不包装有一定的好处,但这真的就是最好的做法吗?关于封装 ResultBean 对象,晓风轻在他的 程序员你为什么这么累 系列文章中有过不错的分享,但统一封装 ResultBean 实际上也是一种重复工作,秉承 DRY 的理念,还有必要对其继续优化。统一返回 ApiResult 还不是最佳实践,必须不断思考优化,就像 React 所提倡的 Rethinking Best Practices 。我们

2022-06-07 16:52:31 378

原创 Linux面试最高频的5个基本问题

提到CPU利用率,就必须理解时间片。什么是CPU时间片?我们现在所使用的Windows、Linux、Mac OS都是“多任务操作系统”,就是说他们可以“同时”运行多个程序,比如一边打开Chrome浏览器浏览网页还能一边听音乐。但是,实际上一个CPU内核在同一时刻只能干一件事,那操作系统是如何实现“多任务”的呢?大概的方法是让多个进程轮流使用CPU一小段时间,由于这个“一小段时间”很短(在linux上为5ms-800ms之间),用户感觉不到,就好像是几个程序同时在运行了。上面提到的“一小段时间”就是我们所说的

2022-06-07 16:47:00 120

原创 手把手教你利用Spring Boot实现各种参数校验

Java API规范 (JSR303) 定义了Bean校验的标准validation-api,但没有提供实现。hibernate validation是对这个规范的实现,并增加了校验注解如@Email、@Length等。Spring Validation是对hibernate validation的二次封装,用于支持spring mvc参数自动校验。接下来,我们以spring-boot项目为例,介绍Spring Validation的使用。如果spring-boot版本小于2.3.x,spring-boot

2022-06-06 19:51:31 941

空空如也

空空如也

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

TA关注的人

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