- 博客(62)
- 收藏
- 关注
原创 一文讲透 Java Regex正则表达式!
正则表达式(regular expression,常简写为 regex、regexp 或 RE),又称规律表达式、正规表示式、正规表示法、规则运算式、常规表示法,是计算机科学概念,用简单字串来描述、匹配文中全部符合指定格式的字串,現在很多文本编辑器都支援用正则表达式搜寻、取代符合指定格式的字串。Java Regex是一种用于匹配字符串的模式,它可以用来验证、查找、替换或拆分字符串。Java中的正则表达式由Pattern Class:表示正则表达式的编译表示。
2024-07-31 16:06:50
507
1
原创 第一天:Java基础入门
所谓跨平台指的是用Java语言开发的程序可以在多种操作系统上运行,常见的操作系统有Windows、Linux、MacOS系统。如果没有跨平台性,同一个应用程序,想要在多种操作系统上运行,需要针对各个操作系统单独开发应用。比如微信有Windows版本、MacOS版本、Android版本、IOS版本。
2024-07-31 16:00:25
1082
原创 架构师手写代码:分享数据库原子性与一致性实现方案(不再背概念)
方法用于执行一个事务,它首先进行一致性检查,然后应用所有操作。展示了如何在内存中以编程方式实现原子性和一致性,但它并不是一个真正的数据库系统。原子性和一致性是数据库事务不可或缺的特性,它们共同维护了数据的完整性和可靠性。原子性指的是事务中的所有操作要么全部完成,要么全部不完成,不会结束在中间某个点。如果事务中的某个操作失败,整个事务将被回滚到开始状态,就像这个事务从未执行过一样。一致性确保数据库从一个一致的状态转移到另一个一致的状态。在事务开始之前和提交之后,所有的数据都应满足预定义的完整性约束。
2024-07-31 15:58:34
417
原创 【看得懂却用不好】系列-最大线程数之坑
网络中诸多文章对java线程池的描述可谓入木三分,下边这段描述相信诸多JAVA开发早已熟知于心,但请留意今天的故事的主题是《看得懂却用不好》java 线程池机制中,核心线程数提供了一个基础的线程池工作机制,保证了处理任务的基本能力,而最大线程数则提供了处理高负载时的扩展能力。合理配置这两个参数可以提高线程池的性能和资源利用率。其中最大线程数则提供了处理高负载时的扩展能力这句话给许多研发同学带来了真香的感知,内心OS'平时没什么流量核心线程数设个20,应对并发峰值,最大线程数设置个1000够了吧’。
2024-07-31 15:58:01
404
原创 jdk版本管理利器-sdkman
sdkman是一个轻量级、支持多平台的开源开发工具管理器,可以通过它安装任意主流发行版本(例如OpenJDKKonaGraalVM等等)的任意版本的JDK。通过下面的命令可以轻易安装sdkman。
2024-07-31 15:57:06
344
原创 优快云全套Java面试题(面试必备)
什么是死锁?所谓死锁,是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。死锁产生的4个必要条件?互斥条件:进程要求对所分配的资源进行排它性控制,即在一段时间内某资源仅为一进程所占用。请求和保持条件:当进程因请求资源而阻塞时,对已获得的资源保持不放。不剥夺条件:进程已获得的资源在未使用完之前,不能剥夺,只能在使用完时由自己释放。环路等待条件:在发生死锁时,必然存在一个进程--资源的环形链。解决死锁的基本方法。
2024-07-31 15:55:51
805
原创 面试官没想到一个ArrayList,我都能跟他扯半小时
面试官:List集合都知道哪些对象?作为四大集合之一的List,在业务开发中我们比较常见的是以下 3 种:ArrayList、Vector、LinkedList,业务开发我们接触最多就是容器类库了,容器类库可以说是面向对象语言最重要的类库。大家看看在工作里你比较熟悉的是哪个?这篇文章南哥打算专注于List集合,后面四大集合之Map、Queue、Set后续再来填坑,比心心♥。
2024-07-30 14:43:50
945
原创 QUARKUS初体验
Quarkus是 Red Hat为GraalVM 和 HotSpot 量身定制用程序。特点是启动超快,内存极低,并且在容器编排平台(如Kubernetes)中提供了近乎即时的向上扩展和高密度的内存利用率。并且基于GraalVM,为我们提供了编译成native程序的能力。如果你觉得SpringBoot的启动速度太慢了内存占用率太高了,那么可以在日常开发中尝试一下Quarkus,也许会给你不一样的体验。我将通过一系列的教程,来介绍如何使用Quarkus。
2024-07-30 14:41:38
628
原创 B站 1面:手撕一个 Java Agent!
Java Agent 是一种特殊的 Java程序,从 Java5 开始支持,它可以在 Java虚拟机(JVM)启动时或运行时加载,并且能够在不修改原始源代码的情况下对字节码进行操作。Java AgentInstrumentation 接口Premain() 和 Agentmain()方法。
2024-07-30 14:38:29
471
原创 java注解与反射(非常详细, 带有很多样例)
你可以定义自己的注解,并通过元注解(meta-annotation)来指定注解的行为。@Retention:指定注解的保留策略,取值有。@Target:指定注解可以应用的程序元素,取值有等。:指定注解是否包含在 Javadoc 中。@Inherited:指定注解是否可以被子类继承。整理了一份Java八股文笔记。包括了:Java面试、Spring、JVM、MyBatis、Redis、MySQL、并发编程、微服务、Linux、Springboot、SpringCloud、MQ、Kafka 面试专题。
2024-07-30 14:37:37
286
原创 史上最全Java面试题(带全部答案)最新版
不可变对象指对象一旦被创建,状态就不能再改变。任何修改都会创建一个新的对象,如 String、Integer及其它包装类。公共静态不可变(public static final )变量也就是我们所说的编译期常量,这里的 public 可选的。实际上这些变量在编译时会被替换掉,因为编译器知道这些变量的值,并且知道这些变量在运行时不能改变。这种方式存在的一个问题是你使用了一个内部的或第三方库中的公有编译时常量,但是这个值后面被其他人改变了,但是你的客户端仍然在使用老的值,甚至你已经部署了一个新的jar。
2024-07-30 14:33:11
1983
1
原创 这下,我终于弄明白了RocketMQ为什么这么快!
在传统IO中,如果想将用户缓存区的数据放到内核缓冲区,需要经过CPU拷贝mmap()sendfile()mmap()是将用户缓冲区和内核缓冲区共享,操作用户缓冲区就好像直接操作内核缓冲区,读写数据时不需要CPU拷贝Java中可以使用MappedByteBuffer这个API来达到操作内核缓冲区的效果sendfile()主要是用于文件传输,可以通过sendfile()将一个文件内容传输到另一个文件中或者是网络中。
2024-07-29 14:17:25
791
原创 【设计模式】(万字总结)深入理解Java中的创建型设计模式
在软件开发的世界里,设计模式是一种被广泛接受并应用的解决方案。它们不仅仅是代码的设计,更是对问题的思考和解决的方法论。在Java开发中,特别是在面向对象的编程中,设计模式尤为重要。创建型设计模式,作为设计模式的重要组成部分,专注于如何有效地创建对象,同时尽可能减少耦合度,提高代码的可复用性和可维护性。本文将带领您深入探索Java中的创建型设计模式。我们将从简单的概念入手,逐步深入到每种模式的具体实现方式和实际应用场景。通过学习和理解这些设计模式,您将能够更加灵活和高效地设计和开发Java应用程序。
2024-07-29 14:10:20
894
原创 史上最全面Java面试汇总(面试题+答案)
泛型,即“参数化类型”。创建集合时就指定集合元素的类型,该集合只能保存其指定类型的元素,避免使用强制类型转换。Java编译器生成的字节码是不包涵泛型信息的,泛型类型信息将在编译处理是被擦除,这个过程即类型擦除。泛型擦除可以简单的理解为将泛型java代码转换为普通java代码,只不过编译器更直接点,将泛型java代码直接转换成普通java字节码。类型擦除的主要过程如下: 1).将所有的泛型参数用其最左边界(最顶级的父类型)类型替换。2).移除所有的类型参数。
2024-07-29 14:07:38
1229
1
原创 图解RocketMQ之主题Topic详解
我们先来看看官方定义:主题是 RocketMQ 中消息传输和存储的顶层容器,用于标识同一类业务逻辑的消息。我的理解主题就是消息的分类,比如上一篇说到的鸡毛的餐厅中订单消息是一类主题消息,顾客下单的消息都往订单消息这个主题里面发,那么同样鸡鸡毛的朋友狗毛约他去打球,就属于打球主题消息,依此类推,不难发现,主题消息的分类其实是受业务所决定的,你要发什么业务消息最好单独是一个 Topic 主题,大家相互之间互不干扰。现如今垃圾都要做好干湿分类,消息可不能一个 topic 干到底哦。定义数据的分类隔离。
2024-07-24 14:20:28
1096
原创 全套Java面试题(就业必备)
不可变对象指对象一旦被创建,状态就不能再改变。任何修改都会创建一个新的对象,如 String、Integer及其它包装类。篇幅限制下面就只能给大家展示小册部分内容了。包括了:Java面试、Spring、JVM、MyBatis、Redis、MySQL、并发编程、微服务、Linux、Springboot、SpringCloud、MQ、Kafka 面试专题需要全套面试笔记的【点击此处即可】即可免费获取。
2024-07-24 14:18:01
710
原创 Java面试题及答案整理汇总
1、使用as起别名2、使用resultMap标签映射:column的值为数据库中的字段名,property的值为中的属性名#{}是预编译参数占位符,可以防止sql注入。${}是字符串替换占位符,无法防止sql注入。sql注入:sql注入是指攻击者向数据库中插入恶意的sql语句,从而来获取或篡改数据库中的数据。MyBatis 分页插件的原理是通过拦截 SQL 执行过程,在执行前和执行后对 SQL 进行改写,添加分页相关的语句,实现数据库分页查询功能。
2024-07-24 14:12:30
956
原创 数据库这样存大JSON字段CTO说年终奖直接翻倍
本方法完全是自己脑洞大开想出来,感觉路子有点野,我在市面上没见过类似的来源项目,不知道市面上有没有类似的需求,大家可以评论区讨论下,总结本方法的特点。
2024-07-23 20:49:49
935
原创 Java 中的垃圾收集 - 什么是 GC 以及它在 JVM 中的工作原理
今天在本文中,您将了解有关垃圾收集器的更多信息,包括其工作原理以及 Java 中可用的各种 GC 类型及其优点。我还将介绍最新 Java 版本中提供的一些新的实验性垃圾收集器。
2024-07-23 20:42:45
816
原创 原来Optional用起来这么清爽!
因为我们上面的例子,使用到了,第一个函数就讲它啦。源码如下:scss代码解读复制代码如果value为null,就返回empty(),否则返回of(value)函数。接下来,我们看Optional的empty()和of(value)函数swift代码解读复制代码return t;显然,empty()函数的作用就是返回EMPTY对象。而of(value)函数会返回Optional的构造函数csharp代码解读复制代码对于 Optional的构造函数:csharp。
2024-07-23 20:41:06
802
原创 2024年最新完整java面试题(含答案)
答: JVM 中类的装载是由 ClassLoader 和它的子类来实现的 ,Java ClassLoader 是一个重要的 Java 运行 时系统组件。封装类型: Boolean , Character , Byte , Short , Integer , Long , Float , Double 引用类型和原始类型的行。有不同的参数个数或有不同的参数类型,则称为方法的重载 (Overloading)。StringBuffer 的长度是可变的,如果你对字符串中的内容经常进行操作,
2024-07-23 20:39:15
4574
1
原创 什么是系统的鲁棒性?
鲁棒性,英文为Robustness,它是一个多学科的概念,涉及控制理论、计算机科学、工程学等领域。在计算机领域,系统的鲁棒性是指系统在面对各种异常情况和不确定性因素时,仍能保持稳定运行和正常功能的能力。鲁棒性是系统稳定性和可靠性的重要指标,一个具有良好鲁棒性的系统能够在遇到各种异常情况时做出正确的响应,不会因为某些异常情况而导致系统崩溃或失效。鲁棒性要求系统在在遇到各种异常情况都能正常工作,各种异常很难具像化,这看起来是一种比较理想的情况,那么系统的鲁棒性该如何评估呢?
2024-07-22 19:38:46
1050
原创 Kafka核心知识点整理,收藏再看!
通过异步处理提高系统性能(减少响应所需时间)削峰/限流降低系统耦合性RocketMQ:天生为金融互联网领域而生,对于可靠性要求很高的场景。RoketMQ 在稳定性上可能更值得信赖。
2024-07-22 19:37:22
774
原创 银行家算法:确保数据库事务无死锁经典策略(专家篇)
死锁不仅会导致事务无法完成,还可能影响数据库的可用性。银行家算法通过分析事务的资源需求和当前资源分配情况,来预防死锁的发生。通过预先分析事务的资源需求和当前资源分配情况,它可以确保系统始终能够安全地执行所有事务。虽然算法的实现可能相对复杂,但其对于提高数据库事务管理的安全性和稳定性具有重要意义。它通过确保资源分配的安全性,防止了死锁的发生,从而提高了系统的稳定性和可靠性。:当一个事务请求资源时,系统检查是否可以在不违反安全条件的情况下分配资源。:事务完成后,释放其持有的所有资源。
2024-07-22 19:34:53
401
原创 Java新特性梳理——Java17
JDK 16 刚发布半年(2021/03/16),JDK 17 又如期而至(2021/09/14),这个时间点特殊,蹭苹果发布会的热度?记得当年 JDK 15 的发布也是同天。JDK 17 是自 2018 年 JDK 11 后的第二个长期支持版本,支持到 2029 年 9 月,支持时间长达 8 年,这下可以不用死守 JDK 8 了,JDK 17+ 也可以是一种新的选择了。
2024-07-22 19:33:58
5529
原创 Java面试题大全带答案
当向Hashmap对象里put元素时,会根据key的hashcode计算hash值,根据hash值得到这个元素在数组中的位置,如果该数组在该位置上已经存放了其他元素,那么在这个位置上的元素将以链表的形式存放,新加入的放在链头,最先加入的放入链尾.如果数组中该位置没有元素,就直接将该元素放到数组的该位置上。HashTable线程安全的,而HashMap线程不安全的,大多数的场景是单线程环境,在单线程环境下,HashMap效率上比hashTable要高。Vector是线程安全的,而ArrayList不是。
2024-07-22 19:29:56
775
原创 如何编写 Null-Safety 代码?一文帮你讲透!
Nullable注解NonNull注解显示处理 null使用 Optional类使用断言编写清晰的文档功夫在平常,功夫在细节!只要我们在日常开发中多注意一点细节,让好习惯成为自然,终有一天,不但可以写出让人羡慕的优雅代码,还可以写出高质量的代码。
2024-07-21 14:10:04
740
转载 Java 如何实现单点登录案例详解
单点登录(SSO)是一种用户身份验证机制,允许用户在多个系统或应用程序中使用同一组登录凭据。从业务需求的角度来看,单点登录具有以下优势和必要性:通过这些优势,单点登录不仅提高了用户的便利性和满意度,还为企业提供了更安全、高效和灵活的运营方式。这对于需要管理大量用户和应用程序的企业尤为重要。
2024-07-21 14:08:49
442
原创 一文讲解!乐观锁、悲观锁、可重入锁、公平锁,自旋锁、重量级锁、轻量级锁、偏向锁
是一种偏向于乐观的策略,假设并发访问冲突的概率较低,因此在访问共享资源时不会加锁,而是在数据时检查是否有其他线程对数据进行了。乐观锁一般使用或等机制来检测数据是否被修改,如果到冲突,乐观锁会回滚操作或者重新尝试更新操作:大姨A和大姨B去同一个菜市场买同一种菜。这个市场的摊位没有上锁,大姨A和大姨B都可以随时进去挑菜,她们在进摊位前记下摊位上的菜有多少,操作结束时检查菜的数量,如果发现不一致就重试。
2024-07-21 14:08:08
1327
原创 全网最详细JAVA八股文,欢迎收藏
基本数据类型,如int,float,double,boolean,char,byte,不具备对象的特征,不能调用方法。装箱:将基本类型转换成包装类对象拆箱:将包装类对象转换成基本类型的值java为什么要引入自动装箱和拆箱的功能?主要是用于java集合中,List list=new ArrayList();list集合如果要放整数的话,只能放对象,不能放基本类型,因此需要将整数自动装箱成对象。
2024-07-21 14:05:18
1554
原创 IDEA逆向生成插件-模板记录
VO专注于视图展示,封装展示层需要的数据。DTO专注于数据的跨层或跨系统传输,减少数据冗余,提高传输效率。DOMAIN专注于业务逻辑的实现,封装业务领域的知识和规则。在实际项目中,应根据具体需求和场景来选择合适的类型,以达到最佳的开发效率和系统性能。我惊喜地发现,将这些基础知识系统地记录下来,不仅是对自我学习的一种巩固,也是一件非常有意义且值得分享的事情。您也完全可以这样做,让我们一起在基础中深耕,发现更多可能。
2024-07-19 16:56:54
1278
1
原创 MobPush REST API 概述
一个时间窗口内,当前定义为:1 分钟。每个 AppKey 的 API 调用数量。免费版本各 API 频率参考接口限制。收费版本根据终端用户规模的不同,具有不同级别的频率。如有需要,请发邮件到以进一步沟通协调。
2024-07-19 16:54:34
271
原创 通过HttpClien方式调用wsdl接口代码样例
SOAP协议(Simple Object Access Protocol,简单对象访问协议)是一种用于交换结构化信息在分布式环境中进行通信的协议。它基于XML,用于在网络上通过HTTP或其他协议传输信息。SOAP协议主要用于不同系统之间的通信,可以支持不同平台和编程语言的互操作性。SOAP消息通常由一个envelope(信封)、一个header(头)、一个body(主体)和一个fault(错误)组成。
2024-07-19 16:48:37
903
原创 2024 Java面试题大全(整理版)
最近有很多粉丝问我,有什么方法能够快速提升自己,通过阿里、腾讯、字节跳动、京东等互联网大厂的面试,我觉得短时间提升自己最快的手段就是背面试题,最近总结了Java常用的面试题,分享给大家,希望大家都能圆梦大厂,加油,我命由我不由天。所谓反射,是java在运行时进行自我观察的能力,通过class、constructor、field、method四个方法获取一个类的各个组成部分。在Java运行时环境中,对任意一个类,可以知道类有哪些属性和方法。这种动态获取类的信息以及动态调用对象的方法的功能来自于反射机制。
2024-07-19 16:46:35
2611
1
原创 阿里P8写出的2022最新版 深入理解Java虚拟机3 轻松学会JVM底层
前言Java是目前用户最多、使用范围最广的软件开发技术,Java的技术体系主要由支撑Java程序运行的虚拟机、提供各开发领域接口支持的Java类库、Java编程语言及许许多多的第三E方Java框架(如Spring、 MyBatis等) 构成。在国内,有关Java类库API、Java语言语法及第三方框架的技术资料和书籍非常丰富,相比而言,有关Java虚拟机的资料却显得异常贫乏。随着Java技术的不断发展,它已被应用于越来越多的领域之中。其中一些领域,如互联网、能源、金融、通信等,对程序的性能、...
2022-05-21 16:44:50
243
原创 太厉害了 腾讯T4把《数据结构与算法》讲透了,带源码笔记
话不多说,直接先上图经历过校招的人都知道,算法和数据结构都是不可避免的。在笔试的时候,最主要的就是靠算法题。像拼多多、头条这种大公司,上来就来几道算法题,如果你没AC出来,面试机会都没有。在面试(现场面或者视频面)的时候也会问算法题,难度肯定是没有笔试的时候那么难的。我们可以想象一个场景,一面面试面到一半,面试官让你反转二叉树,问问现在的自己,你还会吗。不扯远了,如果还在上大学的同学可以先以排序和各种的基本数据结构开始入门。我花了一个星期将八大基础排序和链表/二叉树/栈/队列
2022-05-21 16:40:49
185
原创 阿里P8架构师带你“一窥”大型网站架构的主要技术挑战和解决方案
写在前面传统的企业应用系统主要面对的技术挑战是处理复杂凌乱、千变万化的所谓业务逻辑,而大型网站主要面对的技术挑战是处理超大量的用户访问和海量的数据处理;前者的挑战来自功能性需求,后者的挑战来自非功能性需求;功能性需求也许还有“人月神话”聊以***,通过增加人手解决问题,而非功能需求大多是实实在在的技术难题,无论有多少工程师,做不到就是做不到。IT系统应用于企业管理已有超过半个世纪的历史,人们在这方面积累了大量的知识和经验(架构模式,领域分析,项目管理),而真正意义,上大型网站从出现至今不过短短十多年的时
2022-05-21 16:34:10
328
原创 《Java开发手册灵魂13问》正式上线,带你剖析阿里巴巴的开发细节
写在前面一线大厂怎么用Java?看阿里技术专家给你分析!《〈Java开发手册(泰山版)〉灵魂13问》电子书正式上线带你剖析阿里巴巴一线团队开发思维。大家都知道2020年04月22日刚刚发布了《Java开发手册》泰山版,新增5条日期时间规约;新增2条表别名sql规约;新增统一错误码规约。而《〈Java开发手册(泰山版)〉灵魂13问》则是为了帮助大家更好的理解这些规约背后的原理,从问题重现到原理分析再到解决问题,阿里技术专家带你剖析阿里巴巴开发细节。作者从开发者的角度结合自身所遇到的坑点,根
2022-05-20 19:11:53
115
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人