- 博客(40)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 java虚拟机之对象的探秘
对于java程序员来说,在虚拟机自动内存管理理机制的协助下,不在像C++/C那样需要new创建一个对象,又要delete销毁一个对象的空间,因此不容易出现内存溢出这种情况。C++中的new和delete不容易操作,C++比较强是基于程序员本身比较牛。当然C++学的好,那么java一定没有什么问题。目录1. 对象是否死亡?1.1引用计数算法1.2 可达性分析1. 对象是否死亡?java堆里面几乎放着所有实例对象,垃圾收集器在对对象回收之前首先判断的是,对象是不是已经死亡了。如果...
2020-09-01 11:24:44
180
原创 使用redis做分页,性能提升将大大提升,亲测可用。
在日常工作中,分页数据被访问较为频繁,即使数据量并不是很大,但也较大数据库的开销,而且数据库支持的并发数并不是很多。再加分页查询通常在select和from之间带了不少子查询,遍历查找子查询过程中也会拖慢整体的数据查询。基于此,本文介绍一种基于redis缓存的分页,避免数据库查出过多的字段造成的性能下降。4.为了保持缓存中的数据和数据库中的数据一致,在数据更新时,对缓存数据进行“双删延迟”3.如果取值为空就在就到数据库中查找,找以后存到缓存中,以便下次查询时命中缓存。数据更新时“延迟双删”
2024-08-16 11:22:04
158
原创 缓存和数据库双向写死一致性问题
采用双检检索策略,避免在缓存为空时,多个线程同时进入访问数据。所需要加同步锁,等其中一个线程执行查询数据库上使用一个互斥锁,把数据缓存到redis里,其他线程等待后进入执行代码块时,直接获取缓存的数据,就避免了多个线程访问数据哭了。3.完成第二部以后,将数据库的数据回写redis,保持两边数据一致。缓存与数据一致性问题,如下思维导图所示。2.redis为空,从数据库获取并返回。1.直接从redis获取并返回。
2024-07-31 21:25:41
182
原创 使用docker安装redis、MySQL详细教程
1 在docker hub搜索redis镜像2 拉取redis镜像到本地,后面不指定版本就会pull最新版本3 修改需要自定义的配置(docker-redis默认没有配置文件,自己在宿主机建立后挂载映射)创建并修改/usr/local/redis/redis.confbind 0.0.0.0 开启远程权限appendonly yes 开启aof持久化4 启动redis服务运行容器解释: -v /usr/local/redis/data:/data # 将数据目录挂在到本地保证数据安全。
2024-05-19 11:42:12
310
原创 RocketMQ的学习与总结
使用消息队列解耦合,系统的耦合性就会提高了。以电商应用为例,用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任何一个子系统出了故障或者因为升级等原因暂时不可用,都会造成下单操作异常,影响用户使用体验。一般情况,为了保证系统的稳定性,如果系统负载超过阈值,就会阻止用户请求,这会影响用户体验,而如果使用消息队列将请求缓存起来,等待系统处理完毕后通知用户下单完毕,这样总不能下单体验要好。一致性问题:A系统处理完业务,通过MQ给B、C、D三个系统发消息数据,如果B系统、C系统处理成功,D系统处理失败。
2024-05-18 18:05:29
398
原创 redis问题得到总结
1、什么是 Redis?简述它的优缺点?Redis 的全称是:Remote Dictionary.Server,本质上是一个 Key-Value 类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据 flush 到硬盘上进行保存。因为是纯内存操作,Redis 的性能非常出色,每秒可以处理超过 10 万次读写操作,是已知性能最快的Key-Value DB。Redis 的出色之处不仅仅是性能,Redis 最大的魅力是支持保存多种数据结构,此外单个 v
2023-06-18 10:48:03
1405
原创 面试不是很理想,总结一下
针对今天和昨天面试问题回答的不是很流程做出的总结,附上较为完整的答案。vue相关的问题1.vue的父子组件的通信1).使用 import 自定义名称 from “./文件路径” 来引入到当前文件,不引入是不能使用的2). components:{}中注册组件,v-home 为组件名, Home 要与引入时的自定义名称一致。总结:将想要传递给子组件的数据定义在data中,在使用子组件时,动态绑定该数据名。在子组件中,使用 props 接收父组件传递过来的数据这样就实现了父子组件之间的通信
2021-12-29 22:38:13
216
原创 插入排序的详细讲解与性能分析
1.算法的性能指标 稳定性:指的是 , 待排序序列中有两个或两个以上相同的关键字时,排序谦和排序后这些关键字的相对位置,如果没有发生变化就是稳定的 , 否则就是不稳定的。举个例子就是,某个序列关键字都是100 , 以100(a)和100(b)加以区分,现用某种算法对该序列进行排序,排序后的结果a和b的相对位置依然保持不变(即a依然在b的后面),那么该算法就是稳定的;反之就是不稳定的。2.直接排序 先通过一个例子来体会插入排序的执行流程。例如,对原始数组{49 , 38 , 65 , 97 , 76 ,
2021-06-19 10:52:12
633
原创 深入理解原型设计模式
标题应用场景考虑这样一个实际用例:订单处理系统。现有一个订单处理的系统,里面有一个保存订单的业务功能。在这个业务功能中,客户有这样一个需求:每当订单的预定产品数量超过1000,就把订单拆成两份保存。如果拆成两份订单后,它还超过1000,那就继续拆分,直到订单订单少于1000为止。至于为什么要拆分的话,可能就是后续工作人员只能处理少于1000产品数的订单,这里不要太纠结。不使用模式的解决方案分析一下功能需求,其实这种应用场景并不算难,一共就一个功能,多加几个if语句,但是真的那么简单吗?下面我们查实=
2021-03-24 14:30:44
1101
原创 十分钟就能看懂的观察者模式
观察者模式的应用场景来考虑实际生活中订阅报纸的过程,这里简单总结了一下订阅报纸的基本流程,(互联网时代很少人这样做哈)。1.首先按照自己的需要选择合适的报纸,具体的报刊杂志目录可以从邮局获取。2.选择好以后,就到邮局取填写订阅单,同时缴纳费用。完了以后,就完成了订阅过程,就下来就是耐心等待了,报社会按照出报时间推出报纸,然后报纸会被送到每个订阅人手里。大致过程如下图所示。从订阅者的角度来看,我们好像就是直接与邮局订阅的报纸,但是其实邮局差不多就是一个中介,邮局就拿着订阅信息交给报社,而报社会定期
2021-03-19 19:41:52
1166
2
原创 深入浅出简单工厂模式
学简单工厂设计模式之前,让我们先来了解一下。首先抛出几个问题,什么是接口?接口有什么作用?接口如何使用?接口是什么?java中的接口类似于一个抽象类,或者叫它为一个特殊的抽象类,跟一般抽象类相比,接口所有的属性都是公有的,而且为常量,所有的方法都是抽象方法。也就是说,接口里面只有方法的定义,没有方法的实现。用来干嘛?通常用接口来定义实现类的外观,也就是定义实现类的行为,用来约束实现类的行为。接口相当于一份契约,根据外部应用需要的功能,约定了实现类应该要实现的功能,但是具体怎么实现并不是接口该关心的事
2021-03-17 16:54:48
449
5
原创 类加载器及类的加载过程详细讲解
进程:做一个简单的解释,你的硬盘上有一个简单的程序,这个程序叫QQ.exe,这个就叫进程,这个进程是一个静态的概念,
2021-03-11 13:57:39
1033
原创 java堆OutOfMemoryError异常
除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError(下文称OOM)异常的可能,这边文章将讨论那还找那个情况下有可能发生内存溢出。 了解JVM的都知道,java是有自动内存管理机制的,在java对象被判定为死亡以后,GC将死亡的对象进行回收。java虚拟机主要是通过引用计数器和可达性分析进行判断对象是否死亡,而主流的java虚拟机都是使用可达性分析来判断对象是否死亡。根据Java虚拟机判断对象是否死亡的算法,也就是说内存泄漏一定要满足两个条件: 1.对象是可达的;
2021-03-10 14:59:36
243
5
原创 何如创建一个本地docker仓库
第一步docker pull registry #不指定版本就是最新可靠版本第二步vim /etc/docker/daemon.json第三步修改文件{ "insecure-registries":["http://192.168.10.243:5000"]}第四步重新加载配置sudo systemctl daemon-reloadsudo systemctl restart docker第五步创建无验证仓库docker run -d --name registry -
2021-02-23 23:49:37
1705
3
原创 菜鸟学习MySQL性能分析笔记(1)
1、性能下降SQL慢 执行时间长、等待时间长有哪些原因?1.数据过多2.关联了太多的表,太多join3.没有充分利用到索引4.服务器调优及各个参数设置1.分库分表2.SQL优化3.索引建立4.调整my.cnf
2021-02-23 08:46:40
133
原创 MySQL存储过程与函数
1.是什么存储过程与函数,类似于java中的方法优点:1.提高代码的重用性2.简化操作3.减少了编译次数且减少了和数据库服务器的连接次数,提高了效率存储过程:一组预先编译好的SQL语句的集合,解释成批处理语句。2.基本使用1.创建语法CREATE PROCEDURE 存储过程名字(参数列表)BEGIN存储过程体(一组合法的SQL语句)END注意:1.参数列表包含三个部分参数模式 参数名 参数类型列举:IN stuname VARCHAR(20)参数模式:IN : 该
2021-02-05 09:45:29
91
原创 vim的扩展功能
vim 的环境设置参数:set nu :set nonu #就是设置与取消行号啊!:set hlsearch:set nohlsearch #hlsearch 就是 high light search(高亮度搜寻)。 这个就是设置是否将搜寻的字串反白的设置值。默认值是 hlsearch:set autoindent :set noautoindent #是否自动缩排?autoindent 就是自动缩排。:set backup # 是否自动储存备份文件?一般是 nobackup 的, 如果设置 b
2021-01-24 21:13:54
187
原创 Dockerfile看这篇就够了
是什么Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。构建三步骤1.编写Dockerfile文件;2.docker build;3.docker runDockerFile构建过程解析基础知识1、每条保留字指令都必须为大写字母且后面要跟随至少一个参数;2、指令按照从上到下,顺序执行;3、表示注释;4、每条指令都会创建一个新的镜像层,并对镜像进行提交。Docker执行Dockerfile的大致流程(1)docker从基础镜像运行一个容器;(2)
2020-11-14 09:52:13
557
原创 java面试题-面向对象编程
面向对象什么是对象对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务组成。类的实例化可生成对象,一个对象的生命周期包括三个阶段:创建、调用和死亡。当某个对象没有被调用时,java虚拟机判定为死亡,即将被垃圾收集器回收。Java的垃圾收集器自动扫描对象的动态内存区,把没有引用的对象作为垃圾收集起来并释放。当系统内存用尽或调用System.gc()要求垃圾回收时,垃圾回收程与系统同步运行。面向对象的特征三个特征,封装,继承和多态。封
2020-11-09 19:11:38
270
原创 docker命令行,容器、镜像经常使用到的
docker相关命令行docker build 命令用于使用 Dockerfile 创建镜像docker pull 拉取镜像docker run 启动容器docker info 显示 Docker 系统信息,包括镜像和容器数。[root@localhost msli]# docker info 显示信息如下图。1.镜像命令鲸鱼背上的集装箱鲸鱼 --------docker集装箱 --------- 容器实例 -----from --来自我们pull的镜像模板
2020-11-08 16:49:17
288
原创 Java虚拟机之垃圾回收,标记-清除算法
**1.分代收集理论1)弱分代假说:绝大多数对象都是朝生夕灭的2)强分代假说:熬过越多次垃圾收集过程的对象就越难以消灭这两种假说奠定了许多java虚拟机的垃圾回收器的设计,“Minor GC”“Major GC”“Full GC”**垃圾回收,前面两篇已经讲了怎么判定对象为“垃圾”,第一种就是计数器算法,第二种就是可达性分析算法,这里就不再过多的描述了。...
2020-11-04 09:58:58
211
原创 线程安全问题的详细描述
线程安全可能是一个复杂的问题,在没有同步锁的情况下,多个线程执行顺序不可预测的,甚至会产生奇怪的结果,出现脏数据等情况。如下文代码所示:public class UnsafeSequence{ private int value = 0; public int getNext() { value++ }}上述代码如果被多个线程同时调用, 将产生各种奇怪的结果。如下图所示,A表示一个线程,B表示为另外一个线程。当A与B进程并发交替执行的时候,并不加同步锁的时候,value将产生不同的结
2020-11-03 21:50:48
125
原创 Hystrix断路器学习笔记
分布式面临的问题复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候不可避免地失败。Hystrix是什么?Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,Hystrix能够保证在一个依赖出现问题的情况下,不会导致整体服务失败,避免级联故障,提高分布式系统的弹性“断路器”本身就是一个开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似熔断保险丝),预期的、可处理的预选响应(FallBack),而不是长时间的等待或
2020-10-08 21:11:40
121
2
原创 SpringCloud全家桶之服务注册与发现(实战篇,陆续更新中........)
在做分布式微服之前,先看看我的我的项目结构的目录,主要有两个Eureka服务组成的集群,其名字如图片中所示,名字就是cloud-eurka-server7001和cloud-eurka-server7001两个;第二部分为服务提供者,就是图中画红圈部分的coud-provider-payment8002和cloud-payment-8001,也是有两个服务器组成的微服集群,电脑好的通过可以多创建几个微服作为集群;最后就是微服的消费者,也可以创建多个微服作为集群,但是我电脑已经带不动了,所以仅一个,就是图..
2020-08-24 23:36:59
170
原创 SpringCloud全家桶之服务注册与发现(理论篇,实现篇制作中.......)
SpringCloud是一个微服分布式的一站式解决方案,SpringCloud把其理解为一个平台更为贴切一点。在SpringCloud生态上给一些技术栈提供了不少的“加入“规则”,SpringCloud微服分布式是基于SpringBoot实现的,所在写这篇文章的时候就默认读者是会SpringBoot的,虽然没什么读者,但还是强烈建议,原来使用SpringBoot1.x.x的同学改为SpringBoot2.x.x。分布式的一个概述...
2020-08-21 16:22:41
156
原创 java虚拟机1
最近这几年,关于java虚拟机有的面试题确实在提高,尤其是大厂的面试。而有关于Java虚拟机,确实有助于提高java程序员的编程能力,在JVM性能调优更是必不可少的。如阿里巴巴这样的大公司,也出了自己的JVM,就是TAOBAOVM。JVM做大的作用便是实现程序的跨平台运行。下面讲义HotSpot虚拟机为例,介绍一下虚拟机。从今天起JVM系列开始了,自嗨而已,并不高深,不小心看到此篇文章的同学,献丑了。1.java的运行过程,如下图所示,java源代码,即我们平时写代码的时候编写的.java文件的代码..
2020-08-12 21:55:53
114
原创 数据结构之插入排序(java实现)
插入排序法思想:插入排序(Insertion Sorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。插入排序思路图:代码实现:import java.util.Arrays...
2019-11-12 18:05:49
180
原创 二维数组和稀疏数组的相互转换
稀疏数组的基本介绍二维数组的很多值都是默认为0,因此记录了很多没有意义的数据,所以需要稀疏数组来记录有效数字,以减少程序的规模。二维数组转稀疏数组的思路:1、遍历 原始的二维数组,得到有效数据的个数sum2、根据sum就可以创建稀疏数组sparseArr int[sum+1][3]3、二维数第一行的数据组的有效数据存入稀疏数组中稀疏数组转原始的二维数组的思路:1.先读取稀疏数组的第一...
2019-11-10 21:29:14
96
原创 Spring事务管理源码(上)
此篇文章的主要内容有如下部分:事务是什么?事务与java之间的关系 事务的原则性内容 事务的实现方式1、事务是什么?事务是正确执行-系列的操作(或动作) ,使得数据库从- -种状态转换成另一种状态,且保证操作全部成功,或者全部失败。2、事务的原则是什么?事务必须服从ISO/IEC所制定的ACID原则ACID原则:原子性:即不可分割性,事务要么全执行,要么全部不...
2019-11-01 20:31:02
104
原创 使用XML方式开发AOP
下图为项目的目录结构,主要是需要一个切面类、一个目标类和一个配置XML文件。其原理大概为,切面类对目标的进行通知。接下来就是代码展示了:XML配置切面的代码为<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins...
2019-10-31 20:41:59
104
原创 基于使用AspectJ实现AOP,注解AOP开发
1.环境配置,简单的说明。Spring AOP和Aspect相关jar包,这里直接上代码了 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> ...
2019-10-31 17:08:03
127
原创 org.springframework.beans.BeanInstantiationException: Failed to instantiate求解,bug半天了
这个问题bug了老半天,配置spring bean是出的问题,测试一直报错,在单元测试中去掉@RunWith(SpringJUnit4ClassRunner.class)就报空指针异常。org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.test.cont...
2019-10-26 22:03:01
3921
3
原创 Spring配置文件Bean.xml与注解的区别和细节
账户的业务层实现类曾经XML的配置:<bean id=“accountService” class=“com.itheima.service.impl.AccountServiceImpl” scope="" init-method="" destroy-method=""> <property name="" value="" | ref="">...
2019-10-22 21:57:50
1146
原创 把bean的创建交给spring来管理
spring对bean的管理细节1.创建bean的三种方式2.bean对象的作用范围3.bean对象的生命周期-创建Bean的三种方式 --><第一种方式:使用默认构造函数创建。 在spring的配置文件中使用bean标签,配以id和class属性之后,且没有其他属性和标签时。 采用的就是默认构造函数创建bean对象,此时如果类中没有默认构造...
2019-10-20 21:30:40
1269
原创 Django塔建移动端服务器的方法
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...
2019-07-10 20:07:43
403
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人