JAVA基础
文章平均质量分 80
# JAVA基础
学要无止尽
任职于达摩院自动驾驶实验室;负责自动驾驶云端计算的架构和研发;
展开
-
精练代码:一次Java函数式编程的重构之旅
基础知识重构前重构过程从小处着手重复的foreach代码lambda取代内部类简单而有益的隔离回调接口改造成函数接口新的需求抽离异常处理抽离并发处理过程式改函数式更函数式的风格模拟柯里化小结重构后ConcurrentDataHandlerFrameRefactoredExecutorUtilTaskUtilCatchUtilStreamUtil摘要:通过一次并发处理数据集的Java代码重构之旅...转载 2019-01-21 18:43:55 · 570 阅读 · 1 评论 -
CXF + Spring 开发 Webservices
WebService 是一套标准,而不是一种具体的技术。不同的平台,不同的语言,大都提供了对 WebService 的开发实现。在 JAVA 领域里,WebService 的框架有不少,常用的就有 AXIS,XFire , CXF 等 .Apache CXF 是一个开源的 Services 框架 , 它 的前身是 Apache CeltiXfire , 继承自 Celtix 和 X转载 2013-10-09 17:10:33 · 1086 阅读 · 0 评论 -
java 中 volatile 关键字 的含义
在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。synchronized 同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synchronized 和原创 2013-05-16 09:55:33 · 605 阅读 · 0 评论 -
java 数据类型
基本概念字节的单位是byte。位的单位是bit。1byte=8bit。1bit能表示多少个数字——最小0,最大1。2的1次方个。2bit能表示多少个数字——最小00,最大11。2的2次方个。3bit能表示多少个数——最小000,最大111。2的3次方个。依此类推—8bit可以表示2的8次方共256个数字。若数没有正负之分可表示0—255共256个数字转载 2013-03-19 19:08:09 · 782 阅读 · 0 评论 -
JVM内存模型及垃圾收集策略解析
垃圾收集器策略从20世纪60年代就已经流行起来了,相比于其他编程语言,Java语言是目前使用最多的依赖于垃圾收集器的语言。 JVM内存模型是Java的核心技术之一,现在很多编程语言都引入了类似Java JVM的内存模型和垃圾收集器的机制,下面我们将主要针对Java中的JVM内存模型及垃圾收集的具体策略进行综合的分析。一 JVM内存模型1.1转载 2013-03-15 20:10:45 · 605 阅读 · 0 评论 -
java位运算
位移动运算符:表示左移,左移一位表示原来的值乘2.例如:3 为int型) 1)把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011, 2)把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位, 3)在低位(右侧)的两个空位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 11原创 2013-05-07 15:23:06 · 819 阅读 · 1 评论 -
Java transient关键字
Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient。 transient是Java语言的关键字,用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,tra原创 2013-05-16 10:24:13 · 573 阅读 · 0 评论 -
Java之美[从菜鸟到高手演变]之设计模式
设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真转载 2013-04-16 15:09:08 · 621 阅读 · 0 评论 -
LinkList、ArrayList、Vector区别;及 Set
先看下拓扑: java.util(1)Collection +Collection 这个接口extends自 --java.lang.Iterable接口 +List 接口 -ArrayList 类 -LinkedList 类原创 2013-01-17 14:54:18 · 721 阅读 · 0 评论 -
JVM分代垃圾回收策略的基础概念
由于不同对象的生命周期不一样,因此在JVM的垃圾回收策略中有分代这一策略。本文介绍了分代策略的目标,如何分代,以及垃圾回收的触发因素。 为什么要分代分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。在Java程序运行的过程中,会产生大量的对象,其中有些对象转载 2013-03-15 19:54:13 · 753 阅读 · 0 评论 -
Hashmap实现原理
1.HashMap的数据结构 数组的特点是:寻址容易,插入和删除困难;而链表的特点是:寻址困难,插入和删除容易。那么我们能不能综合两者的特性,做出一种寻址容易,插入删除也容易的数据结构?答案是肯定的,这就是我们要提起的哈希表,哈希表有多种不同的实现方法,我接下来解释的是最常用的一种方法—— 拉链法,我们可以理解为“链表的数组” ,如图: 从上图我们可以发现哈希表是由数组转载 2013-03-13 21:29:37 · 641 阅读 · 0 评论 -
java 快速排序算法及原理
快速排序算法也是用的最多的一个排序算法。效率也快。如下: 快速排序算法原理: 例如:待排序的数组array的值分别是:(初始关键数据X:=49) array[1] array[2] array3] array[4] array[5] array[6] array[7]:转载 2013-03-07 14:24:28 · 1031 阅读 · 0 评论 -
深入分析Java ClassLoader原理
一、什么是ClassLoader? 大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都被封装在不同的class文件当中,所以经常要从这个class文件中要调用另外一个class文件中的方法,如果另外一个文件不存在转载 2013-03-06 11:09:01 · 597 阅读 · 0 评论 -
设计自己的Annotation Java
注解编程。通过Java的反射机制相关的API来访问annotation信息。Annotation类型使用关键字@interface而不是interface。annotation一般作为一种辅助途径,应用在软件框架或工具中,在这些工具类中根据不同的 annontation注解信息采取不同的处理过程或改变相应程序元素(类、方法及成员变量等)的行为。 例如:Junit、Struts、S转载 2013-02-21 15:29:36 · 539 阅读 · 0 评论 -
java php base64 使用差别 使用注意
在开发的时候遇到个现象。对方用php base64_encode() 对字符串进行加密。但我这边是用java解码。导致出现问题。问题如下:package com.tudou.test;import java.io.IOException; /** * java base64编码和解码的演示类 * 注:base64编码后通过url传递时,获得时"="会给替换掉, *原创 2013-02-19 15:41:40 · 14707 阅读 · 4 评论 -
深入浅出之JVM 内存编
在阅读本篇文章时,至少首先对JVM的概念、工作原理、结构组成,有一定的基础性了解,废话不多说,本文开门见山,直接以工作中比较常见的几种概念:类、类对象、实例对象、静态方法、非静态方法、静态属性、非静态属性等为出发点,直接切入JVM内存的使用及分配,通过这些原理认清Java中的静态方法和静态属性的问题,其次讲JVM的内存堆栈模型,主要描述JVM内存堆栈结构的组成,最后是JVM的内存参数设置,主要描述转载 2013-05-24 11:55:30 · 655 阅读 · 0 评论 -
JAVA 几道面试题
1.如何用一条语句把一张表的数据插入到另一张数据库表中? 2.如何用一条语句把一张表的数据插入到另一张不存在的数据库表中? 3.有如下A、B两个表,如何将A表的数据查询出来,结果如B所示? A表:姓名科目分数张三语文60李四数学65原创 2013-03-05 17:20:47 · 613 阅读 · 0 评论 -
java8流计算去重方法进阶版(优质文章)
这里一共介绍3种方式排序1、Stream提供的distinct()方法只能去除重复的对象,无法根据指定的对象属性进行去重,可以应付简单场景。2、 List<Book> unique = books.stream().collect( collectingAndThen(toCollection(() -> new TreeSet<>(...转载 2018-08-29 11:34:10 · 2298 阅读 · 2 评论 -
java 8 stream Collectors .toMap
去重复,当出现相同的key,已后来的值替换package com.cainiao.xg.lable.pojo.valueobject.v1;import java.io.Serializable;import java.util.List;import java.util.Map;import java.util.function.Function;import java....原创 2018-08-28 15:56:23 · 10279 阅读 · 0 评论 -
JUnit中按照顺序执行测试方式
很多情况下,写了一堆的test case,希望某一些test case必须在某个test case之后执行。比如,测试某一个Dao代码,希望添加的case在最前面,然后是修改或者查询,最后才是删除,以前的做法把所有的方法都集中到某一个方法去执行,一个个罗列好,比较麻烦。比较幸福的事情就是JUnit4.11之后提供了MethodSorters,可以有三种方式对test执行顺序进行指定,如下:...原创 2018-07-28 02:32:12 · 1541 阅读 · 0 评论 -
java 23种设计模式 深入理解
以下是学习过程中查询的资料,别人总结的资料,比较容易理解(站在各位巨人的肩膀上,望博主勿究)创建型抽象工厂模式 http://www.cnblogs.com/java-my-life/archive/2012/03/28/2418836.html工厂方法 http://www.cnblogs.com/java-my-life/archive/2012/03/25/2416227.html建造者模式...原创 2018-07-13 10:35:04 · 158 阅读 · 0 评论 -
Java中23种设计模式--超快速入门及举例代码
https://www.cnblogs.com/malihe/p/6891920.html在网上看了一些设计模式的文章后,感觉还是印象不太深刻,决定好好记录记录。原文地址:http://blog.csdn.net/doymm2008/article/details/13288067 注:本文代码基本都有很多没有初始化等等问题,主要是为了减少代码量,达到一眼就能了解大概情况的目的。 java的设...转载 2018-07-13 10:32:08 · 169 阅读 · 0 评论 -
Observer模式 观察者模式
Observer模式定义对象间的一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。JDK里提供的observer设计模式的实现由java.util.Observable类和 java.util.Observer接口组成。从名字上可以清楚的看出两者在Observer 设计模式中分别扮演的角色:Observer是观察者角色,Observable是被观察目标(su...转载 2018-06-13 16:30:57 · 225 阅读 · 0 评论 -
Java 4种引用 strongReference, softReference, weakReference, phantomReference
Reference 是一个抽象类,而 SoftReference,WeakReference,PhantomReference 以及 FinalReference 都是继承它的具体类。接下来我们来分别介绍和分析强引用以及 java.lang.ref 包下各种虚引用的特性及用法。StrongReference, SoftReference, WeakReference 以及 Phanto原创 2015-06-05 09:35:50 · 787 阅读 · 0 评论 -
JAVA 设计模式(三)
本章是关于设计模式的最后一讲,会讲到第三种设计模式——行为型模式,共11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。这段时间一直在写关于设计模式的东西,终于写到一半了,写博文是个很费时间的东西,因为我得为读者负责,不论是图还是代码还是表述,都希望能尽量写清楚,以便读者理解,我想不论是我还是读者,都希望看到高质量转载 2015-03-28 11:51:22 · 435 阅读 · 0 评论 -
JAVA 设计模式(二)
在阅读过程中有任何问题,请及时联系:egg。邮箱:xtfggef@gmail.com 微博:http://weibo.com/xtfggef如有转载,请说明出处:http://blog.csdn.net/zhangerqing我们接着讨论设计模式,上篇文章我讲完了5种创建型模式,这章开始,我将讲下7种结构型模式:适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、转载 2015-03-28 11:42:05 · 522 阅读 · 0 评论 -
JAVA 设计模式(1一)
设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真转载 2015-03-28 11:40:15 · 622 阅读 · 0 评论 -
JAVA 基础 关键修饰符及说明
Java中public、private、protected 访问权限的区别java平台中的public,protected,private是Java里用来定义成员的访问权限的,另外还有一种是“default”,也就是在成员前不加任何权限修饰符。如: public class A{ void method(){}; } method就属于default原创 2015-03-25 09:35:46 · 471 阅读 · 0 评论 -
异或运算及其应用
异或是一种基于二进制的位运算,用符号XOR或者 ^ 表示,其运算法则是对运算符两侧数的每一个二进制位,同值取0,异值取1。它与布尔运算的区别在于,当运算符两侧均为1时,布尔运算的结果为1,异或运算的结果为0。一、异或的性质交换律:a ^ b = b ^ a结合律:a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ cd = a ^ b ^ c 可以推转载 2015-02-11 10:38:37 · 569 阅读 · 0 评论 -
java 执行jar 包里面 main class
java -Djava.ext.dirs=lib -cp giant-storm.jar com.giant.storm.test.hbase.ItemDMLUtils依赖包放在lib下 。详细参数见下:用法: java [-options] class [args...] (执行类) 或 java [-options] -jar jarfile [a原创 2013-12-06 16:56:10 · 5202 阅读 · 0 评论 -
Java堆、栈和常量池
一、堆和栈在维基百科中的解释: 栈(英文:stack),也可直接称栈。台湾作堆叠,在计算机科学中,是一种特殊的串行形式的数据结构,它的特殊之处在于只能允许在链结串行或阵列的一端(称为堆栈顶端指标,英文为top)进行加入资料(push)和输出资料(pop)的运算。另外堆栈也可以用一维阵列或连结串行的形式来完成。堆栈的另外一个相对的操作方式称为伫列。由于堆栈数据结构只允许转载 2013-01-21 22:24:22 · 2330 阅读 · 1 评论 -
Throwable、Error、Exception、RuntimeException 区别 联系
1.Throwable 类是 Java 语言中所有错误或异常的超类。它的两个子类是Error和Exception;2.Error 是 Throwable 的子类,用于指示合理的应用程序不应该试图捕获的严重问题。大多数这样的错误都是异常条件。虽然 ThreadDeath 错误是一个“正规”的条件,但它也是 Error 的子类,因为大多数应用程序都不应该试图捕获它。在执行该方法期间,无需在原创 2013-01-21 13:34:00 · 33942 阅读 · 7 评论 -
JAVA 排序算法
import java.util.Random; /** * 排序测试类 * * 排序算法的分类如下: * 1.插入排序(直接插入排序、折半插入排序、希尔排序); * 2.交换排序(冒泡泡排序、快速排序); * 3.选择排序(直接选择排序、堆排序); * 4.归并排序; * 5.基数排序。 * * 关于排序方法的选择: * (1)若n较小(如n≤50),可采用直接插入或直转载 2013-01-22 19:08:56 · 359 阅读 · 0 评论 -
java1.5 与 1.4 相比 --新特性
java1.5发行已经很久了,而它的改动是相当大的,这里找了篇与1.4版本的对比:1. 自动装箱与拆箱 对应C#例1.1Integer i = 10;int j = i; 2. 更优化的for循环 对应就C#---foreach循环例2.1String[] names = {"BadBoy","GoodBoy","HappyGirl"原创 2013-01-17 14:52:54 · 891 阅读 · 0 评论 -
Java中的Iterator的用法
以下是摘的一篇文章 很有收获java.util包中包含了一系列重要的集合类。本文将从分析源码入手,深入研究一个集合类的内部结构,以及遍历集合的迭代模式的源码实现内幕。 下面我们先简单讨论一个根接口Collection,然后分析一个抽象类AbstractList和它的对应Iterator接口,并仔细研究迭代子模式的实现原理。 本文讨论的源代码版本是JDK 1.4.2原创 2013-01-17 14:51:48 · 621 阅读 · 0 评论 -
newInstance()方法和new关键字的区别
newInstance()实际上是把new这个方式分解为两步。1. 调用Class加载方法加载某个类-----class.forname()2. 实例化类--------newInstance()eg:A a = (A)Class.forName("pacage.A").newInstance(); //注意,包中是绝对包明 也可以写成如下形式:原创 2013-01-17 14:46:18 · 584 阅读 · 0 评论 -
Java中的instanceof关键字
instanceof是Java的一个二元操作符,和==,>, String s = "I AM an Object!"; boolean isObject = s instanceof Object; 我们声明了一个String对象引用,指向一个String对象,然后用instancof来测试它所指向的对象是否是Object类的一个实例,显然,这是真的,所以返回true,原创 2013-01-17 14:55:15 · 302 阅读 · 0 评论 -
JAVA反射机制
一、Java类反射作用:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任原创 2013-01-17 14:54:51 · 347 阅读 · 0 评论 -
Java 1.5和1.6中新特性
JDK5的新特性(与JDK1.4相比较)1 循环for (type variable : array){ body}for (type variable : arrayList){body}而1.4必须是:for (int i = 0; i for (int i = 0; i 2 泛型以ArrayList为例,包括创建一个容器对象和取原创 2013-01-17 14:53:18 · 388 阅读 · 0 评论 -
java项目打包
总体思路是先打成jar再把jar打成exe。主要看1.3和2.3里的内容就可以了。1.将项目打成jar:1.1要将项目打包成jar文件,方法很多,可以用Eclipse自带的打包工具Ant打包,也可以用Eclipse的Export生成jar。经过尝试后,我不推荐用Ant打包,因为要自己编写xml脚本语言,还要增加一些外部的jar,所以我打了好几次都没打成。1.2在这里介绍两种方法原创 2013-01-17 14:50:36 · 771 阅读 · 0 评论