程序语言
文章平均质量分 70
fatever
这个作者很懒,什么都没留下…
展开
-
链接器踩坑
在工作中遇到一次,项目更新一个sdk的后,发现另一个没有改动的sdk提供的功能无法生效了。仔细排查后,发现是因为升级后的sdk包含了与另一个已有sdk同名的库(大概率内部一些接口也是一致的),猜测这里出了问题。遂对链接器的一些实现产生了好奇,做了一个简单的实验,这里记录一下。对链接器的一些疑问从经验看,CMakeLists文件只是简单的使用target_link_libraries之类的接口添加一个project需要链接的库,却没有任何地方指明了更进一步的链接细节,比如某个class A需要到具体.原创 2020-12-09 09:46:44 · 419 阅读 · 0 评论 -
Copy Elision
最近写程序的时候突然意识到了一个(也许大多数人早就意识到的)很常见的问题。我们知道复制一个对象(尤其是复杂的对象/实例)往往需要不小的计算开销(更别提复制一个数组的对象了)。但另一方面,复杂对象(群)的建立往往需要单独写一个函数来处理。那么如何从函数中输出这些对象?原创 2017-08-17 16:14:54 · 1328 阅读 · 0 评论 -
常用编程功能整理
有一些平时编程中经常遇到的,逻辑比较简单实际中也经常被需要的功能,在刚刚成为程序员阶段却因为不知道有什么合适的函数(一般是比较基本的,跟系统连接紧密的函数),成了阻碍进度的大山。所以想在平时做一些整理,等下次要用的时候可以很快回忆起来。按键跳出循环常用的设计一个菜单(即便是命令行下简单的菜单)然后根据指令跳出程序对任何初学者来说也都不难,但有时候,我们希望程序能循环的执行某项功能,只在我需要的时候跳原创 2017-08-03 10:06:40 · 625 阅读 · 0 评论 -
笔试题摘选(选择题部分)
做笔试的时候经常感觉很多基本知识大概都知道,但真做起题来总有些细节不甚了解导致无法确定,所以这里收录一些我容易犯错的题,相当于高中的错题集吧(捂脸)原创 2017-09-03 13:07:18 · 336 阅读 · 0 评论 -
利用template和using构造别名
今天碰巧看到知乎一个问题:如何评价网易校招C++的笔试题?。发现自以为掌握了C++大部分实用基础语法的自己,还不知道template可以这么使用。通过查阅资料C++11 理解 (十五) 之 模板的别名, 模板的别名(1),发现自从C++11后,template配合using可以完全替代,甚至更好地完成typedef的工作。例如我可以这么定义某个类型的指针templatetypena原创 2018-01-05 22:43:48 · 4159 阅读 · 0 评论 -
allocator和容器实例构建过程
看到过几次,但一直对allocator的功能不甚了解。最近在看《Effective STL》的时候,看到里面提到了allocator以及示例代码,决定尝试去理解一下。allocator本质是:在每个新的对象实例被加入到容器中时,容器所作的准备工作。如果你以为新添加对象实例时,容器只需要在insert函数中确认一下空间并new一个对象,那就大错特错了。 以list为例,容器在新添加对象的时候,除了为原创 2018-01-08 21:40:48 · 297 阅读 · 0 评论 -
入职作业总结(2)I/O复用
参考文献:《Unix网络编程》一个输入操作通常包含两个阶段:等待数据准备好。从内核向进程复制数据。Unix下有5种可用的I/O模型:阻塞式I/O;非阻塞式I/O;I/O复用;信号驱动式I/O;异步I/O(POSIX的aio_系列函数);以下例子中,我们把recvfrom函数视为系统调用(以区分进程和内核)。不论它如何实现(在源自Berkeley的内核上是作为系...原创 2018-02-20 14:37:24 · 413 阅读 · 0 评论 -
入职作业总结(3.0)Windows程序开发
看DirectX书的的时候,发现示例代码给出的部分与以往的主函数int main(int argc, char **argv)不同,以为只是给了个函数,主函数得自己写。查阅了资料后发现是孤陋寡闻,原来windows应用程序的入口函数定义本来就比较特别。第一个windows程序代码以及参考链接:Your First Windows Program,这里只是对学习该代码进行的记录笔记。...原创 2018-03-18 20:36:02 · 274 阅读 · 0 评论 -
内存泄漏
内存泄漏一直是编程中不易察觉但可能会造成严重后果的大问题。在c/c++这种没有垃圾回收的语言系统中尤其明显。最近编程中遇到了一些相关的问题,网上没有查到满意的结果,特此整理收集。PS:关于堆内存和栈内存的区别这里就不赘述了,网上有很多,理解起来也很容易。原创 2017-08-02 10:22:39 · 196 阅读 · 0 评论 -
程序的编译、链接
《程序员的自我修养》学习笔记,详解C代码生成二进制码背后的原理原创 2017-07-18 15:27:50 · 199 阅读 · 0 评论 -
数组指针和指针数组的区别
讨论指针数组和数组指针的区别,并从编译器角度理解这些声明定义原创 2017-06-09 15:41:19 · 261 阅读 · 0 评论 -
JAVA学习笔记(异常处理)
关于finally块的运行顺序,在学习阶段不是很明确。查询了一些资料后,大概可以得出以下结论:“finally块是在下级函数向上级调用的函数跳转前(无论是通过return还是throw exception的方式回到调用函数)执行”。原创 2017-05-12 09:20:36 · 309 阅读 · 0 评论 -
JAVA学习笔记(强制类型转换)
主要讨论的是非基本数据类型,即class类型之间的转换。我们知道,子类向父类的转换毫无疑问是可以顺利完成的(因为父类中的成员变量子类一定有)。但有时候为了使用多态性,需要将父类对象的句柄强制转换为子类的对象(强制造型),由于子类的成员可能在父类中没有,这时可能就会出现问题。原创 2017-05-15 10:45:44 · 338 阅读 · 0 评论 -
C++笔记:左值和右值
这两个概念看似简单,其实大部分人很多时候都没有细分他们的差别。最近看到primer书里讨论rvalue reference(右值的引用)时觉得自己应该再回去看看。而事实上左值和右值本身也确实很简单。原创 2017-05-09 14:47:38 · 309 阅读 · 0 评论 -
类模板的继承(转)
模板类的继承包括四种转载 2016-07-26 11:04:34 · 252 阅读 · 0 评论 -
JAVA学习笔记(初级)三
static修饰符与final修饰符Java 程序运行时的内存结构分成:方法区、栈内存、堆内存、本地方法栈几种。原创 2017-04-26 11:36:08 · 266 阅读 · 1 评论 -
Java学习笔记初级(二)-面对对象
什么是类: 在Java中,包是类,接口或其他包的集合。包主要用来将类组织成为组,从而对类进行管理。包能干什么: 包允许使用者将包含类代码的文件组织起来,易于查找和使用适当的类。包不只是包含类和接口,还能够包含其他包,形成层次的包空间。包有助于避免命名冲突。当使用很多类时,确保类和方法名称的唯一性是非常困难的。包能够形成层次命名空间,缩小了名称冲突的范围,易于管理名称。原创 2017-04-11 17:24:46 · 229 阅读 · 0 评论 -
JAVA学习笔记(初级)一
Java三大特性原创 2017-04-11 10:46:17 · 232 阅读 · 0 评论 -
JAVA学习笔记(抽象类和接口)
只给出方法定义而不具体实现的方法被称为抽象方法。abstract 修饰符可以与类和方法一起使用。被修饰的类不能被实例化,被修饰的方法必须在包含此方法的类的子类中被实现。含有抽象方法的类一定是抽象类。Java 可以创建一种称作**接口(interface)**的类,在这个类中,所有的成员方法都是抽象的。原创 2017-05-11 14:52:27 · 189 阅读 · 0 评论