自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (2)
  • 收藏
  • 关注

原创 从平台线程到虚拟线程:Java并发编程的革命

虚拟线程是一种轻量级线程,旨在大大降低编写、维护和观察高吞吐量并发应用程序的工作量。它们最初作为JEP 425的预览功能提出,并在JDK 19中实现。为了获得更多反馈和经验,虚拟线程在JEP 436中再次作为预览功能推出,并在JDK 20中实现。该JEP提议在JDK21中最终确定虚拟线程。

2024-05-30 16:55:21 1058

原创 全面剖析UNIX网络编程的五种I/O模式

本文介绍了UNIX网络编程中五种主要的I/O模型:阻塞I/O、非阻塞I/O、I/O复用、信号驱动I/O和异步I/O。每种模型都有其独特的应用场景和优缺点,理解这些模型对于优化网络编程性能至关重要。通过实际的代码示例和详细讲解,您可以更好地掌握每种模型的工作原理和实现方法。

2024-05-28 17:13:17 871

原创 GPT如何看待AIGC技术

以下内容为AI生成。

2024-04-24 16:28:41 1110

原创 【GPT提示词指南(内附提示词)】

在LLM大型语言模型开发者大致有两种类型的LLM。

2024-04-24 10:38:38 717

原创 日志管理 GrayLog VS ELK

日志管理GrayLog

2022-06-07 18:38:59 1557

原创 Java 版本变更列表 (Java SE 8 ~ Java SE 18 )

java 版本变更列表Java SE 8Java SE 9Java SE 10Java SE 11Java SE 12Java SE 13Java SE 14Java SE 15Java SE 16Java SE 17Java SE 18参考资料: Wiki :java 版本历史Java SE 8Java 8 于 2014 年 3 月 18 日发布JSR 335,JEP 126 :lambda 表达式支持JSR 223,JEP 174 :Nashorn项目,一个 JavaScript 运行时,它

2022-04-11 17:55:06 1693

原创 mysql千万数据处理实践(java)

mysql千万数据处理实践背景线上一张数据表(数据量2500W)因为前期设计问题,导致某些关联关系没有整理,需要从这张表中重新整理对应的映射关系。A 主表(2500W)关联字段 a ,映射字段 bB 主表关联表 (6000W) 关联字段 c , dC 映射对应主表(80W) 关联字段 cD 映射对应主表(140W) 关联字段 dselect distinct C.c,A.b from A left join B on A.a = B.a left join C on B.c = C.c//

2022-03-02 19:19:58 1706

原创 父子线程间值传递

父子线程间值传递在项目中经常会遇到一个线程横跨若干个方法调用,需要传递对象上下文(context),例如用户信息session等,如果将对象进行方法传参,需要给每一个方法增加一个参数,这就存在过度传参的问题.或者调用一些已经存在的方法,有其他调用方,这时我们就不能随意修改方法传参.所以一般都是采用ThreadLocal来进行线程上下文传递。ThreadLocal的作用主要是做数据隔离,填充的数据只属于当前线程,对别的线程而言是相对隔离的。ThreadLocal<Integer> thr

2021-08-02 17:19:05 1806

原创 追本溯源 二进制

目录什么是二进制计算机为什么使用二进制关于符号位关于溢出二进制的原码、反码及补码二进制的位操作向左位移向右位移或运算与运算异或操作计算机系统依赖二进制计数法,可以说计算机的世界中只有0和1。我们所编写的程序最终到计算机都会转换成一个个0和1.什么是二进制我们平时生活中使用的都是十进制计数法,由0-9是个数字组成,逢十进一,高位在左,低位在右,从左往右依次书写。二进制则是由0和1组成,逢二进一,高位在左,低位在右,从左往右依次书写。例如数字 53十进制53 = 5 x 10^1 + 3 x

2020-09-27 14:43:30 702 1

原创 关于接口幂等性的设计

目录1. 背景2. 什么是幂等性3. 如何实现幂等性方法一 : synchronized关键字或者其他方式加锁方法二 :通过捕获数据库异常方法三:aop方法四:redis1. 背景关于支付相关,订单相关以及一些涉及费用的操作在业务上都是要求接口具有幂等性的。否则在高并发的场景下,同一笔交易请求多次,则会造成损失,这是不可忽视的错误。例如一笔订单,因为网络或者操作的原因,造成同时发起了两次申请。一般的接口设计中,对于重复发起的交易都是先查询是否存在这笔订单,如果不存在,则继续进行,并插入一条记录,如果

2020-09-22 18:23:29 412

原创 深入浅出了解mysql索引

目录一、什么是索引?二、索引的优缺点优点缺点三、常见的索引模型1. 哈希表优点缺点2. 有序数组优点缺点3. 搜索树四、B树 和 B+树的区别五、MySQL索引1. 索引的维护什么场景用业务字段做主键?2. 索引类型主键索引(Primary Key)二级索引(辅助索引)唯一索引(Unique Key)普通索引(Index)前缀索引(Prefix)全文索引(Full Text)3. 索引优化单列索引联合索引(多列索引)覆盖索引最左前缀原则索引下推4. 什么样的字段适合做索引1. 不为NULL的字段2. 被频繁

2020-09-21 22:03:41 319

原创 JVM垃圾回收

JVM垃圾回收简介垃圾收集主要是针对堆和方法区进行。程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后就会消失,因此不需要对这三个区域进行垃圾回收。一、对象是否可回收如何判断一个对象已经无效引用计数法:对象添加一个引用计数器,每当一个地方引用它,计数器+1;当引用失效,计数器-1.计数器为0的对象就是可回收的对象。(无法解决两个对象互相引用,导致计数器永不为0的情况)可达性分析:以GCRoot为起点进行搜索,可达的对象都是存活的, 不可达的对象可被

2020-09-15 18:32:28 1490

原创 原型模式知识汇总

原型模式原型模式属于设计模式中的创建型什么是原型模式使用原型实例指定要创建对象的类型,并通过复制这个原型来创建新对象。也就是指派一个类的实例来作为未来所有实例的生成器。原型模式的原理与应用当对象初始化开销很大,并且初始化参数的变化不大时,原型非常有用。在这种情况下,原型可以避免昂贵的“从头创建”,并支持廉价地克隆预初始化的原型。原型模式在其他创建模式中是独一无二的,因为它不需要类而只需要对象。为什么对象的初始化开销很大。实际上,在创建对象的过程中包含的申请内存、给成员变量赋值这一过程,本身并不

2020-09-11 18:25:30 214

原创 记录一下spring 3.x 升级 spring 4.x 的一些问题

升级原因因为一些原因需要升级项目jdk版本从1.7 升级到 1.8. 但是当前项目使用的是spring3.x 版本,并不兼容jdk1.7版本。所以需要升级为4.x版本的spring。遇到的问题org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [./xxxx.class]; nested exception is org.sprin

2020-09-08 11:17:44 614 1

原创 建造者模式归纳总结

建造者模式建造者模式属于设计模式中的创建型什么是建造者模式Builder模式,中文翻译为建造者模式或者构建者模式、生成器模式。 是一种对象构建模式。封装一个对象的构造过程,并允许按步骤构造。用户不需要知道内部的具体构建细节。它可以将复杂对象的构造过程与其表示相分离,因此相同的构造过程可以创建出不同属性的表示对象。建造者模式包含的角色Product(产品角色) :具体的产品对象Builder(抽象建造者):创建一个Product对象的各个部件指定的抽象接口。ConcreteBuilder(

2020-08-26 15:08:58 370 1

原创 工厂模式分析总结

工厂模式工厂模式属于设计模式中的创建型。工厂模式的分类工厂模式又可以细分为三类。分别为简单工厂、工厂方法、抽象工厂三种。其中简单工厂一般看做是工厂方法中的一个特例。工厂模式的好处**封装变化:**创建逻辑有可能变化,封装成工厂类之后,创建逻辑的变更对调用者透明。**代码复用:**创建代码抽离到独立的工厂类之后可以复用。**隔离复杂性:**封装复杂的创建逻辑,调用者无需了解如何创建对象。**控制复杂度:**将创建代码抽离出来,让原本的函数或类职责更单一,代码更简洁**增加代码可读性:**

2020-08-18 16:21:59 356 1

原创 详细了解单例模式

单例模式单例模式属于设计模式中的创建型。什么是单例模式一个类只允许创建一个对象,并提供该实例的全局访问点,这就是单例模式。应用场景1. 在资源访问冲突的场景中在解决资源竞争的场景时,往往是通过加锁的方式来解决竞争。但在有些场景中。可以通过单例模式来解决。例如有个日志类,负责记录系统调用日志,那么这个类就会被频繁访问并将信息写入日志。如果不采用单例模式,那么就会频繁创建对象,耗费系统资源。并且因为不同的对象,锁的粒度也要上升到类级别。对性能的影响也大。2. 全局唯一类在业务上,如果某些数据在系

2020-08-14 17:03:54 484 1

原创 wordPress 小白建站,教你亲手搭建一个自己的个人网站

wordPress 搭建前期准备服务器域名linux系统nginxmysqlphpwordpress1. 服务器搭建个人网站的前提是你需要购买一个自己的服务器。购买服务器这里推荐阿里云或者腾讯云都可以。自己使用的话配置 1核2G就够用 价格也合适。阿里云网站腾讯云2. 域名可以在阿里云购买一个.com的域名,一年的费用大概是55块钱;或者也可以购买.top域名,一年几块钱。域名注册购买以后需要做实名认证。实名认证过后2到3天。继续做域名备案。这样就可以通过你的域名访问你的个

2020-08-11 15:41:23 904

原创 Git 笔记(二)基础命令篇

Git 基础命令篇获取Git仓库通常有两种方式将尚未版本控制的本地目录转换为Git目录1. 首先进入这个本地目录。2. 执行git init 该命令将创建一个名为.git的子目录,这个子目录里包含了你初始化Git仓库所有的必须文件。此时仅是一个初始化操作,并没有跟踪文件。 3. 执行git add file 命令来指定文件进行跟踪。 git add * 跟踪所有文件 git add README.md 跟踪README.md文件。4. 执行git commit -m ‘init p

2020-07-16 16:45:57 352 1

原创 Git 笔记(一)简介

这一篇大概介绍了一下Git 如果想快速了解平时使用的Git指令请看下一篇Git 笔记(二)基础命令篇版本控制版本控制是记录一个或多个文件的变化内容,以便将来查找某个特定修订版本的系统。本地版本控制 RCS : 在硬盘上保存补丁集;通过应用所有补丁,可以计算出各个版本的文件内容 ;无法协作。集中化版本控制 SVN : 存在一个单一的集中管理的服务器,保存所有文件的修订版本,协同的人通过连接服务器获取文件的更新或者提交文件;存在单点故障隐患。分布式版本控制 Git :客户端不只提

2020-07-16 16:10:26 240

原创 分享一些我觉得比较好的网站

学习类1.Stack OverFlow地址 :https://stackoverflow.com/一个问答社区,相较于百度更能解决你的实际问题,而不是大量的水文。2.设计模式地址:https://sourcemaking.com/design_patterns讲解26种设计模式 里面有详细的讲解、类图 、代码示例。以上两个网站都是英文的。对学习英语也是一种帮助。3.并发编程网地址:http://ifeve.com/4.酷壳网地址:https://coolshell.cn/耗子叔的

2020-07-01 18:30:02 316

原创 spring aop与自定义注解的联合使用以及如何拦截mybatis层接口方法

spring-aop在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可...

2019-08-26 15:33:02 3202 3

原创 java 操作 User32 的一次小尝试

最近看到同学用C#写了一个连连看的破解小程序,顿时羡慕万分。后面翻阅资料的时候发现了java 居然也可以操作桌面系统。但是其中确遇到了很多的问题,这里记录一下。首先 项目刚开始就遇到了问题,利用jna jar包 中的user32 获取屏幕窗口 方法如下首先创建一个接口类 User32// 提供 获取窗口句柄 获取窗口矩形坐标 鼠标控制 public interface User32...

2019-08-09 16:37:56 4373 3

原创 深入理解java源码 mergeSort实现

操作数据的时候我们经常会用到排序。而java提供的排序是Collections.sort(List&amp;lt;T&amp;gt;);我们点进去可以发现在Collections类中有两个sort方法,区别是一个带有自定义比较器。底层实现一致。public static &amp;lt;T extends Comparable&amp;lt;? super T&amp;gt;&amp;gt; void sort(List&amp;lt;

2018-12-11 17:18:14 2583

23种设计模式说明和代码模板

23种设计模式说明和代码模板

2021-08-05

JVM垃圾回收.jpg

jvm 垃圾回收思维导图,总结了现有的垃圾回收器的有点以及使用场景、垃圾回收算法以及回收的判断依据。

2020-08-26

空空如也

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

TA关注的人

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