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

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

  •  
  •   liuguangxuan · 221 天前 · 2994 次点击
    这是一个创建于 221 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现状:

    目前从事 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  
       221 天前
    应该咨询 Java 老哥哈哈
    passer9527
        2
    passer9527  
       221 天前 via iPhone
    跳槽到一个 Java 的公司
    lingex
        3
    lingex  
       221 天前 via Android   ❤️ 1
    同 C++开发,最有效的大概是项目驱动吧,
    lingex
        4
    lingex  
       221 天前 via Android
    @lingex 点快了,,
    我这里新一点,用 VS + C11 ,线上是跑在 docker 里的,所以开发时候也得玩。
    确实也感觉技能挺单一的。
    短时接手过一个 asp.net 项目,业余 DIY 的时候玩过 C#,Python…没有项目驱动,可能都忘的差不多了

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

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

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

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

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

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

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

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

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

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

    你说的这些 Kafka 啥的已经跟 c 不 c++不是一个维度的事,看业务和系统是干啥的
    l00t
        16
    l00t  
       221 天前
    不要被日新月异的各种名字迷惑了,你说的那些东西不是不好,但不一定是你需要的。未必是你脱离了时代,而是可能领域就完全不同。
    Kasumi20
        17
    Kasumi20  
       221 天前
    Linux 下的后台服务开发,居然不知道 nginx ?
    nmap
        18
    nmap  
       221 天前
    自己得有学习的意识,这些都是公开的东西,linux 后台开发连 nginx 都不知道,看来是活在自己的舒适圈太久了
    wtfdsy
        19
    wtfdsy  
       221 天前
    上边说 nginx 的,别人未必是 web 后台,都直接 socket 了
    chtcrack
        20
    chtcrack  
       221 天前
    @nmap 别人用 c++的 socket 来通讯,那速度和性能比 nginx 快多了,只是功能没 nginx 那么多罢了.因为他用的 socket 功能只是为了自己公司而开发...而 nginx 是面向大众的一款轻量级的 Web 服务器..
    chtcrack
        21
    chtcrack  
       221 天前   ❤️ 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  
       221 天前
    楼主,其实你要看目前他们玩高层应用的,你只需要知道 pyhton,php,java,c#,rust,,go 这类,然后这些又会分别使用数据库比如 mysql,缓存 redis,各种框架比如 laravel,sprint,vue 等等,都是由 c/c++写出来的高层应用,给那些不会写底层的程序员用的比较傻瓜化的框架..
    通过这些,你就可以知道他们最近又发现了啥简单易用的框架和工具..然后内卷就开始了,35 岁就面临失业等等..
    nmap
        23
    nmap  
       221 天前
    @chtcrack 笑死,还用你来教我这些小儿科的东西? 我是说,不管他是具体是做什么项目,但他自称是做 linux 后台 C++开发,结果连 nginx 都不知道,这本身是不可思议的事情,可能平时只专注自己的代码吧
    liuguangxuan
        24
    liuguangxuan  
    OP
       221 天前
    @Kasumi20 #17
    @nmap #18 两位老哥,可能是我没有说清楚,nginx 我知道,但是我不知道大家为什么都要用它,它比自己写的网关服务好在哪里?
    我是做 C/S 的,我理解 nginx 就是当一个客户端连接上来,nginx 就朝服务端发起一个 tcp 连接,转发一下数据。两位老哥看来都对 nginx 比较精通,能不能说一下你们在 C/S 里面的应用场景呢?
    liuguangxuan
        25
    liuguangxuan  
    OP
       221 天前
    @nmap #23 可能是我比较菜,但是我自己写的网关服务已经满足日常使用需求了呀。老哥能不能说一下你们公司的技术栈和架构,以及选用的原因,不能说因为人家用我也用吧。
    还望老哥不吝赐教。
    after1990s
        26
    after1990s  
       220 天前 via Android   ❤️ 1
    neoblackcap
        27
    neoblackcap  
       220 天前   ❤️ 1
    自定义协议,用 socket 写很正常啊,又不是每家都会做好一套序列化库的。有些就是简单定义一下。
    这个真的没有什么 low 不 low ,各种 rpc 也要 socket ,只不过不用你自己封装罢了。
    但是用各种 rpc 就要承受各种 rpc 带来的开销。
    liuguangxuan
        28
    liuguangxuan  
    OP
       217 天前
    @anonymousar #8 老哥,这些底层的知识,有没有推荐的书籍?
    Coeus999
        29
    Coeus999  
       213 天前
    借个楼!!谢谢


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