自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 人人开源renren-fast踩坑新增菜单等无反应,后台收不到请求

人人开源renren-fast踩坑新增菜单等无反应,后台收不到请求

2022-06-07 00:45:51 961

原创 nacos配置中心使用

nacos配置中心使用项目中每个微服务创建自己的命名空间,使用配置分组区分环境同时加载多个配置集微服务的所有配置文件都可以放在配置中心只要在 bootstrap.properties 说明加载配置中心哪些配置文件...

2021-08-14 22:27:09 168

原创 nacos无法动态从配置中心获取值

添加 spring-cloud-starter-bootstrap 的依赖即可<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> <version>3.0.3</version>

2021-08-14 19:10:43 409

原创 nacos启动报错

nacos启动报错使用命令 startup.cmd -m standclone 启动

2021-08-14 08:53:25 225

原创 npm install 报错 gyp verb check python checking for Python executable “python2.7“ in the PATH gyp verb

gyp verb check python checking for Python executable "python2.7" in the PATHgyp verb `which` failed Error: not found: python2.7gyp verb `which` failed at getNotFoundError (D:\Code\renren-fast-vue\node_modules\which\which.js:13:12)gyp verb `which` fa

2021-08-13 17:40:23 5537

原创 docker安装MySQL和Redis

docker安装MySQL下载的5.7版本 //没有进入root用户就在前面加sudo sudo docker pull mysql:5.7创建实例并启动docker run -p 3306:3306 --name mysql \-v /mydata/mysql/log:/var/log/mysql \-v /mydata/mysql/data:/var/lib/mysql \-v /mydata/mysql/conf:/etc/mysql \-e MYSQL_ROOT_PASSWOR

2021-08-13 00:31:42 75

原创 Linux安装Docker

DockerDocker是虚拟化容器技术。可以秒级启动各种容器。每一种容器都是一个完整地运行环境,容器之间互相隔离。docker 的镜像仓库地址:https://hub.docker.com/安装Docker进入官网选择自己的版本先卸载以前的旧版本sudo yum remove docker \ docker-client \ docker-client-latest \ doc

2021-08-12 23:25:09 1107 6

原创 vagrant虚拟机网络设置

ipconfig查看本机的VirtualBox的IP地址到用户目录下找Vagrantfile文件修改然后重启虚拟机互相ping一下测试是否成功

2021-08-12 22:47:09 249

原创 vargrant创建Linux虚拟机

下载vagrantbox下载链接:https://www.virtualbox.org/下载完安装即可下载vagranthttps://www.vagrantup.com/下载后安装即可,安装完需要重启系统。打开命令行输入 vagrant init centos/7 初始化系统输入 vagrant up下载下载完成后输入命令 vagrant ssh 连接虚拟机输入 exit 即可退出虚拟机关闭虚拟机再次开机输入命令 vagrant up 命令即可,也可直接右键启动

2021-08-12 22:34:04 303

原创 springboot配置处理器

在编写配置文件时,自己写的类也可以有提示,导入配置处理器依赖,重新启动一下项目<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optiona

2021-08-07 00:25:12 784

原创 SpringBoot入门HelloWorld

先创建一个maven工程pom.xml文件配置springboot需要的依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/P

2021-08-03 23:34:15 131 4

原创 Redis 缓存预热、缓存雪崩、缓存击穿、缓存穿透

缓存预热问题:服务器启动后迅速宕机原因:1、请求数据量较高。2、主从之间吞吐量较大,数据同步操作频度较高缓存预热就是在系统启动前,提前把相关的缓存数据加载到缓存系统中。防止在用户请求时先查询数据库,然后再把数据缓存。用户直接查询事先被预热的缓存数据缓存雪崩缓存击穿Redis中某个key过期且此key访问量巨大,多个数据请求从服务器直接压倒Redis中,均没有命中,Redis在短时间内向数据库中同一数据发起了大量的访问,导致数据库崩溃。缓存穿透Redis中大面积出现未命中,出现非正

2021-08-02 01:54:22 124

原创 Redis 集群

集群简介集群就是使用网络将若干台计算机联通起来,并提供统一的管理方式,使其对外呈现单机的服务效果。Redis集群结构设计当增加一台服务器时,从其他服务器那里分配过来一些槽给这个新的服务器。cluster集群添加节点cluster-enabled yes|no cluster配置文件名cluster-config-file <filename>节点服务响应超时时间,用于判定该节点是否下线或切换为从节点cluster-node-timeout <mil

2021-08-02 01:53:35 49

原创 Redis 哨兵模式

哨兵简介哨兵(sentinel)是一个分布式系统,对主从结构中所有服务器进行监控,当出现故障时通过投票机制选择新的master,并且让其它的slave连接到这个新的master。哨兵的作用监控:不停的监控服务器是否正常运行。master存货检测、master和slave运行情况检测。通知:当监控的服务器出现问题时,向其他(客户端、哨兵间)发送通知自动故障转移:断开master和slave的连接,选取一个新的slave来当master,并且将其它的slave连接到这个新的master,并告诉客户端

2021-08-02 01:51:29 82

原创 Redis 主从复制

主从复制简介互联网的“三高”架构:高并发、高性能、高可用。单台redis服务器容易出现的问题:1、机器故障。2、容量瓶颈。解决方案:可以准备多台服务器互相连通。将数据复制多个副本保存到多个服务器中,并保证数据是同步的。即便有一台服务器出现了故障,其他服务器仍然可以运行,实现高可用,同时实现数据冗余备份主从复制即将master服务器中的数据即时、有效的复制到slave服务器中。一个master可以有多个slave,一个slave只能由一个master。master的职责:1、写数据。2、执行

2021-08-02 01:39:33 69

原创 Redis 高级数据类型

Bitmaps按位操作Bitmaps不是一种新的数据结构,本质就是字符串,只是它可以对字符串的位进行操作。Bitmaps的基础操作获取key对应偏移量上的bit值getbit key offset设置key对应偏移上的bit值//value只能是1或0(存的是状态,不是真实的数据)setbit key offset value没有设置的位,也能取出来,默认是0。Bitmaps的扩展操作对key按位进行与、或、非、异或操作//not:非//xor:异或//结果保

2021-08-01 17:34:15 77

原创 Redis 服务器基础配置

设置服务器以守护进程的方式运行daemonize yes|no绑定主机地址//如果设置了,那么只有这台主机可以访问,其他人无法访问bind 127.0.0.1设置服务器端口号port xxxx设置数据库的数量//默认是16databases xx日志配置设置服务器指定日志级别loglevel debug|verbose|notice|warning日志记录文件名logfile 端口号.log客户端配置设置同一时间最大客户端连接数,默认不.

2021-08-01 17:33:38 164

原创 Redis 删除策略

过期数据通过ttl指令查看数据的状态返回-1:表示该数据永远存在返回-2:表示该数据不存在(或被删除)或已经过期的数据返回一个数:表示该剩数据剩余的生命时间过期数据不一定到期了就立刻从内存中删除,可以等到需要删的时候才删。删除策略删除策略操作的都是expires里的数据(里面存的都是具有时效性的数据)1、定时删除创建定时器,当key设置了过期时间,且到达了过期时间,那么定时器立刻对该key进行删除优点:节约内存,到时间就删除,快速释放内存缺点:CPU压力过高,不论CPU

2021-08-01 17:32:52 238

原创 Redis 事务和锁

文章目录事务事务简介事务基本操作事务的工作流程事务的注意事项锁分布式锁死锁解决方案事务事务简介什么是事务redis事务就是一个命令执行的队列,将一系列预定义命令包装成一个整体(一个队列)。当执行时,一次性按照添加顺序依次执行,中间不会被打断或者干扰。事务基本操作开启事务multi作用:设定事务的开启位置,此指令执行后,后续的所有指令均加入到事务中执行事务exec作用:设定事务的结束位置,同时执行事务。与multi成对出现,成对使用注意:加入事务的命令暂时进入到任务队列中

2021-08-01 00:38:17 86

原创 Redis持久化

文章目录持久化简介RDBRDB启动方式——save命令RDB启动方式 —— bgsave指令RDB启动方式 ——save配置RDB三种启动方式对比AOF简介AOF功能开启AOF重写概念与命令执行RDB与AOF区别持久化简介持久化概念:利用永久性存储介质将数据进行保存,在特定的时间将保存的数据进行恢复的工作机制称为持久化。为什么要持久化:防止数据的意外丢失,确保数据安全性。RDBRDB启动方式——save命令save作用:手动执行一次保存操作数据保存在dump.rdb里删除这个文件

2021-07-31 21:27:17 75

原创 Linux环境下安装Redis

下载redis4.0.0版本的redis下载:wget http://download.redis.io/releases/redis-4.0.0.tar.gz解压(table键可以补全指令)tar -xvf redis-4.0.0.tar.gz进入redis目录安装 make install进入src目录启动redis服务此时这个终端归redis server使用了,打开一个新的终端打开redis-cliredis指定端口号此时客户端想要连上服务粗腰指定端口启动

2021-07-31 11:37:12 38

原创 Jedis

Jedis简介Java语言连接Redis服务:JedisJedis常规操作写一个程序使用redisjedis基于maven的配置<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version></dependency>测试jnuit的配置&l

2021-07-31 00:24:03 75

原创 Redis通用指令

key通用操作key是一个字符串,通过key获取redis中保存的数据key 基本操作删除指定keydel keydel keyexists key获取key的类型type keykey 扩展操作(时效性控制)为指定key设置有效期//秒级expire key seconds//毫秒级pexpire key milliseconds//时间戳expireat key timestamppexpireat key milliseconds-timest

2021-07-30 17:02:06 54

原创 Redis数据类型 sorted_set

sorted_set类型新的存储需求:数据排序有利于数据的有效展示,需要提供一种可以根据自身特征进行排序的方式需要的存储结构:新的存储模型,可以保存可排序的数据sorted_set类型:在set的存储结构基础上添加可排序字段sorted_set 类型数据的基本操作添加数据zadd key score1 member1 [score2 member2]获取全部数据//升序排列zrange key start stop [WITHSCORES]//降序排列zrevrange

2021-07-30 15:46:42 102

原创 Redis数据类型 set

set类型新的存储需求:存储大量的数据,在查询方面提供更高的效率需要的存储结构:能够保存大量的数据,高效的内部存储机制,便于查询set类型:与hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的set 类型数据的基本操作添加数据sadd key member1 [member2]获取全部数据smembers key删除数据srem key member1 [member2]获取集合数据总量scard key判断

2021-07-30 14:47:33 461

原创 Redis数据类型 list

list类型数据存储需求:存储多个数据,并对数据进入存储空间的顺序进行区分需要的存储结构:一个存储空间保存多个数据,且通过数据可以体现进入顺序list类型:保存多个数据,底层使用双向链表存储结构实现list 类型数据基本操作添加/修改数据lpush key value1 [value2] …… //从左边添加rpush key value1 [value2] …… //从右边添加获取数据lrange key start stop //start:开始索引 st

2021-07-30 14:04:07 130

原创 Redis数据类型 hash

hash类型基本操作添加/修改数据hset key field value获取数据hget key fieldhgetall key删除数据 hdel key field1 [field2]添加/修改多个数据hmset key field1 value1 field2 value2 …获取多个数据hmget key field1 field2 …获取哈希表中字段的数量hlen key获取哈希表中是否存在指定的字段hexists ke..

2021-07-29 18:17:42 47

原创 稀疏数组 棋盘例子

基本介绍当一个数组中大部分元素是0,或者为同一个值的数组中,可以使用稀疏数组来保存该数组。先看一个实际的需求应用举例使用稀疏数组存放类似前面的二维数组(棋盘、地图等)分析思路二维数组转稀疏数组的思路1、遍历原始二维数组,得到有效的数据个数sum2、根据sum即可创建出稀疏数组 sparseArr int[sum+1] [3]3、将二维数组的有效数据存到稀疏数组里稀疏数组转二维数组的思路1、先读取稀疏数组的第一行,根据第一行的数据创建出二维数组 chessArr2=int[spar

2021-07-29 01:47:33 82

原创 Redis的常用数据类型 String

文章目录数据存储类型介绍stringstring类型数据的基本操作string类型数据的扩展操作string类型数据操作的注意事项数据存储类型介绍业务数据的特殊性作为缓存使用原始业务功能设计:秒杀、618、双十一、排队购票运营平台监控到的突发高频访问数据:突发时政要闻高频、复杂的统计数据:在线人数,投票附加功能系统功能优化或升级Redis数据类型(5种常用)stringhashlistsetsorted_set数据类型指的是存储的数据的类型,也就是vlue的

2021-07-28 22:29:56 77

原创 Redis入门

Redis简介Nosql:即Not-Only-SQL(泛指非关系型的数据库),作为关系型数据库的补充。作用:应对基于海量用户和海量数据前提下的数据处理问题特征:可扩容,可伸缩大数据量下高性能灵活的数据模型高可用常见的Nosql数据库:Redis,memcache,HBase,MongoDBRedis概念:Redis(Remote Dictionary Server)是用C语言开发的一个开源的高性能**键值对(key-value)**数据库特征:1、数据间没有必然的关联关系。2、内部

2021-07-28 13:26:56 48

原创 快速学习Git使用

文章目录Git学习安装常用命令设置用户签名初始化本地库查看本地库状态添加暂存区提交到本地库修改文件历史版本Git分支操作查看分支创建分支切换分支修改分支合并分支产生冲突手动合并文件GitHub操作创建远程仓库远程仓库操作创建远程仓库别名推送本地分支到远程仓库拉取远程仓库克隆远程仓库到本地ssh免密登录IDEA集成Git配置Git忽略文件定位Git程序切换版本创建分支合并分支IDEA集成GitHub设置GItHub账号分享工程到GitHubpush推送本地库到远程库pull拉取远程库到本地库clone克隆远程

2021-07-28 02:10:15 654 1

原创 HTTP Status 404 - /ch07_ssm_war/WEB-INF/jspresult.jsp 报错解决

HTTP Status 404 - /ch07_ssm_war/WEB-INF/jspresult.jspspringmvc的视图解析器少打了一个 /错误的时候<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp" /> <property na

2021-07-26 11:32:18 488

原创 MySQL基础笔记

文章目录数据库基本知识数据库相关概念数据库存储数据的特点MySQL常见命令MySQL语法规范DQL语言的学习基础查询1、查询表中的单个字段2、查询表中的多个字段3、查询表中的所有字段4、查询常量值5、查询表达式6、查询函数7、起别名8、去重9、+号的作用练习条件查询1、按条件表达式筛选2、按逻辑表达式筛选3、模糊查询likebetween andinis null/is not null<=>练习排序查询常见函数单行函数字符函数数学函数日期函数其他函数流程控制函数分组函数简单使用组合使用分组查询

2021-04-28 12:03:34 268

原创 多线程

多线程线程简介Process(进程)程序是指令和数据的有序集合,其本身并没有任何运行的含义,是一个静态的概念Thread(线程)而进程则是执行程序的一次执行过程,它是一个动态的概念。是系统分配资源的单位。通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义。线程是CPU调度和执行的单位。**main()**称为主线程,为系统的入口,用于执行整个程序。在程序运行时,即使没有自己创建线程,后台也会有多个线程,如主线程,gc线程。在一个进程中,如果开辟了多个

2021-04-21 00:26:10 54

原创 类的加载和初始化

类的加载package 注解和反射;//类的加载public class Test06 { public static void main(String[] args) { A a = new A(); System.out.println(A.m); /** * 1.加载到内存,会产生一个类对应Class对象 * 2.链接,连接结束后 m = 0 * 3.初始化 * .

2021-04-18 12:05:36 58

原创 Class类

Class类的创建方式package 注解和反射;//测试Class类的创建方式有哪些public class Test04 { public static void main(String[] args) throws ClassNotFoundException { Person person = new Student(); System.out.println("这个人是:"+person.name); //方式一:通过对象获得.

2021-04-18 12:01:38 56

原创 Java的注解

什么是注解(Annotation)?Annotation的作用不是程序本身,可以对程序做出解释(这一点和注释(comment)没有区别)可以被其他程序(比如:编译器)读取Annotation的格式注解是以"@注释名"在代码中出现的,还可以添加一些数值,例如:SuppressWarnings(value=“unchecked”)Annotation在哪里使用可以附加在package,class,method,field等上面,相当于给他们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些

2021-04-18 00:38:38 26

原创 单链表的逆置

实际就是用一个指针遍历原单链表,先将L->next=NULL,使其成为一个空表,然后将p结点使用头插法遍历插入表中即可。//逆置单链表bool ReverseLinkList(LinkList &L){ LNode* p=L->next; LNode* q; L->next=NULL;//将L看成是一个只有头结点的空链表 while(p!=NULL){ q=p->next;//用q存放p的后继结点 p-&gt

2021-04-16 16:52:49 132

原创 删除单链表中第一个值为x的结点

bool DeListFirstElem(LinkList &L,ElemType x){ LNode *pre=L; LNode *p=pre->next; while(p->data!=x&&p->next!=NULL){//找值为x的结点,找不到pre和p都后移一位 pre=p; p=p->next; } if(p!=NULL){//找到p pre->next=

2021-04-16 15:49:17 5050

原创 栈的括号匹配

在Stack.cpp里写入方法//栈(stack)#include <stdlib.h>#include <stdio.h>#define ElemType char//顺序栈typedef struct{ ElemType data[MaxSize]; int top;//栈顶指针}SqStack;//初始化栈void InitSqStack(SqStack &s){ s.top=-1;}//判空bool EmptySt

2021-04-16 01:56:57 138

空空如也

空空如也

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

TA关注的人

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