
java基础知识储备
jim_cainiaoxiaolang
我热爱大数据开发,希望大家多交流
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JVM GC垃圾回收算法
一、对象存活判断判断对象是否存活一般有两种方式:1.引用计数:每个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回收。此方法简单,无法解决对象相互循环引用的问题。2.可达性分析(Reachability Analysis):从GC Roots开始向下搜索,搜索所走过的路径称为引用链。当一个对象到GC Roots没有任何引用链相连时,则证明此对象是转载 2017-06-14 16:06:14 · 363 阅读 · 0 评论 -
Java NIO系列4:通道和选择器
前言今天加班回来,终于有时间继续更新NIO的文章了。在前一篇文章我们讲解了缓冲区的知识,并通过代码演示了如何使用缓冲区的API完成一些操作。这里要讲的通道于缓冲区关系密切,简单来说,缓冲区是填充数据的载体,而通道则可以理解为传输数据的载体。回忆在TCP/IP中建立握手的过程,发送端有一个发送缓冲区而接受端有一个接收缓冲区,进程从缓冲区中取数据,之后缓冲区又可以被填满,而传输数据的网络则可以理解转载 2017-04-24 10:29:17 · 272 阅读 · 0 评论 -
Java NIO系列3:缓冲区
前言一直想把NIO系列的文章更新下去,只不过发现在入职支付宝后工作实在是忙,所以一直拖到现在。直接从一个学生过狗成为一名加班狗,好吧,这就是互联网公司的现状吧,但是每天都是充实的,而且发现其他的员工也基本非常乐意加班,难道这就是阿里的文化熏陶?!废话不多说,还是进入今天的正题,在前面的文章中,我们已经对Java的NIO有了一个粗浅的认识——主要之为了支持非阻塞I/O的操作,之前的BIO则是转载 2017-04-24 10:28:22 · 331 阅读 · 0 评论 -
Java NIO系列2:NIO概述
基于NIO的IO与之前的BIO有所不同,NIO的核心部分主要由三个类组成:Channel、Selector和Buffer。三者的之间的关系可以这样理解:现在假设有两个进程需要通信,进行A首先将数据传到进程A所在的缓冲区(位于操作系统用户空间的缓冲区),然后缓冲区将数据释放到通道中,数据流经通道,之后将通道的数据排出到进程B所在的缓冲区,进程B的程序代码就可以对进程B所在的缓冲区的数据进行一系列转载 2017-04-24 10:27:38 · 241 阅读 · 0 评论 -
Java NIO系列1:从操作系统的角度剖析I/O
认识IO的本质一、IO对性能的影响首先来理解下IO对程序性能的影响:从上面的表中可以得出的结论是:处理时间与IO时间对吞吐率的影响:把单位处理时间减半,仅能提高吞吐率2.2%。而仅仅缩短I/O延迟10%,就可使吞吐率增加9.7%;把I/O时间减半,吞吐率几乎翻番。二、理解BIO的局限性BIO,也称为阻塞IO,是在jdk1.4之前使用的IO模型,BIO的局限可以从下面的叙述中转载 2017-04-24 10:26:35 · 253 阅读 · 0 评论 -
关于order by 在子查询中能否使用
今天在做项目中用到了关联子查询,由于自己不是太懂数据库的代码,于是去网上找了几个视频看了看。在观看的过程中视频主讲者说order by 不能在子查询中使用,但是我的数据库代码的子查询却正好使用了order by,做到这感觉有点懵逼,于是自己就把order by语句删了,运行后发现查询出来的结果和需要的不一样了。然后就在网上查了查,原来在oracle 8i版本以后oracle就支持在子查询中使用ord原创 2017-05-12 16:48:11 · 1183 阅读 · 0 评论 -
java集合系列之一—ArrayList
ArrayList也叫数组列表,底层使用的数组实现的,严格来说是动态数组。为了简化,我将从以下几个方面对ArrayList进行分析常用操作的源码分析 使用场景与小结ArrayList工作原理ArrayList工作原理其实很简单,底层是动态数组,每次创建一个ArrayList实例时会分配一个初始容量(如果指定了初始容量的话),以add方法为例,如果没有指定初始容量,当执行add方法,转载 2017-04-06 15:49:19 · 304 阅读 · 0 评论 -
Java集合系列之二:LinkedList
前言 LinkedList底层使用的双端链表,即每个节点既包含指向其后继的引用也包括指向其前驱的引用,LinkedList实现了List接口,继承了AbstractSequentialList类,在频繁进行插入以及删除的情况下效率较高。 LinkedList使用较多的是add、get和remove,源码的分析也将对这三个方法进行分析。 1.add方法public boolean add(E e转载 2017-04-06 16:55:33 · 282 阅读 · 0 评论 -
深入Java集合系列之六:CopyOnWriteArrayList
CopyOnWriteArrayList简介CopyOnWriteArrayList容器是Collections.synchronizedList(List list)的替代方案,CopyOnWriteArrayList在某些情况下具有更好的性能,考虑读远大于写的场景,如果把所有的读操作进行加锁,因为只有一个读线程能够获得锁,所以其他的读线程都必须等待,大大影响性能。CopyOnWriteArray转载 2017-04-15 09:34:23 · 250 阅读 · 0 评论 -
深入Java集合系列之五:PriorityQueue
前言今天继续来分析一下PriorityQueue的源码实现,实际上在Java集合框架中,还有ArrayDeque(一种双端队列),这里就来分析一下PriorityQueue的源码。PriorityQueue也叫优先队列,所谓优先队列指的就是每次从优先队列中取出来的元素要么是最大值(最大堆),要么是最小值(最小堆)。我们知道,队列是一种先进先出的数据结构,每次从队头出队(移走一个元素),从队尾插入一个转载 2017-04-12 09:56:50 · 271 阅读 · 0 评论 -
深入Java集合系列之四:ConcurrentHashMap
术语定义 术语 英文 解释 哈希算法 hash algorithm 是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。 哈希表 hash table 根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表中的存储位置,这种表称为哈希表或散列,所得存储位置称为哈希地址或散列地址。转载 2017-04-12 08:51:42 · 244 阅读 · 0 评论 -
IoC模式简单学习
1.依赖依赖就是有联系,有地方使用到它就是有依赖它,一个系统不可能完全避免依赖。如果你的一个类或者模块在项目中没有用到它,恭喜你,可以从项目中剔除它或者排除它了,因为没有一个地方会依赖它。下面看一个简单的示例: /// /// 用户播放媒体文件 /// public class OperationMain { public原创 2017-05-09 16:58:28 · 158 阅读 · 0 评论 -
IoC模式简单学习
1.依赖依赖就是有联系,有地方使用到它就是有依赖它,一个系统不可能完全避免依赖。如果你的一个类或者模块在项目中没有用到它,恭喜你,可以从项目中剔除它或者排除它了,因为没有一个地方会依赖它。下面看一个简单的示例:复制代码/// <summary>/// 用户播放媒体文件/// </summary>public class OperationMain{ public void PlayMe转载 2017-05-09 16:59:38 · 264 阅读 · 0 评论 -
浅谈Java web 中request的setAttribute()用法
一下是来自社区问答的一些回答,我整合了一下形成文章在两个JSP代码片中有这样两端程序:JSP1代码 [java] view plain copy 在CODE上查看代码片派生到我的代码片String [] test=new String[2]; test[0]="1"; test[1]="2"; request.setAttribute("test",test) ; respons转载 2017-05-19 09:37:43 · 1267 阅读 · 0 评论 -
JAVA中的数据存储(堆及堆栈)
转自:http://www.iteye.com/topic/6345301.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(对象可能在常量池里)(字符串常量对象存放在常量池中。)3. 堆:存放所有new出来的对象。4. 静态域:存放静态成员(转载 2017-06-14 15:52:42 · 355 阅读 · 0 评论 -
java中queue的使用
Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Queue接 口。Queue接口窄化了对LinkedList的方法的访问权限(即在方法中的参数类型如果是Queue时,就完全只能访问Queue接口所定义的方法 了,而不能直接访问 LinkedList的非Queue的方法),以使得只有恰当的方法才可以使用。BlockingQueue 继承了Q转载 2017-06-13 12:29:13 · 252 阅读 · 0 评论 -
String、StringBuffer与StringBuilder之间区别
关于String,StringBuffer,StringBuilder的东西,现在整理一下。关于这三个类在字符串处理中的位置不言而喻,那么他们到底有什么优缺点,到底什么时候该用谁呢?下面我们从以下几点说明一下 1.三者在执行速度方面的比较:StringBuilder > StringBuffer > String 2.String 的原因 String:字符串常原创 2017-06-10 18:51:26 · 165 阅读 · 0 评论 -
java synchronized详解
记下来,很重要。Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 二、然而,当一个线程访问object的一个synchronized(t原创 2017-06-02 07:19:05 · 252 阅读 · 0 评论 -
数据库事务隔离级别
事务隔离(isolation)定义了数据库系统中一个操作产生的影响什么时候以哪种方式可以对其他并发操作可见。隔离是事务ACID (原子性、一致性性、隔离性、持久性)四大属性中的一个重要属性。目录 1 并发控制(Concurrency control)2 隔离级别(Isolation levels)2.1 可序列化(Serializable)2.2 可重转载 2017-06-01 16:05:21 · 245 阅读 · 0 评论 -
数据库 4 种隔离级别
int java.sql.Connection.TRANSACTION_SERIALIZABLE = 8 [0x8](隔离性最强)dirty reads, non-repeatable reads and phantom reads are prevented. This level includes the prohibitions in TRANSACTION_REPEATAB原创 2017-06-01 16:03:02 · 232 阅读 · 0 评论 -
线程的五大状态
线程从创建、运行到结束总是处于下面五个状态之一:新建状态、就绪状态、运行状态、阻塞状态及死亡状态。 1.新建状态(New): 当用new操作符创建一个线程时, 例如new Thread(r),线程还没有开始运行,此时线程处在新建状态。 当一个线程处于新生状态时,程序还没有开始运行线程中的代码 2.就绪状态(Runnable)原创 2017-06-01 14:18:40 · 239 阅读 · 0 评论 -
java常用正则表达式
java常用正则表达式1。^\d+$ //匹配非负整数(正整数 + 0) 2。^[0-9]*[1-9][0-9]*$ //匹配正整数 3。^((-\d+) ?(0+))$ //匹配非正整数(负整数 + 0) 4。^-[0-9]*[1-9][0-9]*$ //匹配负整数 5。^-?\d+$ //匹配整数 6。^\d+(\.\d+)?$ //匹配非负浮点数(正浮原创 2017-06-01 14:16:12 · 230 阅读 · 0 评论 -
海量数据存储管理
如何处理海量数据在实际的工作环境下,许多人会遇到海量数据这个复杂而艰巨的问题,它的主要难点有以下几个方面:一、数据量过大,数据中什么情况都可能存在。如果说有10条数据,那么大不了每条去逐一检查,人为处理,如果有上百条数据,也可以考虑,如果数据上到千万级别,甚至过亿,那不是手工能解决的了,必须通过工具或者程序进行处理,尤其海量的数据中,什么情况都可能存在,例如,数据中某处格式出了转载 2017-06-05 18:59:32 · 731 阅读 · 0 评论 -
深入Java集合系列之三:HashMap
前言 无意中发现有很多对Map尤其是HashMap的线程安全性的话题讨论,在我的理解中,对HashMap的理解中也就知道它是线程不安全的,以及HashMap的底层算法采用了链地址法来解决哈希冲突的知识,但是对其线程安全性的认知有限,故写这篇博客的目的就是让和我对这块内容不熟悉的小伙伴有一个对HashMap更深的认知,为了让你更好的查看你感兴趣的内容,你也可以直接点击右边的文章目录进行阅读。哈希表转载 2017-04-10 19:08:57 · 255 阅读 · 0 评论 -
java基础知识(7)—一起加强加强java基础吧
71、 java 中有几种类型的流?JDK 为每种类型的流提供了一些抽象类以供继承, 请说出他们分别是哪些类? 请说出他们分别是哪些类?字节流,字符流。字节流继承于 InputStream OutputStream,字符流继承于InputStreamReaderOutputStreamWriter。在 java.io 包中还有许多其他的流,主要是为了提高性能和使用方便72.字节流原创 2017-02-27 13:43:43 · 220 阅读 · 0 评论 -
java程序员面试笔试题(一)
1.九种基本数据类型大小,以及它们的封装类boolean-Booleanchar 16bitCharacterbyte8bit(1个字节)Byteshort16bitShortint32bitIntegerlong64bitLongfloat32bitFl原创 2016-09-22 10:29:04 · 600 阅读 · 0 评论 -
java程序员面试笔试题(四)
1.java面向对象的三个特征及含义2.override和Overload的含义和区别3.interface和abstract类的区别4.staticclass与nonstaticclass的区别5.java的多态实现原理原创 2016-10-10 22:20:17 · 456 阅读 · 0 评论 -
java程序员面试笔试题(三)
1.HashMap与ConcurrentHashMap的区别,HashMap的底层源码2.TreeMap,HashMap,LinkedHashMap的区别3.Collection包结构与Collections区别4.try catch finally,try里面有return,finally还执行吗?5.Exception与Error包结构,OOM遇原创 2016-10-08 20:20:38 · 756 阅读 · 0 评论 -
java中charAt()方法的使用
charAt(int index)方法是一个能够用来检索特定索引下的字符的String实例的方法.charAt()方法返回指定索引位置的char值。索引范围为0~length()-1.如: str.charAt(0)检索str中的第一个字符,str.charAt(str.length()-1)检索最后一个字符.package com.xumingjie.s;public原创 2016-07-04 12:41:26 · 79243 阅读 · 1 评论 -
java关键字final,finally,finalize
写代码: 1,明确需求。我要做什么? 2,分析思路。我要怎么做?1,2,3。 3,确定步骤。每一个思路部分用到哪些语句,方法,和对象。 4,代码实现。用具体的java语言代码把思路体现出来。 学习新技术的四点: 1,该技术是什么?原创 2016-03-30 19:52:06 · 402 阅读 · 0 评论 -
java中string.trim()函数的使用
trim():去掉字符串首尾的空格。public static void main(String arg[]){ String a=" hello world "; String b="hello world"; System.out.println(b.equals(a)); a=a.trim()转载 2016-07-04 12:25:51 · 369 阅读 · 0 评论 -
java判断字符串是否为空的方法总结
以下是java 判断字符串是否为空的四种方法:方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equals(s));方法二: 比较字符串长度, 效率高, 是我知道的最好一个方法: if(s == null || s.le转载 2016-07-04 12:23:05 · 343 阅读 · 0 评论 -
Java判断字符串是否为空方法总结
转载 2016-07-04 12:21:49 · 242 阅读 · 0 评论 -
Two Sums问题
Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution.Example:Given nums = [原创 2016-07-03 13:14:48 · 471 阅读 · 0 评论 -
java程序员面试笔试题(网络部分1)
网络部分:1.OSI七层模型OSI(开放式系统互联模型)是一个开放性的通行系统互连参考模型,是一个协议规范。它把网络协议从逻辑上分了七层,每一层都有对应的物理设备。OSI七层模型是一种框架性的设计方法,设计的主要目的是为了解决异种网络互联时遇到的兼容问题,主要功能就是帮助不同类型的主机实现数据传输。最大优点是将服务,协议,接口三者明确的区分开来,通过七个层次化的结构模型使得不同的主原创 2016-10-10 11:13:50 · 541 阅读 · 0 评论 -
java程序员面试笔试题(网络部分2)
1.交换机和路由器有什么区别2.路由表的功能有哪些3.TCP和UDP的区别有哪些4.什么叫三次握手?什么叫四次断开5.什么是ARP/RARP?6.相比IPV4,IPV6的优点?7.简单描述下了解的SDN?原创 2016-11-08 15:48:55 · 484 阅读 · 0 评论 -
java程序员面试笔试题(六)
1.ThreadPool用法与优势2.Concurrent包里的其他东西:ArrayBlockingQueue,CountDownLatch等·3.wait()和sleep()区别4.foreach与for循环效率对比5.javaIO与NIO6.反射的作用与原理原创 2016-10-29 11:29:01 · 425 阅读 · 0 评论 -
java基础知识(6)—一起加强加强java基础吧
56 、介绍 Collection 框架的结构答:随意发挥题,天南海北谁便谈,只要让别觉得你知识渊博,理解透彻即可。collection:表示集合 collection->Set->HashSetcollection->List->arrayList,Vector,LinkedListSet:不允许重复的集合List:可以有重复元素的集合Map:键-值映原创 2017-02-27 12:27:02 · 188 阅读 · 0 评论 -
java基础知识(5)—一起加强加强java基础吧
44.请写出你最常见到的 你最常见到的 5 个 个 runtime exception这道题主要考你的代码量到底多大, 如果你长期写代码的, 应该经常都看到过一些系统方面的异常,你不一定真要回答出5个具体的系统异常,但你要能够说出什么是系统异常,以及几个系统异常就可以了, 当然, 这些异常完全用其英文名称来写是最好的, 如果实在写不出,那就用中文吧,有总比没有强!所谓系统异常,就是….原创 2017-02-26 19:16:00 · 195 阅读 · 0 评论 -
java基础知识(4)—一起加强加强java基础吧
33.String s = new String("xyz"); 创建了几个 String Object?二者之间有什么 二者之间有什么区别?两个或一个,”xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量”xyz”不管出现多少遍,都是缓冲区中的那一个。New String 每写一遍,就创建一个新的对象,它一句那个常量”xyz”对象的内容来创建出一个新 String 对象。如果以前就用过原创 2017-02-26 17:56:36 · 187 阅读 · 0 评论