- 博客(165)
- 资源 (3)
- 收藏
- 关注
转载 redis--28.1--常见问题--Asynchronous AOF fsync is taking too long(disk is busy)
如果开启了 appendfsync everysec 的fsync策略,并且no-appendfsync-on-rewrite参数为no,则redis在做AOF重写的时候,也会每秒将命令fsync到磁盘上,而此时Redis的写入量大而磁盘性能较差,fsync的等待就会严重;# 修改为一个小的值,例如32MB,达到这个数据量就fsync,让操作系统fsync这个动作更频繁一点,避免单次fsync太多数据,导致阻塞。Fsyncing在这个设置上取决于内核,甚至更少的磁盘压力和延迟尖峰的风险。
2025-01-27 10:28:54
55
转载 阿里:MySQL 单表数据最大不要超过多少行?为什么?
于是顺着的record的页地址就到了6号数据页里,再判断id=5>4,所以肯定在右边的数据页里,于是加载105号数据页。B树将行数据都存在非叶子节点上,假设每个数据页还是16kb,掐头去尾每页剩15kb,并且一条数据表行数据还是占1kb,就算不考虑各种页指针的情况下,也只能放个15条数据。B+树叶子和非叶子结点的数据页都是16k,且数据结构一致,区别在于叶子节点放的是真实的行数据,而非叶子结点放的是主键和下一个页的地址。上面展示的是两层 的树,如果数据变多了,我们还可以再通过类似的方法,再往上构建一层。
2024-09-18 00:35:33
560
1
转载 【MySQL】MySQL分库分表详解[通俗易懂]
在互联网还未崛起的时代,我们的传统应用都有这样一个特点:访问量、数据量都比较小,单库单表都完全可以支撑整个业务。随着互联网的发展和用户规模的迅速扩大,对系统的要求也越来越高。因此传统的MySQL单库单表架构的性能问题就暴露出来了。
2024-09-17 22:59:04
1904
转载 高并发系统设计:MySQL存储海量数据的最后一招---分库分表
另外,不建议在方案中考虑二次扩容的问题,也就是考虑未来的并发量,把这次分库分表设计的容量都填满了之后,数据如何再次分裂的问题。现在技术和业务变化这么快,等真正到了那个时候,业务早就变了,可能新的技术也出来了,之前设计的二次扩容方案大概率是用不上的,所以没必要为了这个而增加方案的复杂程度。类似于订单商品表这类订单的相关的子表,也是需要按照同样的方式归档到各自的历史表中,由于它们都是用订单 ID 作为外键来关联到订单主表的,随着订单主表中的订单一起归档就可以了。问题:解决海量数据的问题,能不能用分布式存储呢?
2024-02-18 11:47:10
856
1
原创 Error:Kotlin: Module was compiled with an incompatible version of Kotlin. The binary version of its
项目编译过程中遇到Kotlin的编译问题,解决办法:Build菜单->Rebuild Project。
2023-09-14 14:29:17
156
原创 献给春天的演讲:扎根
【#献给春天的演讲#:扎根】终究有一天,我们会变成一棵参天大树。【原文】我是张颂文,我是一名演员,今年春节,我在社交媒体上面收到最多的一个评论:恭喜你,张颂文!你的春天来了。很多朋友,大部分的对我的肯定都带一点点同情,大家都觉得,在没有人看见他的地方,他努力了二十年。我从很小的时候就喜欢花花草草,我第一次种花应该是在我四岁那一年,我的隔壁邻居里,有一个叫卢伯伯的人,卢伯伯有个爱好,他在我们后山里会挖很多矮小的树根,然后回家种在盆里,没多久,这个树根就开始散发出枝叶,他种过很多形态各异的盆栽,我看
2023-03-18 23:10:29
539
转载 聊聊高并发下库存加减那些事儿——“如何实现异步扣减库存”
一般在日常开发中经常会遇到打折促销,秒杀活动,就如拼多多最近的4999抢券买爱疯11促销活动,毕竟谁的钱也不是大风刮来的,有秒杀有促销必定带来大量用户,而这类活动往往支撑着公司重要营销策略,所以保证系统在高并发下不出异常非常关键,这其中棘手的便是如何在高并发下高效的处理库存数据。今天就来聊聊高并发下库存加减那些事儿。 首先我们要明确重要的一点是减库存是需要顺序的,而需要顺序就意味着不能有并发加减库存的操作,为了实现顺序,一般做法都是将多线程强行变为单线程实现同步操作或者所说的顺序,将多线...
2022-03-31 18:27:35
1782
1
原创 JDK8 stream常用的几个方法
map可以使用map方法把对象中的某个属性取出后,重新(加工)组成新的列表。 Student s1 = new Student("AB-1", 10); Student s2 = new Student("CD-2", 12); Student s3 = new Student("EF-3", 15); List<Student> list = new ArrayList<>(); list.a.
2021-12-07 16:58:24
657
原创 MySQL的聚簇索引和非聚簇索引
MySQL常见的存储引擎有InnoDB和MyISAM。InnoDB中,(一级索引)数据和索引是存储在同一个文件(数据文件.idb),所以InnoDB主键索引结构中,既存储了数据还存储了主键值,就是聚簇索引。一般聚簇索引、一级索引、主键索引可以理解为一个东西。聚簇索引的叶子节点即是数据节点,可直接关联到行数据。每张表都有且仅有一个聚簇索引,会按照主键、唯一索引、生成rowid的顺序,采纳当做聚簇索引。聚簇索引是B+树结构,数据都是有序存储...
2021-12-03 16:41:02
1003
转载 面试官又整新活,居然问我for循环用i++和++i哪个效率高?
前几天,一个小伙伴告诉我,他在面试的时候被面试官问了这么一个问题:在for循环中,到底应该用 i++ 还是 ++i ?听到这,我感觉这面试官确实有点不按套路出牌了,放着好好的八股文不问,净整些幺蛾子的东西。在临走的时候,小伙伴问面试官这道题的答案是什么,面试官没有明确告诉答案,只是说让从程序执行的效率角度自己思考一下。好吧,既然这个问题被抛了出来,那我们就见招拆招,也给以后面试的小伙伴们排一下坑。思路前面提到,这个搞事情的面试官说要从执行效率的角度思考,那我们就抛开语义上的区别,从运
2021-11-25 11:00:49
179
转载 SQL优化方法及实例
很多朋友在做数据分析时,分析两分钟,跑数两小时?在使用SQL过程中不仅要关注数据结果,同样要注意SQL语句的执行效率。本文涉及三部分,篇幅较长,建议收藏后翻看: SQL介绍 SQL优化方法 SQL优化实例 1、MySQL的基本架构1)MySQL的基础架构图左边的client可以看成是客户端,客户端有很多,像我们经常你使用的CMD黑窗口,像我们经常用于学习的WorkBench,像企业经常使用的Navicat工具,它们都是一个客户端。右边的这一大堆都可以看成
2021-08-10 16:47:31
1991
原创 Redis缓存穿透,缓存击穿,缓存雪崩
缓存穿透key对应的缓存不存在,此时程序会触发读取数据源,如果并发量较大,可能会持续亚到DB。解决方案:如果发现数据库不存在记录,可以把空结果缓存到Redis,这样就减少了DB的压力。缓存击穿 key对应的缓存已过期,此时如果大量并发请求,系统发现缓存过期,会重新从DB中加载数据到Redis,此时可能会瞬间把DB压垮。(感觉这个挺极端的场景????)解决方案:方案1:从DB中加载缓存的时候,使用分布式锁,只允许一个线程加载缓存; ...
2021-07-16 16:35:39
147
原创 Long包装类的比较
要比较Long类型的值的,不能直接用 == ,某些情况下会出问题:Long类中,有一个内部类LongCache,对-128到127的数值做了缓存,这个范围内的使用==是可以返回正确的值,超过这个范围就不成立。可以直接使用equals方法,因为Long重写了equals方法,如下public boolean equals(Object obj) { if (obj instanceof Long) { return value == ((Long)ob.
2021-07-05 17:01:57
615
原创 雪花算法(SnowFlake)
本文不介绍原理,只介绍优缺点。据国家大气研究中心的查尔斯·奈特称,一般的雪花大约由10^19个水分子组成。在雪花形成过程中,会形成不同的结构分支,所以说大自然中不存在两片完全一样的雪花,每一片雪花都拥有自己漂亮独特的形状。雪花算法表示生成的id如雪花般独一无二。优点在Java中生成的id是long类型的有序整数,相较uuid作为数据库的主键,更易用于索引搜索和排序,对数据库(MySQL B-Tree)友好。 所有id是根据时间递增的,无法根据其计算出业务量,避免被爬虫遍历数据。...
2021-07-02 14:57:28
1695
原创 Redis的多数据库
一个Redis实例提供了多个用来存储数据的字典,客户端可指定将数据存储到哪个字典中。字典和我们理解的数据库类似,所以可将每个字典都理解成一个独立的数据库。 每个数据库对外都是以0开始递增的数字命名,Redis默认支持16个数据库,可以通过配置参数database来修改这个数字。客户端与Redis建立连接后,会自动选择0号数据库,不过可以随时通过SELECT命令更换数据库,如果选择1号数据库:redis> SELECT 1OKredis [1] GET foo...
2021-07-01 18:11:11
402
转载 浅谈聚簇索引和非聚簇索引的区别
聚簇索引:将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据非聚簇索引:将数据与索引分开存储,索引结构的叶子节点指向了数据对应的位置在innodb中,在聚簇索引之上创建的索引称之为辅助索引,非聚簇索引都是辅助索引,像复合索引、前缀索引、唯一索引。辅助索引叶子节点存储的不再是行的物理位置,而是主键值,辅助索引访问数据总是需要二次查找。InnoDB使用的是聚簇索引,将主键组织到一棵B+树中,而行数据就储存在叶子节点上,若使用"where id = 14"这样的条件查找主键,则按照B.
2021-06-23 10:33:10
736
原创 has already been called for this request
java.lang.IllegalStateException: getReader() has already been called for this request at org.apache.catalina.connector.Request.getInputStream(Request.java:1056) at org.apache.catalina.connector.RequestFacade.getInputStream(RequestFacade.java:365) at ja.
2021-05-24 18:18:51
475
转载 分布式锁
现在面试都会聊聊分布式系统,通常面试官都会从服务框架(Spring Cloud、Dubbo),一路聊到分布式事务、分布式锁、ZooKeeper等知识。今天就来聊聊分布式锁这块的知识,先具体的来看看Redis分布式锁的实现原理。如果在公司里落地生产环境用分布式锁的时候,一定是会用开源类库的,比如Redis分布式锁,一般就是用Redisson框架就好了,非常的简便易用。感兴趣可以去Redisson官网看看如何在项目中引入Redisson的依赖,然后基于Redis实现分布式锁的加锁与释放锁。一段简单的使用
2021-04-16 18:16:27
17501
4
转载 关于Google+以及Facebook第三方登录实现的一点总结f
简述最近项目中有关于第三方登陆的需求,第三方Facebook以及Google +登录。正好这几天把这个需求做得差不多了,收个尾,作为一个这方面之前基本从未涉及的小白,总结下开发流程以及过程中遇到的一些问题。希望能对大家有所帮助。基本上,目前互联网上的涉及到第三方登录采用的都为OAuth认证方式,相关原理以及实现方法相关的可以网上搜索查看。不过涉及到Facebook以及Google +的登陆,最大的问题是这两个网站在墙外,想FQ找资料比较费劲,奈何国内这方面的资料也不是很齐全,翻到的官方的文档又全
2021-04-15 10:03:06
2352
转载 图解 | 原来这就是线程池
目录第一版 第二版 第三版 第四版 第五版 总结小宇:闪客,我最近看到线程池,被里边乱七八槽的参数给搞晕了,你能不能给我讲讲呀?闪客:没问题,这个我擅长,咱们从一个最简单的情况开始,假设有一段代码,你希望异步执行它,是不是要写出这样的代码? 小宇:嗯嗯,最简单的写法似乎就是这样呢。闪客:这种写法当然可以完成功能,可是你这样写,老王这样写,老张也这样写,程序中到处都是这样创建线程的方法,能不能写一个统一的工具类让大家调用呢?小宇:可以的,感觉有一个统一的工具类,..
2021-02-07 16:32:21
140
转载 公平锁与非公平锁
公平锁:多个线程按照申请锁的顺序去获得锁,线程会直接进入队列去排队,永远都是队列的第一位才能得到锁。优点:所有的线程都能得到资源,不会饿死在队列中。缺点:吞吐量会下降很多,队列里面除了第一个线程,其他的线程都会阻塞,cpu唤醒阻塞线程的开销会很大。非公平锁:多个线程去获取锁的时候,会直接去尝试获取,获取不到,再去进入等待队列,如果能获取到,就直接获取到锁。优点:可以减少CPU唤醒线程的开销,整体的吞吐效率会高点,CPU也不必取唤醒所有线程,会减少唤起线程的数量。缺点:你们可能也发现了..
2021-01-15 10:33:56
214
转载 深入浅出Presto:PB级OLAP引擎
现在大数据组件非常多,众说不一,在每个企业不同的使用场景里究竟应该使用哪个引擎呢?这是易观Spark实战营出品的开源Olap引擎测评报告,团队选取了Hive、Sparksql、Presto、Impala、Hawq、Clickhouse、Greenplum大数据查询引擎,在原生推荐配置情况下,在不同场景下做一次横向对比,供大家参考。每年易观都会发布一次这样的大数据开源测评报告,欢迎大家给出更好的测评意见以及想要测试的组件。易观Spark实战营是易观大数据技术团队组织的针对大数据初学者的实战训练营,欢.
2020-12-01 15:51:45
1015
转载 干货 | 每天十亿级数据更新,秒出查询结果,ClickHouse在携程酒店的应用
一、背景1)携程酒店每天有上千表,累计十多亿数据更新,如何保证数据更新过程中生产应用高可用;2)每天有将近百万次数据查询请求,用户可以从粗粒度国家省份城市汇总不断下钻到酒店,房型粒度的数据,我们往往无法对海量的明细数据做进一步层次的预聚合,大量的关键业务数据都是好几亿数据关联权限,关联基础信息,根据用户场景获取不同维度的汇总数据;3)为了让用户无论在app端还是pc端查询数据提供秒出的效果,我们需要不断的探索,研究找到最合适的技术框架。对此,我们尝试过关系型数据库...
2020-11-27 10:43:02
511
1
转载 Elastic-Job开发指南
大多数情况下,定时任务我们一般使用quartz开源框架就能满足应用场景。但如果考虑到健壮性等其它一些因素,就需要自己下点工夫,比如:要避免单点故障,至少得部署2个节点吧,但是部署多个节点,又有其它问题,有些数据在某一个时刻只能处理一次,比如 i = i+1 这些无法保证幂等的操作,run多次跟run一次,完全是不同的效果。 对于上面的问题,我曾经自行设计过一个基于zk分布式锁的解决方案: 1、每类定时job,可以分配一个独立的标识(比如:xxx_job) 2、这类job的实例,部署在多个节点上时,每个节.
2020-08-20 10:49:30
1541
原创 mysql Btree和Hash的区别
Mysql数据库的索引有Btree和Hash。Btree一般采用Balance Tree结构存储,检索时需要从根节点到叶子节点;Hash是进行Hash运算后进行查找,查找效率非常高,但只能用于等值查询,不能用于范围查找,另外如果遇到大量Hash值相同时,效率不一定比Btree效率高。实际开发中,一般采用Btree就能满足需求。...
2020-06-09 15:08:44
465
原创 mysql utf8和utf8mb4字符集的区别
utf8mb4的编码,mb4是most bytes 4的意思,专门用来兼容四字节的unicode。utf8可以支持大部分中文汉字,比utf8mb4更省空间,但utf8mb4字符支持IOS和安卓手机上的一些Emoji 表情。
2020-06-09 11:45:25
251
原创 MySQL中varchar最大长度
4.0以下版本,UTF8汉字,一个汉字3个字节5.0以上版本,和字母数字一样,存储的个数一样,最大存储65535字节
2020-06-09 10:11:02
378
转载 Java 种15种锁的介绍:公平锁,可重入锁,独享锁,互斥锁等等…
Java 中15种锁的介绍 1,在读很多并发文章中,会提及各种各样的锁,如公平锁,乐观锁,下面是对各种锁的总结归纳:公平锁/非公平锁 可重入锁/不可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁 上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容是对每个锁的名词进行一定的解释。一,公平锁/非公平锁 公平锁:公平锁是指多个线程按照申请锁的顺序来获取...
2020-05-22 11:36:54
228
转载 5种Java 单例模式
单例模式有很多好处,它能够避免实例对象的重复创建,不仅可以减少每次创建对象的时间开销,还可以节约内存空间;能够避免由于操作多个实例导致的逻辑错误。如果一个对象有可能贯穿整个应用程序,而且起到了全局统一管理控制的作用。特点: 1、单例类只能有一个实例。 2、单例类必须自己自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。应用:线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象1、饿汉模式public class Singleton{ ...
2020-05-15 16:18:51
144
转载 CountDownLatch用法详解
概念CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有框架服务之后执行。CountDownLatch的用法CountDownLatch典型用法1:某一线程在开始运行前等待n个线程执行完毕。将CountDownLatch的计数器初始化为nnew CountDownLatch(n),每当一个任务线程执行完毕,就将计数器减1countdownlatch.countDown(),当计...
2020-05-15 10:47:23
889
转载 Java高并发书籍推荐
1.Java并发编程实战 (java并发的圣经)2.多处理器编程的艺术(并发编程的各种算法,java实现,有点难度)3.并发的艺术 (多核处理器的共享内存模型中的各种算法)4.Java虚拟机并发编程 (jvm平台上各种语言的并发比较,如java,scala,clojure)5.Java并发编程的艺术6.Java 7并发编程实战手册 (java中的并发编程实践,属于API工具书,...
2020-05-04 01:45:39
6011
1
FileZilla.app.zip
2020-03-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人