项目2 | 牛扣刷题平台 本项目实现一个类似 leetcode 的题目列表+在线编程功能的负载均衡式在线OJ服务项目核心是三个模块comm:公共模块compile_server:编译与运行模块oj_server:获取题目列表,查看题目编写题目界面,负载均衡,其他功能项目宏观结构编写思路oj_serverversion1 ——基于文件版的在线OJ前端的页面设计version2 ——基于 MySQL 版的在线OJ。
项目1 | LTCMalloc 内存池是指程序预先从操作系统申请一块足够大的内存,此后,当程序中需要申请内存的时候,不是直接向操作系统申请,而是直接从内存池中获取同理,当程序释放内存的时候,并不真正将内存返回给操作系统,而是返回内存池当程序退出(或者特定时间)时,内存池才将之前申请的内存真正释放给操作系统。
Linux | 进程控制 在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程返回值:子进程中返回 0 ,父进程返回子进程id,出错返回 - 1分配新的内存块和内核数据结构给子进程将父进程部分数据结构内容拷贝至子进程添加子进程到系统进程列表当中fork返回,开始调度器调度当一个进程调用fork之后,就有两个二进制代码相同的进程。而且它们都运行到相同的地方。返回值:自进程中返回 0 ,父进程返回子进程id,出错返回 - 1 int main(void) {
Linux · 开发工具 · 05 | 版本控制器 · git Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
Linux · 开发工具 · 04 | 调试器 · gdb || 项目自动化构建工具 · make/Makefile gdb是Linux下的调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 Linux平台下做软件,你会发现这个调试工具相比于VC、z的优点是具有修复网络断点以及恢复链接等功能,比BCB的图形化调试器有更强大的功能。所谓“尺有所短,寸有所长”就是这个道理。
Linux · 开发工具 · 03 | 软件包管理器 · yum yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装在Linux下安装软件,一个通常的办法是下载到程序的源代码,并进行编译,得到可执行程序。
Linux · 开发工具 · 02 | 编译器 · gcc/g++ gcc是C语言的编译器,不能用来编译C++g++是C++的编译器,可以用来编译C语言和C++一般情况下Linux云服务器都安装有这两款编译器,有个别情况会缺少g++,此时运行以下命令安装g++
Linux · 开发工具 · 01 | 编辑器 · vim vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、windows。本文只讲解vim。
Linux · 进程概念 · 04 | 环境变量 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性。
Linux · 进程概念 · 03 | 进程优先级 cpu资源分配的先后顺序,就是指进程的优先权(priority)优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用,可以改善系统性能还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整体性能。
C++ | string string是C++、java、VB等编程语言中的字符串,字符串是一个特殊的对象,属于引用类型。在java、C#中,String类对象创建后,字符串一旦初始化就不能更改,因为string类中所有字符串都是常量,数据是无法更改,由于string对象的不可变,所以可以共享。对String类的任何改变,都是返回一个新的String类对象。C++标准库中string类以类型的形式对字符串进行封装,且包含了字符序列的处理操作。
C++ | 模板 · 初阶 模板分为函数模板和类模板,来一一了解一下template < class T1 , class T2 , . . . , class Tn > class 类模板名 {// 类内成员定义 };// 动态顺序表 // 注意:Vector不是具体的类,是编译器根据被实例化的类型生成具体类的模具 template < class T > class Vector {public :} // 使用析构函数演示:在类中声明,在类外定义。~ Vector();T * _pData;
C++ | 内存管理 内存管理的问题其实在C语言的时候就已经有所了解让我们看看C++在这一块有什么新的东西吧!// new/delete 和 malloc/free最大区别是 new/delete //对于【自定义类型】除了开空间还会调用构造函数和析构函数 A * p1 =(A *) malloc(sizeof(A));free(p1);delete p2;
C++ · 类和对象 · 02 | 类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数用户没有显式实现,编译器会生成的成员函数称为默认成员函数。