自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(158)
  • 问答 (8)
  • 收藏
  • 关注

原创 网页资料地址

spring AOP:​​​​​​Spring通过xml文件配置AOP,before、after、around、AfterThrowing、AfterReturning、Declare-parents_qq_41767337的博客-CSDN博客_aop:around xml配置Spring中execution语法_愤怒的小兵-CSDN博客_execution语法Spring Aop实例之xml配置_崔成龙 . 勇往直前-CSDN博客_springaop配置xml...

2022-02-14 16:52:31 269

转载 原理--springboot 自动装配

目录一、起步依赖二、自动装配2.1、基于java代码的bean配置2.2、自动装配条件依赖2.3、bean参数获取2.4、bean发现ps: bean加载一、起步依赖二、自动装配2.1、基于java代码的bean配置@Configuration 和@Bean 用来代替xml中的配置文件,创建Bean并将bean的控制权交给spring管理; <bean id="dataSource" class="com.alibaba.druid.pool.

2021-11-12 18:53:47 401

转载 工作流引擎----功能

会签:指同一个审批节点设置多个人,如ABC三人,三人会同时收到审批,需全部同意之后,审批才可到下一审批节点;或签(也有叫“竞签”、““串签””):指同一个审批节点设置多个人,如ABC三人,三人会同时收到审批,只要其中任意一人审批即可到下一审批节点;加签顾名思义就是增加一道审批签名,这道审批往往是临时增加的,标准流程没有规定要走的。在现实工作流程中,加签功能使用率颇高;有时,审批人对内容不太确定,不太敢做主,就会找更高层的领导进行加签;这样就可以规避个人风险;出问题大家一起担。有时为了

2021-10-12 10:56:26 871

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

转载 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 242

转载 深克隆,浅克隆

一、浅克隆:二、深克隆:

2021-09-28 10:41:41 73

转载 hash冲突

什么是hash冲突?就是键(key)经过hash函数得到的结果作为地址去存放当前的键值对(key-value)(这个是hashmap的存值方式),但是却发现该地址已经有人先来了,一山不容二虎,就会产生冲突。这个冲突就是hash冲突了。一句话说就是:如果两个不同对象的hashCode相同,这种现象称为hash冲突。解决hash冲突的办法开发定址法(线性探测再散列,二次探测再散列,伪随机探测再散列) 再哈希法 链地址法 建立一个公共溢出区: java中HashM...

2021-09-24 10:58:57 179

转载 现在有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 1208

转载 redis主从复制

主从复制过程大体可以分为3个阶段:【连接建立】阶段(即准备阶段)、【数据同步】阶段、【命令传播】阶段。在从节点执行 slaveof 命令后,复制过程便开始运作,下面图示大概可以看到,从图中可以看出复制过程大致分为6个过程...

2021-09-13 18:39:21 59

转载 Mysql中事务ACID实现原理

1、如何保证【原子性】?A-原子性(Atomicity):事务中的操作要么都不做,要么就全做。是利用Innodb的 :undo logundo log名为回滚日志,是实现原子性的关键,当事务回滚时能够撤销所有已经成功执行的sql语句,他需要记录你要回滚的相应日志信息。(1)当你delete一条数据的时候,就需要记录这条数据的信息,回滚的时候,insert这条旧数据 (2)当你update一条数据的时候,就需要记录之前的旧值,回滚的时候,根据旧值执行update操作 (3)当年i

2021-09-13 16:08:47 83

转载 【主键索引】和【非主键索引】

索引简述索引的目的在于提高查询效率,类比字典;实际上索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录,索引列也是要占用空间;常见的MySQL主要有两种结构:Hash索引 和 B+ 树索引,我们使用的是InnoDB和MyISAM引擎,默认的都是B+树;为什么用 B+ 树做索引而不用哈希表做索引?1、哈希表是把索引字段映射成对应的哈希码然后再存放在对应的位置,这样的话,如果我们要进行模糊查找的话,显然哈希表这种结构是不支持的,只能遍历这个表。而B+树则可以通过最左前缀原则快.

2021-09-10 14:32:09 2259

转载 Synchronize 和 Lock (ReentrantLock)的区别

一、synchronized和lock的用法区别synchronized:在需要同步的对象中加入此控制,synchronized可以加在方法上,也可以加在特定代码块中,括号中表示需要锁的对象。lock:需要显示指定起始位置和终止位置。一般使用ReentrantLock类做为锁,多个线程中必须要使用一个ReentrantLock类做为对象才能保证锁的生效。且在加锁和解锁处需要通过lock()和unlock()显示指出。所以一般会在finally块中写unlock()以防死锁。用法区别比较简单...

2021-09-09 17:46:13 436

转载 ThreadLocal

作用ThreadLocal是一个线程本地变量,作用主要是做数据隔离。ThreadLocal中填充的数据只属于当前线程,变量的数据对别的线程而言是相对隔离的,每个线程维护自己的变量副本,多个线程互相不可见,因此多线程操作该变量不必加锁,适合不同线程使用不同变量值的场景;应用场景----spring 事务一个数据库对应n个线程,一个线程对应一个事务;Spring框架在【事务】开始时会给【当前线程】绑定一个JDBC Connection,整个事务过程都是使用该线程绑定的connection来执

2021-09-09 16:57:09 143

转载 【数据库】主键设计原则

一、反范式主键的设计原则主键应当是对用户没有意义的。业务上的‘主键’可以通过唯一键(Unique Key)或唯一索引(Unique Index)和其它约束条件实现 主键应该是单列的,以便提高连接和筛选操作的效率 不要更新主键。实际上,因为主键除了惟一地标识一行之外再没有其他的用途了,所以也就没有理由去对它更新。另外,主键的值通常不重用,意味着记录被删除后,该主键值不再使用 主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等 主键应当由计算机自动生成。1.1、确保主键...

2021-09-08 17:16:00 2251

原创 RabbitMQ----消息堆积

消息堆积的原因生产者生产的消息比较多,而消费者消费的比较慢,那么消费者为啥会慢?因为业务逻辑耗时太久。业务为啥会耗时太久呢?业务设置不合理:瞬时查询出10万数据放到MQ,而消费者只有1个,全量同步导致瞬时堆积; 异常: 事务顺序执行:abcd四个事务顺序执行,b事务执行中发生异常阻塞; 死锁:业务涉及多线程产生死锁; 慢查询重发次数超了:在redis或者数据库中记录重试次数,达到最大重试次数以后消息进入死信队列或者其他队列,再单独针对这些...

2021-09-08 16:57:54 460

转载 java 反射原理

反射存在的意义:Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。本质是JVM得到class对象之后,再通过class对象进行反编译,从而获取对象的各种信息。Java属于先编译再运行的语言,程序中对象的类型在编译期就确定下来了,而当程序在运行时可能需要动态加载某些类,这些类因为之前用不到,所以没有被加载到JVM。通过反射,可以在运行时动态地创建对象并调用其属性,不需要提前在编译期知道运行的对象是谁;反射的原理下图是类的正常加载过程、反射原

2021-09-07 15:27:47 186

转载 JVM调优

1、JVM调优目标使用较小的内存来获得较高的吞吐量或者较低的延迟。 内存占用:程序正常运行需要的内存大小。 延迟:由于垃圾回收而引起的程序停顿时间。 吞吐量:用户程序运行时间占用户程序 和 垃圾收集占用总时间的比值。 吞吐量 = CPU在用户应用程序运行的时间 / (CPU在用户应用程序运行的时间 + CPU垃圾回收的时间)程序在上线前的测试或运行中有时会出现一些大大小小的JVM问题,比如 cpu load过高、请求延迟、tps(每秒钟事务数量)降...

2021-09-07 14:29:21 463

转载 RabbitMQ----消息的顺序执行

顺序错乱的场景:一个queue被多个consumer消费;一个queue对应一个consumer,但是consumer里面进行了多线程消费;保证消息的消费顺序:就是多一些queue而已,确实是麻烦点;这样也会造成吞吐量下降,可以在消费者内部采用多线程的方式取消费。一个queue但是对应一个consumer,然后这个consumer内部用内存队列做排队,然后分发给底层不同的worker来处理...

2021-08-30 15:17:31 563

转载 秒杀----问题点及解决方案

客户视角要注意 商品列表和详情----静态页面+缓存+第三方云加速 做成静态页面,商品列表缓存:使用redis缓存,有分页的缓存个1-3页就OK了,一般用户也就点个几页就不点了;详情页缓存:1、使用nginx对页面进行缓存配置;2、直接利用浏览器端缓存;此外:可将静态资源放到第三方云服务中进行CDN加速,减轻秒杀时的带宽压力,比如阿里云、七牛云等等 重复点击 点击秒杀按钮后,记得将按钮禁用。 主要是为了防止重复点击提交; 恶意防刷----图形验证码 使用验证码恶意防

2021-08-24 18:12:19 264

原创 电商策略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 1610

转载 电商策略1----预扣库存

目录订票系统逻辑顺序下单减库存支付减库存预扣库存订票系统逻辑顺序我们就要想明白一件事:通常订票系统要处理【生成订单】、【减扣库存】、【用户支付】这三个基本的阶段。这三个阶段的先后顺序该怎么分配才更加合理呢?下单减库存这种顺序是我们一般人首先会想到的解决方案,这种情况下也能保证订单不会超卖,因为创建订单之后就会减库存,这是一个原子操作。但是这样也会产生一些问题:在极限并发情况下,任何一个内存操作的细节都至关影响性能,尤其像创建订单这种逻辑,一般都需要存..

2021-08-23 18:50:09 850

原创 高并发:最大程度抗量

指标 关键指标: 并发数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 3115

转载 LVS是什么

LVS是linux virtual server的简写linux虚拟服务器,是一个虚拟的服务器集群系统,可以在unix/linux平台下实现负载均衡集群功能。该项目在1998年5月由章文嵩博士组织成立。LVS是一种集群(Cluster)技术,现在LVS已经是 Linux标准内核的一部分,采用IP负载均衡技术和基于内容请求分发技术。集群就得考虑负载均衡;LVS的主要特点有以下几个方面:高并发连接:LVS基于内核网络层面工作,有超强的承载能力和并发处理能力。单台LVS负载均衡器,可支持上万并发

2021-08-23 17:53:59 2611

转载 nginx是什么

目录1、作为 Web 服务器:高并发静态服务器2、负载均衡服务器3.、虚拟主机4、反向代理正向代理反向代理5、邮件代理服务器在传统的Web项目中,并发量小(tomcat默认配置的最大请求数是150),用户使用的少。所以在低并发的情况下,用户可以直接访问tomcat服务器,然后tomcat服务器返回消息给用户;但当出现高并发时,为了解决并发,得用负载均衡,这时就得考虑nginx:1、作为 Web 服务器: 高并发 Nginx同Apache...

2021-08-23 16:17:51 445

原创 单台服务器:最大并发,最大线程,并发选择

目录单台服务器:最大并发/TCP连接数端口角度:资源角度:内存 + CPU查看设置最大并发:单台服务器:最大线程CPU相关:内存相关:单台服务器:最大并发/TCP连接数参考:http://www.sohu.com/a/289028571_371153端口角度:有的朋友可能会说是65535,因为操作系统有65535个端口,那么这个答案准确吗?凭什么认为一个端口同一时刻只能接收一个请求? 逆向思考:若同一时刻只能接收一条请求,那你的项目端口肯定是固定...

2021-08-18 18:44:25 7383 2

原创 数据库锁的分类

锁的种类:按照锁粒度划分表锁,页锁,行锁 (记录锁,间隙锁,临键锁)按照数据库管理角度划分共享锁,排他锁(独占锁),更新锁,意向锁,计划锁从程序员角度进行划分乐观锁,悲观锁用途共享(S)锁:多个事务可封锁一个共享页;任何事务都不能修改该页; 通常是该页被读取完毕,S锁立即被释放。 select * from tableName where … + lock in share more select * from tableName(hold...

2021-08-12 15:55:56 741

原创 分布式事务BASE

BASE特性BA: Basic Availability 基本业务可用性; S: Soft state 柔性状态; E: Eventual consistency 最终一致性;

2021-08-11 15:19:45 196

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

转载 分布式系统CAP

CAP定义Consistency 一致性即所有节点在同一时间的数据完全一致。即写操作之后的读操作,必须返回该值强一致性对于关系型数据库,要求更新过的数据能被后续的访问都能看到,这是强一致性。弱一致性如果能容忍后续的部分或者全部访问不到,则是弱一致性。最终一致性如果经过一段时间后要求能访问到更新后的数据,则是最终一致性。为什么会不一致?当用户修改不会马上在全网更新,必定会有一个延迟,这个延迟被称为 “不一致窗口”,它的长度取决于系统的负载、冗余的个数等因素。Avail

2021-08-09 17:24:46 85

转载 限流----滑动窗口,漏斗

滑动窗口----redis方式说明:滑动窗口实现:代码情况:漏桶----硬编码若漏斗容量为10,根据速率算出已经用了3个剩7个;若当前加入了9个,即[当前加入的容量9]比[剩余容量7]的大,就拒绝;若当前加入了3个,[当前加入的容量3]比[剩余容量7]的大,就接收;详见其他网友的代码:https://www.freesion.com/article/60951157008/...

2021-08-06 18:29:52 185

转载 (转)transient

原文链接:https://www.cnblogs.com/lanxuezaipiao/p/3369962.html1. transient的作用及使用方法我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。 然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,而其他...

2021-07-16 17:02:24 83

原创 内存泄露举例

目录内存泄露概念举例内存泄露概念Java中的内存泄露,广义并通俗的说,就是:不再会被使用的对象的内存不能被回收,就是内存泄露。Java中的内存泄露与C++中的表现有所不同。举例在有向图中,我们叫作obj1是可达的,obj2就是不可达的,显然不可达的可以被清理;但当一个对象引用另一对象后,而另一对象为空时,会出现内存泄露;...

2021-06-29 16:50:04 81

原创 懒加载lazy

目录一、mybatis中的懒加载二、Bean的懒加载一、mybatis中的懒加载一对多查询mybatis中要不加fetchType默认lazy,即懒加载;问题:我要查询人员记录列表时,用queryRecordByParam时效率慢,单独查一条queryRecordById时效率还可以,找原因发现是懒加载导致的;解决办法是添加配置fetchType='eager';若懒加载:执行 queryRecordByParam 后 RecordMap 里id,code,name.

2021-06-29 16:27:37 275

转载 (转)Redis、mongoDB、Memcached区别

>>MemcachedMemcached的优点:Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key、value的字节大小以及服务器硬件性能,日常环境中QPS高峰大约在4-6w左右)。适用于最大程度扛量。支持直接配置为session handle。Memcached的局限性:只支持简单的key/value数据结构,不像Redis可以支持丰富的数据类型。无法进行持久化,数据不能备份,只能用于缓存使用,且重启后数据全部丢失。无法进行数据同步,不能将M

2021-06-25 10:06:00 247

原创 jdk8 Lambda,stream,juc 新特性

1. 获取对象字段的列表List idcards= users.stream().map(User::getIdcard).collect(Collectors.toList());2. 构建列表List list = fileNames.stream().map(i -> { Enclosure enclosure = new Enclosure(); enclosure.setName(i); e...

2021-06-24 11:01:45 103

转载 设计模式----适配器模式

作用:用于包装不兼容接口的对象,把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法一起工作的两个类能够在一起工作。

2021-06-07 11:10:43 60

转载 ArrayList原理

一、 数据代码结构public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable{ // 版本号 private static final long serialVersionUID = 8683452581122892189L; // 缺省容量

2021-04-25 15:23:04 126

原创 数据库设计范式

数据库有6大范式,一般到BCNF范式就行了;

2021-04-14 16:42:27 52

原创 java关键字----volatile 用途

1. 保证内存可见性线程运行时有些情况得事先说明:不是所有的线程直接对主存进行操作,而是创建自己的工作内存,把主存的数据copy一份,然后对自己的工作内存进行操作后再刷新回主存;那么问题来了?各个线程都对各自工作内存进行操作,然后再刷回去,各自覆盖别人的,这算怎么一回事,到底搞啥业务情形?但若对 private volatile int m=2; 那么读取操作与普通变量相同.但是写入操作发生后会立即将其刷新回主存,并且使其他线程中对这一变量的缓存失效!缓存失效了怎么办呢?去再次读取.

2021-04-02 14:04:56 153

原创 mysql索引不一定失效

目录一、索引失效的总结:1,运算符(比较运算符,逻辑运算符)2,函数3,联合索引二、数据库索引type解读三、索引不一定失效1. or 不一定索引失效2. like 不一定索引失效3. in,not in 不一定索引失效4. 【复合索引】 不一定索引失效5.【函数】 不一定索引失效一、索引失效的总结:1,运算符(比较运算符,逻辑运算符)mysql运算符 可能引起索引失效 说明 算术运算符 加减乘除 ...

2021-01-26 14:45:03 680

空空如也

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

TA关注的人

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