语言无关类
*** 作系统
鸟哥的Linux私房菜 (简体)
Linux 系统高级编程
The Linux Command Line (中英文版)
Linux 设备驱动 (第三版)
深入分析Linux内核源码
UNIX TOOLBOX
Docker中文指南
Docker —— 从入门到实践
FreeRADIUS新手入门
Mac 开发配置手册
FreeBSD 使用手册
Linux 命令行(中文版)
智能系统一步步搭建物联网系统
web服务器Nginx开发从入门到精通 (淘宝团队出品)
版本控制Git教程 (本文由 @廖雪峰 创作,如果觉得本教程对您有帮助,可以去 iTunes 购买)
git – 简易指南
猴子都能懂的GIT入门
Git 参考手册
Pro Git
Git Magic
GotGitHub
Git Community Book 中文版
Mercurial 使用教程
HgInit (中文版)
沉浸式学 Git
Git-Cheat-Sheet (感谢 @flyhigher139 翻译了中文版)
GitHub秘籍
NoSQLNoSQL数据库笔谈 (PDF)
Redis 设计与实现
Redis 命令参考
带有详细注释的 Redis 3.0 代码
带有详细注释的 Redis 2.6 代码
The Little MongoDB Book
The Little Redis Book
Neo4j 简体中文手册 v1.8
Neo4j .rb 中文资源
MySQLMySQL索引背后的数据结构及算法原理
项目相关持续集成(第二版) (译言网)
让开发自动化系列专栏
追求代码质量
selenium 中文文档
Joel谈软件
约耳谈软体(Joel on Software)
Web关于浏览器和网络的 20 项须知
前端知识体系
浏览器开发工具的秘密
Chrome 开发者工具中文手册
Chrome扩展开发文档
Grunt中文文档
移动Web前端知识库
正则表达式30分钟入门教程
前端开发体系建设日记
移动前端开发收藏夹
JSON风格指南
HTTP 接口设计指北
前端资源分享(一)
前端资源分享(二)
前端代码规范 及 最佳实践
w3school教程整理
大数据大数据/数据挖掘/推荐系统/机器学习相关资源
编程艺术程序员编程艺术
每个程序员都应该了解的内存知识(译)【第一部分】
取悦的工序:如何理解游戏 (豆瓣阅读,免费书籍)
其他OpenWrt智能、自动、透明翻墙路由器教程
语言相关类 AWKawk程序设计语言
C/C++C++ 并发编程指南 (@傅海平ICT)
Linux C编程一站式学习 (宋劲杉, 北京亚嵌教育研究中心)
CGDB中文手册
100个gdb小技巧
100个gcc小技巧
ZMQ 指南
How to Think Like a Computer Scientist (中英文版)
跟我一起写Makefile(PDF)
GNU make中文手册
GNU make 指南
Google C++ 风格指南
C/C++ Primer (by @andycai)
简单易懂的C魔法
Cmake 实践 (PDF版)
C++ FAQ LITE(中文版)
C++ Primer 5th Answers
CSS/HTML学习CSS布局
通用 CSS 笔记、建议与指导
CSS参考手册
Emmet 文档
前端代码规范 (腾讯alloyteam团队)
DartDart 语言导览
FortranFortran77和90/95编程入门
Java实时 Java 系列
Apache Shiro 用户指南
使用 Eclipse 和 Java SE 6 创建独立 Web Services 应用程序
第 1 部分: Web Services 服务端应用程序
第 2 部分: Web 服务客户端应用程序
JavaServer Faces 1.2 入门
第 1 部分: 构建基本应用程序
第 2 部分: JSF 生命周期、转换、检验和阶段监听器
用 Eclipse Europa 进行 Web 开发
第 1 部分: Eclipse Java EE
第 2 部分: PHP 开发工具
第 3 部分: Ruby Development Toolkit 和 RadRails
使用 JavaServer Faces 构建 Apache Geronimo 应用程序
第 1 部分: 使用 Eclipse 和 Apache MyFaces Core 构建基本的应用程序
第 2 部分: 在 JavaServer Faces 中使用 Tomahawk
第 3 部分: 使用 ajax4jsf 添加 Ajax 功能
第 4 部分: 使用 Apache Trinidad 组件扩展 JSF
第 5 部分: 将 JSF 应用程序与 Spring 集成
Apache Geronimo 和 Spring 框架
第 1 部分: 开发方法学
第 2 部分: 构建第一个应用程序
第 3 部分: 集成 DAO 与 ORM
第 4 部分: 混合使用 Spring AOP 和 Spring Web Flow
第 5 部分: Spring MVC
第 6 部分: Spring MVC:使用 Web 视图技术
终极 mashup —— Web 服务和语义 Web
第 1 部分: 使用与组合 Web 服务
第 2 部分: 管理 Mashup 数据缓存
第 3 部分: 理解 RDF 和 RDFs
第 4 部分: 创建本体
第 5 部分: 切换 Web 服务
Jersey 2.x 用户指南
MyBatis中文文档
JavaScriptGoogle JavaScript 代码风格指南
Airbnb JavaScript 规范
JavaScript 标准参考教程(alpha)
Javascript编程指南 (源码)
javascript 的 12 个怪癖
JavaScript 秘密花园
JavaScript核心概念及实践 (PDF) (此书已由人民邮电出版社出版发行,但作者依然免费提供PDF版本,希望开发者们去购买,支持作者)
《JavaScript 模式》翻译,此书中文版有售,但是纸质书翻译的还没有这个版本翻译的好
命名函数表达式探秘 (注:原文由为之漫笔翻译,原始地址无法打开,所以此处地址为我博客上的备份)
学用 JavaScript 设计模式 (开源中国)
深入理解JavaScript系列
ECMAScript 6 入门 (作者:阮一峰)
jQuery
jQuery 解构
简单易懂的JQuery魔法
How to write jQuery plugin
Node.js
Node入门
七天学会NodeJS
Nodejs Wiki Book (繁体中文)
express.js 中文文档
koa 中文文档
使用 Express + MongoDB 搭建多人博客
Express框架
nodejs文档
Node.js 包教不包会
Learn You The Node.js For Much Win! (中文版)
Node debug 三法三例
underscore.js
Underscore.js中文文档
backbone.js
backbone.js入门教程 (PDF)
Backbone.js入门教程第二版
Developing Backbone.js Applications(中文版)
AngularJS
AngularJS最佳实践和风格指南
AngularJS中译本
AngularJS入门教程
构建自己的AngularJS
在Windows环境下用Yeoman构建AngularJS项目
zepto 简明中文手册
Sea.js
Hello Sea.js
CoffeeScript
CoffeeScript Cookbook
The Little Book on CoffeeScript中文版
ExtJS
Ext4.1.0 中文文档
Chrome扩展及应用开发
JavaScript入门教程
PHPPHP调试技术手册(PDF)
XDebug 2中文手册(译) (CHM)
PHP之道
PHP 最佳实践
PHP安全最佳实践
深入理解PHP内核
PHP扩展开发及内核应用
CodeIgniter 用户指南
Laravel4 中文文档
Laravel 入门
Symfony2中文文档 (未译完)
Phalcon中文文档(翻译进行中)
YiiBook几本Yii框架的在线教程
简单易懂的PHP魔法
swoole文档及入门教程
iOSiOS开发60分钟入门
iOS7人机界面指南
Google Objective-C Style Guide 中文版
iPhone 6 屏幕揭秘
Apple Watch开发初探
马上着手开发 iOS 应用程序
网易斯坦福大学公开课:iOS 7应用开发字幕文件
AndroidAndroid Design(中文版)
Google Android官方培训课程中文版
Android学习之路
Python小白的Python教程
简明Python教程
零基础学Python
Python 2.7 官方教程中文版
Python 3.3 官方教程中文版
深入 Python 3
PEP8 Python代码风格规范
Google Python 风格指南 中文版
Python入门教程 (PDF)
Python的神奇方法指南
笨办法学 Python (PDF版下载)
Django 文档中文版
Django 最佳实践
The Django Book 中文版
web.py 0.3 新手指南
Web.py Cookbook 简体中文版
Dive Into Python 中文版
Bottle 文档中文版 (需翻墙)
Flask 文档中文版
Jinja2 文档中文版
Werkzeug 文档中文版
Flask之旅
Introduction to Tornado 中文翻译
Python自然语言处理中文版 (感谢陈涛同学的翻译,也谢谢 @shwley 联系了作者)
Python 绘图库 matplotlib 官方指南中文翻译
Scrapy 0.25 文档
ThinkPython
RubyRuby 风格指南
Rails 风格指南
笨方法学 Ruby
Ruby on Rails 指南
Ruby on Rails 实战圣经
Ruby on Rails Tutorial 原书第 2 版 (本书网页版免费提供,电子版以 PDF、EPub 和 Mobi 格式提供购买,仅售 9.9 美元)
编写Ruby的C拓展
Ruby 源码解读
ShellShell脚本编程30分钟入门
GoGo编程基础
Go入门指南
学习Go语言 (PDF)
Go Web 编程 (此书已经出版,希望开发者们去购买,支持作者的创作)
Go实战开发 (当我收录此项目时,作者已经写完第三章,如果读完前面章节觉得有帮助,可以给作者捐赠,以鼓励作者的继续创作)
Network programming with Go 中文翻译版本
Groovy实战 Groovy 系列
LaTeX一份其实很短的 LaTeX 入门文档
一份不太简短的 LATEX 2ε 介绍 (PDF版)
LISPANSI Common Lisp 中文翻译版
LuaLua编程入门
HaskellReal World Haskell 中文版
RR语言忍者秘笈
ScalaScala课堂 (Twitter的Scala中文教程)
Effective Scala(Twitter的Scala最佳实践的中文翻译)
Scala指南
SwiftThe Swift Programming Language 中文版
PerlModern Perl 中文版
Perl 程序员应该知道的事
Prolog笨办法学Prolog
Vim中文文档
Vimscript笨方法学Vimscript 中译本
Vim中文文档
读书笔记及其它 读书笔记编译原理(紫龙书)中文第2版习题答案
把《编程珠玑》读薄
Effective C++读书笔记
Golang 学习笔记、Python 学习笔记、C 学习笔记 (PDF)
Jsoup 学习笔记
学习笔记: Vim、Python、memcached
图灵开放书翻译计划–C++、Python、Java等
蒂姆·奥莱利随笔 (由译言网翻译,电子版免费)
Octave 入门 (PDF版)
SICP 解题集
精彩博客集合
正则表达式简明参考
大厂的C++开发环境基本都是“MacBook Pro+远程Linux主机”“,或者直接在Linux上开发,至少在腾讯、百度、Google这些C/C++技术栈为主的企业,主要都是通过这种方式工作。编辑器方面基本上都是Vim为主,部分人也会用Emacs,不过这几年随着Visual Studio Code变得越来越受欢迎,在大厂里面也开始有很多人开始使用。
工具到底重要不重要?真的非常重要大企业由于一些 历史 原因,导致了很多工具的使用已经成了固定的传承,就拿鹅厂来说,鹅厂之前用过SourceInsight作为主力开发工具,腾讯内部很多早期代码GBK,这个 历史 遗留问题直到现在还在困扰着腾讯的部分项目,大家也知道问题,不过想要彻底重构真的非常麻烦,工程量都是极大的,版本管理用过SVN,不过现在新的项目基本上也都是用Git管理。微信事业群也有正版的Clion这些工具供你使用,很多人也会用Vim、VS Code,不过本地基本上还是编辑器,大多数写好代码直接云端编译就好了。
Google可能是全世界最好的C++大厂了,这个不是吹的,如果你同时在Google、百度、腾讯这些大厂都工作过的话,你会发现Google为什么是这个星球上最牛的互联网公司,Google的代码规范就甩开很多大厂一个档次,Google的C++代码规范可能是这个星球上最好的代码规范了,没有之一。在Google你可以选择自己的办公电脑,一般台式机、笔记都会有。
Google并不会强制限制你用什么系统,但是Google有基于Debian定制Linux系统,很多人会用这套这是一个网络IDE,是的基于网络的,现在你应该明白为啥Google那么推崇Chrome下完成一切工作的原因了吧,因为他们自己连IDE都这么用。Linux,也有很多人用MacBook,用Windows系统的人也不再少数。大家写代码会用cider,也有很多使用Vim和Emacs的,甚至像贾扬清也说过,自己在Google就是用Sublime Text编辑器,总之选择会非常多样化,公司不会强制干涉。
工具真的非常重要,我非常不赞同很多人说,工具不重要,重要的是算法、重要的是数据结构,重要的是数学思维能力,我不否认内功的必要,但是有了好的内功,好的招数也非常重要,而开发工具就是你的武功招式。每个人不要去纠结别人怎么说,自己把主流的工具自己从头到尾试一下,最终选择一个自己顺手的工具就好,大体上来说大多数人的选择往往代表着一定的合理性。
好的工具能够极大地提高工作效率,不过我认为工具好与不好不是大众判定的,而是你自己用着顺手不顺手,不是说大多数人都喜欢的工具就一定是好的,得看每个人的使用习惯。就好比说我比较喜欢Emacs,不是很喜欢Vim,不代表Vim是更差的工具,这只是相对我而言,我更喜欢Emacs这个编辑器。
数学、算法、数据结构,这些基本功是修炼内功,不过光修炼内功也肯定不行,那么开发工作中这些编辑器、IDE、版本管理工具、以及编译器等等,都是你的工具,只有同时把内功和招数都练好了,你才能真正的无敌。
简单介绍下腾讯微信事业群后台开发环境。
微信事业群比较特殊,喜欢自己搞一套东西自己用,有些基础设施跟腾讯其他事业群的不太一样。
硬件:现在通常是macbook pro + 远程Linux主机。远程主机方面当前已经舍弃了以前集体户式的开发机,每人拥有一台相对独立的云主机,我的配置是8核Xeon Gold + 16GB + 500GB,考虑到这台机绝大多数时间只是跑个编辑器,性能还是挺富余的。
软件:版本控制: 目前基本都迁移到git了,以前是用svn。vim党基本都是直接用git命令,有些vs code的用户会在mac上用图形化的前端。
编译系统: 现在是基于bazel搞的一套东西,开发阶段编译代码时使用一条指令将本地代码diff发送到编译机来编译,这样可以共享很多中间文件,速度蛮快的。以前是在本地开发机编译,有些比较大的模块编一次几十分钟,而且编译吃掉太多cpu还会导致vim卡顿……
工具链: 用的是GCC那一套,由于后台服务都是微服务,每个小模块都可选使用gcc4或者gcc7构建,最近我写了个小模块用了c++17,就是用gcc7编译上线的。希望哪天可以支持clang,我比较喜欢clang的编译报错信息……
微信后台开发的一天(理想情况Orz): 其他一些碎碎念:微信的后台开发环境一直有很多槽点,但也一直在改进,每年都能看到一些进步。现在还没解决的比较影响开发效率的应该就是代码的语义分析工具了。
目前大家写代码的环境都是没有精确的跳转和补齐能力的,考虑到大家的环境很不统一,估计也没什么动力统一去搞。由于微信的后台代码量非常非常大,如果暴力把所有代码都加到一个工程里,ycm之类的东西根本跑不动,按一下tab卡5分钟还不一定能缓过来(gdb的时候也是不怎么敢按tab的)。
后台C++项目都是基于bazel的BUILD文件管理依赖,总体上来说比较粗放,基本上每个新人刚来的时候都会折腾一下这个东西,试图搞定基于BUILD的补全方案,但最后性能和准确性上很难满足日常使用的需求。目前我的解决方案是用universal-ctags定期给常用目录下的文件生成tags,写代码的时候凭经验去跳。
在微信写业务非常傻瓜化,微信的微服务框架svrkit准备了一堆配套工具来生成代码,新起一个服务就是写一个protobuf文件,里面定义好接口,然后用这个文件生成整个服务的框架代码,再把业务逻辑填进去就好了。
微信的C++基础库里面大到消息队列,小到string的trim都有提供,写普通的业务代码需要什么功能基本都可以找到,完全就是堆积木,对普通的业务部门来说,面试造火箭入职拧螺丝一点都不夸张。
微信的开发最讨厌的事情有两个:一个是别人写的代码没有注释,另一个是自己写代码还要写注释。这造成了很多工具、功能、逻辑的细节都是口口相传,或者沉没在浩如烟海的km文章、邮件里。没事去看看别人的代码总会有惊喜……有时是惊吓。当然这一点最近也在慢慢改变,基础能力相关的组件开始开辟一些wiki、git issue之类的进行系统的介绍了。
离开项目运行场景来谈开发环境,没有一点意义。这主要还是看你的项目应用场景。选什么开发环境,如果项目组没有特殊要求,完全可以自行决定,只要你可以保证代码可以在公司统一的编译环境编译通过就OK了。下面谈谈最常见的Linux、Windows平台C++常用的开发工具。
1、Linux如果产品最终在Linux平台运行,下面谈谈自己身边使用率最高的两种。
1)Vim
号称 编辑器之神 ,也许真的也就只有神一般的人才会坚持使用。身边很多老一辈的程序员对Vim的使用到了炉火纯青的地步,C++开发过程中配合智能提示杀手锏插件 YouCompleteMe ,这玩意配置好了,几乎可以达到IDE的高效。强大的快捷键功能让你专心投入代码。选择Vim的大部分都是直接在Linux平台进行开发。
2)SourceInsight
这里很多人都是在Windows平台开发,然后远程将代码上传到Linux环境进行编译。同步方式多种多样,有用samba挂载Linux开发的目录到Window上变成虚拟目录的,我比较习惯的是WinSCP,可以实现自动同步。
当然,现在很多人也会选择VSCode进行开发,毕竟这玩意跨平台支持,而且要比Vim好上手。
2、Windows如果你的项目最终运行在Windows环境下,那么C++开发,当然是选择 宇宙第一IDE 了,VisualStudio系列当之无愧。最新版本的VS已经和Git无缝接合,而且支持CMake项目的创建,不仅支持Win项目的调试,更支持Linux远程调试。
最大的缺点可能就是安装包实在是太大了,最新版的安装包大小,仅仅勾选C++,就需要9.46G的空间,当然,现在都已经2021年了,我相信这么一点磁盘空间对你来说不是什么大事情。
最新版本的VS已经支持Mac平台了,不过目前尚不支持C++开发。
如果不是项目特殊需求,不建议再去选择VC6这样的老古董了。不支持C99新语法,C++11 更别提了。重要的事情说三遍, 千万不要用VC6.0!千万不要用VC6.0!千万不要用VC6.0!
腾讯不限制使用某一种编辑器,可按个人喜好自由选择。
看了上面的回答,腾讯C++开发环境仅仅用linux不可信。
首先早期的oicq以及之后的qq客户端都是基于windows平台的,没有linux平台应用场景(之前很长时间甚至linux版本的软件),不可能在linux上开发。
现在的微信软件,在android和ios上运行,windows也有相关的客户端,应该是一套代码,在不同平台上编译。
微信和qq服务器考虑到并发和部署,应该是基于linux系统或者unix系统。
其它的 游戏 业务估计也差不多。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)