1.要成为一名专业的源码程序员,从零开始需要怎么一步步来比较好,源码要把最底层的源码先学精通吗?(个人认为)求学长
2.MySQL 调试环境搭建:VSCode + Docker
3.软件开发工具包括哪些方面
4.fedoraå®è£
缺å°çpackage
要成为一名专业的程序员,从零开始需要怎么一步步来比较好,源码要把最底层的源码先学精通吗?(个人认为)求学长
前言
你是否觉得自己从学校毕业的时候只做过小玩具一样的程序?走入职场后哪怕没有什么经验也可以把以下这些课外练习走一遍(朋友的抱怨:学校课程总是从理论出发,作业项目都看不出有什么实际作用,源码海免溯源码假不如从工作中的源码需求出发)
建议:
不要乱买书,不要乱追新技术新名词,源码基础的源码东西经过很长时间积累而且还会在未来至少年通用。
回顾一下历史,源码看看历史上时间线上技术的源码发展,你才能明白明天会是源码什么样。
一定要动手,源码例子不管多么简单,源码建议至少自己手敲一遍看看是源码否理解了里头的细枝末节。
一定要学会思考,思考为什么要这样,而不是那样。还要举一反三地思考。
注:你也许会很奇怪为什么下面的东西很偏Unix/Linux,这是object hashcode源码因为我觉得Windows下的编程可能会在未来很没有前途,原因如下:
现在的用户界面几乎被两个东西主宰了,1)Web,2)移动设备iOS或Android。Windows的图形界面不吃香了。
越来越多的企业在用成本低性能高的Linux和各种开源技术来构架其系统,Windows的成本太高了。
微软的东西变得太快了,很不持久,他们完全是在玩弄程序员。详情参见《Windows编程革命史》
所以,我个人认为以后的趋势是前端是Web+移动,后端是Linux+开源。开发这边基本上没Windows什么事。
启蒙入门
1、 学习一门脚本语言,例如Python/Ruby
可以让你摆脱对底层语言的恐惧感,脚本语言可以让你很快开发出能用得上的小程序。实践项目:
处理文本文件,或者csv (关键词 python csv, python open, python sys) 读一个本地文件,逐行处理(例如 word count,android activity 源码或者处理log)
遍历本地文件系统 (sys, os, path),例如写一个程序统计一个目录下所有文件大小并按各种条件排序并保存结果
跟数据库打交道 (python sqlite),写一个小脚本统计数据库里条目数量
学会用各种print之类简单粗暴的方式进行调试
学会用Google (phrase, domain, use reader to follow tech blogs)
为什么要学脚本语言,因为他们实在是太方便了,很多时候我们需要写点小工具或是脚本来帮我们解决问题,你就会发现正规的编程语言太难用了。
2、 用熟一种程序员的编辑器(不是IDE) 和一些基本工具
Vim / Emacs / Notepad++,学会如何配置代码补全,外观,外部命令等。
Source Insight (或 ctag)
使用这些东西不是为了Cool,而是这些编辑器在查看、修改代码/配置文章/日志会更快更有效率。
3、 熟悉Unix/Linux Shell和常见的命令行
如果你用windows,至少学会用虚拟机里的linux, vmware player是免费的,装个Ubuntu吧
一定要少用少用图形界面。
学会使用man来查看帮助
文件系统结构和基本操作 ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip …
学会使用一些文本操作命令 sed/awk/grep/tail/less/more …
学会使用一些管理命令 ps/top/lsof/netstat/kill/tcpdump/iptables/dd…
了解/etc目录下的携程 源码各种配置文章,学会查看/var/log下的系统日志,以及/proc下的系统运行信息
了解正则表达式,使用正则表达式来查找文件。
对于程序员来说Unix/Linux比Windows简单多了。(参看我四年前CSDN的博文《其实Unix很简单》)学会使用Unix/Linux你会发现图形界面在某些时候实在是太难用了,相当地相当地降低工作效率。
4、 学习Web基础(HTML/CSS/JS) + 服务器端技术 (LAMP)
未来必然是Web的世界,学习WEB基础的最佳网站是W3School。
学习HTML基本语法
学习CSS如何选中HTML元素并应用一些基本样式(关键词:box model)
学会用 Firefox + Firebug 或 chrome 查看你觉得很炫的网页结构,并动态修改。
学习使用Javascript操纵HTML元件。理解DOM和动态网页(Dynamic HTML: The Definitive Reference, 3rd Edition - O'Reilly Media) 网上有免费的章节,足够用了。或参看 DOM 。
学会用 Firefox + Firebug 或 chrome 调试Javascript代码(设置断点,查看变量,性能,控制台等)
在一台机器上配置Apache 或 Nginx
学习PHP,让后台PHP和前台HTML进行数据交互,freertos 源码分析对服务器相应浏览器请求形成初步认识。实现一个表单提交和反显的功能。
把PHP连接本地或者远程数据库 MySQL(MySQL 和 SQL现学现用够了)
跟完一个名校的网络编程课程(例如:(升级版为Kyoto Cabinet)、Flare、MongoDB、CouchDB、Cassandra、Voldemort等。
MySQL 调试环境搭建:VSCode + Docker
搭建 MySQL 调试环境,选择基于 Docker 的 CentOS 环境,结合 VSCode 和 gdb 是一个不错的选择。以下步骤详细介绍了如何实现这一目标。
首先,下载并安装 Docker Desktop。进入 Docker Desktop 设置,允许宿主机目录映射到容器中,设置为 /opt/data/docker。然后,在宿主机执行命令,创建并运行 Docker 容器,连接容器中的 MySQL 时需要进行端口映射。
安装 VSCode 扩展,包含宿主机 Docker 扩展和容器中需要的 C/C++ 扩展以及 CMake Tools 扩展。使用 VSCode 连接到之前创建的 Docker 容器,通过 C/C++ 扩展配置调试。
为了准备编译,首先使用命令进入 mysql 容器,然后执行下载源码和安装依赖的命令。在容器中进行编译,创建 .vscode 目录并新建 settings.json 文件,设置 cmake.parallelJobs 控制并发线程数,以加快编译速度。如果遇到编译错误,可以调整 cmake.parallelJobs 值或在 Docker Desktop 中增加容器资源。
进行 CMake 配置,生成 Makefile 文件。选择编译器,如果配置过程中出现错误,解决错误后删除 CMakeCache.txt 文件,重新执行 CMake 配置步骤。编译服务端和客户端可执行程序,使用 CMake:生成目标命令。
环境初始化完成后,使用 VSCode 调试。首先创建 launch.json 文件,配置调试参数。启动调试后,通过容器中的 mysql 客户端可执行程序连接 MySQL,然后在代码中设置断点并执行 SQL,利用 gdb 命令查看运行时信息和调用栈。
通过 VSCode + Docker 调试 MySQL,可以实现高效、直观的代码调试,解决在 Mac 上使用 gdb 调试时的不顺畅问题。希望本文的介绍对搭建 MySQL 调试环境的读者有所帮助,如果在搭建过程中遇到问题,欢迎在留言区交流分享解决方案。
软件开发工具包括哪些方面
软件开发工具涵盖了多个方面,用于支持开发、测试和维护软件。以下是一些常见的软件开发工具方面:1.集成开发环境(IDE):
IDE提供了一个集成的开发环境,包括代码编辑器、调试器、编译器等工具。常见的IDE有VisualStudio、Eclipse、IntelliJIDEA等。
2.代码编辑器:
用于编写、编辑和管理代码的工具,如VisualStudioCode、SublimeText、Atom等。
3.版本控制系统:
版本控制工具用于跟踪和管理代码的变更,常见的工具有Git、SVN等。
4.编译器和解释器:
用于将源代码翻译成机器代码或字节码的工具。例如,Java有Java编译器,Python是一种解释型语言,使用解释器执行代码。
5.调试器:
用于识别和修复代码中的错误和bug。常见的调试器有GDB(GNU调试器)、pdb(Python调试器)等。
6.性能分析工具:
帮助开发人员评估和优化代码性能的工具,例如Valgrind、Profiling工具等。
7.构建工具:
用于自动化代码构建和部署的工具,如ApacheMaven、Gradle、Make等。
8.数据库管理工具:
用于管理数据库,执行SQL查询和维护数据库结构的工具,例如MySQLWorkbench、MicrosoftSQLServerManagementStudio等。
9.测试工具:
用于执行自动化测试、性能测试和单元测试的工具,如Selenium、JUnit、Postman等。
.集成测试和持续集成工具:
用于自动执行集成测试和实施持续集成的工具,如Jenkins、TravisCI等。
.文档工具:
帮助开发团队创建和维护文档的工具,如Swagger、Doxygen等。
这些工具共同协作,为开发人员提供了一个高效的开发环境,提高了软件开发的效率和质量。
以上内容是由猪八戒网精心整理,希望对您有所帮助。
fedoraå®è£ 缺å°çpackage
ä¸è½½å¥½Fedora Linuxåï¼ç¬¬ä¸ä»¶äºå°±æ¯æ建Linux c/c++å¼åç¯å¢ï¼åæéè¦æ建javaå¼åç¯å¢ã
ç¼è¾å¨ï¼vim
éè¦å®è£ 软件gcc, gdbï¼
代ç ç´¢å¼å·¥å ·ï¼ctagsï¼
æ°æ®åºè½¯ä»¶mysqlï¼
ä½¿ç¨ yum å½ä»¤å®è£ åå级åºç¨ç¨åº (ä¸) - å¨çº¿å®è£
yum 主è¦éè¿ä»ç½ç»è½¯ä»¶å ä»åº (Package Repositories) ä¸è½½ææ°ç软件å (RPM æ ¼å¼)并è¿è¡å®è£ ï¼å æ¤éè¿ yum å¯ä»¥è·å¾ææ°ç软件çæ¬ãé¤æ¤ä¹å¤ï¼ä¹å¯ä»¥éè¿ yum å®è£ æå级åæ¾å¨æ¬å°ç软件å ã
å¨ Fedora ä¸å®è£ åå级åºç¨ç¨åºååç®åï¼é¤äºå¯ä»¥ä½¿ç¨ç¹æç yum å·¥å ·ä»¥å¤ï¼ä¹å¯ä»¥ä½¿ç¨ RPM å DEB 软件å ï¼æè èªè¡éè¿æºä»£ç å®è£ åå级ãæ¬æä»ç» yum å·¥å ·ç使ç¨æ¹æ³ã
yum 主è¦éè¿ä»ç½ç»è½¯ä»¶å ä»åº (Package Repositories) ä¸è½½ææ°ç软件å (RPM æ ¼å¼)并è¿è¡å®è£ ï¼å æ¤éè¿ yum å¯ä»¥è·å¾ææ°ç软件çæ¬ãå½ä½¿ç¨è¿ä¸ç¹æ§æ¶ï¼èªç¶è¦æ±è®¡ç®æºè½å¤è¿æ¥å°ç½ç»ãé¤æ¤ä¹å¤ï¼ä¹å¯ä»¥éè¿ yum å®è£ æå级åæ¾å¨æ¬å°ç软件å ã
为äºä¿è¯å®è£ åå级è¿ç¨ä¸åºç°æéé®é¢ï¼å»ºè®®å¨è¿è¡ yum åä½¿ç¨ su åæ¢å° root ç¨æ· (ä¸å»ºè®®ç´æ¥ä½¿ç¨ root ç»å½å°ç³»ç»)
[lugir@hope ~]$ su
Password:
[root@hope lugir]#
说æï¼è¿è¡ su å½ä»¤åæ¢ä¸º root ç¨æ·ï¼å¹¶ææ示è¾å ¥å¯ç ã注æåæ¢ä¹åå½ä»¤æ示符çååãç¨æ·åç± lugir åæ rootï¼å½åç®å½åç± ~ åæ lugir (å 为 ~ 表示å½åç¨æ·çæ ¹ç®å½ï¼å¯¹ lugir èè¨ /home/lugir å°±æ¯ ~ ç®å½ï¼ä½åæ¢æ root ç¨æ·ä¹åï¼åæ¾ç¤ºç®å½å称 lugir)ï¼è¿æå½ä»¤æç¤ºç¬¦ç± $ å为 #ã
è¿è¡ yum å®è£ gcc
[root@hope lugir]# yum install gcc
设置å®è£ è¿ç¨
解å³ä¾èµå ³ç³»
â¦â¦ [çç¥ä¾èµå ³ç³»è¾åº]
äºå¡æ¦è¦
============================
å®è£ ããã9 软件å
æ´æ°ããã3 软件å
æä¸è½½éï¼ M
ç¡®å®å ? [y/N]: y
ä¸è½½è½¯ä»¶å ï¼
â¦â¦ [çç¥ä¸è½½è¿ç¨è¾åº]
å¯¼å ¥ GPG å¯é¥ â¦â¦[çç¥] æ¥èª /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-i
ç¡®å®å ? [y/N]: y
â¦â¦[çç¥æ£æµä¿¡æ¯è¾åº]
æ§è¡äºå¡
æ£å¨å®è£ ããKernel-headers-2.6..-.2.3.fc.i [####ããããã]ãã1/
â¦â¦
å®æ¯ !
[root@hope lugir]# exit
exit
[lugir@hope ~]$
说æï¼
è¾å ¥å½ä»¤ âyum install [软件å å称]â å¼å§è¿è¡å®è£ åæ´æ°
解å³ä¾èµå ³ç³» - å¾å¤åºç¨ç¨åºä¹é´åå¨ä¾èµæ§ï¼ä½¿ç¨ yum è¿è¡å®è£ æ¶ï¼yum ä¼å¯¹è½¯ä»¶å çä¾èµæ§è¿è¡æ£æ¥ãä¾å¦ä¸ä¾åä¸åªæ¯è¦å®è£ gccï¼ä½ yum æ£æ¥å®ä¾èµæ§ä¹åå´è¦å®è£ 9 个软件å ï¼å¹¶å¯¹ 3 个软件å è¿è¡æ´æ°ãæä»¥ä½¿ç¨ yum å®è£ ç¨åºä¸ç¨èªå·±å»è§£å³è½¯ä»¶å ä¾èµæ§ï¼ååçæ¹ä¾¿ã
ææ°ä¸è½½é Mï¼ç¡®å®å? [y/N] - å½ç¶ y äºï¼ä¸ç¶æä¹ä¸è½½å¢ :D
å¯¼å ¥ GPG å¯é¥ - 并ä¸æ¯æ¯æ¬¡å®è£ æ¶é½ä¼åºç°è¿ä¸ªï¼ä¸è¬æ åµä¸é½å¯ä»¥å¯¼å ¥ (å ³äº GPG å¯é¥ä»¥åä¼è®²)
å®è£ å®æä¹åï¼è®°å¾ä½¿ç¨ exit 注é root ç¨æ· (åªå¨æéè¦çæ¶åä½¿ç¨ root ç¨æ·æ¯ä¸ªå¥½ä¹ æ¯ :D)
è¿è¡ yum æ¶è¾åºäºå¾å¤å 容ï¼å®é ä¸æ们åªè¿è¡äºä¸æ¡å½ä»¤ï¼åµåµã
PSï¼ä½¿ç¨ yum è¿è¡å®è£ æ¶ï¼å¿ é¡»ç¥é软件å çå称ãæå ³ yum çæ¥è¯¢åè½è§ã ä½¿ç¨ yum å½ä»¤å®è£ åå级åºç¨ç¨åº (ä¸) - å ¶å®åè½ã
éè¿ yum å¯ä»¥å¨çº¿å®è£ å¾å¤åºç¨ç¨åºï¼ä¸è¿æäºç¨åºå¹¶ä¸åå¨äºé»è®¤ç软件å ä»åºä¸(以åä¼è®²)ï¼æ以ææ¶è¿éè¦æä»¬å° RPM 软件å ä¸è½½ä¸æ¥ï¼åä½¿ç¨ yum çæ¬å°å®è£ åè½ :D