自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 架构师 绪论

组件中系统是组织起来完成某一特定功能或一组功能的组件集。系统用于完成其环境中的一个或多个任务。环境或者上下文决定了对这个系统的开发、运作、政策以及会对系统造成其他影响的环境 和设置任务是由一个或者多个利益相关者(基本业务单元)通过系统(组织架构)达到一些目标的系统的一个用途或操作。是系统的一种整体的高层次的结构表示系统架构设计的是对需要开发的系统进行一系列相关的抽象,用于指导系统各个方面的设计与实现通常把架构设计作为系统开发过程中需求分析阶段后的一个关键步骤是连接用户需求和系统。

2024-04-09 16:21:33 139

原创 摩尔投票

数组中占比超过一半的元素称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。输入:[1,2,5,9,5,9,5,5,5]输出:5

2020-12-24 21:36:36 84

原创 135. 分发糖果 -- 典型单调问题贪心方式

贪心贪的是单调序列,正序遍历单调增,倒序遍历单调减->大值顶替小值。class Solution {public: int candy(vector<int>& ratings) { int size = ratings.size(); vector<int> val(size, 1); //保底是1,默认全是最低值 for(int i = 0; i < size - 1; i++) ...

2020-12-24 16:56:22 93 1

原创 389. 找不同

给定两个字符串s和t,它们只包含小写字母。字符串t由字符串s随机重排,然后在随机位置添加一个字母。请找出在t中被添加的字母。输入:s = "abcd", t = "abcde"输出:"e"解释:'e' 是那个被添加的字母。思路:其中T是由S元素随机重新排列的结果,其实就是找T比S多出来的那个字符是什么。解法1:意识流就会给每个元素计数。class Solution {public: char findTheDifference(str...

2020-12-18 00:55:25 95

原创 统计元音字母序列的数目 -- 动态规划 路径相加,反向逆推

给你一个整数n,请你帮忙统计一下我们可以按下述规则形成多少个长度为n的字符串:字符串中的每个字符都应当是小写元音字母('a', 'e', 'i', 'o', 'u')每个元音'a'后面都只能跟着'e'每个元音'e'后面只能跟着'a'或者是'i'每个元音'i'后面不能 再跟着另一个'i'每个元音'o'后面只能跟着'i'或者是'u'每个元音'u'后面只能跟着'a'由于答案可能会很大,所以请你返回 模10^9 + 7之后的结果。输入:n ...

2020-12-13 23:55:38 124

原创 不同路径 -- 组合数学

一个机器人位于一个 m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例 1:输入:m = 3, n = 7输出:28int uniquePaths(int m, int n) { long val = 1; for (int x = n, y=1; y<m;++y,++x)...

2020-12-13 22:48:52 213

原创 预备 -- NOTE

在启动时需要BIOS将内核放入内存并执行相应的初始化工作,其后将控制权转移给内核。开始启动时,有一个特殊的硬件电路在CPU的一个引脚上产生一个RESET逻辑值,CPU在识别出RESET信号后将数据总线设为高阻抗状态,地址线强行设为1,并禁用中断。之后就将处理器的一些寄存器设成固定的值,其中最重要的两个寄存器——CS段寄存器被置为0xf000,EIP指令指针寄存器为0x0000 fff0,因...

2019-09-26 18:30:56 154

转载 Linux启动

从磁盘启动Linux内核需要一个引导装入程序,常见的是LILO。LILO被分为两部分(否则太大无法装入整个扇区),BIOS将程序的第一部分(在引导扇区)装入从0x00007c00开始位置的RAM中,然后这段程序又把自己移到地质0x00096a00,建立实模式栈(0x00096000 ~ 0x000969ff),并把LILO的第二部分装到从地址0x00096c00开始的RAM中。第二部分从磁盘读...

2019-09-26 11:44:24 316

原创 Linux并发 -- 笔记

线程不像进程那样,不是按照严格的父子层次来组织的。和一个进程相关的线程组成一个对等线程池(a pool of peers)。对等(线程)池概念的主要影响是,一个线程可以杀死它的任何对等线程,或者等待它的任意对等线程终止;进一步来说,每个对等线程都能读写相同的共享数据。线程属性/* man pthread_attr_init */typedef struct{ in...

2019-06-20 15:46:47 124

原创 VFS

1.VFS概述VFS是一种软件机制,也许称它为Linux的文件系统管理者更确切点,与它相关的数据结构只存在于物理内存当中。所以在每次系统初始化期间,Linux都首先要在内存当中构造一棵VFS的目录树(在Linux的源代码里称之为 namespace),实际上便是在内存中建立相应的数据结构。VFS目录树在Linux的文件系统模块中是个很重要的概念,不要将其与实际文件系统目录...

2019-04-28 16:56:45 423

原创 野指针产生情况--随笔

free完不赋空/指针不赋初值,一般不会犯 中间值传递 int *p = (int *)malloc(); int *a = p; free(a);a=NULL; p就是野指针 函数返回或传递出指向栈空间的指针。函数退出,栈帧销毁,p未赋空。 int * test(int ...

2019-04-27 23:15:12 271

原创 Shell测试条件

test –d $dir[ -d $dir ] ([ * ]语句前后加空格)1.字符串测试2.数值测试3.逻辑测试4.文件属性

2019-04-25 11:51:52 188

转载 UML类图

虚线箭头指向依赖;实线箭头指向关联;虚线三角指向接口;实线三角指向父类;空心菱形能分离而独立存在,是聚合;实心菱形精密关联不可分,是组合;上面是UML的语法。在画类图的时候,理清类和类之间的关系是重点。类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关...

2019-03-25 11:45:45 131

原创 正则表达式基本语法

两个特殊的符号'^'和'$'。他们的作用是分别指出一个字符串的开始和结束。例子如下:"^The":表示所有以"The"开始的字符串("There","The cat"等);"of despair$":表示所以以"of despair"结尾的字符串;"^abc$":表示开始和结尾都是"abc"的字符串——呵呵,只有"abc&quo

2019-02-15 11:38:38 157

原创 红黑树C代码实现

#include "rbt.h"bool Init_RBT(rb_root *T){ if(T == NULL) { T = (rb_root*)malloc(sizeof(rb_root)); if( T == NULL) return false; T-&gt;root = NULL; return true; } return false;}N...

2018-08-27 22:45:06 1231 1

转载 ZIP压缩算法详细分析及解压实例解释

Source:https://www.cnblogs.com/esingchan/p/3958962.html  1、引子压缩可以分为无损压缩和有损压缩,有损,指的是压缩之后就无法完整还原原始信息,但是压缩率可以很高,主要应用于视频、话音等数据的压缩,因为损失了一点信息,人是很难察觉的,或者说,也没必要那么清晰照样可以看可以听;无损压缩则用于文件等等必须完整还原信息的场合,ZIP自...

2018-08-10 17:56:21 281

原创 linux多线程 函数

#include&lt;pthread.h&gt;pthread_self()/pthread_equal() //获得ThreadIDpthread_attr_init()/pthread_attr_setdetachstate()/… //创建一个线程前设置 pthread_create() //创建一个线程 pthread_detach()pthrea...

2018-06-05 17:26:30 294

转载 [C++]函数调用栈

 程序的执行过程可看作连续的函数调用。当一个函数执行完毕时,程序要回到调用指令的下一条指令(紧接call指令)处继续执行。函数调用过程通常使用堆栈实现,每个用户态进程对应一个调用栈结构(call stack)。编译器使用堆栈传递函数参数、保存返回地址、临时保存寄存器原有值(即函数调用的上下文)以备恢复以及存储本地局部变量。     不同处理器和编译器的堆栈布局、函数调用方法都可能不同,但堆栈的基本...

2018-05-09 00:13:55 5676

原创 <笔记-Unix系统编程1>系统调用

系统调用与C语言调用很相似,以X86-32为例,有以下步骤:1.调用C语言函数库中的外壳(Wrapper)函数,发起系统调用。2.如有参数,外壳函数要保证所有参数可用并将它们复制到特定寄存器供内核使用3.为了区分各个系统调用,外壳函数还需要将系统调用的编号复制到CPU寄存器中(%eax)4.此处还是外壳函数执行中断指令(int 0x80),是处理器从用户态切换到内核态,执行中断0x

2018-01-10 18:18:30 231

原创 笔记总结--c++继承体系

1.但是一个派生类的指针可以安全地转化为一个基类的指针。这样删除一个基类的指针的时候,C++不管这个指针指向一个基类对象还是一个派生类的对象,调用的都是基类的析构函数而不是派生类的。如果你依赖于派生类的析构函数的代码来释放资源,而没有重载析构函数,那么会有资源泄漏。所以建议的方式是将析构函数声明为虚函数。也就是delete a的时候,也会执行派生类的析构函数。

2018-01-10 16:49:02 174

原创 数组a[] -- a和&a

#include//using namespace std;int main(){/* 1) char a[4]={0}; for(int i = 1; i <= 4;i++) { printf("%d\n",a+(i-1)); a++; //数组标志a不可作为leftvalue。编译缺少leftvalue出错 } return 0; //------

2017-12-28 18:07:21 1040

转载 Linux进程间通信——使用消息队列

下面来说说如何用不用消息队列来进行进程间的通信,消息队列与命名管道有很多相似之处。有关命名管道的更多内容可以参阅我的另一篇文章:Linux进程间通信——使用命名管道一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。  每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞

2017-12-08 18:33:43 224

空空如也

空空如也

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

TA关注的人

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