自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

superhill的学习笔记

专注于开源和跨平台软件开发

  • 博客(135)
  • 资源 (1)
  • 收藏
  • 关注

原创 Effective Java读书笔记 第二章: Creating And Destroying Objects

Item 1,考虑使用静态工厂方法而不是构造方法来创建对象好处1.使用重载构造方法并不是一个好主意,有时候你根本记不清哪个是哪个。可以尝试用静态方法来返回一个类的对象,只要取名得当,可读性可以增强。如果一个类需要多个构造方法,那么你可以考虑使用不同的静态方法来替代它们,并且分别使用可读性很强的方法名,这样使用者并不需要去查阅相关的文档就可以直接使用。2.使用静态方法相对于构造器来说还有

2013-06-10 18:51:06 830 1

原创 Java Swing入门

Java Swing相当于升级版本的AWT(Abstract Window Toolkit),是一组易于使用和理解的JavaBeans。大多数的Swing应用都是建立在基础的JFrame的内部,JFrame在任何操作系统中都可以创建视窗应用。最最简单的Swing程序可能就是public class HelloSwing{    public static void main(Str

2013-05-23 05:07:16 3211

原创 Java Swing之Layout Components

Swing除了可以使用绝对位置来定义布局之外,更常见的是使用J2SE平台提供的各种Layout Managers。(GroupLayout是针对辅助布局工具的,比如NetBeans,通过代码的形式是不会用到GroupLayout的,更有用的是GridBagLayout,它是最灵活和强大的Layout Manager)。主要的有8种:1.BorderLayout  默认的content

2013-05-15 20:11:51 1291

原创 Git的一些入门知识

1.和Eclipse进行整合去Eclipse,Help->Eclipse Marketplace...,搜egit,就会出来一个插件叫做egit,直接安装。2.客户端基本上来说都提供各种操作系统版本的,但是貌似只提供最新的操作系统版本的,比如Mac OSX的就是从10.7开始的。3.为什么Centralized Version Control System例如SVN和CVS又不行了

2013-04-22 02:53:07 781

原创 关于GET和POST方法的一些区别

二者的区别1.GET主要用于"reading, getting information",比如从数据库读取一个结果POST主要用于"posting information",比如往数据库写入一个数据2.GET是明文的请求,俗称queryString,可以bookmark,你输入url然后提交,url会根据具体的响应变更POST的交互是invisible的,无法reload,url不

2013-04-16 02:54:27 749

原创 调试程序

记录一些调试程序的方法1. System.out.println(xxxxxx);这个是最简单的方法,通常打印一行出来,然后在调试窗口看看输出不输出,从而判断有没有执行。有时候为了方便跟踪是哪个类的打印,还会加System.out.println(getClass().getSimpleName() + "xxxxxx");2.try...catch...通常为了看

2013-01-14 21:43:10 492

原创 Flex开发介绍

Flex是一个开发框架,使用ActionScript语言,它是面向对象的。AIR,Adobe Integrated Runtime,由Adobe开发的跨平台的运行环境。可以达到免费,那就是直接下载Flex SDK,然后开发就是了。还有一种更方便却要花钱的就是使用Adobe公司推出的基于Eclipse的Flex插件。无论使用哪一种方法,都可以构建Flex Application。需要

2013-01-11 18:52:06 518

原创 JavaScript浏览器相关的

1.浏览器可以通过使用js来进行很多浏览器相关的操作,比如检测浏览器的类型,检测浏览器的版本。定义一个变量var name=navigator.appName;  这样浏览器的类型就被传值到name变量中了。定义一个变量var version=navigator.appVersion;  这样浏览器的版本就被传值到version变量中了。各种各样的关于浏览器的信息都可以通过这样的方

2012-11-13 20:32:32 489

原创 关于环境变量的一些区别

1.环境变量是干啥的?我的理解就是在Unix或者类Unix环境下,你要在command line里面启动某个程序的话,如果没有设置环境变量,那么你就必须一直cd到该程序所在的根目录,然后再启动,这显然有时候会很不方便,没人愿意老cd,而且时间长了未必能记住具体哪个程序安装在哪里。一种比较有效的方法就是设置环境变量,也就是把你程序的安装路径添加到环境变量中去。设置了以后会怎样呢? 设置好

2012-11-02 15:55:56 523

原创 在JSP中使用JavaBean

表单这类的东西往往就是填写一些数据,然后提交给服务器进行进一步的处理。之前,这些数据和服务器之间的交互方式就是使用纯粹的scriptlet,要手动地一个个地设定session的属性,这样显然还不够方便。设想有50个需要提交的值,那么你就要分别设定50次。既然有JavaBean的概念,那么完全可以将这些要提交的数据都按照其名字封装到一个Bean里面,然后配置好setters和getters。之后要在

2012-10-29 19:46:11 880

原创 Groovy简介

Groovy其实就是一种变成语言,语法类似于Java,但是比Java还要更加简洁。

2012-10-18 21:39:30 462

原创 Hibernate核心API

1. SessionFactory最开始的时候必须要先创建一个SessionFactory,这个就有点像一个数据库连接池一样,它是根据configuration文件来创建的,而它存在目的就是创建session。2. SessionSession才是真正拿数据的通道,获取这个通道的方式有2个。如果你调用openSession(),那么每次都会创建一个新的session,用完以后你必须

2012-10-01 04:47:10 675

原创 Hibernate的基础配置

首先,建议使用Annotation。1.对于数据库的表来说,建立的时候记住最好是(通常必须是)创建一个primary id,然后在Bean类的get方法上面添加注解@Id。2.对于普通的数据成员,默认情况下是在其get方法上面添加了@Basic注解,这种情况的意思就是,如果你的成员变量数据的名字和数据库中表的column的名字一样,就自动匹配,不用写注解了。但是,如果不一样,比如在

2012-09-29 20:39:36 486

原创 动态代理

动态代理相对于其它设计模式来说更难理解,但是作用也是显著的。它可以说是AOP(Aspect Oriented Programming)的基础,对于架构的设计有很大的意义。有些时候,我们可能想要添加一些功能,但是没有源码,或者说我们已经没法修改一些现有的东西。比如,有个中间开发商开发的开发包,只提供class文件,不提供源码,这个时候如果你要想监控运行信息,打印日志,添加功能等等,就无法通过修改

2012-09-10 03:44:24 463

原创 工厂模式

2012-08-26 23:58:50 636

原创 IOC(DI)- Inversion of Control(Dependency Injection)

IOC-Inversion of ControlDI-Dependency Injection这两个其实是一个概念可能叫做依赖注入更容易理解。它有什么好处呢?通过写配置文件,容器会帮助你注入你要用到的实现,开发者就不再去管new之类的东西了。通常来说其实也就是配置,之前不用框架的时候,你总得new,总得各种父类引用指向子类对象,但是都是hard coded,写死了的。无论怎么说

2012-08-23 05:02:50 886

原创 Java集合对象排序

1.List排序这个和数组的排序又不一样了。其实Java针对数组和List的排序都有实现,对数组而言,你可以直接使用Arrays.sort,对于List和Vector而言,你可以使用Collections.sort方法。Java API针对集合类型的排序提供了2个方法:java.util.Collections.sort(java.util.List)java.util.Col

2012-08-06 22:35:20 16485 2

原创 Java数组排序算法,冒泡,选择,插入,快速排序

1.冒泡排序冒泡排序广泛用于数组排序,大致原理就是从第一个数开始,通过和后面一个数相比较,将较大的往后挪,一一比较之后,将最大的放到最下面。第一次比较完毕将最大的数字放到最后面,第二次比较结束以后将第二大的数字放到倒数第2位,依次进行。其中,第5行之所以要减去(i+1),是因为每放一个最大的数字到最下面,他们就不用再比较了,也就是说它们的位置就定好了。第i次循环的时候,就已经有i+1个不用

2012-08-06 04:01:34 6626

原创 线程池

1.背景为了提高程序的运行效率,Java引入了多线程机制。在初期阶段,或者说在项目规模不大的情况下,我已经习惯了简单地使用多线程来解决一些问题。但是一旦项目的规模增大,用户的人数增多。特别是带有社交性质的网站或者游戏,往往用户数量至少都是百万级的,甚至以亿计,那么每秒钟用户发出的请求数量也会达到相同的级别。其实,在面向对象的编程过程中,创建和销毁对象都是很费时间和内存资源的。因为,如果

2012-08-02 03:58:10 644

原创 泛型

首先提醒一句,Java编程追求的境界是编写更加通用的代码,使得代码能够应用于“某种不具体的类型”。泛型的意思就是适用于许多许多的类型。总的来说泛型是为了对操作类型进行一定的约束,从而使得可能发生在运行时的一场在编译的时候就被发现,这样就减少了出错的概率。常常会遇到使用容器的时候,放对象进去,然后在什么地方又要取出来。如果没有泛型的话,那么每次拿出来的时候必须进行一个向下类型转换。有

2012-07-31 15:34:33 472

原创 Social Games Tutorial

要创建社交游戏,其实也就是创建一个游戏,然后将FB的社交化特性加入进去。首先跟网页一样,要现在FB上面注册一个App,添加一个App Name,弄一个App Namespace,然后填写各种信息。填写好了以后,选取Advanced,将SandBox  Mode选取为Enabled,这样就可以保证在开发的过程中只有开发者可以看见该App。当你要发布游戏的时候,再将其改为Disabled就行。至于

2012-07-29 07:45:54 462

原创 Enum类型

这个是从JDK 1.5开始有的,可以方便地代替静态常量。这样,你就可以写一个类,里面将各种枚举写进去,要用的时候总是有这么一个类就够了。要定义举个简单例子public enum Season {      SPRING, SUMMER, AUTUMN, WINTER;}Season是一个Enum类,这些元素都是Season类型的实例,之所以使用大写形式,是因为它们默认情况下

2012-07-27 19:50:51 1341

原创 Core Concept-Open Graph 02 Tutorial

前面介绍了Open Graph的一些主要的概念,这里就要跟着尝试构建,测试和发布Open Graph app。跟着这个教程,我们来构建一个食谱的应用,用户可以使用这个应用来发布关于做菜的一些新鲜事。再开始之间,先总览一遍到底有些什么步骤。step1: 创建一个FB应用step2: 使用Login Button插件来验证用户step3: 通过App Dashboard来定义Objects

2012-07-24 03:51:33 925

原创 Core Concept-Open Graph 01

FB的核心就是Social Graph,即社交图谱。用户和他们的联系人,以及所有他们关心的事物。最早,FB推出了这么一个图谱,并且随着时间的推移加入了新的产品,比如图片,地理位置。2010年的时候,FB通过使用Open Graph Protocol引入了一个早期版本的Open Graph,它是Social Graph的加强版,可以包含用户们喜欢的第三方网站和页面。现在的Open Graph可以包含

2012-07-20 18:12:02 904

原创 Core Concepts-Social Design

Social Design是将社交体验放在核心位置的产品设计的方法。社交设计定义了我们怎样理解自己以及互相理解,简单说来共有3个元素,Community,Conversation,Identity。Community是指那么我们认识,信任,帮助我们做决定的一些人。Conversation是指在我们的Community里面进行的各种各样的交流。Identity是指自我认识,以及在我们的C

2012-07-19 18:05:50 681

原创 Facebook For Websites

网上总是能看到各种Like Button,Recommendation之类的东西,FB提供了一系列的API专门供开发人员使用,从而定制页面,这些按钮之类的东西叫做Social Plugins。1. Social Plugins这个是借助FB平台开发的最简单的方式。只需要嵌入一段HTML代码,就可以将社交的特性整合进你的页面。由于它们是由FB来维护的,所以说这些plugins都是为当前那些登

2012-07-16 23:09:17 1728 1

原创 Canvas Tutorial

1. Create App要创建一个App,首先要进入App开发页面,然后Create New App。在创建新的App之前,必须保证自己是通过了FB开发者验证的(验证的方法有2种,一种是手机号,一种是信用卡)。2. Configure your App通过提供一个包含了由HTML,JS和CSS组成的App的Canvas URL来填充Canvas Page。当用户请求获取该Canv

2012-07-14 22:02:57 1625

原创 Facebook API 简介

主要先介绍几个概念1.Canvas Page就是Facebook App被装载的地方,简单点说,就是一个页面而已,只不过FB写了固定的模式。一旦你进入了Canvas Page,页面的右上角会出现各种Bookmarks。用户一旦开始使用某个FB App,FB就会为用户创建一个该App的Bookmark,除了在Canvas Page的右上角会出现Bookmarks之外,在首页也会出现。这样

2012-07-13 21:15:18 3892

原创 XML Schema简介

XML Schema是基于XML的,可以看作是DTD的替代,用于描述XML的结构,保证XML没有被乱写,意思一致。在Java的开发过程中,它有更加重要的作用。和JAXB结合使用,将数据的获取方式对象化。因为它也是XML编写的,所以可扩展。你一旦写了现成的Schema,那么将来还可以重复使用(只要你写得好)。举一个比较简单的schema例子(省略了开头)定义一个复合的元素,一

2012-07-09 19:48:59 1430

原创 重构代码 03 哪个特性应该放在哪个类

第一次构建类的时候,通常并不能完全正确地将所有应有的特性放到它应该在的类里面。

2012-07-06 20:29:35 350

原创 重构代码 02 构建方法

可能绝大多数需要重构的地方就是因为方法太长,太长的方法往往包含了太多的信息,从而导致代码的逻辑太混乱或者说太复杂。当你看着一段代码,然后发现它很长,或者你必须要看comments才能理解它的意思的话,那么就重构它,将代码变成小块。之所以要把代码变成小块,原因一方面是为了避免复杂的逻辑,另一方面是这样可以增加别的方法用到它们的机会,从而增大代码的重用率。但是注意,方法的名字一定要取得合理,容易理

2012-07-06 20:05:56 431

原创 XML简介

XML是一种跨平台的文件格式,主要是用于在网络上交换数据,存储和读取配置信息。因为它的跨平台特性,那么就可以实现异构平台和异构语言的交互。在xml出现之前,往往都是拼接字符串。DTD,Document Type Definition,文档类型定义,这个通常是和XML一起存在的,用来验证XML的格式是否正确。它和Schema还是有很多不同点的。但是现在Schema更加优秀,可以替代DTD。XML

2012-07-02 18:04:41 710

原创 重构代码 01

1.介绍传统的观念是先设计,然后进行写代码。但是最初的设计往往都并不是完美和尽然的,重构显得非常必要。重构所强调的就是在写代码的过程中再不断地进行设计和修改,从而达到最终的设计,即使最初的设计很混乱也没有关系。有可能一小段代码本身没什么可改的,但是如果是在一个大项目中的话,就有改的必要了。首先,你的方法代码不能太长了,一旦代码太长了,系统要进行修改的时候就很难修改,因为到时候你也不知道该改

2012-06-08 19:59:33 665

原创 Stack Trace简介

1.中文翻译叫做堆栈跟踪,一个调试工具,或者叫做调试方法。它的展示方式就是线程和JVM监测的snapshot,根据程序的复杂程度,它可能有几十行到几千行不等。在try-catch语句中,每当catch到了Exception,通常默认的做法就是printStackTrace。其实一共有3个方法生成stack trace,这个貌似是最普遍的方法。2.打印出来了以

2012-06-06 21:09:59 1550

原创 Slf4j和Log4j

大项目和大系统调试尤为重要,debug并不能完全满足需要。将运行过程中的信息输出到屏幕上面或者文件当中,可以有效地帮助调试。1.先说slf4j,它是什么,simple logging facade for java,并不是日志工具的实现,而是一种中间连接。好像JDBC,是一种标准,下面有很多Driver实现, JPA也是一种标准,下面有Hibernate之类的实现。它和java打交道,

2012-06-06 21:08:41 2536

原创 IntelliJ IDEA简介

记录一些不太知道的东西1.尽量不使用鼠标,多尝试使用热键2.Ctrl+ Shift +v,这个可以列出一个复制过的列表,然后你选择一个就是了3. Alt+Insert,完成setter和getter,除此之外,还可以添加其它一些东西,比如Constructor,toString方法。4.Alt+ F7,查看这个方法或者成员变量在哪里被使用了,Ctrl

2012-06-06 21:07:30 1208

原创 Ivy简介

所有的软件开发项目都必须依靠来自其它项目的源代码,开发团队并不会,也不需要去维护这些代码,只是依赖其API。项目越大,数量越多,构建就越加复杂和耗时。当然,你可以把所有需要的源代码的jar包都放到项目专门的一个目录中,然后再通过svn将其存储进repository里面。但是,这样一来,你的repository的占用量就增加了,而且大家都有可能在不知情的情况下添加进新的库,或者删除了,导

2012-06-06 21:05:45 1171

原创 JSON简介

JSON=JavaScript Object Notation一种轻量级的数据交换格式,非常适合人读和写。对于机器来说,很容易解析和生成。JSON是文本格式的,没有类似于.json之类的文件。完全独立于编程语言,但是却很容易转换成适合各种编程语言的数据。JSON是建立在2种结构上的。1)一种是 键值对的集合,在不同的语言中,被实现成为Object,record等

2012-06-06 21:04:42 641

原创 Google Guice简介

Guice可以缓和对于"工厂"和"new"关键字的依赖,将@Inject作为new来看待。可能还是会用到一些和工厂相关的,但是代码并不会直接依赖它们。甚至不客气地可以说,Guice是core java里面一个missing feature.1.Motivation首先,你并不想把所有的代码都写到一起。于是应这个形式,各个data,service,classes的连接方式也多

2012-06-06 20:50:30 546

原创 面向抽象(接口)的编程

当你要设计一个东西的时候,首先考虑的是实体类,也就是传说中的model,比如User,这个基本上就是Java Bean。假如你想加一个方法,可以添加一个用户。这个时候,你不可能在User这个类里面添加方法,因为你不可能说为了调用方法还得先new一个user出来,逻辑上说不过去。最好的方法是你再专门创建一个service类,比如叫做UserService。这个时候当你使用UserService里

2012-06-04 20:40:08 496

memcached.pdf

关于memcached缓存的介绍,适合于初学者迅速了解memcached的工作原理

2012-05-02

空空如也

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

TA关注的人

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