自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 分布式系统中的CAP理论:

C : Consistency 一致性,A :Availability 可用性, P :Partition tolerance 分区容错C A P ,在分布式系统中,不可能同时满足,只能满足其中的两个1. P-> 分区容错:一个分布式系统,是由多个子网络组成的,分区容错就是指:各个子网络之前的通信可以失败,这个我们无法保证100%避免。所以,CAP中的P,是一定存在的。剩下的C和A就只能满足一个了。2. A -> 可用性:可用性是指:当前系统只要收到客户端的请求,就必须要给出..

2021-01-02 17:00:49 262

原创 DevOps需要解决的问题:

作者:ChenGuiquan日期:2020/12/25(星期五) 天气:晴1.什么是DevOps:DevOps的字面意思就是"开发和运维" ,需要不断提升软件研发的质量,需要提供持续交付的能力,为企业更好的服务。这些年对DevOps的说法,一直众说纷纭,有人说是自动化运维平台,也有人说是持续交付平台。有人说是开发干掉运维,也有人说是运维人员要偏向于转型做开发。但是我认为,DevOps是一个范围很广的定义,它给我的一种感觉像是"盲人摸象"。可能DevOps的先行者们,似乎也没有...

2020-12-25 17:36:40 472

原创 SpringBoot中默认单例注入带来的问题,以及进行多例注入的解决方案:

1.问题出现的场景:在做电商系统中,审核优惠券的业务流程时,创建了CouponChecker类。如下:如上图所示,在Spring中,如果一个类中需要注入一个被IOC容器管理的组件(CouponRepository,UserConponRepository),那么当前类(CouponChecker)也需要被IOC容器所管理。在OrderChecker类中会有如下逻辑:new CouponChecker(coupon, userCoupon); --> 出现的问题:在Spring中,组

2020-08-10 22:26:12 4744

原创 关系型数据库中,表与表之间关系的理解,以及设计数据库思想总结:

1.在关系型数据库中,表与表之间的关系主要有三种:(1)一对一,(2)一对多,(3)多对多(1)一对一:两张表中的数据是一一对应的,例如--> 用户表user ------- 身份信息表(2)一对多:一张表中的数据,在另一张表中对应多条数据,例--> 英雄表hero ----- 技能表(3)多对多:A表中的数据,在B表中对应多条数据。B表中的数据,在A表中对应多条数据。例-->老师表 ---- 学生表2.对于一对一而言,从某些层面上来讲吗,它是没有意义的,我们在设计数据..

2020-06-27 21:48:45 6414

原创 在Spring Boot 中,实现全局异常处理的整体流程:

1.首先我们需要定义一个全局异常处理类,并且标注上@ControllerAdvice注解:@ControllerAdvice//声明当前类是全局异常处理类public class GlobalExceptionAdvice { @Autowired private ExceptionCodesConfiguration codesConfiguration; /** * 该注解表示一个处理异常的执行器,内部的value表示当前方法处理异常的类型,Exception

2020-06-20 22:03:18 544

原创 SpringBoot框架中的一些基本原理:

1.Spring FrameWork 与 Spring Boot 的区别和联系:其实Spring Boot 内部还是通过Spring Framework 来实现的,Spring Boot 可以说是 Spring 的上层应用,因为 Spring Boot 内部又集成了一些其他组件,例如 Web容器之类。所以使用它开发项目的效率更高。使用注解开发也非常的方便,并且使用注解也是在Spring Boot 中约定俗成的一个规定。2.Spring Boot 向对于 Spring Framework ,它的真正的

2020-06-20 15:28:14 1499

原创 面向对象编程中的一些重要思想 :

1.在软件工程中,之所以出现了这么多的概念,和一些复杂的技术,目的就是为了写出可维护的代码2.软件工程中的OCP原则--->开闭原则:Open Close Principle 开闭原则 开闭原则讲究的是对扩展敞开,对修改关闭。意思就是:我们已经开发完毕的代码,尽可能的不要在原文件中进行程序的修改,因为,如果修改了源代码,可能会引出一些不必要的错误和麻烦。 那么如果我们想要实现程序的开闭原则,以java语言为例,前提就是面向抽象编程,在java中,面向抽象编程的方法主要通...

2020-06-11 21:53:08 201

原创 队列同步器(AQS)的设计原理:

1.前言: 在Java中锁所可以分为两大类,一类是通过synchrinized关键字实现的隐式锁,一类是JUC包的锁。前者是通过JVM实现的,后者是根据队列同步器(AQS)实现的,也就是今天的主角。 在JUC包下实现了很多锁以及工具类,例如ReentrantLock、ReadWriteLock、CountDownLatch、CyclicBarrier等,均是通过队列同步器实现的,所...

2020-03-31 22:33:49 741 2

原创 企业生产环境中,redis的数据是如何备份的:

到这里为止,其实还是停留在简单学习知识的程度,学会了redis的持久化的原理和操作,但是在企业中,持久化到底是怎么去用得呢?企业级的数据备份和各种灾难下的数据恢复,是怎么做得呢?1、企业级的持久化的配置策略在企业中,RDB的生成策略,用默认的也差不多save 60 10000:如果你希望尽可能确保说,RDB最多丢1分钟的数据,那么尽量就是每隔1分钟都生成一个快照,低峰期,数据量很...

2020-03-22 16:04:34 507

原创 生产环境中Redis的配置流程:

在redis_6379脚本中,最上面,加入两行注释# chkconfig: 2345 90 10# description: Redis is a persistent key-value databasechkconfig redis_6379 on2、redis的生产环境启动方案如果一般的学习课程,你就随便用redis-server启动一下redis,做一些实验,这样...

2020-03-21 14:59:11 467

原创 数据结构-----4.队列:

1.特点:队列有“先进先出”的特点,使用的场景多数用于资源池这种,例如:线程池中对等待线程的处理,数据库连接池中对线程的管理2. 队列的生成有两种方式:(1)基于数组生成,称为顺序队列。(2)基于链表生成,称为链式队列。3.基于数组生成队列的程序:(1)在队列中进行入队操作时,tail指针会不断地向后移动,直到数组已经被装满。进行出队操作时,head指针会不断地从0开始向后移动,这样会...

2020-03-17 14:05:57 150

原创 数据结构-----3.栈:

1.特点:遵循 “先进后出”的规则,栈主要包含两个操作,“入栈” 和 “出栈”,栈这种数据结构有两种实现方式:1.数组实现,2.链表实现。例如:浏览器的前进和后退功能就可以使用两个栈来实现,程序中函数的调用也是通过栈来实现。基于数组实现的叫做“顺序栈”,基于链表实现的叫做“链式栈”。空间复杂度的概念:除了必须存储数据的空间外,还需要在程序运行时,需要额外的空间。在栈的入栈和出栈过程中,所需...

2019-12-30 15:24:30 90

原创 Redis中常用数据类型的底层数据结构:

1. redis是一种键值(key-value)数据库,通常作为内存数据库来使用。需要通过 "键" 来查询 "值"。2.在Redis中,键的类型为字符串,为了方便多种数据类型的存储方式,"值" 的数据类型有很多,常用的数据类型有 "字符串(String)","列表(List)","字典(hash)","集合(set)","有序集合(sortSet)"。3.***在Redis中,有一种特殊的...

2019-12-25 12:18:31 722

原创 数据结构-----数组:

1.数组中的概念:是一种线性表数据结构,使用连续的内存空间来存储类型相同的数据。(1)线性表:数据排列成一种线形结构 ,如(数组,链表,栈,队列)。非线性表:(树,图,堆)2.数组是如何实现根据下标索引随机访问数据元素的 ?数组支持随机访问,根据数组下标随机访问的时间复杂度为O(1),而不是说访问数组的时间复杂度为O(1),因为即使为排好序的数组,采用二分查找算法,时间复杂度也是O(l...

2019-12-25 09:44:03 114

原创 数据结构与算法-----6.排序算法:

1.各种常用排序算法的时间复杂度:算法名称: 时间复杂度: 是否基于比较: 冒泡/插入/选择(排序) O(n^2) yes 快速排序/归并(排序) O(nlogn) yes 桶/计数/基数(排序) O(n) no 2.在分析一个排序算法时,应该从以下几个方面去考虑:(...

2019-12-23 14:43:30 166

原创 数据结构与算法-----13.Mysql数据库索引是如何实现的:

1.我们在软件开发过程中,为了提高数据库的查询效率,通常的做法是给数据库表中的某一个字段构建索引。有时候需要思考一下:数据库的索引是如何构建的呢?它的底层使用了什么数据结构?2.我们首先确定一下数据库索引的需求:(1)根据某个值查找数据:select * from user where uid = 1234;(2) 根据某个区间查找数据集合:select * from user where...

2019-12-23 14:40:17 182

原创 数据结构-----2.链表:

1.概念:链表不需要在内存中有连续的内存空间,他是将零散的内存块通过 “指针” 的形式串联在一起,每个节点中需要保存下一个节点所在的地址。链表与数组的区别是:数组在内存中需要一块连续的空间来存储数据,如果数组需要100MB的存储空间,虽然内存中剩余的存储空间大于100MB,但是连续的存储空间小于100MB,那么该数组同样也会创建失败。2.常见的三种链表结构:单向链表,双向链表,循环链表...

2019-12-20 09:58:50 99

原创 数据结构与算法-----12.字符串匹配:

在软件工程中,我们用到字符串匹配的地方非常多,比如:文本编辑软件中的查找功能,判断两个字符串是否相等。字符串匹配分为两种情况:(1)字符串一对一的匹配,(2)在一个字符串中同时查找多个子串。1.对于一对一的匹配,有经典的BF算法(Brute Force)暴力匹配算法:核心思想:字符串匹配算法中有两个核心词:(1)基础字符串(主串)(2)模式串(例如:在字符串A中查找字符串B,那么A就是...

2019-12-20 09:44:34 222

原创 数据结构与算法-----9.散列表:

1.概念:散列表,又称为哈希表。2.散列思想:散列表使用的是数组支持利用下标随机访问数据的特性,散列表是数组的一种扩展,由数组演化而来,可以说:没有 数组就没有散列表。3.为什么需要使用散列表这种数据结构:因为当我们存储结构简单的数据时,可以存入数组中,然后通过下标索引来快速查找。但是如果存储的是例如:zhansan----10,lisi----20,这种一一映射的对应关系时,就不...

2019-12-10 15:08:10 170

原创 java中什么时候需要重写equals和hashCode方法,以及为什么重写:

1.使用Object默认的equals()和hashCode()方法:public class HashCode { private String name; private int age; public HashCode(String name,int age) { this.name = name; this.age = age...

2019-12-05 16:27:39 5375

原创 数据结构与算法-----7.二分查找:

1.概念:二分查找也称为 “折半查找”,采用的是二分思想,每次可以将数据查询的范围缩小为原来的一半,所以它的效率非常高。同时二分查找针对的也是有序的数据集合,它的时间复杂度为O(logn)。2.O(logn)是一个非常恐怖的数量级,即使n非常大,但是对应的logn的结果也是非常的小。2^32次方大约等于42亿,但是我们从42亿个数据中利用二分查找来搜索数据,也就查找32次就够了。3...

2019-12-03 15:21:10 415

原创 设计模式:单例模式

懒汉式:public class Singleton { /* * 使用private的原因是确保不让外界调用该类的构造方法,生成多余的对象*/ private Singleton() {} /* * private 禁止外部类调用该实例,防止对该实例对象进行修改操作 * 使用volatile的原因是防止在jvm层面对生成实例对象时,指令的...

2019-08-19 15:20:13 58

原创 java中字符串的初始化过程以及String Stringbuilder StringBuffer 的区别:

在Java的JVM中,有一个字符串常量池的概念,在jdk 1.7之后,字符串常量池被划分到java的Heap中,Java的八种基本数据类型中,除了float 和 Double ,其他都实现了常量池技术。(字符串常量池底层是用HashTable实现的,以 key---value 的形式存储数据)1. String s1 = "hello world"; String s2 =...

2019-08-01 10:01:34 1109

原创 生产者和消费者:

public class ProductorAndCustomer { /* * 在生产者和消费者的饭店模型中,有四个角色:1.餐馆,2.菜单,3.厨师,4.顾客 * 餐馆中包含:厨师,顾客,菜单三种角色 * */ public static void main(String[] args) { new Restaurant();...

2019-07-23 10:37:04 95

原创 java中实现在控制台输入数据的几种方法:

1.使用Scanner取得一个字符串或一组数字System.out.print("输入");Scanner scan = new Scanner(System.in);String read = scan.nextLine();System.out.println("输入数据:"+read);/*在新增一个Scanner对象时需要一个System.in对象,因为实际上...

2019-07-11 16:41:38 5403

转载 Linux中ifconfig和addr查看不到ip的解决方法

1.在虚拟机上装上Linux系统,开启虚拟机,输入root,并输入密码启动2.打开虚拟机设置,网络适配器中的网络连接选择自定义VMnet8(NAT模式)3.输入查看ip的命令ifconfig,或者ip addr4.若查不到ip,则查看ens33网卡的配置,输入vi /etc/sysconfig/network-scripts/ifcfg-ens33(vi后加空格) 将O...

2019-05-26 21:46:10 1490

原创 如何在Windows下,设置虚拟域名:

1:首先找到本机Host目录文件-----> C:\Windows\System32\drivers\etc\hosts2:修改hosts文件,添加虚拟域名->

2019-05-08 16:47:06 1331

转载 java 性能优化:35 个小细节,让你提升 java 代码的运行效率

原文地址:https://blog.csdn.net/chaishen10000/article/details/89509577代码优化,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,...

2019-04-28 17:30:37 244

原创 JDK 中的 RandomAccess接口有什么作用:

*在java 中的 集合类中,(1)如果有implements RandomAccess接口,在遍历该集合时采用for循环效率会更高。(2)如果没有implements RandomAccess接口,那么在遍历该集合时采用Iterator迭代器的 效率会更高一些。(3)可以在遍历集合之前,使用instanceof关键字来对集合到底属于哪一种类型做一个判断。...

2019-04-28 17:20:24 597

转载 CAS操作中的ABA问题,以及相应的优化:

一、并发业务场景库存业务,stock(sid, num),其中:sid为库存idnum为库存值如上图所示,两个并发的查询库存操作,同时从数据库都得到了库存是5。接下来用户发生了并发的库存扣减动作:用户1购买了3个库存,于是库存要设置为2用户2购买了2个库存,于是库存要设置为3这两个设置库存的接口并发执行,库存会先变成2,再变成3,导致数据不一致(实际卖...

2019-04-22 10:51:41 179

转载 Spring MVC 工作流程:

用户发起请求到前端控制器(DispatcherServlet),该控制器会过滤出哪些请求可以访问Servlet、哪些不能访问。就是url-pattern的作用,并且会加载springmvc.xml配置文件。 前端控制器会找到处理器映射器(HandlerMapping),通过HandlerMapping完成url到controller映射的组件,简单来说,就是将在springmvc...

2019-04-18 16:52:03 75

原创 Java排序算法---快速排序

/** 快速排序的核心思想:1. 需要三个重要元素(左指针,右指针,基准数key[一般采用数组的第一个元素作为基准数])* 2. 如果采用数组的第一个数据作为基准数,那么需要首先右指针向前移动,直到找到比key小的数据停下。* 3. 然后左指针向后移动,直到找到比key大的数据停下* 4. 然后将左右指针所指向的数据做交换* 5. 重复上面的动作,知道左右指针重合 ,最后将左指针或右...

2019-04-18 14:01:27 472 4

原创 java排序算法---简单选择排序

public class SelectSort { public static void main(String[] args) { int[] arr = {5,4,3,2,1,5}; selectSort(arr); for(int i=0;i<arr.length;i++) { System.out.pr...

2019-04-17 16:19:18 98

原创 java排序算法----冒泡排序

public class BubbleSort { /* * 冒泡排序的思想:每次都让相邻的两个元素做比较,小的放前面,大的放后面*/ public static void main(String[] args) { int[] arr = {5,3,4,2,1,1312,-123123}; bubbleSort(arr); ...

2019-04-17 16:18:08 74

原创 java设计模式------观察者模式

概念:当被观察者中的数据发生改变时,观察者这边会立即收到变化以后的数据。观察者模式角色:1)主题 (被观察者-Subject) 2)观察者-Observer所需接口:1)主题接口-ISubject 2)观察者接口-IObserver3)展示接口-IDisplay主题和观察者之间是如何进行关联的 :1)主题 implements ISubject 接口 ,观察者 impleme...

2019-04-03 16:58:59 87

原创 策略模式:

策略模式:定义了算法族(就是行为多变的方法:需要使用接口的方式封装起来),分别封装起来,让他们之间可以互相替换 此模式让算法的变化,独立于使用算法的客户核心思想:多用组合,少用继承,面向接口编程,使程序更加灵活,类与类之间松耦合,扩展性更强。举例:比如我们定义了Duck(鸭子)这个类,那么可以构造出 真鸭,橡皮鸭,木偶鸭..........。它们有共同的...

2019-04-03 16:20:01 91

原创 linux系统中的挂载点:

挂载点是 UNIX/Linux 系统中的磁盘文件系统的入口,类似 Windows 系统中的C盘、D盘等。'/'挂载点:根分区,如果不给其他目录单独分区,则默认存放到该分区中。'/boot'挂载点:引导分区,保存Linux启动文件,通常 200 MiB 就足够了。'/bin'挂载点:系统命令目录。/etc挂载点:存放配置文件的目录。/home挂载点:存放用户文件的目录,多用户的情...

2019-03-29 10:18:02 2574

转载 centOS7 磁盘分区建议:

必须的分区boot分区:作用:引导分区,包含了系统启动的必要内核文件,即使根分区顺坏也能正常引导启动 一般这些文件所占空间在200M以下,分区建议:分区的时候可选100M-500M之间,如果空间足够用,建议分300-500M。避免由于长期使用的冗余文件塞满这个分区...

2019-03-24 15:32:55 1520

转载 CentOS7中,service network restart 命令出错的解决方案:

*****注意:一定要先检查本机的VMware服务是否全部开启首先看问题:执行service network restart命令后出现下面的错误:Restarting network (via systemctl): Job for network.service failed because the control process exited with error code....

2019-03-24 14:44:24 2742

原创 HashMap部分源码分析:

public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { private static final long serialVersionUID = 362498820763181265L; //容...

2019-03-21 14:08:40 113

Tomcat学习总结.zip

当前资源以Tomcat8.5版本为基础,个人学习时总结的原理,以及自己的心得体会,分享给大家,多多沟通,多多交流......

2021-01-12

空空如也

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

TA关注的人

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