1.栈管运行,堆管存储,方法调用入栈,调用结束出栈,方法对象保存在堆中,调用结束出栈并不代表立即销毁,有垃圾回收策略。方法中的变量过了作用域其局部变量表中的地址不会消失,会被方法中的下个变量复用。
2.数据库,MVCC多版本并发控制,redo,undo日志
redo日志 记录某数据块被修改后的值,可以用来恢复未写入data file 的已成功事物更新的数据,redo即重做
undo日志 记录某数据被修改前的值,可以在事物失败时进行rollback;undo即撤销还原。
3.StringUtils.hasLength() spring的方法 判断字符串序列不为null且长度大于0 则返回true
4.学习:
redis shiro jwt springboot mybatis cloud rabbitsmq nacos openfeign nacos config sentinel linux websocket
5.类加载过程:
加载-连接-初始化 连接分为验证、准备、解析,
.java文件经过javac编译后成为.class文件,在磁盘上通过io流读入.class二进制字节码文件放到java虚拟机的运行内存中的方法区里,并且在堆内存中创建一个class对象,此为加载过程
连接中的验证指验证二进制字节码文件的正确性和有效性
连接中的准备指给类的静态变量分配内存,并且初始化默认值
连接中的解析指把类中符号的引用转换为直接引用
初始化是给类的静态变量初始化指定的值,执行静态代码块
6.平衡二叉树:
基于二叉排序树,所以根本也是一个二叉排序树,每个节点的平衡因子的绝对值小于1的二叉排序树称为平衡二叉树.平衡因子(左子树的高度减去右子树的高度)
7.SpringSecurity认证过程:
用户访问资源,底层经过滤器filters->认证管理器AuthentiationManger(接口)-默认实现(ProviderManager)->认证服务AuthentiationProvider(是ProviderManager的一种具体的认证方式)->UserDetailService接口进行用户验证
8.@Value
用于注入外部参数对应的property(配置数据)
${ property : default_value } 冒号后面default_value是前者配置数据没写定值的时候的默认值
9.spring.application.name= xxx 配置应用程序名称(nacos服务名)
10.application.properties和application.yml区别:
两者都是SpringBoot的配置文件,yml文件的层次结构有序,更明显,properties优先级相对于yml更高,可以在不同的目录下添加properties配置文件
11.
Logger log=LogerFactory.getLogger(类名.class) 产生日志对象
System.currentTimeMillis()获取当前时间
@Cacheable 通过代理对象增强缓存功能,通知底层系统 把方法的返回值存储到Cache中
12.
MP自动填充:
有些表中会有更新时间、创建时间、更新人或者创建人这些字段。
每次对数据进行新增、删除、修改时都需要对这些字段进行设置。传统的做法是在进行这些操作前,对Entity的字段进行set设置,然后再进行操作。这种做法不仅容易忘记导致出错、而且代码会显得特别冗余。
所以MP就提供自动填充的功能,帮助自定设置这些字段的值,提升开发效率,代码也会显得特别优雅。
1.在属性上添加注解@TableField(fill = FieldFill.INSERT)
2.创建实现类并且实现MetaObjectHandler,实现两个方法,一个是在MP进行添加的时候执行,一个是在MP进行修改的时候执行,类交给Spring管理
MP的乐观锁解决并发问题
1.在实体类操作版本号的属性上添加@Version注解,2.配置乐观锁插件(交给Bean管理)
使用 @Mapper,最终 Mybatis 会有一个拦截器,会自动的把 @Mapper 注解的接口生成动态代理类,可以在 MapperRegistry 类源代码里查看。
@Mapper 注解针对的是一个一个的类,相当于是一个一个 Mapper.xml 文件。而一个接口一个接口的使用 @Mapper太麻烦,于是 @MapperScan 就应用而生。@MapperScan 配置一个或多个包路径,自动的扫描这些包路径下的类,自动的为它们生成代理类
13.
Node.js:
是基于 Chrome 的 V8 JavaScript 引擎构建的 JavaScript 运行时环境,
JavaScript 原来是只能在浏览器中运行的,node.js把它扩展成为可以在计算机上作为独立的程序运行
NPM是node.js包管理工具,全球最大的模块生态系统,相当于前端的Maven
里面的BBF组件对后端发起请求,对收到的数据做整合、封装,把数据传给前端页面,显示数据
14.
jvm在执行某个类,jvm会先加载class文件,而在class文件中除了有类的魔术,版本号,字段,方法和接口等秒速信息,还有一项就是常量池,用来存放编译期间生成的各种字面量和符号引用。像是字面量包含字符串,基本final类型修饰常量,符号引用等等。加载到内存后,jvm就会像class文件常量池中内容存放到运行时常量池中,解析阶段就会将符号引用变为直接引用,对象的索引值。就如刚才所说的静态变量加载阶段放到class文件常量池,在jvm加载万类以后,jvm会将这个变量或者常量放到运行时常量池,解析阶段指定对象索引值或者赋值。7以前常量池部分在方法区好像,后来放入堆中。