自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大白的成长之路

真正的大师,永远的怀着一颗学徒的心

  • 博客(212)
  • 资源 (1)
  • 收藏
  • 关注

原创 spring boot 线上故障 上传文件出错:org.springframework.web.multipart.MultipartException: Failed to parse multip

spring boot 线上故障 上传文件出错:异常org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.4969464838095977377.9999/work/Tomcat/localhost/RO

2021-11-11 18:27:30 4269 2

原创 解决IDEA Warning: Class ‘XXX‘ not found in module ‘XXX‘

Spring Boot启动类有一个红叉打开之前的Spring Boot项目,启动类上有一个红叉,但项目能正常启动解决方式:将 import org.springframework.boot.autoconfigure.SpringBootApplication 删掉,然后重新导入 @SpringBootApplication 注解的包即可...

2021-11-08 22:36:25 14107 15

原创 Java面经之多线程(本人亲身经历)

本人的春招就告一段落了,也找到了理想的工作,特分享一下自己整理的资料来做成的一个面经(都是本人亲自经历过的面试题),用于自己以后的学习和进步,由于都是网上搜集而来如有错误,望各位指正。并且会实时更新。。。 PS:如果想知道每个公司问我的什么可以私聊我。1、进程和线程的区别进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位。一个进程都有若干个线程,至少包含一个线程。资源开销上进程有独立的代码和数据空间(程序上下文),进程的切换有较大的开销,线程有共享的代码和数据空间,线程之间切换开

2021-07-18 17:48:39 1115 7

原创 Java基础面经(本人亲身经历)

目录1、final关键字2、传参方式3、抽象类和接口的区别4、This与super5、Try..catch..finally中return的执行顺序6、Exception与error7、Int与Integer的区别、自动封箱与自动装箱8、OOP9、String、StringBuffer与StringBuilder的区别以及应用10、重载和重写的区别?11、聚合与组合的关系1、final关键字Final修饰的变量无法被修改,如果修饰引用,表示引用不可变,引用

2021-05-27 21:11:33 3031 4

原创 Java线程中的sleep方法详解

关于线程的sleep方法static void sleep(long mills)1、静态方法:Thread.sleep(1000);2、参数是毫秒3、作用:让当前线程进入休眠,进入“阻塞”状态,放弃占有CPU时间片,让给其他线程使用。public class ThreadTest06 { public static void main(String[] args) { //让当前线程进入休眠,睡眠5秒 //当前线程是主线程!!! try

2021-03-15 14:48:54 25158 1

原创 Java基础总结(学Java这一篇就够了)

java基础总结目录java基础总结一、java基础知识二、数据类型三、控制语句四、方法五、面向对象六、关键字一、java基础知识1、 DOS和Java特性Java——集成开发环境2、java程序的编译和运行、JDK、JRE、JVM的关系、环境变量、HelloWorld程序3、公开类、标识符、关键字二、数据类型4、字面值、变量、数据类型基础、编码方式5、char、转义、整数型、精度损失6、浮点型、布尔型、类型转换、算数运算符、关系运算符、逻辑运算符7、赋值运算符、字符串连接运算符、三目

2021-02-03 22:07:31 4771 12

原创 Java类中的 is-a、is-like-a、has-a

has a从属关系:聚合凡是能够使用 has a 来描述的,统一以属性的方式存在例如 Customer has a FoodMenu(顾客有一个食物菜单)is a继承关系:继承凡是满足is a的表达式都可以设置为继承例如 Cat is a Animal(猫是一种动物)is like a组合关系:接口满足 is like a 的表达式也是一种继承但是在继承中,仅覆盖了父类方法即为Is-a;若在覆盖父类方法基础上有新增方法,则为Is-like-a。例子:1.假设你确定两件对象之

2021-02-03 21:13:10 2084 7

原创 面试官:说说你了解几种限流算法,手写个demo?

限流是对某一时间窗口内的请求数进行限制,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机。在高并发系统中,出于系统保护角度考虑,通常会对流量进行限流。在分布式系统中,高并发场景下,为了防止系统因突然的流量激增而导致的崩溃,同时保证服务的高可用性和稳定性,限流是最常用的手段。以上就是常见的四种限流方法,但是在实践中,接口的限流不指局限于部署的应用,同样的我们也会使用到例如通过nginx来进行一个接入层的限流,和一个分布式的限流,这些限流的思想大致也都是上述的四种方法。

2025-04-07 20:54:27 1073

原创 【Spring】@PostConstruct详解

在 Java 开发中,尤其是在基于 Spring 框架的项目里,我们常常会遇到需要在对象创建并完成依赖注入后,执行一些初始化操作的场景。注解正是为解决此类问题而诞生的,它为我们提供了一种便捷且优雅的方式来处理对象的初始化逻辑。是JSR-250规范定义的注解,用于标记在对象构造完成且依赖注入完成后执行的初始化方法。在Spring框架中的执行顺序为:构造函数 -> @Autowired依赖注入 -> @PostConstruct方法 -> Bean初始化完成。

2025-03-12 22:53:07 1198

原创 【Elasticsearch】一文读懂ES向量搜索:原理剖析与技术全景

向量搜索,简单来说,就是在向量空间中进行的搜索操作。在传统的文本搜索中,我们通常基于关键词进行匹配,这种方式对于精确匹配的场景效果较好,但在处理语义理解、模糊匹配等复杂场景时显得力不从心。而向量搜索则将文本、图像、音频等各种数据转化为向量表示,通过计算向量之间的相似度来进行搜索。这种方式能够更好地捕捉数据的语义信息,从而实现更精准、更智能的搜索。

2025-03-02 22:48:46 1857 1

原创 消失的代码注释——加注释的标准

现在的项目开发里,代码注释就像程序员的头发,越来越少。尤其是国内,这种现象不仅是在小公司小团队中司空见惯,就算在大公司,以及大团队中的开源项目里,也是屡见不鲜。上图是我在阿里的 Druid 项目源码里截的。DruidDataSource 是 Druid 重度使用的核心类,非常关键,可是哪怕这种关键的核心类,也见不到什么注释。这张图则来自阿里的另一个著名开源项目Dubbo。

2025-02-27 22:46:18 950

原创 太顺手了!Java开发中那些非常好用的工具

最近几年,Java 的技术栈发展的非常快,成百上千的技术工具正不断地涌出来,这也造成了一个问题:我们作为开发者,到底应该选哪些工具搭建出最合适的技术栈呢?今天我就推荐一波我常用的、我了解的工具和框架。

2025-02-27 22:27:34 566

原创 【SpringBoot】SpringBoot 接口限流

限流是对某一时间窗口内的请求数进行限制,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机。1. 计数器限流计数器限流算法是最为简单粗暴的解决方案,主要用来限制总并发数,比如数据库连接池大小、线程池大小、接口访问并发数等都是使用计数器算法。如:使用 AomicInteger 来进行统计当前正在并发执行的次数,如果超过域值就直接拒绝请求,提示系统繁忙。2. 漏桶算法漏桶算法思路很简单,我们把水比作是请求,漏桶比作是系统处理能力极限。

2025-02-26 23:08:20 1234

原创 【编程工具】diagram——IDEA看源码的神器!

用上面提到的的 IDEA 这些功能,学习和查看类关系,了解诸如主流框架源码之类的东西,可以说是非常舒服了。ps. 如果你的 IDEA 没有这个功能,可能因为你用的 IDEA 是社区版。

2025-02-26 22:55:33 536

原创 【系统设计】高性能短链设计

今天,我们来谈谈如何设计一个高性能短链系统,短链系统设计看起来很简单,但每个点都能展开很多知识点,也是在面试中非常适合考察侯选人的一道设计题,本文将会结合我们生产上稳定运行两年之久的高性能短链系统给大家简单介绍下设计这套系统所涉及的一些思路,希望对大家能有一些帮助。本文将会从以下几个方面来讲解,每个点包含的信息量都不少,相信大家看完肯定有收获短链有啥好处,用长链不香吗短链跳转的基本原理短链生成的几种方法高性能短链的架构设计。

2025-02-25 22:29:47 959

原创 【Elasticsearch】使用Postman操作es的_bulk批量操作

众所周知,Elasticsearch的语法还是很恶心的。因此需要大量的调试,有些人在kibana上进行调试,但是如果想使用Postman进行调试时,大部分还是没有问题的。就是每个插入以及最后一行都必须有换行! "type": "illegal_argument_exception", "reason": "The bulk request must be terminated by a newline [\\n]"

2025-02-25 14:54:25 641

原创 【MySQL】事务隔离级别,Java开发者必知必会

为了更好地说明事务隔离级别,请先移步你们在开发时是否遇到过这些诡异现象?这些问题的根源都指向今天要深入探讨的——事务隔离级别!数据库中有四种隔离级别,分别是(Serializable),用来解决数据库操作中产生的各种问题。

2025-02-24 23:53:42 1381

原创 金三银四快到了,我总结了面试准备中5个最最最常见的坑

有些朋友在面试准备时,容易忽略回顾和总结自己在项目中的职责和贡献。这一疏忽,可能会让你在和面试官讨论自己的真实项目经历时,沟通不畅、表述不准,进而影响面试的结果。其实,只要提前做好以下几点准备,就能轻松化解。为此,我们又何乐而不为呢?1. 深化自己对项目业务的理解大部分公司极为看重程序员对业务的理解程度。因为在业务驱动的项目里,一个程序员对业务理解的越透彻,技术落地时就越稳定可靠。所以,咱们在面试时一定要给面试官展现出我们对业务的深刻认知。2. 总结项目的技术特点。

2025-02-24 21:53:43 761

原创 52类110个主流Java组件和框架

52类110个主流Java组件和框架,学习以及熟练掌握

2025-02-22 23:02:19 658

原创 【MySQL】快速理解脏读、不可重复读、幻读

脏读指一个事务读取到另一个事务未提交的修改数据,若后者发生回滚,前者读取的数据即为无效的“脏数据”。

2025-02-22 22:10:12 1112

原创 《Redis核心技术与实战》学习笔记6——数据同步:主从库如何实现数据一致?

如果 Redis 发生了宕机,我们可以使用了 AOF 和 RDB分别通过回放日志和重新读入 RDB 文件的方式恢复数据,从而保证尽量少丢失数据,提升可靠性。不过,即使用了这两种方法,也依然存在服务不可用的问题。比如说,我们在实际使用时只运行了一个 Redis 实例,那么,如果这个实例宕机了,它在恢复期间,是无法服务新来的数据存取请求的。那我们总说的 Redis 具有高可靠性,又是什么意思呢?其实,这里有两层含义:一是,二是。AOF 和 RDB 保证了前者,而对于后者,Redis 的做法就是。

2024-08-21 17:04:39 1258

原创 《Redis核心技术与实战》学习笔记5——内存快照RDB:宕机后,Redis如何实现快速恢复?

上篇文章记录了 Redis 避免数据丢失的。这个方法的好处,是每次执行只需要记录操作命令,需要持久化的数据量不大。一般而言,只要你采用的不是 always 的持久化策略,就不会对性能造成太大影响。但是,也正因为记录的是操作命令,而不是实际的数据,所以,用 AOF 方法进行故障恢复的时候,需要逐一把操作日志都执行一遍。如果操作日志非常多,Redis 就会恢复得很缓慢,影响到正常使用。这当然不是理想的结果。那么,还有没有既可以保证可靠性,还能在宕机时实现快速恢复的其他方法呢?内存快照。

2024-08-20 11:54:49 1011

原创 《Redis核心技术与实战》学习笔记4——AOF日志:宕机了,Redis如何避免数据丢失?

如果有人问你:“你会把 Redis 用在什么业务场景下?”我想你大概率会说:“我会把它当作缓存使用,因为它把后端数据库中的数据存储在内存中,然后直接从内存中读取数据,响应速度会非常快。”没错,这确实是 Redis 的一个普遍使用场景,但是,这里也有一个绝对不能忽略的问题:一旦服务器宕机,内存中的数据将全部丢失。我们很容易想到的一个解决方案是,从后端数据库恢复这些数据,但这种方式存在两个问题:一是,需要频繁访问数据库,会给数据库带来巨大的压力;

2024-08-16 11:48:34 890

原创 《Redis核心技术与实战》学习笔记3——高性能IO模型:为什么单线程Redis能那么快?

上一篇博客讲了一下Redis的数据结构。那么今天,我们来探讨一个很多人都很关心的问题:“为什么单线程的 Redis 能那么快?首先,我要和你厘清一个事实,我们通常说,Redis 是单线程,主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的,这也是 Redis 对外提供键值存储服务的主要流程。但 Redis 的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。所以,严格来说,Redis 并不是单线程,但是我们一般把 Redis 称为单线程高性能,这样显得“酷”些。

2024-08-09 18:10:29 847

原创 《Redis核心技术与实战》学习笔记2——数据结构:快速的Redis有哪些慢操作?

Redis 之所以能快速操作键值对,一方面是因为 O(1) 复杂度的哈希表被广泛使用,包括String、Hash 和 Set,它们的操作复杂度基本由哈希表决定,另一方面,Sorted Set 也采用了 O(logN) 复杂度的跳表。这里,你可以看到,一旦掌握了数据结构基本原理,你可以从原理上推断不同操作的复杂度,即使这个操作你不一定熟悉。集合类型的操作类型很多,有读写单个集合元素的,例如 HGET、HSET,也有操作多个元素的,例如 SADD,还有对整个集合进行遍历操作的,例如 SMEMBERS。

2024-08-07 18:15:33 897

原创 《Redis核心技术与实战》学习笔记1——基本架构:一个键值数据库包含什么?

我们知道,Redis 是典型的键值数据库,所以今天,我准备手把手地带你构建一个简单的键值数据库。为啥要这么做呢?还记得我在开篇词说过吗?Redis 本身比较复杂,如果我们一上来就直接研究一个个具体的技术点,比如“单线程”“缓存”等,虽然可以直接学习到具体的内容,甚至立马就能解决一些小问题,但是这样学,很容易迷失在细枝末节里。从我自己的经验来看,更好的学习方式就是先建立起“系统观。

2024-02-06 18:21:06 1830 2

原创 《Redis核心技术与实战》学习笔记0——开篇词 | 这样学Redis,才能技高一筹

作为键值数据库,Redis 的应用非常广泛,如果你是后端工程师,我猜你出去面试,八成都会被问到与它相关的性能问题。比如说,为了保证数据的可靠性,Redis 需要在磁盘上读写 AOF 和 RDB,但在高并发场景里,这就会直接带来两个新问题:一个是写 AOF 和RDB 会造成 Redis 性能抖动,另一个是 Redis 集群数据同步和实例恢复时,读 RDB 比较慢,限制了同步和恢复速度。那这个问题有没有好的解决方法呢?哈哈,这里我卖了个关子。

2024-02-05 14:42:30 966

原创 《代码之丑》学习笔记18——写代码是一件可以一生精进的事

在很多人心目中,程序员是一个辛苦的职业,一方面,各种新东西层出不穷,程序员们要努力追随,另一方面,业务飞速发展,我们唯有积极应对。那么,是什么支撑你在这个富有挑战的行业里坚持前行呢?于我而言,这个问题的答案是,热爱。在我的心目中,编程是一项有趣的智力活动,从最初解决一个特定的小问题,到现在创造一个方案去解决一个系统的问题,无不需要费尽心力去探寻一个好的解决方案。时至今日,即便我写程序已经二十多年了,但每次程序运行通过时,我心里依然还是有一些小激动,因为支撑程序运行的每行代码里都有自己的思考在里面。

2024-02-04 17:57:09 926

原创 《代码之丑》学习笔记17——发现“你”代码里的坏味道

使用缩写;用 I 表示接口,用 Impl 表示实现;使用 static 函数或变量;使用 singleton 模式;写得潦草的 README。你在写代码时也要注意这些问题。我还借着 static 函数的调整过程,给你演示了如何一步一步地重构代码,保证代码的安全。希望你能够理解,重构不是大开大合的过程,而就是这样细小而微的操作。尽量不使用 static。

2024-01-30 21:24:57 1030

原创 《代码之丑》学习笔记16——什么代码应该被重构?

Kent Beck 在前言里说“这是一本关于‘如何编写别人能懂的代码’的书”,尽管他还谦虚地说这本书“不是模式书籍”,但实际上《实现模式》充分地展现了“模式”的本意:它提供了一整套“用代码表述意图”的模式语言,这套语言能让程序员在最短的时间内学会如何写出具有表现力的代码,并且自然而然地远离坏味道。例如“高内聚低耦合”,尽管这是所有人都赞同的设计原则,但究竟什么样的代码呈现了“低内聚”、什么样的代码呈现了“高耦合” 、“低内聚”与“高耦合”是否总是同时出现、应该以何种办法提高内聚降低耦合……

2024-01-30 09:29:42 1058

原创 《代码之丑》学习笔记15——新需求破坏了代码,怎么办?

增加新接口;改动实体。接口和实体,其实也是一个系统对外界产生影响的重要部分,一个是对客户端提供能力,一个是产生持久化信息。所以,我们必须谨慎地思考它们的变动,它们也是坏味道产生的高发地带。对于接口,我们对外提供得越少越好,而对于实体,我们必须仔细分析它们扮演的角色。谨慎地对待接口和实体的变动。

2024-01-23 20:22:37 907

原创 《代码之丑》学习笔记14——多久进行一次代码评审最合适?

多久进行一次代码评审最合适?

2024-01-19 14:45:00 1147

原创 《代码之丑》学习笔记13——落后的代码风格:使用“新”的语言特性和程序库升级你的代码

落后的代码风格:使用“新”的语言特性和程序库升级你的代码

2024-01-19 10:31:58 998

原创 《代码之丑》学习笔记12——不一致的代码:为什么你的代码总被吐槽难懂?

为什么你的代码总被吐槽难懂?

2024-01-17 19:40:02 1105

原创 《代码之丑》学习笔记11——依赖混乱:你可能还没发现问题,代码就已经无法挽救了

依赖混乱:你可能还没发现问题,代码就已经无法挽救了

2024-01-15 11:16:47 1134

原创 【记录】如何提高sql执行效率?

先,然后drop table,这样可以避免系统表的较长时间锁定。

2024-01-06 00:18:14 1270

原创 Day65 调度算法的评价指标以及FCFS、SJF、HRRN调度算法

它包括四个部分:作业在外存压备队列上等待作业调度(高级调度)的时间、进程在就绪队列上等待进程调度(低级调度)的时间、进程在CPU上执行的时间、进程等待I/O操作完成的时间。一个作业总共需要被CPU服务多久,被I/O设备服务多久一般是确定不变的,因此调度算法其实只会影响作业/进程的等待时间。对于操作系统来说,更关心系统的整体表现,因此更关心所有作业的周转时间的平均值。,在等待I/O完成的期间其实进程也是在被服务的,所以不计入等待时间。对于计算机的用户来说,他很关心自己的作业从提交到完成花了多少时间。

2022-11-13 21:37:39 791

原创 Day64 进程调度的时机、切换与过程、方式

注意:进程切换是有代价的,因此如果过于频繁的进行进程调度切换,必然会使整个系统的效率降低,使系统大部分时间都花在了讲程切换上,而真正用于执行进程的时间减少.在运行过程中即便有更紧迫的任务到达,当前进程依然会继续使用处理机,直到该进程终止或主动要求进入阻塞态。程需要使用处理机,则立即暂停正在执行的进程,将处理机分配给更重要紧迫的那个进程。进程切换是指一个进程让出处理机,由另一个进程占用处理机的过程。的,比如进程的就绪队列(由各就绪进程的PCB组成)(这个进程可以是刚刚被暂停执行的进程,也可能是。

2022-11-12 17:49:30 436

原创 Day63 处理机调度的概念和层次

PCB中会记录进程数据在外存中的存放位置,进程状态等信息,操作系统通过内存中的PCB来保持对各个进程的监控、管理。注意“挂起”和“阻塞”的区别,两种状态都是暂时不能获得CPU的服务,但挂起态是将进程映像调到外存去了,而阻塞态下进程映像还在内存中。高级调度主要是指调入的问题,因为只有调入的时机需要操作系统来确定,但调出的时机必然是作业运行结束才调出。在多道程序系统中,进程的数量往往是多于处理机的个数的,这样不可能同时并行地处理各个进程。,就是要决定将哪个处于挂起状态的进程重新调入内存。

2022-11-11 16:03:08 835

原创 Day60-62 线程概念和多线程模型

还没引入进程之前,系统中各个程序只能串行执行。有的进程可能需要“同时”做很多事,而传统的进程只能串行地执行一系列程序。为此,引入了“线程”,来增加并发度。可以把线程理解为“轻量级进程”。线程是一个基本的CPU执行单元,也是程序执行流的最小单位。引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务(如QQ视频、文字聊天、传文件)引入线程后,进程只作为除CPU之外的系统资源的分配单元。

2022-11-10 17:59:32 365

iSpeak用户使用手册1030.pdf

iSpeak用户使用手册

2024-08-13

90设计-人生不易背布袋萌兔表情包40217850.zip

90设计_人生不易背布袋萌兔表情包,丰富的表情包资源。又萌又可爱,适合各种用途

2024-08-13

软件需求分析报告.docx

掌上易生活需求分析报告,关于掌上生活app的需求分析的一份完善的实验报告,包括需求规定,运行环境规定等内容

2020-04-27

空空如也

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

TA关注的人

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