随笔分类 -  C/C++

摘要:在VS中 --> 项目 --> 项目属性 --> C/C++ --> 命令行 添加编译选项 /d1reportSingleClassLayoutB (B是你要查看的类名) 在GCC下测试 vfptr 和 vbptr 会合并,在windows下是分开的 代码一:测试虚标的存在 /// /// @fil 阅读全文
posted @ 2020-05-15 22:48 CTHON 阅读(4147) 评论(0) 推荐(0) 编辑
摘要:讲到高性能IO绕不开Reactor模式,它是大多数IO相关组件如Netty、Redis在使用的IO模式,为什么需要这种模式,它是如何设计来解决高性能并发的呢? 最最原始的网络编程思路就是服务器用一个while循环,不断监听端口是否有新的套接字连接,如果有,那么就调用一个处理函数处理,类似:while 阅读全文
posted @ 2019-03-20 16:07 CTHON 阅读(474) 评论(0) 推荐(0) 编辑
摘要:参考自:https://blog.csdn.net/ac540101928/article/details/52786435 上面链接的方法详细讲解了最短编辑距离算法,但不能处理中文字符。 unicode和utf-8互转:https://www.cnblogs.com/cthon/p/9297232 阅读全文
posted @ 2018-07-12 11:45 CTHON 阅读(1608) 评论(0) 推荐(0) 编辑
摘要:函数调用过程解析 func里的a存储在调用fun函数时开辟的栈空间里,这块栈只在调用func时对func可用,调用结束后返回的a,其实是暂存在寄存器里的(一般情况下是eax),而返回到main里时,main又会把返回的值拷贝到自己所有的栈空间里(在这里是以临时变量的形式)。所以不管是func还是ma 阅读全文
posted @ 2018-06-13 10:56 CTHON 阅读(1240) 评论(0) 推荐(0) 编辑
摘要:先来说说C和C++中结构体的不同 a) C语言中的结构体不能为空,否则会报错 1>d:\myproject\visual studio 2013\projects\myc++\main.c(71): error C2016: C 要求一个结构或联合至少有一个成员 b) C语言中的结构体只涉及到数据结 阅读全文
posted @ 2018-06-11 23:31 CTHON 阅读(9663) 评论(1) 推荐(0) 编辑
摘要:1、const基础知识(用法、含义、好处) const在 * 左边,变量为const; const在 * 右边,指针为const. int func1(const) 初级理解:const是定义常量==》const意味着只读 const好处 //合理的利用const 1、指针做函数参数,可以有效的提高 阅读全文
posted @ 2018-06-11 13:50 CTHON 阅读(4203) 评论(0) 推荐(2) 编辑
摘要:一、namespace命名空间 1.C++命名空间基本常识所谓namespace,是指标识符的各种可见范围。c++标准程序库中的所有标识符都被定义与一个名为std的namespace中。 1.1:<iostream>和<iostream.h>格式不一样,前者没有后缀,实际上,在你的编译器includ 阅读全文
posted @ 2018-06-11 11:05 CTHON 阅读(313) 评论(0) 推荐(0) 编辑
摘要:1. 引入inline关键字的原因 在c/c++中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了inline修饰符,表示为内联函数。 栈空间就是指放置程序的局部数据(也就是函数内数据)的内存空间。 在系统下,栈空间是有限的,假如频繁大量的使用就会造成因栈空间不足而导致程序 阅读全文
posted @ 2018-06-07 19:42 CTHON 阅读(8894) 评论(0) 推荐(2) 编辑
摘要:动态变量和静态变量的区别: 1、存储位置 动态变量:存储在内存出栈数据区 静态变量:存储在全局数据区(静态数据区) 2、生命期 动态变量:根据你定义的位置确定,比如你在一个函数中定义的,那么超出该函数范围变量将失效 静态变量:程序结束时才释放 3、作用域 动态变量:同样的要根据你定义的位置才能确定, 阅读全文
posted @ 2018-06-06 20:06 CTHON 阅读(5670) 评论(0) 推荐(0) 编辑
摘要:fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式); 其中, “文件指针名”必须是被说明为FILE 类型的指针变量; “文件名”是被打开文件的文件名; “使用文件方式”是指文件的类型和操作要求。 “文件名”是字符串常量或字符串数组。 例如: FILE *fp; fp=("file a","r"); 其意义是在当前目录下打开文件... 阅读全文
posted @ 2018-06-02 15:46 CTHON 阅读(988) 评论(0) 推荐(0) 编辑
摘要:open函数相关的: /* open 是系统调用 返回的是文件句柄*/ fopen函数相关的: /* open是ANSIC标准中的C语言库函数,在不同的系统中应该调用不同的内核api */ 函数说明:fileno()用来取得参数stream 指定的文件流所使用的文件描述词. 实例: 阅读全文
posted @ 2018-06-02 15:37 CTHON 阅读(10774) 评论(0) 推荐(1) 编辑
摘要:功能: 1、删除目录 2、删除文件 3、删除不为空的目录即下属文件 阅读全文
posted @ 2018-06-02 13:37 CTHON 阅读(913) 评论(0) 推荐(0) 编辑
摘要:一、适用场景 首先,必须明确一点,线程池不是万能的,它有其特定的使用场景。使用线程池是为了减小线程本身的开销对应用性能所产生的影响,但是其 前提是线程本身创建、销毁的开销和线程执行任务的开销相比是不可忽略的 。如果线程本身创建、销毁的开销对应用程序的性能可以忽略不计,那么使用/不使用线程池对程序的性 阅读全文
posted @ 2018-05-27 19:23 CTHON 阅读(1907) 评论(0) 推荐(0) 编辑
摘要:题外话: 推荐一个 github 上的 开源书籍,有各种语言版本的,建议看 英文版 ,当然也有 中文版 非常之棒!! 一、算法基础系列 数据结构基础(C语言版)》朱仲涛 译 《剑指Offer》 《编程之美》 《编程珠玑》 《CareerCup-Top 150 Questions 4th》 《[算法导 阅读全文
posted @ 2018-05-25 20:59 CTHON 阅读(886) 评论(0) 推荐(1) 编辑
摘要:转载自:https://blog.csdn.net/lianghe_work/article 一、网络应用层编程 1、Linux网络编程01——网络协议入门 2、Linux网络编程02——无连接和面向连接的区别 3、Linux网络编程03——字节序和地址转换 4、Linux网络编程04——套接字 5 阅读全文
posted @ 2018-05-25 20:35 CTHON 阅读(6873) 评论(0) 推荐(3) 编辑
摘要:头文件head.h main.c 学习版:https://www.cnblogs.com/cthon/p/9085026.html 通用版代码:https://www.cnblogs.com/cthon/p/9097007.html 难度升级版代码:https://www.cnblogs.com/c 阅读全文
posted @ 2018-05-24 22:48 CTHON 阅读(501) 评论(0) 推荐(0) 编辑
摘要:池 由于服务器的硬件资源“充裕”,那么提高服务器性能的一个很直接的方法就是以空间换时间,即“浪费”服务器的硬件资源,以换取其运行效率。这就是池的概念。 池是一组资源的集合,这组资源在服务器启动之初就被创建并初始化,这称为静态资源分配。 当服务器进入正式运行阶段,即开始处理客户请求的时候,如果它需要相 阅读全文
posted @ 2018-05-24 20:47 CTHON 阅读(701) 评论(0) 推荐(0) 编辑
摘要:条件变量 条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。 1. 创建和注销 条件变量和互斥锁一样,都有静态动态两种创建方式, 静态 阅读全文
posted @ 2018-05-24 19:27 CTHON 阅读(15619) 评论(0) 推荐(1) 编辑
摘要:1、同步异步,阻塞非阻塞区别联系 实际上同步与异步是针对应用程序与内核的交互而言的。同步过程中进程触发IO操作并等待(也就是我们说的阻塞)或者轮询的去查看IO操作(也就是我们说的非阻塞)是否完成。 异步过程中进程触发IO操作以后,直接返回,做自己的事情,IO交给内核来处理,完成后内核通知进程IO完成 阅读全文
posted @ 2018-05-24 15:40 CTHON 阅读(7287) 评论(0) 推荐(1) 编辑
摘要:首先说明线程中要回收哪些资源,理解清楚了这点之后在思考资源回收的问题。 1、子线程创建时从父线程copy出来的栈内存; 线程退出有多种方式,如return,pthread_exit,pthread_cancel等;线程分为可结合的(joinable)和 分离的(detached)两种,如果没有在创建 阅读全文
posted @ 2018-05-23 17:34 CTHON 阅读(23056) 评论(0) 推荐(0) 编辑