自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ElasticSearch

一、ES的简单介绍ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,El

2021-12-04 17:36:34 2155

原创 ThreadPool讲解

1.1获取线程的方法实现Runnable接口 实现Callable接口 实例化Thread类 使用线程池获取1.2为什么用线程池线程池主要工作是控制运行的线程的数量,处理过程中,将任务放入到队列中,然后线程创建后,启动这些任务,如果线程数量超过了最大数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。1.2.1 它的主要特点为:线程复用、控制最大并发数、管理线程1.2.2 线程池中的任务是放入到阻塞队列中的1.2.3线程池的好处降低资源消耗。通过重复利用已创建的

2021-11-30 15:45:48 1774

原创 jna调用dll方式实例与错误解决

1.实例package com.dll;/** * @Description: 需要引入的jna依赖 * <dependency> * <groupId>net.java.dev.jna</groupId> * <artifactId>jna</artifactId> * <version>3.4.0</version> *</dependency> */import com.sun..

2021-11-30 14:59:33 1430

原创 Docker(一)------ Docker安装

1.安装gccyum -y install gccyum -y install gcc-c++2.卸载旧版本sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker

2020-08-01 14:57:38 195

转载 Redis详解(十八)------ Redis布隆过滤器

1、布隆过滤器使用场景  比如有如下几个需求:  ①、原本有10亿个号码,现在又来了10万个号码,要快速准确判断这10万个号码是否在10亿个号码库中?  解决办法一:将10亿个号码存入数据库中,进行数据库查询,准确性有了,但是速度会比较慢。  解决办法二:将10亿号码放入内存中,比如Redis缓存中,这里我们算一下占用内存大小:10亿*8字节=8GB,通过内存查询,准确性和速度都有了,但是大约8gb的内存空间,挺浪费内存空间的。  ②、接触过爬虫的,应该有这么一个需求,需要爬虫的网站千千

2020-08-01 13:18:00 405

转载 Redis详解(十七)------ 缓存穿透、缓存击穿、缓存雪崩

1、缓存穿透一、概念  缓存穿透:缓存和数据库中都没有的数据,可用户还是源源不断的发起请求,导致每次请求都会到数据库,从而压垮数据库。  如下图红色的流程:    比如客户查询一个根本不存在的东西,首先从Redis中查不到,然后会去数据库中查询,数据库中也查询不到,那么就不会将数据放入到缓存中,后面如果还有类似源源不断的请求,最后都会压到数据库来处理,从而给数据库造成巨大的压力。二、解决办法  ①、业务层校验  用户发过来的请求,根据请求参数进行校验,对于明显..

2020-08-01 13:17:45 187

转载 Redis详解(十六)------ 过期删除策略和内存淘汰策略

在介绍这篇文章之前,我们先来看如下几个问题:①、如何设置Redis键的过期时间?②、设置完一个键的过期时间后,到了这个时间,这个键还能获取到么?假如获取不到那这个键还占据着内存吗?③、如何设置Redis的内存大小?当内存满了之后,Redis有哪些内存淘汰策略?我们又该如何选择?如果上面的几个问题你都懂,那么下面的内容你就不用看了;如果你不是很懂,那就带着这些问题往下看。1、设置Redis键过期时间  Redis提供了四个命令来设置过期时间(生存时间)。  ①、EXPIRE &lt

2020-08-01 13:17:32 216

转载 Redis详解(十五)------ 集群模式详解

1、为什么需要集群?  ①、并发量  通常来说,单台Redis能够执行10万/秒的命令,这个并发基本上能够满足我们所有需求了,但有时候比如做离线计算,为了更快的得出结果,有时候我们希望超过这个并发,那这个时候单机就不满足我们需求了,就需要集群了.  ②、数据量  通常来说,单台服务器的内存大概在16G-256G之间,前面我们说Redis数据量都是存在内存中的,那如果实际业务要保存在Redis的数据量超过了单台机器的内存,这个时候最简单的方法是增加服务器内存,但是单台服务器内存不可能无限制..

2020-08-01 13:17:15 403

转载 Redis详解(十四)------ 哨兵(Sentinel)模式详解

1、架构图  2、服务器列表  3、搭建主从模式  ①、主要配置项  主服务器(上图的Node1)配置文件 redis.config 主要配置项: 1 2 3 4 5 6 7 8 9 10 #配置端口 port6379 #以守护进程模式启动 daemonize yes #pid的存放文件 pidfile /var/run/red...

2020-08-01 13:16:52 614

转载 Redis详解(十三)------ 主从复制

  前面介绍Redis,我们都在一台服务器上进行操作的,也就是说读和写以及备份操作都是在一台Redis服务器上进行的,那么随着项目访问量的增加,对Redis服务器的操作也越加频繁,虽然Redis读写速度都很快,但是一定程度上也会造成一定的延时,那么为了解决访问量大的问题,通常会采取的一种方式是主从架构Master/Slave,Master 以写为主,Slave 以读为主,Master 主节点更新后根据配置,自动同步到从机Slave 节点。  接下来我们就来介绍如何进行主从架构的搭建。  ps:这..

2020-08-01 13:16:21 130

转载 Redis详解(十二)------ AOF 持久化

上一篇文章我们介绍了Redis的RDB持久化,RDB 持久化存在一个缺点是一定时间内做一次备份,如果redis意外down掉的话,就会丢失最后一次快照后的所有修改(数据有丢失)。对于数据完整性要求很严格的需求,怎么解决呢?  本篇博客接着来介绍Redis的另一种持久化方式——AOF。1、AOF简介  Redis的持久化方式之一RDB是通过保存数据库中的键值对来记录数据库的状态。而另一种持久化方式 AOF 则是通过保存Redis服务器所执行的写命令来记录数据库状态。  比如对于如...

2020-08-01 13:16:04 179

转载 Redis详解(十一)------ RDB 持久化

前面我们说过,Redis 相对于Memcache 等其他的缓存产品,有一个比较明显的优势就是 Redis 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。这几种丰富的数据类型我们花了两篇文章进行了详细的介绍,接下来我们要介绍 Redis 的另外一大优势——持久化。由于 Redis 是一个内存数据库,所谓内存数据库,就是将数据库中的内容保存在内存中,这与传统的MySQL,Oracle等关系型数据库直接将内容保存到硬盘中相比,内存数据库的读写效率比.

2020-08-01 13:15:43 173

转载 Redis详解(十)------ Redis的五大数据类型实现原理

在Redis中,并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这些对象系统也就是前面说的五大数据类型,每一种数据类型都至少用到了一种数据结构。通过这五种不同类型的对象,Redis可以在执行命令之前,根据对象的类型判断一个对象是否可以执行给定的命令,而且可以针对不同的场景,为对象设置多种不同的数据结构,从而优化对象在不同场景下的使用效率。1、对象的类型与编码  Redis使用前面说的五大数据类型来表示键和值,每次在Redis数据库中创建一个键值对时,至少会创建两

2020-07-31 16:31:29 344

转载 Redis详解(九)------ Redis的底层数据结构

1、演示数据类型的实现  上篇博客我们在介绍 key 相关命令的时候,介绍了如下命令:OBJECT ENCODING key   该命令是用来显示那五大数据类型的底层数据结构。  比如对于 string 数据类型:    我们可以看到实现string数据类型的数据结构有 embstr 以及 int。  再比如 list 数据类型:    这里我们就不做过多的演示了,那么上次出现的 embstr 以及 int 还有 quicklist 是什么数据结构呢?下面我们就来

2020-07-31 16:31:14 306

转载 Redis详解(五)------Redis数据结构之Hash

序言Hash数据结构累似c#中的dictionary,大家对数组应该比较了解,数组是通过索引快速定位到指定元素的,无论是访问数组的第一个元素还是最后一个元素,所耗费的时间都是一样的,但是数组中的索引却没有实际意义,他只是一个位置而已。而我们在查找某个元素时,一般都会使用有意义的字段来做索引,这就产生啦dictionary。其实dictionary的实现,就是让key跟下标索引有一定的关系,所实现的,让他的查找算法复杂度变为常数O(1)。redis中hash对单个key/value操作的命令演示r

2020-07-31 16:31:01 399

转载 Redis详解(八)------ Redis的配置文件介绍

在Redis的解压目录下有个很重要的配置文件redis.conf(/opt/redis-4.0.9目录下),关于Redis的很多功能的配置都在此文件中完成的,一般为了不破坏安装的文件,出厂默认配置最好不要去改,所以我们将此配置文件复制到 /etc/redis/目录下了。通过 vim /etc/redis/redis.conf 命令打开此文件。下面我们将详细介绍此配置文件。回到顶部1、开头说明    这里没什么好说的,需要注意的是后面需要使用内存大小时,可以指定单位,通常是以 k,gb,...

2020-07-31 16:30:50 334

转载 Redis详解(七)------Redis中的事务详解

序言本篇主要目的有二:1、展示所有数据类型中key的所有操作命令,以供大家学习,查阅,更深入的挖掘redis潜力。2、掌握redis中的事务,让你的数据完整性一致性拥有更优的保障。redis命令之key操作命令一览#查看命令keys,此命令支持glob-style的通配符格式,*表示可以匹配任意一个或多个字符,?表示任意一个字符,[abc]表示a、b、c中的任意一个字符#redis 127.0.0.1:6379>flushdb ----清除当前数据库。redis 12..

2020-07-31 16:30:34 286

转载 Redis详解(六)------Redis数据结构之Zset

序言Zset跟Set之间可以有并集运算,因为他们存储的数据字符串集合,不能有一样的成员出现在一个zset中,但是为什么有了set还要有zset呢?zset叫做有序集合,而set是无序的,zset怎么做到有序的呢?就是zset的每一个成员都有一个分数与之对应,并且分数是可以重复的。有序集合的增删改由于有啦排序,执行效率就是非常快速的,即便是访问集合中间的数据也是非常高效的。下面我来展示下操作zset的redis命令操作单个zset的redis命令1、添加,如果值存在添加,将会重新排序。zadd

2020-07-31 16:30:17 208

转载 Redis详解(二)------ Redis数据结构之String

前言Redis主要支持的数据类型有5种:String ,Hash ,List ,Set ,和Sorted Set。下面我针对Redis支持的这几种数据类型做详细操作展示,供大家理解记忆。Redis数据类型Stringstring类型在redis中是最常见的类型,value存储最大数据量为512M,可以存放json数据,图像数据等等。下面跟着敲Redis命令操作String类型数据的代码吧。redis数据写命令Set,相当于数据插入redis 127.0.0.1:6379>.

2020-07-31 16:16:49 149

转载 Redis详解(一)------Redis的简介与安装

1、Redis 的简介  Redis:REmote DIctionary Server(远程字典服务)。  是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。是完全开源免费的,用C语言编写的,遵守BSD协议,高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库。  具体详细的概念可以参考百度百科。  PS:关于 Redis 的具体概念以及具体应用场景,其实现在说都有些空洞,后面我们在介绍 Redis

2020-07-31 16:16:23 342 1

转载 Redis详解(三)------Redis数据结构之List

首先回答序言中的4大疑问1、redis中的list的基本属性?List数据结构是链表结构,这意味这无论数据量多大,头尾操作数据还是很快的,list的容量是2的32次方减1个元素,即4294967295个元素数量。2、为什么使用redis中的list数据类型?依靠redis内存中操作数据的优势,又提供一些列实用独特的Api操控数据,用着简便,速度又快,又能实现特有的数据特征排序读写,做时间轴数据,评论列表,消息传递等等,又提供简便的分页,读写操作。你用不用。3、为什么使用消息队列?举.

2020-07-31 15:50:37 421

转载 Redis详解(四)------Redis数据结构之Set

redis中set列表的新增命令Sadd,key值相同下的value值不能重复,返回插入的数据个数,key后面可跟多个value值127.0.0.1:6379>sadd mySet 1 ---添加key为mySet的set数据值为1,127.0.0.1:6379>sadd mySet 2 4 5 ---添加key为mySet的set数据值为2,redis中查看set数据集合的命令:smembers,可以获取全部的元素,当set成员比较多时考虑其性能啊127.0.0.1:63..

2020-07-31 15:46:25 457

原创 spring boot 配置文件启动顺序

实例结果演示一:classpath:/ 实例结果演示二:classpath:/config/实例结果演示三:file/ 实例结果演示四:file:config/ 实例结果演示五:多个配置文件组合 ...

2018-12-25 19:59:15 354

原创 MongoDB的CRUD的操作

- 查看命令    - 查看命令 - use 数据库 - 进入指定的数据库 - show dbs - 显示所有的数据库 - show collections - 显示数据库中所有的集合 - db - 显示当前所在的数据库 - 向数据库中插入文档 - db.collecti...

2018-12-25 19:47:13 163 1

原创 Mongodb安装过程

第一步:下载一个安装包https://www.mongodb.org/dl/win32第二步:安装软件一直next 第三步:安装完成配置环境变量第四步:确定是否安装完成,先在c盘根目录创建一个data文件夹,在data文件夹下创建一个db文件夹,cmd命令后执行启动mongod 第五步:不能关闭上步启动的mongod,重新打开一个cmd窗口,执行mong...

2018-12-25 19:40:22 165

原创 idea快速创建spring-boot项目

第一步第二步 第三步 创建项目模块名和组名 第四步 选择需要的模块 第五步 删除不需要文件第六步 实例 

2018-12-19 11:41:12 185

原创 MyBatis根据数据库字段生成实体类和对应的mapper接口及mapper.xml

(1)这个generatorConfig..xml文件放在resource。 &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"...

2018-11-29 10:01:53 2738 1

原创 Excel工具类

package batchExcel;import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.OutputStream; import java.lang.ref...

2018-11-16 14:41:36 332

原创 java.lang.NoClassDefFoundError: javax/websocket/Session

java.lang.NoClassDefFoundError: javax/websocket/Session at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) at java.lang.Class.getDe...

2018-11-14 16:37:13 6817

原创 集合总结

2018-10-22 09:50:51 151

原创 单例模式

1.单例模式(Singleton Pattern)定义:Ensure a class has only one instance, and provide a global point of access to it.(确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。)通用代码:(是线程安全的)public class Singleton { privat...

2018-10-19 10:19:46 296

原创 Maven详解

1.什么是Maven      Maven是apache下的开源项目,项目管理工具,管理java项目。1、项目对象模型 (Project Object Model)      POM对象模型,每个maven工程中都有一个pom.xml文件,定义工程所依赖的jar包、本工程的坐标、打包运行方式。。2、依赖管理系统(基础核心 )       maven通过坐标对项目工程所依赖的ja...

2018-10-19 09:40:47 1520 1

原创 Springmvc架构

1.Springmvc框架结构2.架构流程1)我用户发送请求至前端控制器DispatcherServlet2)DispatcherServlet收到请求调用HandlerMapping处理器映射器。3)处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。4)DispatcherServlet通...

2018-10-18 18:05:50 148

原创 九大排序算法之堆排序(原理)

1、算法思路:堆是一种数据结构,可以把堆看成一棵完全二叉树,这棵完全二叉树满足:任何一个非叶子结点的值都不大于(或小于)其左右孩子结点的值。如父亲大孩子小叫大顶堆,若父亲小孩子大叫小顶堆。算法描述如下步骤:1)从无序序列所确定的完全二叉树的第一个非叶子结点开始,从右至左,从下至上,对每个结点进行调整,得到大顶堆2)将大顶堆变化得到的无序元素的第一个元素与最后一个元素交换位置。再次将剩余元素...

2018-10-18 17:45:33 976

原创 高并发架构的设计

1、什么是高并发 1)高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常 是指,通过设计保证系统能够同时并行处理很多请求。 2)高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查 询率 QPS(Query Per Second),并发用户数等。 3)响应时间:系统对请求做出响应的时间。例如系统...

2018-10-16 12:34:24 11310

原创 分布式事务一致性

1、什么是事务? 做一件事情分为几个步骤,这几个步骤要么都成功要么都失败! 2、事务的特性?  a) 原子性 b) 隔离性 c) 一致性 d) 持久性 3、不考虑事务的隔离性,会产生哪些读问题?                                                                                       a)不可重复读: 一...

2018-10-16 11:15:28 317

原创 九大排序算法之归并排序(原理及实现)

1、算法思想:归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分:问题分成一些小的问题然后递归求解,治:的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。将序列递归拆半分成多个子序列,再将各个子序列排序后归并叠加,最后归并所有子序列,排序完成。2、算法过程举个栗子(第一趟的排序过程)原始序列:4...

2018-09-26 13:52:50 1889

原创 九大排序算法之希尔排序(原理及实现)

1、算法思想:希尔算法又名缩小增量排序,本质是插入排序,只不过是将待排序的序列按某种规则分成几个子序列,分别对几个子序列进行直接插入排序。这个规则就是增量,增量选取很重要,增量一般选序列长度一半,然后逐半递减,直到最后一个增量为1,为1相当于直接插入排序。2、算法过程举个栗子(第一趟的排序过程)原始序列:49、38、65、97、76、13、27、49,55、041)序列长度为10,...

2018-09-26 13:52:34 7728 1

原创 九大排序算法之选择排序(原理及实现)

1、算法思想:选择排序,从头至尾扫描序列,找出最小的一个元素,和第一个元素交换,接着从剩下的元素中继续这种选择和交换方式,最终得到一个有序序列。2、算法过程举个栗子(第一趟的排序过程)原始序列:49、38、65、97、76、13、27、491)在进行选择排序过程中分成有序和无序两个部分,开始都是无序序列结果:49、38、65、97、76、13、27、492)从无序序列中取出...

2018-09-20 17:40:13 116921 18

原创 九大排序算法之冒泡排序(原理及实现)

1、算法原理:比较两个相邻的元素,将值大的元素右移。2、算法思路:首先第一个元素和第二个元素比较,如果第一个大,则二者交换,否则不交换;然后第二个元素和第三个元素比较,如果第二个大,则二者交换,否则不交换……一直执行下去,最终最大的那个元素被交换到最后,一趟冒泡排序完成。最坏的情况是排序是逆序的。3、算法过程举个栗子(第一趟的排序过程)原始序列:49、38、65、97、76、13、...

2018-09-19 15:03:02 2874 1

空空如也

空空如也

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

TA关注的人

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