学习记录
文章平均质量分 94
法则求徒
苟有恒,何必三更眠五更起
展开
-
【数据库】Mysql索引
1.1、索引的含义数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询,更新数据库中表的数据。索引的实现通常使用B树和变种的B+树(MySQL常用的索引就是B+树)。除了数据之外,数据库系统还维护为满足特定查找算法的数据结构,这些数据结构以某种方式引用数据,这种数据结构就是索引。简言之,索引就类似于书本,字典的目录。1.2、为什么用索引?打个比方,如果正确合理设计使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。原创 2024-02-18 20:36:27 · 1118 阅读 · 0 评论 -
[Mysql]Mysql 锁机制浅析
使用mysql,就是执行一条条SQL语句,而每一条sql语句其实可以看作一个个小的事务。mysql中事务是基于数据库连接来维护的,较早使用的JDBC中,我们连接数据库前,就往往需要先获取数据库连接对象。针对一个数据库连接,可以理解为一个工作线程,由此,多个事务的并发,本质就是多个线程的并发问题。原创 2023-12-11 21:59:59 · 141 阅读 · 0 评论 -
[线程池]CPU密集型和IO密集型对 CPU内核之间的关系
在开发过程中,经常要使用到线程池,然而在自定义线程池的过程中,核心线程数应该如何设置呢?一般网上的答案是,根据IO密集型和CPU密集型进行区别设置先不说实际运用中是否按照以上公式设置,我们先来看一下什么是IO密集型程序和CPU密集型程序。原创 2023-12-07 20:42:00 · 526 阅读 · 0 评论 -
[分布式学习记录]ELK 分布式日志解决方案
核心文件:容器中plugins/ik/config下的IKAnalyzer.cfg.xml 文件。原创 2023-12-06 20:57:48 · 209 阅读 · 0 评论 -
[JUC] 线程池浅析
线程池是一种利用池化技术思想来实现的线程管理技术,主要是为了复用线程、便利地管理线程和任务、并将线程的创建和任务的执行解耦开来。可以通过创建线程池来复用已创建的线程来降低频繁创建和销毁线程所带来的资源消耗。原创 2023-12-05 20:59:08 · 88 阅读 · 0 评论 -
[JUC]Synchronized的使用和1.6优化
数据同步需要依赖锁,那锁的同步又依赖谁?synchronized给出的答案是在软件层面依赖于JVM,而juc.Lock给出的答案是在硬件层面依赖特殊的CPU指令。原创 2023-11-30 22:30:37 · 1709 阅读 · 0 评论 -
【JavaWeb】过滤器、拦截器、ControllerAdvice、AOP的联系与区别
由Spring提供支持的一种动态拦截方法调用的机制,只对action请求起作用(个人理解就是只对SpringMVC的请求访问进行拦截)并且可以获得这些action请求的上下文信息,如参数,返回值等。来自Spring,不依赖于servlet容器,但依赖于Spring实现原理:通过反射机制实现可以获取到Spring中存在的Bean,通过注入的方式只对action请求起作用,并可以获取到action请求的上下文roller方法。原创 2023-11-29 22:35:50 · 1134 阅读 · 0 评论 -
【Spring】Spring的循环依赖以及解决方案
Spring循环依赖指的是两个或多个Bean之间相互依赖,形成一个环状依赖的情况。通俗的说,就是A依赖B,B依赖C,C依赖A,这样就形成了一个循环依赖的环。 Spring循环依赖通常会导致Bean无法正确地被实例化,从而导致应用程序无法正常启动或者出现异常。因此,Spring循环依赖是一种需要尽量避免的情况。原创 2023-11-27 21:06:57 · 6510 阅读 · 0 评论 -
【springMVC】SpringMVC的工作流程解析
SpringMVC是一个基于Spring开发的MVC轻量级框架,是Spring3.0后发布的组件,SpringMVC和Spring可以无缝整合,使用DispatcherServlet作为前端控制器,且内部提供了处理器映射器、处理器适配器、视图解析器等组件,可以简化JavaBean封装,Json转化、文件上传等操作,其将web层进行解耦,并管理应用所需对象的生命周期,大大地简化了日常的开发。原创 2023-11-27 20:09:07 · 765 阅读 · 0 评论 -
【web远程调用】远程调用中的rpc 与http
RPC(Remote Produce Call,远程过程调用)不同于http协议,RPC是一种概念框架。 它是一种远程调用程序的技术,它允许程序在不同的地址空间中相互通信,像调用本地函数一样调用远程函数,从而实现分布式应用程序的构建。 在 RPC 中,客户端应用程序发送请求消息到远程服务器,服务器接收请求并执行相应的操作,然后将结果返回给客户端。RPC 可以使用多种通信协议,例如 HTTP/RPC、JSON-RPC、XML-RPC 等,这些协议定义了客户端和服务器之间的通信格式。原创 2023-11-26 22:29:52 · 325 阅读 · 0 评论 -
8. 设计模式——建造者模式
建造者模式是Java设计模式中的一种,作用就是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。它的主要将一个复杂对象的构建过程分解为多个简单对象的构建过程,并且使这些构建过程按照一定的顺序进行组装,最终实现对复杂对象的创建。个人理解:好比生产汽车,一辆汽车的生产过程无疑是非常复杂的,包含多种零件加工顺序;另外不同的汽车,其所需零件和加工顺序也不一样。原创 2023-11-23 20:42:06 · 80 阅读 · 0 评论 -
7.WebSocket与Http协议的区别
HTTP全称是“超文本传输协议”(Hypertext Transfer Protocol),是Web应用程序最为广泛使用的协议之一。 它建立在TCP协议之上,通过请求-响应模式来传输数据。在HTTP中,客户端发送一个请求到服务器,服务器接收到请求后,返回相应的响应。 HTTP是一种无状态协议,每个请求-响应周期都是独立的。这意味着服务器不能维护客户端的状态信息,每次请求都需要重新验证身份和权限等信息。转载 2023-11-22 21:37:46 · 75 阅读 · 0 评论 -
【JavaSE】ConcurrentHashMap和HashMap的区别
HashMap在put的时候,插入的元素超过了容量(由负载因子决定)的范围就会触发扩容操作,就是rehash,这个会重新将原数组的内容重新hash到新的扩容数组中,在多线程的环境下,存在同时其他的元素也在进行put操作,如果hash值相同,可能出现同时在同一数组下用链表表示,造成闭环,导致在get时会出现死循环,所以HashMap是线程不安全的。 HashMap虽然处理数据的效率高,但是在多线程的情况下存在着安全问题,因此设计了CurrentHashMap来解决多线程安全问题。HashMap。原创 2023-11-21 22:28:49 · 95 阅读 · 0 评论 -
【并发编程】消费者与生产者模型
生产者和消费是操作系统中一种重要的模型,它描述的是一种等待和通知的机制。 在日常生活中,卖东西的商家如超市,可以看作生产者,而顾客进行购买商品则就是消费者的角色;同理,实际的软件开发过程中,经常会见到这样一幕: 代码的某个模块负责生产数据(供货商),而生产出来的数据却不得不交给另一模块(消费者)来对其进行处理,在这之间我们必须要有一个类似上述超市的东西来存储数据(超市),这就抽象出了生产者/消费者模型。原创 2023-10-30 19:40:17 · 80 阅读 · 0 评论 -
【数据库设计】Mysql数据库分表分库
当然,并不是所有表都需要切分,主要还是看数据的增长速度。但是如果取得页数很大,情况就变得复杂的多,因为各分片节点中的数据可能是随机的,为了排序的准确性,需要将所有节点的前N页数据都排序好做合并,最后再进行整体排序,这样的操作很耗费CPU和内存资源,所以页数越大,系统性能就会越差。UUID是最简单的方案,本地生成,性能高,没有网络耗时,但是缺点明显,占用存储空间多,另外作为主键建立索引和基于索引进行查询都存在性能问题,尤其是InnoDb引擎下,UUID的无序性会导致索引位置频繁变动,导致分页。原创 2023-10-28 15:00:29 · 144 阅读 · 0 评论 -
【JUC】TreadLocal对象的使用
ThreadLocal是Java中的一个类,用于在多线程环境下保存线程相关的变量。它提供了一种线程级别的数据隔离机制,使得每个线程都可以独立地操作自己的变量副本,而不会与其他线程产生冲突。 具体而言,使用 ThreadLocal 时,每个线程可以通过或方法访问资源在当前线程的副本,而不会与其他线程产生资源竞争。这意味着 ThreadLocal 并不考虑如何解决资源竞争,而是为每个线程分配独立的资源副本,从根本上避免发生资源冲突,是一种无锁的线程安全方法。原创 2023-10-25 20:59:04 · 94 阅读 · 0 评论 -
【JUC】CAS策略
线程安全问题发生在多线程环境中 , 并且存在数据共享(即多个线程操作同一个数据)。 当多个线程访问某个类(数据)时,不管运行时环境采用何种调度方式或者这些进程将如何交替执行,并且在主调代码中**不需要任何额外的同步或协同,这个类(数据)都能表现出正确的行为,**那么就称这个类(数据)是线程安全的。 反之,当多个线程共享数据,数据产生与线程逻辑运行结果不一致的情况,(例如100张票被多个线程同时卖出一张,结果还剩99张)就是线程不安全。原创 2023-10-24 20:54:42 · 90 阅读 · 0 评论 -
【Maven】Maven 与 私服搭建
Pom(project object model),意思为项目对象模型。通过pom.xml表示maven项目主要描述了项目:包括配置文件,开发者需要遵循的规则,组织和项目的url,项目的依赖性,以及其他所有的项目相关因素。选择maven2(hosted)创建自定义仓库在本地仓库上传后的文件夹(maven-repository)下创建一个shell脚本,命名 repo.sh创建脚本touchrepo.sh编辑脚本vimrepo.sh/bin/bashdo;;;;;;esac。原创 2023-10-23 20:38:59 · 1529 阅读 · 0 评论 -
【项目设计】RBAC-基于角色权限的模型
加入用户组的概念后,可以将部门看做一个用户组,再给这个部门直接赋予角色(1万员工部门可能就几十个),使部门拥有部门权限,这样这个部门的所有用户都有了部门权限,而不需要为每一个用户再单独指定角色,极大的减少了分配权限的工作量。比如淘宝网的商家,商家自身也有一套组织架构,比如采购部,销售部,客服部,后勤部等,有些人拥有客服权限,有些人拥有上架权限等等,所以用户组是可以拓展的。每个组织部门下都会有多个职位,比如财务部有总监,会计,出纳等职位,虽然都在同一部门,但是每个职位的权限是不同的,职位高的拥有更多的权限。原创 2023-10-21 15:58:03 · 279 阅读 · 0 评论 -
【Redis】Redis 介绍与5种基本数据类型
Nosql = not only sql(不仅仅是SQL)RDBMS关系型数据库:列+行的形式,同一个表下数据的结构是一样的。Nosql非关系型数据库:数据存储没有固定的格式,并且可以进行横向扩展。NoSQL泛指非关系型数据库。原创 2023-10-19 22:04:11 · 63 阅读 · 0 评论 -
【Spring】Spring 注解缓存介绍
当我们需要频繁读取一些数据时,为了提高性能,可以将这些数据缓存起来,避免每次都从数据库中读取。而为了实现缓存,Spring 提供了一些缓存注解,可以方便地实现缓存功能。原创 2023-10-18 20:27:41 · 80 阅读 · 0 评论 -
【SpringMVC】SpringMVC 工作流程
Spring MVC是Spring提供的一个实现了Web MVC设计模式的轻量级Web框架。 MVC 是一种思想,而 Spring MVC 是对 MVC 思想的具体实现。Spring MVC 是一个实现了 MVC 模式,并继承了 Servlet API 的 Web 框架。 三层架构分为表述层(或表示层)、业务逻辑层、数据访问层,表述层表示前台页面和后台servlet。原创 2023-10-17 22:36:25 · 75 阅读 · 0 评论 -
【Mysql】Mysql 架构浅析
MyISAM不需要事务支持(不支持)并发相对较低(锁定机制问题)数据修改相对较少,以读为主数据一致性要求不高InnoDB需要事务支持(具有较好的事务特性)行级锁定对高并发有很好的适应能力数据更新较为频繁的场景数据一致性要求较高硬件设备内存较大,可以利用InnoDB较好的缓存能力来提高内存利用率,减少磁盘IO。原创 2023-10-16 21:50:51 · 66 阅读 · 0 评论 -
【Java项目】测试总结
后端常见测试原创 2023-10-12 09:38:19 · 237 阅读 · 0 评论 -
【docker】Dockerfile 与 spring项目整合dockerfile
dockerfile 与项目整合原创 2023-10-10 21:50:41 · 374 阅读 · 0 评论 -
【docker】Docker配置Mysql主从
使用docker搭建主从Mysql服务器原创 2023-10-09 20:34:39 · 247 阅读 · 1 评论 -
【docker】doker概述与常用指令
Docker 是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在本地编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。Docker平台就是一个软件集装箱化平台,意味着我们自己可以构建应用程序,将其依赖关系一起打包到一个容器中,然后这容器就很容易运送到其他的机器上进行运行,而且非常易于装载、复制、移除,非常适合软件弹性架构。原创 2023-10-08 20:42:08 · 271 阅读 · 0 评论