- 博客(37)
- 资源 (34)
- 收藏
- 关注
转载 Kafka消息查找
数据保存时,如果是以集群形式,那么就有多个partition分布在不同机器上,每个partition又划分为多组segment,每个segment又包含.log,.index,.timeindex文件,用于存放每条message的offset,消息大小,消息体等信息。那么问题来了,要查找一个offset为368801的消息,该如何查找?以下给出原理图:1.根据二分法,找出对应的segment为segment2;2.打开找到的segment中的.index文件(也就是368796.index文件,该.
2020-11-29 09:41:51 2486
转载 Mycat读写分离
Mycat可以在主从机的基础上设置主机负责写,从机负责读,及读写的具体策略、主从切换的策略。<dataHost name="host122" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <
2020-11-28 10:08:33 161
原创 RabbitMQ补充
默认端口RabbitMQ Server:5672RabbitMQ Manager:15672RabbitMQ集群:25672创建集群一个节点(如host名称为rmq1)执行:cd /usr/local/soft/rabbitmq_server-3.8.9/sbin./rabbitmq-server -detached >nohup.out&./rabbitmqctl start_app其他节点执行:cd /usr/local/soft/rabbitmq_server-3.
2020-11-28 10:08:01 99
转载 扩缩容
扩缩容(增减数据节点):离线扩缩容系统下线扩容。(写历史数据)如:公告哪天的晚间或者哪天到哪天系统暂时下线维护。Mysql dump(https://www.cnblogs.com/linuxk/p/9371475.html)Mycat自带工具在线扩缩容在线(不停机)扩缩容。(双写:写历史数据和增量数据)1、用迁移程序和Mycat将历史数据迁移到新库。2、新的写请求发送到消息队列。(MySQL数据增量的日志解析工具 Canal :https://segmentfau.
2020-11-28 10:06:47 726
转载 ShardingSphere
ShardingSphere本文为随记。详细内容看官网权威指南:https://shardingsphere.apache.org/document/current/cn/overview/Sharding-JDBC是从当当的框架中剥离出来的。加上Sharding Proxy等构成ShardingSphere。ShardingSphere是国产分布式数据库中间件,已经提交给Apache基金会,孵化完成。表Sharing-JDBC的广播表对应Mycat的全局表。Sharing-JDBC的绑定表
2020-11-27 08:29:47 254
转载 Mysql主从复制
1、主从服务器分别作以下操作: 1.1、版本一致 1.2、初始化表,并在后台启动mysql 1.3、修改root的密码2、修改主服务器master: #vi /etc/my.cnf [mysqld] log-bin=mysql-bin //[必须]启用二进制日志 server-id=222 //[必须]服务器唯一ID,默认是1,一般取IP最后一段3、修改从服务器slave: #vi /etc/my.cnf [mys...
2020-11-26 11:00:13 130
原创 MQ消息的可靠性
MQ消息的可靠性消息的可靠性即避免消息丢失。代码以RabbitMQ为例。Channel:void basicPublish(String exchange, String routingKey, BasicProperties props, byte[] body) throws IOException;String basicConsume(String queue, boolean autoAck, Consumer callback) throws IOException;消息从Prod
2020-11-25 16:13:07 1276
转载 分布式事务
分布式事务的目标:保证在多个节点成功执行操作。(保证在分布式环境的事务的特性。如:订单系统的消息在库存系统、支付系统、通知系统都被消费。)一、两阶段提交(Precommit、Commit,2PC)两个阶段的提交,包括Precommit(预提交)、Commit(提交)两阶段提交(Two-phase Commit,2PC),通过引入协调者(Coordinator)来协调参与者的行为,并最终决定这些参与者是否要真正执行事务。1. 运行过程1.1 准备阶段协调者询问参与者事务是否执行成功,参
2020-11-24 10:41:07 204
转载 Mysql中的MVCC
Multi-Version Concurrency Control 多版本并发控制,MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问;在编程语言中实现事务内存。MVCC只工作在REPEATABLE READ和READ COMMITED隔离级别下。READ UNCOMMITED不是MVCC兼容的,因为查询不能找到适合他们事务版本的行版本;它们每次都只能读到最新的版本。SERIABLABLE也不与MVCC兼容,因为读操作会锁定他们返回的每一行数据。通过使用MVCC(Mult
2020-11-23 15:34:49 160
转载 SpringBoot配置加载的优先级
相同内容,优先级高的会覆盖优先级低的。启动参数--spring.config.location=configFilePath/configFile > projectPath/config/configFile > projectPath/configFile > classpath/config/configFile > classpath/configFile相同路径下的configFile优先级:application-profile.propertie > ap
2020-11-23 09:41:42 339
原创 分片策略
连续分片、离散分片连续分片和离散分片思考的是数据进入分片的连续性强弱,也就是分片字段值连续的记录能否高频地进入同一个分片。连续分片数据进入分片的连续性强。如:范围分片、时间分片。优点:范围条件查询消耗资源少。如ID1到100都在1个节点,无需建立多个数据连接来跨库汇总数据。扩容无需迁移数据。(扩容不影响原来分片的记录。)缺点:存在数据热点的可能性。比如支付宝账单按月分片,本月数据是热点,可以考虑不按照月分片,按照客户ID分片。按照客户ID范围分片,最近加入的客户活跃导致部分.
2020-11-22 22:31:01 650
原创 Redis缓存穿透、缓存击穿、缓存雪崩+解决方案
缓存穿透:不断请求缓存和数据库中都没有的数据。黑客可以通过缓存穿透使数据库负载过大被压垮,数据库服务器宕机。解决方案: 校验请求。如用户ID小于0,直接返回用户不存在。 设置Key的Value为Null。有效时长设置较小值,如30秒,防止数据库中插入了数据,但缓存不及时更新。 利用布隆过滤器判断请求的数据是否存在。如布隆过滤器中存储用户ID,判断用户ID是否存在。 缓存击穿:大量并发请求缓存中没有但数据库中有的数据。解决方案: 热点数据不过期。 服务...
2020-11-22 22:16:08 118
原创 LRU、LFU
LRU,即:最近最少使用淘汰算法(Least Recently Used)。LRU是淘汰最长时间没有被使用的数据。LFU,即:最不经常使用淘汰算法(Least Frequently Used)。LFU是淘汰一段时间内,使用次数最少的数据。举例: 数据2 1 2 1 2 3 4,加入4时内存超过阈值。根据LRU会淘汰1,因为1距离想加入4的时间点(也就是淘汰时间点)最长。根据LFU会淘汰3,因为加入4前的这段时间里,3的使用次数最少。LRU算法实现:LeetCode官方题...
2020-11-20 10:56:02 327
转载 Mysql日志:二进制日志、事务日志(redo log、undo log)、快照读和当前读、共享锁和排他锁、Log Buffer
二进制日志Mysql的binlog是二进制日志文件。包括日志索引文件(后缀为.index)和日志文件(后缀为.00000*)。日志索引文件记录日志文件。日志文件记录数据定义和写方式的数据操作语句。(数据定义、数据操作:参考:https://blog.csdn.net/haoranhaoshi/article/details/109804069)参考:https://blog.csdn.net/lzhcoder/article/details/88814364事务日志innodb事务日志包括und
2020-11-19 17:54:28 787
转载 DDL、DML、DCL、TCL
SQL语言包括四种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML),数据控制语言(DCL)和事务控制语言(TCL)。DDL(Data Definition Language):创建、修改、删除数据库、表、视图。https://baike.baidu.com/item/DDL/21997禁用DDL(通过触发器):https://baike.baidu.com/pic/DDL/21997/0/cc11728b4710b912ad8ca043c3fdfc0392452239?fr=
2020-11-19 10:56:48 192
转载 持续集成、重构、测试驱动设计、演进式设计、处理复杂系统的方式、领域驱动设计
持续集成:合理提高团队成员的集成频率,通常每个成员每天至少集成一次。每次集成通过自动化构建进行验证,及时发现集成错误。避免长时间不集成,一集成就遭遇集成地狱。注:自动化构建:编译,发布,自动化测试。集成地狱:代码差异量过大,集成困难。重构:不改变功能,改进代码,优化性能、可读性、可扩展性。测试驱动设计:及时测试,发现问题,改进设计,确保对系统的更改不破坏现有功能。演进式设计:结合持续的需求和反馈进行敏捷开发。敏捷开发的实践:持续集成、测试驱动设计、重构。—————————————
2020-11-19 10:10:45 158
转载 Redis和MySQL数据同步及Redis使用场景
转载:https://www.cnblogs.com/xiaozengzeng/p/10872290.html1.同步MySQL数据到Redis(1) 在redis数据库设置缓存时间,但这样的话,我们放在缓存中的数据对数据的一致性要求不是很高才能放入缓存当中。 例如:缓存量大但又变化频率不是很大的数据,比如商品最新的一些评论。(2) 基于binlog使用mysql_udf_redis,将数据库中的数据同步到Redis。 无论MySQL还是Redis,自身都带有数据同...
2020-11-18 19:48:33 524
转载 Redis的key过期设置、查询、清理
1.redis过期时间介绍有时候我们并不希望redis的key一直存在。例如缓存,验证码等数据,我们希望它们能在一定时间内自动的被销毁。redis提供了一些命令,能够让我们对key设置过期时间,并且让key过期之后被自动删除2.redis过期时间相关命令1.EXPIRE PEXPIRE EXPIRE接口定义:EXPIRE key "seconds" 接口描述:设置一个key在当前时间"seconds"(秒)之后过期。返回1代表设置成功,返回0代表key不存在或者无法设..
2020-11-18 19:23:46 7599
原创 管理员身份打开命令行窗口
Win+R,输入C:\Windows\System32,回车,然后按住Shift,快速敲cmd,可以快速搜到cmd.exe,然后在cmd.exe上右键,敲A键,回车。弹出弹框后,敲向左键回车。完成。为什么一路快捷键,一气呵成?因为无聊。爆赞!...
2020-11-17 09:53:38 353
原创 Windows上RabbitMQ下载、安装
1、RabbitMQ依赖于Erlang,需要先安装Erlang。2、Erlang和RabbitMQ版本有对应关系。https://www.rabbitmq.com/which-erlang.html下面的安装以erl 23.1和rabbitMQ 3.8.9为例。erlang下载太慢,可以在迅雷中点击新建,粘贴下载链接,如https://www.erlang.org/downloads/23.1下载后,双击exe,一直next即可。完成后,配置系统变量(Win+R快捷键,输..
2020-11-17 09:41:08 609
原创 MQ技术选型
ActiveMQ推出时间更早,功能丰富,但吞吐量不如Kafka、RocketMQ,时效性不如RabbitMQ,可靠性不如RabbitMQ、Kafka和RocketMQ,社区活跃度低,不建议使用。 RabbitMQ RocketMQ Kafka 语言 Erlang Java Scala、Java 二次开发 难 易 中 社区活跃度 高 低 高 负责开发的公司 Pivotal(负责Spring的公司) 阿里..
2020-11-16 16:14:42 471
转载 Redis基本知识点
下载地址: Windows: GitHub:https://github.com/tporadowski/redis/releases BaiduYun:https://pan.baidu.com/s/1z1_OdNVbtgyEjiktqgB83g 密码:kdfq Linux: Redis官网:http://redis.io/download启动服务端: Windows:cd到redis目录,执行redis-server.exe redis....
2020-11-16 14:08:25 165
转载 雪花算法
原文:https://blog.csdn.net/lq18050010830/article/details/89845790SnowFlake(雪花)算法是Twitter开源的分布式ID生成算法。类型:Long值 64位:从左至右: 0,1位 时间戳,41位(约69年时间) 机房ID,5位 机器ID,5位 同一机器,同一毫秒内的序列号,12位SnowFlake算法的优点:(1)高性能:ID在内存生成,不...
2020-11-16 14:07:29 1062
原创 删除休眠文件,给C盘更多可用空间
C盘中的休眠文件是电脑休眠时,将内存中的数据保留到C盘(系统盘)中产生的,电脑停止休眠时,将休眠文件中的数据加载到内存中,电脑就可以恢复到休眠之前的状态。查看休眠文件,需在文件资源管理器的菜单栏查看-选项中,去掉隐藏受保护的操作系统文件(推荐)。 就可以看到C盘根目录下的hiberfil.sys文件。这个文件...
2020-11-14 09:07:41 10167
原创 MQ、AMQP、RabbitMQ
Exchange(交换机):(1)Direct(直连)交换机: 使用明确的绑定键。适用于业务目的明确的场景。如:员工入职的消息对应员工入职的消息队列。(2)Top(主题)交换机:使用支持通配符的绑定键。适用于根据业务主题过滤消息的场景。如:Binding Key(绑定键)的通配符中:*表示一个word#表示一个或多个word如:senior.netty、junior.jvm(3)Fanout(广播)Exchange:无需绑定键,适合通用业务消息。如:产品系统的消息被其他所有系统(推广、销售、维
2020-11-13 15:44:49 279
原创 分布式数据库中间件Mycat
Mycat:分布式数据库中间件。对数据库用户而言,是数据库代理。Mycat将用户给到逻辑库的SQL语句路由到实际库,访问结果被Mycat处理后返回给用户(如:结果聚合)。Mycat可以屏蔽分库分表的影响,像操作整表整库一样操作分散的库和表。http://www.mycat.io/官网下载,解压后在cmd中cd到mycat的bin目录,安装:mycat install启动:mycat start停止:mycat stop重启:mycat restartMycat的默认端口是:8066。实际库是
2020-11-13 10:06:40 216
原创 分布式CAP、一致性模型、BASE
CAP:一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。一致性:从不同数据副本,读到的数据一致。 强一致性:读到的数据一致。 弱一致性:读到的数据可能一致。 最终一致性:一段时间后,读到的数据一致。可用性:操作是否能完成。如:发出请求后,是否能得到正常的响应。分区容错性:分区故障,系统仍能支撑运行。分布式中,想满足一致性,那么必须等待数据同步,在数据同步期间不满足可用;想满足可用性,就不能等待数据同...
2020-11-12 16:04:51 136
原创 超码、候选码、主码(主键)、主属性、非主属性、关系数据库中的依赖、关系数据库范式、反范式
超码:可以区分记录的一个属性或多个属性的集合。候选码:超码的最小集,即包含最少属性的超码。超码的最小集可以有多个,即多个集合大小相同,但元素构成不完全相同的最小集。主码(主键):被选中的一个候选码。候选码可以有多个,主码只有一个。主键如果是由多个属性构成,又称联合主键。主属性:属于某个候选码的属性。非主属性:不属于任何候选码的属性。表的域、属性、字段、数据项是一致的。关系数据库中的依赖:根据A属性可以得到B属性,则B属性依赖于A属性。如:根据学号可以得到姓名,则姓名依赖于学号。Java模
2020-11-11 13:46:27 3185
原创 Java ScheduledExecutorService
delay时长后执行一次任务。TimeUnit是时间单位枚举。 public ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit);delay时长后执行一次有返回值的任务。 public <V> ScheduledFuture<V> schedule(Callable<V
2020-11-10 14:59:57 200
原创 线程池源码分析
线程池的目标是线程复用。public ThreadPoolExecutor(int corePoolSize, //核心线程数量 int maximumPoolSize, //最大线程数 long keepAliveTime, //空闲线程的存活时间,超过空闲时间上限就销毁线程,默认是针对临时线程,allowCoreThreadTimeOut(true)时也控制核心线程 TimeUnit unit, //存活时间单位 BlockingQueue<Runnable> workQueu
2020-11-09 15:57:56 140
原创 bat生成exe总结
下载由bat生成exe的工具:https://pan.baidu.com/s/1V4oQ6bzkk8CnxRvgKuQEyA下载一个图标,需ico格式,阿里矢量图标官网https://www.iconfont.cn/不提供ico格式图标,https://www.easyicon.net/covert/可以png转ico,但不清晰,推荐:https://www.easyicon.net/在由bat生成exe的工具界面中,点击菜单栏中的打开,选择bat文件,然后在右侧勾选图标,选择ic.
2020-11-09 09:54:11 810
原创 Java FutureTask
import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask;import java.util.concurrent.TimeUnit;import java.util.concurrent.TimeoutException;/** * @Author: ZhangHao * @Description: FutureTask测试 * @Date: 2020/11/6 15:44 .
2020-11-06 16:07:15 90
原创 域名、默认端口、Spring Cloud系列之反向代理服务器Nginx
域名域名(英语:Domain Name),又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识。顶级域名(一级域名):◇ 按国家划分:cn、tw(台湾)、hk(香港)等。cn表示中国,tw表示台湾,hk表示香港。◇ 按组织性质划分:org、net、com、edu、gov、cc等。com表示company,给企业用。edu表示education,给大学用。org表示organization,给非盈利组织用。◇ 反向域:.
2020-11-06 15:15:59 349
原创 IDEA Statistics统计工程资源(代码行数等)
先上图感受:资源整体分类:Count: java文件数量 Size SUM:Java所有文件总占用磁盘大小 Size MIN: java文件的最小文件占用硬盘大小 Size MAX: java文件的最大文件占用硬盘大小 Size AVG: java文件的平均占用硬盘大小 Lines: java文件的总行数 Lines MIN: java文件的最小行数 Lines MAX: java文件的最大行数 Lines AVG: java文件的平均行数Java代...
2020-11-05 11:16:44 1549
原创 Java retry实例及应用
先上实例:/** * @Author: ZhangHao * @Description: RetryTest * @Date: 2020/11/4 20:11 * @Version: 1.0 */public class RetryTest { public static void main(String[] args) { // retry:后必须紧跟for循环 retry: for(int l = 0;l < 3;l++)
2020-11-04 20:59:35 141
原创 Spring Cloud系列之接口伪装:Feign
Feign可以把Rest的请求进行隐藏,伪装成类似SpringMVC的Controller一样。你不用再自己拼接url,拼接参数等等操作,一切都交给Feign去做。 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId></dependency&g...
2020-11-02 15:46:05 347
原创 Spring Cloud系列之熔断器:Hystrix
Hystix是Netflix开源的一个延迟和容错库,用于隔离访问远程服务、第三方库,防止出现级联失败。
2020-11-02 11:01:49 183
bandilplszcb.zip(班迪录屏)
2020-06-24
ShpAnalysis.zip(包含Java方式解析shp文件的IDEA工程和ShapeExplorer.exe)
2020-06-18
Thoughtworks 技术雷达 2019.11版
2019-12-31
VertxTcpSocket.zip
2019-07-25
dubbo-admin-2.5.10.war
2019-07-10
zookeeper-3.4.14.zip
2019-07-10
Java RPC和RMI代码实战
2019-07-02
log4j使用实战
2019-06-25
百度语音Android实践:百度语音识别和语音合成、个人兴趣项目:亚丝娜人工智能AIMaid(仅供参考语音交流技术,请勿商用)
2019-05-19
ThoughtWorks技术雷达—2019年4月发布的最新版
2019-05-17
Maven简单使用
2019-05-06
Vert.x的Http和TCP实战
2019-04-14
Mina框架实战(由浅入深,稳扎稳打)
2019-04-09
机器学习实战之决策树全面总结
2019-03-27
机器学习实战之kNN
2019-03-17
Base64Util、FileUtil、GsonUtils、HttpUtil
2019-02-26
百度语音实战
2019-02-26
SpringBoot实战
2019-02-11
Socket实战
2019-01-22
摄像、拍照、人脸识别、人脸库对比
2019-01-11
人脸对比实战项目
2019-01-10
Java摄像开源框架(文档、案例、Jar包)、个人项目工程(JavaFX)、原始实例(JavaFX)
2019-01-05
提供汉字、拼音、拼音首字母的模糊查询(匹配左侧)
2019-01-01
中国慕课大学数据采集和管理网站-前后台-Java版
2021-07-19
Java全系列个人知识笔记
2021-07-11
weather-select.zip(Java获取详细的天气数据)
2020-06-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人