Java
文章平均质量分 92
Java
@SmartSi
Stay Hungry, Stay Foolish
展开
-
OpenCSV 3.8 快速实践
OpenCSV 是一个轻量级的 Java CSV 解析器。今天我们一起看看基于 OpenCSV 的 CSV 解析示例。OpenCSV 提供了 CSV 解析的大部分特性。OpenCSV 比较受欢迎的原因是在 Java 中没有任何内置的 CSV 解析器。原创 2023-05-25 08:30:29 · 847 阅读 · 0 评论 -
[Java开发之路](25)引用类型
1. 强引用Java中的引用,类似于C++的指针。通过引用,可以对堆中的对象进行操作。在某个函数中,当创建了一个对象,该对象被分配在堆中,通过这个对象的引用才能对这个对象进行操作。StringBuffer str = new StringBuffer("hello world");假设以上代码是在函数体内运行的,那么局部变量str将被分配在栈上,而对象StringBuffer实原创 2016-04-04 11:42:46 · 1512 阅读 · 0 评论 -
[Java开发之路](18)关于Class.getResource和ClassLoader.getResource的路径问题
Java中取资源时,经常用到Class.getResource和ClassLoader.getResource。昨天老师讲解题目时候,问我们为什么你们都是在文件前家上"/":String path = Resources.class.getResource("/a.txt").getPath();注:在Resources文件下创建了a.txt文件我想我反正是试出来的,不使用"/原创 2016-03-07 20:57:40 · 2823 阅读 · 7 评论 -
[Java开发之路](15)注解
1. 简介注解(也被称为元数据),为我们在代码中添加信息提供了一种形式化的方法。注解在一定程度上是把元数据与源代码文件结合在一起,而不是保存在外部文档中这一大趋势之下所催生的。它可以提供用来完整的描述程序所需的信息,而这些信息是无法使用Java来表达的。因此,注解使得我们能够以将编译器来测试和验证的格式,存储有关程序的额外信息。注解可以用来生成描述符文件,甚原创 2016-01-15 10:05:12 · 2038 阅读 · 0 评论 -
[Java开发之路](14)反射机制
1. Class类普通对象构造方式:// 创建Book实例对象Book book = new Book(); 对于Class的实例对象如何构造呢?Class的构造函数是私有的,只有JVM才能创建实例对象// Class的构造函数是私有的,只有JVM才能创建Class实例对象Class class1 = new Class(); //原创 2016-01-15 09:59:41 · 2034 阅读 · 0 评论 -
[Java开发之路]Java字符串的10大热点问题盘点
译文链接:http://www.html5tricks.com/10-top-questions-java-string.html英文原文:Top 10 questions of Java Strings翻译作者:蒋丽丽下面我为大家总结了10条Java开发者经常会提的关于Java字符串的问题,如果你也是Java初学者,仔细看看吧:1、如何比较字符串,转载 2015-12-26 13:47:23 · 1098 阅读 · 0 评论 -
[Java开发之路](7)RandomAccessFile类详解
RandomAccessFile适用于大小已知的记录组成的文件,提供的对文件访问,既可以读文件,也可以写文件,并且支持随机访问文件,可以访问文件的任意位置。文件中记录的大小不一定都相同,只要我们知道记录的大小和位置。但是该类仅限于操作文件。RandomAccessFile不属于InputStream和OutputStream继承层次结构中的一部分。除了实现DataInput和Dat原创 2015-12-23 21:04:20 · 3896 阅读 · 1 评论 -
[Java开发之路](6)File类的使用
1. 构造方法构造方法描述File(String pathname)通过将给定的路径名字符串转换为抽象路径名来创建一个新的文件实例。File(String parent , String child)通过给定的父路径名字符串和子路径名字符串来创建一个新的文件实例。File(Fil原创 2015-12-23 14:24:00 · 2905 阅读 · 2 评论 -
[Java]Java工程师成神之路
一、基础篇1.1 JVM1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收http://www.jcp.org/en/jsr/detail?id=133http://ifeve.com/jmm-faq/1.1.2. 了解JVM各种参数及调优1.1.3. 学习使用Java工具jps, jstack, jmap,转载 2015-12-23 09:48:44 · 6221 阅读 · 3 评论 -
[Java开发之路](5)异常详解
1. 异常分类在Java程序设计语言中,异常对象都是派生于Throwable类的一个实例。其是如果Java中的异常类不能满足需求,用户可以创建自己的异常类。下图是Java异常层次结构的一个简化示意图。从图上可以看出,所有的异常都是继承于Throwable类,但是在下一层立即分解为两个分支:Error和Excepti原创 2015-12-22 18:36:24 · 3198 阅读 · 4 评论 -
[Java开发之路](4)String、StringBuffer与StringBuilder详解
最近学习到字符串,整理了一下String,StringBuffer,StringBuilder相关知识1. StringString 类位于 java.lang 包中。String 对象创建后则不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同。String str1 = "xiaosi";str1 = "欢迎你 " +原创 2015-12-21 10:57:07 · 3185 阅读 · 1 评论 -
[Java开发之路](16)学习log4j日志
1. 新建一个Java工程,导入Jar包(log4j-1.2.17.jar)2. 配置文件:创建并设置log4j.properties # 设置log4j.rootLogger = debug,stdout,D,E # 输出信息到控制台log4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4原创 2016-01-20 10:35:31 · 2955 阅读 · 0 评论 -
[Hibernate开发之路](5)联合主键
现在大家都不推荐使用联合主键,关键是因为其需要自己手工维护,比较麻烦。但是一个项目可能因为历史遗留原因,你不得不面对联合主键。 Hibernate联合主键问题解决如下:可以使用一个组件作为一个实体类的标识符。你的组件类必须满足以下要求: (1)它必须实现 java.io.Serializable 接口 (2)它必须重新实现 equals() 和 hashCode() 方法,始终和组原创 2014-08-26 14:22:59 · 2128 阅读 · 0 评论 -
[Java开发之路](19)Long缓存问题
Long中有个小小的陷阱,就是在-128至127范围内,Long.valueOf(long l)返回的Long的实例是相同的,而在此范围之外每次使用valueOf(long l)时,返回的实例都是不同的。举例:System.out.println(Long.valueOf(-129) == Long.valueOf(-129)); // falseSystem.out.原创 2016-03-10 19:53:43 · 3163 阅读 · 0 评论 -
[Java开发之路](24)内部类
在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。下面就先来了解一下这四种内部类的用法。1. 成员内部类成员内部类是定义在另一个类内部的类。package com.qunar.fresh;/** * Created by xiaosi on 16-3-29.原创 2016-04-04 11:40:14 · 1669 阅读 · 0 评论 -
[Thrift]Apache Thrift入门Java实例
1. 概述Apache Thrift 是 Facebook 实现的一种高效的、支持多种编程语言的远程服务调用的框架。本文将从 Java 开发人员角度详细介绍 Apache Thrift 的架构、开发和部署,并且针对不同的传输协议和服务类型给出相应的 Java 实例,同时详细介绍 Thrift 异步客户端的实现,最后提出使用 Thrift 需要注意的事项。目前流行的服务调用方式有很多原创 2016-09-21 11:52:45 · 7029 阅读 · 0 评论 -
[Avro]Avro入门例子
1. Maven配置pom.xmlxml version="1.0" encoding="UTF-8"?> xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http原创 2016-09-18 11:46:06 · 2725 阅读 · 0 评论 -
[Java开发之路](26)Cookie机制
1. Cookie机制会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。在程序中,会话跟踪是很重要的事情。理论上,一个用户的所有请求操作都应该属于同一个会话,而另一个用户的所有请求操作则应该属于另一个会话,二者不转载 2016-07-12 22:28:55 · 1989 阅读 · 0 评论 -
Java开发之路
(1)Java基础[Java开发之路]final关键字[Java开发之路]Java字符串 [Java开发之路]Java常用类[Java开发之路]String、StringBuffer与StringBuilder详解 [Java开发之路]异常详解[Java开发之路]File类的使用[Java开发之路]RandomAccessFile类详解[Java开发之路]输入流原创 2016-01-01 23:16:36 · 3389 阅读 · 0 评论 -
[NIO日记](3)Channel
Java NIO的通道类似流,但又有些不同:既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。通道可以异步地读写。通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。正如上面所说,从通道读取数据到缓冲区,从缓冲区写入数据到通道。如下图所示:1. Channel实现这些是Java NIO中最转载 2016-05-03 23:14:04 · 738 阅读 · 0 评论 -
[NIO日记](2)NIO vs IO
我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异、它们的使用场景,以及它们如何影响您的代码设计。1. Java NIO和IO的主要区别 下表总结了Java NIO和IO之间的主要差别,我会更详细地描述表中每部分的差异。IONIOStream orientedBuffer o转载 2016-05-02 22:18:05 · 738 阅读 · 0 评论 -
[NIO日记](1)Java NIO概述
Java NIO 由以下几个核心部分组成:ChannelsBuffersSelectors虽然Java NIO 中除此之外还有很多类和组件,但是Channel,Buffer 和 Selector 构成了核心的API。其它组件,如Pipe和FileLock,只不过是与三个核心组件共同使用的工具类。因此,在概述中我将集中在这三个组件上。其它组件会在单转载 2016-04-24 12:23:17 · 968 阅读 · 0 评论 -
[Java开发之路](22)hashcode
Long中有个小小的陷阱,就是在-128至127范围内,Long.valueOf(long l)返回的Long的实例是相同的,而在此范围之外每次使用valueOf(long l)时,返回的实例都是不同的。举例:System.out.println(Long.valueOf(-129) == Long.valueOf(-129)); // falseSystem.out.原创 2016-03-27 12:55:27 · 1211 阅读 · 0 评论 -
[Java开发之路](23)装箱与拆箱
1. 简介大家对基本数据类型都非常熟悉,例如 int、float、double、boolean、char 等。基本数据类型是不具备对象的特性,比如基本类型不能调用方法、功能简单。。。,为了让基本数据类型也具备对象的特性, Java 为每个基本数据类型都提供了一个包装类,这样我们就可以像操作对象那样来操作基本数据类型。 对象包装类是不变的,即一旦构造了包装类,就不允许更改包装在其中的原创 2016-03-27 13:00:48 · 1763 阅读 · 0 评论 -
[Java开发之路](21)Comparator与Comparable
1. Comparablepackage java.lang;import java.util.*;public interface ComparableT> { public int compareTo(T o);}说明:Comparable 是排序接口。若一个类实现了Comparable接口,则该类可以支持排序。 假设现在存在实现Comparable接口的类的实例的L原创 2016-03-14 20:56:19 · 1646 阅读 · 1 评论 -
[Java开发之路](20)try-with-resource 异常声明
Try-with-resources是java7中一个新的异常处理机制,它能够很容易地关闭在try-catch语句块中使用的资源。在java7以前,程序中使用的资源需要被明确地关闭,过程有点繁琐,如下所示:package com.qunar.lectures.tryResource;import java.io.*;import java.util.ArrayList;import j原创 2016-03-11 00:18:07 · 3721 阅读 · 0 评论 -
[Hibernate开发之路](4)ID生成策略
(1)uuid 采用XML配置方式 自动生成ID:采用uuid方式自动生成的ID为string类型(2)native根据不同的数据库采用不同的ID生成方式,例如:在SQL Server中采用identity; 在MySQL中采用auto_incremen原创 2014-08-25 12:36:24 · 2288 阅读 · 0 评论 -
[Hibernate开发之路](3)基础配置
一 JDBC链接通常你希望SessionFactory来为你创建和缓存(pool)JDBC连接. 如果你采用这种方式, 只需要如下例所示那样,打开一个Session: Session session = sessions.openSession(); // open a new Session一旦你需要进行数据访问时, 就会从连接池(connection pool)获得一个JD原创 2014-08-23 11:12:45 · 1971 阅读 · 0 评论 -
[Java开发之路](8)输入流和输出流
1. Java流的分类按流向分:输入流: 可以从其中读入一个字节序列的对象称作输入流。输出流: 可以向其中写入一个字节序列的对象称作输出流。这些字节序列的来源地和目的地可以是文件,而且通常都是文件,但是也可以是网络连接,甚至是内存块。抽象类InputStream和OutputStream构成了输入和输出类层结构的基础。按数据传输单位分:字节流:原创 2015-12-30 14:03:17 · 3414 阅读 · 1 评论 -
[细说Java](1)图说字符串的不变性
我们用下面一组图来说明Java的不变性。1.声明一个字符串String s = "abcd";s存储了字符串对象的引用。下面图片中的箭头就表示这种存储引用。2. 将一个字符串变量赋值给另外一个字符串变量String s2 = s;s2变量存储了同样的引用值。所以,两个变量指向同一个字符串对象。翻译 2015-12-26 23:46:25 · 2187 阅读 · 1 评论 -
[细说Java](2)Java中字符串为什么是不可变的
在Java中字符串(String)是一个不可改变的类。一个不可改变的类只是一个对象实例不可修改的简单类。当创建一个对象实例时,对象实例的所有信息都被初始化,并且信息不能被修改。对于不可改变的类来说还有很多优势。上一篇文章很好说明了为什么字符串被设计成不可改变的。只有你很好的掌握了内存,同步,数据结构等知识后,你才能很好的回答这个问题。1. 字符串常量池的需求翻译 2015-12-27 20:10:41 · 1563 阅读 · 0 评论 -
[细说Java](3)创建字符串是使用" "还是构造函数?
在Java中,可以使用两种方式创建字符串:String x = "abc";String y = new String("abc");对于这两种方式(双引号,构造函数)它们到底有什么区别呢?1. 双引号 vs 构造函数这个问题可以使用这两个简单代码实例来回答:实例一String a = "abcd";S翻译 2015-12-28 20:05:20 · 2474 阅读 · 1 评论 -
[Java]UDP通信的简单例子
package com.sjf;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.InetSocketAddress;import java.net.SocketExcepti原创 2015-05-27 15:17:54 · 3022 阅读 · 0 评论 -
[JVM]成为JavaGC专家(1)—深入浅出Java垃圾回收机制
对于Java开发人员来说,了解垃圾回收机制(GC)有哪些好处呢?首先可以满足作为一名软件工程师的求知欲,其次,深入了解GC如何工作可以帮你写出更好的Java应用。这仅仅代表我个人的意见,但我坚信一个精通GC的人往往是一个好的Java开发者。如果你对GC的处理过程感兴趣,说明你已经具备较大规模应用的开发经验。如果你曾经想过如何正确的选择GC算法,那意味着你已经完全理解你所开发的应用的特点。当然,我们不转载 2015-06-08 15:51:56 · 1166 阅读 · 0 评论 -
[JVM]垃圾收集算法
本文“垃圾收集算法”节选自《深入理解Java虚拟机:JVM高级特性与最佳实践》【作者:周志明】由于垃圾收集算法的实现涉及大量的程序细节,而且各个平台的虚拟机操作内存的方法又各不相同,因此本节不打算过多地讨论算法的实现,只是介绍几种算法的思想及其发展过程。1 标记-清除算法最基础的收集算法是“标记-清除”(Mark-Sweep)算法,如它的名字一样,算法分为“标记”和“清除”两个阶段:首先标记出所有需转载 2015-06-07 22:14:26 · 947 阅读 · 0 评论 -
[Java]Swing树状组件JTree
一 简单样式TreeNodeDemo.javapackage com.sjf;import javax.swing.JFrame;import javax.swing.JTree;import javax.swing.event.TreeSelectionEvent;import javax.swing.event.TreeSelectionListener;import javax.swi原创 2015-05-31 21:57:05 · 4303 阅读 · 2 评论 -
[Java]套接字地址InetAddress讲解
package com.sjf;import java.net.Inet4Address;import java.net.Inet6Address;import java.net.InetAddress;import java.net.NetworkInterface;import java.net.UnknownHostException;import java.util.Enumera原创 2015-05-27 18:41:51 · 1867 阅读 · 0 评论 -
[Java]深入理解Java内存模型(一)基础
在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过明确的发送消息来显式进行通转载 2015-03-26 19:40:37 · 854 阅读 · 0 评论 -
[Java]Eclipse配置JDK的图解步骤
【步骤1】打开Eclipse后,选择window-Preferences,如下图所示:【步骤2】先点击窗口左边的Installed JREs,然后在右边窗口中点击“Add…“按钮,如下图所示:【步骤3】直接点击“下一步“即可,如下图所示:【步骤4】点击“Directory…“按钮,如下图所示:【步骤5】选择原创 2015-01-26 19:39:43 · 1384 阅读 · 0 评论 -
[MyBatis]动态输出SQL语句
log4j实现mybatis的SQL语句输出原创 2015-11-28 21:14:44 · 1117 阅读 · 0 评论