自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

曾子墨

欢迎光临

  • 博客(161)
  • 资源 (3)
  • 收藏
  • 关注

转载 高并发系统设计:MySQL存储海量数据的最后一招---分库分表

另外,不建议在方案中考虑二次扩容的问题,也就是考虑未来的并发量,把这次分库分表设计的容量都填满了之后,数据如何再次分裂的问题。现在技术和业务变化这么快,等真正到了那个时候,业务早就变了,可能新的技术也出来了,之前设计的二次扩容方案大概率是用不上的,所以没必要为了这个而增加方案的复杂程度。类似于订单商品表这类订单的相关的子表,也是需要按照同样的方式归档到各自的历史表中,由于它们都是用订单 ID 作为外键来关联到订单主表的,随着订单主表中的订单一起归档就可以了。问题:解决海量数据的问题,能不能用分布式存储呢?

2024-02-18 11:47:10 138 1

转载 如何设计秒杀系统?

https://download.csdn.net/download/aoxida/88843363

2024-02-18 10:44:40 26

原创 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 100

原创 献给春天的演讲:扎根

【#献给春天的演讲#:扎根】终究有一天,我们会变成一棵参天大树。【原文】我是张颂文,我是一名演员,今年春节,我在社交媒体上面收到最多的一个评论:恭喜你,张颂文!你的春天来了。很多朋友,大部分的对我的肯定都带一点点同情,大家都觉得,在没有人看见他的地方,他努力了二十年。我从很小的时候就喜欢花花草草,我第一次种花应该是在我四岁那一年,我的隔壁邻居里,有一个叫卢伯伯的人,卢伯伯有个爱好,他在我们后山里会挖很多矮小的树根,然后回家种在盆里,没多久,这个树根就开始散发出枝叶,他种过很多形态各异的盆栽,我看

2023-03-18 23:10:29 429

原创 Redis删除机制

Redis过期删除

2023-02-16 12:06:58 309

原创 Redisson 分布式锁

Redisson

2022-12-01 09:24:09 912

原创 MAC忽略git提交DS_Store文件

MAC电脑忽略DS_Store

2022-10-19 21:28:35 535

转载 聊聊高并发下库存加减那些事儿——“如何实现异步扣减库存”

  一般在日常开发中经常会遇到打折促销,秒杀活动,就如拼多多最近的4999抢券买爱疯11促销活动,毕竟谁的钱也不是大风刮来的,有秒杀有促销必定带来大量用户,而这类活动往往支撑着公司重要营销策略,所以保证系统在高并发下不出异常非常关键,这其中棘手的便是如何在高并发下高效的处理库存数据。今天就来聊聊高并发下库存加减那些事儿。  首先我们要明确重要的一点是减库存是需要顺序的,而需要顺序就意味着不能有并发加减库存的操作,为了实现顺序,一般做法都是将多线程强行变为单线程实现同步操作或者所说的顺序,将多线...

2022-03-31 18:27:35 1648 1

原创 MySQL LIMIT 理解

MYSQL LIMIT

2022-03-29 11:57:05 3919

原创 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 592

原创 MySQL的聚簇索引和非聚簇索引

MySQL常见的存储引擎有InnoDB和MyISAM。InnoDB中,(一级索引)数据和索引是存储在同一个文件(数据文件.idb),所以InnoDB主键索引结构中,既存储了数据还存储了主键值,就是聚簇索引。一般聚簇索引、一级索引、主键索引可以理解为一个东西。聚簇索引的叶子节点即是数据节点,可直接关联到行数据。每张表都有且仅有一个聚簇索引,会按照主键、唯一索引、生成rowid的顺序,采纳当做聚簇索引。聚簇索引是B+树结构,数据都是有序存储...

2021-12-03 16:41:02 897

转载 面试官又整新活,居然问我for循环用i++和++i哪个效率高?

前几天,一个小伙伴告诉我,他在面试的时候被面试官问了这么一个问题:在for循环中,到底应该用 i++ 还是 ++i ?听到这,我感觉这面试官确实有点不按套路出牌了,放着好好的八股文不问,净整些幺蛾子的东西。在临走的时候,小伙伴问面试官这道题的答案是什么,面试官没有明确告诉答案,只是说让从程序执行的效率角度自己思考一下。好吧,既然这个问题被抛了出来,那我们就见招拆招,也给以后面试的小伙伴们排一下坑。思路前面提到,这个搞事情的面试官说要从执行效率的角度思考,那我们就抛开语义上的区别,从运

2021-11-25 11:00:49 132

转载 SQL优化方法及实例

很多朋友在做数据分析时,分析两分钟,跑数两小时?在使用SQL过程中不仅要关注数据结果,同样要注意SQL语句的执行效率。本文涉及三部分,篇幅较长,建议收藏后翻看: SQL介绍 SQL优化方法 SQL优化实例 1、MySQL的基本架构1)MySQL的基础架构图左边的client可以看成是客户端,客户端有很多,像我们经常你使用的CMD黑窗口,像我们经常用于学习的WorkBench,像企业经常使用的Navicat工具,它们都是一个客户端。右边的这一大堆都可以看成

2021-08-10 16:47:31 1637

原创 Redis缓存穿透,缓存击穿,缓存雪崩

缓存穿透key对应的缓存不存在,此时程序会触发读取数据源,如果并发量较大,可能会持续亚到DB。解决方案:如果发现数据库不存在记录,可以把空结果缓存到Redis,这样就减少了DB的压力。缓存击穿 key对应的缓存已过期,此时如果大量并发请求,系统发现缓存过期,会重新从DB中加载数据到Redis,此时可能会瞬间把DB压垮。(感觉这个挺极端的场景????)解决方案:方案1:从DB中加载缓存的时候,使用分布式锁,只允许一个线程加载缓存; ...

2021-07-16 16:35:39 108

原创 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 523

原创 雪花算法(SnowFlake)

本文不介绍原理,只介绍优缺点。据国家大气研究中心的查尔斯·奈特称,一般的雪花大约由10^19个水分子组成。在雪花形成过程中,会形成不同的结构分支,所以说大自然中不存在两片完全一样的雪花,每一片雪花都拥有自己漂亮独特的形状。雪花算法表示生成的id如雪花般独一无二。优点在Java中生成的id是long类型的有序整数,相较uuid作为数据库的主键,更易用于索引搜索和排序,对数据库(MySQL B-Tree)友好。 所有id是根据时间递增的,无法根据其计算出业务量,避免被爬虫遍历数据。...

2021-07-02 14:57:28 1567

原创 Redis的多数据库

一个Redis实例提供了多个用来存储数据的字典,客户端可指定将数据存储到哪个字典中。字典和我们理解的数据库类似,所以可将每个字典都理解成一个独立的数据库。 每个数据库对外都是以0开始递增的数字命名,Redis默认支持16个数据库,可以通过配置参数database来修改这个数字。客户端与Redis建立连接后,会自动选择0号数据库,不过可以随时通过SELECT命令更换数据库,如果选择1号数据库:redis> SELECT 1OKredis [1] GET foo...

2021-07-01 18:11:11 354

原创 高性能MySQL

1、AUTO_INCREMENT自增字段以1000开头,方便关联表修单,另外添加unsigend,避免负整数浪费

2021-06-29 17:08:21 102

转载 浅谈聚簇索引和非聚簇索引的区别

聚簇索引:将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据非聚簇索引:将数据与索引分开存储,索引结构的叶子节点指向了数据对应的位置在innodb中,在聚簇索引之上创建的索引称之为辅助索引,非聚簇索引都是辅助索引,像复合索引、前缀索引、唯一索引。辅助索引叶子节点存储的不再是行的物理位置,而是主键值,辅助索引访问数据总是需要二次查找。InnoDB使用的是聚簇索引,将主键组织到一棵B+树中,而行数据就储存在叶子节点上,若使用"where id = 14"这样的条件查找主键,则按照B.

2021-06-23 10:33:10 679

原创 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 327

转载 分布式锁

现在面试都会聊聊分布式系统,通常面试官都会从服务框架(Spring Cloud、Dubbo),一路聊到分布式事务、分布式锁、ZooKeeper等知识。今天就来聊聊分布式锁这块的知识,先具体的来看看Redis分布式锁的实现原理。如果在公司里落地生产环境用分布式锁的时候,一定是会用开源类库的,比如Redis分布式锁,一般就是用Redisson框架就好了,非常的简便易用。感兴趣可以去Redisson官网看看如何在项目中引入Redisson的依赖,然后基于Redis实现分布式锁的加锁与释放锁。一段简单的使用

2021-04-16 18:16:27 17284 4

转载 关于Google+以及Facebook第三方登录实现的一点总结f

简述最近项目中有关于第三方登陆的需求,第三方Facebook以及Google +登录。正好这几天把这个需求做得差不多了,收个尾,作为一个这方面之前基本从未涉及的小白,总结下开发流程以及过程中遇到的一些问题。希望能对大家有所帮助。基本上,目前互联网上的涉及到第三方登录采用的都为OAuth认证方式,相关原理以及实现方法相关的可以网上搜索查看。不过涉及到Facebook以及Google +的登陆,最大的问题是这两个网站在墙外,想FQ找资料比较费劲,奈何国内这方面的资料也不是很齐全,翻到的官方的文档又全

2021-04-15 10:03:06 1787

转载 图解 | 原来这就是线程池

目录第一版 第二版 第三版 第四版 第五版 总结小宇:闪客,我最近看到线程池,被里边乱七八槽的参数给搞晕了,你能不能给我讲讲呀?闪客:没问题,这个我擅长,咱们从一个最简单的情况开始,假设有一段代码,你希望异步执行它,是不是要写出这样的代码? 小宇:嗯嗯,最简单的写法似乎就是这样呢。闪客:这种写法当然可以完成功能,可是你这样写,老王这样写,老张也这样写,程序中到处都是这样创建线程的方法,能不能写一个统一的工具类让大家调用呢?小宇:可以的,感觉有一个统一的工具类,..

2021-02-07 16:32:21 110

转载 公平锁与非公平锁

公平锁:多个线程按照申请锁的顺序去获得锁,线程会直接进入队列去排队,永远都是队列的第一位才能得到锁。优点:所有的线程都能得到资源,不会饿死在队列中。缺点:吞吐量会下降很多,队列里面除了第一个线程,其他的线程都会阻塞,cpu唤醒阻塞线程的开销会很大。非公平锁:多个线程去获取锁的时候,会直接去尝试获取,获取不到,再去进入等待队列,如果能获取到,就直接获取到锁。优点:可以减少CPU唤醒线程的开销,整体的吞吐效率会高点,CPU也不必取唤醒所有线程,会减少唤起线程的数量。缺点:你们可能也发现了..

2021-01-15 10:33:56 148

转载 深入浅出Presto:PB级OLAP引擎

现在大数据组件非常多,众说不一,在每个企业不同的使用场景里究竟应该使用哪个引擎呢?这是易观Spark实战营出品的开源Olap引擎测评报告,团队选取了Hive、Sparksql、Presto、Impala、Hawq、Clickhouse、Greenplum大数据查询引擎,在原生推荐配置情况下,在不同场景下做一次横向对比,供大家参考。每年易观都会发布一次这样的大数据开源测评报告,欢迎大家给出更好的测评意见以及想要测试的组件。易观Spark实战营是易观大数据技术团队组织的针对大数据初学者的实战训练营,欢.

2020-12-01 15:51:45 891

转载 干货 | 每天十亿级数据更新,秒出查询结果,ClickHouse在携程酒店的应用

一、背景1)携程酒店每天有上千表,累计十多亿数据更新,如何保证数据更新过程中生产应用高可用;2)每天有将近百万次数据查询请求,用户可以从粗粒度国家省份城市汇总不断下钻到酒店,房型粒度的数据,我们往往无法对海量的明细数据做进一步层次的预聚合,大量的关键业务数据都是好几亿数据关联权限,关联基础信息,根据用户场景获取不同维度的汇总数据;3)为了让用户无论在app端还是pc端查询数据提供秒出的效果,我们需要不断的探索,研究找到最合适的技术框架。对此,我们尝试过关系型数据库...

2020-11-27 10:43:02 439 1

原创 RabbitMQ Unacked 问题定位

问题描述:

2020-09-24 18:09:39 1720

原创 mybatis中 数据库sql语句中#和$的区别

# 预处理时,处理为占位符 ?,作为参数传入$ 单纯的字符串替换,可能会被sql注入

2020-08-20 14:57:38 208

转载 Elastic-Job开发指南

大多数情况下,定时任务我们一般使用quartz开源框架就能满足应用场景。但如果考虑到健壮性等其它一些因素,就需要自己下点工夫,比如:要避免单点故障,至少得部署2个节点吧,但是部署多个节点,又有其它问题,有些数据在某一个时刻只能处理一次,比如 i = i+1 这些无法保证幂等的操作,run多次跟run一次,完全是不同的效果。 对于上面的问题,我曾经自行设计过一个基于zk分布式锁的解决方案: 1、每类定时job,可以分配一个独立的标识(比如:xxx_job) 2、这类job的实例,部署在多个节点上时,每个节.

2020-08-20 10:49:30 1264

原创 mysql Btree和Hash的区别

Mysql数据库的索引有Btree和Hash。Btree一般采用Balance Tree结构存储,检索时需要从根节点到叶子节点;Hash是进行Hash运算后进行查找,查找效率非常高,但只能用于等值查询,不能用于范围查找,另外如果遇到大量Hash值相同时,效率不一定比Btree效率高。实际开发中,一般采用Btree就能满足需求。...

2020-06-09 15:08:44 416

原创 mysql utf8和utf8mb4字符集的区别

utf8mb4的编码,mb4是most bytes 4的意思,专门用来兼容四字节的unicode。utf8可以支持大部分中文汉字,比utf8mb4更省空间,但utf8mb4字符支持IOS和安卓手机上的一些Emoji 表情。

2020-06-09 11:45:25 215

原创 MySQL中varchar最大长度

4.0以下版本,UTF8汉字,一个汉字3个字节5.0以上版本,和字母数字一样,存储的个数一样,最大存储65535字节

2020-06-09 10:11:02 238

转载 Java 种15种锁的介绍:公平锁,可重入锁,独享锁,互斥锁等等…

Java 中15种锁的介绍 1,在读很多并发文章中,会提及各种各样的锁,如公平锁,乐观锁,下面是对各种锁的总结归纳:公平锁/非公平锁 可重入锁/不可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁 上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容是对每个锁的名词进行一定的解释。一,公平锁/非公平锁 公平锁:公平锁是指多个线程按照申请锁的顺序来获取...

2020-05-22 11:36:54 199

转载 5种Java 单例模式

单例模式有很多好处,它能够避免实例对象的重复创建,不仅可以减少每次创建对象的时间开销,还可以节约内存空间;能够避免由于操作多个实例导致的逻辑错误。如果一个对象有可能贯穿整个应用程序,而且起到了全局统一管理控制的作用。特点:  1、单例类只能有一个实例。  2、单例类必须自己自己创建自己的唯一实例。  3、单例类必须给所有其他对象提供这一实例。应用:线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象1、饿汉模式public class Singleton{ ...

2020-05-15 16:18:51 118

转载 CountDownLatch用法详解

概念CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有框架服务之后执行。CountDownLatch的用法CountDownLatch典型用法1:某一线程在开始运行前等待n个线程执行完毕。将CountDownLatch的计数器初始化为nnew CountDownLatch(n),每当一个任务线程执行完毕,就将计数器减1countdownlatch.countDown(),当计...

2020-05-15 10:47:23 803

转载 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 5855 1

转载 解释BigDecimal精度的坑

问题重现BigDecimal b1 = new BigDecimal(0.1);BigDecimal b2 = new BigDecimal(0.5);System.out.println("b1="+b1+"\nb2="+b2);---------------结果----------------------b1=0.1000000000000000055511151231257827...

2020-04-24 16:24:33 552

转载 细说Redis分布式锁

序-碎碎叨叨在家办公的第N周,也不知道笔者工位上的键盘和显示器有没有想我,不知道会不会落灰太严重,被保洁阿姨扔掉了。笔者今天带来一篇关于redis锁的文章连敲带画码出此文,有一些细节,对redis锁不清晰的盆友不妨瞧一瞧。如果是有经验的盆友,挑挑毛病,那笔者是更感谢了~闲话不多,马上发车。正文-开门见山谈起redis锁,下面三个,算是出现最多的高频词汇:...

2020-03-30 15:31:12 112

转载 如何解决高并发,秒杀问题

相信不少人会被这个问题困扰,分享大家一篇这样的文章,希望能够帮到你!一、秒杀业务为什么难做?1)im系统,例如qq或者微博,每个人都读自己的数据(好友列表、群列表、个人信息);2)微博系统,每个人读你关注的人的数据,一个人读多个人的数据;3)秒杀系统,库存只有一份,所有人会在集中的时间读和写这些数据,多个人读一个数据。例如:小米手机每周二的秒杀,可能手机只有1万部,但瞬时进入的...

2020-03-24 18:57:28 236

转载 理解Java中的引用传递和值传递

关于Java传参时是引用传递还是值传递,是一个讨论比较多的话题,有说Java中只有值传递,也有些地方说引用传递和值传递都存在,本篇记录思考过程,不保证正确性,感兴趣的同学一起讨论。1.基本类型和引用类型在内存中的保存Java中数据类型分为两大类,基本类型和对象类型。相应的,变量也有两种类型:基本类型和引用类型。基本类型的变量保存原始值,即它代表的值就是数值本身;而引用类型的...

2020-03-17 18:06:21 112

如何设计秒杀系统 秒杀系统架构优化思路

如何设计秒杀系统

2024-02-18

FileZilla.app.zip

Mac Ftp工具。FileZilla是一个免费开源的FTP软件,分为客户端版本和服务器版本,具备所有的FTP软件功能。可控性、有条理的界面和管理多站点的简化方式使得Filezilla客户端版成为一个方便高效的FTP客户端工具,而FileZilla Server则是一个小巧并且可靠的支持FTP&SFTP的FTP服务器软件。

2020-03-30

Sigar相关jar(包含类库)

Sigar相关jar(包含类库),支持windows和linux

2013-01-30

Sigar相关jar

Sigar相关jar 开源的工具,提供了跨平台的系统信息收集的API

2012-10-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除