自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

askunix

人生有三恨,一恨鲫鱼有刺,二恨海棠无香,三恨红楼未完! >> askunix00@gmail.com...

原创 计算机类专业毕业设计(课程设计)题目大全

ASP 类计算机专业毕业设计题目 第 1-100 个题目 网络留言薄 客户管理系统 多媒体积件管理库的开发与应用 基于 WEB的多媒体素材管理库的开发与应用 网络教学软件中的教学设计与应用 小型教育网站的开发与建设 基于图像的风景旅游模拟漫游系统 网上报名系统 电脑配件网络购物 房产网站 计算机...

2019-05-15 22:15:26 11943 0

原创 堆排序-C语言实现

描述: 堆排序就是利用堆这种数据结构进行排序的算法,堆排序属于选择排序。 堆是一棵顺序存储的完全二叉树 堆排序的时间复杂度: O(nlogn),属于不稳定排序。 大根堆 小根堆 每个节点的值大于等于孩子节点得堆 每个节点得值小于等于孩子节点得值 ...

2018-06-27 00:49:03 9646 2

原创 【面试题】求连续子数组的最大和(三种解法)

题目描述 给定一个数组 array[1, 4, -5, 9, 8, 3, -6],在这个数字中有多个子数组,子数组和最大的应该是:[9, 8, 3],输出20,再比如数组为[1, -2, 3, 10, -4, 7, 2, -5],和最大的子数组为[3, 10, -4, 7, 2],输出18...

2018-06-26 16:05:03 19406 14

原创 二叉树的层序遍历(两种方法实现)

两种方法实现二叉树的层序遍历 1、说明 二叉树的层序遍历是面试经常会被考察的知识点,甚至要求当场写出实现过程。 层序遍历所要解决的问题很好理解,就是按二叉树从上到下,从左到右依次打印每个节点中存储的数据。如下图: 先序遍历:A → B → D → C 中序遍历:B → ...

2018-06-24 23:51:59 26035 3

原创 MarkDown语法进阶(三)(文字居中、图片处理、插入视频音乐、标准字体)

Markdown编辑器本身是内容写作工具,本身并不支持文字排版,理论上它只是指出哪些内容是表格、哪些内容是标题、哪些是正文图片代码超链。 但是由于markdown需要输出,自带html/css整合,因此需要指定格式时可以通过内嵌html或者内嵌css来实现。 居中: &am...

2018-05-26 14:46:32 40664 8

原创 httpDNS解析过程

httpDNS是基于http协议DNS服务器发送域名解析请求,替代了基于DNS协议向运营商LocalDNS发起解析请求的传统方式,可以避免LocalDNS造成域名劫持和跨网访问问题,解决移动互联网服务中域名解析异常带来的困扰。 服务IP: 考虑到服务IP防攻击之类的安全风险,为保障服务可用性,HT...

2019-12-14 16:37:21 170 0

原创 C++/java设计模式汇总

一、概述 二、创建型 1. 单例(Singleton) 2. 简单工厂(Simple Factory) 3. 工厂方法(Factory Method) 4. 抽象工厂(Abstract Factory) 5. 生成器(Builder) 6. 原型模式(Prototype) 三、行为型 1....

2019-11-09 20:15:39 114 0

原创 Windows_HOOK总结_待完善

DLL创建: DLL使用: 使用WIndows挂钩注入DLL: 安装钩子: HHOOK WINAPI SetWindowsHookEx( \\钩子类型 __in int idHook, \\函数地址,即挂钩类型事件发生时,系统应该调用的函数; __in HOOKPROC l...

2019-10-28 20:12:22 74 0

原创 qt creator中快捷键配置和常用快捷键

快捷键配置: 工具 -> 选项 -> 环境 -> 键盘 常用快捷键: F1 查看帮助 F2 跳转到函数定义(和Ctrl+鼠标左键一样的效果) Shift+F2 声明和定义之间切换 F4 头文件和源文件之间切换...

2019-05-12 16:50:00 414 0

原创 JSON基础

JSON:JavaScript 对象表示法(JavaScript Object Notation)。 JSON 是存储和交换文本信息的语法。类似 XML。 JSON 比 XML 更小、更快,更易解析。 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(Java...

2019-05-12 11:20:24 187 0

原创 APUE学习笔记(第十三章:守护进程)

概念: 守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。...

2018-12-29 16:01:23 218 2

原创 使用setjmp和longjmp函数实现跨函数跳转

setjmp和longjmp函数的跳转有别于goto语句。它是指在栈空间上的跳转。用于函数间跳转时,调用longjum函数以返回到程序的主循环中,而不是从该处理程序返回。 这是一段实例代码: 运行结果: ...

2018-12-20 17:04:50 346 2

原创 APUE学习笔记(第十一章:线程)

1、每个线程在进行事件处理时可以采用同步编程模式,同步编程要比异步编程模式简单得多。 2、有人把多线程的程序设计与多处理器或多核系统联系起来。但是即使程序运行在单处理器上,也能得到多线程编程的模型的好处。 3、处理器的数量并不影响程序结构,所以不管处理器的个数多少,程序都可以通过使用线...

2018-12-19 21:06:36 112 0

原创 APUE学习笔记(第十章:信号)

信号的概念: 信号是软件中断。信号提供一种处理异步事件的方法。 信号被定义为正整数常量,定义在<signal.h>中。 在某个信号出现时,可以告诉内核以三种方式处理:忽略、捕捉、执行系统默认动作。 信号相关的函数: 函数signal void (*signal (int...

2018-12-19 16:29:51 204 0

原创 APUE学习目标

近期正在看APUE,之前对UNP略有了解。并有过简单的编程经验。 看了一周的APUE,文件IO、标准IO、环境变量、进程、信号、等都看完了,并敲了一些习题代码。阅读效果不是很高。所以写一篇文章总结一下原因,并定个阅读目标。 APUE主要是从文件操作、进程间通信的学习。学习Unix核心思想,一切...

2018-12-19 11:13:25 157 0

原创 APUE学习笔记(第八章:进程控制)

引言: 每个进程都有一个非负整型表示的唯一进程。虽然唯一,但是进程ID可以复用。 大多数UNIX系统实现延迟复用算法,使得赋给新建进程的ID不同于最近终止进程所使用的ID。这防止了将新进程认为是使用同一ID的某个已终止的先前进程。 ID为0的进程是调度进程,也称交换进程。该进程是内核的一部分...

2018-12-17 14:48:26 127 0

原创 模拟实现ls-l功能

功能描述: 用unix文件和目录函数遍历一个目录下的所有文件,包括子目录,并分别把信息输出到文件和标准输出上。列举每个文件的权限相关信息,列举每个目录的相关信息。 代码实现: #include <stdio.h> #include<stdlib.h&...

2018-12-13 19:04:46 642 0

原创 Unix下的内存管理

Linux内存管理 程序和内存: 程序是指在硬盘上的可执行文件(硬盘上的文件有:普通文件、目录文件、块特殊文件、字符特殊文件、FIFO、套接字、符号链接)。 当程序被运行时,需要将可执行文件加载到内存,在内存中的可执行文件形成进程(也就是加载到内核中了)。 一个进程文件可以存在多个进程内存。 内...

2018-12-12 15:37:20 327 0

原创 STL中的map和hash_map区别

1、STL的map底层是用红黑树实现的,查找时间复杂度是log(n); 2、STL的hash_map底层是用hash表存储的,查询时间复杂度是O(1); hash_map,首先分配一大片内存,形成许多桶。是利用hash函数,对key进行映射到不同区域进行保存。 其插入过程: 1、得到key...

2018-12-12 10:11:44 406 0

原创 HTTP服务器框架代码分析(三)

HTTP服务器框架分析(一) HTTP服务器框架分析(二) 1、头文件 #define SIZE 1024 typedef struct Request { char first_line[SIZE]; char *method; char *url; char *url...

2018-12-12 10:11:25 215 2

原创 项目:HTTP服务器框架分析(二)

项目:HTTP服务器框架分析(一) 1、什么是HTTP和HTTPS? HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。 安全套接字层超文本传输协议HT...

2018-12-12 10:11:03 149 0

原创 项目:HTTP服务器框架分析(一)

0、项目描述 项目名称:世界时间 基于HTTP服务器框架的世界时间查询器,采用多线程处理多客户端连接请求,具体的还要分析请求是静态请求还是动态请求,静态请求直接返回对应URL目录中的HTML资源,动态请求使用了CGI技术处理具体业务,接收到城市名称后,就从后台MySQL数据库中取该城市与北京时...

2018-12-12 10:10:40 397 0

原创 四种强制类型转换

四种强制类型转换在实际开发中使用场景比较较多,做以下总结: (一)用法:static_cast <类型说明符> (变量或表达式) 它主要有如下几种用法: (1)用于类层次结构中基类和派生类之间指针或引用的转换 进行上行转换(把派生类的指针或引用转换成基类表示)是安全的 ...

2018-12-08 17:14:54 1886 0

原创 Linux - 线程 & 进程和线程的区别

线程特点 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和...

2018-10-23 21:20:46 575 0

原创 MySQL语句

选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field...

2018-10-23 21:18:19 485 0

原创 HTTP服务器设计框架

2018-10-23 21:04:16 276 0

原创 高级I/O总结(二):select、poll、

回顾部分 同步通信 VS 异步通信 同步就是发出一个调用时,在没有得到结果之前,该调用就不返回。调用者会主动等待调用的结果。 异步就是调用者发出调用之后,调用直接返回了,没有结果。后续有了结果,会以状态、信号等方式通知调用者。 阻塞 VS 非阻塞 阻塞就是指调用结果返回之前,当前线程被挂起,直到返...

2018-10-18 22:05:23 119 0

原创 MySQL数据库设计时需要注意哪些问题

1、永远为表设定一个自增主键ID,并尽可能的利用此ID进行构造; 2、尽可能的使用ENUM,比如性别,属相等,因ENUM是保存为tinyint; 3、尽可能的使用not null,除非业务需要使用null; 4、尽量使用短的字符类型; 5、尽量使用固长的字符类型,当表中所有的字段都是固定长度,DB...

2018-10-18 22:04:59 669 0

原创 MySQL数据库事务及其原理

基本概念 MySQL 事务主要用于处理操作量大,复杂度高的数据。 银行转账是经典的解释事务的例子。用户A给用户B转账5000元主要步骤可以概括为如下两步。   第一,账户A账户减去5000元;   第二,账户B账户增加5000元;   这两步要么成功,要么全不成功,否则都会导致数据不一致。这就可以...

2018-10-18 22:04:48 2076 0

原创 STL:vector扩容、销毁、与list和deque的区别

1、vector是怎么扩容的? reserve()是容器预留空间,但并不真正创建元素对象。 resize()是改变容器的大小,并且创建对象。 两个函数的形式是有区别的,reserve函数之后一个参数,即需要预留的容器的空间;resize函数可以有两个参数,第一个参数是容器新的大小,第二个参数是要...

2018-10-18 22:04:36 331 0

原创 迭代器与指针的区别

迭代器与指针的差别: 迭代器: (1)迭代器不是指针,是类模板,表现的像指针。他只是模拟了指针的一些功能,通过重载了指针的一些操作符,->, * ,++, --等封装了指针,是一个“可遍历STL( Standard Template Library)容器内全部或部分元素”的对...

2018-10-18 22:04:18 963 1

原创 数据库索引的优缺点

索引的优缺点 索引的优点: ① 建立索引的列可以保证行的唯一性,生成唯一的rowId ② 建立索引可以有效缩短数据的检索时间 ③ 建立索引可以加快表与表之间的连接 ④ 为用来排序或者是分组的字段添加索引可以加快分组和排序顺序 索引的缺点: ① 创建索引和维护索引需要时间成本,这个成本随着...

2018-10-18 22:03:56 1993 0

原创 fork、vfork、clone的区别

Linux的用户进程不能直接被创建出来,因为不存在这样的API。它只能从某个进程中复制出来,再通过exec这样的API来切换到实际想要运行的程序文件。 复制的API包括三种:fork、clone、vfork。 这三个API的内部实际都是调用一个内核内部函数do_fork,只是填写的参数不同而已。 ...

2018-09-24 12:03:35 207 0

原创 数据库索引

数据库索引:是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。 数据...

2018-09-24 11:42:32 205 0

原创 高级I/O总结(一):基础

重要概念 同步通信 VS 异步通信 概念: (1)同步通信的不足 等待 接口耦合性 网络位置耦合性 可用性耦合性 总结: 耗时 + 耦合度比较高。 (2)异步通信 无等待 面向消息解耦合 位置独立 确保投递 ...

2018-08-31 16:59:54 188 0

原创 【笔试题】大整数相加

本机环境:64位Centos 7.4,vim、gcc编译工具。 假设用户输入的数据保存在数组adda,addb中,如果手工计算,就是从低位到高位依次先加,满十进一,那么有两个问题需要解决。 问题: 1、用数组保存结果,那么结果的长度是多少位? 两个数相加,结果最大也只能比较大的那...

2018-08-29 12:51:46 231 0

原创 散列函数(哈希)

概念 散列的概念属于查找,它不以关键字的比较为基本操作,采用直接寻址技术。在理想情况下,查找的期望时间为O(1)。 hash函数就是把任意长的输入字符串变化成固定长的输出字符串的一种函数。输出字符串的长度称为hash函数的位数。 散列(Hashing)通过散列函数将要检索的项与索引(散列,散...

2018-08-24 12:01:00 8741 0

原创 优先级队列概念(Priority Queue)

概念 ☺优先队列是一种用来维护一组元素构成的结合S的数据结构,其中每个元素都有一个关键字key,元素之间的比较都是通过key来比较的。优先队列包括最大优先队列和最小优先队列,优先队列的应用比较广泛,比如作业系统中的调度程序,当一个作业完成后,需要在所有等待调度的作业中选择一个优先级最高的作业来执...

2018-08-21 23:45:57 2811 0

原创 静态库和动态库的区别

库的作用: 库是共享程序代码的方式,一般分为静态库和动态库。库实现了某些特定的功能模块化。方便分享和使用! 异同点: 2.静态库和动态库有什么特点? - 不同点: 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。 动态库:链接时不复制,程序运行时由系统动...

2018-08-17 00:40:41 376 0

原创 【Huffman】哈夫曼树与哈夫曼编码

基本概念 1、路径和路径长度 在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1。 2、结点的权及带权路径长度 若将树中结点赋给一个有着某种含义的数值,则这个数值称为该结...

2018-08-16 00:53:20 179 0

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