03 2011 档案
摘要:java ClassLoader的学习java是一门解释执行的语言,由开发人员编写好的java源文件先编译成字节码文件.class形式,然后由java虚拟机(JVM)解释执行,.class字节码文件本身是平台无关的,但是jvm却不是,为了实现所谓的一次编译,到处执行,sun提供了各个平台的JVM实现--也就是说jvm不是跨平台的,编译好的字节码文件被放在不同的操作系统平台上的jvm所解释执行,这个章节主要解释一下JVM装载类的机制1.ClassLoader是个毛东东? 一个类如果要被JVM所调度执行,必须先把这个类加载到JVM内存里,java.lang下有个很重要的类ClassLoader,这
阅读全文
摘要:/*____________________________________________POJ 1046题_____________________________________________________ Color Me Less Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 21650 Accepted: 10300 Description:A color reduction is a mapping from a set of discrete col...
阅读全文
摘要:/*___________________________________________POJ 1458题__________________________________________________ Common Subsequence Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7023 Accepted: 2641 DescriptionA subsequence of a given sequence is the given sequence with s...
阅读全文
摘要:问题 1.业务发展太快,需求不停的在变 目前作的业务系统业务逻辑非常复杂,网站承载的用户访问量也在逐渐增大,更要命的是需求的不确定性,天天都有新需求,每次的改动量都比较大,而且很多时候几个团队拉同一个分支来开发以满足业务发展的需求 2.系统架构设计不合理,完全没有什么开闭原则,面向对象设计基本为0,看不到设计的影子 相信大多数开发业务系统的同学都遇到同样的问题,就是当我们要搭建一个XX系统时,大家第一想到的都是ssh,三个框架各司其职,三层结构也很清晰,web,service,dao,然后就开始埋头往里面写代码了,所谓的架构设计貌似就是把框架搭建起来,然后各个层次都通过接口相互依赖(虽然99%
阅读全文
摘要:设计表时mysql的表主键设置为自增长类型,然后就在ibatis中配置了以下的sql语句(这个表有个名字为id的自增长主键id)<!-- 创建用户信息 --><insert id="createUser" parameterClass="userAlias"><!--[CDATA[ insert into user (name, password, email, status, gmt_create, gmt_modified) ...
阅读全文
摘要:/*____________________________________________POJ 1016题________________________________________________ Numbers That Count Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7578 Accepted: 2560 Description:"Kronecker's Knumbers" is a little company that manufactures p...
阅读全文
摘要:在Ubuntu下安装m2eclipse插件后,pom文件总是报错missing com.sun.tools.jar,看了一下解决方案,只要在eclipse的安装目录下的eclipse.ini文件中加上一个-vm参数(加粗部分),参数的值为$JAVA_HOME/bin目录,重启一下eclipse就正常了openFile-vm/usr/lib/jvm/java-6-openjdk/bin-vmargs如果还不生效,检查一下java安装路径JAVA_HOME下是否存在lib/tools.jar文件--笔者当时通过命令行sudo apt-get install jdk安装的,结果查了一下竟然没有这个l
阅读全文
摘要:POJ 1001 高精度浮点数幂中有个加法函数,现在发现竟然没有考虑最高位进位,我是在做了1503高精度加法后才发现的。 上错误代码:#include<iostream>#include<string>using namespace std;string Add(string a,string b){ char c; int i=a.length()-1, j=b.length()-1; string addResult; int remaining=0;//余数 int carry=0;//进位 for(; i>=0 && j>=0; i-
阅读全文
摘要:/*_____________________________________POJ 1503题_________________________________________________ Integer Inquiry Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 18770 Accepted: 7384 Description:One of the first users of BIT's new supercomputer was Chip Diller. He ext...
阅读全文
摘要:做过系统的同学都应该做过日志操作,用于打点,记录异常,比较常用的是apache的common-logging框架和apache的log4j框架,但是这篇文章不是介绍这些上层的框架,而是解释这些框架底层调用的java自带的日志框架1.包结构位于java.util.logging下,20个类左右,体积很小2.核心类图以及关联关系Logger类,这个是用来记录日志的核心类,主要功能正如其名,记录日志LoggerManager类,用来日志对象,读取系统配置(%JAVA_HOME%/lib/logging.properties文件中),是单例模式的一个很好的例子,因为整个系统中只需要一个对象就可以了,这
阅读全文
摘要:/*____________________________________________POJ 2739题________________________________________________ Sum of Consecutive Prime Numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10458 Accepted: 5914 Description:Some positive integers can be represented by ...
阅读全文
摘要:junit是我们平时开发中天天用到的测试框架,为了了解器内部隐藏的机关,特意分析了一下源码,这里我们用的是Junit3.8版本。1.包的划分junit.awtui,这个是junit的awt实现的ui界面组件junit.extensions这个是junit核心功能之外的扩展点,对TestCase的装饰,Demorator模式的很好的例子junit.framework,这个是junit的核心功能,像我们平时常用的TestCase,TestSuit类都是在这的,还有Assert类,提供了我们测试中常用的断言静态方法junit.runner,这个包下是运行TestCase的核心类,最重要的是TestL
阅读全文
摘要:/*_____________________________________________________POJ 3299题___________________________________________________ Humidex Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1134 Accepted: 518 Description:Adapted from Wikipedia, the free encyclopediaThe ...
阅读全文
摘要:/*_____________________________________POJ 2159题____________________________________________ Ancient Cipher Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4701 Accepted: 1905 Description:Ancient Roman empire had a strong government system with various departmen...
阅读全文
摘要:网站性能优化的几点最佳实践1.动静分离动是指网站的动态内容,如jsp文件,这些东西交给tomcat或jboss来处理静是指静态的html,js,css,image,这些东东交给apache来处理,因为tomcat等web容器来处理静态内容时效果不是很好2.镜像对于大型的网站,考虑到那方和北方的用户访问时可以自动切换到相应的网通/电信机房3.静态内容缓存如静态的html页面,把他们缓存起来,可以在服务器端做缓存,也可以在客户端缓存,合理设置客户端缓存的时间(Expire Date)4.js和css文件做压缩操作我们编码后的css和js一般都是格式良好的文件,里面的换行空白,注释都很完整,但是这样
阅读全文
摘要:以下几条经验是我在几年工作中总结出来的,而且现在工作中一直在使用的原则1.减少关联查询的表数量,控制在3个以内2.表设计时能冗余就冗余,数据的一致性靠业务逻辑去控制3.忘掉外键,不要依靠底层db给你检查数据的不一致,同上(忘掉书本里的那些概念吧,听起来有些叛逆~)4.查询语句中尽量不用in,not,left join,right join5.数据库字段设计尽量设计成非空的,便于作索引6.对于查询条件用到的字段,对其作索引7.查询条件中,尽量避免用like,尽量使用等值查询8.为每个表设置一个默认主键,即使它没有任何用处9.为每个表设置一个gmt_create,gmt_modified字段,表示
阅读全文
摘要:标记 用途 例子 <%-- --%> 注释语句 <%-- This is comment --%> <%= %> 表达式(求值)语句 <%= new Date() %> <%! %> 声明语句 <%! Date myD = new Date(); %> <% %> 代码语句 <% for(int i=0;i<10;i++) %> <%@ %> 指令语句 <%@ page import="java.util.*" %>
阅读全文
摘要:需求背景利用线程来模拟生产者和消费者模型系统建模这个系统涉及到三个角色,生产者,消费者,任务队列,三个角色之间的关系非常简单,生产者和消费者拥有一个任务队列的引用,生产者负责往队列中放置对象(id),消费者负责从队列中获取对象(id),其关联关系如下方案1因为是多线程操作,所以对任务的存取都要使用线程同步加锁机制,看一下我们的TaskQueue类,两个主方法都加了synchronized修饰,这就意味着,一个时间点只可能有一个线程对这个方法进行操作TaskQueue类代码package com.crazycoder2010.thread;public class TaskQueue { pri
阅读全文
摘要:首先来看以下我们的需求:用java编写一个监听程序,监听指定的端口,通过浏览器如http://localhost:7777来访问时,可以把请求到的内容记录下来,记录可以存文件,sqlit,mysql数据库,然后把接受到的信息在浏览器中显示出来要点:Socket,线程,数据库,IO操作,观察者模式来看下我们如何来设计这个小系统,这个系统包含三部分的内容,一个是监听端口,二是记录日志,三是数据回显,端口监听第一想到的就是Socket编程了,数据回显也是一样的,无非是把当前请求客户端的socket获取到,然后把消息通过流输出出去,日志的记录因为是要多种实现策略,这里我们使用了一个观察者模式来实现,服
阅读全文
摘要:1.bean的初始化操作1.1通过在配置文件中,设置bean的init-method方法,destory-method方法,spring框架会通过反射机制来调用 java类package com.crazycoder2010.spring.init;public class InitDestoryMethodBean { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } /** * 当属性被注入完毕后把注...
阅读全文
摘要:spring对各种数据类型都提供了注入支持,像java基本类型,对象,集合等,这篇文章以代码实践为主,代码注释中会解释注入的细节测试类中包含了我们编程中最常见的数据结构package com.crazycoder2010.spring.injection;import java.util.List;import java.util.Map;import java.util.Properties;import java.util.Set;public class Student { private int age; private double weight; private String na
阅读全文
摘要:spring依赖注入DISpring的依赖注入是一种将组件间依赖关系的创建和管理独立与程序以外的技术,举例说来,类A依赖于类B,通常的做法是先new 一个A对象,让后new 一个B对象,通过调用的方法将B对象注入,但是DI提供的机制可以将这种对象依赖关系的创建配置到文件中,让框架自动创建维护这个关系,而业务系统只需要关心自身业务核心思想java bean可以简单理解成那些只有简单的get,set方法的java类(还有其他方法),spring DI中管理的bean推荐这种形式,而面向接口编程也是spring推荐的方式,优势很显然--容易解耦,当需要替换新的实现类时只需要指向不同的实现就可以,但是
阅读全文
摘要:经常在java代码中看到以下的注释($Rev: $Date),是不是很酷,怎么生成的呢?/** * A FilterChain is an object provided by the servlet container to the developer * giving a view into the invocation chain of a filtered request for a resource. Filters * use the FilterChain to invoke the next filter in the chain, or if the calling f...
阅读全文