摘抄笔记
技术砖家--Felix
I'm felix li
展开
-
分布式理论之CAP
引言CAP 理论,相信很多人都听过,它是指:一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。为什么要理解 CAP 理论?我能说出很多理由来。如果是在职场上,也许最合适的理由是,当领导给出的任务不靠谱时,我们可以依据 CAP 去否决它。比如,有这么一个任务,给你定了三大目标:既要提升系统的可用性又要保证数据的实时可见还有提升系统的容错能力看到“既要、又要、还要”,是不是想到了阿转载 2023-02-24 15:05:53 · 254 阅读 · 0 评论 -
SaaS多租户数据隔离的三种解决方案
多租户问题,简单来说,是一种架构设计方式,就是在一台或者一组服务器上运行的saas系统,可以为多个租户(客户)提供服务,目的是为了让多个租户在互联网环境下使用同一套程序,且保证租户间的数据隔离。由于租户数据是集中存储的,所以要实现数据的安全性,就是看能否实现对租户数据的隔离,防止租户数据不经意或被他人恶意地获取和篡改。SaaS使得软件以互联网为载体的服务形式被客户使用,所以需要全面考虑到服务合约的签订、服务使用的计量、在线服务质量的保证、服务费用的收取等问题。zk分布式锁和redis分布式锁如何选择?...原创 2022-07-28 22:58:42 · 8390 阅读 · 3 评论 -
聊一聊什么是SaaS,以及遇到的问题......
SaaS是SoftwareasaService的缩写,意为软件即服务。SaaS是一种软件部署模式,第三方供应商在云基础设施上构建应用程序,并以订阅的形式,通过互联网向客户提供这些应用程序,不要求客户预先建设底层基础设施。这意味着软件可以在任何有互联网连接和网络浏览器的设备上访问,而不像传统软件那样只能在本地机器上安装。......原创 2022-07-27 15:31:33 · 1041 阅读 · 0 评论 -
沟通中经常用到的几个库存术语
周转库存周转库存是商业企业为了完成商品流转计划,保证市场正常供应,根据商品销售任务、商品流通环节和速度应保持一定数量的周转需要的商品库存。商业企业的周转库存,是组织商品流通必不可少的物质基础。周转库存量的大小关系到流动资金占用额的多少,按照一定规模的商品流通,在有利于扩大销售和加强管理的前提下,减少中间环节,简化业务手续,健全经济责任制,加速商品流转,把周转库存量压缩到最低限度,从而节约地、有效地使用流动资金。对于合理摆布库存结构,提高企业经济效益,具有重要的促进作用。安全库存安全库存(又称保险库存原创 2022-07-26 11:06:01 · 1246 阅读 · 0 评论 -
完整的扣减库存方案
查询库存判断是否超出库存开始扣减然后 A 线程更新最终库存数 lastInventory = inventory - 1 = 9,B 线程更新库存数 lastInventory = inventory - 1 = 9。而实际最终的库存应是 8 才对,这样就出现库存超卖的情况,而发不出货。恶意买家下单恶意买家指短时间内大量下单,将库存用完的买家。如果扣减库存后,用户不下单,占用库存名额,但是也要避免某些用户真实需要大量订单。解决超卖现象update的锁可以参考:mysql update锁分析 这篇文章了解一原创 2022-07-13 20:55:44 · 2581 阅读 · 0 评论 -
真正的缓存之王Caffine Cache
真正的缓存之王转载 2022-06-20 11:54:34 · 258 阅读 · 0 评论 -
并行流parallel,CompletableFuture与Executors线程池的使用与区别
List并行操作在项目开发可以极大提高代码效率与性能,java8对其进行了很好的封装,简单使用研究一下:1. 先自己创建一个list:// list在实际使用中要注意线程安全,Collections.synchronizedList写操作性能高,CopyOnWriteArrayList读操作性能较好List list = Arrays.asList(new String[10000]);2. parallel并行流使用:list.stream().parallel().forEach(a ->转载 2021-12-18 16:02:34 · 495 阅读 · 0 评论 -
Mysql 8查看并修改事务隔离级别
Mysql 8查看并修改事务隔离级别转载 2021-12-02 19:25:27 · 779 阅读 · 0 评论 -
Nacos负载均衡规则NacosRule源码分析
nacos负载均衡NacosRule是AlibabaNacos自己实现的一个负载均衡策略,可以在nacos平台中根据自定义权重进行访问。源码 NacosRuleNacosRule 继承 AbstractLoadBalancerRule,其他负载均衡规则如RoundRobinRule,也是继承此抽象类。重点是choose方法,可以通过debug进行查看。public class NacosRule extends AbstractLoadBalancerRule { priva原创 2021-12-01 20:05:27 · 2715 阅读 · 0 评论 -
InnoDB 意向锁
锁意向锁案例考虑这个例子:事务A锁住了表中的一行,让这一行只能读,不能写。之后,事务B申请整个表的写锁。如果事务B申请成功,那么理论上它就能修改表中的任意一行,这与A持有的行锁是冲突的。数据库需要避免这种冲突,就是说要让B的申请被阻塞,直到A释放了行锁。数据库要怎么判断这个冲突呢?step1:判断表是否已被其他事务用表锁锁表step2:判断表中的每一行是否已被行锁锁住。注意step2,这样的判断方法效率实在不高,因为需要遍历整个表。于是就有了意向锁。在意向锁存在的情况下,事务A原创 2021-11-30 20:12:39 · 112 阅读 · 1 评论 -
B+树(聚集,辅助,覆盖索引)
索引一个常常被DBA忽视的问题是:B+树索引并不能找到一个给定键值的具体行B+树索引能找到的只是被査找数据行所在的页。然后数据库通过把页读入到内存,再在内存中进行查找,最后得到要查找的数据。...原创 2021-11-30 14:52:00 · 520 阅读 · 1 评论 -
秒杀系统设计总结
秒杀总结转载 2021-11-11 15:36:45 · 80 阅读 · 0 评论 -
is a和has a的理解和对比
is-a has-ais-a( 是 “a” 小明是人类)表示的是属于得关系。比如兔子属于一种动物(继承关系)。has-a( 有 “a” 汽车有轮胎) 表示组合,包含关系。比如兔子包含有腿,头等组件;就不能说兔子腿是属于一种兔子(不能说是继承关系)"is a"关系和"has a"关系假设有两个类:Computer和Employee。明显地,这两个类之间不存在"is a"的关系,即Employee不是计算机,它们之间没有继承关系的必要。因此不可能产生代码重用性。但这两个类之间是"has转载 2021-09-15 15:12:43 · 1067 阅读 · 0 评论 -
redis缓存三大问题及解决方案
缓存穿透缓存穿透指的是业务系统访问不存在的数据,导致大量请求打到数据库,造成的数据库压力,甚至奔溃,此称为缓存穿透。解决方案:(一)缓存空数据如果从数据库中没查到值,可以在缓存中记录一个空值,来避免“缓存穿透”。并且要给这个空值设置一个较短的过期时间。(如果时间过长,会导致数据库更新后的数据不能及时更新到redis)缓存空对象会有两个问题:第一,空值做了缓存,意味着缓存层中存了更多的键,需要更多的内存空间 ( 如果是攻击,问题更严重 ),比较有效的方法是针对这类数据设置一个较短的过期时原创 2021-08-05 16:48:30 · 259 阅读 · 0 评论 -
解决克隆的虚拟机centos7/8 找不到ip的问题
执行dhclient,即可。我这边亲测确实可以1,先修改ip,和uuid解决克隆的虚拟机centos7/8 找不到ip的问题如果不行试试先执行下面操作:修改ens33也可以试试,我这边改了ens33后执行dhclient命令的原创 2021-07-28 11:05:46 · 328 阅读 · 0 评论 -
VMware Workstation Pro 16安装CentOS及Linux系统(图文并茂)
使用VMware Workstation Pro 16安装CentOS及Linux系统(Nat网络模式)VMware Workstation 虚拟机使用无线wifi上网配置VMware安装Centos7超详细过程(图文)(桥接模式)原创 2021-07-27 10:25:01 · 867 阅读 · 0 评论 -
如何设计秒杀系统?
如何设计秒杀系统?转载 2021-06-24 15:35:19 · 73 阅读 · 0 评论 -
cookie和session的详解与区别
cookie和session的详解与区别转载 2021-06-23 19:44:39 · 76 阅读 · 0 评论 -
git安装配置及全系列使用教程
git的安装和使⽤第⼀步 下载并安装git第⼆步 SSH配置第三步 配置公钥第四步 拉取代码第⼀步 下载并安装git官⽅地址(下载速度有点慢)https://git-scm.com/downloads或者https://pc.qq.com/detail/13/detail_22693.html (下载速度较快)配置GIT的⽤户名和邮箱git config --global user.name “这⾥换上你的⽤户名”git config --global user.email “原创 2021-06-10 11:24:03 · 635 阅读 · 0 评论 -
ConcurrentHashMap1.8 - 扩容详解
ConcurrentHashMap1.8 - 扩容详解转载 2021-06-04 15:22:44 · 228 阅读 · 0 评论 -
hash冲突原理及解决方法?
hash冲突原理及解决方法?hash冲突原理及解决方法转载 2021-06-01 09:12:59 · 119 阅读 · 0 评论 -
微信红包的架构设计?
@来源于QCon某高可用架构群整理,整理朱玉华。背景:有某个朋友在朋友圈咨询微信红包的架构,于是乎有了下面的文字(有误请提出,谢谢)概况:2014年微信红包使用数据库硬抗整个流量,2015年使用cache抗流量。微信的金额什么时候算?答:微信金额是拆的时候实时算出来,不是预先分配的,采用的是纯内存计算,不需要预算空间存储。。采取实时计算金额的考虑:预算需要占存储,实时效率很高,预算才效率低。实时性:为什么明明抢到红包,点开后发现没有?答:2014年的红包一点开就知道金额,分两次操作,先抢到金额转载 2021-05-24 14:42:13 · 130 阅读 · 0 评论 -
新浪微博在数据存储(数据库和缓存)上做了什么?
本文是来自极客时间作家微博技术专家所写。微博存储那些事儿Mysql为了减少对MySQL数据库的访问压力,在前面部署了Memcached缓存,挡住了99%的访问压力,只有1%的请求会访问数据库。然而对于微博业务来说,这1%的请求也有几万QPS,对于单机只能扛几千QPS的MySQL数据库来说还是太大了。为此我们又对数据库端口进行了拆分,你可以看下面的示意图,每个用户的UID是唯一的,不同UID的用户按照一定的Hash规则访问不同的端口,这样的话单个数据库端口的访问量就会变成原来的1/8。除此之外,考虑到微博原创 2021-05-24 14:05:48 · 1476 阅读 · 0 评论 -
《深入理解HTTPS工作原理》
前言近几年,互联网发生着翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,在逐渐的被HTTPS协议所取代,在浏览器、搜索引擎、CA机构、大型互联网企业的共同促进下,互联网迎来了“HTTPS加密时代”,HTTPS将在未来的几年内全面取代HTTP成为传输协议的主流。一、什么是HTTPSHTTPS是在HTTP上建立SSL加密层,并对传输数据进行加密,是HTTP协议的安全版。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。HTTPS主要作用是:(1)对数据进行加密,并建立一个信息安全通道,来转载 2021-05-21 09:33:54 · 178 阅读 · 0 评论 -
scheduleAtFixedRate 与 scheduleWithFixedDelay 的区别
总结:scheduleAtFixedRate ,是以上一个任务开始的时间计时,period时间过去后,检测上一个任务是否执行完毕,如果上一个任务执行完毕,则当前任务立即执行,如果上一个任务没有执行完毕,则需要等上一个任务执行完毕后立即执行。scheduleWithFixedDelay,是以上一个任务结束时开始计时,period时间过去后,立即执行。重点:两个方法以不同的时间点作为参考。例子:package com.yuankai.t1.thread;import java.util.concu转载 2021-05-18 15:27:29 · 394 阅读 · 1 评论 -
Mybatis的缓存详解
MyBatis的一级、二级、分布式缓存的应用以及源码分析原创 2021-04-25 09:56:57 · 65 阅读 · 0 评论 -
推荐10个堪称神器的学习网站
推荐10个堪称神器的学习网站原创 2021-04-23 17:24:11 · 104 阅读 · 1 评论 -
VMware Ubuntu安装过程(超级详细有用亲测)
VMware Ubuntu安装详细过程原创 2021-04-23 17:08:15 · 163 阅读 · 1 评论 -
Elasticsearch的bool query和and or查询(should,must,must not)
Compound queries 之 Bool queryfilter和must的区别(相关性评分)and or查询的匹配问题原创 2021-04-22 10:01:27 · 1509 阅读 · 1 评论 -
springboot项目制作漂亮的banner
如何添加banner?在resources文件夹下添加文件banner.txt,必须.txt文件。然后复制内容进去,启动即可。生成你想要的内容?在这三个网站中输入内容自动生成,有几百种类型,还有图片http://patorjk.com/software/taaghttp://www.network-science.de/ascii/根据图片生成:http://www.degraeve.com/img2txt.php...原创 2021-04-14 17:43:09 · 651 阅读 · 1 评论 -
Elasticsearch查询Range query(范围和日期查询)
Term-level queries 之 Range query原创 2021-04-14 16:58:09 · 2886 阅读 · 2 评论 -
Elasticsearch中的多字段搜索(Full text queries query_string系列)
Full text queries(3) query_string系列原创 2021-04-14 16:38:41 · 380 阅读 · 1 评论 -
mysql按天聚合
SELECT count(*),date_format(create_time, '%Y-%m-%d') as create_date FROM member GROUP BY date_format(create_time, '%Y-%m-%d') order by create_time DESC ;原创 2021-04-14 11:21:26 · 732 阅读 · 1 评论 -
监控体系模型分析之四层模型
监控系统的核心模型OSV模型是监控系统的骨髓,是开发监控系统最基本的核心数据结构,可谓万变不离其中。今天我们来谈谈监控系统的骨骼部分,监控体系的四层监控模型。监控是运营的核心和基础,手段是将所有与运营相关的关键监控对象都监控起来,例如我们要监控设备有没有宕机、服务器负载有没有跑高、网络有没有中断、服务有没有崩溃、服务质量有没有达到用户期望、SLA有没有达到等等不一而足。不同行业所要监控的监控对象集不同,为了满足特定行业的运营需要我们必须对监控对象集进行定制。在分析OSV模型时,我们发现监控对象绝非是离散转载 2020-10-28 10:31:08 · 1522 阅读 · 0 评论 -
MySQL如何使用索引
MySQL如何使用索引?索引用于快速找出在某个列中有一特定值的行。对相关列使用索引是提高 SELECT 操作 性能的最佳途径。 查询要使用索引最主要的条件是查询条件中需要使用索引关键字,如果是多列索引,那 么只有查询条件使用了多列关键字最左边的前缀时,才可以使用索引,否则将不能使用索引。1.使用索引在 MySQL 中,下列几种情况下有可能使用到索引。 (1)对于创建的多列索引,只要查询的条件中用到了最左边的列,索引一般就会被使用, 举例说明如下。 首先按company_id,moneys的顺序创建一原创 2020-08-24 17:19:17 · 1214 阅读 · 0 评论 -
通过 EXPLAIN 分析低效 SQL的执行计划
1,先看例子每个列的简单解释如下: select_type:表示 SELECT 的类型,常见的取值有 SIMPLE(简单表,即不使用表连接 或者子查询)、PRIMARY(主查询,即外层的查询)、UNION(UNION 中的第二个或 者后面的查询语句)、SUBQUERY(子查询中的第一个SELECT)等。 table:输出结果集的表。 type:表示表的连接类型,性能由好到差的连接类型为 system(表中仅有一行,即 常量表)、const(单表中最多有一个匹配行,例如 primary key原创 2020-08-24 16:29:30 · 254 阅读 · 0 评论 -
Mysql面试题大全
1、SQL中聚合函数有哪些?聚合函数是对一组值进行计算并返回单一的值的函数,它经常与select语句中的group by子句一同使用。● avg():返回的是指定组中的平均值,空值被忽略。● count():返回的是指定组中的项目个数。● max():返回指定数据中的最大值。● min():返回指定数据中的最小值。● sum():返回指定数据的和,只能用于数字列,空值忽略。2、SQL之连接查询(左连接和右连接的区别)?● 外连接:● 左连接(左外连接):以左表作为基准进行查询,左表数据会全原创 2020-08-20 15:42:40 · 1144 阅读 · 0 评论 -
Java中集合类问题
1、HashMap排序题已知一个 HashMap<Integer,User>集合, User 有 name(String)和 age(int)属性。请写一个方法实现对HashMap 的排序功能,该方法接收 HashMap<Integer,User>为形参,返回类型为 HashMap<Integer,User>,要求对 HashMap 中的 User 的 age 倒序进行排序。排序时 key=value 键值对不得拆散。注意:要做出这道题必须对集合的体系结构非常的熟悉。原创 2020-08-19 14:10:46 · 371 阅读 · 0 评论 -
Java中IO的一些问题
1、Java 中有几种类型的流?按照流的方向:输入流(inputStream)和输出流(outputStream)按照实现功能分:节点流(可以从或向一个特定的地方(节点)读写数据。如 FileReader)和处理流(是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如 BufferedReader。处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。)按照处理数据的单位: 字节流和字符流。字节流继承于 InputStream 和 Outpu原创 2020-08-19 13:56:47 · 207 阅读 · 0 评论 -
Java基本数据类型问题
1、Java 的基本数据类型都有哪些各占几个字节?按照口诀记忆:● 数据类型:byte short int long float double boolean char● 占用字节数:12484812(byte对应1,short对应2,以此类推)2、String 是基本数据类型吗?通过JDK源代码可以看到,Stirng是class,是引用类型,底层用 char 数组实现的。3、short s1 = 1; s1 = s1 + 1; 有错吗?short s1 = 1; s1 += 1 有错吗?前者原创 2020-08-19 11:04:39 · 310 阅读 · 0 评论