Toggle navigation
KANG's BLOG
Home
JAVA
MYSQL
KANG's BLOG
Let's have some fun
git常用命令
clone仓库 git clone 列出远程分支 git branch -r 列出所有分支 git branch -a
Posted by KANG's BLOG Tuesday, March 15, 2022
Hystrix熔断器的使用
一、Hystrix使用样例: Feign中默认集成了Hystrix,可以通过@FeignClient注解标记资源并使用配置文件或API对资源进行设置,这里介绍Hystrix原生设置和使用方式 maven坐标: <dependency> <groupId>com.netflix.hystrix</groupId> <artifactId>hystrix-core</artifactId> <version>1.5.8</version> </dependency> 原生Hystrix的command定义方式: // 定义一个Command继承HystrixCommand public class HelloWorldHystrixCommand extends HystrixCommand { private final String name; public HelloWorldHystrixCommand(String name) { super(HystrixCommandGroupKey.
Posted by KANG's BLOG Tuesday, March 15, 2022
Java的基本类型
基本类型长度 类型 byte short int long float double char boolean 字节数 1 2 4 8 4 8 2 1 取值范围 ±27 ±215 ±231 ±263 ±231 ±263 true/false Integer的占用内存 4bytes是指向方法区里边Integer类信息的指针 4bytes是int的长度 4bytes是指向对象池的指针 一共12bytes
Posted by KANG's BLOG Tuesday, March 15, 2022
Keep alive和WebSocket区别
1. keep alive和WebSocket协议介绍 Keep alive是HTTP 1.1协议提供的TCP保活机制,其通过在响应头中加入Connection:keep-alive来标识,允许在一次TCP连接中,完成多个HTTP请求。 换句话说,该协议主要解决的是每次HTTP请求都要进行三次握手的问题。 但是每个请求仍要单独发送header。 对比而言,WebSocket是HTML5出的协议(所以对浏览器版本有要求:IE10以上),跟HTTP协议没有关系,只是借用HTTP协议来完成握手,之后可以进行客户端和服务端的双工通信。 所以WebSocket的优点在于:
Posted by KANG's BLOG Tuesday, March 15, 2022
MQ中的消息复制方式
消息队列的主要问题 高性能 为了高可用,需要把数据写入多个节点后返回发送成功标识,才能保证某个节点挂掉后数据不丢失 写入节点数量和可靠性是成正比的,但是写入节点越多,性能越差。如果其中一个节点一直不返回,系统需要一直等待这个节点的返回,这是木桶的短板效应。 一致性 如果要确保数据一致性,必须采用主从的复制方式 RocketMQ消息复制方式 非Dledger的复制方式 分布式下一致性问题,体现在多个节点数据差异上,那么如果保证任意时刻集群都只有一个主节点,那么就可以保证数据一致性 RocketMQ的消息发送到主节点后,就认为发送成功,主从节点为固定配置,如果主节点宕机,并不会将其他从节点切换为主节点,而是等主节点恢复后,再将消息消费出去。所以一个topic下会有多个主从节点,来保证可用性。
Posted by KANG's BLOG Tuesday, March 15, 2022
Mybatis两级缓存
1. 两级缓存 一级缓存(默认开启) 相同sqlSession中,执行相同的SQL查询时,第一次会去查询数据库,并写在缓存中,第二次会直接从缓存中取。 当执行SQL时候两次查询中间发生了增删改的操作,则SQLSession的缓存会被清空。 原理:Mybatis的内部缓存使用一个HashMap,key为hashcode+statementId+sql语句。Value为查询出来的结果集映射成的java对象。 SqlSession执行insert、update、delete等操作commit后会清空该SQLSession缓存。 二级缓存(默认不开启) 第一次调用mapper下的SQL去查询用户信息。查询到的信息会存到该mapper对应的二级缓存区域内。 第二次调用相同namespace下的mapper映射文件中相同的SQL去查询用户信息。会优先去对应的二级缓存内取结果。
Posted by KANG's BLOG Tuesday, March 15, 2022
Mysql中char、varchar、text三种数据类型的区别
char、varchar、text区别 char长度固定, 即每条数据占用等长字节空间;适合用在身份证号码、手机号码等定。 varchar可变长度,可以设置最大长度;适合用在长度可变的属性。 text不设置长度, 当不知道属性的最大长度时,适合用text。 按照查询速度: char(最快) > varchar(次之) > text(最慢)
Posted by KANG's BLOG Tuesday, March 15, 2022
Mysql主从同步方式
主从同步一致性保证分为三种策略: 1. 异步复制 主库提交事务后直接将结果返回给客户端,并不关心从库是否成功接收并处理。 2. 半同步复制 Mysql在5.5版本引入了半同步复制,主库在应答客户端提交的事务前要至少保证一个从库接受并写到relay log中 semi sync增加了rpl_semi_sync_master_wait_point参数,来控制半同步模式下主库在返回给会话事务成功之前提交事务的方式。rpl_semi_sync_master_wait_point该参数有两个值:
Posted by KANG's BLOG Tuesday, March 15, 2022
Mysql优化查询时对内存的利用
1. 服务层 Mysql查询时数据传输流程 获取一行,写到net_buffer。该内存大小由参数net_buffer_length定义,默认16k -- 查询net_buffer大小 show variables like 'net_buffer_length'; 继续获取行,直到写满net_buffer,发出去
Posted by KANG's BLOG Tuesday, March 15, 2022
Mysql执行计划详解
使用explain关键字查看执行计划 explain select * from table where table.id = 1 执行计划包含以下列: table | type | possible_keys | key | key_len | ref | rows | Extra
Posted by KANG's BLOG Tuesday, March 15, 2022
← Newer Posts
Older Posts →
FEATURED TAGS
database
distributed
http
java
jvm
lock
mq
mysql
nginx
ratelimiter
redis
tomcat
zookeeper
事务
多线程
架构
设计模式