- 博客(66)
- 收藏
- 关注
原创 Nginx 虚拟主机配置理解
虚拟主机使用的是特殊的软硬件技术,将单台物理机(服务器)切分为多台虚拟的主机,每台虚拟主机都可以具有独立的域名,并具有完整的Internet服务器功能,如WWW、FTP、Email等。同时,同一台物理服务器上的虚拟主机之间是完全独立的。从站点访问者的角度来看,每台虚拟主机和一个独立主机完全是一样的。一、配置方式 Nginx可以配置虚拟主机的三种方式: 基于于IP的虚拟主机使用不同的域名对应相同的IP以区...
2020-11-18 11:10:46 1135 1
原创 Nginx 基础配置了解
nginx 的默认基础配置,就是安装目录下的conf文件夹的nginx.cong,启动时如果不指定配置会默认加载此nginx.cong。对于刚入门的同学,建议多看两眼。
2020-10-28 17:26:11 384
原创 Nginx 实现平滑升级和增加模块
如果我们需要对当前的Nginx服务进行升级 ,应用新的模块,最简单的方式是停下来,然后开启新的Nginx服务,那么给我们的用户体验是非常差的,会导致用户在一段时间内无法访问我们的服务器为了解决这个问题,Nginx提供了平滑升级的方案。 为了实现nginx服务器的平滑升级,新安装的服务器路径应该和旧的一致。因此建议用新安装的服务器之前先备份一下我们的旧nginx服务器...
2020-10-20 17:30:34 621
原创 Nginx在liunx 下的安装启动
一、 Nginx前置环境的安装1.1 需要安装 gcc 的环境,因为nginx 是C语言编译的 yum install gcc-c++1.2 第三方的开发包PCRE PCRE(Perl Compatible Regular Expressions)是一个 Perl 库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库。 yum
2020-10-20 16:05:25 256
原创 Sharding-JDBC 核心之执行引擎
ShardingSphere采用一套自动化的执行引擎,负责将路由和改写完成之后的真实SQL安全且高效发送到底层数据源执行。 它不是简单地将SQL通过JDBC直接发送至数据源执行;也并非直接将执行请求放入线程池去并发执行。它更关注平衡数据源连接创建以及内存占用所产生的消耗,以及最大限度地合理利用并发等问题。 执行引擎的目标是自动化的平衡资源控制与执行效率。一、连接模式  ...
2020-10-15 16:14:30 752 1
转载 Sharding-JDBC 核心之路由引擎
路由引擎 无论是分库分表、还是读写分离,一个SQL在DB上执行前都需要经过特定规则运算获得运行的目标库表信息。路由引擎的职责定位就是计算SQL应该在哪个数据库、哪个表上执行。前者结果会传给后续执行引擎,然后根据其数据库标识获取对应的数据库连接;后者结果则会传给改写引擎在SQL执行前进行表名的改写,即替换为正确的物理表名。计算哪个数据库依据的算法是要用户配置的库路由规则,计算哪个表依据的算法是用户配置的表路由规则。目前在Shardi
2020-10-15 09:23:46 1102
原创 Sharding-JDBC 核心之解析引擎
Sharding-jdbc 官方文档讲的不是很全面和清楚,学习的时候特意再记录补充下官方文档地址:http://shardingsphere.apache.org/index_zh.html一、解析引擎如果在大学期间学习过计算机编程原理课程,SQL的解析是比较简单的。 不过,它依然是一门完善的编程语言,因此对SQL的语法进行解析,与解析其他编程语言(如:Java语言、C语言、Go语言等)并无本质区别。SQL解析引擎在 parsing包下:Lexer:词法解析器Parser:SQL解析器两者都
2020-10-13 16:01:12 1086
原创 okhttp3 请求头不能带中文解决方案:Unexpected char 0x4e16 at 35 in Content-Disposition value: name=
目录问题原因:解决方式:直接上代码问题原因:okhttp3 不适用编码解码,解决请求头带中文问题(okhttp2 没有这个问题)解决方式:1.使用 addFormDataPart(String name, String value) 方法2.URLEncoder.encode(ssid);然后获取参数时,解码就可以,但是客户端无法更改,使用第一种方式直接上代码...
2020-08-06 16:13:05 3465 1
原创 IDEA 更换主题样式
IDEA 默认带有2种主题样式:黑色和白色,但自带的可能不适用所有人的开发习惯,尤其习惯了使用eclipse的同学,所以想要下载一些其它不错的主题包:下载地址:http://color-themes.com/?view=index部分样式截图:下载步骤1、选择一款适合自己喜好的样式点击进去查看详情,选择要适配的开发工具2、设置IDEA 样式下载完成后,打开idea设置页面File -> Settings ->Editor -> Color Sc.
2020-08-03 10:16:26 6111 2
原创 Mysql 中 MyISAM 和 InnoDB 的区别和场景选择
目录MyISAM 和 InnoDB 的区别如何选择MyISAM 和 InnoDB 的区别1. InnoDB 支持事务,MyISAM 不支持事务。这是 MySQL 将默认存储引擎从 MyISAM 变成 InnoDB 的重要原因之一;2. InnoDB 支持外键,而 MyISAM 不支持。对一个包含外键的 InnoDB 表转为 MYISAM 会失败;3. InnoDB 支持主键聚集索引+非聚集索引,MyISAM 只支持非聚集索引。聚簇索引的文件存放在主键索引的叶子节点上,如果...
2020-05-29 14:47:38 266
转载 30张图带你彻底理解红黑树
好记性不如烂笔头,发现一篇特别不错的文章,转载一下,书读百遍其义自见https://www.jianshu.com/p/2c7a4a4e1f53
2020-05-20 14:09:27 198
原创 Sharding JDBC (八) 分布式唯一主键
目录一、 Sharding-JDBC主键二、Twitter的分布式自增ID算法Snowflake雪花算法概述组成结构优点缺点:三、Sharding JDBC 使用Snowflake生成唯一主键ID配置文件制定使用DefaultKeyGenerator 类获取Snowflake时钟回拨问题一、 Sharding-JDBC主键软件项目开发中,主键自动生成是基本需求。而各个数据库对于该需求也提供了相应的支持,比如:数据库自增( MySQL, Oracle等).
2020-05-14 15:02:01 2846
原创 Sharding JDBC(七) 分片策略四:Hint强制路由HintShardingStrategy
一、Hint强制路由HintShardingStrategy在分库分区中,有些特定的SQL,Sharding-jdbc、Mycat、Vitess都不支持(可以查看相关文档各自对哪些SQL不支持),例如:insert into table1 select * from table2 where ....这种SQL 路由很麻烦,需要解析table2的路由(是在ds0 /ds1 table2_0/table_1),结果集归并,insert 语句也需要同样的路由解析。这种情况Sharding-jdbc可以使用H
2020-05-14 11:19:39 18781 10
原创 Sharding JDBC(六) 分片策略三:复合分片策略ComplexShardingStrategy
一、复合分片策略ComplexShardingStrategy提供对SQL语句中的=, IN和BETWEEN AND的分片操作支持 ComplexShardingStrategy支持多分片键 由于多分片键之间的关系复杂,因此Sharding-JDBC并未做过多的封装,而是直接将分片键值组合以及分片操作符交于算法接口,完全由应用开发者实现,提供最大的灵活度二、ComplexShardingStrategy配置实现Sharding -jdbc 在使用分片策略的时候,与分片算法是成对出现的,每种策略
2020-05-14 11:06:57 12342 2
原创 Sharding JDBC(五) 分片策略二:Inline行表达式分片策略InlineShardingStrategy
Inline表达式分片策略InlineShardingStrategy使用Groovy的Inline表达式,提供对SQL语句中的=和IN的分片操作支持。 InlineShardingStrategy只支持单分片键 对于简单的分片算法,可以通过简单的配置使用,从而避免繁琐的Java代码开发,如: tuser${user_id % 8} 表示t_user表按照user_id按8取模分成8个表,表名称为t_user_0到t_user_7 StandardShardingStrategy配置实现S.
2020-05-14 10:59:34 8182 1
原创 Sharding JDBC(四) 分片策略一:标准分片策略StandardShardingStrategy
一、标准分片策略StandardShardingStrategy提供对SQL语句中的=, IN和BETWEEN AND的分片操作支持 StandardShardingStrategy只支持单分片键,提供PreciseShardingAlgorithm(精准分片)和RangeShardingAlgorithm(范围分片)两个分片算法 PreciseShardingAlgorithm是必选的,用于处理=和IN的分片 RangeShardingAlgorithm是可选的,用于处理BETWEEN AND分
2020-05-14 10:45:23 14536 4
原创 Idea 将已有项目提交到GitLab
1、如果项目已经存在或者开发一段时间,需要发布到GitHub 进行托管,操作记录检查idea中是否安装了gitlab的插件,如果没有那个在线安装一下:重启idea,在Installed 查看安装的插件:2、打开idea菜单栏:VCS》Import into Version Control》Create Git Repository ,选择完整的项目点击Ok后,项目目录多了一个.git隐藏文件夹,文件颜色变成了未提交的红色三、此时右键点击项目,会出现git选项卡,此时在项目根目录
2020-05-13 15:01:23 1335
原创 Sharing JDBC (三) Mysql Replication主从复制 、环境搭建 、读写分离配置
目录一、环境2.1 mysql2.2 Spring Boot一、环境2.1 mysql2.2 Spring Boot引入依赖:
2020-05-09 17:47:18 1797
原创 docker安装Mysql 5.7
docker 在Linxu 版本中的安装和常用指令请查看链接docker 安装、镜像容器常用指令:https://blog.csdn.net/womenyiqilalala/article/details/105711467
2020-05-08 12:34:58 439
原创 /usr/bin/docker-current: Error response from daemon: oci runtime error: container_linux.go:235: star
在使用docker安装mysql 5.7时容器一直启动异常/usr/bin/docker-current: Error response from daemon: oci runtime error: container_linux.go:235: starting container process caused “process_linux.go:258: applying cgroup ...
2020-04-23 17:49:51 19504
原创 docker 安装、镜像容器常用指令
目录一、安装docker1.1 centos71.2 centos61.3 Ubuntu 161.4 查看docker版本 启动服务1.4.1 查看docker 版本1.4.2 启动docker 容器二、docker 常用指令2.1 Docker容器信息2.2 镜像操作2.2.1 镜像搜索2.2.2 镜像下载2.2.3 镜像删除2.2.4 镜像构建2.3 容器操作2.3.1 容器启动2.3.2 ...
2020-04-23 17:22:09 221
原创 Sharding JDBC (二)分库分表关键问题与解决方案
目录一、分库分表产生问题的原因二、分库分表带来的难点问题2.1 分布式全局唯一ID2.2 常见分片规则和策略2.3 跨分片技术问题2.4 跨分片事务问题三、系统是否分库分表分析一、分库分表产生问题的原因得瑟得瑟二、分库分表带来的难点问题2.1 分布式全局唯一ID2.2 常见分片规则和策略2.3 跨分片技术问题2.4 跨分片事务问题三、系统...
2020-04-22 16:32:40 9405 2
原创 Sharding JDBC (一)数据库分库、分表
知识要点一、什么是分库分表二、为什么要分库分表三、分库分表有哪些形式3.1、3.2、四、分库分表组件有哪些五、分库分表组件对比一、什么是分库分表分库分表就是按照一定的规则,对原有的数据库和表进行拆分,把原本存储于一个库的数据分玦存储到多 个库上,把原本存储于一个表的数据分块存储到多个表上。分表就是把一张表按一定的规则分解成N个具有独立存储空间的实体表。系统读写时需要根据定义好的规则得到对应...
2020-04-22 14:48:25 913 2
原创 Spring IOC Bean 的配置和注入方式
一、Spring IOC Bean 的三种配置方式:1、XML声明配置顾名思义,就是将bean的信息配置.xml文件里,通过Spring加载文件为我们创建bean和配置bean属性2、注解声明配置 通过在类上加注解的方式,来声明一个类交给Spring管理,Spring会自动扫描带有@Component,@Controller,@Service,@Repository这四个注解的类...
2020-04-04 18:41:35 664 1
原创 认识Spring IOC容器
知识要点什么是Spring IoC容器 什么是IoC 什么是依赖倒置 为什么需要Spring IoC一、什么是Spring IoC容器Spring Ioc容器的最主要作用就是:完成对象的创建管理和依赖注入等二、什么是IoCIoC(Inversion of Control,控制反转)是Spring的核心,贯穿始终。不是什么技术提供强大的功能,而是一种设计思想。对于sprin...
2020-04-01 15:08:12 249
原创 Redis 缓存穿透 + 缓存雪崩 + 缓存击穿的原因和解决方案
在生产环境中,会因为很多的原因造成访问请求绕过了缓存,都需要访问数据库持久层,虽然对Redsi缓存服务器不会造成影响,但是数据库的负载就会增大,使缓存的作用降低一、缓存穿透 缓存穿透是指查询一个根本不存在的数据,缓存层和持久层都不会命中。在日常工作中出于容错的考虑,如果从持久层查不到数据则不写入缓存层,缓存穿透将导致不存在的数据每次请求都要到持久层去查询,失去了缓...
2020-03-30 21:03:20 51216 13
原创 Redis 缓存更新策略
Redis缓存设计一、缓存的收益与成本1.1 收益 加速读写:因为缓存通常都是全内存的(例如Redis、Memcache),而存储层通常读写性能不够强悍(例如MySQL),内存读写的速度远远高于磁盘I/O。通过缓存的使用可以有效地加速读写,优化用户体验。 降低后端负载:帮助后端减少访问量(Mysql设置有最大连接数,如果大量的访问同时达到数据库,而磁盘I/O的速度又很慢,很...
2020-03-30 18:19:19 2158
原创 Redis cluster集群 故障转移
Redis集群自身实现了高可用,通过增加Slave从节点做standby数据副本,能够实现故障自动转移,节点之间通过gossip协议交换状态信息,用投票机制完成Slave到Master的角色提升。当集群内少量节点出现故障时通过自动故障转移保证集群可以正常对外提供服务。一、故障发现 Redis集群内节点通过ping/pong消息实现节点通信,消息不但可以传播节点槽...
2020-03-27 17:47:51 3995
原创 Redis cluster 扩容缩容重新分片
一、增加节点 Redis集群提供了灵活的节点扩容和收缩方案。在不影响集群对外服务的情况下,可以为集群添加节点进行扩容也可以下线部分节点进行缩容。扩容与缩容的本质是,对Redis的槽进行重新的分配。 集群现有6379、6380、6381 三个主节点,因为数据压力,增加一个主节点6385,需要对之前槽方案进行重新分配,并进行数据迁移二、重新分片流程原命...
2020-03-27 16:41:34 2097 1
原创 Redis cluster集群搭建
一、Redis数据分区思考: 主从复制是通过将master上的数据全量的复制到一个或多个节点上,这是一种通过数据冗余的形式来保证数据的安全性,但是当主节点发生故障时需要从它的从节点中选出一个作为新的主节点,剩下的从节点要与这个新的主节点进行全量复制,如果节点的数据量非常大的时候会代来两个主要问题,网络阻塞和从节点恢复数据会导致进程阻塞,最终会影响到对外提供服务的稳定性。 解决这个问题的关...
2020-03-26 20:53:53 222
原创 Redis 主从复制及其原理
一、主从复制概述与作用1.1 概述当Reids 服务器发生单点故障磁盘损坏时,不管是RDB还是AOF机制都无法恢复数据(RDB和AOF都是生成文件到本机磁盘上),多台服务器进行主从复制可以解决这种问题,实现高可用(值得注意的地方是:主从复制需要每台服务器的版本一样,因为其实基于RDB数据持久化,不同的版本RDB 文件数据格式不一样。RDB相对于AOF 数据文件体积小,速度快)主从复制:是指将...
2020-03-11 22:57:11 381
原创 Redis 发布订阅机制
一、概述Redis提供了基于“发布/订阅”模式的消息机制,当一个客户端通过 PUBLISH 命令向订阅者发送信息的时候,我们称这个客户端为发布者(publisher)。而当一个客户端使用 SUBSCRIBE 或者 PSUBSCRIBE命令接收信息的时候,我们称这个客户端为订阅者(subscriber)。为了解耦发布者(publisher)和订阅者(subscriber)之间的关系,Redis ...
2020-03-08 16:21:17 796
原创 使用 Redis - Bitmaps 进行快速、简单、实时统计
一、BitmapsRedis提供的Bitmaps这个“数据结构”可以实现对位的操作。Bitmaps本身不是一种数据结构,实际上就是字符串,但是它可以对字符串的位进行操作。可以把Bitmaps想象成一个以位为单位数组,数组中的每个单元只能存0或者1,数组的下标在bitmaps中叫做偏移量。单个bitmaps的最大长度是512MB,即2^32个比特位。位数组的顺序和平时书写的顺序时完全相反的,...
2020-03-08 11:49:28 870
原创 Redis 事务详解
一、Redis 事务和Mysql 事务的区别1、mysql中只有使用了InnoDB引擎的数据库或表才支持事务;2、使用“事务”的目的是:可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序串行化的执行而不会被其他命令插入二、Redis 事务指令Redis事务涉及到MULTI, EXEC, DISCARD, WATCH和UNWATCH这五个命令:MULTI...
2020-03-07 16:39:59 321
原创 Redis Pipeline
RTT(Round-Trip Time): 往返时间。在计算机网络中它是一个重要的性能指标,表示从发送端发送数据开始, 到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认),总共经历的时间。RTT在不同网络环境下会有不同,例如同机房和同机器会比较快,跨机房跨地区会比较慢。Pipeline(流水线)机制能改善上面这类问题,它能将一组Redis命令进行组装,通过一次RTT传输...
2020-03-05 21:48:02 229
原创 Redis慢日志查询
一、概述Redis的慢日志查询功能用于记录执行时间超过给定时长的命令,用户可以通过这个功能产生的日志来监视和优化查询速度。二、一条客户端命令的生命周期命令发送命令排队命令执行返回结果注意: 慢查询只统计命令执行的时间,所以没有慢查询并不代表客户端没有超时问题三、预设阀值怎么设置slowlog-log-slower-than,它的单位是微秒,默认值是10000,0为记录所有命...
2020-03-01 17:23:30 1514
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人