很多编程语言都有位运算符,Java语言也不例外。在Java语言中,提供了7种位运算符,分别是按位与(&)、按位或(|)、按位异或(^)、取反(~)、左移(<<)、带符号右移(>>)和无符号右移(>>>)。这些运算符当中,仅有~是单目运算符,其他运算符均为双目运算符。在讲解这些运算符的使用之前,必须了解一个常识,那就是:位运算符是对long、int、short、byte和char这5种类型的数据进行运算的,我们不能对double、float和boolean进行位运算操作。如果你要理解本文章的理论和逻辑,可以参考,有人写了我就不啰嗦了全网首发:12...阅读全文>>
log4jdbc is a Java JDBC driver that can log SQL and/or JDBC calls (and optionally SQL timing information) for other JDBC drivers using the Simple Logging Facade For Java (SLF4J) logging system.新入手一个项目,想要了解其业务逻辑,看其SQL是必不可少的,但是为了更明了的学习,我们往往需要把SQL拿出来,调试和验证。在SpringBoot集成MyBatis中,如果想要打印SQL,很简单:mybatis: ...阅读全文>>
开始时经常遇到这种情况,端口被占用了,可能是已经启动了服务,也可能服务挂了但是端口被占用中导致无法重启。这个时候,需要根据端口,找到服务进程,然后强制关闭掉。开始菜单运行CMD,或者是 window+R 组合键,调出命令窗口。也可以在任意地方,按住Shift后右键,可以打开Shell窗口。例如,我运行SpringBoot,占用端口8080,我们在命令行窗口杀掉这个进程首先执行命令,查看端口占用netstat -aon|findstr "8080"执行命令看是谁占用了,确认一下别搞错了tasklist|findstr "21952&qu...阅读全文>>
一个轻量级 java 权限认证框架,让鉴权变得简单、优雅!https://sa-token.cc/index.html Sa-Token 目前主要五大功能模块:登录认证、权限认证、单点登录、OAuth2.0、微服务鉴权。登录认证 —— 单端登录、多端登录、同端互斥登录、七天内免登录权限认证 —— 权限认证、角色认证、会话二级认证Session会话 —— 全端共享Session、单端独享Session、自定义Session踢人下线 —— 根据账号id踢人下线、根据Token值踢人下线账号封禁 —— 登录封禁、按照业务分类封禁、按照处罚阶梯封禁持久层扩展 —— 可集成Redis、Memc...阅读全文>>
简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件https://jpom.top/pages/install/ 介绍:方便的用户管理用户操作监控,监控指定用户指定操作以邮件形式通知多用户管理,用户项目权限独立(上传、删除权限可控制),完善的操作日志,使用工作空间隔离权限账号可以开启 MFA 两步验证提高账号安全性界面形式实时查看项目运行状态、控制台日志、管理项目文件在线修改项目文本文件Docker 容器管理、Docker swarm 集群管理 Docker UI在线 SSH 终端,让您在没有 Xshell、FinalShell 等软件也能轻松管理服务器 SSH终端登录 Jp...阅读全文>>
Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。JWT官网: https://jwt.io/ JWT(Java版)的github地址:https://github.com/jwtk/jjwt 之前写过两篇关于JWT的...阅读全文>>
Stream是一个只能追加内容的数据类型。也就是说Stream这种数据类型,我们对他的添加操作,只能是向Stream的末尾追加内容,不能在头部或者中间插入内容。那追加的是什么内容呢?Stream中追加的内容其实就是一个或多个key-value pair。这些键值对不必遵循相同的结构。每一次追加的键值对都可以不同。例如第一次追加name=hello的键值对,第二次也可以变成追加desc=word的键值对。关于Redis Stream的文章满天飞,这里不再重复,但是这些文章只是告诉你如何发消息,收消息,但是没有说如果我们的业务处理过程中出现了问题,这些没有处理的消息,怎么再次处理?在之前消息队列时...阅读全文>>
在官网的文档介绍中有一行介绍:Redis是一个快速稳定的发布/订阅消息系统。Redis提供了发布与订阅的功能,可以用于消息的传输,Redis的发布订阅机制包括三部分,发布者、订阅者和Channel(主题或者队列)。其原生命令以及相关介绍http://www.redis.cn/topics/pubsub.html 。Redis可以提供基本的发布订阅功能,但毕竟不像消息队列那种专业级别,所以会存在以下缺点:redis无法对消息持久化存储,消息一旦被发送,如果没有订阅者接收,数据会丢失。消息队列提供了消息传输保障,当客户端连接超时或事物回滚的等情况发生时,消息会重新发布给订阅者。redi...阅读全文>>
Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步...阅读全文>>
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、流量路由、熔断降级、系统自适应过载保护、热点流量防护等多个维度保护服务的稳定性。Sentinel 具有以下特征:丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。完备的实时监控:Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。广泛的开源生态:Sentinel 提供开...阅读全文>>