自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 第一章 数据结构绪论

​​​​​​​一. 数据结构的基本概念数据结构的三要素:逻辑结构(定义)、存储结构、数据的运算(基本运算,增删改查)。二. 算法和算法评价时间复杂度(时间复杂度的关键,就是想办法求出次数)...

2022-05-27 15:57:14 147

转载 BCD码 8421编码原理剖析

2022-05-26 17:02:24 1058

原创 K8S (kubernetes)

k8s全称kubernetes,这个名字大家应该都不陌生,k8s是为容器服务而生的一个可移植容器的编排管理工具,越来越多的公司正在拥抱k8s,并且当前k8s已经主导了云业务流程,推动了微服务架构等热门技术的普及和落地,正在如火如荼的发展。那么称霸容器领域的k8s究竟是有什么魔力呢?首先,我们从容器技术谈起,在容器技术之前,大家开发用虚拟机比较多,比如vmware和openstack,我们可以使用虚拟机在我们的操作系统中模拟出多台子电脑(Linux),子电脑之间是相互隔离的...

2021-12-19 19:08:42 7837

原创 0000 0010 实现一个最简单的内核

一. PC 机的引导流程写操作系统要用汇编和 C 语言,尽管这个 Hello OS 很小,但也要用到两种编程语言。其实,现有的商业操作系统都是用这两种语言开发出来的。我们也不打算从 PC 的引导程序开始写起,原因是目前我们的知识储备还不够,所以先借用一下 GRUB 引导程序,只要我们的 PC 机上安装了 Ubuntu Linux 操作系统,GRUB 就已经存在了。在写 Hello OS 之前,我们先要搞清楚 Hello OS 的引导...

2021-10-17 20:15:08 258

原创 0000 0001 hello的详解

第一位牛人 世界级计算机大佬的传奇——Unix 之父 Ken Thompson。在上世纪 60 年代的一个夏天,Ken Thompson 的妻子要回娘家一个月。呆在贝尔实验室的他,竟然利用这极为孤独的一个月,开发出了 UNiplexed Information and Computing System(UNICS)——即 UNIX 的雏形,一个全新的操作系统。要知道,在当时 C 语言并没有诞生,从严格意义上说,他是用 B 语言和汇编语言在 PDP-7 的机器上完成的。...

2021-10-17 10:51:18 177

原创 开发基础流程

操作系统知识体系图:

2021-10-16 21:26:00 88

原创 哈希表介绍和实现

目录开篇一. 什么是哈希表二. 解决哈希冲突1. 开放寻址法2. 拉链法三. 哈希表数据的读取开篇数组是我们平时常见的并且经常使用的一种数据结构,那么它具有什么优点呢?我们都知道,在我们知道数组中某元素的下标值时,我们可以通过下标值的方式获取到数组中对应的元素,这种获取元素的速度是非常快的。 但是呢,数组也是有一定的缺点的,如果我们不知道某个元素的下标值,而只是知道该元素在数组中,这时我们想要获取该元素就只能对数组...

2021-09-24 10:06:03 785

原创 05 进程的同步和互斥

目录一. 进程同步与进程互斥1.1 进程同步1.2 进程互斥二. 进程互斥的软件实现方法2.1 单标志法2.2 双标志先检查法2.3 双标志后检查法2.4Peterson法三. 进程互斥的硬件实现方法3.1中断屏蔽3.2 TestAndSet指令(TSL指令)3.3 SWAP指令​四. 信号量机制4.1 信号量机制概述4.2整型信号量4.3 记录型信号量五. 用信号量机制实...

2021-09-18 16:39:04 1423

原创 01 -- 计算机系统概述

一. 计算机发展历程1.1 计算机四代变化世界上第一台通用计算机“ENIAC”(Electronic Numerical Integrator And Computer)于1946年2月14日在美国宾夕法尼亚大学诞生。发明人是美国人莫克利(JohnW.Mauchly)和艾克特(J.PresperEckert)。1)半导体存储器的发展。1970年仙童半导体公司生产出第一个较大容量的半导体存储器,至今,半导体存储器经历了11代;单芯片1KB、4KB...

2021-09-16 16:13:27 933

原创 02--02 进程间通信方式— 消息队列,以及代码实现

一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。Linux用宏MSGMAX和MSGMNB来限制一条消息的最大长度和一个队列的最大长度。二、在Linux中使用消息队列Linux提供了一系列消息队列的函数接口来让我们方便...

2021-09-16 11:08:10 440

原创 02--01 进程间通信之共享内存介绍,以及代码实现

一. 什么是共享内存?共享内存就是允许两个或多个进程共享一定的存储区。就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针。当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个更改。因为数据不需要在客户机和服务器端之间复制,数据直接写到内存,不用若干次数据拷贝,所以这是最快的一种IPC。注:共享内存没有任何的同步与互斥机制,所以要使用信号量来实现对共享内存的存取的同步。1.1 共享内存特点和优势...

2021-09-14 20:07:25 599

原创 01 数据结构——线性结构

一. 线性表及其实现:荔枝:以一元多项式在程序中的表示方法来引出 如果还用这种直接利用数组去存储所有项的系数,如果 ...

2021-09-09 09:31:08 137

原创 04 调度的介绍

一. 处理机调度的概念、层次1. 处理机调度的概念 一般来说在多道程序系统中,作业数往往是多于处理机个数的,为了合理分配处理机资源这就需要确定某种规则来决定处理这些在就绪队列等待的任务的顺序,这就是“调度”研究的问题。2.处理机调度的三个层次 高级调度(作业调度):根据某种算法,把外存上处于后备队列中的那些作业调入内存,也就是说,它的调度对象是作业。所谓作业是一个比程序更为广泛的概念,它不仅包含了通常的程序和数据,而且还应配有一份作业说...

2021-08-26 21:08:50 1259

原创 thrift 是rpc协议

大佬总结的,牛的。https://www.cnblogs.com/aspirant/p/11331866.html

2021-08-26 09:26:35 107

原创 03 线程基本介绍

目录一. 线程的概念和特点1. 线程的概念2.线程的特点3. 引入线程后所带来的变化二. 线程的实现方式、多线程模型1. 线程的实现方式2. 多线程模型一. 线程的概念和特点前面我们介绍了进程,并说到进程是程序的一次执行,是调度的基本单位。那么大家来想一下这么一个场景,我打开了QQ.exe,QQ进程便会运行,在这次运行里我想跟同学视频聊天、共享文件、文字聊天,那么这三个功能对应的程序便会运行即QQ进程下会多出三个子...

2021-08-25 19:55:30 242

原创 02 进程基本介绍

目录一.进程的概念、组成、特征1. 进程的概念2. 进程的组成3. 进程的特征二. 进程状态的转换以及进程组织方式1. 进程的状态2. 进程的组织方式三. 进程控制1. 基本概念2. 进程创建原语3. 进程终止原语4. 进程的阻塞与唤醒5. 进程的切换四. 进程通信1. 共享存储2. 消息传递3. 管道通信一.进程的概念、组成、特征1. 进程的概念...

2021-08-25 19:16:52 189

原创 linux下gcc编译c文件生成可执行文件的四个步骤

Linux下gcc编译c文件为可执行文件分为四个步骤: 分别是 预编译、编译、汇编、链接。1、预编译( 生成 hello.i 文件)预编译的处理规则: 1. 将所有的 “#define” 删除,并展开所有的宏定义。 2. 处理所有的条件预编译指令,比如:" #if #ifdef #elif #else #endif "。 3. 处理所有的 “#include” 预编译指令。 4. 删除所有的注释 “//” 、 “...

2021-08-25 10:24:58 16873 1

原创 shell脚本语言

1、shell的概述shell 是一种脚本语言。脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译)。shell 既是应用程序 又是一种脚本语言(应用程序 解析 脚本语言)shell命令解析器:系统提供 shell命令解析器: sh ash bash查看自己linux系统的默认解析:echo $...

2021-08-24 14:20:27 1178

原创 XML详解

XML全称 eXtensible Markup Language,意思是可扩展标记语言(标签形式的语言)。XML语法上和HTML比较相似,但HTML中的元素是固定的,而XML的标签是可以由用户自定义的。即XML是一种非常灵活的语言,没有固定的标签,所有的标签都可以自定义。通常,XML被用于信息的记录和传递。因此,XML经常被用于充当配置文件。简单概括的话就是,xml本身是一种格式规范,是一种包含了数据以及数据说明的文本格式规范。比如,我们...

2021-08-23 10:26:20 438

原创 REST 和 SOAP的区别

一、Web Service  Web Service服务通常被定义为一组模块化的API,它们可以通过网络进行调用,来执行远程系统的请求服务。Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。各应用程序通过网络协议和规定的一些标准数据格式(Http,XML,Soap)来访问Web Service,通过Web Service内部执行得到所需结果。依据Web S...

2021-08-23 10:15:43 583

原创 HTTP协议细谈

网络是由若干节点和连接这些节点的链路构成,然后网络与网络之间所串连成的庞大网络叫做互联网,而我们今天要讲的HTTP(HyperText Transfer Protocol 超文本传输协议)是互联网上应用最为广泛的一种网络协议,它是由万维网协会(World Wide Web Consortium)制定发布。一、简介HTTP 协议一共有五大特点:1.支持客户/服务器模式。2.简单快速:客户向服务器请求服...

2021-08-22 19:47:18 644

原创 Json与CJson详解

JSON(JavaScript Object Notation,JavaScript对象表示法)是一种由道格拉斯·克罗克福特构想和设计、轻量级的数据交换语言,该语言以易于让人阅读的文字为基础,用来传输由属性值或者序列性的值组成的数据对象。尽管JSON是JavaScript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。JSON 数据格式与语言无关,脱胎自JavaScript,但当前很多编程语言都支持 JSON 格式数据的生成和解析。JS...

2021-08-20 14:30:09 1021

原创 Linux命令补充(grep,ps, telnet)

一. grepgrep 命令用于查找文件里符合条件的字符串。1.在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。此时,可以使用如下命令:grep test *file$ grep test test* #查找前缀有“test”的文件包含“test”字符串的文件 2.以递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出...

2021-07-19 15:27:17 504

原创 嵌入式编译器

GCC(GNU Complier Collection)是linux下中最常用的符合ASNI C标准的编译系统,能够编译c,c++,object c等语言编写的程序。GCC可以为x86,ARM,MIPS等不同的体系结构的硬件平台编译程序。 GCC可以编译c,c++,Java等数十种高级语言。 GCC编译效率也非常高,一般要高出其他编译系统的20%—30%。常用编译选项:-E 对源文件进行预编译-s 对源文件进行编译-c 对源文件进行汇编-o ...

2020-07-11 10:05:56 695

原创 用户管理命令

用户管理命令su功能描述:切换用户例如:su root注意:普通用户切换为管理员,需要密码,反之不需要。useradd 功能描述:切换用户常用选项:-g 将该新用户增加到该用户组中,如果没有该选项,则根据用户名创建一个新组,并将该用户加入该组。例如:useradd -g student Jasonpasswd功能描述:修改用户密码例如:Passwd 回车 ;修改自己的密码,接下来需要输入密码两遍。Su rootP...

2020-07-07 11:08:31 1191

原创 嵌入式文本编辑器

一.vi的工作模式 命令模式:控制屏幕光标的移动,字符,字或行的删除,移动复制某区域,按i进入插入模式,按/或:进入底行模式. 插入模式:编辑文字,按esc返回命令模式 底行模式:将文件保存或退出vi,也可以设计编辑环境,如查找字符串,列出行号等。 (通常底行模式,也是命令行模式)。 vi的进入vi 文件名 例如:vi /etc/in进入vi后,是命令模式,要输入i进入插入模式,才能输入文字...

2020-07-07 11:06:05 301

转载 cmake用法及常用命令总结

CMakeLists.txt 的语法比较简单,由命令、注释和空格组成,其中命令是不区分大小写的。指令是大小写无关的,参数和变量是大小写相关的。但推荐全部使用大写指令。符号 # 后面的内容被认为是注释。命令由命令名称、小括号和参数组成,参数之间使用空格进行间隔。自己写了一个小例子,包含了静态库和动态库以及基本的依赖关系。按照目录结构加入文件(筛选器) #按目录结构加入文件 macro(create_filters source_files) if(MSVC).

2020-07-06 22:43:31 1178

转载 总结gcc静态库和动态库的制作

1.1 什么是库在windows平台和linux平台下都大量存在着库。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。由于windows和linux的平台不同(主要是编译器、汇编器和连接器的不同),因此二者库的二进制是不兼容的。本文仅限于介绍linux下的库。1.2 库的种类linux下的库有两种:静态库和共享库(动态库)。二者的不同点在于代码被载入的时刻不同。静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。共享库的代码是在可执行程序运行时才载...

2020-07-06 22:38:20 169

原创 编译器三级优化分别优化了哪些

编译器三级优化分别优化了哪些GNU编译器提供-O选项供程序优化使用:-O提供基础级别的优化-O2提供更加高级的代码优化,会占用更长的编译时间-O3提供最高级的代码优化不同的优化级别使用的优化技术也可以单独的应用于代码。 可以使用-f命令行选项引用每个单独的优化技术。1, 编译器优化级别1在优化的第一个级别执行基础代码的优化。 这个级别试图执行9种单独的优化功能:-fdefer-pop: 这种优化技术与汇编语...

2020-07-06 22:32:30 1711

转载 学习知识

1.嵌入式底层开发为什么要选择C语言从语言特点来说①C语言有出色的可移植性,能在多种不同体系结构的软/硬平台上运行。②简洁紧凑,使用灵活的语法机制,并能直接访问硬件能够直接访问硬件的语言有:汇编和C语言汇编属于低级语言,难以完成一些复杂的功能,但是汇编比C语言访问硬件的效率更高。所以,一般将硬件初始化的工作交给汇编,比较复杂的操作交给C语言。③C语言具有很高的运行效率。2.什么是实时性?硬实时和软实时?实时性可以定义为:在规定时间内系统的反应能力.一般,有实时要求的应用有两个突出的特点.

2020-07-03 23:14:32 118

原创 Linux基础整理---1

一、目录和文件管理1. ls (list)功能描述:显示目录下的项目常用选项: -a 显示所有文件,包括隐藏文件(隐藏文件不是不想让人看到,二十bioa'shi该文件是系统中重要的文件,不是必须,不要 动它)。 -i 显示文件的ID,long:长格式 -l 显示详细信息 -d 查看目录属性 ...

2020-06-17 23:47:41 120

原创 直接插入排序

直接插入排序的原理排序过程算法思想:将待排序表分为两部分,左边为有序区,右边为无序区。将无序区的元素与有序区的每一个元素比较,小于的话,将该元素插进有序区相应的位置中。一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:从第一个元素开始,该元素可以认为已经被排序 取出下一个元素,在已经排序...

2019-11-12 23:04:16 93

原创 顺序表的基本原理

顺序表的基本原理线性表是由 n 个属于 同一数据对象的数据元素组成的 有限序列。除序列的第一个数据元素与最后一个数据元素之外,其他任何一个数据元素有且仅有一个直接前驱元素,有且仅有一个直接后继元素。线性表的存储结构可以采用 顺序存储结构和 链式存储结构,采用顺序存储结构的线性表又称为 顺序表。顺序表·特优点:逻辑位置相邻的数据元素在物理位置上也一定相邻...

2019-10-29 16:19:02 1858

原创 顺序表常见几种操作

顺序表常见几种操作:#include"stdio.h"#include"stdlib.h"#include"time.h"#define ture 100#define false 101#define maxsize 20typedef struct node{ int data[maxsize]; int length;}seq...

2019-10-28 12:14:38 882

原创 int数据类型的取值范围计算,以及int类型在内存中的存储形式

本文中的int类型的相关数据都以32位操作系统下的DVC++编译器环境为准。在下表中可以看到,int类型表示带有符号的整型,而unsigned int类型为无符号的整型。 类型名称 占字节数 取值范围 int 4B -2^31~2^31-1 unsigned i...

2019-09-25 20:12:38 4543 1

原创 卡拉兹(Callatz)猜想

对任何一个自然数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n + 1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n = 1。我们今天的题目不是证明卡拉兹猜想,而是对给定的任一不超过1000的正整数n,简单地数一下,需要多少步(砍几下)才能得到n = 1输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。输出格式:输出从n计算到1需要的...

2019-09-25 19:51:21 1427

转载 C语言详解 FILE文件操作

C语言详解 FILE文件操作https://blog.csdn.net/yong_sun/article/details/8921061

2019-07-28 23:00:47 203

转载 C语言简单入门之结构体和链表

可以,非常详细https://blog.csdn.net/maoye198602102339/article/details/82663130

2019-07-28 16:33:08 126

原创 system的妙用

system("CLS") 是在C语言程序中,调用系统命令cls完成清屏操作。system函数是C语言提供的与操作系统衔接的函数,函数原型如下:#include <stdlib.h> //所在头文件int system(const char *command); //参数为操作系统命令函数功能:execute a shell command 执行一个操作系统命令如:s...

2019-07-27 10:51:42 829

原创 for循环的几种情况

1. for( ;表达式2 ;){ 循环体 } 没有初始化,没有循环次数的终结;直接进入循环条件的判断,如果成立,执行循环体;否则跳出循环2. for( 表达式1;表达式2 ;){ 循环体 } 执行一次初始化之后,执行循环...

2019-07-27 10:25:51 1680

空空如也

空空如也

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

TA关注的人

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