- 博客(56)
- 资源 (4)
- 收藏
- 关注
原创 dynamic_cast浅谈
关于d2为空指针,很多人就问了,这不是转换吗?不能把指针基类的指针转成派生类?当然这是转换,也可以把基类转成派生类的指针。前提是它觉得转换是安全的前提下,如果你的基类指针指向基类,dynamic_cast会判定这个转换为。dynamic_cast是一个很有趣的转换,很多人说带上虚函数就好了,其实还需要打开rtti机制,否则很多情况是编译不过的。只有在Base* b2 = new Derive(),基类指向派生类,dynamic_cast会认为是。,才可以将Base指针转成派生类。
2023-05-26 16:51:18 123
原创 placement new
new(&heap)调用了operator new(size_t size, MyHeap* heap),看到这里,size谁传入的呢?你的代码中的 new(&heap) 会传入 sizeof(int) 作为 size 参数,因为你要构造的对象是 int 类型的。上面代码使用了placement new语法,别的可能都还好,看到new(&heap) int(0),第一次见的人可能微微一愣。我们换一个方式可能就更直观点:new int(0)。那么这里的new(&heap)就可以平替new的意思。
2023-05-25 12:35:32 88
原创 C++三五法则
1.如果定义了析构函数,则必须同时定义或者删除拷贝构造和拷贝赋值。2.如果定义了拷贝构造函数,那么必须定义或者删除拷贝赋值函数,否则会造成低效。3.如果定义了移动构造函数,那么必须定义或者删除移动赋值函数,会出错,删除可导致低效。4.如果定义了拷贝构造或者拷贝赋值,那么必须最好同时定义移动构造或者移动赋值,否则低效。...
2022-05-04 16:08:20 1104
原创 架构设计和技术选型
本文仅给出架构设计时需要考虑的知识点,并不会对具体知识点做详细介绍。一、顶层架构Linux/Windows平台、CS/BS架构、大数据架构、应用领域(游戏、互联网、传统行业等)二、CS中的Client的技术选型1、GUI开发技术(1)微软技术体系MFC、WinForm、WPF、UWP(2)Java技术体系java AWT、java swing、javafx(3)Python技术体系Kivy、PyQt、PyGUI、Libavg、wxPython2、移动端开发技术原生应用:Android
2022-05-03 16:39:34 472
转载 C++学习 | C++ Implement的使用 | 消除 warning C4251 | 精简库接口
在编写C++动态库的过程中,我们常常会听到某个要求:请隐藏动态库头文件里类接口里的成员变量!或者自己在编写动态库时,突然意识到自己好像让调用者看到的信息太多了,而这些信息根本无需被调用者看到,往往调用者只需要接口函数而已,所以给他们接口函数就可以了。暴露动态库头文件类接口里的成员变量有很多坏处: 1、增加头文件更新次数。如果成员变量不被隐藏,则每次修改成员变量都需要给调用者更新头文件。 2、暴露给用户太多信息。编写库的目的一个是方便,另一个就是私密性,让类的实现部分在用户端不可见,如果过多地暴露成
2022-05-02 16:23:51 520
转载 C语言字符串操作总结大全(超详细)
本篇文章是对C语言字符串操作进行了详细的总结分析,需要的朋友参考下1)字符串操作strcpy(p, p1) 复制字符串strncpy(p, p1, n) 复制指定长度字符串strcat(p, p1) 附加字符串strncat(p, p1, n) 附加指定长度字符串strlen§ 取字符串长度strcmp(p, p1) 比较字符串strcasecmp忽略大小写比较字符串strncmp(p, p1, n) 比较指定长度字符串strchr(p, c) 在字符串中查找指定字符strrchr(p
2021-11-02 12:03:36 6168 2
原创 linux安装查询书册
$sudo apt-get install glibc-doc$sudo apt-get install manpages-posix manpages-posix-dev使用man -k pthread或apropos pthread可以查找到当前manpages中关于pthread的手册完成!
2021-09-28 17:24:55 125
原创 计算机组成原理
第一个部分:经过编译、汇编、链接后,我们就得到了一个可执行文件。第二部分:可执行程序经由加载器加载到内存中,再由CPU从内存中读取指令和数据,来开始真正的程序。
2021-09-26 14:25:41 69
原创 技术选型杂谈
选择拥有强大社区支撑的开源技术确保技术前进步伐你需要使用你所选择的软件技术,快速地实现应用程序的构建。记住一句话:好的技术栈永远跑在用户需求前面学会从业务端开始思考先验证,后使用重视经验技术选型是个很需要经验的活,得有大量的信息积累和输入,再根据具体现实情况输出一个结果。我们在选型的时候最忌讳的是临时抱佛脚、用网上收集一些碎片知识来决策,这是非常危险的,我们得确保自己所有思考都是基于以前的事实,还要弄清楚这些事实背后的假设,这都需要让知识内化形成经验。拒绝技术会议驱动开发我们可以通过技术大会学习到最前沿的技
2021-07-30 10:25:23 65
原创 常用变量名命名单词
书到用时方恨少,每逢命名就挠头。不求多么花里胡哨,只求熟能生巧。1. 动词 bind 绑定 resolve 解析,处理 parse 解析 handle 处理 process 处理 display 展示 merge 合并 call 调用 run 调用 refresh 刷新 load 载入,加载,装载 init 初始化 obtain 获取 access 访问,触及 control 控制 r
2021-07-08 15:33:25 848
原创 QT信号槽机制详解
深入理解信号槽(一) http://devbean.blog.51cto.com/448512/417658深入理解信号槽(二) http://devbean.blog.51cto.com/448512/424778深入理解信号槽(三) http://devbean.blog.51cto.com/448512/426999深入理解信号槽(四) http://devbean.blog.51cto.com/448512/428364...
2021-07-05 15:13:52 99 2
原创 C语言开源项目推荐
WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.cz/~cz210552/webbench.htmlTinyhttpdtinyhttpd是一个超轻量型Http Server,使用C语言开发...
2021-06-30 11:09:13 564
原创 C++海量数据处理
问题实例:给你A,B两个文件,各存放50亿条URL,每条URL占用64字节,内存限制是4G,让你找出A,B文件共同的URL。如果是三个乃至n个文件呢?根据这个问题我们来计算下内存的占用,4G=2^32大概是40亿*8大概是340亿,n=50亿,如果按出错率0.01算需要的大概是650亿个bit。现在可用的是340亿,相差并不多,这样可能会使出错率上升些。另外如果这些urlip是一一对应的,就可以转换成ip,则大大简单了。问题实例:1).海量日志数据,提取出某日访问百度次数最多的那个IP。IP的数目还
2021-06-30 10:56:49 452
原创 QT控件汇总(后续慢慢更新)
1.QCheckBox 复选框(CheckBox)控件(包含Text Label)2.QcomboBox 单击按钮,可在弹出的选项中选择一个3.QcommandeLinkButton Windows Vista风格的命令链接按钮4.QtimeEdit 编辑或显示时间的控件5.QdateEdit 编辑或显示日期的控件6.QdateTimeEdit 编辑或显示时间和日期的控件7.Qdial 用于描叙仪表盘样式8.QspinBox 整数旋转框(SpinB
2021-06-29 17:17:35 2194
原创 好书3--android的好书
《深入理解android内核设计思想》《深入理解Android内核设计思想》适用于Android4.3以上的版本。全书从操作系统的基础知识入手,全面剖析进程/线程、内存管理、Binder机制、GUI显示系统、多媒体管理、输入系统等核心技术在Android中的实现原理。书中讲述的知识点大部分来源于工程项目研发,因而具有较强的实用性,希望可以让读者“知其然,更知其所以然”。全书分为编译篇、系统原理篇、应用原理篇、系统工具篇共4篇22章,基本涵盖了参与Android开发所需具备的知识,并通过大量图片与实例来
2021-06-03 17:46:25 155 4
原创 一句话设计模式
1.简单工厂模式(Simple Factory)是由一个工厂对象决定创建出哪一种产品类的实例,是工厂模式家族中最简单实用的模式。2.工厂模式(FactoryMethod)定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。为了遵循扩展开放,修改关闭原则,将简单工厂类转换为工厂方法接口,将其Switch分支分离成子类去继承工厂方法接口类,顺利的将创建对象的过程延迟到子类。3.抽象工厂模式(AbstractFactory)提供一个创建一系列相关或相互依
2021-06-02 14:16:08 51
原创 好书2----高级C/C++编译技术
米兰·斯特瓦诺维奇编著的这本《高级C\C 编译技术》从多个角度全面、系统地讲解多任务操作系统中编译、链接、装载与库的内幕和技术细节,为深入理解和掌握系统底层技术提供详实参考和实践指南。与纯粹讲解理论与技术细节的书不同。本书一方面对基本的理论进行了阐述,另一方面则聚焦于C/C 使用静态库和动态库的一些注意事项,并举例说明如何解决实际的链接与装载问题。此外,本书尽量使用通俗易懂的语言来阐述这些知识,并补充了大量示例,避免让读者整天纠结于枯燥的理论。本书共14章,其中第1章至第4章对多任务操作系统、程序生命周期
2021-06-02 10:39:10 532 1
原创 x86系列CPU里的主要寄存器
寄存器名功能eax(累加寄存器)存储执行运算的数据和运算后的数据ebx(基址寄存器)存储数据内存的起始地址ecx(计数寄存器)计算循环次数edx(数据计数器)存储数据esi(源基址寄存器)存储数据发送源的内存地址edi(目标基址寄存器)存储数据发送目标的内存地址ebp(扩展基址指针寄存器)存储数据存储领域基点的内存地址esp(扩展栈指针寄存器)存储栈中最高位数据的内存地址...
2021-06-02 10:14:37 370
原创 程序运行的总结
我们学习语言,第一步无非是想让程序跑起来,如果能深入形象化的理解程序这个过程,后面设计框架、优化将起到事半功倍的效果。 假设我们自己就是一个计算机,我们如何认识程序?抱歉,我不认识程序,C语言、JAVA、C++、PYTHON??过于复杂了。。我只认识我自己的母语也就是native,这里的母语也就是机器语言。这时候编译器就起了一个重要的作用,把各种语言写的源代码转为了obj(目标文件) 这时候,计算机就认识了。 到这一步,计算机是认识了,但是并不可执行,这时候链接器就随之出现了,它将多个目标...
2021-06-01 15:26:27 161
浏览器如何工作.docx
2020-03-05
Android-Gradle.pdf
2020-01-11
Android Widevine概论.docx
2019-06-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人