不管走得多远、多快,都要回头望一望走过的路。复盘过去,深刻反思,总结经验,探索未来。
技术资格考试:中级软件设计师
- 刚踏足职场,牢固技术功底对我们未来走得多远尤为重要。然而当今工作环境迫使我们 “沉迷” 追逐新概念、新技术,比如机器学习、大数据技术等,难免内心难免会浮躁不安,有时候走得太快反而淡忘了软工知识体系正是当初上学时期指导我们认识软件世界的重要角色。正如设计模式给我们启示,认知不应依赖于具象,而是抽象概念指导认识,学习应是如此,不随波逐流,巩固根基知识更容易让自我渐入一个熵减过程。
- 软件设计师(中级)所考查的内容正是软件工程体系知识树的缩影,很庆幸能借此机会温故知新,同时复习过程以笔记形式记录在案,即知识输入到输出全过程,以构建起属于自己的计算机科学知识体系。
- 最后声明一点,知识复盘固然重要,但考试终究要刷题练习。希望笔记内容能帮到有同样备考需要的朋友,若笔记有错误之处,还请您不吝赐教、指正。
子弹笔记:让每个人都可以笔记方式撰写自传
论文 | 基于根因分析的报警聚类算法
原文:Clustering intrusion detection alarms to support root cause analysis
作者:Klaus Julisch
来源:ACM Transactions on Information and System Security, 2003, 6(4):443-471.
背景
- 系统出现故障时,运维人员一般先查看错误日志定位故障原因。
- 业务流量小、逻辑复杂度低时,应用出现故障时错误日志一般较少,运维人员根据错误日志迅速定位到问题。但随着业务逻辑的迭代,系统接入的依赖服务不断增多、引入的组件不断增多,当系统出现故障时,
错误日志的量级急剧增加
。极端情况下更甚出现 “疯狂报错” 的现象,这时错误日志的内容会存在相互掩埋
、相互影响
的问题,运维人员面对报错一时难以理清逻辑, 失去焦点,没能第一时间解决最核心问题。 - 若在报警流出现时,通过处理程序将报警进行聚类,整理出一段时间内的报警摘要。运维人员就可以在摘要信息的帮助下,先对当前的故障有一个大致的轮廓,再结合技术知识与业务知识定位故障的根本原因。
- 围绕上面描述的问题,以及对于报警聚类处理的分析假设,本文主要做了以下事情:
选定算法
:选定聚类算法,简单描述算法基本原理,并给出针对报警日志聚类的一种具体实现方案。验证算法
:在分布式业务服务的系统下构造了三种不同实验场景,验证了算法的效果,并且对算法的不足进行分析阐述。
Django:Web 框架从入门到应用
Django 是基于 MVC 模式,由 Python 写成的开源 Web 应用框架。在 Django 中,控制器接受用户输入的部分由框架自行处理,而 Django 里更关注的是模型 ( Model )、模板 ( Template ) 和视图 ( Views ),为此也称其为 MTV 模式的 Web 框架。
事实上,基于 Python 的 Web 框架不仅这一家,如 flask、tornado、web2py 等。对于任何一款框架都有它自身的亮点和缺陷 $^{[2, 3]}$,综合需求、性能要求等诸多因素考量,选择合适的框架即可。比如,我们要开发一款数据库驱动的内容发布与管理系统,借助 Django 的中间件 ORM 设计优点,使得在操作业务对象时,不需要和复杂的 SQL 语句打交道,只要像平时一样操作对象即可,以高效率完成轻量级后端系统的开发工作。
讲座 | 利用 t-SNE 降维并可视化高维数据
作者:Siraj Raval
课堂:The Best Way to Visualize a Dataset Easily | Bilibili | Youtube
源码:llSourcell.Visualize_dataset_demo | Github
目标
:在本次课堂中,将对人类活动识别 ( Human Activity Recognition,HAR ) 数据集进行数据可视化呈现,并进行探索性分析以发现知识。而本课堂具体目标则是人类活动状态识别,活动状态包括:Sitting-down,Standing-up,Standing,Walking,Sitting。具体地,通过降维方法
t-SNE
实现不同活动状态的数据自动 “分类”,从而在低维度 ( 二维 ) 下复现数据 ( 的特征 ),以便我们理解数据、统计分析数据。问题
:若我们要将要描述如此复杂的数据,即它们拥有的特征 ( 维度 ) 过多了,相对于人类大脑只能理解二维或三维的层面,如此复杂数据我们是难以从中发现知识的。解决
:通过可视化数据来描述它们的特征,具体措施是使用机器学习中的降维方法T-SNE
( Distributed Stochastic Neighbor Embedding ),把高维空间中的数据以二维或三维的形式表示。
多套软件解决方案助你提高生产力
在输出本博文之初,意图是很纯粹的,即把平日里体验佳、少折腾、踩过坑的种种软件整理成册,以便于日后装机或朋友间安利、分享。
再者,在平日的工作、娱乐环境中,单一的软件远远不够满足我们的需求。软件虽然一定程度上解放了我们的生产力,而随着个人的需求日益增长、消费水平升级,享受的服务逐渐被分散细化,我们的工作效率提升了,但人与软件更密切的交互让我们紧密地捆绑在一起,似乎我们并没有被真正意义地 “解放” 出来?其次,每款软件终究是一个体,一些连贯性的交互需求,它们是很难或无法独自完成的,故我们需要更高阶的完整软件解决方案。例如,智能路由系统 ( 网络中心 + 控制中心 )、个人博客 ( 笔记 + 储存 + 分享 )、个人私有云 ( 储存 + 远程 + 共享 )、智能家居控制中心 ( 跨平台 + 控制中心 )、家庭影院中心等。即我们通过专职的服务器,运作相应的操作系统和应用程序,以提供完整的软件解决方案。
最后,谈起专职的服务器便是组装一台 家用服务器
。在服务器中,我们可通过 虚拟机
实现私有云、智能路由系统、Web 服务器、代码托管服务器等,把以上系统方案整合到 N in 1 的服务器中,既充分重利用了硬件资源,同时也节约了房间的物理空间。