- 博客(31)
- 收藏
- 关注
原创 ukey登录方案
对称加密与非对称加密 : 简单地说,对称加密是利用 密钥 加密,然后用密钥解决,而非对称加密则分为公钥和私钥,一般用法是 利用公钥加密,利用私钥解密。或者利用私钥签名,利用公钥验证。 对于非对称加密而言,公钥是可以随便发放的。 利用公钥加密,利用私钥解密的使用场景 : 假如有个皇帝,他想要远方的大臣能将秘密信件发送给自己,而中途不被人解读出秘密的...
2021-02-01 16:53:00 2445 1
原创 防重放
使用场景 : 当系统需要与云平台进行对接时,常常会使用api鉴权对权限进行鉴定,我们使用的api鉴权方式即为aksk鉴权,简单而言就是通过签名验证是否具有权限。假设 : AKSK鉴权并非该帖子的主题,先略过,假设目前组件与云平台都存在一个对称加密的密匙,且组件内提供了一些API给云平台进行调用。为什么需要防重放 : 当云平台需要调用组件的api时,需要API鉴权。鉴权方案...
2021-01-31 11:39:00 505
原创 Linux进程管理(一)
声明 : 本文仅代表个人理解,如若有错误的地方,欢迎留言指正,感谢观看。 进程简述 : 进程是处于执行期的程序以及相关资源的总称,是管理资源的最小单位。 线程简述 : 线程是进程中活动的对象,是调度的最小单位。每个线程都拥有一个独立的程序计数器,栈,和寄存器状态组。 对于 Linux 内核实现而言, 并不特别区别线程,线程只不过是一种特殊的进程而已(特殊点主要在于共享IO...
2021-01-30 22:33:00 189
原创 常见排序算法总结
快速排序 : 原理 : 1) 只有一个元素的数组是有序的数组。 2) 荷兰国旗问题。 步骤 : 1) 只有一个元素的数组是有序的数组。 2) 在待排序数组中随机抽的一个数字,并利用该数字将数组分为 大于特定数,等于特定数,小于特定数 三个区域。 3) 对大于特定数,小于特定数 两个区域进行快速排序,排序结束后直接返回。归并排序 : ...
2021-01-30 17:35:00 181
原创 通过反汇编回答对象类型的返回问题
当需要返回的值为局部变量的时候 : 例如 :class test{public : int a; double b; int arr[200];};// Type your code here, or load an example.test square() { test t; return t;}int main ()...
2021-01-16 21:42:00 199
原创 C++变量与内存浅诉
变量存储的四个区域 : 静态存储区,栈区,堆区,常量区。 静态存储区 : 静态变量,全局变量等 栈区 : 局部变量 堆区 : 通过malloc/operatornew等函数申请的空间。 常量区 : 在函数中声明的数组并以指针形式接收。字符串常量的几种放置方式 : i) 在函数中声明的字符数组。1 void test(){2 char ch1[100]...
2020-10-02 23:05:00 199
原创 指针与引用(gcc如何实现引用的)
首先,变量名在编译成汇编语言的时候,会被翻译成地址。 例如 :void square() { int var = 0;}会被翻译成 :square(): push rbp mov rbp, rsp mov DWORD PTR [rbp-4], 0 nop ...
2020-09-21 21:38:00 490
原创 为什么条件变量需要传入mutex?
条件变量一般而言,会有一个布尔表达式作为唤醒的条件。调用wait的线程需要读取这个布尔表达式内数据,同样,调用signal的线程需要修改这个布尔表达式的数据,让表达式为真。故而这两个线程必然访问至少一个公共变量。于是需要mutex来保护这个公共变量。这也就解释了为何条件变量与mutex共存的原因。 那么为什么要传入呢? 条件变量内部会先解锁mutex,然后堵塞。当被唤...
2020-04-13 17:29:00 377
原创 Linux内存管理解析(三) : 内核对内核空间的内存管理
内核采用 struct page 来表示一个物理页,在其中记载了诸多物理页的属性,比如 物理页被几个线程使用(如若没有则表示该页可以释放),页对应的虚拟地址。 首先需要知道的是,分配物理页可以分为两个步骤 : 1) 寻找内核中空闲处于3-4G 4K对齐的虚拟地址。 i)虚拟页是否空闲 由页表项的属性决定,里面会有标志位记录。 ii)虚拟页...
2020-02-28 16:05:00 193
原创 C++内存管理笔记(一)
C++内存分配的四个层面 : 四个层面的比较: 内存分配与释放的测试: void* p1 = malloc(512); //512 bytes free(p1); complex<int>* p2 = new complex<int>; //one object delete p2; ...
2020-02-11 14:40:00 361
原创 二叉树遍历思想(三) : 后序遍历
二叉树的后序遍历递归定义 : 1) 当前节点为空(null)直接返回 2) 对于非空节点 i) 后序遍历左子树 ii) 后序遍历右子树 iii) 操作当前节点 二叉树的非递归遍历方法 : 使用栈来进行遍历。 策略简述 : 利用两层循环嵌套(但时间复杂度仍然是O(N)),策略注释在代码中。 1 class ...
2020-02-09 20:31:00 457
原创 二叉树遍历思想(二) : 中序遍历
二叉树的中序遍历递归定义 : 1) 当前节点为空(null)直接返回 2) 对于非空节点 i) 中序遍历左子树 ii) 操作当前节点 iii) 中序遍历右子树 二叉树的非递归遍历方法 : 使用栈来进行遍历。 策略简述 : 利用栈和循环,每次循环的输入变量node都必须为当前要遍历的树的根节点。也就是将循环当作...
2020-02-09 16:58:00 455
原创 二叉树遍历思想(一) : 前序遍历
二叉树递归定义 : 1) 空节点(null)为二叉树 2)二叉树的左子树为二叉树,二叉树的右子树为二叉树。 二叉树的前序遍历递归定义 : 1) 当前节点为空(null)直接返回 2) 对于非空节点 i) 操作当前节点 ii) 前序遍历左子树 iii) 前序遍历右子树 二叉树的非递归遍历方法 : 使用栈来进行遍历。 ...
2020-02-09 16:46:00 356
原创 网络协议总结(编写中...)
计算机网络参考模型: OSP七层模型 : 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层 五层模型 : 物理层 数据链路层 网络层 传输层 应用层 TCP/IP模型 : 物理接口层 网络层 传输层 应用层 五层模型中各层的作用简单概括 : 物理层 : 利用线路的机械特性,实现各种材...
2020-02-09 16:16:00 258
原创 同步机制
什么是同步机制? 同步机制:在并发程序设计中,各进程对公共变量的访问必须加以制约,这种制约称为同步。(引用百度百科,题外话:虽然百度百科并不那么可信,但也是有准确的东西,注意自己甄别就好了。) 为什么需要同步机制? 当计算机只运行一个线程的时候,自然不需要同步。所有的资源都是这个线程独享。那么就不会有任何竞争。 但是当计算机出现了多个线程的时候,那么...
2020-02-06 23:35:00 324
原创 同步机制(编写中...)
什么是同步机制? 同步机制:在并发程序设计中,各进程对公共变量的访问必须加以制约,这种制约称为同步。 为什么需要同步机制? 当计算机只运行一个线程的时候,自然不需要同步。所有的资源都是这个线程独享。那么就不会有任何竞争。 但是当计算机出现了多个线程的时候,那么就出现了各种麻烦,为了处理这些麻烦我们就需要使用一些办法来解决这些麻烦。 多线程引出...
2020-02-06 23:35:00 337
原创 同步机制(一)
什么是同步机制? 同步机制:在并发程序设计中,各进程对公共变量的访问必须加以制约,这种制约称为同步。 为什么需要同步机制? 当计算机只运行一个线程的时候,自然不需要同步。所有的资源都是这个线程独享。那么就不会有任何竞争。 但是当计算机出现了多个线程的时候,那么就出现了各种麻烦,为了处理这些麻烦我们就需要使用一些办法来解决这些麻烦。 多线程引出...
2020-02-06 23:35:00 448
原创 Linux内存管理解析(二) : 关于Linux内存管理的大体框架
什么是内存管理 ? 首先内存管理管理的主要对象是虚拟内存,但是虚拟内存对应的映射主要为物理内存,其次也可能通过交换空间把虚拟内存与硬盘映射起来,既然如此,那我们先了解物理内存的管理。 对于物理内存而言,首先我们需要知道的是,linux x86体系结构中内核主要处于 0 - 1G(物理地址)中。而物理内存是有限的。但我们又要为每个程序提供相互独立且连续的内存空间。正因如此我们引...
2020-01-30 14:13:00 150
原创 Linux内存管理解析(一) : 分段与分页机制
背景 : 在此文章里会从分页分段机制去解析Linux内存管理系统如何工作的,由于Linux内存管理过于复杂而本人能力有限。会尽量将自己总结归纳的部分写清晰。从实模式到保护模式的寻址方式的不同 : 16位CPU的寻址方式 : 在 8086 CPU 中,提供了两类寄存器来进行寻址,分别为段寄存器(例如 CS,DS,SS)和段偏移寄存器(例如 SI,DI,SP)。而这几种寄存器的长度都...
2020-01-25 14:35:00 274
原创 《ORANGE'S一个操作系统的实现》第7章 TTY与键盘输入的关系。
背景:我感觉这块部分有一些逻辑上的复杂,于是我把它的关系结构画了一张图来表述,并且在图上解答了我自己想到的几个问题。 关系如图所示: ...
2020-01-10 23:28:00 376
原创 x86汇编分页模式实验 --《ORANGE'S一个操作系统的实现》中 pmtest8.asm解析
序言(废话) : 在看书的过程中发现一开始不是很能理解pmtest8的目的,以及书上说得很抽象..于是在自己阅读过源代码后,将一些自己的心得写在这里。 正文 : 讲解顺序依然按照书上贴代码的顺序来。但是是几乎逐句解释的。可能会稍微有点啰嗦。废话就不多说了直接贴代码。LABEL_DESC_FLAT_C: Descriptor 0, 0fffffh, DA_...
2019-11-24 23:37:00 377
原创 LR(1)语法分析器生成器(生成Action表和Goto表)java实现(二)
updata : 附我之前bilibili讲解视频链接 :https://www.bilibili.com/video/av63666423?share_medium=android&share_source=qq&bbid=PQ0-BzIEPAU2VGNXK1crinfoc&ts=1565782566880 目前完成进度 : 目前已经完成了表驱动,通...
2019-08-10 13:12:00 1910
原创 LR(1)语法分析器生成器(生成Action表和Goto表)java实现(一)
序言 : 在看过<自己实现编译器链接器>源码之后,最近在看<编译器设计>,但感觉伪代码还是有点太浮空。没有掌握的感觉,也因为内网几乎没有LR(1)语法分析器生成器的内容,于是我就自己做了一个LR(1)语法分析器生成器。这个生成器除部分代码借鉴了<编译器设计>这本书有上的一些伪代码之外,其他皆为自己写的,可能不是那么完美,但也具有一些借鉴作用。在这里...
2019-08-02 16:39:00 3263
原创 LeetCode 85. 冗余连接 II
题目: 在本问题中,有根树指满足以下条件的有向图。该树只有一个根节点,所有其他节点都是该根节点的后继。每一个节点只有一个父节点,除了根节点没有父节点。输入一个有向图,该图由一个有着N个节点 (节点值不重复1, 2, ..., N) 的树及一条附加的边构成。附加的边的两个顶点包含在1到N中间,这条附加的边不属于树中已存在的边。结果图是一个以边组成的二维数组。 每一个边的元...
2019-03-18 18:15:00 156
原创 Java ActionListenner类的一些理解
Java的ActionListenner事实上我去年年这个时候大概就已经接触到了,也学会了比较简单的使用。但却始终不能理解ActionListenner的一系列的运行是怎么维持这么一个联系的? 我产生了很多疑问,但却无法解决,也许是当初实在对Java理解得太浅了。 在一年后的今天,我再次接触到了ActionListenner,且有了一些新的个人的理解,特在此记录。 ...
2019-01-12 23:39:00 692
原创 2397 - 收集行李
题目是朋友问我有没有思路,然后就做了这道题。我本身不是打竞赛的,所以有些地方可能不是那么精准。 思路: 因为这个是计算几何的问题。在此之前我并没有接触过。一开始是想先想出一个暴力解,然后在此的基础之后优化。 但显然,我总不能按照角度,进行暴力解之类云云的。。。 所以我就想能不能猜一猜答案 : 二分法。 首先 ...
2018-12-17 21:49:00 180
原创 leetcode 29 两数相除
问题描述 给定两个整数,被除数dividend和除数divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。 返回被除数dividend除以除数divisor得到的商。 示例1: 输入: dividend = 10, divisor = 3 输出: 3 示例2: 输入: dividend = 7, divisor...
2018-11-30 18:31:00 130
原创 值得花费一周研究的算法 -- KMP算法(indexOf)
KMP算法是由三个科学家(kmp分别是他们名字的首字母)创造出来的一种字符串匹配算法.所解决的问题: 求文本字符串text内寻找第一次出现字符串s的下标,若未出现返回-1。 例如 text : "adesceqwdasdfagf"; s : "sce"; return : 3; 常规解法 : /** * 常规算...
2018-11-25 19:22:00 362
原创 开启博客原因以及愿景
自学计算机技术已经一年了,也算是有了一些些基础了。虽然距离我对自己的要求还差距很大,但也有了写博客的需求。 写博客的原因 1.往日使用有道云做笔记整理思路,但有道云对代码的整合不是很好(也可能是我不会使用相应功能吧),所以一直有想找个专业计算机排版的地方作为自己整理思路的地方。 2.在自己学习计算机技术途中,也有一些颇为自得(或许以后会觉得有些可笑)的地方,...
2018-05-27 21:33:00 114
原创 十进制转换为任意进制数
如题,给出一个十进制数n,一个整数k,将十进制数n转换为k进制数。方法1:/** * 将十进制数n,转换为k进制对应数 * @param n * @param k * @return */ public static String xConversion(int n, int k) { String result = ""; int remainder; char...
2018-05-19 21:48:13 1719
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人