c
文章平均质量分 56
trb331617
一只老乌龟,慢慢向前走……
展开
-
leetcode全局变量初始化问题,报错 AddressSanitizer: heap-buffer-overflow on address
结论:leetcode中,全局变量需在函数中做初始化。因为:leetcode“提交”的代码,全局变量定义时做的初始化,可能并没有成功。简单举例:// 报错int a = 0;void func(){ a++; return;}// 正确的做法:在func()中重新对全局变量a做初始化void func(){ a = 0; // 重要 a++; return;}报错信息:==42==ERROR: AddressSanitizer原创 2021-04-03 18:22:28 · 650 阅读 · 0 评论 -
[书]深入分析Linux内核源代码
内核源码下载:https://mirrors.edge.kernel.org/pub/linux/kernel/http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/本书基于2.4.16版本Linux运行的硬件基础Linux在启动过程中设置了段寄存器的值和全局描述符表GDT的内容:// FILE: include/asm-i386/segment.h#define __KERNEL_CS 0x10 // 内核代原创 2020-06-08 01:15:54 · 1721 阅读 · 0 评论 -
[学习总结]自制简易操作系统
Linux中90%以上的代码都是用在资源管理、策略、算法及数据结构等方面。操作系统受制于硬件的支持, 很大程度上它的能力取决于硬件的能力,很多操作都是硬件自动完成的。比如,处理器进入0特权级时, 会自动在任务状态段TSS中获得0特权级的栈地址。因此,要想全面理解操作系统,不仅需要了解上层软件的算法、原理、实现, 还要了解很多硬件底层的内容。 本项目实现的mini操作系统,包含:...原创 2020-04-18 12:28:03 · 3553 阅读 · 0 评论 -
[书]操作系统真象还原 -- 第11、12章 用户进程及调度、系统调用、内存管理
GITHUB:https://github.com/trb331617/os_elephant/tree/master/chapter_11运行截图: 在kernel的main()函数中创建了2个用户进程(分别循环执行a++、b++),创建了2个内核线程(分别打印a、b) 用户进程的priority和ticks设置为3,内核现成的设置为13。所以,运行结果中,打印更快...原创 2020-03-28 13:38:56 · 447 阅读 · 0 评论 -
[书]操作系统真象还原 -- 第10章 控制台(信号量, 锁)、键盘(环形缓冲区))
GITHUB:https://github.com/trb331617/os_elephant/tree/master/chapter_10运行截图:1、控制台console// FILE: thread/sync.c/* 信号量结构 */struct semaphore{ unsigned char value; struct list waiters;...原创 2020-03-22 22:20:58 · 324 阅读 · 0 评论 -
[书]操作系统真象还原 -- 第9章 内核(中断、内核内存管理、内核线程)
GITHUB:https://github.com/trb331617/os_elephant/tree/master/chapter_9运行截图:在内核main函数中创建了2个内核线程,并基于时钟中断实现了线程的调度。代码结构:...原创 2020-03-20 19:19:20 · 296 阅读 · 0 评论 -
Linux C 进程间的IPC通信 之 共享内存(一)
1、IPC(inter - process communication)通信 共享内存、消息队列、信号灯2、库 <sys/shm.h>原创 2017-06-17 12:27:25 · 467 阅读 · 0 评论 -
(C语言)八大排序之:归并排序
归并排序 mergeSort,分治策略。reference: http://www.cnblogs.com/chengxiao/p/6194356.html 1 #include <stdio.h> 2 3 void mergeSort(int a[], int left, int right); 4 void display(int a[], int len); ...原创 2018-03-04 23:21:32 · 218 阅读 · 0 评论 -
(C语言)八大排序之:基数排序
reference: 基数排序 http://blog.csdn.net/hitwhylz/article/details/9970451 八大排序 https://www.cnblogs.com/RainyBear/p/5258483.html基数排序radixSort: 用桶bucket进行 分配、收集。 桶:0-9十个桶 ...原创 2018-03-05 16:26:12 · 1373 阅读 · 1 评论 -
(C语言)链表排序 --- 插入排序
1 /* 2 * FILE: sort_link.c 3 * DATE: 20180306 4 * ============== 5 * DESCRIPTION: 链表插入排序 6 */ 7 8 #include <stdio.h> 9 #include <stdlib.h> 10 11 struct node{ 12...原创 2018-03-06 16:03:04 · 4555 阅读 · 3 评论 -
腾讯实习内推-电话面试-20180319晚一面-20180320二面
1、自我介绍、项目经历、看过哪些书(APUE、CSAPP、UNP)2、HTTP应用层协议,TCP传输层协议、TCP三次握手、TIME_WAIT3、Linux系统CPU利用率top4、Linux常用命令: ls、cd、vi、touch、rm、mv、mkdir、tac、cat、netstat、网卡ifconfig (反省:cp、chmod、man、grep、wc、pwd)5、八大排序?冒泡...原创 2018-03-19 20:56:50 · 3328 阅读 · 0 评论 -
美团一面-电话面试-20180320下午
1、自我介绍、项目经历2、web响应过程3、TCP三次握手、哪些状态、TCP四次挥手为什么四次4、进程间通信有哪些机制5、select6、sed、awk、gawk7、统计文件个数 ls | wc -l (反省:ls -l | grep "^-" | wc -l 其中grep "^-"普通文件,grep "^d"目录文件 或者在shell中使用opendir函数打开目录,对目...原创 2018-03-20 14:24:29 · 2077 阅读 · 0 评论 -
(C语言) AVL树 - 自平衡二叉树:插入、删除
数组a[9] = {4,2,6,1,3,5,7,16,15};说明:1、层序遍历AVL树,括号内为每个节点的高度值 2、第二行为删除节点“5”之后的AVL树Reference: https://blog.csdn.net/silence2015/article/details/50966748 https://blog.csdn.net/u0...原创 2018-03-24 19:54:47 · 695 阅读 · 0 评论 -
大疆嵌入式笔试B卷20180718
总体上来说,不难。但有些细节上的小知识点还是无法把控,扎实度还不够。题型:单选(2' * 10)、多选(3' * 5)、填空(4' * 4)、简答(6' * 3)、编程( * 2 = 31')1、单选(十题20分) 考察DDR特性、sizeof union和struct以及__attribute__(packed)、sizeof二维数组、 读取cache时如何保持一致性(fetch? wr...原创 2018-07-08 21:33:13 · 3867 阅读 · 2 评论 -
NVIDIA嵌入式笔试20180904
题型(中文):选择题32道(单选和多选)、编程题2道(可使用本地IDE)选择题:#1. 已知前序,问不可能的中序#2. Dijkstra是广度优先#3. N个叶子节点的哈夫曼树,节点总数为2N-1#4. 需要先擦除的是(Flash?DRAM?SRAM?EEPROM?)#5. 冯诺依曼#6. sizeof()#7. 枚举类型(第1个枚举成员默认值为0,后续枚举成员为前...原创 2018-12-20 19:12:49 · 303 阅读 · 0 评论 -
(C语言)八大排序之:希尔排序
reference: https://www.cnblogs.com/chengxiao/p/6104371.html插入排序,是稳定的。希尔排序,是不稳定的。 一次插入排序是稳定的,不会改变相同元素的相对顺序。希尔排序需要多次插入排序,值相同的元素可能在各自的插入排序中移动,最后其稳定性就会被打乱,所以shell排序是不稳定的。 希尔排序,又称缩小增量排序,是直接插入排...转载 2018-03-04 21:10:16 · 478 阅读 · 0 评论 -
Linux C小项目 —— 实现自己的myshell
简单的shell,其功能有:解释执行命令,支持输入输出重定向,支持管道,后台运行程序支持的命令格式: 单个命令:如 ls 带1到多个参数的命令:如ls -l /tmp 带一个输出重定向或输入重定向或管道的命令:如ls -l > a, wc -c < a, ls -l / | wc -c 后台运行符&可加在以上各个命令的最后面,如l...原创 2018-03-03 12:43:59 · 3380 阅读 · 0 评论 -
编程小练习:最大公约数,字符串反序输出,全排列,不用加减法求和,字符串内容反序,字符串中最长数字串,数组是否递增,数组反转,链表反转,翻转单词顺序
最大公约数 --- 递归、非递归#include <stdio.h>int gcd(int a, int b);int gcd_recursive(int a, int b);int main(int argc, char *argv[]){ int a, b; scanf("%d %d", &a, &b); ...原创 2018-03-01 22:52:13 · 206 阅读 · 0 评论 -
Linux C 套接字socket UDP
Linux C 网络编程 套接字socket UDP原创 2017-06-22 21:25:01 · 285 阅读 · 0 评论 -
Linux C 套接字socket TCP(1)
Linux C 套接字(1)原创 2017-06-18 22:04:22 · 750 阅读 · 0 评论 -
Linux C 进程间的IPC通信 之 消息队列(2)
Linux C 进程间的IPC通信 之 消息队列 双向通信原创 2017-06-18 10:30:42 · 858 阅读 · 0 评论 -
Linux C 进程间的IPC通信 之 消息队列(1)
1、消息队列 与 共享内存 1-1 消息队列 和 管道 都属于 队列结构,读完了 就被删除 不存在,但 管道 是 顺序队列 ,而 消息队列 是 链式队列 1-2 消息队列 的读和写 可设为 阻塞模式。一个进程 写完后,无需 像共享内存般 每次都要 通知对方 并睡眠等待原创 2017-06-17 20:37:49 · 273 阅读 · 0 评论 -
Linux C 进程间的IPC通信 之 共享内存(二)
1、父子进程(有亲缘关系)的IPC通信 int shmid; shmid = shmget(IPC_PRIVATE, 128, IPC_CREAT | 0777); //创建共享内存,参数为 宏 IPC_PRIVATE int pid; char *p; pid = fork(); if(pid >原创 2017-06-17 15:41:51 · 546 阅读 · 0 评论 -
Linux C 父子进程 与 有名管道
Linux C 父子进程 与 有名管道原创 2017-06-15 18:44:55 · 1353 阅读 · 0 评论 -
Linux C 进程间的管道通信
1、进程间的通信方式 a、管道通信:无名管道、有名管道 b、信号通信:包括信号的发送、接收和处理 c、IPC(Inter-Process Communication):共享内存、消息队列、信号灯 *** < 以上是单机模式下的进程通信,只有一个Linux内核 > *** d、Socket通信:存在于一个网络中的两个进程间的通信(两个Linux内核)2、管道文件、字符设备、块设备、套接字:只有文件节点,不占磁盘空间 普通文件、链接文件原创 2017-06-15 16:32:31 · 388 阅读 · 0 评论 -
Linux C进程、线程
1、进程间通信: 库 <sys/types.h> 在用户空间是不可能实现进程通信,可通过Linux内核创建对象来通信 pid_t pid; //进程号的类型定义 pid = fork(); //创建进程 if(pid == 0){}; //子进程 if(pid == 1){}; //父进程2、线程间通信: 库 <pthread.h> 在用户空间可以实现线程间通信,通过全局变量通信 pthread_t tid; //线程的类型定义原创 2017-06-14 23:25:36 · 314 阅读 · 0 评论 -
Linux C 套接字socket select
Linux C 网络编程 套接字socket select原创 2017-06-22 22:44:38 · 1285 阅读 · 0 评论 -
Linux C 字符串操作
Linux C 字符串操作(连接、复制、长度)原创 2017-07-06 15:27:07 · 1408 阅读 · 0 评论 -
Linux c 二叉搜索树(节点创建、插入BST)
Linux c 二叉搜索树(节点创建、插入BST)原创 2017-07-08 09:45:06 · 374 阅读 · 0 评论 -
笔试回忆-CVTE广州视源-嵌入式应用开发实习生-20180314
概要:20道不定项选择题,2道编程大题21题:(){}的匹配22题:求两个数字字符串的和 char *sum(const char *num1, const char *num2); num1和num2长度为0-991题:频率为2000HZ,占空比为40%,问一个周期内的宽度? (200us)x题:结构体__attribute__(packed),问该结构体...原创 2018-03-14 20:46:44 · 2765 阅读 · 0 评论 -
(C语言)BinarySrearchTree二叉搜索树 --- 标准插入(递归,非递归)、遍历(前,中,后序)、查找(递归,非递归)、根插入递归(左旋,右旋)、最小最大值、删除节点
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 struct node{ 5 int data; 6 struct node *left; 7 struct node *right; 8 }; 9 10 struct node *creat...原创 2018-03-07 16:10:50 · 301 阅读 · 0 评论 -
(C语言)BinarySearch二分搜索/折半查找 --- 递归、非递归
1 /* 2 * FILE: BinarySearch.C 3 * DATE: 20180306 4 * ============== 5 * DESCRIPTION: 折半查找_递归、非递归实现 6 * 二分搜索 BinarySearch 7 */ 8 9 #include <stdio.h> 10 11 int binaryS...原创 2018-03-07 16:01:11 · 904 阅读 · 0 评论 -
(C语言)数据结构 --- 队列、栈
1 /* 2 * FILE: test.c 3 * ============ 4 */ 5 6 #include "QUEUE_linkedlist.h" 7 #include "STACK_linkedlist.h" 8 9 #include <stdio.h> 10 11 int main(void) 12 { 13 ...原创 2018-03-06 20:09:39 · 244 阅读 · 0 评论 -
Linux C小项目 —— 聊天室
多线程的聊天室服务器端:实现多用户群体聊天功能(人数上限可设置);每个用户所发送的消息,其他已连接服务器的用户均可以收到;用户输入”bye”退出,服务器输入“quit”退出。 服务端总共有三个函数主函数main:服务器端的初始化,接受连接;消息处理函数rcv_snd:接收某一用户的消息,简单处理后发送给其他所有用户;退出函数quit:当输入quit时,服务器程序原创 2018-02-06 22:17:31 · 11381 阅读 · 2 评论 -
调试
1、逻辑判断是否相等“==”,被误写成赋值等号“=”else if(buf[0] == '\0') 逻辑判断 与 赋值运算 的括号 匹配错误,例:if( (fd=open("temp.txt", O_RDONLY) < 0) )改正:136 if((fd=open("temp.txt", O_RDONLY)) < 0)137 {138 ...原创 2018-01-25 18:58:10 · 204 阅读 · 0 评论 -
Linux C 文件操作
Linux C 文件操作1、文件打开关闭 2、读写单个字符 3、读写字符串 4、读写数据块 5、文件指针位置原创 2017-07-09 09:53:07 · 323 阅读 · 0 评论 -
Linux C 链表(新建节点、添加节点)
Linux C 链表(新建节点、添加节点)原创 2017-07-06 21:42:43 · 841 阅读 · 0 评论 -
Linux C 进程间的信号通信
1、信号通信 内核中存在64种信号,即linux 内核可以发送64种信号,命令“kill -l”可以查看 A - 信号的发送:kill、raise、alarm kill(pid_t pid, int sig) raise(int sig) 等价于 kill(getpid(), int sig) 即发给自己原创 2017-06-15 23:24:33 · 285 阅读 · 0 评论