首页 > 代码库 > 暗时间读后联想
暗时间读后联想
我在《暗时间》这本书获益匪浅,当然这本书有一些局限性,由于作者本人是一位软件领域的大师,所以书中所有的道理和方法不一定适用于所有的领域,但是大方向都差不多,书中提到演绎和推理需要足够的已知因素,这些因素可以是现成的,也可以合理的联想获取,让我想到和时下最热的大数据有异曲同工之妙,大数据也是必须有足够的可用数据,进行分析,训练模型,然后得出一些有价值的数据。这里也顺带一提:贝叶斯,贪心算法,线性代数,运筹学,图,分类、聚类、神经网络相关等算法等相关知识。有空的话还是充实自己,这些还是很枯燥但有用的东西,绝大多数的算法和数据结构都是从操作系统底层得来的经验,这是计算机的根本,万剑归宗的最高境界,虽然我也根本不看这些,又难又烦还看不懂。
后端东西由于涉及到服务器,服务器又是一个很复杂的东西,操作系统,数据结构和算法,集群的通信,网络,所以它的格局必然广阔。先列举一些细节的知识点: 以JAVA为例,涉及到多线程,单例,多例,阻塞IO,非阻塞IO,同步,异步等等,每一块都得花心思琢磨,多例里面可能有多线程的存在吗,还是多线程就是为单例而生的,那一个进程拥有多少资源,spring启动一个服务的话算什么,一个进程吗,一次请求算什么,启动一个线程吗,spring容器如何操作,tomcat底层如何运作;阻塞IO,非阻塞IO,同步,异步之间到底是什么关系,网上说得准确吗,自己又碰不到这样的场景,怎么办。多线程下面发生的各种光怪陆离的问题,状态没加锁被修改了,加了锁程序跑慢了,明明用了concurrent类库,为什么还是出问题?这些只是本地,到了服务器,分布式多节点,问题更大,tomcat的配置都得注意,虽然有运维,但是还是要出错,sessioncookieName莫名的返回了。这些当然只是基础,往深了,有负载均衡,缓存,IO瓶颈,这些很多网上宏观理论都看的很爽,其实并不能解决实际问题,只是提供一个思路,有一句我是认同的:一切不以解决实际问题的理论都是扯淡。
以上我也并没有全搞清楚,但是我相信只要深刻的理解过,研究过,那么会有不一样的飞跃。很多工具,框架的核心设计理念,运作原理都很雷同。关于设计模式我想说的是新人往往接触不到设计模式这些东西,所以经常故意乱套,显得很高大尚,从而遭到前辈们的批评。我想说的是:对于新人的做法,我表示完全支持,前辈们有前辈们的看法,但是我们要有我们的主见,我们本就是为了学而用。 我们就是要用,起码用会了一些,用熟了了一些,并且知道它们大致的套路,很多前辈们他们已经熟练的掌握了设计模式,所以他们看到我们乱用就会说我们强行使用。对,像我们这种小白能用还是尽量用的好,试想一下,如果你都从来没用过,然后项目中基本不用,自己又不刻意用,如何进步,遇到适合设计模式的场景,又怎能将复杂的问题便简单呢?
说到大数据,就简单的和大家聊一下这个东西, 我在上一家单位实习的时候,所在部门就是大数据部-数据挖掘组,大致说一下我认为的一些观点:
1> 网络爬虫,是大数据获取的途径,各种爬,舆情垂直元搜索,涉及很多工具,自动登录,通过cookie欺骗网站去爬,爬下来的话进行简单的数据清洗,为nlp、datamining做准备。
2>nlp,主要是lucene,开源最热是es和solr,难点是对中文语义的处理,当然中间还有很多,衔接网络spider的数据和datamining的中间件。
3>datamining,难点对于数据的训练模型,需要扎实的算法,是终极目标,也是得以变现的核心所在。
4> java_web对于这个部门而言并不复杂,开发方面可以说是一个门户,可以让用户更好、更直接的了解后台的东西。 这四者是一个顺序承接的关系。这既是整个团队的整个流程,产通过这种流程诞生。
大数据这一块,还推荐Logstash+Redis+Elasticsearch+Kibana+Nginx搭建日志分析系统这个很火,有兴趣的话可以了解一下,里面涉及的知识点巨海量。
暗时间读后联想