自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)

原创 windows 消息机制

windows 操作系统是由事件驱动的 也叫消息机制 一般来说分为四步用户动作也就是事件 ->windows 将事件翻译成消息->将消息放入消息队列->消息循环从消息队列中取出消息并发送给窗口处理程序我们来看一下窗口最简单窗口的过程创建一个窗口必须先注册这个窗口的窗口类RegisterClass(&wndclass);每一个窗口程序都有一个类名和标题名是不变这...

2019-04-27 12:31:38 123 2

原创 冒泡排序,选择排序插入排序的本质分析

排序算法问题 冒泡排序 选择排序 插入排序分析排序算法是十大经典算法之一,对于一些初学者可能没那么容易真正的理解本质 希望我的贴子可以给各位一点帮助冒泡排序算法 我们将序列分为 有序区和无序区冒泡排序他是通过将相邻的数不断的比较 然后将较大或较小的数往后移位 实现排序的目的 有n个无序的数 冒泡排序的每一轮执行完后有序区的元素个数都加1对于n个数需要n-1...

2019-04-21 23:29:51 274

原创 网络基础

每个TCP套接字在被创建的时候内核都会给该套接字创建一个输入缓冲和一个输出缓存,不同的操作系统输入缓存和输出缓存的大小都是不同的,通过getsockopt函数可以获取输入输出缓存的大小,通过setsockopt函数也可以设置输入输出缓存的大小,但是有最大值和最小值,TCP首部中的窗口字段占16bit,切勿混淆,TCP的发送窗口和接受窗口与发送缓冲与接受缓冲有关系,发送窗口可以说是至于发送缓...

2019-12-06 14:17:52 33

原创 从内网访问Internet网站的过程

从内外访问外网的过程:首先我们的明白每个地方使用了那些协议,协议的功能是什么?了解了这些我们就能明白每一步需要做什么,首先我们输入进入一个网站需要输入网址,再互联网上通信我们都知道需要源IP地址和目地IP地址,而没说需要域名,每个域名就对应着一个IP地址,但是我们如何知道这个IP地址?如果不知道目地IP地址就无法通信。试想一个如果每个主机里保存一个DNS表,全世界有这么多域名,造成的...

2019-10-27 13:42:22 325

原创 FindNextFile函数发送异常0x77716005 (ntdll.dll)处(位于 Project34.exe 中)引发的异常: 0xC0000005: 写入位置 0xCCCCCCEC 时发生访

0x77716005 (ntdll.dll)处(位于 Project34.exe 中)引发的异常: 0xC0000005: 写入位置 0xCCCCCCEC 时发生访问冲突。 如果使用FindNextFile函数报这样的异常 ,不用想使FindNextFile函数的第一个参数HANDLE 类型的句柄出了问题 如果是在遍历文件是就是FindFirstFile的返回值出了问题...

2019-09-11 22:45:19 1890

原创 8086的中断机制

8086在内存中00000H-003FFH这 1024个存储单元存放的是中断向量表,由256个表项被称为中断向量,所谓中断向量就是中断处理程序的入口地址,每个中断向量占4个字节,这是由原因的,8086的寄存器段地址和偏移地址都是16位的所有中断处理程序的入口地址需要4个字节存放。 中断向量表不是说真的就是一张表,它只是内存的一段区域,并且只存放中断处理程序的入口地址。提到了中断还...

2019-09-10 17:11:32 559

原创 Win32菜单

上一章我们将了Win32里面的一些最常用的重要消息,本章讲述的是菜单很多学到这里的人肯定都知道了菜单有什么用,每一个菜单项可能都由一个功能,我们在开发软件时,肯定得在一个窗体中添加一些菜单和按钮并加上标题,用户才知道时干什么的,而且我们在每一个菜单项里如果要让它在用户的操作时,我们就得在回调函数里加上对应消息处理菜单又分为三类 系统菜单 ,顶层菜单,弹出式菜单注意(菜单时不具备功能 ...

2019-09-06 22:59:08 77

原创 消息机制之重要消息

上一节我们讲了Windows是由事件驱动的,任何事件都会被封装成消息,并保存在系统创建的MSG结构里typddef struct tagMSG{HWND hWnd; 窗口句柄UINT Message; 消息的idWPARAM wParam; 消息的附加信息LPARAM lParam; 消息的附加信息DWORD time...

2019-08-29 23:17:54 29

原创 8086CPU段地址*16+偏移地址的寻址方式

8086CPU的设计者设计之初地址总线有20根,支持的寻址范围应当是1M,但是8086寄存器都是16位的8086CPU可以说是16位的,寻址范围64K,设计者为了更合理的使用地址总线的,采用段地址16+偏移地址=物理地址的思想,引进了 四个段寄存器 CS,SS,ES,DS和四个偏移地址寄存器 BX,BP,SI,DI 都是16位寄存器用一个16位寄存器是无法让寻址范围到达1M的,引入了 段寄...

2019-08-04 21:46:53 340

原创 统计字符串中单词数

统计字符串中单词数,我们先限定这里我们对单词的定义, 一段包含字母或数字或其他符号的序列,可以是一个 。 知道了单词的定义接下来,我们需要找到关键,什么条件必定存在单词? 1:空格前一个字符非空格 :可以构成单词 2:空格后一个字符非空格 :肯定存在一个单词 3:从单词序列着手单词序列不为空格切长度大于1 :存在单词这三种条件从每一种着可以写出一种...

2019-07-23 11:57:37 79

原创 二分查找的递归和非递归

二分查找是一种要求数组元素在又序情况下的一种查找算法,平均时间复杂为log(n) 因为数据元素都是有序的,每次比较都可以排除一半的元素 用递归和非递归都可以很好的实现,其实这里的递归和非递归没什么区别 ...

2019-07-15 14:25:39 115

原创 内存分区

内存对于很多人来说都会有一中,感觉很抽象有种很虚拟的感觉,内存是实体,是由很多内存条构成,我们知道有每8个晶体管称为一个存储单元(一个字节),内存也划分了很多分区,而存储在不同区域的变量有不同的特性,如存储在栈中的我们必须给初始化在程序中我们应该看到的不是变量,而是内存,变量名只是一个标识符,我们通过它操作内存每一个变量都是有一个地址,在内存中占据一段内存,而变量名是这段内存的(标识),我们...

2019-06-27 16:08:07 48

原创 值传递与地址传递的理解

相信很多c语言的初学者在刚刚面对指针时的窘迫,确实指针是c语言的精华,从开始时强记指针就是地址,到现在的,我认为如果计算机中的数据看作均看作对象,指针就用来指引着这些对象,通过指针可以用来对这些对象进行修改。值传递和地址传递是一个非常容易犯错的地方,给大家带来一个#include<stdio.h>int fun(int a,int *b){a=100;*b=200;prin...

2019-06-26 02:39:35 250

原创 结构体变量和结构体指针的区别,

学了结构体很久了,以为自己能够很熟练了,今天发现自己今天成员运算符 (.) 和指向运算符(->) 之间竟然犹豫了其实成员运算符是结构体变量访问成员是用的。而指向运算符则是结构体指针访问成员时使用的,因为一直都是再用结构体指针,突然用结构体变量,使用了指向运算符,看了半天才看出来,当然结构体指针也可以使用成员运算符但需要先取值,但一般没人这么用,我一直是这样认为 你对基础的掌握程度,决定...

2019-06-23 13:11:44 3678

原创 数字矩阵

数字矩阵 输出N*N的数字旋转方阵 首先我们先定义一个二位数组 int a [N][N];我们很明显的能够看出规律,最外层 依次从1~20 第二层依次从21 ~32 第三层从 33 ~ 到36,如何程序描述这个呢?首先我们把问题拆分一下先实现最外层 ,,每一层都有四个条边组成,而且相邻两个边(导致有一个点重合)所以我,我们让第一层每 每条边赋值N-1个点 最外层实际有...

2019-06-22 14:05:37 311

原创 完全数 c语言实现

完全数是指 如 6=1+2+3 28=1+2+4+7+14 这样的该数的各个因数(不包含本身的)之和刚好等于本身的数 ,为完全数所以在程序设计是我们得首先想到的是肯定要求解出一个数的所有因数 并判断是否等于本身,就解决了,是不是感觉很简单?把你的问题写下来,问题就解决了一半,如何求解该数的因数,求因数,首先得有因数把?所以判断因数取余就可以了我们用算法语言描述一下上述这个过程...

2019-06-22 13:12:34 1134

原创 斐波那契数列 迭代递归

斐波那契数列是一串 1 1 2 3 5 8 …F(n)= F(n-1)+F(n-2) (n>2) F(n)=1;(n=1||n=2)我们就简单的讨论一下的斐波那契数列 ,在初学者这里 递归可能比较难以理解这里我们用三种 方法 带大家 了解一下1:递归 当然递归的本质其实也是一循环 ,递归也都是在栈中也实现的,栈具有先进后出的如果想要真正的了解递归是必须...

2019-06-21 19:51:48 249

原创 C语言验证歌德巴赫猜想再20000内成立

歌德巴赫猜想是世界三大难题之一,知道现在还是无解,世界三大难题都是类似这种看是平淡,实际蕴含的奥义无比的深刻歌德巴赫猜想 任何不小于四的偶数都可以分解成二个质数之和我们运用一种叫厄拉多塞法 赛选出n以内的素数 从4开始依次找到所有小于n的偶数 对于每一个偶数 证明都有两个质数小于它对于每一个偶数我们找出它所有质数,比较即可,穷举法的思维吧,如果n的值过大 可再堆里开辟内存...

2019-06-14 19:45:37 185

原创 1 11 21 1211 111221 312211 序列 c语言实现

111211211111221312211实现这个序列 我们不难发现规律, 但是肯定有的同志不知道如何着手,跟着我的思路带大家一起来看一下。这个序列具有规律 ,我们得从初值着手 将初值保存再字符数组里算法着东西还是只可意会不可言传 希望可以给大家带来帮助#include<stdio.h>int main(){int n;scanf("%d",&am...

2019-06-14 18:41:07 498

原创 查找字符串中每个单词的个数出现的次数

查找字符串中每个单词的个数出现的次数 看到题目的第一感觉给人时比较复杂涉及到的子算法比较多 ,写这个算法的木的是给大家看看 我们现在学到算法可能就是以后一些复杂功能的一小部分我们先把这个算法的大概了解一下1:我们首先统计出 该字符串单词的个数2:统计了单词的个数 保存再链表里(每个节点保存一个单词)3:再删除重复的单词 在计数 就可以得出每个单词出现的次数 然...

2019-06-07 15:33:28 1182

原创 链表删除重复元素

链表删除重复元素 删除重复的元素我们可以知道头节点是不会改变的我们需要 链表每一个位置的元素和后面所有元素相比较 若相等则删除后面的元素 链表删除元素需要找到删除节点的前一个节点 所以我们会加一个变量s记录要删除节点的前一个节点 希望可以让读者学到更多void deleList(List p,int val){//删除链表的重复元素List r=p;whi...

2019-06-07 14:33:07 251 1

原创 链表删除指定元素算法

链表删除指定元素算法我们只需要分情况理清楚就很简单在算法分析的时候记清楚自己的思路是最重要的只要链表里有一个元素与给定的元素不相同 第一次与给定元素不相同的节点就为头节点1:改变头节点2:不改变头节点List deleList(List p,int val){List r=p;List head=NULL;while(r ){-------if(r->data==val...

2019-06-07 14:23:22 872

原创 页面调度算法

我操作系统是如此伟大 令人敬佩的 在这里就不讲理论就只讲如何实现算法OPT 最佳置换算法最佳置换算法 是一理论上的算法 ,不可能是实现 选择淘汰的页面是后面长时间不在被访问的页面,或永久不使用的页面:该算法一般作为模板 评价其他算法的效率先进先去的页面置换算法(FIFO)该算法要求(在块装满时)我们首先淘汰 最先进来入内存的页面需要注意几个点 1:每一个进来的页面 ...

2019-05-31 14:26:52 1225

原创 快速排序的原理

快速排序是一种非常高效的排序算法,可以说比归并排序还有优秀点,快速排序的优点是在原地进行的,时间复杂度为O(nlog n)快速排序的是将要排序的部分成两部分比如我们找一个元素核心的代码为int swap(int a[],int s,int t){int i=s,j=t;while(i<j){while(i<j&&a[i]<=a[j]) j–;if(...

2019-05-26 21:19:07 151

空空如也

空空如也

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