nacos
单例模式启动1./startup.sh -m standalone
没有命名空间的访问权限初次访问提示,登陆后即可
SQL
虚拟表我有一个名为a的字符串,其中包含多个值,我有一张表b,其中包含多个值,我想使用sql语句来知道有哪些数据是a中有但是b中没有的
123456789CREATE TEMPORARY TABLE temp_a (value VARCHAR(255));INSERT INTO temp_a (value)VALUES ('value1'), ('value2'), ('value3');SELECT temp_a.valueFROM temp_aLEFT JOIN bON temp_a.value = b.valueWHERE b.value IS NULL;
这里使用了虚拟/临时表的概念,虚拟表不会实际创建一张表,只在当前连接可见,当关闭当前的数据库连接后, 会清除该缓存
连接时 ON 和 WHERE 的区别
在使用left jion时,on和where条件的区别如下:1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。2、where条件是在临时表生成好后,再对临时表进行 ...
JUC
JUC概述Java.util.concurrent
基本概念
进程:资源分配最小单元
线程:操作系统调度的最小单元
线程状态
NEW
新建的线程实例会进入new状态
RUNNABLE
就绪状态,已经达到可以执行的条件了,等待cpu的调度
RUNNING
获得了cpu的时间片,正在执行,在java中此状态与Runnable合并了
BLOCKED
获取资源的状态,比如正在等待进入synchronized区域的时候
WAITTING
不会被cpu调度,除非显式唤醒
TIMED_WAITING
和waitting是一个性质,不过在等待时间到达后会被自动唤醒
TERMINATED
结束,且不可再被调用,否则抛出异常
wait/sleep
sleep是thread类的静态方法, wait是object的方法
sleep不会释放锁(不会释放占用的资源比如进入的同步块),wait会释放锁,可以让其他线程获取资源。
都可以被interrupted中断
123456789101112131415161718192021222324252627282930publ ...
mybatis
基本思路
引入mybatis与数据库驱动的依赖
配置数据源信息
编写mapper接口
编写mapper映射文件
使用mapper
引入依赖1234567891011121314151617<!--druid--><dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.8</version></dependency><!--mysql驱动--><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId></dependency><!--mybatis--><dependency> <groupId>org ...
maven
Maven 概念依赖管理+项目构建
依赖管理
自动引入依赖并且解决依赖的依赖关系
项目构建
演化:Make -> Ant -> Maven ->Gradle
批量编译
组织文件结构
批量复制jar包
……
安装与配置
确认java环境已经安装好
将maven压缩包解压到一个文件夹下
配置M2_HOME或者MAVEN_HOME为maven文件夹
将maven文件夹中的bin目录配置到path中
cmd mvn -v验证
本地仓配置 localRepository
镜像配置 mirror
构建项目java版本配置 profile
Maven目录结构为什么要遵守如果我们想让框架知道我们设置了一些东西,那么有两种办法:
用配置的方式
遵守框架的约定
约定 》 配置 》 编码
目录结构
根目录:工程名
src目录:源码
pom.xml:Maven工程的核心配置文件
main目录:存放主程序
test目录:存放测试程序
java目录:存放java源文件
resource目录:存放框架或其他工具的配置文件
仓库
插件
Maven的核心程 ...
Quartz
基本概念Job指定任务的具体内容
Trigger指定执行的策略
Scheduler调度器,用于将Job和Trigger整合
入门案例引入依赖
123456<!--quartz--><dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.2</version></dependency>
job
123456789public class MyJob implements Job { static int count = 0; @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { System.out.println(" ...
java
内部类相关静态与非静态的底层待研究
静态内部类可以在除外部类以外的类中实例化,比如Builder模式
非静态的内部类只能在外部类中实例化,且只能在非静态方法中实例化,
非静态内部类可以声明静态变量,也可以在静态块中被声明,但无法同时被实例化
内部接口默认都是静态的且必须是静态的
匿名内部类和局部变量的关系lambda的实现与匿名内部类有关系,简单地说,匿名内部类可能会比它所在的方法的存活时间还长,这样的话,他想要调用的局部变量会因为方法的结束出栈而消失,则会出现问题,故如果需要使用局部变量,需要是final的(如果不是final,编译器在编译的时候会变为final,如果在匿名内部类使用之后对该变量做修改,则编译不通过),这样匿名内部类会复制一份改局部变量与自己共同存活。
内部类的访问修饰符private修饰的内部类及其中嵌套的private内部类能且只能在其所属的外部类及其包含的所有内部类中访问
12345678910111213141516@Componentpublic class TreeService { public static FileTree fil ...
OrangeFrame
系统结构parent依赖版本管理
auth进行认证
用户名密码匹配
账户失效判断
将用户角色存入redis
common
公用工具类
共用实体类
除此之外还有自动配置等
gateway网关,进行鉴权
rbac进行rbac信息的增删改查
数据结构设计RBACuser
数据库中字段
id
username
password
enabled
account_non_expired
account_non_locked
credentials_non_expired
实体类中字段
roleList 角色列表
role// 从redis中查看当前角色中有无当前api,若无,则查看有无parent,递归查找,都没有则返回false
关于角色递归
使用递归形式的角色保存可以减少后期查询次数,但如果派生角色和基础角色都为递归形式,则会出现无限递归的情况。
例如,b为a的派生角色,则a的派生列表中是有b的,但b的基础角色中又会存在a,如此便会形成递归,造成溢出. 故这两个列表中只能有一个是递归的形式。
经过考虑,将基础角色做递归处理,派生角色不做,因为基础角色也属于是 ...
gateway
StripPrefix优先级自定义的全局过滤器(实现GlobalFilter接口)优先级再高,也会在StripPrefix之后执行,所以到达全局过滤器时的路径已经是被截取之后的
网关组成路由转发接受外界请求,通过网关的路由转发,转发到后端的服务器上
过滤器容错,限流等
解决方案zuulNetflix 不更新了
gatewayspring自己推出
名词解释Route路由,gateway核心,route包含路由规则,路由校验,过滤处理,容错处理
Predicate谓词, 路由规则,简单的校验逻辑
Filter过滤器,增加自定义功能
其中,predicate 与 filter 的区别主要在于,predicate 作用为判断那些请求为当前路由要处理的请求,filter 为对当前处理的请求所做的处理
配置基础配置1234567891011121314spring: cloud: gateway: discovery: locator: # 配置处理机制 # 只要请求地址符合规则: http://gatewayIP:gatewayPort/微服务名称/微服务请 ...
SpringCloud
发现的一些问题启动闪退spring cloud client客户端需要引入web环境依赖,否则启动后会自动停止
nacos无法识别服务名服务名不能有下划线
gateway “Service Unavailable”Springcloud2020弃用了ribbon, Alibaba在2021版本nacos中删除了Ribbon的jar包。因此无法通过lb路由到指定微服务,出现了503的情况
需要引入
1234<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency>
Module的复制复制一个server module,将其中冲突的地方重命名
打开项目管理, 将复制的module以maven工程的身份导入当前项目:
CAPCAP原则:C(Consistency):一致性A(Availablitity):可用 ...