`
wxyfighting
  • 浏览: 191372 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论
文章列表
“transient”——“瞬态”,先不说这个翻译是否恰当,这个变量关键字一直不曾使用,简单的说就是被瞬态定义的变量不可序列号。或者这么给他换个名字——“不可序列化状态”?打个比方,如果一个用户有一些敏感信息(譬如密码,银行卡号等),为了安全起见,不希望在网络操作(主要涉及到序列化操作,本地序列化缓存也适用)中被传输。这些信息对应的变量就可以被定义为transient类型。换句话说,这个字段的生命周期仅存于调用者的内存中。定义People Java代码
1.Get方式这种方式是最简单的参数传递方式。例如:http://www.zlex.org/get.do?a=3&b=5&c=7这个url中,a、b和c是url参数,具体的说是参数名,与之用“=”隔开的是对应的参数值。也就是说参数a的值为3、参数b的值为5、参数c的值为7。get.do是请求地址,紧跟这个地址的参数a需要用“?”作为分隔符,其余参数用“&”做分隔符。这种get请求发起后,服务器端可以通过request.getParameter()方法来获得参数值。如要获得参数a的值可以通过request.getParameter("a");2.Post ...
想必大家都用过*.properties文件,作为配置文件。但是,如果该文件写入了中文,待编译后内容就会成为乱码,使用native命令也好、使用ant执行编码转换也好,多少有点麻烦,与其如此,我们不如直接使用properties的xml格式。 Xml代码 <?xmlversion="1.0"encoding="UTF-8"?>
Java代码 importjava.io.DataInputStream; importjava.io.DataOutputStream; importjava.io.IOException;
同样是Java的文件移动函数源代码(整个目录移动)中提到的写批处理是经常用到的一个功能:执行文件当前路径的取得。这个其实很简单,用下面的代码从系统的Property中就可以取到: Java代码 Stringdir=System.getProperty("user.dir"); 另外getProperty还可以取到很多其他我们经常要用到的环境参数,下面列举出了一些:
下面再来看看Tomcat是如何使用NIO来构架Connector这块的。 先看看Tomcat Connector这块的类图: 其中: NioEndpoint负责组装各部件 Acceptor负责监听新连接,并把连接交给Poller Poller负责监听所管辖的channel队列,并把请求交给SocketProcessor处理 SocketProcessor负责数据处理,并把请求传递给后端业务处理模块 在整个服务端处理请求的过程可以分为三个阶段,时序图如下所示: 阶段一:监听并建立连接 这一阶段主要是Acceptor监听新连接 ...
最后我们再看看NIO方面最著名的框架Mina,抛开Mina有关session和处理链条等方面的设计,单单挑出前端网络层处理来看,也采用的是与Jetty和Tomcat类似的模式,只不过它做了些简化,它没有隔开请求侦听和请求处理两个阶段,因此,宏观上看它只分为两个阶段。 先看看它的类图: 其中: SocketAcceptor起线程调用SocketAcceptor.Work负责新连接侦听,并交给SocketIoProcessor处理 SocketIoProcessor起线程调用SocketIoProcessor.Work负责侦听所管辖的channel队列, sele ...
近来需要完成一个feature:修改已load到JVM中的某个class,对其加一些代码,以此来动态修改运行中的程序。 对着这个feature我找到的方案是agent+Instrumentation+ASM 一路做下来有以下几点比较有意思: 1)动态attach agent到某个JVM进程 一般使用agent都是静态的,直接在运行某程序时加agent参数,这样agent会先于程序启动,这个不符合我的需求,我找到一个动态attach agent的方法,具体细节见以下代码: [java]view plaincopy
某些场景下Java系统里需要动态执行一段配置在数据库中(也可以是其他存储)的逻辑,仅仅基于Java是无法完成的,但可以通过集成Groovy来实现这个效果,尝试过程如下: 1)在数据库中配置脚本,表结构随意定义,例子如下: 2)Java中动态调存在于数据库里的groovy脚本(存在上表中的script字段里) [java]view plaincopy
项目中的前端组件已达到一定规模,平时常常有开发人员来询问我组件的用法,并且已存在很多由于使用不当造成的问题,因此有必要出一份前端组件的使用文档,方便别人,也方便自己。 使用什么样的格式让我费了不少脑筋,使用word不方便别人索取和自己更新;使用wiki,不方便自己编写;使用普通的html,成本很高。觉得如果能做一个类似于Ext Api Doc那样的文档就很不错,使用它很方便,不光能建立起类与类的层级关系,还有很强的搜索功能。隐约感觉Ext Api Doc不是专门用Ext开发出来,而是通过源码里的注释自动生成出来,因为Ext源码里的文档和Doc是一一对应的。所以现在需要做的就是,按照一定 ...
越来越发现没思考就没有进步,忙碌的工作非但不能让你沉淀起来,反而会让你因为失去思考而变得空乏。身边不乏拼死工作却没啥突破的例子,也包括自己,问题关键就是与是否学会了思考。 最近一直在思考这么一个问题,如何激发思考,如何使自己在千遍一律的工作中找到突破口。找到了一些思路和方法,总结如下: 1)when---何时需要思考 每天早上工作之前,安排当日的工作 每天晚上给自己10分钟安静地想想当日的工作 项目出现事故时,不管和自己是否相关,想想其原因和解决办法 项目和公司发生变化时,想想自己在新环境如何改变和适应 自己在工作中犯错误时,及时总结原因和改进办法 他人取得成绩和晋升的时候, ...
程序员被誉为一群智商很高的人,是一群帮助其他人提高效率的人,局外人会估计程序员一定是很聪明地、很高效地工作,可事实上却不是如此。周围很多人,也包括我自己,总是做一些重复性的工作,很机械,很低效地工作,前段时间读了经典书籍《卓有成效的程序员》,发现工作确实存在很多提高效率的改进点,只要自己花一点时间,花一点心思,用一点技术,很能出出其不意的效果。结合这本书,加上自己和他人的低效工作,总结了以下几个可以提高效率的方法: 1)键盘化你最常用的工具,编程时始终做到只用键盘 以eclipse为例有以下常用快捷键: Ctrl+1 快速修复 Ctrl+D: 删除当前行 Ctrl+Al ...
最近部门安排我参与一个后台计费系统的项目,作为架构设计人员,这一两周的主要工作就是推演PD的UC和相关的架构设计,一个阶段的工作下来有了些心得。 这种非底层技术性项目的架构设计最关键的是业务架构设计,对业务的把握是所有架构因素中最重要的因素。项目最开始我把精力放在了如何用些花哨的模式搭建可扩展性强的框架,可后来逐渐发现这些不是大家最需要的,大家最需要的是通过技术实现的角度把业务上的各种需求整理出来,勾画出清晰的业务流程。所以,我感觉对于这种项目,最开始也是最重要的架构设计工作是理解需求并帮助PD调整和优化需求,然后用流程图、类图和时序图的形式做业务架构设计。 对于这种需要多方合作完成的项目 ...
每台服务器每秒平均PV量= ( (80%*总PV)/(24*60*60*(9/24)))/服务器数量, 即每台服务器每秒平均PV量=2.14*(总PV)/* (24*60*60) /服务器数量 最高峰的pv量是1.29倍的平均pv值 性能测试策略 1.模拟生产线真实的硬件环境。 2.服务器置于同一机房,最大限度避免网络问题。 3.以PV为切入点,通过模型将其转换成性能测试可量化的TPS。 4.性能测试数据分为基础数据和业务数据两部分,索引和SQL都会被测试到。 5.日志等级设置成warn,避免大量打印log对性能测试结果的影响。 6.屏蔽ESI缓存,模拟最坏的情况。 7. ...
Spring在schedule这块支持JDK Timer、concurrent、quartz三种,这三种任务调度方案在实现机制和调用方法上都不同,但spring通过对其包装,使得基于spring能用统一的配置和编码风格来使用这三种schedule方案。 总得来说这三种schedule都是基于scheduler->trigger->job的基本流程,因此spring通过TimerFactoryBean、ScheduledExecutorFactoryBean和SchedulerFactoryBean分别实现JDK Timer、concurrent和quartz的基本流程。主要 ...
Global site tag (gtag.js) - Google Analytics