自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小白元的博客

程序人生

  • 博客(45)
  • 收藏
  • 关注

原创 2020/4/29 动态库(libxxx.so)(共享库) 静态库(libxxx.a)

今天进一步了解了动态库和静态库静态库在程序编译的时候加载到可执行程序中,在运行时不需要静态库了,但是加入静态库的程序体积大;g++ -o test.o -c test.c 先编译成目标 .o 文件ar cqs libtest.a test.o 再把.o文件编成静态库gcc main.c...

2020-04-29 15:08:46 581

原创 2020/4/8 \r \n \r\n 0 '\0' 0 strtok_r()

今天学到了这些东西:Mac系统里,每行结尾是“<回车>”,即'\r';Unix/Linux系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回车>”,即“\r\n”;直接后果是,Unix/Linux/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix...

2020-04-29 14:44:09 335

原创 2020/4/7 stat() fgets() rewind()

表头文件:#include <sys/stat.h> #include <unistd.h>定义函数:int stat(const char *file_name, struct stat *buf);函数说明:通过文件名file_name获取文件信息,并保存在buf所指的结构体stat中返回值: ...

2020-04-07 17:17:26 205

原创 2020/4/2 (系统函数 git文件冲突)

int isalpha(int ch) 判断字符ch是否为英文字母,当ch为英文字母a-z或A-Z时,返回非零值,否则返回零。int isalnum (int c) 用来判断一个字符是否为英文字母或数字,若 c 为 0 ~ 9 a ~ z A ~ Z 则返回非 0,否则返回 0...

2020-04-02 16:46:09 207

原创 2020/3/30 学习总结 【gdb 、core】

2020/3/30【gdb 、core】今天学习了 gdb调试,在调试的过程中,需要在编译代码时加上 -g 选项,才能使用gdb工具进行调试,我在编译的过程中遇到了core dumped 文件,他就是遇到段错误生成的核心转储文件,它可以记录源文件代码信息。调试的方法基本如下:先敲调试命令:gdb test core 之后敲命令 bt ,就直观的看到出现段错误的具体的一行代码,...

2020-03-30 18:24:27 194

原创 python2绘制界面的经历

python绘制界面,起初想的很简单,但是在编写的过程却遇到了很多麻烦。就让我从头说起吧~准备工作:选择了python2.7.5版本,Tkinter绘制界面模块遇到问题:运行python Tkinter (python2版本tkinter模块首字母需要大写) 时,出现报错:没有Tkinter模块,上网查询,知道在windows里自带Tkinter版本,但是在linux(cen...

2019-07-17 19:24:24 516

原创 基于huffman树的文件压缩项目

文件压缩我总以为很神奇,所以一直觉得这是一个神奇的东西,但碰上神奇的东西我总是想一探究竟,在经过一番探寻答案的过程中,才发现原来文件压缩并非神奇,仅仅是利用了编码的原理转换了原来的内容而已,哈哈,这就像魔术很神奇,但是当你了解到它背后的原理,你就觉得如此普通,所以无论遇到什么看似很难的事情,只要静下心来去研究它,你总会有豁然开朗的那一天,加油吧,少年~下面让我们一起走进文件压缩的世界吧!...

2019-02-24 12:12:33 373

原创 网络传输的基本流程

例如:同一网段内的两台主机进行文件传输 基于TCP/IP协议两台主机通讯过程流程图如下: 跨网段的两台主机进行文件传输【传输过程中要经过一个或对个路由器】流程图如下: 数据包的封装和分用:1 不同的协议层对于数据包有不同的称谓:在传输层叫做数据段,在网络层叫做数据报,在链路层叫做数据帧。2 应用层数据通过协议栈发送到网络上时,每层协议都会...

2019-01-21 11:07:33 1729 1

原创 网络--------TCP/IP四层模型浅析

了解TCP/IP四层模型之前我们先来看看七层模型:     TCP/IP是⼀组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.  应用层:TCP/IP模型将OSI七层模型中应用层,表示层,会话层统一称为应用层,应用层负责应用程序间沟通,例如简单电子邮件传输协议【SMTP】,文件传输协议【FTP】,超文本传输协议【HTTP】,网络远程...

2019-01-21 09:49:18 238

原创 STL-vector常用接口介绍

vector 简介:1. vector是表示可变大小数组的序列容器。2. 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。3. 本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存...

2019-01-10 17:51:53 1363

转载 网络-----------端口的认识

端口 有过一些黑客攻击方面知识的读者都会知道,其实那些所谓的黑客并不是像人们想象那样从天而降,而是实实在在从您的电脑"大门"中自由出入。电脑的"大门"就­是我们平常所说的"端口",它包括电脑的物理端口,如电脑的串口、并口、输入/输出设备以及适配器接口等(这些端口都是可见的),但更多的是不可见的软件端­口,在本文中所介绍的都是指"软件端口",但为了说明方便,仍统称为"端口"。本文仅就端口...

2019-01-09 21:18:15 679

原创 STL-string类模拟实现

先来看一道利用string接口实现的oj题目:反转字符串class Solution {public: string reverseString(string s) { if (s.empty()) return s; size_t begin = 0; size_t end = s.size...

2019-01-09 14:05:54 289

原创 STL-string类常用接口总结

概要:1. string是表示字符串的字符串类2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。3. string在底层实际是:basic_string模板类的别名,typedef basic_string&lt;char, char_traits, allocator&gt; string;4. 不能操作多字节或者变长字符的序列注意:在使用...

2019-01-08 12:21:00 843

原创 浅析类和对象【上】

面向对象和面向过程究竟有何区别?简单的说一句:C语言是面向过程的语言,关注的是过程,分析问题求解的步骤,通过函数调用解决问题。c++语言是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,通过对象之间的交互完成。这只是简单的总结,我们会一步一步去认识清楚何为面向对象,今天先让我们走进c++的类和对象吧~~~c++中引入了类和对象,那么什么是类和对象呢?我们想象生活中...

2018-12-16 15:03:51 110

原创 浅析引用与指针的区别

首先什么是引用?引用不是新定义的一个变量,而是给已经存在的变量取了一个别名,编译器不回为引用开辟一个新空间,引用与实体共用同一块内存。举个例子:void Swap(int&amp; x){ x = 2; cout &lt;&lt; "x:" &lt;&lt; &amp;x &lt;&lt; endl;}int main(){ int a = 1; cout &lt...

2018-12-14 15:43:41 134

原创 函数重载浅析

提起函数重载,很多人都耳熟能详,那么它到底为何存在,有何神奇之处?今天,我就会好好去研究一下它,揭开它的深层面纱~函数重载是什么?函数重载是一种特殊情况,c++允许在同一作用域中声明几个功能类似的同名函数,这些函数的形参列表必须不同【参数类型或参数个数或参数顺序不同】,用来处理功能类似但数据类型不同的问题。函数重载的例子:#include &lt;iostream&gt;...

2018-12-13 21:32:45 183

原创 进程间通信之管道浅析

进程间通信:因为进程的独立性,使得进程间的数据交流变得很困难,而工作中常常需要进程间数据传输、资源共享、进程控制等,于是就需要进程间通信。进程间通信的方式有:管道【匿名管道、命名管道】、system V通信方式【共享内存、消息队列、信号量】 今天我们就来详细谈谈管道通信~~~~管道本质:内核的一块缓冲区【操作系统对其进行文件IO操作】管道分为:匿名管道和命名管道相同点...

2018-12-09 23:59:00 182

原创 调用函数栈针的浅析

先来看一个简单的例子:#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;int sum(int _a, int _b){ int c = 0; c = _a + _b; return c;}int main(){ int a = 10; int b = 20; int ret = 0; ret = sum(a, b...

2018-12-08 21:00:57 639

原创 冯诺依曼体系结构浅析

冯·诺依曼结构计算机(百度解释) 美籍匈牙利科学家冯·诺依曼最新提出程序存储的思想,并成功将其运用在计算机的设计之中,根据这一原理制造的计算机被称为冯·诺依曼结构计算机。由于他对现代计算机技术的突出贡献,因此冯·诺依曼又被称为“现代计算机之父”。 说到计算机的发展,就不能不提到匈牙利科学家冯诺依曼(曾在德国柏林大学任教)。从20世纪初,物理学和电子学科学家们就在争论制造可以进行...

2018-11-30 13:49:55 1544

转载 系统调用接口

1、系统调用操作系统作为系统软件,它的任务是为用户的应用程序提供良好的运行环境。因此,由操作系统内核提供一系列内核函数,通过一组称为系统调用的接口提供给用户使用。系统调用的作用是把应用程序的请求传递给系统内核,然后调用相应的内核函数完成所需的处理,最终将处理结果返回给应用程序。因此,系统调用是应用程序和系统内核之间的接口。Linux系统调用,包含了大部分常用的系统调用和由系统调用派生出的函数。...

2018-11-27 09:53:59 4426

原创 七种基本排序思考

  //插排//稳定//时间复杂度【最差情况】:O(n^2)//空间复杂度:O(1)void InsertSort(int array[], int size){ int key; int i, j; for (i = 1; i &lt; size; i++){ key = array[i]; for (j = i - 1; j &gt;= 0; j--)...

2018-11-24 21:08:54 147

转载 进程初识

进程 我们都知道知道程序是为了完成某种任务而设计的软件,比如OpenOffice是程序。什么是进程呢?进程就是运行中的程序。一个运行着的程序,可能有多个进程。举个例子,如果说程序是一个武林秘籍的话,进程就是它的每一招一式。所以进程就是一个运行的程序。同一个程序可以执行多次,每次都可以在内存中开辟独立的空间来装载,从而产生多个进程。不同的进程还可以拥有各自独立的IO接口。操作系统...

2018-11-23 21:52:04 257

原创 栈和队列相关操作

栈的相关操作:#pragma once typedef int StackTypeData;#define MAX_SIZE 100typedef struct Stack{ StackTypeData array[MAX_SIZE]; int top;//栈的元素个数}Stack;//初始化、销毁//增(只能从栈顶)删(只能删除栈顶)查(只能查看栈顶元素)//个...

2018-11-22 21:27:32 110

原创 动态顺序表相关操作

  #pragma once#include &lt;stdio.h&gt;#include &lt;assert.h&gt;#include &lt;windows.h&gt;#include &lt;stdlib.h&gt;typedef int DataType;#define INIT_CAPACITY 3typedef struct SeqList...

2018-11-22 20:53:00 122

原创 静态顺序表增删查找操作

  #pragma once#include &lt;stdio.h&gt;#include &lt;assert.h&gt;#include &lt;string.h&gt;#include &lt;windows.h&gt;//#ifndef __SeqList_H__//#define __SeqList_H__////#endif //__SeqList_H...

2018-11-22 18:13:46 231

原创 带头循环双向链表的增删查找操作

#pragma once#include &lt;assert.h&gt;#include &lt;stdlib.h&gt;#include &lt;stdio.h&gt;//双向带头循环 链表(如果要改变链表的头指针指向,就要传入二级指针)typedef int DataType;typedef struct DListNode{ DataType data; str...

2018-11-19 20:30:10 178

原创 数据结构面试题oj练习

题      oj 链接:https://leetcode-cn.com/problems/remove-linked-list-elements/description//** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *ne...

2018-11-16 17:34:17 409

原创 单链表的增删查找操作

#pragma once#include &lt;assert.h&gt;#include &lt;stdlib.h&gt;#include &lt;stdio.h&gt;typedef int DataType;typedef struct SLitsNode{ DataType data; struct SLitsNode *next;}SListNode;//初始化...

2018-11-15 23:26:02 251

原创 linux的根目录下各种目录里有什么东西

bin    存放常用命令boot  存放引导相关的文件dev:设备文件etc:存放与配置相关的文件home  普通用户的工作目录lib     系统最基本的动态链接共享库lost+found:系统非正常关机时留下的文件media:存放可移除设备,如:软盘、光盘mnt    默认的挂载软驱和光驱的目录opt:给源码安装软件时选择的安装目录位置proc:...

2018-11-13 22:33:55 707

原创 linux中Access Modify Change的时间意义浅析

首先创建一个文件:mkdir  test接着输入命令:stat test可以看到这样的场景:可以看到上面最下面有三行时间,他们是什么意思呢? 总结:1当仅读取或访问文件时,access time 改变,而modify time ,change time 不会变。2当修改文件内容时,modify time ,change time 会改变,access time...

2018-11-13 21:51:37 297

原创 回调函数浅析

回调函数的使用举例://字符排序#include &lt;stdio.h&gt;#include &lt;windows.h&gt;#include &lt;stdlib.h&gt;int char_cmp(const void *p1, const void *p2){ return (*(char *)p1 &gt; *(char *)p2);}int main...

2018-11-06 22:06:13 186

原创 指针相关笔试题

//笔试1#include &lt;stdio.h&gt;#include &lt;windows.h&gt;int main(){    int a[5] = { 1, 2, 3, 4, 5 };    int *ptr = (int *)(&amp;a + 1);    printf("%d,%d", *(a + 1), *(ptr - 1));    system("p...

2018-11-03 20:19:18 639

原创 函数与数组的相关重点草图

调用函数,就要在栈上开辟空间,那么现在我们来演示一下函数递归在内存中的路线:(函数递归也是自己调用自己的过程) 数组初始化:数组在定义的时候整体初始化【但是不能整体赋值】   数组的一般知识总结:1  数组创建,[ ] 中必须放常量,不能放变量2 数组的初始化,是指创建数组的同时赋给数组一些合理的初始值3 数组在创建的时候如果想不指定数组的确...

2018-10-30 21:13:50 148

原创 C语言之 分支语句与循环语句粗见

今天让我们走进C语言中的两个基本语句的世界中,C语言呢,一共有两大种语句,即分支语句和循环语句,他们的身影几乎遍插整个编程界,是最最基本的语法知识。所以不可小看他们!接下来先看看分支语句:分支语句(选择语句)分支语句又称选择语句,那么先看看语句是什么?语句:以分号(;)结尾的一条命令行代码,例如:int i = 0 ;知道了语句,那么现在我们来看看分支语句分为哪几类:分支语句有...

2018-10-30 19:39:33 546

原创 浮点数的内存存储

今天我们来探讨一下浮点数的内存存存储!先来看一个例子:int main(){ int a = 9; float *p = (float*)&amp;a; printf("%d\n", a);//以有符号十进制整形方式打印 printf("%f\n", *p);//以有符号十进制浮点数(float)方式打印 *p = 9.0; printf("%d\n", a);//以有符...

2018-10-30 16:36:46 549

原创 三字棋游戏的简单实现

三字棋游戏:玩家与电脑对抗,棋盘是3*3的小方格,当任一行或任一列,或者正对角线,或者副对角线棋子个数为三或棋子类型完全一致,则该把棋局就赢了,但是如果棋盘满了有没有赢,则为平局。下面我们就开始我们的程序设计:chess.h 头文件(用于函数的声明)chess.c 源文件(用于函数的定义)main.c  源文件(用于主函数的实现)代码如下:chess.h 头文件(用于函数的声明...

2018-10-30 08:52:53 638

原创 整形数据在内存中的存储

整型数据在内存中的存储,是一个值得细细体会的问题,千万不要把它忽视了!!!下面我们来详细谈一谈:什么是整形?整形有:char     short      int       long       long long  各种整形又分为:signed  (有符号型,没有写 signed 这个关键字的类型默认是有符号类型:例如上一行的类型都是有符号类型)                ...

2018-10-28 22:48:20 5254 1

原创 扫雷游戏的简单实现

扫雷游戏应该在每个电脑上边都带有,是一个很好玩的小游戏,那么今天我们就来实现一下它:首先,我们建一个工程,里面应该包含三个文件:mine.h  (头文件,用于函数的声明)mine.c(源文件,用于函数的定义【实现】)test.c  (源文件,用于游戏开始界面操作)下面让我们来一步一步的实现它:mine.h头文件#ifndef __MINE_H_#define __M...

2018-10-25 08:49:12 355

原创 c 代码练习

2018.10.171. 打印100~200 之间的素数//打印100-200之间的素数(prime number)//素数:只有1和它本身两个因数//也就是从2到他(本身-1)的数,没有可以整除他,则就是素数//打印100-200之间的素数(prime number)//素数:只有1和它本身两个因数//也就是从2到他本身-1的数,没有可以整除他,则就是素数#includ...

2018-10-18 01:36:26 499

原创 C语言基础新印象

今天又从理念上更好的理解了一些C语言的基础知识,不再片面的看待变量、常量等一系列C语言基本概念与语法,接下来我就自己的新感受记下来,以备后面复习学习使用。0 什么是Git,什么是GitHub?今天我大致了解了Git的意思,他是版本管理服务器。举个例子,现实生活中,我们写的实验报告,经常会改动好几次,第一次写的是版本一,第二次写的是版本二,其实版本二是我们在版本一的基础上增加了一些新东西形成...

2018-10-18 01:24:26 300 1

空空如也

空空如也

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

TA关注的人

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