取模分片,简单来讲,根据数据库的主键和存储的节点数进行取模操作,然后根据取模的结果,将数据存放到对应的节点中,取模分表,可以将数据均匀的分配到各个库中。实现的步骤:1、创建数据库,2、配置schema.xml文件,3、配置server.xml,4、添加rule.xml。这种方式。 数据库时间分片,有个问题,就比如按照月份分片,我只能分片这一年的数据,如果来年了,我还需要自己手动来创建一个表,然后在做相同的处理。
创建数据库
我创建一个用户表,根据用户加入的时间,进行分片。例如‘2012-02-03’,我想根据入职的月份 02 来分片,装到12个数据库中
1、创建存储过程
添加存储过程来动态创建表,因为12个库和12个表,有点多,所以偷点懒
-- 删除存储过程
DROP PROCEDURE IF EXISTS CREATE_USER_DB ;
-- 添加; 的转义
DELIMITER ;;
-- 创建存储过程
CREATE PROCEDURE CREATE_USER_DB (IN dbPre VARCHAR(32) CHARSET utf8 ,IN tableNm VARCHAR (32) CHARSET utf8 )
BEGIN
-- 声明变量
DECLARE i INT DEFAULT 0;
DECLARE dbname VARCHAR(32 ) DEFAULT '' ;
-- 声明 表名称
DECLARE tblname VARCHAR(32 );
SET i = 1 ;
WHILE i <= 12 DO
SET dbname = CONCAT (dbPre,i);
SET tblname = CONCAT (dbname,'.' ,tableNm);
-- 创建数据库
SET @createDatabasesql = CONCAT ('CREATE DATABASE IF NOT EXISTS ' ,dbname);
-- 执行动态生成的sql语句
PREPARE temp FROM @createDatabasesql;
EXECUTE temp;
-- 删除表
SET @delTabl = CONCAT (' DROP TABLE IF EXISTS ' ,tblname);
-- 执行动态生成的sql语句
PREPARE temp FROM @delTabl;
EXECUTE temp;
-- 创建表
SET @createTbsql = CONCAT ('create table ' ,tblname,'(addData datetime,dbname varchar(32) ,username varchar(32) ,age int(3))' );
-- 执行动态生成的sql语句
PREPARE temp FROM @createTbsql;
EXECUTE temp;
-- 增加角标
SET i = i + 1 ;
END WHILE ;
END ;
;;
DELIMITER ;
调用存储过程
call CREATE_USER_DB('mycat_demo' ,'user' );
查看建立好的表结构
配置mycat
1、配置schema.xml
vim ./conf/schema.xml
#添加表
#通过这种$的方法,解决了有很多数据库的情况
#jdbc_node$1-3 ,表示的是jdbc_node、jdbc_node、jdbc_node3
"user" dataNode="jdbc_node$1-3" rule="sharding-by-month-user" />
完整配置
<mycat:schema xmlns:mycat ="http://io.mycat/" >
<schema name ="yellowcong" checkSQLschema ="true" sqlMaxLimit ="1000" >
<table name ="user" dataNode ="jdbc_node$1-12" rule ="sharding-by-month-user" />
schema >
<dataNode name ="jdbc_node1" dataHost ="localhost" database ="mycat_demo1" />
<dataNode name ="jdbc_node2" dataHost ="localhost" database ="mycat_demo2" />
<dataNode name ="jdbc_node3" dataHost ="localhost" database ="mycat_demo3" />
<dataNode name ="jdbc_node4" dataHost ="localhost" database ="mycat_demo4" />
<dataNode name ="jdbc_node5" dataHost ="localhost" database ="mycat_demo5" />
<dataNode name ="jdbc_node6" dataHost ="localhost" database ="mycat_demo6" />
<dataNode name ="jdbc_node7" dataHost ="localhost" database ="mycat_demo7" />
<dataNode name ="jdbc_node8" dataHost ="localhost" database ="mycat_demo8" />
<dataNode name ="jdbc_node9" dataHost ="localhost" database ="mycat_demo9" />
<dataNode name ="jdbc_node10" dataHost ="localhost" database ="mycat_demo10" />
<dataNode name ="jdbc_node11" dataHost ="localhost" database ="mycat_demo11" />
<dataNode name ="jdbc_node12" dataHost ="localhost" database ="mycat_demo12" />
<dataHost name ="localhost" maxCon ="1000" minCon ="10" balance ="0"
writeType ="0" dbType ="mysql" dbDriver ="native" switchType ="1" slaveThreshold ="100" >
<heartbeat > select user()heartbeat >
<writeHost host ="hostM1" url ="127.0.0.1:3306" user ="root" password ="root" />
dataHost >
mycat:schema >
2、配置server.xml
<mycat:server xmlns:mycat ="http://io.mycat/" >
<system >
<property name ="useSqlStat" > 0property >
<property name ="useGlobleTableCheck" > 0property >
<property name ="sequnceHandlerType" > 2property >
<property name ="processorBufferPoolType" > 0property >
<property name ="handleDistributedTransactions" > 0property >
<property name ="useOffHeapForMerge" > 1property >
<property name ="memoryPageSize" > 1mproperty >
<property name ="spillsFileBufferSize" > 1kproperty >
<property name ="useStreamOutput" > 0property >
<property name ="systemReserveMemorySize" > 384mproperty >
<property name ="useZKSwitch" > trueproperty >
system >
<user name ="root" >
<property name ="password" > rootproperty >
<property name ="schemas" > yellowcongproperty >
user >
<user name ="user" >
<property name ="password" > userproperty >
<property name ="schemas" > yellowcongproperty >
<property name ="readOnly" > trueproperty >
user >
mycat:server >
3、配置rule.xml
通过学生的学号(code)字段,进行分片操作。
vim ./conf/rule.xml
#添加rule ,
#设置通过addData这个字段进行分片
<tableRule name ="sharding-by-month-user" >
<rule >
<columns > addDatacolumns >
<algorithm > partbymonth-useralgorithm >
rule >
tableRule >
#sBeginDate 表示开始的月份,只能搞2015年的月分片,如果是16年的就会报错
<function name ="partbymonth-user"
class ="io.mycat.route.function.PartitionByMonth" >
<property name ="dateFormat" > yyyy-MM-ddproperty >
<property name ="sBeginDate" > 2015-01-01property >
function >
这个需要注意的点: tableRule和function节点不能混着放,不然解析不了 ,郁闷啊,这都不可以,菊花疼。
说明:起始日期是用来计算数据所在的分片位置,例如2015年1月的message就会找到第1个分片,即dn1,2015年12月的message就会找到第12个分片,即dn12,但是如果出现了2016年1月的message,mycat就会去找第13个分片,但是配置文件中又没有对应的配置,那么就会抛出无法找到分片的错误。
测试插入数据
插入数据的时候,必须指定列名。mycat不支持直接插入不带列明的数据。
#连接mycat
mysql -h 127.0.0.1 -P 8066 -u root -proot
#使用yellowcong 数据库
use yellowcong
#插入数据
insert into user (addData,dbname,username,age) values ('2015-01-01' ,database (),'yellowcong' ,12 );
insert into user (addData,dbname,username,age) values ('2015-02-01' ,database (),'yellowcong' ,12 );
insert into user (addData,dbname,username,age) values ('2015-03-01' ,database (),'yellowcong' ,12 );
insert into user (addData,dbname,username,age) values ('2015-04-01' ,database (),'yellowcong' ,12 );
insert into user (addData,dbname,username,age) values ('2015-05-01' ,database (),'yellowcong' ,12 );
insert into user (addData,dbname,username,age) values ('2015-06-01' ,database (),'yellowcong' ,12 );
大家可以发现,每一个月份,对应这一个节点,1月对应着节点1,2月,对应节点2,依次类推。
分析sql
看分析结果可以看到,直接就跑到了第7个节点了。
explain insert into user (addData,dbname,username,age) values ('2015-07-01' ,database (),'yellowcong' ,12 );
小知识
mysql中数据字符串的连接
select concat('doub' ,121 );
select concat('doub' ,'xxx' );
存储过程或函数 多行的问题
多行的时候,需要使用分号结尾,然而分号;在数据库表示这段语句的结束,我们可以使用DELIMITER 这个字段,来解决这个问题,最后运行DELIMITER ;
,表示分行结束。存储过程中,不能用tabl制表符,不然就会报Display all 778 possibilities? (y or n)
错误
创建表
create table user3(dbname varchar (32 ),username varchar (32 ),province varchar (16 ),age int (3 ));
创建存储过程
-- 删除存储过程
DROP PROCEDURE IF EXISTS INSERT_USER ;
-- 这个 DELIMITER 可以让 我们在命令行中,直接使用;
DELIMITER ;;
-- 创建存储过程
create procedure INSERT_USER ()
BEGIN
-- 声明变量
declare i int default 0;
declare dbname varchar(20 ) default '' ;
set i = 0 ;
while i < 12 do
set dbname = concat ('doubi' ,i);
insert into user values (database(),dbname,'xx' ,12 );
set i = i + 1 ;
end while ;
END ;
;;
DELIMITER ;
大家可以看下面的效果
调用存储过程
call INSERT_USER();
问题集合
Display all 778 possibilities? (y or n)
导致这个问题的是,我添加存储过程的时候,有空格的存在,导致了这个问题。
Unknown system variable ‘i’
导致这个问题的原因是,没有声明变量i 是啥玩意。需要在设定存储过程的时候,添加变量
064 (HY000): Can’t find a valid data node for specified node index :USER -> ADDDATA -> 2012-12-01 00:00:00 -> Index : -25
出现这个问题的原因,多半是分片配置有问题。后来发现问题所在点是,我配置的2015-01-01
,而我插入的是 2012年的数据,所以找不到 插入的节点了。
你可能感兴趣的:(数据库中间件)
开源项目
cs294639693
阿里阿里的开源项目很多,这也跟@淘宝正明的开源态度密不可分。有很多重量级的项目,例如LVS、Tengine,或者很有实践价值的中间件,例如MetaQ(分布式消息系统)、dubbo(RPC框架)、cobar(数据库中间件),或者是Java世界的工具,例如druid、fastjson。都说国内Java公司的技术架构大部分来自阿里系,我觉得一方面来自阿里员工,一方面也可以来自阿里的开源项目。地址有几个:
ShardingSphere 和 Spring 的动态数据源切换机制的对比以及原理
龙大.
系统设计 Spring Mysql spring java 数据库
ShardingSphere与Spring动态数据源切换机制的对比及原理一、核心定位对比维度ShardingSphereSpring动态数据源(如AbstractRoutingDataSource)定位分布式数据库中间件轻量级多数据源路由工具核心目标分库分表、读写分离、分布式事务多数据源动态切换适用场景大数据量、高并发、复杂分片需求简单多数据源隔离(如多租户、环境隔离)实现层级JDBC驱动层(拦截
Mycat 与分布式 ID 生成方案
今天你慧了码码码码码码码码码码
分布式
Mycat与分布式ID生成方案1.Mycat简介Mycat是一个开源的分布式数据库中间件,主要用于解决数据库分库分表、读写分离、负载均衡等问题。它支持MySQL协议,可以像使用单机数据库一样使用分布式数据库。主要功能:分库分表:将数据分散到多个数据库实例中。读写分离:将读操作和写操作分发到不同的数据库节点。负载均衡:均衡分配数据库请求,提高系统性能。分布式事务:支持分布式事务管理。2.分布式ID生
Sharding-JDBC 实现分库分表
一叶飘零_sweeeet
java 分布式 mysql Sharding-JDBC 分库分表 java mysql
一、引言随着互联网业务的快速发展,数据量不断增长,传统的单一数据库架构已经难以满足高并发、大数据量的存储和查询需求。分库分表技术成为了解决这些问题的重要手段。Sharding-JDBC作为一款优秀的数据库中间件,能够方便地实现分库分表,提高系统的性能和可扩展性。本文将详细介绍Sharding-JDBC实现分库分表的实战过程。二、Sharding-JDBC概述(一)Sharding-JDBC的定义和
Java后端微服务架构下的数据库分库分表:Sharding-Sphere
微赚淘客机器人开发者联盟@聚娃科技
架构 java 微服务
Java后端微服务架构下的数据库分库分表:Sharding-Sphere大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!随着微服务架构的广泛应用,数据库层面的扩展性问题逐渐凸显。Sharding-Sphere作为一个分布式数据库中间件,提供了数据库分库分表的能力,帮助开发者解决数据水平拆分的问题。数据库分库分表概述数据库分库分表是将数据分布到不同的数据库和表中,以
中间件是什么?
努力努力再努力la
中间件
目录一、中间件是什么?二、为什么要使用中间件?三、中间件有哪些特点?四、中间件通常包括以下几个方面:五、中间件可以分为以下几种分类:基础中间件消息中间件数据库中间件容器中间件Web服务器中间件应用服务器中间件中间件发展历程中间件的发展历程、应用场景、架构_努力努力再努力la的博客-CSDN博客一、中间件是什么?中间件定义:中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务
项目中常用中间件有哪些?分别起什么作用?
静静在思考
中间件 中间件
在项目开发中,常用的中间件包括消息中间件、缓存中间件、数据库中间件等,以下是一些常见的中间件及其作用:消息中间件Kafka:一般用于处理大规模的消息数据,具有高吞吐量、低延迟的特点,适用于日志收集、消息队列等场景。它可以将消息持久化到磁盘,保证消息不丢失,并且支持消息的多副本备份,提高系统的可靠性。RabbitMQ:以其稳定性和丰富的功能著称,支持多种消息协议,如AMQP、STOMP等。在企业级应
mycat和mysql
沐漜
Java学习 zookeeper
MyCat是数据库中间件,支持数据库集群,提供高可用性的数据分片集群。可以管理多个机器上的数据库组成的集群。MyCat分片:海量数据存储的解决方案。由该中间件将不同的逻辑分片(逻辑分片对应不同的数据库)进行组装。MyCat分片:什么是分片:简单的说,就是指通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载的效果。数据的切片(sharding
ShardingSphere实例讲解
沉墨的夜
java 数据库 分库分表 shardingsphere
ShardingSphere(原名Sharding-JDBC)是一个开源的分布式数据库中间件,它为Java应用提供了透明的数据库分片、读写分离、分布式事务等功能。在使用ShardingSphere时,应用不需要了解数据库分片的实现细节,它会自动将SQL请求路由到正确的数据库和表。以下是一个简单的ShardingSphere-JDBC实例讲解,展示如何在Java项目中配置和使用Sharding-JD
ShardingSphere 功能详细介绍
冰糖心158
数据库
ShardingSphere是一个开源的分布式数据库中间件,旨在为数据库提供高可扩展性、可管理性和高可用性,支持数据的分库分表(Sharding)、数据库路由、数据同步等功能。ShardingSphere本质上是一个分布式数据库代理,它提供透明的分布式数据操作,使得应用程序可以像操作单一数据库一样操作分布式数据。ShardingSphere具有以下几个主要功能:1.分库分表(Sharding)Sh
中间件的学习理解总结
DCDDDDcccc
中间件 学习
目录一、定义与作用二、主要类型数据库中间件远程过程调用中间件面向消息的中间件事务处理中间件三、特点与优势独立性高效性可扩展性可靠性四、应用场景企业应用集成分布式系统电子商务移动应用开发五、数据库中间件功能细节:应用优势:六、远程过程调用中间件功能细节:应用优势:七、面向消息的中间件功能细节:应用优势:八、事务处理中间件功能细节:应用优势:数据库中间件MyCat:ShardingSphere:远程过
Spring常用中间件
贺仙姑
spring 中间件 java
1.数据库中间件(1)MySQL:常用的关系型数据库,支持JDBC和JPA。(2)PostgreSQL:功能强大的开源关系型数据库,支持复杂查询。(3)MongoDB:NoSQL数据库,适合存储非结构化数据。(4)Redis:内存数据结构存储,常用于缓存和消息队列。2.消息队列(1)RabbitMQ:开源消息代理,支持多种消息协议,适合异步处理。(2)Kafka:分布式流处理平台,适合处理大规模数
数据库分库分表-ShardingSphere学习
学Java的skyyyyyyyy
数据库 java
ShardingSphere是一个开源的分布式数据库中间件解决方案,旨在提供数据库分片、分布式事务、读写分离、数据治理等多种数据服务,它以模块化的方式设计,使用户可以根据不同的应用场景选择适合的模块来部署。ShardingSphere架构概述ShardingSphere的架构主要围绕四个核心组件展开,分别是Sharding-JDBC、Sharding-Proxy、Sharding-Sidecar(
springboot中的@Cacheable缓存来增加手动分页的查询效率 为什么用手动分页业务用的jpa jpa中查了下没有数据库中间件
烟雨国度
spring boot 缓存 数据库
2024/7/319:45:09claude-3-opus-20240229当然可以!我们可以对代码进行进一步的优化,以提高性能。以下是一些优化建议:使用缓存机制:对于频繁查询的关键词或查询条件,可以考虑将查询结果缓存起来,避免重复查询数据库。可以使用Spring提供的缓存抽象(如@Cacheable、@CacheEvict等注解),或者使用第三方缓存库(如Redis)来实现缓存功能。优化正则表达
将Spring Cloud项目改造为Spring-cloud-kubernetes项目
公众号-芋道源码
中间件 java linux 数据库 spring boot
点击上方“芋道源码”,选择“设为星标”管她前浪,还是后浪?能浪的浪,才是好浪!每天10:33更新文章,每天掉亿点点头发...源码精品专栏原创|Java2021超神之路,很肝~中文详细注释的开源项目RPC框架Dubbo源码解析网络应用框架Netty源码解析消息中间件RocketMQ源码解析数据库中间件Sharding-JDBC和MyCAT源码解析作业调度中间件Elastic-Job源码解析分布式事务
Sharding-JDBC学习笔记
重生之Java再爱我一次
学习 笔记
1.基本概念1.1什么是ShardingSphere?ShardingSphere是一个开源的分布式数据库中间件,提供了分布式数据库的跨节点分片和分布式事务解决方案。它由分片(Sharding)和球(Sphere)两个单词组成,分片表示数据分片,球表示这些分片组成的球形空间,象征着分布式数据库的全景视图。ShardingSphere支持多种数据库的分片和分布式事务,包括关系型数据库(如MySQL、
呵呵,一个 bug 你改了两天?难吗?
Java基基
点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏原创|Java2020超神之路,很肝~中文详细注释的开源项目RPC框架Dubbo源码解析网络应用框架Netty源码解析消息中间件RocketMQ源码解析数据库中间件Sharding-JDBC和MyCAT源码解析作业调度中间件Elastic-Job源码解析分布式事务中间件TCC-Transaction源码解析Eurek
互联网架构模板:“存储层”技术
woshishui1243
——————————————————摘抄自《极客时间李运华从0开始学架构》SQL单表、单库——>数据库拆分——>数据库中间件(将分库分表做到自动化和平台化)——>存储平台(以对业务透明的形式提供资源分配、数据备份、迁移、容灾、读写分离、分库分表等一系列服务)NoSQL小文件存储大文件存储
京东平台研发:领域驱动设计(DDD)实践总结
公众号-芋道源码
tdd 控制器 360 dbcp 分布式
点击上方“芋道源码”,选择“设为星标”管她前浪,还是后浪?能浪的浪,才是好浪!每天8:55更新文章,每天掉亿点点头发...源码精品专栏原创|Java2020超神之路,很肝~中文详细注释的开源项目RPC框架Dubbo源码解析网络应用框架Netty源码解析消息中间件RocketMQ源码解析数据库中间件Sharding-JDBC和MyCAT源码解析作业调度中间件Elastic-Job源码解析分布式事务中
怎么用数据库中间件Mycat+SpringBoot完成分库分表?
Java圈子
一、背景随着时间和业务的发展,数据库中的数据量增长是不可控的,库和表中的数据会越来越大,随之带来的是更高的磁盘、IO、系统开销,甚至性能上的瓶颈,而一台服务的资源终究是有限的,因此需要对数据库和表进行拆分,从而更好的提供数据服务。当用户表达到千万级别,在做很多操作的时候都会很吃力,所以当数据增长到1000万以上就需要分库分表来缓解单库(表)的压力。二、什么是分库分表简单来说,就是指通过某种特定的条
领导:谁再用 Redis 实现过期订单关闭,立马滚蛋!
公众号-芋道源码
redis java 数据库 缓存 开发语言
点击上方“芋道源码”,选择“设为星标”管她前浪,还是后浪?能浪的浪,才是好浪!每天10:33更新文章,每天掉亿点点头发...源码精品专栏原创|Java2021超神之路,很肝~中文详细注释的开源项目RPC框架Dubbo源码解析网络应用框架Netty源码解析消息中间件RocketMQ源码解析数据库中间件Sharding-JDBC和MyCAT源码解析作业调度中间件Elastic-Job源码解析分布式事务
Docker 部署Mycat2
Lonely Faith
docker 数据库 java
Docker部署Mycat2分布式数据库中间件Mycat2简介Mycat2是Mycat社区开发的一款分布式关系型数据库(中间件)。它支持分布式SQL查询,兼容MySQL通信协议,以Java生态支持多种后端数据库,通过数据分片提高数据查询处理能力。源码地址https://github.com/MyCATApache/Mycat2https://gitee.com/MycatOne/Mycat2官网h
RocketMQ 源码分析 —— 集成 Spring Boot
公众号-芋道源码
点击上方“芋道源码”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏原创|Java2020超神之路,很肝~中文详细注释的开源项目RPC框架Dubbo源码解析网络应用框架Netty源码解析消息中间件RocketMQ源码解析数据库中间件Sharding-JDBC和MyCAT源码解析作业调度中间件Elastic-Job源码解析分布式事务中间件TCC-Transaction源码解析Eureka和
Excel百万级数据导入导出,EasyExcel 才是 yyds
Java基基
excel
点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!每天14:00更新文章,每天掉亿点点头发...源码精品专栏原创|Java2021超神之路,很肝~中文详细注释的开源项目RPC框架Dubbo源码解析网络应用框架Netty源码解析消息中间件RocketMQ源码解析数据库中间件Sharding-JDBC和MyCAT源码解析作业调度中间件Elastic-Job源码解析分布式事务中间件T
数据库主从加读写分离
曹博Blog
数据库
1.规划节点mysql1------192.168.200.8------主数据库节点mysql2------192.168.200.13------从数据库节点mycat------192.168.200.21------数据库中间件节点2.基础准备使用OpenStack平台创建两台云主机进行试验,云主机使用提供的CentOS_7.5_x86_64_XD.qcow2镜像,flavor使用1核/2
一文看懂SpringBoot启动流程!
公众号-芋道源码
spring java 编程语言 python android
点击上方“芋道源码”,选择“设为星标”管她前浪,还是后浪?能浪的浪,才是好浪!每天10:33更新文章,每天掉亿点点头发...源码精品专栏原创|Java2021超神之路,很肝~中文详细注释的开源项目RPC框架Dubbo源码解析网络应用框架Netty源码解析消息中间件RocketMQ源码解析数据库中间件Sharding-JDBC和MyCAT源码解析作业调度中间件Elastic-Job源码解析分布式事务
芋道 Spring Boot MyBatis 入门
公众号-芋道源码
点击上方“芋道源码”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏原创|Java2019超神之路,很肝~中文详细注释的开源项目RPC框架Dubbo源码解析网络应用框架Netty源码解析消息中间件RocketMQ源码解析数据库中间件Sharding-JDBC和MyCAT源码解析作业调度中间件Elastic-Job源码解析分布式事务中间件TCC-Transaction源码解析Eureka和
芋道 Spring Boot 消除冗余代码 Lombok 入门
公众号-芋道源码
点击上方“芋道源码”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏原创|Java2020超神之路,很肝~中文详细注释的开源项目RPC框架Dubbo源码解析网络应用框架Netty源码解析消息中间件RocketMQ源码解析数据库中间件Sharding-JDBC和MyCAT源码解析作业调度中间件Elastic-Job源码解析分布式事务中间件TCC-Transaction源码解析Eureka和
芋道 Spring Boot 数据库版本管理入门
公众号-芋道源码
点击上方“芋道源码”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏原创|Java2020超神之路,很肝~中文详细注释的开源项目RPC框架Dubbo源码解析网络应用框架Netty源码解析消息中间件RocketMQ源码解析数据库中间件Sharding-JDBC和MyCAT源码解析作业调度中间件Elastic-Job源码解析分布式事务中间件TCC-Transaction源码解析Eureka和
Mycat
百事可乐丶
docker安装mysql主从和mycatmysql主从:https://blog.csdn.net/Amor_Leo/article/details/85177001mycat安装:https://blog.csdn.net/Amor_Leo/article/details/85218405Mycat是什么数据库中间件,类似nginx,拦截请求,路由分发,不同的是nginx拦截的是请求,而Myc
SAX解析xml文件
小猪猪08
xml
1.创建SAXParserFactory实例
2.通过SAXParserFactory对象获取SAXParser实例
3.创建一个类SAXParserHander继续DefaultHandler,并且实例化这个类
4.SAXParser实例的parse来获取文件
public static void main(String[] args) {
//
为什么mysql里的ibdata1文件不断的增长?
brotherlamp
linux linux运维 linux资料 linux视频 linux运维自学
我们在 Percona 支持栏目经常收到关于 MySQL 的 ibdata1 文件的这个问题。
当监控服务器发送一个关于 MySQL 服务器存储的报警时,恐慌就开始了 —— 就是说磁盘快要满了。
一番调查后你意识到大多数地盘空间被 InnoDB 的共享表空间 ibdata1 使用。而你已经启用了 innodbfileper_table,所以问题是:
ibdata1存了什么?
当你启用了 i
Quartz-quartz.properties配置
eksliang
quartz
其实Quartz JAR文件的org.quartz包下就包含了一个quartz.properties属性配置文件并提供了默认设置。如果需要调整默认配置,可以在类路径下建立一个新的quartz.properties,它将自动被Quartz加载并覆盖默认的设置。
下面是这些默认值的解释
#-----集群的配置
org.quartz.scheduler.instanceName =
informatica session的使用
18289753290
workflow session log Informatica
如果希望workflow存储最近20次的log,在session里的Config Object设置,log options做配置,save session log :sessions run ;savesessio log for these runs:20
session下面的source 里面有个tracing 
Scrapy抓取网页时出现CRC check failed 0x471e6e9a != 0x7c07b839L的错误
酷的飞上天空
scrapy
Scrapy版本0.14.4
出现问题现象:
ERROR: Error downloading <GET http://xxxxx CRC check failed
解决方法
1.设置网络请求时的header中的属性'Accept-Encoding': '*;q=0'
明确表示不支持任何形式的压缩格式,避免程序的解压
java Swing小集锦
永夜-极光
java swing
1.关闭窗体弹出确认对话框
1.1 this.setDefaultCloseOperation (JFrame.DO_NOTHING_ON_CLOSE);
1.2
this.addWindowListener (
new WindowAdapter () {
public void windo
强制删除.svn文件夹
随便小屋
java
在windows上,从别处复制的项目中可能带有.svn文件夹,手动删除太麻烦,并且每个文件夹下都有。所以写了个程序进行删除。因为.svn文件夹在windows上是只读的,所以用File中的delete()和deleteOnExist()方法都不能将其删除,所以只能采用windows命令方式进行删除
GET和POST有什么区别?及为什么网上的多数答案都是错的。
aijuans
get post
如果有人问你,GET和POST,有什么区别?你会如何回答? 我的经历
前几天有人问我这个问题。我说GET是用于获取数据的,POST,一般用于将数据发给服务器之用。
这个答案好像并不是他想要的。于是他继续追问有没有别的区别?我说这就是个名字而已,如果服务器支持,他完全可以把G
谈谈新浪微博背后的那些算法
aoyouzi
谈谈新浪微博背后的那些算法
本文对微博中常见的问题的对应算法进行了简单的介绍,在实际应用中的算法比介绍的要复杂的多。当然,本文覆盖的主题并不全,比如好友推荐、热点跟踪等就没有涉及到。但古人云“窥一斑而见全豹”,希望本文的介绍能帮助大家更好的理解微博这样的社交网络应用。
微博是一个很多人都在用的社交应用。天天刷微博的人每天都会进行着这样几个操作:原创、转发、回复、阅读、关注、@等。其中,前四个是针对短博文,最后的关注和@则针
Connection reset 连接被重置的解决方法
百合不是茶
java 字符流 连接被重置
流是java的核心部分,,昨天在做android服务器连接服务器的时候出了问题,就将代码放到java中执行,结果还是一样连接被重置
被重置的代码如下;
客户端代码;
package 通信软件服务器;
import java.io.BufferedWriter;
import java.io.OutputStream;
import java.io.O
web.xml配置详解之filter
bijian1013
java web.xml filter
一.定义
<filter>
<filter-name>encodingfilter</filter-name>
<filter-class>com.my.app.EncodingFilter</filter-class>
<init-param>
<param-name>encoding<
Heritrix
Bill_chen
多线程 xml 算法 制造 配置管理
作为纯Java语言开发的、功能强大的网络爬虫Heritrix,其功能极其强大,且扩展性良好,深受热爱搜索技术的盆友们的喜爱,但它配置较为复杂,且源码不好理解,最近又使劲看了下,结合自己的学习和理解,跟大家分享Heritrix的点点滴滴。
Heritrix的下载(http://sourceforge.net/projects/archive-crawler/)安装、配置,就不罗嗦了,可以自己找找资
【Zookeeper】FAQ
bit1129
zookeeper
1.脱离IDE,运行简单的Java客户端程序
#ZkClient是简单的Zookeeper~$ java -cp "./:zookeeper-3.4.6.jar:./lib/*" ZKClient
1. Zookeeper是的Watcher回调是同步操作,需要添加异步处理的代码
2. 如果Zookeeper集群跨越多个机房,那么Leader/
The user specified as a definer ('aaa'@'localhost') does not exist
白糖_
localhost
今天遇到一个客户BUG,当前的jdbc连接用户是root,然后部分删除操作都会报下面这个错误:The user specified as a definer ('aaa'@'localhost') does not exist
最后找原因发现删除操作做了触发器,而触发器里面有这样一句
/*!50017 DEFINER = ''aaa@'localhost' */
原来最初
javascript中showModelDialog刷新父页面
bozch
JavaScript 刷新父页面 showModalDialog
在页面中使用showModalDialog打开模式子页面窗口的时候,如果想在子页面中操作父页面中的某个节点,可以通过如下的进行:
window.showModalDialog('url',self,‘status...’); // 首先中间参数使用self
在子页面使用w
编程之美-买书折扣
bylijinnan
编程之美
import java.util.Arrays;
public class BookDiscount {
/**编程之美 买书折扣
书上的贪心算法的分析很有意思,我看了半天看不懂,结果作者说,贪心算法在这个问题上是不适用的。。
下面用动态规划实现。
哈利波特这本书一共有五卷,每卷都是8欧元,如果读者一次购买不同的两卷可扣除5%的折扣,三卷10%,四卷20%,五卷
关于struts2.3.4项目跨站执行脚本以及远程执行漏洞修复概要
chenbowen00
struts WEB安全
因为近期负责的几个银行系统软件,需要交付客户,因此客户专门请了安全公司对系统进行了安全评测,结果发现了诸如跨站执行脚本,远程执行漏洞以及弱口令等问题。
下面记录下本次解决的过程以便后续
1、首先从最简单的开始处理,服务器的弱口令问题,首先根据安全工具提供的测试描述中发现应用服务器中存在一个匿名用户,默认是不需要密码的,经过分析发现服务器使用了FTP协议,
而使用ftp协议默认会产生一个匿名用
[电力与暖气]煤炭燃烧与电力加温
comsci
在宇宙中,用贝塔射线观测地球某个部分,看上去,好像一个个马蜂窝,又像珊瑚礁一样,原来是某个国家的采煤区.....
不过,这个采煤区的煤炭看来是要用完了.....那么依赖将起燃烧并取暖的城市,在极度严寒的季节中...该怎么办呢?
&nbs
oracle O7_DICTIONARY_ACCESSIBILITY参数
daizj
oracle
O7_DICTIONARY_ACCESSIBILITY参数控制对数据字典的访问.设置为true,如果用户被授予了如select any table等any table权限,用户即使不是dba或sysdba用户也可以访问数据字典.在9i及以上版本默认为false,8i及以前版本默认为true.如果设置为true就可能会带来安全上的一些问题.这也就为什么O7_DICTIONARY_ACCESSIBIL
比较全面的MySQL优化参考
dengkane
mysql
本文整理了一些MySQL的通用优化方法,做个简单的总结分享,旨在帮助那些没有专职MySQL DBA的企业做好基本的优化工作,至于具体的SQL优化,大部分通过加适当的索引即可达到效果,更复杂的就需要具体分析了,可以参考本站的一些优化案例或者联系我,下方有我的联系方式。这是上篇。
1、硬件层相关优化
1.1、CPU相关
在服务器的BIOS设置中,可
C语言homework2,有一个逆序打印数字的小算法
dcj3sjt126com
c
#h1#
0、完成课堂例子
1、将一个四位数逆序打印
1234 ==> 4321
实现方法一:
# include <stdio.h>
int main(void)
{
int i = 1234;
int one = i%10;
int two = i / 10 % 10;
int three = i / 100 % 10;
apacheBench对网站进行压力测试
dcj3sjt126com
apachebench
ab 的全称是 ApacheBench , 是 Apache 附带的一个小工具 , 专门用于 HTTP Server 的 benchmark testing , 可以同时模拟多个并发请求。前段时间看到公司的开发人员也在用它作一些测试,看起来也不错,很简单,也很容易使用,所以今天花一点时间看了一下。
通过下面的一个简单的例子和注释,相信大家可以更容易理解这个工具的使用。
2种办法让HashMap线程安全
flyfoxs
java jdk jni
多线程之--2种办法让HashMap线程安全
多线程之--synchronized 和reentrantlock的优缺点
多线程之--2种JAVA乐观锁的比较( NonfairSync VS. FairSync)
HashMap不是线程安全的,往往在写程序时需要通过一些方法来回避.其实JDK原生的提供了2种方法让HashMap支持线程安全.
Spring Security(04)——认证简介
234390216
Spring Security 认证 过程
认证简介
目录
1.1 认证过程
1.2 Web应用的认证过程
1.2.1 ExceptionTranslationFilter
1.2.2 在request之间共享SecurityContext
1
Java 位运算
Javahuhui
java 位运算
// 左移( << ) 低位补0
// 0000 0000 0000 0000 0000 0000 0000 0110 然后左移2位后,低位补0:
// 0000 0000 0000 0000 0000 0000 0001 1000
System.out.println(6 << 2);// 运行结果是24
// 右移( >> ) 高位补"
mysql免安装版配置
ldzyz007
mysql
1、my-small.ini是为了小型数据库而设计的。不应该把这个模型用于含有一些常用项目的数据库。
2、my-medium.ini是为中等规模的数据库而设计的。如果你正在企业中使用RHEL,可能会比这个操作系统的最小RAM需求(256MB)明显多得多的物理内存。由此可见,如果有那么多RAM内存可以使用,自然可以在同一台机器上运行其它服务。
3、my-large.ini是为专用于一个SQL数据
MFC和ado数据库使用时遇到的问题
你不认识的休道人
sql C++ mfc
===================================================================
第一个
===================================================================
try{
CString sql;
sql.Format("select * from p
表单重复提交Double Submits
rensanning
double
可能发生的场景:
*多次点击提交按钮
*刷新页面
*点击浏览器回退按钮
*直接访问收藏夹中的地址
*重复发送HTTP请求(Ajax)
(1)点击按钮后disable该按钮一会儿,这样能避免急躁的用户频繁点击按钮。
这种方法确实有些粗暴,友好一点的可以把按钮的文字变一下做个提示,比如Bootstrap的做法:
http://getbootstrap.co
Java String 十大常见问题
tomcat_oracle
java 正则表达式
1.字符串比较,使用“==”还是equals()? "=="判断两个引用的是不是同一个内存地址(同一个物理对象)。 equals()判断两个字符串的值是否相等。 除非你想判断两个string引用是否同一个对象,否则应该总是使用equals()方法。 如果你了解字符串的驻留(String Interning)则会更好地理解这个问题。
SpringMVC 登陆拦截器实现登陆控制
xp9802
springMVC
思路,先登陆后,将登陆信息存储在session中,然后通过拦截器,对系统中的页面和资源进行访问拦截,同时对于登陆本身相关的页面和资源不拦截。
实现方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23