加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

unix编程艺术 程序员新手入门攻略(程序员进阶升级全攻略)

发布时间:2022-12-16 14:38:03 所属栏目:Unix 来源:转载
导读: 前言
从学校走入职场后,我们总是听到这样的抱怨:学校课程总是偏向理论知识unix编程艺术,看不出有什么实际的作用,还不如从工作中的实际出发。
面对有志于程序员这个职业的人群,我们给出

前言

从学校走入职场后,我们总是听到这样的抱怨:学校课程总是偏向理论知识unix编程艺术,看不出有什么实际的作用,还不如从工作中的实际出发。

面对有志于程序员这个职业的人群,我们给出以下建议:

不乱追新:新书、新技术、新知识,因为基础的东西是经过长时间的积累,在未来十年至少是通用的。

反观历史:分析,并归纳、总结出过去线上技术的发展,做到知古通今

消除惰性:不管例子多简单,都要动手手敲一遍,以免忽略其中的细节。

未来大势所趋:根据经验所知:未来趋势,前端是 Web 移动,后端是 Linux 开源;开发这边基本上可以忽略Windows 。

原因如下:

现在的用户界面几乎只有两个:Web,移动设备 iOS 或 Android,Windows 的图形界面不被看好;越来越多的企业在用成本低性能高的 Linux 和各种开源技术来构架其系统,Windows 的成本太高;微软的东西变得太快,因此不持久。

一、入门阶段

1、 学习一门脚本语言,例如 Python、Ruby,可以摆脱你对底层语言的恐惧感,并且开发出有用的小程序。

2、 用熟一种程序员的编辑器 (不是 IDE) 和一些基本工具,这样可以让你在查看、修改代码、配置文章、日志会更加高效。

3、 熟悉 Unix、Linux Shell 和常见的命令行,你会发现Unix/Linux 比 Windows 简单并且高效。

4、 学习 Web 基础 (HTML/CSS/JS) 服务器端技术 (LAMP)

未来必然是 Web 的世界,学习 WEB 基础的最佳网站是 W3School。

二、进阶阶段

1、 C 语言和操作系统调用

unix编程艺术_unix编程艺术 中文_unix编程艺术 pdf

1、用这些系统知识操作一下文件系统,用户(实现一个可以拷贝目录树的小程序);

2、用 fork/wait/waitpid 写一个多进程的程序,用 pthread 写一个多线程带同步或互斥的程序。多进程多进程购票的程序;

3、用 signal/kill/raise/alarm/pause/sigprocmask 实现一个多进程间的信号量通信的程序;

4、学会使用 gcc 和 gdb 来编程和调试程序;

5、学会使用 makefile 来编译程序;

6、IPC 和 Socket 的东西可以放到高级中来实践。

1、写一个窗口,了解 WinMain/WinProcedure,以及 Windows 的消息机制;

2、写一些程序来操作 Windows SDK 中的资源文件或是各种图形控件,以及作图的编程;

3、学习如何使用 MSDN 查看相关的 SDK 函数,各种 WM_消息以及一些例程;

4、这本书中有很多例程,在实践中请不要照抄,试着自己写一个自己的例程;

5、不用太多于精通这些东西,因为 GUI 正在被 Web 取代,主要是了解一下 Windows 图形界面的编程。@virushuo 说:“ 我觉得 GUI 确实不那么热门了,但充分理解 GUI 工作原理是很重要的。包括移动设备开发,如果没有基础知识仍然很吃力。或者说移动设备开发必须理解 GUI 工作,或者在 win 那边学,或者在 mac/iOS 上学”。

2、学习 Java

3、Web 的安全与架构

1、使用 HTML5 的 canvas 制作一些 Web 动画;

2、尝试在前面开发过的那个 Web 应用中进行 SQL 注入,JS 注入,以及 XSS 攻击;

3、把前面开发过的那个 Web 应用改成构造在 Nginx PHP-FPM 静态页面缓存的网站。

4、学习关系型数据库

unix编程艺术 pdf_unix编程艺术 中文_unix编程艺术

5、一些开发工具

三、高级阶段

1、C / Java 和面向对象

我个人以为学好 C 、Java也就是举手之劳。但是 C 的学习曲线相当的陡。不过,我觉得 C 是最需要学好的语言了。参看两篇趣文“C 学习信心图” 和“21 天学好 C ”

1、用 C 实现一个 BigInt,支持 128 位的整形的加减乘除的操作;

2、用 C 封装一个数据结构的容量,比如 hash table;

3、用 C 封装并实现一个智能指针(一定要使用模板)。

1、使用工厂模式实现一个内存池;

2、使用策略模式制做一个类其可以把文本文件进行左对齐,右对齐和中对齐;

3、使用命令模式实现一个命令行计算器,并支持 undo 和 redo;

4、使用修饰模式实现一个酒店的房间价格订价策略——旺季,服务,VIP、旅行团、等影响价格的因素;

1、做一个贪吃蛇或是俄罗斯方块的游戏。支持不同的级别和难度;

2、做一个文件浏览器,可以浏览目录下的文件,并可以对不同的文件有不同的操作,文本文件可以打开编辑,执行文件则执行之,mp3 或 avi 文件可以播放,图片文件可以展示图片。

C 和 Java 都不是能在短时间内能学好的,C 玩是的深,Java 玩的是广,我建议两者选一个。我个人的学习经历是:

2、加强系统了解

重要阅读下面的几本书:

1、理解什么是阻塞(同步 IO),非阻塞(异步 IO),多路复用(select、 poll、epoll)的 IO 技术;

2、写一个网络聊天程序,有聊天服务器和多个聊天客户端(服务端用 UDP 对部分或所有的的聊天客户端进 Multicast 或 Broadcast);

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章