ES 八月 13, 2021

JDK动态代理生成的CLASS文件

文章字数 1.5k 阅读约需 1 mins.

在学习代理模式的时候,想看看动态代理生成的文件长啥样.只需要在程序启动时设置生成配置.

源码中可以看出文件输出是通过 saveGeneratedFiles 控制的.

而saveGeneratedFiles...

查看全文

ES 八月 13, 2021

JDK动态代理生成的CLASS文件

文章字数 1.5k 阅读约需 1 mins.

在学习代理模式的时候,想看看动态代理生成的文件长啥样.只需要在程序启动时设置生成配置.

源码中可以看出文件输出是通过 saveGeneratedFiles 控制的.

而saveGeneratedFiles的生成是通过GetBooleanAction方法读取系统变量由来.

private static final boolean saveGeneratedFiles = (Boolean)AccessController.doPrivileged(new GetBooleanAction("...
查看全文

MYSQL 六月 15, 2021

mysql perform schema

文章字数 5.5k 阅读约需 5 mins.

MySQL的performance schema 用于监控MySQL server在一个较低级别的运行过程中的资源消耗、资源等待等情况

特点: <https://dev.mysql.com/doc/refman/5.7/en/performance-schema.html>

  1. 提供了一种在数据库运行时实时检查server的内部执行情况的方法。performance_schema 数据库中的表使用performance_schema存储引擎。该数据库主要关注数据库运行过程中的性能相关...

查看全文

MYSQL 六月 15, 2021

MySQL执行计划

文章字数 1.9k 阅读约需 2 mins.

​ 在企业的应用场景中,为了知道优化SQL语句的执行,需要查看SQL语句的具体执行过程,以加快SQL语句的执行效率。

​ 可以使用explain+SQL语句来模拟优化器执行SQL查询语句,从而知道mysql是如何处理sql语句的。

官方地址: https://dev.mysql.com/doc/refman/5.7/en/explain-output.html

1、执行计划中包含的信息

Column Meaning
id The SELECT identifier
select_type...
查看全文

MYSQL 六月 15, 2021

schema与数据类型优化

文章字数 7.3k 阅读约需 7 mins.

优化原则

  1. 更小的通常更好

    应该尽量使用可以正确存储数据的最小数据类型,更小的数据类型通常更快,因为它们占用更少的磁盘、内存和CPU缓存,并且处理时需要的CPU周期更少,但是要确保没有低估需要存储的值的范围,如果无法确认哪个数据类型,就选择你认为不会超过范围的最小类型。

  2. 简单就好

    简单数据类型的操作通常需要更少的CPU周期,例如,

    1、整型比字符操作代价更低,因为字符集和校对规则是字符比较比整型比较更复杂,

    2、使用mysql自建类型而不是字符串来存储日期和时间 eg:创建两张相同的表,改变日期...

查看全文

MYSQL 六月 15, 2021

性能监控

文章字数 3.8k 阅读约需 3 mins.

**使用show profile查询剖析工具,可以指定具体的type **

官方文档:https://dev.mysql.com/doc/refman/5.7/en/show-profile.html

开启工具

此工具默认是禁用的,可以通过服务器变量在会话级别动态的修改

set profiling=1;

查询语句

当设置完成之后,在服务器上执行的所有语句,都会测量其耗费的时间和其他一些查询执行状态变更相关的数据。

select * from test;

使用工具分析查询语句各个阶段耗时

在mysql的...

查看全文

MYSQL 六月 15, 2021

MySQL的基本架构

文章字数 1.7k 阅读约需 2 mins.

负责跟客户端建立连接,获取权限,维持和管理连接

  • 用户名密码验证
  • 查询权限信息,分配对应的权限
  • show processlist 查看现在的连接
  • wait_time控制维持连接的时长,默认八小时

连接分两种:

  • 长连接:长连接是相对于短连接来说的。长连接指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。

    客户端连接–创建socket认证连接–维护连接–数据传输–维护连接–数据传输…..-关闭连接

    在频繁的与数据库服务通信,并且又非高并发的情况下,...

查看全文

设计模式 六月 03, 2021

责任链模式

文章字数 9.7k 阅读约需 9 mins.

避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。

职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了。

  • 抽象处理者(Handler):定义一个请求处理的方法,并维护一个下一个处理节点 Handler 对象的引用;

  • 具体处理者(ConcreteHandler):对请求进行处理,如果不感兴趣,则进行转发.

    // 通用...
查看全文

设计模式 六月 03, 2021

装饰器模式

文章字数 3.9k 阅读约需 4 mins.

为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。

动态地给一个对象添加一些额外的职责, 通过创建一个包装对象,也就是装饰来包裹真实的对象。

  • 抽象组件角色(Component):定义一个对象接口,以规范准备接受附加责任的对象,即可以给这些对象动态地添加职责。

  • 具体组件角色(ConcreteComponent) :被装饰者,定义一个将要被装饰增加功能的类。可以给这个类的对象添加一些职责

  • 抽象装饰器(Decorator):维持一个指向构件Component...

查看全文

设计模式 六月 03, 2021

适配器模式

文章字数 7k 阅读约需 6 mins.

在软件系统中,常常要将一些”现存的对象”放到新的环境中,而新环境要求的接口是现对象不能满足的。

把一个类的接口变换成客户端所期待的另一种接口, Adapter模式使原本因接口不匹配(或者不兼容)而无法在一起工作的两个类能够在一起工作.

  • 目标角色(Target):— 定义Client使用的与特定领域相关的接口。
  • 客户角色(Client):与符合Target接口的对象协同。
  • 被适配角色(Adaptee):定义一个已经存在并已经使用的接口,这个接口需要适配。
  • 适配器角色(Adapter) :适...
查看全文

设计模式 六月 03, 2021

迭代器模式

文章字数 3.1k 阅读约需 3 mins.

提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。

把在元素之间游走的责任交给迭代器,而不是聚合对象。

  • 抽象迭代器(Iterator): 迭代器定义访问和遍历元素的接口。
  • 具体迭代器(ConcreteIterator): 具体迭代器实现迭代器Iterator接口。对该聚合遍历时跟踪当前位置。
  • 抽象聚合类(Aggregate): 聚合定义创建相应迭代器对象的接口。
  • 具体聚合类(ConcreteAggregate): 体聚合实现创建相应迭代器的接口,该操作返回ConcreteIterato...
查看全文
加载更多
0%