- 博客(77)
- 资源 (2)
- 收藏
- 关注

原创 Redis基本数据类型
redis 有5种基础的数据结构,分别为:String(字符串)、list(列表)、hash(字典)、set(集合)和zset(有序集合),redis的所有的数据结构都是以唯一的key字符串作为名称的,然后通过这个唯一的key值来获取相应的value数据,不同的数据结构的差异就在于value的数据结构的差异一、String(字符串)1. 数据结构 String的数据结构如下图所示,value的类型可以是字符串、数字、二进制和json等,但是key的类型只能是StringString ..
2020-12-12 23:10:42
626

原创 Redis 初识和安装
Redis 安装wget https://download.redis.io/releases/redis-6.0.9.tar.gz
2020-12-05 13:08:55
116

原创 linux升级paython版本
1. 检查 python 的版本:输入命令 python --version 1) 安装依赖包yum -y groupinstall "Development tools"yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel...
2019-04-24 17:51:48
287

原创 ningx 安装
如果服务器之前安装过 ningx 没安装成功可以先卸载之后再安装,卸载的步骤如下: 1. 输入以下的命令全局查找 ningx 相关的文件:sudo find / -name nginx* 如果出现下图所示的情况则说明已经安装过ningx,如果什么也没有出现则证明没有安装过。 2. 如果安装过ningx 执行命令sudo rm -rf file 此处跟查找出来的ngi...
2019-04-18 17:44:38
1474

原创 s3 实现图片上传并返回图片路径
一般做图片上传的的业务时我们接收的都是 MultipartFile 类型的文件 但是s3提供的图片上传只支持file 类型的文件上传,所以需要我先把MultipartFile 转换为 file /** * MultipartFile 转换为file * * @param file * @return */ public File toFile(MultipartFi...
2019-04-18 14:19:55
7293
4

原创 eclipse aws 服务
用亚马逊云上传图片的时候需要自己在eclipse上配置一下aws-toolkitStep1. 点击eclipse上方的help 然后点击 Install New Software 会出现下图所示的情况:Step2. 可以在workWith中输入以下防止 "https://aws.amazon.com/eclipse" 如果搜索时间过长可以进入这个网址下载安装包进行如下的操作: ...
2019-04-18 13:47:45
294

原创 npm的安装
Step1. 进入网站 https://nodejs.org/en/download/ 会出现如下图所示的页面点击下载安装即可。Step2. 打开cmd 输入 echo %PATH% 查看环境变量是否添加进去,如图所示证明已经添加进去啦Step3.输入 node-v 和 npm-v 确认node和npm的版本号这时可以进入 “C:\Users\Administrat...
2019-02-20 15:57:28
38432
13

原创 centOs7 安装docker 镜像
Step1. 检查是否安装过 docker :yum list installed|grep docker 如果出现如下图所示的情况 说明安装过 如果重新安装需要先卸载。使用命令 yum -y remove docker-ce.x86_64 卸载,如果出现下图所示的情况说明这条命令执行成功删除存储目录# rm -rf /etc/docker# rm -rf /run/do...
2019-02-19 17:06:58
14165
4

原创 部署springBoot 项目(以jar包形式)
Step1. 构建 jar 包 构建jar包有两种方式 第一种方式: eclipse 中 项目右键选择 “ Run As” --------> " Maven Clean"----------->" Maven install" 最后如果 build 成功会在 target 的文件夹下看见该项目的 jar 包。 ...
2018-09-07 14:06:44
355

原创 解决 Centos7 启动tomcat 但是外部不能访问的问题
Step1. 启动tomcat 进入 tomcat 所在的目录的 bin 的文件夹下执行" ./ startup.sh" 命令 启动 tomcat ,如果出现下面这种情况说明 tomcat 启动 成功。Step2. 验证 tomcat 是否启动成功 输入" ps -ef|grep tomcat " 命令验证 tomcat 是否启动成功,如果...
2018-09-06 17:41:05
14504
8

原创 解决 Xshell 连接 centOs7 的Could not connect to '192.168.119.129' (port 22): Connection failed.
在用Xshell 连接centos7的时候会遇到Could not connect to '192.168.119.129' (port 22): Connection failed.这个问题,我的解决办法如下:Step1. 获取 centos7 的IP地址 登陆后输入 " ip addr " 获取ip 地址,如果获取到的 ip 情况如下,说明此时你的 centsOs7 还没有分配可以连接...
2018-09-05 15:42:03
24085
3

原创 SpringBoot 整合QUARTZ 并嵌入可视化界面
在开发中有很多定时任务都不是写死的而是可以人为配置并且写到数据库中的,下面简单的分享一个SpringBoot整合QUARTZ并嵌入可视化界面的demo。Step1. 在数据库中建立有关quartz的表,我用的是 mySql 数据库,建表语句如下,如果是其他的数据库可以自己去网上下载:## Quartz seems to work best with the driver mm....
2018-08-09 16:40:18
9204
7

原创 QUARTZ 简单demo
个人觉得无论使用SimpleTrigger 还是CronTirgger 都可以分为以下几个步骤: 定义一个简单的 任务job 类 创建一个调度类在调度类中做如下操作: 通过 StdSchedulerFactory 获取调度器的实例 获取一个 quartz 的独立运行的容器 创建一个JobDetail 并指定 Job在Scheduler 中所...
2018-07-26 14:23:07
1166

原创 QUARTZ 简单介绍
一、简介 QUARTZ 是一个完全由java开发的开源的任务日程管理系统,就是在一个预定的时间负责执行(通知)其他软件组件系统。二、定时器的分类定时器一共分为五类,分别是:SimpleTrigger 、CronTirgger、DateIntervalTrigger、NthIncludedDayTrigger和Calendar 类。其中最常用的有两个:SimpleTrigger、Cr...
2018-07-17 17:08:57
1270

原创 MyBatis反向生成Example类的使用
一、逆向工程 MyBatis的逆向工程不仅仅可以生成和表相对应的实体类还可以根据数据库种的表自动生成Example类,我们可以用Example类实现条件增删改查而不用自己再去写sql语句。二、Example类的生成只要在generatorConfig.xml 文件中用表名生成对应的实体类时将生成Example的信息都变为true即可。 <table tableName="use...
2018-06-21 20:01:40
5440
原创 AQS(AbstractQueuedSynchronized)
AQS全称 AbstractQueuedSynchronized一、Semaphore 和 AQS的关系Semaphore、CountDownLatch等内部有一个Sync类,Sync类继承了AQS二、AQS的作用AQS是一个用于构建锁,同步器,协作工具类的工具类,有了AQS以后,构建线程协作类就容易多了三、AQS内部原理解析AQS最核心的三大部分state控制线程抢锁和配合的FIFO队列期望协作工具类去实现的获取/释放等重要方法statestate的具体含义
2021-12-25 12:44:46
488
原创 Future 和 Callable
Runnable 缺陷不能返回一个返回值不能抛出 checked ExecptionCallable接口类似于Runnable,被其他线程执行的任务实现call方法有返回值Future类Future的作用Callable和Future关系可以用通过Future.get来获取Callable接口返回的执行结果,还可以通过Future.isDone()来判断任务是否已经执行完了,以及取消这个任务,限时获取任务的结果等。在call()为执行完毕之前,调用get()线程(
2021-12-25 12:39:51
511
原创 HBase
一、HBase特点分布式基于列式存储的数据结构,基于Hadoop的hdfs、zookeeper进行管理 HBase 适合存储半结构化或非结构化的数据,对于数据字段不够确定或者杂乱无章很难按一个概念去抽取 HBase 为null的记录不会被存储 基于的表包含 rowkey,时间戳,和列族。新写入数据时,时间戳更新,同事可以查询到更以前的版本 HBase 是主从架构,hmaster 作为主节点,hregionserver作为从节点二、HBase 如何导入数据通过HBase的API进行批量数据导
2021-12-25 10:41:13
361
原创 java 控制并发流程工具
1. 什么是控制并发流程控制并发流程工具类,作用就是帮助我们更容易的让线程之间合作 让线程之间相互配合,来满足业务逻辑 例如让线程A等待线程B执行完毕后再至此那个等合作策略
2021-12-05 12:47:41
423
原创 Flink
一、Flink 是什么?Flink是一个框架和分布式处理引擎,用于在无边界和有边界的数据流上进行有状态的计算无界流:有定义流的开始 但是没有定义流的结束,会无休无止的产生数据。无界流必须持续处理,即数据被摄取后立刻处理有界流:有定义流的开始也有定义流的结束。有界流可以在摄取所有数据后再进行计算。二、Flink的状态:Flink分为Operator State算子状态和Keyed StateOperator State分为三种数据结构:列表状态:状态表示一组数据的列表 联合列
2021-11-29 17:11:19
1326
原创 java中的并发容器
并发容器概览ConcurrentHashMap:线程安全的HashMapCopyOnWriteArrayList:线程安全的ListBlockingQueue:这是一个接口,表示阻塞队列,非常适合用于作为数据共享的通道ConcurrentLinkedQueue:高效的非阻塞并发队列,使用链表实现。可以看做一个线程安全的LinkedList。ConcurrentSkipList:是一个Map。使用跳表的数据结构进行快速查找。ConcurrentHashMapCopyOnWriteA
2021-11-28 13:29:29
829
原创 final关键字和不变性
什么是不变性(Immutable)如果对象在被创建后,状态不能被修改,那么它就是不可变的。 对于不可变的对象(一个对象中所有的属性都被final修饰)是线程安全的,不需要采取额外的措施fianl的作用修饰类防止被继承 修饰方法防止被重写 修饰变量防止被修改 天生是线程安全而不需要额外的同步开销final的3种用法fianl修饰变量被final修饰的变量,意味着值不能被修改,如果变量是对象那么对象的引用不能变但是自身的内容依然可以变化赋值时机如果初始化并不赋值,后续赋值,就
2021-11-28 11:13:49
390
原创 java的CAS原理
一、什么是CASCAS的全称是 compare and swap,适用于并发的场景,CAS就是当前线程认为V的值应该是A,如果是的话当前线程就给他改成B,如果不是A(说明被别人修改过了),那我就不修改了,避免多人同时修改导致出错CAS有三个操作数:内存值V,预期值A,要修改的值B,当且仅当预期值A和内存值相同时,才将内存值修改为B,否则什么都不做最后返回现在的V值。二、应用场景乐观锁 并发容器三、原子类是如何利用CASAtomicInteger 加载UnSafe工具,用来直接操作内存
2021-11-06 12:12:06
140
原创 Java中的原子类
一、什么是原子类 一个操作是不可中断的,即使是多线程的情况下也可以保证 在java中原子类都被保存在 java.util.concurrent.atomatic二、原子类的作用原子类的作用和锁类似,是为了保证并发情况下线程安全,不过原子类相比于锁,有一定的优势。 粒度更细,原子变量可以把竞争范围缩小到变量级别,这是我们可以获得的最细粒度的情况了,通常锁的粒度都要大于原子变量的粒度。 效率更高,通常使用原子类的效率比使用锁的效率更高,除了高度竞争的情况。三、原子类纵览Atomic*
2021-11-06 11:33:05
1536
原创 java 中的锁简介
一、Lock简介锁是一种工具,用于控制对共享资源的访问Lock和Synchronized 它们都可以达到线程安全的目的,但是在使用上和功能上又有较大的不同Lock并不是用来代替Synchronized的,而是当使用Synchronized不合适或不足以满足要求的时候来提供高级功能的Lock 接口最常见的实现类是ReentrantLock通常情况下,Lock值允许一个线程访问这个共享资源。不过有的时候,一些特殊的视线也可允许并发访问,比如ReadWriteLock里面的ReadLock
2021-10-30 12:55:44
177
原创 ThreadLocal
一、应用场景每个线程都需要一个独享对象,每个 Thread 内有自己的实例副本,不共享(通常是工具类,典型场景使用的类有SimpleDateFormat 和 Random),可以调用withInitial()方法 每个线程内需要保存全局变量(例如在拦截器中获取用户信息)可以让不同方法直接使用,避免参数传递的麻烦,可以调用set方法二、ThreadLocal 作用让某个需要用到的对象在线程间隔离(两个线程都有自己的独立对象) 在任何方法都可以轻松获取对象三、ThreadLocal 好处达到
2021-10-30 09:38:57
166
原创 线程池简介
一、为什么需要创建线程池反复创建线程开销大 过多的线程会占用太多的内存二、线程池的好处加快响应速度 合理利用CPU和内存 统一管理资源三、线程池适合应用的场合 服务器接受到大量请求时,使用线程池技术是非常合适的,它可以大大减少线程的创建和销毁数,提高服务器的工作效率 实际上,在开发中如果需要创建5个以上的线程,那么就可以使用线程池来管理四、创建线程1.线程池构造函数的参数参数名 类型 含义 corePoolSize int ...
2021-10-23 11:41:51
171
原创 布隆过滤器
一、什么是布隆过滤器布隆过滤器由很长的bit数组和一组哈希映射函数组成,可用于一个元素是否一定不存在于一个集合中或者可能在集合中。可以把布隆过滤器理解为一个不怎么精确的set结构,当你使用contains方法判断某个对象是否存在时,他可能会误判。但是布隆过滤器也不是特别的不精准,只要参数设置得合理,它的精准度也可以控制的相对足够精确,只会有小小的误判率。当布隆过滤器说某个值存在时,这个值可能不存在,而当它说某个值不存在时就一定不存在。二、布隆过滤器的原理每个布隆过滤器对应到Redis的数
2021-03-27 10:53:08
352
原创 Redis Cluster
一、数据分布如果有一份全量的数据当单机无法满足需求的时候就需要数据分布,数据分布如下图所示:1. 顺序分布和哈希分布顺序分区:假如有100份数据,有三个节点顺序分区就要保证每个节点是均衡的,分布如下图所示:哈希分区:假如有100份数据,对每个数字进行节点取余,分布如下图所示:2. 数据分布对比分布方式 特点 典型产品 哈希分布 数据分散度高,键值分布业务无关,无法顺序访问,支持批量操作 一致性哈希Memcache,Redis Cluster,其他缓
2021-03-20 13:23:58
201
原创 Redis Sentinel
主从技术的切换方法是:当主节点宕机后,需要人工将从节点切换为主节点,这样的方式费事费力还会造成一段时间内服务不可用,这样的方式显然不是我们需要的,所以我们必须要有一个高可用的方案来抵抗节点的故障,当节点发生故障时可以自动进行主从切换,程序可以不用重启,仿佛什么事情都没有发生一样。Redis官方提供了这样一种方案-——Redis Sentinel(Sentinel的含义是哨兵)。一、Redis Sentinel 架构如上图所示,我们可以将Redis Sentinel 集群看成是一个zookeepe
2021-03-13 12:01:18
150
原创 Redis主从复制
一、CAP原理CAP是分布式存储理论的基石。C:Consistent 一致性A:Availability 可用性P:Partition tolerance 分区容忍性分布式系统的节点往往都是分布在不同的机器上进行网络隔离开的,这意味着必然会有网络断开的风险,这个网络断开的场景的专业词汇叫做网络分区。在网络分区发生时,两个分布式节点之间无法进行通信,我们对一个节点进行的修改操作将无法同步到另一个节点,所以数据一致性将无法满足,因为两个分布式节点的数据不再保持一致。除非我们牺牲可用性,也
2021-03-06 12:40:01
161
原创 Redis持久化:RDB和AOF
Redis的持久化机制有两种,第一种是快照,第二种是AOF日志。快照是一次全量备份,AOF日志是连续的增量备份。快照是内存数据的二进制序列化形式,在存储上非常紧凑,而AOF日志记录的是内存数据修改的指令记录文本。AOF日志在长期的运行过程中会变得无比的庞大,数据库重启时需要加载AOF日志进行指令重放,这个时间就会无比漫长,所以需要定期进行AOF重写,给AOF日志瘦身。RDB:redis是单线程程序,在服务线上请求的同时还需要进行持久化的操作。持久化的同时内存数据结构还在改变,例如一个大型的hash.
2021-01-04 22:57:00
148
原创 Redis的Bitmap、HyperLogLog和Geo
一、位图1. 相关介绍:位图的最小单位是比特(bit),每个bit的取值只能是0或1。 位图不是特殊的数据结构,它的内容其实就是普通的字符串,也就是byte数组。我们可以使用普通的get/set方法直接获取和设置整个位图的内容,也可以使用位图操作getbit/setbit等将byte数组看成“位数组“来处理。 redis的位数组是自动扩展的,如果设置了某个偏移位置超出了现有的内容范围,就会自动将位数组进行零扩充。2. 基本使用:a. setbit 和 getbitsetbit key
2020-12-16 23:43:53
273
原创 Rdis的慢查询、pipeline和发布订阅
一、慢查询生命周期:说明:慢查询发生在第3阶段 客户端超时不一定慢查询,但是慢查询是客户端超时的一个可能因素两个慢查询的配置:slowlog-max-len慢查询是一个先进先出的队列:如果一条命令被列入慢查询会进入一个先进先出的队列 固定长度:如果队列满的时候,最新进入的将会被踢出 保存在内存中:如果对redis重启后将会消失slowlog-log-solwer-than慢查询阈值(单位:微妙):超过多少微妙将为慢查询 slowlog-log-solwer-than
2020-12-15 21:56:32
165
原创 Spring Boot Admin
一、简介Spring Boot Adamin 可以将Actuator中的信息进行界面化的展示,也可以监控所有的Spring Boot应用的健康状况,提供实时报警功能,主要的功能点有:显示应用程序的监控状态 应用程序上下线的监控 查看JVM 线程信息 可视化的查看日志以及下载日志文件 动态切换日志级别 Http请求信息跟踪二、简单使用创建一个spring-boot应用加入下面的依赖 <dependency> <groupId&g
2020-07-19 10:32:31
412
1
原创 Sleuth 服务跟踪
一、spingcloud 集成 sleuth1. 引入依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth</artifactId> </dependency>然后在方法中打印日志 就可以看到下面的信息2020-07-11 11:08:57.045 I
2020-07-11 11:31:39
326
原创 SpingCloud-Gateway
一、简介Spring Cloud GateWay 是Spring官方基于Spring5.0 SpringBoot2.0 和 Project Reactor等技术开发的网关,Spring Cloud GateWayzhi在为旨在为微服务架构提供一种简单有效的、统一的API路由管理方式。它不仅提供统一的路由方式,并且基于Filter链的方式提供了网关的基本功能,例如:安全、监控/埋点和限流等。在Spring Cloud GateWay 有几个概念需要了解一下:Route:是网关的基础元素,有ID .
2020-06-21 12:27:04
183
原创 springcloud-zuul
一、简介Zuul 是一个基于JVM路由和服务的负载均衡器,提供路由、监控、安全等方面的服务框架。Zuul能够与Eureka、Ribbon、Hystrix等组件配合使用。Zuul的核心是过滤器,通过这些过滤器我们可以扩展出很多功能,例如:动态路由:动态的将客户端的请求路由到后端不同的服务,做一些逻辑处理,比如聚合多个服务的数据返回。 请求监控:可以对整个系统的请求进行监控,记录详细的请求响应日志,可以试试统计出当前系统的访问量以及监控状态。 认证鉴权:对每一个访问的请求做认证。拒绝非法请求,保
2020-06-14 09:50:51
210
原创 SpringCloud-Hystrix
一、简介Hystrix 是针对微服务分布式系统采用的熔断保护中间件,在微服务中都相互依赖,如果不能对依赖的服务进行隔离,服务本身也有可能发生故障,Hystrix 通过 HystrixCommand 对调用进行隔离,这样可以故障连锁反应,能够让接口调用快速失败并迅速恢复正常,或者回退并优雅降级。二、Hystrix简单的使用1. 引入依赖 <dependency> <groupId>com.netflix.hystrix</gr
2020-06-06 14:10:22
182
浅析@ReponseBody和@RequestBody注解
2017-09-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人