CSDN全栈新星创作者,程序人生,共同进步!
【1月更文挑战第19天】【Java实战篇】SpringBoot+MyBatis快速实现登录注册
【1月更文挑战第14天】Log4j是Apache下的一款开源的日志框架,通过在项目中使用 Log4J,我们可以控制日志信息输出到控 制台、文件、甚至是数据库中。我们可以控制每一条日志的输出格式,通过定义日志的输出级别,可以 更灵活的控制日志的输出过程。方便项目的调试。
【1月更文挑战第13天】【各种问题处理】X86架构和ARM架构的区别
【1月更文挑战第10天】【机器学习】推荐系统推荐算法综述
【1月更文挑战第9天】云原生 Docker Dockerfile 构建应用
【1月更文挑战第1天】SpringBoot @Async 注解
【1月更文挑战第1天】计算机网络 TCP、RPC、GRPC、HTTP 对比
当元素设置了display: flex样式时,表示当前元素开启了flex布局,这个元素成为一个 flex 容器(flex container)。这个元素不会脱离文档流,元素中的内容沿着两个轴的方向进行布局。 开启了flex布局的元素就是一个伸缩容器(flex 容器),伸缩容器中所有的子元素就是伸缩项目。
JVM包含两个子系统和两个组件:两个子系统为Class Loader(类加载器)和Execution engine(执行引擎);两个组件为Runtime data area(运行时数据 区)、Native Interface(本地接口)。
要说什么是 JUnit 5,首先就得聊下 Java 单元测试框架 JUnit,它与另一个框架 TestNG 占据了 Java领域里单元测试框架的主要市场,其中 JUnit 有着较长的发展历史和不断演进的丰富功能,备受大多数 Java 开发者的青睐。
Java NIO缓冲区在与NIO通道交互时使用。数据从通道读取到缓冲区,然后从缓冲区写入通道。 缓冲区本质上是一块内存,可以在其中写入数据,然后再进行读取。这个内存块被封装在一个NIOBuffer对象中,该对象提供了一组方法,可以更容易地使用内存块。
组件是React的一等公民,使用React组件,组件表示页面中的部分功能,多个组件的组合实现了整个完整的页面功能。 组件可复用,独立,可组合。 React中的组件类型被分为了两类:函数组件,又被称为无状态组件;类组件,又被称为有状态组件。状态(state)即数据。 函数组件没有自己的状态,自负责数据展示。类组件有自己的状态,负责更新UI。React中想要实现该功能,就要使用类组件(有状态组件)。 有状态组件通过 state()和setState()两个方法可以实现对状态(数据)的获取和修改。
JSX是JavaScript XML的简写,表示在JavaScript代码中写XML(HTML)格式代码。声明式语法更加直观、与HTML结构相同,提高开发效率。 为什么需要在JSX中嵌入JavaScript表达式? 这是由于通常情况下,一个前后端分离项目,前端获取到的数据都是通过AJAX异步请求的方式向后台服务发送请求获取,一般是保存在JavaScript对象中。页面需要根据这些数据对象进行动态展示,就需要在JSX中嵌套使用JavaScript代码。 JSX提供了{JavaScript表达式},大括号的方式在JSX代码中插入JavaScript表达式的方式。
React是一个用于构建用户界面的JavaScript库。React是基于声明式、组件化开发方式。什么是声明式?通过使用JavaScript代码来描述UI(HTML页面)展示是什么样的,就和写HTML本质上是一样的。由React来负责UI的渲染,并在数据变化时更新UI。 React基于组件化方式进行开发。把构建页面的一部内容进行封装,在相似甚至相同的场景下进行复用,通过这样的方式进行代码的复用以及页面的构建。 React支持多端开发的场景。使用React可以开发Web端,基于React-Native可以实现移动端场景开发。使用React(React 360)开发VR应用。
Redis没有直接复用C语言的字符串,而是新建了SDS,作为String类型的一种存储结构。 在Redis数据库里,包含字符串值的键值对都是由SDS实现的(Redis中所有的键都是由字符串对象实现的即底层是由SDS实现,Redis中所有的值对象中包含的字符串对象底层也是由SDS实现)
String是Redis最基本的数据类型,一个Key对应一个Value,一个Redis中字符串Value最多可以是512M String类型是二进制安全的,意味着Redis的String可以包含任何数据。比如照片或者序列化对象。
通用查询日志(general query log)用来记录用户的所有操作,包括启动和关闭MySQL服务、所有用户的连接开始时间和截止时间、发送给MySQL数据库服务器的所有SQL指令等。当我们的数据发生异常时,查看通用查询日志,还原操作时的具体场景,准确定位问题。
Redo log是事务持久性的保证,Undo log是事务原子性的保证。在事务中更新数据的前置操作其实就是要写入Undo log。事务需要保证原子性,也就是事务中的操作要么全部完成,要么什么也不做。但有时候事务执行到一半会出现一些情况,比如: 情况一:事务执行过程中可能遇到各种错误,比如服务器本身的错误,操作系统错误,甚至是突然断电导致的错误。 情况二:程序员可以在事务执行过程中手动输入ROLLBACK语句结束当前事务的执行以上情况出现,我们需要把数据改回原先的样子,这个过程称之为回滚,这样就可以造成一个假象:这个事务看起来什么都没做,所以符合原子性要求每当我们要对一条记录做改动。
redo 日志降低了刷盘的频率,并且redo日志占用的空间非常小。(redo日志主要存储表空间ID、页号、偏移量以及需要更新的值,所需存储的空间很小,刷盘快)。Redo Log 可以简单的非为两部分组成:重做日志的缓存(redo log buffer),保存在内存中,容易丢失。重做日志文件(rodo log file),保存在硬盘中,保证持久性。Redo Log写入并不是直接写入磁盘的,Innodb引擎会在写Redo Log的时候先写redo log buffer,之后再以一定的频率刷入到真正的redo log file中。这里的一定的频率就是所谓的刷盘策略。
Netty本质是一个NIO框架,适用于服务器通讯相关的多种应用场景。 Netty作为一款基于Java开发的高性能网络框架,想要从认识到熟悉再到掌握最终理解,因此我们需要从最基础的NIO开始学习。如果你已经学习并掌握了NIO相关知识,那么可以直接进入Netty相关文章的学习;如果没有了解过也没有关系,那我们就从当前文章开始学习吧!🎉🎉🎉
在程序中可以调用函数来完成任务,为了完成相同的任务可以调用同一个函数。如果在函数中调用函数本身,那么改函数就被称为递归函数。递归函数的调用是按层,不是次,有 N 层就同时调用(打开)了 N 个函数,不是 N 次。 无限递归(递而不归、死递归),栈溢出(函数的调用有时间和空间的开销,一个程序中同时调用的函数个数是有限的)。• 递归函数的调用有时间和空间的开销,而且递归的次数受到堆栈大小的限制。 • 循环没有函数调用和返回中的参数传递和返回值的额外开销,更快。 如何在递归和循环之间选择? 一般情况下,当循环方法比较容易实现时,应该避免使用递归。当很难简历一个循环方法时,递归可能是一个很好的选择