随笔分类 -  JavaSE核心

JavaSE核心部分
摘要:Java是一门面向对象的编程语言。 面向对象以抽象为基础,有封装、继承、多态三大特性。 宇宙万物,经过抽象,均可归入相应的种类。不同种类之间,有着相对井然的分别。 Java中的类,便是基于现实世界中的类别抽象出来的。 类本身表示一类事物,是对这类事物共性的抽象与封装。类封装了一类事物的属性和方法。 阅读全文
posted @ 2018-11-22 18:07 奔跑在梦想的道路上 阅读(337) 评论(0) 推荐(0)
摘要:多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 线程池主要用来解决线程生命周期开销问题和资源不足问题。通过对多个任务重用线程,线程创建的开销就被分摊到了多个任务上了,而且由于在请求到达时线程已经存在,所以消除了线程创建所带来的延迟。这 阅读全文
posted @ 2018-05-09 13:00 奔跑在梦想的道路上 阅读(2182) 评论(0) 推荐(0)
摘要:BlockingQueue位于JDK5新增的concurrent包中,它很好地解决了多线程中,如何高效安全地“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。 阻塞队列,顾名思义,它首先它是一个队列,在数据结构中,队列是一种线性表。 我们通过一个共 阅读全文
posted @ 2018-05-09 12:30 奔跑在梦想的道路上 阅读(1272) 评论(0) 推荐(0)
摘要:Java是一门面向对象的语言,Java程序运行过程中无时无刻都有对象被创建出来。在语言层面上,创建对象(克隆、反序列化)就是一个new关键字而已,但是虚拟机层面上却不是如此。我们看一下在虚拟机层面上创建对象的步骤: (1)虚拟机遇到一条new指令,首先去检查这个指令的参数能否在常量池中定位到一个类的 阅读全文
posted @ 2018-04-27 14:56 奔跑在梦想的道路上 阅读(191) 评论(0) 推荐(0)
摘要:在阐述JVM的内存区域之前,先来看下计算机的存储单位。从小到大依次为Bit,Byte,KB,MB,GB,TB。相邻的单位相差2的10次方。 计算机运行中的存储元件主要分为寄存器(位于CPU)和内存,寄存器和内存之间通过地址总线连接。地址总线的宽度影响了物理地址的索引范围,因为总线宽度决定了处理器一次 阅读全文
posted @ 2018-04-24 20:19 奔跑在梦想的道路上 阅读(412) 评论(0) 推荐(0)
摘要:JDK 1.2的版本中就提供了java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序,ThreadLocal并不是一个Thread,而是专属于某个Thread的局部变量集。 上面提到“Threa 阅读全文
posted @ 2018-04-24 18:35 奔跑在梦想的道路上 阅读(200) 评论(0) 推荐(0)
摘要:Timer主要用于Java线程里指定时间或周期运行任务,它是线程安全的,但不提供实时性(real-time)保证。 上面提到了守护线程的概念。 Java分为两种线程:用户线程和守护线程。 所谓守护线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者,并且这种 阅读全文
posted @ 2018-04-23 21:40 奔跑在梦想的道路上 阅读(2712) 评论(0) 推荐(0)
摘要:Java中的IO操作可谓常见。在Java的IO体系中,常有些名词容易让人困惑不解。为此,先通俗地介绍下这些名词。 我们先来弄明白什么是同步,异步,阻塞,非阻塞,只有这几个概念理解清楚了,然后再组合起来理解,就相对比较容易了。 同步和异步是针对应用程序和内核的交互方式而言的。 阻塞和非阻塞是针对于进程 阅读全文
posted @ 2018-04-22 23:46 奔跑在梦想的道路上 阅读(311) 评论(0) 推荐(0)
摘要:一.相关知识 1.何为常量 第一种常量:是一个值,我们将这个值本身称为常量。比如: 例如,我们可以将数字1024称为一个int类型的常量。 第二种常量:不可变的变量,我们也称为常量。被关键字final修饰的变量,其值就不可以改变。可能它本身是个变量,但是被final修饰后,我们就可以认为它是个常量。 阅读全文
posted @ 2018-04-22 20:39 奔跑在梦想的道路上 阅读(2504) 评论(0) 推荐(0)
摘要:1.基本类型和引用类型在内存中的保存 Java中数据类型分为两大类,基本类型和对象类型。相应的,变量也有两种类型:基本类型和引用类型。 基本类型的变量保存原始值,即它代表的值就是数值本身;而引用类型的变量保存引用值,"引用值"指向内存空间的地址,代表了某个对象的引用,而不是对象本身,对象本身存放在这 阅读全文
posted @ 2018-04-22 18:45 奔跑在梦想的道路上 阅读(291) 评论(0) 推荐(0)
摘要:面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。 阅读全文
posted @ 2018-04-22 17:04 奔跑在梦想的道路上 阅读(3174) 评论(0) 推荐(0)
摘要:我在《JDK1.5引入的concurrent包》中,曾经介绍过CountDownLatch、CyclicBarrier两个类,还给出了CountDownLatch的演示案例。这里再系统总结下Java并发编程中的4个类CountDownLatch、CyclicBarrier、Semaphore、Pha 阅读全文
posted @ 2018-04-22 13:31 奔跑在梦想的道路上 阅读(5180) 评论(1) 推荐(2)
摘要:Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。 应该说,相对于Java7,Java8 新增了 阅读全文
posted @ 2018-04-21 20:02 奔跑在梦想的道路上 阅读(288) 评论(0) 推荐(0)
摘要:并发是伴随着多核处理器的诞生而产生的,为了充分利用硬件资源,诞生了多线程技术。但是多线程又存在资源竞争的问题,引发了同步和互斥,并带来线程安全的问题。于是,从jdk1.5开始,引入了concurrent包来解决这些问题。 java.util.concurrent 包是专为 Java并发编程而设计的包 阅读全文
posted @ 2018-04-21 18:45 奔跑在梦想的道路上 阅读(543) 评论(0) 推荐(0)
摘要:1,JavaScript由于安全性方面的考虑,不允许页面跨域调用其他页面的对象,那么问题来了,什么是跨域问题? 答:这是由于浏览器同源策略的限制,现在所有支持JavaScript的浏览器都使用了这个策略。那么什么是同源呢?所谓的同源是指三个方面“相同”: (1)域名相同 (2)协议相同 (3)端口相 阅读全文
posted @ 2018-04-20 19:34 奔跑在梦想的道路上 阅读(1776) 评论(0) 推荐(0)
摘要:这里主要谈下Java集合在使用中容易被忽略、又容易出现的两个“坑”,一个是集合与数组互相转换,另一个是集合遍历删除。主要通过代码演示。 一.集合与数组互相转换中的“坑” 二.集合遍历删除中的“坑” 阅读全文
posted @ 2018-04-19 16:46 奔跑在梦想的道路上 阅读(547) 评论(0) 推荐(0)
摘要:mysql锁机制分为表级锁和行级锁,此外根据分页查询,还可以扩展出页级锁。 顾名思义,表级锁可以理解为锁住整个表,可以同时读,但是不能同时写,也就是说,直接锁定整张表,在你锁定期间,其它进程无法对该表进行写操作。如果你是写锁,则其它进程则读也不允许。如: 行级锁是仅对指定的记录进行加锁,这样其它进程 阅读全文
posted @ 2018-04-17 19:46 奔跑在梦想的道路上 阅读(145) 评论(0) 推荐(0)
摘要:“万类之王”Object有11个方法,有两个protected的方法,其中一个为clone方法。Java中的克隆分为浅克隆(ShallowClone)和深克隆(DeepClone)。Object中定义的clone()方法如下: 可以看到,clone()是一个native方法,是非Java语言实现的代 阅读全文
posted @ 2018-03-24 23:21 奔跑在梦想的道路上 阅读(357) 评论(0) 推荐(0)
摘要:这两个方法均是超类Object自带的成员方法。Object类是所有Java类的祖先。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。在不明确给出超类的情况下,Java会自动把Object作为要定义类的超类。可以使用类型为Object的变量指向任意类型的对象。Object 阅读全文
posted @ 2018-03-24 22:27 奔跑在梦想的道路上 阅读(364) 评论(0) 推荐(0)
摘要:Callable和Future,一个产生结果,一个拿到结果。 Callable接口类似于Runnable,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被Future拿到,也就是说,Future可以拿到异步执行 阅读全文
posted @ 2018-03-24 21:58 奔跑在梦想的道路上 阅读(168) 评论(0) 推荐(0)