自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux基础系统编程——服务器开发

linux基础系统编程——服务器开发linux基础系统编程服务器开发基础教程,含学习使用资源与源代码(黑马编程资源)新手必看 受益匪浅以前刚接触linux时搞的资源,嘘百度网盘:https://pan.baidu.com/s/1fVIMZJna_i1eazcyPTumtg提取码:2jkw...

2020-04-02 09:15:20 230

原创 深入解析ATL PDF——ATL技术原理,让windows开发技术更进一步

《深入解析ATL》高清PDF本书主要介绍了ATL技术的原理、内部实现和应用技巧,由当今4 位顶尖的 Windows技术专家联合撰写。全书内容丰富,深入浅出,主要涵盖了ATL内部架构和实现方法、运用向导简化ATL开发、C++/COM/ATL中字符串的使用技巧、理解并正确实现IUnknown、充分利用ATL提供的Smart Types、撰写能够暴露COM服务器上COM对象的粘合代码、利用Canned...

2020-04-02 09:14:53 663 2

原创 网络安全&运维基础入门资料PDF+学习笔记

网络安全+运维基础入门资料下面是网络基础+运维基础的学习资料+学习笔记希望能帮到想要跨进运维大门的各位百度网盘:https://pan.baidu.com/s/1d7GcSDLjyUINu16BFcVQmA提取码:oe3d...

2020-04-02 09:13:42 3580 6

原创 100开发岗面试题——数据结构&算法&python&java&面试心态~

100开发岗面试题——数据结构&算法&python&java&面试心态成堆的开发岗面试题与面试心态希望各位能get到心仪的offer百度网盘:https://pan.baidu.com/s/1jERZMyYmI-yFXiooIq5bsw提取码:j9g5...

2020-04-02 09:13:04 222

原创 《TCP/IP网络编程》IOCP 完成端口技术

IOCP 完成端口技术完成端口技术,IOCP(complete port)就是系统帮你完成网络IO操作,在客户端极多的情况下,这种模型效率很高。多线程模型下:每个客户端都分配一个线程的话,那么CPU会把大部分时间片都浪费在线程之间的调度上,而不是每个线程中对网络数据的处理上。而I/O重叠模型让CPU的工作更多集中在网络数据的处理而非线程调度。一个很有趣的比喻:IOCP技术相当于...

2020-04-01 23:20:14 416

原创 老生常谈:char*,char[],strncat,strcpy

写项目的时候又被最基础的 char* , char[] , strncat , strcpy卡了一会,太久没碰老是搞混,索性在这里做个笔记:char* ,const char*,const char* const const char* str1 = "abc"; // char* str1="abc"; // 有些编译器允许上面这样子写 const char* const str3 =...

2019-04-26 19:30:03 1602

原创 编写关于服务器的动态链接库时出现报错:错误1:error LNK2019: 无法解析的外部符号 _functionname@12,该符号在函数 _xxxxxx 中被引用

1>------ 已启动生成: 项目: server, 配置: Debug Win32 ------1>正在编译…1>server.cpp1>正在链接…1>server.obj : error LNK2019: 无法解析的外部符号 _functionname@12,该符号在函数 _xxxxxx 中被引用1>server.obj : error LNK20...

2019-01-28 15:04:32 966

原创 Windows网络编程 I/O复用的多人聊天室

代码:https://github.com/ChristmasError/TCP-IP-Network-programming/tree/master/WINDOWS%20IO%E5%A4%8D%E7%94%A8%E5%A4%9A%E4%BA%BA%E8%81%8A%E5%A4%A9%E5%AE%A4%E5%AE%9E%E7%8E%B0请多开几个客户端进行测试。//server#d...

2018-12-10 10:17:53 642 1

原创 《TCP/IP网络编程》第13章 笔记&代码&注释

在之前我们Windows使用了很多次的send()和recv()来进行数据的收发,但我们并未向最后一个参数传递过 0 之外的参数。另外还有许多I/O函数多种I/O函数在Linux中的send() & recv()最后一个参数是为了指定可选项信息,在之前并未向其传递0之外的参数。可传递参数包括以下但不止这些:MSG_OOB 传输带外数据(优先传输) MSG_PEEK...

2018-12-06 17:51:49 185

原创 《TCP/IP网络编程》第12章 笔记&代码&注释

本人常用环境是WINDOWS,因此暂时略读根据书上提示跳过10、11章进行笔记:Windows相较于Linux,多进程服务器并不适用,10~11章重点放在Linux平台。复用在一个通信频道中传递多个数据(信号)的技术。为了提高物理设备的效率,利用最少的物理要素传递最多的数据使用的技术。I/O复用服务器端类比成课堂:1位老师服务多位学生;只有当(客户端)学生举手提问,老师...

2018-12-06 14:34:11 167

原创 《TCP/IP网络编程》第9章 笔记&代码&注释

Windows套接字可选项和I/O缓冲大小实际中我们需要根据特性对套接字进行更改(例如 广播特性),之前我们的程序都是通过默认的套接字特性进行数据通信。//Windows#include<winsock2.h>int getsockopt(SOCKET sock,int level ,int optname, char* optval,int *optlen);//...

2018-12-05 18:09:49 146

原创 《TCP/IP网络编程》第8章 笔记&代码&注释

DNSDNS(Domain Name System 域名系统)DNS是对IP地址和域名进行相互转换的系统,核心为DNS服务器。(IP地址和域名地址:百度为例)IP地址:119.75.217.109域名地址:www.baidu.com在浏览器上访问,进入的都是百度的搜索页面,但是他们访问的接入过程不同。域名是分配给服务器端的虚拟地址,DNS要将这虚拟地址转化为实际地址(I...

2018-12-05 16:52:09 145

原创 《TCP/IP网络编程》第7章 笔记&代码&注释

Linux的close()函数与Windows的closesocket()意味着完全断开连接,这令他无法再收&发数据。为了更加优雅的断开连接:只断收发其中的一个功能,close()和closesockI()就显得不太够用。shutdown()//linux#include<sys/socket.h>int shutdown(int sock,int howto...

2018-12-05 16:17:56 168

原创 《TCP/IP网络编程》第6章 笔记&代码&注释

基于UDP的回声迭代客户端&服务端代码:在Linux和Windows里,recvfrom()和sendto()函数并无太大区别。对比recvfrom() 和 recv(),recvfrom()多了两个参数用来接收对端的地址信息,这对于UDP无连接可以方便的进行回复;send()和sendto()同理。在代码中,服务器端使用sendto()是因为其socket并无与客户端建立...

2018-12-04 21:44:46 164

原创 《TCP/IP网络编程》第5章 笔记&代码&注释

在第四章中的回声迭代客户端中,客户端通过write()一次性将字符串发送过去,之后调用read()等待接受自己传输的字符串,因此这个回声迭代客户端是不完美的。解决方法就是提前确定接受数据的大小://Linuxwhile(1){ //......相同省略 int str_len=write(sock,message,strlen(message)); int ...

2018-12-04 14:00:37 196

原创 《TCP/IP网络编程》第4章 笔记&代码&注释

TCPTCP Transmission Control Protocol 传输控制协议,意为对数据传输过程的控制。TCP/IP 协议栈TCP/IP 协议栈分四层:应用层 TCP层/UDP层 IP层 链路层根据2.的TCP套接字还是UDP套接字收发数据,他们的协议栈各不相同。链路层物理连接领域标准化的结果,是最基本的领域,定义LAN、WAN、MAN等网络标准。IP...

2018-12-03 21:21:22 228

原创 《TCP/IP网络编程》第3章 笔记&代码&注释

IP(网络协议Internet Protocol):为了收发网络数据而给计算机分配的值。端口号:为了区分程序中创建的套接字而分配给套接字的序号。网络地址IPv4 4字节地址族(目前主要使用) IPv6 16字节地址族(为了应对IP地址耗尽而提出的标准,但现在仍未普及)IPv4IPv4标准的4字节地址分为网络地址和主机(计算机)地址,且分为A,B,C,D,E类型,E类为已预约地址...

2018-12-03 19:58:28 181

原创 《TCP/IP网络编程》第2章 笔记&代码&注释

注:本章内容大部分为第一章的服务器与客户端代码的解析与理解,十分重要协议服务器端和客户端为了能进行数据交换,他们必须遵循同一个协议:  创建套接字int socket(int domain, int type, int protocol)//LinuxSocket socket(int domain, int type, int protocol)//Windomain...

2018-12-02 23:42:42 208

原创 《TCP/IP网络编程》第1章 笔记&代码&注释

注释笔记在代码内:服务器://以下均在VS2015 WINDOWS平台编译并运行//在Linux中 头文件为://#incude<sys/socket.h>//以下为服务端代码示例#define _WINSOCK_DEPRECATED_NO_WARNINGS#pragma comment(lib, "ws2_32.lib")#include<stdio.h...

2018-12-02 20:22:36 277

原创 C++ Heap 堆的实现(最小堆&最大堆)

堆 heap堆也叫优先队列,堆是一种特殊的完全二叉树数据结堆分为两种,最大堆,最小堆。最大堆:根节点大于左右两个子节点的完全二叉树最小堆:根节点小于左右两个子节点的完全二叉树堆可以用数组来存储,a[i]处存根节点,a[2 * i]存左子树的根节点 ; a[2 * i + 1]存右子树的根节点。i从1开始!!实现 #pragma once#include<vector&gt...

2018-12-01 10:16:14 3080 1

原创 C++ BST-Binary Search Tree 二叉搜索树的实现

BST 二叉搜索树(binary search tree)二叉搜索树只能为空树,或者是具有下列性质的二叉树若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉排序树树节点//Tree_Node.h#pragma oncestruct TreeNode{ int val; Tr...

2018-11-27 16:08:12 363

原创 C++ GeneralizedTable 广义表的实现

结点////Generalized_node.h#include<iostream>#include<assert.h>enum Nodetype{ HEAD, VALUE, SUB,};struct Generalized_node { Nodetype _type; Generalized_node *_next; union {

2018-11-26 12:58:39 90

原创 C++ RBTree 红黑树的实现

红黑树的性质每个结点不是红色就是黑色根节点是黑色的如果一个根节点是红色的,则它的两个叶子结点是黑色的(没有两个连续的红色结点)对于每个结点,从该结点到其所有后代叶结点的简单路径上,均包含相同数目的黑色结点(每条路径上黑色结点的数量相等)所有叶子结点为黑(与平时不同,这里的叶子结点是指空的叶子结点,即为NULL)红黑树是一种特殊的二叉查找树,这意味着它满足二叉查找树的特征:任意一个节...

2018-11-17 13:45:42 475

原创 C++利用RAII技术让系统为我们管理资源(资源获取即初始化——Resource Acquisition Is Initialization)

RAII技术(资源获取即初始化——Resource Acquisition Is Initialization)编写程序我们经常会使用new或者mallco来向系统申请内存,但我们也会可能忘记使用delete去释放他们,而这种不释放手动申请的资源的后果是十分严重(内存溢出 memory overflow)。这时候RAII技术应运而生。RAII惯用法是在Bjarne Stroustrup的《C+...

2018-11-04 21:38:01 322

原创 C++STL中的hash_map 哈希表

map与hash_mapmap与hash_map都是在C++STL中常用的数据结构。map:存储数据结构是采用红黑树实现,提供了key-value的存储和查找功能,查找速度可达log(n)。hash_map:基于hash_table(哈希表)储存,相对map来说,他的查找速度大大的降低,几乎可以看成是常熟时间;但是代价就是消耗更多的内存(但是在现在内存越来越大的情况下,用内存换时间的选择十分...

2018-10-22 22:11:31 781

原创 C++11 Lambda表达式

Lambda表达式匿名函数有函数体,但没有函数名。匿名函数是很多高级语言都支持的概念,如lisp语言在1958年首先采用匿名函数。正因为如此,C++11也同样引入了lambda函数。在C++11中,你可以在源码中内联一个lambda函数,这就使得创建快速的、一次性的函数变得简单了。相同类似功能我们也可以使用函数对象或者函数指针实现:函数对象能维护状态,但语法开销大,而函数指针语法开销小,...

2018-10-21 00:08:48 2107

原创 C++智能指针:shared_ptr,uniqe_ptr,weak_ptr

动态内存在C++中,动态内存的管理是通过一对运算符来完成的:new和delete。new:在动态内存中为对象分配空间,并返回一个指向该对象的指针delete:接受一个动态对象的指针,销毁该对象,并释放与之关联的内存动态内存的使用需要十分小心,因为要在编程的时候要确保在正确的时间对内存进行释放是极其困难的。如果释放内存不及时,在这种情况下就会出现内存泄漏;但若过早的释放(在仍有指针指向该内存...

2018-10-20 18:02:59 222

原创 C++中const的“就近原则”

在做题的时候,编译时经常会遇到关于const的坑,如果在平时不是常用的话就会很容易忘记,在这里整理一下const的“就近原则”的笔记。指针要理解就近原则首先要明白指针。指针(pointer),可以看作指向(point to)。与引用类似,实现了对其他对象的间接访问。但有两个不同之处:1.指针本身就是一个对象,允许对指针赋值和拷贝,并且指针在周期内可以先后指向几个不同的对象(除非是cons...

2018-10-18 19:15:14 901

原创 《深入了解计算机系统》笔记——优化程序性能

程序性能优化编写高性能程序需要满足:1.选择适当的算法和数据结构2.必须编写出变异其能够有效优化以转化成高效可执行代码的源代码程序优化程序优化的第一步就是消除不必要的工作:例如对同一个内存地址的反复读写我们要尽可能的减少,消除不必要的函数调用、条件测试和内存引用。这些都不依赖目标机器的任何具体属性而属于程序员可控范畴内的代码的改动。为了使性能最大化,程序员和编译器都需要一个目标机器的模...

2018-10-16 19:49:50 2116 2

原创 《深入了解计算机系统》笔记——汇编语言和机器语言

汇编语言和机器语言我们不需要完全了解掌握机器语言、汇编语言来进行编程(这是计算机生产厂家要做的事)。我们所要知道的是如何看懂汇编语言就行了。我们所编写的高级语言,被翻译成汇编语言时,编译器会自动进行一些优化处理。机器语言计算机是不能直接识别我们所编写的C程序或者Java程序的。它只能识别机器语言,而机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指指令系统令的集合。但要用机器语...

2018-10-15 19:50:07 410

原创 《深入理解计算机系统》笔记——信息的表示和处理

信息的存储十六进制表示法字数据大小寻址和字节顺序数据类型字符串的表示代码的表示信息的存储信息是客观事物的反映,是经过处理加工后得出的数据。数据是客观事物的记录。计算机内所有的信息均以二进制的形式表示,也就是由值0和值1组成的序列。大多数计算机使用8位的块(字节),来作为最小的可寻址的存储器单位,而不是在存储器中访问单独的位。("位(bit)“是电子计算机中最小的数据...

2018-10-13 18:30:36 243

原创 《深入理解计算机系统》笔记——计算机系统漫游

1.计算机系统由硬件与软件组成,他们共同工作来运行程序。2.信息的表示#include <stdio.h> int main(){ printf("Hello World\n"); return 0; //c标准规定建议main函数返回值为int} 编写程序时将上面的 Hello World 程序保存在一个 hell

2018-10-13 17:40:34 220 1

原创 归并排序——leetcode144排序链表

题目在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3-

2018-10-10 20:48:02 92

原创 泛型编程学习,编写一个类似STL库中的简易list的迭代器(iterator)

如何编写一个简易的list的迭代器(iterator)

2018-09-27 15:55:16 355

空空如也

空空如也

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

TA关注的人

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