分类目录归档:日志

2022 年博客经营报告

过去一年中,个人网站策略做了简单的调整。

大概从去年开始,打算全面使用静态网站了, 使用 hugo 建立了个人主页,本打算替换掉博客, 将当时大部分的文章都迁移到了 hugo 制作的 www 打头的个人主页, 这样的网页很快,很轻,很容易定制, 当时也在定制博客方面收获了很多的成就感。

但是后来发现,这样的博客虽然很简单, 可以很轻易的部署, 但是写文章的感觉并不好, 每次都需要纠结一下用什么编辑器, 写完了还得推送、构建, 每次推送都留意一下自动构建有没有完成, 需要过一阵子才能看到文章, 这对于想要频繁更新内容,或是简单记录转瞬即逝的草稿, 很不友好, 渐渐的自己也不想写东西了。

这时候才知道自己个人博客的好, 使用 typecho 搭建个人动态博客已经三年有余了, 当时有点嫌弃它的“慢”,控制台报错, 第三方主题难以定制, 等等问题, 现在才发现这是很适合写东西的地方, 因为它足够简单, 使用 redis 缓存后速度有了很大提升, 可以随时打开就写, 写好就发, 一气呵成。

于是在今年大概 11 月份, 我重新还是讲个人博客作为更文的主战场, 辅以各种第三方的论坛/博客等, 用来记录生活、记录随想、分享技术。

因此,整体的流量上看, 由于大半年的时间都抱着想要放弃博客的想法, 其流量有了一个后退, 但在后期, 重拾博客之后, 流量开始反升。

下面结合 google analytics 统计报告做一个简单的数据报告:

整体流量

对比上一年,我的 blog 流量有所下降,全年共计获得了 116,101 次访问。

当然在最后两个月,流量对比上一年同期有所上升,这大概也是未来的主要趋势。

我的 www 主页流量有所上升,全年共计获得了 48,066 次访问。

特别是最后几个月,流量有了较大提升。

访客来源

先看一下 blog,

48% 的访客来自搜索引擎,27%来自引用,24%来自直接访问。

趋势方面,来自第三方引用跳转的比例有一个明显提升。

www 主页这边,

81% 的访客是直接访问,看来来到主页的访客是占大头的。

趋势变化上,各个途径的访客数均有提升。

访客画像

先看一下 blog 的,

访客来源国家,最多的还是中国。

这些访客主要分布在中国的北上广深。

大部份是通过 chrome 进行访问。

主要是使用的 winodws 系统进行访问。

移动设备这边则主要是 android。

再来看看主页 www 的。

主要来自中国和俄罗斯,这是我没想到的。

主要分布在北山广深和莫斯科。

浏览器方面使用 Safari 较多,难道都是我自己访问的。

操作系统主要是 IOS,难道真的都是我自己。

移动设备也是 IOS,这难道。。

热门内容

博客 blog 的前十篇热门内容如下:

主页 www 的前十篇是这些:

总结

总的来看,整个网站的流量是有所上升,某些角度的技术文章比较受欢迎,受众主要分布在中国的一线城市,访客主要通过搜索引擎和外部引用跳转来到这里。

新的一年,我将好好利用动态博客快速所见即所得的特性,尽量多写一些好内容出来。

渠道方面,可能会在简书,以及各大云厂商的开发者论坛同步一些文章,

作为自身,我会不断精进自己的技术,扩展深度和广度,争取多输出一些有价值的内容,提升质量和深度,创造更多价值。

希望各位多多支持。

[摘录]《任正非传》 – 孙力科

任正非传 孙力科 36个笔记

◆ 第一章 谁是任正非?

出生在贵州安顺地区镇宁县的任正非,祖籍便在浙江金华。

任摩逊希望自己的儿子在以后的人生中能明辨是非,成为一个对社会有价值的人。“任正非”的名字,也就这样落定了。任摩逊和程远昭夫妻俩一共

程远昭身上有着典型的中国优秀女性的特质:勤劳、耐苦、慈爱、不服输

他理工基础雄厚,掌握了数门外语,而且文科实用水平颇高,对毛泽东思想有着自己深刻的理解。

虽然由于父亲的背景原因,任正非在军队中除了一个“学毛著标兵”的口头嘉奖之外,再没有得到任何实质性的嘉奖,但正是这些看起来的遗憾,让他养成了淡泊名利、宠辱不惊的心态

当时市面上的交换机种类繁多,程控交换机是其中使用价值最高的,同时,它对技术的要求也最高,需要投入的经费也最多。这种程控交换机可以用于企事业单位内部的沟通,甚至还能展开长途交流。

◆ 第二章 踏上新征程

1991年,任正非等到了机会。这一年,邬江兴首次研发出万门级的04数字程控交换机,获悉消息后任正非大受鼓舞。纵使这个“第一”的殊荣不是他的,不是华为的,但属于中国,属于一个崭新的时代!任正非从邬江兴的成功中看到了中国人在通信行业中逆袭的可能。邬江兴的经历与任正非特别相似。他是解放军信息工程学院的院长,比任正非小10岁。他和任正非一样是军人出身,同样对“中国人永远无法造出大型程控交换机”的断言嗤之以鼻。

这年秋天,任正非带着一队企业骨干踏上了去美国考察的征程。一路考察,任正非有了不同的感受。美国的汽车乘坐起来更加舒适,看到的楼宇也更高,他的感叹虽不至于像明治维新的股肱臣僚岩仓具视和他远赴欧美参观的使节团那般“始惊、次醉、终狂”夸张,但也同样对美国的科技成就发出感慨:我国的国土与美国基本相当,但荒漠、大山、高原面积大,余下的土地承载着十几亿国民。加之缺少教育经费,文化素质偏低,人口增长快,田边地角均被挖空,何来的草地、山林呢?

任正非原以为公园的核心地带又是一片科研基地或技术工厂,但走进以后发现里面竟然是一座原始森林。“从森林到工厂”,在此刻的任正非看来,或许正是中国的通信产业需要经历的一条曲折而又漫长的道路。出于对科学研究和技术教育的崇仰,任正非走出中央公园后没有急于赶往下一个科技城市,而是走进自然博物馆,继续参观。出乎意料的是,自然博物馆中陈列着的各种珍奇精品和古迹文物让他和团队成员大开眼界,在一个小时的时间里,他们甚至连一个角落都没有参观完,这让任正非铭刻于心。

结束了这次美国之行,任正非等人从洛杉矶登上了返回深圳的飞机。在飞机上,任正非心潮澎湃,久久不能平静。后来他曾回忆当时的想法,表现出了对国家科学教育深深的隐忧:“越繁荣就越发展科技,越发展科技、越重视教育就越人才辈出,越人才辈出,经济就越繁荣,如此走入一个良性的循环圈……美国将经久不衰。”

客户的质疑和反对。最典型的是河南商丘的邮电局农话科长张荣钧。这位张科长毫不留情地指出这些机器(资料上写的是用户机,这里改成机器就行)在使用过程中的不如意,“尤其是雷击问题更是令人头痛”。1993年这一年,任正非有得有失,但绝不患得患失的他早已认定了自己要走的路。

◆ 第三章 华为新起点

任正非说,他不会以一时的成败来论英雄;华为的企业文化,其精髓不在于百战百胜,而在于在战局不利的状况下培养出风险抗拒能力。显然,正是这种抗拒能力,成为华为至今仍能在国际市场上如鱼得水的重要原因。

◆ 第五章 “狼”行天下

任正非知道,李一男长于技术、短于管理,因此他觉得李一男不擅长管理这一条注定了港湾在巅峰之后一定会滑向低谷

经过这番折腾,李一男到底还是没有彻底离开华为,而任正非三番五次对李一男的“委任”,也足见他的爱才之心。更关键的是,任正非“降服”李一男既不失华为的脸面,还留住了人才,为华为的持续发展积蓄着人才的能量。因此,在与李一男的博弈中,任正非完胜。

◆ 第七章 华为、思科大PK

毕竟华为的产品已经成为中国通信产品体系中的代表,华为在美国栽跟头,其余的中国产品也许就没有再战的勇气了。

为了稳住军心,任正非给出了最高指示:“敢打才能和,小输就是赢。”

任正非则从华为的立场出发,言明“自己没有上市,公司上税、守法,对客户和员工负责就可以了,华为不需要抛头露面,针对外界的各种说法华为也从不解释”。

令人意想不到的是,在这场角逐中,一些中国媒体也站在了思科这边,这着实让人为华为担忧。

要想建立一个国际化的大型企业,不单需要革新市场、优化产品,更需要加强与媒体之间的联系,并在全球范围内广泛结交同盟,团结一切可以团结的力量,以便在与对手直面竞技时随时应对。

郭平真诚地邀请两家律师事务所的一些顶级律师来华为,事先告诉了他们华为的经营方略,然后让他们全面地领略真正的华为。

律师们向华为献出一条妙计:紧抓“私有协议”这个字眼,在这方面做足准备功夫,而反击的理由即是思科运用“私有协议”在市场上大搞垄断。这样一来,华为在反击思科时就显得更名正言顺,这自然好于一味地退守和隐忍。

“私有协议”,即是“在国际标准组织实现网络互联互通而制定标准和规范之前,某家公司产品先进入市场而形成的标准”。

2003年3月初,在美国和德国举办的电信设备展览会上,人们再次看到了华为那阳光自信、积极乐观的形象。

吸引了全世界目光的“世纪之讼”在双方的战略妥协下落下幕布。思科保住了世界通信霸主的地位,从此不再趾高气扬;华为在美国市场上有了一席之地,并因这场大战让全世界刮目相看。从此,不论是美国还是东半球的国家,都愿意和华为做生意,华为在国际市场的业务量开始出现令人可喜的翻番式增长态势。

钱伯斯在与任正非过招之后,开始对华为“暗送秋波”,并在2005年主动访问华为。通过这次访问,钱伯斯更加明确地断定,思科未来的竞争对手很有可能不在欧洲,而在亚洲东部的中国。

一如倪光南在总结“世纪之讼”时所说的那样:“在信息领域,核心技术、大量的知识产权非常重要。之所以华为的知识产权技术能够站得住,就是因为自己开发了整个软件系统,可以在这个产业里面不至于受到人家的压迫,赢得最后的胜利。”华为的胜利,完美地诠释了这一点。

◆ 第八章 “华为精神”

财务管理地位极重,小到每一个产品的定价评估和成本计算、大到企业在一段发展时期内的收支盈亏等,没有财务的参与,都是行不通的。

在华为的年度报表中,一组数据更显示出了财务危机:2003年,华为的利润率还保持着较高的19%,可到了2007年骤降为7%;2003年的净利润率保持在14%,2007年则下降至不到5%。

经过讨论,任正非和众人得出这样的结论:要继续向IBM公司学习,不单要学习IPD等管理模式,更要在财务方面借鉴经验弥补不足。

◆ 第九章 以人为本

若从时代的角度出发,促使华为一步步迈向制高点的最关键因素则在于对人才的培养和提拔。

不单是任正非,几乎所有的华为人都这样认为:销售是一段刻骨铭心的经历。没有销售的人生是不完整的。

美国著名企业管理学者沃伦·本尼斯曾说:“员工培训是企业风险最小、收益最大的战略性投资。”任正非重视对员工的培训,就等于从根本上避免了风险,获取了收益。

他最推崇任正非的一句话就是:“烧不死的鸟才是凤凰。”

根据二战名将曼施坦因的分析,军队中最不需要的高级干部就是这种“不聪明而勤奋”的人,因为他们没有开创的思维和前卫的意识。能力和智慧不出众,越是兢兢业业,越会对整个团队造成危害。

◆ 第十章 一切都只为客户

见老总将皮鞋送给自己,两位主管万分尴尬。任正非不是在送礼,而是通过皮鞋这个媒介提醒他们:你们动的脑子很多,这很好,但可惜你们走的路真的是太少了!

◆ 第十一章 新征程,新华为

云计算的地位并不亚于“互联网+”。有人曾预料,云计算的广泛应用,甚至能够将现代信息产业引领到一个崭新的时代。这是“第三次IT技术革命”,有着非同寻常的意义。

[摘录]《人人都懂设计模式:从生活中领悟设计模式(Python实现) 》 – 罗伟富

人人都懂设计模式:从生活中领悟设计模式(Python实现) 罗伟富 64个笔记

◆ 基础篇

类图用于表示不同的实体(人、事物和数据),以及它们彼此之间的关系。该图描述了系统中对象的类型以及它们之间存在的各种静态关系,是一切面向对象方法的核心建模工具。

UML 类图中最常见的几种关系有:泛化(Generalization)、实现(Realization)、组合(Composition)、聚合(Aggregation)、关联(Association)和依赖(Dependency)。这些关系的强弱顺序为:泛化=实现 > 组合 > 聚合 > 关联 > 依赖

泛化(Generalization)是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为

实现(Realization)是一种类与接口的关系,表示类是接口所有特征和行为的实现。

组合(Composition)也表示整体与部分的关系,但部分离开整体后无法单独存在。因此,组合与聚合相比是一种更强的关系。

聚合(Aggregation)是整体与部分的关系,部分可以离开整体而单独存在。

关联(Association)是一种拥有关系,它使一个类知道另一个类的属性和方法。关联可以是双向的,也可以是单向的。

依赖(Dependency)是一种使用的关系,即一个类的实现需要另一个类的协助,所以尽量不要使用双向的互相依赖。

在对象间定义一种一对多的依赖关系,当这个对象状态发生改变时,所有依赖它的对象都会被通知并自动更新。

监听模式又名观察者模式,顾名思义就是观察与被观察的关系

监听模式的核心思想就是在被观察者与观察者之间建立一种自动触发的关系。

监听模式根据其侧重的功能还可以分为推模型和拉模型

推模型:被观察者对象向观察者推送主题的详细信息,不管观察者是否需要,推送的信息通常是主题对象的全部或部分数据。

拉模型:被观察者在通知观察者的时候,只传递少量信息。

SolidState、LiquidState、GaseousState这三个单词中我们会发现都有一个State后缀,于是我们会想它们之间是否有一些共性,能否提取出一个更抽象的类,这个类就是状态类(State)

用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

很多系统中,多个类很容易相互耦合,形成网状结构。中介模式的作用就是将这种网状结构(如图3-3所示)分离成星型结构(如图3-4所示)。这样调整之后,使得对象间的结构更加简洁,交互更加顺畅。

工厂模式关注的是整个产品(整体对象)的生成,即成品的生成;而构建模式关注的是产品的创建过程和细节,一步一步地由各个子部件构建为一个成品。

区别:组合模式关注的是对象内部的组成结构,强调的是部分与整体的关系。构建模式关注的是对象的创建过程,即由一个一个的子部件构建一个成品的过程。

适配模式中主要有三个角色,在设计适配模式时要找到并区分这些角色。 (1)目标(Target):即你期望的目标接口,要转换成的接口。 (2)源对象(Adaptee):即要被转换的角色,要把谁转换成目标角色。 (3)适配器(Adapter):适配模式的核心角色,负责把源对象转换和包装成目标对象。

策略模式的核心思想是:对算法、规则进行封装,使得替换算法和新增算法更加灵活。

工厂模式三姐妹:简单工厂模式(小妹妹)、工厂方法模式(妹妹)、抽象工厂模式(姐姐)。

这是最简单的一个版本,只有一个工厂类 SimpleFactory,类中有一个静态的创建方法createProduct,该方法根据参数传递过来的类型值(type)或名称(name)来创建具体的产品(子类)对象

不符合“开放封闭”原则,如果要增加或删除一个产品类型,就要修改switch…case…(或if…else…)的判断代码。

定义一个创建对象(实例化对象)的接口,让子类来决定创建哪个类的实例。工厂方法使一个类的实例化延迟到其子类。

盒马鲜生之所以这么火爆,一方面是因为中国从来就不缺像David这样的吃货,另一方面是因为里面的生鲜很新鲜,而且可以自己挑选。

将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。

命令模式是一种高内聚的模式,之所以说是高内聚是因为它把命令封装成对象,并与接收者关联在一起,从而使(命令的)请求者(Invoker)和接收者(Receiver)分离。

(1)你希望系统发送一个命令(或信号),任务就能得到处理时。如 GUI 中的各种按钮的点击命令,再如自定义一套消息的响应机制。 (2)需要将请求调用者和请求接收者解耦,使得调用者和接收者不直接交互时。 (3)需要将一系列的命令组合成一组操作时,可以使用宏命令的方式。

在不破坏内部结构的前提下捕获一个对象的内部状态,这样便可在以后将该对象恢复到原先保存的状态。

备忘模式的最大功能就是备份,可以保存对象的一个状态作为备份,这样便可让对象在将来的某一时刻恢复到之前保存的状态。

人生没有彩排,但程序却可以让你无数次回放!这便是备忘模式的设计思想。

运用共享技术有效地支持大量细粒度对象的复用。

在故事剧情中,我们通过限定颜料的数量并采用共享的方式来达到节约资源、节约成本的目的,在程序的世界中这种方式叫享元模式(Flyweight Pattern)。

封装一些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。

设计模式的开山鼻祖 GoF 的《设计模式:可复用面向对象软件的基础》一书中提到了23种设计模式,也称为经典设计模式。

◆ 进阶篇

过滤器模式就是根据某种规则,从一组对象中,过滤掉一些不符合要求的对象的过程。

MVC 将程序的各个模块进行分层,M(Model)负责数据的存储,V(View)负责数据的显示,C(Controller)负责与用户的交互逻辑,也就是业务逻辑。

模型负责数据的持久化(也就是存储);视图负责数据的输入和显示,直接和用户交互的一层,如大家看到的网站的页面内容、在表单上输入的数据;控制器负责具体的业务逻辑,根据用户的请求内容操作相应的模型和视图。

MVP是MVC的一个变种,很多框架都自称遵循MVC模式,但是实际上它们却实现的是MVP模式;在MVP中使用Presenter对视图和模型进行解耦,视图和模型独立发展,互不干扰,沟通都通过Presenter进行。

前端应用MVC模式(前端的Model并不持久化数据,只是缓存数据或临时数据),后端也用 MVC 模式。

整个网站也是一种 MVC 模式,前端相当于View,而后端同时负责Controller和Mode(l 服务器代码相当于Controller,数据库相当于Model);用户直接与前端进行交互,根本不知道有后端的存在

◆ 经验篇

S—单一职责原则,O—开放封闭原则,L—里氏替换原则,I—接口隔离原则,D—依赖倒置原则

开放封闭原则,即Open Close Principle,简称OCP。

接口尽量小,但是要有限度。当发现一个接口过于臃肿时,就要对这个接口进行适当的拆分。但是如果接口过小,则会造成接口数量过多,使设计复杂化。所以接口大小一定要适度。

软件的设计是一个循序渐进、逐步优化的过程。经过一次次的逻辑分析,一层层的结构调整和优化,最终才能得出一个较为合理的设计图

单一职责原则告诉我们实现类要职责单一

里氏替换原则告诉我们不要破坏继承体系

依赖倒置原则告诉我们要面向接口编程

接口隔离原则告诉我们在设计接口的时候要精简单一。

开放封闭原则告诉我们要对扩展开放,对修改封闭。开放封闭原则可以说是整个设计的最终目标和原则!开放封闭原则是总纲,其他四个原则是对这个原则的具体解释。

在实际的项目开发中,必须要按时按量地完成任务。项目的进度受时间成本、测试资源的影响,而且程序也一定要保证稳定可靠。

面对需求的变更,我们有三种解决方法。方法一,直接改原有的函数(方法),这种方式最快速,但后期维护最困难,而且不便拓展,是一定要杜绝的

方法二,增加一个新方法,不修改原有的方法,这在方法级别上是符合单一职责原则的,但会给上层的调用增加不少麻烦

方法三,增加一个新的类来负责新的职责,两个职责分离,这是符合单一职责原则的

每一个逻辑单元应该对其他逻辑单元有最少的了解:也就是说只亲近当前的对象。只和直接(亲近)的朋友说话,不和陌生人说话。

Keep It Simple and Stupid 保持简单和愚蠢。

“简单”就是要让你的程序能简单、快速地被实现;“愚蠢”是说你的设计要简单到傻瓜都能理解,即简单就是美!

Don't repeat yourself. 不要重复自己

不要重复你的代码,即多次遇到同样的问题,应该抽象出一个共同的解决方法,不要重复开发同样的功能。也就是要尽可能地提高代码的复用率

(1)函数级别的封装:把一些经常使用的、重复出现的功能封装成一个通用的函数。 (2)类级别的抽象:把具有相似功能或行为的类进行抽象,抽象出一个基类,并把这几个类都有的方法提到基类去实现。 (3)泛型设计

你没必要那么着急,不要给你的类实现过多的功能,直到你需要它的时候再去实现。

Rule of three 称为“三次法则”,指的是当某个功能第三次出现时,再进行抽象化,即事不过三,三则重构。

查询(Query):当一个方法返回一个值来回应一个问题的时候,它就具有查询的性质; 命令(Command):当一个方法要改变对象的状态的时候,它就具有命令的性质。

[摘录]《大型网站技术架构》 – 李智慧

大型网站技术架构 李智慧 95个笔记

◆ 第1篇 概述

网站访问特点和现实世界的财富分配一样遵循二八定律:80%的业务访问集中在20%的数据上。

网站使用的缓存可以分为两种:缓存在应用服务器上的本地缓存和缓存在专门的分布式缓存服务器上的远程缓存。

当一台服务器的处理能力、存储空间不足时,不要企图去换更强大的服务器,对大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务需求

恰当的做法是增加一台服务器分担原有服务器的访问及存储压力。

数据库经过读写分离后,从一台服务器拆分成两台服务器,但是随着网站业务的发展依然不能满足需求,这时需要使用分布式数据库

文件系统也是一样,需要使用分布式文件系统

分布式数据库是网站数据库拆分的最后手段,只有在单表数据规模非常庞大的时候才使用

不到不得已时,网站更常用的数据库拆分手段是业务分库,将不同业务的数据库部署在不同的物理服务器上

NoSQL和搜索引擎都是源自互联网的技术手段,对可伸缩的分布式特性具有更好的支持

应用服务器则通过一个统一数据访问模块访问各种数据,减轻应用程序管理诸多数据源的麻烦。

大型网站架构技术的核心价值不是从无到有搭建一个大型网站,而是能够伴随小型网站业务的逐步发展,慢慢地演化成一个大型网站。

网站技术是为业务而存在的,除此毫无意义

如果能控制住并发访问的量,很多棘手的技术问题也就不是什么问题了

能亲身经历一个网站从小到大的架构演化过程的网站架构师越来越少,虽然过去有这种经历的架构师也很少(从小型网站发展成大型网站的机会本来就极少),但是将来可能真就没有了

模式的关键在于模式的可重复性,问题与场景的可重复性带来解决方案的可重复使用。

在大型网站架构中也采用分层结构,将网站软件系统分为应用层、服务层、数据层

计算机软件发展的一个重要目标和驱动力是降低软件耦合性。

系统分为三个层次,最下层是基础服务层,提供数据库、缓存、存储、搜索等数据服务,以及其他一些基础技术服务

中间层是平台服务和应用服务层

最上层是API和新浪微博的业务层

性能、可用性、伸缩性、扩展性和安全性是网站架构最核心的几个要素,这几个问题解决了,大型网站架构设计的大部分挑战也就克服了

◆ 第2篇 架构

性能测试是一个总称,具体可细分为性能测试、负载测试、压力测试、稳定性测试

为了保证数据的高可用,网站通常会牺牲另一个也很重要的指标:数据一致性

CAP原理认为,一个提供数据服务的存储系统无法同时满足数据一致性(Consistency)、数据可用性(Availibility)、分区耐受性(Patition Tolerance,系统具有跨网络分区的伸缩性)这三个条件

失效转移操作由三部分组成:失效确认、访问转移、数据恢复。

在网站应用中强调的一个处理错误的理念是快速失败(fast failed),即如果系统在启动时发现问题就立刻抛出异常,停止启动让工程师介入排查错误,而不是启动后执行错误的操作。

很多网站选择周四作为发布日,这样一周前面有三天时间可以准备发布,后面还有一天时间可以挽回错误。如果选择周五发布,发现问题就必须要周末加班了。

计算机领域有句话:计算机的任何问题都可以通过增加一个虚拟层来解决

NoSQL,主要指非关系的、分布式的数据库设计模式

全球大约70%的Web应用攻击都来自XSS攻击和SQL注入攻击

常用的Web应用还包括CSRF、Session劫持等手段

XSS攻击即跨站点脚本攻击(Cross Site Script),指黑客通过篡改网页,注入恶意HTML脚本,在用户浏览网页时,控制用户浏览器进行恶意操作的一种攻击方式

注入攻击主要有两种形式,SQL注入攻击和OS注入攻击

HTTP请求头的Referer域中记录着请求来源,可通过检查请求来源,验证其是否合法。

如果上传的是可执行的程序,并通过该程序获得服务器端命令执行能力,那么攻击者几乎可以在服务器上为所欲为,并以此为跳板攻击集群环境的其他机器

攻击者在请求的URL中使用相对路径,遍历系统未开放的目录和文件

信息加密技术可分为三类:单项散列加密、对称加密和非对称加密

单向散列加密是指通过对不同输入长度的信息进行散列计算,得到固定长度的输出,这个散列计算过程是单向的

为了加强单向散列计算的安全性,还会给散列算法加点盐(salt),salt相当于加密的密钥,增加破解的难度。

常用的单向散列算法有MD5、SHA等

输入的任何微小变化都会导致输出的完全不同

所谓对称加密是指加密和解密使用的密钥是同一个密钥(或者可以互相推算)

对称加密的优点是算法简单,加解密效率高,系统开销小,适合对大量数据加密

缺点是加解密使用同一个密钥,远程通信的情况下如何安全的交换密钥是个难题

常用的对称加密算法有DES算发、RC算法等

不同于对称加密,非对称加密和解密使用的密钥不是同一密钥,其中一个对外界公开,被称作公钥,另一个只有所有者知道,被称作私钥

用公钥加密的信息必须用私钥才能解开,反之,用私钥加密的信息只有用公钥才能解开

非对称加密技术通常用在信息安全传输,数字签名等场合。

由于私钥只有签名者拥有,因此该信息是不可抵赖的,具有签名的性质。

非对称加密的常用算法有RSA算法等。HTTPS传输中浏览器使用的数字证书实质上是经过权威机构认证的非对称加密的公钥。

Trie算法的本质是确定一个有限状态自动机,根据输入数据进行状态转移

另一种更简单的实现是通过构造多级Hash表进行文本匹配

◆ 第3篇 案例

合适的场景下使用合适的产品,而不是最好的产品,所谓小脚穿大鞋,不但跑不快,还可能会摔跤

所谓网站前端是指应用服务器(也就是PHP服务器)之前的部分,包括DNS服务、CDN服务、反向代理服务、静态资源服务等

在反向代理Squid之前,则是被Wikipedia技术团队称为“圣杯”的CDN服务

每个内容页面有唯一的REST风格的URL,以便CDN快速查找并避免重复缓存。

他的意思大概是在互联网公司一年遇到的问题比传统软件公司三年遇到的问题还多

遇到问题,解决问题,经历了这个过程,技术才能升华,人和技术才能融为一体,才知道什么技术是真正有用的,什么技术是花拳绣腿。

所以培养一个网站架构师的成本不单要看付了他多少薪水,给了他多少股票,还要看为他引起的故障买了多少次单。

网站还有很多类似的场景,都需要后台服务准备好,前台应用才能启动,否则就会导致故障。这种情况被内部人戏称作“姑娘们还没穿好衣服,老鸨就开门迎客了”

在应用程序中加入一个特定的动态页面(比如只返回OK两个字母),启动脚本先启动JBoss,然后在脚本中不断用curl命令访问这个特定页面,直到收到OK,才启动Apache。

存储的使用需要根据不同文件类型和用途进行管理,图片都是小文件,应该使用专用的存储服务器,不能和大文件共用存储。批处理用的大文件可以使用其他类型的分布式文件系统。

程序在处理一个输入的对象时,如果不能明确该对象是否为空,必须做空指针判断

程序在调用其他方法时,输入的对象尽量保证不是null,必要时构造空对象(使用空对象模式)。

有位软件技术前辈曾经说过“软件设计有两种风格,一种是将软件设计得很复杂,以使其缺陷没那么明显;一种是将软件设计得很简单,以使其没有明显的缺陷”。

吃一次亏,学一次乖,以后设计软件时就会设计得简单些,如果问题能够很快被发现,要解决也相对容易。

◆ 第4篇 架构师

处理好人的关系对架构和项目的成功至关重要。

一定要坚信:一群优秀的人做一件他们热爱的事,一定能取得成功

最好的软件项目管理不是制订计划,组织资源,跟踪修正项目进展,对成员进行激励和惩罚,而是发掘项目组每个成员的优秀潜能,让大家理解并热爱软件产品最终的蓝图和愿景。

一旦做到这一点,项目组每个成员都会自我驱动,自觉合作,寻找达成目标的最优路径并坚韧不拔地持续前进

领导的真谛:寻找一个值得共同奋斗的目标,营造一个让大家都能最大限度发挥自我价值的工作氛围

所有强迫员工加班的管理者都应该为自己的无能而羞愧。

是事情成就了人,而不是人成就了事。

指望优秀的人来帮自己成事,不如做成一件事让自己和参与的人都变得优秀。

发掘人的优秀远比发掘优秀的人更有意义。

蓝图应该是表述清楚的:产品要做什么、不做什么、要达到什么业务目标,都需要描述清楚。

蓝图应该是简单的:不管内部还是外部沟通,都能一句话说明白:我们在做什么。

蓝图应该写在软件架构设计文档的扉页、写在邮件的签名档、写在内部即时通信群的公告上

不要企图去证明自己了不起,永远也别干这种浪费时间、伤害感情的事。

提醒自己是来做软件的,来实现客户价值的,不是来证明谁对谁错的,不是来给黑熊XX的。

新员工首先要做的事情是融入团队,跟大家打成一片,只要能和团队一起共进退,你就不是一个人在战斗。等熟悉了情况,知道了水的深浅后,再寻找突破口,择机而动。

新员工最不需要做的事情就是证明自己的能力

软件开发出来,如果没有投入使用,就一点价值也没有,不管架构设计和代码实现多优美都没用。

做出软件不等于解决问题,事实上很多问题确实也不需要用软件来解决。

如果你需要他的支持,就要想办法把你的问题变成他的问题,是他遇到了问题,而你来帮他解决

给上司提封闭式问题,给下属提开放式问题

如果在合作中出现问题,告诉他问题的存在和紧迫性,而不是责问他为什么出现问题

人在听到批评信息的时候,本能地想要去针对批评进行反驳或者辩解,于是谈话就变成关于批评是否合理的争论,离解决问题越来越远

在解决我的问题之前,先解决你的问题

◆ 附录B Web开发技术发展历程

随着CGI(Common Gateway Interface,通用网关接口)技术的出现,Web服务端可以根据不同用户请求产生动态页面内容

早期主要的CGI编程语言是Perl

CGI程序擅长处理请求信息,而服务器页面擅长构造响应页面,那么能不能将两者结合起来呢?答案就是MVC(模型-视图-控制器)模式

Web开发中通常将服务端划分为三层:表现层、业务逻辑层和数据源层

表现层完成视图展现和用户交互;业务逻辑层实现系统的核心逻辑;数据源层负责数据存储、交换和通信

◆ 后记

不要企图去设计一个大型网站

[摘录]《刘强东:人到绝境是重生》 – 黄鸿涯

刘强东:人到绝境是重生 黄鸿涯 48个笔记

◆ 第一章 停止绝望,人是第一生产力

但刘强东却认为一个公司的核心能力是有限的,京东一定要将有限的资源集中到一处才能获得竞争力。

创业的核心是什么?就在于解决问题,如果你想做一个项目,那么你首先要考虑的就是这个项目能解决什么问题,什么问题都解决不了,那这个项目必然会失败。

但刘强东并不这么认为,通过了解,他发现了网上销售中存在很多问题。他想如果京东能把这些问题解决了,就一定能成功。

刘强东在哈佛大学讲创业故事的时候曾经说道:“我从来没有看到过哪一个创业者是为了获得更多的财富而创业成功的。”

京东上市后,身价接近60亿美元的刘强东仍经常跟底层员工打成一片。他每年会选定一个日子与库管、配送人员一起吃果冻,吃完后用果冻壳喝白酒,甚至还选定一天亲自送货。

京东这样的零售公司最核心的就是库存周转天数。国美、苏宁大概的运营规模是一万到两三万个商品品种,他们的库存周转天数是60~70天。京东旗下仓库里的产品有两百多万个品种,品种数量是国美、苏宁的100倍,但库存周转天数只有30天。

成功的人大多也是简单的人,认定一件事情哪怕撞得头破血流也会想尽办法努力做到。而自认为聪明的人看到前进的道路上有一堵墙时便会退回来寻找另一条看起来好走的路,但没走多久又发现那里也有一堵墙在等着他。人生没有一帆风顺,一遇到困难就回避的人,永远也到不了理想的目的地。

◆ 第二章 坚持战略导向,方向决定一切

京东准备建立物流的时候看到了当时中国有一个巨大的机会:中国没有UPS,没有Fedex,中国的物流成本奇高无比;中国的快递行业虽然发展迅速,但服务质量比较低,快递加盟商和物流集团的利益相悖的,二者的利益不一致,加盟者希望多收单,因为快递公司对快递员结算时送件是义务,收件才赚钱。所以中国的快递发展成加盟模式,给快递业造成巨大的服务隐患。

京东“6·18”大促销期间,弹性计算云项目作为扩容与灾备资源池,轻松应对了“6·18”的流量冲击,成功展示了这一技术的系统扩展性、稳定性、容灾能力、运维能力、紧急故障处理能力。京东弹性计算云能够实现和解决很多的问题,比如将机器资源容器化,增加利用率等。

现金流是什么概念?一家盈利的企业可能随时会倒闭,但一家亏损而现金流为正的企业却可能不倒闭。700个库房,效率很差,所以京东要打造物流,一开始确实是给了客户最佳的体验,但后来京东有更大的诉求,就是希望降低整个物流的成本。

服务行业如果做加盟的话,初期发展速度很快,老板能够赚很多的钱,但这种商业模式在中国,今天出现一个没了,明天出现一个又没了,因为这样做违背消费者的利益。

京东严控商家出售假货,如果发现商家销售假货,关店是第一步,还可能让商家赔偿得血本无归,甚至要担负刑事责任。同样,刘强东对京东内部腐败事件管理也非常严格,一旦发现内部有腐败现象,可能不仅要开除其个人,甚至会牵连到整个小团队。

京东正是通过对销售行为进行大数据分析才做到了精准的销售预测,保证用户在最关键的时候看到他们需要的东西是有的,除了部分商家的紧俏商品和常用通用的一些产品,京东都可以做到快速补货,以满足用户的需求。

◆ 第三章 管理的“放”与“收”,尺度在哪里?

京东实行业务民主,会尽可能地采纳大部分员工的意见,但从京东的大方向上来看,刘强东从来没有放弃专制。

刘强东由此得到了一个深刻的教训:对员工一定要信任,但信任不等于没有管理。

东有员工数万人,其中有大部分人都是物流配送人员,来自农村。很多工作超过五年的配送员通过在京东的奋斗买了车子,在当地县城买了房子。刘强东看到员工能实现人生梦想感到很幸福,他认为这应该是他做京东的最大成就。

除了为员工解决最基本的温饱问题之外,京东还做了很多。比如在春节这个多数快递公司“休眠”的时间点,京东为保证用户能够继续享受快速便捷的电商福利,提出“春节不打烊”的口号。京东所有在春节加班的同事除了国家规定的三倍工资外,凡是有孩子的,按照每个孩子3000元给予补贴,要求快递员把孩子们接到身边共度佳节。如果个别员工离家太远,费用不够,超出部分实报实销。

在京东成功转型为电商后,刘强东的管理变得非常“极端”:员工犯了一个小错误如果不承认就会被直接开除,上司连带降薪降职;员工拿回扣会被送进公安局,损失由他的上级承担;副总裁迟到,让秘书帮着打卡,被开除。刘强东甚至会因为一个贪腐的传言开除一名员工或整个部门。

刘强东从22岁开始创业,他有过的唯一职场经历就是开饭店失败后在日企工作过的两年。从那里他知道了:“日语里没有误差这个词,只有对和错。工作错了一点你就走人。”后来,他还把当时的直接上司严晓青拉入了京东,聘请为京东公司的第一个副总裁。

◆ 第四章 不急于求成,要守得住寂寞

在过去的几年里,京东最成功的或者说让京东人最自豪、让投资人最放心的,就是京东成为一个可以在任何垂直行业都能成功的企业,而大部分电商公司都做不到这一点。

刘强东在管理层例会上提出的问题非常尖锐,他要求非常严厉,若是接下来的两三个季度依然表现得不行,就直接换岗。一次,他提出了200%的增速,该业务部门的负责人表示有难度,并陈述了理由,刘强东打断他说:“对不起,你没听懂我的问题,我问的是如何增长,不是问为什么不能增长。”后来,此人在京东管理层例会上再也没有出现。

11月11日晚上8点08分,华北地区成为第一个诞生一百万单的大区。在受APEC峰会影响的情况下,依旧做到了90%的订单次日达,这就好比京东原本是百米冲刺的健将,因为APEC峰会变成了拄着拐杖的瘸子,一瘸一拐地坚持按时跑到了终点。那几天,员工们甚至累到吃饭时吃着吃着就睡着了。“双11”奋战,京东团队淋漓尽致地展现了它强大的执行力。

不过,刘强东最看重员工的素质,他觉得招聘员工最起码必备的一点就是诚信。诚信是京东人才的招聘门槛,所以他很信任自己的团队。2013年,刘强东去美国读书,八个月的时间里他只是偶尔参加早会,每周看报告,公司的业绩却依然保持着高速增长。财权方面,各个子公司都有CEO签字权,一星期需要刘强东进行财务支出签字的可能只有几笔。

◆ 第五章 实力所在,酒香不怕巷子深

刘强东表示,由于门户广告和网站导航站均大幅涨价,京东将减少网络广告的投入,要将节省下来的广告钱用于建设物流仓储,改善用户体验。而广告目的是在强势媒体推广其品牌。

互联网时代有一个行业潜规则:只有前三名才能取胜;只有前三名才可能生存下去。刘强东曾对员工们说:“我们一定要将低价进行到底,迅速扩大市场份额。”因为只有低价,才能扩大销路,形成规模,一旦规模达到一定的程度,盈利就成为一种必然。正是因为如此,京东自成立以来一直保持着其“低价”的经营理念。过去的五年,京东以低价为利器,持续高速增长了五年。

无论刘强东是有意还是无意,经过此事后京东的知名度迅速提升。而刘强东微博所道出的“小天是我见过的最单纯善良的人”这句看似表白的话,事实上也是在为自己代言。

刘强东这次能通过恋情为自己代言成功,当然不是纯粹的偶然事件,如果京东没有“正”的经营理念、不被人们所认可,那么这次事件很可能会呈现相反的效果,给京东带来很大的负面影响。当一件事引起了众多人注意的时候,人们就会追根究底,恨不得将所有的线索都挖出来,大众的好奇心为京东成功地做了宣传。

◆ 第六章 商业模式没有任何秘密

京东一直在融资,也一直处于亏损状态。刘强东表示:2007年不投资物流和信息系统,2007年前都是盈利的;如果不进行品类扩张,2010年就可以实现微利;如果不在2010年开始筹备POP开放平台业务,2012年就可以实现季度盈利。由此看来,京东不是不盈利,而是扩张速度太快了。京东的钱主要用于开放网络、物流、信息系统,布局金融平台业务。刘强东认为,“未来的商业纷争必然是平台之战,背后是价值之战”,京东商城旨在打造一个不同于阿里的淘宝天猫的平台。

在团队建设的基础上,刘强东又打造了三个系统,即财务系统、信息系统、物流系统,物流系统的投入是最大的,也是一直以来最受争议的。

一个配送站管理得好不好,80%是与站长有关系。因为京东的配送站分布在全国各地,总部的管理者一年也可能去不了一次,如果站长不给力,那么这个站点就散了,客户服务一定不会好。

配送员想要升职为站长,至少要做半年站长助理,之后通过层层选拔后,经过培训才成为站长。站长还要通过三个月考核期,三个月如果过不了关再换,直到换到合适的站长为止。

面对成功,刘强东想得更多的是未来,他认为,中国电商未来的出路包括中国经济未来的出路,唯有走品质化、品牌化的道路。

和创业期不同,如今京东已经介入了很多领域,但刘强东很清楚,和电商无关的事情不做,做京东到家等也都是以电商为主线,如果一种生意和电商没有关系的话,京东绝对不碰。京东一直以来的发展路线都很清晰,一是沿着渠道往下走;第二是往“外”走;第三,不断扩张品类,三条线都在不断发展。刘强东曾表示:京东是以电商为主的企业,永远只做B2C,通过不断地提高服务品质,塑造良好的品牌形象来完善自己。

不过无论在什么阶段,京东人都有自己的信仰:只要能保证产品及服务品质、用户体验比别人好,就可以战胜一切对手。

中国电商及中国经济未来的出路只有走品质化、品牌化的道路,要把质量放在第一位,有了好的品牌,有了高溢价,企业才能得到利润,有了利润,企业才有资本去生产更高品质的产品,这样国家经济就会走向正常的发展道路,否则商家都去追求低成本的生产、牺牲品质,获得低的利润,发展就会陷入恶性循环。

“经过一年半的实验,我们把包裹用的泡沫填充物改为气泡塑料袋。这一改变,每个包裹可以省下两毛钱,按一天五万个包裹计算,就可以省下1万元的成本,一年就能降低365万元的包装成本。一个小小的包装填充物的改变,一年省下来的钱就可以让京东卖的商品比别人低,还能赚到钱。”刘强东描述京东因节省包装成本而带来的可观数值,这是京东降低成本的一个缩影。

能够做到提速而不增加投入,京东依靠的是严密的流程监管。京东运输车辆的递送时间是以分钟为单位计算的,几点几分应该在几号库房前也是有严格规定的;车辆的进行线路也是固定的,除非遇到严重的堵车等突发事故,否则配送员不得随意更改行车线路。

◆ 第七章 管人是最难最重要的事

刘强东创业这么多年,唯一有过短暂恐惧的地方,就是担心内部团队管理不好。比如企业文化断层,企业文化崩溃,没有价值观和信仰,整个团队的内部管理失控,这些都是他比较担心的问题。

管是在古代还是在现代,不论在东方还是在西方,大量的事例证明,无论是一个国家还是一个团体,甚至是一个部门、组织,如果只依靠领导单打独斗而没有员工的积极参与和跟随,这个团队就不可能是一个高效的团队;只是依靠某一个或某几个所谓的精英人士孤军奋战,而没有大部队进行协作和执行,这个团队肯定会失败。

在刘强东看来,一家公司的管理中有两个最重要的权力,一个是人事权,一个是财权,通俗点来说就是管钱和管人。

废铁的能力不行,价值观也不行,但不会造成恶劣的坏影响。但是“铁锈”能力强,会给公司带来巨大的破坏力。这种人很可能是群体的领导,口才很好,又有能力,有一天如果他对公司进行破坏,会造成很大的影响力和杀伤力。

◆ 第八章 用所有的精力做一件事,就是改善客户体验

如果销售员在向顾客卖出一包烟后加上善意的提醒,会令顾客感到非常舒适。这样做产生的价值是非常巨大的,这就是所谓的人性化服务,而人性化服务可以起到提高用户购物体验,甚至起到感动客户的作用。

刘强东认为企业必须拥有感人的能力。那么企业怎样才能拥有感人的能力呢?刘强东认为,企业要让人感动就必须要持续地、每次都毫无失误地将服务准确地传达给消费者,让消费者的期待不落空,甚至时常有让消费者超乎期待的惊喜。

比如,在情场上,给人意外惊喜是成功的妙招,那些能够给女孩带去意外惊喜的男孩通常会是爱情竞争中的胜利者。商场上也是如此,当你迈入机场出发大厅,或者走出接机廊桥的时候,如果有礼仪人员亲切地向你问好,你在这家航空公司得到的用户体验就会更棒。

在确定用户体验对顾客的价值后,一旦时机成熟,刘强东就会投入巨大资源改善和提高用户的购物体验。

京东商城目前还有30%的订单是外包给第三方的,但是这30%的外包订单量的投诉量是其余70%自营配送投诉量的12~13倍。如果2007年京东没有大力投资自建物流而是全部采用外包的方式,今天京东不可能做到年销售额超过百亿元。京东为什么每年都在减少外包业务的比例?实际上还是为了提升用户的购物体验。

◆ 第九章 没有创新的创业价值近乎零

京东希望通过无人机实现农村地区最后一公里的配送,让更多用户能体验到迅捷的购物体验。

跟以往一些电商和物流公司不同,京东测试的无人机供货主要针对最终消费者的单个订单,主要发生在配送站到乡村推广员的农村电商核心配送环节。