自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 可重入锁深入学习(有码)

【摘要】 ​今天,梳理下java中的常用锁,但在搞清楚这些锁之前,先理解下 “临界区”。临界区在同步的程序设计中,临界区段活称为关键区块,指的是一个访问共享资源(例如:共享设备或是共享存储器)的程序片段,而这些共享资源又无法同时被多个线程访问的特性。---维基百科释义1:可重入互斥锁(维基百科的这个叫法更贴切),是互斥锁的一种,同一线程对其多次加锁不会产生死锁,可重入互斥锁也称为递归互斥锁或递归锁。...​今天,梳理下java中的常用锁,但在搞清楚这些锁之前,先理解下 “临界区”。

2024-07-13 23:32:29 944

原创 springboot配置多数据源

springboot配置多数据源1、JDBC2、自定义数据源DruidDataSource3、springboot配置多数据源并动态切换4、springboot整合mybatis​ Spring Framework 为 SQL 数据库提供了广泛的支持。从直接使用 JdbcTemplate 进行 JDBC 访问到完全的对象关系映射(object relational mapping)技术,比如 Hibernate。Spring Data 提供了更多级别的功能,直接从接口创建的 Repository 实现,

2024-07-13 10:58:39 844

原创 IDEA实现热部署

热部署(Hot Deployment)是指在应用程序运行过程中,无需停止整个应用程序或重新启动。

2024-07-11 22:42:39 704

原创 大白话讲解AI大模型

最后学出来的模型就是大模型。举例:我们学习英文一般都是主谓宾宾补等等,但是现在还有一种方式就是我们根本不看这些而是去阅读大量的书籍或者看美剧等等,看的多了说的多了读的多了,当其他人用英文给你聊天的时候你自然而然的就知道他下面要接什么,这就是语感。因为我们获取结果的方式上在分布里去采样,如果我们想发散率小一点那么我们只需要取前面概率大的,如果我们想发散率高一点那么我们可以取概率小的。首先要考虑的上,当我们肉眼看到我们问的问题的时候我们是能理解它的意思的,那么怎么让机器去理解它的意思就是一个问题。

2024-07-11 02:05:49 1067 1

原创 力扣62 不同路径

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。从左上角开始,总共有 3 条路径可以到达右下角。题目数据保证答案小于等于 2 * 109。输入:m = 3, n = 7。输入:m = 3, n = 2。输入:m = 7, n = 3。输入:m = 3, n = 3。问总共有多少条不同的路径?

2024-06-25 22:32:37 261

原创 VMware虚拟机扩容磁盘,有很详细图文

VMware虚拟机 Linux系统 ubuntu-20.04.4-desktop-amd64 硬盘/磁盘扩容(超详细图文详解!亲测有效!

2024-06-25 09:17:48 475

原创 License简介和Licensecc的使用

License简介什么是LIcense简易License制作加密扫盲对称加密非对称加密Licensecc使用构建和编译在linux上进行编译UbuntuCentOS 7CentOS 8下载并编译配置编译和测试cmake 后可以跟的参数在Linux上为Windows进行交叉编译在windos上进行编译cmake 后可以跟的参数MINGW整合以及使用硬件标志使用场景在物理硬件上执行在虚拟机中执行在容器中执行硬件标识符生成默认标识符生成(实现细节)**许可证检索**在你的应用程序中集成 Licensecc。

2024-06-24 14:32:48 770

原创 Linux git生成ssh key (公钥私钥)配置GitLab

Git 是一种分布式的代码管理工具。远程代码管理基于 SSH,因此使用远程 Git 需要配置 SSH。

2024-06-24 14:31:34 840

原创 JDK8新特性带案例讲解

默认方法通过实例调用,静态方法通过接口名调用默认方法可以被继承,实现类可以直接调用接口默认方法,也可以重写接口默认方法静态方法不能被继承,实现类不能重写接口的静态方法,只能使用接口名调用在JDK中帮我们提供的有函数式接口,主要是在 java.util.function 包中。注意:Stream和IO流(InputStream/OutputStream)没有任何关系,请暂时忘记对传统IO流的固有印象!

2024-05-24 14:06:50 395

原创 图文结合详细介绍RocketMQ

消息中间件,英文Message Queue,简称MQ。它没有标准定义,一般认为:消息中间件属于分布式系统中一个子系统,关注于数据的发送和接收,利用高效可靠的异步消息传递机制对分布式系统中的其余各个子系统进行集成。高效:对于消息的处理处理速度快,RocketMQ可以达到单机10万+的并发。可靠:一般消息中间件都会有消息持久化机制和其他的机制确保消息不丢失。异步:指发送完一个请求,不需要等待返回,随时可以再发送下一个请求,既不需要等待。一句话总结:消息中间件不生产消息,只是消息的搬运工。

2024-05-22 17:05:29 418

原创 Linux命令:带图整理

【代码】Linux命令:带图整理。

2024-05-21 10:32:41 337

原创 Git基础命令:带图整理

常见使用:删除已经提价到远程仓库的 .idea, .seting 文件/文件夹(项目构建自动生成的)暂存区(stage/index)用于从工作区和索引中删除文件。

2024-05-21 10:30:39 1121

原创 使用jpackage将java程序打包成exe程序(不需要安装jdk即可运行)

之前写过使用exe4j去打包可执行的exe但是 只能打包windos的,并且如果商用可能还会侵权等待,在Java14 出了使用jpackage对Jar进行打包,并且支持各个系统下面演示的是在windos进行打包。

2024-05-20 14:58:22 798

原创 使用exe4j把Java、jar打包成exe文件

点击Maven点击插件进行打包。

2024-05-20 14:49:56 275

原创 Java实现License(许可证)--包括详细注释和思路解释及源码文件

确定自己需要校验的属性,用来标识License使用方即表示谁用了你的软件、平台或者是库。在商业软件中,License通常用于限制软件的试用期、功能使用、并发用户数等,以便开发者能够收取相应的费用。将本机代码的激活码和license开始时间及结束时间,当作参数传入creater模块的creater类中。core:为核心模块、creator:为创建License模块、verify:为校验模块。将私钥放入创建License模块的资源文件夹内、将公钥放入License校验文件夹内。获取windos硬件信息。

2024-05-10 15:10:22 3076 4

原创 详细对比常用Java混淆和加密工具

针对使用JavaFX开发的项目,面临一个普遍问题:Java语言由于其解释性质和高度的抽象化,使得其编写的程序极易遭受反编译的风险。这一点在我们需要将编译后的JAR文件提供给客户时尤为重要,因此确保代码安全性成为至关重要的任务。

2024-04-18 09:19:09 2236

原创 java基础之入门

局内内部类存在于方法中。和成员内部类的区别在于:局部内部类的访问权限仅限于方法或作用域内。成员内部类可以无条件访问外部类数据,外部类需要创建内部类对象,通过对象访问。传参如果是一个接口,可以直接在方法括号内创建接口的匿名内部实现类。局部内部类只能访问外部类的final变量。不能由权限修饰符和static修饰。将一个类定义在另外一个类的类中。只能访问外部类的final变量。不能包含静态属性和方法。

2024-03-05 14:18:24 327 1

原创 简单工厂模式和策略模式

策略模式定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户@OverrideSystem.out.println("算法A实现");@OverrideSystem.out.println("算法B实现");@OverrideSystem.out.println("算法C实现");​​/*** 初始化时传入具体的策略对象*/​/*** 根据具体的策略对象,调用其算法的方法*/​//算法方法。

2023-11-23 14:00:11 97 1

原创 为何选择阅读《大话设计模式》

尽管能看出某些设计采用了特定的设计模式,例如xxxx设计模式,以实现松耦合等优势,但在实际框架设计中,我仍感到迷茫,不知道应该选择哪个设计模式最为合适。因此,选择阅读《大话设计模式》是为了汲取前人的经验,让我能够更深入地理解和应用设计模式,从而更好地发展自己的编程技能。一开始,《大话设计模式》就强调了面向对象编程的优势,即通过封装、继承、多态来降低程序的耦合性。本书是采用c# 来进行编程的,之前搞游戏开发的时候也学过c#,在学习的时候我会将他翻译成java版本如果有不对的请指正。

2023-11-23 01:57:37 86 1

原创 代码命名规范(阅读源码必备)

不过,相对于传统的适配器进行api转接,如果你的某个Handler里面方法特别的多,可以使用Adapter实现一些默认的方法进行0适配。为了让大家更好的理解命名的套路,我借鉴了最流行的Java接开源软件(spring系列,netty,libgdx,guava,logback等等),总结了10类常见的类命名。配合高级的IDE,可以减少编码人员的记忆负担,靠模糊的匹配就能找到自己所需要的资源。用来将context中传递的值进行复制,添加,清除,重置,检索,恢复等动作。你会在框架类代码中发现大量这样的名词。

2023-03-25 22:44:43 491

原创 从0开始带你阅读Sping源码阅读(一)

下载spring源码并且了解spring的核心源码,我不会通读但是我会介绍主要用到的所有方法,已经他的设计思想,了解设计思路,不可否认spring是我们接触的最优秀的源码之一

2023-03-25 22:42:24 179

原创 大白话讲解设计模式

策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理,最终可以实现解决多重if判断问题。1.环境(Context)角色:持有一个Strategy的引用。2.抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。3.具体策略(ConcreteStrategy)角色:包装了相关的算法或行为。定义策略接口->实现不同的策略类->利用多态或其他方式调用策略。

2023-03-23 16:24:09 524

原创 使用大白话介绍TCP协议以及其为什么要这么设计

虽然在发送的时候有个总大小但是就相当于(我给一个人发了钱给了总重量,但是钱的金额是多少并不清楚)所以在发送的时候需要加入CRC校验码(其实就是关联数据)根据一个公式 双方计算出的值应该是一样的就是对的。​ 刚刚我是拿一个文字来举例的,它的传输比较小,但是如果我们想要传输比较大的文件的话,a和b一直形成一条导线,其他的导线不能连接就断网,可能会造成网卡只接受了这个其他消息都接受不到的情况。这样每份小数据之间就有了较大的时间间隔,路由器趁着这个时间间隔可以给其他的设备发送数据,这样不会导致其他设备断网。

2023-02-24 22:05:38 191

原创 非常详细的讲解在浏览器中输入bilibili.com后执行的全部过程,可结合我前面说的TCP协议食用

其中HTTPS代表他是加密传输的用来保证传输的安全性,服务器和运行商之间的协商就对应着开头讲的紫色部分,地址栏有小锁图标代表信任的安全认证的加密证书,点开之后我们可以看到证书的使用人和颁发人,证书的有效时间、指纹信息,传输内容的加密是非对称加密,服务器持有密钥客户端持有公钥,我们可以在详细信息中可以看到证书的签名算法、公钥的路径等等,我们发现HTTPS加密传输每次都要协商时间说明比HTTP非加密访问要慢,但是现在浏览器如果不使用HTTPS的话会出现不安全的提示。

2023-02-24 21:55:46 1375

原创 大白话系列之计算机网络OSI介绍

此文章只是进行简单的科普方便非计算机学生进行阅读如果有哪里描述不精准望指正。

2023-01-05 23:11:04 355

原创 手把手教你如何修改jar包,以及了解JVM虚拟机的重要性

当我们可以读懂他的过程的适合我们就可以通过修改他JVM指令来达到我们修改函数目的,如果只是简单替换字符串的话我推荐使用classlib在这个工具里面我们可以清楚的看到他值的储存位置。我们都知道代码的运行速度和编译成汇编之后的的多少成正比,所以我们有必要去了解java相关虚拟机的知识,并且知道我们怎么写会造成隐形类型转换等导致的运行速度慢等问题。除了这种我们还可以直接修改反编译的,反编译代码少量修改再将其环境搭建起来运行再编译成class直接解包jar文件,替换完再打包也可以。#2就是我们的成员变量a。

2023-01-05 00:58:23 4907 1

原创 图文讲解为什么重写equals()方法一定要重写hashCode()方法

想要接受这个问题我们必须了解一下三个对象==在引用数据类型当中进行的是地址的比较,equals()方法在Object类当中其底层也是用==比较地址,但是不同的类可能会重写equals()方法,比如String类中的equals()方法就是先比较地址是否相同,如果相同直接返回true,地址不同在比较值,如果值相等那么同样返回true();...

2022-07-23 11:37:41 113

原创 图文结合讲解linux实现简易校园防火墙(文字原理+代码)

防火墙使用Linux自带的iptable防火墙大部分校园内部分两种登录因为是多账户登录,每次登录都会更改配置文件同时对配置文件的标记文件也进行修改,造成了标志文件每次登录都会覆盖标志文件的问题。被反复覆盖Shell文件需要记录上次标志文件的版本号,如果版本号发生改变的话,重启配置文件—既标记返回覆盖也无关系修改配置文件的时候如果同时修改配置文件的话会产生干扰,退出修改,登录新增。产生覆盖问题方法:配置文件可以分成多份 既防火墙文件 将配置规则放入d、b、c配置文件,但是将d、b、c的文件的引入方式放

2022-07-11 22:54:53 1333

原创 【手把手教你使用BIO的方式实现一个简易tomcat】

本课程的难度较高,需要将Servlet原理和IO课程全部学完。自定义servlet需要实现@WebServlet并且实现name和urlMapping重启进行访问http://localhost:8090/myServlet重启进行访问http://localhost:8090/index.html在SearchClassUtil类当中可以设置servlet包的位置我们本次设计的tomcat能够将用户请求的资源进行返回配置HttpServlet创建HttpServletRequest接口

2022-07-10 12:22:35 421

原创 手把手教你在linux服务器中部署javaweb项目

服务器购买地址购买一台腾讯云(阿里云)轻量应用服务器,这里以2核2G示范。 注:因为服务器系统使用的是《宝塔Linux面板 7.8.0 腾讯云专享版》,所以不用再安装宝塔,可跳过此步,其他系统需要手动安装宝塔。宝塔官网:宝塔面板下载,免费全能的服务器运维软件 Linux宝塔面板7.9.0安装脚本Centos安装脚本 Ubuntu/Deepin安装脚本 Debian安装脚本 Fedora安装脚本 访问宝塔面板 进入【控制台】,点击【服务器】

2022-07-09 22:20:25 914

原创 详细讲解为什么数组记录地址的时有的下标为1有的为0

计算机无论是记文件的地址也好,记什么都只记录首地址,数组中第一个地址就是和数组中第一个数的地址重合 所以数组下标从0开始计算机只记录开头比特点(第一个字节的地址)的地址 即物理存储单元的地址 每一片区域第一个字节的地址原因: 理解版本为什么有的语言下标为0有的语言下标为1...

2022-07-09 21:48:20 386

原创 【图文结合大白话讲解java中i++、i=i++问题】

【声明:内容摘自知乎博主“热心网友赵女士”,并进行了通俗改编】今天在班里学了自增操作,先看一个简单的案例:i++或者++i参与到运算中的时候,有个特定的规律: 所以上面的题,int m=7+a++;计算过程:(1)先计算 m=7+a (2)再计算: a=a+1所以最后结果 a=11 m=17上面的就是个常规题,你要是上面的都没看懂 ,那么下面的也不用看了。。。。今天上课有个学生问我 :i=i++ 为啥不遵照上面的规律 ???先看一个代码: 按照上面的道理,varNum经过 varNum=va

2022-07-09 18:20:46 819 2

原创 由浅入深讲解显示存储计算机基础原理

计算机在内存中一般都是以1010101二进制的方式计算机存储的方式一般分为三种其中CPU和内存都是断电之后数据就会消失,而磁盘存储断电之后就不会消失。其中磁盘又分为机械盘和固态盘,咱们在工作当中一般是以机械盘为主其中的主要原因有: 我们内存中的数据基本都是来源于磁盘之中,而显示器中的数据都是来源于内存之中。磁盘中在存储0101的时候依赖的是磁介质,我们可以将磁介质看为一个个很小的磁铁,每个磁铁具备N极和S极--->N级是1,S级是0。N-1 S-0 高电压-1 低电压-0数据传输之间依赖的是导线,在计算机

2022-07-09 18:03:29 2118

原创 大白话讲解举例时间复杂度的计算方式

时间频度一个算法执行所消耗的时间理论上是算不出来的,必须上机测试才知道。我们又不能将每一个算法都上机测试,但是我们知道每个算法所执行的时间一定和该算法的执行次数成正比。那个算法执行的次数越多,那么他花费的时间也就越多。为此我们将算法中所有语句的频度之和即为T(n).时间复杂度前面提到的时间频度T(n)中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。但有时我们想知道它变化时呈现什么规律,为此我们引入时间复杂度的概念。一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用

2022-07-09 16:31:51 1284

原创 图文结合大白话讲解树的发展

众所周知我们如果想要直接遍历无序数组它的时间复杂度为O(n)级别,但是当数据量达到一定地步的时候O(n)显的也很大,那么我们应该怎么来降低它的时间复杂度呢?比O(n)级别更低的时间复杂度也只有O(1)和O(logn)了提起O(logn)我们的第一想法就是循环减半,但是折半查找虽然为O(logn)的时间复杂度,但是它的前提是有序数组,我们在八大排序中时间复杂度最低的也是O(nlogn)级别,所以折半查找肯定不可取。在此我就不对折半查找和八大排序进行相应的基础普及了有兴趣可以看我其他系列的文章既然O(log

2022-07-09 16:15:26 246

转载 Unity离线文档打开速度问题

使用Notepad++,批量删除相关字段</script><link href="https://fonts.googleapis.com/css?family=Roboto&amp;display=swap" rel="stylesheet">替换为<link href="http://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic" rel="stylesheet" type="text

2021-11-16 16:31:40 157

空空如也

空空如也

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

TA关注的人

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