- 博客(25)
- 收藏
- 关注
原创 Java并发编程(四)final
final禁止指令重排分析对final域的读和写更像是普通的变量访问,编译器和处理器要遵守两个重排序规则:在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。下面,我们通过一些示例性的代码来分别说明这两个规则:public class FinalTest { final int inc; int num; stati
2022-04-07 16:27:19
441
原创 db2 报错 检测到DRDA数据流语法错误.原因: 0x3. ERRORCODE= -4499, SQLSTATE=58009
db2 报错 检测到DRDA数据流语法错误.原因: 0x3. ERRORCODE= -4499, SQLSTATE=58009[16:48:43] RMI TCP Connection(3)-127.0.0.1 ERROR [] [] [com.alibaba.druid.pool.DruidDataSource] - dataSource init errorcom.ibm.db2.jcc.am.DisconnectNonTransientException: [jcc][4][2034]11148][
2022-02-10 17:03:01
5173
1
原创 MyBatis实战教程(一)
什么是 MyBatis?MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。安装要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于类路径(classpath)中即可。如果使用 M
2021-09-23 17:09:33
192
1
原创 spring boot整合redis
1.新建一个spring boot项目,导入redis的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>2.5.3</version>
2021-08-15 20:50:49
291
2
原创 Redis 缓存穿透和雪崩
缓存穿透概念在默认情况下,用户请求数据时,会先在缓存(Redis)中查找,若没找到即缓存未命中,再在数据库中进行查找,数量少可能问题不大,可是一旦大量的请求数据(例如秒杀场景)缓存都没有命中的话,就会全部转移到数据库上,造成数据库极大的压力,就有可能导致数据库崩溃。网络安全中也有人恶意使用这种手段进行攻击被称为洪水攻击。解决方案布隆过滤器对所有可能查询的参数以Hash的形式存储,以便快速确定是否存在这个值,在控制层先进行拦截校验,校验不通过直接打回,减轻了存储系统的压力。缓存空对
2021-08-15 12:00:05
105
原创 Redis 主从复制和哨兵模式
1.Redis 主从复制概念主从复制是指将一台Redis服务器的数据复制到其它Redis服务器上;前者被称为主节点(Master/Leader),后者称之为从节点(Slave/Follower);数据的复制是单向的,只能从主节点到从节点;Master以写为主,Slave以读为主;在默认的情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点,一个从节点只能有一个主节点;主从复制的作用主要包括:1.数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式;2.故障恢复:当主
2021-08-13 18:08:30
181
原创 Redis 发布订阅
Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。Redis 客户端可以订阅任意数量的频道。订阅/发布消息图:下图展示了频道 channel , 以及订阅这个频道的三个客户端 —— client1、 client2 和 client3 之间的关系:当有新消息通过 PUBLISH 命令发送给频道 channel 时, 这个消息就会被发送给订阅它的三个客户端:下表列出了 redis 发布订阅常用命令:序号命令及描
2021-08-10 18:46:00
272
原创 Redis持久化
Redis 是内存数据库,如果不将内存中的数据库状态保存到硬盘中,那么一旦服务器进程退出,服务器中的数据库状态也会消失,所以Redis提供了持久化功能;Redis 提供了不同级别的持久化方式:RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储.AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾.Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大.如果你只希望你的数据在
2021-08-10 15:45:10
226
2
原创 Redis 配置文件详解
redis配置文件常用内容详解UNIT# Note on units: when memory size is needed, it is possible to specify# it in the usual form of 1k 5GB 4M and so forth:## 1k => 1000 bytes# 1kb => 1024 bytes# 1m => 1000000 bytes# 1mb => 1024*1024 bytes# 1g => 1
2021-08-07 17:50:48
137
原创 jedis的操作和使用
jedis 是 Redis 官方推荐的Java连接开发工具;使用 Java 操作 redis 中间件;在企业中用的最多的就是Jedis。Jedis提供了完整Redis命令,而Redisson有更多分布式的容器实现。如果使用jedis操作redis,那么需要对redis基本操作命令要十分熟悉;对redis命令不熟悉的看这里:https://blog.csdn.net/weixin_44890938/article/details/118909055?spm=1001.2014.3001.5501导入对
2021-07-28 16:38:25
5058
3
原创 Redis乐观锁
Redis 乐观锁乐观锁:乐观锁认为数据一般情况不会出现问题,所以不会上锁;只有在更新数据时才去判断一下在此期间是否有人修改过此数据;实现:乐观锁一般是通过版本号Version来实现的,当数据发生改变时,对应的Version也会进行修改;当一个线程 thread1 进行更新操作时,读取数据的同时也会读取对应的Version,修改完数据执行更新操作时,将读取到的Version与库中的Version进行比较,相同时执行更新操作,不同则执行失败;redis乐观锁通过监视 WATCH 来实现的 :使用 W
2021-07-22 18:22:39
358
3
原创 Redis 事务
Redis事务事务的本质:事务是一个单独的隔离操作:事务是一组命令的集合,事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。事务没有隔离级别的概念:所有命令在事务中,在事务队列没有执行之前,并没有被直接执行;事务不保证原子性:redis的单条命令是原子性的,但是事务不保证原子性,在同一事务中假如有一条命令执行失败,其它命令依旧会被执行;事务能做什么: 一个队列中,一次性、顺序性、排他性的执行一系列命令;命令:multi 开启事务ex
2021-07-21 18:12:48
170
原创 Redis Bitmap的使用
bitmaps 位存储bitmaps 位图,数据结构;都是操作二进制来进行记录,只有0和1两个状态;举例:用bitmaps 来记录某位员工一周内的打卡信息# user为用户 1,2,3,4,5,6,7 代表周一到周末 0-未打卡 1-打卡127.0.0.1:6379> setbit user 1 1 (integer) 0127.0.0.1:6379> setbit user 2 1(integer) 0127.0.0.1:6379> setbit user
2021-07-21 11:11:58
118
2
原创 Redis Hyperloglog的使用
redis-hyperloglog基数统计的算法 (0.81%错误率),Redis 在 2.8.9 版本添加了 HyperLogLog 结构;优点:占用的内存是固定的,2^64 不同元素的基数,只占用12kb内存;使用场景:可以用于统计网站的UV;如果允许有误差,就可以使用hyperloglog进行统计任务;127.0.0.1:6379> pfadd key a b c d e f #创建第一组元素(integer) 1127.0.0.1:6379> pfcount key #统
2021-07-21 11:08:22
88
原创 Redis Geospatial 使用详解
geospatial 地理位置操作命令:命令描述geoadd添加地理位置的坐标geopos获取地理位置的坐标geodist计算两个位置之间的距离georadius根据用户给定的经纬度坐标来获取指定范围内的地理位置集合georadiusbymember根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合geohash返回一个或多个位置对象的 geohash 值geoadd将指定的地理空间位置(经度、纬度、名称)添加到指定的key
2021-07-20 18:34:25
260
原创 redis五大数据类型的使用详解
redis 基本操作命令1.切换数据库 select# redis默认有16个数据库,默认使用第0个数据库# select 数据库序列127.0.0.1:6379> select 2 #切换第二个数据库OK127.0.0.1:6379[2]> DBSIZE #查看数据大小(integer) 0127.0.0.1:6379[2]> set ss 123OK127.0.0.1:6379[2]> DBSIZE(integer) 1127.0.0.1:6379[2
2021-07-19 18:38:45
442
原创 redis-benchmark 单机 性能测试
redis-benchmark 单机性能测试1.redis 性能测试的基本命令如下:redis-benchmark [option] [option value]2.redis 性能测试工具可选参数如下所示:序号选项描述默认值1-h指定服务器主机名127.0.0.12-p指定服务器端口63793-s指定服务器 socket4-c指定并发连接数505-n指定请求数100006-d以字节的形式指定 SET/GET
2021-07-14 11:03:43
215
1
原创 报错:JSON parse error: Unexpected character (‘ ‘ (code 160)): was expecting double-quote to start fiel
1.在遇到此问题时,首先先检查传输的 json 报文是否有问题:检查引号与逗号是否为中文检查最后一个键值对是否加了逗号错误示例:{ "remoteNodeCode":"17", "remoteFilePath":"/", "remoteFileName":"ret20210602002ok.txt",}此处引号与逗号使用的时中文输入法{ “remoteNodeCode”:"17", "remoteFilePath":"/", "remoteFileName":"re
2021-07-13 18:53:19
30707
3
原创 Linux环境下redis安装教程
Linux环境下Redis安装教程下载地址:http://redis.cn/将下载好的 redis 安装包移动至Linux服务器 /home 下,执行命令: mv redis-6.0.6.tar.gz /opt ,将redis安装包移动至 /opt 目录下;执行命令: tar -zxvf redis-6.0.6.tar.gz 解压安装包;依次执行命令安装环境:yum install gcc-c++makemake install如在安装过程中遇到 server.c:
2021-07-13 18:08:28
256
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人