Redis

记一次订单号重复的事故,快看看你的 uuid 在并发下还正确吗?

时光总嘲笑我的痴心妄想 提交于 2020-10-02 04:03:46
     作者:funnyZpC   cnblogs.com/funnyzpc/p/13541713.html   去年年底的时候,我们线上出了一次事故,这个事故的表象是这样的:    系统出现了两个一模一样的订单号,订单的内容却不是不一样的,而且系统在按照 订单号查询的时候一直抛错,也没法正常回调,而且事情发生的不止一次,所以 这次系统升级一定要解决掉。   经手的同事之前也改过几次,不过效果始终不好:总会出现订单号重复的问题, 所以趁着这次问题我好好的理了一下我同事写的代码。   这里简要展示下当时的代码:    /** * OD单号生成 * 订单号生成规则:OD + yyMMddHHmmssSSS + 5位数(商户ID3位+随机数2位) 22位 */ public static String getYYMMDDHHNumber(String merchId){ StringBuffer orderNo = new StringBuffer(new SimpleDateFormat("yyMMddHHmmssSSS").format(new Date())); if(StringUtils.isNotBlank(merchId)){ if(merchId.length()>3){ orderNo.append(merchId.substring(0,3)); }else {

零废话!全程高能NettyRedis+ZooKeeper笔记

て烟熏妆下的殇ゞ 提交于 2020-10-02 03:35:26
写在最前面 移动时代、5G时代、物联网时代的大幕已经开启,它们对于高性能、高并发的开发知识和技术的要求,抬升了Java工程师的学习台阶和面试门槛。大公司的面试题从某个侧面映射出生产场景中对专项技术的要求。高并发的面试题以前基本是BAT等大公司的专利,现在几乎蔓延至与Java项目相关的整个行业。例如,与Java NIO、Reactor模式、 高性能通信、分布式锁、分布式ID、分布式缓存、高并发架构等技术相关的面试题,从以前的加分题变成了现在的基础题,这也映射出开发Java项目所必需的技术栈:分布式Java框架、Redis缓存、分布式搜索ElasticSearch、分布式协调ZooKeeper、消息队列Kafka、高性能通信框架Netty。 今天分享的这份笔记虽然重在讲解Netty、Redis、 ZooKeeper的使用方法,但是还有一个更大的价值,就是为大家打下Java高并发开发技术的坚实基础。 首先,从操作系统的底层原理开始讲解:浅显易懂地剖析高并发IO的底层原理,并介绍如何让单体Java应用支持百万级的高并发:从传统的阻塞式OIO开始,细致地解析Reactor高性能模式,介绍高性能网络开发的基础知识:从Java的线程Join和线程池开始,介绍Java Future和Guava ListenableFuture两种常用异步回调技术。这些原理方面的基础知识非常重要

科学家的挑战:十年前写的代码现在还能否运行

天大地大妈咪最大 提交于 2020-10-02 03:34:20
2019 年,法国国家信息与自动化研究所(INRIA)的 Nicolas Rougier 和国家科学研究中心(CNRS)的 Konrad Hinsen 发起了一个项目:Ten Years Reproducibility Challenge,邀请科学家重新运行十年前或更早时间写的代码。有 35 名科学家参与了挑战,结果陆续发表在《ReScience C》期刊上。 科学家使用的语言从 C 和 R 到 Mathematica 和 Pascal,还有人重复的不是代码而是分子模型,编码在 Systems Biology Markup Language (SBML)中。参与者意识到,曾经他们以为能牢牢记住的东西其实一个月内就会开始遗忘,要让代码能重复运行他们需要记录相关的信息,比如使用的参数值。Rougier 本人再现的代码需要软盘和 Apple II 电脑,电脑不是问题,他的办公室里就有一台。意大利科学家 Sabino Maggi 在 1995 年使用 Fortran 语言建模了超导装置约瑟夫逊结,用微软的 VB 处理结果。Fortran 语言几十年来基本没变,编译代码没有遇到问题。问题是 VB。VB 早就死亡了,它就被 Visual Basic.NET 取代了,两者之间的共同之处就是它们的名字。为了运行代码,他在 Mac 上创建了虚拟环境,加载了 Microsoft DOS 6.22 和

上手Redis系列(六):超全Geospatial特殊类型详解(地理位置)

廉价感情. 提交于 2020-10-01 23:51:57
学习Redis五种类型之一的Zset之前,我还是觉得我务必跟你说一声,也是在我文章之中说的很多的一句话,我想也会适用于学习Redis,那就是在接触文章里的Reids命令时,不用试图去记这些命令 ,用到时去看API帮助文档即可;会用了或者实践过了再去了解也不会迟 。 上手Redis系列 上手Redis必知必会:最基础知识点和最基本常用操作 上手Redis系列(一):超全String字符串类型详解 上手Redis系列(二):超全List列表类型详解(代码图文示例) 上手Redis系列(三):超全集合Set类型详解(代码图文示例) 上手Redis系列(四):超全哈希Hash类型详解(代码图文示例) 上手Redis系列(五):超全有序集合Zset类型详解 在Redis中会发现一个有趣的 套路 规律,就是每种类型的命令会由类型的首字母开头。就像看下面的Geospatial,如果你耐心看下面的命令会发现都会以 的 Geo 开头。 1.geospatial详解与用途 geospatial自Redis3.2.0版本可以使用。 geospatial 地理位置,具体用途在我们生活中随处可见,例如:地图导航,附近的人,共享单车距离等等。 2.geospatial的命令 有6个命令 GEOADD GEODIST GEOHASH GEOPOS GEORADIUS GEORADIUSBYMEMBER 3

Kettle下载Redisinput插件查询Redis数据

会有一股神秘感。 提交于 2020-10-01 20:31:34
Kettle下载Redisinput插件查询Redis数据 安装插件 1)下载Redisinput插件 https://gitee.com/jekey/kettle-redis-input-plugin 2)将完整插件包复制到Kettle目录的plugins目录下 3)重启Kettle,找到 Redis input 插件,插件参数配置如下图所示: 修改相关配置,使其满足外部程序连接Redis数据库的前置条件 1)查看程序执行的主机hosts文件中存储了Redis数据库所在服务器的主机名和对应的IP地址,若无,请添加对应关系到hosts文件中。 Linux:/etc/hosts Windows : C:\Windows\System32\drivers\etc\hosts 2)Redis 所在服务器(配置允许外部访问) 1.查看服务器防火墙 firewall-cmd --state 若防火墙是开启状态,可直接关闭防火墙(不建议) # 关闭防火墙(不建议) systemctl stop firewall 或向防火墙添加Redis端口开放(建议) 向防火墙添加Redis端口开放如下: 在running 状态下,向firewall 添加需要开放的端口 # 永久的添加该端口。去掉--permanent则表示临时 firewall-cmd --permanent --zone = public

cas5.x实现将ticket维护到redis集群(不使用官方提供的哨兵模式)

北城以北 提交于 2020-10-01 16:47:48
转载至: http://zhfeat.cc/article/45 2020博客地址汇总 2019年博客汇总 前段时间基于CAS 5.2.6为公司二次开发了一套SSO单点登陆系统,整体来说比较顺利,不过最后卡在了将CAS服务端登陆所产生的ticket放到redis集群中这一环节。现在网上相关资料最多的是基于CAS 4.x版本的文章,对于CAS 5.x版本相关的资料还是比较少的,因此没有找到具体的解决同学,纠结了许久最后通过覆盖官方提供的jar包中的类解决了这个问题,希望能帮助到同样遇到这个问题的童鞋。该问题可能会有更优雅的解决方式,如果大家有更好的解决思路希望能分享给我,大家一同进步。 什么是CAS 这段是对CAS原理的一个剖析和总结,已经很清楚的同学可以略过。 SSO单点登录访问流程主要有以下步骤 访问服务:SSO客户端发送请求访问应用系统提供的服务资源。 定向认证:SSO客户端会重定向用户请求到SSO服务器。 用户认证:用户身份认证。 发放票据:SSO服务器会产生一个随机的Service Ticket。 验证票据:SSO服务器验证票据Service Ticket的合法性,验证通过后,允许客户端访问服务。 传输用户信息:SSO服务器验证票据通过后,传输用户认证结果信息给客户端。 CAS 原理和协议 从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client

面试进阶必备:JVM+Redis+设计模式+SpringBoot.pdf文档资料

邮差的信 提交于 2020-10-01 14:28:56
今天给大家分享下我整理的Java架构面试专题及答案,其中大部分都是大企业面试常问的面试题,可以对照这查漏补缺,当然了,这里所列的肯定不可能覆盖全部方式,不过也希望能对即将找工作的朋友起到一些帮助! Java面试的重点: 数据结构与算法,JVM内存结构、垃圾回收器、回收算法、GC、并发编程相关(多线程、线程池等)、NIO/BIO、性能优化、设计模式、Spring框架:分布式相关:Redis缓存、一致Hash算法、分布式存储、负载均衡等,微服务以及Docker容器等。 在这由于文字很多,小编已将金九银十的面试高频考点都整理为了一份PDFJava面经文档,同时还会有对应的书籍pdf资料。 三连之后查看下图中免费获取 Java面经。pdf文档资料 部分面试常问的面试专题 一、JVM与性能优化 描述一下 JVM 加载 Class 文件的原理机制? 什么是类加载器? 类加载器有哪些? 什么是tomcat类加载机制? 类加载器双亲委派模型机制? Java 内存分配? Java 堆的结构是什么样子的? 简述各个版本内存区域的变化? 说说各个区域的作用? Java 中会存在内存泄漏吗,简述一下? Java 类加载过程?什么是GC? 为什么要有 GC? 简述一下Java 垃圾回收机制? 如何判断一个对象是否存活? 垃圾回收的优点和原理,并考虑 2 种回收机制? 基本原理是什么? 深拷贝和浅拷贝?

成功入职京东薪资30k:拿到京东offer经验分享「面试经历+面试真题」,我感觉你也行

与世无争的帅哥 提交于 2020-10-01 12:53:15
前言 正逢金三银四,很多大型互联网公司都采用线上面试的方法来挑选人才,也有很多幸运的小伙伴也是拿到大厂的offer,今天给大家分享的是我一位幸运拿到京东offer的朋友的面试经历,疫情刚有好转,相信还有很多朋友是在线上办公的,我也闲来无事,问到了我朋友京东面试的一些真题,以及我整理的一些真题分享给大家。 由于文章的篇幅有限,面试真题的答案和解析,我会整理在一起,大家有需要可以关注小编+转发文章关注文末公众号获取。附上java核心知识点 三面京东: 一面: 离职原因; Zookeeper在项目中的使用及原理; Springcloud的一些组件介绍; Redis实现方式: 为什么使用setnx,或者说set 和setNx有什么区别 系统在10:05 设置一个值,并给出5分钟的过期时间,系统刚刚set完之后redis集群崩溃,10:11分系统重启成功,那么redis中set的值是否还存在? 多线程的创建方式 服务器CPU数量及线程池数量的关系? 说说Mysql的sql优化 你认为自己的技术怎么样? 二面: Mysql是集群还是单节点;最大的表中数据量大约是多少?3000w-4000w; Mysql主从配置是DBA去做还是自己去做?mysql主从同步的机制的原理?mysql主从复制主要有几种模式? Redis持久化方式:rdb、aof;redis中哪个版本开始可以对分布式使用;

微信点餐系统(十二)-买家与卖家端连通

随声附和 提交于 2020-10-01 11:49:42
章节感悟 1.cookie的设置与注销 2.redis的使用,数据插入与删除 3.AOP的使用 4.全局捕获异常 5.微信模板消息推送 6.webSocket消息推送 买家与卖家端连通 卖家信息表 dao 开发和 service 开发 1. 创建卖家信息表 seller_info create table seller_info( seller_id varchar( 32) not null , username varchar( 32) not null , password varchar( 32) not null , openid varchar( 64) not null comment '微信openid' , create_time timestamp not null default current_timestamp comment '创建时间' , update_time timestamp not null default current_timestamp on update current_timestamp comment '更新时间' , primary key(seller_id) ) comment '卖家信息表'; 2.DAO 实体映射 SellerInfo 3.SellerInfoRepository 4. 创建 SellerService