记录111

在idea中显示springboot面板的方法

添加如下配置,重启IDEA

  <component name="RunDashboard">
    <option name="configurationTypes">
      <set>
        <option value="SpringBootApplicationConfigurationType" />
      </set>
    </option>
    <option name="ruleStates">
      <list>
        <RuleState>
          <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
        </RuleState>
        <RuleState>
          <option name="name" value="StatusDashboardGroupingRule" />
        </RuleState>
      </list>
    </option>
  </component>

版本控制

在 .gitignore 配置文件中,可以忽略要commit的文件

**/mvnw
**/mvnw.cmd
**/.mvn
**/target
.idea
**/.gitignore

虚拟机安装jdk1.8

1 下载并解压jdk1.8
tar  -zxvf  jdk-8u281-linux-x64.tar.gz(检查本机有没有jdk有的话卸载掉。安装上自己的jdk)

2 配上环境变量
vim /etc/profile
# 添加一下两行代码
export JAVA_HOME=jdk的位置
export PATH=$PATH:$JAVA_HOME/bin

3 使配置生效
source  /etc/profile

安装docker

1 卸载系统之前的docker 
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2  设置存储库
sudo yum install -y yum-utils
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

3  安装DOCKER引擎
sudo yum install docker-ce docker-ce-cli containerd.io

4  启动Docker.
sudo systemctl start docker

5 配置镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://chqac97z.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

docker安装mysql

1 拉取mysql镜像
docker pull mysql:5.7

2 启动mysql容器
# --name指定容器名字 -v目录挂载 -p指定端口映射  -e设置mysql参数 -d后台运行
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

3 进入mysql容器
docker exec -it 容器名称|容器id bin/bash
4.自启
docker update mysql --restart=always
5.注意事项
mysql 8.0 
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

docker安装redis

1 在docker hub搜索redis镜像
docker search redis

2 拉取redis镜像到本地
docker pull redis:6.0.10

3 修改需要自定义的配置(docker-redis默认没有配置文件,
自己在宿主机建立后挂载映射)
创建并修改/usr/local/redis/redis.conf
bind 0.0.0.0 开启远程权限
appendonly yes 开启aof持久化

4 启动redis服务运行容器
docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf

解释: -v /usr/local/redis/data:/data  # 将数据目录挂在到本地保证数据安全
 -v /root/redis/redis.conf:/usr/local/etc/redis/redis.conf   # 将配置文件挂在到本地修改方便
 
5  直接进去redis客户端。
docker exec -it redis redis-cli

6.自启
docker update redis --restart=always

虚拟机防火墙

1.查看防火墙状态
firewall-cmd --state
2.
# 永久关闭防火墙,防止开机自启动
systemctl stop firewalld.service #停止防火墙
systemctl disable firewalld.service #防止开机启动防火墙

SpringBoot和Spring Cloud Alibaba 版本对应关系

https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E
请添加图片描述
请添加图片描述

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2021.0.1.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

nacos(注册中心)

引入依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

启动方式 standalone

startup.cmd -m standalone

在服务的启动类上添加 @EnableDiscoveryClient 注解
在application.yml配置nacos地址和服务名

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
  application:
    name: gulimall-coupon

启动服务即可在nacos中发现服务

Fegin(声明式的远程调用)

引入依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

由于Spring Cloud Feign在Hoxton.M2 RELEASED版本之后不再使用Ribbon而是使用spring-cloud-loadbalancer,所以不引入spring-cloud-loadbalancer会报错.

解决方法:
加入spring-cloud-loadbalancer依赖 并且在nacos中排除ribbon依赖,不然loadbalancer无效


<dependency>
   <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <exclusions>
        <exclusion>
            <groupId>com.netflix.ribbon</groupId>
            <artifactId>ribbon</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!-- LoadBalancer -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
    <version>3.1.3</version>
</dependency>

在需要调用远程的服务的启动类上添加
@EnableFeignClients(basePackages = "com.xxx.feign")
注解

创建 com.xxx.feign 路径并创建接口文件

@FeignClient("gulimall-coupon")//调用的 目标服务 名字
public interface CouponFeignService {

    @RequestMapping("/coupon/coupon/member/list") //目标地址
    public R memberCoupons();

}

调用

在controller中注入该接口

@Autowired
CouponFeignService couponFeignService;

即可使用该接口中声明的方法

nacos(配置中心)

引入依赖

 <dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
 </dependency>
      
 <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-bootstrap</artifactId>
        <version>3.1.0</version>
</dependency>

创建 bootstrap.properties 文件

spring.application.name=应用名称
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

在注册中心心中新建 应用名称.properties 的配置文件,并添加配置

加入 @RefreshScope@Value("${xx.xx}") 即可动态获取配置

命名空间

默认 public
开发、测试、生产 需要命名空间做环境隔离
bootstrap.properties 中配置命名空间

spring.cloud.nacos.config.namespace=aab3884f-5260-4155-a725-d90d474b67f8

每个微服务之间互相隔离配置,每个微服务都创建自己的命名空间,只加载自己命名空间下的配置

可以将配置文件分散成各个小的配置然后整体加载

spring.cloud.nacos.config.namespace=80ef2691-2c21-49e5-b272-7c0c9c067f18
spring.cloud.nacos.config.group=dev

spring.cloud.nacos.config.extension-configs[0].data-id=datasource.yaml
spring.cloud.nacos.config.extension-configs[0].group=dev
spring.cloud.nacos.config.extension-configs[0].refresh=true

spring.cloud.nacos.config.extension-configs[1].data-id=mybatis.yaml
spring.cloud.nacos.config.extension-configs[1].group=dev
spring.cloud.nacos.config.extension-configs[1].refresh=true

spring.cloud.nacos.config.extension-configs[2].data-id=other.yaml
spring.cloud.nacos.config.extension-configs[2].group=dev
spring.cloud.nacos.config.extension-configs[2].refresh=true

请添加图片描述

Gateway 网关

依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

由于网关无需数据库链接,所以在启动项上排除

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, IdentifierGeneratorAutoConfiguration.class})

网关也需要加入到注册和配置中心

路由:网关的基本构建块。它由 ID、目标 URI、谓词集合和过滤器集合定义。如果聚合谓词为真,则匹配路由。

断言:这是一个Java 8 函数谓词。输入类型是Spring FrameworkServerWebExchange。这使您可以匹配来自 HTTP 请求的任何内容,例如标头或参数。

过滤器GatewayFilter:这些是使用特定工厂构建的实例。在这里,您可以在发送下游请求之前或之后修改请求和响应。

参考官方文档:
https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/

ES6

var let cons t区别

解构赋值

//数组解构
let arr  = [1,2,3];
let[a,b,c] = arr;
console.log(a,b,c) //1 2 3
//对象解构
const person = {
	name:"jack",
	age:18,
	language:['java','c','js']
}

const {name:abc,age,language} = person;

console.log(abc,age,language)
//不定参数
function fun(...values){
	console.log(values.length)
}
fun(1,2) // 2
fun(1,2,3,4,5) // 5
//箭头函数
之前方法的声明
var print = function(obj){
	console.log(obj);
}
改造:
var print = obj => console.log(obj);
print("word"); // word
==================
var sum = function(a,b){
	return a + b;
}
改造:
var sum = (a,b) => a + b;
console.log(sum(1,2)) // 3
==================
var sum = function(a,b){
	c = a + b;
	return a + c;
}
改造:
var sum = (a,b) => {
	c = a + b;
	return a + c;
}
console.log(sum(1,2)) // 3
const person = {
	name:"tom",
	age:18
}

function hello(){
	console.log("hello" + person.name)
}

var hello2 = ({name}) => console.log("hello" + name);
hello2(person); // tom
const target = {a:1};
const source1 = {b:2};
const source2 = {c:3};

Object.assign(target,source1,source2);
console.log(target);//{a:1,b:2,c:3}
1.拷贝对象(深拷贝)
let pserson = {name:"迪丽热巴",age:18}
let someone = {...pserson}
console.log(someone) //{name:"迪丽热巴",age:18}

2.合并对象
let age = {age:15}
let name = {name:"tom"}
let person = {...age,...name}
console.log(pserson) // {age:15,name:"tom"}

vue模板

{
	"生成 vue 模板": {
		"prefix": "vue",
		"body": [
			"<template>",
			"<div></div>",
			"</template>",
			"",
			"<script>",
	"//这里可以导入其他文件(比如:组件,工具 js,第三方插件 js,json文件,图片文件等等)",
	"//例如:import 《组件名称》 from '《组件路径》';",
			"",
			"export default {",
			"//import 引入的组件需要注入到对象中才能使用",
			"components: {},",
			"props: {},",
			"data() {",
			"//这里存放数据",
			"return {",
			"",
			"};",
			"},",
			"//计算属性 类似于 data 概念",
			"computed: {},",
			"//监控 data 中的数据变化",
			"watch: {},",
			"//方法集合",
			"methods: {",
			"",
			"},",
			"//生命周期 - 创建完成(可以访问当前 this 实例)",
			"created() {",
			"",
			"},",
			"//生命周期 - 挂载完成(可以访问 DOM 元素)",
			"mounted() {",
			"",
			"},",
			"beforeCreate() {}, //生命周期 - 创建之前",
			"beforeMount() {}, //生命周期 - 挂载之前",
			"beforeUpdate() {}, //生命周期 - 更新之前",
			"updated() {}, //生命周期 - 更新之后",
			"beforeDestroy() {}, //生命周期 - 销毁之前",
			"destroyed() {}, //生命周期 - 销毁完成",
	"activated() {}, //如果页面有 keep-alive 缓存功能,这个函数会触发",
	"}",
			"</script>",
			"<style scoped>",
			"/* @import url($3); 引入公共 css 类 */",
			"$4",
			"</style>"
		],
		"description": "生成 vue 模板"
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值