自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Activiti6-安装eclipse以及流程设计插件

这里使用的是 Luna R 版本这里不要使用浏览器下载(很慢),

2025-10-31 01:01:51 899

原创 JavaSE-多线程(5.3)- ReentrantLock (源码解析,非公平模式)

线程 t1 调用 lock.unlock();,但是线程 t2 不是立马进入running 状态,会从waitting 状态进入 ready 状态,待进入running状态后才继续执行循环体。由于此时 t1 线程已经是 running 状态,而 t2 是 ready 状态,所以 t1 优先获取到了锁,所以 t1 线程继续执行循环体,而 t2 线程进入 running 状态后 由于获取锁失败又会阻塞。程序运行结果与公平模式下对比,各个线程将各自任务执行完成后,才执行下一个线程的任务。

2025-09-22 10:41:22 201

原创 JavaSE-多线程(5.2)- ReentrantLock (源码解析,公平模式)

ReentrantLock 是 java JUC 包(java.util.concurrent)下的可重入锁工具类,具体功能实现依赖AbstractQueuedSynchronizer(AQS,抽象队列同步器),AQS 内部维护了一个变量 private volatile int state;默认为 0,当线程上锁以后值变成 1 (state 值改变通过实现),没有获取到锁的线程会加入等待对列。

2025-09-22 00:04:39 960

原创 8.2-spring 事务-声明式事务(@Transactional原理)

在一文中我们了解到 spring 通过 @Transactional 注解实现事务的操作,开发者只需要关注具体业务,而事务操作是通过 spring aop 实现的,即给使用了 @Transactional 注解的类生成代理类,然后执行具体的事务操作。生成代理类后执行事务的方式和 jdbc 提供的编程式事务方式类似,可以通过这篇文章查看详情。

2025-09-19 18:03:08 614 1

原创 8.1-spring 事务-声明式事务(使用)

事务可以保证数据操作原子性,即将对数据的操作看成一个整体,如果部分失败那么部分成功的也要回滚。spring 提供了声明式事务和编程式事务,以下对声明式事务做一些介绍。

2025-09-18 17:40:32 801

原创 JVM-(11)JVM-定位OOM问题

OOM 即 OutOfMemoryError(内存溢出),是由于 JVM 的垃圾回收器 (Garbage Collector) 无法回收出足够的空间来满足对象分配的请求,并且堆内存已经无法再扩大容量导致的异常。

2025-08-26 16:21:11 1064

原创 JVM-(9)JVM诊断的常用命令以及参数

在上文中我们了解了如何启动 JVM ,以及在启动时如何添加参数,不同于 Java 命令,JVM 诊断命令是用来诊断运行中的 JVM 的。

2025-08-26 10:06:25 757

原创 JVM-(8)JVM启动的常用命令以及参数

在上文中已经使用过一些 jvm 启动命令,本文着重讲述JVM启动命令用法以及一些常用的参数。

2025-08-22 10:24:32 879

原创 JVM-(7)堆内存逻辑分区

在这篇文章中我们了解了JVM 内存的逻辑分区情况,如下:在这篇文章中我们了解到,如果某个对象不再被使用就会被当成垃圾,而新建对象一般分配堆空间内存(大部分情况如此,Java对象在特定条件下可以在栈上分配内存)哪些情况Java对象可以在栈上分配内存?对象若满足以下条件,JVM会将其分配到栈上:‌1. 作用域受限‌:对象仅在方法内部使用,未被外部引用(如未作为返回值或被其他线程访问)。‌2. 小对象‌:通常指几十字节以内的小对象。‌3. 线程私有‌:仅被当前线程使用,不会跨线程共享。‌。

2025-08-21 15:25:52 1125

原创 JVM-(5)JVM内存模型

JVM由 运行时数据区、类加载器、执行引擎 等部分组成,在这篇文章中我们可以了解到,JVM是通过类加载器将 java 文件编译后的 .class 二进制文件加载到内存的,那么java程序在执行的过程中内存是如何分配的呢,本文将介绍这部分,通常说的 JVM内存模型指的就是分为 线程共享区 和 线程私有区线程共享区。

2025-08-18 10:39:46 980

原创 2-越权-纵向越权

纵向越权(Vertical Privilege Escalation)是指低权限用户通过漏洞非法获取高权限身份或能力,突破系统设计的权限层级,执行本不该被允许的操作。其本质是权限边界被打破,攻击者从低层级(如普通用户)跃迁至高层级(如管理员)。

2025-08-18 10:36:52 286

原创 使用spring-boot-starter-validation实现入参校验

由于新增、更新、查询、删除都可以使用一个实体接受入参,而不同情况需要校验的情况也不同,比如,新增时不需要校验id必填,删除时需要校验id必填,分组可以理解成不同策略,不同分组下可以使用不同的校验规则@Data@NotNull(groups = {Insert.class, Update.class, Query.class},message = "name 不能为空")

2025-08-11 16:03:40 343

原创 1-越权-横向越权

横向越权就是:相同权限等级的用户,非法访问了本不该属于他的其他用户的私有资源或数据。

2025-08-08 15:28:28 204

原创 数据分页异步后台导出excel

下面根据如上设计列出具体方案(没有文件服务器,直接从后台服务下载)

2025-08-04 23:11:21 706

原创 4)SpringBoot-自定义注解控制权限

Target({ElementType.TYPE, ElementType.METHOD}) 表示允许在类和方法上使用该注解/*** 权限点*//*** 权限点描述*/关于aop可从这篇文章了解@Aspect@Component@Autowired// 定义切点,匹配所有带有@Permission注解的类和方法//环绕通知// 1. 获取类上的权限注解Class<?// 如果类上没有定义权限直接放行。

2025-07-31 11:05:34 226

原创 2-Vue3应用介绍

应用实例必须在调用了 .mount() 方法后才会渲染出来。我们传入 createApp 的对象实际上是一个组件,每个应用都需要一个“根组件”,其他组件将作为其子组件。如果你使用的是单文件组件,我们可以直接从另一个文件中导入根组件。

2025-07-17 20:38:00 273

原创 1-创建Vue3项目

这一指令将会安装并执行 create-vue,它是 Vue 官方的项目脚手架工具。命令执行完后将在指定目录创建一个名为 vue-project 的项目。VSCode 可安装 Vue-Official 插件协助开发。② 执行 create vue 指令创建 vue 应用。已安装 18.3 或更高版本的 Node.js。① 新建项目目录,使用 VSCode 打开。执行如下指令,下载项目依赖。使用如下指令运行项目。

2025-07-17 20:00:27 296

原创 1-开发工具VSCode安装

这里选择 System Installer 版本,这样所有用户都能用。

2025-07-17 15:58:53 357

原创 5-Nodejs-npm与第三方模块

‌npm‌:全称Node Package Manager,是Node.js生态中的包管理工具,用于安装、更新、发布和管理JavaScript模块依赖。‌‌npm随Node.js自动安装,无需单独配置。

2025-07-16 11:38:43 667

原创 4-Nodejs模块化

自定义模块是一种封装和组织代码的方式,使得应用可以更加模块化,易于维护和复用。自定义模块可以是一系列函数、变量、对象或者其他模块的集合,它们可以被其他文件导入和使用。下面是如何创建和使用自定义模块的基本步骤:① 创建自定义模块。

2025-07-15 22:47:18 299

原创 3-Nodejs-使用fs文件系统模块

fs 模块是Node.js官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。

2025-07-15 21:47:28 205

原创 2-Nodejs运行JS代码

要注意的是,在nodejs环境中不能操作浏览器 DOM 对象相关的api,

2025-07-15 21:28:46 190

原创 1-Nodejs介绍与安装

在以往的认知中,JavaScript 通常嵌入在HTML中,由浏览器解析引擎解析执行,主要用于网页开发等web应用。Nodejs 是一个允许JavaScript运行在服务器端的平台,这意味着你可以在Node.js环境中脱离浏览器,直接运行JavaScript代码,无需通过浏览器。Node.js提供了许多内置模块,如fs(文件系统)、http(HTTP模块)等,允许开发者进行文件操作、网络编程等。

2025-07-15 17:47:00 351

原创 2-Git提交本地项目到远程仓库

新增远程仓库成功后复制远程仓库地址。

2025-07-11 15:20:02 254

原创 1-Git安装配置与远程仓库使用

在 Git 中添加 SSH Key 的主要作用是安全、方便地进行身份验证,让你无需每次都输入用户名和密码就能与远程 Git 仓库(如 GitHub, GitLab, Gitee, 自建 Git 服务器等)进行安全的通信。上述步骤执行完后会在提示的文件夹下生成公钥(id_rsa.pub)和私钥(id_rsa),这里涉及到非对称加密的知识,简而言之 明文+公钥 经过加密算法变成密文,密文+私钥经过解密算法变成明文,不做过多解释。在任意文件夹空白处右键,选择 Open Git Bash here,

2025-07-11 14:36:53 417

原创 5-Kafka-replication(副本机制)概念

生产环境推荐:分区数 = 消费者数量 × 1.5,副本数 ≥ 3,min.insync.replicas=2。如下:kafka集群有三台服务器,某个主题有2个分区和3个副本(一个Leader,两个Follower):Follower 可处理只读请求(需特殊配置)分区数决定并行度上限,副本数决定容灾能力。:Leader 故障秒级切换。:多副本冗余防数据丢失。参考:deepseek。

2025-07-08 13:57:24 347

原创 4-Kafka-partition(分区)概念

如下:有三台kafka集群,cnbook 主题有三个分区,这三个分区分别位于不同的 broker。

2025-07-08 10:33:15 576

原创 3-Kafka常用指令

删除 Topic 后需手动清理 Zookeeper 元数据(路径)及磁盘日志文件(log.dirs目录)。

2025-07-07 15:53:21 365

原创 1-Kafka介绍及常见应用场景

Apache Kafka 是一个开源的 分布式流处理平台,最初由 LinkedIn 开发,后捐赠给 Apache 软件基金会。它被设计用于高吞吐量、低延迟、可水平扩展地处理实时数据流。

2025-07-07 15:37:15 910

原创 2-jdk8环境下安装Kafka

第一步,进入目录 /usr/local/kafka/kafka_2.13-3.7.0/config。1)新建 kafka 目录,此处文件夹为 /usr/local。2)将压缩包上传到 /usr/local/kafka目录下。2)修改配置文件,配置server.properties。第二步,修改 server.properties 文件。备份 server.properties 文件。进入 kafka bin 目录。出现如下日志,说明启动成功。使用消费者来查看这些消息。执行如下命令使配置生效。

2025-07-04 11:59:59 372

原创 win10开启热点失败原因

5、右键WIN10的"以太网"网线连接,点击属性,进入共享设置,任意选择一个家庭网络连接,再点击“确定”退出;然后,再次进入共享设置,去掉勾选的“连接共享”选项,并“确定”退出。3、打开手机WIFI设置,搜索并连接在WIN10中所设置的移动热点名称;在Win10系统,设置并共享WIFI移动热点后,但是用手机(或其它网络设备)却无法链接,或者搜索不到网络,遇到这种问题该如何解决呢?6、在WIN10系统中,再次点击打开“移动热点”;豹5首创新能源车世界纪录。豹5首创新能源车世界纪录。

2024-05-09 00:02:45 1215 1

原创 一个草稿对对对

‘北京赛车’ order by item;= ‘北京赛车’ order by item。

2023-12-25 03:16:49 517

原创 对外接口签名生成方式

当某个系统对外部系统提供接口访问时,为提高接口请求安全性,往往会在接口访问时添加签名,当外部系统访问本系统签名验证成功时才能正常返回数据,一般接口提供方会与外部系统提前约定好,不同外部系统用 appKey 加以区分,并且不同 appKey 对应不同秘钥(secretKey)

2023-07-31 09:59:26 1219

原创 JDK8-2-流(3)- 流操作(2)

例如筛选每种类型菜肴中最高卡路里的菜肴。

2023-06-19 17:28:16 221

原创 JDK8-2-流(2)- 流操作

上篇中简单介绍了什么是流以及使用流的好处,本篇主要介绍流的操作类型以及如何操作。

2023-06-18 11:40:51 381

原创 JDK8-2-流(2.3)- 流操作-reduce (归约)

reduce 可以把一个流中的元素组合起来,例如可以计算一组数的总和。

2023-06-18 11:17:47 239

原创 JDK8-2-流(2.2)- 流操作-flatMap

flatMap (流的扁平化处理)

2023-06-16 11:45:39 306

原创 JDK8-2-流(2.1)- 流操作-distinct

注意:对象去重需要重写 equals 和 hashCode 方法(默认对象 equals 方法比较的是对象内存地址是否一致),由 distinct 内部具体实现类 java.util.stream.DistinctOps 可以看出这点。IDEA 如何自动生成 equals 和 hashCode 方法空白处右键选择 Generate 或者Alt + Ins 快捷键使用 filter 方法去重。

2023-06-15 12:08:08 290

原创 JDK8-2-流(1)-简介

流是Java API的新成员,它允许你以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现),可以把它们看成遍历数据集的高级迭代器。此外,流还可以透明地并行处理,你无需写任何多线程代码!

2023-06-14 11:49:54 567

原创 JDK8-1-Lambda表达式(5)-复合 Lambda 表达式

Function<?super T,?@Override@Override相当于 Comparator.comparing 帮我们实例化一个 Comparator ,这个方法入参为 Functionreversed。

2023-06-10 17:19:58 810

空空如也

空空如也

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

TA关注的人

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