自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 收藏
  • 关注

原创 记录一次Nginx的使用过程

然后分析,我的Nginx是部署在Docker上面的,但是后端Java服务是直接在Linux中用jar包运行的。挂载操作会直接将两个文件夹内容同步,若是直接用宿主机的空文件夹直接挂载到容器内部的配置文件目录上,会造成nginx容器配置文件目录被同步为空文件夹,进而导致容器启动失败。nginx.conf内容如下,主要是对各种配置进行映射,其中的目录是Docker容器中的目录,可以根据挂在目录映射进行相应的修改。到这里明白是什么问题了,我在前端的访问端口是后端项目的端口,而非nginx的监听端口。

2024-07-08 20:30:00 1995

原创 MySQL性能优化 二、表结构设计优化

每张表建议都有一个主键(主键索引),而且主键类型最好是int类型,建议自增主键(不考虑分布式系统情况下 雪花算法)为减少关联查询,创建合理的冗余字段(创建冗余字段还需要注意数据一致性问题)对于表中经常不被使用的字段或者存储数据比较多的字段,考虑折表。设计中间表,一般针对于统计分析功能,或者实时性不高的需求。对于字段太多的大表,考虑折表(比如一个表有100多个字段)

2024-07-07 23:26:13 305

原创 MySQL性能优化 一、系统配置优化

数据库优化纬度有四个:硬件升级、系统配置、表结构设计、SQL语句及索引。

2024-07-07 23:18:18 580

原创 MySQL存储与优化 三、MySQL事务和锁

每一个写事务,都会修改Buffer Pool,从而产生相应的Redo/Undo日志,在Buffer Pool中的页被刷到磁盘之前,这些日志信息都会先写入日志文件中,如果Buffer Pool中的脏页没有刷成功,此时数据库挂了,那在数据库再次启动之后,可以通过Redo 日志将其恢复出来,以保证脏页写的数据不会丢失。如果在事务中执行了一条没有索引条件的查询,引发全表扫描,把行级锁上升为全表记录锁定(等价于表级锁),多个这样的事务执行后,就很容易产生死锁和阻塞,最终应用系统会越来越慢,发生阻塞或死锁。

2024-07-07 22:42:41 887

原创 MySQL存储与优化 二、MySQL索引原理

全表扫描:explain分析type属性为all全索引扫描:explain分析type属性为index索引过滤性不好:靠索引字段选型、数据量和状态、表设计频繁的回表查询开销:尽量少用select*,使用覆盖索引。

2024-07-07 21:47:11 628

原创 MySQL存储与优化 一、MySQL架构原理

Undo:以为撤销或取消,以撤销操作为目的,返回指定某个状态的操作Undo Log:数据库事务开始之前,会将要修改的记录存放到Undo日志里,当事务回滚时或者数据库崩溃时,可以利用Undo日志,撤销未提交事务对数据库产生的影响Undo Log产生和销毁:Undo Log在事务开始前产生;事务在提交时,并不会立刻删除undo log,innodb会将该事务对应的undo log放入到删除列表中,后面会通过后台线程purge thread进行回收处理。Undo Log属于逻辑日志,记录一个变化的过程。

2024-07-03 23:31:31 1192

原创 记录一次MySQL恢复

此文章由一次数据库被黑客删除而引发由于对于Linux操作、docker使用、MySQL原理这些都相对不是很熟悉,所以记录下来避免以后在工作中遇到类似的问题而惊慌失措。

2024-07-03 16:29:24 596 1

原创 Zookeeper 四、Zookeeper应用场景

Master选举是一个在分布式系统中非常常见的应用场景。分布式最核心的特性就是能够将具有独立计算能力的系统单元部署在不同的机器上,构成一个完整的分布式系统。而与此同时,实际场景中往往也需要在这些分布在不同机器上的独立系统单元中选出一个所谓的“老大”,在计算机中,我们称之为Master。在分布式系统中,Master往往用来协调集群中其他系统单元,具有对分布式系统状态变更的决定权。例如,在一些读写分离的应用场景中,客户端的写请求往往是由Master来处理的;

2024-06-27 21:45:00 1222 1

原创 Zookeeper 三、Zookeeper基本使用

对于每一个事务请求,Zookeeper都会为其分配一个全局唯一的事务ID,用ZXID来表示,通常是一个64位的数字。在Zookeeper中,每一个数据节点都是一个ZNode,上图根目录下有两个节点,分别是:app1和app2,其中app1下面又有三个子节点,所有ZNode按层次化进行组织,形成这么一棵树,ZNode的节点路径标识方式和Unix文件系统路径非常相似,都是由一系列使用斜杠(/)进行分割的路径表示,开发人员可以向这个节点写入数据,也可以在这个节点下面创建子节点。

2024-06-25 19:33:36 1239

原创 Zookeeper 二、Zookeeper环境搭建

Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。

2024-06-24 21:00:00 898

原创 Zookeeper 一、Zookeeper简介

分布式系统是同时跨越多给物理主机,独立运行的多个软件所组成的系统。类比一下,分布式系统就是一群人一起干活。人多力量大,每个服务器的算力是有限的,但是通过分布式系统,由n个服务器组成起来的集群,算力是可以无限扩张的。分布式系统的协调工作就是通过某种方式,让每个节点的信息能够同步和共享。这依赖于服务进程之间的通信。通过网络进行信息共享通过共享存储。

2024-06-20 22:41:09 978 1

原创 分布式理论与设计 六、分布式服务治理

当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心服务正常运作或高效运作。整个架构整体的负载超出了预设的上限阈值或即将到来的流量预计将会超过预设的阈值时,为了保证重要或基本的服务能正常运行,我们可以将一些不重要或不紧急的服务或任务进行服务的延迟使用或暂停使用。博物馆:限制每天参观总人数以保护文物地铁安检:有若干安检口,乘客依次排队,工作人员根据安检快慢决定是否放任进去。

2024-06-20 21:36:05 1084

原创 分布式理论与设计 五、分布式架构服务调用

Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。该框架提供了负载均衡,跟踪,智能监控,身份验证登功能,可以实现系统间的高效连接。和传统的单体架构相比,分布式多了一个远程服务之间的通信,不管是soa还是微服务,他们本质上都是对于业务服务的提炼和复用。

2024-06-18 21:17:07 732

原创 分布式理论与设计 四、分布式系统设计策略

在高可用(HA)系统中,当联系两个节点的“心跳线”断开时(即两个节点断开联系时)。本来为一个整体、动作协调的HA系统,就分裂成为两个独立的节点(即两个独立的个体)。由于相互失去了联系,都以为是对方出了故障,两个节点上的HA软件像“裂脑人”一样,“本能”地争抢“共享资源”、争起“应用服务”。共享资源被瓜分、两边“服务”都起不来了;两边“服务”都起来了,但同时读写“共享存储”,导致数据损坏(常见如数据库轮询着的联机日志出错)两个节点相互争抢共享资源,结果会导致系统混乱,数据损坏。

2024-06-17 22:17:56 1046

原创 分布式理论与设计 三、分布式一致性协议

NWR是一种在分布式存储系统中用于控制一致性级别的一种策略。在亚马逊的云存储系统中,就应用NWR来控制一致性N:在分布式存储系统中,有多少份备份数据W:代表一次成功的更新操作要求至少有W份数据写入成功R:代表一次成功的读数据操作要求至少有R份数据成功读取Gossip协议也叫Epidemic协议(流行病协议)。原本用于分布式数据库中节点同步数据使用,后被广泛用于数据库复制、信息扩散、集群成员身份确认、故障探测等。

2024-06-17 22:17:08 1243 1

原创 分布式设计与理论 二、分布式理论

CAP定理,它指出对于一个分布式计算系统来说,不可能同时满足以下三点。

2024-06-16 13:37:12 804

原创 分布式理论与设计 一、分布式架构介绍

通俗的理解,所谓分布式系统,就是一个业务拆分成多个子业务,分布在不同的服务器节点,共同构成的系统称为分布式系统,同一个分布式系统中的服务器节点在空间部署上是可以随意分布的,这些服务器可能放在不同的机柜中,也可能在不同的机房中,甚至分布在不同的城市。节点故障是分布式系统下另一个比较常见的问题,指的是组成分布式系统的服务器节点出现的宕机或“僵死”现象,根据经验来说,每个节点都有可能出现故障,并且经常发生。分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。

2024-06-16 13:36:20 667

原创 RPC 框架设计 四、Netty高级应用

Nettt的HTTP协议栈无论在性能还是在可靠性上,都表现优异,非常适合在非Web容器的场景下应用,相比传统的Tomcat、Jetty等Web容器,它更加轻量和小巧,灵活性和定制性也更好。粘包和拆包是TCP网络编程中不可避免的,无论是服务端还是客户端,当我们读取或者发送消息的时候,都需要考虑TCP底层的粘包/拆包机制。TCP是个“流”协议,所谓流,就是没有界限的一串数据。

2024-06-12 22:39:02 844 1

原创 RPC框架设计 三、Netty核心原理

NIO的类库和API繁杂,使用麻烦:需要熟练掌握Selector、ServerSocketChannel、SocketChannel、ByteBuffer等需要具备其他的额外技能:要熟悉Java多线程变成,因为NIO编程涉及到Reactor模式,你必须对多线程和网络编程非常熟悉,才能编写出高质量的NIO程序。开发工作量和难度都非常大:例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常流的处理等等。

2024-06-10 11:12:43 997

原创 RPC框架设计 二、NIO编程

Java NIO全称Java non-blocking IO,是指JDK提供的新API。从JDK1.4开始,Java提供了一系列改进的输入/输出的新特性,被统称为NIO(即New IO),是同步非阻塞的。NIO有三大核心部分:Channel(通道)、Buffer(缓冲区)、Selector(选择器)NIO是是面向缓冲区编程的。数据读取到一个缓冲区中,需要时可在缓冲区中前后移动,这就增加了处理过程中的灵活性,使用它可以提供非阻塞式的高伸缩性网络。

2024-06-09 22:15:14 1042

原创 RPC框架设计一、Socket与I/O模型

Socket,套接字就是两台主机之间逻辑连接的端点。TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。Socket是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的物种信息:连接使用的协议、本地主机的IP地址、本地进程的协议端口、远程主机的IP地址、远程进程的协议端口。

2024-06-09 22:14:16 956

原创 2.进程管理

一、基础知识1.进程与线程1)进程的概念和特征①进程的概念为了更好地描述和控制程序的并发执行,实现操作系统的并发性和共享性进程控制块(PCB):为了更好的描述进程的基本情况和运行状态,进而控制和管理进程PCB是进程存在的唯一标志进程的一些典型定义进程是程序一次执行过程进程是一次程序及其数据在处理机上顺序执行时锁发生的活动进程是具有独立功能的程序在一个数据集合上运行的过程,是资源分配和调度的独立单位(没有引入线程)②进程的特征动态性:动态性是进程最基本特征,进程有着创

2021-04-04 15:22:16 1292

原创 1.操作系统引论

一、基础知识1.操作系统的基本概念1)操作系统的概念:控制和管理整个计算机系统的硬件与软件资源合理地组织、调度计算机的工作与资源为用户和其他软件方便提供方便接口与环境的程序集合2)操作系统的特征:①并发两个或多个事件在同一时间间隔内发生使得系统具有处理和调度多个程序同时指向的能力操作系统的并发是通过分时实现的注意:并发是指在一个时间段,并行是在同一时刻,并行是指系统同时执行或操作(硬件支持:多流水线或者多处理机)②共享互斥共享方式例如打印机

2021-03-29 09:12:55 777

原创 2.线性表

一、顺序表顺序表是计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元,依次存储线性表中的各个元素,使得线性表中在逻辑结构上相邻的元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系。1.顺序表的实现1)顺序表API的设计:类名SequenceList构造方法SequenceList(int capacity):创建容量为capacity的SequenceList对象成员方法1.public v

2021-03-19 09:24:45 464 1

原创 1.排序算法

一、简单排序1.Comparable接口介绍java提供了一个接口Comparable就是用来定义排序顺序的。需求:定义一个学生类Student,具有年龄age和姓名username两个属性,并通过Comparable接口提供比较规则定义测试类Test,在测试类中定义测试方法Comparable getMax(Comparable c1,Comparable c2)完成测试student.javapublic class Student implements Comparable<S

2021-03-16 19:20:22 122

原创 9.个人信息查询接口

1.在UserMapper.xml下添加 <select id="findByUserId" resultType="User"> select *from user where id=#{user_id} </select>2.在UserMapper.java下添加User findByUserId(@Param("user_id") Integer userId);3.在UserService.java下添加User findByUserId(Integer

2021-03-15 10:44:12 14102 3

原创 8.用户登录校验拦截器

1.在interceptor下添加LoginInterceptor.javapackage com.xiaoguan.interceptor;import com.fasterxml.jackson.databind.ObjectMapper;import com.xiaoguan.untils.JWTUtils;import com.xiaoguan.untils.JsonData;import io.jsonwebtoken.Claims;import org.apache.commons

2021-03-15 10:43:34 160

原创 7.登录校验

1.在until下添加JWTUtils.javapackage com.xiaoguan.untils;import com.xiaoguan.model.entity.User;import io.jsonwebtoken.Claims;import io.jsonwebtoken.Jwts;import io.jsonwebtoken.SignatureAlgorithm;import java.util.Date;/** Jwt工具类* 注意点:* 1.生成的token,是可

2021-03-15 10:43:17 195

原创 6.注册功能开发及MD5加密工具类封装

1.在resources下的mapper下添加UserMapper.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="com.xiaoguan.mapper.UserMapper">

2021-03-14 14:44:32 251

原创 5.自定义异常开发和配置

1.在exception包下添加XDException.javapackage com.xiaoguan.exception;/** 自定义异常类* */public class XDException extends RuntimeException{ private Integer code; private String msg; public XDException(Integer code,String msg){ this.code = code

2021-03-14 09:23:17 204 1

原创 4.视频详情接口

1.在resources下的mapper.VideoMapper.xml添加 <resultMap id="Video"> ="VideoDetailResultMap" type <id column="id" jdbcType="INTEGER" property="id"/> <result column="title" jdbcType="VARCHAR" property="title"/>

2021-03-13 17:49:28 139

原创 3.轮播图接口

1.在resources下的mapper下的VideoMapper.xml添加 <select id="listVideoBanner" resultType="VideoBanner"> select * from video_banner order by weight asc </select>2.在java下的mapper下的VideoMapper添加 /** * 首页轮播图列表 * @return

2021-03-13 17:48:17 961

原创 2.开发视频列表

1.在resources下的mapper下创建VideoMapper.xml文件<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="com.xiaoguan.mapper.VideoMapper"

2021-03-13 17:47:54 143

原创 1.相关配置

1.添加pom依赖<?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 https://maven.apache.org/xsd/maven-4

2021-03-13 17:45:14 122

原创 2.坐标系统和颜色变换

坐标系统和颜色变换1.坐标系统1)坐标系统GDI+定义了三种形式的坐标系统:世界坐标系统、页面坐标系统和设备坐标系统测量相当于文档区域左上角的位置和测量相当于屏幕(桌面)左上角的位置之间的区别非常重要,GDI+为它们指定了不同的名称:世界坐标:用来绘制自然模型的坐标(以像素为单位)。页面坐标:要测量的点距离客户区域左上角的位置(以像素为单位)设备坐标:设备坐标类似页面坐标,但其测量单位不一定是像素,而是用户通过调用Graphics.PageUnit属性指定的单位。GDI+在设备绘图表面(

2021-03-12 09:15:03 532

原创 1.图像基础

图形基础1.笔和画刷1)Pen类应用Pen类来创建Pen对象,在创建过程中可以指明颜色、线宽、样式等属性。Pen类共有四个构造函数。Public Pen(color);Public Pen(color,float);Public Pen(brush);Public Pen(brush,float);Pen类除提供了四个不同的构造函数外,还提供了如下一系列属性,以便于控制实例对象的行为状态Alignment ---- 获得或设置Pen对象的排列Brush ---- 获得或设置初始化P

2021-03-11 15:55:36 358

原创 3.系统总线

一.问答题1.解释下列概念(1)总线 (2)系统总线 (3)通信总线(4)总线主设备(5)总线从设备(6)总线仲裁总线是连接多个部件(模块)的信息传输线,是各部件共享的传输介质系统总线是指CPU、主存、I/O设备(通过I/O接口)各大部件之间的信息传输线。按传输内容的不同,又分数据总线、地址总线和控制总线。通信总线是连接计算机系统之间或计算机系统与其他系统(如控制仪表、移动通信等)之间的信息传输线。总线主设备是指获得总线控制的设备总线从设备是指被主设备访问的设备,值能响应从主设备发来的各种

2021-03-11 09:20:07 1417

原创 1.计算机系统概论

1.什么是计算机系统?说明计算机系统的层次结构计算机系统包括硬件和软件。从计算机系统的层次结构来看,它通常可有5个以上的层次,在每一层次(级)上都能进行程序设计。由下至上可排序为:第1级微程序机器级,微指令由硬件直接执行;第2级传统机器级,用微程序解释机器指令;第3级操作系统级,一般用机器语言程序解释作业控制语句;第4级汇编语言机器级,这一级由汇编程序支持和执行;第5级高级语言机器级,采用高级语言,由各种高级语言编译程序支持和执行。还可以有第6级应用语言机器级,采用各种面向问题的应用语言。2.画出计算机

2021-03-11 09:19:36 1157

原创 3.软件设计原则

软件设计原则在软件开发中。为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据6条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本1.开闭原则对扩展开发,对修改关闭。在程序需要进行扩展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类。因为抽象灵活性好,适应性广,只要抽象的合理,可以基本保持软件架构的稳定。而软件中易变的细节可以从抽象派生来的实现类来进行扩展,

2021-03-05 11:00:59 449 1

原创 2.类图

一.类图概述类图是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。二.类图的作用在软件工程中,类图是一种静态的结构图,描述了系统的类的集合,类的属性和类之间的关系,可以简化了人们对系统的理解类图是系统分析和设计阶段的重要产物,是系统编码和测试的重要模型三.类图表示法1.类的表示方法在uml类图中,类使用包含类名、属性(field)和方法(method)且带有分割线的矩形来表示如图:表示一个E

2021-03-05 10:59:06 2185 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除