- 博客(93)
- 资源 (38)
- 收藏
- 关注

原创 ibatis 配置总结
核心提示:SqlMap的配置是iBatis中应用的核心。这部分任务占据了iBatis开发的70的工作量。 1、命名空间: sqlMap namespace=Account,在此空间外要引用此空间的元素,则需要加上命名空间名。 2、实体的别名: typeAlias alias=Account type=com.lavasoft.ibatissut.simSqlMap的配置是iBatis中
2012-12-05 20:54:56
1066

原创 java时间转化问题
SimpleDateFormat使用时需要传入(时间格式的构造参数)作为转化后的时间格式其中格式一般为yyyy/MM/dd HH:mm:ssMM HH 必须大写 如果格式为yyyy/mm/dd hh:mm:ssEx 20121224122424SimpleDateFormat(yyyy/mm/dd hh:mm:ss)format(20121224
2012-11-29 21:09:59
767

原创 HttpURLConnection post和get用法
最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。在Java中可以使用HttpURLConnection发起这两种请求,了解此类,对于了解soap,和编写servlet的自动测试代码都有很大的帮助。下面的代码简单描述了
2012-11-29 20:55:21
5247

原创 shell awk 用法
Awk 是一种非常好的语言,同时有一个非常奇怪的名称。在本系列(共三篇文章)的第一篇文章中,Daniel Robbins 将使您迅速掌握 awk 编程技巧。随着本系列的进展,将讨论更高级的主题,最后将演示一个真正的高级 awk 演示程序。捍卫 awk在本系列文章中,我将使您成为精通 awk 的编码人员。我承认,awk 并没有一个非常好听且又非常“时髦”的名字。awk 的 GNU 版本(叫作
2012-11-22 20:42:13
470

原创 重构—改善代码既有设计 之switch/case使用
Switch / Case如下,假设Employee类中有这样两个方法: PayAmount. 根据员工类型获得员工的薪水: public int PayAmount(EmployeeType empType) { switch (empType) { case Empl
2012-03-24 23:05:29
5958

原创 重构—改善代码既有设计 之if/else使用
以前在 csdn上看到一篇 “你还在使用if/else吗?”文章,提到如果你还在使用if语句,那么你就需要对你的代码重构。那篇文章许多人的评论上褒贬不一,但我现在想举的一个例子是对if/else的重构。(当然,是从别人那偷学来的,^_^)。enum employeetype{ salers; engineer; manager;}if(emp
2012-03-23 23:17:22
4394
1

原创 java中传值及引伸深度克隆的思考
java中内存的分配方式有两种,一种是在堆中分配,一种是在堆栈中分配,所有new出来的对象都是在堆中分配的,函数中参数的传递是在栈中分配的。通常情况下堆的内存可以很大,比如32位操作系统中的虚拟内存都可以被堆所使用(当内存紧张的时候甚至硬盘都可以是堆的存储空间),而堆栈的内存分配
2011-07-18 17:07:23
521

原创 SQL语句中in not in exits not exits用法比较
<br /><br /><br />exists (sql 返回结果集为真) <br />not exists (sql 不返回结果集为真) <br />如下: <br />表A <br />ID NAME <br />1 A1 <br />2 A2 <br />3 A3 <br /> <br />表B <br />ID AID NAME <br />1 1 B1 <br />2 2 B2 <br />3 2 B3 <br /> <br />表A和表B是1对多的关系 A.ID
2011-05-31 15:36:00
7524

原创 使用FastDateFormat
<br />IBMJDK 1.5中SimpleDateFormat存在性能缺陷,使用FastDateFormat替换之,可以提高部分行能 . IBM JDK 1.5中在实现有关时间的功能与SUN的JDK有一点很大的不同,就是SUN缓存了其中Local对象,而IBM没有缓存之,每次从Resource中getbundle中获取,这个方法似乎是一个调用了本地方法的方法,很容易出现等待。 但是使用了SUN的calendar的对Local 的缓存很容导致内存泄漏,因为在比较Local对对象时,为了提高性能它使用了“=
2011-05-04 14:01:00
3250

原创 ExecutorService实现多线程socket
<br />//服务端<br />import java.io.BufferedReader;<br />import java.io.IOException;<br />import java.io.InputStream;<br />import java.io.InputStreamReader;<br />import java.io.OutputStream;<br />import java.io.PrintWriter;<br />import java.net.*;<
2011-04-25 17:12:00
2485
转载 单表60亿记录等大数据场景的MySQL优化和运维之道
此文是根据杨尚刚在【QCON高可用架构群】中,针对MySQL在单表海量记录等场景下,业界广泛关注的MySQL问题的经验分享整理而成,转发请注明出处。杨尚刚,美图公司数据库高级DBA,负责美图后端数据存储平台建设和架构设计。前新浪高级数据库工程师,负责新浪微博核心数据库架构改造优化,以及数据库相关的服务器存储选型设计。前言MySQL数据库大家应该都很熟悉,而且随着前几年的阿里的去IOE,MySQL逐...
2018-04-25 08:35:32
446
1
原创 放弃 Dubbo,选择最流行的 Spring Cloud 微服务架构实践与经验总结
前言在使用 Spring Cloud 之前,我们对微服务实践是没有太多的体会和经验的。从最初的开源软件云收藏来熟悉 Spring Boot,到项目中的慢慢使用,再到最后全面拥抱 Spring Cloud。这篇文章给大家介绍我们使用 Spring Boot / Cloud 一年多的经验总结。在开始之前我们先介绍几个概念,什么是微服务,它的特点是什么? Spring Boot / Cloud 都做了那...
2018-04-12 11:43:55
443
1
原创 归并排序算法(Java实现)
1、基本思想归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序...
2018-04-12 09:35:44
396
原创 一致性Hash
一致性Hash算法简介一致性Hash算法是在1997年由麻省理工提出的一种分布式Hash实现算法,设计的目标是为了解决英特网中的热点问题。一致性Hash算法提出了在动态变化的Cache环境中,判定Hash算法好坏的四个定义。平衡性(Balance):平衡性是指哈希的结果能够尽可能的分布到所有的节点中去,这样从算法上解决负载均衡的问题。单调性(monotonicity):单调性是指在新增或者删减节点...
2018-04-12 09:14:30
291
原创 TOMCAT源码分析-生命周期管理2
容器生命周期每个容器都会有自身的生命周期,其中也涉及状态的迁移,以及伴随的事件生成,本节详细介绍Tomcat中的容器生命周期实现。所有容器的转态转换(如新疆、初始化、启动、停止等)都是由外到内,由上到下进行,即先执行父容器的状态转换及相关操作,然后再执行子容器的转态转换,这个过程是层层迭代执行的。容器新建所有容器在构造的过程中,都会首先对父类LifecycleBase进行构造。Life
2017-09-06 23:13:34
401
原创 TOMCAT源码分析-生命周期管理
前言 从server.xml文件解析出来的各个对象都是容器,比如:Server、Service、Connector等。这些容器都具有新建、初始化完成、启动、停止、失败、销毁等状态。tomcat的实现提供了对这些容器的生命周期管理,本文将通过对Tomcat7.0的源码阅读,深入剖析这一过程。TOMCAT生命周期类接口设计 我们先阅读图1
2017-09-06 23:09:41
377
原创 聊聊clean code的编码、重构技巧
写在前面clean code,顾名思义就是整洁的代码,或者说清晰、漂亮的代码,相信大多数工程师都希望自己能写出这样的代码。也许这是个千人千面的话题,每个工程师都有自己的理解。比如我,从一个天天被骂代码写得烂的人,逐渐学习成长,到现在也能写的出“人模人样”的代码来了。这期间算是积累了一点经验心得,想和大家分享,抛砖引玉。本文主要针对面向对象编程的clean code来阐述,面
2017-02-28 08:35:43
823
原创 应对高并发笔记
浏览器应对高并发1、浏览器缓存,减少请求2、多个子域名部署,突破浏览器链接限制3、图片文件独立域名部署,减少请求传输量4、减少浏览器cookie大小服务器端:1、动静分离部署nginx+tomcat2、应用集群,负载均衡--F5/Array/LVS/Nginx/TOMCAT3、分布式缓存Memcached+Redis4、应用本地缓存 Ehcache5
2017-01-18 15:24:32
492
1
转载 冗余表如何保证数据的一致性
本文主要讨论四个问题:(1)为什么会有冗余表的需求(2)如何实现冗余表(3)正反冗余表谁先执行(4)冗余表如何保证数据的一致性 一、需求缘起互联网很多业务场景的数据量很大,此时数据库架构要进行水平切分,水平切分会有一个patition key,通过patition key的查询能够直接定位到库,但是非patition key上的查询可能就
2016-09-01 15:06:53
3218
转载 数据库单点与Nginx单点提高可用性
一、需求缘起明明架构要求高可用,为何系统中还会存在单点?回答:单点master的设计,会大大简化系统设计,何况有时候避免不了单点 在哪些场景中会存在单点?先来看一下一个典型互联网高可用架构。典型互联网高可用架构:(1)客户端层,这一层是浏览器或者APP,第一步先访问DNS-server,由域名拿到nginx的外网IP(2)负载均衡层,ng
2016-09-01 14:51:50
2511
转载 如何实现超高写多读少并发的无锁缓存
一、需求缘起【业务场景】有一类写多读少的业务场景:大部分请求是对数据进行修改,少部分请求对数据进行读取。例子1:滴滴打车,某个司机地理位置信息的变化(可能每几秒钟有一个修改),以及司机地理位置的读取(用户打车的时候查看某个司机的地理位置)。void SetDriverInfo(long driver_id, DriverInfoi); // 大量请求调用修改
2016-09-01 14:35:58
9391
2
转载 分布式应用保证事务原子性方案
一、案例缘起我们经常使用事务来保证数据库层面数据的ACID特性。举个栗子,用户下了一个订单,需要修改余额表,订单表,流水表,于是会有类似的伪代码:start transaction; CURDtable t_account; any Exception rollback; CURDtable t_order; a
2016-09-01 14:09:45
3054
转载 互联网架构为什么要做服务化
一、互联网高可用架构,为什么要服务化?【服务化之前高可用架构】在服务化之前,互联网的高可用架构大致是这样一个架构:(1)用户端是浏览器browser,APP客户端(2)后端入口是高可用的nginx集群,用于做反向代理(3)中间核心是高可用的web-server集群,研发工程师主要编码工作就是在这一层(4)后端存储是高可用的db集群,数据存储在
2016-09-01 11:43:51
2472
转载 缓存架构设计细节二三事
本文主要讨论这么几个问题:(1)“缓存与数据库”需求缘起(2)“淘汰缓存”还是“更新缓存”(3)缓存和数据库的操作时序(4)缓存和数据库架构简析 一、需求缘起场景介绍缓存是一种提高系统读性能的常见技术,对于读多写少的应用场景,我们经常使用缓存来进行优化。例如对于用户的余额信息表account(uid, money),业务上
2016-09-01 11:22:35
1095
转载 线程数究竟设多少合理
一、需求缘起Web-Server通常有个配置,最大工作线程数,后端服务一般也有个配置,工作线程池的线程数量,这个线程数的配置不同的业务架构师有不同的经验值,有些业务设置为CPU核数的2倍,有些业务设置为CPU核数的8倍,有些业务设置为CPU核数的32倍。“工作线程数”的设置依据是什么,到底设置为多少能够最大化CPU性能,是本文要讨论的问题。 二、一些共性认知
2016-09-01 11:05:42
10040
原创 JAVA线程池ThreadPoolExecutor与阻塞队列BlockingQueue
从Java5开始,Java提供了自己的线程池。每次只执行指定数量的线程,java.util.concurrent.ThreadPoolExecutor 就是这样的线程池。以下是我的学习过程。首先是构造函数签名如下:[java] view plain copy print?public ThreadPoolExecutor(int co
2016-08-22 14:50:05
8156
原创 MyEclipse中添加web项目到tomcat
如果导入不是在MyEclipse下建立的web项目,想添加到tomcat中时,会显示“No projects are available for deployment to this server...............”。其实可以简单地修改两个配置文件:.project文件:在natures节点中添加webnature com.genuite
2014-05-06 17:15:27
11616
原创 Java性能优化技巧集锦
一、通用篇 “通用篇”讨论的问题适合于大多数Java应用。 1.1 不用new关键词创建类的实例 用new关键词创建类的实例时,构造函数链中的所有构造函数都会被自动调用。但如果一个对象实现了Cloneable接口,我们可以调用它的clone()方法。clone()方法不会调用任何类构造函数。在使用设计模式(Design Pattern)的场合,如果用Factory模式创建对象,则改
2014-04-22 09:35:04
7671
1
原创 优化Java堆大小的5个技巧
一个良好的设计能提高程序的性能,这一点不仅适用于JAVA,也适用也任何的编程语言。因为它充分利用了各种资源,如内存,CPU,高速缓存,对象缓冲池及多线程,从而设计出高性能和可伸缩性强的系统。当然,为了提高程序的性能而改变原来的设计是比较困难的,但是,程序性能的重要性常常要高于设计上带来的变化。因此,在编程开始之前就应该有一个好的设计模型和方法
2014-04-22 09:31:53
1689
原创 oracle 11g使用deferred_segment_creation 延迟段创建特性时遇到的问题总结
总结,下面是两个问题。问题1是用户可以在所有表空间创建表;问题2是exp不能导出空表问题1:版本:oracle 11.2.0.1.0select * from v$version;创建用户aaa,给其connect和resource角色,但回收unlimited tablespace权限:SQL> create user aaa identified by
2013-07-12 16:53:45
6659
原创 JFreeChart乱码解决方法
整个图标分成三部分chart title,chart 的plot还有chart的 legend三个部分需要对他们分别设置字体就对了。先看解决方法( 把这几个全部设置了,都搞定了就可以了):标题乱码 chart.getTitle().setFont(new Font("宋体", Font.BOLD,12));其他CategoryAxis domainAxis =
2013-06-03 20:30:57
1000
原创 JAVA性能调优
本文介绍了Java代码优化的过程,总结了优化Java程序的一些最佳实践,分析了进行优化的方法并解释了性能提升的原因。多角度分析导致性能低的原因并逐个进行优化使得程序性能得到极大提升,代码可读性、可扩展性更强。作者通过经历的一个项目实例,介绍Java代码优化的过程,总结了优化Java程序的一些最佳实践,分析了进行优化的方法,并解释了性能提升的原因。作者从多个角度分析导致性能低的原因,并逐个进行优
2013-05-02 14:02:51
880
原创 Java 性能调优
一、类和对象使用技巧1、尽量少用new生成新对象 用new创建类的实例时,构造雨数链中所有构造函数都会被自动调用,操作速度较慢。在某些时候可复用现有对象。比如在进行大量St rillg操作时,可用StringBuffer娄代替String类,以避免生成大量的对象。用 new关键词创建类的实例时,构造函数链中的所有构造函数都会被自动调用。但如果一个对象实现了 Cloneab
2013-04-01 16:40:06
670
原创 Android ContentProvider总结
1.适用场景1) ContentProvider为存储和读取数据提供了统一的接口2) 使用ContentProvider,应用程序可以实现数据共享3) android内置的许多数据都是使用ContentProvider形式,供开发者调用的(如视频,音频,图片,通讯录等)2.相关概念介绍1)ContentProvider简介 当应用继承ContentProvide
2013-03-31 17:43:51
934
原创 Android Handler用法
Handler的定义: 主要接受子线程发送的数据, 并用此数据配合主线程更新UI. 解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件,进行事件分发, 比如说, 你要是点击一个 Button ,Android会分发事件到Button上,来响应你的操作。 如果此时需要一个耗时的操作,
2013-03-25 16:15:41
751
原创 获取处理前URL
StringBuffer backUrl = new StringBuffer(); backUrl.append("http://").append(request.getServerName()); if (request.getServerPort() != 80) { backUrl.append(":").a
2013-01-09 15:27:14
1340
原创 跨站域iframe自适应高度
页面域关系:主页面a.html所属域A:www.taobao.com被iframe的页面b.html所属域B:www.alimama.com,假设地址:http://www.alimama.com/b.html实现效果:A域名下的页面a.html中通过iframe嵌入B域名下的页面b.html,由于b.html的宽度和高度是不可预知而且会变化的,所以需要a.html中的iframe
2012-12-27 17:19:37
2517
1
原创 ORACLE IS 和 AS 用法
在存储过程(PROCEDURE)和函数(FUNCTION)中没有区别,在视图(VIEW)中只能用AS不能用IS,在游标(CURSOR)中只能用IS不能用AS。一般存储过程头部用as 主体用is其他情况下都用as就不会有问题
2012-12-19 18:38:48
4046
Javascript高级编程
2011-06-08
struts2 struts2 struts2 struts2
2011-03-05
dubbo教程demo代码
2016-09-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人