自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

seacean2000的专栏

行有不得,反求诸己

  • 博客(26)
  • 资源 (2)
  • 收藏
  • 关注

原创 规则 - 不能回滚注定失败

内容:必须具备代码回滚的能力。场景:确保所有版本的代码都有回滚能力,在准生产或者QA环境演练,必要时在生产环境,必要时在生产环境用它来解决客户问题。用法:清理代码并遵循几个简单步骤以确保可以回滚代码。原因:如果没有经历过无法回滚代码的痛,还继续冒险地“修改-发布”代码,那么你可能会在某个时刻体会到这种痛苦。要点:应用过于复杂或者代码发布太频繁所以不能回滚,这个借口无法接受。稳健的飞...

2018-09-27 06:40:43 189

原创 规则 - 不靠QA发现错误

内容:利用QA降低产品交付成本,提高技术吞吐量,发现质量趋势,减少缺陷,但不提高质量。场景:任何可能的机会下,通过专人聚焦测试而不是写代码以提高效率。利用QA从过去的错误中学习。用法:每当测试活动获得超过一个工程师的价值输出时,就雇佣一个QA人员。原因:降低成本,加快交付速度,减少缺陷重复。要点:因为系统质量无法测试,所以QA不会提高质量。如果使用得到,可以提高生产力,同时降低成本...

2018-09-27 06:38:58 173

原创 规则 - 失败乃成功之母

内容:抓住每个机会,尤其是失败的机会,学习经验并吸收教训。场景:不断地从错误和成功中学习。用法:观察客户或者A/B测试验证。建立事后分析过程,在低故障率环境下采用假设失败的方法。原因:做事情不考虑结果或发生事故而没有从中吸取教训,都会错失良机,从而让竞争对手趁机占便宜。最好的经验来自于失败中的错误,而不是成功。要点:要不断努力学习。学习得最好、最快和最频繁的是那些增长最快并且最具有...

2018-09-27 06:32:37 212

原创 规则 - 独立对象缓存

内容:在架构中采用单独的对象缓存。场景:任何实施对象缓存的时候。用法:将对象缓存移到自己的服务器上。原因:对象缓存层独立的好处是可以更好地利用内存和CPU资源,并具备可以在其它层之外独立扩展对象缓存的能力。要点:在实施对象缓存时,把服务器配置在现有层如应用服务器上很简单。考虑把对象缓存实施或迁移到自己的层上,以便取得更好的性能和可扩展性。 在监控对象缓存的命中率下降到85%...

2018-09-27 06:27:48 318

原创 规则 - 利用对象缓存

内容:实现对象缓存以帮助扩展持久层。场景:任何有重复查询或计算的时候。用法:选择任何开源或有供应商支持的解决方案和应用代码中实现。原因:实施相当简单的对象缓存可以节省大量应用或数据库服务器上的计算资源。要点:在任何重复计算的场合,考虑实施对象缓存,但主要在数据库和应用层之间。 实施步骤:1.要实施之前,要观察数据库CPU和内存的使用率,以及SQL查询排行榜。2.决定...

2018-09-27 06:25:02 190

原创 规则 - 利用应用缓存

内容:使用应用缓存以成本效益方式扩展。场景:当需要提高可扩展性和降低成本的时候。用法:要最大化应用缓存的影响,首先分析如何拆分架构。原因:应用缓存提供了以成本效益方式扩展的能力,但是应该与系统架构互补。要点:在实施应用缓存,从成本和可扩展性角度看取得最大效果之前,应该考虑如何沿y轴或者z轴拆分应用。  基本观点:1.如果想以成本效益方式扩展,绝对需要实施应用缓存。...

2018-09-27 06:20:56 140

原创 规则 - 利用页面缓存

内容:在网络服务器的前端部署页面缓存。场景:总是。用法:选择缓存的解决方案然后部署。原因:通过缓存和分发以前产生的动态请求降低网络负载,快速响应静态对象请求。要点:页面缓存是减少动态请求的好方法,可以减少客户响应时间,以成本效益方式扩散。  三个要点:1.在网络服务器前面实现页面缓存,有显著的扩展效益。2.使用适当的HTTP头,可以确保内容缓存和结果缓存的最大潜...

2018-09-27 06:18:11 184

原创 规则 - 利用Ajax缓存

内容:适当使用HTTP响应头以确保Ajax调用可以缓存。场景:除了因为数据刚刚更新过,所以绝对需要实时数据以外的任何Ajax调用。用法:适当调整Last-Modified、Cache-Control、Expires。原因:减少用户感知的响应时间,增加用户的满意度,提高平台或方案的可扩展性。要点:尽量利用Ajax和缓存Ajax调用以提高用户满意度及可扩展性。 Ajax是一组技...

2018-09-27 06:15:20 262

原创 规则 - 灵活管理缓存

内容:使用Expires头来减少请求量,提高系统的可扩张性和性能。场景:所有的对象类型都需要考虑。用法:可以通过应用代码在网络服务器上设置头字节。原因:减少对象请求可提高用户页面性能并减少系统必须处理的单用户请求数。重点:对每类对象(图片、HTML、CSS、javascript、PHP等),根据目标可缓存时间安排最合适其时间长度的头字节。 HTTP提供了比页面meta标签更...

2018-09-27 06:12:20 231

原创 规则 - 利用CDN缓存

内容:用CDN(内容分发网络)来减少网站的负载。场景:速度提升和可扩展水平的提高可以平衡额外的成本。用法:大多数CDN借助DNS为网站提供内容。因此可能需要在DNS做些小改动或添加记录,以便把提供内容的网址迁移到新的子域名上。原因:CDN有助于平缓流量高峰,而且常常是网站部分流量扩展比较经济的方法。常用于改善网页下载时间。要点:CDN是快速而且简单的平缓高峰流量和一般流量增长的方式...

2018-09-27 06:09:59 606

原创 矛盾论读书笔记

事物或者是系统当中都有矛盾,但是什么是矛盾呢?矛盾是有差异的地方,是不和谐的地方,是让人感觉突兀的地方,这些解释都是在文字上给予的解释,实际情况中要通过调查、思考的方式去确定什么是矛盾。 矛盾具有普遍性,第一种含义是矛盾存在与一切事物的发展过程中,第二种含义是事物的发展过程中存在着自始至终的矛盾运行。第一种说法很好理解,第二种说法是说在事物的变化过程中,由多组矛盾一直在不停变化,此消彼...

2018-09-26 05:49:56 3123

原创 多线程专题 - 脉络图

2018-09-06 15:12:54 159

原创 多线程专题 - 拾遗增补

线程的状态 线程组 SimpleDateFormat非线程安全问题 线程异常处理和传递 1.线程的状态线程的状态有:创建、运行、结束、等待、等待锁、等待时间。创建是创建线程的实例对象,但是还没有调用start方法运行是线程启动,正常进入运行结束是线程任务结束等待是进入等待状态,等待其他线程唤醒等待锁是线程竞争同步区域的锁,目前还没有竞争到等待时间是线程等待一...

2018-09-06 11:56:05 118

原创 多线程专题 - 单例模式和多线程

立即加载 延迟加载 使用静态内置类实现单例模式 序列化和反序列化的单例模式实现 使用static代码块实现单例模式 完善使用enum美剧实现单例模式 1.立即加载的单例模式public class Singleton {private static Singleton instance=new Singleton();private Singleton() {}...

2018-09-06 11:52:11 145

原创 多线程专题 - 定时器Timer

Timer是一个线程安全的类,多线程会共享一个Timer的对象。这个类提供的定时设置并不提供准时的保障,它安排定时任务使用的机制是object.wait(long)方法。如果一个定时器要启动多个定时任务,因为其中有个定时任务执行时间太长导致后续任务延时的话,后续的任务会以追赶加急的方式执行,但是要保证准时,则需要在设置定时任务时进行设计上的保证。如果一个定时器启动了多个定时任务,当定时器取消的时候...

2018-09-06 11:49:19 283

原创 规则 - 放宽时间约束

内容:尽可能放宽系统中的时间约束。场景:当考虑在用户操作步骤之间,某些项目或对象必须保持某种状态的约束时。用法:放宽业务规则的约束。原因:因为大多数关系型数据库的ACID属性,要扩展带有时间约束的系统难度极高。要点:认真考虑诸如某个产品从用户查看开始,到购买为止的时间约束的必要性。与让用户有些失望相比,系统因为无法扩展而停止服务相比更为严重。 分布式环境中有三个核心要求存在...

2018-09-05 08:37:27 353

原创 规则 - 停止重定向

内容:如果有可能,避免重定向;确实需要时,采用正确的方法。场景:总是。用法:如果需要重定向,考虑通过服务器配置来实现,而不是利用HTML或者其他基于代码的解决方案。原因:总体来说,重定向会延迟用户进程,消耗计算资源,造成错误,不利于页面在搜索引擎中的排名。要点:正确而且仅在必要时使用重定向。 HTTP 3xx状态码中有几段是与重定向相关的。300多项选择(Multipl...

2018-09-04 15:42:25 478

原创 规则 - 避免画蛇添足

内容:翻来覆去地检查刚完成的工作或马上读取刚写入的数据。场景:总是。用法:避免为了确认操作是否有效而读取刚写入的数据,如近期处理需要,可把数据存储在本地或分布式缓存。原因:与不太可能出现的操作失败所产生的成本相比,确认操作成本更高,而且这类活动与有效扩张相背离。要点:永远不要为确认操作是否有效而读取刚写入的数据。相信持久层会对写入的相关数据出现无法读取或操作失败时发出通知。通过把数...

2018-09-04 15:41:23 146

原创 规则 - 适当使用数据库

内容:当需要ACID属性来保存数据之间的关系和一致性时,可以使用关系型数据库。其他数据的存储需要考虑更适合的工具,如NoSQL DBMS。场景:当在系统结架构中引入新数据或数据结构时。用法:考虑数据量、存储量、响应时间长短、关系和其他因素来选择适当的存储工具。也要考虑数据结构及产品需要对数据进行的管理和操作。原因:关系型数据库提供了高度的事务完整性,但是成本很高,难以扩展,而且与其他许...

2018-09-04 15:40:36 137

原创 规则 - 托管方案扩展

内容:把系统部署到三个或更多活的数据中心,以降低总体成本、增加可用性并实现灾难恢复。数据中心可以是自有设施、托管、云计算实例。场景:任何正在考虑添加灾难恢复数据中心(冷备)的快速增长的业务,或希望通过三数据中心方案优化成本的成熟业务。用法:根据AKF扩展立方体来扩展数据。以“多活”方式配置系统。使用Iaas/Paas来解决突发容量问题,新投资或者作为三数据中心方案的一部分。原因:数据中...

2018-09-04 15:39:53 228

原创 规则 - 积极使用日志文件

内容:使用应用日志文件来诊断和预防问题。场景:制定监控日志文件的过程,迫使人们对发现的问题采取行动。用法:使用任何监控工具,从自定义脚本到Splunk或者ELK框架,监控应用日志中的错误。导出这些错误信息,然后安排资源去确定和解决问题。原因:日志文件是有关应用执行的绝好信息来源,不要轻易抛弃。要点:若充分利用好日志文件,生产问题将越来越少,且当问题出现时刻迅速定位解决。 日...

2018-09-04 15:38:49 91

原创 规则 - 谨慎使用防火墙

内容:只有在显著降低风险时才使用防火墙。要认识到防火墙会导致可扩展性和可用性问题。场景:总是。用法:可以使用防火墙满足关键PII、PCI(支付卡行业)的合规性要求。不要在低价值的静态内容防护上。原因:防火墙降低可用性病引起不必要的可扩展性瓶颈。要点:防火墙虽有用,但常被滥用,设计和实施不当会带来可用性和可扩展性问题。  防火墙是为了提高信息安全,降低数据安全风险的工具。...

2018-09-04 15:37:40 234

原创 规则 - 利用云

内容:有目的地利用云技术按需扩展场景:当需求是临时的、突增的、偶发的,响应时间不是产品的核心问题。要将其当成是“租用风险”--新产品对未来需求的不确定型,需要在快速改变或放弃投资间抉择。公司从双活向三活数据中心迁移时,云可以作为第三数据中心。用法:利用第三方云环境应对临时需求,如季节性业务变动、大的批处理任务、测试中需要的QA环境;当用户请求超过某个峰值时,把应用设计成可以从第三方云环境对...

2018-09-04 15:36:49 99

原创 规则 - 用商品化系统

内容:尽可能采用小型廉价的系统场景:在超高速增长的生产系统采用该方法,在比较成熟的产品中以此为架构原则用法:在生产环境中远离那些庞大的系统原因:可快速和低成本增长。只采购必要的容量,不浪费在尚未明确的容量需求上。要点:构建能够依靠商品化硬件的系统,不要掉进高利润和高端服务器的陷阱。 这是一个商业成本的计算题。假设我们需要的整体性高造价的系统成本是100万每月的运维成...

2018-09-04 15:35:52 88

原创 多线程专题 - 锁的使用

使用ReentrantLock类 使用ReentrantReadWriteLock类 1.使用ReentrantLock类样例代码:import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class BusinessService {...

2018-09-04 15:33:41 141

原创 多线程专题 - 线程间的通信

这一部分是多线程基础中非常基础的部分。 等待 / 通知机制 join的作用 ThreadLocal的使用 InheritableThreadLocal的使用 1.等待 / 通知机制等待通知 / 通知的机制模型如下所示:设定线程A为等待线程,线程B为通知线程,交互过程如下:第一步.线程A请求异步服务,异步服务的结果由线程B运行提供,现在线程A发起服务请求后,进入等待状...

2018-09-04 15:30:14 134

机器学习的doc

机器学习的文档,可以获得相关的信息,不用到处上网

2011-12-08

SVN乌龟版简装

SVN是开发必备的,没有是不可以的。学着用吧,很简单

2011-11-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除