自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 FeignException$InternalServerError: [500] during [POST]:Lombok 某些注解不能用于远程调用

远程调用社交登录方法的时候,报了这么个神奇的错误:查阅了 N 篇博客,最后总结出一个结论:这是由于远程调用时参数传递有误导致的。首先第一想到的排查方式:我们知道,Feign 远程调用时,是会将对象转为 JSON 进行远程调用的,所以得在公共调用接口方法的参数加上 @RequestBody 注解,远程微服务的 Controller 方法也得加上这个 @RequestBody 注解;OK,问题来了,我的项目里,明明都有添加上注解,但还是报错了:百思不得其解之时

2021-09-09 10:00:44 10588 3

原创 大厂计划 | 计算机网络高频面试题01:应用层 HTTP

目录HTTP 是什么?HTTP 常见的状态码有哪些?HTTP 常见首部字段有哪些?GET 和 POST 请求方法的区别?对 HTTP 的了解?对 HTTPS 的了解?HTTPS 如何建立连接?其间交互了什么?HTTP 与 HTTPS 的区别?HTTP/1.1 比 HTTP/1.0 多了哪些优化?HTTP/2.0 对 HTTP/1.1 做了哪些优化?HTTP 是什么?HTTP 是 Web 客户端与服务器之间进行传输文字、图片、音频、视频等超文本数据的约定和...

2021-07-30 23:26:33 653

原创 大厂计划 | MySQL 高频面试题06:其它

目录char 与 varchar 的区别?varchar(10) 与 varchar(20) 的区别?char 与 varchar 的区别?char 的长度是固定的 varchar 的长度是可变的比如,char(10) 和 varchar(10) 假如都存储字符串 "abc"。那 char(10) 就完完全全地占据10个字节,虽然包括了 7 个空字符串。而 varchar(10) 则只会占据 3 个字节,剩下 7 个字节的位置并不会算到内存中。cha...

2021-07-27 17:25:01 676

原创 大厂计划 | MySQL 高频面试题05:性能调优

目录MySQL 的问题排查手段有哪些?一条 SQL 语句执行很慢的原因?MySQL 你是怎么调优的?MySQL 的问题排查手段有哪些?show processlist:用来查看当前所有事务所在线程的情况。其中的 state 比较重要,可以判断事务所在线程是否被阻塞了。explain:用来查看当前 SQL 语句的执行计划。比较重要的有: key 是将会使用到的索引;rows 是预估的扫描行数。可以通过这些来判断当前 SQL 语句是否使用到了索引、索引是否有效、是否选错了索引。.

2021-07-27 17:18:45 325

原创 大厂计划 | MySQL 高频面试题04:主从复制、读写分离与分库分表

目录谈谈你对主从(从服务器=备库,二者概念一样)复制的了解?主备延迟、主备同步延迟是什么?怎么产生的?如何解决?谈谈你对读写分离的了解?谈谈你对分库分表中的分表切分的了解?分库分表后的 ID 是怎么生成的?谈谈你对主从(从服务器=备库,二者概念一样)复制的了解?MySQL 的主从复制,就是将 MySQL 主数据库上的数据复制到从数据库中去。主从复制的目的是为了实现数据库的读写分离:写操作和实时性较强的读操作则访问主数据库;读操作则访问从数据库。从而使数据库具有更.

2021-07-27 17:07:23 1406

原创 大厂计划 | MySQL 高频面试题03:事务 & 锁 & MVCC

你是如何理解 InnoDB 引擎中的事务的?从事务的作用出发,事务可以让一组操作要么全部成功要么全部失败,从而保证数据的最终一致性。请你描述下事务的特性(ACID:原子性、一致性、隔离性、持久性)原子性原子性(Atomicity)是指事务的所有操作要么全部提交成功,要么全部失败回滚。原子性可以用 undo log 回滚日志来保证,回滚日志会记录当前事务的反向操作,当事务执行过程中出现异常时,就会触发回滚,执行 undo log 日志的回滚操作,将数据恢复到事务开始执

2021-07-27 17:05:14 248

原创 大厂计划 | MySQL 高频面试题02:索引

目录谈谈你对索引的理解?索引的底层使用的是什么数据结构?为什么 InoDB 索引实现不用红黑树而用 B/B+ 树呢?为什么 InnoDB 索引实现选用 B+ 树而不是 B 树呢?索引的分类?谈谈你对哈希索引的理解?谈谈你对聚簇索引的理解?谈谈你对覆盖索引的理解?你知道什么叫做回表嘛?谈谈你对最左前缀匹配原则的理解?如何知道创建的索引有没有被使用到?什么情况下索引会失效?敖丙:一口气搞定 MySQL 索引所有知识点 https://mp.weixin.qq.

2021-07-27 17:03:05 213

原创 大厂计划 | MySQL 高频面试题01:MySQL 体系结构

请说下你对 MySQL 架构的了解大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。Server 层Server 层包括连接器、查询缓存、分析器、优化器以及执行器,其中查询缓存在 MySQL 8.0 版本开始就不再有了。连接器:负责管理连接和权限验证 查询缓存:如果查询的语句命中了查询缓存则直接返回结果分析器:进行 SQL 语句的词法分析和语法分析 执行器:负责操作引擎,返回结果存储引擎层存储引擎层负责数据的存储和提取,提供读写接口。它的

2021-07-20 22:26:14 333

原创 Error during artifact deployment. See server log for details.出现原因

忘记加这个斜杆了。。。。

2021-07-04 16:42:17 149

原创 CMD编译运行 Java 程序

1. 编译不了同一目录下含有组合类的类使用 javac *.java 进行批量编译就行了。2. 编译不了不同目录下含有组合类并且使用了 import 语句的类去到导的包的上一层目录然后加上包名去编译,如: 注意:用 javac 编译时得使用 \ 进行分隔 3. 运行不了含有 package 语句的类退回到 package 目录的上一层目录并且加上包名去运行,如: 注意:用 java 运行时得使用 . 来进行分隔,而不用 \ ...

2021-05-11 13:49:01 134

原创 《Java 编程思想》学习笔记 12 | 字符串与正则表达式

1.String是不可变的也就是之前提到的,它是final的;当需要改变字符串的内容时,String类的方法都会返回一个新的String对象;同时,如果内容没有改变,String的方法只是返回指向原对象的引用而已,节约了存储空间,避免了额外的开销。2.StringBuilder比StringBuffer更高效StringBuilder是JavaSE5引入的,StringBuffer是之前用的(线程安全的,因此开销也会大一些)。最常用的方法有append() toString() delete()

2021-03-31 21:18:32 230

原创 《Java 编程思想》学习笔记 11 | 通过异常处理错误

1.Throwable类型是异常类型的根类2.try块与异常处理程序catch在一个方法中如果抛出了异常,那么该方法就会在抛出异常的过程中结束;要想让该方法继续执行,那么就得在该方法中捕获异常:使用try块即可。 捕获(抛出的)异常之后当然就得处理异常,而catch就是异常处理程序:捕获异常之后,异常类型会作为参数与catch的参数进行匹配,匹配到了就跳转到相应的catch块中执行异常处理程序。并且catch可以有多个,跳转到其中一个执行之后便会停止(这与switch不同)。try {}

2021-03-26 22:05:57 129

原创 《Java 编程思想》学习笔记 10 | 持有对象

1.数组的尺寸是有限制的,而容器没有数组是具有固定尺寸的。 而容器是没有固定尺寸的,你可以把任意数量的对象放置在容器中,并且不需要指定容器的大小。2.容器应配合泛型来使用通过给容器规定泛型,使该容器只能添加该泛型类型的对象。 容器也接收可以向上转型为泛型类型的对象。ArrayList<Apple> list = new ArrayList<>(); //只能存储Apple类型的对象 3.当不需要索引时,可以使用foreach语法来遍历容器(演示遍历List容器)

2021-03-26 10:07:44 158

原创 《Java 编程思想》学习笔记 09 | 内部类

1.在外部类的普通方法里可以直接创建内部类对象public class Outer { private class Inner { Inner() {} } public void show() { Inner inner = new Inner(); //直接创建 }}2.在main方法里,没有外部类对象的引用就无法创建普通内部类对象,静态内部类除外可以使用.this或.new来获取外部类对象的引用 没有外部类对

2021-03-24 00:02:35 250

原创 《Java 编程思想》学习笔记 08 | 接口

1.抽象类是普通类和接口之间的一种中庸之道如果你不想创建某一个类的对象,而是仅仅想把它用作给子类继承,那么就可以使用抽象类,因为你无法new一个抽象类的对象,如果你new了,编译器就会报错。2.含有抽象方法的类叫抽象类,也可以不含抽象方法,用abstract修饰类就行抽象方法:用abstract修饰,没有方法体,用分号结尾。如:abstract void f();抽象类:用abstract修饰,包含抽象方法,如:abstract class Father {...}抽象类之所以不像接口那

2021-03-19 21:19:26 274

原创 《Java 编程思想》学习笔记 07 | 多态

1.动态绑定=后期绑定=运行时绑定绑定:将一个方法调用同一个方法体关联起来被称作绑定。 动态绑定:在运行时,方法调用根据对象的类型(而不是引用的类型)与正确的方法体进行绑定。也叫后期绑定或运行时绑定。 Java中除了static方法和final方法(private方法也是final方法)之外,其它所有的方法都是后期绑定。 要想实现动态绑定,就必须具有某种机制,以便在运行时能判断对象的类型,从而调用正确的方法,在这种机制中,不管怎样,都必须在对象中安置某种“类型信息”。 动态绑定机制随编程语言的不

2021-03-17 22:56:43 284 3

原创 《Java 编程思想》学习笔记 06 | 复用类

1.创建的类总是在继承如果创建的类没有明确声明继承自哪个类,那么该类就会默认继承自Object类。2.用super可以调用从基类继承而来的方法假如子类重写了父类的一个方法,而你又想调用父类的方法,就可以使用super来调用。3.初始化基类Java仅有一种方法用来保证正确的初始化基类:在子类构造器中调用基类构造器。注意:子类的默认构造器也会默认调用基类的构造器,前提是基类的构造器是不带参的构造器。 如果基类的构造器是有参的,没有无参的,那么就必须显式的定义出子类的构造器并调用基类

2021-03-16 21:35:54 181 2

原创 《Java 编程思想》学习笔记 05 | 访问权限控制

1.访问权限控制的等级以最大权限到最小权限依次为:public(接口访问权限) protected(继承访问权限+包访问权限) 包访问权限 private(类访问权限)2.每个类中只有一个public类Java中明确规定,一个类中只能有一个public类,其它的类仅仅只是为了给这个public类提供支持,并且包外的世界无法访问这些非public类。3.package与importpackage a.b.c; //将下面的Myclass这个编译单元声明为a.b.c这个类库的一部分

2021-03-16 21:33:44 796

原创 《Java 编程思想》学习笔记 04 | 初始化与清理

1.new表达式与构造器new表达式会返回对新建对象的引用,但这与构造器一点关系也没有,构造器本身并没有任何返回值。并且与返回值为空void明显不同,构造器不会返回任何东西。2.默认构造器当你什么构造器也没写时,系统会自动默认的给你一个无参构造器。 但当你写了一个有参构造器,并且当前类中仅有这一个构造器时,那你就只能用这个有参构造器来创建对象,而默认的无参构造器会自动消失,你若想要同时获得一个无参构造器,那就只能再重新写一个无参构造器出来,这样,在当前类中才会同时存在一个无参构造器和一个有参构

2021-03-14 22:02:32 254

原创 《Java 编程思想》学习笔记 03 | 执行控制流程

1.数字不再与布尔值挂钩Java不允许我们将数字作为布尔值使用。2.Math库的静态方法random()该方法是产生0和1(左闭右开,包括0但不包括1)之间的一个double值。3.逗号操作符Java里唯一用到逗号操作符的就是for循环的控制表达式。在for循环的初始化和步进控制部分,可以使用一系列由逗号分隔的语句,这些语句会独立执行。4.switchswitch语句的选择因子必须是int或char那样的整数值。Random rand = new Random(47); /

2021-03-12 08:17:31 182

原创 《Java 编程思想》学习笔记 02 | 操作符

1.将一个对象赋值给另一个对象首先,我们应该明确,赋值操作的是对象的引用。当我们对一个对象进行赋值操作时,实际上我们操作的是对对象的引用。所以,倘若将一个对象赋值给另一个对象时,实际上是将引用从一个地方复制到另一个地方。比如,当我们对相同类型的实例对象a和b使用a = b,那么a和b都指向原本只有b指向的那个对象。class Tank { int level;}class Assignment { public static void main(string[] ar

2021-03-10 21:29:35 136

原创 《Java 编程思想》学习笔记 01 | 一切都是对象

1.对象存储到什么地方所有的Java对象都存放在堆中,堆是一种通用的内存池,位于RAM区中。2.基本类型与newnew将对象存储在堆里,但是如果new一个特别是小的、简单的变量(基本类型),往往不是很有效。因此,Java中是直接创建一个并非是引用的“自动”变量,该变量直接存储基本类型的值,并置于堆栈中,会变得更加高效。3.永远不需要销毁对象Java有一个“垃圾回收器”,用来监视用new创建的所有对象,并辨别那些不会再被引用的对象。随后,释放这些对象的内存空间,以便供其它新的对象使用。

2021-03-10 21:07:24 111

空空如也

空空如也

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

TA关注的人

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