自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 资源 (2)
  • 收藏
  • 关注

原创 汇编代码操作寄存器不同,得到不同长度的opcode,从而对程序性能造成影响

在分析spec cpu 2017中,汇编指令得到不同的opcode长度,从而对程序性能有影响。差别仅是操作的寄存器不同,一个为%rsp,一个为%rbp:// 使用%rsp寄存器 849d49: 48 8b 84 24 f8 17 00 mov 0x17f8(%rsp),%rax 849d50: 00 // 使用%rbp寄存器 835cfb: 48 8b 85 58 03 00 00 mov 0x358(%rbp),%raxopcode操作码(Operation Code

2022-04-13 18:50:22 880

原创 2-MIT6.828环境配置

运行环境配置及安装运行6.828提供的内核,主要需要安装gcc,git,qemu,以及一些其他的软件。还有使用git clone下载本次lab的课程资源。使用virtual box虚拟机,采用的操作系统为ubuntu20.4。安装并配置好虚拟机后,进行如下操作:$ sudo apt-get install -y gcc gdb make libgmp-dev libmpfr-dev libmpc-dev binutilsMIT6.828添加patch后的QEMU软件的安装。该QEMU是基于QEM

2021-02-04 15:26:28 420 1

原创 1-开始学习MIT6.828 Fall 2018

MIT6.828主页:https://pdos.csail.mit.edu/6.828/2018/schedule.html做Lab的Github项目页:

2021-02-04 11:21:24 188

原创 I/O多路复用-select函数详解

文章目录为什么要使用I/O多路复用什么是I/O多路复用select函数I/O事件select函数参数select例子:select函数缺点为什么要使用I/O多路复用在原来的程序中,我们可以使用fgets方法等待标准输入,但是一旦这么做,就没有办法在套接字有数据的时候读数据(read);我们也可以使用read方法等待套接字有数据时返回,但这么做了,就没有办法在标准输入(fget)有数据时,读入数...

2019-10-10 10:12:51 413

原创 通过linux命令查看运行的c++程序有多少个进程和线程

1. 使用top命令top可以查看当前计算机所有的进程详细参数通过使用如下代码:top -H -p <pid>可以查看某一个pid(进程的唯一标识)的所有线程。-H表示显示线程-p表示pid2. 使用ps命令使用ps查看计算机的进程和线程的详细情况ps -T -p <pid>上面的代码显示指定pid进程下所有线程的内容-T表示显示进程创建的线程信息...

2019-08-27 15:35:00 1668

原创 C++中函数返回引用

1. 返回引用和不返回引用的区别下面两个代码是在类中的成员函数,而m_data_变量为类的私有成员变量。int& at(){ return m_data_;}int at(){ return m_data_;}上面两个函数,第一个返回值是int的引用int&,第二个返回值是int,但是二者有什么区别?返回值为引用型(int& )的时候...

2019-08-25 22:56:52 18066 12

原创 C++错误集

assigning to ‘char *’ from incompatible type ‘const char *’

2019-08-15 22:26:08 994

原创 Effective C++总结---3、资源管理

文章目录3、资源管理条款 13:以对象管理资源条款 14:在资源管理类中小心copying行为条款 15:在资源管理类中提供对原始资源的访问3、资源管理资源管理,一旦用了,就必须将其还给系统。资源包括动态内存分配,文件描述器,互斥锁,图形界面的字型,笔刷,数据库连接,网络sockets。条款 13:以对象管理资源遇到的问题:void f(){ Investment *pInv=...

2019-08-13 11:39:08 134

原创 3. 无重复字符的最长子串

思路:设计一个子串存储最长的字符串,遍历字符串,每次将当前字符与子串进行比较,如果该字符在子串内,则将子串内该字符及前面的字符删除,最后添加当前字符。若不在,则在子串中添加该字符。使用max_len记录子串最长时的长度。class Solution {public: int lengthOfLongestSubstring(string s) { string sub_...

2019-06-10 12:38:01 99

原创 pytorch1.1.0安装教程

当前情况:清华源等都不能用,使用官方源conda install pytorch torchvision cudatoolkit=10.0 -c pytorch下载pytorch时显示下载错误,很慢。在https://anaconda.org网站上搜索pytorch,直接下载这个文件(win-64/pytorch-1.1.0-py3.6_cuda100_cudnn7_1.tar.bz2...

2019-06-08 12:49:34 23924 6

原创 622. 设计循环队列

设计循环链表,使用数组。这里判断循环队列满的条件为(tail+1)%n==head,tail指向的位置不保存元素,所以这里讲实际的空间加了1。class MyCircularQueue {public: /** Initialize your data structure here. Set the size of the queue to be k. */ MyCircula...

2019-06-01 22:12:39 185

原创 C++容器总结

1. 顺序容器vector:可变大小数组,支持快速随机访问。在尾部之外的位置插入或删除元素可能很慢deque:双端队列。支持快速随机访问。在头尾位置插入\删除速度很快list:双向链表。只支持双向顺序访问,在list中任何位置进行插入/删除操作速度都很快。array:固定大小数组,支持快速随机访问,不能添加和删除元素string:与vector相似的容器,但专门用于保存字符。随机访问快。...

2019-06-01 21:19:41 281

原创 155. 最小栈

使用c++中的vector,效率很低。。。class MinStack {public: /** initialize your data structure here. */ MinStack() { } ~MinStack(){ } void push(int x) { a.push_b...

2019-05-30 13:42:51 251

原创 20. 有效的括号

简单class Solution {public: bool isValid(string s) { stack<int> sta; for(int i=0;i<s.size();++i){ if(sta.empty()){ sta.push(s[i]); ...

2019-05-29 22:53:42 83

原创 2. 两数相加

暂时不公布/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNo...

2019-05-29 00:57:15 99

原创 876. 链表的中间结点

似乎很简单/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNo...

2019-05-27 10:48:00 83

原创 707. 设计链表

单链表设计,似乎设计为双向链表时间复杂度更低// class ListNode{// public: // int val;// ListNode *next;// ListNode(int x):val(x),next(NULL){}// };class MyLinkedList {public: ListNode *head=NULL; ...

2019-05-27 10:40:15 352

原创 237. 删除链表中的节点

思路:将该节点后一个节点的值赋过来,然后删除后一个节点。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Soluti...

2019-05-26 21:05:20 80

原创 234. 回文链表

思路:遍历链表,统计链表的长度。反转链表前半部分遍历链表前半部分和后半部分的每个元素时间复杂度为O(n),空间复杂度为O(1)/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val...

2019-05-26 20:54:40 186

原创 206. 反转链表

设置三个指针,一个指头,一个指投next,一个指向头next->next,然后开始反转。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * ...

2019-05-26 20:10:48 87

原创 203. 移除链表元素

应该挺简单/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNo...

2019-05-26 20:02:03 63

原创 160. 相交链表

160. 相交链表首先遍历headA,将所有节点的地址存放在set中,然后遍历headB,遍历过程中,如果发现当前节点的地址在set中,返回这个地址。如果一直没有遍历到,返回null。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ...

2019-05-23 23:06:10 72

原创 141. 环形链表

141. 环形链表通过设置两个指针,分别为快指针和慢指针,快指针每次走两步,慢指针每次走一步,如果没有环,那么快指针必定会指向NULL,从而返回false。如果有环,则快指针必定追上慢指针,从而可以返回true。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNo...

2019-05-23 22:43:15 80

原创 83. 删除排序链表中的重复元素

83. 删除排序链表中的重复元素方法1遍历链表,如果当前节点与下一个节点数据相同,则令当前节点的next指向当前节点的next->next/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) ...

2019-05-23 22:22:17 109

原创 21. 合并两个有序链表

21. 合并两个有序链表方法1创建一个哨兵,然后遍历l1和l2,比较l1和l2中的元素,更小的放入到哨兵的尾部,知道l1或l2中到达末尾。然后将哨兵末尾指向没有到达末尾的l1或l2中的剩余元素。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next...

2019-05-22 22:39:43 97

原创 conda用法总结

文章目录1. 使用conda安装和卸载软件2. 使用conda创建虚拟环境1. 使用conda安装和卸载软件conda install xxxxx:其中xxx表示要安装的包的名称conda uninstall xxxx:卸载conda search xxx:查找xxx包有哪些版本2. 使用conda创建虚拟环境conda env list:查看有多少个虚拟环境conda creat...

2019-04-29 15:52:22 753

原创 LeedCode_初级算法_数组_两数之和(Two Sum)_9

9. 两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解...

2019-04-09 18:10:44 164

原创 LeedCode_初级算法_数组_移动零(Move Zeroes)_8

8.移动零给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。解法1遍历数组,发现0,将其删除,直到遍历结束。根据之前删除0的个数,将其添加到数组末尾class Solution {public:...

2019-04-09 15:29:06 122

原创 LeedCode_初级算法_数组_加一(Plus One)_7

6. 加一(Plus One)给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表...

2019-04-02 20:46:50 139

转载 markdown中数学符号和公式总结

1、指数和下标可以用^和_后加相应字符来实现。2、平方根(square root)的输入命令为:\sqrt,n 次方根相应地为: \sqrt[n]。方根符号的大小由LATEX自动加以调整。也可用\surd 仅给出符号。3、命令\overline 和\underline 在表达式的上、下方画出水平线。4、命令\overbrace 和\underbrace 在表达式的上、下方给出一水平的大括...

2019-04-02 19:58:20 7716

原创 softmax回归总结(动手深度学习)-5

目录softmax回归与线性回归softmax回归模型如何计算softmax回归模型softmax回归的代码实现1. softmax回归与线性回归相比于线性回归输出一个连续的值,softmax回归则输出一系列离散的值。线性回归适合解决回归问题,如房价的预测问题。而softmax回归适合做分类问题,如识别一张图片中是猫,狗还是鸡。相比于线性回归输出单元仅一个,softmax回归有更多...

2019-04-02 19:47:44 766

原创 LeedCode_初级算法_数组_两个(Intersection of Tw)_6

6. 两个数组的交集 II给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。我们可以不考虑输出结果的顺...

2019-04-02 09:55:21 143

原创 LeedCode_初级算法_数组_只出现一次的数字(Single Number)_5

4. 只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4线性复杂度:就是时间复杂度为O(n)。解法1:先排序,然后遍历判断。class So...

2019-04-01 16:34:23 111

原创 LeedCode_初级算法_数组_存在重复(Contains Duplicate)_4

4. 存在重复给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true解法1:最先想到的办法,首先指定...

2019-04-01 15:57:21 129

原创 LeedCode_初级算法_数组_旋转数组(Rotate Array)_3

3. 旋转数组给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入: [-1,-100,...

2019-04-01 15:47:43 144

原创 动手深度学习--线性回归--4

3.1. 线性回归线性回归从零开始第一步、生成数据集下面的代码生成一个10002的数据集,有1000个样本,特征个数为2。首先随机生成一个10002的矩阵,每个元素根据正态分布随机取值。然后根据已给的真实权重和偏差计算随机生成的数据集中每个样本对应的标签。最后给标签加上一点噪声。其中features保存了每个样本数据,labels保存了每个样本对应的标签。#线性回归从0开始实现p...

2019-04-01 10:16:16 537

原创 动手深度学习--自动求梯度--3

2.3. 自动求梯度在深度学习中,我们经常需要对函数求梯度(gradient)。本节将介绍如何使用MXNet提供的autograd模块来自动求梯度。通过下面的代码导入autograd模块from mxnet import autograd2.3.1. 一个简单的例子我们先来看一个简单的例子,如何使用MXNet来求解y=2xTxy=2x^T xy=2xTx这个函数关于xxx的梯度的方法。...

2019-03-31 10:48:02 1917

原创 动手深度学习--数据操作--2

动手深度学习笔记2.2. 数据操作在MXNet中,NDArray是一个类,也是存储和变换数据的主要工具。为了简洁,本书常将NDArray实例直接称作NDArray。如果你之前用过NumPy,你会发现NDArray和NumPy的多维数组非常类似。然而,NDArray提供GPU计算和自动求梯度等更多功能,这些使NDArray更加适合深度学习。2.2.1. 创建NDArray下面介绍了几种创建N...

2019-03-30 23:50:21 384

原创 LeedCode_初级算法_数组_买卖股票的最佳时机 II(Best Time to Buy and Sell Stock II)_2

2. 买卖股票的最佳时机 II给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = ...

2019-03-29 10:57:05 84

原创 C++中const用法总结

C++中const的用法1. 使用const修饰变量1.1. 使用const 修饰普通的变量const int a=10;表示a这个int型变量将不可更改。如:a=3;这样将会报错。1.2. 使用const修饰指针变量const修饰指针变量有3种情况:const 修饰指针指向的内容,则内容为不可变量。const 修饰指针,则指针为不可变量。const 修饰指针和指针指向的内...

2019-03-29 09:50:00 7582

空空如也

空空如也

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

TA关注的人

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