自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2023.6.9小记——ARM的工作模式与状态

多维数组对象:NumPy引入了一种称为ndarray(N-dimensional array,多维数组)的对象,可以表示具有相同数据类型的多维数组。它提供了对数组进行快速操作和高效存储的功能。数组操作:NumPy提供了丰富的数组操作函数,包括数学运算、统计分析、线性代数、傅里叶变换、随机数生成等。这些操作函数能够。

2023-06-10 10:00:48 757

原创 2023.6.8小记——嵌入式系统初识、什么是ARM架构?

老师PPT中给出的定义是:以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、重量、功耗严格要求的专用计算机系统。简单来说,就是含有处理器的、专用的软硬件系统,具有自主的信息处理能力。看一下嵌入式系统的体系结构:其中,硬件层是使用硬件描述语言——verilog完成的电路设计,将代码烧到FPGA上,快速进行调试。除了FPGA之外,还有专用集成芯片ASIC的存在。FPGA的速度没有ASIC快,但是可以快速成品而且价格便宜。

2023-06-09 00:23:55 918

原创 2023.6.7小记——什么是FPGA?

每日小记,介绍了FPGA、UML类图、顺序图和通信图

2023-06-07 23:38:24 1449 2

原创 nodejs运行后报错Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

实际上这里涉及到数据库操作异步的问题。据我推测,db.query()是异步的,也就是说两次数据库操作可能会同时发生,也就意味着可能同时发生两次res.send()操作,从而出现错误。知道上述原因之后就好解决了,直接把第二次db.query()放到第一次db.query()的处理函数中。在node中,res.send()是不能被同时调用两次及以上的,也正好印证了报错信息中所说的。最开始我想当然的把两次数据库操作并列书写,结果就报错了。以上逻辑需要用到两次数据库操作,即。

2022-11-23 22:22:10 1872 1

原创 macos系统更新后,用vscode出现“检测到#include错误。请更新includePath”,如何解决

这个时候再找到刚才configuration的界面,会发现里面的“包含路径”内容已经更新成了你刚才输入的那6个路径,从一个workspaceholder变成workspaceholder+6条路径。原因很简单,之前的环境可能是依赖Command Line Tools for Xcode自动配置的,Xcode卸载或系统更新后导致头文件搜索路径缺失。此时关闭vscode再重启,之前的问题就没有了。

2022-10-30 16:00:52 5469 14

原创 树增强网络TAN与互信息MI

对于信息增益,我们可以理解为:引入了某个条件后,提供了一定的信息,让这件事情的不确定性下降了,而下降的程度就是信息增益。——知道随机变量X,对随机变量Y的不确定性减少的程度(或者知道随机变量Y,对随机变量X的不确定性减少的程度)。对于同一个事件,熵的值肯定是大于等于条件熵的值的,所以引出了信息增益的概念,也就是我们说的。条件熵和条件概率的概念差不多,它衡量的就是在某个条件X下,事件Y的不确定性,记作。后者的熵比前者的大,由此可见结果的不确定性更大,所以比赛结果的信息量就更大。

2022-10-10 21:05:00 586

原创 激活函数和最常用的10个激活函数

激活函数是一种添加到ANN中的函数,它决定了最终要发射给下一个神经元的内容。在人工神经网络中,一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。因此,激活函数是确定神经网络输出的数学方程式。...

2022-07-22 11:23:47 4782

原创 利用二叉树的前中序遍历序列再次创建二叉树

当时学习数据结构的时候,只是知道如何根据前中序列、后中序列或者层次遍历和中序遍历序列来人工画出一颗二叉树,但是并没有用代码去实现这个过程。接下来介绍这个代码的思想,先放出全部的代码。思路分析利用前中序遍历序列来创建二叉树,重点肯定是放在两个序列上。前序序列是用来找根节点的,根节点都在前序序列的前部分。中序序列是用来根据前面找到的根节点来划分左右子树的。所以我们可以通过下标low和high来对两个序列的左右部分进行划分,从而用递归的方法构建出整个二叉树。第一个for循环,是确定根节点在中序序列的位置,然后

2022-06-07 18:19:34 129

原创 「动态规划」0/1背包问题

给定n种物品和一个背包,物品i的重量是wi,其价值为 v i,背包的容量为C。背包问题是如何选择装入背包的物品,使得装入背包中物品的总价值最大? 如果在选择 装入背包的物品时,对每种物品i只有两种选择:装入背包或不装入背包,即不能将物品i装入背包多次,也不能只装入物品i的一部分,则称为0/1背包问题在0/1背包问题中首先需要考虑的限制条件就是:如果当前的第 i 个物品的重量大于了背包的剩余容量,那么就不能装入。如果能装入,那我们再考虑到底要不要装入?也就是从 “装入” 和 “不装入”两个方面来获得背包的

2022-06-07 16:16:19 666 1

原创 「分治法」最大子段和问题

一、问题描述给定由n个整数组成的序列(a1, a2, …, an),最大子段和问题要求该序列形如∑ak (i <= k <= j) 的最大值(1≤i≤j≤n)。当序列中所有整数均为负整数时,定义最大子段和为0。例如,序列(-20, 11, -4, 13, -5, -2)的最大子段和为11 - 4 + 13 = 20。{5,-3,4,2}的最大子序列是 {5,-3,4,2},它的和是8,达到最大;{5,-6,4,2}的最大子序列是{4,2},它的和是6。注意,要求这个子段必须是连续的。二

2022-05-29 10:34:52 8520 5

原创 「分治法」最近点对距离问题

一、问题描述给定平面S上n个点,找其中的一对点,使得在n个点组成的 所有点对中,该点对间的距离最小。假设所讨论的点是以标准笛卡儿坐标形式(x, y)给出的。因 此,在两个点Pi =(xi , yi )和Pj =(xj , yj )之间的距离是标准的欧几里德 距离: d = 根号下( x i − x j ) 2 + ( y i − y j )2二、问题分析直接用暴力解法很简单,用结构体把每个点的x、y坐标都存下来之后,用一个二重循环即可获得距离的最大值。但是这样做的时间复杂度也达到了O(n的平方)

2022-05-28 17:48:19 8807 18

原创 「分治法」棋盘覆盖问题

一、问题描述在一个2k×2 k(k≥0)个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为特殊方格。 棋盘覆盖问题要求用图所示的4种不同形状的L型骨牌覆盖给定棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。二、问题分析首先,从最简单的情况开始考虑,如果只是一个2x2的棋盘,那么肯定是有解的,因为这就是最基本的情况。但是当n很大的时候,该问题还有解吗?这是我们需要考虑的问题。这个我们可以利用数学归纳法来证明:假设当n = k的时候该问题有解,那么如何证明当n = k +

2022-05-26 20:43:24 5322

原创 初学node踩的坑

1. npm init -y想要在当前文件夹中包含package.json文件,要执行npm init -y命令。这要求文件名必须是英文的,不能包含中文和空格!2. npm install xxx 和 npm i xxx这两个的作用是相同的,直接用i即可。3. npm是全球最大的包网站,里面几乎涵盖了所有你需要的包暂时只有这两个,之后再补充...

2022-05-18 22:48:08 161

原创 『动态规划』最大K乘积问题

问题描述设I是一个n位十进制整数。如果将I划分为k段,则可得到k个整数。这k个整数的乘积称为I的一个k乘积。试设计一个算法,对于给定的I和k,求出I的最大k乘积。例如十进制整数 1234 划分为 3 段可有如下情形:1 × 2 × 34 = 681 × 23 × 4 = 9212 × 3 × 4 = 144编程任务对于给定的I 和k,编程计算I 的最大k 乘积。数据输入输入的第1 行中有2个正整数n和k。正整数n是序列的长度;正整数k是分割的段数。接下来的一行中是一个n位十进制整数。(n

2022-05-05 15:40:10 905

原创 区间动态规划问题(游艇租用问题)

问题描述长江游艇俱乐部在长江上设置了n个游艇出租站1,2,…,n。游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇。游艇出租站i到游艇出租站j之间的租金为r(i,j),1<=i<j<=n。试设计一个算法,计算出从游艇出租站1到游艇出租站n所需的最少租金。编程任务对于给定的游艇出租站i到游艇出租站j之间的租金为r(i,j),1£i<j£n,编程计算从游艇出租站1到游艇出租站n所需的最少租金。数据输入由文件input.txt提供输入数据。文件的第1行中有1个

2022-05-01 17:42:33 2587

原创 css的less预处理器学习小结

写在前面由于时间原因,笔者在此仅整理一些最常见的less用法,并未涵盖所有的内容。以后如果在项目的过程中用到了其他的内容,还会再进行补充。 如果以下内容有疏漏错误的地方,还请各位读者指正。1. 嵌套 nest在原生的css中,如果我们要对父选择器下的子选择器进行单独的样式书写,必须要在父选择器的样式下,再把所有的类名全部重复一遍。这样就会导致:代码冗杂,重复度高,可读性不强,层级关系不能很好的体现所以less为我们提供了嵌套的写法,允许将子选择器的样式写在父选择器的花括号里,有了更强的可读性下

2022-04-27 17:17:32 1658

原创 基于vuex的数据持久化处理

一、基于vuex的数据持久化存在问题:前端在使用vuex存储数据的时候,一旦页面刷新,所有之前存储的数据就会丢失。这是因为js代码运行在内存中,代码在运行时,所有的变量和函数都是保存在内存中的,因此在刷新时,之前申请的内存会被释放,js脚本会被重新加载,变量重新赋值。此问题映射在本项目上的体现:为了更直观方便的处理数据,一方面在数据库中设置了服务类型表,另一方面在前端视图层处理时,将服务列表里的类型数据都统计一遍,存放在vuex的state中。为了提高本项目的执行效率,我在vuex中设置了一个fl

2022-04-18 21:43:35 8366

原创 第一次写vue项目遇到的一些问题(已请教过学长)(未完待续)

问题一:为了及时刷新数据,每一次大的组件挂载的时候,都要请求一次后台的所有数据,导致页面经常有刷新卡顿的情况出现。实际上,这种情况在项目中是绝对不允许出现的,如果后台数据非常多,这样只会导致页面加载十分卡顿。解决方法:在vuex里面设置一个flag,控制只在初次进入页面时(mounted)请求一下后台数据,然后修改flag为false。之后要修改数据,给后台发完请求告诉要修改数据了,然后把vuex中的数据修改就可以了。问题二:一次性把所有的后台服务信息都拿了过来,怎么只显示最新添加的?直接r

2022-04-16 22:49:46 811

原创 从github下载项目 npm安装不成功

可以清一下缓存npm clear cache --force然后再重新安装npm install注意,在进行npm安装的时候,不要使用vpn,不然会安装失败,会出现time socket的报错

2022-03-29 21:10:48 876

原创 针对Vue3不能直接使用全局Vue这件事

今天发现一个很离谱的事情在我开始使用vue脚手架开始写程序之后Import Vue form ‘vue’ 就不好使了我一直以为是我的程序有问题直到今天学到了插件plugin,我还是没办法在main.js里面引入于是我就去查为什么最新版vue不能使用全局的Vue,这是因为我看的课程还是vue2的,但是脚手架下载的是最新版本的。。。兜兜转转一圈之后,我还是找到了官方文档,找到了插件那一节。我只能说,还是官网文档解决了问题。然后直接在main.js里面写上app.use(plugins)即可

2022-03-24 20:13:26 2243

原创 原地移除数组重复元素问题总结

原地移除数组重复元素问题总结注:本文章中的总结和源代码均来自labuladong的算法秘籍,写下此文的目的仅是为了自己复习所用。版权归原作者所有。如有侵权,请联系删除。类型一:有序数组/链表去重思路:快慢指针首先声明两个指针:int slow = 0 , fast = 0;让fast指针一直在前面移动,当碰到不等于slow值的时候,进入if语句,让slow++,然后nums[ slow ] = nums[ fast ]上述思路执行完之后,slow指针就指向了当前去重后的数组的最后

2022-03-17 11:32:11 1859

原创 字符串的滑动窗口技巧

大致思路根据题目到底是一个字符串还是两个字符串,选择建立散列表的个数。如果是两个字符串,一般都是两个散列表unordered_map,一个need一个window如果是一个字符串,一般一个散列表window即可。剩下的就是左指针右指针left和right,以及极可能用到的valid记录有效字符的数目接下来拿两个字符串的滑动窗口举例子题目分析题目是两个字符串,一短一长,因此要用到两个散列表。短的用need,长的用window题目还要求是包含s所有字母的最小子串,涉及到最小这个量

2022-03-10 20:40:05 528 3

原创 基于面向对象的tab栏crud功能实现

最近刚步入es6,上来就给我整面向对象,梦回java实验。。。功能需求:点击nav栏的各个版块可以切换,同时下面的内容也在跟随变化。 增加nav的版块功能,点击右侧的加号即可实现。 删除nav的版块功能,点击版块右上角的x号就可以删除。 编辑功能。双击nav和下方文本区都可以进行修改。为什么是面向对象?实际上,面向对象的好处不用多说,可维护性高,代码复用性强,低耦合......但是刚刚接触写起来还是挺麻烦的。。。这也是js的第一个面向对象案例。之前的所有案例都是面向过程的

2022-02-21 16:35:09 417

原创 淘宝侧边栏返回顶部动画效果实现

正常的animate动画函数一般是左右移动,对于返回顶部的效果,显然需要上下移动。而且涉及到页面卷上去的尺寸,并且是垂直方向。所以主体是window.pageYoffset把原先的animate函数里面的obj.offsetLeft改成window.pageyoffset注意,原先的调整定位的left值,变成了现在的调用window.scroll这个apiwindow.scroll(x-coord, y-coord)x-coord值表示你想要置于左上角的像素点的横坐标。 y-c.

2022-02-20 11:34:19 284

原创 导航栏筋斗云的制作

效果实现要求:筋斗云随着鼠标在哪里停留 就飞到哪 如果没有点击,那么鼠标离开的时候筋斗云飞回原来的位置 如果点击了,筋斗云就留在当前位置,并且当前栏目字体可以变色分析:其实就是很简单的animate动画应用,只需要进入animate.js,直接调用函数即可。但是需要注意的是,如何实现点击之后筋斗云停留在当前位置,如果不点击飞回原来位置?这就需要一个变量current来保存当前位置。最开始var current = 0;当点击之后,current = this.offsetlef

2022-02-20 11:22:36 742

原创 缓动动画的实现和多个目标值之间的移动

如何实现一个盒子匀速运动?css的linear可以实现。在js中,给定位的盒子left = 盒子当前.offsetleft + 1 + 'px'。怎么实现的呢?靠的就是这个1像素的定值。那么如何实现减速呢?把1变成变量即可。步长step = ( target - 当前offsetleft ) / x这个x可以自己定,x越大的话跑的越慢,很容易理解。那如何实现在多个目标值之间来回移动呢?在做这个效果之前我们必须知道,步长一定要取整,不然的话盒子无法精确的跑到我们的targe

2022-02-19 14:42:46 467 1

原创 拖动登录框

一个小小的拖拽登录框,涉及的地方还挺多的。。。主要在于:元素的正确获取 把一个大的程序,分步骤来做,一个一个完成 对于拖拽效果,我只需要摁住title框,也就是mousedown事件 接下来的登录框随着鼠标移动,松开鼠标登录框停在原地,都是在mousedown事件里面完成的。 登录框的坐标是鼠标页面坐标 - 鼠标盒内坐标,而鼠标盒内坐标是鼠标页面坐标 - 登录框的offset。这样是不是觉得有点永动机了?其实不是,登录框的坐标是固定定位来做的,这个top和left和offset的top和le

2022-02-18 22:33:20 368

原创 嵌套div引起的子元素margin-top不起作用

最近发现一个很奇怪的问题,给子盒子div设置一个margin-top,但是却不起作用。经过查阅,发现是该原因引起:父元素的padding值为0,自动将子元素的margin-top提升到了父元素上,因此会表现为父元素的margin-top。但是要注意,如果原先父盒子就有一个margin-top,那么此时子盒子的margin-top就不起作用了。解决方法如下:给父元素一个padding值,比如padding-top:1px,但是这样会撑大盒子,不建议 在父元素里面加一个overflow:h

2022-02-18 16:10:47 407

原创 一维前缀和与差分简述

算法入门之前缀和与差分初步理解

2021-12-30 21:11:10 330

原创 对于给定的序列实现直接插入、折半插入、冒泡、希尔、快速、选择、堆排序

1.本代码一共实现7种常见排序,其中直接插入排序和折半插入排序思想相同,只不过在寻找插入位置的时候,折半插入排序采用了二分法,在这一步上较直接插入排序更快。2.冒泡排序很简单,但是可以进阶一步,在内层循环 j 中加一个flag标识,判断在这一次循环中有没有发生值交换。如果发生了,那么flag的值变化。如果没发生,就直接break循环,节省时间提高效率。3.希尔排序属于高级排序方法,采用的是缩小增量的思想。在开始正式的排序之前(这个正式的排序可以理解为直接插入排序),先对序列中的一小部分进行排序,这个

2021-12-12 23:24:52 2557

原创 二叉排序树的创建以及在此BST上的查找算法

1. 二叉排序树的数据结构本质上和普通二叉树没有区别,只不过在创建时需要额外加上一层约束条件,使结点按照“左子树的值都比根节点小,右子树的值都比根节点大”的规则来插入。2.对二叉排序树的结点插入、中序遍历、查找结点等算法都用到了递归,十分方便。唯一注意的就是在执行创建BST时,要调用插入结点的算法,不算是递归,但也和递归差不多。上代码#include <iostream>using namespace std;typedef int KeyType;//二叉排序树的结构体

2021-12-03 13:13:41 469

原创 用邻接表表示AOV网,并判断是否是有向无环图

1. 注:本代码中的思想来源于s1mba。膜拜大神!2. 本代码在邻接矩阵的基础上创建邻接表。这样做的方便性就是,在邻接矩阵中我们可以很直观的表示出两个顶点是否相连,而且通过是不是对称矩阵的方式区分是不是有向图。这一点在创建邻接表时很重要,用 if (G.arcs[ i ][ j ] == 1)判断是不是要创建新的表结点。3. 另外,在邻接表的顶点表中外加一个入度域in也是点睛之笔,这是为了方便判断结点入度是否为0,从而决定是否入栈。4. By the way,本代码中用的是STL库中的stac

2021-11-26 21:30:13 1594

原创 用邻接矩阵创建无向图,利用DFS、BFS完成遍历,并在此基础上利用Prim算法生成最小生成树

1.用邻接矩阵表示无向图更方便,之后在遍历和生成最小生成树时需要不断访问2.好好理解Prim算法中的lowcost[ ]数组和adjver[ ]数组,虽然adjver[ ] 数组在Prim算法中没什么用3.Prim的主要思想映射到lowcost[ ]中就是,lowcost[ i ]相当于G.arcs[ i ][ ],随着不断地迭代,这个i值也会发生改变。当lowcost[ i ] == 0时,就意味着i这个点已经加入到了最小生成树的点集合U中。但是最坑爹的一点就是,前面你把lowcost[

2021-11-26 11:22:18 1006

原创 用广义表形式创建二叉树,并实现先(递归)中后(非递归)序遍历、求树的深度(递归)

1.利用广义表的形式创建二叉树的思想和用栈实现算术表达式求值的思想异曲同工,建议同时掌握正常的二叉树创建方法2.递归的代码比较好写,但是效率不高。本代码中的后序遍历是逆后序的思想(具体可查阅),通过将前序遍历的顺序调换,然后把结果逆序输出即可得到后序遍历的结果。#include <iostream>using namespace std;#define MAXSIZE 100#define OK 1#define ERROR 0typedef int Status;t.

2021-11-15 15:59:32 1444

原创 HuffmanTree的创建、编码、解码操作

#include <iostream>#include <cstdlib>#include <cstring>#pragma warning(disable:4996) //忽略strcpy的错误using namespace std;typedef struct HTNode { char c; //存储的字符 int weight; //权值 int parent, lchild, rchild; //双亲序号 左孩子和右孩子序号}HTNode,.

2021-11-15 15:46:47 1126

空空如也

空空如也

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

TA关注的人

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