上一页 1 ··· 339 340 341 342 343 344 345 346 347 ··· 353 下一页
摘要: 这篇文章里,我们来讨论一些和JDBC相关的话题。 概述 尽管在实际开发过程中,我们一般使用ORM框架来代替传统的JDBC,例如Hibernate或者iBatis,但JDBC是Java用来实现数据访问的基础,掌握它对于我们理解Java的数据操作流程很有帮助。 JDBC的全称是Java Database Connectivity。 JDBC对数据库进行操作的流程:连接数据库发送数据请求,即传统的CRUD指令返回操作结果集 JDBC中常用的对象包括:ConnectionManagerConnectionStatementCallableStatementPreparedStatementR... 阅读全文
posted @ 2013-11-26 15:03 brave-sailor 阅读(346) 评论(0) 推荐(0) 编辑
摘要: 类的初始化顺序 在Java中,类里面可能包含:静态变量,静态初始化块,成员变量,初始化块,构造函数。在类之间可能存在着继承关系,那么当我们实例化一个对象时,上述各部分的加载顺序是怎样的? 首先来看代码: 1 class Parent 2 { 3 public static StaticVarible staticVarible= new StaticVarible("父类-静态变量1"); 4 public StaticVarible instVarible= new StaticVarible("父类-成员变量1"); 5 6 static 7 ... 阅读全文
posted @ 2013-11-26 14:59 brave-sailor 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 在这一篇文章里,我们关注反射及其相关话题。 反射可以帮助我们查看指定类型中的信息、创建类型的实例,调用类型的方法。我们平时使用框架,例如Spring、EJB、Hibernate等都大量的使用了反射技术。 反射简单示例 下面来演示反射相关的基本操作 首先是基础代码,我们定义一个接口及其实现,作为我们反射操作的目标: 1 interface HelloWorldService 2 { 3 void sayHello(String name); 4 } 5 6 class MyHelloWorld implements HelloWorldService 7 { 8 pub... 阅读全文
posted @ 2013-11-26 14:55 brave-sailor 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 在这篇文章里,我们关注对象序列化。 首先,我们来讨论一下什么是序列化以及序列化的原理;然后给出一个简单的示例来演示序列化和反序列化;有时有些信息是不应该被序列化的,我们应该如何控制;我们如何去自定义序列化内容;最后我们讨论一下在继承结构的场景中,序列化需要注意哪些内容。 序列化概述 序列化,简单来讲,就是以“流”的方式来保存对象,至于保存的目标地址,可以是文件,可以是数据库,也可以是网络,即通过网络将对象从一个节点传递到另一个节点。 我们知道在Java的I/O结构中,有ObjectOutputStream和ObjectInputStream,它们可以实现将对象输出为 二进制流,并从二进... 阅读全文
posted @ 2013-11-26 14:52 brave-sailor 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 在这篇文章里,我们关注Java中的集合(Collection)。集合是编程语言中基础的一部分,Java自JDK早期,就引入了Java Collection Framework。设计JCF的那个人,后来还写了一本书,叫《Effective Java》。 Java中的集合主要集中在2部分,一部分是java.util包中,一部分是java.util.concurrent中,后者是在前者的基础上,定义了一些实现了同步功能的集合。 这篇文章主要关注java.util下的各种集合对象。Java中的集合对象可以粗略的分为3类:List、Set和Map。对应的UML图如下(包括了java.util下大部分.. 阅读全文
posted @ 2013-11-26 14:46 brave-sailor 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 在这篇文章里,我们主要讨论如何使用Java实现网络通信,包括TCP通信、UDP通信、多播以及NIO。 TCP连接 TCP的基础是Socket,在TCP连接中,我们会使用ServerSocket和Socket,当客户端和服务器建立连接以后,剩下的基本就是对I/O的控制了。 我们先来看一个简单的TCP通信,它分为客户端和服务器端。 客户端代码如下: 1 import java.net.*; 2 import java.io.*; 3 public class SimpleTcpClient { 4 5 public static void main(String[] args) ... 阅读全文
posted @ 2013-11-26 14:39 brave-sailor 阅读(331) 评论(0) 推荐(0) 编辑
摘要: 这篇文章主要回顾Java中和I/O操作相关的内容,I/O也是编程语言的一个基础特性,Java中的I/O分为两种类型,一种是顺序读取,一种是随机读取。 我们先来看顺序读取,有两种方式可以进行顺序读取,一种是InputStream/OutputStream,它是针对字节进行操作的输入输出流;另外一种是Reader/Writer,它是针对字符进行操作的输入输出流。 下面我们画出InputStream的结构 FileInputStream:操作文件,经常和BufferedInputStream一起使用PipedInputStream:可用于线程间通信ObjectInputStream:可用于对象... 阅读全文
posted @ 2013-11-26 14:36 brave-sailor 阅读(368) 评论(0) 推荐(0) 编辑
摘要: 在这篇文章里,我们关注线程同步的话题。这是比多线程更复杂,稍不留意,我们就会“掉到坑里”,而且和单线程程序不同,多线程的错误是否每次都出现,也是不固定的,这给调试也带来了很大的挑战。 在这篇文章里,我们首先阐述什么是同步,不同步有什么问题,然后讨论可以采取哪些措施控制同步,接下来我们会仿照回顾网络通信时那样,构建一个服务器端的“线程池”,JDK为我们提供了一个很大的concurrent工具包,最后我们会对里面的内容进行探索。 为什么要线程同步? 说到线程同步,大部分情况下, 我们是在针对“单对象多线程”的情况进行讨论,一般会将其分成两部分,一部分是关于“共享变量”,一部分关于“执行步骤”... 阅读全文
posted @ 2013-11-26 14:27 brave-sailor 阅读(382) 评论(0) 推荐(0) 编辑
摘要: 在这篇文章里,我们关注多线程。多线程是一个复杂的话题,包含了很多内容,这篇文章主要关注线程的基本属性、如何创建线程、线程的状态切换以及线程通信,我们把线程同步的话题留到下一篇文章中。 线程是操作系统运行的基本单位,它被封装在进程中,一个进程可以包含多个线程。即使我们不手动创造线程,进程也会有一个默认的线程在运行。 对于JVM来说,当我们编写一个单线程的程序去运行时,JVM中也是有至少两个线程在运行,一个是我们创建的程序,一个是垃圾回收。 线程基本信息 我们可以通过Thread.currentThread()方法获取当前线程的一些信息,并对其进行修改。 我们来看以下代码: 1 Stri... 阅读全文
posted @ 2013-11-26 14:22 brave-sailor 阅读(345) 评论(0) 推荐(0) 编辑
摘要: android中为实现多屏幕适配,可以在layout_hdpi/layout_mdip/layout_ldpi/layout 目录下放置布局文件。如果一个大屏手机适配的话,适配的顺序是layout_hdpi->layout_mdpi->layout->layout_ldpi;如果一个中屏手机适配的话,适配的顺序是layout_mdpi->layout->layout_hdpi->layout_ldpi;如果一个小屏手机适配的话,适配的顺序是layout_ldpi->layout->layout_mdpi->layout_hdpi;假如有一个 阅读全文
posted @ 2013-11-25 17:32 brave-sailor 阅读(175) 评论(0) 推荐(0) 编辑
上一页 1 ··· 339 340 341 342 343 344 345 346 347 ··· 353 下一页