V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
liuguangxuan
V2EX  ›  C++

请教各位 C++的老哥,你们都是从哪儿获取知识的?

  •  
  •   liuguangxuan · 2022-02-23 20:36:30 +08:00 · 4086 次点击
    这是一个创建于 1008 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现状:

    目前从事 Linux 下的 C++后台服务开发,公司用的技术比较保守(落后),比如通信还是用的 socket 发送二进制字节流,C++还停留在 C++98 ,开发用的还是 Eclipse ,代码管理用的是 svn ,所有的代码混在一个程序里(单体应用)。

    看到互联网公司使用的一大堆技术,比如 kafka 、nginx 、kong 、微服务、docker 、k8s 、服务网格等等,看到这些技术名词一脸懵,完全不知道啥意思。感觉我脱离了这个时代。

    想请教各位 C++开发的老哥:

    1. 是从那儿获取、学习行业内流行的技术的?
    2. 你们现在用 C++做后台服务开发都用的什么技术栈、技术架构呀?
    31 条回复    2022-03-07 11:51:04 +08:00
    jmc891205
        1
    jmc891205  
       2022-02-23 20:40:39 +08:00
    应该咨询 Java 老哥哈哈
    passer9527
        2
    passer9527  
       2022-02-23 20:52:50 +08:00 via iPhone
    跳槽到一个 Java 的公司
    lingex
        3
    lingex  
       2022-02-23 21:11:36 +08:00 via Android   ❤️ 1
    同 C++开发,最有效的大概是项目驱动吧,
    lingex
        4
    lingex  
       2022-02-23 21:22:23 +08:00 via Android
    @lingex 点快了,,
    我这里新一点,用 VS + C11 ,线上是跑在 docker 里的,所以开发时候也得玩。
    确实也感觉技能挺单一的。
    短时接手过一个 asp.net 项目,业余 DIY 的时候玩过 C#,Python…没有项目驱动,可能都忘的差不多了

    你要是自己搭个梯子,大概就会玩到 NGINX 和 docker 了
    elfive
        5
    elfive  
       2022-02-23 21:31:35 +08:00 via iPhone   ❤️ 5
    我所在的公司传统制造业,也是用 c99/C++98 很久了,即使呆过的项目组能够用 c++11 ,但是其他同事都是能用就行,甚至连 c++11 这种标准都不知道。
    我根据我的经验,能分享给你的:
    1. C++标准的演进,很大程度上是编程的演进,比如面相过程到面向对象到模板元编程,它们都是因为为了达成一些目标而自然演化而来的,不是什么凭空想象出来的,写代码的时候多思考一下为什么这么写为什么不那样写。

    2. 努力写出精简的代码,精简不是简单指代码越少越好。而是你的思路要精简,抽象的流程要精简。灵活作用抽象,尤其是抽象流程,这样你就能在多变的需求中做到灵活扩展。走一步,看十步。

    3. 从心底热爱写代码,兴趣是最好的老师,不一定要能自己实现,但是 stl 代码你必须要熟悉和了解,里面的代码很难看懂,但是无非就是容器类的内存管理、数据结构、算法,type_traits 等模板元编程的“概念”,这些东西可能很难用很难懂,但是一旦入了门,它就真的和日常呼吸一样自然了。
    elfive
        6
    elfive  
       2022-02-23 21:35:02 +08:00 via iPhone   ❤️ 1
    @elfive 常见的资源:
    1. cpprefference.com
    2. youtube cppcon ,里面很多大佬的 talk 都是干货满满,上下班公交上看中午午休看绝对不后悔。
    3. 一些有名的开源库,及相关的资源:boost 等,不是简单的看人家的代码实现,而是要学他们的编程思路和方法方式。
    feather12315
        7
    feather12315  
       2022-02-23 21:37:23 +08:00 via Android
    自己搭个网站、梯子,自己捣腾下服务器、路由器、nas ,就都接触到了
    anonymousar
        8
    anonymousar  
       2022-02-23 22:13:44 +08:00   ❤️ 3
    那些都是虚的 c98 老玩具会的才是实的 gdb systemtap bpf perf tools 这些。
    anonymousar
        9
    anonymousar  
       2022-02-23 22:14:28 +08:00   ❤️ 1
    另外想看 c11 以后的东西 我建议搞个 folly 源码读读就好了
    FranzKafka95
        10
    FranzKafka95  
       2022-02-23 22:15:10 +08:00 via Android   ❤️ 1
    Android Native C++源码 /Github 上的优秀 C++项目,除此之外还可以尝试不同的领域,如音、视频,蓝牙 wifiBt ,前端做做 Qt 这些
    documentzhangx66
        11
    documentzhangx66  
       2022-02-24 02:32:19 +08:00   ❤️ 1
    C++也是分等级的。

    普通 QT 那种 C++,看一本 C++的书,再去看 QT 的例子,然后基于谷歌解决问题,感觉也够了。数据库,用各种框架加谷歌现成的 SQL 例子,网络通信有 grpc 等各类组件,当个 API 调用师,躺赢即可。

    中级 C++,需要懂一些数据结构与算法。

    高级 C++,需要懂 OS 、网络通信、数据库的一些基本原理。

    顶级 C++,需要懂一些底层的知识,从组成原理开始,到汇编、到各种 CPU 的一些特定比如频率、指令集等等。

    超纲 C++,需要学一下底层电路的知识,能加深对性能的理解。

    以上这些知识,都有书籍。建议用关键字去知乎和豆瓣搜,书我就不推荐了,因为书的种类很多,我推荐的书的写作风格,不一定适合你。有些朋友甚至喜欢去看视频教程。
    mingl0280
        12
    mingl0280  
       2022-02-24 05:14:46 +08:00
    这些基本上都是互联网企业搞出来的需求,你没那个需求肯定用不着……要想用得着,把你的需求扩大个几万倍?
    js8510
        13
    js8510  
       2022-02-24 07:11:11 +08:00
    1.工作。。看代码写代码。另外回去看各大厂的 tech blog
    2.公司自己开发的轮子。很多没开源。用到的比较出名的开源就是 thrift 了。
    wellsc
        14
    wellsc  
       2022-02-24 08:02:07 +08:00 via iPhone
    跳槽
    defage
        15
    defage  
       2022-02-24 08:50:59 +08:00
    通信还是用的 socket 发送二进制字节流,C++还停留在 C++98 ,开发用的还是 Eclipse ,代码管理用的是 svn

    ---------------
    这几个里面看情况的。 其中 svn 是应该需要换的,其他的都不是那么绝对。IDE 纯看习惯。 通信 socket 不是很常见,看你说的是干什么。

    你说的这些 Kafka 啥的已经跟 c 不 c++不是一个维度的事,看业务和系统是干啥的
    l00t
        16
    l00t  
       2022-02-24 08:58:38 +08:00
    不要被日新月异的各种名字迷惑了,你说的那些东西不是不好,但不一定是你需要的。未必是你脱离了时代,而是可能领域就完全不同。
    Kasumi20
        17
    Kasumi20  
       2022-02-24 10:12:03 +08:00
    Linux 下的后台服务开发,居然不知道 nginx ?
    nmap
        18
    nmap  
       2022-02-24 10:28:16 +08:00
    自己得有学习的意识,这些都是公开的东西,linux 后台开发连 nginx 都不知道,看来是活在自己的舒适圈太久了
    wtfdsy
        19
    wtfdsy  
       2022-02-24 10:40:34 +08:00
    上边说 nginx 的,别人未必是 web 后台,都直接 socket 了
    chtcrack
        20
    chtcrack  
       2022-02-24 14:49:28 +08:00
    @nmap 别人用 c++的 socket 来通讯,那速度和性能比 nginx 快多了,只是功能没 nginx 那么多罢了.因为他用的 socket 功能只是为了自己公司而开发...而 nginx 是面向大众的一款轻量级的 Web 服务器..
    chtcrack
        21
    chtcrack  
       2022-02-24 14:59:20 +08:00   ❤️ 1
    @nmap 如果按照层级来比较的话,socket 相当于比 ngxin 的 http 低一个层级.
    socket 和 http 的区别:
    Http 协议:简单的对象访问协议,对应于应用层。Http 协议是基于 TCP 链接的。
    tcp 协议:对应于传输层
    ip 协议:对应与网络层
    TCP/IP 是传输层协议,主要解决数据如何在网络中传输;而 Http 是应用层协议,主要解决如何包装数据。

    Socket 是对 TCP/IP 协议的封装,Socket 本身并不是协议,而是一个调用接口( API ),通过 Socket ,我们才能使用 TCP/IP 协议

    其实你们问使用 c++ socket 的楼主怎么连 nginx 都不知道,就好像问用 c++开发嵌入式设备的人你怎么连 java 都不知道一样,人家需要知道吗?因为别人有这个水平可以开发另外一个 nginx++,等等等..完全不是一个层级的东西..
    chtcrack
        22
    chtcrack  
       2022-02-24 15:04:43 +08:00
    楼主,其实你要看目前他们玩高层应用的,你只需要知道 pyhton,php,java,c#,rust,,go 这类,然后这些又会分别使用数据库比如 mysql,缓存 redis,各种框架比如 laravel,sprint,vue 等等,都是由 c/c++写出来的高层应用,给那些不会写底层的程序员用的比较傻瓜化的框架..
    通过这些,你就可以知道他们最近又发现了啥简单易用的框架和工具..然后内卷就开始了,35 岁就面临失业等等..
    nmap
        23
    nmap  
       2022-02-24 15:15:52 +08:00
    @chtcrack 笑死,还用你来教我这些小儿科的东西? 我是说,不管他是具体是做什么项目,但他自称是做 linux 后台 C++开发,结果连 nginx 都不知道,这本身是不可思议的事情,可能平时只专注自己的代码吧
    liuguangxuan
        24
    liuguangxuan  
    OP
       2022-02-24 16:46:57 +08:00
    @Kasumi20 #17
    @nmap #18 两位老哥,可能是我没有说清楚,nginx 我知道,但是我不知道大家为什么都要用它,它比自己写的网关服务好在哪里?
    我是做 C/S 的,我理解 nginx 就是当一个客户端连接上来,nginx 就朝服务端发起一个 tcp 连接,转发一下数据。两位老哥看来都对 nginx 比较精通,能不能说一下你们在 C/S 里面的应用场景呢?
    liuguangxuan
        25
    liuguangxuan  
    OP
       2022-02-24 16:50:54 +08:00
    @nmap #23 可能是我比较菜,但是我自己写的网关服务已经满足日常使用需求了呀。老哥能不能说一下你们公司的技术栈和架构,以及选用的原因,不能说因为人家用我也用吧。
    还望老哥不吝赐教。
    after1990s
        26
    after1990s  
       2022-02-24 18:01:38 +08:00 via Android   ❤️ 1
    neoblackcap
        27
    neoblackcap  
       2022-02-24 18:04:24 +08:00   ❤️ 1
    自定义协议,用 socket 写很正常啊,又不是每家都会做好一套序列化库的。有些就是简单定义一下。
    这个真的没有什么 low 不 low ,各种 rpc 也要 socket ,只不过不用你自己封装罢了。
    但是用各种 rpc 就要承受各种 rpc 带来的开销。
    liuguangxuan
        28
    liuguangxuan  
    OP
       2022-02-27 19:16:23 +08:00
    @anonymousar #8 老哥,这些底层的知识,有没有推荐的书籍?
    Coeus999
        29
    Coeus999  
       2022-03-04 14:05:12 +08:00
    借个楼!!谢谢


    各位 V2 好友们我这边有蛮多 C++的坑,可以把 JD 发给你们(可以无金融或同行业背景)如果感兴趣可以与我联系啊~
    北京上海杭州成都深圳长沙都有
    [猎头职位] [微信:2318617113]
    [C++]
    工作职责:
    参与公司股票回测系统的开发与更新
    负责对核心基金经理的服务与支持
    负责实现研究员需求的功能
    参与回测系统的架构设计与升级
    任职要求:
    国内外知名院校计算机专业
    1 年左右 C++开发经验
    编程基本功扎实,编码风格严谨,精通 C/C++开发
    做事积极主动,责任心强,结果导向,有较强的沟通能力和跨团队协助能力
    liuguangxuan
        30
    liuguangxuan  
    OP
       2022-03-04 15:38:30 +08:00 via Android
    @Coeus999 啊 这~,招人都这么卷了吗
    Coeus999
        31
    Coeus999  
       2022-03-07 11:51:04 +08:00
    @liuguangxuan hhh 没有啦!!!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2405 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:09 · PVG 00:09 · LAX 08:09 · JFK 11:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.