自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 问答 (1)
  • 收藏
  • 关注

原创 Java Springboot应用监控保姆级教程

Spring Boot 官方提供了应用监控,也就是Spring Boot Actuator,它包含了许多功能,例如健康检查、审计、指标收集、HTTP 请求追踪等,程序运行过程中 Spring Boot Actuator 将信息收集起来后,通过 HTTP 和 JMX 两种方式暴露给外部。例如通过访问 /health路径,可以看到应用的健康信息,但是这些端点返回的数据是 JSON 格式的,不方便查看,也不方便分析,所以Spring Boot Actuator 要和一些外部模块一起使用,

2025-04-30 21:54:16 243

原创 springboot2.x集成swagger保姆级教程

Swagger 是一款用于 API(应用程序接口)设计、开发、文档化及测试的工具框架,可简化 API 全生命周期管理。它通过标准化规范(OpenAPI)定义接口,自动生成交互式文档、客户端 / 服务端代码,支持在线调试,提升前后端协作效率,常见于 RESTful API 开发,核心工具包括 Swagger UI(可视化文档)、Swagger Editor(接口设计)等,让 API 开发更透明、高效。

2025-04-30 16:43:22 974

原创 7.java-nio-零拷贝案例和原理

可知,传统IO使用了4次拷贝中,前3次都发生了CPU上下文切换,并且使用了2次DMA拷贝,2次CPU拷贝:1.硬盘—>内核(用户态切换到内核态),2.内核—>jvm程序内存(内核态切换到用户态),3.jvm程序内存—>socket缓冲区(用户态切换到内核态),4.socket缓冲区—>网卡,随后write函数返回,发送完成(内核态切换到用户态)所谓的零拷贝不是不拷贝,而是不经过CPU拷贝,它还是需要拷贝的(比如将数据从硬盘拷贝到内核态),这个零拷贝是从操作系统(CPU)的角度看的。

2025-04-23 15:55:20 454

原创 6.java-nio-Selector常用方法

创建Selector的过程:创建Selector实例并在内部维护一个数组,这个数组存放所有注册的Channel,然后调用epoll系统函数,linux版本的jdk中,调用epoll生成C语言结构体,并在结构体内部维护socket,并与Java进程中的channel关联。public abstract int select(long var1):监听所有注册的通道并进入阻塞,直到任意一个channel里面获取到一个事件时才返回,如果超过指定毫秒值也很返回,返回的int表示发生的事件数量。

2025-04-23 15:54:45 237

原创 5.java-nio-FileChannel常用方法

虽然在应用程序中,数据全部写入完毕了。public long read(ByteBuffer[] dsts, int offset, int length) throws IOException:将数据读取到指定的多个buffer容器中,将数据分散,可以指定偏移量和读取长度。public final long read(ByteBuffer[] dsts) throws IOException :从该通道的当前文件位置开始读取字节到缓冲区,并且用实际读取数更新读取下标指针的位置,如果读取完了返回-1。

2025-04-23 15:54:07 785

原创 5.java-nio网络Channel常用方法

Channel对象可以异步的读写,每次读写都要依赖Buffer才能操作数据,所以有时候说Java NIO是面向缓冲区的。FileChannel:面向文件的读写,文件读写和IO流一样是阻塞IO模式DatagramChannel:面向UDP网络读写数据SocketChannel:面向TCP网络读写数据ServerSocketChannel:可以监听TCP连接,类似一个监听器,会为每个进来的连接创建一个SocketChannel,它本身不会传输数据。

2025-04-23 15:53:30 701

原创 4.JAVA IO区别和NIO常用方法

然后将position设到最后一个未读元素的后面。public Buffer clear() :清空buffer,position将被设为0,limit设置成capacity,此时是假清空,只是将记录指针重置了,并没有删除数组的数据,数据还在原来的位置,只不过当新数据写入buffer时,原有的数据会被覆盖。public Buffer flip():反转此缓冲区,将limit设置为当前position的位置,然后将position设置为0 ,为了写入数据到buffer中后,方便再次从buffer中读取。

2025-04-23 15:52:58 917

原创 2.Java模拟BIO请求响应

使用了junit4.12。

2025-04-23 15:52:08 65

原创 1.JAVA-IO模型概述

BIO(Blocking IO):同步阻塞IO,在服务器程序中,一个请求就要对应一个线程来处理,客户端发起请求,服务器如果没有足够的线程来响应,请求就会阻塞(这就是阻塞的地方),直到有可用的线程处理请求,处理完成后才能返回给客户端。即使该请求只是想读取一个几KB的数据。服务器维护线程池有很大的开销,大量的线程切换也会降低程序性能。阻塞IO模型虽然性能不高,但实现简单而且支持很多场景,比如轻量级请求、重量级请求、持久连接。服务器程序tomcat、apache就是用阻塞IO实现的。

2025-04-23 15:51:20 238

原创 windows10/11 jdk安装流程和环境变量配置

OpenJDK和JDK的区别:Java是Sun公司开发的一款编程语言,JDK作为Java语言的开发环境,JDK的维护由Sun公司主导,2009年Oracle收购了Sun公司,JDK的下载地址也迁移到了Oracle官网。Sun公司在2006年的Java大会上称将对Java开放源代码,于2009年正式发布OpenJDK,OpenJDK完全自由,开放源码。OpenJDK在大体上和JDK正式版一致,但在运行某些开源框架时,会出现无法运行等情况,学习测试建议使用OracleJDK版。

2025-04-23 15:50:04 218

原创 8.c语言预编译

代码中使用这些宏变量,在编译时都会替换为常量对应的值#define A 100 //定义常量A的值为100#define B "hello" //定义常量B的值为hello//打印A//换行printf(B);//打印Breturn 0;//打印100hello。

2025-04-22 10:27:40 179

原创 4.各进制的常量表示

define可以任意使用,如果定义的define常量是int类型,但赋值给了short也不会报错,因为define不做类型检查,只有在代码编译的时候会报错。在预编译时(代码编译之前)进行替换,将代码中所有使用到的define常量替换为常量值。直接常量表示下列这种,都没声明变量,直接拿来使用的,叫做直接常量。const常量语法:const 数据类型 常量名 = 常量值。define不能调试,因为在预编译时就已经替换为常量值了。define常量声明时也不用指定数据类型。const常量值只能用直接常量赋值。

2025-04-21 23:43:35 123

原创 6.判断语句与循环

goto关键字可以无条件的任意跳转,所以在c中一般不主张用goto,因为可能造成程序混乱。由于判断在后,先执行代码,在判断是否循环,所以do.while保证至少执行一次循环代码。

2025-04-21 23:16:16 139

原创 2.安装c语言环境

它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,是将GCC编译器和GNU Binutils移植到Win32平台下的产物,包括一系列头文件(Win32API)、库和可执行文件,目前提供w32和64。安装完成后关闭包管理器,如果由于某种原因安装未能成功,在退出程序前程序将给予提示,选择review changes选项重新安装即可。然后点击左上角的Installation菜单中的Apply changes选项,然后管理器将开始在线安装或更新被选中的组件。

2025-03-12 16:48:14 248

原创 1.C语言的来源

第二代编程语言使用了助记符,以及一些符号来编写程序。最终这个文件经过汇编编译器编译成机器语言,再让CPU执行。但是需要记住的助记符也非常多,我只是想输出一个hello world,却要编写一二十行代码。由于CPU只认识二进制,最早期的应用程序要想CPU执行,需要编写机器码,也就是0101的二进制代码串,CPU才能识别。由于汇编语言的繁琐,第三代语言C语言出现了。使用少量的代码就可以完成输出hello world。C语言代码文件经过C语言编译器编译成汇编语言,再编译为机器语言,最后交给CPU执行。

2025-03-12 16:46:40 150

原创 5.C语言运算符的说明

位运算,按二进制向右移动bit位,多余的低位丢掉,正数高位补0,负数高位补1。<<:位运算,按二进制向左移动bit位,多余的高位丢掉,低位自动补0。1100,如果双方相同的bit位一致就保持原数,不一致就为0。1101,如果双方相同的bit位一致就保持原数,不一致就为1。0001,如果双方相同的bit位一致就为0,不一致就为1。0000=240,移动一个位相当于乘以2,相当于60。0011,将每个bit位取反,0改为1,1改为0。15,移动一个位相当于除以2,相当于60。

2025-03-12 16:24:17 235

原创 手把手教学,免费不限速内网穿透,zerotier值得拥有

下载安装包并安装,点击顶部的Add Network后,出现如下界面,将zerotier配置界面中的16位网络ID配置到其中并点击add保存,返回到上层界面点击右侧开关开始连接,稍后即可在zerotier配置界面中看到客户端已经连接。p2p模式对网络环境要求高,如果网络环境是对称带宽、多设备之间运营商不一致等问题,会导致设备直连通道建立失败,此时数据将会先发到中转服务器,然后在转发给内网设备,而zerotier的中转服务器都在国外,就会造成很慢的访问状况。在linux中执行命令安装zerotier。

2023-07-14 16:30:20 7154

原创 程序员必备-常用镜像加速网站,会陆续补充

github加速器windows下载地址

2023-07-07 11:29:00 685

原创 免费临时邮箱-可自动销毁

临时邮箱,也称为一次性邮箱或匿名邮箱,根据它的邮件有效期也分为10分钟邮箱、30分钟邮箱和24小时邮箱,甚至5日邮箱等。临时电子邮件:https://dropmail.me/zh/,刷新/关闭该页面前电子邮件无有效期限制,提供多语言支持,而且内置转发功能,设置转发后长期有效。60分钟邮箱:https://www.guerrillamail.com/zh/,Guerrilla Mail 支持收发邮件。lang=zh-cn。60 分钟邮箱:https://www.moakt.com/zh/mail。

2023-07-07 11:05:21 3193

原创 3.Repository自定义增删改查

注解的属性value为hql语句,hql语句在执行时,hibernate会对其进行编译,将其中的实体类名称、成员变量按照驼峰命名规则转换为log_id类似的数据库字段。需要在Repository的该方法上添加@Modifying注解,@Modifying表示这个sql执行的是delete,update语句,如果不加会抛异常。nativeQuery=true时,这条语句是sql语句,hibernate不会对其编译,按照原生sql语句执行。如果sql语句中有条件,可以用?1取方法形参中的第一个参数,?

2023-07-07 10:47:24 371

原创 1.读懂JPA

Spring Data JPA 是 Spring 基于 Spring Data 框架、在JPA 规范的基础上开发的一个框架,使用 Spring Data JPA 可以极大地简化JPA 的写法,可以在几乎不用写实现的情况下实现对数据库的访问和操作,除了CRUD外,还包括分页和排序等一些常用的功能。Repository的作用是提供通用的crud方法,Repository是以模板方法设计模式,一步步继承,越往下的Repository接口,作用越强大。Spring Data JPA底层使用Hiberbate实现。

2023-07-07 10:02:17 94

原创 3.mybatis-plus配置乐观锁

此时B操作进行修改时,通过版本号比对进行修改。就会发现为0的版本号不存在。从而修改失败,打印sql执行语句可以发现,如下所示,B操作修改的返回值是0。没有任何一条数据受到影响,说明修改失败,可以通过do while语句进行循环。直到返回值不为0时才算修改成功。当两个修改操作同时查询一个数据,都获取到了版本号为0的数据。A操作先行修改后,版本号变为了1。mybatis-plus提供了@version注解,用于乐观锁功能。

2023-07-07 10:02:07 323

原创 7.springboot配置定时任务

在java项目中使用定时任务常用的实现方式有 Timer定时器,Hu tool工具包,Quartz等 ,Quartz是一个完全由 Java 编写的开源作业调度框架,可以用它来实现定时任务。每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * *?每月1号凌晨1点执行一次:0 0 1 1 *?每隔1分钟执行一次:0 */1 * * *?每隔1小时执行一次:0 0 */1 * *?每隔5秒执行一次:*/5 * * * *?每天凌晨1点执行一次:0 0 1 * *?

2023-07-07 10:01:09 418

原创 2.springboot配置jpa

JPA Page类属性如下。7.分页查询测试打印如下。

2023-07-07 09:59:59 1176

原创 2.mybatis-plus配置雪花算法ID生成器

使用id_worker策略,调用mp的方法写入db时,如果实体类ID为null,则mp自动给ID赋上64位数字ID。1.数据库对应的类型至少是bigint,实体类中主键ID必须是Long类型,long、int、Integer会报错。2.配置机器序列,0-31之间的数,且必须同时配置 worker-id和datacenter-id才能生效。在分布式环境下,可以通过配置类指定mp的ID生成器的机器序号,来保证分布式下的ID唯一。

2023-07-07 09:59:22 1800

原创 1.springboot整合mybatis-plus

MP如果要配置二级缓存,需要使用2.0.4以下的版本,以上的版本二级缓存被优化了,不会使用二级的,需要额外配置,可百度。//向maven声明,构建项目的class目录时创建xml文件,否则运行时每个dao接口绑定不上xml文件。6.业务层实现类声明,并继承MP通用的工具类,该工具类提供了大量的crud方法。5.service层接口也继承MP通用的服务接口,并声明该接口用于哪个实体类。配置完后再测试,数据正常,并且大部分的CRUD方法已经实现了。4.dao层接口继承MP的工具类接口。

2023-07-07 09:58:53 335

原创 6.springboot自定义starter

自定义启动器名-spring-boot-starter。启动器依赖自动配置;别人只需要引入启动器(starter)​ 1、这个场景需要使用到的依赖是什么?专门来写一个自动配置模块;​ 2、如何编写自动配置。启动器只用来做依赖导入;

2023-07-06 11:10:55 112

原创 5.springboot整合JDBC及原理

1)、编写一个实体类(bean)和数据表进行映射,并且配置好映射关系;//使用JPA注解配置映射关系 @Entity //告诉JPA这是一个实体类(和数据表映射的类) @Table(name = "tbl_user") //@Table来指定和哪个数据表对应;如果省略默认表名就是user;@Id //这是一个主键 @GeneratedValue(strategy = GenerationType . IDENTITY) //自增主键 private Integer id;

2023-07-06 11:09:47 301

原创 4.springboot整合web及原理

1、简介使用SpringBoot;1)、创建SpringBoot应用,选中我们需要的模块;2)、SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来3)、自己编写业务代码;自动配置原理?这个场景SpringBoot帮我们配置了什么?能不能修改?能修改哪些配置?能不能扩展?xxxxxxxAutoConfiguration:帮我们给容器中自动配置组件;xxxxProperties:配置类来封装配置文件的内容;2、SpringBoot对静态资源的映射规

2023-07-06 11:05:19 1775

原创 3.springboot整合日志框架

日志框架就不直接加载日志的配置项,由SpringBoot解析日志配置,可以使用SpringBoot的高级Profile功能。换上新的框架,重新修改之前相关的API;日志门面(日志的一个抽象层);以后开发的时候,日志记录方法的调用,不应该来直接调用日志的实现类,而是调用日志抽象层里面的方法;我们之前的日志框架都是实现的抽象层;​ 2)、SpringBoot也把其他的日志都替换成了slf4j;​ Spring框架用的是commons-logging;每一个日志的实现框架都有自己的配置文件。

2023-07-06 11:03:55 182

原创 2.springboot配置文件详解

这个配置类就会给容器中添加各种组件;这些组件的属性是从对应的properties类中获取的,这些类里面的每一个属性又是和配置文件绑定的;5)、所有在配置文件中能配置的属性都是在xxxxProperties类中封装者‘;每一个这样的 xxxAutoConfiguration类都是容器中的一个组件,都加入到容器中;作用:必须是@Conditional指定的条件成立,才给容器中添加组件,配置配里面的所有内容才生效;Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别;

2023-07-06 11:01:16 450

原创 1.springboot入门

简化Spring应用开发的一个框架;整个Spring技术栈的一个大整合;J2EE开发的一站式解决方案;

2023-07-06 10:59:02 132

原创 Spring Boot

2014,martin fowler微服务:架构风格(服务微化)一个应用应该是一组小型服务;可以通过HTTP的方式进行互通;单体应用:ALL IN ONE微服务:每一个功能元素最终都是一个可独立替换和独立升级的软件单元;详细参照微服务文档http://www.gulixueyuan.com/ 谷粒学院环境约束–jdk1.8:Spring Boot 推荐jdk1.7及以上;java version “1.8.0_112”–maven3.x:maven 3.3以上版本;Apache Maven 3.3.9–In

2023-07-06 10:55:33 492

原创 Java工具类-easyexcel表格操作

写一个监听器,用来执行读写后的操作。

2023-07-06 10:44:07 293

原创 Java工具类-生成随机汉字和名称

【代码】Java工具类-生成随机汉字和名称。

2023-07-06 10:39:52 1480

原创 Java工具类-根据数据库表结构生成文档、HTML、markdown等格式

引入如下pom依赖,创建一个启动类,application.yml配置文件都不用写。

2023-07-06 10:36:33 606 1

原创 3.各个运算符和三目运算表达式

虽然由于较长的指令流水线和其他架构设计选择,现代处理器通常执行加法和乘法的速度与位运算一样快,但由于资源使用减少,位运算通常会使用较少的功率,所以在一些Java底层算法中,巧妙的使用位运算可以大量减少运行开销,逻辑运算也属于位运算,只不过其是进行判断,比如 &与,两者都为1,结果才为1。由于右移运算的特性,正数高位补0,负数补1,一个正数右移动的位数大于它本身的二进制补码位时,结果总是0,一个负数右移动的位数大于它本身的位时结果总是-1,所有有了无符号右移运算(>>>)最终sex的结果是y。

2023-07-05 16:45:18 138

原创 2.基本数据类型和运算符

/如果是整数型,范围在0-65535,一些常用的英文以及符号都在0 - 255范围之内放着。//输出:ὧ 取值范围在\u0000 到 \uffff。//输出:帅 获取Unicode的某个编码,//如果是16进制表示,就代表Unicode编码表的某个字符。//输出:|| 0-65535。局部变量要使用必须赋值, 如果只声明没赋值就使用,会编译错误。Byte,short,int,long默认是都是0。Float与double类型的默认是0.0。对象类型的默认值是null**Char类型的默认值是’’

2023-07-05 16:45:14 65

原创 1.jdk概述和安装

OpenJDK和JDK的区别:Java是Sun公司开发的一款编程语言,JDK作为Java语言的开发环境,JDK的维护由Sun公司主导,2009年Oracle收购了Sun公司,JDK的下载地址也迁移到了Oracle官网。不同平台的jdk(例如Mac,Linux,Windows),有不同的jvm虚拟机,可以零差别运行class文件,实现了一次编译,到处运行的效果。OpenJDK在大体上和JDK正式版一致,但在运行某些开源框架时,会出现无法运行等情况,学习测试建议使用JDK正式版。jdk,包含jre和jvm。

2023-07-05 16:25:02 119

原创 3.网络协议

TCP是面向字节流的,即把应用层传来的报文看成字节流,将字节流拆分成大小不等的数据块,并添加TCP首部;UDP是面向报文的,对应用层传下来的报文不拆分也不合并,仅添加UDP首部;答:TCP对应的典型的应用层协议: FTP:文件传输协议;SSH:远程登录协议;答:UDP对应的典型的应用层协议: DNS:域名解析协议;的应用层协议: DNS:域名解析协议;TCP/IP:网络通信协议,像HTTP,FTP,等协议都是TCP/IP协议的子集。链路层:网络传输的硬件部分都是链路层,如:网卡,网线,网络适配器,路由器。

2023-07-05 16:05:33 68

directX修复、dll问题修复工具

windows-directX修复、dll缺少问题修复工具

2025-05-27

DDU显卡驱动卸载工具

一键清理显卡驱动残留。支持NVIDIA、AMD显卡

2025-05-27

中国所有省市区行政地区表sql,包含地区编码

2023最新数据,中国所有省市区行政地区表sql,包含地区编码

2023-07-06

条码商品数据100万条

国家条形码库正规商品100万条记录,可用扫码枪等设备正常扫描,用于测试、正式使用等。

2023-07-06

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

TA关注的人

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