- 博客(24)
- 收藏
- 关注
原创 用React/Python/MySQL开发一个IMS系统,就是玩
IMS的英文全称是Integrated Management System,中文全称是综合管理系统。项目状态:功能正在开发中,有些模块功能尚未完全完成。,可能代码相比于Github仓库落后一点。
2024-04-15 03:17:32
378
原创 Docker的原理,总结的真的全呀
Docker 是一种轻量级的容器化技术,其主要原理是利用 Linux 操作系统的 cgroups、namespaces 和 AUFS 等特性来虚拟化系统资源,使得应用程序可以被封装成一个可移植、可靠、可复制的容器,在不同的环境中运行且无需担心环境差异导致的兼容性问题。良好的生态系统支持:Docker 的庞大社区提供了丰富的镜像仓库和工具,例如 Docker Hub、Docker Compose 等,可以大大提高开发效率和代码重用率。镜像的构建和部署过程可重复性高,可以保证每个容器的一致性。
2023-06-04 14:05:17
3878
2
原创 RocketMQ原理解析
RocketMQ的存储模型采用链式存储,即消息存储在CommitLog文件中,然后创建一个索引文件,将消息的偏移量和消息的属性存储到IndexFile文件中,以快速查询消息。NameServer负责消息的路由,Broker负责消息的存储和传输。RocketMQ支持消息的顺序性,具体实现方式是将相同业务的消息存储到同一个队列中,维护一个消息的顺序,使消息可以按照顺序被取出来。综上所述,RocketMQ是一款优秀的分布式消息队列系统,具有多种优秀的设计思想和架构模型,以及良好的性能、可靠性、可扩展性和灵活性。
2023-06-04 02:08:31
968
原创 MySQL调优方法总结的真全
可以通过查询MySQL的系统表,如information_schema.statistics等,来查找无用的索引和重复的索引,并移除这些索引。MySQL的缓存是一个非常重要的组件,它可以显著提升数据库的性能。通过分析日志,可以识别和解决慢查询、未优化的查询等问题,调整MySQL的配置和参数设置,并为未来的优化提供参考。MySQL的性能优化是一个长期的过程。通过使用MySQL执行计划工具EXPLAIN,我们可以从查询语句中了解每个操作的执行顺序、访问方式、索引使用情况和可能的性能问题,并提供了优化的建议。
2023-06-04 00:35:54
2504
2
原创 Linux CPU占用率高排查
有时候发现,在Linux系统上运行java服务时,CPU占用率将近100%,长时间居高不下,这就需要好好排查一下了。
2023-06-03 19:49:25
946
原创 RabbitMQ原理解析,总结的真的全
RabbitMQ是一个开源的基于AMQP协议的消息队列系统,它使用了Erlang语言开发,以高效稳定出名。AMQP(Advanced Message Queuing Protocol)是一个异步消息传输协议,它使得消息的传输更加可靠和安全。RabbitMQ支持多种编程语言,可以方便地实现跨平台语言的通讯。RabbitMQ的消息模型基本上是AMQP协议的一个实现,它通过交换器(Exchange)、队列(Queue)和绑定(Binding)组件来实现消息的路由和转发。
2023-06-03 01:46:35
468
原创 Spring Cloud原理
Spring Cloud 是基于 Spring Boot 和 Spring Framework 的,它在无服务器(serverless)架构、微服务和容器的背景下,为开发者提供了一种快速构建可伸缩、容错和高可用性应用系统的解决方案。Spring Cloud 的主要原理在于基于Spring Boot和Spring Framework的优秀特性和生态系统组件,实现了服务注册与发现、负载均衡、断路器、配置管理等基础设施的解决方案。下面,我们将对Spring Cloud的原理做详细介绍。
2023-06-03 01:35:03
1723
原创 Spring Boot的原理以及源码解析
Spring Boot是一个基于Spring框架的轻量级框架,它的主要特点是快速开发、便捷部署。在运行时,Spring Boot通过内嵌的Tomcat、Jetty等Web容器,将应用程序打包成一个可执行JAR文件或WAR文件,从而方便开发、测试和部署。
2023-06-03 01:12:30
1348
原创 为Spring Boot项目写一个自定义的starter
}这个例子中,这个自动配置类只是创建了一个名为myStarterService的bean。现在,当应用使用这个starter时,开发人员可以使用配置属性my.starter.message来设置其自定义的消息。这就是创建一个Spring Boot Starter的基本步骤。这只是一个示例,实际上创建starter可以更加复杂,具体取决于它的用途。在编写starter过程中,应该熟悉Spring Boot的自动配置机制和条件化技术,以确保只有在需要时才会加载必要的组件。
2023-05-28 06:30:00
326
原创 命令式编程、声明式编程、函数式编程、面向对象的编程之间的比较
关注是什么不关注细节。关注想要什么,具体细节托管给底层逻辑。把逻辑封装成一个个函数,用一系列函数去完成某个需求。相同的入参决定相同的输出,一般是纯函数。函数可以当参数传递。
2023-04-30 09:53:41
159
原创 如何设计一个高并发系统,这篇文章告诉你
什么是高并发系统,就是一个能够保证整体可用的系统,能够处理很高的并发用户请求,能够承担很大的流量冲击。设计一个高并发系统,需要处理好一些系统瓶颈,比如说磁盘空间问题、内存是否充足、网络带宽是否够、连接数是否够。设计一个高并发系统可以考虑以下十几种方法。
2023-04-02 11:32:27
849
原创 线程安全解析以及解决
线程安全问题主要指的是多个线程操作共享数据的时候出现的数据安全性问题,也就是可能不符合预期数据。比如说,多个线程进行买票可能出现重票的情况。很明显,有重复票的,这是线程安全问题。
2023-03-09 22:51:56
83
原创 Java多线程最全总结
进程是操作系统资源分配的基本单位,操作系统在运行时会为每个进程分配不同的内存区域。进程是程序的一次执行过程:程序运行,加载到内存中,占用了cpu的资源。
2023-03-08 16:11:33
88
原创 按照redux源码仿写一个前端状态管理框架XRedux
前端状态管理框架XRedux是依据前端状态管理框架redux仿写的,目前只实现了主要的API,后续会添加其他API的实现。
2023-02-20 06:45:00
71
原创 MySql的执行原理,通俗易懂
执行一个mysql语句,大概流程如下图所示:当在客户端输入账号密码后,执行流程如上图所示,下面分别叙述:连接器是mysql 服务器的第一个模块,当使用mysql客户端链接mysql服务器时,连接器就处理连接请求。客户端与服务端经过TCP连接后,连接器就开始认证身份。密码验证正确后,读取用户权限。连接完成后,mysql8.0以前是走查询缓存逻辑的。如果有缓存结果,就不会往下流程走,返回缓存结果给客户端;如果没有缓存,那么就会走分析流程。mysql8.0将查询缓存的模块去掉了。首先进行词法分析,然后进行语法分析
2022-09-28 22:49:57
520
原创 最全的Go开发教程,超详细哦
stru := Book{"编程设计", "xian"}fmt.Println("stru为:", stru)book1.name = "js程序设计"// 也可以使用key => value格式fmt.Println(Book{name: "编程设计", author: "xian"})}stru为: {编程设计 xian}book1: {js程序设计 xxx}{编程设计 xian}结构体.成员名。
2022-09-26 07:30:00
7784
原创 几十行代码实现画布签名功能,也能保存为图片,简直碉堡了
估计很多人用过或者了解过photoshop,也有web版的ps工具,ps的主板页面就是今天讲的画布。下面用几十行代码实现一个具有基本功能的画布。
2022-09-22 04:34:15
438
原创 这估计是最全的Linux命令详细介绍了吧,附带Linux系统文件目录
这估计是最全的Linux命令详细介绍了吧,附带Linux系统文件目录 。touch, grep: 查找文件内容 , sed: 编辑文件内容, tail: 交互查看文件内容, 管道, 修改赋予权限, wget, yum. . .
2022-09-21 07:00:00
459
原创 写个javascript工具函数npm包,这依赖包的功能简直太赞了
平时写代码的时候,总会发现一些功能函数经常用,我就想着写个npm包,包名就叫作x-js-tools,具体的工具函数是定义在tools文件夹中的。
2022-08-30 06:55:52
423
原创 最全最详细的使用vue3+vite+pinia+vue-router+ts+less+element-plus搭建前端项目教程
最全最详细的使用vue3+vite+pinia+vue-router+ts+less+element-plus搭建前端项目教程
2022-08-22 07:30:00
2906
原创 前端实现一个Tree组件,您看这篇就够了
Tree组件,也就是树组件,数据结构当中的树也与此类似。开发树组件的难点是什么:是如何构建子树,其实很容易想到用**递归**构建子树。这里Tree组件分了两种:节点名称前面带复选框的和不带复选框的。树组件代码:......
2022-07-19 06:00:00
3621
1
原创 经验教训告诉你,数据库字段一定要设置为not null
数据库字段一定要设置为 not null,不然会有很大的bug。理由一:如果字段为null,程序员再操作的时候还需要判断是不是为null。理由二:当查询数据的时候需要加判断,判断字段or is null,比如:select count(*) from tab where age != 0 or age is null理由三:如果字段存在null值,数据库操作不能使用索引,要进行全部扫描。增加性能消耗。如果字段设置为not null,那一定有默认值,直接可以用以下语句操作就行
2020-12-05 10:19:06
1023
原创 python版冒泡排序
python版的冒泡排序:for i in range(len(arr)):for j in range(len(arr)-1-i):如果左边数字比右边大,则交换if arr[j] > arr[j+1]:arr[j],arr[j+1] = arr[j+1],arr[j]print(l)
2020-12-04 01:29:01
103
原创 javascript cookio函数封装
cookio 作为浏览器数据存储的一种方式,常用于用户登录账号存储。其设cookio和获取cookio函数如下:// 设置cookio函数function setCookie(key, value, time){// 取个时间戳let oldTime = new Date( );document.cookie = key+’=’+value+’;expires=’+oldTime+‘delay=’+time;}// 获取cookio函数function getCookie(key){le
2020-12-04 00:21:26
196
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人