Java基础
文章平均质量分 71
Lawfree
这个作者很懒,什么都没留下…
展开
-
[Java基础]并发使用场景、线程数量、线程池介绍
为什么要使用并发编程?并发编程适用于什么场景?创建多少个线程合适?我们都知道并发编程能够提高CPU利用率,提高程序执行效率,简言之,很“快”。但是:并发编程在所有场景下都是快的吗?知道它很快,何为快?怎样度量?看似再问第一句,实则在问第二句。因此并发线程适用场景就是:通过设置正确个数的线程来最⼤化程序的运⾏速度,就是说能够充分利用CPU和I/O的利用率。下面具体谈谈:这里提出两个场景:CPU密集型程序I/O密集型程序CPU 密集型程序⼀个完整请求,I/O操作可以在很短时间内完成原创 2021-07-22 20:14:56 · 783 阅读 · 1 评论 -
[Java面试基础]几道常见的多线程编程题
1.线程安全的单例模式场景引入:什么是线程安全?如何判断一个方法是线程安全的?方法只要加了锁就是线程安全的吗?当多个线程访问某个方法时,不管你通过怎样的调用方式或者说这些线程如何交替的执行,我们在主程序中不需要去做任何的同步,这个类的结果行为都是我们设想的正确行为,那么我们就可以说这个类是线程安全的。并不是只要加了锁就是安全的,只有满足了那把锁的对象是锁同一个对象才是线程安全的。比如synchronized关键字中:synchronized修饰非static方法等同于synchronized原创 2021-07-15 22:24:35 · 903 阅读 · 1 评论 -
[Java面试基础]注解、反射详解
注解和运用注解编程内容:注解的作用注解的本质反射注解信息元注解属性的数据类型及特别的属性:value数组反射机制概述类的加载与ClassLoader理解Class类并获取Class实例注解的作用格式public @interface 注解名称{ 属性列表;}格式有点奇怪,我们稍后再研究。分类大致分为三类:自定义注解、JDK内置注解、还有第三方框架提供的注解。自定义注解就是我们自己写的注解。JDK内置注解,比如@Override检原创 2021-07-07 15:22:28 · 432 阅读 · 1 评论 -
[Java面试基础]Java泛型介绍
1.1泛型概述Java泛型(generics)是JDK5中引入的一个特性,泛型提供了编译时安全监测机制,该机制允许程序员在编译时监测非法的类型。使用泛型机制编写的程序代码要比那些杂乱地使用Object变量,然后再进行强制类型转换的代码具有更好的安全性和可读性。泛型对于集合类尤其有用。泛型的本质是参数化类型,也就是所操作的数据类型被指定为一个参数。1.2 泛型的好处在不使用泛型的情况下,我们可以使用Object类型来实现任意的参数类型,但是在使用时需要我们强制类型转换。这就要求程序员明确知道实际类型,原创 2021-07-05 15:13:27 · 197 阅读 · 0 评论 -
[JVM]专题:类加载过程
[JVM]专题:类加载过程类的加载过程简介类的加载过程一般分为三个大阶段,加载阶段、链接阶段、初始化阶段。加载阶段:主要负责查找并加载类的二进制数据文件,其实就是class文件链接阶段:链接阶段所做的工作多,细分为如下三个阶段。验证:主要是确保类文件的正确性,比如class的版本,class文件的魔数是否正确准备:为类的静态变量分配内存,并且为其初始化默认值解析:把类的符号引用转换为直接引用初始化阶段:为类的静态变量赋予正确的初始值(代码编写阶段给定的值)当一个JVM在我们通原创 2020-09-22 23:45:42 · 559 阅读 · 0 评论 -
[JVM]超详细JVM系列文(1):整体结构+类加载子系统+运行时数据区—程序计数器、栈(多图长文)
JVM整体结构与概述#多图长文预警#介绍了JVM中其中各个模块的结构与功能(主要包括类装载子系统、运行是数据区中的程序计数器与栈)。按照Java代码执行的流程,从类装载器子系统出发,剖析其各个子模块的结构与功能。结合Java语言中的相关设计思路(变量的初始化、存储;对象的生命周期、方法的调用)、OOP(继承、多态),在JVM进行追根溯源,解释其本质。后续博文将介绍运行时数据区中堆、方法区,垃圾回收与调优等。首先是JVM的结构图。更加详细版:Java代码执行流程JVM的架构模型Java编原创 2020-08-01 09:34:14 · 1861 阅读 · 0 评论 -
[Java系列]搞懂HashMap,看这篇足够!!(万字长文/详细深入)
本文主要是从jdk源码入手, 结合常用操作, 图文并茂, 探讨Java中HashMap的一些设计与实现原理.1.HashMap集合简介(初探)HashMap基于哈希表的Map接口实现,是以key-value存储形式存,及主要用来存放键值对. HashMap的实现不是同步的,这意味着它不是线程安全的. 它的key,value都可以为null.此外,HashMap中的映射不是有序的.jdk1....原创 2020-04-12 14:23:02 · 1721 阅读 · 7 评论 -
[Java高并发系列(6)]Java中线程池(2)--Callable和Future
在上一篇博文中 , 我们了解了线程池相关概念, ExecutorService 与常用的创建线程池的方法一些参数概念, 大概了解了线程池的工作流程. 介绍了三种任务队列, 四种拒绝方式, 五种线程池模型. 本文将继续介绍 ExecutorService中相关的类和接口的概念 , 具体来说 , 是Callable 和 Future相关的使用.1 Callable1.1 Runnable关于 ...原创 2019-12-03 09:15:08 · 2887 阅读 · 0 评论 -
[Java高并发系列(5)][详细]Java中线程池(1)--基本概念介绍
1 Java中线程池概述1.1 什么是线程池?在一个应用当中, 我们往往需要多次使用线程, 这意味着我们需要多次创建和销毁线程.那么为什么不提供一个机制或概念来管理这些线程呢? 该创建的时候创建, 能复用的时候复用, 何乐而不为呢? Java 中开辟了一种管理线程的概念 , 即为线程池.1.2 为什么要使用线程池?那么究竟线程池有啥好处? 为啥要用它呢?线程创建所需时间为T1,线程执...原创 2019-12-02 13:34:15 · 2315 阅读 · 0 评论 -
[Java高并发系列(4)]Java中ReentrantLock介绍 + 一道面试题
[Java高并发系列(4)]Java 中 ReentrantLock 介绍 + 一道面试题1 ReentrantLock 简介jdk中独占锁的实现除了使用关键字synchronized外,还可以使用ReentrantLock. 虽然在性能上ReentrantLock和synchronized没有什么区别,但ReentrantLock相比synchronized而言功能更加丰富, 使用起来更为...原创 2019-11-26 09:43:05 · 2912 阅读 · 0 评论 -
[Java高并发系列(3)]Java中CountDownLatch介绍+一道面试题
[Java高并发系列(3)]Java 中 CountDownLatch介绍 + 一道面试题1 CountDownLatch介绍1.1 CounttDownLatch有什么用允许一个或多个线程等待直到在其他线程中执行的一组操作完成的同步辅助(类)CountDownLatch 用给定的计数初始化。await( ) 方法阻塞,直到由于 countDown( ) 方法的而导致当前计数达到零,之后...原创 2019-11-25 14:42:36 · 2485 阅读 · 0 评论 -
[Java高并发系列(2)]Java中volatile关键字详解 + volatile与sychronized区别
[Java高并发系列(2)]Java 中 volatile 关键字详解 + volatile 与 sychronized 区别1 几个概念1.1 可见性通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情。**可见性,是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的。**也就是一个线程修改的结果。另一个线程马上就能看到。比如:用vo...原创 2019-11-21 09:16:06 · 3073 阅读 · 0 评论 -
Java中File的入门使用详解
Java中File的入门使用详解在这篇文章中,对概念的理解可能比较少,主要介绍怎么用. IO流操作中大部分都是对文件的操作,所以java就提供了File类供我们来操作文件 .下面让我们具体看看怎么用吧~ps:一个代码块来源于一个单独的.class文件原创 2017-12-28 11:12:30 · 360 阅读 · 0 评论 -
Java中I/O使用入门详解(1)
本文介绍了 FileInputStream,FileOutputStream等常用输入输出流的使用方式,(来自于以前的学习笔记,现整理出来和大家分享).通俗易懂,老少皆宜O(∩_∩)O~原创 2017-12-28 11:24:08 · 452 阅读 · 0 评论 -
关于jdbc批处理&事务概念与性质
JDBC用法快速回顾批处理用法 事务相关概念原创 2017-12-30 18:44:50 · 1937 阅读 · 0 评论 -
Java中数据库连接池简单介绍
提纲: 1.数据库连接池介绍以及如何自定义数据库连接池 2.介绍两种连接库连接池DBCP,c3p0(文后附jar包) 3.tomcat管理连接池.DataSource(数据源/数据库连接池 )简单介绍连接池:创建多个Connection对象,放入到连接池(其实就是一个容器)中 当使用时,从连接池中取出一个连接对象,使用完成原创 2017-12-30 20:35:47 · 2474 阅读 · 0 评论 -
Java中集合类源码分析(1)-----Iterable和Iterator源码分析
Java集合主要可以划分为4个部分:List、Set、Map映射、工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections)从最熟悉的Collection开始,先找其父类(接口),然后挨个问候源码哈哈哈~本文是系列文的第一篇,主要介绍Iterable和Iterator两接口源码分fan析yi以及两者的辨析本文幽默风趣,通俗易懂,适合像我一样的新手....原创 2017-12-31 15:30:03 · 1849 阅读 · 0 评论 -
Java中集合类源码分析(2)-----Collection和AbstractCollection源码分析
这是集合类源码分fan析yi系列文的第二篇,本文介绍了Collection以及它的一个直接实现类AbstractCollection, 这是一个抽象类,其实现了很多方法,也保留了一些抽象方法.Collection 下的大多数子类都继承 自AbstractCollection ,比如 List 的实现类, Set的实现类.下面我们首先来看看Collection.原创 2018-01-01 12:46:03 · 2135 阅读 · 0 评论 -
Java中集合类源码分析(3)-----ArrayList源码分析
本文介绍了Java集合类中ArrayList类 本文是源码分fan析yi系列文的第三篇ArrayList查看ArrayList源码,发现ArrayList(类)—-实现—-> AbstractList(类)—-实现—->AbstractCollection(类) 同时,AbstractList—-实现—-> List(接口)—–实现—-Collection(接口)package c原创 2018-01-05 12:28:13 · 2260 阅读 · 0 评论 -
Java中集合类源码分析(4)-----LinkedList源码分析
本文通过JDK1.8版本LinkedList源码分(fan)析(yi)介绍LinkedList的底层实现方式和主要API,并介绍其与ArrayList的差异. 本文是该系列文的第四篇.1.顶部注释和LinkedList定义/** *双链列表是List和Deque接口的实现.其实现了所有list的可选择性操作,并且允许所有的元素(包括null,空元素) * *所有的操作是最大原创 2018-01-06 15:24:35 · 2383 阅读 · 0 评论 -
超简单,超详细,超快速,一下就懂Java(JDK中的)代理模式
代理模式是指,为其他对象提供一种代理以控制这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户类和目标类对象之间起到中介的作用.1.1静态代理先上代码有个直观感受1.创建一个接口//主业务方法:本接口中的方法将要被代理增强public interface ISomeService { String doFirst();原创 2018-02-04 11:49:35 · 2622 阅读 · 0 评论 -
[Java高并发系列(1)]Java中synchronized关键字详解+死锁实例
[Java高并发系列]Java 中 synchronized 关键字详解 + 死锁实例1 概述synchronized用于给某个对象加锁 , 其修饰的对象可以是代码块和方法(分为实例方法和静态方法).不是说synchronized是对代码块或方法上锁, 它锁的是对象(当然也可能是类, 不过类也算对象吧hhh — 某个Object , 或者this, 或者 xxx.class)下面来...原创 2019-11-20 14:33:54 · 2825 阅读 · 0 评论 -
Java反射的使用入门详解
Java反射的使用入门详解,超实用!!指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。 反射是java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接。但是反射使用不当会成本很高!反射提供了一种机制——用来检查可用的方法,并返回方法名.原创 2017-12-28 19:55:30 · 2564 阅读 · 2 评论