
Java进阶
文章平均质量分 88
T9的第三个三角
Blog:http://outofmemory.top
简书:http://www.jianshu.com/u/46cb5df3d852
GitHub:https://github.com/dazhaoDai
展开
-
Java进阶知识 —— 快速排序算法分析
本篇文章将摘自前辈的总结白话经典算法系列之六 快速排序 快速搞定 这篇文章深入简出,很好理解,所以本文思路不再重写,只是代码部分略有修改,改为自己理解的注释版本快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想—-分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考...转载 2018-05-08 21:11:27 · 403 阅读 · 0 评论 -
Java进阶 ——— Java多线程(二)之如何开启多线程
引言第一篇文章讲到了Java多线程的概念和作用,本篇文章则介绍在Java中如何开启多线程。延伸阅读,Java多线程系列文章Java进阶 ——— Java多线程(一)之进程和线程开启方式Java开启多线程有三种方式继承Thread类实现Runnable接口java.util.concurrent.ThreadFactory 中的线程创建 继承Thread类 定义Threa...原创 2018-10-18 00:39:19 · 1336 阅读 · 0 评论 -
Java进阶 ——— Java多线程(三)之多线程同步问题
引言接上一篇,Java进阶 ——— Java多线程(二)之如何开启多线程介绍了Java多线程的开启方法,但是多线程运行的安全问题,将是本篇的重点延伸阅读,Java多线程系列文章Java进阶 ——— Java多线程(一)之进程和线程Java进阶 ——— Java多线程(二)之如何开启多线程在第一篇文章中,提到要实现多线程安全,就要实现线程同步,那么线程同步有哪些方法呢?介绍线程同步...原创 2018-10-18 23:07:51 · 1241 阅读 · 6 评论 -
Java进阶知识 —— 内部类(InnerClass)静态内部类、成员内部类、方法内部类、匿名内部类
内部类(InnerClass)----静态内部类、成员内部类、方法内部类、匿名内部类Java进阶知识系列文章:Java进阶知识 —— 算法复杂度o(1), o(n), o(logn), o(nlogn)Java进阶知识 —— 垃圾回收机制Java进阶知识 —— 快速排序算法分析Java进阶知识 —— 算法时间复杂度1.什么是内部类面向对象程序设计中,可以在一个类的内部定义另一个类...原创 2018-10-09 17:27:57 · 1051 阅读 · 0 评论 -
Java进阶 —— 面试必备 Java单链表反转
前言关于链表操作,基本面试都会考察,每次都是看了就懂,过后就忘。看了Java单链表反转文章,分析的很清晰,很好理解。单链表的结点结构:data域:存储数据元素信息的域称为数据域;next域:存储直接后继位置的域称为指针域,它是存放结点的直接后继的地址(位置)的指针域(链域)。data域+ next域:组成数据ai的存储映射,称为结点;注意:①链表通过每个结点的链域将线性表的...原创 2018-10-15 17:06:18 · 729 阅读 · 0 评论 -
Java进阶——如何查看Java字节码
前言深入学习Java语言,也免不了要去研究JVM类加载、JVM字节码相关的东西,这时就需要经常查看字节码。方法1.使用命令行在编译后,进入字节码存放的文件夹,例如:FileA\Hello.class使用命令行窗口java -c FileA\Hello.class,即可在窗口浏览字节码文件2.外接工具的方式上面的描述编译成Hello.class文件(或者找到ide中相关out文件夹中...原创 2018-10-16 18:42:19 · 2197 阅读 · 0 评论 -
Java进阶——Java 局部内部类访问局部变量为什么必须加final关键字
Java 局部内部类访问局部变量为什么必须加final关键字疑问在Java中,局部内部类如果调用了方法中的变量,那么该变量必须申明为final类型,如果不申明,则编译就会出错。这里的内部类指的是方法内部类或匿名内部类,不包含静态内部类和成员内部类这里通过一个例子类分析public class InnerClass { private int defaultAge = 5; ...原创 2018-10-16 20:33:50 · 2092 阅读 · 0 评论 -
Java进阶 ——— Java多线程(四)之多线程局部变量TreadLocal
在了解ThreadLocal之前,一定要确定一个概念:ThreadLocal不是用来解决共享对象的多线程访问问题的那么ThreadLocal在多线程的作用是什么呢?从下面几个方面来了解ThreadLocal的作用ThreadLocal可以理解为:线程局部变量, 是每一个线程所单独持有的。其他线程不能对其进行访问, 通常是类中的 private static 字段,是对该字段初始值的一个拷贝,...原创 2018-12-30 17:37:32 · 736 阅读 · 0 评论 -
Java进阶——— 线程池的原理分析
前言在了解线程池之前,其实首先出现的疑问是:为什么要使用线程池,其次是了解什么是线程池,最后是如何使用线程池,带着疑问去学习。为什么要使用前面多线程文章中,需要使用线程就开启一个新线程,简单方便,但是这样在大量线程被开启时:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么我们可不可以开启...原创 2019-01-21 10:06:12 · 380 阅读 · 0 评论 -
Java进阶 ——— Java多线程(一)之进程和线程
引言讲到线程,不可避免的提到进程。而因为线程无法脱离进程单独存在,那什么是进程?什么是进程?进程:具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的最小单位。例如手机运行的众多APP,每个可以理解为一个进程(实际上很多APP运行多个进程),每个APP直接互相独立,互不干扰。什么是线程?线程:进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小...原创 2018-10-17 20:59:19 · 617 阅读 · 0 评论 -
Java进阶知识 —— 算法复杂度o(1), o(n), o(logn), o(nlogn)
摘自 https://blog.youkuaiyun.com/Mars93/article/details/75194138在描述算法复杂度时,经常用到o(1), o(n), o(logn), o(nlogn)来表示对应算法的时间复杂度, 这里进行归纳一下它们代表的含义: 这是算法的时空复杂度的表示。不仅仅用于表示时间复杂度,也用于表示空间复杂度。O后面的括号中有一个函数,指明某个算法的...原创 2018-08-13 15:46:11 · 6188 阅读 · 0 评论 -
Java进阶知识 —— final、finally、finalize区别
final、finally、finalize区别Final Final用于修饰类、成员变量和成员方法。final修饰的类,不能被继承(String、StringBuilder、StringBuffer、Math,不可变类),其中所有的方法都不能被重写,所以不能同时用abstract和final修饰类(abstract修饰的类是抽象类,抽象类是用于被子类继承的,和final起相反的作用);F...原创 2018-05-09 18:27:41 · 325 阅读 · 0 评论 -
Java进阶知识 —— Http知识总结
HTTP概述Web浏览器、服务器和相关的Web应用程序都是通过HTTP相互通信。HTTP是现代全球因特网中使用的公共语言。HTTP-因特网的多媒体信使每天都有数亿JPEG图片、HTML页面、文本文件、MPEG电影、WAV音频文件、java小程序和其他资源在因特网游弋。HTTP可以从全世界的Web服务器上将这些信息迅速、便捷、可靠的传输到Web浏览器上。 HTTP使用的是可靠的...原创 2018-05-03 21:05:45 · 698 阅读 · 0 评论 -
Java进阶知识 —— Java设计模式之代理模式
代理模式是常用的Java设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。按照代理类的创建时期,代理类可分为两种。静态代理类:由程序员创...原创 2018-05-03 12:19:35 · 459 阅读 · 0 评论 -
Java进阶知识 —— Java8 Stream语法
前言:讲Stream之前,先来用个小需求带入本文。毕竟代码看的最清楚。正文:项目某个页面有个需求,将关键词和集合比对,判断是否存在关键词,这种需求想必是再普通不过,最简单的就是循环迭代了。上来就干,普通for循环,判断:for (int i = 0; i < airPortModels1.size(); i++) { if (airPo...原创 2017-06-25 21:57:33 · 528 阅读 · 0 评论 -
Java进阶知识 —— 算法时间复杂度
算法时间复杂度前言通常,对于一个给定的算法,我们要做 两项分析。第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式、数学归纳法等。而在证明算法是正确的基础上,第二部就是分析算法的时间复杂度。算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能很好反映出算法的优劣与否。因此,作为程序员,掌握基本的算法时间复杂度分析方法是很有...原创 2018-05-04 10:21:34 · 3274 阅读 · 0 评论 -
Java进阶知识 —— TCP四次挥手(图解)-为何要四次挥手
当客户端和服务器通过三次握手建立了TCP连接以后,当数据传送完毕,肯定是要断开TCP连接的啊。那对于TCP的断开连接,这里就有了神秘的“四次挥手”。第一次挥手:主机1(可以使客户端,也可以是服务器端),设置Sequence Number和Acknowledgment Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了;...原创 2018-05-04 11:46:43 · 524 阅读 · 0 评论 -
Java进阶知识 —— 使用BigDecimal类处理高精度计算
日常开发中,普通数据处理,精度不超过10位有效数字。但是遇到一些对精度要求极高的情况下,就需要对精度进行更精细处理。需要用到BigDecimalJava在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。一般情况下,对于那些不需要准确计算...转载 2018-05-11 11:52:53 · 384 阅读 · 0 评论 -
Java进阶知识 —— 垃圾回收机制
1. 垃圾回收机制垃圾回收的意义 当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾,JVM的一个系统级线程会自动释放该内存块。垃圾回收意味着程序不再需要的对象是”无用信息”,这些信息将被丢弃。当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用。事实上,除了释放没用的对象,垃圾回收也可以清除内存记录碎片。垃圾收集的算法分析 1.为什么会有年轻代...原创 2018-07-24 12:03:37 · 619 阅读 · 0 评论