03 2022 档案
摘要:(一)问题的起源 在电商等业务中,系统一般由多个独立的服务组成,如何解决分布式调用时候数据的一致性? 具体业务场景如下,比如一个业务操作,如果同时调用服务 A、B、C,需要满足要么同时成功;要么同时失败。A、B、C 可能是多个不同部门开发、部署在不同服务器上的远程服务。 在分布式系统来说,如果不想牺
阅读全文
摘要:写在最前面 在大型互联网应用当中如果你的应用引入了缓存机制,那么有一个大前提就是你的业务场景上必须得接受数据的新鲜度上有可能会有一定时间的延迟。 删除缓存失败是一个极小概率事件,且在不能保证所有操作100%成功的几率下,采用JOB补偿的机制是目前比较成熟的解决方案。 大并发量写请求的应用,不可能去实
阅读全文
摘要:前提 实际上开发一个Java-SDK的过程,实际上也就是开发一个基本java项目并打包成jar包的过程,然后可以被其它项目引入使用。 开发Java-SDK 本例介绍开发一个向某一数据接口发送请求并返回结果的SDK 1、新建一个Maven工程test-sdk-java 2、编辑pom文件,引入需要的j
阅读全文
摘要:一、问题出现 测试代码 @Test public void listTest(){ List<String> list =new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); removeList0(list); list.f
阅读全文
摘要:什么是CSRF攻击 CSRF(Cross-Site Request Forgery)的全称是“跨站请求伪造”,也被称为“One Click Attack”或者“Session Riding”,通常缩写为CSRF或者XSRF。 CSRF的中文名称尽管听起来像跨站脚本攻击(XSS),但它与XSS非常不同
阅读全文
摘要:限流策略通常是用来在高qps下进行流量限制的,常见的方式有计数器、令牌桶、漏桶。 在这次活动中我负责的模块是控制的对下游的流量,我们可以让那些请求选择丢弃、等待或者降级这些限流算法可以自行实现也可以利用现有的限流工具,比如说Guava的令牌桶,具体看场景需求吧,下面来看一下这几种限流策略,再说说我写
阅读全文
摘要:本文将从以下几个方面分析限流策略: 什么是限流 限流算法 限流算法的应用 什么是限流 在开发高并发系统时,有很多手段来防止系统过载:缓存、降级、限流。缓存的目的是提升系统访问速度和增大系统的吞吐量,降级和限流的目的如下: 降级 降级是当服务出问题或者影响到核心流程的性能时需要暂时屏蔽掉某些功能,等高
阅读全文
摘要:在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个
阅读全文
摘要:POSIX 同步IO、异步IO、阻塞IO、非阻塞IO,这几个词常见于各种各样的与网络相关的文章之中,往往不同上下文中它们的意思是不一样的,以致于我在很长一段时间对此感到困惑,所以想写一篇文章整理一下。 POSIX(可移植操作系统接口)把同步IO操作定义为导致进程阻塞直到IO完成的操作,反之则是异步I
阅读全文
摘要:面试题目如下: 说说 Redis 为什么快 Redis 有几种数据结构,底层分别是怎么存储的 Redis 挂了怎么办?Redis 有几种持久化方式 多线程情况下,如何保证线程安全? 用过 volatile 吗?底层原理是? MySQL 的索引结构,聚簇索引和非聚簇索引的区别 MySQL 有几种高可用
阅读全文
摘要:几种 I/O 模型 为什么 Redis 中要使用 I/O 多路复用这种技术呢? 首先,Redis 是跑在单线程中的,所有的操作都是按照顺序线性执行的,但是由于读写操作等待用户输入或输出都是阻塞的,所以 I/O 操作在一般情况下往往不能直接返回, 这会导致某一文件的 I/O 阻塞导致整个进程无法对其它
阅读全文
摘要:我相信大家都用过线程池,但是线程池数量设置为多少比较合理呢? 线程数的设置的最主要的目的是为了充分并合理地使用 CPU 和内存等资源,从而最大限度地提高程序的性能,因此让我们一起去探索吧! 首先要考虑到 CPU 核心数,那么在 Java 中如何获取核心线程数? 可以使用 Runtime.getRun
阅读全文
摘要:原子性:undo log 事务是数据库的逻辑工作单位,而且是必须是原子工作单位,对于其数据修改,要么全部执行,要么全部失败回滚。 类似转账:A-100,B+100 这两个操作属于同一个事务, 要么全部执行,要么全部失败回滚。 undo log记录了回滚操作的日志,如果要撤销,按照undo log的回
阅读全文
摘要:jdk提供的线程池,当核心线程数已满,但是最大线程池数未满,来一个任务时,会先将任务加入阻塞队列。队列满之后才会创建线程来处理任务,这是比较适合cpu密集型任务的,但是像tomcat这种服务器程序就不太适合这种执行流程了。tomcat需要用户请求到达时马上就创建线程来处理,而不是加入阻塞队列。 先看
阅读全文
摘要:面试题 ES 写入数据的工作原理是什么啊?ES 查询数据的工作原理是什么啊?底层的 Lucene 介绍一下呗?倒排索引了解吗? 面试官心理分析 问这个,其实面试官就是要看看你了解不了解 es 的一些基本原理,因为用 es 无非就是写入数据,搜索数据。你要是不明白你发起一个写入和搜索请求的时候,es
阅读全文
摘要:参考网址: https://blog.csdn.net/zzu_seu/article/details/106698150
阅读全文
摘要:背景 1.ES模糊查询wildcard查询极耗机器CPU资源,查询耗时高,当并发量高时影响ES其它进程。2.用户实际的模糊查询需求大多是左右模糊匹配。 可行性分析 match_phrase能够实现词组查询。 比如brown fox会返回匹配…brown fox…的结果,此结果与wildcard查询传
阅读全文
摘要:查看tomcat进程pid ps -ef|grep tomcat 统计该tomcat进程内的线程个数 ps -Lf 29295|wc -l 检查本机各端口的连接情况(tcp,udp等) netstat -anlp | grep 8003 取文件最后一列求平均值 awk '{a+=$NF;b++}EN
阅读全文
摘要:笔记记录 B站狂神说Java的ElasticSearch课程:https://www.bilibili.com/video/BV17a4y1x7zq 在学习ElasticSearch之前,先简单了解一下Lucene: Doug Cutting开发 是apache软件基金会4 jakarta项目组的一
阅读全文
摘要:六、容器数据卷 1.什么是容器卷? 2.使用数据卷 3.实战:安装MySQL 4.具名和匿名挂载 5.初识Dockerfile 6.数据卷容器 七、DockerFile 1.DockerFile介绍 2.DockerFile构建过程 3.实战测试 4.实战:Tomcat镜像 5.发布自己的镜像 6.
阅读全文
摘要:三、Docker的常用命令 1.帮助命令 docker version #显示docker的版本信息。 docker info #显示docker的系统信息,包括镜像和容器的数量 docker 命令 --help #帮助命令 #帮助文档的地址:https://docs.docker.com/engi
阅读全文
摘要:狂神说B站视频:https://www.bilibili.com/video/BV1og4y1q7M4?p=1 Docker容器学习笔记二:https://blog.csdn.net/qq_41822345/article/details/107123141 教程docker:https://www
阅读全文