自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 十大排序算法

冒泡:数据左右进行比较,把最大的数据交换到最后,特点是该算法对数据的有序性敏感,在排序过程中可以立即发现已经完成。 时间复杂度:O(n),O(n^2) 稳定 代码: void bubble_sort(TYPE* arr,size_t len) { bool flag = true; for(int i=len-1; i>0 && flag; i--) { flag = false; for(int j=0; j<i; j++) { if(arr[j

2020-09-15 09:17:29 74

原创 利用C语言实现FTP基本功能

以下函数实现的是FTP中的ls-l,pwd,cd,get(下载),put(上传)功能,函数有点长,且感觉很多地方设计的不合理,以后慢慢优化。而且原本打算加入断点续传和断点下载功能,但文件时间始终找不到合适的修改方法。找到方法了也会把这两个功能加进去。 #include <stdio.h> #include <time.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #in

2020-09-10 19:11:52 1397

原创 利用sbrk和brk函数实现栈的功能(以及其优缺点)

今天编程的时候想到之前老师要求用sbrk和brk实现栈的功能,当时对于这个有些许疑惑,现在解决了(也许)和大家分享一下。 首先我们了解一下要用到的两个函数 int brk(void *addr); void *sbrk(intptr_t increment); 这两个函数共同维护一个叫program break的指针,它的作用是管理你的内存映射。其中: brk函数 它的参数是一个地址指针,其作用就是将program break的指针推到参数指定位置,如假设program break的位置为A 而brk的参数

2020-08-28 15:31:26 651

原创 Linux环境编程

进程与程序 程序就是存储在磁盘上的可执行文件,程序被加载到内存中开始运行叫进程。一个程序可以被多次加载生成多个进程,进程就是处于活动状态的计算机程序 进程的分类 进程一把分为三种类型:交互进程,批处理进程,守护进程。 守护进程一般都处于活跃状态,运行在后台,由于系统在开机时通过启动脚本自动创建的。 查看进程 简单形式:ps 显示当前用户有控制终端的进程信息 列表形式:ps auxw 显示进程详细信息 a 所有用户的有控制终端的进程 x 无终端控制的进程 u 显示详细信息 w 以更大列宽显示 背 显示的信息有

2020-08-25 14:39:38 138

原创 Linux环境编程

kill -l 列出所有信号 建立在早期的信号处理机制上(1-31) 是不可靠信号。 不支持排队,可能会丢失,同一个信号如果连续产生多次。进程可能只接收到一次。 建立在新信号处理机制上(34-64)是可靠信号,支持排队,不会丢失。 信号来源 硬件异常:除0,无效访问,未定义指令,总线错误,软件异常 软件异常: 信号捕获: typedef void(*sighanler_t)(int); 功能:信号处理函数的格式 sighandler_t signal(int signum,sighandler_t hand

2020-08-24 16:48:10 55

原创 linux环境编程学习

在开头,我应该反思一下,之前学习博客写的都不怎么勤。主要是因为我觉得写博客这种东西很没用,不过是像流水账一样把之前学过的东西再写一遍。但现在想想,我应该调整这一观念,用博客记录要学的东西,而不是已经学过的东西。 函数: void *sbrk(intptr_t increment); 功能:根据增量参数调整指针的位置。 increment:增量 0 获取指针的位置 <0 取消映射 >0 映射内存 返回值:该指针原来的位置 int brk(void *addr); 功能:直接用addr的值修改指针

2020-08-24 10:48:07 72

原创 Linnux环境编程

文件同步: 在写入数据时内存与磁盘之间也有一个缓冲区,这种机制降低了磁盘读写次数,提高了读写的效率 但这种机制带来的后果就是磁盘中的数据与实写入的数据不匹配,系统提供了一个函数可以让缓冲区中的数据立即写入到磁盘 void sync(void); 功能:把缓冲区中的数据同步到磁盘 注意:并不会等到数据同步完成后才返回,而是把缓冲区的数据加入到写入队列 int fsync(int fd); 功能: 把指定文件的内容从缓冲区同步到磁盘 注意: 会等到完全定稿磁盘才返回 int fdatasync(int fd

2020-08-21 18:35:07 125

原创 数据结构与算法学习1

1.树的基本概念 一种表示层次关系的数据结构(一对多) 2.树的表示方法:倒悬树、嵌套法、凹凸法 3.树的专业术语: 节点:组成树的基础元素,同时它也是一棵树。 节点的度:该节点子树的数量。 树的度:树中节点的数量。 叶子节点:节点的度为0的节点。 双亲和孩子:节点的子树被称为孩子节点,该节点就是它们的双亲。 兄弟:具有同一个双亲节点,被称为兄弟节点。 祖先:从根节点出发到该节点,经过的所有节点都被称为它的祖先 子孙:一个节点的子树中的任意一个节点都被称为它的子孙。 节点的层次:根节点层次为1,它的孩子层次

2020-08-10 11:54:27 75

原创 c语言学习3

今天做pat题时遇到了一个困难,大致要求是数出一串字符串中PAT出现的次数,我想了半天,最后也只能得出一个遍历三次的方法 #include <stdio.h> #include <string.h> int main() { char arr[10000]; scanf("%s",arr); int a=strlen(arr); int count=0; for(int i=0;i<a-2;i++) { if(arr[i]=='P') { for(in

2020-07-30 20:16:49 72

原创 c语言学习2

以下是分别是strlen,strcpy,strcat,strcmp的代码实现,其中strcpy和strcat为什么要设一个新的指针指向他们的值我想了好一段时间没理解,后面发现当时真是脑子短路了:他们俩的返回值是原指针的地址,如果用原指针直接进行操作,最后返回的地址值会改变。 1 #include <stdio.h> 2 size_t str_len(const char *str) 3 { 4 const char *cmp=str; 5 while(*cmp

2020-07-27 22:20:07 49

原创 c语言学习2

c语言学习2 关于原码,反码,补码: 变量以补码的形式存储在系统中。 原码为变量的二进制码,第一位为符号位,表示正负。 正数的反码为原码本身,负数的反码为符号位后所有数取反。 正数的补码码为原码本身,负数的补码为反码加1. 关于指针 以”类型* 名称“的形式声明。赋值时不能加为a=&b,a为指针,b为指向对象。使用时:取地址时加上&,取指针指向对象时加* #include <stdio.h> int main() { int a; int *a_p,**a_pp; a=3;

2020-07-18 14:23:32 74

原创 c语言学习1

C语言学习1 向来不怎么喜欢写博客,连QQ空间也万年不更新,不过既然有这个需求,那还是好好写吧。既然要写,那就得详细记录每个学习记录与知识点。 考试必记 进程映像指的就是进程的分布情况: text 代码段:存储的是二进制指令,常量数据,权限是只读,强制修改会产生段错误 data 数据段:初始化过的全局变量 bss 静态数据库:未初始化过的全局变量,程序运行时会被清理为0 stack 栈:局部变量,块变量 会随着程序运行不断申请 由系统管理 heap 堆:由程序员手动管理 特点是足够大 1.存储位置 2

2020-07-16 01:02:25 91

空空如也

空空如也

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

TA关注的人

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