自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(430)
  • 收藏
  • 关注

征服 Redis + Jedis + Spring (二)—— 哈希表操作(HMGET HMSET)

一、预期接上一篇,扩充User属性:Java代码publicclassUserimplementsSerializable{privatestaticfinallongserialVersionUID=-1267719235225203410L;privateStringuid;privateStringadd...

2013-06-12 09:14:00 336

征服 Redis + Jedis + Spring (三)—— 列表操作

通过spring-data-redis完成LINDEX, LLEN, LPOP, LPUSH, LRANGE, LREM, LSET, LTRIM, RPOP, RPUSH命令。其实还有一些命令,当前版本不支持。不过,这些List的操作方法可以实现队列,堆栈的正常操作,足够用了。为了简便操作,我使用了StringRedisTemplate。用字符串操作做展示。当然,你可以继续使用Red...

2013-06-12 09:13:00 149

Spring 注解学习手札(一) 构建简单Web应用

我们将用到如下jar包:引用aopalliance-1.0.jarcommons-logging-1.1.1.jarlog4j-1.2.15.jarspring-beans-2.5.6.jarspring-context-2.5.6.jarspring-context-support-2.5.6.jarspring-core-2.5.6.jarsprin...

2013-06-12 09:13:00 157

Spring 注解学习手札(二) 控制层梳理

言归正传,研究一下注解下的控制层。我习惯于使用JSTL展示页面,因此需要在原lib基础上增加jstl.jar和standard.jar,详细lib依赖如下:引用aopalliance-1.0.jarcommons-logging-1.1.1.jarlog4j-1.2.15.jarspring-beans-2.5.6.jarspring-context-2.5.6.j...

2013-06-12 09:13:00 151

Spring 注解学习手札(三) 表单页面处理

如果要说表单,最简单的就是用户登录页面了!估计大多数做B/S出身的兄弟可能写的第一个表单就是登录表单了!今天,我也不例外,做一个登录验证实现!首先,改造一下账户类Account,增加一个id字段:Account.javaJava代码/***2010-1-23*/packageorg.zlex.spring.domain;importj...

2013-06-12 09:13:00 117

Spring 注解学习手札(四) 持久层浅析

这里将用到以下几个包:引用aopalliance-1.0.jarcommons-collections.jarcommons-dbcp.jarcommons-logging-1.1.1.jarcommons-pool.jarjstl.jarlog4j-1.2.15.jarmysql-connector-java-5.1.6-bin.jarspring...

2013-06-12 09:13:00 151

Spring 注解学习手札(五) 业务层事务处理

这里将用到以下几个包:引用aopalliance-1.0.jarcommons-collections.jarcommons-dbcp.jarcommons-logging-1.1.1.jarcommons-pool.jarjstl.jarlog4j-1.2.15.jarmysql-connector-java-5.1.6-bin.jarspring...

2013-06-12 09:13:00 298

Spring 注解学习手札(六) 测试

这里将用到以下几个包:引用aopalliance-1.0.jarcommons-collections.jarcommons-dbcp.jarcommons-logging-1.1.1.jarcommons-pool.jarjunit-4.4.jarjstl.jarlog4j-1.2.15.jarmysql-connector-java-5.1.6-...

2013-06-12 09:13:00 212

Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable

SpringMVC层跟JSon结合,几乎不需要做什么配置,代码实现也相当简洁。再也不用为了组装协议而劳烦辛苦了!一、Spring注解@ResponseBody,@RequestBody和HttpMessageConverterSpring 3.X系列增加了新注解@ResponseBody,@RequestBody@RequestBody将HTTP请求正文转换为适合的HttpMessageCon...

2013-06-12 09:12:00 95

Spring 注解学习手札(八)补遗——@ExceptionHandler

Spring注解,改变了我的开发思路。前段时间,用@RequestBody,@ResponseBody,不费吹灰之力就解决了JSon自动绑定。接着就发现,如果遇到RuntimeException,需要给出一个默认返回JSON。以前都是用SimpleMappingExceptionResolver拦截实现,今天偶尔看下资料,@ExceptionHandler,就把这个异常给拦截了,太方便了!...

2013-06-12 09:12:00 95

Spring HttpInvoke实现,以及效率提升!

最近接手服务器总被人质疑效率问题,说到底是质疑Spring HttpInvoke的效率问题。好在经过同事们的努力,找到了问题的根源,最终解决了这个问题。我也顺道整理一下Spring HttpInvoke——那曾经最为熟悉的东西。Spring HttpInvoke,一种较为常用的、基于Spring架构的服务器之间的远程调用实现,可以说是轻量级的RMI。最初,我们使用Spring HttpInvoke...

2013-06-12 09:12:00 114

Memcached笔记——(一)安装&常规错误&监控

一、下载1.Libevent简单的说就是一个事件触发的网络库,Memcached离不开它。Shell代码wgethttp://cloud.github.com/downloads/libevent/libevent/libevent-2.0.17-stable.tar.gz2.Memcached今天的主角Shell代码wgethttp://mem...

2013-06-12 09:12:00 136

Memcached笔记——(二)XMemcached&Spring集成

一、Memcached Client简要介绍Memcached Client目前有3种:Memcached Client for JavaSpyMemcachedXMemcached这三种Client一直存在各种争议:Memcached Client for Java 比 SpyMemcached更稳定、更早、更广泛;SpyMemcached 比 Memcached Client f...

2013-06-12 09:12:00 90

Memcached笔记——(三)Memcached使用总结

为了将N个前端数据同步,通过Memcached完成数据打通,但带来了一些新问题:使用iBatis整合了Memcached,iBatis针对每台server生成了唯一标识,导致同一份数据sql会产生不同的key,造成重复缓存。——通过重写iBatis部分原码,终止了唯一标识的生成,同一个SQL产生同一个Key,同时对生成key做hash,控制长度,使得数据统一在Memcached。为了迎合iBa...

2013-06-12 09:12:00 120

Memcached笔记——(四)应对高并发攻击

近半个月过得很痛苦,主要是产品上线后,引来无数机器用户恶意攻击,不停的刷新产品各个服务入口,制造垃圾数据,消耗资源。他们的最好成绩,1秒钟可以并发6次,赶在Database入库前,Cache进行Missing Loading前,强占这其中十几毫秒的时间,进行恶意攻击。为了应对上述情况,做了如下调整:更新数据时,先写Cache,然后写Database,如果可以,写操作交...

2013-06-12 09:12:00 90

Java关键字——transient

“transient”——“瞬态”,先不说这个翻译是否恰当,这个变量关键字一直不曾使用,简单的说就是被瞬态定义的变量不可序列号。或者这么给他换个名字——“不可序列化状态”?打个比方,如果一个用户有一些敏感信息(譬如密码,银行卡号等),为了安全起见,不希望在网络操作(主要涉及到序列化操作,本地序列化缓存也适用)中被传输。这些信息对应的变量就可以被定义为transient类型。换句话说,这个字段的生命...

2013-06-12 09:12:00 118

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需要用“?”作为分隔符,其余参数用“&”做分隔符。这种ge...

2013-06-12 09:11:00 118

Properties文件的XML格式

想必大家都用过*.properties文件,作为配置文件。但是,如果该文件写入了中文,待编译后内容就会成为乱码,使用native命令也好、使用ant执行编码转换也好,多少有点麻烦,与其如此,我们不如直接使用properties的xml格式。Xml代码<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEprope...

2013-06-12 09:11:00 124

Java 与 C 底层数据类型转换

Java代码importjava.io.DataInputStream;importjava.io.DataOutputStream;importjava.io.IOException;/***仅仅适用于Java与C++通讯中,网络流解析与生成使用**高低位互换(Big-Endian大头在前&Littl...

2013-06-12 09:11:00 154

Java取得当前路径的方法

同样是Java的文件移动函数源代码(整个目录移动)中提到的写批处理是经常用到的一个功能:执行文件当前路径的取得。这个其实很简单,用下面的代码从系统的Property中就可以取到:Java代码Stringdir=System.getProperty("user.dir");另外getProperty还可以取到很多其他我们经常要用到的环境参数,下面列举出了一些:键 相关值...

2013-06-12 09:11:00 93

从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式(二)

下面再来看看Tomcat是如何使用NIO来构架Connector这块的。先看看Tomcat Connector这块的类图:其中:NioEndpoint负责组装各部件Acceptor负责监听新连接,并把连接交给PollerPoller负责监听所管辖的channel队列,并把请求交给SocketProcessor处理SocketProcess...

2013-06-11 11:04:00 78

从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式(三)

最后我们再看看NIO方面最著名的框架Mina,抛开Mina有关session和处理链条等方面的设计,单单挑出前端网络层处理来看,也采用的是与Jetty和Tomcat类似的模式,只不过它做了些简化,它没有隔开请求侦听和请求处理两个阶段,因此,宏观上看它只分为两个阶段。先看看它的类图:其中:SocketAcceptor起线程调用SocketAcceptor.Work...

2013-06-11 11:04:00 61

动态更改JVM里的class

近来需要完成一个feature:修改已load到JVM中的某个class,对其加一些代码,以此来动态修改运行中的程序。对着这个feature我找到的方案是agent+Instrumentation+ASM一路做下来有以下几点比较有意思:1)动态attach agent到某个JVM进程一般使用agent都是静态的,直接在运行某程序时加agent参数,这样agent...

2013-06-11 11:04:00 218

Java动态执行可配置的逻辑

某些场景下Java系统里需要动态执行一段配置在数据库中(也可以是其他存储)的逻辑,仅仅基于Java是无法完成的,但可以通过集成Groovy来实现这个效果,尝试过程如下:1)在数据库中配置脚本,表结构随意定义,例子如下:2)Java中动态调存在于数据库里的groovy脚本(存在上表中的script字段里)[java]view plaincopy...

2013-06-11 11:04:00 520

仿造Ext Api Doc打造前端组件在线文档

项目中的前端组件已达到一定规模,平时常常有开发人员来询问我组件的用法,并且已存在很多由于使用不当造成的问题,因此有必要出一份前端组件的使用文档,方便别人,也方便自己。使用什么样的格式让我费了不少脑筋,使用word不方便别人索取和自己更新;使用wiki,不方便自己编写;使用普通的html,成本很高。觉得如果能做一个类似于Ext Api Doc那样的文档就很不错,使用它很方便,不光能建立起...

2013-06-11 11:04:00 98

如何激发思考

越来越发现没思考就没有进步,忙碌的工作非但不能让你沉淀起来,反而会让你因为失去思考而变得空乏。身边不乏拼死工作却没啥突破的例子,也包括自己,问题关键就是与是否学会了思考。最近一直在思考这么一个问题,如何激发思考,如何使自己在千遍一律的工作中找到突破口。找到了一些思路和方法,总结如下:1)when---何时需要思考每天早上工作之前,安排当日的工作每天晚上给自己10分钟安静...

2013-06-11 11:04:00 71

程序员如何提高工作效率

程序员被誉为一群智商很高的人,是一群帮助其他人提高效率的人,局外人会估计程序员一定是很聪明地、很高效地工作,可事实上却不是如此。周围很多人,也包括我自己,总是做一些重复性的工作,很机械,很低效地工作,前段时间读了经典书籍《卓有成效的程序员》,发现工作确实存在很多提高效率的改进点,只要自己花一点时间,花一点心思,用一点技术,很能出出其不意的效果。结合这本书,加上自己和他人的低效工作,总结了以下几...

2013-06-11 11:04:00 59

一次架构设计的摸索

最近部门安排我参与一个后台计费系统的项目,作为架构设计人员,这一两周的主要工作就是推演PD的UC和相关的架构设计,一个阶段的工作下来有了些心得。这种非底层技术性项目的架构设计最关键的是业务架构设计,对业务的把握是所有架构因素中最重要的因素。项目最开始我把精力放在了如何用些花哨的模式搭建可扩展性强的框架,可后来逐渐发现这些不是大家最需要的,大家最需要的是通过技术实现的角度把业务上的各种需求整...

2013-06-11 11:03:00 67

淘宝性能测试要点

每台服务器每秒平均PV量= ( (80%*总PV)/(24*60*60*(9/24)))/服务器数量,即每台服务器每秒平均PV量=2.14*(总PV)/* (24*60*60) /服务器数量最高峰的pv量是1.29倍的平均pv值性能测试策略1.模拟生产线真实的硬件环境。2.服务器置于同一机房,最大限度避免网络问题。3.以PV为切入点,通过模型将其转换成性能测试可量化的T...

2013-06-11 11:03:00 114

解析spring schedule

Spring在schedule这块支持JDK Timer、concurrent、quartz三种,这三种任务调度方案在实现机制和调用方法上都不同,但spring通过对其包装,使得基于spring能用统一的配置和编码风格来使用这三种schedule方案。总得来说这三种schedule都是基于scheduler->trigger->job的基本流程,因此spring通过Time...

2013-06-11 11:03:00 95

架构师的那些事儿

架构师特质:能够帮助团队的同事解决问题,参与项目和产品设计对于公司的产品和项目发展方向有清晰的认知常常思考企业产品和项目的方向对公司产生的价值跟业务人员有良好的沟通,善于发掘需求具备很广的知识面,不一定要很深入大局观、开放心态和善于沟通复杂问题简单化的抽象能力架构师分类:基础平台架构师业务架构师数据架构师架构师的职责:平衡平衡需求和条件、平衡性能和...

2013-06-11 11:03:00 62

分享一些牛人的心得

牛P的经验、经历、感受分享刘加伟:1. 做为技术方面的大牛/专家,一路走来,你最大的感悟和收获是什么?只有努力, 并且相信自己, 你才能获得一点一点技术上的成绩.2. 因为做技术的平时都喜欢熬夜、加班,在家庭和工作之间时间你是如何分配的?毕业前四时候, 我几乎是全身心的投入技术的学习中, 通过不断的吸取各种计算机方面的知识, ...

2013-06-11 11:03:00 102

hessian源码分析(一)------架构

在计费中心的对外交互这块采用了hessian,有必要对hessian的运行机理和源码做一定的解析。大致翻了翻源码后,发现hessian的主要结构分客户端与服务端,中间基于http传输。客户端主要做的事情是把对远程接口调用序列化为流,并传输到服务端;服务端主要做的事情是把传输过来的流反序列化为对服务的请求,调用相应服务后把结果序列化为流返回给客户端。一次完整的调用如下图所示:...

2013-06-11 11:03:00 74

Hessian源码分析(二)------ HessianProxy

Hessian在客户端一块采用Proxy模式,当客户端调用远程接口时,HessianProxy会代理这个动作,在invoke方法中,把客户端请求的方法和参数序列化为预订格式的输出流,主要流程如下图所示:下面我将详细解析一下invoke源码:[java]view plaincopypublicObjectinvoke(...

2013-06-11 11:03:00 72

Hessian源码分析(三)------ HessianSkeleton

HessianSkeleton是Hessian server端的核心类,主要功能是接收网络输入流(被包装为AbstractHessianInput),反序列化输入流得到methodName和参数,然后调用服务端的服务,得到结果后序列化为输出流,返回给客户端,主要流程如下图所示:HessianSkeleton的核心代码如下所示:[java]view p...

2013-06-11 11:03:00 73

架构师的沟通方式

架构师是个很需要沟通技巧的角色,需要和老板沟通,使其相信在技术上的可行性;需要和PD沟通,弄清楚商业逻辑;需要和项目经理沟通,使其更科学地安排人员和进度;需要和开发人员沟通,使其理解设计思路,保障设计架构在具体实施中得以落实;需要和QA沟通,使其了解项目的风险点和关键点。因此,架构师需要在沟通上下功夫,这是保障工作顺利进行的关键环节。下面是我总结的几个很常用的沟通方式:挑衅式的沟通方式...

2013-06-11 11:03:00 79

Quartz源码分析(一)------ 以线程等待的方式实现按时间调度

Quartz是运用最广的任务调度框架,它最核心的组成部分是Scheduler、Trigger、JobDetail,然后给Scheduler配置个线程QuartzSchedulerThread,此线程在Scheduler初始化时启动,等待Scheduler start,然后从JobStore里拿到最近要触发的Trigger,以线程等待的方式等到trigger触发时间点,之后就是执行trigger...

2013-06-11 11:02:00 98

最佳的75个安全工具工具

Nessus(最好的开放源代码风险评估工具)网址:http://www.nessus.org/类别:开放源码平台:Linux/BSD/Unix简介:Nessus是一款可以运行在Linux、BSD、Solaris以及其他一些系统上的远程安全扫描软件。它是多线程、基于插入式的软件,拥有很好的 GTK界面,能够完成超过1200项的远程安全检查,具有强大的报告输出能力,可以产生HTML、XML、L...

2013-06-11 11:02:00 137

Excel 使用技巧集锦——163种技巧

Excel 使用技巧集锦——163种技巧目 录一、基本方法71.快速选中全部工作表72.快速启动Excel73.快速删除选定区域数据74.给单元格重新命名75.在Excel中选择整个单元格范围76.快速移动/复制单元格87.快速修改单元格式次序88.彻底清除单元格内容89.选择单元格810....

2013-06-11 11:02:00 89

JexcelApi和POI导入Excel日期识别成数字的解决方案

用过Jxl或者POI导入Excel信息的朋友应该都遇到过这样的问题。日期格式的单元格有些会识别成数字单元格。(为什么说有些呢?因为在Excel文件中输入2008-3-18的日期可以正确导入,但是输入3-18的就会识别成数字。)关于这个问题我找了很久,都没有找到解答。现在解决了,所以记录以下,一是怕以后忘了,二是希望遇到这个问题的朋友可以少走弯路。首先来分析一下这个问题的成因。既然两个开源包...

2013-06-11 11:02:00 69

空空如也

空空如也

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

TA关注的人

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