一个要成为架构师的男人
文章平均质量分 75
踏实_进取
男人,累点没什么
展开
-
架构之路
1、架构演变第一步:物理分离webserver和数据库 2、架构演变第二步:增加页面缓存 如用squid做页面缓存,或生产静态页面,不使用jsp 3、架构演变第三步:增加页面片段缓存 页面缓存失效情况比较多,因此可以使用页面片段缓存,只缓存不长变部分。 、 4、架构演变第四步:数据缓存:缓存那些读多写少的数转载 2016-05-25 13:49:34 · 289 阅读 · 0 评论 -
thrift server模式
最近在项目中需要把客户端的一些信息发送到服务器上,听起来是个很简单的需求,但是实际考虑下,觉得如果自己手工实现,工作量也不小,而且尽是些繁琐且无聊的事情,遂考虑用现成的库来实现。对比了protocol buffer与thrift后,本着偷懒到底的原则,选择了thrift,因为thrift本身提供了RPC框架,而protocol buffer仅是个序列化的库而已。 首先是编译thrift转载 2016-08-26 17:34:25 · 933 阅读 · 0 评论 -
多线程线上问题定位(附带有用的Linux命令)
TOP命令1,如果某个线程cpu利用率一直100%, 则说明这个线程有可能有死循环.2,如果某个线程长期除以top位置,说明这个线程可能有性能问题3,cpu利用率高的线程不停的变化,说明并不是某一个线程导致CPU偏高.如果是第一种情况,有可能是GC造成的.我们可以用jvm自带的jstat命令查看一下GC情况.是否是持久代或者年老代满了.产生的Full GC,从而导致CPU利用率飙高原创 2017-02-17 10:41:31 · 1540 阅读 · 1 评论 -
java线程面试题
不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发、调试、优化经验,所以线程相关的问题在面试中经常会被提到。在典型的Java面试中, 面试官会从线程的基本概念问起, 如:为什么你需要使用线程, 如何创建线程,用转载 2017-02-13 11:44:09 · 310 阅读 · 0 评论 -
关于健康
Zed Shaw,程序员,吉他手,作家,《笨方法学 Python》的作者。 (本文作者:Zed Shaw )我在最近几次的博客中谈论了《Python The Hard Way Learn | 笨方法学 Python》这个话题,现在我想再开一个新话题:程序员在职业生涯中可能遇到的健康问题。我发现很多程序员都认为敲代码对他们的身体健康貌似没什么影响。我真的非常希望,大家转载 2017-03-23 09:09:52 · 749 阅读 · 0 评论 -
从 MVC 到前后端分离
摘要: 本文首先描述 MVC 模式是什么,然后针对 MVC 的不足发表了作者的个人观点,随后引出了基于 REST 架构实现前后端分离的方案,最后使用了 Java 的 Spring 框架搭建了一个简单的 REST 框架。全文从原理到实战,希望对于想了解如何实现前后端分离架构的朋友有所帮助。由于篇幅有限,且个人水平不足,难免会出现一些遗漏或不足之处,恳请大家提出宝贵意见或建议,谢谢!转:https转载 2017-06-05 10:08:25 · 383 阅读 · 0 评论 -
JVM线上问题排查
作为一个合格的开发人员,不仅要能写得一手还代码,还有一项很重要的技能就是排查问题。这里提到的排查问题不仅仅是在coding的过程中debug等,还包括的就是线上问题的排查。由于在生产环境中,一般没办法debug(其实有些问题,debug也白扯。。。),所以我们需要借助一些常用命令来查看运行时的具体情况,这些运行时信息包括但不限于运行日志、异常堆栈、堆使用情况、GC情况、JVM参数情况、线程情况等。转载 2017-08-24 14:22:41 · 2066 阅读 · 0 评论 -
常用的跨语言通信方案
传统的跨语言通信方案:基于SOAP消息格式的WebService基于JSON消息格式的RESTful 服务主要弊端:XML体积太大,解析性能极差JSON体积相对较小,解析相对较快,但表达能力较弱现在比较流行的跨语言通信方案:Google protobuf (http://code.google.com/p/protobuf)Apach转载 2016-08-26 15:30:46 · 981 阅读 · 0 评论 -
logback简要介绍(三)
:是的子节点,是负责写日志的组件。有两个必要属性name和class。name指定appender名称,class指定appender的全限定名。 1.ConsoleAppender:把日志添加到控制台,有以下子节点::对日志进行格式化。(具体参数稍后讲解 ):字符串 System.out 或者 System.err ,默认 System.o转载 2016-07-07 10:23:45 · 285 阅读 · 0 评论 -
logback简要介绍(二)
在配置过滤器是报错:Java.lang.ClassNotFoundException: org.codehaus.janino.ScriptEvaluator,网上查找资料才发现需要额外的两个jar包,见下文。原文地址:http://aub.iteye.com/blog/1110008logback 简介logback 常用配置详解(一) and转载 2016-07-07 10:13:45 · 524 阅读 · 0 评论 -
秒杀系统
秒杀业务分析正常电子商务流程(1)查询商品;(2)创建订单;(3)扣减库存;(4)更新订单;(5)付款;(6)卖家发货秒杀业务的特性(1)低廉价格;(2)大幅推广;(3)瞬时售空;(4)一般是定时上架;(5)时间短、瞬时并发量高;2 秒杀技术挑战假设某网站秒杀活动只推出一件商品,预计会吸引1万人参加活动,也就说最大并发请求数是10000,秒杀系统需要面对的技术挑战有:转载 2016-06-25 16:42:58 · 3052 阅读 · 0 评论 -
电商项目中库存管理(问答式)
【今日话题】电商项目的库存设计,如何不卖超,取消订单把库存加回去,不能多加 - 沈括号1. 这个说一个之前处理并发的经验哈,情况应该是类似的,写sql的时候多加一个条件,用update tbl set col = col - num where col ≥ num,这样子吧 - 骑马爬树2. 再加个定时任务去检查用户是否下单 没有的话 update转载 2016-06-15 11:28:26 · 8221 阅读 · 0 评论 -
电商项目中的秒杀
秒杀业务一、秒杀价格(参考京东)1、秒杀开始前,秒杀商品显示原价(涉及除秒杀活动页面外所有商品的显示页面,包括购物车、收藏、足迹等页面)2、秒杀开始前,可以使用原价购买商品3、秒杀开始前,秒杀活动中的商品显示秒杀价,而非原价。进入商品详细可显示原价 4、秒杀开始后,秒杀商品显示秒杀价(所有商品显示页面)5、秒杀结束后,秒杀商品恢复原价(涉及除秒杀活动页面外所有商品的显示转载 2016-06-15 14:58:50 · 3422 阅读 · 1 评论 -
电商项目中的售后项目规划
电商的售后业务影响到消费者的体验,需要考虑的问题如下:一、主要业务点,分为必填和选填(必填是简化后的功能,能满足基本要求,但不完善,选填参考京东实现) 1、申请售后对象:订单为单位,不能选择数量(必填)、订单中某个商品为对象,可选择数量(选填) 2、用户申请售后时机:已支付未发货/已收货(必填)、除退款后任何情况都可以申请售后(选填)转载 2016-06-15 14:59:42 · 2552 阅读 · 0 评论 -
电商项目架构
1 电商案例原因分布式大型网站,目前看主要有几类1.大型门户,比如网易,新浪等;2.SNS网站,比如校内,开心网等;3.电商网站:比如阿里巴巴,京东商城,国美在线,汽车之家等。大型门户一般是新闻类信息,可以使用CDN,静态化等方式优化,开心网等交互性比较多,可能会引入更多的NOSQL,分布式缓存,使用高性能的通信框架等。电商网站具备以上两类的特点,比如产品详情可以采用CDN,静态化,交互性高的转载 2016-07-06 15:36:58 · 20273 阅读 · 3 评论 -
大型网站架构之道
1 大型网站的特点用户多,分布广泛大流量,高并发海量数据,服务高可用安全环境恶劣,易受网络攻击功能多,变更快,频繁发布从小到大,渐进发展以用户为中心免费服务,付费体验2 大型网站架构目标高性能:提供快速的访问体验。高可用:网站服务一直可以正常访问。可伸缩:通过硬件增加/减少,提高/降低处理能转载 2016-07-06 17:04:20 · 687 阅读 · 0 评论 -
ExecutorService创建多线程步骤
ExecutorService 建立多线程的步骤:1。定义线程类class Handler implements Runnable{}2。建立ExecutorService线程池ExecutorService executorService = Executors.newCachedThreadPool();或者int转载 2016-07-27 20:31:18 · 1832 阅读 · 0 评论 -
logback简要介绍(一)
一:根节点包含的属性: scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。debug:当此属性设置为true时,将打印出logback内部日志信转载 2016-07-07 09:42:07 · 315 阅读 · 0 评论