- 博客(44)
- 收藏
- 关注
原创 InnoDB内存结构
InnoDB存储引擎支持事务,其设计目标主要面向在线事务处理(OLTP)的应用。其特点是行锁设计、支持外键,并支持非锁定读,即默认读操作不会产生锁。InnoDB通过使用多版本并发控制(MVCC)来获取高并发性,并且实现了SQL标准的4中隔离级别,默认为REPEATABLE级别。同时,使用一种被称为next-key-locking的策略来避免幻读现象的产生。除此之外,InnoDB存储引擎还提供了插入缓冲(insert buffer)、二次写(double write)、自适应哈希索引(adaptive ha
2022-02-23 16:51:55
865
原创 Spring-Gateway 路由配置
pring: cloud: gateway: routes: - id: before_route uri: http://localhost:8001 predicates: # 在某个时间之前的请求才会被转发到 http://localhost:8001, - Before=2017-01-20T17:42:47.789-07:00[America/Denver] # 在某个时间之后的请求才.
2022-02-21 18:51:04
2610
原创 MySQL体系结构
连接池组件:与mysql建立连接时,使用连接池。管理服务和工具组件:系统管理和控制工具,例如备份恢复、Mysql复制、集群等SQL接口组件:接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调用SQL Interface查询分析器组件: SQL命令传递到解析器的时候会被解析器验证和解析。解析器是由Lex和YACC实现的,是一个很长的脚本, 主要功能:a . 将SQL语句分解成数据结构,并将这个结构传递到后续步骤,以后SQL语句的传递和处理就是基于这个结构的...
2022-02-14 16:45:27
134
原创 获取本地服务器信息
#!/bin/bash# 获取本地服务器IP地址IP=`ifconfig | grep inet | grep -vE 'inet6|127.0.0.1' | awk '{print $2}'`echo "IP地址:"$IP # 获取cpu总核数cpu_num=`grep -c "model name" /proc/cpuinfo`echo "cpu总核数:"$cpu_num # 1、获取CPU利用率# 获取用户空间占用CPU百分比cpu_user=`top -b -n 1 | gr.
2022-01-24 15:46:09
193
原创 GRPC 上下文传递数据
项目还是基于springcloud+nacos+grpc场景:登录后,需要把userId进行上下文共享,也就是在整个微服务构架内,都可以使用,或都说通过header把基本数据进行传递。1. 客户端传递数据使用fegin进行服务间调用,可以使用如下方法1.直接在请求方法上,加上@Headers(value={"ContentType=application/x-www-form-urlencoded","k=v"})2.在需要调用的类上,增加拦截器,继承RequestInterceptor
2022-01-21 16:47:16
2171
原创 springcloud 集成nacos与GRPC
springcloud 集成nacos与GRPC,需要做如下准备1. server端2. client端3. proto文件4. 相应的pom5. nacos服务器springcloud 集成nacos与GRPC,其它就是普通的springcloud的项目,使用nacos作为注册中心与配置中心,然后引入GRPC协议。本身没什么难度,上手速度也比较快。步骤1.创建java maven工程,使用maven对Jar包进行管理,工程目录如下步骤2.在springclo
2022-01-19 18:26:41
2859
原创 springboot 集成GRPC
springboot 集成GRPC,需要做如下准备1. server端2. client端3. proto文件4. 相应的pom步骤1.创建java maven工程,使用maven对Jar包进行管理,工程目录如下:步骤2.在pom.xml中添加相应的依赖,注意依赖的版本,不同的版本生成的代码可能不致,因为是示例demo,所以我把两个相应的包都放在了最外层的pom中,真正的项目中,两都是要分开在不同项目中,做到最小依赖;引入的POM并不是只有这一种方法,也可以单独引入s
2022-01-18 11:06:42
3019
2
原创 java 普通工程使用GRPC
java 普通工程中使用GRPC,需要满足以下几点1. server 服务端2. client 服务调用端3. proto文件,用于生成grpc需要的代码4.相应的Jar包支持步骤1.创建java maven工程,使用maven对Jar包进行管理,工程目录如下:步骤2.在pom.xml中添加相应的依赖,注意依赖的版本,不同的版本生成的代码可能不致<dependencies> <dependency>
2022-01-17 17:34:48
615
原创 GRPC 简介
gRPC是一款RPC框架,也是本系列的主角,在性能和版本兼容上做了提升和让步:Protobuf进行数据编码,提高数据压缩率 使用HTTP2.0弥补了HTTP1.1的不足 同样在调用方和服务方使用协议约定文件,提供参数可选,为版本兼容留下缓冲空间protobuf是一款用C++开发的跨语言、二进制编码的数据序列化协议,以超高的压缩率著称。它和早期的RPC方案一样,需要双方维护一个协议约束文件,以.proto结尾,使用proto命令对文件进行解析,会生成对应的Stub程序,客户端和服务端都需要保存.
2022-01-17 14:58:29
457
原创 迭代器模式
这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。优点: 1、它支持以不同的方式遍历一个聚合对象。2、迭代器简化了聚合类。3、在同一个聚合上可以有多个遍历。4、在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码。缺点:由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,类的个数成对增加,这在一定程度上增加了系统的复杂性。应用:1、访...
2018-05-10 13:33:45
131
原创 享元模式
享元模式(FlyweightPattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。 优点:大大减少对象的创建,降低系统的内存,使效率提高。缺点:提高了系统的复杂度,需要分离出外部状态和内部状态,而且外部状态具有固有化的性质,不应该随着内部状态的变化而变化,否则会造成系统的混乱。应用: 1、系统有...
2018-05-10 13:31:47
129
原创 组合模式
组合模式(CompositePattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。我们通过下面的实例来演示组合模式的用法。实例演示了一个组织中员工的层次结构。 优点: 1、高层模块调用简单...
2018-04-28 13:47:34
121
原创 桥接模式
桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 优点: 1、抽象和实现的分离。2、优秀的扩展能力。3、实现细节对客户透明。 缺点:桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。 应用:将抽象部分与实现部分分离,使它们都可以独...
2018-04-26 13:18:27
125
原创 外观模式
外观模式(FacadePattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。 优点: 1、减少系统相互依赖。2、提高灵活性。3、提高了安全性。缺点:不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。应用:降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。1、为复杂的模块或子系...
2018-04-25 20:02:16
130
原创 代理模式
在代理模式(ProxyPattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。 优点: 1、职责清晰。2、高扩展性。3、智能化。 缺点: 1、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。2、实现代理模式需要额外的工作,有些代理模式的实现非常复杂。 应用:要访问...
2018-04-23 15:50:43
237
原创 装饰器模式
装饰器模式(DecoratorPattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。 优点:装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。缺点:多层装饰比较复杂。使用:1.扩展一个类的功能。 2.动态增加功能,动态撤销。 实现代码public interf...
2018-04-17 20:11:28
125
原创 适配器模式
适配器模式(AdapterPattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。优点: 1、可以让任何两个没有关联的类一起运行。 2、提高了类的复用。 3、增加了类的透明度。 4、灵活性好。缺点: 1、过多地使用适配器,会让系统非常零乱,不易整体进行把握。比如,明明看到调用的是 A接口,其实内部被适配成了 B 接口的实现,一个系统如果太多出...
2018-04-13 22:52:58
98
原创 解释器模式
解释器模式(InterpreterPattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL解析、符号处理引擎等。优点: 1、可扩展性比较好,灵活。 2、增加了新的解释表达式的方式。 3、易于实现简单文法。 缺点: 1、可利用场景比较少。 2、对于复杂的文法比较难维护。 3、解释器模式会引起类膨胀。 4、解...
2018-04-11 09:59:52
106
原创 中介者模式
用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。 优点: 1、降低了类的复杂度,将一对多转化成了一对一。 2、各个类之间的解耦。 3、符合迪米特原则。 缺点: 中介者会庞大,变得复杂难以维护。 应用: 1、系统...
2018-04-09 10:27:20
174
原创 访问者模式
使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。优点: 1、符合单一职责原则。2、优秀的扩展性。 3、灵活性。 缺点:1、具体元素对访问者公布细节,违反了迪米特原则。 2、具体元素变更比较困难。 3、违反了依赖倒置原则,依赖了具体类,没...
2018-04-03 09:22:04
85
原创 状态模式
类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。 优点: 1、封装了转换规则。 2、枚举可能的状态,在枚举状态之前需要确定状态种类。 3、将所有与某个状态有关的行为放到一个类中,并且可以方便地增加新的状态,只需要改变对象状态即可改变对象的行为。4、允许状态转换逻辑与状态对象合成一体,而不是某一个巨大的条件语句块。 5、可以让多个环境对象共享一个状态对象,从而减少系统中对象的个数。 ...
2018-03-30 15:26:17
110
原创 备忘录模式
备忘录模式(MementoPattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。优点: 1、给用户提供了一种可以恢复状态的机制,可以使用户能够比较方便地回到某个历史的状态。 2、实现了信息的封装,使得用户不需要关心状态的保存细节。 缺点:消耗资源。如果类的成员变量过多,势必会占用比较大的资源,而且每一次保存都会消耗一定的内存。 应用:1、需要保存/恢复数据的相...
2018-03-30 09:46:58
101
原创 命令模式
命令模式(CommandPattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。优点: 1、降低了系统耦合度。 2、新的命令可以很容易添加到系统中去。 缺点:使用命令模式可能会导致某些系统有过多的具体命令类。 应用:1、模拟 CMD2、多个命令的事务处理 总结:使用命...
2018-03-29 09:28:09
105
原创 责任链模式
为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。优点: 1、降低耦合度。它将请求的发送者和接收者解耦。2、简化了对象。使得对象不需要知道链的结构。3、增强给对象指派职责的灵活性。通过改变...
2018-03-28 10:17:36
107
原创 原型模式
用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。class Prototype implements Cloneable { public Prototype clone(){ Prototype prototype = null; try{ prototype = (Prototype)super.clone(...
2018-03-27 13:55:21
109
原创 建造者模式
建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造模式是将复杂的内部创建封装在内部,对于外部调用的人来说,只需要传入建造者和建造工具,对于内部是如何建造成成品的,调用者无需关心。实现代码:public interface Builder { void buildPartA(); void buildPartB(); voi...
2018-03-22 09:22:21
92
原创 工厂模式
工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如Aa=new A()工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。实现代码:/** * 运算类,可把一些公用参数写在此类同,以便其它实现类使用 */public abstract cla...
2018-03-21 09:19:52
190
原创 策略模式
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。实现代码: // 策略接口public interface IStrategy { /** * 策略方法 */ public void strategyInterface();} // 实现方法Apublic class StrategyAImpl implements IStrategy{ ...
2018-03-20 17:10:37
162
原创 单例模式
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。 Java中单例模式定义:“一个类有且仅有一个实例,并且自行实例化向整个系统。” 优点一、实例控制单例模式会阻止其他对象实例化其自己的单例...
2018-03-19 16:00:35
107
原创 java内存区域
JAVA内存区域主要由程序计数器、java 虚拟机栈、本地方法栈、Java堆、方法区以及运行时常量池组成。程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。java 虚拟机栈与程序计数器一样,也是线程私有的,它的生命周期与线程相同。虚拟机描述的是JAVA方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一...
2018-03-14 13:49:17
129
原创 查询算法时间复杂度
最坏情况下 平均情况下 查找 插入 查找 插入 顺序查找(无序链表) N N N/2 N 二分查找(有序数组) log2n 2N log2n N 二叉树查找 N N 1.39lgN 1.39lgN 2-3树查找(红黑树) 2lgN 2lgN 1.00lgN 1.00lgN 拉链法(链表数组) <lgN <lgN N/...
2018-03-12 11:19:38
2677
原创 大表被锁定,锁表解除
事件描述:2018-1-12日发现大表t_historyYc表查询速度慢,有时无法查询,导致web应用程序无法正常访问。表名 t_historyYc 字段数量 >300 引擎 MyISAM 解决方法: show status like 'Table%'; // 查看表争用 showOPEN TABLES where In_use > 0; // 查看哪些表在使用中,In_use列...
2018-03-08 12:17:10
522
原创 InnoDB-- 事务
1. 事务 a. 概述 事务的特性 原子性(atumicity) 一致性(consistency) 隔离性(isolation) 持久性(durability) b. 分类 扁平事务 带有保存点的扁平事务 链事务 嵌套事务 分布式...
2018-03-07 09:53:00
250
原创 InnoDB-- 锁
1. 什么是锁 锁是数据库系统区别于文件系统的一个关键特性。锁机制用于管理对共享资源的并发访问。InnoDB存储引擎会在行级别上对表数据上锁。InnoDB存储引擎也会在数据库内部共他多个地方使用锁,从而允对许多种不同资源提供并发访问。2. lock与latch latch一般称为闩锁(轻量级的锁),因为其要求锁定的时间必须非常短。若持续的时间长,则应用的性能会非常差。在In...
2018-03-06 10:34:19
251
原创 InnoDB--索引
索引类型: 1. B+ 树索引 a. 聚集索引 b. 辅助索引 c. 索引的分裂 d. 索引的管理 i. 索引管理 ii. Fast Index Creation(快速索引创建) ...
2018-03-05 09:48:23
175
原创 InnoDB--表
1.索引组织表(IOT) 以主键顺序存储的表为IOT,每张表都会有主键,如果没有显示自定义主键,则按如下顺序创建主键: a.首先判断是否有非空的唯一索引,如果有,则该列即为主键 b.如果不符合上术条件,InnoDB存储引擎自动创建一个6个字节大小的指针2.InnoDB逻辑存储结构 存储结构组成部分: 1.表空间 启用了innodb_file_per_table参...
2018-03-02 09:55:37
173
原创 InnoDB -- 文件
1. 参数文件 使用show variables like '%%'; 进行查询具体参数 参数修改:SET [global | session] system_var_name = expr [@@global. | @@session. | @@] system_var_name = expr 使用select @@global.read_buf...
2018-03-01 09:22:31
144
原创 winform应用程序更换皮肤
// 1.下载皮肤与相应的DLL文件// 2.在VS中,引用相应的DLL文件// 3.创建应用程序,并把所需要的皮肤放在应用程序的debug目录下// 4.在窗体中创建成员变量private Sunisoft.IrisSkin.SkinEngine skinEngine1;// 5.在窗体的构造函数中写入如下代码 this.skinEngine1 = new Sunis
2015-11-24 14:09:28
473
原创 JS获取当前时间
// 多种浏览器通用var date = new Date();var year = date.getFullYear(); //获取完整的年份(4位)var month = date.getMonth(); //获取当前月份(从0开始)var day = date.getDate(); //获取当前日(1-31)var nowDate = ye
2015-11-24 12:00:16
250
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人