简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
之前一直使用Parallels Desktop,今天想装一下最新的Ubuntu18,总是出问题。于是尝试了下VirtualBox5这款开源的虚拟机软件,挺好用,比之前Parallels Desktop占用的资源少了很多。配置共享目录点击菜单栏中的 Devices->Shared Folders->Shared Folders Settings… , 配一
C++编译后最终也是生成了机器码,不需要任何解释器或虚拟机来运行。相比C语言,C++有了类class大大的方便了代码结构的组织,使得构建大程序简便了很多。实例化一个类后,类的成员方法就可以访问这个类的成员了,那么从汇编角度看,到底是如何实现的呢?原理也十分简单,类所有成员本质上就是一个结构体,每个类的方法第一个入参就是把这个结构体的地址穿进去,类的方法就是这样实现了访问类的成员。
编译原理学习笔记(一)体系结构编译原理关键知识点词法分析:正则表达式、自动机DFA/NFA语法分析:BNF范式、抽象语法树、递归下降Parsing语义分析:属性文法、类型检查、符号表、作用域、中间代码生成代码优化:现代编译器常用的优化方法及其原理汇编指令:堆栈式虚拟机的原理与实现编译原理学习资料编译原理与实践编译原理与实践课后习题答案Stanford cs143 Compilers
对于大型Linux C/C++程序,内存越界和野指针类问题往往比较难定位。有的由于内存被非法改写造成了业务功能问题,有的则直接导致了程序crash,而且还经常不是第一现场。针对这种问题,可以采取的解决方法有:利用valgrind工具来排查,会影响程序性能;使用Address Sanitizer工具排查;如果是固定的内存被破坏,可以利用gdb watch来抓取第一现场的调用栈;可以利用G...
vector 可变数组,内存空间是连续的,容量不会进行缩减。支持高效随机存取,即支持[]和at()操作。尾部插入删除效率高,其他位置插删效率较低;list双向链表,内存空间可不连续,不支持随机存取。插入和删除的效率很高;deque双端队列,内存空间是多个连续的内存块,在一个映射结构中保存对这些块以及顺序的跟踪,可利用的内存更大,且内存大小是可以自动缩减的。支持随机存取,但是随机存取性能没有vect
2018年最后一天,总结一下今年的工作感想。先回顾下前两年的总结:Linux C/C++ 程序员毕业工作两年多来的感想Linux C/C++ 程序员毕业工作一年多来的感想2018年以来我也写了几篇心得感想:提高编程速度的一些个人经验程序员工作后如何有效的学习理论不扎实,编程不会有自己的想法...
Shell 脚本规模大了总会比较难维护,但是很多时候又得必须用。适当的拆分文件的方法挺好,Shell脚本没有include或者import机制,查了资料就是用source命令来解决。一个小例子:test.sh#!/bin/bashsource add.shadd 1 2add.sh#!/bin/bashecho "this is $0"add() {echo $...
x86架构下,函数执行借助于 hardware stack。为了不同模块函数能在runtime时可以互相调用,程序必须遵守共同的的Calling Convention,这也是ABI的一部分。推荐两本参考资料:x86 Assembly GuideComputer Systems: A Programmer’s Perspective从汇编看,完成一个函数调用关键执行就是 call, pushd,
Linux 多线程 pthread库用法(一)Linux 多线程编程基介绍Linux 线程有时候也叫 Light Weight Process LWP 轻量级线程,是进程的一个执行流,有自己的执行栈,是操作系统调度的最小单位。 多线程优势在于切换开销小,同进程内通信方便,涉及IO等阻塞性操作时可以单独开一个线程不阻塞主流程,不足之处健壮性不如多进程,一个线程crash,那么所在进程就都...
在C语言程序中,一般不会直接传一个结构体给一个函数,也不会让函数的返回值直接返回一个结构体,这样会拷贝过多影响效率。但是这样也是合法的,有时候也会使用,并且有时候效率也并不会变得太差。C函数传参:参数少或者传入的结构体小只借助寄存器即可,否则借助栈。C函数返回值:如果返回一个比较小的结构体,借助寄存器即可,否则依旧借助栈。按调用约定,当返回值是较大的结构体时,会在caller栈里产生一个临...