自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 设计模式的七大原则

一、单一职责原则概念:一个类只负责一项功能,例如一个订单类,就只负责对订单的操作,不能去涉及到对用户或者商品的操作。(注意,一般情况下单一职责原则是作用于类上,但是如果一类的方法数量足够少,也可以把单一职责原则作用于方法上)二、开闭原则概念:开闭原则是编程中最基础最重要的原则。一个软件实体,如类,函数,模块应该对扩展开放,对修改关闭。(当软件需求发生变化时,尽量通过扩展软件实体的行为来实现变化,而不是修改已有的代码来实现方法)...

2021-09-09 16:44:44 122

原创 Java基础——异常

在 Java 中,所有的异常都有一个共同的祖先java.lang包中的Throwable类。Throwable类有两个重要的子类Exception(异常)和Error(错误)。Exception和Error二者都是 Java 异常处理的重要子类,各自都包含大量子类。Exception:程序本身可以处理的异常,可以通过catch来进行捕获。Exception又可以分为 受检查异常(必须处理) 和 不受检查异常(可以不处理)。 Error::是程序无法处理的错误,表示运行...

2021-08-18 09:52:05 90

原创 RabbitMQ如何保证消息的可靠性?

在使用 RabbitMQ 的时,作为消息发送方希望安全可靠的将消息放松到中间件。RabbitMQ 提供了两种方式来控制消息的投递可靠性。confirm 确认模式:消息从 producer 到 exchange 会返回一个 confirmCallback 。 return 退回模式:消息从 exchange 到queue 投递失败时才,会返回一个returnCallback 。(RabbitMQ也支持事务,但是性能较差,一般不用)除了生产方发送到中间件的可靠保证,还需要接收方获取消息的..

2021-08-06 16:26:31 332

原创 MySQL事务

事务是逻辑上的一组操作,要么都执行,要么都不执行。事务的特性(ACID):Atomicity(原子性):一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。 Consistency(一致性):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则。 Isolation(隔离性):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。 D

2021-07-26 17:34:56 106

原创 分布式中的两个重要理论CAP和BASE

CAP定理CAP定理,由加州大学伯克利分校的Eric Brewer教授在分布式计算原理研讨会(PODC)上提出,因此 CAP定理又被称作布鲁尔定理。分布式系统有三个指标:一致性(Consistence): 所有节点访问同一份最新的数据副本。 可用性(Availability): 非故障的节点在合理的时间内返回合理的响应。 分区容错性(Partition tolerance): 分布式系统出现网络分区(通信中断)的时候,仍然能够对外提供服务。CAP 定理指出,对于一个分布式系统来说,当设计读..

2021-07-26 16:57:02 160

原创 浅谈消息队列(Messges Queue)

1.什么是消息队列?我们可以把消息队列看作是一个存放消息的容器,当我们需要使用消息的时候,直接从容器中取出消息供自己使用即可。我们知道队列 Queue 是一种先进先出的数据结构,所以消费消息时也是按照顺序来消费的。2.为什么要用消息队列?谈到消息队列,我们就要条件反射的在脑子里出现这三点:异步(将不需要同步处理,并且耗时长的操作,由消息队列通知消息接收方进行异步处理。可以提高应用程序的响应时间。 ) 削峰(消息被MQ保存起来了,然后系统就可以按照自己的消费能力来消费,避免高峰冲垮服务器..

2021-07-25 17:38:04 235

原创 多线程中关键字 synchronized 和 volatile

关键字 synchronized:synchronized 解决的是多个线程之间访问资源的同步性,该关键字可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。关键字 synchronized 最主要的三种使用方式是:修饰实例方法:给当前对象实例加锁,进入同步代码之前需要获得当前对象实例的锁。修饰静态方法:给当前类加锁,进入同步代码之前需要获得当前类的锁。修饰代码块:指定加锁对象,给指定对象加锁,进入同步代码块之前需要获得指定对象的锁。(构造方法不能使用 synchroniz..

2021-07-24 11:30:46 236

原创 数据结构-堆(heap)

堆是什么?堆是一种满足以下条件的树:堆中的每一个节点值都大于等于(或小于等于)子树中所有节点的值。称为大顶堆(小顶堆)(注意:堆不一定是完全二叉树,只是为了方便存储和索引,我们通常用完全二叉树的形式来表示堆)堆有什么用?当我们只关心所有数据中的最大值或者最小值,存在多次获取最大值或者最小值,多次插入或删除数据时,就可以使用堆。有小伙伴可能会想到用有序数组,初始化一个有序数组时间复杂度是O(nlog(n)),查找最大值或者最小值时间复杂度都是O(1),但是,涉及到更新(插入或删除)..

2021-07-24 09:51:57 387

原创 对象的创建过程

Java 对象的创建过程 分为五步1.类加载检查->2.分配内存->3.初始化零值->4.设置对象头->5.执行 init 方法1.类加载检查虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行相应的类加载过程。2.分配内存对象所需的内存大小在类加载完成后便可确定,为对象分配空间的任务等同于把一块确定大小的内存从 Java 堆中划分出来。简.

2021-07-23 18:50:47 176

原创 浅谈JVM垃圾回收

当我们要进行垃圾回收的时候,首先我们要判断一个对象是否需要被回收。那我们应该如何判断呢?程序计数器、虚拟机栈、本地方法栈,为线程独享的,随着线程的生存而生存的。随着线程的结束内存自然就被回收了,因此不需要考虑垃圾回收的问题。而Java堆和方法区则不一样,各线程共享,内存的分配和回收都是动态的。因此垃圾收集器所关注的都是堆和方法这部分内存。下面介绍两个基础的计算方法1.引用计数器计算:给对象添加一个引用计数器,每次引用这个对象时计数器加一,引用失效时减一,计数器等于0时就是不会再次使用的。不过

2021-07-23 18:15:59 109

原创 布隆过滤器介绍

1.什么是布隆过滤器?首先,我们需要了解布隆过滤器的概念。布隆过滤器(Bloom Filter)是一个叫做 Bloom 的老哥于1970年提出的。我们可以把它看作由二进制向量(或者说位数组)和一系列随机映射函数(哈希函数)两部分组成的数据结构。相比于我们平时常用的的 List、Map 、Set 等数据结构,它占用空间更少并且效率更高,但是缺点是其返回的结果是概率性的,而不是非常准确的。理论情况下添加到集合中的元素越多,误报的可能性就越大。并且,存放在布隆过滤器的数据不容易删除。位数组中的每个

2021-07-23 10:56:34 117

原创 OpenResty简单了解

OpenResty基本介绍Nginx有很多的特性和好处,但是在Nginx上开发成了一个难题,Nginx模块需要用C开发,而且必须符合一系列复杂的规则,最重要的用C开发模块必须要熟悉Nginx的源代码,使得开发者对其望而生畏。为了开发人员方便,所以我们需要一种整合了Nginx和lua的框架,那就是OpenResty,它帮我们实现了可以用lua的规范开发,实现各种业务。OpenResty是由Nginx核心加很多第三方模块组成,其最大的亮点是默认集成...

2021-07-20 21:00:47 284

原创 Java中final 关键字

final 关键字,意思是最终的、不可修改的,可以用来修饰类、方法和变量。具有以下特点:final 修饰的类不能被继承,final 类中的所有成员方法都相当于final 方法; final 修饰的方法不能被重写; final 修饰的变量, 如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改; 如果是引用类型的变量,则在对其初始化之后便不能让其指向另一个对象。 使用 final 方法的原因有两个:第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率...

2021-07-15 11:31:23 99

原创 MySQL存储过程和函数

存储过程和函数就是事先经过编译并存储在数据库中的一段SQL语句的集合。它们的区别在于函数必须有返回值,存储过程可有可无它们有什么优点呢? 1.可以提高代码复用性 2.减少数据在数据库与服务器之间的传输,提高效率。 3.减少代码层面的业务处理。 存储过程的查看和删除存储过程语法 if语句的使用...

2021-07-08 15:22:19 57

原创 MySQL视图

概念:可以将复杂SQL语句查询出来的结果封装到一张虚拟的表中,可以简化后期的操作创建视图: creat view 视图名称 [(列名列表)] as 查询语句;查询视图: ​select * from 视图名称;修改视图数据:(修改视图数据,原表也会修改)​ update 视图名称 set 列名=值 where 条件;修改视图结构: ​ alter view 视图名称 (列明列表) as 查...

2021-07-08 14:40:56 61

原创 hashCode()和equals()对比

hashCode()和equals()方法都Object类中的方法如果类中不重写此方法,则hashCode():返回对象的地址值

2021-06-19 22:35:44 253

原创 Spring bean的生命周期

类==》实例化==》对象==》属性填充(依赖注入)==》初始化(afterpropreties根据用户缩写的逻辑初始化,例如从数据库中去一个数据作为默认数据)==》

2021-06-16 19:30:59 64

原创 Redis笔记

关系型数据库的问题1.性能瓶颈:磁盘IO性能低下关系型数据库菜存取数据的时候和读取数据的时候他要走磁盘IO。磁盘这个性能本身是比较低的。2.扩展瓶颈:数据关系复杂,扩展性差,不便于大规模集群我们说关系型数据库,它里面表与表之间的关系非常复杂,不知道大家能不能想象一点,就是一张表,通过它的外键关联了七八张表,这七八张表又通过她的外件,每张又关联了四五张表。你想想,查询一下,你要想拿到数据,你就要从A到B、B到C、C到D的一直这么关联下去,最终非常影响查询的效率。同时,你想扩展下,也很难!解

2021-05-29 20:15:27 62

原创 String基础

String类的常用方法 :public boolean equals(Object anObject) 比较字符串的内容,严格区分大小写public boolean equalsIgnoreCase(String anotherString) 比较字符串的内容,忽略大小写public char charAt(int index) 返回指定索引处的 char 值public char[] toCharArray() 将字符串拆分为字符数组后返回public String substrin

2021-05-28 17:50:53 191

原创 linux常用命令

打开sftp窗口alt+p上传文件put e:/software/elasticsearch-7.4.0-linux-x86_64.tar.gz#解压文件到/opt目录下 tar -zxvf elasticsearch-7.4.0-linux-x86_64.tar.gz -C /opt查看防火墙状态firewall-cmd --state#暂时关闭防火墙 systemctl stop firewalld#永久设置防火墙状态 systemctl enable firewalld

2021-05-28 17:48:29 37

空空如也

空空如也

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

TA关注的人

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