- 博客(60)
- 资源 (26)
- 收藏
- 关注
转载 基于james3.0 的邮件系统(struts2.3.2 +spring3.0.1+jpa(hibernate3.6.5)实现)b/s模式 .
米林(ljg)邮箱使用说明系统下载地址:http://download.csdn.net/detail/afgasdg/3681707一、 环境配置本系统需要的环境:apache james3.0邮件服务器、tomcat 服务器、Mysql5.1数据库二、 具体环境配置Mysql5.1 配置 使用本系统前请
2012-04-27 12:35:53 4026 2
原创 算法系列15天速成——第八天 线性表【下】
一:线性表的简单回顾 上一篇跟大家聊过“线性表"顺序存储,通过实验,大家也知道,如果我每次向顺序表的头部插入元素,都会引起痉挛,效率比较低下,第二点我们用顺序存储时,容易受到长度的限制,反之就会造成空间资源的浪费。 二:链表 对于顺序表存在的若干问题,链表都给出了相应的解决方案。1. 概念:其实链表的“每个节点”都包含一个”数据域“和”指针域“。
2012-04-27 01:41:33 2381
原创 算法系列15天速成——第七天 线性表【上】
人活在社会上不可能孤立,比如跟美女有着千丝万缕的关系,有的是一对一,有的是一对多,有的是多对多。哈哈,我们的数据也一样,存在这三种基本关系,用术语来说就是: 线性关系。 树形关系。 网状关系。 一: 线性表 1 概念: 线性表也就是关系户中最简单的一种关系,一对一。 如:学生学号的
2012-04-27 01:36:32 2613
原创 算法系列15天速成——第六天 五大经典查找【下】
大家是否感觉到,树在数据结构中大行其道,什么领域都要沾一沾,碰一碰。就拿我们前几天学过的排序就用到了堆和今天讲的”二叉排序树“,所以偏激的说,掌握的树你就是牛人了。 今天就聊聊这个”五大经典查找“中的最后一个”二叉排序树“。 1. 概念: 其实很简单,若根节点有左子树,则左子树的所有节点都比根节点小。 若
2012-04-27 00:51:03 3187 1
原创 算法系列15天速成——第五天 五大经典查找【中】
大家可否知道,其实查找中有一种O(1)的查找,即所谓的秒杀。 哈希查找: 对的,他就是哈希查找,说到哈希,大家肯定要提到哈希函数,呵呵,这东西已经在我们脑子里面形成固有思维了。大家一定要知道“哈希“中的对应关系。 比如说: ”5“是一个要保存的数,然后我丢给哈希函数,哈希函数给我返回一个”2",那么此时的”5“和“2”就建立一种对应关系,这种关系就是所谓
2012-04-27 00:49:27 3554
原创 算法系列15天速成——第四天 五大经典查找【上】
在我们的生活中,无处不存在着查找,比如找一下班里哪个mm最pl,猜一猜mm的芳龄....... 对的这些都是查找。 在我们的算法中,有一种叫做线性查找。分为:顺序查找。 折半查找。 查找有两种形态:分为:破坏性查找, 比如有一群mm,我猜她们的年龄,第一位猜到了是23+,此时这位mm已经从我脑海里面的mmlist中remove掉了。
2012-04-27 00:46:58 8665 9
原创 做一名合格的前端开发工程师---各浏览器对页面外部资源加载的策略
这个总结来源于一次优化的请求,最初某个页面的加载十分缓慢,load事件迟迟无法触发,因此希望可以通过对静态文件分域名等方式对页面的外部资源进行优化,拿得load事件尽可能早地触发。于是我查看了页面的源码,并对外部资源进行了整理,基于下面2个理念画出了一个推测的瀑布图:浏览器对同一个域只能并发2个HTTP请求 – 网上盛传已久。 javascript文件的加载会阻塞浏览器其他资源的加载
2012-04-27 00:44:46 11729 29
原创 做一名合格的前端开发工程师(12篇)——第一篇 Javascript加载执行问题探索
楼主做前端开发一年多了,对前端的见解还是多多少少有一点的,今天特拿出来跟大家分享分享。 做前端开发少不了各种利器。比如我习惯用的还是Google浏览器和重型武器Fiddller。 一: 原始情况首先大家看看如下的代码: 估
2012-04-27 00:39:59 2797
原创 自己写的简单通过js只提供另存为功能【避免直接打开后,文件被占用,其他用户更新不了文件信息】
function savepic(){ if(document.all.a1==null){ objIframe=document.createElement("IFRAME"); document.body.insertBefore(objIframe); objIframe.outerHTML= ""; re=setTimeout("sa
2012-04-26 16:30:18 7091
原创 浅谈java中static作用
static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问
2012-04-26 09:50:56 13796 7
原创 算法系列15天速成——第三天 七大经典排序【下】
今天跟大家聊聊最后三种排序: 直接插入排序,希尔排序和归并排序。 直接插入排序: 这种排序其实蛮好理解的,很现实的例子就是俺们斗地主,当我们抓到一手乱牌时,我们就要按照大小梳理扑克,30秒后, 扑克梳理完毕,4条3,5条s,哇塞...... 回忆一下,俺们当时是怎么梳理的。 最左一张牌是3,第二张牌是5,第三张牌又是3,赶紧插到第一张牌后面去,第四
2012-04-26 00:53:52 3671 3
原创 算法系列15天速成——第二天 七大经典排序【中】
首先感谢朋友们对第一篇文章的鼎力支持,感动中....... 今天说的是选择排序,包括“直接选择排序”和“堆排序”。 话说上次“冒泡排序”被快排虐了,而且“快排”赢得了内库的重用,众兄弟自然眼红,非要找快排一比高下。这不今天就来了两兄弟找快排算账。 1.直接选择排序: 先上图: 说实话,直接选择排序最类似于人的本能思想,比如把大小不一的玩具让三岁小毛孩对
2012-04-25 12:43:44 3802 1
原创 java打印 Hello World!
今天在人人上看到一张图。大体意思就是在下面代码 if()的括号中加入任意代码,使之打印出"Hello World!":public static void main(String[] args){try { if(){ System.out.print("Hello "); }else{ System.out.println("world!"); } } c
2012-04-24 22:37:01 4932
原创 索引的一些总结
1.1.1 摘要如果说要对数据库进行优化,我们主要可以通过以下五种方法,对数据库系统进行优化。1. 计算机硬件调优2. 应用程序调优3. 数据库索引优化4. SQL语句优化5. 事务处理调优在本篇博文中,我们将想大家讲述数据库中索引类型和使用场合,本文以SQL Server为例,对于其他技术平台的朋友也是有参考价值的,只要替换相对应的代码就行了!索引使数据库引擎执行
2012-04-24 17:00:45 2089
原创 算法系列15天速成——第一天 七大经典排序【上】
算法就好比程序开发中的利剑,所到之处,刀起头落。 针对现实中的排序问题,算法有七把利剑可以助你马道成功。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Thre
2012-04-24 10:51:55 8405 11
原创 介绍一个小工具 Linqer
这些天写Linq挺烦人的,就上网搜搜可有什么好的sql转Linq的工具,咦,马上就看上了Linqer。哈哈,介绍一下使用方法吧:官方下载网站:http://sqltolinq.com/download。第一步:运行这个神马文件。第二步:指定一个路径给它。他会生成一个Linqer.exe可运行的文件。第三步:运行这个exe文件,点击Add按钮,第四步:在弹出的Add界面中
2012-04-24 10:47:33 2504 3
原创 启动Eclipse时,启不起来JVM terminated. Exit code=-1 .
出现错误了,不知道什么原因原本好好的Eclipse,今天早上出问题了,启动不起来还抛出JVM terminated. Exit code=-1,上网查了资料以后,原来好多人和我一样都有这样的问题,真是感谢前辈们了。 Eclipse 启动不起来,出现以下错误:JVM terminated. Exit code=-1-Dosgi.requiredJavaVersion=1.5
2012-04-24 10:12:14 2033
原创 重构36计(31-36)
第三十一计:置空不用的对象在C++中,销毁一个对象后,一定要把指针置为NULL,否则会出现野指针,最好写成下面这样,delete后立马置为NULL,delete pObject;pObject = NULL;在Java中,当不再需要一个对象时,最好能把它置为null,这样有利于垃圾回收。 第三十二计:善于利用接口 1、 回调型接口 在C语言中,回调函
2012-04-23 16:52:33 1690 1
原创 重构36计(25-30)
第二十五计:函数体最多不超过100行 记得以前看过一个函数有9000多行,很壮观啊,从那以后看到长函数时也不奇怪了,我认为过长函数的主要缺点是:1、严重影响代码的阅读,使用到某个变量的地方可能间隔几百甚至上千行,如果if-else嵌套层次较多的话那就更噩梦了。2、不利于代码的重用,短小而独立的逻辑处理单元更容易被重用,而过长的代码段则需要经过进一步分解才行。我觉得函数最好不要超过
2012-04-20 15:07:29 2051 2
原创 重构36计(19-24)
第十九计:避免类的臃肿 在我接触过的大部分项目中,总会有一个“大胖子“类特别惹眼,一般来说,这“大胖子“实际上是整个系统的核心类之一,之所以“胖“,主要原因是很多人都会把自己需要的函数加到这个类中,却没有人主动请缨来为它“减肥“。可以通过以下几种方式来为它“瘦身”: 1、按照某种特性(如功能、类型等)将这个类拆分成多个类。 2、合并冗余函数,保持函数粒度的最小化。 3、去除
2012-04-19 01:21:03 7797 12
原创 用if、Exception还是assert?——看JavaEye论坛帖子:《面试题:用Exception异常还是if判断》的感想 .
今天在JavaEye上看到一个很火的帖子,题目是(面试):用Exception(异常)还是if判断http://www.javaeye.com/topic/745640。内容大概是:当参数不合法的时候,究竟是if else 判断后返回一个值还是直接来个Exception ?如果是 if else 的话,有什么好处?如果是 exception 的话,又有什么好处?或者是根据不同情况来
2012-04-19 01:20:45 2383 4
原创 重构36计(13-18)
第十三计:为集合类型的成员变量提供增删改查函数 对于集合类型的成员变量,直接提供一个函数将其暴露出去是不够妥当的,缺点包括以下几点: 1、添加集合元素时无法校验它的合法性,例如类型是否符合要求、该元素是否已存在等。 2、无法控制集合的容量,集合的容量可能是动态分配的。 所以,更好的做法是为集合类型的成员变量提供增删改查等函数,例如某个类中有名为userList的数组,则可以
2012-04-18 09:40:08 1848 5
原创 重构36计(7-12)
第七计:串联函数调用当一个类的大部分函数被较为频繁地调用,并且包含连续性地调用,那么可以考虑为这个类中那些没有返回值的函数增加返回值,即返回对象本身,这样就可以串联函数调用,使用起来较为方便,举个例子:// 表示用户的类public class User{ public void setName(String name); public void setAge(int
2012-04-18 09:39:22 2654 4
原创 重构36计(1-6)
重构,其实很简单,它的目的就是让程序变得更容易被理解,更具有可维护性,结构更合理。重构应该是我们平时写代码过程中必不可少的一部分,比如给函数起了一个更好的名字、把大函数拆分成几个小函数等都属于重构。重构的经典书籍包括Martin Flower的《重构-改善既有代码的设计》、Joshua Kerievsky的《重构与模式》,本系列的所谓36计是我多年来使用最为频繁的重构策略和编码准则,有自己总结的,
2012-04-18 09:38:32 2714 2
原创 高效程序员秘籍(10):聚合个人全部邮箱
对于有很多个邮箱的人来说,查看是否有新邮件是件挺烦琐的事情,尤其是拥有各种不同网站的邮箱,需要分别登录各个邮箱进行。如果有可以集中查看所有邮箱中新邮件的方法就方便多了,下面就向大家介绍两种方法。 第一种方法是挑选一个邮箱作为聚合邮箱,用来接收其他邮箱的新邮件,也可以在该邮箱中以其他邮箱作为发送地址。建议把Gmail邮箱作为聚合邮箱,或者其他功能比较强大的Web邮箱,使用Web邮箱的好处是随时
2012-04-18 09:35:53 2142 1
原创 高效程序员秘籍(9):快速查找硬盘上的文件和目录
使用搜索引擎是程序员日常工作中必不可少的部分,绝大多数技术问题都能在网络上找到解答,但是我发现,对于硬盘上的文件,很多人的查找方法还是比较原始,完全是凭记忆去各个目录里找。我向同事索要安装包或者文档,要不就是不知道放在那里了,要不就是找半天。虽然Windows文件管理器有搜索功能,但是速度有点慢,而且不支持通配符和正则表达式。下面向大家介绍一款文件名搜索利器,它就是EveryThing,堪称神速!
2012-04-18 09:35:22 1494
原创 高效程序员秘籍(8):养成使用网络笔记本、网络文件同步工具的习惯
随着越来越多实用软件的涌现,人们的工作和学习效率得到了很大的提高,当然,前提是我们主动去接受和学习它们的使用,并且改变已有的习惯。近一两年智能手机的快速普及,一批新的实用软件诞生了,已有的软件也纷纷推出了手机版本,使得这些软件变得更加实用,让我感受最深的两类软件是网络笔记本和网络文件同步工具,作为一名程序员,如果没有使用过它们,那真是.......,不知道该咋说。 做笔记是一种很好的习惯,好
2012-04-18 09:34:58 1145
原创 高效程序员秘籍(7):使用Diagram Designer快速绘制流程图、UML等图形
目前比较流行的UML建模工具包括Visio、Rational Rose、PowerDesigner、EA等,基本上都是企业级的软件,功能强大,我只用过Visio,所以就不对它们的特点或者异同多加介绍。对于较正式的情况,例如图形会作为项目文档的一部分,建议使用以上列出的软件。当我们在工作中遇到较复杂的代码逻辑或者业务逻辑时,把它们以图形的形式展现出来更容易理解,对于这种情况,可以使用一个简单轻便的建
2012-04-18 09:33:57 3812
原创 高效程序员秘籍(6):使用CLCL加快写代码的速度
经常看到论坛上有人抱怨日常的编程工作就是复制和粘贴,对此我也深有体会,尤其是利用类似SSH框架开发的项目,很大一部分代码都是通过复制粘帖然后再稍加修改完成的。但是Widows的剪贴板只能记录最近一次复制的内容,要想粘帖之前某次复制的内容,只能再次去目的地复制,看似简单的过程可能会占用不少时间,如果能省去这个步骤,也许就可以早点下班回家。有一类工具可以帮上忙,那就是剪贴板增强软件,比如本文要介绍的C
2012-04-18 09:33:28 2067
原创 GoF著作中未提到的设计模式(7):Publish-Subscribe
很多项目中都有消息分发或者事件通知机制,尤其是模块化程度高的项目。例如在办公自动化系统中,有些子系统对于新建用户这一事件很感兴趣,权限模块希望为这个新用户设置默认的权限,报表模块希望重新生成当月的报表,诸如此类的代码都写到新建用户的业务逻辑后面,会加大耦合度,可维护性降低,并且对于每个模块都是一个独立工程的情况,这种方式更是不可取。对于简单的情形,观察者模式就适用了,如果系统中有很多地方都需要收发
2012-04-18 09:31:48 1223 1
原创 高效程序员秘籍(4):使用Total Commander替换Windows资源管理器
最新的Web浏览器都有标签页特性,而Windows自带的资源管理器却没有,总是需要同时打开多个窗口,后来下载了一个插件叫 QTTabbar,可以让资源管理器具备标签页的特性,但总是出问题。除此以外,Windows资源管理器还有种种不足,此刻能想到的有以下几点: 1、不能设定经常使用的文件夹 2、拷贝文件的全路径不方便 3、使用起来不够快,快捷键太少 Total Comman
2012-04-18 09:31:02 4384
原创 高效程序员秘籍(3):使用MindManager进行可视化的思维管理
记得在使用MindManager之前,考虑问题的解决办法的过程经常会被各种事件打断,回过头来再继续时总会有些偏差,甚至忘记了之前想到的关键地方,所以,有时候也会一边想一边记,但总觉得这个过程不够高效,一段时间后,记录的内容连自己也看不懂,有的根本就找不到了,无形的价值随之流失。 其实我也一直在找可替代的方法,尤其是类似的软件,感觉都不太合适,大多数都是些类似便筏、网络笔记本的工具。无意中见到
2012-04-18 09:30:36 1284 1
原创 高效程序员秘籍(2):使用GridMove快速将窗口以指定大小放到指定区域
在我们日常工作中,经常需要让多个应用程序窗口同时可见(并且相互不遮挡),例如在比较两个文档或者边看电子书边做笔记时,可以让它们水平方向上各占屏幕的一半。如果显示器比较大,我们可以把屏幕划分成几块,然后在各个区域放置需要同时可查阅的窗口,这样可以充分利用屏幕空间,而且同时可以干好几件事情。 不过,很多人都是通过手动拖拽来实现这一目的,首先要找到目标窗口,然后移动到指定位置,最后调整大小,过程比
2012-04-18 09:30:17 1528 1
原创 高效程序员秘籍(1):使用AutoHotKey快速切换窗口
当我们打开电脑做一些事后,任务栏中就会有若干已打开应用程序的窗口,在它们之间切换,绝大部分人使用下面两种方式: 1、使用Tab键 2、直接用鼠标在任务栏中找到目标窗口再点击 第一种方式效率更高一些,尤其是在当前窗口与上一个窗口切换的情况下,应该没有比使用Tab键更好的方法了。在我们工作的过程中,总会有那么几个固定使用的应用程序,比如IDE、浏览器、文本编辑器、邮箱客户端、
2012-04-18 09:29:55 3628
原创 GoF著作中未提到的设计模式(6):Specification
在一个较为复杂的业务流程中,某些条件的满足与否决定了业务逻辑的走向,我们可以把这些条件抽离出来,使得任意个条件以某种关系进行组合,从而灵活地对业务逻辑进行定制。另外,在查询、过滤等应用场合中,我们也可以预定义多个条件,使用这些条件的组合来处理查询逻辑,而不是使用逻辑判断语句来处理,那样只会让代码变得复杂,让脑袋变大。 在Specification设计模式中,一个条件就是一个specifica
2012-04-18 09:28:22 2008
原创 GoF著作中未提到的设计模式(5):Object Pool
Object Pool,即对象池,对象被预先创建并初始化后放入对象池中,对象提供者就能利用已有的对象来处理请求,减少对象频繁创建所占用的内存空间和初始化时间,例如数据库连接对象基本上都是创建后就被放入连接池中,后续的查询请求使用的是连接池中的对象,从而加快了查询速度。类似被放入对象池中的对象还包括Socket对象、线程对象和绘图对象(GDI对象)等。 在Object Pool设计模式中,主要
2012-04-18 09:27:58 1665 1
原创 GoF著作中未提到的设计模式(4):Double Dispatch
我们先从字面上去理解它吧,直观地说,它指的是两次dispatch。这里的dispatch指的是什么呢?举个例子: class Event { public: virtual void PrintName() { cout"我是通用事件"endl;
2012-04-18 09:27:34 1221
原创 GoF著作中未提到的设计模式(3):Null Object
Null Object模式的目的包括: 1. 当对象提供者无法提供指定类型的对象时, 返回一个什么都不做的对象, 这对调用者是透明的,并且调用者不用判断获得的对象是否为null了,当然,对象提供者必须告知调用者(通过约定等).2. 有时候需要传递一个什么都不做的某个类型的对象给合作方. 例如某个函数需要实现特定接口的对象(通过参数传入)进行某些操作, 该函数的调用者在某些情况下希望不进行这
2012-04-18 09:27:12 1598 2
原创 GoF著作中未提到的设计模式(2):Interceptor
拦截器模式为我们提供了一种拦截方法调用或消息的途径,整个过程是自动的、透明的,下面是一个简单的拦截器示意图: 从图中可以看到,拦截器可以访问到方法调用的输入参数和返回结果,这样的话,拦截器能做的事儿就多啦,比如: 1、验证输入参数是否正确 2、偷偷地修改参数的值,例如参数类型的自动转换等 3、依赖注入 4、修改返回结果的内容、格式等 下面是一个包含我们要
2012-04-18 09:26:38 1269
原创 GoF著作中未提到的设计模式(1): Archetype
GoF著作中未提到的设计模式(1):Archetype 半天也没能给这个设计模式想出一个中文名称,算了,有时候还是原版的更容易理解。 简单地说,Archetype设计模式的目的是将业务处理逻辑和具体实现分离,所以至少需要两个参与者:Decorator和Delegate,它们都实现同一个接口,Decorator负责处理业务逻辑,而Delegate负责具体的实现,在Decorato
2012-04-18 09:26:13 1141 1
Java虚拟机(JVM)
2011-11-29
javascript-tree集合 大部分树状菜单集合
2011-11-16
润干报表4.0技术白皮书_企业版.doc
2011-11-09
Java设计模式(疯狂Java联盟版)
2011-11-09
javascript.doc
2011-10-26
ajax教程.chm
2011-10-26
WebSphereIBM内部资料
2011-10-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人