![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 63
肆〇
后端开发
展开
-
Java知识点笔记
因为StringBuffer很多方法都是synchronized 修饰的,所以StringBuffer是线程安全的,但是其运算效率较低,而StringBuilder没有synchronized 修饰,所以StringBuilder是非线程安全的,但是其运算效率较高。一般项目中对于String的运算一般是单线程的,所以在日常的使用中一般使用StringBuilder。原创 2022-05-24 18:44:05 · 267 阅读 · 1 评论 -
什么是数据库实例
实例指的就是操作系统中一系列的进程以及为这些进程所分配的内存块。在开发过程中可能会遇到一个问题,什么是数据库实例?原创 2022-04-07 22:43:49 · 12375 阅读 · 2 评论 -
Java数字小游戏
最近看到网络视频上有一些有趣的小游戏,于是想到用Java代码实现一下:游戏玩法:由计算机随机产生1~100的整数。用户猜测计算机产生的数字(即答案),用户输入数字,如果输入的数字与答案相同则获胜。当输入的数字小于或大于答案,会出现关于输入数值与答案比较的提示信息,用户通过提示信息进一步猜测答案,直到指定次数后游戏结束。变量:输入数值 随机产生的答案 猜测回合(次数)逻辑流程:import java.util.Random;import java.util.Scanner;.原创 2022-05-05 19:18:24 · 471 阅读 · 0 评论 -
java中的值传递和引用传递
值传递(Pass By Value或者Call By Value)是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量。一般java中的基础类型数据传递都是值传递。引用传递(Pass By Reference或者Call By Reference)一般是对于对象型变量而言的,传递的是该对象地址的一个副本, 并不是原对象本身 。一般java中实例(包装)对象的传递是引用传递。一、基本类型和引用类型在内存中的不同之处int num = 10;String str = "hello"原创 2022-03-02 23:16:39 · 4358 阅读 · 0 评论 -
LinkedList数组列表内部增删改查源码分析
本文对源码中的注释进行了翻译解读,源码注释需查阅源码一、增将指定的元素追加到此列表的末尾,这个方法相当于addLast。参数 e 要追加到此列表的E类元素 返回 boolean (由Collection.add指定) public boolean add(E e) { linkLast(e); return true; }将指定的元素插入到此列表中的指定位置。将当前位置的元素(如果有的话)和随后的元素向右移动(给它们的原创 2022-03-01 18:25:27 · 189 阅读 · 0 评论 -
ArrayList数组列表内部增删改查源码分析
对源码中的注释进行翻译解读,源码注释需查阅源码一、ArrayList1.增将指定的元素追加到此列表的末尾参数 e 将要添加到此列表的元素 返回 boolean as specified by {@link Collection#add} public boolean add(E e) { ensureCapacityInternal(size + 1); // Increments modCount!! elementDat原创 2022-03-01 17:17:12 · 334 阅读 · 0 评论 -
iteration报错ConcurrentModificationException测试
测试代码,仅作个人记录,请切勿盲目参考。1.public class IterationTest { public static Integer integer= 0; public static void main(String[] args) { List<Integer> list = new ArrayList<>(); for (int i = 0; i < 10; i++) { lis原创 2022-02-28 23:00:49 · 246 阅读 · 0 评论 -
解决Hash冲突四种方法
Hash算法只是一个定义,并没有规定具体的实现简述把任意长度的输入,通过Hash算法变换成固定长度的输出,这个输出就是Hash值。哈希值的空间远小于输入的空间,所以可能会发生“哈希碰撞”,即两个不同的输入,产生了同一个输出。Hash算法常用于消息摘要的场景 MD5、SHA都属于Hash算法的实现。简单使用凡是涉及到分布式的系统,就会有负载均衡和数据分布的问题。为了让连接(或者数据)能够分布得更均匀,很多时候会使用到Hash算法 Hash取模 (hash(request) % n)...原创 2022-02-24 11:24:41 · 2425 阅读 · 0 评论 -
HashMap源码解读(一)
本文对HashMap部分源码按照出现顺序进行翻译解读,绿色英文为HashMap源码中的注释,中文为注释对应翻译,代码段中为相应源码 *仅供参考原创 2022-02-23 22:31:27 · 338 阅读 · 0 评论 -
properties配置文件乱码问题
properties配置文件出现上面的乱码问题。问题原因:配置文件的编码方式不正确,应该是UTF-8:原创 2022-02-22 19:14:10 · 2268 阅读 · 0 评论 -
递归陷入死循环的判断方法与解决措施(java代码)
怎么及时发现程序陷入死循环?首先根据死循环的判断依据:周期性调用相同方法名传入相同参数。那么只需要判断这个方法连续或非连续(多线程)传入的参数是不是和之前一样就可以了,这里我定义了两个静态参数,一个是这个方法当前传入的参数(这里暂时定为一个),另一个参数是连续传入的参数的次数,只要传入参数和当前参数不一样,那么就将当前参数进行修改覆盖,计数置为0。这样在计数达到一定值(10或20或100,具体视业务的复杂程度)的时候就判定此方法陷入了死循环。发现死循环之后需要让程序执行什么操作呢?在发现死循环之后及时原创 2022-02-20 21:34:25 · 4043 阅读 · 1 评论 -
java创建与删除文件(文件夹)
创建文件夹并在文件夹下创建文件:public class CreateFileApplication { public static void main(String[] args) { //创建文件夹,这里写文件路径,如:"src/main/java/document" File folder = new File(""); //如果文件夹不存在 if(!folder.exists()){ //创建文件夹原创 2022-02-18 16:13:01 · 1831 阅读 · 0 评论 -
java字节流和字符流的实例练习(OutputStream、BufferedOutputStream、InputStream、BufferedInputStream)
一、字节流输入输出:下面是一个字节流的输入输出案例练习,包括的类有OutputStream(输出流)、BufferedOutputStream(缓冲输出流)、InputStream(输入流)、BufferedInputStream(缓冲输输入流):public class xxPutStreamTest { public static void main(String[] args) throws IOException { String currentPath = "s原创 2022-02-17 17:41:34 · 533 阅读 · 0 评论 -
关于Spring的IOC和AOP
1、控制反转(IOC)与依赖注入(DI)1.1 Spring IOC 容器简介及其优点:Spring 框架的核心是Spring容器。容器创建对象,将它们装配在一起,配置它们并管理它们的完整生命周期。Spring 容器使用依赖注入来管理组成应用程序的组件。容器通过读取提供的配置元数据来接收对象进行实例化,配置和组装的指令。该元数据可以通过XML,Java注解或Java代码提供。Spring IOC 负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期..原创 2022-02-14 22:26:07 · 305 阅读 · 0 评论 -
OCR(文字识别)功能与ASR(语音识别)的java应用开发(基于百度智能云)
本文记录OCR(文字识别)功能与ASR(语音识别)的java应用开发(基于百度智能云)过程原创 2022-02-11 17:42:32 · 3453 阅读 · 0 评论 -
JVM系列——基础知识(学习笔记)
基于栈的指令集架构,另外一种指令集架构则是基于寄存器的指令集架构。区别:基于栈式架构的特点:跨平台性;指令集小但是指令多;设计和实现更简单,适用于资源受限的系统;避开了寄存器的分配难题;使用零地址指令方式分配;指令流中的指令大部分是零地址指令,其执行过程依赖于操作栈。指令集更小,编译器容易实现;不需要硬件支持,可移植性更好,更好实现跨平台。执行性能比寄存器要差一些。基于寄存器架构的特点:典型的应用是x86同样执行2+3的操作,其指令分别如下:寄存器原创 2022-02-10 22:11:55 · 157 阅读 · 0 评论 -
java对象形参传递修改自定义对象与基本类型包装类型的不同
基本类型的包装类型的对象:public class Test { public static void main(String[] args) { String string = "冰墩墩"; System.out.println("==========String改变属性值==========="); System.out.println("原对象:" + string); System.out.println("方法返回值:"原创 2022-02-09 22:27:32 · 774 阅读 · 0 评论 -
关于java中的配置文件
排序内部排序插入排序需要进行n-1次比较希尔排序冒泡排序需要进行n-1次比较选择排序快速排序基数排序(桶排序)归并排序(分治排序)外部排序当待排序的序列中数据元素太多无法满足内部排序的运行时,会使用外部存储进行外部排序。分为2个阶段:第一阶段,根据内存大小将序列分成若干段,每一段都能够存储在内存中,并使用内部排序方法在内存中完成排序,然后把排好序的段(初始归并段)存储到外存中。第二阶段,使用归并排序对这些初始归并段进行归并,逐渐扩大归并段的长度并减少.原创 2022-02-06 20:44:06 · 2445 阅读 · 0 评论 -
IDEA关于git的快捷操作
首先安装gitee插件,记得安装完成后点击Apply然后点击OK,然后点击gitee选项点击add accout进行登录,这里需要填写的是gitee的注册邮箱名以及密码,点击登录即可:快捷键的使用:上图中,1表示的是从远程拉取代码到本地,相当于git命令中的git pull,点击后将会出现:2表示的是将本地代码提交到缓存,相当于git commit -m'description',点击后将会出现选择操作,以及可以添加当前提交事件的描述:3表示的是从本地缓存推送到远程分...原创 2022-02-03 22:50:37 · 1937 阅读 · 0 评论 -
java从文件读取String对象与将String对象写入文件
一、输出:从java对象输出到文件中:java对象可以是String、StringBuffer、StringBuilder类型等,文件的格式可以是.txt/.doc/.docx格式等。原创 2022-01-29 19:51:32 · 8261 阅读 · 0 评论 -
java中类的加载与对象的创建
Java中一个对象的创建分两步: 加载类,创建对象。java类的加载过程:java中对象的创建过程:加载类是将所写的程序.java文件编译生成的.class文件加载到内存中,保证了对象创建的预置环境。类加载完毕后才可以创建该类的对象。第一步:加载类 当开始运行一个类,虚拟机首先试图访问指定启动类的 .main() 方法,加载该类的 .class 文件。 如果该类有父类,那么继续加载其父类,以此类推,直到加载出所有与main入口类相关的类(它的父类,父类的父类等)。...原创 2022-01-26 21:50:52 · 800 阅读 · 0 评论 -
JVM系列——运行时数据区学习笔记
class文件——>ClassLoader SubSystem——>running data area ——>GC本地方法栈、本地方法接口、本地方法库虚拟机栈:方法1(栈帧1)、方法2(栈帧2)方法区和堆是进程私有(95%是在堆区,5%是在方法区)程序技术器,虚拟机栈,本地方法栈是线程私有一个JVM实例对应一个运行时数据区(一个Runtime对象)线程:线程是一个程序的运行单元,一个进程有多个线程,每一个线程与操作系统的本地线程直接映射,当一个java线程准备原创 2022-01-25 23:17:10 · 3099 阅读 · 0 评论 -
关于java中的公共响应类
BaseResponse公共响应类原创 2022-01-20 23:07:50 · 1147 阅读 · 0 评论 -
Eureka心跳机制与自动保护机制原理分析
Eureka心跳机制:在应用启动后,节点们将会向EurekaServer发送心跳,默认周期为30秒,如果EurekaServer在多个心跳周期内没有接收到某个节点的心跳,EurekaServer将会从服务注册表中把这个服务节点移除(默认90秒)。Eureka自动保护机制:EurekaServer在运行期间会去统计心跳成功的比例在15分钟之内是否低于85%,如果低于85%,EurekaServer会认为当前实例的客户端与自己的心跳连接出现了网络故障,那么EurekaServe...原创 2021-10-18 14:39:03 · 3666 阅读 · 0 评论 -
JVM系列——StringTable
1. String的基本特性:String就是字符串类型,定义方式有两种:String s1 = "hello";String s2 = new String("hello");String类是final修饰的,不可以被继承。JDK1.9之后String、StringBuffer、StringBuilder从char[]改成byte[]了。String代表不可变的字符序列,简称不可变性。字面量定义的方式,存储在字符串常量池中。字符串常量池是不会存储相同内容的字符串的。Str.原创 2021-11-27 17:14:37 · 2728 阅读 · 0 评论 -
关于java中的容器、集合(Array、List、Map、Set......)
MapMap集合概述和特点概述:将键映射到值的对象一个映射不能包含重复的键每个键最多只能映射到一个值Map接口和Collection接口的不同Map是双列的,Collection是单列的Map的键唯一,Collection的子体系Set是唯一的Map集合的数据结构针对键有效,跟值无关;Collection集合的数据结构是针对元素有效Map集合的功能概述a:添加功能V put(K key,V value):添加元素。这个其实还有另一个功能?替换如果键是第一次存储,就直接存储元素,原创 2021-10-03 18:07:19 · 1779 阅读 · 0 评论 -
Spingboot后端项目环境配置
vue小项目先配置js环境(相当于给java配置JVM),在nodejs官网(http://nodejs.cn/)配置node环境,安装很简单,根据电脑系统来选择即可,安装完成后检查一下版本,“开始”右击开启powershell(管理员)命令窗口,输入node -version见检查node环境,npm -v检查想应工具版本。然后配置vue CLI(脚手架),同样在powershell(管理员)命令窗口,输入npm install -g @vue/cli(在vue官网上找到的),等待十分钟左右,安.原创 2021-06-18 09:12:57 · 317 阅读 · 0 评论 -
报错[已解决]:If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
报错[已解决]:If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.(SpringBoot连接数据库) Action: Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. ...原创 2021-06-04 15:50:37 · 35899 阅读 · 0 评论 -
js中的键值对互相转换
有些情况下后端传的参数需要在前端进行一一对应,以下方法是我平时用过的一些方法,不同的业务场景需求是不同的,具体要看项目中的需求以及要实现的功能,来选择下面的方法去使用,合适的才是最好的。1.下标对应这种情况适用于后端传过来的id数量少且数量级为个位数或者两位数的情况,比如1~10或1~20:<template> <span>{{front[backend.id]}}</sapn></template><script>原创 2021-08-26 22:59:16 · 2069 阅读 · 0 评论 -
JVM中常见的垃圾回收器
收集算法是内存回收的⽅法论,垃圾收集器就是内存回收的具体实现。 没有万能的垃圾收集器,我们能做的就是根据具体应⽤场景选择适合⾃⼰的垃圾收集器。收集器名称 简单介绍 线程 回收算法 优点 适用场景 备注 Serial(串行)收集器 最基本、历史最悠久的垃圾收集器。它的 “单线程” 的意义不仅仅意味着它只会使⽤⼀条垃圾收集线程去完成垃圾收集⼯作,更重要的是它在进⾏垃圾收集⼯作的时候必须暂停其他所有的⼯作线程("Stop The World" ),.原创 2022-01-10 09:32:34 · 256 阅读 · 0 评论 -
重写equals方法时重写hashCode方法的重要性
为了提高效率,采取重写hashcode方法,先进行hashcode比较,如果不同就没必要再进行equals的比较了,这样就大大减少了equals比较的次数,这对比需要比较的数量很大的效率提高是很明显的,一个很好的例子就是在集合中的使用。java中的List集合是有序可重复的,而set集合是无序不能重复的,那么怎么能保证不能被放入重复的元素呢,但靠equals方法一样比较的话,如果原来集合中以后又10000个元素了,那么放入10001个元素,难道要将前面的所有元素都进行比较,看看是否有重复,欧码噶的,这个原创 2021-12-11 22:02:19 · 340 阅读 · 0 评论 -
BIO、NIO、AIO 的区别
BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。NIO:New IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞IO,异步 IO 的操作基于事件和回调机制。...原创 2021-12-18 21:05:52 · 671 阅读 · 0 评论 -
关于集合中的线程安全问题
关于集合中的线程安全问题原创 2021-11-16 21:10:28 · 4429 阅读 · 0 评论 -
表分类设计和命名规则
在项目中,数据库表的命名对于项目开发的影响也是至关重要的,表名一般由两部分拼接而成,一种是表示实际的业务含义,比如面向对象中的实际的对象的名称;另一部分是前缀或者后缀(具体是前缀和后缀要看公司或者具体的项目来定,规模大一点的公司是有自己的设计规范这里不做赘述),表示的就是这张表的类型。在业务开发中,清晰的命名对于实际开发中的逻辑梳理至关重要,尤其是对于数据库表的数量较多的项目来说,混乱的表命名将会严重影响开发效率。原创 2022-01-16 22:10:43 · 2387 阅读 · 0 评论 -
[报错解决](Error Creating bean with name ‘xxx‘)类问题解决思路
遇到Error Creating bean with name ’ '这类问题的解决方案一、配置问题:spring配置文件中检查包是否扫描,仔细检查自己的配置文件里和相关的配置路径。在项目配置文件(xxxConfig.class)中的配置:在application.yml文件中的配置:或者检查一下启动类上的注解配置:二、注解问题:Controller、service层的注解缺失会造成创建bean时出现错误。@Controller@Service三、依赖包缺原创 2021-11-29 21:06:47 · 168360 阅读 · 3 评论 -
slf4j、log4j日志级别与配置
slf4j、log4j日志级别与配置日志共有8个级别(优先级从低到高,优先级越高表示过滤的log信息越多,显示的log信息越少)OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL原创 2022-01-14 23:02:26 · 3994 阅读 · 0 评论 -
bug[TypeError:Failed to execute ‘fetch‘ on ‘Window‘: Request with GET/HEAD method cannot have body.]
这种情况原因在于在get方法(@GetMapping注解的方法)中使用了@RequestBody原创 2022-01-13 16:34:10 · 2358 阅读 · 0 评论