一个新手的学习总结
写这篇文章一方面是为了放松一下疲惫一周的自己,一方面是为了给大家介绍一下学习经历,另外申请推荐到首页,多谢啦~
本人Linux C程序员,专注服务器程序设计与服务器架构与优化,阅读过的源码涉及lighttpd,nginx,jabberd2,memcached等,主要热衷于钻研lighttpd,apache,nginx等Web服务器的设计与实现,对其架构与设计细节具有源码级别的认识。
苦于终日敲C语言已经变得麻木不仁,并且本人具有一定的理想与对未来创业的展望,所以不希望停留在底层编码设计阶段,希望上层建筑也得到一定的升华,从而辅佐下层建筑,从而成为一个上层与下层兼容一身的牛逼的程序员。
正如前面所说,起初关注的是apache源码,看了几日感觉人生短暂,不能全部花费在如此庞然巨物之上,所以购买了《Apache源码剖析》,借助这本神物将Apache的prefork,worker的多进程架构与实现细节统统纳入脑中。正因为Apache的学习有些偷工减料,同时发现太多的http与 mod的用途完全不懂,于是决定以一个轻量级的源码:lighttpd展开细致的源码剖析,誓死不罢休。
阅读源码起初并不是很艰难,因为有过memcached的源码阅读经历,所以在阅读外围代码(相对于核心代码而言)时也是如鱼得水,颇有收获。随着进入核心代码的阅读,发现非常缺乏HTTP与WEB服务器的基础知识,举步难行。
于是,购买了《构建高性能Web站点》一书,在3天内将其阅读完毕,收获难以言喻,配合不断的百度搜索优秀博文,借助它们对HTTP协议,WEB服务器架构设计,以及整个站点的组成方面得到了很重要的突破,虽然此时并没有太多的感悟与知识串联。随着继续这样的源码阅读与搜索学习,lighttpd代码被完整的稀里糊涂的看完了,其中掠过了某些Plugin(Mod)的阅读,而且对于Plugin架构的设计还有一点源码级别的疑惑(这个问题在后来公司实习过程中结合Jabberd2和实际的开发已经彻底领悟)。
在此之后的一段时间内,会不断的思考lighttpd源码,不断的发现问题,于是更多的去搜索与思考,回顾源码细节,重新梳理源码体系。但还是遗留了若干的疑惑,所以不得不开始nginx的代码阅读,希望从中能找到答案,当然这个源码只读了很少的一部分,主要几种在http request的parse部分和多进程工作模型与I/O部分。
此时,对于HTTP协议的交互实现原理已经达到了一定的认识,借助《构建高性能…》一书中对http协议的详细介绍,对所有的http字段都有了较为透彻的认识。
讲到这里,发现要说的太多,只好快速的过度到Web学习阶段。
学Web的原因很简单,文章一开始也提到了,我想做自己的事,而最快的方法无非是移动终端或者Web应用,而Web应用在PC端和移动终端都可以适用,并且Web应用也是任何应用的一个重要推广平台,其次Web服务器可以很快速的架设非Web类应用,其本身的分布式协议(Http),简单的访问方式(get/post),无状态短连接特性本身就是一个完美的神物,尤其对于我这种研究过Web服务器实现的人来说,我甚至可以看到协议之下的字节流。。。(哈哈)
也就是在这之后,我到公司实习,很快的就因为工作任务接触到了C语言开发一个HTTP服务器,需要接受任何合法的HTTP请求,并存储转发其数据。这个过程是借助XML+Nginx提供的http_parser库快速开发实现的,基于epoll的多进程架构,其中还需要涉及到jabbered2的源码阅读(在公司期间花了一周多时间读RFC协议与源码)。
随着与Web打交道的越来越多,并且公司要求每个人必须掌握C/PHP,于是Web的学习之路很快的提上了行程。
从0开始总是艰难的,需要毅力。起初总是找不到正确的学习路子,我习惯于来CSDN听听大家的建议,给自己的计划做一些参谋,就像我现在小有成就就喜欢来写个文章分享分享放松放松(也有炫耀炫耀~)。咨询过之后,觉得摆在面前的html,css,js,ajax,php都是些神马东西,这么多怎么学。无奈,只能慢慢学,抱着无限对知识的渴望,在w3school花了最多三天时间,把html,xhtml,css,js,ajax,php,mysql全看完了,就是左边栏的内容全看完了。但是我一行代码也没敲过,看完很快忘干净了。
放下了好几天,一直没动力再看。这时候,也就是2周前,我觉得我连一个静态页面都写不出来还怎么混下去,DIV+CSS定位一定要整明白,js怎么也得把基础折腾明白,jquery再说吧。我决定看视频学习,于是借助公司的高带宽让电驴尽情的挥洒汗水。。下载了两个系列的视频,一个是讲html+css的传智播客视频,一个是lamp兄弟联的PHP视频,它们都讲了html+css+js+ajax,我就先看了lamp的,一整天在公司里带着耳机看,下班回去看到半夜,恩。。。两个系列我都在3天左右看完了html+css部分,于是回家在自家路由器上架设了一个Linux服务器,在之上部署了lnmp,路由器NAT可以外网直接访问,配置花生壳DDNS,开始写静态页面练习CSS+DIV。
写静态页面就是找个网站开始模仿,模仿样子不模仿代码。。。于是很快的发现写起来很简单,但用IE就出问题,调来调去都折腾不对,于是积极性被严重打击,休息了一天,来CSDN问了一下,结果自己找到一篇好博文,原来IE很多BUG需要特殊对待,比如我遇到的float块元素的margin是双倍的,这是导致我那些不兼容的主要诱因,于是我的页面开始在IE与非IE下渐渐的一致了,推倒重写了几次,参考了糗百等简单页面的代码,添加了弹出式下拉菜单,滚动广告,浮动跟随广告,也就顺便把js和dom练了练,感觉自信多了一点(C出身的我在大学期间是玩算法的,纯属炫耀,不解释)。
渴望学习Web与真正学习Web这期间,我也出现过一些原则上的错误,比如买了《Python学习手册》并很快的将之看完,之后很快被遗忘干净(其实我是讨厌python的,因为它把函数封装到一个一个的库里,我讨厌简单问题复杂化)。在这之后,也就是前端的基本东西都掌握了之后,感觉应该深入php学习了,深入就不应该看视频!!视频对于入门真的很有帮助,我犹记得以前冲动学WINDOWS开发的时候看的孙鑫的视频,以及帮助我算法入门的严蔚敏数据结构视频(曾经一个寒假每天翘着腿看视频敲数据结构),必须承认视频是入门的法宝,但真正的深入修炼还是靠多读书,多思考总结,多敲代码试验,才能找到身为一个程序员的技术自信心。
参考买什么书学习也是在当当,amazon观察了很久,最终决定相信同为
“圣经”的《PHP和MYSQL Web开发》,我始终相信圣经的力量,就像相信《UNIX环境高级编程》,《UNIX网络编程》一样,虔诚的膜拜之。严重质疑与谴责那些在图书评价中说任何“圣经”书籍“太简单”,“印刷质量差”,“没光碟”等恶心行为,它们一定程度影响了我的正确判断。
《PHP和MYSQL Web开发》是从上周中开始,今天周3看完的,大约5,6天左右。很多人一定要质疑我看书与看视频的速度与质量了,请尽情的质疑。。。其实看书的时候我是抱着这样一个计划看的:1,语法细节精通!2,注意addslashes,stripslashes,htmlspecialchars,urlencode等安全函数的用途(真是结合了很多额外的介绍才真正的正确把握用法,之前真的很多错误认识,太可怕了)3,重视后半部分的所有实例开发。4,获得足够多的Web开发自信。
抱着无穷无尽对知识的渴望,我基本不休息的全天看书,不懂就敲,但发现好像人老了脑子不好使了,经常遇见不会的东西以为脑子会记住一会再查,结果一会就怎么都想不起来了,于是就合上书苦思冥想我刚才到底疑惑在哪里。。。发现这个问题之后,我就开始做笔记了,当然不是记我会什么,而是记下来我一会要敲代码试验试验这个问题。
读完此书,我感觉自己已经集大成于一身,这是一种技术自信:首先,我相信我比普通的Web程序员拥有更多的底层认识(不包括客户端JS引擎),另外,我相信自己有足够的能力开发网站(前端+后端通吃,起初可能菜点,但我希望在工作中要求Web开发的工作任务来提高)。
对于PHP的问题不多说了,这里大牛成群,我也只是初学乍道,但我发现其实任何一本书你完整的读下来都会形成体系,并且可以学到很多已经误解或者不曾留意的问题,非常珍贵。另外,我说的读书是指:给自己规定少于2-3周的时间,看完任何一本1000页以内的书。如果没有这种耐性,恐怕是永远看不完一本书了,或者说一个月两个月看完了,什么也没记住,实在是很不值得。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

要在 Apache 中设置 CGI 目录,需要执行以下步骤:创建 CGI 目录,如 "cgi-bin",并授予 Apache 写入权限。在 Apache 配置文件中添加 "ScriptAlias" 指令块,将 CGI 目录映射到 "/cgi-bin" URL。重启 Apache。

PHP仍然具有活力,其在现代编程领域中依然占据重要地位。1)PHP的简单易学和强大社区支持使其在Web开发中广泛应用;2)其灵活性和稳定性使其在处理Web表单、数据库操作和文件处理等方面表现出色;3)PHP不断进化和优化,适用于初学者和经验丰富的开发者。

PHP用于构建动态网站,其核心功能包括:1.生成动态内容,通过与数据库对接实时生成网页;2.处理用户交互和表单提交,验证输入并响应操作;3.管理会话和用户认证,提供个性化体验;4.优化性能和遵循最佳实践,提升网站效率和安全性。

当 Apache 80 端口被占用时,解决方法如下:找出占用该端口的进程并关闭它。检查防火墙设置以确保 Apache 未被阻止。如果以上方法无效,请重新配置 Apache 使用不同的端口。重启 Apache 服务。

Apache 连接数据库需要以下步骤:安装数据库驱动程序。配置 web.xml 文件以创建连接池。创建 JDBC 数据源,指定连接设置。从 Java 代码中使用 JDBC API 访问数据库,包括获取连接、创建语句、绑定参数、执行查询或更新以及处理结果。

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。
