实战
文章平均质量分 93
程序新视界
个人公众号【程序新视界】,一个硬技术,软实力同步提升的平台。《Spring Boo技术内幕:架构设计与实现原理》作者,《深入以太坊智能合约开发》联合作者之一。主要从事于三方支付行业。
展开
-
缓存穿透、缓存雪崩、缓存击穿?再也不怕了,你随便问吧
在现代软件架构中,缓存的应用已经非常普及。缓存的使用在面试和实践中都是避不开的硬技能、硬知识,如果你说还不太熟悉缓存的使用,可能都不好意思说自己是程序员。在上篇文章《如果不知道这4种缓存模式,敢说懂缓存吗?》中,我们介绍了缓存使用的四种策略,如果能够结合不同的场景进行灵活运用,你已经超过了大多数人。毕竟,那四种策略,很多开发多年的人可能都没听说过。这篇文章,带大家进一步学习在缓存使用中不得不考虑三个特殊场景:缓存穿透、缓存雪崩、缓存击穿。为什么说不得不考虑?因为如果不考虑这些特殊的场景,在高并发的情况可能直原创 2022-07-11 07:35:12 · 774 阅读 · 0 评论 -
Java实现监听文件变化的三种方法,推荐第三种
背景在研究规则引擎时,如果规则以文件的形式存储,那么就需要监听指定的目录或文件来感知规则是否变化,进而进行加载。当然,在其他业务场景下,比如想实现配置文件的动态加载、日志文件的监听、FTP文件变动监听等都会遇到类似的场景。本文给大家提供三种解决方案,并分析其中的利弊,建议收藏,以备不时之需。方案一:定时任务 + File#lastModified这个方案是最简单,最能直接想到的解决方案。通过定时任务,轮训查询文件的最后修改时间,与上一次进行对比。如果发生变化,则说明文件已经修改,进行重新加载或对应的原创 2022-05-30 08:24:14 · 6034 阅读 · 5 评论 -
雪花算法:分布式唯一ID生成利器
前言无论是在分布式系统中的ID生成,还是在业务系统中请求流水号这一类唯一编号的生成,都是软件开发人员经常会面临的一场景。而雪花算法便是这些场景的一个解决方案。以分布式ID为例,它的生成往往会在唯一性、递增性、高可用性、高性能等方面都有所要求。并且在业务处理时,还要防止爬虫根据ID的自增进行数据爬取。而雪花算法,在这些方面表现得都不错。常见分布式ID生成市面上比较常见的分布式ID生成算法及类库:UUID:Java自带API,生成一串唯一随机36位字符串(32个字符串+4个“-”)。可以保证唯一性,但原创 2022-02-23 09:13:27 · 2309 阅读 · 0 评论 -
Log4j史诗级漏洞,从原理到实战,只用3个实例讲明白
背景最近互联网技术圈最火的一件事莫过于Log4j2的漏洞了。同时也涌现出了各类分析文章,关于漏洞的版本、漏洞的原因、漏洞的修复、程序员因此加班等等。经常看我文章的朋友都知道,面对这样热门有意思的技术点,怎能错过深入分析一波呢?大概你也已经听说了,造成漏洞的”罪魁祸首“是JNDI,今天我们就聊它。JNDI,好熟悉,但……熟悉的陌生人?JNDI到底是个什么鬼?好吧,如果你已经有一两年的编程经验,但还不了解JNDI,甚至没听说过。那么,要么赶紧换工作,要么赶紧读读这篇文章。JNDI是个什么鬼?说起JND原创 2021-12-13 10:03:29 · 14402 阅读 · 7 评论 -
根据Token获取用户信息的N种姿势,这种最完美!
Web项目中经常会用token来进行用户的访问验证,那么在获得token之后,如果有很多地方需要根据token获得对应的用户信息,你会怎么获取?本文给大家提供N种方式,对照一下,看看你的项目中所使用的方式属于哪个Level,是不是要赶快升级一下?关于token生成、认证部分的操作本文不会涉及,也就是默认token是经过合法性校验的,本文将重点放在之后进行的业务相关处理,即基于token获取用户信息的方式(部分方式需要基于SpringBoot)。Level1:手动获取通常token会放在header当原创 2020-12-21 07:34:47 · 15966 阅读 · 10 评论 -
如何发布自己的项目到Maven中央仓库?
在Maven项目中,90%以上的jar包是通过pom文件直接从开源仓库中获取依赖jar包文件,然后在项目中进行集成使用。此时如果你有一个开源项目,那么如何将该开源项目发布到Maven中央仓库,让其他人可以方便的使用,而不是先下载jar,然后install的本地?本文将通过一步步的操作带领大家讲自己的开源项目发布到Maven中央仓库(Maven Central Repository)中,https://mvnrepository.com/。Maven中央仓库并不支持直接发布jar包,需要将jar包发布到原创 2020-07-28 13:28:24 · 2637 阅读 · 3 评论 -
JWT-JSON WEB TOKEN使用详解及注意事项
越来越多的开发者开始学习并在实际项目中运用JWT(Json Web Token)技术来保护应用安全,很多公司的应用程序也开始使用JWT来管理用户会话信息,可谓风光无限。任何技术框架都有自身的局限性,不可能一劳永逸,JWT也不例外。本文将从JWT的概念、基本原理和适用范围来剖析JWT并不是银弹,需要谨慎处理。众所周知,如果账户信息(用户名和密码)泄露,存储在服务器上的隐私数据将受到毁灭性的打击,...转载 2019-11-21 08:16:30 · 1360 阅读 · 0 评论 -
系统性能优化5000 字干货
作为一个程序员,性能优化是常有的事情,不管是桌面应用还是web应用,不管是前端还是后端,不管是单点应用还是分布式系统。本文从以下几个方面来思考这个问题:性能优化的一般性原则,性能优化的层次,性能优化的通用方法。而且不限于任何语言、框架,不过可能会用Python语言来举例。一般性原则依据数据而不是凭空猜测这是性能优化的第一原则,当我们怀疑性能有问题的时候,应该通过测试、日志、profillig...转载 2019-11-13 10:15:20 · 737 阅读 · 2 评论 -
防盗链使用过程中遇到的问题
工作中需要对音频和图片进行防盗链处理,数据存储使用第三方服务,在使用的过程中遇到的一些注意事项,特与大家分享。防盗链的原理和应用场景具体使用可参看此篇文章《防盗链》,里面已经详细的介绍了防盗链的原理及使用场景,和高级防盗链。这里就不再照本宣科。具体使用中遇到的问题项目中使用的是阿里云的OSS服务,官网和云服务采用的通信都是http的,这两天将自己的服务通过证书设置为https的请求。在...原创 2018-12-20 22:20:31 · 1490 阅读 · 1 评论 -
Mysql查询某条记录在分页的第几页
实践中我们会遇到这样的问题,知道某条记录的id,然后需要判断此条记录如果按照id进行排序分页,此条记录在第几页。今天这篇文章为大家提供一个思路。根据ID查询分页位置根据ID来查询分页位置,比如按照ID的倒序排列,则可通过以下SQL查询出大于此ID记录数:select count(id) from user where id > 5;示例中user为表名,5位待匹配的id。很显然...原创 2018-11-20 15:19:16 · 4920 阅读 · 0 评论 -
社交系统中用户好友关系数据库设计
在社交类系统中,用户与用户的好友关系的设计必不可少,那么如何设计好友的数据库至关重要,本篇文章带大家学习一下相关的设计方案。基础分析第一步,有一张用户表,表内包含用户的基本信息,比如账号、姓名、性别等信息。这里用tb_user表示用户信息表。 ID 用户名 1 张三 2 李四 3 王五 4 赵六第二步,...原创 2018-09-17 10:19:33 · 23212 阅读 · 5 评论 -
实战-全局唯一邀请码功能实现
无论什么APP需要做推广功能,而推广功能多多少少都离不开邀请码。被邀请用户下载APP登录时输入邀请码,邀请码所有者将获得一定的好处,比如积分奖励、现金奖励或者免费试用(VIP)等特权。一套优秀的邀请码生成机制不仅确保全局唯一性,还需要考虑到性能等问题。本篇文章带大家探究一下基于Java的邀请码生成。邀请码实现邀请码的特性唯一性:确保每个用户的邀请码都是独一无二的,这样...原创 2018-08-14 20:07:19 · 14040 阅读 · 2 评论