JAVA基础
文章平均质量分 79
JAVA基础
一个技术渣渣
这个作者很懒,什么都没留下…
展开
-
彻底弄透Java处理GMT/UTC日期时间
平时工作中遇到时间如何处理?用Date还是JDK 8之后的日期时间API?如何解决跨时区转换等等头大问题。A哥向来管生管养,管杀管埋,因此本文就带你领略一下,Java是如何实现GMT和UTC的?众所周知,JDK以版本8为界,有两套处理日期/时间的API:虽然我一直鼓励弃用Date而支持在项目中只使用JSR 310日期时间类型,但是呢,由于Date依旧有庞大的存量用户,所以本文也不落单,对二者的实现均进行阐述。Date类型实现java.util.Date在JDK 1.0就已存在,用于表转载 2022-04-20 11:08:15 · 12068 阅读 · 2 评论 -
JAVA反射,Class.forName和ClassLoader的区别
一看名字就知道了,一个是类的创建,一个类加载器二再看下Class.forName源码,调用了ClassLoader@CallerSensitive public static Class<?> forName(String className) throws ClassNotFoundException { ...原创 2020-04-19 22:50:04 · 286 阅读 · 0 评论 -
创建HashMap时设置初始化容量
集合是Java开发日常开发中经常会使用到的,而作为一种典型的K-V结构的数据结构,HashMap对于Java开发者一定不陌生。关于HashMap,很多人都对他有一些基本的了解,比如他和hashtable之间的区别、他和concurrentHashMap之间的区别等。这些都是比较常见的,关于HashMap的一些知识点和面试题,想来大家一定了熟于心了,并且在开发中也能有效的应用上。但是,作者在...原创 2020-02-21 09:58:46 · 10362 阅读 · 2 评论 -
linux下安装jdk
下载解压那些就不在此说了,网上有很多教程,我们就从配置开始吧。配置环境变量在linux下配置环境变量和windows的原理是相同,都是使jdk的路径成为全局变量,用文本编辑器gedit(如果没安装可以用vi)打开/etc/profile,在文件最后添加export JAVA_HOME=/usr/java/jdk1.8.0_45export PATH=$JAVA_H原创 2016-01-30 13:12:33 · 509 阅读 · 0 评论 -
Java Socket编程(二)
对于Java Socket编程而言,有两个概念,一个是ServerSocket,一个是Socket。服务端和客户端之间通过Socket建立连接,之后它们就可以进行通信了。首先ServerSocket将在服务端监听某个端口,当发现客户端有Socket来试图连接它时,它会accept该Socket的连接请求,同时在服务端建立一个对应的Socket与之进行通信。这样就有两个Socket了,客户端和服务端转载 2014-03-26 10:56:21 · 578 阅读 · 0 评论 -
Java String StringBuilder StringBuffer
在Android/Java开发中,用来处理字符串常用的类有3种: String、StringBuilder、StringBuffer。它们的异同点:1) 都是 final 类, 都不允许被继承;2) String 长度是不可变的, StringBuffer、StringBuilder 长度是可变的;3) StringBuffer 是线程安全的, StringBuilder 不是线程转载 2015-05-04 10:24:31 · 439 阅读 · 0 评论 -
Java泛型简明教程
泛型是Java SE 5.0中引入的一项特征,自从这项语言特征出现多年来,我相信,几乎所有的Java程序员不仅听说过,而且使用过它。关于Java泛型的教程,免费的,不免费的,有很多。我遇到的最好的教材有:The Java TutorialJava Generics and Collections, by Maurice Naftalin and Philip WadlerEffecti转载 2015-02-13 15:41:30 · 515 阅读 · 0 评论 -
java 集合的数据结构
1、Collection集合 2、Map集合 * 图片中略掉抽象类 1)Col转载 2015-02-13 15:43:39 · 655 阅读 · 0 评论 -
Java正则表达式实例详解
创建正则表达式你可以从比较简单的东西入手学习正则表达式。要想全面地掌握怎样构建正则表达式,可以去看JDK文档的java.util.regex的Pattern类的文档。字符B字符B/xhh16进制值0xhh所表示的字符/uhhhh16进制值0xhhhh所表示的Unicode字符/tTab/n换行符转载 2014-03-22 23:33:33 · 727 阅读 · 0 评论 -
Java多线程面试问题集锦
问题:进程和线程的区别解答:一个进程对应一个程序的执行,而一个线程则是进程执行过程中的一个单独的执行序列,一个进程可以包含多个线程。线程有时候也被称为轻量级进程.一个Java虚拟机的实例运行在一个单独的进程中,不同的线程共享Java虚拟机进程所属的堆内存。这也是为什么不同的线程可以访问同一个对象。线程彼此共享堆内存并保有他们自己独自的栈空间。这也是为什么当一个线程调用一个方法时,他转载 2014-03-20 00:18:42 · 892 阅读 · 0 评论 -
Java IO流学习总结
Java流操作有关的类或接口:Java流类图结构: 流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。 IO流的分类根据处理数据类型的不同分为:字符流和字节流根据数据流向不同分为:输转载 2014-03-01 13:21:41 · 739 阅读 · 0 评论 -
java socket编程(一)
一、网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。 而TCP层则提供面向应用的可靠(tcp)的或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要关心转载 2014-03-01 13:26:01 · 665 阅读 · 0 评论 -
java使用ScheduledExecutorService定时任务
一:简单说明ScheduleExecutorService接口中有四个重要的方法,其中scheduleAtFixedRate和scheduleWithFixedDelay在实现定时程序时比较方便。下面是该接口的原型定义java.util.concurrent.ScheduleExecutorService extendsExecutorService extendsExecutor...原创 2015-11-08 22:36:53 · 827 阅读 · 0 评论 -
HashMap和CurrentHashMap
哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表。一、什么是哈希表在讨论哈希表之前,我们先大概了解下其他数据结构在新增,查找等基础操作执行性能 数组 采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O(1); 通过给定值进行查找,需要遍历数组,...原创 2019-10-08 16:34:38 · 651 阅读 · 0 评论 -
HashMap原理
本文准备从以下几个方面去讲解HashMap:1)HashMap源码详细分析2)HashMap为什么是线程不安全的?3)HashMap和HashTable的区别4)1.7和1.8的HashMap实现区别总结HashMap源码分析一、构造函数让我们先从构造函数说起,HashMap有四个构造方法,别慌1.1 HashMap() // 1.无参构造方法、 // ...原创 2019-10-08 16:33:04 · 93 阅读 · 0 评论 -
用“逐步排除”的方法定位Java服务线上“系统性”故障
一、摘要由于硬件问题、系统资源紧缺或者程序本身的BUG,Java服务在线上不可避免地会出现一些“系统性”故障,比如:服务性能明显下降、部分(或所有)接口超时或卡死等。其中部分故障隐藏颇深,对运维和开发造成长期困扰。笔者根据自己的学习和实践,总结出一套行之有效的“逐步排除”的方法,来快速定位Java服务线上“系统性”故障。二、导言Java语言是广泛使用的语言,它具有跨平台的特性和易学易用的特点,很多...转载 2018-03-19 23:56:30 · 241 阅读 · 0 评论 -
Java简繁转换ZHConverter
直接贴代码:import com.spreada.utils.chinese.ZHConverter;public class HanConvertor{ public static void main(String[] args) { // 繁体转简体 ZHConverter converter = ZHConverter.getInstance(ZHConverter.S原创 2016-04-26 17:26:53 · 6240 阅读 · 4 评论 -
java.util.ConcurrentModificationException 解决办法
今天在项目的中有一个需求,需要在一个SortedSet类型的集合中删除满足条件的对象,这时想当然地想到直接调用SortedSet的remove(Object o)方法将指定的对象删除即可,测试代码: public class Test { public static void main(String[] args) { User user1 = new User转载 2016-03-14 10:58:38 · 428 阅读 · 0 评论 -
RunTime.getRunTime().addShutdownHook用法
今天在阅读Tomcat源码的时候,catalina这个类中使用了下边的代码,不是很了解,所以google了一下,然后测试下方法,Tomcat中的相关代码如下: Runtime.getRuntime().addShutdownHook(shutdownHook); 这个方法的含义说明: 这个方法的意思就是在jvm中增加一个关闭的钩子,当jvm关闭的时原创 2016-02-02 18:11:24 · 597 阅读 · 0 评论 -
java读取csv文件
最近需要导csv的数据到mysql数据库里,于是就写了个程序导进去。 其实csv文件就是每一行的每一格之间都用逗号隔开的,例如:一,二,三,四这样,所以程序很简单,思路就是获取文件流,然后每行用逗号分割即可Integer positionid = null; Integer type = null; Integer categoryid = null; String wo原创 2015-11-01 16:52:46 · 944 阅读 · 0 评论 -
什么是对象,为什么要面向对象,怎么才能面向对象?
一、 面向对象,这个对象到底是什么? 这个对象不是C#中的实例,C#中我们把一个类的实例也叫做对象,这种对象严格的说应该是面向对象的编程实现(OOP)中的对象,面向对象编程,也不是面向类的实例编程。对象的定义是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。也有的定义为“一切都是对象”然而面向对象也不能简单的转载 2014-03-01 23:15:11 · 1071 阅读 · 0 评论 -
java内存空间详解
Java内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识,今天我们再次深入Java核心,详细介绍一下Java在内存分配方面的知识。一般Java在内存分配时会涉及到以下区域:◆寄存器:我们在程序中无法控制◆栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中◆堆:存放用new产生的数据◆静态域:存转载 2014-03-01 13:23:43 · 645 阅读 · 0 评论 -
给程序员的10道Java泛型面试题
Java泛型面试题 1. Java中的泛型是什么 ? 使用泛型的好处是什么? 这是在各种Java泛型面试中,一开场你就会被问到的问题中的一个,主要集中在初级和中级面试中。那些拥有Java1.4或更早版本的开发背景的人都知道,在集合中存储对象并在使用前进行类型转换是多么的不方便。泛型防止了那种情况的发生。它提供了编译期的类型安全,确保你只能把正确类型的对象放入集合中,避免了在运行转载 2014-03-01 13:22:32 · 1324 阅读 · 0 评论 -
用来理解 Java 编程语言的 8 个图表
很多时候,一张图比你说 1000 个字能更有效的说清楚一个问题。我们列举了 8 个关于 Java 语言的图表,或许可以让你对 Java 有着更深入的认识。 1. 字符串不变性(String Immutability) 下面的图表显示执行如下两行代码所发生的事:123String s = "abcd";转载 2014-03-01 13:19:12 · 708 阅读 · 0 评论 -
泛型与容器(4)——Queue
队列在并发编程中特别重要,它们可以安全地将对象从一个任务传输给另一个任务。 LinkedList提供了方法以支持队列的行为,并且它实现了Queue接口,通过将LinkedList上转型为Queue。示例:public class QueueDemo { // 头部不为空时移除并返回 public static void printQ(Queue queue) { wh原创 2014-02-28 09:52:24 · 1050 阅读 · 0 评论 -
泛型和容器(2)——List和迭代器
List 有两种类型的List: (1)基本的ArrayList,它长于随机访问元素,但是在List的中间插入和移除元素时较慢。 (2)LinkedList,它通过代价较低的在List中间进行的插入和删除操作,提供了优化的顺序访问。LinkedList在随机访问方面相对比较慢,但是它的特性集较ArrayList更大。 contains()方法确定某个原创 2014-02-28 09:50:29 · 625 阅读 · 0 评论 -
继承与初始化和构造器的调用
调用构造器要遵循以下顺序:1、调用基类构造器。这个步骤会不断反复递归下去,首先是构造这种层次结构的根,然后是下一层导出类,等等,直到最底层的导出类。2、按声明顺序调用成员的初始化方法。3、调用导出类构造器的主体。继承与初始化请看下例:class Insect { private int i = 9; protected int j;// protected原创 2014-02-28 09:47:49 · 721 阅读 · 0 评论 -
泛型与容器(3)——Set和Map
Set Set不保存重复的元素。Set最常被使用的是测试归属性,你可以很容易地询问某个对象是否在某个Set中,因此,查找就成为了Set中最重要的操作,通常会选择实现HashSet,它专门对快速查找进行了优化。下面是使用存放Integer对象的HashSet的示例:public class SetOfInteger { public static void main(Stri原创 2014-02-28 09:51:41 · 589 阅读 · 0 评论 -
泛型和容器(1)——Collection接口和容器的打印
java实用类库提供了一套相当完整的容器类,其中基本的类型有List、Set、Queue、和Map,这些对象类型也称为集合类。 基本概念 java容器类库的用途是“保存对象”,并将其划分为两个不同的概念: (1)Collection。一个独立元素的序列,这些元素都服从一条或多条规则。List必须按照插入的顺序保存元素,而Set不能有重复元素。Queue按照排队原创 2014-02-28 09:49:39 · 1187 阅读 · 0 评论 -
泛型与容器(5)——总结
Java提供了大量持有对象的方式: (1)数组将数字与对象联系起来 (2)Collection保存单一的元素,而Map保存相关联的键值对 (3)List也建立数字索引与对象的关联,List能够自动扩充容量 (4)如果要进行大量的随机访问,就使用ArrayList;如果要经常从表中间出入或删除元素,则应该使用LinkedList (5)各种Queue原创 2014-03-01 10:51:32 · 815 阅读 · 0 评论 -
JAVA反射机制
Reflection是Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说"自审",并能直接操作程序的内部属性。例如,使用它能获得 Java 类中各成员的名称并显示出来。 Java 的这一能力在实际应用中也许用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。例如,Pascal、C 或者 C++ 中就没有办法在程序中获得函数定义相关的信息。Jav转载 2014-03-01 13:24:57 · 563 阅读 · 0 评论 -
equals()方法和==的比较
equals 方法是 java.lang.Object 类的方法。 有两种用法说明:(1)对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。 “==”比较两个变量本身的值,即两个对象在内存中的首地址。 “equals()”比较字符串中所包含的内容是否相同。 比如:String转载 2014-03-01 10:55:06 · 613 阅读 · 0 评论 -
类加载器的工作原理
Java类加载器的作用就是在运行时加载类。Java类加载器基于三个机制:委托、可见性和单一性。委托机制是指将加载一个类的请求交给父类加载器,如果这个父类加载器不能够找到或者加载这个类,那么再加载它。可见性的原理是子类的加载器可以看见所有的父类加载器加载的类,而父类加载器看不到子类加载器加载的类。单一性原理是指仅加载一个类一次,这是由委托机制确保子类加载器不会再次加载父类加载器加载过的类。正确理解类转载 2014-03-01 23:08:43 · 819 阅读 · 0 评论 -
JDBC为什么要使用PreparedStatement而不是Statement
PreparedStatement是用来执行SQL查询语句的API之一,Java提供了 Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程。同时PreparedStatement还转载 2014-03-01 23:06:03 · 882 阅读 · 0 评论 -
HashCode和equal方法的区别和联系
HashCode 和 equal方法重载1、 为什么要重载equal方法? 答案:因为Object的equal方法默认是两个对象的引用的比较,意思就是指向同一内存,地址则相等,否则不相等;如果你现在需要利用对象里面的值来判断是否相等,则重载equal方法。2、 为什么重载hashCode方法? 答案:一般的地方不需要重载hashCode,只有当类需要放在HashTa原创 2014-03-01 23:04:30 · 844 阅读 · 0 评论 -
Java面试题
问:Java的数据结构你用过哪些?Map与Set的本质区别是什么? 答:Java常见的数据结构有Collection和Map,其中Collection接口下包括List和Set接口,其下又有多个实现类如List下有ArrayList、LinkedList和Vector等实现类,Set下有HashSet、LinkedSet等实现类和SortedSet接口,HashSet下有Link转载 2014-03-01 23:03:17 · 824 阅读 · 0 评论 -
Java垃圾回收机制
1. 垃圾回收的意义 在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾回收意味着程序不再需要的对象是"无用信息",这些信息将被丢弃。当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用。事实上,除了释放转载 2014-03-01 23:10:16 · 639 阅读 · 0 评论 -
LinkedList和ArrayList的区别
LinkedeList和ArrayList都实现了List接口,但是它们的工作原理却不一样。它们之间最主要的区别在于ArrayList是可改变大小的数组,而LinkedList是双向链接串列(doubly LinkedList)。ArrayList更受欢迎,很多场景下ArrayList比LinkedList更为适用。这篇文章中我们将会看看LinkedeList和ArrayList的不同,而且我们试转载 2014-03-01 22:59:49 · 581 阅读 · 0 评论 -
Java程序员的笔试题10道
1、HashMap和Hashtable的区别。 都属于Map接口的类,实现了将惟一键映射到特定的值上。HashMap 类没有分类或者排序。它允许一个null 键和多个null 值。Hashtable 类似于HashMap,但是不允许null 键和null 值。它也比HashMap 慢,因为它是同步的,是线程安全的。 2、sleep() 和wait() 有什么区别? s转载 2014-03-01 13:20:00 · 718 阅读 · 0 评论 -
Java的Exception和Error面试题10问10答
在Java核心知识的面试中,你总能碰到关于 处理Exception和Error的面试题。Exception处理是Java应用开发中一个非常重要的方面,也是编写强健而稳定的Java程序的关键,这自然使它成为面试题中的常客。关于Java中Error和Exception的面试题目多是关于Exception和Error的概念,如何处理Exception,以及 处理Exception时需要遵守的最佳实践等等转载 2014-03-01 13:18:20 · 869 阅读 · 0 评论