自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM上数据处理语言的竞争:Kotlin, Scala 和 SPL

SPL 的计算函数最丰富,且都是针对结构化数据对象设计的,SPL 极大地丰富了结构化数据运算内容,设计了很多超出 SQL 的内容,当然也是 Scala/Kotlin 不支持的函数,比如有序计算:归并、二分查找、按区间取记录、符合条件的记录序号;Scala 支持的数据源种类比较多,且有六种数据源接口是内置的,并针对结构化数据处理做了优化,包括:JDBC、CSV、TXT、JSON、Parquet 列存格式、ORC 列式存储,其他的数据源接口虽然没有内置,但可以用社区小组开发的第三方类库。

2025-05-28 14:53:43 396

原创 别再混淆了!JVM内存模型和Java内存模型的本质区别

JVM 内存模型(JVM Memory Model)和 Java 内存模型(Java Memory Model, JMM)是 Java 开发中两个非常重要的概念,但这两个概念很容易被搞混,所以本文就来通俗易懂的讲讲二者的区别。首先,我们先来看看各自的概念,以及其解决的问题。

2025-05-28 14:48:26 158

原创 这可能是全网Java学习路线最完整,最详细的版本了,没有之一

据官方数据统计,在全球编程语言工程师的数量上,Java编程语言以900万的程序员数量位居首位。而在以Java编程为核心的开发领域中,javaEE程序员的需求量10年来一直居于首位!1.通过各大招聘网站统计,全国海量公司都在招聘Java开发工程师2.北京Java开发工程师平均薪资,即18530元3.全国Java开发薪资前三:北京 上海 广州。根据IDC的统计数字:就2017年来说,我国Java人才的缺口已达42.5万,并且以每年20%左右 的速度增长。HttpServletResponse响应中文乱码问题。

2025-05-27 20:24:33 1136

原创 一文竟能读懂Docker架构原理

docker镜像就是一个只读模板,比如,一个镜像可以包含一个完整的centos,里面仅安装apache或用户的其他应用,镜像可以用来创建docker容器,另外docker提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下周一个已经做好的镜像来直接使用。仓库分为两种,公有参考,和私有仓库,最大的公开仓库是docker Hub,存放了数量庞大的镜像供用户下周,国内的docker pool,这里仓库的概念与Git类似,registry可以理解为github这样的托管服务。

2025-05-27 15:21:19 878

原创 全方位解析Java的序列化

相信大家日常开发中,经常看到Java对象“implements Serializable”。那么,它到底有什么用呢?本文从以下几个角度来解析序列这一块知识点~什么是Java序列化?为什么需要序列化?序列化用途Java序列化常用API序列化的使用序列化底层日常开发序列化的注意点序列化常见面试题序列化:把Java对象转换为字节序列的过程反序列:把字节序列恢复为Java对象的过程可以的。我们都知道,对于序列化一个对象需调用。

2025-05-27 15:18:21 453

原创 保持清洁的Git提交记录,三招就够了

有了这三个锦囊,相信大家的 git log 都无比的清晰,如果你还不知道,完全可以用起来,如果你的组内成员不知道,你完全可以推广起来,这样的 repo 看起来才更健康。

2025-05-26 16:45:22 477

原创 别自己瞎写工具类了!SpringBoot中自带工具类,开发效率增加一倍

SpringBoot 是一款非常流行的 Java Web 开发框架,它的出现极大地提升了 Java 开发的效率和便捷性。除了提供了丰富的开发组件和插件,SpringBoot 还自带了许多实用的工具类,这些工具类能够帮助开发者更快速地完成开发任务,从而大大提高开发效率。本文将介绍 SpringBoot 中自带的一些常用工具类,并探讨它们如何帮助开发者提高开发效率。通过本文的学习,相信读者能够更好地掌握 SpringBoot 的开发技巧,从而在开发中事半功倍。

2025-05-26 16:42:28 281

原创 Spring Security停止维护?拥抱Spring全新OAuth解决方案

以下全文 Spring Authorization Server 简称为: SAS。

2025-05-23 15:56:12 302

原创 现在的Java工程师都有一个通病.....

所谓Java工程师并不是要掌握全栈的技术,而是看你所掌握哪些技术优秀突出,来选择你的岗位,我收集过很多面试人员发布过的问题,那些来面试的人普遍存在一个问题,那就是根本没准备过有关面试问题,其实你提前一两个星期去了解面试考点,大差不差能勉强回答出来,大厂除外!有经验的程序员觉得自己能力够用,但一被问到细节就支支吾吾,答不上来没经验的更别提了,以为不会问专业有关的知识,结果一问一个不吱声。

2025-05-23 15:53:47 278

原创 征服LeetCode,你的刷题之路就此开始,手把手带你了解算法奥秘

打开LeetCode,看着题目发呆,脑子里一堆‘暴力解法’,提交后却只换来一个冰冷的‘Time Limit Exceeded’?别慌!就是你的救星!这里没有晦涩的理论,只有和。不管你是被‘动态规划’虐到怀疑人生,还是看到‘二叉树’就头皮发麻——哎呀,看到你这问题,我就不得不说,你这卡在算法学习的瓶颈上了啊。咱这行,不就是算法吃饭的嘛。别急,哥来给你掰扯掰扯,怎么学算法才能真练成个高手。先说个老实话,理论你是绕不过去的。

2025-05-22 18:44:45 838

原创 API 请求慢?这次锅真不在后端

原本这个问题认为跟前端无关,没想到最后吃瓜吃到自己头上。提升相关技能的知识储备以及思考问题的方式,可能会方便我们定位到此类问题。充分利用好浏览器的调试工具,对一个问题可以从多个角度出发进行思考。比如一开始,没想到本地也可以开启 HTTP / 2。后来偶然间想搜下是否有此类方案,结果还真有!

2025-05-22 14:36:34 646

原创 95% 的算法都是基于这 6 种算法思想

如果用 dp[n] 表示第 n 级台阶的方案数,并且由题目知:最后一步可能迈 2 个台阶,也可迈 1 个台阶,即第 n 级台阶的方案数等于第 n-1 级台阶的方案数加上第 n-2 级台阶的方案数。

2025-05-22 14:34:43 606

原创 SpringBoot如何配置Https访问

其实将springboot配置成https的方式很简单,重点是其背后的 SSL/TLS 协议,涉及到的对称加密、非对称加密、证书、CA,在下一篇中,我们将通过 wireshark,对基于 https 协议的交互进行抓包,来了解针对 https 请求,tcp 都做了什么。

2025-05-21 15:28:54 323

原创 一条Update语句的执行过程是怎样的?

今天的分享就到这了,我们平时一条Update语句其实内部会经历很多流程,语句解析、日志WAL,Buffer Pool等。通过今天这篇文章的分享相信大家对流程已经很清晰了,后续将继续带来Redo Log、UndoLog等内容,敬请期待!

2025-05-21 15:27:44 897

原创 2025年最新Java学习路线,走过路过不要错过!

最好的学习方式就是参阅官方文档。官方文档其次就是书籍,国内的好书自成体系,帮助我们掌握的知识点不至于太散。这是一份非常详细的学习路线,把上面的内容学完之后,找到一份比较好的工作已经比较容易。另外,我在上面也说了,如果你觉得内容比较多自己学不完或者如果你只想找到一份小厂的开发工作的话,建议你把重心放在 Java基础、数据库、常用框架、常用工具上。像 JVM、微服务这些知识点,掌握了基础部分再来学习。

2025-05-20 18:57:17 1893

原创 Java动态代理机制和实现原理详解

格式,然后动态生成代理类. 所有的代码生成工作由。因此只需要两个步骤即可完成代理对象的创建。与否的规则生成代理类的名称 -为了简化对象创建过程。

2025-05-20 14:42:26 948

原创 阿里大佬私人珍藏的MySQL笔记,学到就是赚到

MySQL 基本架构示意图如下:MySQL 大体可以分为两部分:Server 层和存储引擎层(功能跟日常开发中的 Service 层和与 DAO 层有点像,可以对比理解)。Server 层主要有连接器(Connector)、查询缓存(Cache)、分析器(Parser)、优化器(Optimizer)和执行器(Executor)等,包括了 MySQL 的大部分核心功能以及所有内置函数(日期、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,例如存储过程、触发器、视图等。存储引擎层。

2025-05-20 14:39:37 948

原创 一文就够!SpringBoot拦截器及源码分析

一般自定义一个拦截器分为三步(1)编写一个拦截器实现 HandlerInterceptor 接口。(2)拦截器注册到容器中。(3)配置拦截规则。上面的过程,大概可以总结为以下几步:(1)根据当前请求,找到可以处理请求的handler和handler的所有拦截器。(2)顺序执行所有拦截器的 preHandle 方法如果当前拦截器的 preHandle 方法返回为 true ,则执行下一拦截器的 preHandle 方法。

2025-05-19 13:53:14 521

原创 这一篇就够了!Kafka面试前的准备,建议收藏

在前段时间面试时,我发现不少面试官爱问Kafka相关的问题,这也不难理解,谁让Kafka是大数据领域消息队列里炙手可热的存在。以下问题 先在脑海 过一遍,是否能够回忆清楚?解析参考。

2025-05-19 13:51:40 749

原创 MySQL面试(三)

当前读是读取的数据库最新的数据,当前读和快照读不同,因为要读取最新的数据⽽且要保证事务的隔离性,所以当前读是需要对数据进⾏加锁的(Update delete insert select ....lock in share mode ,select for update 为当前读)可重复读:解决了不可重复读,它确保同⼀事务的多 个实例在并发读取数据时,会看到同样的数据⾏。锁中粒度最⼩的⼀种锁,因为锁的粒度很⼩,所以发⽣资源争抢的概率也最⼩,并发性能最⼤,但是也会造成死锁,每次加锁和释放锁的开销也会变⼤。

2025-05-18 13:46:57 360

原创 什么是看门狗机制?它是如何给Redis的Key续约?

看门狗”(Watchdog)是一个广泛应用于计算机科学和工程领域的术语,指的是一种监控机制,用于监督系统、应用程序或硬件的正常运行,并在检测到异常或故障时采取预定义的恢复措施。看门狗的主要目的是提高系统的可靠性和稳定性,防止系统挂起或出现长时间的无响应状态。本文,我们详细地分析了什么是看门狗以及Redisson 的看门狗机制,它通过自动续期锁的有效期,简化了分布式锁的管理,减少了开发人员手动处理锁续期的复杂性。然而,理解其工作原理和注意潜在的配置细节,对于确保系统的可靠性和性能至关重要。

2025-05-18 13:45:07 753

原创 并发编程中的 ABA问题是什么?如何解决?

ABA问题的名字来源于一个简单的场景:假设有一个变量最初的值是 A,一个线程读取到这个值 A后,准备进行一些操作,在此期间,另一个线程将这个值从 A改为 B,然后又改回 A。对于第一个线程而言,虽然它再次检查时变量的值仍然是A,好像什么都没有发生过,但实际上这个变量已经被其他线程修改过。这个问题之所以被称为ABA,是因为变量经历了一个从 A到 B再回到 A的过程。

2025-05-15 14:26:50 816

原创 MySQL面试题(二)

MySQL设计者将⼀个B+Tree的节点的⼤⼩设置为等于⼀个⻚. (这样做的⽬的是每个节点只需要⼀次I/O就可以完全载⼊), InnoDB的⼀个⻚的⼤⼩是16KB,所以每个节点的⼤⼩也是16KB, 并且B+Tree的根节点是保存在内存中的,⼦节点才是存储在磁盘上.优化建议: 在没有⼤表扫描的情况下,并且数据多为频繁使⽤的数据时,我们可以增加innodb_old_blocks_pct的值,并且减⼩innodb_old_blocks_time的值。让数据⻚能够更快和更多的进⼊的热点数据区。

2025-05-15 14:23:56 466

原创 扫盲Kafka?看这一篇就够了!

•业务场景不同,底层数据结构不同,kafka数据存储对于功能要求较少,因此读写更快kafka存储数据(消息本身)的文件的数据结构是数组,数组的特点就是:数据间位置连续,如果按照顺序读取,或者追加写入的话,其时间复杂度为O(1),效率最高。同步提交:提交失败的时候一直尝试提交,直到遇到无法重试的情况下才会结束,同步方式下消费者线程在拉取消息会被阻塞,在broker对提交的请求做出响应之前,会一直阻塞直到偏移量提交操作成功或者在提交过程中发生异常,限制了消息的吞吐量。

2025-05-14 20:03:43 764

原创 MySQL面试题(一)

下⼀条记录就会写⼊新的⻚中,⼀旦数据按照这种顺序的⽅式加载,主 键⻚就会近乎于顺序的记录填满,提升了⻚⾯的最⼤填充率,不会有页的浪费。这个是查询任意位置的字⺟满⾜条件即可,只有⾸字⺟是进⾏索引排序的,其他位置的字⺟都是相对⽆序的,所以查找任意位置的字⺟是⽤不上索引的.是匹配字符串尾部的数据,我们上⾯说了排序规则,尾部的 字⺟是没有顺序的,所以不能按照索引顺序查询,就⽤不到索引.在写的⽅⾯,因为是⾃增的,所以主键是趋势⾃增的,也就是说新增的 数据永远在后⾯,这点对于性能有很⼤的提升。

2025-05-14 20:00:40 1192

原创 漫画:为什么键盘以QWER排列,而不是ABCD?

作者:漫话编程 来自:漫话编程。

2025-05-13 14:45:08 879

原创 设计模式问题:说一说简单工厂模式?

简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,其主要目的是通过将对象的创建逻辑封装在一个工厂类中,从而隐藏对象的创建细节并简化对象的创建过程。在简单工厂模式中,客户端通过向工厂类传递不同的参数来请求工厂创建不同类型的对象。

2025-05-13 14:40:03 304

原创 10年架构师泣血整理!分布式架构终极圣经

分布式架构是指将系统的各个组件和服务分布在多台独立的计算机节点上,通过网络进行通信和协作,以实现高性能、高可用性和可伸缩性的系统架构。分布式架构将系统的负载分布到多个节点上,可以实现并行处理和负载均衡。通过并行处理,系统可以同时处理多个请求或任务,提高系统的处理能力和响应速度。分布式架构通过将系统的服务和数据分布在多个节点上,实现了冗余备份和故障恢复机制。即使某个节点发生故障,其他节点仍然可以继续提供服务,确保系统的可用性,通过增加节点的数量,可以进一步提高系统的可用性和容错性。

2025-05-12 13:38:41 594

原创 Kafka 和 Pulsar到底有什么不同?

Kafka 是一个分布式事件流平台,旨在处理高速、大容量和容错数据流。它最初由 LinkedIn 开发,后来捐赠给了 Apache 软件基金会。Kafka 已迅速成为构建实时数据管道、事件驱动架构和微服务应用程序的热门选择。核心能力发布和订阅记录流。以容错和持久的方式存储记录流。与配套服务协同工作,在记录发生时处理记录流(Kafka Streams 和 ksqlDB)。主要特点为实时数据流提供高吞吐量、低延迟的消息传递。支持数据分区和复制的可扩展架构。

2025-05-12 13:34:18 663

原创 从Kafka面试心慌到offer收割机,我仅靠这份手册通过学习成功逆袭

篇幅原因,仅展示部分截图,有需要的小伙伴文末即可免费获取第1章 Kafka简介:介绍Kafka诞生的背景、Kafka在LinkedIn内部的应用、Kafka 的主要设计目标以及为什么使用消息系统第2章 Kafka的架构:介绍Kafka的基本组成、拓扑结构及其内部的通信协议第3章 Broker概述:描述Kafka集群组成的基本元素Broker Server的启动以及内部的模块组成。

2025-05-11 17:40:53 768

原创 一篇文章掌握整个JVM,JVM超详细解析!!!

程序在运行过程中,会产生大量的内存垃圾(一些没有引用指向的内存对象都属于内存垃圾,因为这些对象已经无法访问,程序用不了它们了,对程序而言它们已经死亡),为了确保程序运行时的性能,java虚拟机在程序运行的过程中不断地进行自动的垃圾回收(GC)。GC是不定时去堆内存中清理不可达对象。不可达的对象并不会马上就会直接回收, 垃圾收集器在一个Java程序中的执行是自动的,不能强制执行清楚那个对象,即使程序员能明确地判断出有一块内存已经无用了,是应该回收的,程序员也不能强制垃圾收集器回收该内存块。

2025-05-11 13:48:28 773

原创 Java顶级Java应用程序服务器 Tomcat、Jetty、GlassFish、WildFly

最重要的是,如果你的组织已经在其他项目中使用了特定的应用程序服务器,那么只需效仿即可。因此,Tomcat是成熟的、文档丰富的,也是使用最广泛的Java应用程序服务器。凭借良好的文档和互联网上关于它的教程,Tomcat是几乎所有Java web应用程序中应用服务器角色的有力竞争者。如果你想编写Java web应用程序,首先需要做出一个艰难的决定:选择运行应用程序的Java应用程序服务器。Tomcat是与Apache软件基金会开发的Java web应用程序一起使用的最流行的应用程序服务器。

2025-05-09 14:00:35 363

原创 Tomcat介绍和配置使用

请求是指客户端给服务器发送数据,叫请求 Request。响应是指服务器给客户端回传数据,叫响应 Response。1、可以打开项目结构菜单操作界面,添加一个自己的类库:2、添加你你类库需要的 jar 包文件。

2025-05-09 13:58:55 963

原创 爱上算法,迷人的两度搜索,深度优先(DFS)和广度优先(BFS)

(Depth-First-Search,DFS)沿着树的深度遍历树的节点,尽可能深的搜索树的分支。(Breadth-First-Search,BFS)直观地讲,它其实就是一种“地毯式”层层推进的搜索策略,即先查找离起始顶点最近的,然后是次近的,依次往外搜索。(BFS)是一种用于遍历或搜索树或图的算法,在搜索遍历的过程中保证每个节点(顶点)访问一次且仅访问一次,按照节点(顶点)访问顺序的不同分为深度优先和广度优先。简单的说,BFS是从根节点开始,沿着树(图)的宽度遍历树(图)的节点。

2025-05-08 18:56:01 620

原创 Java工程师面试必备|算法Top30高频真题详解

斐波那契数列(Fibonacci Sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711……二分法使用的时候需要注意:二分法只适用于有序的数据,也就是说,数据必须是从小到大,或是从大到小排序的。

2025-05-08 18:53:16 1287

原创 Java NIO:从 Buffer、Channel、Selector 到 Zero-copy、I/O 多路复用

NIO是什么?nio是的简称,在 jdk1.4 里提供的新 api。Sun官方标榜的特性如下:为所有的原始类型提供(Buffer)缓存支持。字符集编码解码解决方案。Channel:一个新的原始I/O抽象。支持锁和内存映射文件的文件访问接口。提供多路()非阻塞式的高伸缩性I/O。NIO实现高性能处理的原理是使用较少的线程来处理更多的任务。使用较少的Thread线程,通过Selector选择器来执行不同的Channel通道中的任务,执行的任务再结合AIO(异步。

2025-05-07 15:03:29 1021

原创 HTAP需求不能被HTAP数据库解决

HTAP(Hybrid Transaction and Analytical Process,混合事务和分析处理)自 2014 年明确提出以后成为了很多数据库厂商努力的方向。其实 HATP 并不新鲜,早年 RDB 刚兴起时本来就是用一个数据库同时做事务和分析,但随着数据规模不断变大再直接基于业务库做分析就会影响业务,这时数据仓库出现了,将业务数据导入数据仓库来专门应对分析需求,同时与业务库隔离,这样不仅可以更好地服务分析场景,又不会对业务系统产生影响,这是“合久必分”的阶段。

2025-05-07 15:01:15 726

原创 从原理到优化,深入浅出数据库索引

MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。数据库查询是数据库的最主要功能之一,我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化,这篇文章对索引做一个系统的梳理,希望对大家有帮助。

2025-05-06 14:24:14 623

原创 五分钟带你学会微服务熔断原理分析与源码解读

熔断机制(Circuit Breaker)指的是在股票市场的交易时间中,当价格的波动幅度达到某一个限定的目标(熔断点)时,对其暂停交易一段时间的机制。此机制如同保险丝在电流过大时候熔断,故而得名。熔断机制推出的目的是为了防范系统性风险,给市场更多的冷静时间,避免恐慌情绪蔓延导致整个市场波动,从而防止大规模股价下跌现象的发生。同样的,在高并发的分布式系统设计中,也应该有熔断的机制。

2025-05-06 14:19:35 820

原创 Rust与C之争,受伤的可能是C++

因为Rust与C的竞争,让人们加深了对Rust的印象,被动的让开发者,不得不去深入了解Rust,当深入了解时,发现Rust确实解决了部分C/C++的痛点和风险点,这又使得开发者更加有动力的投入到Rust的开发中且自得其乐,那这就让C++有点被动了,本来就是为了让C更好,结果,大家倾向于另起炉灶,从根源解决问题,你说C++,在这波编程语言演进浪潮中,能独善其身吗?最近,京东高调进入外卖行业,宣布要实现外卖平权,革资本家的命,这让美团瑟瑟发抖,只能被动反击,一时间,全国各地外卖行业烽烟四起,红黄之争势均力敌。

2025-04-29 15:30:58 669

空空如也

空空如也

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

TA关注的人

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