- 博客(176)
- 资源 (11)
- 收藏
- 关注
原创 二叉树基础
在计算机科学中,树是一种用于表示层次结构的抽象数据类型和非线性数据结构。树由一组节点(Nodes)和节点之间的关系(通常通过边表示)组成。树的定义具有以下特性和组成部分:2.特性树是一种递归的数据结构:树可以定义为包含子树的树。树是连通无环图:树是无环图(Acyclic Graph),且在树中任意两个节点之间只有唯一一条路径。3.树的组成1. 节点(Node):树的基本单位,包含数据或值。2. 根节点(Root Node):树的顶端节点,是树的唯一入口点。根节点没有父节点。3. 子节点(Child Node
2024-07-03 18:32:21 939
原创 算法-哈夫曼编码
哈夫曼树能够根据字符出现的频率分配变长编码,使得高频字符使用较短的编码,低频字符使用较长的编码,从而最大程度地减少平均编码长度。这种自适应的编码方式使哈夫曼编码在很多实际应用中都能达到接近最优的压缩效果。频率越高的字符,经过的路径越短,则编码越短。最终的需要编码的所有字符都在叶子节点上。
2024-06-25 18:31:27 3425
原创 Netty网络应用框架
Netty 是一个基于 Java 的异步事件驱动网络应用框架,主要用于构建高性能、高可扩展性的网络服务器和客户端。Netty 提供了丰富的功能和工具集,使得开发网络应用程序变得更加简便和高效。以下是 Netty 的一些关键特性和用途:1.高性能:异步和事件驱动架构:Netty 使用异步非阻塞 I/O 处理,能够高效地处理大量并发连接,显著提升了性能和吞吐量。高效的线程模型:Netty 提供了一个高效的多线程模型,能够更好地利用多核处理器,提高应用程序的性能。2.可扩展性支持多种协议:Netty 支持多种传输
2024-06-07 16:55:44 2785
原创 多线程任务监视器
1. ExecutorService 调用 submit() , 执行 AbstractExecutorService 重写的 submit() 方法。我们可以看到 worker-pool-0 执行的 13 秒睡眠被中断, "任务已被中断, 开始处理后续操作........." 顺利打印。这些阻塞操作我们可以打断, 那么一些正常的非阻塞式的任务呢, 毕竟我们不会经常在工作中让线程自己去睡眠...测试一下。五. Thread 的 interrupt() 方法。7.3 isCancelled() 方法。
2024-04-03 16:49:40 959
原创 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 5741 1
原创 JVM垃圾收集器
一.概述GC需要完成的三件事:1.哪些内存需要回收? 2.什么时候回收? 3.如何回收Java内存运行时区域的各个部分:a. 其中程序计数器、虚拟机栈、本地方法栈三个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作,每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的(在运行期会由JIT编译器进行一些优化,本章默认是编译器可知的),因此这几个区域的内存分配和回收都具备确定性,在这几个区域内就不需要过多考虑回收的问题,因为方法结束或者线程结束时,内
2022-04-22 15:48:54 2668
原创 JDK内置命令行工具
java命令行序号接口javaJava 应用的启动程序javacJDK 内置的编译工具javap反编译 class 文件的工具javadoc根据 Java 代码和标准注释,自动生成相关的 API 说明文档javahJNI 开发时, 根据 java 代码生成需要的 .h文件extcheck检查某个 jar 文件和运行时扩展 jar 有没有版本冲突,很少使用jdbJava Debugger ; 可以调试本地和远端程序,属于 JPDA 中的一
2022-03-16 14:49:54 11576
原创 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 6765 3
原创 Java类加载器
一.类的生命周期1. 加载(Loading):找 Class 文件1. 通过一个类的全限定名来获取定义此类的二进制字节流。2.将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。3.在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。这里既可以从 ZIP 包中读取(比如从 jar 包和 war 包中读取),也可以在运行时计算生成(动态代理),也可以由其它文件生成(比如将 JSP 文件转换成对应的 Class 类)。2. 验证(
2022-01-19 10:59:32 2473 1
原创 JVM字节码
一.概述计算机只认识 0 和 1,但是由于虚拟机以及大量建立在虚拟机之上的程序语言的发展,将程序编译成二进制本地机器码(Native Code)已不再是唯一的选择,越来越多的程序语言选择了与操作系统和机器指令集无关的,平台中立的格式作为程序编译后的存储格式。二. 平台无关性的基石1. 字节码是构成平台无关性的基石。2. 语言无关性的基础仍然是虚拟机和字节码存储格式。Java 虚拟机不和包括 Java 在内的任何语言绑定,它只和 Class 文件这种二进制文件格式所关联,Class 文件中包含了
2022-01-17 15:57:21 1499
原创 Java双检锁模式
一.双检锁单例模式package thread.lock.double_check;/** * 双检锁单例模式 */public class Singleton { /** * 该类实例, volatile主要防止第29行指令重排序 */ private volatile static Singleton instance; /** * 获取实例的方法 * @return */ public stati
2021-11-09 15:03:43 2504 3
原创 人工智能-机器学习-KMeans聚类
一.概述k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,属于无监督学习的一种,其步骤是,预先将数据分为K组,则随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以分为3中:1. 没有(或最小数目)对象被重新分配给不同的聚类2
2021-10-15 23:46:36 3416 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 13387 383
原创 人工智能-机器学习-支持向量机
一.概述支持向量机即SVM(Support Vector Machine),主要用于解决模式识别领域中的数据分类问题,属于有监督学习算法的一种。是一类按监督学习方式对数据进行二元分类的广义线性分类器。如图所示, 红色和蓝色的点是可以被一条直线分开的, 在模式识别领域称为线性可分问题, 然而将两类数据点分开的直线显然不止一条, b图和c图分别给出了A, B两种不同的分类方案, 其中黑色实线为分类线, 术语称为"决策面"。每个决策面对应了一个线性分类器。虽然在目前的数据上看, 这两个分类器的分类结果是一
2021-07-14 01:55:37 2129 1
原创 人工智能-机器学习-决策树与随机森林
一.数据集的纯度决策树的关键在于当前状态下选择哪个属性作为分支条件。最佳分类属性这种“最佳性”可以用非纯度(impurity)进行衡量。如果一个数据集合中只有一种分类结果,则该集合最纯,即一致性好;如果有许多分类,则不纯,即一致性不好。有很多指标定义不纯度,根据不同判定不纯度的目标函数:1.ID3 算法ID3算法的核心是“信息熵”:1. 熵作为衡量样本纯度的标准,熵越大,越不纯。2. 希望在分类以后能够降低熵的大小,变纯一些。3. 分类后熵变小可以用信息增益(Information Ga
2021-07-01 01:50:35 688 5
原创 人工智能-机器学习-特征工程
我们用泰坦尼克号事件生还者信息举例, 采用KNN算法预测某个人的生还率, 采用KNN临近算法一.利用pandas观察数据情况我们先看下数据:各列对应字端的含义为:passengerId: 表示乘船编号surverved: 表示是否存活, 0为死亡, 1为生存(此列为标签)pclass: 客舱等级name: 名字sex: 性别age: 年龄sibsp: 兄弟姐妹数和配偶数parch: 船上父母数和子女数ticket: 船票编号fare: 船票价格cabin:客舱号embarke
2021-06-19 10:57:44 738 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 7551 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 972 1
原创 人工智能-算法模型-线性回归
一.概述 回归分析是研究统计规律的方法之一。在回归分析中我们把所关心的一些指标称为因变量,通常用Y来表示;影响因变量的变量称为自变量,用X1、X2、…XP来表示。回归分析研究的主要问题是:确定Y与X1、X2、…XP间的定量关系表达式,这种表达式称为回归方程;对求得的回归方程的可信度进行检验,判断自变量对Y有无影响;利用所求得的回归方程进行预测和控制。 &nbs
2021-05-14 01:17:16 4817 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 10247 2
原创 人工智能-数据分析-鸢尾花
此篇文章需要一些线性代数、矩阵分块和Numpy的基础,在文中对这些基础不再赘述一.鸢尾花数据在机器学习中,大部分数据均是矩阵类型的:我们先看一下鸢尾花数据:鸢尾花有四个属性:花瓣长度、宽度、花萼长度、花萼宽度,每一组属性成为一个样本,属性称为样本的特征,四个属性确定了鸢尾花的类别,也称为标签,由此形成了数据集{(x, d)}。此数据可以用于分析鸢尾花的类别。对于非数字的数据,我们要将他们映射为数字。如果类别数量较多,比如0,1,2等整形数字可以映射为 0->[1.0,0.0,0.0],1-.
2021-05-06 23:31:26 8984 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 1028 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 7048 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 1339 1
原创 Java线程池和阻塞队列
一.Java线程池的优点1.降低资源消耗:通过重复利用线程池中已创建好的线程来降低线程创建和销毁造成的消耗。2.提高响应速度:当任务到达时,任务可以直接拿到线程池中已创建好的线程立即执行。3.提高线程的可管理性:线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。二.ThreadPoolExecutor1. ThreadPoolExecutor类中共提供四种构造方法:a.拥有五个参数:int corePo..
2020-08-17 01:16:24 4049 4
原创 java中的Lock锁
一. 概述Lock 是 java.util.concurrent.locks 包 下的接口,Lock 实现提供了比 synchronized 关键字 更广泛的锁操作,它能以更优雅的方式处理线程同步问题。Lock提供了比synchronized更多的功能。 1.Lock和ReadWriteLock是两大锁的根接口,Lock代表实现类是ReentrantLock(可重入锁),ReadWriteLock(读写锁)的代表实现类是ReentrantReadWriteLock。 2.Lock 接口支...
2020-07-15 02:42:43 18302 6
原创 JMM内存模型
一.硬件的效率与一致性 在现代计算机系统中,CUP,内存和IO的处理速度是 CUP > 内存 > IO,由于计算机的存储设备与CPU的运算速度有几个数量级的差距,所以现代计算机系统都会引入一层读写速度尽可能接近处理器运算速度的高速缓存来作为内存与处理器之间的缓冲:将运算需要使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步回内存之中,这样处理器就无需等待缓慢的内存读写了。 基于高速缓存的存储交互很好地解决了处理器与内存的速度矛盾,但是它引入...
2020-07-08 02:26:22 545 1
原创 MySQL中Innodb的索引
如果想在一本书中找到某个特定主题,一般会先看输的"索引",找到对应的页码。在MySQL中,存储引擎用类似的方法使用索引,其先在索引中找到对应值,然后根据匹配的索引记录找到对应的数据行。一.索引索引是存储引擎用于快速找到记录的一种数据结构,索引往往以索引文件的形式存储的磁盘上。索引总结下来有如下几个优点:1.索引大大减少了服务器需要扫描的数据量,提高查询性能。2.素引可以帮助服务器避免排序和临时表。3.索引可以将随机IO变为顺序IO4.建立主键索引或者唯一索引...
2020-06-08 03:17:18 4587 1
原创 MySql事务隔离机制
一.事务(Transaction)事务是一个最小的不可再分的工作单元,事务只和DML语句有关,用来管理insert,update和delete语句,在 MySql 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。事务是必须满足4个条件(ACID):原子性(Atomicity): 一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。一致性(Consistency).
2020-05-20 02:12:26 1805
原创 synchronized原理
一.synchronized简介1.java中的关键字,在JVM层面,Java利用锁机制实现线程同步的一种方式。2.synchronized属于隐式锁,相比于显示锁如ReentrantLock不需要自己写代码去获取锁和释放锁。3.synchronized属于可重入锁,当一个线程得到一个对象锁后,再次请求此对象锁时是可以再次得到该对象的锁的。即 synchronized块中的synchronized还是能马上获得该锁。4.synchronized为非公平锁,即多个线程去获取锁...
2020-05-11 00:21:39 4981
原创 Java虚拟机类加载机制
一.概述虚拟机把描述类的数据从Class文件加载到内存、并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。与那些在编译时需要进行连接工作的语言不同,在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略虽然会令类加载时稍微增加一些性能开销,但是会为Java应用程序提供高度的灵活性,Java里面天生可以动态扩展...
2019-07-29 23:04:31 601
原创 JVM 垃圾收集与内存分配
3.1 概述GC需要完成的三件事:1.哪些内存需要回收? 2.什么时候回收? 3.如何回收Java内存运行时区域的各个部分,其中程序计数器,虚拟机栈,本地方法栈三个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作,每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的(尽管在运行期会由JIT编译器进行一些优化,但在本章基于概念模型的讨论中,大...
2019-05-29 00:29:12 534 1
原创 深入理解java虚拟机(第一章:走进Java)(读书笔记)
1.1 概述Java优点:1.结构严谨,面向对象2.拜托了硬件平台的束缚,实现了"一次编写,导出运行"的理想3.提供了一个相对安全的内存管理和访问机制,避免了绝大部分的内存泄漏和指针越界问题4.实现了热点代码检测和运行时编译及优化,这使得Java应用能随着运行时间的增加而获得更高的性能5.拥有一套完善的应用程序接口,还有无数的第三方类库1.2 Java技术体系Sun公司...
2019-05-17 00:22:36 390 1
原创 Redis 基础
redis 关键特点: Redis 的数据存储在内存中,这使得它非常快,可以在毫秒级甚至微秒级别内进行数据的读取和写入。 SAVE/BGSAVE 命令描述: SAVE 命令会阻塞当前 Redis 服务器,将当前时刻内存中所有的数据以快照方式写入一个默认为(dump.rdb)的二进制文件中。默认路径为当前redis的安装目录。当redis启动时,会自动加载这个文件进行数据的恢复。在此期间,Redis 无法处理任何其他请求。因此,SAVE 通常用于需要立即保存数据的特殊场景,而不是日常操作。可以通过以
2024-12-13 10:46:09 839
原创 redis 基础
Redis 是一个开源的、高性能的键值对(key-value)存储数据库,通常用作缓存、消息队列或持久化的数据存储。它的全称是 REmote DIctionary Server,最初由 Salvatore Sanfilippo 开发并于2009年发布。
2024-12-11 11:28:16 830
原创 算法-贪心算法
初始化从某个初始解开始选择步骤在每一步选择中,选择在当前状态下最优或最有利的选择。检查是否完成检查当前选择是否构成了一个完整的解,或者是否满足了问题的要求。如果是,则算法结束;否则,继续进行下一步选择。贪心算法在某些情况下能够非常高效地解决问题,但并不适用于所有问题。二.活动选择问题。
2024-07-02 17:44:20 689
原创 算法-罗马数字转整数
1. 通常情况下,罗马数字中小的数字在大的数字的右边。若输入的字符串满足该情况,那么可以将每个字符视作一个单独的值,累加每个字符对应的数值即可。2.若存在小的数字在大的数字的左边的情况,根据规则需要减去小的数字。对于这种情况,我们也可以将每个字符视作一个单独的值,若一个数字右侧的数字比它大,则将该数字的符号取反。
2024-05-29 22:34:10 416 1
原创 算法-回文数
然后,反转后半部分的数字。逐步的求10的余数, 即可求得最后一位数, 然后除以10, 去掉最后一位数, 对于数字 1221,如果执行 1221 % 10,我们将得到最后一位数字 1,要得到倒数第二位数字,我们可以先通过除以 10 把最后一位数字从 1221 中移除,1221 / 10 = 122,再求除以 10 的余数,122 % 10 = 2,就可以得到倒数第二位数字。如果我们把最后一位数字乘以 10,再加上倒数第二位数字,1 * 10 + 2 = 12,就得到反转后的数字。Go代码:
2024-05-29 22:07:51 469
原创 算法-两数之和
利用哈希表, 将 x 值存入哈希表, x 值为 key, 下标为 value, 则每次去寻找存不存在 target - x 的 key, 如果不存在, 则继续将 x 存入哈希表。
2024-05-29 20:41:30 353
原创 Python操作鼠标键盘和爬虫
pyautogui 是一个 Python 库,它允许你控制鼠标和键盘。这意味着你可以编写 Python 脚本来自动执行各种任务,例如点击按钮、输入文本、移动鼠标等。这个库非常适合用来编写自动化脚本来完成重复性的工作,比如网页表单填写、屏幕截图、GUI测试和爬虫等。
2024-05-15 17:26:07 1682 1
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关注的人