** 虽然答不出来,但也不用怀疑自己的能力,生活继续 **
1
mason961125 2018-01-02 20:39:02 +08:00
这哪是考 C++?
|
2
safeoy 2018-01-02 20:42:49 +08:00
感觉这是招 C++搞 openresty
|
3
mason961125 2018-01-02 20:45:41 +08:00
这越看越像 openresty 二次开发岗位?
|
4
qianjindapang OP @mason961125 @safeoy C++开发岗位,但因为我简历写了基于 OpenResty 的 Lua 应用开发的项目,就问这些内容
|
5
watzds 2018-01-02 21:11:05 +08:00 via Android
服务端 C++,估计网络编程什么的比较重要吧
|
6
Technetiumer 2018-01-02 22:14:38 +08:00 via Android
DNS 有 AAA 記錄? A ? AAAA ?
|
7
qianjindapang OP @Technetiumer 写错了,应该是 AAAA 记录,谢谢指正
|
8
sgissb1 2018-01-02 23:23:25 +08:00
这和语言关系不大吧。nginx 是 c 写的。
我是做 windows 开发的,select 和 epoll 的源码没看过,但至少我知道这两个玩意也是用 c 写的。。。。 如果真的针对 c++,那应该问一些编程思维(非编程思想),这些都是问一些 linux 系统级开发的问题偏多。 tls 和 http 除外基本问协议了。 |
9
sgissb1 2018-01-02 23:24:02 +08:00
我指的用 c 写的,是指 select 的实现和 epoll 的实现使用 c 写的。然后调用可以 c/c++
|
10
zeke 2018-01-02 23:25:18 +08:00
冒昧问一句,这薪资待遇得是多少。。。
|
11
q397064399 2018-01-02 23:31:55 +08:00
@sgissb1 #8 应该是问的实现原理,epoll 用红黑树实现的 查找的时间复杂度是 log(N) select 估计是 O(N)的 for 循环实现的
|
12
gnaggnoyil 2018-01-02 23:36:48 +08:00
@sgissb1 Windows 也有 select 的.你总不能说 Windows 是用 C 写的吧.
|
13
q397064399 2018-01-02 23:38:50 +08:00
其实不知道,也很正常, 搬砖搬多了, 这些知识没见识过,也没机会去解决 自然水平上不去,说的就是我自己,搬砖搬太多了。
面 C++ 一般都跟语言没什么大关系,C++的语言太繁琐 能把 栈模型 函数调用基本原理说清楚就行了,语法层面上的东西,图灵完备的语言那么多 C++特性太烧脑 主要的还是基本功,, 操作系统 编译原理 算法 三板斧,是真的重要,编译原理其实也可以去掉,并不是所有人要写编译器,但是 一些基本的解析算法 递归下降还是要懂点 |
14
q397064399 2018-01-02 23:42:20 +08:00
@gnaggnoyil #12 windows 还真有 c 代码,select 跟 epoll 区别其实 网上搜一下就知道了
这个是 select http://zhangyafeikimi.iteye.com/blog/248815 看了下 select 应该是 O(N)级别 epoll 快在使用了红黑树结构,能在 对数时间内完成查找 |
15
framlog 2018-01-02 23:59:19 +08:00
弱弱的问下用 lua 开发项目就需要知道 lua 虚拟机的细节嘛= =
|
16
sgissb1 2018-01-03 09:46:24 +08:00
@gnaggnoyil 看来你真不懂,windows 大部分代码就是 c 写的,只是用 c++做了包装和暴露( COM 接口除外)。
另外 select 在 windows 上的实现就是 c 写的(并不是指伪终端,类似 cygwin )。 |
17
sgissb1 2018-01-03 09:47:42 +08:00
@q397064399 你说的只是一方面了,还有机制 select 和 epoll 处理的机制不同,这一快应该是比较明显的。
|
18
jasonlz 2018-01-03 10:17:10 +08:00
这是 C++后台吧...
|
19
q397064399 2018-01-03 20:41:02 +08:00
@sgissb1 #17 其它的没有做过多深入的了解,其实这种差距 在并发很大,而且又都是 IO 密集型的时候确实有效,如果是计算密集型,意义不大,频繁调度 切换栈结构 消耗很大
|
20
jeffson 2018-01-03 22:49:16 +08:00
厉害
|
21
gnaggnoyil 2018-01-04 00:48:18 +08:00
@sgissb1 select 在 windows 上的实现用 C 写的这一结论是依据什么推测出的?愿闻其详.至少我记得当年当年 windows 2000 泄露出来的代码都是用 C++写的——或者更准确地说,C with classes.
|
22
sgissb1 2018-01-04 12:30:04 +08:00
@gnaggnoyil 你说的泄露的代码是 nt 内核吧?我就有一份,你需要吗?
|
23
sgissb1 2018-01-04 12:41:05 +08:00
@gnaggnoyil 另外如果真不懂,建议你就去好好查查资料,在看看 vs 里面的 win32 sdk 源代码。
标准 socket 函数族就是 c 写的,也包括 select。你说的 c++写的那是微软封装过暴露出来的非标准 socket 函数族。 微软自己都在自己的几本讲 windows 开发相关书里面提到过,windows 绝大部分是 c 语言写的基础库,底层库,对于上层部分接口才是 c++写的。 麻烦你分清楚伯克利 socket 和非伯克利 socket。 |
24
sgissb1 2018-01-04 12:44:57 +08:00
@q397064399 其实还有一个问题,“态跃迁”问题(记得这个名词是 linux 内核一书里面说的)。
select 要让用户态线程被挂起,并进入内核态等待中断上来。 epoll 代码没有看过,但网上资料的介绍,感觉和 windows 上的 iocp 有几分相似。 一个是态跃迁不再那么频繁,因为有对应的内核态线程在处理问题,用户态线程和内核态线程之间只是基于事件驱动。 同时内存拷贝问题也是态跃迁里面一个比较严重的问题。epoll 好像不存在内存拷贝,用的是类似内存映射的方式解决的。 |
25
gnaggnoyil 2018-01-04 14:21:10 +08:00
@sgissb1 好啊.能发我一份吗,我也很想看看.至少 VS2017 里的 CRT src 都是 asm,c 和 cpp 混用的,cpp 部分还有不少用了 WRL 和 WinRT.
另外我也很赞赏您对于具有不同外延的名词注意区分其不同的执着态度.这份态度至少 ZeroMQ 的作者是比不上的.( https://github.com/zeromq/libzmq/blob/b3bf51716e0a9d3374fc0a76691b778522194937/builds/gyp/platform.hpp#L46)虽然 ZeroMQ 的代码质量被诟病也不是一天两天了. |
26
gnaggnoyil 2018-01-04 14:21:32 +08:00
@sgissb1 我的邮箱是 [email protected]
|
27
sgissb1 2018-01-04 14:45:07 +08:00 1
|
28
q397064399 2018-01-04 21:55:20 +08:00
@sgissb1 #24 系统这块就了解的比较少了,我其实也就看网上说说, 半路出家,算法略懂一点 至于具体左旋右旋 我也说不清楚,但是 rb-tree 比 常数级别还是要好的,, 算是抛砖引玉吧。
|
29
sgissb1 2018-01-05 09:42:01 +08:00
@q397064399 哦,另外为啥看不到你的 at 通知?你被降权过吗?
|
30
q397064399 2018-01-05 13:48:59 +08:00
@sgissb1 不清楚,,降权是什么鬼?
|