现在位置: 首页 > 自动控制 > 文章
2020-03-03 14:01 工业·编程 ⁄ 共 716字 暂无评论
Go语言的标准库覆盖网络、系统、加密、编码、图形等各个方面,可以直接使用标准库的 http 包进行 HTTP 协议的收发处理;网络库基于高性能的操作系统通信模型(Linux 的 epoll、Windows 的 IOCP);所有的加密、编码都内建支持,不需要再从第三方开发者处获取. Go 语言的编译器也是标准库的一部分,通过词法器扫描源码,使用语法树获得源码逻辑分支等。Go 语言的周边工具也是建立在这些标准库上。在标准库上可以完成几乎大部分的...
阅读全文
2020-03-02 11:03 工业·编程 ⁄ 共 527字 评论 1 条
精通没有标准,但学习有路径。 学习掌握C++的路径吧,从低到高,分0~10级: 0级:掌握常见C++语法和语言构造,能够顺溜地写清楚各种语言构造(很多小白鼠死在这里) 1级:掌握基本的编程范式:面向过程、面向对象、泛型编程、以及C++11/14支持的函数式编程 2级:清楚编译器在 后面干了什么(compiler under the hood-考验功力的时候到了) 3级:清楚运行时内存模型(memory under the hood) 4级:对经典库(包括但不限于STL,...
阅读全文
2020-03-01 20:57 工业·编程 ⁄ 共 1500字 暂无评论
  通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。 内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存。这样做的一个显著优点是尽量避免了内存碎片,使得内存分配效率得到提升。 pool...
阅读全文
2020-02-28 20:53 工业·编程 ⁄ 共 1186字 暂无评论
1. 符号定义时的冲突解决方案 1.1. 名字包装. <我经常使用的一种方法> int (test)() { return 10; } // 用圆括号包装test, 编译器看到 "(test)" 和 "test" 是不一样的符号. 当然你可以使用其他的包装方式, 比如干脆就加个前缀, 比如 int my_test(){...}. 我建议还是使用圆括号来包装, 这样来包装的话, 你还是可以正常的使用 test 这个符号. 1.2. 使用宏的技术 < 这一招是从boost里面学到的, 这里...
阅读全文
众所周知,C++的STL容器的实现并不直观,直接使用gdb之类的debugger查看内存是需要周转多次才能看到具体的内容的。 在Visual Studio之类的IDE中内置了一些脚本,用来较为友好的显示容器内的元素。GDB的pretty-printer脚本提供了类似的功能。 举个例子: 假设我们有如下c++代码 std::vector<int> vec{1,2,3,4}; std::string s="this is my string."; 在关闭和开启pretty-printer的情况下,我们使用GDB查看vec和s...
阅读全文
2020-02-26 09:21 工业·编程 ⁄ 共 5824字 暂无评论
Linux为高级用户提供了一些最好的开源shell,这些用户总是希望为自己的武器库添加新的工具包。这反过来又使许多日常用户很难选择特定的shell。我们冒昧地为Linux用户列出了一些最好的免费开源shell。请仔细阅读本文,找出最适合您的Linux shell。 1、sh Shell Bourne Shell或“sh”是历史悠久的Unix操作系统忠第一个流行的 Shell。sh 是 UNIX 上的标准 shell,它的创建者Stephen Bourne于1977年在AT&T贝尔实验室开发了它,自那时...
阅读全文
2020-02-25 16:25 工业·编程 ⁄ 共 3463字 评论 1 条
Shell从标准输入或脚本中读取的每行称为一个管道行,它包含一个或多个由0个或多个管道字符(|)分隔的命令。对每一个管道行,进行12个步骤的处理。 结合上图,这里给出命令行的12个步骤。 1.  将命令行分成由固定元字符集分隔的记号 : SPACE, TAB, NEWLINE, ; , (, ), <, >, |, & 记号类型包括单词,关键字,I/O重定向符和分号。 2. 检测每个命令的第一个记号,查看是否为不带引号或反斜线的关键字。 如果是...
阅读全文
2020-02-24 11:06 工业·编程 ⁄ 共 744字 暂无评论
集群与分布式像一对孪生兄弟,傻傻分不清楚。在我看来,它们之间没有特别明确的分界线,集群离不开分布式,分布式也需要集群。如果一定要做个区分,可以套用一个比喻来描述两者的区别:   一家餐厅刚开业,由于成本限制招了一个厨师,慢慢地,餐厅生意越做越好,一个厨师已经很难应付过来,于是又招了一个,这两个厨师水平相当,都能做同样的事,两个厨师之间的关系就是集群。两厨师除了炒菜,还要负责洗菜、配菜等等的活...
阅读全文
2020-02-23 10:47 工业·编程 ⁄ 共 2736字 暂无评论
Namespace概述 Namespace 用于不同进程组之间的资源隔离,其目的是将某个特定的全局系统资源(global system resource)通过抽象方法使得namespace 中的进程看起来拥有它们自己的隔离的全局系统资源实例。 Linux 内核中实现了六种 namespace,按照引入的先后顺序,列表如下: namespace 引入内核版本 被隔离的全局系统资源 在容器语境下的隔离效果 Mount namespaces Linux 2.4.19 文档系统挂接点...
阅读全文
2020-02-22 09:54 工业·编程 ⁄ 共 5021字 暂无评论
学习Docker,首先需要了解Docker基本概念,然后就开始“动手”了(也就是敲Docker命令)。Docker命令较多,这里笔者总结下常用的Docker命令,方便小伙伴们查阅。 Docker是基于go语言开发,底层技术(Linux下)主要基于cgroups、namespace以及联合文件技术实现的一种进程级别的轻量级虚拟化解决方案。由于Docker进程隔离独立于宿主机上其他进程,因此也称为容器,Docker在容器的基础上,进行了更进一步的封装,从文件系统、网络到...
阅读全文