自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(138)
  • 资源 (3)
  • 收藏
  • 关注

原创 Elasticsearch(一)基本语法命令

重要】1、关于分词term:直接查询精确的解析(会用到分词器,分词器存在两种情况,text 和 keyword)match:会使用分词器解析!(先分析文档,然后再通过分析的文档进行查询)两个类型text:会被分词器分析keyword:不会被分词器分析。......

2022-08-14 15:06:02 1879 1

原创 MongoDB(一)基本介绍及安装

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。区别官方地址:MongoDB Comm

2022-07-03 18:28:14 298

原创 Java多线程(六)JUC包功能

产生原因:多线程并发场景下,操作如 ArrayList 这种不安全的集合会出现问题,可能后面写入的会覆盖前面的会出现异常 :ConcurrentModificationException 多线程调用的时候:读取场景:直接对数据进行读取写入场景:写入的情况将原先的复制一份,在复制的上面进行写入,写入完成,将此数据覆盖元原先的数据目的:在写入时避免覆盖,造成数据问题 推荐使用:CopyOnWriteArrayList 推荐使用:CopyOnWriteArraySet 推荐使用:C

2022-06-22 00:14:35 433

原创 Java多线程(五)生产者、消费者案例

生产完再消费,消费完再生产:满足数量后才开始进行消费,消费完全部再进行生产一只猫钓鱼,一次钓一条,放桶里,满五条后,拿回家。另一只猫吃鱼,一次吃一条,吃完后,让钓鱼猫再去钓鱼 ,如此继续(1)水桶:用来放鱼(2)创建生产者和消费者(3)main方法测试 (4)执行结果【边生产边消费】生产者:只要不大于5就一直去生产;消费者:只要有就可以一直去消费桶里最多放5条鱼一只猫钓鱼,一次钓一条放桶里同时通知另一只猫吃鱼,一次吃一条同时通知钓鱼猫再钓鱼 (只要桶里鱼不满足5条)如此继

2022-06-21 17:47:52 733 1

转载 Mybatis(四)一级缓存与二级缓存的理解以及用法

先说缓存,合理使用缓存是优化中最常见的,将从数据库中查询出来的数据放入缓存中,下次使用时不必从数据库查询,而是直接从缓存中读取,避免频繁操作数据库,减轻数据库的压力,同时提高系统性能。一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构用于存储缓存数据。不同的sqlSession之间的缓存数据区域是互相不影响的。也就是他只能作用在同一个sqlSession中,不同的sqlSession中的缓存是互相不能读取的。一级缓存的工作原理:用户发起查询请求,

2022-06-11 16:30:14 955

原创 RabbitMQ(五)死信队列与延时队列

DLX,全称为 Dead-Letter-Exchange,可以称为死信交换机,也有人称之为死信邮箱,当消息在一个正常队列中变成死信(dead message)之后,它能被重新发送到另一个交换机中,这个交换机就是DLX,绑定DLX的队列就称之为死信队列。消息变成死信,可能由于以下原因:DLX也是一个正常的交换机,和一般的交换机没有区别,它能在任何队列上被指定。实际上就是设置某一个队列的属性,当这个队列中存在死信时,rabbitMQ就会自动的将这个消息重新发布到设置的DLX上去,进而被路由到另一个队列,即死信队

2022-06-11 00:07:44 1970

转载 Redis(七)主从复制原理浅析

一、缓存穿透的概念缓存穿透的情景:每一次请求不同的值(符合有效的值规则),并且该值是数据库不可能存在的。那么就会出现不停的访问数据库,并返回空。这样就使 redis 无效化,便是缓存穿透。二、布隆过滤器布隆过滤器的本质:位数组(二进制向量) 一系列随机映射函数布隆过滤器实现思想:假设有一个 bit数组,里面存的只有0和1;0代表不存在,1...............

2022-06-07 11:41:11 196 1

转载 Nacos(二)服务注册与发现原理分析

Nacos 另一个非常重要的特性就是服务注册与发现,说到服务的注册与发现相信大家应该都不陌生,在微服务盛行的今天,服务是非常重要的,而在 Nacos 中服务更被称为他的一等公民。Nacos 支持几乎所有主流类型的 “服务” 的发现、配置和管理。了解过 Dubbo 的同学,应该对 Dubbo 的架构非常熟悉,最经典的一张架构图如下所示:图中的6个步骤的含义解释如下:其中图中最上方的 Registry 就是注册中心,负责服务的注册与发现。Dubbo 有自己的 Registry 实现,而 Nacos 则是另一种

2022-06-05 16:16:11 680

转载 雪花算法(SnowFlake)

现在的服务基本是分布式、微服务形式的,而且大数据量也导致分库分表的产生,对于水平分表就需要保证表中 id 的全局唯一性。对于 MySQL 而言,一个表中的主键 id 一般使用自增的方式,但是如果进行水平分表之后,多个表中会生成重复的 id 值。那么如何保证水平分表后的多张表中的 id 是全局唯一性的呢?如果还是借助数据库主键自增的形式,那么可以让不同表初始化一个不同的初始值,然后按指定的步长进行自增。例如有3张拆分表,初始主键值为1,2,3,自增步长为3。当然也有人使用 UUID 来作为主键,但是 UUID

2022-06-05 15:43:36 484

原创 Redis(八)哨兵模式原理浅析

redis 哨兵模式浅析

2022-06-04 18:07:23 302

原创 分布式事务解决方案——Alibaba-seata

一、seata介绍官方文档:Seata 是什么Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。Seata术语TC (Transaction Coordinator) - 事务协调者维护全局和分支事务的状态,驱动全局事务提交或回滚。负责通知命令的中间件Seata-ServerTM (Transaction Manage

2022-05-14 14:56:31 1343 1

转载 Redis(六)单线程I/O多路复用模型浅析

Redis 的 I/O 多路复用模型有效的解决单线程的服务端,使用不阻塞方式处理多个 client 端请求问题。在看 I/O 多路复用知识之前,我们先来看看 Redis 的客服端怎么跟客服端建立连接的、单线程 socket 服务端为什么会存在 I/O 阻塞。一、Redis客户端连接Redis 通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自 client 端的连接,当一个连接建立后,Redis 内部会进行以下一些操作: 首先,客户端 socket 会被设置为非阻塞模

2022-05-01 20:30:54 921

原创 CentOS 7 安装MySQL 5.7

一、下载1、下载安装包2、解压:使用 tar -zxvf 文件名进行解压。3、移动路径、文件夹改名:将解压的文件夹移动到usr路径下自定义一个文件夹移动路径:使用命令 mv 当前文件名(或路径) 空格 移动到的目标路径/:(例如:mv anaconda-ks.cfg 1dir/)mv /home/marvin/My_Software/Development/mysql-5.7.26-linux-glibc2.12-x86_64 /usr/my_develop_sof

2022-04-30 17:50:03 2394 1

转载 Redis(五)缓存雪崩、缓存击穿、缓存穿透

一、缓存雪崩通常我们为了保证缓存中的数据与数据库中的数据一致性,会给 Redis 里的数据设置过期时间,当缓存数据过期后,用户访问的数据如果不在缓存里,业务系统需要重新生成缓存,因此就会访问数据库,并将数据更新到 Redis 里,这样后续请求都可以直接命中缓存。那么,当大量缓存数据在同一时间过期(失效)或者 Redis 故障宕机时,如果此时有大量的用户请求,都无法在 Redis 中处理,于是全部请求都直接访问数据库,从而导致数据库的压力骤增,严重的会造成数据库宕机,从而形成一系列连锁反应,造成

2022-04-23 17:41:33 299

原创 Spring 三级缓存解决循环依赖原理分析

一、实例化和初始化的区别实例化:只是单纯的把对象 new 一下就行了;例:Student st=new Student();在构造一个实例的时候需要在内存中开辟空间初始化:是在实例化的基础上,并且对 对象中的值进行赋一下初始值(这样的好处是避免当你没有赋值的时候,可以用这个初始的值来代替,友好的帮助你的功能)Spring解决循环依赖的原理分析在这之前需要明白java中所谓的引用传递和值传递的区别。说明:看到这句话可能有小伙伴就想喷我了。java中明明都是值传递啊,这是我初学jav.

2022-04-21 17:04:50 3584 2

原创 Docker(三)常用容器安装系列

一、Elasticsearch1、下载镜像到本地docker pull elasticsearch:7.17.02、创建容器(1)创建用户定义的网络(用于连接到同一网络的其他服务(例如 Kibana))docker network create somenetwork(2)创建容器docker run-d --name 【创建的容器名】--net 【网络名】-p 【主机(宿主)端口】:【容器端口】【本地镜像仓库下载的镜像名-REPOSITORY】:【需要的版..

2022-04-08 16:45:55 2423

原创 Docker(二)常用命令

一、帮助命令docker versiondocker infodocker 命令 --help帮助文档的地址:Reference documentation | Docker Documentation二、镜像命令1、images(查看本地镜像)查看所有本地的主机上的镜像docker images [OPTIONS] [REPOSITORY[:TAG]]docker images -a 所有镜像docker iamges -q 所有镜像ID docker.

2022-04-07 11:43:05 14604

原创 Docker(一)安装和卸载

一、环境准备centOS 7环境查看查看系统内核:系统内核需要 3.10 以上的(必须)uname -r查看系统版本cat /etc/os-release二、安装Docker官方帮助文档:Install Docker Engine on CentOS | Docker Documentation1、卸载旧的版本(如果安装过)yum remove docker \ docker-client \ ...

2022-04-05 22:19:32 1179

原创 Nacos(一)基本介绍及安装

一、下载Nacos官方这里从GitHub上下载你需要的版本:https://github.com/alibaba/nacos/releases二、安装和启动参考官方的Nacos快速开始手册:https://nacos.io/zh-cn/docs/quick-start.html我这里使用的是1.4.0.zip1、将下载的zip包解压并放到自己定义的文件夹下,解压后的内容如下解压命令unzip nacos-server-1.4.0.zip2、启动进入 bi..

2021-10-08 15:00:58 1621

转载 Linux 各目录及每个目录的详细介绍

【常见目录说明】 目录 /bin 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里。 /etc 存放系统管理和配置文件 /home 存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示 /usr 用于存放系统..

2021-04-14 16:03:00 465

转载 mysql 解决ONLY_FULL_GROUP_BY的问题

问题描述报错如上图 在mysql 5.7版本下可能会报如下错误Error Code: 1055. Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘×××’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=o..

2021-03-25 14:20:38 5630 2

原创 Elasticsearch 安装

一、安装1、使用rpm 安装(去官网下载rpm安装包)rpm -ivh elasticsearch-7.10.1-x86_64.rpm这一条命令就可以安装好es,并且自动就配置好了环境。命令描述:rpm -i 需要安装的包文件名举例如下:rpm -i example.rpm 安装 example.rpm 包;rpm -iv example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息;rpm -ivh example.rpm 安装...

2021-02-19 14:15:16 309

原创 CentOS 卸载、安装JDK

一、查看和卸载JDK使用命令java 、javac 、 java -version来查看是否安装了JDK通过命令查看系统已安装的jdkrpm -qa | grep java 或rpm -qa | grep jdk命令来查询出系统自带的jdk(蓝框的四个就是系统自带的)注:其余的不要删然后通过 rpm -e --nodeps 后面跟系统自带的jdk名 这个命令来删除系统自带的jdk,例如:rpm -e --nodeps java-1.8.0-openj...

2021-02-14 21:37:20 8876 3

原创 Linux 常用命令(二)

服务器常用执行命令一、tail 命令tail 命令可用于查看文件的内容,有一个常用的参数-f常用于查阅正在改变的日志文件。tail -f filename会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。命令格式:tail [参数] [文件] 参数:-f 循环读取 -q 不显示处理信息 -v 显示详细的处理信息 -c<数目> 显示的字节数 -n<行数> 显示...

2021-02-14 15:13:10 178

原创 Linux 软件安装与卸载(未完成)

一、描述Redhat提供了 rpm 管理体系已经编译的软件包:针对不同的平台系统编译目标软件包软件包包含依赖检查,但还需要认为解决rpm安装: -ivh filename --prefixrpm卸载: -e PACKAGE_NAME命令 描述 rpm -qa 查询已经安装的所有包 rpm -q PACKAGE_NAME 查...

2021-02-14 15:12:27 220

转载 MySQL查看SQL性能分析(explain关键字)

Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优化语句。Explain语法:explain select … from … [where ...]例如:explain select * from news;首先需要注意:MYSQL 5.6.3以前只能EXPLAIN SELECT; MYSQL5.6.3以后就可以EXPLAIN SELE...

2020-10-09 16:39:43 1970

原创 Spring Bean 生命周期

一、Spring核心模块介绍1. Spring Core:Core封装包是框架的最基础部分,提供IOC和依赖注入特性。这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。2.Spring Context:构建于Core封装包基础上的 Context封装包,提供了一种框架式的对象访问方法,有些象JNDI注册器。Context封装包的特性得自于Beans封装包,并添加了对国际化(I18N).

2020-09-24 14:02:10 4498 1

转载 Java类的 初始化 和 实例化区别

类的初始化:是完成程序执行前的准备工作。在这个阶段,静态的(变量,方法,代码块)会被执行。同时在会开辟一块存储空间用来存放静态的数据。初始化只在类加载的时候执行一次。类的实例化:是指创建一个对象的过程。这个过程中会在堆中开辟内存,将一些非静态的方法,变量存放在里面。在程序执行的过程中,可以创建多个对象,既多次实例化。每次实例化都会开辟一块新的内存。1.主要区别2.基础知识2.1 java类的生命周期:指一个class文件从加载到卸载的全过程,类的完整生命周期包括7个部分:...

2020-09-23 17:13:30 8701

原创 Java 8 新特性(三)Stream API

一、Stream APIJava 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。元素流在管道中经过中间操作(intermediate operation)的处理,最后由最终操作(terminal operation)得到前面处理的结果。生成流在 Java 8 中, 集合接口有两个方法来生成流: stream()− 为集合..

2020-08-01 20:41:13 5920 1

原创 Springboot(三)配置文件自定义

一、自定义属性在用IDEA创建一个Spring Boot工程时,系统默认会在src/main/java/resources目录建一个配置文件application.properties。它也支持yml格式的文件,下面以yml格式的文件来讲解如何自定义属性。在工程的配置文件application.yml自定义一组属性,如下:如果要读取配置文件application.yml的属性值,只需在变量上加@Value("${属性名}")注解,就可以将配置文件application.yml的一个属性值赋给一.

2020-07-06 21:10:13 310

转载 Mybatis(三)常用配置信息

一、控制台输出执行SQL语句springboot+mybatis整合过程中,开启控制台sql语句打印的多种方式:附:mybatis官方文档方法一:1.在mybatis的配置文件中添加:<settings> <!-- 打印sql日志 --> <setting name="logImpl" value="STDOUT_LOGGING" /></settings>mybatis的配置文件----mybatis-config....

2020-06-30 13:55:33 1575

原创 Java 8 新特性(二)Lambda表达式

一、Lambda表达式简介个人理解,lambda表达式就是一种新的语法,没有什么新奇的,简化了开发者的编码,其实底层还是一些常规的代码。Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。Lambda表达式的语法(记得要在jdk1.8及以上的jdk环境下实验)Lambda 表达式的基础语法:Java8中引入了一个新的操作符"- &g..

2020-06-16 23:39:51 336

原创 MySQL事务及锁机制

一、事务的四大特性(ACID)原子性(Atomicity):不可拆分,全部成功或全部失败 一致性(Consistent):完整性约束不能被破坏(自定义完整性、数据库自身完整性) 隔离性(Isolation):并发情况下,行和表的操作,相互不影响,相互隔离开 持久性(Durable):提交成功,就是永久性的。不能服务一重启后就变回原来的、二、事务提交的三大问题(事物隔离级别控制)...

2020-05-04 15:20:03 1208

转载 String使用 final 修饰的目的

一、描述String 类被声明成final类型,不能被继承 。通过String源码可以看到,String类型的底层是由final修饰的char数组存储,在value初始化完成后不能被其他数组引用,在String类方法中没有改变数组的方法,确保String不可变Java语言的创建者James Gosling,曾经在一次采访中被人问到:什么时候应该使用不可变对象(immutable ob...

2020-03-08 20:35:51 916 1

原创 ActiveMQ入门

一、管理界面进入管理界面的地址:http://localhost:8161(IP:端口号)1、Queues(队列)标示 描述 Name 队列名称 Number Of Pending Messages 队列中有多少个消息等待出队列 Number Of Consumers 队列中有多少个消费者 Messages Enqueued 队列共有多...

2020-03-05 15:39:25 1379

转载 IntelliJ Idea配置maven的新settings无效

用idea开发了两三年没有遇到这个问题,这次突然遇到jar包,版本号unknown的问题。通过idea工具maven的clean发现寻找jar包的私服地址不对,才发现配置的settings.xml文件未生效。具体情况如下:这么配置好后却不一定生效,测试方式日志会显示寻找私服地址。网上原因解释,是因为idea寻找maven的settings文件的先后顺序导致的(也可能根本就是一个bug)...

2020-03-03 12:23:00 3486

原创 Linux 常用命令(整理中)

linux vi命令编辑模式  使用vi进入文本后,按i开始编辑文本退出编辑模式   按ESC键,然后:    退出vi   :q! 不保存文件,强制退出vi命令    :w 保存文件,不退出vi命令    :wq 保存文件,退出vi命令使用vi命令进行删除dd --删除当前行ndd --删除n行数据dG --删除当前后之后的全部行...

2020-02-27 21:43:53 743

转载 Spring使用的设计模式

JDK 中用到了那些设计模式?Spring 中用到了那些设计模式?这两个问题,在面试中比较常见。我在网上搜索了一下关于 Spring 中设计模式的讲解几乎都是千篇一律,而且大部分都年代久远。所以,花了几天时间自己总结了一下,由于我的个人能力有限,文中如有任何错误各位都可以指出。另外,文章篇幅有限,对于设计模式以及一些源码的解读我只是一笔带过,这篇文章的主要目的是回顾一下 Spring 中的设计模式...

2020-02-24 16:54:36 282

原创 SQL的几种连接查询方式(内连接、外连接、全连接、联合查询)

准备表drop table if exists test_a;CREATE TABLE `test_a` ( `id` varchar(10) NOT NULL, `username` varchar(10) NOT NULL, `password` varchar(10) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFA...

2020-02-24 16:26:41 3329 1

转载 Spring Cloud(二-2) SpringCloud 注册中心 Eureka 集群是怎么保持数据一致的?

服务注册中心不可能是单点的,一定会有一个集群,那么集群中的服务注册信息如何在集群中保持一致的呢?首先要明确的是 Eureka 是弱数据一致性的。下面从2个方面来说明:什么是弱数据一致性 Eureka 是如何同步数据的1. 弱数据一致性我们知道 ZooKeeper 也可以实现数据中心,ZooKeeper 就是强一致性的。分布式系统中有一个重要理论:CAP。该...

2020-02-07 15:00:05 1279 2

c32asm_2.0.1.rar

c32asm是一款非常好用的反汇编软件。具有反汇编模式和十六进制编辑模式 ,反编译Exe、Dll等,能跟踪exe文件的断点,也可直接修改软件内部代码,

2020-03-04

Book of Vaadin7中文.pdf

Vaadin7中文版文档第4版

2016-07-28

程序员的思维修炼 中文版 pdf

思考如何解决问题,并就开发人员如何能更好地开发软件进行了评论

2015-11-27

空空如也

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

TA关注的人

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