Java
怎么讲?回归初心吧!人生第一门语言就是Java!
不知道是先入为主,还是真的更喜欢它,不管,老子就干它了!
曾经跌跌撞撞搞到框架,不过这么久没搞,从头来过,夯实基础吧!
博_采_众_长
理论与实践并行!
展开
-
Java -- 杂记
Java杂记原创 2022-01-20 17:29:21 · 213 阅读 · 0 评论 -
Java -- 反汇编:HSDIS、JITWatch
大多数情况下,通过诸如javap等反编译工具来查看源码的字节码已经能够满足我们的日常需求,但是不排除在有些特定场景下,我们需要通过反汇编来查看相应的汇编指令。本文我们就来介绍两个很好用的工具——HSDIS、JITWatchHSDISHSDIS(HotSpot disassembler),一个Sun官方推荐的HotSpot虚拟机JIT编译代码的反汇编插件,其实际上就是一个动态库。这里我们直接从网上下载与我们系统对应的编译后文件,然后直接将其放置到JDK的bin目录下即可然后在IDE中配置相关VM Option转载 2020-12-09 10:51:32 · 327 阅读 · 0 评论 -
Java -- 锁
文章目录1. 乐观锁2. 悲观锁3. 自旋锁3.1 自旋锁的优缺点3.2 自旋锁的时间阈值4. synchronized1. 乐观锁 乐观锁采用乐观的思想处理数据,在每次读取数据时都认为别人不会修改该数据,所以不会上锁,但在更新时会判断在此期间别人有没有更新数据,通常采用在写时先读出当前版本号然后加锁的方法 具体过程原创 2020-11-30 17:33:04 · 174 阅读 · 0 评论 -
Java -- Bitmap位图
文章目录1. 数据结构的定义2. 查询方法的实现3. 修改方法的实现 在Java中使用byte[]字节数组来储存bit,1byte = 8bit。对于bit中的第i位,该bit为1则表示true,即数据存在:为0则表示false,即数据不存在。其具体实现分为数据结构的定义、查询方法和修改方法的实现1. 数据结构的定义  原创 2020-11-28 17:51:14 · 499 阅读 · 0 评论 -
Java并发编程实战 -- this引用逸出
《java并发编程实战》中介绍了“发布与逸出”,首先介绍下发布,然后重点介绍this引用逸出。一、发布“发布”一个对象是指,使对象能够在当前作用域之外的代码中使用。例如:①将一个指向该对象的引用保存到其他代码可以访问的地方②在某一个非私有的方法中返回该引用③将引用传递到其他类的方法中下面我们来看几个具体的例子:①将对象的引用保存到一个公有的静态变量中,可以使任何类和线程都能看到该对象import转载 2020-11-23 20:12:04 · 230 阅读 · 0 评论 -
Java -- 类内部定义接口
Java类内部可以定义接口,作用可以看作是对类功能的进一步补充,类里面包含两部分:一部分是自己的固定的,一部分是可以变化的,而这可变的部分就编程了一个接口。另一个作用是避免命名冲突。举????类Fruits内部存在接口Applepublic class Fruits { public interface Apple { public String info(); }}转载 2020-11-23 20:02:12 · 1610 阅读 · 0 评论 -
并发 -- 竞态条件 & 数据竞争
文章目录1. 竞态条件2. 数据竞争3. [并发的数据竞争(可见性)与竞态条件(原子性)](https://blog.csdn.net/qq_32252957/article/details/83004866) 并非所有的竞态条件都是数据竞争,同样并非所有的数据竞争都是竞态条件,但二者都可能使并发程序的失败1. 竞态条件 &nb原创 2020-11-23 12:53:52 · 1039 阅读 · 1 评论 -
成功解决idea中:Error:java: Compilation failed: internal java compiler error
Information:java: javacTask: 源发行版 8 需要目标发行版 1.8Information:java: Errors occurred while compiling module 'neu-crawler'Information:javac 1.8.0_181 was used to compile java sourcesInformation:Module "neu-crawler" was fully rebuilt due to project configurat转载 2020-11-17 19:10:09 · 207 阅读 · 0 评论 -
JavaNIO和零拷贝(Zero Copy)
文章目录一.Linux操作系统中的零拷贝1.1 先从Linux的普通I/O过程说起1.2 内存映射方式I/O1.3 内核空间内部传输I/O1.4 升级版-内核空间内部传输I/O1.5 后续优化-splice()系统调用二.JavaNIO中的零拷贝2.1 NIO中内存映射方式I/O2.2 NIO中的零拷贝三. 补充内容今天在学习netty的时候,突然了解到一个新的概念,零拷贝(Zero Copy),涉及到操作系统中的一些知识,深感自己的知识浅薄,因此特地去学习了一番,如果有谬误,请大家批评指出。一.Lin转载 2020-11-16 21:12:11 · 169 阅读 · 0 评论 -
Java -- 成员内部类不能含有static成员(汇总)
文章目录1、为什么内部类中有static成员时内部类也必须声明为static2、JVM的类加载规则 :3、成员内部类中为什么不能有静态方法和属性4、静态内部类(public static class)和普通内部类(public class)的区别5、Java中普通内部类为何不能有static属性 却可以有常量6、java内部类有什么好处?为什么需要内部类?静态内部类局部内部类匿名内部类7、Java静态内部类(static class)1、为什么内部类中有static成员时内部类也必须声明为static&原创 2020-11-15 14:14:51 · 4941 阅读 · 11 评论 -
Java并发关键字 -- final
文章目录final的简介final的具体使用场景变量final成员变量final局部变量方法类final关键字举例多线程中你真的了解final吗final域重排序规则final域为基本类型final域为引用类型final的实现原理为什么final引用不能从构造函数中“溢出”final的简介final可以修饰变量,方法和类,用于表示所修饰的内容一旦赋值之后就不会再被改变,比如String类就是一个final类型的类。即使能够知道final具体的使用方法,final在多线程中存在的重排序问题很容易忽略,希望转载 2020-11-15 10:26:10 · 179 阅读 · 0 评论 -
Java中的不变性(Immutable)和final有关吗
一 概述 Java中满足同步需求的另一种方法是使用不可变的对象(Immutable Object)。因为如果对象的状态不会改变,那么并发同步过程中就不会存在并发问题。 final关键字可以用来修饰变量,方法,类。final定义的引用是不可变的,但是引用的对象是可变的 。final定义的值类型是无法修改的。 二 Java中的不变性Immutable 如果某个对象在被创建之后其状态就不能被修改...转载 2020-11-15 09:28:23 · 222 阅读 · 0 评论 -
Java的自动装箱和拆箱
基本类型和包装类型Java是一种强类型的语言,这就意味着必须为每一个变量声明一种类型。 在Java中,一共有8种基本数据类型,且每个基本数据类型都含有对应的包装类型,对应关系如下表: 基本类型包装类型byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublebooleanBooleancharCharacter1、为什么要有基本类型? 首先,基本类型不是一个Object,数值直接保存在栈中,不会在堆中开辟内存,也不存在Java对象的内存布局:转载 2020-11-07 21:24:54 · 90 阅读 · 0 评论 -
hashCode和identityHashCode 的关系
文章目录1:首先看一下JDK API的观点1 - 1:hashCode方法相关1 - 2:identityHashCode()方法相关2:此例的核心程序,对应的观点在注释中已经有所说明,请自己也动手实验一下看看!3:User简单的自定义类,比较简单,没什么可讲的,关键是默认继承Object类,且没有重写hashCode()方法,不过重写了toString()方法4:运行结果如下所示,不同的运行环境结果可能存在差异(win7+jdk7):5:上面的代码和注释已经抛出了我的观点,代码相对简单,可能还有一些繁琐,转载 2020-11-03 10:23:21 · 98 阅读 · 0 评论 -
Java 字符串参数传递和修改(个人见解)
参考博文:https://blog.csdn.net/baidu_28997655/arti原创 2020-11-03 09:49:09 · 1627 阅读 · 0 评论 -
java中hashCode和identityHashCode的区别【从源码上区分(含equals方法)】
在java中,所有类都是从基类Object类中派生出的,所以首先我们先来看看在Object类中的hashCode()方法(后面有总结,想直接看结论的可以直接跳到后面) Object类中的hashCode方法和equals方法 先来看看源码: * <ul> * <li>Whenever it is invoked on the same obje...转载 2020-11-03 09:41:58 · 229 阅读 · 0 评论 -
Java -- 父类和子类拥有同名的成员变量的情况
Java – 父类和子类拥有同名的成员变量取值情况结论:当子类的成员变量与父类同名时,若对该成员变量进行操作的方法继承于父类,则改变和获取的是父类的成员变量。若对该成员变量进行操作的方法为子类所独有,或override父类,则改变和获取的是子类自己的成员变量。...原创 2020-10-28 15:13:45 · 2568 阅读 · 2 评论 -
Java -- 全量编译和增量编译
Java – 全量编译和增量编译参考博文在了解全量编译之前先来了解一下增量编译: 增量编译–对用户源程序局部修改后进行的重新编译的工作只限于修改的部分及与之相关部分的内容。相关部分的确定由编译系统确定,对用户是透明的。增量编译对软件开发,尤其是在调试期,可以大大缩短编译时间, 提高编译效率,这也是增量编译的优势所在。 举例:Eclipse理解了增量编译之后,全量编译也就不难了: 全量编译–对用户源程序局部修改后进行的重新编译的工作涉及全部源代码,并不只限于局部修改及其相关部分。换句话说,无原创 2020-10-28 11:11:41 · 3226 阅读 · 0 评论 -
Java -- 父类和子类拥有同名变量
Java – 父类和子类拥有同名变量 请仔细观察系列两段程序的不同之处:一个Son类重写print方法,另一个则没有重写。分析该问题必须从字节码的角度入手,否则根本不可能看清事情的本质。成员变量(非静态的)的赋值过程:默认初始化显示初始化原创 2020-10-28 10:15:14 · 4225 阅读 · 0 评论 -
Java8 HashMap之tableSizeFor
Java8对许多内置的容器进行了优化与拓展,其中对HashMap的改变尤其大。之后将进行总结。 最近在看HashMap的源码时,发现了里面好多很不错的算法,相比Java7从性能上提高了许多。其中tableSizeFor就是一个例子。tableSizeFor的功能(不考虑大于最大容量的情况)是返回大于输入参数且最近的2的整数次幂的数。比如10,则返回16。该算法源码如下:static final int tableSizeFor(int cap) { int n = cap - ...转载 2020-10-23 21:05:00 · 179 阅读 · 0 评论 -
Java 重载 - 重写
Java 重载 - 重写区别点重载方法重写方法发生范围同一个类子类中参数列表必须修改一定不能修改返回类型可修改一定不能修改异常可修改可以减少或删除,一定不能抛出新的或者更广的异常访问修饰符可修改一定不能做更严格的限制(可以降低限制)发生阶段编译器运行期...原创 2020-10-14 16:11:02 · 77 阅读 · 0 评论 -
什么是Java程序的主类? 应用程序和小程序的主类有何不同?
什么是Java程序的主类 ⼀个程序中可以有多个类,但只能有⼀个类是主类。应用程序和小程序的主类有何不同?在Java应用程序中,这个类是指包含main()方法的类。在Java小程序中,这个主类是一个继承子系统类JApplet或Applet的子类。应用程序的主类不一定要求是public类但小程序的主类必须是public类。主类是Java程序执行的入口点。简单说应用程序是从主线程启动(也就是 main() 方法)。原创 2020-10-14 15:50:22 · 1479 阅读 · 2 评论 -
CentOS 7.3 安装JDK
准备JDK安装包我这⾥下载的是 jdk-8u261-linux-x64.tar.gz 安装包,并将其直接放在了 root ⽬录下卸载已有的OPENJDK(如果有)如果系统⾃带有 OpenJDK ,可以按照如下步骤提前卸载之。⾸先查找已经安装的 OpenJDK 包:rpm -qa | grep java接下来可以将 java 开头的安装包均卸载即可:yum -y remove java-1.7.0-openjdk-1.7.0.141-2.6.10.5.el7.x86_64yum -y re原创 2020-10-04 11:35:06 · 131 阅读 · 0 评论 -
白嫖Oracle账号
Oracle账号Oracle账号不能找回密码,总是报错,因此申请一个 大家一起下载资料。 账号 1 :amador.sun@foxmail.com密码:1211WaN!账号 2 :amador.sun@qq.com密码:1211WaN!---------------(20.09.28更新)-----------------------账号 3 :hellooracle123@qq.com密码:1211WaN!账号 4 :javacno.1@qq.com密码:1211WaN!转载 2020-10-01 11:52:36 · 777 阅读 · 0 评论 -
超线程和多线程的区别
关于线程,多线程,并发,并行等操作系统的基础知识,可以回顾我之前的博客 操作系统学习之一常用术语 物理CPU: 物理CPU就是插在主机上的真实的CPU硬件,在Linux下可以数不同的physical id 来确认主机的物理CPU个数。 核心数: 我们常常会听说多核处理器,其中的核指的就是核心数。在Linux下可以通过cores来确认主机的物理CPU的核心数。 逻辑CPU: 逻辑CPU跟超线程技术有联系,假如物...转载 2020-09-26 15:16:28 · 519 阅读 · 0 评论 -
多线程就一定比单线程快吗?
为什么要使用多线程?在探讨文章题目之前,我们先来思考这样一个问题,你为什么要使用多线程?我相信很多人在遇到这个问题时会不假思索的回答出答案,因为并发快,那为什么并发快呢?对于多核 CPU 来说,每个物理核心都能独立执行任务,这种条件下,使用并发技术(准确的来说这里可以称之为并行,因为多核)当然合情合理。但是我们来想想对于单核的 CPU ,为什么操作系统还要引入多线程技术呢?或者说是我们的程序为何要利用多线程技术呢? 设想一下这样的一个场景,我们现在的程序是单线程的,而且代码中充斥着大量的读取文件内容的转载 2020-09-26 12:55:42 · 1126 阅读 · 0 评论 -
关于.getClass()和.class的区别
一直在想.class和.getClass()的区别,思索良久,有点思绪,然后有网上搜了搜,找到了如下的一篇文章,与大家分享。 原来为就是涉及到java的反射~~~~~ Java反射学习 所谓反射,可以理解为在运行时期 获取对象类型信息的操作。传统的编程方法 要求程序员在编译阶段决定使用的类型,但是在反射的帮助下,编程人员可以动态获取这些信息,从而编写更加具有可移植性转载 2020-08-12 00:57:26 · 641 阅读 · 0 评论 -
为何不能直接在java类内使用输出函数
因为,class内只能放:成员变量、成员方法、构造方法、内部类。想要用System.out.println也可以。得用一个大括号将它裹住,这样相当于说明它是一个省略了头部声明的方法块。 ...转载 2020-08-08 09:21:48 · 399 阅读 · 0 评论 -
文件的上传和下载
文件的上传和下载文件的上传和下载,是非常常见的功能。很多的系统中,或者软件中都经常使用文件的上传和下载。比如:QQ 头像,就使用了上传。邮箱中也有附件的上传和下载功能。OA 系统中审批有附件材料的上传。1 文件的上传介绍要有一个 form 标签,method=post 请求form 标签的 encType 属性值必须为 multipart/form-data 值在 form 标签中使用 input type=file 添加上传的文件编写服务器代码(Servlet 程序)接收,处理上传的数原创 2020-08-06 21:31:29 · 142 阅读 · 0 评论 -
Java(老白再次入门) - JUnit单元测试
JUnit单元测试步骤:选中当前工程 - 右键:build path - add libraries - JUnit 4 - 下一步创建Java类,进行单元测试此时的Java类要求1️⃣ 此类是public的 2️⃣ 此类提供公共的无参的构造器此类中声明单元测试方法。此时的单元测试方法:方法的权限是public,没有返回值,没有形参此单元测试方法上需要声明注释:@Test,并在单元测试中导入: import org.junit.Test;声明好单元测试方法以后,就可以在方法体中测试相关原创 2020-07-04 12:27:49 · 3135 阅读 · 1 评论 -
Java(老白再次入门) - Java8的其它新特性
本系列文章均为尚硅谷资源!如有侵权,我将立即删除!Java基础知识图解Java 8新特性简介Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。Java 8 是oracle公司于2014年3月发布,可以看成是自Java 5 以来最具革命性的版本。Java 8为Java语言、编译器、类库、开发工具与JVM带来了大量新特性。速度更快代码更少(增加了新的语法:Lambda 表达式) 强大的 Stream API便于并行最大化减少空指针异常:Optional.原创 2020-06-25 20:07:18 · 224 阅读 · 0 评论 -
Java(老白再次入门) - Java反射机制
本系列文章均为尚硅谷资源!如有侵权,我将立即删除!Java基础知识图解1.Java反射机制概述Java Reflection???? Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。???? 加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面原创 2020-06-18 21:28:23 · 168 阅读 · 0 评论 -
Java(老白再次入门) - 网络编程
本系列文章均为尚硅谷资源!如有侵权,我将立即删除!Java基础知识图解转载 2020-06-16 15:16:35 · 289 阅读 · 0 评论 -
Java(老白再次入门) - IO流
本系列文章均为尚硅谷资源!如有侵权,我将立即删除!Java基础知识图解原创 2020-06-14 22:04:55 · 277 阅读 · 0 评论 -
Java(老白再次入门) - 泛型
本系列文章均为尚硅谷资源!如有侵权,我将立即删除!Java基础知识图解1.为什么要有泛型泛型的设计背景集合容器类在设计阶段/声明阶段不能确定这个容器到底实际存的是什么类型的对象,所以在JDK1.5之前只能把元素类型设计为Object,JDK1.5之后使用泛型来解决。 因为这个时候除了元素的类型不确定,其他的部分是确定的,例如关于这个元素如何保存,如何管理等是确定的,因此此时把元素的类型设计成一个参数,这个类型参数叫做泛型。Collection,List,ArrayList 这个就是类型参数.原创 2020-06-09 18:40:35 · 229 阅读 · 0 评论 -
Java(老白再次入门) - Java集合
本系列文章均为尚硅谷资源!如有侵权,我将立即删除!Java基础知识图解1.Java集合框架概述???? 一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储。另一方面,使用Array存储对象方面具有一些弊端,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容器中。数组在内存存储方面的特点:数组初始化以后,长度就确定了。数组声明的类型,就决定了进行元素初始化时的类型数组在存储数据方面的弊端:数组初始化以后,长度就不可变了,不便于原创 2020-06-08 12:00:51 · 255 阅读 · 0 评论 -
Java(老白再次入门) - 枚举类与注解
本系列文章均为尚硅谷资源!如有侵权,我将立即删除!Java基础知识图解1.枚举类的使用如何自定义枚举类如何使用关键字enum定义枚举类Enum类的主要方法实现接口的枚举类???? 类的对象只有有限个,确定的。举例如下:星期:Monday(星期一)、…、Sunday(星期天)性别:Man(男)、Woman(女)季节:Spring(春节)…Winter(冬天)支付方式:Cash(现金)、WeChatPay(微信)、Alipay(支付宝)、BankCard(银行卡)、CreditC转载 2020-06-08 00:27:08 · 233 阅读 · 0 评论 -
Java(老白再次入门) - Java常用类
本系列文章均为尚硅谷资源!如有侵权,我将立即删除!Java基础知识图解1.字符串相关的类String的特性???? String类:代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。???? String是一个final类,代表不可变的字符序列。???? 字符串是常量,用双引号引起来表示。它们的值在创建之后不能更改。???? String对象的字符内容是存储在一个字符数组value[]中的。public final class String imp原创 2020-06-07 10:50:13 · 208 阅读 · 0 评论 -
Java(老白再次入门) - 多线程
本系列文章均为尚硅谷资源!如有侵权,我将立即删除!Java基础知识图解1.基本概念:程序、进程、线程????程序(program) 是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。????进程(process) 是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程。——生命周期如:运行中的QQ,运行中的MP3播放器程序是静态的,进程是动态的进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域??原创 2020-06-06 20:10:01 · 253 阅读 · 0 评论 -
Java(老白再次入门) - 异常处理
本系列文章均为尚硅谷资源!如有侵权,我将立即删除!Java基础知识图解1.异常概述与异常体系结构在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的,比如:客户输入数据的格式,读取文件是否存在,网络是否始终保持通畅等等。⚪异常:在Java语言中,将程序执行中发生的不正常情况称为“异常”。 (开发过程中的语法错误和逻辑错误不是异常)⚪Java程序在执行过程中所发生的异常事件可分为两类:Error:Java.原创 2020-06-06 09:46:53 · 362 阅读 · 0 评论