- 博客(684)
- 资源 (3)
- 收藏
- 关注
原创 数据结构基础之《(11)—堆》
假设它是最小的数,将它挪到顶,就必然要对每棵子树的头结点进行判断。大根堆:其特点在于每个节点的值都大于或等于其子节点的值。小根堆:其每个非叶子节点的值都小于或等于其子节点的值。若原堆是大根堆,最后一个数它肯定是整个堆里最小的数。1、堆在结构上是一颗完全二叉树。4、调整后为什么还是大根堆。3、树调整的代价logN。5、自己实现堆结构代码。
2024-12-05 15:41:17 193
原创 数据结构基础之《(10)—快速排序》
i留在原地,第三个数是2,小于num,自己和自己交换,小于区右移一个位置,i++(2)i位置的数区左扩,i不动。第一个数3,小于num,自己和自己交换,小于区右移一个位置,i++第二个数5,大于num,5和2交换,大于区左移一个位置,i不动。第四个数0,大于num,0和4交换,小于区右移一个位置,i++第六个数6,大于num,6和7交换,大于区左移一个位置,i不动。
2024-12-02 17:32:09 394
原创 数据结构基础之《(9)—归并排序》
1、整体是递归,左边排好序+右边排好序+merge让整体有序。说明:在arr上,从L到R范围上让它变成有序的。3、利用master公式来求解时间复杂度。2、让其整体有序的过程里用了排外序方法。(2)f(M+1, R)之间有序。(1)先f(L, M)之间有序。4、当然可以用非递归实现。1、首先有一个f函数。
2024-11-28 16:34:41 552
原创 数据结构基础之《(8)—哈希表和有序表》
5、使用哈希表增(put)、删(remove)、改(put)和查(get)的操作,可以认为时间复杂度为O(1),但是常数时间比较大。4、有无伴随数据,是HashMap和HashSet唯一的区别,底层怎么组织,实际结构是一样的。6、放入哈希表的东西,如果是基础类型,内部按值传递,内存占用是这个东西的大小。7、放入哈希表的东西,如果不是基础类型,内部按引用传递,内存占用是8个字节。3、如果既有key,又有伴随数据value,可以使用HashMap结构。AVL树,SB树,红黑树,跳表。二、哈希表和有序表区别。
2024-11-27 16:54:27 130
原创 springboot配置prometheus(2)
1、前面在PrometheusMetricsConfig.java文件中定义的bean是用prometheus原生的类,相当于手搓功能,比较费时费力,可以用micrometer提供的类和方法,它做了一层封装。一、使用micrometer获取度量指标。3、使用Counter。
2024-11-22 14:31:58 135
原创 数据结构基础之《(7)—递归》
6)f(0,0)函数有返回值,返回给系统栈的栈顶,所以会重建f(0,1)这个过程,重建临时变量mid,把f(0,0)的返回值塞到leftMax变量里,从22行往下跑。分解为f(0,0)最大值,f(1,1)最大值,f(2,2)最大值,f(3,3)最大值。1)将[L..R]范围分成左右两半。2)如果log(b,a) > d,复杂度为O(N^log(b,a))2、上面的例子T(N)=2T(N/2)+O(N^0)3)程序销毁f(0,3)函数,跑f(0,1)函数。5)程序销毁f(0,1)函数,跑f(0,0)函数。
2024-11-11 17:48:54 395
原创 数据结构基础之《(6)—栈和队列》
维护一个min成员变量行不行,不行,你知道当前最小的,返回后,剩余元素中最小的不知道。2、语言提供的api是有限的,当有新的功能是api不提供的,就需要改写。2、实现一个特殊的栈,在基本功能的基础上,再实现返回栈中最小元素的功能。5)颠倒两个队列,help变成data队列,data变成help队列。3、任何软件工具的底层都是最基本的算法和数据结构,这是绕不过去的。1)用两个队列,一个data队列,一个help队列。1)用两个栈,一个push栈,一个pop栈。维护两个栈,一个data栈,一个min栈。
2024-11-11 16:05:56 196
原创 springboot配置prometheus(1)
Micrometer在使用的Prometheus Java客户端,它有两个版本,Micrometer支持这两个版本。如果你想使用“新”客户端(1.x),请使用micrometer-registry-prometheus,但如果你想用“旧”客户端(0.x),请使用micrometer-registry-prometheus-simpleclient。springboot自带micrometer-registry-prometheus依赖,但是版本是1.8.x比较旧不能用,一定要用1.13.0以上版本。
2024-10-31 15:32:45 462
原创 数据结构基础之《(5)—链表》
1、链表相关的问题几乎都是coding问题。1、单向链表节点结构(可以实现成泛型)二、单向链表和双向链表最简单的练习题。(1)单链表和双链表如何反转。2、双向链表节点结构。
2024-09-26 15:38:10 274
原创 数据结构基础之《(4)—异或运算》
4、题目四:一个数组中有两种数出现了奇数次,其他数都出现了偶数次,怎么找到并打印这两种数。2、题目二:一个数组中有一种数出现了奇数次,其他数都出现了偶数次,怎么找到并打印这种数。整个数组可以分为两大类:第一类是第8位是1的数,第二类是第8位是0的数。不用管abcde是什么顺序,只要同一批数,异或的结果是一样的。假设第8位是1,说明a的第8位和b的第8位不同。将所有数异或到一起,留下的数就是奇数次的数。第8位上是0的数也可能存在出现了偶数次的数。第8位上是1的数可能存在出现了偶数次的数。
2024-09-25 14:58:42 463
原创 数据结构基础之《(3)—二分法》
1、二分法查找的时间复杂度是依赖于2的几次方,所以O是log2(N),以2为底可以直接写成logN。(3)i位置的数,既比i-1位置的数小,也比i+1位置的数小,就是局部最小。arr无序数组,任意两个相邻的数都不相等,返回一个局部最小的位置。1、经常见到的类型是在一个有序数组上,开展二分搜索。(2)N位置的数比N-1位置的数小,就是局部最小。2、在一个有序数组中,找>=某个数最左侧的位置。3、在一个有序数组中,找=2最左侧的位置。
2024-09-06 17:02:05 383
原创 数据结构基础之《(2)—对数器》
3、你在网上做笔试,但是前几个测试用例都过了,突然一个巨大无比数据量来了,结果你的代码报错了,如此大的数据量根本看不出哪错了。1、你在网上找到了某个公司的面试题,你想了好久,感觉自己会做,但是你找不到在线测试,5、如果有一个随机样本使得比较结果不一致,打印样本进行人工干预,改对方法a和方法b。2、你和朋友交流面试题,你想了好久,感觉自己会做,但是你找不到在线测试。1、你想要测的方法a(你设计的流程时间复杂度低,但是不知道对不对)4、把方法a和方法b跑相同的随机样本,看看得到的结果是否一样。
2024-09-05 17:22:48 474
原创 数据结构基础之《(1)—复杂度》
比如:执行一个数组的寻址,执行的时间和数据量没关系,第1000个位置和第1000万个位置,时间是一样的,计算机用偏移量获得。3、这就是时间复杂度的意义,它是衡量算法流程的复杂度的一种指标,该指标只与数据量有关,与过程之外的优化无关。(1)先在0到n-1中,找到最小值位置在哪儿,然后把最小值和0位置的数交换。(3)在1到n-1中,找到最小值的位置在哪儿,然后把最小值和1位置的数交换。反之,执行时间不固定的操作,跟样本量有关的,都不是常数时间的操作。当样本量大到足够大的时候,决定算法快慢的就是高阶项的东西。
2024-08-20 17:50:34 464
原创 mysql存储中文长度
oracle的varchar2是字节(中文占多个字节长度),nvarchar2是字符(中文占一个字符长度)mysql的varchar类型是存储字符为单位(包括汉字、字母、数字)varchar(1)就是1个汉字、1个字母、1个数字。
2024-08-13 09:52:56 341
原创 sm2证书生成(openssl3.0)
注意命令有变化不能用openssl ec工具查看,不知道为啥?注意目录不是lib了,变成lib64了。5、更新动态链接库数据。6、重新加载动态链接库。
2024-06-06 14:05:58 1367 2
原创 TCP连接优化
CLOSE_WAIT:出现在被动断开方,收到主动断开方的FIN,发出自己的ACK后。一个是TIME_WAIT,一个是CLOSE_WAIT,是不同的两个状态。TIME_WAIT:出现在主动断开方,发出最后一个ACK后。
2024-05-29 17:28:34 320
原创 openjdk17 Cannot invoke “Object.getClass()“ because “cause“ is null
原因是服务器升级jdk到openjdk17,应用springboot版本太低,不兼容,升级到2.6.15就可以了。
2024-05-28 19:45:00 783
原创 深度学习基础之《TensorFlow框架(18)—卷积神经网络(2)》
卷积运算的目的是特征提取,第一层卷积层可能只能提取一些低级的特征,如边缘、线条和角等层级,更多层的网络能从低级特征中迭代提取更复杂的特征。卷积神经网络中每层卷积层由若干卷积单元(卷积核)组成,每个卷积单元的参数都是通过反向传播算法最佳化得到的。卷积核我们可以理解为一个观察的人,带着若干权重和一个偏置去观察,进行特征加权运算。1、卷积层(Convolutional Layer)介绍。卷积核 - Filter - 过滤器 - 模型参数。2、卷积核(Filter)的四大要素。(4)卷积核零填充大小。
2024-05-17 17:15:48 297
原创 深度学习基础之《TensorFlow框架(17)—卷积神经网络》
(4)通常所说的深度学习,一般指的是这些CNN等新的结构以及一些新的方法(比如新的激活函数Relu等),解决了传统多层神经网络的一些难以解决的问题。(2)卷积神经网络CNN,在原来多层神经网络的基础上,加入了更加有效的特征学习部分,具体操作就是在原来的全连接层前面加入了卷积层和池化层。(1)传统意义上的多层神经网络是只有输入层、隐藏层、输出层。随着人工智能需求的提升,我们想要做复杂的图像识别,做自然语言处理,做语义分析翻译等等,多层神经网络的简单叠加显然力不从心。2、卷积神经网络与传统多层神经网络对比。
2024-05-09 10:40:30 661 1
原创 Java基础之《mybatis-plus多数据源配置》
引入MyBatis-Plus之后请不要再次引入MyBatis以及mybatis-spring-boot-starter和MyBatis-Spring,以避免因版本差异导致的问题。配置mybatis-plus第一个数据库的SqlSessionFactory和SqlSessionTemplate。配置mybatis-plus第二个数据库的SqlSessionFactory和SqlSessionTemplate。5、@MapperScan和dao层@Mapper二选一。1、pom文件引入依赖。
2024-05-02 10:09:51 1423 2
原创 深度学习基础之《TensorFlow框架(16)—神经网络案例》
每一个mnist数据单元有两部分组成:一张包含手写数字的图片和一个对应的标签。我们把这些图片设为“xs”,把这些标签设为“ys”。训练数据集和测试数据集都包含xs和ys。比如训练数据集的图片是mnist.train.images,训练数据集的标签是mnist.train.labels。mnist数据集是一个经典的数据集,其中包括70000个样本,包括60000个训练样本和10000个测试样本。2、下载地址:http://yann.lecun.com/exdb/mnist/一、mnist手写数字识别。
2024-04-29 14:51:38 525
原创 springboot配置WebMvcConfigurationSupport
2、方式2:如果想保持springboot mvc的默认配置,并且自定义更多的mvc配置,如:interceptors、formatters、view controllers等。3、WebMvcConfigurerAdapter是WebMvcConfigurer的实现类,且大部分为空方法,由于Java8中可以使用default关键字为接口添加默认方法,所以在spring5.0之后就已经弃用本类。@EnableWebMvc表示完全自己控制mvc配置,也就是说所有配置自己重写,所有默认配置都没了。
2024-04-28 13:29:49 753 1
原创 深度学习基础之《TensorFlow框架(15)—神经网络》
人工神经网络(Artificial Neural Network,简写为ANN)。也简称为神经网络(NN)是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)结构和功能的计算模型。经典的神经网络结构包含三个层次的神经网络。分别为输入层、输出层以及隐藏层。
2024-04-24 11:07:06 493
原创 深度学习基础之《TensorFlow框架(14)—TFRecords》
1、TFRecords其实是一种二进制文件,虽然它不如其他格式好理解,但是它能更好的利用内存,更方便复制和移动,并且不需要单独的标签文件。(3)将协议内存块序列化为字符串,并且通过tf.io.TFRecordWriter写入到TFRecords文件。(2)将数据填入到Example协议内存块(protocol buffer)3、文件格式*.tfrecords。一、什么是TFRecords文件。二、Example结构解析。
2024-04-23 16:31:45 487
原创 深度学习基础之《TensorFlow框架(13)—二进制数据》
接下来的3072个字节是图像像素的值。前1024个字节是红色通道值,下1024个是绿色通道值,最后1024个是蓝色通道值。CIFAR-10数据集由10个类别的60000个32x32彩色图像组成,每个类别有6000个图像。每个文件都包含10000个这样的3073字节的行图像,但没有任何分隔行的限制。二进制数据文件包含data_batch_1.bin 到 data_batch_5.bin、test_batch.bin。3、data_batch_1.bin 到 data_batch_5.bin 训练集。
2024-04-22 17:27:21 440
原创 深度学习基础之《TensorFlow框架(12)—图片数据》
文本特征抽取:转换成数值,二维数组shape(n_samples, m_features)字典特征抽取:转换成数值,二维数组shape(n_samples, m_features)组成一张图片特征值是所有的像素值,有三个维度:图片长度、图片宽度、图片通道数。我们经常接触到的图片有两种,一种是黑白图片(灰度图),另一种是彩色图片。图片:转换成数值,三维数组shape(图片长度、图片宽度、图片通道数)描述一个像素点,如果是灰度图,那么只需要一个数值来描述它,就是单通道。灰度图[长,宽,1]彩色图[长,宽,3]
2024-04-19 17:38:33 420
原创 springboot @ConditionalOnProperty注解
(4)matchIfMissing:缺少该配置时是否可以加载,如果为true,没有该配置属性时也会正常加载,反之则不会生效。(3)havingValue:它的值与配置文件的值对比,当两个值相同,类会被加载到spring的IOC容器中。@ConditionalOnProperty注解可以有条件的加载bean。(1)prefix:配置文件中的前缀。比如有3个定时任务,想设置开关。(2)name:配置的名字。
2024-04-12 13:38:57 365
原创 深度学习基础之《TensorFlow框架(11)—数据读取》
除此以外,还有Dataset.repeat()(重复数据集的元素)、Dataset.reduce()(与Map相对的聚合操作)、Dataset.take()(截取数据集中的前若干个元素)等,可参考API文档进一步了解。将数据集打乱(设定一个固定大小的缓冲区(Buffer),取出前buffer_size个元素放入,并从缓冲区中随机采样,采样后的数据用后续数据替换)对数据集中的每个元素应用函数f,得到一个新的数据集(这部分往往结合tf.io进行读写和解码文件,tf.image进行图像处理)
2024-03-31 18:21:17 784
原创 深度学习基础之《TensorFlow框架(10)—案例:实现线性回归(2)》
3、如果需要在TensorFlow2.0中使用静态图,可以使用@tf.function装饰器将普通Python函数转换成对应的TensorFlow计算图构建代码。2、而在TensorFlow2.0时代,采用的是动态计算图,即每使用一个算子后,该算子会被动态加入到隐含的默认计算图中立即执行得到结果,而无需开启Session。1、在TensorFlow1.0时代,采用的是静态计算图,需要先使用TensorFlow的各种算子创建计算图,然后再开启一个会话Session,显式执行计算图。收集高维度的变量参数。
2024-03-22 17:00:04 750
原创 深度学习基础之《TensorFlow框架(9)—案例:实现线性回归》
(3)这里将数据分布的规律确定,是为了使我们训练出的参数跟真实的参数(即0.8和0.7)比较是否训练准确。(4)当梯度下降到一定程度,使得损失函数比较小的时候,所对应的权重和偏置,就是我们要求的模型参数。y_predict = x * 权重(1, 1) + 偏置(1, 1)(2)learning_rate:学习率,一般为0-1之间比较小的值。(2)数据本身的分布为 y = 0.8 * x + 0.7。(1)有个假设函数,假定特征值和目标值满足这样的关系。100行1列,乘以1行1列,得出100行1列。
2024-03-20 17:22:12 566
原创 深度学习基础之《TensorFlow框架(8)—高级API介绍》
在模块中,已经实现了几种简单的分类器和回归器,包括:Baseline、Learning和DNN。这里的DNN的网络,只是全连接网络,没有提供卷积网络。tf.contrib.layers提供了能够将计算图中的网络层、正则化、摘要操作,是构建计算图的高级操作,但是tf.contrib包含不稳定和实验代码,有可能以后API会改变。这个模块相当于为TensorFlow进行的脚本提供一个main函数入口,可以定义脚本运行的flags。这个模块提供了一些训练器,与tf.nn组合起来,实现一些网络的优化计算。
2024-03-19 15:14:26 316
原创 深度学习基础之《TensorFlow框架(7)—变量》
默认为[GraphKeys.GLOBAL_VARIABLES],如果trainable是True,变量也被添加到图形集合[GraphKeys.TRAINABLE_VARIABLES]1、TensorFlow变量是表示程序处理的共享持久状态的最佳方法。这里的变量和传统认知里存储值或者返回值不一样,他是TensorFlow里的一个组件。(3)collections:新变量将添加到列出的图的集合中collections。2、变量需要显示初始化,才能运行值(TensorFlow2.0版本不需要)
2024-03-19 14:14:12 526
原创 Java基础之《Stream流(2)》
mapFactory:无参构造函数提供返回类型:提供一个容器初始化方法,用于创建新的Map容器(使用该容器存放值对)(1)使用Map集合中的方法keySet(),把Map集合所有的key取出来,存储到一个Set集合中。downstream:值映射:通过聚合方法将同键下的结果聚合为指定类型,该方法返回的是键值对的值。所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前。这个接口有三种类型,T代表流中元素的类型,A是中间结果容器的类型,R是最后返回的类型。
2024-03-05 15:57:54 497 1
原创 深度学习基础之《TensorFlow框架(6)—张量》
张量Tensor和ndarray是有联系的,当我们print()打印值的时候,它返回的就是ndarray对象。TensorFlow的张量就是一个n维数组,类型为tf.Tensor。矩阵,二维数组 [[2,3,4],[2,3,4]]向量,一维数组 [2,3,4]标量,可以看做0阶张量。向量,可以看做1阶张量。矩阵,可以看做2阶张量。(2)shape:形状(阶)张量,在计算机当中如何存储?(1)type:数据类型。
2024-02-20 20:49:52 869
原创 深度学习基础之《TensorFlow框架(5)—会话》
(2)tf.compat.v1.InteractiveSession:用于交互式上下文中的TensorFlow,比如想验证下自己的想法。一个运行TensorFlow operation的类。会话包含以下两种开启方式。2.x版本由于是即时执行模式,所以不需要会话。但是可以手工开启会话。(1)tf.compat.v1.Session:用于完整的程序当中。在2.x版本中没有eval()函数了,用numpy()函数代替。2、InteractiveSession例子。
2024-02-18 16:03:52 512
原创 深度学习基础之《TensorFlow框架(4)—Operation》
(1)一个操作对象(Operation)是TensorFlow图中的一个节点,可以接收0个或者多个输入Tensor,并且可以输出0个或者多个Tensor,Operation对象是通过op构造函数(如tf.matmul())创建的。(2)例如c = tf.matmul(a, b)创建了一个Operation对象,类型为MatMul类型,它将张量a、b作为输入,c作为输出。(3)其中tf.matmul()是函数,在执行matmul函数的过程中会通过MatMul类型创建一个与之对应的对象。
2024-02-17 14:31:51 620
原创 深度学习基础之《TensorFlow框架(3)—TensorBoard》
2、TensorFlow可用于训练大规模深度神经网络所需的计算,使用该工具涉及的计算往往复杂而深奥。为了方便TensorFlow程序的理解、调试和优化,TensorFlow提供了TensorBoard可视化工具。1、TensorFlow有一个亮点就是,我们能看到自己写的程序的可视化效果,这个功能就是TensorBoard。一、TensorBoard可视化学习。1、数据序列化events文件。二、实现程序可视化过程。
2024-02-17 10:20:15 439
原创 深度学习基础之《TensorFlow框架(2)—图》
(1)通过调用tf.compat.v1.get_default_graph()访问,要将操作添加到默认图形中,直接创建OP即可。1、图包含了一组tf.Operation代表的计算单元对象和tf.Tensor代表的计算单元之间流动的数据。图结构:数据(Tensor) + 操作(Operation)(2)op、sess都含有graph属性,默认都在一张图中。通常TensorFlow会默认帮我们创建一张图。
2024-02-16 15:23:11 937
原创 深度学习基础之《TensorFlow框架(1)—TF数据流图》
TensorFlow1.x构建和执行是分成两个步骤,TensorFlow2.x升级到了即时执行模式,所以就不需要会话了。TensorFlow1.x中跨一个或多个本地或远程设备运行数据流图的机制。1、TensorFlow程序通常被组织成一个构建图阶段和一个执行图阶段。这是TensorFlow将计算表示为指令之间的依赖关系的一种表示法。在构建阶段,数据与操作的执行步骤被描述成一个图。在执行阶段,使用会话执行构建好的图中的操作。一、TensorFlow实现一个加法运算。提供图当中执行的操作。
2024-02-16 14:13:02 600
原创 深度学习基础之《深度学习介绍》
(2)深度学习通常由多个层组成,它们通常将更简单的模型组合在一起,将数据从一层传递到另一层来构建更复杂的模型。通过训练大量数据自动得出模型,不需要人工特征提取环节。(1)机器学习的特征工程步骤是要靠手工完成的,而且需要大量领域专业知识。深度学习:没有人工特征提取,直接将特征值传进去。机器学习:人工特征提取 + 分类算法。一、深度学习与机器学习的区别。
2024-02-12 15:25:31 1095
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人