本文介绍spring boot整合redis的一个简单的dome,可方便大家直接使用。文中包括redis五种类型的添加和查询功能,其余功能没能一一列出来查看请看文章末尾。
redis的依赖包
org.springframework.boot
spring-boot-starter-test
com.alibaba
fastjson
1.2.47
org.springframework.boot
spring-boot-devtools
true
org.springframework.boot
spring-boot-starter-data-elasticsearch
org.springframework.boot
spring-boot-starter-data-redis
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-web-services
二、application.yml配置文件(使用yml或者properties 都行)
spring:
# redis缓存
redis:
# Redis开关/默认关闭
enabled: true
# Redis数据库索引(默认为0)
database: 0
# Redis服务器地址
host: 127.0.0.1
# Redis服务器连接端口
port: 6380
password:
jedis:
pool:
# 连接池中的最小空闲连接
min-idle: 8
# 连接池中的最大空闲连接
max-idle: 500
# 连接池最大连接数(使用负值表示没有限制)
max-active: 2000
# 连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: 10000
# 连接超时时间(毫秒)
timeout: 10000
三、存取乱码过滤
public class RedisCacheConfig {
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
FastJsonRedisSerializer fastJsonRedisSerializer = new FastJsonRedisSerializer<>(Object.class);
ParserConfig.getGlobalInstance().addAccept("com.xiaolyuh.");
// 设置值(value)的序列化采用FastJsonRedisSerializer。
redisTemplate.setValueSerializer(fastJsonRedisSerializer);
redisTemplate.setHashValueSerializer(fastJsonRedisSerializer);
// 设置键(key)的序列化采用StringRedisSerializer。
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}
四、RedisUtils 类 (测试类使用)
public class RedisUtil {
@SuppressWarnings("rawtypes")
@Autowired
private RedisTemplate redisTemplate;
// 如果使用RedisTemplate需要更改序列化方式
public void tt() {
RedisSerializer stringSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringSerializer );
redisTemplate.setValueSerializer(stringSerializer );
redisTemplate.setHashKeySerializer(stringSerializer );
redisTemplate.setHashValueSerializer(stringSerializer );
}
/**
* 批量删除对应的value
*
* @param keys
*/
public void remove(final String... keys) {
for (String key : keys) {
remove(key);
}
}
/**
* 批量删除key
*
* @param pattern
*/
public void removePattern(final String pattern) {
Set keys = redisTemplate.keys(pattern);
if (keys.size() > 0)
redisTemplate.delete(keys);
}
/**
* 删除对应的value
*
* @param key
*/
public void remove(final String key) {
if (exists(key)) {
redisTemplate.delete(key);
}
}
/**
* 判断缓存中是否有对应的value
*
* @param key
* @return
*/
public boolean exists(final String key) {
return redisTemplate.hasKey(key);
}
/**
* String类型 取
* 根据 key 获取对应的value 如果key不存在则返回null
*
* @param key 查询的key
* @return 查询结果
*/
public String get(final String key) {
Object result = null;
redisTemplate.setValueSerializer(new StringRedisSerializer());
ValueOperations operations = redisTemplate.opsForValue();
result = operations.get(key);
if (result == null) {
return null;
}
return result.toString();
}
/** String类型 存
*
*设置 key 的值为 value
*如果key不存在添加key 保存值为value
*如果key存在则对value进行覆盖
*
* @param key key值
* @param value 存入的value值
* @return 添加结果
*/
public boolean set(final String key, Object value) {
boolean result = false;
try {
ValueOperations operations = redisTemplate.opsForValue();
operations.set(key, value);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/** map类型 存
* 为散列添加多个key-value键值对
* @param key key值
* @param value map值
* @return 添加结果
*/
public boolean hmset(String key, Map value) {
boolean result = false;
try {
//putAll 添加多个key-value 添加一个使用put(H key, HK hashKey, HV value)
redisTemplate.opsForHash().putAll(key, value);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**map类型 取
* 获取散列的key-value键值对集合
* @param key key值
* @return 查询结果
*/
public Map hmget(String key) {
Map result = null;
try {
result = redisTemplate.opsForHash().entries(key);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/** list 类型 存
* 插入数据到list
*
* @param key key值
* @param list value值
* @return 添加结果
*/
public boolean setList(String key , List list) {
boolean result = false;
try {
ListOperations listOperations = redisTemplate.opsForList();
//从list头部插入value
listOperations.leftPush(key,list);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/** list 类型 取
* 根据下标获取指定list数据
*
* @param key key值
* @param index 下标值
* @return 查询结果
*/
public String getList(final String key ,Long index) {
Object result = null;
redisTemplate.setValueSerializer(new StringRedisSerializer());
ListOperations listOperations = redisTemplate.opsForList();
//获取指定下标数据 使用range(0 -1)可以获取所有数据
result = listOperations.index(key ,index);
if (result == null) {
return null;
}
return result.toString();
}
/** set 类型 存
* 给集合key添加值,集合不存在创建后再添加
*
* @param key key值
* @param set value值
* @return 添加结果
*/
public boolean setSet(String key , Set set) {
boolean result = false;
try {
SetOperations setOperations = redisTemplate.opsForSet();
//可添加多个
setOperations.add(key,set.toString());
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/** set 类型 取
* 获取所有set值
*
* @param key key值
* @return 查询结果
*/
public String getSet(final String key) {
Object result = null;
redisTemplate.setValueSerializer(new StringRedisSerializer());
SetOperations listOperations = redisTemplate.opsForSet();
//查询所有
result = listOperations.members(key);
if (result == null) {
return null;
}
return result.toString();
}
/** ZSet 类型 存
* 给有序集合添加一个指定分数的成员 如果成员存在则覆盖
*
* @param key key值
* @param value value值
* @param score 分数
* @return 添加结果
*/
public boolean setZSet(String key , String value ,double score) {
boolean result = false;
try {
ZSetOperations setOperations = redisTemplate.opsForZSet();
setOperations.add(key,value,score);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/** ZSet 类型 取
* 获取指定范围内数据
*
* @param key
* @param start
* @param end
* @return 查询数据
*/
public Set getZSet(final String key ,long start ,long end) {
Object result = null;
redisTemplate.setValueSerializer(new StringRedisSerializer());
ZSetOperations listOperations = redisTemplate.opsForZSet();
// result = listOperations.rangeWithScores(key ,start ,end); //获取有序集合中指定分数范围内的成员集合 获取 value 分数
result = listOperations.reverseRange(key ,start ,end); //从有序集合中获取指定范围内从高到低的成员集合 获取 value
// result = listOperations.range(key ,start ,end); //指定范围内 (0 -1)返回所有。
if (result == null) {
return null;
}
// return result.toString();
Iterator iterator = ((Set) result).iterator();
Set zSetValList = new HashSet<>();
while (iterator.hasNext()){
//使用rangeWithScores 方法获取的
// DefaultTypedTuple next = (DefaultTypedTuple)iterator.next();
// System.out.println();
// System.out.println(next.getScore());
// System.out.println(next.getValue());
//使用reverseRange 方法获取
String next = (String)iterator.next();
zSetValList.add(next);
}
return zSetValList;
}
}
五、测试demo
@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisUtilTest {
@Autowired
private RedisUtil redisUtil;
@Test
public void testSet() {
// String
String value = "sdd";
redisUtil.set("String", value);
System.out.println(redisUtil.get("String"));
// map
Map map = new HashMap<>();
map.put("1","22");
map.put("11","22");
map.put("11","22");
map.put("666","6666");
redisUtil.hmset("map" ,map);
System.out.println(redisUtil.hmget("map"));
// list
List list = new ArrayList<>();
list.add("11");
list.add("22");
list.add("666");
redisUtil.setList("list" ,list);
System.out.println(redisUtil.getList("list",0l));
// set
Set set = new HashSet<>();
set.add("11");
set.add("22");
set.add("33");
redisUtil.setSet("set" ,set);
System.out.println(redisUtil.getSet("set"));
//zset
redisUtil.setZSet("zset","111",1d);
redisUtil.setZSet("zset","222",2d);
redisUtil.setZSet("zset","333",3d);
redisUtil.setZSet("zset","444",4d);
redisUtil.setZSet("zset","555",6d);
redisUtil.setZSet("zset","666",5d);
Set zSetVal = redisUtil.getZSet("zset", 0, 5);
}
}
关于各类型的其他操作,可以根据redisUtils中的redisTemplate来调用 对应的类方法每个类型有一个对应的实体类
对应实体类方法作用链接地址: String https://blog.csdn.net/pengdandezhi/article/details/78902580 map https://blog.csdn.net/pengdandezhi/article/details/78909869 list https://blog.csdn.net/pengdandezhi/article/details/78903625 set https://blog.csdn.net/pengdandezhi/article/details/78909041 zset https://blog.csdn.net/pengdandezhi/article/details/78911049
你可能感兴趣的:(spring boot项目整合redis 及五种数据类型的使用)
cpp智能指针
xianwu543
c++ 开发语言 网络 mysql 数据库
普通指针的不足new和new[]的内存需要用delete和deletel]释放。程序员的主观失误,忘了或漏了释放。程序员也不确定何时释放。普通指针的释放类内的指针,在析构函数中释放。C++内置数据类型,如何释放?new出来的类,本身如何释放?C++11新增三个智能指针类型unique_ptrshared_ptrweak_ptr一、智能指针unique_ptrunique_ptr独享它指向的对象,也
外贸跨境订货系统流程设计、功能列表及源码输出
多用户商城系统
多语言订货系统 订货系统源码 跨境订货系统 多语言订货系统 中英文订货系统 外贸订货系统
在全球化的商业环境下,外贸跨境订货系统对于企业拓展国际市场、提升运营效率至关重要。该系统旨在为外贸企业提供一个便捷、高效、安全的订货平台,实现商品展示、订单管理、物流跟踪等功能,满足跨境业务的多样化需求。以下将详细阐述外贸订货系统的流程设计、功能列表,并提供核货宝外贸跨境订货系统源码示例,欢迎大家一起讨论。一、系统流程设计用户端流程:注册/登录→选择语言/货币→浏览商品→加入购物车→确认订单→选择
从零开始玩转TensorFlow:小明的机器学习故事 2
山海青风
# 机器学习 机器学习 tensorflow 人工智能
你好,TensorFlow!——从零开始的第一个机器学习程序1.为什么要写这个“Hello,TensorFlow!”?无论学习什么新语言或新框架,“HelloWorld!”示例都能帮助我们快速确认开发环境是否就绪,并掌握最基本的使用方式。对于初学者来说,这种“可执行的最小示例”既能降低上手门槛,又能带来满满的成就感。在这里,我们就用TensorFlow2.x的即时执行模式,输出“Hello,Ten
Godot-Python 项目教程
成冠冠Quinby
Godot-Python项目教程godot-pythonPythonsupportforGodot项目地址:https://gitcode.com/gh_mirrors/go/godot-python1.项目目录结构及介绍Godot-Python项目的目录结构如下:godot-python/├──addons/│└──pythonscript_repl/├──build/├──docs/├──ex
ESP-IDF VS Code 扩展 v1.9.0 正式发布
乐鑫科技 Espressif
物联网 科技 iot github
乐鑫荣幸地宣布,ESP-IDFVSCode扩展v1.9.0版本正式上线!此版本引入了多项强大的新功能、性能优化及众多改进措施,旨在为开发者提供更加流畅的开发体验。新功能与改进亮点用户体验升级新增“基础使用指南”与“高级功能”两大互动式教程,助力用户快速上手。项目创建流程中融入增强的UI/UX示例,提升操作直观性。示例项目与新项目中的框架选择功能得到加强。优化了从示例创建项目的用户界面与体验。串行设
用deepseek学大模型08-用deepseek解读deepseek
wyg_031113
人工智能 深度学习
DeepSeekR1是一种先进的深度学习模型架构,结合了Transformer、稀疏注意力机制和动态路由等核心技术。以下是对其核心原理、公式推导及模块分析的详细解析:深入浅析DeepSeek-V3的技术架构1.核心架构概览DeepSeekR1的架构基于改进的Transformer,主要模块包括:稀疏多头自注意力(SparseMulti-HeadSelf-Attention)动态前馈网络(Dynam
Python从入门到精通学习路线
weixin_45689377
python学习 python 机器学习 人工智能 神经网络 大数据
Python从入门到精通学习路线进步源自技术积累1.Python安装方式强烈推荐采用Anaconda集成软件进行安装,Anaconda集成了pyhon软件、jupyter及180多个包;安装方式参考网上教程,Anaconda下载地址:https://www.anaconda.com2.Python开发环境选择推荐jupyter(Anaconda中含有,不需额外安装)和pycharm(需额外安装),
将SSM(Spring + SpringMVC + MyBatis) + JSP项目中的Spring重构为Spring Boot
Pan's pidr
Java后端 spring spring boot java
整体思路参考这篇博客:https://blog.csdn.net/xiaocxyczh/article/details/78681374SpringMVC到SpringBoot的简化之路https://juejin.cn/post/6844903573453537294SpringBoot与SpringMVC是两种不同的配置方式,一种是使用starter启动器来完成自动配置,另一种是在xml中进行
android浏览器资源嗅探,GitHub - icemanyandy/VBrowser-Android: 全网视频嗅探缓存APP
一朵小小玫
android浏览器资源嗅探
VBrowser-Android全网视频嗅探缓存APP简介一款用于全网视频嗅探、缓存及播放的APP,方便追剧党、出差党随时随地观看缓存好的视频。超强的视频嗅探能力,多线程急速下载。主要功能1.网页中包含的主流格式的流媒体视频的嗅探(M3U8,MP4等)2.主流格式的流媒体视频的缓存(M3U8及传统单文件视频(如MP4,avi))3.已缓存的视频播放(目前调用外部播放器,如MXPlayer)特色1.
python里面的pop的作用_python里pop是什么意思
一朵小小玫
python里面的pop的作用
详细内容pop()函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。pop()方法语法:list.pop(obj=list[-1])参数obj--可选参数,要移除列表元素的对象。返回值该方法返回从列表中移除的元素对象。相关推荐:《Python视频教程》实例以下实例展示了pop()函数的使用方法:#!/usr/bin/pythonaList=[123,'xyz','zara','
11-R因子
qwy715229258163
R语言 r语言 开发语言
R因子因子用于存储不同类别的数据类型,例如人的性别有男和女两个类别,年龄来分可以有未成年人和成年人。R语言创建因子使用factor()函数,向量作为输入参数。factor()函数语法格式:factor(x=character(),levels,labels=levels,exclude=NA,ordered=is.ordered(x),nmax=NA)参数说明:x:向量。levels:指定各水平值
达内-Spring+SpringMVC+MyBatis框架考试复习
信电
JavaWeb及框架 spring
第一部分:Spring框架概述、Spring、IOC、单例、多例、依赖注入文章目录一、Spring概述+约束引入1框架概述2创建的框架3Spring框架概述4IOC的入门案例(环境、约束)二、IOC基本概念和原理1IOC和DI的概念2创建IOC的例子3IOC的实现原理4IOC获取对象的方式三、Spring创建对象的方式四、单例模式和多例模式五、懒加载六、Spring容器的初始化和销毁七、DI依赖注
【纯干货】SSM(Spring + SpringMVC + MyBatis)环境搭建
Chin_Yuu
mybatis spring java servlet
目录什么是SSM?SSM(Spring+SpringMVC+MyBatis)环境搭建1.导入依赖2.搭建Spring整合MyBatis环境MyBatis配置类根据业务测试环境的搭建3.加入SpringMVC配置类书写服务器和应用控制器测试SpringMVC的环境总结SSM框架的优点:什么是SSM?SSM框架,是Spring+SpringMVC+MyBatis的缩写,这个是继SSH之后,目前比较主流
python教程89--matplotlib实例详解
颐街
JupyterLab python python
12月份年底了应该做一下公司的数据统计了。Excel表只看数字很难直观的看出情况,今天使用matplotlib以公司电费为实例做一个案例介绍。开发环境:mac、python3.8、开发工具jupyterexcel数据如下:程序代码如下:mito是另外的一个可视化插件,可以生成柱状图和透视表,想了解的可以看前面的教程。通过图形界面的生成,可以很容易的看出,每个月用电量的使用情况。
用deepseek学大模型05逻辑回归
wyg_031113
逻辑回归 机器学习 人工智能
deepseek.com:逻辑回归的目标函数,损失函数,梯度下降标量和矩阵形式的数学推导,pytorch真实能跑的代码案例以及模型,数据,预测结果的可视化展示,模型应用场景和优缺点,及如何改进解决及改进方法数据推导。逻辑回归全面解析一、数学推导模型定义:逻辑回归模型为概率预测模型,输出P(y=1∣x)=σ(w⊤x+b)P(y=1\mid\mathbf{x})=\sigma(\mathbf{w}^\
Spring Boot 项目中如何优雅丝滑地从 Date 过渡到 LocalDateTime
墨瑾轩
一起学学Java【一】 spring boot 后端 java
关注墨瑾轩,带你探索编程的奥秘!超萌技术攻略,轻松晋级编程高手技术宝库已备好,就等你来挖掘订阅墨瑾轩,智趣学习不孤单即刻启航,编程之旅更有趣SpringBoot项目中如何优雅丝滑地从Date过渡到LocalDateTime嘿,小伙伴们!今天我们要一起探讨如何在SpringBoot项目中优雅地从使用Date类型过渡到使用LocalDateTime。如果你正在寻找一种高效的方法来更新你的项目以适应现代
【微服务】SpringBoot 整合Redis实现延时任务处理使用详解
小码农叔叔
微服务治理与实战 redis入门到精通 Redis实现延时队列 redis延时队列详解 Redis延时队列 Redis延时任务 java延时任务解决方案 redis延时任务使用
目录一、前言二、延迟任务的高频使用场景三、延迟任务常用解决方案3.1Quartz3.2DelayQueue3.2.1Timer+TimerTask3.2.2ScheduledExecutorService3.3Redissortedset3.4RabbitMQ四、Redis实现延时队列操作实战4.1RedisSortedSet概述4.1.1RedisSortedSet介绍4.1.2RedisSor
基于SpringCloud设计的题库管理系统
DS小龙哥
前端 后端 web设计案例 spring cloud 微服务 java
一、项目背景社会在不断的进步,人口数量也在不断的增长,越来越多的高校和企业不断的建立。对于目前的高校,无论是小学,初中,高中甚至是大学都有相应的考试来对学生进行一个初步的判定,而对于企业招聘,很多求职者在入职前也会做相应的笔试题或者综合的心理测评,而这些题目多可能来源与各个网站,书本以及可能是对心理能力,抗压能力的一个考察。这些试题可能来源比较广泛,很可能这些试题的成绩会是面试官对您的一个加分的项
MyBatis一些学习的记录
黄昏难掩秋色2315
mybatis
MyBatis是一款基于JDBC来开发的持久层框架.一、配置spring:datasource:url:jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false//数据库的urlusername:root//用户名password:root//密码driver-class-name:com.mysql.
避坑指南:chatgpt账号购买成品号- chatgpt 4.0 plus成品号购买手册!
chatgpt
购买ChatGPT账号的注意事项及指南✨在当前人工智能技术快速发展的背景下,ChatGPT作为一种强大的语言模型工具️,受到了广泛关注。然而,在获取ChatGPT账号的过程中,用户需审慎考虑多项关键因素,以确保所购账号的安全、可靠及合法性✅,规避潜在风险⚠️。本文将深入探讨购买ChatGPT账号时需重点关注的几个方面,并提供相关建议。1.账号来源审查️♂️账号来源是决定其安全性和可靠性的首要因素
springcloud-consul初步配置
或许没看到
springcloud consul springcloud
Consul(代替Eureka)Eureka和Consul区别1.CAPConsul强一致性(CP)服务注册相比Eureka会稍慢一些。因为Consul的raft协议要求必须过半数的节点都写入成功才认为注册成功Leader挂掉时,重新选举期间整个consul不可用。保证了强一致性但牺牲了可用性。Eureka保证高可用和最终一致性(AP)服务注册相对要快,因为不需要等注册信息replicate到其他
【SpringBoot】34、SpringBoot整合Redis实现序列化存储Java对象
Asurplus
SpringBoot 2.x系列 redis 序列化 springboot java对象
前面我们已经介绍过【SpringBoot】十七、SpringBoot中整合Redis,我们可以看出,在SpringBoot对Redis做了一系列的自动装配,使用还是非常方便的一、背景1、思考通过我们前面的学习,我们已经可以往Redis中存入字符串,那么我们要往Redis中存入Java对象该怎么办呢?2、方案我们可以将Java对象转化为JSON对象,然后转为JSON字符串,存入Redis,那么我们从
SpringCloud03—服务治理:SpringCloud Eureka
m0_75011249
程序员 spring cloud eureka java
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!spring-boot-starter-parent2.5.1org.springframework.cloudspring-cloud-starter-eureka1.4.7.RELEASEorg.springframework.cloudspring-cloud-dependencies2020
快速入门Springboot+vue——MybatisPlus多表查询及分页查询
ONEPEICE-ing
vue.js spring boot 前端 mybatis
学习自哔哩哔哩上的“刘老师教编程”,具体学习的网站为:7.MybatisPlus多表查询及分页查询_哔哩哔哩_bilibili,以下是看课后做的笔记,仅供参考。多表查询多表查询[Mybatis中的]:实现复杂关系映射,可以使用@Results直接,@Result注解,@One注解,@Many注解组合完成复杂关系的配置。@Results:代替标签,该注解中可以加入单个或多个@Result注解@Res
springboot2.x整合jpa
灬Change
spring boot mysql 后端 jpa java
前言为了以后需要使用jpa的时候,可以快速搭建好项目,这个例子不会玩的很全,只是为了能玩起来。源码地址:GitHub-ChangeSu/springboot-jpa-demo:springboot2.0整合jpa示例1.版本org.springframework.bootspring-boot-starter-parent2.5.6org.springframework.bootspring-bo
spring boot 发送邮件功能
??????4?A???
spring boot java 前端
邮件发送是一个非常常见的功能,注册时的身份认证、重要通知发送等都会用到邮件发送。Sun公司提供了JavaMail用来实现邮件发送,但是配置烦琐,Spring中提供了JavaMailSender用来简化邮件配置,SpringBoot则提供了MailSenderAutoConfiguration对邮件的发送做了进一步简化,本文将介绍SpringBoot如何实现邮件发送功能。一、环境配置1、导入依赖使用
pnpm vs npm
CCSBRIDGE
了解Vue npm 前端 node.js
pnpmvsnpm:区别与常见操作指南在现代前端开发中,包管理工具是不可或缺的。最常见的包管理工具有npm、yarn和pnpm。其中,pnpm以其高效的磁盘利用率和更快的安装速度受到越来越多的开发者青睐。本文将对比pnpm和npm,并介绍pnpm的常见配置及操作。一、pnpmvsnpm:核心区别特性pnpmnpm磁盘占用低:采用硬链接和符号链接共享node_modules,节省磁盘空间高:每个项目
[2025.02.11] 游戏常用运行库 合集 | Game Runtime Libraries Package(5.1.25.0207)
zhiyi_2
游戏
软件简介:游戏常用运行库合集整合了许多游戏会用到的运行库,支持WindowsXP–Windows11系统,并且支持自动检测系统勾选推荐的运行库,方便快捷。本版特点:整合常见最新游戏所需运行库根据系统自动勾选推荐的版本纯净安装包无病毒和弹窗行为支持静默安装,静默参数:/S包含组件:MicrosoftVisualC++2005Redistx86x64MicrosoftVisualC++2008Redi
SpringClould项目中,如何使用Redis实现分布式布隆过滤器?
小南AI学院
redis 分布式 数据库
1.单体布隆过滤器在分布式环境会出现的问题?如果这个模块会部署多个IW9实例(或者多节点应用),并且每个实例都需要使用布隆过滤器来进行手机号查重,那么目前的设计方案需要做一些额外的考虑和优化,以确保布隆过滤器在分布式环境下的一致性和有效性。直接在多个实例中使用布隆过滤器时,可能会遇到以下几个问题:问题分析:布隆过滤器的本地性:布隆过滤器是一个本地数据结构,它通常在每个应用实例中独立运行。每个实例拥
【复习】Spring
xiaolin0333
复习=。= spring java 后端
SpringSpring架构的核心?IOC容器:开发者只需要定义Bean和依赖关系,Spring容器就可以创建和组装对象AOP:面向切面编程,允许开发者定义横切关注点,通过AOP可以将这些关注点模块化,提高代码的可维护性事务管理:支持声明式和编程式,轻松的进行事务管理,无需关系具体的事务APIMVC框架:支持URL到页面控制器的映射IOC:控制反转,创建和获取对象的思想,传统的开发需要使用new关
github中多个平台共存
jackyrong
github
在个人电脑上,如何分别链接比如oschina,github等库呢,一般教程之列的,默认
ssh链接一个托管的而已,下面讲解如何放两个文件
1) 设置用户名和邮件地址
$ git config --global user.name "xx"
$ git config --global user.email "test@gmail.com"
ip地址与整数的相互转换(javascript)
alxw4616
JavaScript
//IP转成整型
function ip2int(ip){
var num = 0;
ip = ip.split(".");
num = Number(ip[0]) * 256 * 256 * 256 + Number(ip[1]) * 256 * 256 + Number(ip[2]) * 256 + Number(ip[3]);
n
读书笔记-jquey+数据库+css
chengxuyuancsdn
html jquery oracle
1、grouping ,group by rollup, GROUP BY GROUPING SETS区别
2、$("#totalTable tbody>tr td:nth-child(" + i + ")").css({"width":tdWidth, "margin":"0px", &q
javaSE javaEE javaME == API下载
Array_06
java
oracle下载各种API文档:
http://www.oracle.com/technetwork/java/embedded/javame/embed-me/documentation/javame-embedded-apis-2181154.html
JavaSE文档:
http://docs.oracle.com/javase/8/docs/api/
JavaEE文档:
ht
shiro入门学习
cugfy
java Web 框架
声明本文只适合初学者,本人也是刚接触而已,经过一段时间的研究小有收获,特来分享下希望和大家互相交流学习。
首先配置我们的web.xml代码如下,固定格式,记死就成
<filter>
<filter-name>shiroFilter</filter-name>
&nbs
Array添加删除方法
357029540
js
刚才做项目前台删除数组的固定下标值时,删除得不是很完整,所以在网上查了下,发现一个不错的方法,也提供给需要的同学。
//给数组添加删除
Array.prototype.del = function(n){
navigation bar 更改颜色
张亚雄
IO
今天郁闷了一下午,就因为objective-c默认语言是英文,我写的中文全是一些乱七八糟的样子,到不是乱码,但是,前两个自字是粗体,后两个字正常体,这可郁闷死我了,问了问大牛,人家告诉我说更改一下字体就好啦,比如改成黑体,哇塞,茅塞顿开。
翻书看,发现,书上有介绍怎么更改表格中文字字体的,代码如下
unicode转换成中文
adminjun
unicode 编码转换
在Java程序中总会出现\u6b22\u8fce\u63d0\u4ea4\u5fae\u535a\u641c\u7d22\u4f7f\u7528\u53cd\u9988\uff0c\u8bf7\u76f4\u63a5这个的字符,这是unicode编码,使用时有时候不会自动转换成中文就需要自己转换了使用下面的方法转换一下即可。
/**
* unicode 转换成 中文
一站式 Java Web 框架 firefly
aijuans
Java Web
Firefly是一个高性能一站式Web框架。 涵盖了web开发的主要技术栈。 包含Template engine、IOC、MVC framework、HTTP Server、Common tools、Log、Json parser等模块。
firefly-2.0_07修复了模版压缩对javascript单行注释的影响,并新增了自定义错误页面功能。
更新日志:
增加自定义系统错误页面功能
设计模式——单例模式
ayaoxinchao
设计模式
定义
Java中单例模式定义:“一个类有且仅有一个实例,并且自行实例化向整个系统提供。”
分析
从定义中可以看出单例的要点有三个:一是某个类只能有一个实例;二是必须自行创建这个实例;三是必须自行向系统提供这个实例。
&nb
Javascript 多浏览器兼容性问题及解决方案
BigBird2012
JavaScript
不论是网站应用还是学习js,大家很注重ie与firefox等浏览器的兼容性问题,毕竟这两中浏览器是占了绝大多数。
一、document.formName.item(”itemName”) 问题
问题说明:IE下,可以使用 document.formName.item(”itemName”) 或 document.formName.elements ["elementName&quo
JUnit-4.11使用报java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing错误
bijian1013
junit4.11 单元测试
下载了最新的JUnit版本,是4.11,结果尝试使用发现总是报java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing这样的错误,上网查了一下,一般的解决方案是,换一个低一点的版本就好了。还有人说,是缺少hamcrest的包。去官网看了一下,如下发现:
[Zookeeper学习笔记之二]Zookeeper部署脚本
bit1129
zookeeper
Zookeeper伪分布式安装脚本(此脚本在一台机器上创建Zookeeper三个进程,即创建具有三个节点的Zookeeper集群。这个脚本和zookeeper的tar包放在同一个目录下,脚本中指定的名字是zookeeper的3.4.6版本,需要根据实际情况修改):
#!/bin/bash
#!!!Change the name!!!
#The zookeepe
【Spark八十】Spark RDD API二
bit1129
spark
coGroup
package spark.examples.rddapi
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.SparkContext._
object CoGroupTest_05 {
def main(args: Array[String]) {
v
Linux中编译apache服务器modules文件夹缺少模块(.so)的问题
ronin47
modules
在modules目录中只有httpd.exp,那些so文件呢?
我尝试在fedora core 3中安装apache 2. 当我解压了apache 2.0.54后使用configure工具并且加入了 --enable-so 或者 --enable-modules=so (两个我都试过了)
去make并且make install了。我希望在/apache2/modules/目录里有各种模块,
Java基础-克隆
BrokenDreams
java基础
Java中怎么拷贝一个对象呢?可以通过调用这个对象类型的构造器构造一个新对象,然后将要拷贝对象的属性设置到新对象里面。Java中也有另一种不通过构造器来拷贝对象的方式,这种方式称为
克隆。
Java提供了java.lang.
读《研磨设计模式》-代码笔记-适配器模式-Adapter
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
package design.pattern;
/*
* 适配器模式解决的主要问题是,现有的方法接口与客户要求的方法接口不一致
* 可以这样想,我们要写这样一个类(Adapter):
* 1.这个类要符合客户的要求 ---> 那显然要
HDR图像PS教程集锦&心得
cherishLC
PS
HDR是指高动态范围的图像,主要原理为提高图像的局部对比度。
软件有photomatix和nik hdr efex。
一、教程
叶明在知乎上的回答:
http://www.zhihu.com/question/27418267/answer/37317792
大意是修完后直方图最好是等值直方图,方法是HDR软件调一遍,再结合不透明度和蒙版细调。
二、心得
1、去除阴影部分的
maven-3.3.3 mvn archetype 列表
crabdave
ArcheType
maven-3.3.3 mvn archetype 列表
可以参考最新的:http://repo1.maven.org/maven2/archetype-catalog.xml
[INFO] Scanning for projects...
[INFO]
linux shell 中文件编码查看及转换方法
daizj
shell 中文乱码 vim 文件编码
一、查看文件编码。
在打开文件的时候输入:set fileencoding
即可显示文件编码格式。
二、文件编码转换
1、在Vim中直接进行转换文件编码,比如将一个文件转换成utf-8格式
&
MySQL--binlog日志恢复数据
dcj3sjt126com
binlog
恢复数据的重要命令如下 mysql> flush logs; 默认的日志是mysql-bin.000001,现在刷新了重新开启一个就多了一个mysql-bin.000002
数据库中数据表数据迁移方法
dcj3sjt126com
sql
刚开始想想好像挺麻烦的,后来找到一种方法了,就SQL中的 INSERT 语句,不过内容是现从另外的表中查出来的,其实就是 MySQL中INSERT INTO SELECT的使用
下面看看如何使用
语法:MySQL中INSERT INTO SELECT的使用
1. 语法介绍
有三张表a、b、c,现在需要从表b
Java反转字符串
dyy_gusi
java 反转字符串
前几天看见一篇文章,说使用Java能用几种方式反转一个字符串。首先要明白什么叫反转字符串,就是将一个字符串到过来啦,比如"倒过来念的是小狗"反转过来就是”狗小是的念来过倒“。接下来就把自己能想到的所有方式记录下来了。
1、第一个念头就是直接使用String类的反转方法,对不起,这样是不行的,因为Stri
UI设计中我们为什么需要设计动效
gcq511120594
UI linux
随着国际大品牌苹果和谷歌的引领,最近越来越多的国内公司开始关注动效设计了,越来越多的团队已经意识到动效在产品用户体验中的重要性了,更多的UI设计师们也开始投身动效设计领域。
但是说到底,我们到底为什么需要动效设计?或者说我们到底需要什么样的动效?做动效设计也有段时间了,于是尝试用一些案例,从产品本身出发来说说我所思考的动效设计。
一、加强体验舒适度
嗯,就是让用户更加爽更加爽的用
JBOSS服务部署端口冲突问题
HogwartsRow
java 应用服务器 jboss server EJB3
服务端口冲突问题的解决方法,一般修改如下三个文件中的部分端口就可以了。
1、jboss5/server/default/conf/bindingservice.beans/META-INF/bindings-jboss-beans.xml
2、./server/default/deploy/jbossweb.sar/server.xml
3、.
第三章 Redis/SSDB+Twemproxy安装与使用
jinnianshilongnian
ssdb reids twemproxy
目前对于互联网公司不使用Redis的很少,Redis不仅仅可以作为key-value缓存,而且提供了丰富的数据结果如set、list、map等,可以实现很多复杂的功能;但是Redis本身主要用作内存缓存,不适合做持久化存储,因此目前有如SSDB、ARDB等,还有如京东的JIMDB,它们都支持Redis协议,可以支持Redis客户端直接访问;而这些持久化存储大多数使用了如LevelDB、RocksD
ZooKeeper原理及使用
liyonghui160com
ZooKeeper是Hadoop Ecosystem中非常重要的组件,它的主要功能是为分布式系统提供一致性协调(Coordination)服务,与之对应的Google的类似服务叫Chubby。今天这篇文章分为三个部分来介绍ZooKeeper,第一部分介绍ZooKeeper的基本原理,第二部分介绍ZooKeeper
程序员解决问题的60个策略
pda158
框架 工作 单元测试
根本的指导方针
1. 首先写代码的时候最好不要有缺陷。最好的修复方法就是让 bug 胎死腹中。
良好的单元测试
强制数据库约束
使用输入验证框架
避免未实现的“else”条件
在应用到主程序之前知道如何在孤立的情况下使用
日志
2. print 语句。往往额外输出个一两行将有助于隔离问题。
3. 切换至详细的日志记录。详细的日
Create the Google Play Account
sillycat
Google
Create the Google Play Account
Having a Google account, pay 25$, then you get your google developer account.
References:
http://developer.android.com/distribute/googleplay/start.html
https://p
JSP三大指令
vikingwei
jsp
JSP三大指令
一个jsp页面中,可以有0~N个指令的定义!
1. page --> 最复杂:<%@page language="java" info="xxx"...%>
* pageEncoding和contentType:
> pageEncoding:它