尽可能地去了解你使用的操作系统,这样无论对写程序还是debug都会有很大的帮助;除了操作系统,了解你使用的CPU的汇编语言,至少能大概看懂。因为有些时候,当你从C代码中找不出bug的原因时,就需要你“透过现象看本质”,从汇编代码层面看看到底发生了什么。

一提到脚本编程,大家首先想到的可能就是Bash shell脚本编程,应用开发工程师主要用Bash shell做两个方面的工作:a)用于编写监控服务脚本;b)写一些简单的单元测试脚本,比如循环发一些命令,等等。

网络协议,在日常的工作中,大家接触和使用最多的无疑是TCP/IP协议;Socket编程,Socket编程一点也不比系统编程简单;协议分析工具,TCPdump、snoop(Solaris平台工具)、wireshark等这些工具不仅能帮助我们抓取数据包,还能分析数据包,这对debug网络程序有非常大的帮助。

一个程序员不可能不碰到bug,而这个时候,调试器就是最好的工具。可以说,在遇到bug时调试技巧和手段是否丰富是衡量一个程序员的能力和水平的重要参考。

数据库作为服务器端应用数据持久化的最重要的部件,在服务器端应用开发中占有非常重要的地位。深入了解数据库基本原理,数据库和数据表结构体操作等。

Qt是一个跨平台框架,通常用作图形工具包,它不仅创建CLI应用程序中也非常有用。而且它可以在台式机、移动端以及嵌入式设备端口上运行。完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。

除了操作系统,了解你使用的CPU的汇编语言,至少能大概看懂。因为有些时候,当你从C代码中找不出bug的原因时,就需要你“透过现象看本质”,从汇编代码层面看看到底发生了什么。

编译器负责把源代码生成可执行文件,例如gcc有很多编译选项,除了要熟悉像-O,-g这些最基本的选项,建议大家可以多了解一些其它不常见的选项。因为这些选项很可能帮助我们找到程序的一些bug。多了解你的编译器,你就可以更好地了解你的程序是如何生成的。

C++所有新特性,用C都能做出来,无论是面向对象还是函数式编程还是元编程。所以,不要再说C++是面向对象的,而C是面向过程的,这不是本质区别。

C++所有新特性,用C都能做出来,无论是面向对象还是函数式编程还是元编程。所以,不要再说C++是面向对象的,而C是面向过程的,这不是本质区别。

初级阶段,C比C++容易学,毕竟语法简单,关键词少;中级阶段,C++更容易更强大。有强大的编译器支持,只要掌握这些语言特性,就已能实现强大的高级功能。而C还需要脑补编译器,才能实现面向对象等高级特性;高级阶段,C++各种特性组合会成为难点。而用C度过中阶段后,更深入理解计算机和程序的本质后,会有一种无所不能的感觉。C反而是束缚更少,更自由,更高效的工具。 一个C++高手,能准确掌握更多更复杂的高级语言特性组合,高效率响应业务需求,快速迭代,代码优雅简洁,鲁棒性好,维护性好,扩展性好。一个C高手,能掌握更多的基础模块实现方案,什么无锁消息队列,内存管理,线程调度器,时钟,各种算法库,甚至不同风格的面向对象的架构,这都是自己纯手工打造,然后根据业务需要定制这些基础模块的设计方案和参数,以追求应用业务的极致性能,和极致可靠。 C能做到的,C++肯定能做,毕竟C++是C超集。而C++能做到的,其实C也能做到,只需要脑补一种编译范式而已。

C提供了函数,方便了程序设计,但却剥夺了CPU寄存器的可见性,戴上了栈空间的束缚,等等。C++提供了面向对象的语法便捷,但面向对象却限制了指令交叉访问数据的自由和效率。

内置数据类型、基本输入输出、类型表示范围、头文件包含、gcc编译运行 算术运算符、逻辑运算符、位运算符、比较运算符、赋值运算符、sizeof运算符、取址运算符、逗号运算符

同步和异步的概念、同步的方式(互斥锁、读写锁、条件变量、信号量)、异步方式(信号)、PV经典案例

窗口类型:widget、dialog、mainwindow信号槽机制、鼠标事件、键盘事件图形图像、并发、socket网络编程

By admin

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注