自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 《将博客搬至CSDN》

  将博客同步到CSDN,博客地址 :https://blog.csdn.net/RT_776

2019-12-18 22:17:00 92

原创 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关注的人

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