自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2024年最新版Java面试八股文!

不可变对象指对象一旦被创建,状态就不能再改变。任何修改都会创建一个新的对象,如 String、Integer及其它包装类。公共静态不可变(public static final )变量也就是我们所说的编译期常量,这里的 public 可选的。实际上这些变量在编译时会被替换掉,因为编译器知道这些变量的值,并且知道这些变量在运行时不能改变。这种方式存在的一个问题是你使用了一个内部的或第三方库中的公有编译时常量,但是这个值后面被其他人改变了,但是你的客户端仍然在使用老的值,甚至你已经部署了一个新的jar。

2024-04-19 21:59:02 514

原创 优化Java多线程应用:是创建Thread对象直接调用start()方法?还是用个变量调用?

偶然间发现一个有意思的点,平时写代码的时候,下面这两种写法,不知道大家经常使用的是哪一种写法?你能发现他俩有啥区别吗?Java复制代码。

2024-04-19 21:56:52 97

原创 Postman技能提升:如何用环境变量简化Token管理

Postman是一个强大的API开发工具,它可以帮助我们测试、开发和文档化API。本文将介绍如何在Postman中设置环境变量以自动管理token,并解决一些常见的问题。通过上述步骤,你可以在Postman中轻松地管理API交互中的token。Postman允许我们创建不同的环境来模拟不同的运行条件,如开发、测试和生产环境。有时,Postman可能不会自动更新环境变量,这可能是一个已知的bug。在Postman中,你可以在请求的URL、Headers或Body中使用环境变量。选择你刚刚创建的环境。

2024-04-19 21:56:15 137

原创 史上最全Java核心面试题(带全部答案)2024年最新版

不可变对象指对象一旦被创建,状态就不能再改变。任何修改都会创建一个新的对象,如 String、Integer及其它包装类。公共静态不可变(public static final )变量也就是我们所说的编译期常量,这里的 public 可选的。实际上这些变量在编译时会被替换掉,因为编译器知道这些变量的值,并且知道这些变量在运行时不能改变。这种方式存在的一个问题是你使用了一个内部的或第三方库中的公有编译时常量,但是这个值后面被其他人改变了,但是你的客户端仍然在使用老的值,甚至你已经部署了一个新的jar。

2024-04-18 17:18:54 936

原创 企业自研CRM演进之路

客户数据日益增长,客户的圈选范围也日新月异,管理人员对于不同范围的客户分发工作也越来越庞大,这就导致每天需要花费大量的时间,根据不同的圈定范围去给一线人员分发客户,试想一下,每天手动回收数以万计的客户,再根据当日的规则,筛选出数以万计的客户,分配到不同的大区,不同的小组,以及不同的运营人员,重复又繁杂的手动操作往往让管理人员苦不堪言。基于平台现有能力,包括客户数据筛选,数据分配,外呼能力,短信能力等等,结合当下业务痛点的目标诉求,我们梳理了整套完整的业务链路,包括从任务创建,执行,分发,触达,结果反馈等。

2024-04-18 17:16:16 471

原创 后端入门课 02|SQL & GORM 必知必会

在 GORM 中,操作数据库需要预先定义模型,用来和数据表做映射。比如定义一个 User 结构体,这个结构体就是数据模型。底层使用 Golang 的 database 标准库,利用反射原理,执行读写操作时,将结构体翻译为 SQL 语句,并转换为对应的模型。Go复制代码。

2024-04-18 17:15:42 523

原创 史上最全Java核心面试题(带全部答案)2024年最新版

不可变对象指对象一旦被创建,状态就不能再改变。任何修改都会创建一个新的对象,如 String、Integer及其它包装类。公共静态不可变(public static final )变量也就是我们所说的编译期常量,这里的 public 可选的。实际上这些变量在编译时会被替换掉,因为编译器知道这些变量的值,并且知道这些变量在运行时不能改变。这种方式存在的一个问题是你使用了一个内部的或第三方库中的公有编译时常量,但是这个值后面被其他人改变了,但是你的客户端仍然在使用老的值,甚至你已经部署了一个新的jar。

2024-04-17 19:24:34 1111

原创 聊聊JIT是如何影响JVM性能的!

我们知道Java虚拟机栈是线程私有的,每个线程对应一个栈,每个线程在执行一个方法时会创建一个对应的栈帧,栈帧负责存储局部变量变量表、操作数栈、动态链接和方法返回地址等信息,每个方法的调用过程,相当于栈帧在Java栈的入栈和出栈过程但是栈帧的创建是需要耗费资源的,尤其是对于 Java 中常见的 getter、setter 方法来说,这些代码通常只有一行,每次都创建栈帧的话就太浪费了。

2024-04-17 19:16:18 981

原创 Redission排行榜、计数器实战-java示例

edission 是一个在 Redis 的基础上提供了许多分布式数据结构和服务的 Java 库。在实现排行榜或计数器等功能时,Redission 可以利用 Redis 的数据结构,如有序集合(sorted set)和哈希(hash),来高效地完成这些任务。

2024-04-17 19:15:21 634

原创 2025最新Java面试八股文大全!

不可变对象指对象一旦被创建,状态就不能再改变。任何修改都会创建一个新的对象,如 String、Integer及其它包装类。公共静态不可变(public static final )变量也就是我们所说的编译期常量,这里的 public 可选的。实际上这些变量在编译时会被替换掉,因为编译器知道这些变量的值,并且知道这些变量在运行时不能改变。这种方式存在的一个问题是你使用了一个内部的或第三方库中的公有编译时常量,但是这个值后面被其他人改变了,但是你的客户端仍然在使用老的值,甚至你已经部署了一个新的jar。

2024-04-15 21:14:43 639

原创 掌握Rust Trait:灵活和模块化代码的关键

定义trait时,只需列出方法签名,而不需要提供方法体。这些方法可以在不同的类型上具体实现rust复制代码trait是Rust中实现多态和代码复用的强大工具。通过定义共享的行为接口,trait允许不同的类型以一致的方式被处理。此外,trait的灵活性还体现在可以作为参数传递、可以被其他trait继承,以及可以提供默认实现等特性。

2024-04-15 20:52:34 838

原创 面试官:说一说CyclicBarrier的妙用!我:这个没用过...

在过去的几天里,我们基于AQS学习了不少内容,其中基于AQS构建的同步工具类也学了Semaphore(信号量)和CountDownLatch(倒计时器),甚至于也手撕过同步器,今天我们继续来学习另外一个同步类:CyclicBarrierCyclicBarrier(循环屏障):让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活。

2024-04-15 20:52:03 376

原创 2024最新Java面试八股文大全!

不可变对象指对象一旦被创建,状态就不能再改变。任何修改都会创建一个新的对象,如 String、Integer及其它包装类。公共静态不可变(public static final )变量也就是我们所说的编译期常量,这里的 public 可选的。实际上这些变量在编译时会被替换掉,因为编译器知道这些变量的值,并且知道这些变量在运行时不能改变。这种方式存在的一个问题是你使用了一个内部的或第三方库中的公有编译时常量,但是这个值后面被其他人改变了,但是你的客户端仍然在使用老的值,甚至你已经部署了一个新的jar。

2024-04-14 16:10:44 499

原创 Troubleshooting系列-应用JVM启动参数调优实践

最近重新梳理了JVM参数以及垃圾收集器相关知识,准备拿现网一些应用实践优化下。

2024-04-14 16:09:22 265

原创 wpf下RTSP|RTMP播放器两种渲染模式实现

wpf下实现低延迟的RTSP或RTMP播放,以上两种模式都可以尝试看,都不麻烦,如果想更灵活,可以采用回调rgb然后自己绘制的模式,如果想更省事,那么直接picturebox控件handle设置下去,底层自己绘制,以上是大概的实现逻辑,感兴趣的开发者,或有这方面技术诉求的,有问题可以单独跟我沟通。​。

2024-04-14 16:08:52 290

原创 史上最全Java核心面试题(带全部答案)

不可变对象指对象一旦被创建,状态就不能再改变。任何修改都会创建一个新的对象,如 String、Integer及其它包装类。公共静态不可变(public static final )变量也就是我们所说的编译期常量,这里的 public 可选的。实际上这些变量在编译时会被替换掉,因为编译器知道这些变量的值,并且知道这些变量在运行时不能改变。这种方式存在的一个问题是你使用了一个内部的或第三方库中的公有编译时常量,但是这个值后面被其他人改变了,但是你的客户端仍然在使用老的值,甚至你已经部署了一个新的jar。

2024-04-13 22:44:40 673

原创 【Redis技术进阶之路】「底层源码解析」揭秘高效存储模型与数据结构底层实现(跳跃表)

跳跃表是有序集合的底层实现机制之一,Redis的跳跃表实现精巧地由zskiplist和zskiplistNode两个结构共同构成。其中,zskiplist结构负责保存整个跳跃表的关键信息,如表头节点、表尾节点以及长度等,而zskiplistNode结构则用于具体表示跳跃表中的每一个节点。

2024-04-13 22:42:25 707

原创 浅析分布式业务一致性方案

现在有一种业务场景:A作为消息发送方,处理业务成功后,投递消息。B作为消息接收方,接收消息,处理业务。在这种业务场景中,我们希望A业务处理成功后,B业务也处理成功。A和B作为各自独立系统,如果想要保证业务一致性,并不像单体应用那么简单。

2024-04-13 22:41:49 535

原创 2024史上最全Java核心面试题

不可变对象指对象一旦被创建,状态就不能再改变。任何修改都会创建一个新的对象,如 String、Integer及其它包装类。需要全套资料及答案的在【翻到文章底部,点击名片】即可免费获取公共静态不可变(public static final )变量也就是我们所说的编译期常量,这里的 public 可选的。实际上这些变量在编译时会被替换掉,因为编译器知道这些变量的值,并且知道这些变量在运行时不能改变。

2024-04-12 21:18:52 888

原创 Python 教程 - 列表常用方法

上述的三种方式只能针对“元素内容不会发生变化”的列表,如果元素的“深层内容”会发生变化,就会出现奇怪的现象。=,可以比较两个列表是否相等,使用 ,可以比较列表的长度,注意,列表的比较只能针对相同类型的数据,如果比较数值和字符串的内容,就会发生错误。不填则使用默认 False,进行升序排序(从小到大),如果参数为 True 进行降序排序(从大到小),如果排序的是字符串,以字母的顺序进行排序。使用 slice 反转列表方法不会改变原始列表,会产生一个新的列表,在产生新列表时使用。

2024-04-12 20:41:58 587

原创 基于tcmalloc的高并发内存池

是在计算机技术中经常使用的一种设计模式,其内涵在于:将程序中需要经常使用的核心资源 先申请出来,放到一个池内,由程序自己管理,这样可以提高资源的使用效率,也可以保证本程 序占有的资源数量。经常使用的池技术包括内存池、线程池和连接池等,其中尤以内存池和线程 池使用最多。内存池内存池(Memory Pool) 是一种动态内存分配与管理技术。通常情况下,开发者习惯直接使 用newdeletemallocfree。内存池则是在真正使用内存之前,,再次申请池可以再取出来使用,并尽量与周边的空闲内存块合并。

2024-04-12 20:40:56 682

原创 史上最全Java核心面试题(带全部答案)2024年最新版

不可变对象指对象一旦被创建,状态就不能再改变。任何修改都会创建一个新的对象,如 String、Integer及其它包装类。需要全套资料及答案的在【翻到文章底部,点击名片】即可免费获取公共静态不可变(public static final )变量也就是我们所说的编译期常量,这里的 public 可选的。实际上这些变量在编译时会被替换掉,因为编译器知道这些变量的值,并且知道这些变量在运行时不能改变。

2024-04-11 20:43:03 672

原创 图解系列 - 一致性Hash算法(7K字 13 图讲解&附实现,看不懂你diss我)

在系统地学习一个知识点之前,我们首先需要做的就是了解该知识点具体解决了一个什么样的问题,比如雪花算法解决了一个分布式唯一ID生成器这样一个业务场景, 毕竟在生成例如电商系统的工单号的时候,是不能容忍出现相同的订单号这样的错误的。但是唯一ID生成的时候,并不意味着雪花算法就是唯一的方案,毕竟使用Mysql的自增主键和UUID也可以解决唯一ID这个问题。这个时候具体选用哪种实现,就需要根据具体的业务场景去选择了。那么一致性Hash 具体解决了一个什么样的问题呢?

2024-04-11 20:16:06 976

原创 基于 WebRTC 实现的点对点文件传输和音视频聊天工具 | 开源日报 No.220

Next-js-Boilerplate 是一个为 Next.js 14+ 提供支持的脚手架和起步工具,集成了 App Router 和 Page Router 支持、Tailwind CSS 3.4 和 TypeScript。tl-rtc-file 是一个基于 WebRTC 的文件传输工具,支持跨终端、不限平台的在线文件传输。rufus 是一个可靠的 USB 格式化工具。该项目主要解决了格式化和创建可引导 USB 闪存驱动器的问题。planka 是使用 React 和 Redux 构建的工作组实时看板。

2024-04-11 20:15:15 569

原创 2024最新Java面试八股文

不可变对象指对象一旦被创建,状态就不能再改变。任何修改都会创建一个新的对象,如 String、Integer及其它包装类。【翻到文章底部,点击名片】公共静态不可变(public static final )变量也就是我们所说的编译期常量,这里的 public 可选的。实际上这些变量在编译时会被替换掉,因为编译器知道这些变量的值,并且知道这些变量在运行时不能改变。

2024-04-10 19:32:51 1006

原创 Java并发设计的7条原则

对于共享可变数据,如果只读可以使用volatile保证可见性,如果需要写则要使用同步手段过度使用同步手段会导致开销大,尽量在同步区间少做操作并发包下的Executor框架将任务与执行分离,使用线程池管理线程,还有并行stream的fork join框架都优于单独使用线程并发包下的工具使用更简单,了解后尽量使用并发包下的工具对于可能被并发调用的类需要声明线程安全性文档:绝对线程安全、相对线程安全、线程不安全等。

2024-04-10 19:30:01 281

原创 Java SPI、Spring SPI 和 Dubbo SPI:扩展机制

SPI全称为Service Provider Interface,是一种动态替换发现的机制,一种解耦非常优秀的思想,SPI可以很灵活的让接口和实现分离,让api提供者只提供接口,第三方来实现,然后可以使用配置文件的方式来实现替换或者扩展,在框架中比较常见,提高框架的可扩展性。简单来说SPI是一种非常优秀的设计思想,它的核心就是解耦、方便扩展。

2024-04-10 19:27:40 286 1

原创 Java面试题总结(附答案)

所谓反射,是java在运行时进行自我观察的能力,通过class、constructor、field、method四个方法获取一个类的各个组成部分。在Java运行时环境中,对任意一个类,可以知道类有哪些属性和方法。这种动态获取类的信息以及动态调用对象的方法的功能来自于反射机制。序列化就是一种用来处理对象流的机制。将对象的内容流化,将流化后的对象传输于网络之间。

2024-04-09 20:18:54 789

原创 Spring Cloud Stream

关于如何构建一个统一化的消息通信平台,Spring Cloud Stream是我们值得深入分析和研究的一个框架。对于消息通信而言,我们需要分别实现消息的发布者和消费者。在Spring Cloud Stream中分别是Source和Sink组件。而消息的传递显然应该用到通道,所以Spring Cloud Stream也包含了Channel组件。最后,作为Spring Cloud Stream框架在设计上的一大特色,Binder组件专门用于屏蔽与各种消息中间件之间的技术差异,为开发者提供统一的API。

2024-04-09 19:59:50 1001

原创 关于Java异常处理的9条原则

只有针对异常情况才使用异常,不要使用异常来做程序的流程控制广泛的异常分为受检异常、运行时异常(非受检异常)和错误,通常只接触前两者,后者排查虚拟机错误时才接触对于运行恢复的情况抛出受检异常,程序错误或不确定是否允许恢复的情况抛出运行时异常受检异常必须进行处理,能够带来可靠,但太多会导致复杂,不catch处理受检异常时可以直接抛出优先复用已有的标准异常,不满足需求时再自定义设计抽象层次方法时,关注抽象层次异常,而不是具体实现异常,通过捕获具体实现异常再抛出抽象层次异常。

2024-04-09 19:50:57 943

原创 CSDN最新Java面试大全!

相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!⭐。

2024-04-08 21:07:01 207

原创 SAST-短小精悍的Benchmark

若你想要测试一款SAST分析引擎的分析能力,直接拿本文的测试样例去跑,根据测试结果就能大概评估引擎的分析能力了,这么短小精悍的Benchmark,你爱了吗!

2024-04-08 20:52:00 758

原创 深度剖析:Dubbo使用Nacos注册中心的坑

本文主要梳理了Dubbo使用Nacos注册中心的坑,同时也讲述了,出现问题时,如何一步一步排查。透过现象结合源码,逐步找到问题的真相。当然在排查之前,就需要对Dubbo和Nacos有一定的了解。所以各位朋友,在平时还是要多积累,多深入原理,这样遇到问题才能顺利解决。本篇完结!!!

2024-04-08 20:51:05 577

原创 Java核心面试题(带全部答案)2024年最新版

不可变对象指对象一旦被创建,状态就不能再改变。任何修改都会创建一个新的对象,如 String、Integer及其它包装类。公共静态不可变(public static final )变量也就是我们所说的编译期常量,这里的 public 可选的。实际上这些变量在编译时会被替换掉,因为编译器知道这些变量的值,并且知道这些变量在运行时不能改变。这种方式存在的一个问题是你使用了一个内部的或第三方库中的公有编译时常量,但是这个值后面被其他人改变了,但是你的客户端仍然在使用老的值,甚至你已经部署了一个新的jar。

2024-04-07 20:22:55 989

原创 JNI的源码实现分析

关于JNI的实现,我们大概按照三个阶段来分析的,启动阶段的JNI构建阶段,正常运行时Java_call_JNI的阶段,以及在jni_call_java的阶段构建阶段,在系统启动过程中,系统分加载jni相关的核心库,并导入相关的函数实现,同时创建虚拟机对象,并启动虚拟机,注册与此相关的JNI函数。

2024-04-07 20:20:23 574

原创 【Java设计模式】结构型设计模式-装饰者模式

Decorator类就是抽象装饰者角色;装饰者模式可以实现动态(在编译期是固定的,但是在运行期是随着Java程序运行的不同而变化的)地为一个对象增加新的功能;是使用组合或者聚合的形式代替继承的方式进行扩展新的功能(即扩展新的功能无需通过继承的方式增加子类)这样就使整个功能模块更加灵活,很好的避免了新增功能使得类快速增多从而使整个软件类复杂度极高的情况。进一步阐述:装饰者模式就像一个牙膏的生产过程,有主体和外包装,主体可以单独存在并成为一个产品,主体也可以加上外包装使之成为一个新的主体也是一个产品。

2024-04-07 20:19:08 349

原创 2024最强秋招八股文(精简、纯手打)

反射是通过获取类的class对象,然后动态的获取到这个类的内部结构,动态的去操作类的属性和方法。应用场景有:要操作权限不够的类属性和方法时、实现自定义注解时、动态加载第三方jar包时、按需加载类,节省编译和初始化时间;获取class对象的方法有:class.forName(类路径),类.class(),对象的getClass()当一个线程被剥夺cpu使用权时,切换到另外一个线程执行死锁指多个线程在执行过程中,因争夺资源造成的一种相互等待的僵局。

2024-04-03 15:55:47 892

原创 入门指南:使用 Netty 解码数据的简明步骤

getShortLE 是 bytebuf 的方法,用于获取小端序2个字节数据,参数6表示字节偏移6,可以看上面文档。decode 方法就是我们的解码方法,在这里我们主要对 ByteBuf 进行处理,它就是我们的数据。解码器,用于将字节解码为消息对象,在网路通信中,数据是以字节流形式进行传输的,而 ByteToMessageDecoder 作用是实现了这一个过程。由于 IMEI 是16位的字节数,我目前业务的实现方式是,将字节数组每一位转成 char,最后拼接起来转换成数字。读取 IMEI 16位字节的呢。

2024-04-03 15:47:31 376

原创 使用 Postman 传递请求参数:Query、Path 和 Body 教程

作为一个功能强大的工具,极大地简化了 API 测试和调试的过程,提供了发送请求和检查响应的直接方法。简单来说,请求参数是传递给服务器的数据,用于传递额外信息,在 API 请求中发挥着关键作用。提供了更为简化的请求参数设置方法,无论是查询参数、路径参数还是请求体参数,都通过直观的界面进行,简化了操作步骤。有时需要通过请求体传递更复杂的数据,Postman 的“Body”标签页简化了设置不同请求体参数的过程。与查询参数不同,路径参数作为 URL 路径的一部分,Postman 同样简化了它们的传递方式。

2024-04-03 15:46:45 742

原创 史上最全Java核心面试题(带全部答案)2024年最新版

不可变对象指对象一旦被创建,状态就不能再改变。任何修改都会创建一个新的对象,如 String、Integer及其它包装类。公共静态不可变(public static final )变量也就是我们所说的编译期常量,这里的 public 可选的。实际上这些变量在编译时会被替换掉,因为编译器知道这些变量的值,并且知道这些变量在运行时不能改变。这种方式存在的一个问题是你使用了一个内部的或第三方库中的公有编译时常量,但是这个值后面被其他人改变了,但是你的客户端仍然在使用老的值,甚至你已经部署了一个新的jar。

2024-04-02 22:02:18 483

空空如也

空空如也

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

TA关注的人

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