2020-03-07 08:09
⁄ 工业·编程
⁄ 共 1667字
我是在腾讯做游戏后台的,从2018年底开始,我们项目从零开始逐渐使用scala,到现在占据半壁江山。怎么做到的呢?简单一句话:找到一个语言最适合的场景去应用它,用好它,用出花来;立住脚后,再慢慢向外围扩展。
最初的应用是什么呢?大数据,spark开发。游戏用户规模庞大,行为也很复杂,我们游戏用户行为日志单日在TB级别。为了更好地了解用户(咳咳,更好地赚钱),我们需要对数据有更深刻的理解。开始我们试过sql,试过pys...
scala, 经验阅读全文
2020-03-06 07:21
⁄ 工业·编程
⁄ 共 1182字
我有近十年的游戏后端开发经验,端游,手游都做过。从我的观察而言,在决定后端技术栈选择方向时,除了编程语言自身的开发效率,库及社区的丰富和活跃程度,以及解决问题的复杂程度外,还需要非常关注: 基础设施、配套服务,以及开发人员招聘培养的难易度。
回到题主关于C++的问题。首先一些新的游戏产品,后端开发技术已经百花齐放了,jvm系,Erlang,go,Python都有。那么仍在坚持C++的原因是啥呢?我觉得有两点:
1. 历史积淀...
c++阅读全文
2020-03-05 23:18
⁄ 工业·编程
⁄ 共 1884字
1、并发编程
什么是并发?并发简单的说就是无须以特定顺序执行的事物,如果硬件允许,那么进程可以同时执行,如果硬件不允许,则交替执行,进程与进程之间相互独立且执行没有顺序之分,这样就是并发。
erlang 的一大优势就是它帮你隐藏了任务实际执行的细节,如果有额外的CPU,erlang会利用他们并行执行更多并发任务,如果没有,erlang会利用现有的 CPU处理能力一点一点的交替执行任务,你不必操心这些细节,erlang程序能够自动...
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...
Erlang, 方法阅读全文
2020-03-03 14:01
⁄ 工业·编程
⁄ 共 716字
Go语言的标准库覆盖网络、系统、加密、编码、图形等各个方面,可以直接使用标准库的 http 包进行 HTTP 协议的收发处理;网络库基于高性能的操作系统通信模型(Linux 的 epoll、Windows 的 IOCP);所有的加密、编码都内建支持,不需要再从第三方开发者处获取.
Go 语言的编译器也是标准库的一部分,通过词法器扫描源码,使用语法树获得源码逻辑分支等。Go 语言的周边工具也是建立在这些标准库上。在标准库上可以完成几乎大部分的...
Go阅读全文
2020-03-02 11:03
⁄ 工业·编程
⁄ 共 527字
精通没有标准,但学习有路径。 学习掌握C++的路径吧,从低到高,分0~10级:
0级:掌握常见C++语法和语言构造,能够顺溜地写清楚各种语言构造(很多小白鼠死在这里)
1级:掌握基本的编程范式:面向过程、面向对象、泛型编程、以及C++11/14支持的函数式编程
2级:清楚编译器在 后面干了什么(compiler under the hood-考验功力的时候到了)
3级:清楚运行时内存模型(memory under the hood)
4级:对经典库(包括但不限于STL,...
c++阅读全文
2020-03-01 20:57
⁄ 工业·编程
⁄ 共 1500字
通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。
内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存。这样做的一个显著优点是尽量避免了内存碎片,使得内存分配效率得到提升。
pool...
boost库, 内存池阅读全文
2020-02-28 20:53
⁄ 工业·编程
⁄ 共 1186字
1. 符号定义时的冲突解决方案
1.1. 名字包装. <我经常使用的一种方法>
int (test)() { return 10; } // 用圆括号包装test, 编译器看到 "(test)" 和 "test" 是不一样的符号.
当然你可以使用其他的包装方式, 比如干脆就加个前缀, 比如 int my_test(){...}.
我建议还是使用圆括号来包装, 这样来包装的话, 你还是可以正常的使用 test 这个符号.
1.2. 使用宏的技术 < 这一招是从boost里面学到的, 这里...
c++阅读全文
2020-02-27 18:59
⁄ 工业·编程
⁄ 共 2443字
众所周知,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...
GDB, vscode阅读全文
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贝尔实验室开发了它,自那时...
shell, 开源阅读全文