java基础
文章平均质量分 65
ywl470812087
个人简介:深耕物联网行业,ERP,CSDN博客专家。 任职华为网联网智慧照明、空调资深工程师,并且上线投产使用,研发企业亿量级吞吐中间件。 擅长 Java语言、C语言等。
展开
-
类加载过程
类加载原创 2023-01-05 16:45:34 · 65 阅读 · 0 评论 -
java8新特性(简述十大新特性)
你真的开始用JDK8了吗?如果你没有用上一些新特性,请别说自己使用了Java8。Java 8可谓是自Java 5以来最具革命性的版本了,她在语言、编译器、类库、开发工具以及Java虚拟机等方面都带来了不少新特性。我们来一一回顾一下这些特性。原创 2022-12-23 17:19:11 · 3428 阅读 · 0 评论 -
Array和list相互转换
返回的是ArrayLst对象,它是Arrays类自己定义的一个静态内部类,这个内部类没有实现add()、remove()方法,而是直接使用它的父类AbstractList的相应方法。//这种方式转为list的话,只能遍历,不能添加或删除元素。是个坑,得到的list长度是不可变的,当添加新的元素会出现异常。原创 2022-12-23 16:56:30 · 794 阅读 · 0 评论 -
ArrayList源码阅读
2. 我们在开始遍历集合元素的时候,会记录此时的modCount作为expectedModCount,每次遍历一个元素的的时候都会检查,这两个参数是否相等;其实如果仔细阅读代码就会发现,并发修改异常不是在修改时候抛出的。1.首先ArrayList类中有一个共享变量modCount,我们每操作一次集合这个变量都会进行加一操作(增,删,改,不包含查询)这个常量在进行扩容的时候,会和当前容器的最小容量进行比较,取最大的作为新容器的容量。例如当你第一次调用add进行添加元素的时候,会触发扩容。被重新赋值为10 (原创 2022-11-28 16:59:57 · 197 阅读 · 0 评论 -
java8流式操作
中文称为 “流”,通过将集合转换为这么一种叫做 “流” 的元素序列,通过声明性方式,能够对集合中的每个元素进行一系列并行或串行的流水线操作。.stream()stream()把一个源数据,可以是集合,数组,I/O channel, 产生器generator 等,转化成流。原创 2022-11-24 17:35:24 · 222 阅读 · 0 评论 -
c:forEach varStatus属性
c:forEach varStatus属性原创 2017-01-12 16:32:17 · 110845 阅读 · 0 评论 -
servlet 调用oracle数据库存储过程
【代码】servlet 调用oracle数据库存储过程。原创 2019-03-22 11:25:18 · 92965 阅读 · 0 评论 -
为什么wait, notify,notifyAll保存在Object类中,而不是Thread类
多线程原创 2022-05-30 17:35:20 · 1262 阅读 · 1 评论 -
java基础复习-(run方法和start方法区别)
run方法和start方法区别原创 2022-05-30 14:54:43 · 2860 阅读 · 0 评论 -
java Arrays.copyOfRange使用方法
copyOfRange使用原创 2022-04-19 09:35:54 · 1744 阅读 · 1 评论 -
Java中的AES加密和解密(CBC模式)
AES——CBS模式原创 2022-04-15 14:43:22 · 1466 阅读 · 0 评论 -
ReentrantReadWriteLock源码分析
ReentrantReadWriteLock源码分析原创 2022-02-03 17:43:45 · 703 阅读 · 0 评论 -
AQS基本原理
什么是AQS?AQS即AbstractQueuedSynchronizer,是一个用于构建锁和同步器的框架。它能降低构建锁和同步器的工作量,还可以避免处理多个位置上发生的竞争问题。在基于AQS构建的同步器中,只可能在一个时刻发生阻塞,从而降低上下文切换的开销,并提高吞吐量。AQS支持独占锁(exclusive)和共享锁(share)两种模式。独占锁:只能被一个线程获取到(Reentrantlock) 共享锁:可以被多个线程同时获取(CountDownLatch,ReadWriteLock).原创 2022-02-03 17:28:43 · 438 阅读 · 0 评论 -
get请求可以传body吗_GET 和 POST 的区别?
同样还是面试被问到的问题,经过这两天的复盘,发现之前对其的了解只是冰山一角,这两天也学到了不少新的知识,不得不说面试的确能帮我们弥补一些不足。本文将从基本概念、两者之间的区别以及几个常见问题来进行介绍,首先我们先来明确几个概念基本概念HTTP定义了与服务器进行交互的不同方法,常见的有四种:GET、POST、PUT、DELETE。其中,GET和POST最常用。GET用来获取资源,它只是获取、查询数据,不会修改服务器的数据,从这点来讲,它是安全的(后面还会从另一方面分析它的不安全性)。由于它是读取的原创 2022-01-23 19:57:46 · 7587 阅读 · 1 评论 -
面向对象设计7大原则
概述 熟练掌握和应用面向对象设计(Object Oriented Design,OOD)7大原则,是初/中级Java工程师向高级/资深工程师进阶的一个必备技能,它可以大大提升程序的可复用性和可维护性,也是重构代码的一大利器。7大设计原则包括开闭原则、里氏替换原则、依赖倒转原则、单一职责原则、接口隔离原则、组合/聚合复用原则、迪米特法则。 1.开闭原则 面向对象可复用设计原则中最基础的原则便是开闭原则(Open-Closed Principle,OCP)。开闭原则指的是在设计一...原创 2022-01-23 17:47:10 · 540 阅读 · 1 评论 -
Date和Calendar
此文章来源于廖雪峰博客:https://www.liaoxuefeng.com/wiki/1252599548343744/1303791989162017在计算机中,应该如何表示日期和时间呢?我们经常看到的日期和时间表示方式如下:2019-11-20 0:15:01 GMT+00:00 2019年11月20日8:15:01 11/19/2019 19:15:01 America/New_York如果直接以字符串的形式存储,那么不同的格式,不同的语言会让表示方式非常繁琐。在理解日期和时原创 2021-01-01 10:34:15 · 338 阅读 · 1 评论 -
什么是CAS机制?
什么是CAS机制?原创 2018-12-30 18:33:58 · 130978 阅读 · 0 评论 -
Java堆介绍
对于Java应用程序来说,Java堆(Java Heap)是虚拟机所管理的内存中最大的一块。Java堆是被所 有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,Java 世界里“几乎”所有的对象实例都在这里分配内存。在《Java虚拟机规范》中对Java堆的描述是:“所有 的对象实例以及数组都应当在堆上分配[1]”,而这里笔者写的“几乎”是指从实现角度来看,随着Ja...原创 2020-04-19 21:43:26 · 96764 阅读 · 2 评论 -
Java虚拟机栈介绍
与程序计数器一样,Java虚拟机栈(Java Virtual Machine Stack)也是线程私有的,它的生命周期 与线程相同。虚拟机栈描述的是Java方法执行的线程内存模型:每个方法被执行的时候,Java虚拟机都 会同步创建一个栈帧[1](Stack Frame)用于存储局部变量表、操作数栈、动态连接、方法出口等信 息。每一个方法被调用直至执行完毕的过程,就对应着一个栈帧在虚拟机栈中从入栈到...原创 2020-04-19 21:39:21 · 124593 阅读 · 3 评论 -
《深入理解java虚拟机》第2章 Java内存区域与内存溢出异常
Java与C++之间有- -堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来。2.1 概述对于从事C、C++程序开发的开发人员来说,在内存管理领域,他们既是拥有最高权力的“皇帝”又是从事最基础工作的“劳动人民"一既拥有每一 个对象的“所有权”,又担负着每-一个对象生命开始到终结的维护责任。对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要...原创 2020-04-11 12:14:03 · 96379 阅读 · 0 评论 -
《深入理解java虚拟机》第1章 走近Java
1.6实战:自己编译JDK想要一探JDK内部的实现机制,最便捷的路径之一就是自己编译- -套JDK,通过阅读和跟踪调试JDK源码去了解Java技术体系的原理,虽然门槛会高一点,但肯定会比阅读各种书籍、文章更加贴近本质。另外,JDK中的很多底层方法都是本地化(Native) 的,需要跟踪这些方法的运作或对JDK进行Hack的时候,都需要自己编译套JDK。现在网络上有不少开源的JDK实现可以供我们选...原创 2020-04-09 21:44:44 · 112128 阅读 · 0 评论 -
LinkedList源码阅分析
LinkedList里面涉及到的一些操作,非常细致,以避免出现的空指针,理解后对于其优点与确定会有一个更加整体的认识吧。继承关系图(对比ArrayList)元素的存储结构在LinkedList中,每一个元素都是Node存储,Node拥有一个存储值的item与一个前驱prev和一个后继next,如下:// 典型的链表结构private static class Node<...转载 2020-04-07 22:51:39 · 105461 阅读 · 0 评论 -
JDK1.8中String类的intern()方法学习
jdk1.8字符串常量池是位于堆中;在jdk1.8中使用如下指令时会同时在堆中和常量池(前提是常量池中还没有该对象)中创建字符串对象,但是s是指向堆中。String s = new String("HELLO");如下方法会判断常量池中是否存在s,若存在则返回常量池中的引用,s的指向不会发生更改;若不存在(但堆中存在s指向的对象),则在常量池中建立指向堆中对象的引用;s.intern...原创 2020-04-06 22:35:43 · 114190 阅读 · 0 评论 -
美团面试题:Hashmap的结构,1.7和1.8有哪些区别,深入的分析
(一) 真实面试题之:Hashmap的结构,1.7和1.8有哪些区别不同点:(1)JDK1.7用的是头插法,而JDK1.8及之后使用的都是尾插法,那么他们为什么要这样做呢?因为JDK1.7是用单链表进行的纵向延伸,当采用头插法时会容易出现逆序且环形链表死循环问题。但是在JDK1.8之后是因为加入了红黑树使用尾插法,能够避免出现逆序且链表死循环的问题。(2)扩容后数据存储位置的计算方式也不...转载 2020-04-04 21:33:46 · 110941 阅读 · 0 评论 -
JDK8HashMap的扩容核心解读,尾插法
看懂了JDK7Hashmap的扩容头插法,及其可能产生的循环引用问题,今天看看JDK8的HashMap扩容实现。采取的是用四个结点,两条链表完成重新分配位置,比较简单有趣。解析如下: //如果原来的table等于null,直接返回 if (oldTab != null) { //遍历原来的table,bucket for...原创 2020-04-04 16:21:53 · 113122 阅读 · 1 评论 -
Java 8 中的哈希表
JDK 的代码是开源的,我们打开idea开发工具,引入jdk1.8 找到hashmapHashMap 是基于 HashTable 的一种数据结构,在普通哈希表的基础上,它支持多线程操作以及空的 key 和 value。在 HashMap 中定义了几个常量:static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka...原创 2020-04-04 13:17:51 · 125874 阅读 · 0 评论 -
进制转换图解
原创 2020-03-28 11:06:26 · 116550 阅读 · 0 评论 -
浅谈HotSpot逃逸分析
JIT即时编译(Just-in-time Compilation,JIT)是一种通过在运行时将字节码翻译为机器码,从而改善字节码编译语言性能的技术。在HotSpot实现中有多种选择:C1、C2和C1+C2,分别对应client、server和分层编译。1、C1编译速度快,优化方式比较保守;2、C2编译速度慢,优化方式比较激进;3、C1+C2在开始阶段采用C1编译,当代码运行到一定热度之后...转载 2020-03-22 22:19:43 · 93966 阅读 · 0 评论 -
《深入理解java虚拟机》第1章 走近Java
1.5 展望Java技术的未来在2005年,Java 语言诞生10周年的SunOne技术大会上,Java语言之父James Gosling做了一场题为“Java技术下一个十年”的演讲。笔者不具备James Gosling 博士那样高屋建瓴的视角,这里仅从Java平台中几个新生的但已经开始展现出蓬勃之势的技术发展点来看- -下后续1 ~ 2个JDK版本内的- -些很有希望的技术重点。1....原创 2020-03-22 21:10:15 · 131171 阅读 · 0 评论 -
《深入理解java虚拟机》第1章 走近Java
1.4 Java虚拟机发展史上一节我们从整个Java技术的角度观察了Java 技术的发展,许多Java程序员都会潜意识地把它与Sun公司的HotSpot虚拟机等同看待,也许还有一些程序员会注意到BEA.JRockit和IBM J9,但对JVM的认识不仅仅只有这些。从1996年初Sun公司发布的JDK1.0中所包含的SunClassicVM到今天,曾经涌现、湮灭过许多或经典或优秀或有特色的虚拟机...原创 2020-03-22 11:48:53 · 111860 阅读 · 0 评论 -
《深入理解java虚拟机》第1章 走近Java
世界上并没有完美的程序,但我们并不因此而沮丧,因为写程序本来就是-一个 不断追求完美的过程。1.1 概述Java不仅仅是一- ]编程语言,还是一一个由一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌人式系统、移动终端、企业服务器、大型机等各种场合,如图1-1所示。时至今日,Java 技术体系已经吸引了900多万软件开发者,这...原创 2020-03-22 11:46:11 · 112805 阅读 · 0 评论 -
深入理解java虚拟机 (三) 第二版
参考资料本书名为“深人理解Java虚拟机”,但要想深人理解虚拟机,仅凭- -本书肯定是远远不够的,读者可以通过以下信息找到更多关于Java虚拟机方面的资料。我在写作此书的时候,也从下面这些参考资料中获得了很大的帮助。.(1)书籍口《The Java Virtual Machine Specification, Java SE 7 Edition》日要学习虚拟机,无论如何都必须掌握“Java...原创 2020-03-22 11:14:24 · 106814 阅读 · 0 评论 -
深入理解java虚拟机 (二) 第二版
如何阅读本书本书-共分为五个部分:走近Java、自动内存管理机制、虛拟机执行子系统、程序编译与代码优化、高效并发。各部分基本上是互相独立的,没有必然的前后依赖关系,读者可以从任何- -个感兴趣的专题开始阅读,但是每个部分中的各个章节间有先后顺序。本书并没有假设读者在Java领域具备很专业的技术水平,因此在保证逻辑准确的前提下,尽量用通俗的语言和案例讲述虚拟机中与开发的关系最为密切的内容。当然,...原创 2020-03-22 10:59:47 · 114926 阅读 · 0 评论 -
深入理解java虚拟机 (一) 第二版
前言:Java是目前用户最多、使用范围最广的软件开发技术之一。Java 的技术体系主要由支撑Java程序运行的虚拟机、提供各开发领域接口支持的Java API、 Java编程语言及许多第三方Java框架(如Spring、Struts 等)构成。在国内,有关Java API Java语言语法及第三方框”架的技术资料和书籍非常丰富, 相比之下,有关Java虚拟机的资料却显得异常贫乏。.这种状况在很...原创 2020-03-22 10:45:20 · 114469 阅读 · 0 评论 -
jdk下载
oracle官网:https://developer.oracle.com/java/一直往下拉到最低部这里选择你需要的历史版本,我就选择安装就不用我多说了,和以前安装jdk一样安装,配置环境变量...原创 2020-03-07 18:43:20 · 99662 阅读 · 2 评论 -
深入理解 Java 内存模型(一)——基础
基础并发编程的模型分类在并发编程中我们需要处理两个问题:线程与线程之间如何通信以及线程与线程之间如何同步问题(这里的线程指指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式的编程中,线程之间的通信机制有两种共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中公共状态来隐式进行通信。在消息传递的并发的模型里,线程之间没...原创 2019-10-19 09:07:00 · 104205 阅读 · 0 评论 -
事务ACID理解复习
谈到事务一般都是以下四点原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。一致性(Consistency)事务前后数据的完整性必须保持一致。隔离性(Isolation)事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。持久性(Durability)...原创 2019-10-17 20:45:20 · 112264 阅读 · 0 评论 -
怎么通过java去调用并执行shell脚本以及问题总结
原文https://blog.satikey.com/p/5759/how-java-calls-and-executes-shell-scripts-and-summary.html主题ShellJava背景我们在开发过程中,大部分是java开发, 而在文本处理过程中,主要就是脚本进行开发。 java开发的特点就是我们可以很早地进行TDDL, METAQ 等等地对接; 而脚本...原创 2018-04-11 08:29:57 · 115417 阅读 · 0 评论 -
ArrayList的底层实现原理
ArrayList源码分析1、java.util.ArrayList<E> : List 接口的大小可变数组的实现类ArrayList 内部基于 数组 存储 各个元素。 所谓大小可变数组,是指当 数组容量不足以存放新的元素时,创建新数组,并将原数组中的内容复制过来。2、ArrayList底层实现原理构造方法源码分析 //对象数组:ArrayList的底层数据结...原创 2019-02-21 22:02:46 · 114706 阅读 · 0 评论 -
Java线程中断机制-如何中断线程
Java线程中断机制-如何中断线程版权声明:本文为博主原创文章,欢迎指正或者转载。 https://blog.csdn.net/qq_38663729/article/details/78232648介绍:对于线程一共分为五个状态:新建状态,就绪状态,阻塞状态,运行状态,死亡状态,有时候把阻塞状态又分为同步阻塞和等待阻塞。有时想让主线程启动的一个子线程结束运行,我们就需要让这...原创 2019-03-11 23:15:31 · 137767 阅读 · 0 评论