- 博客(35)
- 问答 (3)
- 收藏
- 关注
原创 Mysql 页分裂页合并
InooDB的文件格式,ibd利用主键索引到具体数据,数据都在叶节点上,frm就是一些数据库的元信息了。重点看看ibd文件,这个文件由多个段组成,每个段和一个索引相关。文件的结构是不会随着数据行的删除而变化的,但段则会跟着构成它的更小一级单位——区的变化而变化。页则是区的下一级构成单位,默认体积为16KB。每个页(逻辑上讲即叶子节点)是包含了2-N行数据,根据主键排列。InnoDB不是按行的来操作的,它可操作的最小粒度是页,页加载进内存后才会通过扫描页来获取行/记录。页合并当你删了一行记录时
2022-04-14 15:45:26
3235
原创 操作系统【清华慕课笔记】
操作系统 计算机是由硬件构成的,如果我们直接去操作的话,需要使用汇编,众所周知十分的麻烦,windows,linux操作系统就是为了我们方便去操作硬件而提供的系统级别的软件Shell shell脚步其实也是代码,我们也可以编写shell,比如ls,makedir这样的但是这些能够控制操作系统。线程 并行是需要多cpu支持的。即使在操作系统层面,也无法做到同时访问一个资源。特征并发 操作系统肯定要支持多个应用程序同时执行的,但是系统肯定只能把资源分派给少部分,所以就需要看操
2022-03-28 17:18:59
3117
原创 spring 文档摘录与注释
前言 以下内容均来自spring framework官网,记录自己不会的和不熟悉的,有自己思考的部分,不敢保证正确,用于个人知识梳理。版本是全新的6.0!Spring Boot 特性FailureAnalyzer 在启动的时候,捕获异常,并且提供更加人性化的提示信息使用public class NullPointFailureAnalyzer extends AbstractFailureAnalyzer<NullPointerException> { @Over.
2022-02-21 14:07:03
1793
原创 spring aop和ioc容器创建的源码分析,常用注解,以及扩展接口总结
注解@ComponentScan 这个你看源码是没有@Compent注解的,但是@Configuration是有的,所以,你这个@ComponentScan必须至少想一个让spring扫描你这个类的办法。@Import ImportSelector和ImportBeanDefinitionRegistrar都可以,前者是返回一个数组,全类名的,后者则是直接往BeanDefinitionRegistrar里面注册bean,难度有点大,其实一般情况下,我们直接导入类就可以了。FactoryBean
2022-02-17 23:51:23
1695
原创 spring boot 原理和代码分析
spring 能干什么 来spring官网看看,我发现我所学习的只是它的冰山一角。微服务 支持模块化开发,把应用拆分成一个一个模块,好处其实有很多,我列举一些我自己能想到吧。 首先是解耦合,不至于每个模块的耦合很大,而且很方便程序员去设计数据库,因为需要考虑的东西确实是少了。 单从解耦合这个角度来看,我的各个模块可以独立部署,互不干扰,我测试或者更新其中一部分,对其他功能是没有任何影响的,这是单体应用无论如何都不可能做到的。 这个不得不说DDD,我觉得它里面有一个很好的思想,就是领
2022-02-15 19:31:45
1941
原创 Tomcat原理 (持续更新
HTTP 总是由客户端通过建立连接并发送http请求 框架源码都好喜欢用三元运算符呀,我发现我用的频率不是很高,以后也会考虑把简单的if语句化简成三元运算符Sockethost 在Socket的构造方法中,我注意到这个细节,我发现host不仅可以代表ip地址,还能是网址,说明底层可以把网址解析成对应的ip地址作用 书上描述的非常好,用来向网络发送和接受数据。而具体的实现则是由java强大的io流来实现的。 如果用这个来实现浏览器功能的话,就先获取out流,然后往这个里面写h
2022-01-27 14:28:17
1869
原创 JVM 对象创建内存分配以及常见的OOM问题
走进java因为写程序本身就是一个不断追求完美的过程优点摆脱硬件限制 这个原理是为不同的硬件提供 不同的虚拟机,但是要求编译器提供相同的字节码,这个思想和JDBC如出一辙,向上提供接口,向下屏蔽差异,这对我们接口的设计要求还是比较高的,首先我们得统一出一套接口,这些接口再每个情况下都可以实现,然后这些接口又要足够的万能,程序员可以使用这些接口完成他们想操作的任何事情。但是,我们完全可以抽象出一个接口,来简化我们对接口的用运,没有哪个成功的开源框架可以离开接口的易用性 而且,不得不提的是
2022-01-03 11:08:05
1930
原创 简单高并发业务总结
互联网系统应用架构负载均衡器 当正常的请求通过防火墙之后,最先到达的就是负载均衡器功能 决定这个请求是否到达web服务器,比如使用nginx可以配置哪些是无效的请求,还有就是可以屏蔽一些作弊的ip 负载均衡算法,可以根据不同的需要,把请求分发到不同的web服务器,这样单台web服务器的压力就会减小 限流,请求量太大,我们不加以限制的时候,假如这些请求冲垮了一台机器,在我们整体承受能力变弱的情况下,仍然要处理这些请求,无疑会造成其他服务器宕机,而后雪崩。所以,我们在请求过多的时候,经常
2021-12-27 21:42:24
2126
2
原创 Redis 实用经验,集群,整合spring缓存机制
前言 来好好学一下,缓存到底该怎么写,并且记录一下,以前没有注意到的方法缓存什么时候用缓存? 业务数据常用吗?如果查询的频率不高,或者对数据库的影响不大,就没有必要做缓存,因为内存是很宝贵的 而且,如果我们读的数据非常大,那么也不能轻易用缓存,因为这会对内存造成较大的占用一般流程是什么? 我们会优先读取redis,如果redis没有,那么就会读取数据库,然后把这些信息写入redis,这样,我们下次就可以读redis了写的业务需要缓存吗? 如果我们的业务,需要高速的写入,或者写.
2021-12-24 17:28:21
1882
原创 Spring MVC 执行原理和源码分析
文章目录简介初始化IoC初始化映射请求上下文 初始化注解配置方式初始化开发流程补充数据转换和格式化源码分析mvc执行流程图其他简介 Spring MVC 基于 Servlet,提供核心控制器DispatcherServlet,结构松散,以至于能适应各种灵活的需求初始化IoC初始化 ServletContextListener接口可以在web容器的初始化和结束期中执行一定的逻辑。所以,通过下面这个类,可以在ServletContextListener初始化之前初始化Ioc,也可以在结束期完成对I
2021-12-24 13:23:08
1934
2
原创 Spring原理与事务
文章目录Spring 基础IocBean的生命周期Bean 装配Profile条件化装配和属性配置作用域Sring EL面向切面编程术语概念AOP的使用多个切面数据库编程事务管理@Transactional 声明式事务丢失更新隔离级别传播行为Spring 基础Ioc有什么好处使用者不需要关注对象的构建过程,我们只要借助ioc提供的方法,然后使用就可以了如果我们的系统有特别复杂的依赖关系,spring也能够帮助我们自动管理基于接口注入,实现类想换哪个就换哪个,系统的耦合度低
2021-12-21 21:59:23
1374
原创 MyBatis 组件,原理,源码以及自定义插件
本文会讲述少量的前置知识,会的可以跳过,然讲mybatis的核心组件,以及他们的搭配,然后从源代码角度理解,最后我们手写插件!
2021-12-09 14:46:42
2071
2
原创 代码整洁之道 万字总结+个人项目经验
软件工程作为一门学科,他们的目的是为了多人合作可以写出好的代码,同时也是为了我们的代码能够更方便的修改和维护,如果我们对某种架构设计有想不通的地方,不妨在这个方向思考一下我们不可能了解一个大型系统的全貌,那我们执行自己的任务,但是不影响系统的整体稳定呢?系统在开发的过程中,我们一般会遇到如下几种情况本来很简单的需求,却要进行长时间的改动本来改几行代码的事情,缺影响到了其他模块的运行什么是整洁的代码?代码的逻辑应该直接了当,命名应该相当贴近实际,加缺陷难以隐藏尽一切可能的减少代码的耦合.
2021-12-08 23:22:23
1556
原创 vue 学习笔记 (持续更新中)
官方标准构建模板const Counter = { data() { return { counter: 0 } }}Vue.createApp(Counter).mount('#counter')首先是构造一个对象这里顺便解释一下为什么用data(),作为一个函数返回数据,而不是用以前的data:{}直接返回,这是因为vue组件化的核心思想,vue组件化,尤其是在父组件和子组件的数据传递中,element ui提现的淋漓尽致组件化有什么好.
2021-12-03 21:42:31
1193
原创 Java 抽象类和接口的区别 个人思考
抽象类和接口抽象类有抽象方法,要求继承他的子类必须实现这个方法为什么不在父类实现一个默认的方法?因为这个方法放在父类中实现是没有任何意义的比如定义动物,动物都会叫,但是你实现叫这个方法是没有任何意义的而且因为你这个方法没有实现,所以抽象类是无法被实例化的,因为你实例化一个动物是没有任何意义的抽象类和接口之间有联系吗?可以在抽象类后面跟接口,而且抽象类可以不实现这个接口的方法,但是其子类必须实现抽象类实现这个方法,这个方法也可以是抽象的,也可以直接实现你觉得抽象类有什么
2021-12-02 22:24:22
1439
原创 spring 数据库访问 学习笔记
数据库访问spring为我们做了什么把SQLException封装为DataAccessException,这个异常是一个RuntimeException,并且让我们能区分SQL异常的原因,例如,DuplicateKeyException表示违反了一个唯一约束;我们可以针对这些特殊的异常做特殊的处理申明式事务,@Transactional,spring默认在RuntimeException的情况下回滚rollbackFor指定会回滚事务的类型,因为java的注释只能用Class
2021-12-02 16:25:46
1616
原创 spring ioc 学习笔记
SpringIoc容器容器可以为我们的组件(类)提供一个完整的运行环境,可以帮助我们完成很多额外的操作,有些类似与代理模式比如Controller中,我们只需要声明接口访问地址,传入的参数,返回的参数类型,就可以把重点放在我们的业务逻辑上,不需要去管解析HTTP协议等非常复杂的服务从类比关系上来看,Tomcat是一个Servlet容器,Docker是软件的容器从用法的层面来看,实现了一个类属性的创建如果我们平时有一个类,其中属性的初始化是不可避免的,很多时候,我们又需要单例模式,其
2021-12-01 22:53:44
1534
原创 echarts 学习笔记
下载https://www.jsdelivr.com/package/npm/echarts?path=distecharts.js 完整文件,会额外提示错误的原因echarts.js 可运行的完整文件基本配置<!DOCTYPE html><html> <head> <meta charset="utf-8"/> <title>ECharts</title> <!-- 引入刚刚下载的.
2021-11-22 22:37:55
1563
原创 nginx 学习笔记
Nginx修改nginx配置文件之后,用reload或者restart重载配置文件生效如果配置文件没有重载成功,会给你提示,你在日志中就可以看到启动失败的原因,然后排查通过lsof -i:prot 可以看出nginx是否监视成功,如果监视成功,但是在网页看不到,说明没有开放端口配置文件全局配置worker_processes 1;值越大,其并发能力越强,但是会受到硬件的影响events{ worker_connections 1000;#用户最大链接数}这部分配置与用户网络
2021-11-21 00:09:42
2532
原创 VO,BO,DTO,PO,DO等概念与用法总结
PO(persistant object) 持久对象与数据库的属性和字段一一对应,不需要枚举类,不需要其他处理,就是为了和数据库的映射DO(Domain Object) 领域对象基于实体和事件的业务对象,在构建复杂的系统的时候,采用领域驱动的设计思想,可以降低开发的复杂度DTO(Data Transfer Object)数据传输对象用于不同应用的数据传输,分布式,微服务的名称VO(value object) 值对象用于和前端的交互,接受前端回传的数据,返回给...
2021-10-20 22:02:23
1806
原创 Spring Boot 整合 swagger-bootstrap-ui 拦截器 问题解决
配置拦截器时会禁用doc.html的接口地址@Overridepublic void addInterceptors(InterceptorRegistry registry) { InterceptorRegistration registration=registry.addInterceptor(studentHandlerInterceptor); registration.addPathPatterns("/**") .e.
2021-10-03 12:48:40
561
原创 spring Cloud 配置总结
maven父项目配置<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apa.
2021-08-31 19:40:52
1527
原创 spring Cloud 整合openFeign 和 consul
整合consul启动consulconsul agent -devconsul地址http://localhost:8500/maven 配置<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</artifactId><...
2021-08-30 23:38:02
328
原创 Python环境搭建
如果你不想自己配置环境,可以联系客服安装向日葵原创控制,但是要提前下载好下面的两个安装包安装Python链接:https://pan.baidu.com/s/1qO7Ps_31hCWVju5z7bZY_Q提取码:6666下面是具体安装教程https://blog.youkuaiyun.com/huaseven0527/article/details/104827454/安装pip链接:https://pan.baidu.com/s/1JXaNvGIGwKy8HM5...
2021-08-25 17:05:07
63
原创 Spring Boot 文件上传
@PostMapping("/upload") public JsonResult uploadFile(MultipartFile file, String name){ String uploadFileName = file.getOriginalFilename();// 获取原始文件名 String extendName = uploadFileName.substring(uploadFileName.lastIndexOf(".") + 1, ...
2021-08-24 23:47:28
107
原创 双重检测的理解与扩展
使用场景多线程目的为了提高效率,因为我们知道synchronized 关键字不可避免的影响了程序执行的效率,而改进的思路之一就是让 synchronized 的作用范围变小,双重监测就是基于这样的一个思路代码示例单例模式在多线程情况下的最近解决方案class Signal{ private Signal() { } private volatile static Signal instance; private static ...
2021-08-20 13:50:26
250
原创 Java 构造器方法和set方法设置参数的经验
如果定义了有参构造方法,而没有额外定义无参构造方法,那么对象无法在无参情况下实例化,我们可以这样利用性质:这些参数是一个对象调用方法时必须的 比如对象是一个人,它有属性手,和方法拿东西,因为拿东西必须要有手这个属性,这个属性不能为空,所以设置有参构造方法,而不复写无参构造方法,目的就是要求对象必须实现某些参数 我们换一种思路,我们可以让这样需求的对象有无参构造方法,但是必须重写无参构造方法,该方法必须定义必须参数的默认实现,或者,为了代码简洁和可用性强,我们可以利用重载的特性,实现一些常用的默认属性,所
2021-08-19 20:22:05
1380
原创 Spring Boot MVC @RequestBody 测试结论
前后端数据交互依据的并不是属性名,而是get和set方法,个人认为这是get和set设计的长处(可以对数据进行额外的处理)但并不建议在这里处理,因为会增加项目维护的难度 POJO对象的属性和数据库是严格对应的,但我们可能不希望用户在交互的时候,看到这些带有术语的属性名,我们可以设置@JsonProperty这样在json的传入和传出都用对应的属性名和get,set脱离关系 @JsonAlias接受用户输入的时候,按照代理的属性名,返回json对象的时候,按照原有对象的属性名,这个时候传入真实属性名也是.
2021-08-18 15:21:16
168
原创 Spring Boot MVC 普通参数传递测试与总结
不加@RequestParam引用类型参数 @GetMapping("/add") public String add(String name) { return "success "+name; }传递参数:URL:http://localhost:8080/add?name=ckj结果: success ckj不传递参数:URL:http://localhost:8080/add结果success null传递空参数:...
2021-08-18 13:21:24
251
原创 SpringBoot 全局异常处理
import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.ResponseBody;@ControllerAdvicepublic class GlobalExceptionHandler { @E.
2021-08-09 19:41:10
81
原创 Spring Boot 解决跨域Cores问题
import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.CorsRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configurationpublic class CorsConfig implemen.
2021-08-09 19:26:07
1373
原创 Swagger整合
导包 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependenc.
2021-08-09 11:28:33
114
原创 统一Json工具类
@Data@AllArgsConstructorpublic class Result { private int code; private String msg; private Object data; public static Result ok(){ return new Result(0,"成功!",null); } public static Result ok(String msg){ return.
2021-08-09 00:26:35
109
原创 Spring Boot 常见yaml配置总结(持续更新...)
application.yaml数据库配置(Mysql)spring: datasource: url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=true username: root password: 123456项目基础server: servlet: .
2021-08-06 00:54:48
915
原创 Mybatis-plus 代码生成器
pom.xml 导包<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.4.1</version></dependency><dependency> <groupId>org.apache.v.
2021-08-06 00:38:12
154
空空如也
Clion 调试的时候,printf没有输出内容,但是普通运行可以输出内容
2021-03-14
pandas pd.cut 传入DataFrame和list的区别是什么?
2021-02-07
Android Stdio 百度地图 定位功能 找不到 'jnilibs'
2021-01-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人