chaoz的杂货铺

生命有息、学无止境、折腾不止

0%

左耳朵大叔推荐的实战项目

程序员练级攻略(2018)

实践项目一

无论你用Python,还是Node.js,还是PHP,我希望你能做一个非常简单的Blog系统,或是BBS系统,需要支持如下功能:

  • 用户登录和注册(不需密码找回)。
  • 用户发贴(不需要支持富文本,只需要支持纯文本)。
  • 用户评论(不需要支持富文本,只需要支持纯文本)。
  • 你需要从前端一直做到后端,也就是说,从HTML/CSS/JavaScript,到后面的PHP(Python/Node.js),再到数据库。这其中需要你查阅很多的知识。

这里有几个技术点你需要关注一下

  • 用户登录时的密码不应该保存为明文,应该用MD5+Salt来保存(关于这个是什么,希望你能自行Google).
  • 用户登录后,对于用户自己的贴子可以有 “重新编辑” 或 “删除” 的功能,但是无权编辑或删除其它用户的贴子。
  • 数据库的设计,你需要三张表:用户表、文章表和评论表,它们之间是怎么关联的,你需要学习一下。- 这里有个PHP的blog教你怎么建表,你可以 前往一读。

    如果你有兴趣,你可以顺着这个小项目,研究一下下面这几个事:

  • 图片验证码。

  • 上传图片。
  • 阻止用户在发文章或评论时输入带HTML或JavaScript的内容。
  • 防范SQL注入。参看 PHP官方文档微软官方文档 ,或者你自己Google一下。

上面这些东西,不是什么高深的东西,但是可以让你从中学到很多东西。相信你只需要自己Google一下就能搞定。

实践项目二

这回我们需要设计一个投票系统的项目。

业务上的需求如下:

  • 用户只有在登录后,才可以生成投票表单。
  • 投票项可以单选,可以多选。
  • 其它用户投票后显示当前投票结果(但是不能刷票)。
  • 投票有相应的时间,页面上需要出现倒计时。
  • 投票结果需要用不同颜色不同长度的横条,并显示百分比和人数。

技术上的需求如下:

  • 这回要用Java Spring Boot来实现了,然后,后端不返回任何的HTML,只返回JSon数据给前端。
  • 由前端的JQuery来处理并操作相关的HTML动态生成在前端展示的页面。
  • 前端的页面还要是响应式的,也就是可以在手机端和电脑端有不同的呈现。 这个可以用Bootstrap来完成。

如果你有兴趣,还可以挑战以下这些功能:

  • 在微信中,通过微信授权后记录用户信息,以防止刷票。
  • 可以不用刷页面,就可以动态地看到投票结果的变化。
  • Google一些画图表的JavaScript库,然后把图片表得风骚一些。
实践项目三

我们已经学习完了编程语言、理论学科和系统知识三部分内容,下面就来做几个实践项目,小试牛刀一下。实现语言可以用C、C++或Java。

实现一个telnet版本的聊天服务器,主要有以下需求。

  • 每个客户端可以用使用telnet ip:port的方式连接到服务器上。
  • 新连接需要用用户名和密码登录,如果没有,则需要注册一个。
  • 然后可以选择一个聊天室加入聊天。
  • 管理员有权创建或删除聊天室,普通人员只有加入、退出、查询聊天室的权力。
  • 聊天室需要有人数限制,每个人发出来的话,其它所有的人都要能看得到。

实现一个简单的HTTP服务器,主要有以下需求。

  • 解释浏览器传来的HTTP协议,只需要处理URL path。
  • 然后把所代理的目录列出来。
  • 在浏览器上可以浏览目录里的文件和下级目录。
  • 如果点击文件,则把文件打开传给浏览器(浏览器能够自动显示图片、PDF,或HTML、CSS、JavaScript以及文本文件)。
  • 如果点击子目录,则进入到子目录中,并把子目录中的文件列出来。

实现一个生产者/消费者消息队列服务,主要有以下需求。

  • 消息队列采用一个Ring-buffer的数据结构。
  • 可以有多个topic供生产者写入消息及消费者取出消息。
  • 需要支持多个生产者并发写。
  • 需要支持多个消费者消费消息(只要有一个消费者成功处理消息就可以删除消息)。
  • 消息队列要做到不丢数据(要把消息持久化下来)。
  • 能做到性能很高。
喜欢这篇文章?打赏一下作者吧!

欢迎关注我的其它发布渠道