logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

BIO、NIO 和 AIO 的区别?

在 Java 后端开发中,I/O 操作(如网络通信、文件读写)是核心场景——小到接口调用,大到分布式中间件(如 Netty、Kafka),都依赖 I/O 模型的支撑。而 BIO、NIO、AIO 作为 Java 中三种主流 I/O 模型,直接决定了系统的并发能力、资源开销和响应速度。很多人初学时常混淆“同步/异步”“阻塞/非阻塞”,甚至觉得“NIO 就是异步”——其实三者的差异本质是“线程与 I/O

#java#nio
什么是分布式系统?和集群的区别?

分布式系统需要各个主机之间通信和协调主要通过网络进行,所以,分布式系统中的计算机在空间上几乎没有任何限制,这些计算机可能被放在不同的机柜上,也可能被部署在不同的机房中,还可能在不同的城市中,对于大型的网站甚至可能分布在不同的国家和地区。先说集中式,集中式系统就是把一整个系统的所有功能,包括数据库等等全部都部署在一起,通过一个整套系统对外提供服务。分布式系统中的多台计算机之间在空间位置上可以随意分布

文章图片
#java#后端#集群
全局唯一订单号生成(分布式ID)

其中系统标识码用于区分具体是什么业务(如交易订单、库存、积分等),表下标为了兼容分库分表的场景,序列号采用雪花算法生成。这里的雪花算法,采用IdUtil.getSnowflake实现的。为了生成一个这样一个全局的订单号,我自定义了一个分布式 ID 生成器,其中包含了三部分内容,分别是系统标识码、表下标以及序列化。业务码用来区分具体的业务,如交易订单、支付单等,然后雪花算法用来保证唯一性,分表信息用

#java
SpringBoot定时任务 - 分布式quartz cluster方式

通常我们使用quartz只是实现job单实例运行,本例将展示quartz实现基于数据库的分布式任务管理,和控制job生命周期。

#分布式
Java线程的生命周期

例如,调用Thread.sleep(long millis)方法,Object.wait(long timeout)方法,Thread.join(long millis)方法,或者LockSupport.parkNanos(long nanos)方法。例如,调用Object.wait()方法,或者Thread.join()方法(不带超时时间),或者LockSupport.park()方法。在Jav

#java
JVM类卸载时机

误区 1:“只要类的实例被回收,类就会被卸载”—— 错误。类的卸载还需类加载器无引用、静态成员无引用,且触发 GC。误区 2:“系统类加载器(AppClassLoader)加载的类会被卸载”—— 几乎不可能。系统类加载器加载的类(如、应用程序的主类)通常会被静态引用(如main方法所在类),且系统类加载器本身始终有引用,因此其加载的类几乎不会被卸载。误区 3:“元空间不会内存溢出,因此无需关注类卸

#java#jvm
如何在 Spring MVC 中实现跨域资源共享(CORS)?

跨域资源共享(Cross-Origin Resource Sharing, CORS)是一种机制,它使用额外的HTTP头来告诉浏览器让运行在一个源(domain)上的Web应用被准许访问来自不同源服务器上的指定资源。

Redis作缓存时存在的问题及其解决方案

Redis最常用的一个场景就是作为缓存,本文主要探讨Redis作为缓存,在实践中可能会有哪些问题?比如一致性, 穿击, 穿透, 雪崩, 污染等。

#redis
线程的基础概念

如果在main线程中调用了t1.join(2000),那么main线程会进入到等待状态,需要等待t1执行2s后,在恢复到就绪状态等待CPU调度。CPU在极短的时间内,反复切换执行不同的线程,看似好像是并行,但是只是CPU高速的切换。如果在main线程中调用了t1.join(),那么main线程会进入到等待状态,需要等待t1线程全部执行完毕,在恢复到就绪状态等待CPU调度。不如要处理一个网络等待的操

文章图片
#开发语言#java
自定义 TypeHandler 实现隐私数据自动加解密

GCM需要AES密钥使用256位AES密钥随机IV初始化向量(IV)的作用是确保即使多次用同一密钥加密相同数据,加密后的数据也是唯一的一个12字节的数组来存储IV生成逻辑// 生成AES密钥// 使用256位AES密钥// 输出 Base64 编码的字符串// 生成随机IV// GCM推荐的IV长度是12字节// 输出 Base64 编码的字符串// 生成AES密钥// 使用256位AES密钥//

    共 13 条
  • 1
  • 2
  • 请选择