文章目录
一、JAVA
1.元注解
@Target({ElementType.METHOD})//注解的作用域
@Retention(RetentionPolicy.RUNTIME)//运行时注解,可以通过反射方式得到
@Inherited//可以被子类继承
@Documented
@Target是这个注解的作用域
METHOD(方法声明)
CONSTRUCTOR(构造方法声明)
FIELD(字段声明)
LOCAL VARIABLE(局部变量声明)
PACKAGE(包声明)
PARAMETER(参数声明)
TYPE(类接口)
@Retention是它的生命周期
SOURCE(只在源码显示,编译时丢弃)
CLASS(编译时记录到class中,运行时忽略)
RUNTIME(运行时存在,可以通过反射读取)
@Inherited是一个标识性的元注解,它允许子注解继承它。
@Documented,生成javadoc时会包含注解。
2,反射
得到类的字节码的几种方式:
(1)、Class.forName("com.cj.test.Person"); 这就是上边我们用的方式
(2)、对象.getClass();
(3)、类名.class;
提示:这里可以添加本文要记录的大概内容:
提示:以下是本篇文章正文内容,下面案例可供参考
二、IDEA
三 ,Mysql
1,环境
1,服务启动停止
#启动 MySQL 服务命令:
net start MySQL服务名
# 停止 MySQL 服务命令:
net stop MySQL服务名
2,登录
mysql -h 主机名 -P 端口号 -u 用户名 -p密码
3,版本
c:\> mysql -V
mysql> select version();
4,退出登录
exit
或
quit
2,数据库操作
##1、查看所有的数据库
show databases;
2、创建数据库
create database 数据库名;
3、使用数据库
use 数据库名;
4、查看某个库的所有表
show tables; #要求前面有use语句
show tables from 数据库名;
5、建表
create table student(
id int,
name varchar(20)
);
6、查看表库的创建信息
show create table 表名;
show create database 库名;
7,删表删库
drop table 表名称;
drop table if exists 表名称;
drop database 数据库名;
8,默认字符集
my.ini配置文件
[mysql] #大概在63行左右,在其下添加
...
default-character-set=utf8 #默认字符集
[mysqld] # 大概在76行左右,在其下添加
...
character-set-server=utf8
collation-server=utf8_general_ci
9,查看编码命令
show variables like 'character_%';
show variables like 'collation_%';
10,数据导入
mysql> source d:\mysqldb.sql
11,查看表结构
DESC employees;
3,修改表
1,追加一个列
ALTER TABLE 表名 ADD 【COLUMN】 字段名 字段类型 【FIRST|AFTER 字段名】;
ALTER TABLE dept80
ADD job_id varchar(15);
2,修改一个列
ALTER TABLE 表名 MODIFY 【COLUMN】 字段名1 字段类型 【DEFAULT 默认值】【FIRST|AFTER 字段名
2】;
ALTER TABLE dept80
MODIFY last_name VARCHAR(30);
ALTER TABLE dept80
MODIFY salary double(9,2) default 1000;
3, 重命名一个列
ALTER TABLE 表名 CHANGE 【column】 列名 新列名 新数据类型;
ALTER TABLE dept80
CHANGE department_name dept_name varchar(15);
4, 删除一个列
ALTER TABLE 表名 DROP 【COLUMN】字段名;
ALTER TABLE dept80
DROP COLUMN job_id;
5, 重命名表
RENAME TABLE emp
TO myemp;
ALTER table dept
RENAME [TO] detail_dept;
4,清空表
TRUNCATE TABLE detail_dept;
问题
读问题:脏读,幻读,不可重复读
写问题:丢失更新
四、Maven
maven仓库:https://mvnrepository.com/
<!-- 阿里云镜像地址 -->
<mirrons>
<mirnor>
<id>nexus-aliyun</id>
<mirron0f>central</mirronOf>
<name>Nexus aliyun</name>
<unl>http://maven.aliyun.com/nexus/content/gnoups/public</url>
</mirnor>
</mirrors>
<!--测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>
<!--jar包剔除-->
<dependency>
<groupId>com.nk</groupId>
<artifactId>system</artifactId>
<version>0.0.1</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
五 、Spring
1,IOC
IOC控制反转,把对象创建和对象之间的调用过程,交给 Spring 进行管理
使用 IOC 目的:为了耦合度降低
IOC 底层原理:
xml 解析、工厂模式、反射
IOC(BeanFactory 接口)
1、IOC 思想基于 IOC 容器完成,IOC 容器底层就是对象工厂
2、Spring 提供 IOC 容器实现两种方式:(两个接口)
(1)BeanFactory:IOC 容器基本实现,是 Spring 内部的使用接口,不提供开发人员进行使用
* 加载配置文件时候不会创建对象,在获取对象(使用)才去创建对象
(2)ApplicationContext:BeanFactory 接口的子接口,提供更多更强大的功能,一般由开发人
员进行使用
* 加载配置文件时候就会把在配置文件对象进行创建
IOC 操作 Bean 管理(概念)
1、什么是 Bean 管理
(0)Bean 管理指的是两个操作
(1)Spring 创建对象
(2)Spirng 注入属性
2、Bean 管理操作有两种方式
(1)基于 xml 配置文件方式实现
(2)基于注解方式实现
IOC 操作 Bean 管理(bean 生命周期)
1、生命周期
(1)从对象创建到对象销毁的过程
2、bean 生命周期
(1)通过构造器创建 bean 实例(无参数构造)
(2)为 bean 的属性设置值和对其他 bean 引用(调用 set 方法)
(3)调用 bean 的初始化的方法(需要进行配置初始化的方法)
(4)bean 可以使用了(对象获取到了)
(5)当容器关闭时候,调用 bean 的销毁的方法(需要进行配置销毁的方法)
3、bean 的后置处理器,bean 生命周期有七步
(1)通过构造器创建 bean 实例(无参数构造)
(2)为 bean 的属性设置值和对其他 bean 引用(调用 set 方法)
(3)把 bean 实例传递 bean 后置处理器的方法 postProcessBeforeInitialization
(4)调用 bean 的初始化的方法(需要进行配置初始化的方法)
(5)把 bean 实例传递 bean 后置处理器的方法 postProcessAfterInitialization
(6)bean 可以使用了(对象获取到了)
(7)当容器关闭时候,调用 bean 的销毁的方法(需要进行配置销毁的方法)
2,AOP
1、什么是 AOP
(1)面向切面编程(方面),利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得
业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
(2)通俗描述:不通过修改源代码方式,在主干功能里面添加新功能
AOP 底层使用动态代理
@before: 前置通知,在方法执行之前执行。
@After:后置通知,在方法执行后执行。
@AfterReturning: 返回通知,在方法返回结果之后执行。
@AfterThrowing:异常通知,在方法抛出异常之后执行。
@Around:环绕通知,围绕着方法执行。
六、Mybatis
1.插入数据后返回主键
https://mybatis.org/mybatis-3/zh/getting-started.html
在mapper.xml的<insert>标签里插入语句里面添加:
<selectKey resultType="java.math.BigDecimal" order="AFTER" keyProperty="id">
SELECT ARCHIVES_GROUP.CURRVAL from DUAL
</selectKey>
或者
<selectKey resultType="java.math.BigDecimal" order="BEFORE" keyProperty="id">
SELECT ARCHIVES_GROUP.Nextval from DUAL
</selectKey>
//ARCHIVES_GROUP是序列
//nextval的值是每调用一次就增加一次;currval的值调用时,还是和自身会话的当前值一样
七,SpringBoot
1,pom依赖
<!--依赖管理-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.0</version>
</parent>
<!-- 当前项目里面重写配置,maven版本管理就就近原则-->
<properties>
<mysql.version>5.1.43</mysql.version>
</properties>
<dependencies>
<!--Web 场景启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--yml提示信息-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!--实体类生成geter,seter等方法以及日志-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!--打包插件,把项目打成jar包,直接在目标服务器执行即可-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--打包不用打包yml提示信息-->
<configuration>
<excludes>
<exclude>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
2,注解
1,@Configuration
2,@Bean、@Component、@Controller、@Service、@Repository
3,@ComponentScan、@Import
4,@Conditional 条件装配:满足Conditional指定的条件,则进行组件注入
5,@ImportResource 原生配置文件引入
6,@ConfigurationProperties
7,@PathVariable @RequestHeader ,@RequestParam ,@CookieValue参数注解
@ModelAttribute、 @RequestParams @MatrixVariable
、@RequestBody
3,自动配置
1,@SpringBootConfiguration
2,@ComponentScan
3,@EnableAutoConfiguration,@AutoConfigurationPackage,自动配置包,@Import(AutoConfigurationImportSelector.class)
4,yml文件配置
# debug模式开启配置项
debug: true
#可以指定静态资源路径
spring:
mvc:
static-path-pattern: /res/**
web:
resources:
static-locations: [classpath:/haha/]
八, Linux
`
vim 打开编辑
i 修改
ecs+: q!退出不修改 wq保存修改退出。
`
1,修改静态ip
vi /etc/sysconfig/network-scripts/ifcfg-ens33
systemctl restart network
2,
九,Docker
1,安装
CentOS7能上外网,安装相关环境
yum -y install gcc
yum -y install gcc-c++
yum install -y yum-utils
设置stable镜像仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
设置阿里云仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装DOCKER CE
yum -y install docker-ce docker-ce-cli containerd.io
启动docker
systemctl start docker
测试查看
docker version
docker run hello-world
卸载
systemctl stop docker
yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
重启服务器
systemctl daemon-reload
systemctl restart docker
启动 docker & 设置 docker 开机自启
systemctl enable docker
阿里云镜像加速
2,常用命令
帮助启动类命令
· 启动docker: systemctl start docker
· 停止docker: systemctl stop docker
· 重启docker: systemctl restart docker
· 查看docker状态: systemctl status docker
· 开机启动: systemctl enable docker
· 查看docker概要信息: docker info
· 查看docker总体帮助文档: docker --help
· 查看docker命令帮助文档: docker 具体命令 --help
镜像命令
· 列出本地主机上的镜像:docker images
· 查找镜像: docker search [OPTIONS] 镜像名字
· 下载镜像: docker pull 某个XXX镜像名字
· 查看镜像/容器/数据卷所占的空间: docker system df
· 删除镜像: docker rmi 某个XXX镜像名字ID
docker rmi -f 镜像ID
· 删除多个: docker rmi -f 镜像名1:TAG 镜像名2:TAG
· 删除全部: docker rmi -f $(docker images -qa)
容器命令
· 拉取镜像: docker pull ubuntu
· 新建+启动容器: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明(常用):有些是一个减号,有些是两个减号
--name="容器新名字" 为容器指定一个名称
-d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行)
-i:以交互模式运行容器,通常与 -t 同时使用
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用也即启动交互式容器(前台有伪终端,等待交互)
-P: 随机端口映射,大写P
-p: 指定端口映射,小写p
· 启动交互式容器(前台命令行): docker run -it centos /bin/bash
· 列出当前所有正在运行的容器: docker ps [OPTIONS]
OPTIONS说明(常用):
-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n:显示最近n个创建的容器。
-q :静默模式,只显示容器编号。
· 退出容器
· run进去容器,exit退出,容器停止
· run进去容器,ctrl+p+q退出,容器不停止
· 启动已停止运行的容器: docker start 容器ID或者容器名
· 重启容器: docker restart 容器ID或者容器名
· 停止容器: docker stop 容器ID或者容器名
· 强制停止容器: docker kill 容器ID或容器名
· 删除已停止的容器: docker rm 容器ID
· 一次性删除多个容器实例: docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm
· 启动守护式容器(后台服务器): docker run -d 容器名
· redis 前后台启动演示case
· 前台交互式启动: docker run -it redis:6.0.8
· 后台守护式启动: docker run -d redis:6.0.8
· 查看容器日志: docker logs 容器ID
· 查看容器内运行的进程: docker top 容器ID
· 查看容器内部细节: docker inspect 容器ID
· 进入正在运行的容器并以命令行交互: docker exec -it 容器ID bashShell
· 重新进入: docker attach 容器ID
十,git
.gitignore
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
.mvn/wrapper/maven-wrapper.jar
修改总项目的.gitignore,把小项目里的垃圾文件在提交的时候忽略掉
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.jar
**/mvnw
**/mvnw.cmd
**/.mvn
**/target
.idea
**/.gitignore
**/README.md
十一,vue
在vs code中创建代码片段:
文件 => 首选项 => 用户代码片段 => 新建全局代码片段/或文件夹代码片段:vue-html.code-snippets
{
"vue htm": {
"scope": "html",
"prefix": "vuehtml",
"body": [
"<!DOCTYPE html>",
"<html lang=\"en\">",
"",
"<head>",
" <meta charset=\"UTF-8\">",
" <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">",
" <meta http-equiv=\"X-UA-Compatible\" content=\"ie=edge\">",
" <title>Document</title>",
"</head>",
"",
"<body>",
" <div id=\"app\">",
"",
" </div>",
" <script src=\"vue.min.js\"></script>",
" <script>",
" new Vue({",
" el: '#app',",
" data: {",
" $1",
" }",
" })",
" </script>",
"</body>",
"",
"</html>",
],
"description": "my vue template in html"
}
}
十二,ES
十三,nginx
工具
前端工具:Visual Studio Code vscode
数据库表工具:powerdesigner
他人总结
总结:
路线
https://www.bilibili.com/read/cv5216534/
他人博客
java
https://blog.csdn.net/PorkBird/article/details/113666542
spring
1、https://blog.csdn.net/weixin_45496190/article/details/107059038
2、https://blog.csdn.net/weixin_45496190/article/details/107067200
3、https://blog.csdn.net/weixin_45496190/article/details/107071204
4、https://blog.csdn.net/weixin_45496190/article/details/107082732
5、https://blog.csdn.net/weixin_45496190/article/details/107092107
springMVC
https://blog.csdn.net/weixin_44751434/article/details/119358203?spm=1001.2014.3001.5501
Spring Cloud
- https://blog.csdn.net/u011863024/article/details/114298270
- https://blog.csdn.net/u011863024/article/details/114298282
- https://blog.csdn.net/u011863024/article/details/114298288
谷粒商城篇章1:https://blog.csdn.net/unique_perfect/article/details/111392634
谷粒商城篇章2:https://blog.csdn.net/unique_perfect/article/details/113824202
谷粒商城篇章3:https://blog.csdn.net/unique_perfect/article/details/114035775
maven http://heavy_code_industry.gitee.io/code_heavy_industry/pro002-maven/