- java:Apache Commons Configuration2占位符解析异常的正确解法:${prefix:name:-default}
10km
javajavaapacheconfiguration2变量插值Interpolation
问题重现在之前的博文《spring-boot:apachecommons-configuration2异常:java.lang.IllegalArgumentException:name原因分析》中,我们曾遇到SpringBootFat-Jar运行时因LaunchedURLClassLoader资源加载异常导致的启动失败问题。当时的解决方案是通过预创建空配置文件来规避异常1://旧方案:手动创建空
- Spring Boot 实现通用 Auth 认证的 4 种方式
后端java
文章介绍了spring-boot中实现通用auth的四种方式,包括传统AOP、拦截器、参数解析器和过滤器,并提供了对应的实例代码,最后简单总结了下他们的执行顺序。前言最近一直被无尽的业务需求淹没,没时间喘息,终于接到一个能让我突破代码舒适区的活儿,解决它的过程非常曲折,一度让我怀疑人生,不过收获也很大,代码方面不明显,但感觉自己抹掉了java、Tomcat、Spring一直挡在我眼前的一层纱。对它
- 多模块Spring-boot项目如何打包成指定名字的war包?
傲娇的小小云
mavenspringbootidea学习其他
如果不知道如何创建多模块项目,可以参考???还没写呢,写了再加上连接照着以下步骤一步一步做就可以:父亲pom需要设置packaging为pompom2.核心代码模块,也就是启动类(application)所在的模块,需要引入插件org.springframework.bootspring-boot-maven-plugin3.设置核心代码模块的打包方式为war,war其他依赖模块如有需要,可以设置
- 开源的H5即时聊天系统 spring-boot + netty + protobuf + vue ~
lmxdawn
黎明晓spring-bootvuenettywebsocketprotobuf
前言一篇文章引发的思考?一次读公号推文,发现一篇文章写得特好,勾起了好奇心《群聊比单聊,为什么复杂这么多?》,@沈大大.GitHub地址him-vue前往him-netty前往心路历程第一阶段,刚看完文章时,特别兴奋,开始着手,花了一个月把聊天界面基本弄,然后着手于后端,经过些简单的调研,决定用netty搭建一个,后面发现里面的复杂逻辑,再加上心中的火似乎已经熄灭,最后…第二阶段,最近刷公文时又刷
- 2.Spring Boot 中Json的使用,Jackson注解详解
张大仙是个妖怪
#SpringBootspring-bootJacksonobjectMapperJsonPropertyJsonIgnore
一.前言1.介绍我们常在项目中使用的Json转换工具是fastjson,事实上spring本身集成了非常优秀的json工具,分别为Jackson,Gson,JSON-B,但是官方项目中默认推荐使用Jackson,所以本文着重介绍使用Jackson进行json的转换以及Jackson的注解使用2.项目例子此文章用到的例子在spring-boot项目中,传送门此篇文章用到项目模块:还有更多:sprin
- Spring Boot 中文参考指南
阿提说说
SpringBoot3.x精讲springbootjavaspring
SpringBoot版本2.7.8原文:https://docs.spring.io/spring-boot/docs/2.7.8/reference/htmlsingle/—笔者注:SpringBoot3.x第一个GA版本已于22年底发布,2.7.8是2.x的最后一个GA版本,我觉得一段时间内依然会以2.x为主,该文大部分通过软件翻译,再加上自己的经验理解进行整理和注释,目的用来作为手册查找和知
- docker部署spring-boot项目后,验证码获取报错解决
阔海&空天
异常解决dockerspringjava
报错信息如下:2020-10-2116:13:03.603ERROR9---[XNIO-1task-2]c.e.c.s.handler.GlobalExceptionHandler:全局异常信息ex=nulljava.lang.NullPointerException:nullatsun.awt.FontConfiguration.getVersion(FontConfiguration.java
- rate-limit 一款 java 开源渐进式分布式限流框架使用介绍
老马啸西风
动手写框架java开源spring
项目简介rate-limit是一个为java设计的渐进式限流工具。目的是为了深入学习和使用限流,后续将会持续迭代。特性渐进式实现支持独立于spring使用支持整合spring支持整合spring-boot内置多种限流策略快速开始需求jdk1.7maven3.x+maven导入com.github.houbbrate-limit-core1.1.0入门例子方法定义@RateLimit限流注解放在方法
- SpringBoot之远程调用的三大方式
码农~明哥
网络websocket
为什么要使用远程调用?SpringBoot不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。在Spring-Boot项目开发中,存在着本模块的代码需要访问外面模块接口,或外部url链接的需求,比如在apaas开发过程中需要封装接口在接口中调用apaas提供的接口(像发起流程接口submit等等)下面也是提供了三种方式(不使用dubbo的
- spring spring-boot spring-cloud发布以及适配
zlpzlpzyd
springspringjava数据库
https://spring.io/blog/2024/10/01/from-spring-framework-6-2-to-7-0看了spring的官网,提到2025年spring会跟随jdk25LTS发布后,接着发布SpringFramework7.0GA,与之对应spring系列的组件版本情况如下。SpringFramework版本SpringBoot版本SpringCloud版本7.0GA
- Eureka引入依赖后无法启动,Error processing condition on org.springframework.cloud.client.CommonsClientAutoCon
展翅双飞
eurekajavaspringcloud
Erueka配置之后无法正常启动。Errorprocessingconditiononorg.springframework.cloud.client.CommonsClientAutoConfiguration$DiscoveryLoadBalancerConfiguration.discoveryCompositeHealthContributor,这个错误是因为父项目的spring-boot
- 大模型应用编排工具Dify之自定义工具
Daphnis_z
LLMJava开发chatgptspringbootaijava
1.前言dify中提供了自定义工具的能力,工具十分容易复用,在需要的流程编排中进行引用即可。根据笔者的经验和理解,自定义工具有点类似微服务,可以把通用的能力封装到工具里面。同时,工具还提供了测试和鉴权等功能,对开发者比较友好。环境信息:dify-0.8.3,spring-boot-2.7.6实现效果如下:2.开发后台接口这里使用spring-boot快速开发一个post接口作为演示,代码如下:@R
- Spring-boot定时任务,注解@Scheduled的参数说明
旷野孤星
个人笔记学习记录后端框架JAVASpring-BootSpring@ScheduledJava
关于Scheduled的参数1.corn2.fixedDelay3.fixedDelayString4.fixedRate5.fixedRateString6.initialDelay7.initialDelayString8.zone总共有八种参数类型,对于第一种类型一般使用就最熟悉了,是可以控制方法在任意的年月日时分秒上执行,同时不断循环。比较简单,网上的说明也比较多,就不做解释。fixedR
- Spring之定时任务基本使用篇
后端springboot
Spring之定时任务基本使用篇spring-boot项目中,想添加一个定时任务,可以怎么办?不管什么项目,都是可以直接用JDK原生的定时任务来实现借助@Scheduled注解来使用本篇博文则主要集中在在SpringBoot项目中,怎么使用定时任务I.基本使用demo在SpringBoot项目中,使用定时任务需要先开启对应的配置,一个简单的demo如下代码解读复制代码@EnableScheduli
- spring-boot 整合 shardingsphere-jdbc、mybatis-plus 数据分片(文末有彩蛋)
ゞ註﹎錠oo
架构之路mybatisspringbootspring数据库
1.什么是ShardingSphere?ApacheShardingSphere是一款分布式的数据库生态系统,可以将任意数据库转换为分布式数据库,并通过数据分片、弹性伸缩、加密等能力对原有数据库进行增强。ApacheShardingSphere设计哲学为DatabasePlus,旨在构建异构数据库上层的标准和生态。它关注如何充分合理地利用数据库的计算和存储能力,而并非实现一个全新的数据库。它站在数
- ReactiveRedisTemplate自动配置定义和序列化方式选择spring-data-redis
简放视野
Spring-Boot工作实战总结Redisspringbootjavaredis
背景Spring-Boot的Redis自动配置类,RedisReactiveAutoConfiguration和RedisAutoConfiguration,组件ReactiveRedisTemplate和RedisTemplate默认使用JDK序列化方式,在现实业务场景中很难使用,其存储的值可读性差且又长。我觉得不是很合理,意味着使用它们的用户都需要自己重新自定义。ReactiveStringR
- SpringBoot
m0_66357705
springboot后端java
SpringBoot特性Bean扫描默认为启动类所在的包和它的子包在启动类上加注解@ComponentScan(basePackages="com.")起步依赖起步依赖是SpringBoot提供的一种便捷方式,用于包含项目运行所需的所有依赖。这些依赖被预定义在一个Maven或Gradle配置文件中,你只需要添加一个起步依赖,SpringBoot就会自动引入所有必要的库。例如,spring-boot
- PDF神器!Stirling-PDF,告别烦人会员!
辣码甄源
精品开源应用分享pdf开源软件
Stirling-PDF:告别付费,随心编辑与转换,PDF文件轻松驾驭-精选真开源,释放新价值。概览你或许面对这样的情况:需要合并几个PDF,或者需要将一份PDF文件拆分,又或者需要调整PDF中的页面顺序,但是,找到的线上工具要么广告满天飞,要么需要付费使用或者会员登录。Stirling-PD可以解决你的问题。Stirling-PDF是一个基于spring-boot开发的开源项目,旨在提供一个功能
- MybatisPlus快速使用
锦衣当国
Java框架javamybatis
配置类(非必须)如果不涉及分页,无需配置https://baomidou.com/pages/2976a3/#spring-boot从上面网址粘贴下来代码即可packagecom.atguigu.ssyx.common.config;importcom.baomidou.mybatisplus.annotation.DbType;importcom.baomidou.mybatisplus.aut
- 05. spring-boot对spring-mvc的自动配置
马晓钧
spring-mvc的自动配置viewResolver:视图解析器:根据方法的返回值得到视图对象(View)。//会将容器中已有的ViewResolver和自己定义的ViewResolver全部add进去ContentNegotiatingViewResolver自定义视图解析器://需要实现ViewResolver,并注入进容器@ConfigurationpublicclassViewConfi
- Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found
Shipley Leo
常见报错问题mavenjavaspring
文章目录一、报错问题二、问题背景三、原因分析四、解决方案一、报错问题Plugin‘org.springframework.boot:spring-boot-maven-plugin:‘notfound二、问题背景pom.xml文件的配置情况,如下所示:org.springframework.bootspring-boot-maven-pluginMaven仓库中存在多个版本的spring-boot
- spring-cloud 使用初谈(一)--服务注册、负载均衡以及断路器
程序员ken
1.spring-cloud基于spring-boot,spring-boot跟传统的spring项目的区别的就是精简配置‘搭建的框架’更轻便,上手更快2.spring-cloud跟传统项目的区别是前者是分布式后者是单体架构,分布式即每个子项目都独立开服务与服务间有些服务支持给多个其他的服务调用【相当于简约了重复代码】,当然这个分布式中需要两个重要的服务2.1、网关服务(相当于‘分发’给不同的路由
- Nginx部署多个spring-boot项目(jar方式部署)
qq_16929815
nginxspringbootjava
1:在nginx配置增加:(我这里一个是后台管理项目,一个是APP接口项目)server{ listen 80; server_name xxx.xxx.cn;#这里是域名 access_loglogs/book.log; error_loglogs/book.error; #将/ce-admin请求转发给http://127.0.0.1:9196/ce-admin处理 loc
- 相关阅读文档
他҈姓҈林҈
附录经验分享
springyml和properties相关参数配置文档网址:https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#appendix.application-properties.coreSwagger3(OpenAPI3)帮助文档网址:https://springdoc
- spring-boot 打成jar把后 启动时指定参数无效
mcdull.t
javaspringbootprofiles命令启动
spring-boot打成jar把后启动时指定参数无效检查配置文件书写的规则,这里把规则说一下检查setAddCommandLineProperties配置检查setAddCommandLineProperties配置今天后台项目进行修改,使用spring.profiles来指定启动时使用的配置文件。在项目中添加好配置文件后使用java-jar.\base-exec.jar--spring.pro
- Spring-Boot入门(雷丰阳)
baidu_34298344
SpringBootspringbootjavaspring
spring启动原理分析一、spring-Boot启动依赖1、pom文件分析1️⃣maven插件2️⃣Spring-Boot父项目3️⃣spring-boot-starter启动器2、主程序类,主入口类3、使用SpringInitializer快速创建SpringBoot项目二、spring-Boot配置文件1、配置文件2、YAML语法:1️⃣基本语法2️⃣值的写法字面量:普通的值(数字,字符串,
- Spring-boot入门
HTMK_GT_MK
Spring学习Spring-boot
接着上一篇Spring入门,这里记录SpringBoot的学习。参考:[1]官方文档SpringBootReferenceGuide[2]慕课网SpringBoot开发常用技术整合SpringBoot可以用来干什么?SpringBoot可以干Spring可以干的所有事情,SpringBoot是Spring的一个‘全家桶’,提供开发者一个企业级的开发框架。SpringBoot(2.1.8)系统要求:
- IDEA与Eclipse的Jrebel热部署方案
cjp1016
注册获取Jrebel激活码jrebel是付费的,但是有个官方免费的途径,打开网址:https://my.jrebel.com/image.png注册获取激活码image.pngIDEA配置使用,热部署spring-boot项目打开JRebel面板,勾选支持的spring-boot项目image.png这样jrebel会在对应的resources目录底下生成一个rebel.xml文件。当修改Java
- Spring--视图内容协商(二)
NealLemon
本文是学习了小马哥在慕课网的课程的《SpringBoot2.0深度实践之核心技术篇》的内容结合自己的需要和理解做的笔记。上一篇Spring--视图内容协商(一)讲解了如何配置内容协商以及spring-boot是如何配置关联匹配策略的。现在让我们来自己走一遍协商流程,加深印象。由于现在主要都是RestfulAPI形式的请求,就主要把HeaderContentNegotiationStrategy这个
- Reason: 坏的凭证
Rookie。
Springboot
Spring-boot项目中,启动Demo2Application后,url:localhost:8080/login.html,需输入用户名、密码。此处的用户名、密码在application.yml中配置。securityuser:name:1password:1
- Linux的Initrd机制
被触发
linux
Linux 的 initrd 技术是一个非常普遍使用的机制,linux2.6 内核的 initrd 的文件格式由原来的文件系统镜像文件转变成了 cpio 格式,变化不仅反映在文件格式上, linux 内核对这两种格式的 initrd 的处理有着截然的不同。本文首先介绍了什么是 initrd 技术,然后分别介绍了 Linux2.4 内核和 2.6 内核的 initrd 的处理流程。最后通过对 Lin
- maven本地仓库路径修改
bitcarter
maven
默认maven本地仓库路径:C:\Users\Administrator\.m2
修改maven本地仓库路径方法:
1.打开E:\maven\apache-maven-2.2.1\conf\settings.xml
2.找到
 
- XSD和XML中的命名空间
darrenzhu
xmlxsdschemanamespace命名空间
http://www.360doc.com/content/12/0418/10/9437165_204585479.shtml
http://blog.csdn.net/wanghuan203/article/details/9203621
http://blog.csdn.net/wanghuan203/article/details/9204337
http://www.cn
- Java 求素数运算
周凡杨
java算法素数
网络上对求素数之解数不胜数,我在此总结归纳一下,同时对一些编码,加以改进,效率有成倍热提高。
第一种:
原理: 6N(+-)1法 任何一个自然数,总可以表示成为如下的形式之一: 6N,6N+1,6N+2,6N+3,6N+4,6N+5 (N=0,1,2,…)
- java 单例模式
g21121
java
想必单例模式大家都不会陌生,有如下两种方式来实现单例模式:
class Singleton {
private static Singleton instance=new Singleton();
private Singleton(){}
static Singleton getInstance() {
return instance;
}
- Linux下Mysql源码安装
510888780
mysql
1.假设已经有mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz
(1)创建mysql的安装目录及数据库存放目录
解压缩下载的源码包,目录结构,特殊指定的目录除外:
- 32位和64位操作系统
墙头上一根草
32位和64位操作系统
32位和64位操作系统是指:CPU一次处理数据的能力是32位还是64位。现在市场上的CPU一般都是64位的,但是这些CPU并不是真正意义上的64 位CPU,里面依然保留了大部分32位的技术,只是进行了部分64位的改进。32位和64位的区别还涉及了内存的寻址方面,32位系统的最大寻址空间是2 的32次方= 4294967296(bit)= 4(GB)左右,而64位系统的最大寻址空间的寻址空间则达到了
- 我的spring学习笔记10-轻量级_Spring框架
aijuans
Spring 3
一、问题提问:
→ 请简单介绍一下什么是轻量级?
轻量级(Leightweight)是相对于一些重量级的容器来说的,比如Spring的核心是一个轻量级的容器,Spring的核心包在文件容量上只有不到1M大小,使用Spring核心包所需要的资源也是很少的,您甚至可以在小型设备中使用Spring。
 
- mongodb 环境搭建及简单CURD
antlove
WebInstallcurdNoSQLmongo
一 搭建mongodb环境
1. 在mongo官网下载mongodb
2. 在本地创建目录 "D:\Program Files\mongodb-win32-i386-2.6.4\data\db"
3. 运行mongodb服务 [mongod.exe --dbpath "D:\Program Files\mongodb-win32-i386-2.6.4\data\
- 数据字典和动态视图
百合不是茶
oracle数据字典动态视图系统和对象权限
数据字典(data dictionary)是 Oracle 数据库的一个重要组成部分,这是一组用于记录数据库信息的只读(read-only)表。随着数据库的启动而启动,数据库关闭时数据字典也关闭 数据字典中包含
数据库中所有方案对象(schema object)的定义(包括表,视图,索引,簇,同义词,序列,过程,函数,包,触发器等等)
数据库为一
- 多线程编程一般规则
bijian1013
javathread多线程java多线程
如果两个工两个以上的线程都修改一个对象,那么把执行修改的方法定义为被同步的,如果对象更新影响到只读方法,那么只读方法也要定义成同步的。
不要滥用同步。如果在一个对象内的不同的方法访问的不是同一个数据,就不要将方法设置为synchronized的。
- 将文件或目录拷贝到另一个Linux系统的命令scp
bijian1013
linuxunixscp
一.功能说明 scp就是security copy,用于将文件或者目录从一个Linux系统拷贝到另一个Linux系统下。scp传输数据用的是SSH协议,保证了数据传输的安全,其格式如下: scp 远程用户名@IP地址:文件的绝对路径
- 【持久化框架MyBatis3五】MyBatis3一对多关联查询
bit1129
Mybatis3
以教员和课程为例介绍一对多关联关系,在这里认为一个教员可以叫多门课程,而一门课程只有1个教员教,这种关系在实际中不太常见,通过教员和课程是多对多的关系。
示例数据:
地址表:
CREATE TABLE ADDRESSES
(
ADDR_ID INT(11) NOT NULL AUTO_INCREMENT,
STREET VAR
- cookie状态判断引发的查找问题
bitcarter
formcgi
先说一下我们的业务背景:
1.前台将图片和文本通过form表单提交到后台,图片我们都做了base64的编码,并且前台图片进行了压缩
2.form中action是一个cgi服务
3.后台cgi服务同时供PC,H5,APP
4.后台cgi中调用公共的cookie状态判断方法(公共的,大家都用,几年了没有问题)
问题:(折腾两天。。。。)
1.PC端cgi服务正常调用,cookie判断没
- 通过Nginx,Tomcat访问日志(access log)记录请求耗时
ronin47
一、Nginx通过$upstream_response_time $request_time统计请求和后台服务响应时间
nginx.conf使用配置方式:
log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_r
- java-67- n个骰子的点数。 把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。
bylijinnan
java
public class ProbabilityOfDice {
/**
* Q67 n个骰子的点数
* 把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。
* 在以下求解过程中,我们把骰子看作是有序的。
* 例如当n=2时,我们认为(1,2)和(2,1)是两种不同的情况
*/
private stati
- 看别人的博客,觉得心情很好
Cb123456
博客心情
以为写博客,就是总结,就和日记一样吧,同时也在督促自己。今天看了好长时间博客:
职业规划:
http://www.iteye.com/blogs/subjects/zhiyeguihua
android学习:
1.http://byandby.i
- [JWFD开源工作流]尝试用原生代码引擎实现循环反馈拓扑分析
comsci
工作流
我们已经不满足于仅仅跳跃一次,通过对引擎的升级,今天我测试了一下循环反馈模式,大概跑了200圈,引擎报一个溢出错误
在一个流程图的结束节点中嵌入一段方程,每次引擎运行到这个节点的时候,通过实时编译器GM模块,计算这个方程,计算结果与预设值进行比较,符合条件则跳跃到开始节点,继续新一轮拓扑分析,直到遇到
- JS常用的事件及方法
cwqcwqmax9
js
事件 描述
onactivate 当对象设置为活动元素时触发。
onafterupdate 当成功更新数据源对象中的关联对象后在数据绑定对象上触发。
onbeforeactivate 对象要被设置为当前元素前立即触发。
onbeforecut 当选中区从文档中删除之前在源对象触发。
onbeforedeactivate 在 activeElement 从当前对象变为父文档其它对象之前立即
- 正则表达式验证日期格式
dashuaifu
正则表达式IT其它java其它
正则表达式验证日期格式
function isDate(d){
var v = d.match(/^(\d{4})-(\d{1,2})-(\d{1,2})$/i);
if(!v) {
this.focus();
return false;
}
}
<input value="2000-8-8" onblu
- Yii CModel.rules() 方法 、validate预定义完整列表、以及说说验证
dcj3sjt126com
yii
public array rules () {return} array 要调用 validate() 时应用的有效性规则。 返回属性的有效性规则。声明验证规则,应重写此方法。 每个规则是数组具有以下结构:array('attribute list', 'validator name', 'on'=>'scenario name', ...validation
- UITextAttributeTextColor = deprecated in iOS 7.0
dcj3sjt126com
ios
In this lesson we used the key "UITextAttributeTextColor" to change the color of the UINavigationBar appearance to white. This prompts a warning "first deprecated in iOS 7.0."
Ins
- 判断一个数是质数的几种方法
EmmaZhao
Mathpython
质数也叫素数,是只能被1和它本身整除的正整数,最小的质数是2,目前发现的最大的质数是p=2^57885161-1【注1】。
判断一个数是质数的最简单的方法如下:
def isPrime1(n):
for i in range(2, n):
if n % i == 0:
return False
return True
但是在上面的方法中有一些冗余的计算,所以
- SpringSecurity工作原理小解读
坏我一锅粥
SpringSecurity
SecurityContextPersistenceFilter
ConcurrentSessionFilter
WebAsyncManagerIntegrationFilter
HeaderWriterFilter
CsrfFilter
LogoutFilter
Use
- JS实现自适应宽度的Tag切换
ini
JavaScripthtmlWebcsshtml5
效果体验:http://hovertree.com/texiao/js/3.htm
该效果使用纯JavaScript代码,实现TAB页切换效果,TAB标签根据内容自适应宽度,点击TAB标签切换内容页。
HTML文件代码:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
- Hbase Rest API : 数据查询
kane_xie
RESThbase
hbase(hadoop)是用java编写的,有些语言(例如python)能够对它提供良好的支持,但也有很多语言使用起来并不是那么方便,比如c#只能通过thrift访问。Rest就能很好的解决这个问题。Hbase的org.apache.hadoop.hbase.rest包提供了rest接口,它内嵌了jetty作为servlet容器。
启动命令:./bin/hbase rest s
- JQuery实现鼠标拖动元素移动位置(源码+注释)
明子健
jqueryjs源码拖动鼠标
欢迎讨论指正!
print.html代码:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv=Content-Type content="text/html;charset=utf-8">
<title>发票打印</title>
&l
- Postgresql 连表更新字段语法 update
qifeifei
PostgreSQL
下面这段sql本来目的是想更新条件下的数据,可是这段sql却更新了整个表的数据。sql如下:
UPDATE tops_visa.visa_order
SET op_audit_abort_pass_date = now()
FROM
tops_visa.visa_order as t1
INNER JOIN tops_visa.visa_visitor as t2
ON t1.
- 将redis,memcache结合使用的方案?
tcrct
rediscache
公司架构上使用了阿里云的服务,由于阿里的kvstore收费相当高,打算自建,自建后就需要自己维护,所以就有了一个想法,针对kvstore(redis)及ocs(memcache)的特点,想自己开发一个cache层,将需要用到list,set,map等redis方法的继续使用redis来完成,将整条记录放在memcache下,即findbyid,save等时就memcache,其它就对应使用redi
- 开发中遇到的诡异的bug
wudixiaotie
bug
今天我们服务器组遇到个问题:
我们的服务是从Kafka里面取出数据,然后把offset存储到ssdb中,每个topic和partition都对应ssdb中不同的key,服务启动之后,每次kafka数据更新我们这边收到消息,然后存储之后就发现ssdb的值偶尔是-2,这就奇怪了,最开始我们是在代码中打印存储的日志,发现没什么问题,后来去查看ssdb的日志,才发现里面每次set的时候都会对同一个key