自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 消息队列学习笔记

全称为Message Queue。“消息队列”是在消息的传输过程中保存消息的容器。它是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,这样就实现了生产者和消费者的解耦。

2023-12-21 15:05:15 1056

原创 分布式锁概述

我们知道传统进程内的多线程指尖可以利用锁机制来实现它的同步机制,同时进程之间也可以互相通信,那我我们如果使用分布式服务的话,有应该怎么实现集群内多服务之间访问公共资源,并且确保它们不会出现问题呢?其实有一种概念就帮我们实现了这一点,那就是分布式锁。分布式锁其实可以理解为:控制分布式系统有序的去对共享资源进行操作,通过互斥来保持一致性。

2023-12-21 14:30:18 921

原创 Redis-学习笔记

Redis的字符串是动态字符串,是可以修改的字符串,它的内部表示就是一个字符数组,内部结构的实现类似于Java的ArrayList,它的内部结构是一个带长度信息的字节数组。

2023-12-21 14:21:40 1249

原创 计算机操作系统学习笔记

为了在多进程环境下,使得进程之间的内存地址不受影响,相互隔离,于是操作系统就为每个进程独立分配一套的虚拟地址空间,每个程序只关心自己的虚拟地址就可以,实际上大家的虚拟地址都是一样的,但分布到物理地址内存是不一样的。作为程序,也不用关心物理地址的事情。每个进程都有自己的虚拟空间,而物理内存只有一个,所以当启用了大量的进程,物理内存必然会很紧张,于是操作系统会通过内存交换技术,把不常使用的内存暂时存放到硬盘(换出),在需要的时候再装载回物理内存(换入)。

2023-12-20 16:51:19 1226

原创 Docker学习笔记

相信很多人都用过虚拟机。所谓虚拟机,就是在你的操作系统里面装一个软件,然后通过这个软件,再模拟一台甚至多台“子电脑”出来,如图:虚拟机,类似于“子电脑”在“子电脑”里,你可以和正常电脑一样运行程序,例如开QQ。如果你愿意,你可以变出好几个“子电脑”,里面都开上QQ。“子电脑”和“子电脑”之间,是相互隔离的,互不影响。虚拟机属于虚拟化技术。而Docker这样的容器技术,也是虚拟化技术,属于轻量级的虚拟化。

2023-12-20 15:38:28 1114

原创 计算机网络-网络协议

书本上的定义:网络协议是为计算机网络中进行数据交换而建立的规则、标准或约定的集合。比如:中国人之间交流使用汉语,要遵循汉语的语法结构和发音;那如果我们跟英国人交流的话,就要使用英语的语法结构和发音;人与人之间交流所用的语言就是一种协议。对于计算机来说,两台机器之间的通信就要制定各种各样的协议,例如:文件传输使用TCP协议,域名系统使用DNS协议。数据根据协议规定的内容进行传输,这样就实现了两台机器之间的通信。总的来说:网络协议就是人为规定的一套通信规范,只要双方都遵循这个规范,就能实现交流。

2023-12-19 11:45:51 1137

原创 Mysql学习笔记

数据库和表createalterdroptruncate(删除当前表再新建一个一模一样的表结构)创建数据库:create database 库名;删除数据库:drop database 库名;切换数据库:use 库名;创建表:create table 表名(字段名 类型(大小) 关系描述);查看数据库里存在的表:show tables;修改表:alter table 表名 约束;删除表:drop table 表名;查看生成表的sql语句:show create table 表名;

2023-12-19 10:53:46 1025

原创 Java-IO流

File文件和目录路径名的抽象表示形式。Java中把文件或者目录(文件夹)都封装成File对象。也就是说如果我们要去操作硬盘上的文件,或者文件夹只要找到File这个类即可。一个目录中可能有多个文件或者文件夹,那么如果File中有功能获取到一个目录中的所有文件和文件夹,那么功能得到的结果要么是数组,要么是集合。//获取的是目录下的当前的文件以及文件夹的名称。//获取目录下当前文件以及文件对象,只要拿到了文件对象,那么就可以获取其中想要的信息。

2023-12-15 18:00:51 824

原创 Java-线程&锁

对于多线程的概念,其实很容易理解,之前我们的学习中无论多长或者怎样的代码,都是线性执行的,也就是很显而易见的,这也是所有语言中最常见的执行方式,那么这种执行方式有什么弊端呢?或者说有什么可以优化的点呢?在一些较为复杂的场景里,实际上这种线性执行并不需要,举个例子:当我们在实际应用中想要获取用户的个人信息时,可能即要用户的用户名和头像,还有用户的手机号和地址等信息,一些而用户名和头像是非隐私信息,我们可以存在一起,而手机等隐私信息显然我们需要用更加保密的方式存,既然不是存在一起的,那么线性获取就有弊端。

2023-12-15 17:42:12 1019

原创 Java-面向对象

Java入门学习笔记第三弹

2023-12-15 16:49:52 893

原创 Java-基础部分(二)

Java入门学习笔记第二弹

2023-12-14 21:34:31 1088

原创 Java-基础部分(一)

java学习笔记整理第一弹

2023-12-14 16:33:35 989

原创 Mysql锁机制+MVCC

Mysql的锁机制是我们在使用Mysql的时候所遇见的最为常见的一个处理并发的机制,尤其因为InnoDB引擎支持事务的特性,因此对于锁机制显得更加重要。下面我们好好聊聊Mysql的锁机制。一、前言数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,为了保证数据的一致性,数据库需要合理地控制资源的访问规则。而锁就是用来实现这些访问规则的重要机制。数据表就好比您开的一家酒店,而每行数据就像酒店的房间,如果大家随意进出,就会出现多人抢夺同一个房间的情况,而在房间上装上锁,

2021-09-12 00:37:21 760

原创 HTTPS的加密方式超详细解读

在了解https的加密方式之前,我们需要先行了解两个特别经典的传统加密方式,以此开始我们今天的学习之旅途。1、对称加密1.1、定义需要对加密和解密使用相同密钥的加密算法。所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥是控制加密及解密过程的指令。算法是一组规则,规定如何进行加密和解密。注意:对称加密也叫密钥加密。1.2、密钥形式采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。1.3、优

2021-07-30 00:01:12 16304 3

原创 在Docker上面部署RocketMQ

在Docker上部署RocketMq主要有以下几个步骤,我是用的CenOS虚拟机,但是命令就是这几个,综合了很多大佬的文章,整理出来一个整体步骤,请大家斧正!!!1、创建namesrv容器创建namesrv容器时部署RocketMQ的基础,方式也很简单。1、拉取镜像docker pull rocketmqinc/rocketmq:4.4.02、新建文件夹用于存放我们的容器位置,我的叫/home/linux。大家的需要自行设置。mkdir /home/linux/mq3、启

2021-07-25 00:07:58 5833 5

原创 BIO、NIO,AIO的区别

BIO:阻塞IO概念图示同步并阻塞IO(传统阻塞型)服务器实现为一个连接一个线程,即客户端有请求服务端就需要启动一个线程,但是这个连接如果不做任何处理,就会浪费资源,如图所示:代码实现服务端:package BIO;import java.net.InetSocketAddress;import java.net.ServerSocket;import java.net.Socket;public class Server { public static void mai

2021-05-08 00:20:23 130 2

原创 JVM之类加载

在java中,类加载和它的双亲委派机制是很重要的一部分知识,本文中通过四个方面,重点说一下这个过程。一、类加载机制在了解类加载过程之前,我们先了解一下java文件的编译过程,就是通过javac编译生成.class文件,在通过JVM生成机器码的过程。它的主要过程有:1、词法分析2、语法分析3、中间代码生成4、代码优化5、代码生成经过这五个过程,就会将.java文件变成.class文件,这个.class文件就是JVM可以识别的代码文件。这个.class文件是一个字节码文件

2021-04-07 00:56:20 270

原创 解决Hash冲突的几种方法

众所周知,通过哈希函数产生的哈希值是有限的,而数据可能比较多,导致经过哈希函数处理后仍然有不同的数据对应相同的值。这时候就产生了哈希冲突。拿HashMap来说,就是根据key即经过一个函数f(key)得到的结果的作为地址去存放当前的key value键值对,但是却发现算出来的地址上已经有人先来了,这就是所谓的hash冲突啦对应不同的关键字可能获得相同的hash地址,即 key1≠key2,但是f(key1)=f(key2)。这种现象就是冲突,而且这种冲突只能尽可能的减少,不能完全避免。因为哈希函数是从

2021-04-05 23:22:53 886

原创 Spring两大特性IOC和AOP究竟是什么东西

1、Spring简介1.1、Spring诞生顾名思义,Spring : 春天 —>给软件行业带来了春天。2002年,Rod Jahnson首次推出了Spring框架雏形interface21框架。2004年3月24日,Spring框架以interface21框架为基础,经过重新设计,发布了1.0正式版。很难想象Rod Johnson的学历 , 他是悉尼大学的博士,然而他的专业不是计算机,而是音乐学。Spring理念 : 使现有技术更加实用 . 本身就是一个大杂烩 , 整合现有的

2021-04-03 16:43:01 706 1

原创 MySQL-索引详解

一、什么是索引?索引:是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。索引是一种数据结构。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。更通俗的说,索引就相当于目录。为了方便查找书中的内容,通过对内容建立索引形成目录。索引是一个文件,它是要占据物理空间的。二、为什么要使用索引?索引的优点:可以大大加快数据的检索速度,这也是创建索引的最主要的原因。

2021-03-28 15:06:04 1059 1

原创 JVM之垃圾回收

说起垃圾回收,我们都知道,传统的C/C++等编程语言,需要程序员负责回收已经分配出去的内存。显示进行垃圾回收是一件令人头疼的事情,因为程序员并不总是知道内存应如何时进行释放。如果一些分配出去的内存不能及时的回收就会引起系统运行速度下降,甚至导致程序瘫痪,这种现象称为内存泄露。Java相比于C++一大特点便是其特有的自动垃圾回收机制,有了它,我们就可以不用再关系内存分配的问题了,也一般不需要担心出现内存泄漏。大家也可以愉快的聚焦于业务发展。那么Java的GC回收到底是怎么实现的呢,本文就来简单的说一下。..

2021-03-27 23:30:47 418

原创 常见几个设计模式(面试自自备)

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,是可复用面向对象软件的基础。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是

2021-03-16 17:26:00 482

原创 Spring&Mysql事务小记

前言:Spring的事务,也就是数据库的事务操作,符合ACID标准,也具有标准的事务隔离级别。但是Spring事务有自己的特点,也就是事务传播机制。所谓事务传播机制,也就是在事务在多个方法的调用中是如何传递的,是重新创建事务还是使用父方法的事务?父方法的回滚对子方法的事务是否有影响?这些都是可以通过事务传播机制来决定的。1、传播机制Spring自己以及定义了七种传播行为,我们只需要了解记住,避免用的时候踩坑。public interface TransactionDefinition

2021-02-08 15:05:22 489

原创 Java之线程池

众所周知,我们在创建线程时有四种方法可以用,分别是:1、继承Thread类创建线程2、实现Runnable接口创建线程3、使用Callable和Future创建线程4、使用线程池创建(使用java.util.concurrent.Executor接口)其中第一、二中最为简单,我已经在前面线程部分详细解释过,不懂得可以去看看:多线程。今天我们聊聊其他两种和他们的区别。1、使用Callable接口和Future创建线程和Runnable接口不一样,Callable接口提供了一个call()方法作

2021-02-08 10:57:45 6586

原创 JVM之内存模型

对于JVM的内存模型,面试中通常会直接问你对它的认识和了解多少,所以我们的回到应该由浅入深,逐层刨析。一. Java 虚拟机内存模型首先,我们得知道,JVM内存空间分为五部分,分别是:方法区、堆、Java虚拟机栈、本地方法栈、程序计数器。这些数据区域可以分为两个部分:一部分是线程共享的,一部分则是线程私有的。其中,线程共享的数据区包括方法区和堆,线程私有的数据区包括虚拟机栈、本地方法栈和程序计数器。如下图所示:接下来我们挨个再说。1.1、线程共享数据区域1.1.1、方法区方法区用于存储已被虚

2021-02-07 12:27:20 1373

原创 HashMap深度研究

集合中,HashMap绝对是是面试中的一大常考点,特别重要,特别是它的另两个兄弟Hashtable和ConcurrentHashMap,加起来更加让人混淆,今天我大致梳理以下:1、HashMap1.1、HashMap的底层实现原理上面我们说道:1、数组使用下标维护数据,所以查找起来比较快,但是插入和删除的话需要移动后面的数据,数据插入和删除比较慢。2、链表使用指针来维护链表结构,查找起来比较慢,因为要从第一个结点开始查找,但是插入和删除的话不需要移动数据,只需要改变指针的指向就可以了,所以插入和

2021-02-06 16:07:43 395 3

原创 List集合

1、ArrayList和LinkedList区别众所周知,甚至顾名思义我们都知道,ArrayList和LinkedList一个是数组型集合一个是链表型集合。于是,在搞清楚它们的区别时,我们不妨先看看数组和链表的区别:1.1、数组与链表1.1.1、数组数组的优点:随机访问性强查找速度快数组的缺点:插入和删除效率低,必须移动数组可能浪费内存 内存空间要求高,必须有足够的连续内存空间。数组大小固定,不能动态拓展1.1.2、链表链表的优点:插入删除速度快,只需通过指针指向对象地

2021-02-06 16:02:13 1515

微信小程序强强强强强强强强

微信小程序强强强强强强强强

2024-04-26

空空如也

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

TA关注的人

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