现在位置: 首页 > 自动控制 > 工业·编程 > 文章
2020-03-07 08:09 工业·编程 ⁄ 共 1667字 暂无评论
我是在腾讯做游戏后台的,从2018年底开始,我们项目从零开始逐渐使用scala,到现在占据半壁江山。怎么做到的呢?简单一句话:找到一个语言最适合的场景去应用它,用好它,用出花来;立住脚后,再慢慢向外围扩展。 最初的应用是什么呢?大数据,spark开发。游戏用户规模庞大,行为也很复杂,我们游戏用户行为日志单日在TB级别。为了更好地了解用户(咳咳,更好地赚钱),我们需要对数据有更深刻的理解。开始我们试过sql,试过pys...
阅读全文
我有近十年的游戏后端开发经验,端游,手游都做过。从我的观察而言,在决定后端技术栈选择方向时,除了编程语言自身的开发效率,库及社区的丰富和活跃程度,以及解决问题的复杂程度外,还需要非常关注: 基础设施、配套服务,以及开发人员招聘培养的难易度。 回到题主关于C++的问题。首先一些新的游戏产品,后端开发技术已经百花齐放了,jvm系,Erlang,go,Python都有。那么仍在坚持C++的原因是啥呢?我觉得有两点: 1. 历史积淀...
阅读全文
2020-03-05 23:18 工业·编程 ⁄ 共 1884字 暂无评论
1、并发编程 什么是并发?并发简单的说就是无须以特定顺序执行的事物,如果硬件允许,那么进程可以同时执行,如果硬件不允许,则交替执行,进程与进程之间相互独立且执行没有顺序之分,这样就是并发。 erlang 的一大优势就是它帮你隐藏了任务实际执行的细节,如果有额外的CPU,erlang会利用他们并行执行更多并发任务,如果没有,erlang会利用现有的 CPU处理能力一点一点的交替执行任务,你不必操心这些细节,erlang程序能够自动...
阅读全文
2020-03-04 22:35 工业·编程 ⁄ 共 2407字 暂无评论
   大体上,otp_src的代码如下图这样组织的(打开文件夹就可以看到,算不上什么Thirty Thousand Feet).与我们每天写代码最息息相关的是ERTS和lib;ERTS(Erlang Run-Time System)包含了Erlang运行时系统的代码,是Erlang的基础设施.lib包含了所有的外围类库实现,有些类库的安排是违反直觉的,不过习惯了就好了,比如file.erl不是在stdlib而是在kernel;gen_server gen_fsm的代码实现应该是在kernel吧?错,它们的代码是在stdlib...
阅读全文
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贝尔实验室开发了它,自那时...
阅读全文