
C和C++
Q_FeifEIyU
你努力的时候 整个世界都在为你让路
展开
-
数据存储模型
写点什么东西呢之前大学毕设搞了个高并发模型,里面使用到了select模型,里面用到了一个内存池,支持多客户端连接、登录、消息发送,现在工作经验三年多了,开发经验积累了不少,但是对喜爱的C++的一些知识有一些遗忘,想把之前的东西都捡起来。刚好最近新买了一台14700KF的主机,纯用来打游戏些许有点小浪费,琢磨捣鼓捣鼓,把在新公司学到了一些小东西加进去,也可以应用到我的高并发服务模型里面,好不好用再说,先得动手,开搞开搞。原创 2023-11-19 17:25:31 · 195 阅读 · 0 评论 -
关于云服务器程序端口问题
##这两天在阿里云的CentOS 7上写了个TCP服务器,在Windows客户端进行访问出现了一些问题,解决方案 1.云服务器端口问题 首先需要配置安全规则登录服务器实例->打开实例列表->找到对应实例->更多->网络和安全组->安全组配置->配置规则->添加安全组规则---具体操作百度搜索 使用Xshell连接云服务器 查看防火墙状态:systemct...原创 2020-02-27 15:06:40 · 486 阅读 · 0 评论 -
使用cout在命令行输出彩色字体
##昨天晚上写高并发服务器时,因为服务端需要响应多个客户,想在服务端向已连接的所有客户发送一条新人到来消息,但是客户端同样需要打印一些日志,跟需要确认的消息混合在一起,很难鉴别出来,在网上搜索如何printf打印彩色字体…但是很不幸的是因为看不懂,所以放弃了,所幸C++中有个函数SetConsoleTextAttribute(参数表) 可以将命令行窗口的输出全部换色。 SetConsoleText...转载 2020-02-25 13:14:42 · 2986 阅读 · 3 评论 -
C语言实现弹跳球、扫雷
弹跳小游戏 //弹跳小球小游戏: #include <stdio.h> #include <stdlib.h> #include <windows.h> int main() { int i, j; int x = 0; int y = 10; int velocity_x = 1; int velocity_y = 1; ...原创 2018-12-18 15:50:59 · 238 阅读 · 0 评论 -
二维数组传参
今天碰到一个 二维数组---矩阵 传参的问题,代码如下: void Print(int (*map)[8]) { // 形参声明为指向数组的指针 for (int row = 0; row < 8; ++row) { for (int col = 0; col < 8; ++col) { printf(" %d ", map[row][col]); } pri...原创 2019-03-16 13:52:12 · 1180 阅读 · 0 评论 -
Lambda表达式
在STL中,往往会使用到函数对象(仿函数—即对operator()的重载),因此需要编写好多函数对象类,有的函数对象类只需要定义一个对象,并且只使用一次,造成浪费。为了解决这个问题,Lambda表达式横空出世! 1.Lambda 格式 Lambda 表达式的定义形式如下: [外部变量访问方式说明符] (参数表) -> 返回值类型 { 语句块 } “外部变量访问方式说明符”可以是=...原创 2020-02-21 21:42:21 · 248 阅读 · 0 评论 -
C++里的四种强制类型转换
C语言里将类型符号作为强制类型转换运算符的做法在C++中得到了兼容,但是C++中引入了四种功能不同的强制类型转换运算符:static_cast、reinterpret_cast、const_cast、dynamic_cast 1.为什么要新增四种强制类型转换? 强制类型转换具有一定风险,如:把整型转换为指针类型、将基类指针转换为派生类指针、将一种函数指针转换为另一种函数指针,将常量指针转换为非常量...原创 2020-02-20 20:22:28 · 481 阅读 · 0 评论 -
malloc 堆分配算法探析
提到 C 语言不能不说内存管理,而内存管理则必须了解 malloc,今天深度学习了 malloc 的堆分配算法原理,笔记整理如下 什么是堆分配算法? 程序向操作系统申请一块适当大小的堆空间,然后由程序自己管理这块空间,而具体来讲,管理着堆空间分配的是运行库------也就是封装起来的 malloc 函数。运行库相当于向操作系统“批发”了一块较大的堆空间,然后“零售”给程序使用,当全部“售完”或程序...原创 2020-01-29 13:41:21 · 1453 阅读 · 0 评论 -
继承基础及各种继承体系下的派生对象模型
继承 1、继承基础 概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,在保持原有类特性的基础上进行扩展,增加功能,产生新的类,称派生类。 继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。 格式 class Student : public/prot...原创 2019-07-20 20:57:05 · 339 阅读 · 0 评论 -
指针小解
定义一个只有两个元素的数组a[2] = { 5,3 }; 指针变量p取第一个元素 5 地址 猜想:定义一个指针变量q=p+1,指针变量p加1后 即指向第二块地址,即第二个元素 3 的地址 【即:int* q = p+1;】 int main() { int a[2] = { 5,3 }; int* p = &a[0]; int* q = p + 1; printf("...原创 2018-12-08 20:20:35 · 471 阅读 · 0 评论 -
《C陷阱与缺陷》 ----读书笔记
1.词法陷阱: 1): C语言中 ‘=’ 被作为一种操作符对待,为了防止 ‘==’ 被写成 ‘=’,判断相等的时候采用( (x=y) != 0 ) ; 编译器将程序分解成符号的方法是:从左往右一个一个字符地读入,如果该字符可能组成一个符号,那么读入下一个字符,判断已经读入的两个字符组成的字符串是否可能是一个符号的组成部分;如果可能,继续读入下一个字符,重复上述判断...原创 2019-03-11 16:30:21 · 202 阅读 · 0 评论 -
C 学习总结
操作符和表达式 1):移位操作符 移位操作是简单地把一个二进制数的位向左或向右移动 特殊的右移: a.逻辑移位:左边移入的位用 0 填充 b.算术移位:由符号位决定,正数补0、负数补1 例如:10010110 右移两位,逻辑移位结果 00100101,算术移位结果 11100101 标准说明:无符号执行的所有移位操作都是逻辑...原创 2019-03-13 16:24:40 · 257 阅读 · 0 评论 -
指针和下标
指针有时比下标更有效率,前提是它们被正确的使用 下面举一个函数的例子,它的功能是把一个数组的内容复制到另一个数组 #define SIZE 50 int x[SIZE]; int y[SIZE]; int i; int *p1, *p2; 1、下标版本 // 下标版本 void try1() { for (i = 0; i < SIZE; i++) { x[i] =...原创 2019-03-17 14:46:00 · 1592 阅读 · 0 评论 -
动态链接和静态链接
动态链接和静态链接 什么是库文件? 为了防止相同功能的程序每次都要进行编译耗费时间,因此对这些调用函数接口进行编译汇编生成一个二进制文件 <gcc默认使用动态链接库> 什么是静态链接? 静态链接:静态库在编译时期将库文件中的调用函数代码链接到目标程序中,因此程序运行时不再需要该库存在 ...原创 2019-05-16 22:31:23 · 251 阅读 · 0 评论