自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

原创 mysql隔离级别

可重复读,a线程事物正在读取数据,b线程的事物将数据修改,但我a线程读取的还是自己事物内的旧数据,不会造成两次读取不同的情况。 串行化 读已提交 读未提交

2021-03-29 00:12:02 88

原创 2021-03-29

读提交,两个线程,一个事物读取到另一个数据提交的数据 读未提交,有两个线程,a线程事物正在执行事物,b线程读取到a线程未提交数据 可重复读 一个线程读取到另一个 串行化

2021-03-29 00:06:11 114

原创

volatile 可见性,有序性,但满足不了原子性 以jmm内存模型说,多个线程将主内存中中的可以共享的普通变量都复制线程的本地内地内存中, 每个线程在本地内存中的变量修改都是互不可见的 a线程对变量的操作,b线程是不知道的,但加了vaotile关键字,jvm编译后会有一个lock指令去锁住 cpu的缓存,一旦缓存中的数据发生变化,他就会通过mesi协议将数据强制刷新到主内存,通过总线嗅探机制让其他线程知道自己保存的旧数据已经无效的,重新去复制主内存的数据 指令重排就是cpu在执行指令的时候或者jvm在

2021-03-27 19:26:43 113

原创 jvm

堆 分为老年代和新生代(又分为幸存from和to区),存放创建的对象,年轻代对象没经过一次full gc都会年龄加1, 获得比较久的(默认16)的对象会存到老年代 栈 存放栈帧,每个线程执行方法都会对应一个栈帧模型,里面主要保存局部变量表,操作数栈,动态链接,方法出口 程序计数器 每个线程执行jvm指令的一个字节码计数器 方法区 他是线程共享的 存放 类的一些类的类型信息,常量和静态资源 本地方法栈…… 双亲委派机制指的是一个类在被类加载器加载时会先一直调用父类上层的加载器看有没有加载过这个类 垃

2021-03-27 18:27:21 172

原创 联合索引最左前缀

最左前缀匹配原则 之所以会有最左前缀匹配原则和联合索引的索引构建方式及存储结构是有关系的。 首先我们创建的index_bcd(b,c,d)索引,相当于创建了(b)、(b、c)(b、c、d)三个索引,看完下面你就知道为什么相当于创建了三个索引。 我们看,联合索引是首先使用多列索引的第一列构建的索引树,用上面idx_t1_bcd(b,c,d)的例子就是优先使用b列构建,当b列值相等时再以c列排序,若c列的值也相等则以d列排序。我们可以取出索引树的叶子节点看一下。 索引的第一列也就是b列可以说是从左到右单调递增的

2021-03-04 00:14:01 132 1

原创 2020-10-26

springboot常用注解,getmapping,postMapping, restController, ComponentScan EnableAutoConfiguration SpringBootApplication String 替换字符串replace() 格式化字符串format() 拆分字符串split() 求字符串的长度length() indexOf获取某个字符在字符串中的位置的值 trim()去除空白 chatAT()取出一个字符串在某个位置中的植 substring()取出一个子

2020-10-26 18:29:26 103

原创 2020-10-23

对象不用了,会被回收码,在方法区中方法会不会回收 会 创建对象放在ssttic list中,对象不能被回收,因为创建的对象被list引用

2020-10-23 16:28:13 82

原创 2020-09-22

MP:对象与表进行关联, UI 电商后台,商品分页信息分页展现 每个商品都对应自己的商品类目信息 商品分类信息 就是展现出商品的不同的分类,商品分类在前端是以属性结构展现, 表中字段parent_id作为上级商品分类的id,在同一张表中, 上级商品类目在查询出下级商品类目的时候使用树形结构展现, 在商品分类表中添加一个parent_id字段作为上级分类的Id,然后在查询商品的下级分类信息的时候就可以通过parent_id这个字段作为查询条件查询到下级的商品分类信息。 如果数据库中的数据发生了改变,怎么保证让

2020-09-22 19:43:00 252

原创 多线程

每个进程都有独立的方法区和堆空间 每个线程都有自己独立的栈和独立的程序计数器,每个线程一份 一个进程当中里的多个线程可以共享进程当中的堆和方法区,使得线程之间的通信变得更高效。 多个线程,共享同一个进程中的方法区和堆 线程就是一个程序内部的一条执行路径 进程就是一个正在运行的程序,一个进程可以包含多个线程。 创建线程的方法:继承thread类,实现runnable接口 新建:thread对象被创建时就叫新建。 就绪:新建的线程被start()调用 运行:被cpu分配资源线程就执行了。 阻塞: 死亡:运行完或

2020-09-13 22:59:24 99

原创 2020-09-12

zk dubbo toon新原理 **redis哨兵 —**事务的并发读问题: 脏读:在并发环境中,一个事务读取到了另一个事务未提交的数据, 不可重复读:同一条记录两次不同的时间内读取到的数据不一致。(原因在两次读取期间对数据进行了修改) 幻读:对同一张表两次读取到的数据不一致。(读取前和读取后的表记录数不一致,原因在两次读取的时候对数据进行了增删) 根据实际需求,通过设置数据库的事务隔离级别可以解决多个事务并发情况下出现的脏读、不可重复读和幻读问题,数据库事务隔离级别由低到高依次为Read uncommi

2020-09-12 15:23:58 117

原创 MQ

单体模式: 消息生产者和消息消费者。 负载均衡 消息会轮循发送消息给所有消费者 如果需要合理分发,那就手动ACK 消息持久化: 在服务器端 持久保存消息,避免因服务器宕机造成消息丢失 1.队列持久化:将服务器的队列设置成持久队列 2.消息持久化:将发送的消息设置成持久消息 发布和订阅模式,消息群发: 可以把消息发给所有的消费者,就是同一条消息,所有的消费者都可以收到 靠fanout类型交换机来实现,生产者发送数据发送给交换机,交换机得到消息数据后群发给所有消费者, 需要消费者来配合,要绑定,每个消费者都有自

2020-09-11 14:47:31 225

原创 Dubbo

dubbo负载均衡策略有几种, 4种 1.随机模式。按权重设置随机概率。在一个截面上碰撞的概率较高,但调用越大分布越均匀 2.轮询模式。按公约后的权重设置轮询比例。但存在响应慢的服务提供者会累积请求 3.最少活跃调用数。响应快的提供者接受越多请求,响应慢的接受越少请求 4.一致hash。根据服务提供者ip设置hash环,携带相同的参数总是发送的同一个服务提供者,若服务挂了,则会基于虚拟节点平摊到其他提供者上 ...

2020-09-05 22:48:30 101

原创 Shiro框架

Shiro可以帮助我们完成:认证、授权、加密、会话管理、与Web集成、缓存等 主要有三大核心组件 Subject:代表一个当前用户的一个对象 SecurityManager:是一个安全管理器对象,管理所有的Subject,与安全有关的操作都会和SecurityManager进行交互 Realms:获取数据的一个对象,就是说SecurityManager要验证用户身份,那么他需要从Realm中获取数据进行比较,比如获取 用户响应的角色,权限,的数据。 ...

2020-09-05 18:54:28 80

原创 JAVAWEB

Servlet容器启动时,开始加载Servlet,加载后会被容器实例化, 然后容器运行init方法完成初始化。用户的请求到达时会运行service方法, web 容器加载 servlet,生命周期开始。通过调用 servlet 的 init()方法进行 servlet 的初始化。 接着Web容器会创建Httprequest对象和HttpResponse对象,把用户请求的信息封装到Httprequest对象中 Web容器会调用 service()方法,根据不同的请求调用调用不同的 doget()方法或者doP

2020-09-02 00:55:07 85

原创 Mysql

Mysql优化: 数据库优化之分表: 水平分表(按行分表):如果mysql表的行非常多达到了百万级别,查询效率会很低,这时候就可以使用水平分表 垂直分表(按列分表):如果表中的某个字段的值非常多,比如文本字段,而且只有在很少的情况下才会去查询这个字段,这时候就可以把这些字段单独放到一个表中,然后通过外键关联起来。 ...

2020-09-02 00:16:17 165

原创 电商项目

单点登陆: 购物车实现: 获取购物车列表: 购物车已登陆状态:在控制层一个添加购物车的Controller,判断用户是否登陆,如果登陆 购物车未登陆状态:如果用户未登陆,就将添加的购物车数据对象以Json字符产的形式保存在Cookie当中 购物车合并:如果用户是已登录的状态, 获取购物车的信息:如果是未登陆的就返回Cookie的购物车数据给前端,如果是登陆状态下的时候,就从redis中存储的用户购物车数据和用户未登录状态下的Cookie购物车数据合并在一起,然后存入redis,在返回给前端购物车列表展现。

2020-09-01 16:38:37 129

原创 Springcloud

eureka—>提供者(客户端), eureka,服务的提供者要向注册中心进行注册 ,服务的消费者向注册中心得到地址表,然后调用这些服务 只要一个服务起来,就会把自己的地址注册到eureka,地址表 eureka注册中心工作机制: 1.服务提供者注册:一次一次地尝试进行注册,直到连接成功到eureka(注册成功为止), 2.心跳:服务30秒发送一次心跳,如果eureka连接三次收不到一个服务心跳,会删除这个服务的注册信息。 3.服务消费者拉取注册表 每30秒拉取一次注册中心的地址表,如果有新的服务注册

2020-08-27 16:20:32 107

原创 REdis

Redis 缓存穿透(查不到数据导致的): 比如用户去redis中查询一个key为-1的数据,而redis缓存和mysql中都没有查询到这个数据, 如果服务器大量的接收到了这种请求,就可能会造成服务器宕机: 解决方案:布隆过滤器, 缓存击穿(查询量太大,redis缓存又过期): 有大量的用户请求去获取redis缓存中一个刚好过期的数据, 由于缓存过期,就会去访问数据库查询数据,这时就会使数据库瞬间压力过大造成缓存击穿。 解决方案:分布式锁,保证对于每个key同一时间只有一个线程去查询数据库 ...

2020-08-16 11:36:24 130

原创 mybatis框架

mybatis 1 优点: mybatis时基于Sql语言编程相对灵活,Sql语句写在xml里,解除了sql与程序代码的耦合性,便于统一管理,mybatis还支持动态sql语句, 并且sql语句还可以重用。 消除了JDBC编程的冗余代码, 支持对象与数据库字段的关系映射,提供对象关系映射标签。 2 mybatis与hibernate的不同: mybaties不完全是一个ORM框架,因为mybatis需要程序员自己编写sql语句。 #{}和¥{}的区别是什么 #{}是预编译处理,$

2020-08-14 00:45:41 175

springmvc类型转换.md

springmvc类型转换.md

2020-07-16

空空如也

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

TA关注的人

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