内部类 匿名内部类

华为OD,非应届
力扣,三套题,就可以有面试的机会

KafaKa
Docker

面试题:
Spring IOC的循环依赖如何解决

自己创建的容器如何

A->B
B->C
C->A

使用Set,因为Set不能放入重复的元素,

创建A类时,把A类的全限定类名,放到Set中,
注入B类时把B类的全限定类名,放到Set中

RPC机制

面试问题

image-20210826162413184

面试回答技巧:

告诉答案,然后说自己在项目中如何使用

对象拷贝

深拷贝

clone方法

Java8新特性

Lambda表达式

函数式接口

Key promoter X

很多人不愿意切换 IDE 就是因为快捷键的习惯问题。刚好这个插件可以提醒快捷键,有代入感,提醒的多了你就会了。对于新手建议安装熟悉一下快捷键。

CamelCase

命名风格转换插件

Git Commit Template

老是有人吐槽你提交的 Git 不规范?你可以试试这个插件。它提供了很好的 Git 格式化模版,你可以按照实际情况格式化你的提交信息。

GsonFormat

地址:https://plugins.jetbrains.com/plugin/7654-gsonformat
一键根据json文本生成java类

Rainbow Brackets

地址:https://plugins.jetbrains.com/plugin/10080-rainbow-brackets

彩虹颜色的括号 看着很舒服 敲代码效率变高

Translation

地址:https://plugins.jetbrains.com/plugin/8579-translation
最好用的翻译插件,功能很强大,界面很漂亮

Material Theme UI

Material Theme UI 提供了非常丰富的主题配色,都挺好看的,对 IDEA 原装的黑白双煞配色审美疲劳的小伙伴可以尝试一下。

这里有一张图片

GsonFormat

安装插件后,使用代码生成快捷键,Windows (alt+insert),Mac (command + N) 即可选择 GsonFormat,然后粘贴如下 Json 数据即可自动生成对应的实体类代码:

这里有一张图片

参考资料

https://zhuanlan.zhihu.com/p/111256215

https://zhuanlan.zhihu.com/p/336169273

https://segmentfault.com/a/1190000021735431

工具栏上的setting按钮消失

今天更新idea之后,工具栏上的setting和Project Structure等常用功能都消失了。

image-20210826110059379

在idea工具栏上添加常用功能

image-20210826110313828

添加分隔条

image-20210826110520912

添加Setting到工具栏

image-20210826110612426

image-20210826110731551

image-20210826111031773

image-20210826110809167

问题描述

今天我打开电脑,执行git status命令的时候报错如下:

1
2
3
4
5
UserHelloWorld@DESKTOP-SH3MQPI MINGW64 /g/Blog/exam (master)
$ git status
fatal: bad object HEAD

UserHelloWorld@DESKTOP-SH3MQPI MINGW64 /g/Blog/exam (master)

原因

我不知道,可能是昨天电脑蓝屏了,可能是其他原因。

解决方案

我记得我昨天有推送到远程仓库,从远程仓库拉取即可:

1
git fetch origin master

运行结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
UserHelloWorld@DESKTOP-SH3MQPI MINGW64 /g/Blog/exam (master)
$ git fetch origin master
error: refs/heads/master does not point to a valid object!
error: refs/remotes/origin/HEAD does not point to a valid object!
error: refs/remotes/origin/master does not point to a valid object!
remote: Enumerating objects: 2809, done.
remote: Counting objects: 100% (1031/1031), done.
remote: Compressing objects: 100% (508/508), done.
remote: Total 2809 (delta 672), reused 776 (delta 474), pack-reused 1778
Receiving objects: 100% (2809/2809), 1.14 MiB | 738.00 KiB/s, done.
Resolving deltas: 100% (1573/1573), done.
From github.com:lanlan2017/exam
* branch master -> FETCH_HEAD
* [new branch] master -> origin/master

UserHelloWorld@DESKTOP-SH3MQPI MINGW64 /g/Blog/exam (master)

这样git status就正常了

1
2
3
4
5
6
7
8
UserHelloWorld@DESKTOP-SH3MQPI MINGW64 /g/Blog/exam (master)
$ git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

UserHelloWorld@DESKTOP-SH3MQPI MINGW64 /g/Blog/exam (master)

参考资料

httpsnewbedev.comgit-status-shows-fatal-bad-object-head

笔记

yml配置如何注入Redis对象

读取配置文件,注入RedisUtil对象:

Component表示自动装配

下面的注解表示配置文件中以xxx打头的信息,作为对象的信息

image-20210826091220104

image-20210826091728818

image-20210826091736374

设计模式,讲单例,工厂,代理模式即可,因为讲的时候要讲如何应用。

自我评价,不要写热爱学习什么的,而是写自己的性格的信息。

简历:技术能力

示例1

  • 熟悉掌握java编程语言,容器集合类,多线程,反射机制,异常机制,IO流等。
  • 一些常见的设计模式,单例模式,简单工厂模式,代理模式。
  • 掌握web开发html,JavaScript,ajax,json,xml,实现前后端分离。
  • 熟悉Spring,MyBatis,SpringMVC,AOP等开源框架技术;
  • 掌握Socket编程,TCP,UDP,HTTP协议,httpcilent网络爬虫。
  • 掌握mysql关系型数据库,sql语句,JDBC访问数据库。
  • 掌握数据库的事务机制,隔离级别,数据库的锁,索引。
  • 了解管理jar包的maven,以及springboot微服务,微信公众号接入。
  • 了解RPC远程调用,Redis和kafka消息队列的应用。
  • 掌握数据结构与算法,熟悉对链表,队列,堆栈,二叉树,哈夫曼树。
  • 掌握常用的排序算法,和二分查找,贪心算法,分治,动态规划的应用。
  • 了解最小生成树的两种算法,最短路径,拓扑排序(AOV),关键路径(AOE),压缩矩阵。

示例2

1、熟悉JAVA语言编程,掌握JAVA的一些高级特性:集合、反射、多线程、IO流, 掌握JDBC编程,曾自己实现一个ORM小工具;
2、掌握数据结构的基本算法,熟悉常用的数据结构:链表、栈、队列、排序、树、哈希、图等;
3、掌握计算机网络的基本知识,熟悉socket编程,掌握TCP、UDP、HTTP协议;
4、掌握关系型数据库的基本理论知识,熟悉索引机制、事务管理、锁机制等;以及NoSql数据库Neo4j的基本用法,能利用JAVA对其进行增删改查;
5、掌握基本前端知识:HTML、JS、JSP等,能熟练使用AJAX进行前后端交互;
6、掌握J2EE基本组件:Servlet、Filter、Listener;
7、掌握SpringMVC+Spring+Mybatic三大框架,并自己模拟实现了其主要功能;
8、掌握SpringIOC/DI以及AOP编程,并亲自实现过核心功能代码;
9、掌握JSON、XML数据交互格式;
10、掌握常用的几种设计模式:工厂模式、单例模式、观察者模式等;

示例3

  • 熟练掌握Java编程语言,掌握集合、多线程、反射机制、异常处理等;
  • 掌握基本的数据结构:数组、链表、栈与队列、二叉树、图等;
  • 掌握基本算法:排序、树遍历、图遍历等;
  • 熟悉IO流,熟悉Socket编程;
  • 掌握JDBC编程,掌握关系数据库基本理论,熟练使用sql语句;
  • 能利用反射机制实现ORM技术;
  • 掌握Json、XML数据交换格式;
  • 掌握J2EE组件:Servlet、Filter、Listener;
  • 熟练使用SSM(Spring+SpringMVC+Mybatis)框架进行软件开发;
  • 熟悉Spring IOC/DI机制,熟悉AOP编程;
  • 掌握正则表达式;
  • 掌握HTML/CSS/JS,熟悉Bootstrap前端框架;
  • 熟练使用AJAX,掌握前后端分离的开发方式;
  • 熟悉UML建模,熟练使用svn、Eclipse、Idea、Visio等工具;
  • 掌握常见的设计模式,如单例模式、工厂模式、观察者模式、代理模式等;

示例4

  • 掌握JAVA语法,能熟练编写JAVA程序;了解JAVA的异常处理机制;
  • 掌握链表、栈、队列、树、图等数据结构,能够很好应用;
  • 掌握查找、快速排序、冒泡排序、归并排序、堆、定制排序、二分查找算法等;
  • 掌握对数据库的基本操作,能够熟练应用与编程中;掌握SQL语句,能够进行堆数据库的增删改查;掌握数据库的事务,索引机制,锁机制。
  • 掌握Collection分支、Map分支等常用集合;
  • 掌握Runable、Thread等线程,了解线程的睡眠、让步、同步监视器及同步锁等;
  • 理解反射机制、类加载的主要流程;
  • 掌握IO流,能够实现字符、文件的输入输出,掌握正则表达式的基本用法;
  • 了解常用的设计模式,掌握linux常用命令,虚拟机的基本操作。
  • 掌握web开发、TCP、UDP等网络编程;掌握JSP技术、XML、AJAX、JS、HTML等;
  • 掌握Spring框架;数据库连接池,Mybatis 、AOP等相关技术;
  • 掌握redis、maven等常用工具,熟悉微服务架构,spring boot。
  • 熟悉微信公众号的开发,并能搭建简单的微信公众号

示例5

  • 掌握JAVA基础编程语言以及集合、多线程等;
  • 掌握基本数据结构:链表、栈、队列以及二叉树、哈希表等;
  • 掌握基本排序算法:快速排序、选择排序等;
  • 掌握关系数据库知识:事务、存储过程、触发器、视图等,熟练使用SQL语句;
  • 掌握Spring IOC/DI,熟悉AOP编程;
  • 掌握Spring、Spring MVC、MyBatis等框架
  • 掌握ORM技术,独立实现过底层代码;
  • 掌握基本的Web前端知识:HTML5、CSS、JavaScript;
  • 熟练前后端分离开发模式,掌握JSON、XML等数据交换格式;
  • 熟练使 Eclipse、IDEA、MySQL、GIT、SVN等工具;
  • 掌握计算机网络的基本知识;
  • 掌握Socket编程,掌握TCP/IP,UDP,HTTP协议;

跨域

启动idea之后,取消加载,即可进入到setting界面。

image-20210825142736300

添加

新建一个工程demomvc

JDBCAPI

MyBastis

MySQL驱动

image-20210825143210345

image-20210825143204949

如果使用mapper.xm形式,则在resource目录里创建的mapper目录,然后在mapper里面写上Mapper.xml文件

image-20210825143239310

配置文件改成.yml形式,如果没有xml,则下面的mybatis不需要配置。

image-20210825143415537

image-20210825143556009

SpringBoot的默认数据源HikariCP

image-20210825143836203

image-20210825144617927

上面的跨域允许,需要在方法前面写注解,如果有多个跨域的的话要写很多。比较麻烦。

可以使用配置类来完成:

image-20210825144821299

image-20210825145224560

docker

如果有多个微服务,有些服务的端口相同,一台机器没有两个相同的端口。

可以使用docker来转接。

docker用来管理微服务。

同类型的容器

image-20210825145737447

SpringBoot与SSM有什么区别

SpringBoot包含SSM,生成微服务。

SpringCloud可以更好的管理微服务

给新建的项目配置maven设置

image-20210825104710162

image-20210825104913641

image-20210825104825509

创建新Spring WEB项目

image-20210825104513032

image-20210825105227874

image-20210825105431948

image-20210825105547929

image-20210825105652346

编写代码

提升主类

创建Controller

创建controller包

image-20210825110302723

image-20210825110311988

创建Controller

image-20210825110502742

image-20210825110536649

TestController.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestController {
@RequestMapping("test")
@ResponseBody
public String test(String input) {
return "YouInput:" + input;
}
}

创建静态页面

image-20210825110819272

index.html

image-20210825110845676

1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Spring 微服务HelloWorld</title>
</head>
<body>
<h3>Spring 微服务 HelloWorld</h3>
</body>
</html>

设置端口

image-20210825111101071

idea中运行

image-20210825111147926

浏览器验证

主页

image-20210825111249869

控制器

image-20210825111409211

maven打包jar

复制项目路径

image-20210825111523641

打开cmd,进入项目的根路径,输入mvn package进行打包:

image-20210825111638093

打包成功效果

1
2
3
4
5
6
7
8
9
10
11
12
13
PS G:\dev2\idea_workspace\demo> mvn package
[INFO] Scanning for projects...
[INFO]
......
[INFO] --- spring-boot-maven-plugin:2.5.4:repackage (repackage) @ demo ---
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 18.170 s
[INFO] Finished at: 2021-08-25T11:17:11+08:00
[INFO] ------------------------------------------------------------------------
PS G:\dev2\idea_workspace\demo>

打包会在项目根路径下生成一个target目录:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
PS G:\dev2\idea_workspace\demo> ls


目录: G:\dev2\idea_workspace\demo


Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2021.08.25 11:15 .idea
d----- 2021.08.25 10:57 .mvn
d----- 2021.08.25 10:57 src
d----- 2021.08.25 11:17 target
-a---- 2021.08.25 10:57 395 .gitignore
-a---- 2021.08.25 10:59 8128 demo.iml
-a---- 2021.08.25 10:57 891 HELP.md
-a---- 2021.08.25 10:57 10070 mvnw
-a---- 2021.08.25 10:57 6608 mvnw.cmd
-a---- 2021.08.25 10:57 1430 pom.xml


PS G:\dev2\idea_workspace\demo>

java -jar运行

进入target目录,可以看到生成的jar文件:demo-0.0.1-SNAPSHOT.jar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
PS G:\dev2\idea_workspace\demo\target> ls


目录: G:\dev2\idea_workspace\demo\target


Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2021.08.25 11:12 classes
d----- 2021.08.25 11:12 generated-sources
d----- 2021.08.25 11:12 generated-test-sources
d----- 2021.08.25 11:17 maven-archiver
d----- 2021.08.25 11:16 maven-status
d----- 2021.08.25 11:17 surefire-reports
d----- 2021.08.25 11:12 test-classes
-a---- 2021.08.25 11:17 17345973 demo-0.0.1-SNAPSHOT.jar
-a---- 2021.08.25 11:17 3739 demo-0.0.1-SNAPSHOT.jar.original


PS G:\dev2\idea_workspace\demo\target>

然后输入

1
java -jar .\demo-0.0.1-SNAPSHOT.jar

命令运行,这个jar:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
PS G:\dev2\idea_workspace\demo\target> java -jar .\demo-0.0.1-SNAPSHOT.jar

. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.5.4)

2021-08-25 11:21:57.305 INFO 12348 --- [ main] com.example.demo.DemoApplication : Starting DemoApplication v0.0.1-SNAPSHOT using Java 11.0.4 on DESKTOP-SH3MQPI with PID 12348 (G:\dev2\idea_workspace\demo\target\demo-0.0.1-SNAPSHOT.jar started by 18190 in G:\dev2\idea_workspace\demo\target)
2021-08-25 11:21:57.305 INFO 12348 --- [ main] com.example.demo.DemoApplication : No active profile set, falling back to default profiles: default
2021-08-25 11:21:59.990 INFO 12348 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 9000 (http)
2021-08-25 11:22:00.084 INFO 12348 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2021-08-25 11:22:00.146 INFO 12348 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.52]
2021-08-25 11:22:00.381 INFO 12348 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2021-08-25 11:22:00.381 INFO 12348 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2889 ms
2021-08-25 11:22:01.256 INFO 12348 --- [ main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: class path resource [static/index.html]
2021-08-25 11:22:01.553 INFO 12348 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 9000 (http) with context path ''
2021-08-25 11:22:01.568 INFO 12348 --- [ main] com.example.demo.DemoApplication : Started DemoApplication in 5.231 seconds (JVM running for 6.034)

浏览器验证

运行的效果和在idea中运行一样

image-20210825112354798

Maven

配置

本地仓库位置

image-20210825091404428

镜像

阿里云镜像

image-20210825091441476

指定JDK版本

image-20210825091529800

不要用自带的maven

image-20210825091708640

image-20210825091738379

华为OD
要刷力扣

maven工程

image-20210825092929236

idea 微服务示例

更改maven位置

image-20210825093853608

idea创建微服务

image-20210825094426470

image-20210825094804099

提升级别

image-20210825094856419

主类所在的包下扫描,所以要把主类提升到上一级别。

image-20210825095338848

image-20210825095508947

优化:

image-20210825095536999

image-20210825095634472

maven打包

到项目对应的目录中,然后输入

1
mvn package

找到打包好的jar包

进入target目录:

1
cd .\target\

查看目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
PS G:\dev2\idea_workspace\webdemo\target> ls


目录: G:\dev2\idea_workspace\webdemo\target


Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2021.08.25 10:06 classes
d----- 2021.08.25 10:05 generated-sources
d----- 2021.08.25 10:06 generated-test-sources
d----- 2021.08.25 10:16 maven-archiver
d----- 2021.08.25 10:15 maven-status
d----- 2021.08.25 10:16 surefire-reports
d----- 2021.08.25 10:06 test-classes
-a---- 2021.08.25 10:17 17345790 demo-0.0.1-SNAPSHOT.jar
-a---- 2021.08.25 10:16 3594 demo-0.0.1-SNAPSHOT.jar.original


PS G:\dev2\idea_workspace\webdemo\target>

可以看到有个jar文件:

1
demo-0.0.1-SNAPSHOT.jar

运行jar包

1
java -jar .\demo-0.0.1-SNAPSHOT.jar

运行成功效果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
PS G:\dev2\idea_workspace\webdemo\target> java -jar .\demo-0.0.1-SNAPSHOT.jar

. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.5.4)

2021-08-25 10:23:10.611 INFO 13044 --- [ main] com.example.DemoApplication : Starting DemoApplication v0.0.1-SNAPSHOT using Java 11.0.4 on DESKTOP-SH3MQPI with PID 13044 (G:\dev2\idea_workspace\webdemo\target\demo-0.0.1-SNAPSHOT.jar started by 18190 in G:\dev2\idea_workspace\webdemo\target)
2021-08-25 10:23:10.611 INFO 13044 --- [ main] com.example.DemoApplication : No active profile set, falling back to default profiles: default
2021-08-25 10:23:12.923 INFO 13044 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 9000 (http)
2021-08-25 10:23:12.954 INFO 13044 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2021-08-25 10:23:12.954 INFO 13044 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.52]
2021-08-25 10:23:13.095 INFO 13044 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2021-08-25 10:23:13.095 INFO 13044 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2250 ms
2021-08-25 10:23:13.642 INFO 13044 --- [ main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: class path resource [static/index.html]
2021-08-25 10:23:13.814 INFO 13044 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 9000 (http) with context path ''
2021-08-25 10:23:13.829 INFO 13044 --- [ main] com.example.DemoApplication : Started DemoApplication in 4.687 seconds (JVM running for 5.481)

image-20210825095832386

浏览器即可访问

进入浏览器即可访问:

image-20210825102421351

image-20210825102439235

展示自己最硬的地方,让面试官咬最硬的地方

image-20210824184023775

真实可信:

中规中矩:不要花里胡哨,浅色浅灰色。普普通通。

突出优势:学习好的,说细一点,做的不好的地方,只言片语。

不要超过一页,不要翻页。

不要描述培训经历
无形中要求更高,面试官心里预期会更高,面试官一旦发现你不会的,面试官心里落差大,对你不利。

image-20210824185140040

职责与成功,遇到的问题和解决方法。

面试的提问是,用来否定你的

项目是用来肯定你的。

计算机知识都是离散的,项目是用来串联这些离散的知识的。

项目可以说成课程设计,不要说成商业。

用来混创新学分的,用来学习的,用力训练的。

项目不要说成与别人合作的,这样面试官会认为是别人做的,你自己只是打酱油的。

框架

线程

线程池

技术要点要细化

十条左右

如果你数据结构学的好,你就说

image-20210824191357036

只写前三点

1(了解,例如:了解Linux基本命令),2(理解,就是能够应用),7(熟悉,讲过的都需要熟悉)

image-20210824191859689

绩点低不要写绩点。四六级分数低,不要写,写通过就行了。