运行过程类
文章平均质量分 65
小小梦里花007
这个作者很懒,什么都没留下…
展开
-
arrayList 和 LinkedList 区别
public static void main(String[] args) { long end = 0; long start = 0; int MAX = 100000; // ArrayList新增 List<Integer> arrayList = new ArrayList(); start = System.nanoTime(); for (int x = 0; ...原创 2021-10-11 17:29:05 · 188 阅读 · 0 评论 -
现在有T1、T2、T3三个线程,怎样保证T2在T1执行完后执行,T3在T2执行完后执行
目录一、 join() 方法二、在 T2 线程中 T1.join,在 T3线程中 T2.join,类似循环嵌套;三、用线程池,线程池大小就1个----用newSingleThreadExecutor线程池四、信号量五、lock配合condition情况描述:T1、T2、T3三个线程若无控制,执行顺序是乱的;一、 join() 方法Thread类中的join方法的主要作用就是同步,它可以使得线程之间的并行变串行。当我们调用某个线程的这个方法时,这个方法会挂起调用线程,直..转载 2021-09-14 11:11:10 · 1373 阅读 · 0 评论 -
redis主从复制
主从复制过程大体可以分为3个阶段:【连接建立】阶段(即准备阶段)、【数据同步】阶段、【命令传播】阶段。在从节点执行 slaveof 命令后,复制过程便开始运作,下面图示大概可以看到,从图中可以看出复制过程大致分为6个过程...转载 2021-09-13 18:39:21 · 66 阅读 · 0 评论 -
Mysql中事务ACID实现原理
1、如何保证【原子性】?A-原子性(Atomicity):事务中的操作要么都不做,要么就全做。是利用Innodb的 :undo logundo log名为回滚日志,是实现原子性的关键,当事务回滚时能够撤销所有已经成功执行的sql语句,他需要记录你要回滚的相应日志信息。(1)当你delete一条数据的时候,就需要记录这条数据的信息,回滚的时候,insert这条旧数据 (2)当你update一条数据的时候,就需要记录之前的旧值,回滚的时候,根据旧值执行update操作 (3)当年i转载 2021-09-13 16:08:47 · 121 阅读 · 0 评论 -
ThreadLocal
作用ThreadLocal是一个线程本地变量,作用主要是做数据隔离。ThreadLocal中填充的数据只属于当前线程,变量的数据对别的线程而言是相对隔离的,每个线程维护自己的变量副本,多个线程互相不可见,因此多线程操作该变量不必加锁,适合不同线程使用不同变量值的场景;应用场景----spring 事务一个数据库对应n个线程,一个线程对应一个事务;Spring框架在【事务】开始时会给【当前线程】绑定一个JDBC Connection,整个事务过程都是使用该线程绑定的connection来执转载 2021-09-09 16:57:09 · 184 阅读 · 0 评论 -
【数据库】主键设计原则
一、反范式主键的设计原则主键应当是对用户没有意义的。业务上的‘主键’可以通过唯一键(Unique Key)或唯一索引(Unique Index)和其它约束条件实现 主键应该是单列的,以便提高连接和筛选操作的效率 不要更新主键。实际上,因为主键除了惟一地标识一行之外再没有其他的用途了,所以也就没有理由去对它更新。另外,主键的值通常不重用,意味着记录被删除后,该主键值不再使用 主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等 主键应当由计算机自动生成。1.1、确保主键...转载 2021-09-08 17:16:00 · 2473 阅读 · 0 评论 -
java 反射原理
反射存在的意义:Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。本质是JVM得到class对象之后,再通过class对象进行反编译,从而获取对象的各种信息。Java属于先编译再运行的语言,程序中对象的类型在编译期就确定下来了,而当程序在运行时可能需要动态加载某些类,这些类因为之前用不到,所以没有被加载到JVM。通过反射,可以在运行时动态地创建对象并调用其属性,不需要提前在编译期知道运行的对象是谁;反射的原理下图是类的正常加载过程、反射原转载 2021-09-07 15:27:47 · 229 阅读 · 0 评论 -
JVM调优
1、JVM调优目标使用较小的内存来获得较高的吞吐量或者较低的延迟。 内存占用:程序正常运行需要的内存大小。 延迟:由于垃圾回收而引起的程序停顿时间。 吞吐量:用户程序运行时间占用户程序 和 垃圾收集占用总时间的比值。 吞吐量 = CPU在用户应用程序运行的时间 / (CPU在用户应用程序运行的时间 + CPU垃圾回收的时间)程序在上线前的测试或运行中有时会出现一些大大小小的JVM问题,比如 cpu load过高、请求延迟、tps(每秒钟事务数量)降...转载 2021-09-07 14:29:21 · 689 阅读 · 0 评论 -
JVM调优工具
JPS用 jps(JVM process Status)可以查看虚拟机启动的所有进程、执行主类的全名、JVM启动参数,比如当执行了JPSTest类中的main方法后(main方法持续执行),执行 jps -l可看到下面的JPSTest类的pid为31354,加上-v参数还可以看到JVM启动参数。3265 32914 sun.tools.jps.Jps31353 org.jetbrains.jps.cmdline.Launcher31354 com.danny.test.code.jvm.JP转载 2021-10-09 18:18:10 · 295 阅读 · 0 评论 -
RabbitMQ----消息的顺序执行
顺序错乱的场景:一个queue被多个consumer消费;一个queue对应一个consumer,但是consumer里面进行了多线程消费;保证消息的消费顺序:就是多一些queue而已,确实是麻烦点;这样也会造成吞吐量下降,可以在消费者内部采用多线程的方式取消费。一个queue但是对应一个consumer,然后这个consumer内部用内存队列做排队,然后分发给底层不同的worker来处理...转载 2021-08-30 15:17:31 · 614 阅读 · 0 评论 -
秒杀----问题点及解决方案
客户视角要注意 商品列表和详情----静态页面+缓存+第三方云加速 做成静态页面,商品列表缓存:使用redis缓存,有分页的缓存个1-3页就OK了,一般用户也就点个几页就不点了;详情页缓存:1、使用nginx对页面进行缓存配置;2、直接利用浏览器端缓存;此外:可将静态资源放到第三方云服务中进行CDN加速,减轻秒杀时的带宽压力,比如阿里云、七牛云等等 重复点击 点击秒杀按钮后,记得将按钮禁用。 主要是为了防止重复点击提交; 恶意防刷----图形验证码 使用验证码恶意防转载 2021-08-24 18:12:19 · 411 阅读 · 0 评论 -
电商策略2----超卖、少卖
目录1、超卖----库存为负一、数据库:1.1、字段设置为:unsigned+无符号整数1.2、sql语句上进行判断,是否库存大于01.3、数据库乐观锁----version版本号二、redis:2.1、使用reids的 watch + multi +exec 指令实现2.2、使用reids的 watch + multi +exec + setnx(创建一个redis锁) 指令实现2.3、使用redis的push/pop(List)指令实现2、少卖----库存有剩余.原创 2021-08-24 17:43:02 · 1895 阅读 · 0 评论 -
电商策略1----预扣库存
目录订票系统逻辑顺序下单减库存支付减库存预扣库存订票系统逻辑顺序我们就要想明白一件事:通常订票系统要处理【生成订单】、【减扣库存】、【用户支付】这三个基本的阶段。这三个阶段的先后顺序该怎么分配才更加合理呢?下单减库存这种顺序是我们一般人首先会想到的解决方案,这种情况下也能保证订单不会超卖,因为创建订单之后就会减库存,这是一个原子操作。但是这样也会产生一些问题:在极限并发情况下,任何一个内存操作的细节都至关影响性能,尤其像创建订单这种逻辑,一般都需要存..转载 2021-08-23 18:50:09 · 1138 阅读 · 0 评论 -
高并发:最大程度抗量
指标 关键指标: 并发数SBC(Simultaneous Browser Connections),客户端向服务器发起请求,并建立了TCP连接。每秒钟【服务器】接收到的链接的总TCP数量 响应时间(Response Time):从发送http请求(并发数),到处理完所有的http请求(并发数)所用到的时间 每秒请求数QPS/RPS(Query Per Second/Request Per Second):Query=查询,也相当于请求。请求数指的是客户端在建立完连接后,向http服务发出GE原创 2021-08-23 18:15:42 · 3391 阅读 · 0 评论 -
单台服务器:最大并发,最大线程,并发选择
目录单台服务器:最大并发/TCP连接数端口角度:资源角度:内存 + CPU查看设置最大并发:单台服务器:最大线程CPU相关:内存相关:单台服务器:最大并发/TCP连接数参考:http://www.sohu.com/a/289028571_371153端口角度:有的朋友可能会说是65535,因为操作系统有65535个端口,那么这个答案准确吗?凭什么认为一个端口同一时刻只能接收一个请求? 逆向思考:若同一时刻只能接收一条请求,那你的项目端口肯定是固定...原创 2021-08-18 18:44:25 · 8456 阅读 · 2 评论 -
nacos的应用
一、nacos的用途----服务注册,配置中心1.1、服务注册发现----【server-bb 如何调用 my-server-aa 的接口】my-server-aa在a服务器上,server-bb在b服务器上,它俩都注册到nacos了;my-server-aa提供了【/aa/bb/xx/{id}】和【/aa/bb/cc】接口,server-bb如何调用这俩接口?通过feign调用,在server-bb服务上添加如下代码:1.2、配置中心----配置路由...原创 2021-08-10 17:05:32 · 270 阅读 · 0 评论 -
限流----滑动窗口,漏斗
滑动窗口----redis方式说明:滑动窗口实现:代码情况:漏桶----硬编码若漏斗容量为10,根据速率算出已经用了3个剩7个;若当前加入了9个,即[当前加入的容量9]比[剩余容量7]的大,就拒绝;若当前加入了3个,[当前加入的容量3]比[剩余容量7]的大,就接收;详见其他网友的代码:https://www.freesion.com/article/60951157008/...转载 2021-08-06 18:29:52 · 220 阅读 · 0 评论 -
设计模式----适配器模式
作用:用于包装不兼容接口的对象,把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法一起工作的两个类能够在一起工作。转载 2021-06-07 11:10:43 · 80 阅读 · 0 评论 -
mysql索引不一定失效
目录一、索引失效的总结:1,运算符(比较运算符,逻辑运算符)2,函数3,联合索引二、数据库索引type解读三、索引不一定失效1. or 不一定索引失效2. like 不一定索引失效3. in,not in 不一定索引失效4. 【复合索引】 不一定索引失效5.【函数】 不一定索引失效一、索引失效的总结:1,运算符(比较运算符,逻辑运算符)mysql运算符 可能引起索引失效 说明 算术运算符 加减乘除 ...原创 2021-01-26 14:45:03 · 815 阅读 · 0 评论 -
索引失效的7中情况
导致索引失效的情形:1. 运算符where 子句中使用!=或<>操作符转载 2021-01-26 10:33:50 · 210 阅读 · 0 评论 -
数据库分库分表
目录一、什么时候分库分表二、分库分表--水平分,垂直分1、水平分库2、水平分表3、垂直分库4、垂直分表三、分库分表--存在的问题四、支持分库分表中间件一、什么时候分库分表单表数据过大:当单表的数据量达到1000W或100G以后; 对一个很大的表进行DDL修改时,MySQL会锁住全表,这个时间会很长影响业务; 大表会经常访问与更新,就更有可能出现锁等待;二、分库分表--水平分,垂直分1、水平分库例如:一个数据库有5000万的数据,单库带动不起来,分为.转载 2020-12-28 15:17:30 · 304 阅读 · 0 评论 -
分布式系统CAP----高可用(故障依然可用)
目录一、为什么要考虑分布式系统的【可用性】二、高可用2.1 高可用的服务(优先核心业务)2.2 高可用的服务(优先核心还不行呢?要么限流,要么扩容或加负载)2.3 高可用的数据一、为什么要考虑分布式系统的【可用性】在分布式系统架构中有一个CAP理论:一致性(Consistency):即当一个Process修改了某个数据后,其他Process读取这是数据时,得到的是更新后的数据,而不是修改前的数据; 但并不是所有系统都可以做到这一点。例如,在一些并非严...转载 2020-11-27 18:56:36 · 1203 阅读 · 0 评论 -
分布式系统CAP----数据的【最终一致性】
一、为什么要考虑分布式系统的数据【一致性】在分布式系统架构中有一个CAP理论:一致性(Consistency) 可用性(Availability) 分区容错性(Partition tolerance)分布式系统只能满足上诉两个点,那么选哪两个呢?首先【分区容错性】你必须得选,不然你系统都不能保证数据的准确性,你系统还有个啥价值;【可用性】你也得选,总不能不让并发访问吧;所以一般保证AP;那么【一致性】怎么办,你总不能丢弃不考虑吧?但【一致性】若那么好达成,也不会告诉...原创 2020-11-25 18:02:39 · 1295 阅读 · 1 评论 -
java 限流(流量削峰)的几种方式和学习
一、为什么要限流,怎么限流由于互联网公司的流量巨大,系统上线会做一个流量峰值的评估,尤其是像各种秒杀促销活动,为了保证系统不被巨大的流量压垮,会在系统流量到达一定阈值时,拒绝掉一部分流量。限流会导致用户在短时间内(这个时间段是毫秒级的)系统不可用,一般我们衡量系统处理能力的指标是每秒的QPS或者TPS,假设系统每秒的流量阈值是1000,理论上一秒内有第1001个请求进来时,那么这个请求就会被限流。感觉限流得分情况:比如限定所有请求1s内最多不能访问1000次,那么若有一个用户端捣乱,他一个人1s转载 2020-11-25 10:44:35 · 5086 阅读 · 0 评论 -
简述分布式锁的3种实现方式
分布式锁作为分布式锁,我觉得至少得:1. 资源唯一且能异步多线程访问; 2. 能改变状态(加锁 / 开锁);【数据库】你可以设置字段唯一,可以创建 state 字段;【redis】 的key唯一,能设置value状态;【zookeeper】文件名唯一,状态通过创建文件,删除文件来表示状态;分布式锁存在的问题:1. 因为是分布式大系统,若分布式锁挂了影响甚大;2. 是锁就得考虑死锁;redis设置过期时间,数据库感觉可以考虑定时开锁,zookeeper貌似也可以设置定时任务开锁..原创 2020-11-24 10:47:02 · 793 阅读 · 0 评论 -
(转载整理)CAS----无锁技术
CAS技术背景关于同步,很多人都知道synchronized,Reentrantlock等加锁技术,这种方式也很好理解,是在线程访问的临界区资源上建立一个阻塞机制,需要线程等待;其它线程释放了锁,它才能运行。这种方式很显然是奏效的,但是它却带来一个很大的问题:程序的运行效率。线程的上下文切换是非常耗费资源的,而等待又会有一定的时间消耗,那么有没有一种方式既能控制程序的同步效果,又能避免这种锁带来的消耗呢?答案就是无锁技术。cas的英文翻译全称是compare and set ,也就是【比较替转载 2020-11-23 16:43:06 · 646 阅读 · 0 评论 -
(转载)数据结构与算法整理总结---红黑树
什么是 “平衡⼆叉查找树”?平衡⼆叉树的严格定义是这样的:⼆叉树中任意⼀个节点的左右⼦树的⾼度相差不能⼤于 1。从这个定义来看,完全⼆叉树、满⼆叉树其实都是平衡⼆叉树,但是⾮完全⼆叉树也有可能是平衡⼆叉树。平衡⼆叉查找树不仅满⾜上⾯平衡⼆叉树的定义,还满⾜⼆叉查找树的特点。最先被发明的平衡⼆叉查找树是 AVL 树,它严格符合我刚讲到的平衡⼆叉查找树的定义,即任何节点的左右⼦树⾼度相差不超过 1,是⼀种⾼度平衡的⼆叉查找树。但是很多平衡⼆叉查找树其实并没有严格符合上⾯的定义(树中任意⼀个节点的左右⼦转载 2020-11-17 19:04:46 · 375 阅读 · 0 评论 -
消息队列----使用场景,重试补偿,事务补偿,幂等性,消息堆积,有序性,ACK机制
一、消息队列应用场景 场景名称 场景描述 传统做法 消息队列做法 异步处理 用户注册后,需要发注册邮件和注册短信 1.串行的方式: 信息写入数据库50ms + 发送注册短信50ms + 发送注册邮件50ms =》150ms 2.并行方式: 信息写入数据库50ms +【发送注册邮件的同时,发送注册短信】50ms=》100ms ...原创 2020-11-16 15:39:35 · 1462 阅读 · 0 评论 -
规则引擎----drools
一、流程过程过程描述: pom.xml引入依赖----》【 构建规则模型--》编写DroolTest.drl规则文件--》把.drl编织入配置类--》生成kieSession 】----》执行规则----》查看执行结果二、drool配置类配置...原创 2020-11-16 14:13:36 · 110 阅读 · 0 评论 -
消息中间件----kafka入门
一,消息中间件技术选型消息中间件有:ActiveMQ,RabbitMQ,RocketMQ,Kafka,一般在 RabbitMQ 和 Kafka 间进行选择;ActiveMQ: 在别处看的,说没有经过大规模吞吐的测试,社区不活跃;RocketMQ: 社区有黄掉的风险,碰到问题容易找不到技术资料;RabbitMQ:代码开源,支持稳定,社区活跃度高,但它是用erlang语言编写的,对java工程师的阅读不怎么友好;Kafka:社区活跃度很高;在大数据领域的实时计算,日志采集等领域是业内标准;原创 2020-11-16 12:00:30 · 149 阅读 · 0 评论 -
工作流引擎----activiti入门(审批通过不通过)
一、测试目标我这主要为了入门activiti,因为以前项目用workflow做过简单的二分叉处理(若结果false怎么处理,若true怎么处理),但我用的时候已经创建好了没实际参与,故而此处想用activiti来感受下这种流程;二、目标流程和说明我的测试流程是:学生提交了一个请假申请单,然后老师审批不通过,打回给学生,学生修改内容后再次提交,老师审批通过或到教导主任那,主任已阅知悉,然后流程结束; 三、项目实现清单 名称 文件位置 ...原创 2020-11-12 11:45:17 · 4730 阅读 · 3 评论 -
springboot----bean无法注入怎么办?
今天springboot项目的一个类没法注入bean,为啥没法注入目前没搞明白,最后用applicationContext注入成功,此处记录一下:1. 写了一个工具类(此工具类里面写个main方法测试会报空指针,必须把springboot项目跑起来才能注入applicationContext);2. 工具类调用getBean方法;XXX xx=ApplicationContextUti...原创 2020-04-13 16:42:57 · 1166 阅读 · 0 评论 -
VUE执行流程
参考内容链接:https://www.cnblogs.com/hello-wuhan/p/6961948.html -----vue加载流程的说明https://blog.csdn.net/chuanxincui/article/details/88572727 -----vue加载文件作用的说明流程:1. 先加载index.html;他里面有...原创 2019-12-19 14:06:16 · 563 阅读 · 0 评论 -
设计模式------工厂模式(继承+多个if)
本人喜欢从字面意思入手理解概念,关于工厂模式我查询了资料实在弄不懂它应和了工厂的什么特性才这样叫,目前来看有这样几种说法:1、客户只负责使用,不关心工厂生产的细节。给工厂提供一个产品型号等信息,然后让工厂给你提供具体产品; 类似于给工厂类传递参数,然后工厂类返回给你具体的对象; 个人点评:java方法不都这样,你给一个方法提供一个参数,方法给你返回一个结果,你也转载 2017-01-06 15:29:55 · 361 阅读 · 0 评论 -
(转)设计模式------代理模式
使用代理类可以在实现类的基础上进行扩展,可以在方法中动态加入代码。这里要理解的是,实现类和代理类都是继承了同一个接口的(必须的)举个例子,如果你要通过一个实现类,将文本控件中输入的数字,做 加减乘除(也许还有很多运算) 法的运算,你发现这样会有一些问题存在,字符串如果不能转换成数字,就会报错。那么,你必须在方法的开头加入验证判断。但是,你又发现每个方法都要写转载 2017-01-10 13:49:48 · 287 阅读 · 0 评论 -
static相关--------方法变量:加载顺序
一说到static就会涉及到下面内容的加载顺序,下面的“方法+变量”有5类,再牵涉到“子类”、“父类”就有10类参与比较: 方法: static初始化块、main方法(带static)、{static一般方法、构造方法、一般成员方法}、一般初始化块 变量: static变量、 一般成员变量原创 2016-12-30 09:47:06 · 2004 阅读 · 0 评论 -
设计模式------单例模式
转自:http://blog.csdn.net/jiujie395/article/details/8536880单例模式分为三种:饿汉式单例,懒汉式单例,登记式单例单例模式的特点:1.单例只有一个实例2.单例的实例对象都是自己实例化出来的3.单例类必须给其他的对象提供这个唯一的实例饿汉式单例:[java] view plain copy转载 2017-01-06 13:44:14 · 249 阅读 · 0 评论 -
好奇: jvm划分的内存感觉挺小的,够程序用吗?
对java运行原理有了个粗鄙的了解后,就对jvm内存的大小产生了兴趣,现进行研究如下: 感觉jvm内存中存储的是.class文件,但印象中.class文件挺大的,毕竟是一整个大项目的工程嘛,而相对的感觉jvm内存的容量比较小,现在实地探查下: 我看了我手头的项目,所有的.class加起来有个150M左右(64.4M+61.0M),而我jvm设置的内存应该是10原创 2016-12-29 10:59:01 · 474 阅读 · 0 评论 -
设计模式------多例模式
转自:http://blog.csdn.net/jiujie395/article/details/8537892多例模式分为:有上限多例模式、无上限多例模式1、没上限的多例模式和直接 new 一个对象没什么差别,此处不做记录... ...2、有上限多例模式实际上是单例模式的推广,如果它的上限是1,那么就成了单例模式了;多例模式特点: 1. 多例类可以有转载 2017-01-06 10:48:57 · 291 阅读 · 0 评论 -
java: 垃圾回收
如何确实某对象是“垃圾”?答:如果一个对象没有任何引用与之关联,那么这对象就是要被回收的“垃圾”; 举例说明:ss=new AA();因为new AA()创建了一个AA类的实例对象,就得在内存中开辟空间存放这个实例对象; 后来ss被其他值覆盖,即ss=new BB();ss不再指向AA了,而指向BB了,而AA又没有被其他变量指向所以就没啥用了,像个幽灵一样飘荡在原创 2017-01-06 09:30:55 · 260 阅读 · 0 评论