从数据流向熟悉web开发流程

     我一直比较喜欢web方向的开发,但是事与愿违,实习的时候做的事数据挖掘和机器学习方面的事情。最近准备某公司的面试,顺便总结下自己对web开发的理解。

用户看到的:

            我想从数据的流向来说一下,我对web开发的理解。web的受众是用户,用户能直接看到数据的展示,而不只是文本的数据,用户喜欢看到,格式比较好,排版比较整齐的数据,这就是csshtml的作用。另外展现出来的数据,用户可以有相应的动作,这就是js的作用啦。至于web的实现着,讲数据存储在什么地方,以什么样的形式存放,不是用户考虑的问题,也不是展现数据的人(前端(这个比较大,暂时这么理解))所care的事情。你只要给我就好,怎么给呢?这要有个标准,凡事称得上标准的,都有另外一个东西与之对应,那就是协议,现在用的最多的是http协议,https也很常见,保不准若干年后会有新的,最近websocket也是的。关于交换数据的协议就不多说啦,网上讲wiresharkfiddler的多的去啦。

用户看不到的:

            ok,既然是用户看不见的东西,往往都是很”高端的“,这也是为什么很多刚毕业的学生,不喜欢做前端的原因。其实前端我个人认为很难,你想下,前端写个模板引擎不还是要有编译器的知识吗?前端资源的加载优化还是需要算法的?另外还有那么多浏览器要适配....这简直是。。妈蛋。说到看不见的东西,也就是大家所说的服务端开发,服务端呢,首先要有个东西,这个东西支持用户看的到部分讲的标准,不然怎么通信啊?拿http协议来说吧,我要有个实现了http协议的服务器,java开发者接触最多的就是Tomcat了吧。有了这个东西之后,我想tomcat里面肯定有某种组件来为请求提供服务?进程?线程?线程池?进程的话,我好像听过是CGI的传统模式,多线程提供服务的我知道是servlet基本组件,这部分不打算详细讲,估计我也讲不好。为啥呢?首先请求来了,你是同步还是异步?你是开线程服务还是进程?用不用线程池?还是一个线程监听多个?这块没看完tomcat的源码不敢妄下结论。但是咱们能知道有这么个东西,提供这种服务,至于水多不多,活好不好,谁用谁知道啦。说完这个之后,往往都会考虑到,框架,这是个多么牛逼的词语啊。曾几何时SSH就是web的代表啊,不会这个就显得矮矬穷。包括最近出来的JFinalsmarttinyhasor简直是吊炸天。其实吊炸天和妈蛋是近义词,哈哈,为什么这么说呢,一个servlet都不清楚,容器怎么解析的,线程安全与否都不清楚,上来搞这些,简直是残忍。但是细想一下,这些东西是解决什么问题的?我们可以从数据传递来理解。数据来了之后,怎么解析?怎么映射到处理这次请求的组件?组件处理完之后怎么返回给客户?关于这部分,抽时间,我拿springmvc吹下牛。好的,既然框架作了这些事情,但是框架不能存数据啊?数据至少存在磁盘上才算安全吧?存在内存的都不叫存,咱们要持久化,每天77出,早晚要被邻居老王绿。存到磁盘怎么存?文件?xmljsonbson?二进制0100101.这些都是可以的。这个就牵涉到另外一块,也是用的比较多的,数据库,这也是为什么,框架一般都提供ORM的支持Hibernatemybatis是做这些事情的。为啥呢?jdbc不是很好的嘛?jdbc不错,以前能写个crud都感觉不错啦。但是你获取连接,try catch一大推,tablebean做映射,查询结果不缓存?话说这可不是代码量的体现。mybatis官网说能减少同样功能实现下95%的代码,这解决了什么问题呢?数据。schema是个很好的词语,因为他很好。no shema的数据存储,文件系统,是最近几年5-6年比较火的。这个东西呢,又牵涉到鱼和熊掌的问题,暂且不谈,但是CAP还是要知道的。这块就讲到这里。经过上面的种种,你在想深入,那估计就是数据分析啦,分析什么呢?分析数据。ML DL等等,都是要有数据才搞的出来啊,没数据怎么搞,数据怎么来?数据仓库,这个可能又要和前端结合啦,埋点是必须的。至完全是另外一个行业,看到是满屏的数据,看到的是各种指标,各种业务。这部分呢ML模块会装个逼。侃到这里,也不知道说清楚没,要写日报啦。


你可能感兴趣的:(web开发,数据流向,调侃)