- 博客(257)
- 收藏
- 关注
原创 MySQL(06) mysql用户管理、权限管理和日志管理
本文系统介绍了MySQL数据库的三大核心管理功能:用户管理、权限管理和日志管理。在用户管理方面,详细讲解了用户创建、修改、删除及密码设置等操作;权限管理部分阐述了权限分布、授权原则和权限回收机制;日志管理则分析了各类日志的功能与作用,包括通用查询日志、错误日志、二进制日志等,并指出了日志可能带来的性能影响。文章特别强调了权限控制的最小化原则和安全设置的重要性,为MySQL数据库的安全高效运行提供了全面的管理指导。
2025-07-22 14:36:12
341
原创 MySQL(05) mysql锁,MVCC、Innodb行锁
本文系统介绍了MySQL事务隔离机制与锁的实现原理。主要内容包括:1. 并发事务的三种访问情况(读-读、写-写、读-写)及其对应的锁机制;2. 解决并发问题的两种方案(MVCC和加锁),重点分析了MVCC的实现原理和ReadView机制;3. 共享锁与排他锁的特性及互斥规则;4. MySQL 8.0新增的NOWAIT/SKIP LOCKED语法特性;5. 锁的粒度分类(表锁、行锁、页锁)以及索引命中与否对锁级别的影响。文章深入浅出地阐述了MySQL如何通过锁机制和MVCC实现事务隔离,确保数据一致性的同时提
2025-07-21 15:25:08
745
原创 Docker(02) Docker-Compose、Dockerfile镜像构建、Portainer
半自动化思路:springboot还是打包成普通的jar,然后把这个jar上传到服务器,同时在服务器创建一个Dockerfile文件,执行docker build命令,把这个jar构建成一个docker镜像,然后通过镜像执行。dockerfile-maven-plugin的目标就是将maven的打包过程和docker的build过程结合在一起,当成功打包,既生成了对应的jar,也已生成了对应的docker镜像。:Dockerfile 的指令每执行一次都会在 docker 上新建一层。
2025-07-13 17:36:15
1114
原创 BST树和AVL树
二叉搜索树(BST)是一种特殊的二叉树,每个顶点最多可以有两个子节点。这种结构遵循BST属性,规定给定顶点的左子树中的每个顶点的值必须小于给定顶点的值,右子树中的每个顶点的值必须大于给定顶点的值。将当前节点的右子节点提升为新的根节点。当前节点成为新根节点的左子节点。新根节点原来的左子节点(如果有的话)成为当前节点的右子节点。将当前节点的左子节点提升为新的根节点。当前节点成为新根节点的右子节点。新根节点原来的右子节点(如果有的话)成为当前节点的左子节点。
2025-07-09 17:48:11
360
原创 JavaSE(20) Optional容器类
map(Function f): 如果有值对其处理,并返回处理后的Optional,否则返回 Optional.empty()Optional.ofNullable(T t):若 t 不为 null,创建 Optional 实例,否则创建空实例。flatMap(Function mapper):与 map 类似,要求返回值必须是Optional。创建一个 Optional 实例,参数为null在运行时会抛出空指针异常。创建一个空的 Optional 实例。orElse(T t) 和。
2025-06-24 17:18:32
293
原创 WSL 笔记
适用于 Linux 的 Windows 子系统 (WSL) 是 Windows 操作系统的一项功能,通过它可以直接在 Windows 上运行 Linux 文件系统以及 Linux 命令行工具和 GUI 应用,并可以运行传统的 Windows 桌面和应用。
2025-06-24 08:52:12
377
原创 Electron (02)集成 SpringBoot:服务与桌面程序协同启动方案
用于在构建 Electron 应用程序时将额外的资源文件打包到最终的应用程序安装包中。它的主要作用是确保应用程序所需的资源文件能够正确地随应用一起发布,而不会丢失。使用springboot技术,快速生成一个web应用。在这里资源文件都放在了electron本身生成的resources目录中。由Electron主进程(Node环境)创建的独立进程,来启动jar。没啥问题后,用maven进行打包,生成可以独立运行的jar。指向的是应用程序的资源目录。在 Electron 中,在浏览器测试的访问一下。
2025-06-20 15:48:37
393
原创 Electron(01)入门与实战:从环境搭建到打包发布
render.js 渲染进程(页面引入),render.js可以调用alert(),是属于浏览器环境 渲染器进程(简称渲染器) 负责展示图形内容。main.js主进程(运行在node环境) 主进程,负责应用的生命周期、展示原生窗口、执行特殊操作和管理渲染进程。预加载脚本preload.js(中间人),它在渲染进程运行(浏览器环境),人家也能访问一部分的node api。如何让你的预加载脚本执行 在main.js 引入预加载脚本,让主进程认识一下预加载脚本。预加载ipc.send 对应主进程 ipc.on。
2025-06-18 18:12:52
488
原创 ThreadLocal
这些变量与正常的变量不同,因为每一个线程在访问ThreadLocal实例的时候(通过其get或set方法)都有自己的、独立初始化的变量副本,让每个线程绑定自己的值从而避免了线程安全问题。ThreadLocalMap的Entry对ThreadLocal的引用为弱引用,避免了ThreadLocal对象无法被回收的问题。ThreadLocal实例通常是类中的私有静态字段,使用它的目的是希望将状态(例如,用户ID或事务ID)与线程关联起来。==================== 移除数据。
2025-05-28 18:16:22
516
原创 分布式定时任务xxl-Job
GLUE模式(PHP):任务以源码方式维护在调度中心;- xxl_job_info:调度扩展信息表: 用于保存XXL-JOB调度任务的扩展信息,如任务分组、任务名、机器地址、执行器、执行入参和报警邮件等等。子任务:每个任务都拥有一个唯一的任务ID(任务ID可以从任务列表获取),当本任务执行结束并且执行成功时,将会触发子任务ID所对应的任务的一次主动调度。覆盖之前调度:调度请求进入单机执行器后,发现执行器存在运行的调度任务,将会终止运行中的调度任务并清空队列,然后运行本地调度任务。
2025-05-13 11:00:02
1360
原创 selenium(二)基于java、元素操控、Frame切换、元素等待
注意ExpectedConditions的写法变成了自定义try {@Overridetry {});if (alert!= null)
2024-08-28 14:22:41
1079
原创 selenium(一)基于java、元素定位
是一个用于Web应用程序的自动化测试工具。它直接运行在浏览器中,可以模拟用户在浏览器上面的行为操作。
2024-08-28 14:20:16
1937
原创 JVM(三) GC垃圾判定、垃圾回收算法、垃圾收集器
可以看出,效率上来说,复制算法是当之无愧的老大,但是却浪费了太多内存,而为了尽量兼顾上面所提到的三个指标,标记/整理算法相对来说更平滑一些,但效率上依然不尽如人意,它比复制算法多了一个标记的阶段,又比标记/清除多了一个整理内存的过程。可预测的停顿:这是G1相对于CMS的另一大优势,降低停顿时间是G1和CMS共同的关注点,但G1除了追求低停顿外,还能建立可预测的停顿时间模型,能让使用这明确指定一个长度为M毫秒的时间片段内,消耗在垃圾收集上的时间不得超过N毫秒。这种情况复制算法的回收整理,速度是最快的。
2024-08-11 14:37:09
887
原创 JVM(二) Heap体系、堆内存分析
Heap 堆:一个JVM实例只存在一个堆内存,堆内存的大小是可以调节的。类加载器读取了类文件后,需要把类、方法、常变量放到堆内存中,保存所有引用类型的真实信息,以方便执行器执行,堆内存逻辑上分为三部分:新生区Young/New养老区Old/Tenure永久区Perm新生代(年轻代)、老年代永久代(持久代)。永久区(非堆)就是方法区为什么需要把Java堆分代?不分代就不能正常工作了吗其实不分代完全可以,分代的唯一理由就是优化GC性能。经研究,不同对象的生命周期不同。
2024-08-11 14:20:09
1137
原创 JVM(一) 类加载器、类加载过程、JVM参数设置
每种操作系统的解释器都是不同的,但基于解释器实现的虚拟机是相同的,这也是Java能够跨平台的原因。负责加载class文件,class文件在文件开头有特定的文件标示,并且ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。通过这种层次模型,可以避免类的重复加载,也可以避免核心类被不同的类加载器加载到内存中造成冲突和混乱,从而保证了Java核心库的安全。,即 将要执行的指令代码),由执行引擎读取下一条指令,是一个非常小的内存空间,几乎可以忽略不记。
2024-08-11 13:56:31
947
原创 Git+Gitlab 远程库测试学习
本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作。推送本地的feature-branch(冒号前面的)分支到远程origin的feature-branch(冒号后面的)分支(没有会自动创建)推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上。会把本地的master分支和远程的master分支关联起来,
2024-06-08 09:54:21
1401
1
原创 idea 打jar包、lib文件夹
在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 JAR 文件的时候自动创建的,包含了JAR包的描述信息、主类的全类名等信息。manifest 文件中的每一行都是 key-value 对应的:属性名开头,接着是 ":" ,然后是属性值,每行最多72个字符,如果需要增加,可以在下一行续行,续行以空格开头,以空格开头的行都会被视为前一行的续行。在一个标准的Java项目中,lib文件夹下会包含多个jar文件,每个jar文件对应一个第三方库。
2024-02-24 09:15:49
8989
原创 计算机网络-整理(01)
DHCP客户机使用的ip地址的使用是有期限的,一般DHCP客户机使用分配的IP地址到了租期的50%时,会主动向DHCP发送续约请求,DHCP服务器接收到续约请求后,会检查此ip有没有被别的客户机抢占,如果没有就继续续约,如果此IP地址被其他客户机使用,就续约不成功,此时客户机将会重新发起DHCP discovery请求,请求获取新的IP。它同时提供WWW和MAIL服务,为了便于用户访问服务。的20字节是固定的,后面有 4n 字节是根据需要而增加的选项 (n 是整数),因此TCP首部的最小长度是20字节。
2024-02-20 18:59:15
1572
原创 java发送邮件、接收邮件
当你给别人发送邮件时,你的机器的某个动态端口(大于1024)就会与邮件服务器的25端口建立一个连接,你发送的邮件就会通过这个连接传送到邮件服务器上,保存起来。SMTPS和SMTP协议一样,也是用来发送邮件的,只是更安全些,防止邮件被黑客截取泄露,还可实现邮件发送者抗抵赖功能。开启了IMAP后,您在电子邮件客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。接收邮件常用的协议有pop3,imap和exchange。
2024-01-20 09:45:06
7122
原创 Http协议、HttpClient
HttpClient 是Apache HttpComponents 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。可以看到,XFF 的内容由「英文逗号 + 空格」隔开的多个部分组成,最开始的是离服务端最远的设备 IP(用户真实 IP),然后是每一级代理设备的 IP。存放在请求数据包的请求行的URI字段中,以?浏览器 向 WEB服务器发送数据的时候,这个发送的数据需要遵循一套标准,这套标准中规定了发送的数据具体格式。
2024-01-14 11:12:35
1080
原创 Spring Boot整合 Spring Security、 OAuth2
OAuth是一种用来规范令牌(Token)发放的授权机制,主要包含了四种授权模式:授权码模式、简化模式、密码模式和客户端模式OAuth相关的名词第三方应用程序,比如这里的虎牙直播;HTTP服务提供商,比如这里的QQ(腾讯);资源所有者,就是QQ的所有人,你;User Agent用户代理,这里指浏览器;认证服务器,这里指QQ提供的第三方登录服务;资源服务器,这里指虎牙直播提供的服务,比如高清直播,弹幕发送等(需要认证后才能使用)。认证服务器主要包含了四种授权模式的实现和Token的生成与存储资源服务器。
2023-12-08 23:51:07
3183
1
原创 Gateway网关、WebFlux入门
Gateway旨在提供一种简单而有效的方式来对API进行路由,以及提供一些强大的过滤器功能,例如:熔断、限流、重试等
2023-11-11 10:10:21
2145
1
原创 Netty入门、Reactor 模式
Netty是 一个异步事件驱动的网络应用程序框架, 用于快速开发可维护的高性能协议服务器和客户端。事件驱动模型主要应用在图形用户界面(GUI)、网络服务和 Web 前端上。比如编写图形用户界面程序, 要给界面上每个按钮都添加监听函数, 而该函数只有在相应的按钮被用户点击的事件发生时才会执行, 开发者并不需要事先确定事件何时发生, 只需要编写事件的响应函数即可。监听函数或者响应函数就是所谓的事件处理器(event handler), 类似的事件还有鼠标移动、按下、松开、双击等等, 这就是事件驱动。
2023-10-15 09:17:31
536
1
原创 SpringBoot整合数据库连接
通过this调用同一个service中的方法,this是指service实现类对象本身,不是代理对象,就相当于方法中的代码粘到了大方法里面,相当于还是一个方法。t_user中数据不会变化,因为执行这条sql的时候报错了嘛,但是t_book这个表里面的库存减一了,也就是“买书三步骤”中的第三步报错了,但是第二步依旧没回滚。若B方法执行的过程中,只要有抛出异常,B事务方法回滚,A不会回滚,即不影响A中的其他事务的执行(如第二次买书失败不影响第一次买书成成功)mybatis默认不开启驼峰命名规则。
2023-10-01 22:09:06
15101
1
原创 分布式文件存储系统minio、大文件分片传输
MD5计算将整个文件或者字符串,通过其不可逆的字符串变换计算,产生文件或字符串的MD5散列值。如果传入的是一个负数,那么这个偏移量将会从数据的末尾从后到前开始计算。因为如果文件、字符串的MD5散列值不一样,说明文件内容也是不一样的。包含了一套完整的事件模型,用于捕获读取文件时的状态,下面这个表格归纳了这些事件。通过slice方法,从blob1中创建出一个新的blob对象,size等于3。的一个下标,这个下标-1的对应的字节将会是被拷贝进新的。,其中 3 个用以读取文件,另一个用来中断读取。
2023-09-22 23:18:27
2469
原创 tomcat服务器
方式一:new moudle--java--web application--[和你的tomcat没有任何关系] 之后需要可以自己创建一个tomcat实例。当前web应用里也有web.xml,只作用于当前工程本身,俩个web.xml上有逻辑继承关系,配置有冲突时以它自己的为准【范围小的为准】3.1 server.xml 用来配置tomcat本身的配置信息,就只需要知道一个地方,69行左右,设置当前的端口号。1.redeploy 重新部署web应用,只部署更新后的,tomcat不需要重启,
2023-08-26 18:07:49
521
原创 Jmeter压测测试
Tomcat作为Servlet容器,负责处理客户端请求,把请求传送给Servlet,并将Servlet的响应返回给客户端。每一次HTTP请求到达Web服务器,Web服务器都会创建一个线程来处理该请求.最大工作线程数:(4核8g内存,线程数800,一般是。变量输入:E:\server\jmeter\apache-jmeter-5.4.1\apache-jmeter-5.4.1。我的电脑----》属性----》高级----》环境变量----》在系统变量中----》点击新建JMETER_HOME,
2023-08-25 22:28:22
332
原创 操作系统OS(二)进程和线程
如果处理机正在第i队列中为某进程服务时,又有新进程进入优先权较高的队列(第1~(i-1)中的任何一个队列),则此时新进程将抢占正在运行进程的处理机,即由调度程序把正在运行的进程放回到第i队列的末尾,把处理机分配给新到的高优先权进程。该算法赋予各个队列中进程执行时间片的大小也各不相同,在优先权愈高的队列中,为每个进程所规定的执行时间片就愈小。PCB 作为进程实体的一部分,记录了操作系统所需的,用于描述进程的当前情况以及管理进程运行的全部信息,是操作系统中最重要的记录型数据结构。只调入一次,调出一次。
2023-06-30 17:51:23
273
原创 操作系统OS(一)磁盘与文件系统
它能对用户的操作进行记录,通过对用户权限进行非常严格的限制,使每个用户只能按照系统赋予的权限进行操作,充分保护了系统与数据的安全。就可以立即让磁头返回,并且磁头只需要返回到有磁道访问请求的位置。规定:只有磁头朝某个特定方向移动时才能处理磁道访问的请求。且每一个磁盘块应包含2的整数幂个地址,如一个磁盘块包含2^10个地址,即1KB。缺点:如果有大量进程竞争使用磁盘,请求访问的磁道很分散,则FCFS在性能上很差,寻道时间长。同一盘片不同半径的同心圆, 是由磁头在盘片表面划出的圆形轨迹,方便数据存储。
2023-06-26 20:33:11
937
原创 bat脚本、cmd命令
bat脚本就是DOS批处理脚本,就是将一系列DOS命令按照一定顺序排列而形成的集合,运行在windows命令行环境上。这个文件的每一行都是一条DOS命令在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe来运行该文件。
2023-05-13 08:38:46
7385
原创 算法加密与解密、字符集、编码方式
通过散列算法可实现数字签名实现,数字签名的原理是将要传送的明文通过一种函数运算(Hash)转换成报文摘要(不同的明文对应不同的报文摘要),报文摘要加密后与明文一起传送给接受方,接受方将接受的明文产生新的报文摘要与发送方的发来报文摘要解密比较,比较结果一致表示明文未被改动,如果不一致表示明文已被篡改。这个字符集只规定了这个字符集中每个字符对应的码值是多少,但是这个字符集并没有规定具体的编码规则,具体的编码规则有UTF系列的编码规则实现。UTF-8最大的一个特点,就是它是一种变长的编码方式。
2023-05-08 20:57:31
1678
原创 JVisualVM、Visual GC
最大 84M ,实际分配内存:61M ,当前使用了 27.092M , 15 次 的 GC 共使用了 125.394毫秒。最大内存 171M 实际分配了 41M ,当前使用 27.476M , 2次的 GC ,共使用了104.015毫秒。之间,并且我的是jdk8版本,所以我选择JDK 8 Update 40-121,点击对应蓝色链接即可。线程dump – 此按钮主要生产当前程序中所有线程的快照(对分析线程死锁,比较有帮助)最大内存 1.029G 实际分配了 41.25M ,当前使用了 38.603M。
2023-04-20 21:49:25
1535
原创 java设计模式(2)单例模式、工厂模式、原型模式、建造者模式
环境下,我们就要考虑到线程的安全问题:即是否有不同的线程分别new一个对象实例,导致不同线程创建的class类的实例不是同一个。,在新增产品的时候不需要改动已经存在的代码,利于程序的扩展。而简单工厂模式在添加新的产品时,不得不修改工厂方法,扩展性不好。与工厂方法模式相比,抽象工厂模式中的工厂不再只是创建一种具体的产品(比如上面,我们的小米工厂就只是去创建小米手机)。的同时就已经创建好一个静态的对象供系统使用,以后不再改变,所以。看的出来,我们新增了很多个工厂类,那么工厂方法模式好在哪里呢?
2023-04-11 22:04:37
530
原创 java设计模式(1) 适配器模式、装饰器模式、策略模式、观察者模式
之所以会先提到适配器,也是因为在用到GUI编程(awt,swing,swt,jface)的时候经常会遇到。这是在编写awt编程的时候,用到了MouseAdapter,当然这块内容有很多Adapter。我们来看SynchronizedList,它是Collections的静态内部类。MouseListener是一个接口,里面有鼠标的各种事件。上面的这种适配器用法对应的是适配器的第三种用法。这是我在学习安全的并发容器类时用到过的,比如。核心:在不改变原有类的基础上给类新增功能。适配器的主要作用:把原本。
2023-04-06 22:17:07
2023
1
原创 awt、swing
Swing是纯java实现的(100%),不再调用本地平台的GUI,可以在所有操作系统上都保持相同的界面外观,相较于awt被称为“轻量级组件”。Swing组件采用MVC,模型-视图-控制器。
2023-04-01 11:40:42
1106
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人