- 博客(178)
- 资源 (11)
- 收藏
- 关注

原创 二叉树基础
在计算机科学中,树是一种用于表示层次结构的抽象数据类型和非线性数据结构。树由一组节点(Nodes)和节点之间的关系(通常通过边表示)组成。树的定义具有以下特性和组成部分:2.特性树是一种递归的数据结构:树可以定义为包含子树的树。树是连通无环图:树是无环图(Acyclic Graph),且在树中任意两个节点之间只有唯一一条路径。3.树的组成1. 节点(Node):树的基本单位,包含数据或值。2. 根节点(Root Node):树的顶端节点,是树的唯一入口点。根节点没有父节点。3. 子节点(Child Node
2024-07-03 18:32:21
1045

原创 算法-哈夫曼编码
哈夫曼树是一种基于字符频率的最优二叉树,用于数据压缩。通过统计字符频率,构建优先级队列,并采用贪心策略合并最小频率节点,最终生成前缀编码(高频字符编码短,低频字符编码长)。其优点包括高效压缩、简单实现、无损解码等,广泛应用于文件压缩、多媒体编码等领域。Java代码示例展示了静态和动态哈夫曼编码的实现方法,其中动态版本可适应流式数据频率变化。哈夫曼树还可用于网络路由优化、基因数据分析等其他场景,通过最小化编码长度显著提升存储和传输效率。
2024-06-25 18:31:27
5716

原创 Netty网络应用框架
Netty框架解析与应用实践 Netty是一款基于Java的异步事件驱动网络应用框架,专为构建高性能、高可扩展性的网络服务器和客户端而设计。本文从框架特性、核心原理到实际应用,全面解析Netty技术体系。 核心优势 高性能架构:采用异步非阻塞I/O模型,支持高效线程管理和多路复用 协议支持:内置HTTP、WebSocket、TCP/UDP等协议支持,可扩展自定义协议 开发效率:提供丰富的API和编解码器,简化网络编程复杂度 稳定性:经过生产验证的错误处理机制和流量控制能力 核心组件 EventLoop:事件
2024-06-07 16:55:44
3040

原创 道格拉斯轨迹抽稀算法
道格拉斯-普克算法是一种折线简化算法,通过递归方式减少数据点数量,同时保持原始形状。该算法设定阈值距离,计算中间点到首尾连线的垂直距离,保留距离超过阈值的点并进行分段处理。文章提供了Java实现代码,包括距离计算和递归简化过程。通过测试一段轨迹数据,对比原始轨迹(红线)和简化后轨迹(绿线),验证了算法在减少数据点的同时有效保持了轨迹形状特征。该算法在地理信息系统和计算机图形学中有广泛应用。
2024-05-13 00:10:49
1114

原创 多线程任务监视器
本文介绍了Java线程池任务超时控制的几种实现方案。首先分析了线程池中任务阻塞导致线程无法释放的问题,提出通过设置最大执行时长来强制终止超时任务。然后详细比较了三种实现方式:1)在子线程中再创建线程并利用join()方法监控;2)使用ScheduledExecutorService定时检查任务状态;3)结合CompletableFuture和ScheduledExecutorService实现更精确的监控。重点阐述了第三种方案的工作原理:通过CompletableFuture作为监控器,当任务正常完成或异常
2024-04-03 16:49:40
1103

原创 mysql binlog常用操作
一.查看 binlog 基本信息binlog文件的位置配置可在 /etc/my.cnf 配置和查看0. 登录 mysqlmysql -h localhost -u root -p1.查看binlog文件列表进入mysql命令行:show binary logs;2.查看当前正在写入的binlog文件show master status;3. 查看binlog事件信息show binlog events in 'bin-log.000004';4.查看 binlog 文件单个
2022-04-27 11:26:13
7106
1

原创 JVM垃圾收集器
本文系统介绍了Java垃圾回收机制的核心概念和实现。主要内容包括: GC基础:区分需要回收的内存区域(堆和方法区),介绍引用计数和可达性分析两种判定对象存活的方法; 回收算法:标记-清除、标记-整理、复制算法及分代收集策略; 垃圾收集器:详细对比Serial、Parallel、CMS、G1等收集器特点; 实践指导:提供GC选择建议,分析不同场景下的适用方案。文章还介绍了ZGC和Shenandoah等新特性,全面梳理了GC技术演进路线,为Java开发者优化内存管理提供了系统参考。
2022-04-22 15:48:54
2791

原创 JDK内置命令行工具
java命令行序号接口javaJava 应用的启动程序javacJDK 内置的编译工具javap反编译 class 文件的工具javadoc根据 Java 代码和标准注释,自动生成相关的 API 说明文档javahJNI 开发时, 根据 java 代码生成需要的 .h文件extcheck检查某个 jar 文件和运行时扩展 jar 有没有版本冲突,很少使用jdbJava Debugger ; 可以调试本地和远端程序,属于 JPDA 中的一
2022-03-16 14:49:54
11802

原创 JVM 启动参数
JVM 启动参数一.几类不同开头的参数1. 以 - 开头为标准参数,所有的 JVM 都要实现这些参数,并且向后兼容,如 -server。2. -D 设置系统属性,如 -Dfile.encoding=UTF-8。3. 以 -X 开头为非标准参数,基本都是传给 JVM 的,默认 JVM 实现这些参数的功能,但是并不保证所有 JVM 实现都满足,且不保证向后兼容。 可以使用 java -X 命令来查看当前 JVM 支持的非标准参数,如 -Xmx8g。4. 以 –XX:开头为非稳定参数, 专门用于控制
2022-03-11 10:16:47
7464
5

原创 Java类加载器
本文详细介绍了Java类的生命周期和加载机制。主要内容包括:1) 类的7个生命周期阶段(加载、验证、准备、解析、初始化、使用、卸载),重点解释了各阶段的工作内容,如准备阶段为类变量分配内存,初始化阶段执行<clinit>()方法等;2) 类初始化的触发条件,包括遇到new指令、调用静态方法等场景;3) 三类类加载器(启动类加载器、扩展类加载器、应用类加载器)及其层级关系。文章通过示例代码阐述了静态变量初始化、类构造器执行顺序等关键概念,帮助理解JVM类加载机制。
2022-01-19 10:59:32
2550
1

原创 JVM字节码
Java字节码与平台无关性 Java字节码是平台无关性的基石,由单字节指令组成,支持约200种操作码。字节码通过虚拟机实现跨平台执行,不仅限于Java语言,任何能编译成Class文件的语言都能在JVM上运行。字节码指令分为加载存储、运算、类型转换等9大类,提供了比Java语言更强大的语义描述能力。 字节码生成与分析 通过javac命令可将Java源文件编译为字节码,使用工具如javap可反编译查看汇编指令、局部变量表等信息。示例中的HelloWord类编译后,其字节码包含了方法调用、字符串加载等操作指令。
2022-01-17 15:57:21
1913

原创 Java双检锁模式
双检锁单例模式通过两次判空检查实现线程安全,但存在指令重排序风险。对象创建过程包含内存分配、初始化和地址返回三步,其中后两步可能被重排序,导致返回未初始化对象。volatile关键字通过插入内存屏障防止指令重排序:写操作前后和读操作后插入屏障,确保多线程环境下操作顺序的一致性,从而避免返回未完成初始化的实例。这种机制保证了双检锁单例模式在多线程环境下的正确性。
2021-11-09 15:03:43
2794
3

原创 人工智能-机器学习-KMeans聚类
一.概述k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,属于无监督学习的一种,其步骤是,预先将数据分为K组,则随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以分为3中:1. 没有(或最小数目)对象被重新分配给不同的聚类2
2021-10-15 23:46:36
3565
2

原创 人工智能-深度学习-yolov3口罩佩戴识别
一.基础环境windows 10cuda 10.0python3.7.4tensorflow-gpu 1.14.0keras2.24numpy==1.16.5二.下载keras-yolo3代码从github上下载:https://github.com/qqwweee/keras-yolo3代码解构如下:三.下载权重并测试本项目所用权重文件:权重文件官方提供的地址:yolov3.weightsyolov3-tiny.weights共有两个权重文件 yolov3.weig
2021-08-27 00:44:19
13595
383

原创 人工智能-运维-win10安装cuda
注: 本文以python 3.7.4 安装 TensorFlow 1.14.0 GPU 举例一.安装 TensorFlow 1.14.0 GPU 版本pip install tensorflow-gpu==1.14.0注:以pip安装的 tensorflow-gpu 版本所用cuda为10.0版本也可以在 github 中下载别人整理好的版本:https://github.com/fo40225/tensorflow-windows-wheel选择相应的gpu版本即可注: 以此方法下载
2021-08-18 22:02:24
506
1

原创 人工智能-机器学习-支持向量机
一.概述支持向量机即SVM(Support Vector Machine),主要用于解决模式识别领域中的数据分类问题,属于有监督学习算法的一种。是一类按监督学习方式对数据进行二元分类的广义线性分类器。如图所示, 红色和蓝色的点是可以被一条直线分开的, 在模式识别领域称为线性可分问题, 然而将两类数据点分开的直线显然不止一条, b图和c图分别给出了A, B两种不同的分类方案, 其中黑色实线为分类线, 术语称为"决策面"。每个决策面对应了一个线性分类器。虽然在目前的数据上看, 这两个分类器的分类结果是一
2021-07-14 01:55:37
2272
1

原创 人工智能-机器学习-决策树与随机森林
一.数据集的纯度决策树的关键在于当前状态下选择哪个属性作为分支条件。最佳分类属性这种“最佳性”可以用非纯度(impurity)进行衡量。如果一个数据集合中只有一种分类结果,则该集合最纯,即一致性好;如果有许多分类,则不纯,即一致性不好。有很多指标定义不纯度,根据不同判定不纯度的目标函数:1.ID3 算法ID3算法的核心是“信息熵”:1. 熵作为衡量样本纯度的标准,熵越大,越不纯。2. 希望在分类以后能够降低熵的大小,变纯一些。3. 分类后熵变小可以用信息增益(Information Ga
2021-07-01 01:50:35
797
5

原创 人工智能-机器学习-特征工程
我们用泰坦尼克号事件生还者信息举例, 采用KNN算法预测某个人的生还率, 采用KNN临近算法一.利用pandas观察数据情况我们先看下数据:各列对应字端的含义为:passengerId: 表示乘船编号surverved: 表示是否存活, 0为死亡, 1为生存(此列为标签)pclass: 客舱等级name: 名字sex: 性别age: 年龄sibsp: 兄弟姐妹数和配偶数parch: 船上父母数和子女数ticket: 船票编号fare: 船票价格cabin:客舱号embarke
2021-06-19 10:57:44
840
1

原创 人工智能-深度学习-手写数字识别
1.准备数据手写数字识别的特征集是一组数值为0-9,大小为 28 * 28 矩阵的图片, 标签为与之对应的数字:数据位置在: 手写数字识别数据集2.将数据格式化为 npz 文件"""将图片和标签整理为 npz 文件"""import numpy as npimport osfrom PIL import Imageimport json# 读取图片# 存到 npz 文件中的为 28 *28 的矩阵列表train_file_path = "nums/train_x/"
2021-06-16 00:27:13
7673
14

原创 人工智能-深度学习-Pytorch与神经网络
一.Pytorch基础操作1.numpy建立矩阵import numpy as np# numpy中建立4 * 4的 全为1的矩阵a_numpy = np.ones([4, 4])b_numpy = np.ones([4, 4])# 矩阵的点乘c_numpy = a_numpy @ b_numpy# 使用 numpy 建立矩阵的类型是 numpy.ndarrayprint("c_numpy的数据类型: %s, 值: %s" % (c_numpy.dtype, c_numpy))c
2021-06-03 02:03:36
1027
1

原创 人工智能-算法模型-线性回归
一.概述 回归分析是研究统计规律的方法之一。在回归分析中我们把所关心的一些指标称为因变量,通常用Y来表示;影响因变量的变量称为自变量,用X1、X2、…XP来表示。回归分析研究的主要问题是:确定Y与X1、X2、…XP间的定量关系表达式,这种表达式称为回归方程;对求得的回归方程的可信度进行检验,判断自变量对Y有无影响;利用所求得的回归方程进行预测和控制。 &nbs
2021-05-14 01:17:16
5491
3

原创 人工智能-编程-Fizz Buzz
题目描述:写个程序来玩Fizz Buzz. 这是一个游戏。玩家从1数到100,如果数字被3整除,那么喊’fizz’,如果被5整除就喊’buzz’,如果两个都满足就喊’fizzbuzz’,不然就直接说数字。这个游戏玩起来就像是:1 2 fizz 4 buzz fizz 7 8 fizz buzz 11 fizz 13 14 fizzbuzz 16 …一.传统方法编程def fizz_buzz(num): if num % 3 == 0 and num % 5 == 0: r
2021-05-07 00:53:48
10360
2

原创 人工智能-数据分析-鸢尾花
此篇文章需要一些线性代数、矩阵分块和Numpy的基础,在文中对这些基础不再赘述一.鸢尾花数据在机器学习中,大部分数据均是矩阵类型的:我们先看一下鸢尾花数据:鸢尾花有四个属性:花瓣长度、宽度、花萼长度、花萼宽度,每一组属性成为一个样本,属性称为样本的特征,四个属性确定了鸢尾花的类别,也称为标签,由此形成了数据集{(x, d)}。此数据可以用于分析鸢尾花的类别。对于非数字的数据,我们要将他们映射为数字。如果类别数量较多,比如0,1,2等整形数字可以映射为 0->[1.0,0.0,0.0],1-.
2021-05-06 23:31:26
9161
2

原创 人工智能-数学基础-线性代数与仿射变换
一.鸢尾花数据在机器学习中,大部分数据均是矩阵类型的:我们先看一下鸢尾花数据:鸢尾花有四个属性:花瓣长度、宽度、花萼长度、花萼宽度,每一组属性成为一个样本,属性称为样本的特征,四个属性确定了鸢尾花的类别,也称为标签,由此形成了数据集{(x, d)}。此数据可以用于分析鸢尾花的类别。对于非数字的数据,我们要将他们映射为数字。如果类别数量较多,比如0,1,2等整形数字可以映射为 0->[1.0,0.0,0.0],1->[0.0,1.0,0.0],称为OneHot(独热编码)。import s
2021-04-23 13:12:47
1147
1

原创 人工智能-数学基础-傅里叶变换与卷积
X(ω)=F(x(t))=∫−∞+∞x(t)e−iωtdt X(\omega) = F(x(t)) = \int_{-\infty}^{+\infty}x(t)e^{-i \omega t}dt X(ω)=F(x(t))=∫−∞+∞x(t)e−iωtdtx(t)=F−1(X(ω))=12π∫−∞+∞X(ω)eiωtdω x(t)=F^{-1}(X(\omega)) = \frac{1}{2\pi} \int_{-\infty}^{+\infty}X(\omega)e^{i \omega t...
2021-04-21 23:15:26
7288
32

原创 人工智能-数学基础-函数与优化
一.最优化问题1.一元方程最优化问题求解函数极小值 f(x)=x2+x−1 f(x) = x^2 + x -1 f(x)=x2+x−11.1 传统求解先求导,使导数为0: f′(x)=2x+1=0 f\prime(x) = 2x+ 1=0 f′(x)=2x+1=0x=−0.5x = -0.5 x=−0.5但是大多数情况下,函数很难直接计算导数为0,并且计算机无法跟人脑似的解方程,所以大多数情况下需要依靠数值求解。1.2 随机过程求解,类似“模拟退火”依靠不断地尝试求解:"""一元二次方程
2021-04-20 02:02:11
1550
1

原创 Java线程池和阻塞队列
线程池任务增加过程:注:此图为ThreadPoolExecutor的机制,但不代表全部,比如dubbo提供的线程池 EagerThreadPoolExecutor,就是先起线程到最大值,再进队列 b.拥有六个参数:比a多了参数: c.拥有六个参数:比a多了参数: d.拥有七个参数:但是仔细看的话,ThreadPoolExecutor虽然提供了四个5到7个参数,但是在方法体中,均是 7 个参数。此队列常用方法:任务队列是基于阻塞队列实现的
2020-08-17 01:16:24
4190
4

原创 java中的Lock锁
本文介绍了Java中的Lock接口及其实现类ReentrantLock和ReadWriteLock。与synchronized关键字相比,Lock提供了更灵活的锁机制,包括可中断锁、公平锁、读写锁等功能。Lock接口包含lock()、tryLock()、lockInterruptibly()等方法,需要手动释放锁。Condition接口配合Lock可实现选择性通知机制。ReadWriteLock通过分离读锁(共享)和写锁(排他)提高并发性能:多个读操作可同时进行,但写操作互斥且优先于读操作。文中通过代码示例
2020-07-15 02:42:43
19206
6

原创 JMM内存模型
在现代计算机系统中,CUP,内存和IO的处理速度是 CUP > 内存 > IO,由于计算机的存储设备与CPU的运算速度有几个数量级的差距,所以现代计算机系统都会引入一层读写速度尽可能接近处理器运算速度的高速缓存来作为内存与处理器之间的缓冲:将运算需要使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步回内存之中,这样处理器就无需等待缓慢的内存读写了。 基于高速缓存的存储交互很好地解决了处理器与内存的速度矛盾,但是它引入...
2020-07-08 02:26:22
597
1

原创 MySQL中Innodb的索引
如果想在一本书中找到某个特定主题,一般会先看输的"索引",找到对应的页码。在MySQL中,存储引擎用类似的方法使用索引,其先在索引中找到对应值,然后根据匹配的索引记录找到对应的数据行。一.索引索引是存储引擎用于快速找到记录的一种数据结构,索引往往以索引文件的形式存储的磁盘上。索引总结下来有如下几个优点:1.索引大大减少了服务器需要扫描的数据量,提高查询性能。2.素引可以帮助服务器避免排序和临时表。3.索引可以将随机IO变为顺序IO4.建立主键索引或者唯一索引...
2020-06-08 03:17:18
4690
1

原创 MySql事务隔离机制
一.事务(Transaction)事务是一个最小的不可再分的工作单元,事务只和DML语句有关,用来管理insert,update和delete语句,在 MySql 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。事务是必须满足4个条件(ACID):原子性(Atomicity): 一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。一致性(Consistency).
2020-05-20 02:12:26
1898

原创 synchronized原理
摘要:Java中的synchronized关键字是实现线程同步的重要机制,具有以下特性:1)作为隐式可重入锁,支持锁升级(偏向锁→轻量级锁→重量级锁);2)保证原子性、可见性和有序性;3)使用方法包括方法加锁和同步代码块。底层原理通过monitor对象实现,JDK1.6后优化了锁机制,引入偏向锁、轻量级锁和自适应自旋锁等策略提升性能。此外,JVM会进行锁粗化和锁消除优化。该机制适用于解决多线程并发问题,但需根据具体场景选择合适的同步策略。
2020-05-11 00:21:39
5362

原创 Java虚拟机类加载机制
Java虚拟机类加载机制详解 摘要:Java虚拟机通过类加载机制将Class文件加载到内存,经历加载、验证、准备、解析和初始化五个阶段。这种动态加载特性为Java程序提供了灵活性,支持动态扩展和接口实现延迟绑定。初始化阶段存在五种必须触发的场景,而被动引用不会引发初始化。类加载器采用双亲委派模型(Bootstrap、Extension、Application三类加载器),确保类安全性和唯一性,但存在三次被破坏的情况:JDK1.2向前兼容、JNDI服务逆向调用和OSGi热部署需求。类加载器与类共同确定唯一性,
2019-07-29 23:04:31
647

原创 JVM 垃圾收集与内存分配
本文系统介绍了Java垃圾回收机制(GC)的核心内容。GC主要关注堆和方法区的内存回收,通过可达性分析算法判断对象存活,并结合引用计数算法解决循环引用问题。Java提供四种引用类型(强、软、弱、虚)来灵活管理对象生命周期。垃圾收集算法包括标记-清除、复制、标记-整理等,针对不同代(新生代/老年代)采用分代收集策略。HotSpot虚拟机通过OopMap、安全点等机制优化GC效率。主流收集器包括Serial、ParNew、CMS和G1等,各有适用场景。内存分配遵循特定规则,如大对象直接进老年代、动态年龄判断等,
2019-05-29 00:29:12
574
1

原创 深入理解java虚拟机(第一章:走进Java)(读书笔记)
Java作为面向对象编程语言,具有跨平台、内存管理安全、运行时优化等优势。"一次编写,到处运行"的特性通过JVM实现。Java技术体系包含编程语言、JVM、API类库等组件,分为JDK和JRE。平台包括Java Card(智能卡)、Java ME(移动端)、Java SE(桌面应用)和Java EE(企业级应用),其中Java EE在SE基础上扩充了企业级功能。完善的API和丰富第三方库支持是其重要特点。
2019-05-17 00:22:36
421
1
原创 Springboot 配置 doris 连接
摘要:本文介绍了在SpringBoot项目中配置Doris数据库连接的两种方式。Doris兼容MySQL协议,可通过Druid连接池实现连接。单数据源配置可直接在yml中设置连接参数;多数据源场景需分别配置MySQL和Doris数据源,并创建对应的Java配置类,通过@MapperScan指定不同包路径实现数据源隔离。文中详细列出了Druid连接池的各项参数配置及多数据源的具体实现方法。
2025-08-01 21:31:52
515
原创 进程和线程
本文系统性地介绍了进程和线程的核心概念及区别。进程是操作系统资源分配和调度的基本单位,具有独立内存空间和资源集合,包含程序代码、数据段、堆栈区及进程控制块(PCB)。进程上下文切换开销较大,涉及内存管理、权限重建等操作。进程间通信(IPC)包括管道、消息队列、共享内存等多种方式。 线程作为CPU调度和执行的最小单位,共享进程资源但拥有独立栈和寄存器上下文,分为用户级和内核级线程。线程上下文切换仅需保存寄存器状态,开销较小。文章详细对比了进程与线程的特征、组成、上下文管理及通信机制,为理解操作系统并发模型提供
2025-07-17 15:47:44
890
原创 消息队列和可靠性
消息队列技术解析:原理、问题与解决方案 摘要:消息队列(MQ)是分布式系统中实现异步通信和解耦的核心组件,常见实现包括Kafka、RabbitMQ等。本文系统分析了消息队列的关键技术:1)消息防丢失机制,包括生产者确认、副本同步和手动提交偏移量;2)幂等性保障,通过唯一ID、数据库约束和Redis锁实现;3)Kafka消息有序性原理及其分区策略;4)主流消息传输协议对比,包括WebSocket、MQTT等适用场景。文章还详细探讨了消息重复消费、顺序保证等实际问题的解决方案,为分布式系统设计提供了重要参考。
2025-07-16 13:30:23
921
原创 select、poll 和 epoll
摘要:Linux系统中的select、poll和epoll都是I/O多路复用机制,用于高效监控多个文件描述符状态。select通过位图结构实现,但存在1024个文件描述符的限制;poll改用数组结构解决了数量限制,但仍是线性扫描;epoll采用事件驱动模型,通过红黑树和就绪队列实现O(1)时间复杂度,特别适合高并发场景。三者主要区别在于:select/poll需要每次重新传入所有描述符,而epoll只需注册一次;select/poll仅支持水平触发,epoll还支持边沿触发;epoll在性能上优势明显但仅适
2025-07-15 20:11:50
981
原创 传输协议和幂等性
摘要:本文详细对比了TCP和UDP两种传输层协议的特性及应用场景。TCP是面向连接的可靠协议,通过三次握手建立连接、提供流量控制、拥塞控制等机制,适用于需要可靠传输的场景如网页浏览、文件传输等。UDP是无连接的轻量级协议,具有传输效率高、支持广播组播等特点,适合实时性要求高的应用如视频会议、在线游戏等。文章还介绍了HTTP协议的发展演变,以及接口幂等性的概念和解决方案,包括幂等key机制、防重令牌等设计模式,为网络通信和接口设计提供了全面的技术参考。
2025-07-15 20:11:40
684
yolov3口罩佩戴识别代码与训练数据
2024-03-08
核密度分析算法java实现
2024-02-29
Centos离线安装zip和unzip
2024-02-28
Centos离线安装mongodb
2024-02-28
Centos7重新安装 python2.7 和 yum
2024-02-23
redis-4.0.11离线安装软件与教程
2024-02-23
Centos离线安装zip和unzip软件
2024-02-22
centos7升级openssh软件和教程
2024-02-22
sqllite数据库和数据文件
2024-02-22
mybatis 父子级树形结构查询
2022-09-13
springboot使用jasypt示例代码
2022-09-08
random_point.zip
2021-05-21
springboot上传excel导入到数据库完整demo(后端代码)
2018-06-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人