自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(144)
  • 问答 (5)
  • 收藏
  • 关注

原创 Java面试 异常

这是因为 try 语句中的 return 返回值会先被暂存在一个本地变量中,当执行到 finally 语句中的 return 之后,这个本地变量的值就变为了 finally 语句中的 return 返回值。Checked Exception 即 受检查异常 ,Java 代码在编译过程中,如果受检查异常没有被 catch或者throws 关键字处理的话,就没办法通过编译。Unchecked Exception 即 不受检查异常 ,Java 代码在编译过程中 ,我们即使不处理不受检查异常也可以正常通过编译。

2023-05-17 18:15:55 974

原创 Java面试(4)面向对象

浅拷贝:浅拷贝会在堆上创建一个新的对象(区别于引用拷贝的一点),不过,如果原对象内部的属性是引用类型的话,浅拷贝会直接复制内部对象的引用地址,也就是说拷贝对象和原对象共用同一个内部对象。深拷贝 :深拷贝会完全复制整个对象,包括这个对象所包含的内部对象。那什么是引用拷贝呢?简单来说,引用拷贝就是两个不同的引用指向同一个对象。hashCode()的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。

2023-05-17 16:22:23 1226

原创 Java面试(3)基础语法

从 Java5 开始,Java 支持定义可变长参数,所谓可变长参数就是允许在调用方法时传入不定长度的参数。就比如下面的这个 printVariable 方法就可以接受 0 个或者多个参数。//...... }另外,可变参数只能作为函数的最后一个参数,但其前面可以有也可以没有任何其他参数。//...... }

2023-05-12 17:55:16 1069 1

原创 Java面试(2)数据类型

Java基本数据类型这八种基本类型都有对应的包装类分别为:Byte、Short、Integer、Long、Float、Double、Character、Boolean。引用数据类型引用数据类型非常多,大致包括:类、 接口类型、 数组类型、 枚举类型、 注解类型、 字符串型例如,String 类型就是引用类型、八种基本类型的包装类。简单来说,所有的非基本数据类型都是引用数据类型。

2023-05-12 17:43:34 642

原创 Java面试(1)Java概述

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C+里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行。实现原理:Java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟机,该系统就可以运行java程序。

2023-05-12 15:35:54 774

原创 spring boot 基础(1)yml文件多环境配置、${}的作用及其使用、获取系统环境变量

表示先从配置文件yml中或者启动命令中读取REDIS_DB即redis地址的值,如未能读取到,就使用后面的默认值0。当然,${}这种形式本来也可以用来获取值,比如在本yml文件中去获取其他位置定义好的值,也可以去获取相关的环境变量。在一些直接通过Jar包启动的场景中,可以在启动时手动配置相关参数,如果没有配置,也会自动获取默认值进行启动,如。该种写法形式是通过key来获取value。,如果获取不到就使用后面默认值。中选择需要使用的配置文件(

2022-10-12 09:40:05 5154 1

转载 Bash 脚本教程(六)字符串操作

上面两种语法会删除变量字符串开头的匹配部分(将其替换为空),返回剩下的部分。如果匹配成功,就删除匹配的部分,换成其他的字符串返回。如果匹配成功,就删除匹配的部分,返回剩下的部分。如果匹配成功,就删除匹配的部分,返回剩下的部分。上面两种语法都是最长匹配(贪婪匹配)下的替换,区别是前一个语法仅仅替换第一个匹配,后一个语法替换所有匹配。如果省略了string部分,那么就相当于匹配的部分替换成空字符串,即删除匹配的部分。上面例子中,echo命令的-e参数,表示将替换后的字符串的\n字符,解释为换行符。

2022-10-02 23:41:54 1215

转载 Bash 脚本教程(五)变量

Bash 没有数据类型的概念,所有的变量值都是字符串。variable 是变量名,value 是赋给变量的值。如果 value 不包含任何空白符(例如空格、Tab 缩进等),那么可以不使用引号;如果 value 包含了空白符,那么就必须使用引号包围起来。使用单引号和使用双引号也是有区别的,稍后我们会详细说明。注意,赋值号=的周围不能有空格,这可能和你熟悉的大部分编程语言都不一样。变量名由数字、字母、下划线组成;必须以字母或者下划线开头;

2022-09-26 17:01:21 2590 1

转载 Bash 脚本教程(四)引号和转义

换行符在双引号之中,会失去特殊含义,Bash 不再将其解释为命令的结束,只是作为普通的换行符。上面命令中,Bash 正常情况下会将换行符解释为命令结束,但是换行符在双引号之中就失去了这种特殊作用,只用来换行,所以可以输入多行。单引号用于保留字符的字面含义,各种特殊字符在单引号里面,都会变为普通字符,比如星号(*)、美元符号($)、反斜杠(\)等。Here 文档内部会发生变量替换,同时支持反斜杠转义,但是不支持通配符扩展,双引号和单引号也失去语法作用,变成了普通字符。这一点需要特别留意,这意味着,

2022-09-24 22:59:23 1899

转载 Bash 脚本教程(三)模式扩展

Shell 接收到用户输入的命令以后,会根据空格将用户的输入,拆分成一个个词元(token)。然后,Shell 会扩展词元里面的特殊字符,扩展完成后才会调用相应的命令。这种特殊字符的扩展,称为模式扩展(globbing)。其中有些用到通配符,又称为通配符扩展(wildcard expansion)。Bash 一共提供八种扩展。波浪线扩展?字符扩展*字符扩展方括号扩展大括号扩展变量扩展子命令扩展算术扩展Bash 是先进行扩展,再执行命令。

2022-09-24 21:58:22 198

转载 Bash 脚本教程(二)基本语法

上面例子中,只有mkdir foo命令执行失败(比如foo目录已经存在),才会继续执行mkdir bar命令。上面例子中,只有cat命令执行成功,才会继续执行ls命令。)是命令的结束符,使得一行可以放置多个命令,上一个命令执行结束后,再执行第二个命令。注意,使用分号时,第二个命令总是接着第一个命令执行,不管第一个命令执行成功或失败。上面例子中,只要cat命令执行结束,不管成功或失败,都会继续执行ls命令。上面代码表示,echo命令既是内置命令,也有对应的外部程序。type命令告诉我们,echo是内部命令。

2022-09-23 23:50:03 681

转载 Bash 脚本教程(一)简介

为了简洁,后文的命令行提示符都只使用$表示。

2022-09-23 20:47:24 2128

原创 TCP/IP详解学习笔记(一)概述

但在图 2-4中,我们又把ARP作为以太网设备驱动程序的一部分,放在 IP层的下面,其原因在逻辑上是合理的。在 TCP/IP领域中,域名系统( DNS)是一个分布的数据库,由它来提供 IP地址和主机名之间的映射信息。ARP(地址解析协议)和RARP(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换 I P层和网络接口层使用的地址。网络接口分别要发送和接收 IP、ARP和RARP数据,因此也必须在以太网的帧首部中加入某种形式的标识,以指明生成数据的网络层协议。

2022-09-15 20:49:43 306

原创 SpringBoot面试

文章目录1. SpringBoot自动装配原理前言1.1 什么是 SpringBoot 自动装配?1.2 SpringBoot 是如何实现自动装配的?1.3 如何实现一个 Starter?总结2. 什么是SpringBoot?3. Spring Boot 有哪些优点?4. Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?5. 什么是 JavaConfig?6. 注解 @EnableAutoConfiguration, @Configuration, @ConditionalOnClass

2022-09-08 17:23:25 310

原创 Java并发 JUC工具类:CyclicBarrier详解

对于CountDownLatch,其他线程为游戏玩家,比如英雄联盟,主线程为控制游戏开始的线程。在所有的玩家都准备好之前,主线程是处于等待状态的,也就是游戏不能开始。当所有的玩家准备好之后,下一步的动作实施者为主线程,即开始游戏。对于CyclicBarrier,假设有一家公司要全体员工进行团建活动,活动内容为翻越三个障碍物,每一个人翻越障碍物所用的时间是不一样的。但是公司要求所有人在翻越当前障碍物之后再开始翻越下一个障碍物,也就是所有人翻越第一个障碍物之后,才开始翻越第二个,以此类推。

2022-09-06 16:34:49 1264

原创 Java并发 JUC工具类:CountDownLatch详解

从源码可知,其底层是由AQS提供支持,所以其数据结构可以参考AQS的数据结构,而AQS的数据结构核心就是两个虚拟队列: 同步队列sync queue 和条件队列condition queue,不同的条件会有不同的条件队列。CountDownLatch典型的用法是将一个程序分为n个互相独立的可解决任务,并创建值为n的CountDownLatch。当每一个任务完成时,都会在这个锁存器上调用countDown,等待问题被解决的任务调用这个锁存器的await,将他们自己拦住,直至锁存器计数结束。

2022-09-05 19:38:02 176

原创 Java并发 JUC工具类:Semaphore详解

不同于CyclicBarrier和ReentrantLock,单独使用Semaphore是不会使用到AQS的条件队列的,其实,只有进行await操作才会进入条件队列,其他的都是在同步队列中,只是当前线程会被park。FairSync类继承了Sync类,表示采用公平策略获取资源,其只有一个tryAcquireShared方法,重写了AQS的该方法,其源码如下。说明: 首先,生成一个信号量,信号量有10个许可,然后,main,t1,t2三个线程获取许可运行,根据结果,可能存在如下的一种时序。

2022-09-03 21:34:35 276

原创 Java面试(四)JVM基础

JMM就是Java内存模型(java memory model)。因为在不同的硬件生产商和不同的操作系统下,内存的访问有一定的差异,所以会造成相同的代码运行在不同的系统上会出现各种问题。所以java内存模型(JMM)屏蔽掉各种硬件和操作系统的内存访问差异,以实现让java程序在各种平台下都能达到一致的并发效果。Java内存模型规定所有的变量都存储在主内存中,包括实例变量,静态变量,但是不包括局部变量和方法参数。

2022-09-01 22:27:50 293

原创 Java并发(三)Java中锁的分类

公平锁是指多个线程按照申请锁的顺序来获取锁,线程直接进入队列中排队,队列中的第一个线程才能获得锁。如果是一个不可重入锁,那么当前线程在调用doOthers()之前需要将执行doSomething()时获取当前对象的锁释放掉,实际上该对象锁已被当前线程所持有,且doSomething()方法没有执行完,锁无法释放。如果线程T对数据A加上共享锁后,则其他线程只能对A再加共享锁,不能加排它锁。这些锁的分类并不全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容是对每个锁的名词进行一定的解释。...

2022-08-31 22:40:07 612

原创 Java并发(二)线程基础

Java虚拟机层面所暴露给我们的状态,与操作系统底层的线程状态是两个不同层面的事。具体而言,这里说的 Java 线程状态均来自于 Thread 类下的 State 这一内部枚举类中所定义的状态:Thread state for a thread which has not yet started Thread state for a runnable thread. A thread in the runnable state is executing in the Java virtual mach

2022-08-31 22:02:13 97

原创 Java并发(一)理论基础

对于处理器重排序,JMM 的处理器重排序规则会要求 java 编译器在生成指令序列时,插入特定类型的内存屏障(memory barriers,intel 称之为 memory fence)指令,通过内存屏障指令来禁止特定类型的处理器重排序(不是所有的处理器重排序都要禁止)。假若执行线程1的是CPU1,执行线程2的是CPU2。由上面的分析可知,当线程1执行 i =10这句时,会先把i的初始值加载到CPU1的高速缓存中,然后赋值为10,那么在CPU1的高速缓存当中i的值变为10了,却没有立即写入到主存当中。..

2022-08-31 12:14:52 133

原创 Spring面试(六)WebMVC

MVC框架要做哪些事情1.将url映射到映射到类或java类的方法2.封装用户提交的数据.3.处理请求–调用相关的业务处理–封装响应数据4.将响应的数据进行渲染.Jsp/html等表示层数据。常见的服务器端MVC框架有:Struts、SpringMVC、ASP.NET MVC、ZendFramework,JSF;常见前端MVC框架:Vue、angularjs、eact、主干;由MVC演化出了另外一些模式如:MVP、MVVM等等.Spring MVC是Spring Framework的一部分,是基

2022-08-30 17:50:46 215

转载 分布式系统(三)分布式锁及实现方案

要介绍分布式锁,首先要提到与分布式锁相对应的是线程锁、进程锁。线程锁:主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现的,比如synchronized是共享对象头,显示锁Lock是共享某个变量(state)。进程锁:为了控制同一操作系统中多个进程访问某个共享资源,因为进程具有独立性,各个进程无法访问其他进程的资源,因此无法通过synchronized等线程锁实现进程锁。

2022-08-21 22:53:27 310

转载 分布式系统(二)全局唯一ID实现方案

我们系统的架构虽然是分布式的,但是在用户层应是无感知的,重复的订单主键显而易见是不被允许的。由于分布式数据库的起始自增值一样所以才会有冲突的情况发生,那么我们将分布式系统中数据库的同一个业务表的自增ID设计成不一样的起始值,然后设置固定的步长,步长的值即为分库的数量或分表的数量。Redis 实现分布式全局唯一ID,它的性能比较高,生成的数据是有序的,对排序业务有利,但是同样它依赖于redis,是不是一定要基于外界的条件才能满足分布式唯一ID的需求呢,我们能不能在我们分布式数据库的基础上获取我们需要的ID?.

2022-08-15 17:15:03 406

转载 分布式系统(一)理论基础及一致性算法

一个分布式系统是一些独立的计算机集合,但是对这个系统的用户来说,系统就像一台计算机一样。分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。简单来说就是一群独立计算机集合共同对外提供服务,但是对于系统的用户来说,就像是一台计算机在提供服务一样。分布式意味着可以采用更多的普通计算机(相对于昂贵的大型机)组成分布式集群对外提供服务。计算机越多,CPU、内存、存储资源等也就越多,能够处理的并发访问量也就越大。......

2022-08-15 16:10:49 182

原创 RabbitMQ (四)高级队列

DLX,全称,可以称之为死信交换机,也有人称之为死信邮箱。当消息再一个队列中变成死信之后,它能被重新发送到另一个交换机中,这个交换机就是 DLX,绑定 DLX的队列就称之为死信队列。消息被拒绝消息过期队列达到最大长度DLX也是一个正常的交换机,和一般的交换机没有区别,它能在任何的队列上被指定,实际上就是设置某一个队列的属性,当这个队列中存在死信时,Rabbitmq就会自动地将这个消息重新发布到设置的 DLX上去,进而被路由到另一个队列,即死信队列。..................

2022-08-14 21:09:14 519

原创 Java面试 (一) 基础

文章目录Java 概述1.什么是Java2. JDK1.5 之后的三大版本3. Jdk和Jre和JVM的区别4. 什么是跨平台性?原理是什么5. Java 语言有哪些特点?6. 什么是字节码?采用字节码的最大好处是什么7. Oracle JDK vs OpenJDK基础语法1. Java有哪些数据类型2. 字符型常量和字符串常量的区别?3. Java语言关键字有哪些?4. switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上?5. Math.round(11.

2022-08-07 23:17:10 229

原创 BigDecimal 详解

BigDecimal 可以实现对浮点数的运算,不会造成精度丢失。通常情况下,大部分需要浮点数精确运算结果的业务场景(比如涉及到钱的场景)都是通过 BigDecimal 来做的。浮点数的运算竟然还会有精度丢失的风险吗?确实会!// false为什么浮点数 float 或 double 运算的时候会有精度丢失的风险呢?这个和计算机保存浮点数的机制有很大关系。...

2022-08-07 17:14:46 402

原创 Docker发布hello-world

代码】Docker发布hello-world。

2022-08-06 23:41:45 140

原创 Docker 搭建redis集群

代码】Docker 搭建redis集群。

2022-08-06 23:19:45 135

原创 Docker知识总结 (六) Docker网络

官方文档:https://docs.docker.com/engine/reference/commandline/network/ip addr 查看宿主机网卡docker是如何处理网络访问的?(1) 启动一个容器(2) 查看容器的ip注意:如果执行docker exec报错:进入容器执行:,,安装命令;(3) linux 能否ping通容器(4) 原理Docker安装时会创建一个名为的虚拟网桥。除非我们进行另外的配置,新创建的容器都会自动连接到这个虚拟网桥提供的网络,bridge网络用于

2022-08-06 22:18:26 482

原创 Docker知识总结 (五) Dockerfile

Dockerfile是用来构建docker 镜像的构建文件!命令参数脚本!

2022-08-06 17:27:33 268

原创 Docker知识总结 (四) 数据卷

Docker将运用与运行的环境打包形成容器运行, Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来, 那么当容器删除后,数据自然也就没有了。为了能保存数据在Docker中我们使用卷。卷就是目录或文件,存在于一个或多个容器中,由Docker挂载到容器,但卷不属于联合文件系统(Union FileSystem),因此能够绕过联合文件系统提供一些用于持续存储或共享数据的特性:。...

2022-08-06 16:13:12 385 1

原创 Docker知识总结 (四) 可视化

提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。功能十分全面,基本能满足中小型单位对容器管理的全部需求。Portainer (opens new window)是一个。...

2022-08-04 12:44:30 75

原创 Docker知识总结 (三) Docker 常用命令

将webapps.dist中存在的文件复制到webapps中。docker logs -f -t 容器id。停止elasticsearch,增加内存限制。查看容器资源占用情况。

2022-08-04 12:02:33 656

原创 Docker知识总结 (二) Docker 底层原理

代码】Docker知识总结 (二) Docker 底层原理。

2022-08-03 15:00:02 148

原创 Docker知识总结 (一) Docker安装及卸载

要安装 Docker 引擎,您需要 CentOS 7 或 8 的维护版本。存档版本不受支持或测试。必须启用 centos-extras 存储库。默认情况下启用此存储库,但如果您已禁用它,则需要重新启用它。推荐使用 overlay2 存储驱动。在新主机上首次安装 Docker Engine 之前,您需要设置 Docker 存储库。之后,您可以从存储库安装和更新 Docker。安装docker docker-ce(社区版);注意:也可以下载指定版本,见官方文档。...

2022-08-03 14:04:52 171

原创 MySQL知识总结 (十二) 数据库相关概念

数据库 : 数据库(DataBase 简称 DB)就是信息的集合或者说数据库是由数据库管理系统管理的数据的集合。数据库管理系统 : 数据库管理系统(Database Management System 简称 DBMS)是一种操纵和管理数据库的大型软件,通常用于建立、使用和维护数据库。数据库管理员 : 数据库管理员(Database Administrator, 简称 DBA)负责全面管理和控制数据库系统。...

2022-08-03 10:12:40 325

原创 MySQL知识总结 (十一) MySql 日志,数据备份,数据恢复

通过整库备份+binlog进行恢复.前提是要有定期整库备份且保存了binlog日志.

2022-08-01 12:21:37 200

原创 MySQL知识总结 (六) MySQL调优

我们使用条件对id进行了筛选,在子查询(selectidfromnewsorderbyiddesclimit1000000,1)中我们只查询了id这一个字段比起select*或select多个字段节省了大量的查询开销!我们惊讶的发现mysql在数据量大的情况下分页起点越大查询速度越慢,100万条起的查询速度已经需要7秒钟。这是一个我们无法接受的数值!查询时间0.365秒,提升效率是非常明显的!适合id连续的系统,速度极快!...

2022-07-31 23:16:19 205

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除