- 博客(25)
- 资源 (1)
- 收藏
- 关注
原创 多线程编程——互斥锁死锁案例
前言线程同步是多线程编程必须考虑的一个机制,线程同步的机制有:1.POSIX信号量2.互斥量(互斥锁)3.条件变量接下来将讨论互斥锁。什么是互斥锁呢?互斥锁(也称互斥量)可以用来保护临界区代码段,确保其独占式的访问。什么是死锁?使用互斥锁的一个可能带来的问题就是死锁。死锁使得一个或者多个线程被挂起而无法继续执行,而且这种情况还不容易被发现。比如:①在一个线程中堆一个已经加锁的普通锁再次加锁,将导致死锁。②两个线程按照不同的顺序来申请两个互斥锁,也容易产生死锁。对于第二种情况,给出以下详细
2021-09-23 17:16:58
472
原创 C++内存泄漏检测
内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存情况。内存泄漏并 非指的是内存在物理上消失,而是应用程序分配某段内存后,由于设计错误,导致在释 放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪费。CRT库为我们提供了检测和识别内存泄漏的有效方法,原理:内存分配要通过CRT在运行时实现,只要分配内存和释放内存时分别做好记录,程序结束时对比分配内存和释放内存的记录就可以确定是不是内存泄漏。因为new操作分配动态内存是调用operator new的,delete操作是调用operat.
2021-08-21 22:35:56
1127
原创 Leetcode72----编辑距离
题目描述:动态规划解题分析:首先,确定dp[i][j]dp[i][j]dp[i][j]的状态转移方程表示什么意思。含义:表示以下标i−1i -1i−1结尾的word1word1word1与下标j−1j -1j−1结尾的word2word2word2需要最少的操作次数。首先,分两种大情况:1.word1[i−1]==word2[j−1]word1[i - 1] == word2[j - 1]word1[i−1]==word2[j−1],那么只要看[0,i−2][0, i -2 ][0,i−2]与[0
2021-07-17 11:22:39
210
1
原创 Leetcode---688“马”在棋盘上的概率
前言: 在大厂的笔试中,DFS和BFS以及动态规划,考察的频率非常高,关于"马走日"的问题有很多变形,此次根据力扣上的688题,先对“马走日”问题做个开端,后续再补充关于相关的题目。题目描述:题目分析: 首先马有八个方向可以移动,移动到某个点后,又可以往八个方向移动,那么可想到用深度优先遍历算法,但是如果直接用深度优先遍历的话,会出现运行超时,超时原因: 当马走出去之后,可能又会回到原来的点继续遍历,比如:从点(0,0)出发,到达(2,1)或者(1,2),(2,1)和(1,2)又可以回到(0,0),
2021-07-08 21:02:46
391
原创 C++的sort函数中参数cmp用例
描述: C++的sort函数默认是从小到大排序,在一次笔试中,需要对如下一个变量vec进行排序vector<pair<int,int>>vec**排序规则:**先按照pair.first从小到大排序,并且相等的pair.first按照从大到小排序#include<iostream>#include<vector>#include<algorithm>using namespace std;bool cmp(pair<int,
2021-07-07 21:50:18
259
原创 ubuntu安装g++出现的问题解决
问题:E:无法获得锁/var/lib/dpkg/lock-frontend -open (11:资源暂时不可用)E:无法获取dpkg前端锁(/var/lib/dpkg/lock-frontend),是否有其他进程暂用它解决:sudo rm /var/lib/dpkg/locksudo rm/var/lib/dpkg/lock-frontend
2021-07-07 11:36:34
734
1
原创 Leetcode——98验证二叉搜索树
题目描述:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。思路: 二叉搜索树的中序遍历的结果的递增的。解法1: 递归+创建数组/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * T
2021-03-14 10:04:23
72
原创 二叉树(前中后序)遍历——递归迭代
1.二叉树前序遍历1.1 递归/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), rig
2021-03-08 20:43:54
98
原创 LeetCode双指针法求两个有序数组的中位数
直接上代码下面展示一些 内联代码片。// An highlighted blockclass Solution {public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { //若m+n为偶数,那么中位数为第(m+n+1)/2和第(m+n+2)/2个数相加的平均值 //若m+n为奇数,那么中位数为第(m+n+1)/2和第(
2020-12-08 09:44:49
278
转载 c++中static的用法详解
C 语言的 static 关键字有三种(具体来说是两种)用途:1. 静态局部变量:用于函数体内部修饰变量,这种变量的生存期长于该函数。下面展示一些 内联代码片。int foo(){ static int i = 1; // note:1 //int i = 1; // note:2 i += 1; return i;}要明白这个用法,我们首先要了解c/c++的内存分布,以及static所在的区间。对于一个完整的程序,在内存中的分布情况如下图: 1.栈区: 由编译器自动分配释放,像局
2020-12-06 21:34:50
3515
1
原创 二分法查找有序数组中目标值
二分查找法理论不说了,直接上代码#include <iostream>#include<vector>using namespace std;int search(vector<int>&nums, int target){ int first = 0; int last = nums.size(); while(first != last) { int mid = first + (last - first)/2; if(nums[
2020-12-06 00:04:15
453
原创 C++的形参
形参1.非引用形参1.1 普通形参1.1.1 非const形参1.1.2 const形参1.2 指针形参1.2.1 非const指针形参1.2.2 const指针形参2.引用形参1.非引用形参1.1 普通形参1.1.1 非const形参传入的形参形式为voidfunc(intx)void \quad func(int \quad x)voidfunc(intx)特点: 不改变实参的值,传入的实参可以为相同类型变量,字面值,const类型.输出:结论: 非const形参,并不改变实参值。.
2020-12-04 20:34:04
2119
原创 什么是路由选择?
路由选择包括两类:①静态路由选择 ②动态路由选择# 因特网所采用的路由选择协议的主要特点自适应:动态路由选择,能较好地适应网络状态的变化。分布式:因特网中的各路由器通过相互间的信息交互,共同完成路由信息的获取和更新。分层次:将整个因特网划分为许多个较小的自治系统AS例如,一个较大的ISP就可以划分为一个自治系统。自治系统内部和自治系统外部采用不同的路由选择协议自治系统之间的路由选择称为域间路由选择自治系统内部的路由选择称为域内路由选择注:IGP和EGP只是内部和外部路由选择的名称,而
2020-12-01 11:39:26
5791
原创 读书笔记-----网络层
目录4.1 网络层提供的两种服务4.2 网际协议IP4.2.1虚拟互连网络4.2.2 分类的IP地址本章最重要的内容:(1)虚拟互连网络的概念(2)IP地址与物理地址的关系(3)传统的分类的IP地址(包括子网掩码)和无分类域间路由选择CIDR(4)路由选择协议的工作原理4.1 网络层提供的两种服务4.2 网际协议IP与IP协议配套使用的三个协议:地址解析解析ARP,网际控制报文协议ICMP,网际组管理协议IGMP本来还有个协议叫做逆地址解析协议RARP,是和ARP协议配合使用
2020-11-30 20:42:54
155
原创 读书笔记-----数据链路层
目录数据链路层使用的信道主要的两种类型:①点对点信道,使用一对一的点对点通信方式②广播信道,使用一对多的广播通信方式,其信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。...
2020-11-28 20:39:29
451
转载 集线器、交换机与路由器有什么区别?
我相信我们都玩过一款特别火的游戏:帝国时代。小时候想要玩帝国时代,需要到软件城购买盗版光盘安装(大概3块钱一张左右的样子,当时已经觉得很便宜了,谁想到现在有了网络之后是免费)。下载完成后只能进行单机模式。小A是一个帝国时代大神,他打通了游戏的所有关卡,可以一个人单挑8个疯狂的电脑。渐渐他觉得无聊了,想要找小伙伴一起PK。但是如何实现两台设备的互联呢?小A很聪明,他发明了一个类似于USB口一样的可以传输数据的端口,他将其命名为网口。小A通过一根网线将自己的电脑与小B的网口相连,实现了两台电脑间的互连。
2020-11-15 16:46:50
302
原创 读书笔记——计网概述
概述1.1 计算机网络在信息时代的作用1.2 互联网概述1.2.1 网络的网络1.2.2 互联网基础结构发展的三个阶段1.1 计算机网络在信息时代的作用在21世纪,数字化,网络化,信息化,已经耳熟能详了,,是一个以网络为核心的信息时代。网络,顾名思义,一种相互之间连接且可以非常迅速地传递信息的状态。三大类常用的网络: ①电信网络。②有线电视网络。③计算机网络根据服务分工,电信网络: 向用户提供电话、电报以及传真服务。有线电视网络: 向用户传送各种电视节目。计算机网络: 使得用户能够在计算机之间传送数
2020-11-15 16:31:44
584
2
原创 电脑的所有浏览器打不开网页问题解决
**问题:**网络连接正常,DNS正常,ping也可以通,可以上微信,扣扣,但是所有浏览器打不开网页.**问题起因之一:**本人下载了个代理梯子,安装的时候出问题运行不了且黑屏了,手动重启电脑后,浏览器仍然可以使用,但是第二天开机的时候却不可。解决办法: win+R,输入regedit运行注册表,定位到【HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings】找到“ProxyEnable”双击,把数值1改
2020-10-28 10:37:05
3676
2
原创 matlab读取三维mhd,raw格式数据
前言: 在医学图像处理中,数据保存可以是raw数据格式,即里面都是纯像素数据,mhd则是关于非图像像素的数据,可以用记事本打开,以下打开一个mhd文件格式,其中内容如下:ObjectType = ImageNDims = 3BinaryData = TrueBinaryDataByteOrderMSB = FalseCompressedData = FalseTransformMatrix = 1 0 0 0 1 0 0 0 1Offset = 0 0 0CenterOfRotation =
2020-10-21 11:23:39
3523
3
原创 SVD算法的应用
目录SVD分解的应用图像压缩算法深度学习加速SVD分解的应用定义: 设A∈Crm×n,r>0A\in C_{r}^{m\times n},\quad r>0A∈Crm×n,r>0,AHAA^{H}AAHA的特征值为λ1≥λ2⋯≥λr λr+1=⋯=λn=0\lambda_{1}\geq \lambda_{2}\cdots \geq \lambda_{r}\> \lambda_{r+1}=\cdots=\lambda_{n}=0λ1≥λ2⋯≥λrλr+1=⋯=λn=0
2020-10-12 16:32:43
375
原创 机器学习之重温线性代数
目录一、矩阵的基本概念和意义1、一种线性变换2、加法与数乘3.矩阵的乘法二、矩阵运算在深度学习中的应用(初级)1.数字图像识别2.矩阵的迹,矩阵的转置,对称矩阵(协方差矩阵)1.矩阵的迹2.矩阵的转置3.对称矩阵4.协方差矩阵3.行列式的引入1.特殊矩阵的行列式2.行列式的性质3.行列式按行(列)展开,代数余子式4.行列式的应用:克莱姆法则(Cramer′sruleCramer's\quad ruleCramer′srule)4.矩阵逆的引入4.1 矩阵的逆的常用性质以及特殊矩阵的逆4.2 特殊矩阵的逆4.
2020-10-11 15:17:48
20211
转载 特征提取(Detect)、特征描述(Descriptor)、特征匹配(Match)的通俗解释
特征匹配(Feature Match)是计算机视觉中很多应用的基础,比如说图像配准,摄像机跟踪,三维重建,物体识别,人脸识别,所以花一些时间去深入理解这个概念是不为过的。本文希望通过一种通俗易懂的方式来阐述特征匹配这个过程,以及在过程中遇到的一些问题。首先我通过几张图片来指出什么是特征匹配,以及特征匹配的过程。图像二:图像一与图像二的匹配:**概念理解:**什么是特征,什么是特征描述,什么是特征匹配假设这样的一个场景,小白和小黑都在看一个图片,但是他们想知道他们看的是否是同一幅图片,于是他们
2020-09-03 10:10:35
1283
1
原创 记录vs2015(x64)+Qt5.9遇到的一个奇怪问题找不到main.cpp
记录vs2015(x64)+Qt5.9遇到的一个奇怪问题找不到main.cpp本人在使用vs2015+Qt5.9新建工程时候,当选择使用msvc2015(32位编译器的)的时候,工程中的文件夹会自动生成main.cpp函数,一切都可以正常运行;但是,当选择msvc2015 64的时候,生成的工程文件夹没有自动生成main.cpp,本人考虑就自己手动添加一个main.cpp,点击运行也正常,奇怪的问题来了,当我在关闭了vs后,从解决方案打开时,却出现了这个解决方案load failed错误提示:main.c
2020-08-14 15:05:10
2358
1
原创 从两个角度求解线性回归模型参数
1.基本形式对含有nnn个属性的样本x=(x1;x2;...;xn)\left ( x_{1} ;x_{2};...;x_{n}\right )(x1;x2;...;xn),线性模型将通过属性的线性组合f(x)=w1x1+w2x2+...+wnxn+bf\left (\mathbf{ x }\right )=w_{1}x_{1}+w_{2}x_{2}+...+w_{n}x_{n}+bf(x...
2019-10-07 15:47:30
632
原创 一文看懂BP传播算法
@[写自定义目录标题)欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计...
2019-09-08 15:40:27
5064
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人