`
wxyfighting
  • 浏览: 191372 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论
文章列表
架构师特质: 能够帮助团队的同事解决问题,参与项目和产品设计 对于公司的产品和项目发展方向有清晰的认知 常常思考企业产品和项目的方向对公司产生的价值 跟业务人员有良好的沟通,善于发掘需求 具备很广的知识面,不一定要很深入 大局观、开放心态和善于沟通 复杂问题简单化的抽象能力 架构师分类: 基础平台架构师 业务架构师 数据架构师 架构师的职责: 平衡 平衡需求和条件、平衡性能和功能、平衡需求和成本 一致 确保需求的一致性;取保产品规划、产品线架构规划和本产品架构与设计的一致;确保客户需求、架构约束、设计准则在实施阶段得到一致贯彻 分解 将系统分解成子系统;将子系统分解成模 ...
牛P的经验、经历、感受分享 刘加伟: 1. 做为技术方面的大牛/专家,一路走来,你最大的感悟和收获是什么? 只有努力, 并且相信自己, 你才能获得一点一点技术上的成绩.
在计费中心的对外交互这块采用了hessian,有必要对hessian的运行机理和源码做一定的解析。 大致翻了翻源码后,发现hessian的主要结构分客户端与服务端,中间基于http传输。客户端主要做的事情是把对远程接口调用序列化为流,并传输到服务端;服务端主要做的事情是把传输过来的流反序列化为对服务的请求,调用相应服务后把结果序列化为流返回给客户端。一次完整的调用如下图所示: HessianProxy是hessian client处理客户端请求的核心类,它采用proxy的设计模式,代理客户端对远程接口的调用,hessian client的主流程的时序图如下所示: ...
Hessian在客户端一块采用Proxy模式,当客户端调用远程接口时,HessianProxy会代理这个动作,在invoke方法中,把客户端请求的方法和参数序列化为预订格式的输出流,主要流程如下图所示: 下面我将详细解析一下invoke源码: [java]view plaincopy
HessianSkeleton是Hessian server端的核心类,主要功能是接收网络输入流(被包装为AbstractHessianInput),反序列化输入流得到methodName和参数,然后调用服务端的服务,得到结果后序列化为输出流,返回给客户端,主要流程如下图所示: HessianSkeleton的核心代码如下所示: [java]view plaincopy
架构师是个很需要沟通技巧的角色,需要和老板沟通,使其相信在技术上的可行性;需要和PD沟通,弄清楚商业逻辑;需要和项目经理沟通,使其更科学地安排人员和进度;需要和开发人员沟通,使其理解设计思路,保障设计架 ...
Quartz是运用最广的任务调度框架,它最核心的组成部分是Scheduler、Trigger、JobDetail,然后给Scheduler配置个线程QuartzSchedulerThread,此线程在Scheduler初始化时启动,等待Scheduler start,然后从JobStore里拿到最近要触发的Trigger,以线程等待的方式等到trigger触发时间点,之后就是执行trigger所关联的JobDetail,最后清扫战场。Scheduler初始化、start和trigger执行的时序图如下所示: 其中,最核心的地方是QuartzSchedulerThread运行机制 ...
Nessus(最好的开放源代码风险评估工具) 网址:http://www.nessus.org/类别:开放源码平台:Linux/BSD/Unix简介:Nessus是一款可以运行在Linux、BSD、Solaris以及其他一些系统上的远程安全扫描软件。它是多线程、基于插入式的软件,拥有很好的 GTK界面,能够完成超过1200项的远程安全检查,具有强大的报告输出能力,可以产生HTML、XML、LaTeX和ASCII文本等格式的安全报告,并且会为每一个发现的安全问题提出解决建议。-------------------
Excel 使用技巧集锦——163种技巧 目 录 一、基本方法7 1.快速选中全部工作表7 2.快速启动Excel7 3.
用过Jxl或者POI导入Excel信息的朋友应该都遇到过这样的问题。日期格式的单元格有些会识别成数字单元格。(为什么说有些呢?因为在Excel文件中输入2008-3-18的日期可以正确导入,但是输入3-18的就会识别成数字。)关于这个问题我找了很久,都没有找到解答。现在解决了,所以记录以下,一是怕以后忘了,二是希望遇到这个问题的朋友可以少走弯路。 首先来分析一下这个问题的成因。既然两个开源包都有同样的问题,说明可能是Excel内部就是这样存储的。所以需要通过一些其他的方式来从NUMERIC Cell中把这些日期找出来。 有两种方式可以辨别NUMERIC Cell储存的是否是日期: 方法 ...
废话少说,拉代码,导入eclipse开干,具体步骤可以参考http://hi.baidu.com/hateeyes/blog/item/7f44942a20ad8f9d023bf66d.html 下面谈谈我对Tomcat架构的理解 总体架构: 面向组件架构 基于JMX 事件侦听 1)面向组件架构 tomcat代码看似很庞大,但从结构上看却很清晰和简单,它主要由一堆组件组成,如Server、Service、Connector等,并基于JMX管理这些组件,另外实现以上接口的组件也实现了代表生存期的接口Lifecycle,使其组件履行固定的生存期,在其整个生存期的过程中 ...
前几天分析了一下Tomcat的架构和启动过程,今天开始研究它的运转机制。Tomcat最本质就是个能运行JSP/Servlet的Web服务器 , 因此最典型的应用就是用户通过浏览器访问服务器,Tomcat接收到请求后转发给Servlet,由Servlet处理完后,把结果返回给客户端。今天就专门解析一下这么一个完整的请求的内部机理。 通过DEBUG,一路跟下来,发现Tomcat处理请求的核心过程是以下几点: 启动的时候启动预支持协议的Endpoint,Endpoint会起专门的线程监听相应协议的请求,默认的情况下,会启动JIoEndpoint,JIoEndpoint基于JavaServ ...
在以前做钱掌柜的时候就想着做项目发布员,因为做这项工作可以帮助你对整个项目实际运转情况摸得更清楚,但后来还是放弃了,主要是感觉自己比较毛糙,不太适合做这项风险较高的工作。可这次计费中心项目让我没有退路,只有自己可以顶上去。 计费中心是个新项目,发布环境和生产环境都为0,难点就在于需要从头开始搭建基础设施。这个项目构建用的是maven而不是以前阿里自制的antx,所以项目结构和构建脚本与以前项目都不太一样。但对于我这个项目发布新手来说,又恰恰是较为有利的一面,可以让我没有任何历史包袱,可以完全遵循自己的设计,发布过程中出现了问题自己处理起来更游刃有余一些。下面总结一下整个发布过程中的沉淀 ...
最近想实现一个可携带状态的线程池,具体需求就是池中的线程被用来处理某种信息,而此信息可视为线程所依赖的外部状态。如果用简单的线程池来实现,线程初始化时就得赋予某些信息,使得线程无法被再次利用。在看老版Tomcat的源码时,找到了答案,其实现思路主要是利用了线程的等待和唤起,HttpProcessor的实现正好基于此思路,时序图如下所示: 初始化HttpProcessor线程时,没法赋予所需的Socket对象,因为如果在初始化阶段就赋予Socket会导致此线程没法回收用来处理其他Socket。因此,在HttpProcessor的run阶段,先把线程给wait住,具体在await方 ...
之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什么一个网站需要那么复杂的技术,于是有了写这篇文章的想法,在这篇文章中将阐述一个普通的网站发展成大型网站过程中的一种较为典型的架构演变历程和所需掌握的知识体系,希望能给想从事互联网行业的同学一点初步的概念,文中的不对之处也请各位多给点建议,让本文真正起到抛砖引玉的效果。架构演变第一步:物理分离webserver和数据库 最开始,由于某些想法,于是在互联网上搭建了一个网站,这个 ...
Global site tag (gtag.js) - Google Analytics