Java
文章平均质量分 52
Java及源码剖析
码农渔夫
我是一名新时代广深漂农民工,擅长Go、K8S、gRPC等相关技术。
2023年开始,已全面拥抱Rust高性能,All in AI大模型,期待!
路漫漫其修远兮,吾将上下而求索。有空来我知识星球逛逛:Meta-Go笔记(免费)
展开
-
String你真的懂了吗?
1 String的基本特性string:字符串,使用一对双引号表示string s1 = "hello";string s2 = new string("hello");String 声明为final的,不可被继承String 实现了Serializable接口:表示字符串是支持序列化,实现了Comparable接口:表示String可以比较大小String在JDK8及以前内部定义了final char[] value用于存储字符串数据,JDK9时改为byte[]2、String的内存分配原创 2022-02-24 23:31:55 · 494 阅读 · 0 评论 -
当初面试Java岗位时的笔记,接近2万字,拿走不谢
1、Java基础谈谈你对Java平台的理解?典型回答:首先Java是一种面向对象的语言,最显著的特性就是“一次编译,到处运行”,具有跨平台的能力。另外就是具有垃圾回收集,大部分情况下我们程序员不需要去关心内存的分配和回收。谈谈你对接口和抽象类的区别?接口特点:接口是对行为的一种抽象,是抽象方法的集合,定义的方法是没有方法具体实现,但可以定义default默认方法。接口中所有方法访问权限都是自动声明为public,及接口中定义的成员变量也会自动变为public static find修饰的静态原创 2022-02-24 23:22:16 · 898 阅读 · 0 评论 -
RabbitMQ整合Spring Boot,实现第一个Hello World
1、什么是MQ(message queue),是一个队列,先进先出。2、为什么要MQ?流量消峰:应用解藕异步处理3、启动# 后台启动rabbitmq-server -detached接下来我们实现我们第一个Hello World(1)导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>s原创 2021-10-14 19:07:57 · 145 阅读 · 0 评论 -
Java虚拟机基础
第一章 了解1、JVM的位置从最底层到应用层:硬件 -->操作系统(如:Linux)–> JVM --> 字节码文件 --> user,JVM是运行在操作系统上的,与硬件没有直接互交。2、Java代码执行流程Java源码 —> Java编译器(词法分析–>语法分析–>语法抽象语法树–>语义分析–>注解抽象语法树–>字节码生成器) --> 字节码文件 -->Java虚拟机( 类加载器 --> 字节码校验器 --> 翻译原创 2021-10-12 18:30:05 · 445 阅读 · 0 评论 -
面试手写-双重检查,搞定了吗?
双重判断思路:先判断,再加锁,又在判断public class SingletonDouble { private static volatile SingletonDouble INSTANCE = null; private SingletonDouble(){} public static SingletonDouble getInstance() { // 第一次判断为空,则上锁;如果不为空,那么就直接return INSTANCE if (原创 2021-10-05 13:51:16 · 82 阅读 · 0 评论 -
使用枚举方式写-单例模式,太棒了
枚举方式,不仅可以解决线程同步,还可以防止序列化。package com.hax.singleton;public enum Singleton3 { INSTANCE; public static void main(String[] args) { for (int i = 0; i < 100; i++) { new Thread(() -> { Singleton3 instance = Sin原创 2021-10-04 16:59:38 · 116 阅读 · 0 评论 -
手撕单例模式-饿汉式
单例模式应用场景:只需要一个实例的时候使用1、第一种写法饿汉式:类加载到内存后,就实例一个单例,JVM保证线程安全优点:简单实用缺点:不管你用还是不用,只要类装载时就完成实例化了public class Singleton { // 使用final必须初始化 private static final Singleton INSTANCE = new Singleton(); /** * 把构造方法设置成私有的,这样new不了 * 想要使用,怎原创 2021-10-04 16:55:20 · 111 阅读 · 1 评论 -
2021七夕Push上传代码至GitHub时出错误如下
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.意思是远程:2021 年 8 月 13 日移除了对密码身份验证的支持。请改用个人访问令牌。第一步:首先生成自己的token官方文档:Creating a personal access token,注意一定要保存好你生成的token第二步:MAC用户,直接在钥key原创 2021-08-18 18:04:09 · 570 阅读 · 0 评论 -
零基础,横扫Java基础部分
Java基础部分横扫第一章 计算机认识1 概述计算机包括**硬件(hardware)和软件(software)**两部分。硬件包括计算机可以看得见的物理部分,而软件提供看不见的指令。2 计算机硬件介绍3 计算机硬件——中央处理器中央处理器(central Processing Unit,CPU)是计算机的大脑,它是从内存中获取指令,然后执行这些指令。4 计算机硬件介绍——存储设备内存中的信息在断电时会丢失磁盘驱动器:每台计算机至少有一个磁盘驱动器。硬盘(hard disk)用于永久的保存原创 2020-11-13 15:33:05 · 252 阅读 · 0 评论 -
Java继承代码案例
Java继承代码案例,不多说,直接敲代码Animal 类/** * @Author 公众号「MarkJava」 * @Date 2020/11/9 15:08 **/public class Animal { private String name; private int month; private String species; public Animal() {} public Animal(String name, int month, Stri原创 2020-11-09 15:40:24 · 1538 阅读 · 0 评论 -
GitHub标星5.2k+,超级火爆的开源项目
今天给大家推荐三个在GitHub上超火的实战项目目录清单Spring Boot实战电商项目:GitHub标星5.3k+基于SOA架构分布式电商项目:GitHub标星5.2k+基于Spring Boot + Vue后台管理系统:GitHub标星9.3k+第一个项目:mall项目介绍,mall项目是一个套完整的电商系统,采用现代主流技术栈实现。涵盖了SpringBoot2.1.3、MyBatis3.4.6、Elasticsearch6.2.2、RabbitMQ3.7.15、Redis3.2、Mo原创 2020-06-15 19:06:43 · 861 阅读 · 0 评论 -
扫面一波,ArrayList(扩容机制+面试题+基础)结合通俗易懂
本文使用Java 8+目录前言第一章 集合与数组概念第二章 集合框架1、集合的两大类2、集合创建3、集合为何需要泛型第三章 List接口1、List接口主要实现类2、迭代器2.1 为什么要迭代器2.2 什么是迭代器2.3 使用迭代器注意事项2.4 迭代器遍历的三种方法3、ListIterator是什么第四章 List接口常见面试题第五章 ArrayList源码剖析1、核心属性源码:2、构造方法(验证核心属性)3、ArrayList的扩容机制4、ArrayList扩容的核心方法。5、add方法(重点)当添.原创 2020-05-27 14:55:04 · 5901 阅读 · 1 评论 -
来一波,Java基础复习(Java 8)
前言本文是笔者复习Java8版本的时候,记录下来的知识点。本文只复习Java基础部分,而Java高级部分在另一篇来总结。目录前言第一章:运算符1、Java基本类型2、自增自减运算3、赋值运算符4、逻辑运算符5、三元运算符6、移位运算符第二章:控制流1、if-else2、迭代语句while3、for循环4、嵌套循环第三章:继承1、为什么要继承?2、继承定义3、继承好处4、继承后的特点4.1 继承后子类成员变量有何影响4.2 继承后子类成员方法有何影响4.3 重写有什么用?4.4 子类为什么不可以继承父原创 2020-05-19 19:38:50 · 3615 阅读 · 11 评论 -
吃透这篇【ArrayList、LinkedList、Vector】源码剖析,就足够了
前言本文详细解读ArrayList、LinkedList及Vector源码,包括他们实现方法的底层源码,一步一步教你读懂源码。声明,本文用的是jdk1.8+注:源码解析部分比较细,建议放慢速度一步一步去理解目录前言一、集合和数组区别1. 集合是什么2. 与数组的区别二、List集合介绍1. List特点:有序(存储顺序和取出顺序一致),可重复2. List常用的3个子类**三、ArrayList、LinkedList、Vector源码解析1. ArrayList1.1 先了解ArrayLi原创 2020-05-09 09:41:44 · 373 阅读 · 0 评论 -
超详细的HashMap底层实现原理解析,建议初学者收藏
HashMap源码前言HashMa是Java中最常用的集合类框架,也是Java语言中非常典型的数据结构,同时也是我们需要掌握的数据结构,更重要的是进大厂面试必问之一。数组特点存储区间是连续,且占用内存严重,空间复杂也很大,时间复杂为O(1)。优点:是随机读取效率很高,原因数组是连续(随机访问性强,查找速度快)。缺点:插入和删除数据效率低,因插入数据,这个位置后面的数据在内存...原创 2020-05-04 13:06:02 · 1370 阅读 · 0 评论 -
Java冒泡排序算法以及算法优化,这篇足矣……
ArrayList源码解析简介ArrayList实现了List接口,继承了AbstractList,底层是数组实现的,一般我们把它认为是可以自增扩容的数组。它是非线程安全的。使用场景一般多用于单线程环境下,它实现了Serializable接口,因此它支持序列化,能够通过序列化传输,但是实际上java类库中的大部分类都是实现了这个接口。实现了RandomAccess接口,支持快速随机访问,但...原创 2020-05-02 17:33:03 · 910 阅读 · 0 评论 -
Linux中的权限修改
1,修改文件所有者-chownchown hadoop:hadoop file/ 改变用户的所有者和所有组 2,chmod指令:可以修改文件或者目录的权限chomod 777 目录或文件777 可读、可写、可执行2,修改 tmp 目录所属用户为 root,用户组为 rootchown -R root:root /tmp如果修改目录的root的...原创 2019-10-22 22:41:05 · 235 阅读 · 0 评论 -
程序包org.springframework.boot不存在,这样解决,非常简单
当我们学习spring boot时,遇到程序包org.springframework.boot不存在,问题: Error:(4, 32) java: 程序包org.springframework.boot不存在Error:(5, 46) java: 程序包org.springframework.boot.autoconfigure不存在Error:(6, 50) java: 程序包or...原创 2020-04-10 20:51:16 · 52312 阅读 · 12 评论 -
IDEA2020新建项目时,发现没有Spring Initializr选项怎么办
最近学习springboot,但是呢,打开刚安装新的idea2020版本的,结果没有spring Initializr选项,不要急。。。首先,你打开你的idea,在打开设置settings,再次点击plugins搜索spring boot,并且勾选它,如下图,然后重启idea,就出现了。...原创 2020-04-10 16:10:40 · 12228 阅读 · 9 评论 -
解决maven中ojdbc14:11.2.0.1.0错误
maven在maven中install时出现了:ojdbc14:11.2.0.1.0错误我的出错是ojdbc14:11.2.0.1.0错误,后面改成ojdbc14:10.2.0.1.0解决如下:如果你已经安装Oracle数据,你可以进入安装目录下lib目录下,这个目录下就有ojdbc.jar驱动的,然后复制所需的jar到maven本地仓库,找到Oracle目录下添加就可以了如何还出现o...原创 2020-02-25 16:46:38 · 2841 阅读 · 5 评论 -
为什么要学习hive数据仓,它的优缺点是什么?
hive是什么,它能做什么,为什么要学习hive?hive数据仓是由美国的Facebook公司开源的,主要是为了解决海量结构日志的数据统计而诞生的。hive数据仓主要是基于Hadoop的一个开源数据仓库工具,也是Hadoop的生态圈,它不仅可以将结构化的数据文件映射为一张表,还有为我们提供SQL查询语句,容易上手,只要你懂一些MySQL数据库一些基本的SQL语句,你便轻松玩转hive数据仓。...原创 2020-04-19 23:29:31 · 872 阅读 · 0 评论 -
JVM面试常问的类加载器原理
前言最近面试Java后端开发,被面试官问到一些JVM类加载器问,我们如何巧妙的回答呢?于是我想把它总结下来,分享给大家,也许正好是你需要,如果能够帮助到大家,我会感到高兴,有些地方写得不太好,可以分享你最好的答案在评论区。作为一位Java程序员,我们避免不了要深入理解Java虚拟机的,面试也是常问的问题。类加载器class文件只有被加载到JVM中,才能运行和使用的,那么JVM如何加载c...原创 2020-04-19 23:25:05 · 234 阅读 · 0 评论 -
轻松搞定JAVA选择排序
在开发中如果考虑性能方面的,不考虑稳定的,可以使用选择排序代码实现如下:package cn.edu.day02;import java.util.Scanner;/** * 选择排序 */public class StudentManagement { public static void main(String[] args) { int[] a...原创 2018-12-05 20:05:55 · 2416 阅读 · 0 评论 -
如何快速在Mac配置JDK环境
安装JDK可以参考上篇:Mac中JDK安装第一步:确定你的JDK已经安装,可查看java -version第二步:查看你JDK安装路径,打开终端输入就可以找到Java—>home:/usr/libexec/java_home -V第三步:打开终端,使用“touch .bash_profile” 创建一个.bash_profile的隐藏配置文件,然后再次编辑使用这个命令op...原创 2020-04-09 10:53:19 · 1454 阅读 · 0 评论 -
轻松搞定Java冒泡排序速算法以及算法优化
冒泡排序的基本思路:通过对待排序系列从前向后,依次比较相邻元素的值,若发现逆序就交换,意思就是使较大的元素从前向后移,好比水低下的气泡一样逐渐向上冒泡,一个道理的。冒泡排序优缺点:优点:比较简单、空间复杂度较低、是稳定的一种排序。缺点:时间复杂度太高、效率比较慢、一轮比较都需要换位置,所以效率不高,假如现在一个数组里面有N个数,那么排序完成需要比较N*(N-1)/2次。冒泡排序规则...原创 2020-04-08 11:56:47 · 109 阅读 · 0 评论 -
处理数组越界异常
数组越界异常,这是在开发中不能出现的,一旦出现就必须修改我们编写的代码,为什么会出现数组越界问题呢,首先我们看一下代码。public static void main(String[] args) {int[] arr = {1,2,3};System.out.println(arr[3]);}创建数组,赋值3个元素,数组的索引就是0,1,2,没有3索引,因此我们不能访问数组中不存...原创 2020-04-05 10:29:18 · 3695 阅读 · 1 评论 -
详细讲解Java中的方法参数有什么作用
在我们学习Java时,有很多的Java初学者,对方法中的参数一概不知,今天我就用一个例子,讲透Java中的方法参数的作用。注意:Java中的方法参数在实际开发中可以说是一直使用了,真的很重要。Java中方法参数例子:比如:学校里的自动零售机,扔硬币,最后饮料出来学校里的自动零售机就是—>【方法】,扔硬币就是—>【参数】,最后饮料出来就是—>【返回值】代码如下:...原创 2020-03-10 23:38:52 · 3270 阅读 · 0 评论 -
详细讲解maven的配置
maven的安装其实很简单:首先下载maven下载地址:https://maven.apache.org/download.cgi根据自己的版本需求进行下载下列以Windows为例下面只要配置一些环境变量就可以使用在系统变量:新建:变量名:MAVEN-HOME变量值:你下载的maven所在的路径path:%MAVEN_HOME%\bin在配置java开发环...原创 2019-10-27 16:27:18 · 114 阅读 · 0 评论