- 博客(101)
- 收藏
- 关注
原创 Java反射机制的理解和在项目中的应用场景
Java反射机制的理解Java程序中的对象在运行时可以表现为两种类型,即编译时类型和运行时类型。例如 Person p = new Student();,这行代码将会生成一个p变量,该变量的编译时类型为Person,运行时类型为Student。有时,程序在运行时接收到外部传入的一个对象,该对象的编译时类型是Object,但程序又需要调用该对象的运行时类型的方法。这就要求程序需要在运行时发现对象和类的真实信息,而解决这个问题有以下两种做法:第一种做法是假设在编译时和运行时都完全知道类型的具体信息,
2022-05-13 14:59:13 1399
原创 Mysql面试题总结2022
目录MySQL引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性索引问题什么是索引?索引有哪几种类型?索引的基本原理索引设计的原则?创建索引的原则(重点)使用索引查询一定能提高查询的性能吗?为什么前缀索引B树和B+树的区别数据库为什么使用B+树而不是B树联合索引是什么?为什么需要注意联合索引中的顺序?事务事物的四大特性(ACID)介绍一下?什么是事务的隔离级别?MySQL的默认隔离级别是什么?锁按照锁的粒度分数据库锁有哪些?从锁的类别上分MySQL都有哪些
2022-03-30 15:37:49 315
原创 并发编程(线程)面试题总结2022
目录并发编程三要素是什么?在 Java 程序中怎么保证[多线程]的运行安全?什么是多线程,多线程的优劣?形成死锁的四个必要条件是什么创建线程有哪几种方式?继承 Thread 类实现 Runnable 接口实现 Callable 接口说一下 runnable 和 callable 有什么区别?线程的 run()和 start()有什么区别?为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run() 方法?说说线程的生命周期及五种基本状态?sleep() 和 wait()
2022-03-28 16:44:54 832 1
原创 Java基础面试题总结2022
Java基础知识是面试中重要的一环,问题的回答要往更深的程度上进行思考回答。希望这里的总结能在面试中帮助到你。如果小伙伴发现哪里有错误可以评论指出,我这边会及时优化!文章目录1、==和equals比较2、hashCode与equals3、final finally finalize区别4、String、StringBuffer、StringBuilder的区别及应用场景5、重载和重写的区别6、接口和抽象类的区别(问的很多)6、Java反射反射应用场景Java获取反射的三种方法7、JAVA 异常分类及处.
2022-03-25 22:24:07 1046
原创 10 个牛逼的单行代码编程技巧,你会用吗?
标题本文列举了十个使用一行代码即可独立完成(不依赖其他代码)的业务逻辑,主要依赖的是Java8中的Lambda和Stream等新特性以及try-with-resources、JAXB等。1、对列表/数组中的每个元素都乘以2// Range是半开区间 int [] ia = range(1, 10).map(i -> i * 2).toArray(); List<Integer> result = range(1, 10).map(i -> i * 2).boxed().col
2022-01-18 09:17:39 474
原创 IDEA中Maven依赖下载失败解决方案
使用IDEA进行Maven项目开发时,时不时会遇到pom.xml报错的情况,其中很大概率是因为Maven依赖的jar包下载失败,找来找去也没有找到是什么问题,困扰了很多程序猿,这里给出IDEA中Maven依赖下载失败解决方案,给大家参考,实测有用。文章目录首先检查网络有没有问题,确定网络没有问题,请看下一步多次点击重新导入Maven依赖的按钮![在这里插入图片描述](https://img-blog.csdnimg.cn/c89087c5eb144f78a41083ea45049a4e.png?x-o.
2021-10-18 17:05:03 749 1
原创 MySQL删除表的三种方式
drop tabledrop 是直接删除表信息,速度最快,但是无法找回数据例如删除 user 表:`drop table user;`truncate (table)truncate 是删除表数据,不删除表的结构,速度排第二,但不能与where一起使用例如删除 user 表:`truncate table user;`delete fromdelete 是删除表中的数据,不删除表结构,速度最慢,但可以与where连用,可以删除指定的行例如删除user表的所有数据`delete fr
2021-10-18 16:52:48 534
原创 什么是面向对象
文章目录面向对象(OOP)概述面向过程和面向对象的区别面向对象三大特性五大原则面向对象的三大特性五大基本原则总结面向对象(OOP)概述从我们开始接触Java这门语言后,就有人告诉我们这是一门面向对象的语言。说的最多的是new个对象,其实并不知道什么是对象。以为对象就是一个class(类),并不觉得有什么特殊。直到很久之后,面试官问到什么是OOP,嘴巴都是一个大O,OOP?WTF?那人厌恶的说到就是面向对象编程。我说:Java就是面向对象,就是一切以对象为载体,去编程,去面对。面试官: go
2021-10-18 16:30:36 1414
原创 JVM、JRE和JDK的关系
JVMJava Virtual Machine是Java虚拟机,Java程序需要运行在虚拟机上,不同的平台有自己的虚拟机,因此Java语言可以实现跨平台。JREJava Runtime Environment包括Java虚拟机和Java程序所需的核心类库等。核心类库主要是java.lang包:包含了运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。JDKJava D
2021-10-18 16:20:06 92
原创 IDEA中设置Services(Run Dashboard)
微服务项目的开发过程中,工程会非常多,经常要启动很多个服务,才能完成一项测试。启动的多了,容易开发者带来错乱的感觉,很不方便管理。在idea作为开发工具时,推荐一个很好用的功能–Run Dashboard(Service)。不同版本显示问题。Run Dashboard(Services)面板如下设置打开Run Dashboard (View-》Tool Windows-》Run Dashboard)如果上述的选项里没有Run Dashboard,可以在工程目录下找.idea文件夹下的workspa
2021-06-17 16:50:22 2711 1
原创 修改IDEA运行内存,更加流畅
IDEA修改内存,使运行更流畅一:打开修改内存的文件在idea最上面打开Help–Edit Custom VM Options…进去之后会看到IDEA默认配置二:默认参数的含义:我们所要修改的其实就是JVM的内存分配-Xms128m JVM初始分配的堆内存(最小内存)-Xmx512m JVM最大允许分配的堆内存,按需分配-XX:PermSize=64M JVM初始分配的非堆内存-XX:MaxPermSize=128M JVM最大允许分配的非堆内存,按需分配三:修改后的参数及参数解释
2021-06-04 12:12:12 1575
原创 设计模式第二篇工厂模式
工厂方法模式**定义:**定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。**类型:**创建类模式类图:工厂方法模式代码interface IProduct { public void productMethod();}class Product implements IProduct { public void productMethod() { System.out.println("产品"); }}
2021-01-11 15:59:49 131 1
原创 设计模式之单例模式
单例模式**定义:**确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。**类型:**创建类模式类图:类图知识点:1.类图分为三部分,依次是类名、属性、方法2.以<<开头和以>>结尾的为注释信息3.修饰符+代表public,-代表private,#代表protected,什么都没有代表包可见。4.带下划线的属性或方法代表是静态的。5.对类图中对象的关系不熟悉的朋友可以参考文章:设计模式中类的关系。单例模式应该是23种设计模式中最简单的一种模式了。它
2021-01-11 15:14:15 104 1
原创 swagger 以及swaggerUI使用的步骤
1.swagger,可以这么理解swagger是接口规范。Rest Api 传递参数的除了get请求外,put post,需要传递json。或者就是直接都通过传递json到后台这里主要介绍一下springboot后台整合swagger的使用步骤。如果要查看swagger(OpenApi)的规范,可以参考git的官方文件规范。springboot 整合swagger的简单基本使用。第一步:在pom.xml文件中引入依赖:<dependency> <groupId>io
2020-12-09 12:22:11 701
原创 svn用户名和密码都正确,但是登录不了
以前用过svn,并且用过代理同时保存了用户名和密码,结果就是一直用保存的用户名和密码登录,但svn居然不报错,一直不停的跳登录界面。看了很多办法,差不多的回答都是那几点:1、windows自带的或用户自己安装的防火墙屏蔽了相应的端口2、客户端主机由于路由等原因无法连接到svn服务器主机3、客户端错误地配置了代理4、服务端服务没打开我的问题就是SVN服务没开启。接下来说说SVN服务的开启。1.打开【控制面板】→【管理工具】→【服务】2.找到【visual SVN Sever】/ Vi
2020-11-09 10:13:22 11236 3
原创 理解java的三大特性之多态
面向对象编程有三大特性:封装、继承、多态。封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。继承是为了重用父类代码。两个类若存在IS-A的关系就可以使用继承。,同时继承也为实现多态做了铺垫。那么什么是多态呢?多态的实现机制又是什么?请看我一一为你揭开:所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类
2020-11-05 17:10:43 278 1
原创 oracle一次插入多条数据(insert all)
问题:公司的项目,有个功能每次使用需要向数据库插入很多数据,导致页面等待很长时间才有结果。数据库:oracle11gid:采用sequence自增每次循环,都会查询一次sequence,然后insert一条数据,性能非常低。采用insert all的方式由于insert all方式插入多条时,通过sequence获取的值是同一个,不会自动获取多个,所以id需要通过其他方式设置,(我这里采用触发器方式自动设置id)1、创建测试表:create table test_insert(
2020-11-05 11:21:37 8785 2
原创 IntelliJ IDEA 项目文件旁边都有0%classes,0% lines covered
IntelliJ IDEA项目文件旁边都有0%classes,0% lines covered。不知不小心点到哪里,idea项目里面的文件都有0%classes,0% lines covered这些东西,看着很不舒服.解决方法:按快捷键ctrl + ALT + F6弹出如下框,取消勾选–>点击Show Selected就可以去掉了。希望可以帮助到您!...
2020-11-02 13:55:11 630
原创 IDEA自动导包配置总结
IDEA实用功能之----自动导包设置自动导包是什么意思?原本我们在eclipse中,如果要引用一个方法,发现缺少这个方法所需要的包,需要手工去输入。比如我们要用到FileInputStream流,需要在前面输入import java.io.*而在IDEA中,通过简单的设置不但会帮你解决自动导入你想要的包(即你只要自己用方法就行,所依赖的包IDEA会帮你搞定);除此之外,IDEA还会帮你优化引入包的结构(即删除一些没有的import的语句)下面是Auto Import设置步骤详解。Setting
2020-10-30 17:08:04 1124
原创 java.sql.SQLException: Access denied for user ‘‘@‘localhost‘ (using password: NO) 出现原因和解决办法
今天我在复习mysql数据库中,写JDBC测试代码的时候,在使用Junit测试运行程序的时候,遇到了这个错误 :java.sql.SQLException: Access denied for user ''@'localhost' (using password: NO) ,从该报错的字面意思 就可以知道是没有使用数据可密码,但是我在数据可的properties文件中,写了数据库密码了呀。怎么会报这 种错误呢,经过多番排查终于找到了错误,由于我的粗心大意,在使用DriverManager...
2020-09-27 16:32:26 11946 1
原创 U盘安装WIN10时显示 windows无法安装到这个磁盘 选中的磁盘采用GPT分区形式
安装操作win10操作系统的时候遇到这个问题,记录一下这个错误的解决办法。 错误:windows无法安装到这个磁盘 选中的磁盘采用GPT分区形式 解决办法: win8/win10系统均添加快速启动功能,预装的win8/win10电脑默认都是UEFI引导和GPT硬盘,传统的引导方式为BIOS(.
2020-09-27 16:24:07 8176
原创 Spring核心功能IOC和AOP详解
1、IOC和DIIOC: 控制反转即控制权的转移,将我们创建对象的方式反转了,以前对象的创建是由我们开发人员自己维护,包括依赖关系也是自己注入。使用了spring之后,对象的创建以及依赖关系可以由spring完成创建以及注入,反转控制就是反转了对象的创建方式,从我们自己创建反转给了程序创建(spring)DI: Dependency Injection 依赖注入spring这个容器中,替你管理着一系列的类,前提是你需要将这些类交给spring容器进行管理,然后在你需要的时候,不是自己去定义,而是
2020-09-27 16:00:19 368
原创 数据库事务的四大特性和隔离级别
事务的特性(ACID)**事务:**把一组密不可分的操作系列集合在一起,这些操作要么全部执行,要么全部不执行。原子性(Atomicity):原子性是指事务是一个不可分割的工作单位,事务的操作要么都发生,要么都不发生.一致性(Consistency):事务前后数据的完整性必须保持一致。隔离性(Isolation):事务隔离性是指多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务干扰,多个并发之间的数据要相互隔离。持久性(Durability):持久性是指一个事务一旦被提交,它对数据库中数
2020-09-27 15:27:38 126
原创 SpringBoot开发:模板引擎Thymeleaf
目录 1. 引入2. 什么是模板引擎?3. Thymeleaf1. 简介2. 导入Thymeleaf3. 使用Thymeleaf4. 简单测试5. thymeleaf语法1、th属性2、标准表达式语法 本文主要介绍SpringBoot给我们推荐的Thymeleaf模板引擎,这是一个高级语言的模板引擎,语法更简单且功能更强大 参考:https://www.jianshu.com/p/7c27c50f24ec 1. 引入 在以前,我们通常将前端交给我们的html..
2020-09-27 13:46:45 275
原创 JAVA初始化与清理
1.构造器:这是一个在创建对象时被自动调用的特殊方法,确保初始化,java会在用户有能力操作对象之前自动调用相应的构造器,由编译器调用,与类名相同,无返回值。(1)不接受任何参数的构造器叫做默认构造器。(2)如果你没有定义构造器,编译器自动帮你创建默认构造器,但是如果你定义了构造器,编译器就不会再去创建默认构造器。例子:class Bird2{ Bird2(int f){} Bird(double d){}}public class NoSynthesis{ public
2020-09-25 14:04:11 133
原创 数据结构和算法----链表
链表(Linked List)是不同于数组的另一种数据结构,它的存储单元(即结点或元素)除了包含任意类型的数据之外,还需要包含指向另一个结点的引用,后文会用术语链接表示对结点的引用。下面会列出链表与数组的具体不同:(1)数组需要一块连续的内存空间来存储;而链表则恰恰相反,通过指针将零散的内存串联在一起。(2)数组在插入和删除时,会做数据搬移,其时间复杂度是 O(n);而链表只需考虑相邻结点的指针变化,因此时间复杂度是 O(1)。(3)当随机访问第 K 个元素时,数据可根据首地址和索引计算出对应的
2020-08-27 17:32:14 176
原创 SpringBoot系列——MyBatis-Plus整合封装
前言MyBatis-Plus是一款MyBatis的增强工具(简称MP),为简化开发、提高效率,但我们并没有直接使用MP的CRUD接口,而是在原来的基础上封装一层通用代码,单表继承我们的通用代码,实现了单表的基础get、save(插入/更新)、list、page、delete接口,使用Vo去接收、传输数据,实体负责与数据库表映射。这样做的目的是与我们之前的那套jpa保持编码风格上的一致,当我们的通用接口不能满足要求时,应当先考虑使用MP的Service层CRUD接口,然后是Mapper的接口,最后才是自定
2020-08-27 17:08:19 853
转载 Java面试,值得你看的一篇整理文章。
**看到的一篇非常全面的Java面试题,非常齐全就转发来了。希望可以帮到看到这篇文章的你!由于文章篇幅过长,十三章节到十九章节的会在之后的文章中更新出来。或者可以直接到原文中看。谢谢 文章目录一、Java 基础1.JDK 和 JRE 有什么区别
2020-08-13 16:10:36 915 1
原创 面试问到关于数据库的问题,看了这篇够用了!
该篇文章从关系型数据库和非关系型数据库来讲述,牵扯到设计、索引、隔离级别以及redis的应用场景、持久化、等进行详细描述,希望对您有用!1、你是怎么设计数据库的?设计数据库首先要遵循三大范式要求:原子性、依赖性、关联性 1.原子性是指数据库表的每一列都是不可分割的原子数据项 2.依赖性是指实体的属性完全依赖于主关键字。 3.关联性是指任何非主属性不依赖于其它非主属性 对于数据库设计来说,不仅仅要考虑范式要求,为了节省查询效率,允许适当的有一些冗余字段。关系型数据库关系型数据是面向对
2020-08-04 15:01:48 1727 1
原创 Java基础面试题大全
面试的过程中基础是很重要的一环,在此总结了一下我在面试过程中遇到的基础性问题,希望能在你们面试的过中锦上添花。1.jdk jre jvm三者之间的关系java开发者工具包 java运行环境 java虚拟机jdk>>jre>>jvmJDK是Java开发工具包,是Sun Microsystems针对Java开发员的产品。JDK中包含JRE,在JDK的安装目录下有一个名为jre的目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm
2020-08-03 17:25:37 4032 11
原创 Linux安装Mysql手册
1.下载mysqlhttps://downloads.mysql.com/archives/community/以mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz为例2.上传解压上传目录:/user/aep/software/mysql#解压tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz#移动并修改文件名mv mysql-5.7.24-linux-glibc2.12-x86_64 /usr/loc
2020-07-31 16:08:03 382 1
原创 MySQL中是如何实现事务提交和回滚的?
什么是事务事务是由数据库中一系列的访问和更新组成的逻辑执行单元事务的逻辑单元中可以是一条SQL语句,也可以是一段SQL逻辑,这段逻辑要么全部执行成功,要么全部执行失败举个最常见的例子,你早上出去买早餐,支付宝扫码付款给早餐老板,这就是一个简单的转账过程,会包含两步从你的支付宝账户扣款10元早餐老板的账户增加10元这两步其中任何一部出现问题,都会导致整个账务出现问题假如你的支付宝账户扣款10元失败,早餐老板的账户增加成功,那你就Happy了,相当于马云请你吃早餐了,O(∩_∩)O哈哈~假如你
2020-07-31 14:03:18 1072 2
原创 WIN10怎么设置让系统不更新!简单四步,亲测有效
1、在左下角搜索框输入services.msc\或者用键盘快捷键win+R然后在里面输入services.mscwin+R2、进入服务列表 找到windows update然后双击打开3、进入Windows update服务设置界面,首先将服务停止,如下图所示4、接下来我们将类型选择禁止,然后点击确定按钮这样就完成了,就不用再烦心系统总是更新了!亲测有效...
2020-07-31 10:57:38 10702 2
原创 悲观锁和乐观锁
悲观锁的思想对线程并发持悲观态度,使用互斥锁的机制来解决并发问题乐观锁的思想是使用cas(compareAndSwapper)机制,不上锁,但也能解决并发问题int count=100;最后一次修改的时间戳或者版本号;1:先查询一下变量的值以及它的最后一次修改的时间戳;2:在本地修改变量的值3:对变量进行修改的时候,先比对一下最后一次修改的时间戳是否发生变化了,如果没发生变化,修改变量的值, 如果发生变化了,重试以上流程线程的使用场景: 1:项目当中使用线程池(注册完毕发邮件和短信)
2020-07-31 10:24:33 192 1
原创 线程的生命周期
新建状态(new一个线程的时候) 调用线程.start方法的时候,等待cpu分配时间片可运行状态 当cpu分配到了时间片之后,线程开始运行,运行run方法当中的内容运行状态 当线程遇到sleep、wait等方法的时候,线程会进入阻塞状态阻塞状态 当休眠时间到期,或者被notify了,线程又回到了可运行状态死亡状态 线程运行结束之后,就会销毁,被jvm的gc回收...
2020-07-31 10:21:36 173 1
原创 java当中的集合类或集合框架
collection接口是集合类的顶层接口,collections是工具类collection有两个子接口,一个list接口,一个是set接口list接口有序可重复,set接口无序不可重复list接口常用的实现类有arrayList 基于数组实现的linkedList 基于链表实现的 区别参考数组和链表区别vector 基于数组实现的,但是是线程安全的(synchronized) 线程安全:指多个线程在执行同一段代码的时候采用加锁机制,使每次的执行结果和单线程执行的结果都是一样的,不
2020-07-31 10:18:08 177 1
原创 spring的特性?谈谈你对spring的理解?spring用来干嘛?
spring有两大核心,IOC和AOPIOC即控制反转,通常我们在项目当中需要手动new去创建对象,这种方式不利于对对象的管理,现在我们将对象的创建权利反转给spring容器,这就是控制反转。spring容器在实例化对象的时候,会根据对象之间的依赖关系,自动完成属性注入工作,这就是依赖注入AOP即面向切面编程,底层是通过动态代理的机制来实现的,支持jdk和cglib两种。默认通过jdk动态代理。通常我们在项目当中,一些公共功能的实现可以通过aop来进行解耦和统一实现,比如事务管理、日志、权限等等。
2020-07-31 10:15:36 414
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人