自定义博客皮肤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)
  • 收藏
  • 关注

原创 tcpdump使用心得

参考原文 https://danielmiessler.com/p/tcpdump/

2023-11-28 11:29:48 476 1

原创 Rust in Action笔记 第十一、十二章 简易操作系统内核

本章讲了如何用Rust写一个简易的操作系统(FledgeOS),除了Rust的知识外,可以了解操作系统主要的组成部分,加深对操作系统的理解。

2023-07-06 15:28:49 686 2

原创 Rust in Action笔记 第十章 进程、线程和容器

【代码】Rust in Action笔记 第十章 进程、线程和容器。

2023-07-04 11:47:09 576

原创 Rust in Action笔记 第九章 时间管理

【代码】Rust in Action笔记 第九章 时间管理。

2023-06-29 17:44:52 880 5

原创 Rust in Action笔记 第八章 网络

【代码】Rust in Action笔记 第八章 网络。

2023-06-28 15:19:19 557

原创 Rust in Action笔记 第七章 文件和存储

【代码】Rust in Action笔记 第七章 文件和存储。

2023-06-26 17:27:13 449

原创 Rust in Action笔记 第六章 内存

【代码】Rust in Action笔记 第六章 内存。

2023-06-13 18:02:46 1360

原创 Rust in Action笔记 第五章 深入理解数据

【代码】Rust in Action笔记 第五章 深入理解数据。

2023-06-12 15:13:04 1556

原创 Rust in Action笔记 第四章生命周期、所有权、借用

所有者(owner)拥有某些值的所有权(onwership),一旦owner的生命周期到了(例如走到了所在的代码块的最后}处或者其他原因),他们的析构函数(destructor)就会调用,析构函数会删除所有与之相关的引用(references)并释放内存,大部分的析构函数都会隐式调用,由编译器来完成,如果需要自己定制析构函数的实现和调用时机,可以通过Drop特征来实现,这个只在出现了通过unsafe块实现的内存分配中需要用到;一种是通过函数,可以是函数的参数也可以是返回值,详见page115;

2023-06-12 12:16:08 1306

原创 Rust in Action笔记 第三章 复合数据类型

【代码】Rust in Action笔记 第三章 复合数据类型。

2023-06-02 17:20:21 532

原创 Rust in Action笔记 第二章 rust语言基础

【代码】Rust in Action笔记 第二章 rust语言基础。

2023-06-01 17:56:17 439

原创 Rust Atomics and Locks 阅读笔记 第三章 Memory Ordering

【代码】Rust Atomics and Locks 阅读笔记 第三章 Memory Ordering。

2023-05-17 16:52:01 75

原创 Rust Atomics and Locks 阅读笔记 第二章 Atomics

【代码】Rust Atomics and Locks 阅读笔记 第二章 Atomics。

2023-05-12 17:59:39 751

原创 Rust Atomics and Locks 阅读笔记 第一章 Rust并发基础

出版社: O’REILLY。作者:Mara Bos。

2023-05-11 17:00:16 441

原创 利用docker和cargo-deb打包适用于不同linux版本的.deb包

我的Linux系统版本是ubuntu 20.04,当写完一个rust项目使用cargo build --release打包生成deb包(如果没有安装cargo-deb的话build出来的是二进制文件),在本机上能正常解压安装,但是把deb包发给朋友,他却无法解压,发现是他的linux版本是ubuntu 16.04,无法解压在20.04下打包的deb文件使用docker pull一个16.04版本的image,同时在docker run的时候注意使用 参数挂载对应的文件夹到docker container中

2022-06-09 11:36:58 702

原创 用SQL来简单实现PageRank算法

用SQL实现PageRank算法,采用迭代法收敛

2022-05-29 16:49:56 365

原创 求根号2的小数点后10000位,字节面试题随想

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-07-18 10:41:10 2796 2

原创 高性能MySQL 第三版 学习笔记 第二章 MySQL基准测试

基准测试是针对系统设计的一种压力测试2.1 为什么需要基准测试

2021-05-28 14:58:46 107

原创 高性能MySQL 第三版 学习笔记 第一章 MySQL架构与历史

版次: 2013年5月第1版印次: 2020年11月第34次印刷1.1 逻辑架构MySQL大体分3层架构, 最上层连接客户端, 主要做连接/线程处理;第二层是大多数MySQL的核心功能, 包括查询解析/分析/优化/缓存以及所有的内置函数第三层主要是存储引擎 MySQL在查询时会使用缓存优化, Page31.2 并发控制解决并发问题的经典方法是采用并发控制, 这里用到了读写锁, 也分别称为shared lock(read), 和exclusive lock(write), 读锁..

2021-05-27 17:01:39 115 1

原创 哈工大操作系统实验总结

实验地址,https://www.lanqiao.cn/courses/115/learning/?id=374, 在现做实验, 好处是环境提前都配好了, 不足之处是敲代码有网络延迟, 环境无法保存.总的来说比较方便.教科书, <<Linux内核完全注释 修正版 V5.0 >> (赵炯), 后面简称<<注释>>, <<汇编语言>>(王爽)实验1 熟悉实验环境这个实验主要是介绍实验环境的基本情况, 宿主机使用ubunt..

2021-02-08 14:38:45 1106

原创 LeetCode高级算法之数学与其他

179. Largest Number比较最大数的问题, 很容易想到应该把首位越大的数排到前面, 关键在于首位相同的话如何比较两个字符串的大小,一个很直观的想法就是s1 + s2和 s2 + s1, 两个相比,谁大谁在前, 证明有点复杂, 可以把字符串按幂转换成一个整数来比较, 也可以尝试反证法, 具体见题解区要注意的边界条件是多个0的情况, 最后只留下一个0,代码如下class Solution {public: static bool mycmp(const string&a

2020-12-17 17:28:41 158

原创 LeetCode高级算法之设计问题

146. LRU Cache设计一个LRU机制的缓存, 要求获取key 和 设置key的时间复杂度为常数级别, 并且要将最近使用过的key的权重调整,首先想到要在常数时间内获取一个key那只能是用hash表,但是每次要更新当前的数据结构并且时间复杂度为常数, 顺序存储的结构如vector在这里就不能用了, 只能使用链表, 由于涉及头部删除,尾部添加, 随机删除,在O(1)复杂度能完成的只有双向链表, C++里的deque底层是用数组实现的, 所以我们要自己写一个DoubleLinkedLis

2020-12-15 15:51:57 116

原创 LeetCode高级算法之动态规划

152. Maximum Product Subarray这题与最大子序列和不同的地方在于, 乘积的状态转移不能用dp[i-1]*num[i]来获得, 因为存在负数的情况, 所以这题要用两个dp数组来进行状态转移maxdp[i] = max ( maxdp[i-1]*num[i] , mindp[i-1]*num[i], num[i] )mindp[i] = min (maxdp[i-1]*num[i], mindp[i-1]*num[i], num[i] )最终结果取maxdp中最大数即.

2020-12-14 12:02:54 106

原创 LeetCode 高级算法之排序与搜索

324. Wiggle Sort II这一题主要有两个知识点, 分别是快速选择, 3路分类, 分别对应了leecode里的215. Kth Largest Element in an Array和75. Sort Colors问题其中的第K大元素利用快速排序的原理可以快速找到第K大元素的位置, 时间复杂度O(n)模板代码如下:class Solution {public: int ans; void quickSelect(vector<int>&..

2020-12-10 00:46:49 126

原创 Leetcode 102/144/145 二叉树的前/中/后序遍历,迭代写法模板(C++)

今天在刷Leetcode的二叉树卡片,首先碰到的就是二叉树的三种遍历方法,递归方法很简单,但是要求用迭代的方法来写的话就没那么容易了,在题解区里看到了一个大神的模板化迭代写法,非常有新意,于是在这里写点自己的理解原文链接如下:https://leetcode-cn.com/problems/binary-tree-preorder-traversal/solution/miao-sha-quan-chang-ba-hou-lang-by-sonp/理论上来说,所有递归的算法都是可以用非递归来实现

2020-06-12 21:08:07 189

原创 C++面试常见题+简答

引用来自“https://github.com/huihut/interview#data-structure”1. const的作用可修饰变量、指针、引用、类的成员函数,具体功能见原链接const的指针里有顶层const和底层const之分,顶层const说明指针不可改变,底层const说明指针指向的值不可改变;2. static的作用可修饰普通变量、普通函数、成员变量、成员函数,作用各不相同,具体见原链接3. this指针介绍一下右值,不能取地址&this..

2020-06-07 21:28:52 452

原创 计算机组成原理(唐朔飞)教材笔记 第六章 计算机的运算方法

1. 把符号“数字化”的数成为机器数,而把带“+”或“-”符号的数称为真值;2. 原码表示法,约定整数的符号位与数值位之间用逗号分隔,小数的符号位与数值位之间用小数点隔开;3. 原码、补码、反码三种机器数的特点可归纳如下:# 三种机器数的最高位均为符号位。符号位和数值部分之间可用“.”(对于小数)或“,”(对于整数)隔开;# 当真值为正时,原码、补码、反码的表示形式相同;# 当真值为负时,三者的表示形式不同,但其符号位都用1表示,而数值部分有这样的关系“补码是原码的求反加一,反码是原码

2020-06-04 19:57:40 950

原创 计算机组成原理(唐朔飞)教材笔记 第五章 输入输出系统

1. 输入输出系统由I/O软件和I/O硬件两部分组成#I/O软件将用户编制的程序(或数据)输入至主机内,将运算结果输送给用户;采用接口模块方式时,机器指令系统的I/O指令+系统软件中的管理程序;采用通道管理方式时,I/O指令+通道指令+操作系统;#I/O硬件接口系统,包括接口模块+I/O设备两大部分通道或I/O处理机系统,包括通道(或I/O处理机)+设备控制器+ I/O设备2. I/O编址方式有两种,存储器统一编址,独立编址,各有优缺点# 存储器统一编址I/O地址是存储器地址

2020-05-29 12:31:24 1569 1

原创 计算机组成原理(唐朔飞)教材笔记 第四章 存储器

1. 存储器的分类,通常以在计算机中的作用分类2. 存储器的速度、容量和价格这三个主要性能指标之间存在矛盾,据此分成两个层次,分别解决不同的矛盾3. 静态RAM采用触发器工作原理存储信息,动态RAM利用电容存储电荷的原理存储信息;4. 静态RAM由于其速度高、无需刷新等特点,被广泛用于高速缓冲存储器Cache;动态RAM集成度高、功耗小价格便宜,被广泛用于计算机的主存;5. RAM由于可读可写,一般用于存放用户程序;而ROM只读,一般用于存放系统程序;6. 对于一定容量的存储

2020-05-26 13:34:11 2495

原创 计算机组成原理(唐朔飞)教材笔记 第三章 系统总线

1. 某一时刻只允许有一个部件向总线发送信息,但多个部件可以同时从总线上接收相同的信息;2. 总线宽度又称为总线位宽,它是总线上同时能够传输的数据位数,通常是指数据总线的根数;3. 总线带宽可理解为总线的传输速率,即单位时间内总线上传输数据的位数,通常用每秒传送信息的字节数来衡量,单位(MBps),注意区分总线宽度和总线带宽;4. 总线按连接部件不同分为以下几类#片内总线芯片内的总线#系统总线连接CPU,主存,I/O设备各部件之间的信息传输线#通信总线连接计算机系统之间或计算

2020-05-23 12:17:22 1206

原创 计算机组成原理(唐朔飞)教材笔记 第二章 计算机的发展及应用

1. 1946年世界上第一台电子计算机ENIAC诞生;2. 计算机五个时代#第一代计算机(1946-1957年)采用电子管、真空管作为运算和逻辑元件,数据表示采用定点数,用机器语言和汇编语言写程序;#第二代计算机(1958-1964年)采用晶体管作为运算和逻辑元件,用磁芯作为主存,磁带和磁盘作为辅存。开始使用FORTRAN等高级程序设计语言#第三代计算机(1965-1971年)用中小规模集成电路代替分立元件,主存除磁芯外,还出现了用半导体储存器取代磁芯储存器#第四、第五代计算机(

2020-05-23 09:16:18 477

原创 计算机组成原理(唐朔飞)教材笔记 第一章 计算机系统概论

1.11. 硬件与软件的区别:硬件是指计算机的实体部分,看得见摸得着,包括主机、外部设备等;软件是看不见摸不着的,通常将这些程序寄寓于各类媒体中,如RAM(随机存取存储器 Random Access Memory),ROM(只读存储器 Read Only Memory),磁盘、光盘、磁带甚至纸带等等;2. 常用的缩写解释M 存储体MAR 存放欲访问的存储单元的地址 Memory Address RegisterMDR 存放从存储单.

2020-05-22 12:44:35 594

原创 C++ primer 第五版个人笔记 第十六章 模板与泛型编程

16.1 定义模板模板定义以关键字template开始,后跟一个模板参数列表,以逗号分隔,可以传一个或多个模板参数(T1,T2),模板参数列表不能为空; 编译器用推断出的模板参数来生成一个版本的函数叫做实例化,生成的版本叫做模板的实例; 模板类型参数前面必须使用关键字class或typename,在同一个模板参数列表中两个关键字可以混合使用,没有什么不同; 非类型模板参数的模板实参必须是常量表达式; inline或constexpr的函数模板中,inline和constexpr关键字说明符放在模

2020-05-16 13:12:50 199

原创 C++ primer 第五版个人笔记 第十五章 面向对象程序设计

15.1 OOP概述派生类通过使用类派生列表明确指出它是从哪一个(些)基类继承而来的;形式是,首先是一个冒号,后面紧跟以逗号分隔的基类列表,其中每个基类前面可以有访问说明符; class Bulk_quote: public Quote, protect Quote1{} 派生类必须在其内部对所有重新定义的虚函数进行声明,派生类可以在这样的函数前加上virtual关键字,但不是必须的, C++11新标准允许派生类显式地著名它将使用哪个成员函数来改写基类的虚函数,具体措施是在该函.

2020-05-12 20:52:12 289

原创 C++ primer 第五版个人笔记 第十四章 重载运算与类型转换

14.1 基本概念除了重载的函数调用运算符operator()外,其他重载运算符不能含有默认实参; 当一个重载的运算符是成员函数时,this绑定到左侧运算对象,成员运算符函数的(显式)参数数量比运算对象少一个; 对于一个运算符函数来说,它或者是类的成员或者至少含有一个类类型的参数;不能为内置类型的运算对象改变运算符的含义; 有四个符号(+,-,*,&)既是一元运算符也是二元运算符,都能重载,从参数的数量可以推断到底定义的是那种运算符; 重载的运算符的优先级和结合律与对应的内置运算符保持一

2020-05-10 21:01:52 206

原创 C++ primer 第五版个人笔记 第十三章 拷贝控制

拷贝控制在一个类里定义了五种成员函数来控制这些操作,除了本科教材里提到的拷贝构造函数、析构函数,还有拷贝赋值运算符,移动构造函数,移动赋值运算符;如果一个类没有定义所有这些拷贝控制成员,编译器会自动为它定义缺失的操作,但是对于一些类来说,默认定义会导致灾难,因此要明白什么时候需要定义这些操作;13.1 拷贝、赋值与销毁拷贝构造函数的第一个参数必须是引用类型,它在某些情况下会被隐式地使用,因此拷贝构造函数通常不应该是explicit的; 拷贝初始化不仅在使用=定义变量时会发生,还有三种情况,(本科.

2020-05-09 21:30:21 244

原创 C++ primer 第五版个人笔记 第十二章 动态内存

程序用堆来存储动态分配的对象(即那些在程序运行时分配的对象),动态对象的生存期由程序来控制,当其不再使用时,我们的代码必须显式地销毁他们;12.1 动态内存与智能指针C++中动态内存的管理是通过一对运算符new和delete来完成的,new在动态内存中为对象分配空间并返回一个指向该对象的指针,delete接受一个动态对象的指针并销毁该对象释放与之关联的内存; 新标准库提供两种智能指针管理...

2020-05-07 22:17:39 164

原创 C++ primer 第五版个人笔记 第十一章 关联容器

11.1 使用关联容器关联容器map为空时,新创建一个元素的键对应的值默认初始化为0; 统计一个元素是否在set中有两种写法: myset.find(target)==myset.end(); //未找到myset.count(target)==0; //未找到 对于有序容器(map,multimap,set,multiset),关键字类型必须...

2020-05-06 21:48:26 184

原创 C++ primer 第五版个人笔记 第十章 泛型算法

10.1 概述头文件<algorithm>,查找函数find(iterbegin,iterend,val)有三个参数,前两个表示查找范围的迭代器,如果范围中无匹配元素,则返回第二个参数表示搜索失败;count函数可以计算val出现的次数; 泛型算法本身不会执行容器的操作,只会运行于迭代器之上,执行迭代器的操作;算法可能改变容器中元素的值或者移动元素,但永远不会直接添加或删除元素;...

2020-05-06 08:31:33 193

原创 C++ primer 第五版个人笔记 第九章 顺序容器

9.1 顺序容器概述顺序容器类型,vector 可变大小数组,支持快速随机访问,在尾部之外的位置插入或删除元素可能很慢 deque双端队列,支持快速随机访问。在头尾位置插入/删除速度很快 list 双向链表,只支持双向顺序访问,在list中任何位置插入/删除操作速度都很快 forward_list 单向链表, 只支持单向顺序访问,在链表任何位置进行插入/删除操作都很快 array 固...

2020-05-03 16:08:19 199

空空如也

空空如也

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

TA关注的人

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