疯狂的java笔记
文章平均质量分 89
在这个专栏中收录java基础文章,旨在复习的时候方便阅读
Bruce小鬼
**高级测试开发**
- 技术是在不断打磨中成长,
- 能力是在不断采坑中成熟,
- 技术人的路就是在采坑中寻找乐趣,在成长过程中不断成熟。
> 书山有路勤为径,学海无涯苦作舟
关注:brucelong.blog.csdn.net
展开
-
疯狂Java学习笔记(89)-----------Java习惯用法总结
疯狂Java学习笔记(89)-----------Java习惯用法总结在Java编程中,有些知识 并不能仅通过语言规范或者标准API文档就能学到的。在本文中,我会尽量收集一些最常用的习惯用法,特别是很难猜到的用法。(Joshua Bloch的《Effective Java》对这个话题给出了更详尽的论述,可以从这本书里学习更多的用法。)我把本文的所有代码都放在公共场所里。你可以根据自己的喜好去复制和...转载 2018-04-17 18:28:21 · 522 阅读 · 0 评论 -
疯狂Java学习笔记(88)-----------值得拥有的10本书
疯狂Java学习笔记(88)-----------值得拥有的10本书Java是时下最流行的编程语言之一。市面上也出现了适合初学者的大量书籍。但是对于那些在Java编程上淫浸多时的开发人员而言,这些书的内容未免显得过于简单和冗余了。那些适合初学者的书籍看着真想打瞌睡,有木有。想找高级点的Java书籍吧,又不知道哪些适合自己。别急,雪中送炭的来了:下面我将分享的书单绝对值得拥有。ps,我也尽力避免列出...转载 2018-04-18 09:01:52 · 2657 阅读 · 1 评论 -
疯狂Java学习笔记(87)-----------十篇必读的Java文章
疯狂Java学习笔记(87)-----------十篇必读的Java文章1、Brian Goetz:“管理工作:发人深省的部分”这其实不是一篇博文,而是Brian Goetz对于甲骨文公司Java的管理的一个非常有趣的讨论的记录。在 以前我们将Java语言与Scala或者Ceylon相比较的时候,对其1-2个特性一直稍微有些意见。对于为什么Java尽快变得和其他语言一样“时髦”不是一个好主意,Br...转载 2018-04-18 09:03:22 · 551 阅读 · 0 评论 -
疯狂Java学习(86)-----------使用CompletableFuture处理异步超时
疯狂Java学习(86)-----------使用CompletableFuture处理异步超时一天,我在改进多线程代码时被Future.get()卡住了。public void serve() throws InterruptedException, ExecutionException, TimeoutException { final Future<Response> res...转载 2018-04-18 09:08:29 · 4506 阅读 · 2 评论 -
疯狂Java学习笔记(85)-----------用医生的思考方式调试你的代码
疯狂Java学习笔记(85)-----------用医生的思考方式调试你的代码“现在的编程工作就像是对你需要解决处理的部分做科学研究。”——Gerald Sussman设计和维护好的软件就像是一个抵制复杂度的永无止境的奋斗过程。任何足够大小的应用程序的代码路径和组件都能迅速成长成令人眼花缭乱的组合爆炸。一点都不简单。当部署类似于Heroku和AWS的平台时,单服务器的Web应用程序成为了分布式系统...转载 2018-04-18 09:20:02 · 470 阅读 · 0 评论 -
疯狂Java学习笔记(84)----------关于 Java 对象序列化您不知道的 5 件事
疯狂Java学习笔记(84)----------关于 Java 对象序列化您不知道的 5 件事数年前,当和一个软件团队一起用 Java 语言编写一个应用程序时,我体会到比一般程序员多知道一点关于 Java 对象序列化的知识所带来的好处。关于本系列您觉得自己懂 Java 编程?事实上,大多数程序员对于 Java 平台都是浅尝则止,只学习了足以完成手头上任务的知识而已。在本 系列 中,Ted Newa...转载 2018-04-18 09:24:25 · 478 阅读 · 0 评论 -
疯狂Java学习笔记(83)----------继承详解
疯狂Java学习笔记(83)----------继承详解有一段时间没有更新博客了,感觉挺愧疚的,这两天忙着考试,实在没有办法,只能放一放了,还好自己复习的还不错,闲的没事,跟两篇博文,来能弥补一下空虚!言归正传! 什么是继承?多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。多个类可以称为子类,单独这个类称为父类、超类或者基类。子...转载 2018-04-18 09:27:49 · 472 阅读 · 0 评论 -
疯狂Java学习笔记(82)-----------阻塞队列
疯狂Java学习笔记(82)-----------阻塞队列Java并发编程:阻塞队列 在前面几篇文章中,我们讨论了同步容器(Hashtable、Vector),也讨论了并发容器(ConcurrentHashMap、CopyOnWriteArrayList),这些工具都为我们编写多线程程序提供了很大的方便。今天我们来讨论另外一类容器:阻塞队列。 在前面我们接触的队列都是非阻塞队列,比如Prior...转载 2018-04-18 09:31:50 · 449 阅读 · 0 评论 -
疯狂Java学习笔记(81)-----------并发容器之CopyOnWriteArrayList
疯狂Java学习笔记(81)-----------并发容器之CopyOnWriteArrayList 原文链接: http://ifeve.com/java-copy-on-write/ Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是...转载 2018-04-18 09:34:46 · 449 阅读 · 0 评论 -
疯狂Java学习笔记(80)-----------并发容器之ConcurrentHashMap
疯狂Java学习笔记(80)-----------并发容器之ConcurrentHashMapJava并发编程:并发容器之ConcurrentHashMap(转载) 下面这部分内容转载自: http://www.haogongju.net/art/2350374 JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能。因为同步容器将所有对容器状态的访...转载 2018-04-18 09:41:33 · 485 阅读 · 0 评论 -
疯狂Java学习笔记(79)---------- ConcurrentModificationException异常
疯狂Java学习笔记(79)---------- ConcurrentModificationException异常Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。下面我...转载 2018-04-18 09:46:40 · 464 阅读 · 0 评论 -
疯狂Java学习笔记(77)-----------注释注意事项
疯狂Java学习笔记(77)-----------注释注意事项代码注释,可以说是比代码本身更重要。这里有一些方法可以确保你写在代码中的注释是友好的:不要重复阅读者已经知道的内容能明确说明代码是做什么的注释对我们是没有帮助的。// If the color is red, turn it greenif (color.is_red()) { color.turn_green();}要注释说明...转载 2018-04-19 09:51:37 · 619 阅读 · 0 评论 -
疯狂Java学习笔记(76)------------NIO.2第二篇
疯狂Java学习笔记(76)------------NIO.2第二篇在该系列的上一篇中我演示了NIO.2的三个方法:文件拷贝、文件和目录的删除和文件移动。在这篇文章中,我将向大家展示路径相关的方法(如获取路径、检索路径信息)、文件和目录测试方法(如文件或目录的存在性测试)以及面向属性的方法。获取路径问:怎样获得一个 java.nio.file.Path 对象?答:你可以调用 java.nio.fi...转载 2018-04-19 09:51:53 · 1054 阅读 · 0 评论 -
疯狂Java学习笔记(75)-----------NIO.2第一篇
疯狂Java学习笔记(75)-----------NIO.2第一篇Java 7引入了NIO.2,NIO.2是继承自NIO框架,并增加了新的功能(例如:处理软链接和硬链接的功能)。这篇帖子包括三个部分,我将使用NIO.2的一些示例,由此向大家演示NIO.2的基本使用方法。 下一篇地址http://blog.csdn.net/u011225629/article/details/46386599文件拷...转载 2018-04-19 09:52:02 · 559 阅读 · 0 评论 -
疯狂Java学习笔记(74)------------线程池
疯狂Java学习笔记(74)------------线程池Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并...转载 2018-04-19 09:52:11 · 516 阅读 · 0 评论 -
疯狂Java学习笔记(73)-----------ThreadLocal
疯狂Java学习笔记(73)-----------ThreadLocalJava并发编程:深入剖析ThreadLocal 想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理。首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了两个应用场景。 以下是本文...转载 2018-04-19 09:52:19 · 478 阅读 · 0 评论 -
疯狂Java学习笔记(72)-----------大话程序员面试
疯狂Java学习笔记(72)-----------大话程序员面试大话程序员面试10个我最喜欢问程序员的面试问题程序员面试不完全指南10个经典的C语言面试基础算法及代码程序员的10大成功面试技巧程序员选择公司的8个标准编程开发8个值得关注的PHP安全函数简析TCP的三次握手与四次分手10分钟掌握XML、JSON及其解析高效的jQuery代码编写技巧总结编译器的工作过程和原理CPU空闲时在”忙”什么5...转载 2018-04-19 09:52:28 · 534 阅读 · 0 评论 -
疯狂Java学习笔记(71)----------volatile
疯狂Java学习笔记(71)----------volatileJava并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容...转载 2018-04-19 09:52:36 · 555 阅读 · 0 评论 -
疯狂Java学习笔记(70)-----------挚爱Java
疯狂Java学习笔记(70)-----------挚爱Java与大家分享!挚爱Java10个使用Java最广泛的现实领域写好Java代码的30条经验总结Java字符串的substring真的会引起内存泄露么?Java内存的原型及工作原理深度剖析Java 8中HashMap的性能提升Java内存的原型及工作原理深度剖析请不要说自己是Java程序员Java程序员必须掌握的8大排序算法推荐!国外程序员整...转载 2018-04-19 09:52:49 · 458 阅读 · 0 评论 -
疯狂Java学习笔记(69)---------Lock
疯狂Java学习笔记(69)---------LockJava并发编程:Lock 在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。 也许有朋友会问,既然都可以通过synchronized来实现同步访问了,那么为...转载 2018-04-19 09:52:56 · 482 阅读 · 0 评论 -
疯狂Java学习笔记(68)-----------synchronized
疯狂Java学习笔记(68)-----------synchronizedJava并发编程:synchronized Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前...转载 2018-04-19 09:53:06 · 494 阅读 · 0 评论 -
疯狂Java学习笔记(67)-----------Timer和TimerTask
疯狂Java学习笔记(67)-----------Timer和TimerTaskTimer和TimerTaskTimerTask实现了Runnable接口,待执行的任务置于run()中。Timer是一个安排TimerTask的类,两者一般一起工作。应用时首先硬创建一个TimerTask的对象,然后用一个Timer的类对象安排执行它其实就Timer来讲就是一个调度器,而TimerTask只是一个实现...转载 2018-04-20 08:56:06 · 567 阅读 · 0 评论 -
疯狂Java学习笔记(65)---------线程协作
疯狂Java学习笔记(65)---------线程协作线程间协作的两种方式:wait、notify、notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权。因为生产者如果不释放对临界资源的占用...转载 2018-04-20 08:56:25 · 458 阅读 · 0 评论 -
疯狂Java学习笔记(64)------------线程转换
疯狂Java学习笔记(64)------------线程转换线程的生命周期 由上图可以看出:线程的状态转换是线程控制的基础。线程状态总的可分为五大状态:分别是生、死、可运行、运行、等待/阻塞。各个状态细节不再赘述,具体请看http://blog.csdn.net/u011225629/article/details/46288995此篇博文此篇博文主要讲述各个状态的实例! 一、新建和就绪状态此处...转载 2018-04-20 08:56:33 · 528 阅读 · 0 评论 -
疯狂Java学习笔记(63)-----------线程进阶
疯狂Java学习笔记(63)-----------线程进阶Java线程各个阶段的状态: 那么我们开始一点点研究吧: 启动线程 一、定义线程 1、扩展java.lang.Thread类。 此类中有个run()方法,应该注意其用法:public void run()如果该线程是使用独立的 Runnable 运行对象构造的,则调用该Runnable 对象的 run 方法;否则,该方法不执行任何操作并...转载 2018-04-20 08:57:21 · 520 阅读 · 0 评论 -
疯狂Java学习笔记(62)------------线程初识
疯狂Java学习笔记(62)------------线程初识线程初识没有线程编程的程序好比一个人一只手干活,而多线程的程序就好比一个人多只手干活.进程是系统资源分配的独立单位,而线程是可调度运行的独立单位,一个进程可以拥有多个线程,线程是进程并行完成的多个任务. 进程、线程、并发执行首先我们先来认识一下进程、线程、并发执行的概念: 一般来说,当运行一个应用程序的时候,就启动了一个进程,当然有些会...转载 2018-04-20 08:57:38 · 565 阅读 · 0 评论 -
疯狂Java学习笔记(58)-----------NIO概述
疯狂Java学习笔记(58)-----------NIO概述Java NIO:NIO概述 在上一篇博文中讲述了几种IO模型,现在我们开始进入Java NIO编程主题。NIO是Java 4里面提供的新的API,目的是用来解决传统IO的问题。本文下面分别从Java NIO的几个基础概念介绍起。 以下是本文的目录大纲: 一.NIO中的几个基础概念 二.Channel 三.Buffer 四.S...转载 2018-04-20 08:58:27 · 486 阅读 · 0 评论 -
疯狂Java学习笔记(61)-----------40个Java集合面试问题和答案
疯狂Java学习笔记(61)-----------40个Java集合面试问题和答案1.Java集合框架是什么?说出一些集合框架的优点?每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久。它...转载 2018-04-20 08:58:00 · 554 阅读 · 0 评论 -
疯狂Java学习笔记(60)----------8张图理解Java
疯狂Java学习笔记(60)----------8张图理解Java1、字符串不变性下面这张图展示了这段代码做了什么12String s = "abcd";s = s.concat("ef");2、equals()方法、hashCode()方法的区别HashCode被设计用来提高性能。equals()方法与hashCode()方法的区别在于:如果两个对象相等(equal),那么他们一定有相同的哈希值...转载 2018-04-20 08:58:10 · 535 阅读 · 0 评论 -
疯狂Java学习笔记(59)-----------50道Java线程面试题
疯狂Java学习笔记(59)-----------50道Java线程面试题50道Java线程面试题 下面是Java线程相关的热门面试题,你可以用它来好好准备面试。1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线...转载 2018-04-20 08:58:16 · 675 阅读 · 0 评论 -
疯狂Java学习笔记(57)------------NIO:浅析I/O模型
疯狂Java学习笔记(57)------------NIO:浅析I/O模型 Java NIO原理图文分析及代码实现 前言: 最近在分析hadoop的RPC(Remote Procedure Call Protocol ,远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层...转载 2018-04-20 08:58:44 · 674 阅读 · 0 评论 -
疯狂Java学习笔记(56)------------对象序列化
疯狂Java学习笔记(56)------------对象序列化所谓对象序列化就是将对象的状态转换成字节流,以后可以通过这些值再生成相同状态的对象! 对象序列化是对象持久化的一种实现方法,它是将一个对象的属性和方法转化为一种序列化的格式以用于存储和传输,反序列化就是根据这些保存的信息重建对象的过程。 java对象序列化机制一般来讲有两种用途:1.需要将对象的状态保存到文件中(存储),而后能...转载 2018-04-23 08:57:27 · 545 阅读 · 0 评论 -
疯狂Java学习笔记(55)----------字节流与字符流
疯狂Java学习笔记(55)----------字节流与字符流字节流与字符流在java.io包中操作文件内容的主要有两大类:字节流、字符流,两类都分为输入和输出操作。在字节流中输出数据主要是使用OutputStream完成,输入使的是InputStream,在字符流中输出主要是使用Writer类完成,输入流主要使用Reader类完成。(这四个都是抽象类) 处理流的用法: 按照流是否直接与特定的地方...转载 2018-04-23 08:57:38 · 625 阅读 · 0 评论 -
疯狂Java学习笔记(54)----------详解Java IO(全面)
疯狂Java学习笔记(54)----------详解Java IO(全面)流的大家族 流(stream)的概念:源于UNIX中管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等。 一个流,必有源端和目的端,它们可以是计算机内存的某些区域,也可以是磁盘文件,甚至可以是Internet上的某个URL。流的方向是重要的,根据流的方向,...转载 2018-04-23 08:57:55 · 657 阅读 · 0 评论 -
疯狂Java学习笔记(53)------------Annotation(注释)第二篇
疯狂Java学习笔记(53)------------Annotation(注释)第二篇JDK的元Annotation JDK除了java.lang下提供了3个基本Annotation之外,还在java.lang.annotation包下提供了四个Meta Annotation(元Annotation),这四个都是用于修饰其它Annotation定义 (1)使用@Retention @Retent...转载 2018-04-23 08:58:05 · 623 阅读 · 0 评论 -
疯狂Java学习笔记(52)-----------Annotation(注释)第一篇
疯狂Java学习笔记(52)-----------Annotation(注释)第一篇从JDK1.5开始,Java中增加了对元数据(MetaData)的支持,也就是Annotation(注释),这种Annotation与Java程序中的单行注释和文本注释是有一定区别,也有一定联系的。其实,我们现在说的Annotation是代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。...转载 2018-04-23 08:58:15 · 591 阅读 · 0 评论 -
疯狂Java学习笔记(51)-----------面试题
疯狂Java学习笔记(51)-----------面试题自己做了一点面试题,感觉很经典,分享给大家,发现还有很多东西需要学! 一、String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的?答: 1、String是字符串常量,StringBuffer和StringBuilder都是字符串变量。后两者的字符内容可变,而前者创建后内容不可变。...转载 2018-04-23 08:58:26 · 892 阅读 · 0 评论 -
疯狂Java学习笔记(50)-----------JDBC
疯狂Java学习笔记(50)-----------JDBC1、加载合适的JDBC驱动程序Class.forName(Driver); MySQL驱动程序:com.mysql.jdbc.Driver Oracle驱动程序:oracle.jdbc.driver.OracleDriver SQLServer驱动程序: com.Microsoft.jdbc.sqlserver.SQLSer...转载 2018-04-23 08:58:41 · 720 阅读 · 0 评论 -
疯狂Java学习笔记(49)------------异常处理机制
疯狂Java学习笔记(49)------------异常处理机制Java的异常处理机制 异常指不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。Java通 过API中Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的 错误条件。当条件生成时,错...转载 2018-04-23 08:58:57 · 613 阅读 · 0 评论 -
疯狂Java学习笔记(48)------------泛型详解
疯狂Java学习笔记(48)------------泛型详解java泛型什么是泛型?泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。可以在集合框架(Collection framework)中看到泛型的动机...转载 2018-04-23 08:59:09 · 596 阅读 · 0 评论