高效压缩库:Snappy Java
我来到这个世界,为了看看太阳和蓝色的地平线。——《城门开》 项目介绍 Snappy Java 是一个用于压缩和解压缩数据的高效Java库,它基于谷歌的 Snappy 压缩算法。Snappy 算法的设计目标是提供非常快速的压缩和解压缩操作,同时牺牲一定的压缩率以换取速度。在很多应用场景下,速度优先于压缩率,因此 Snappy 被广泛应用于数据处理、大数据分析和日志系统等场景。 Snappy Java 是 Snappy 算法的 Java 实现,它能够无缝集成到 Java 项目中,为开发者提供快速的压缩和解压缩操作,同时保留了跨平台的兼容性和高效的性能。 Snappy 的主要特点: 高压缩速度:相比于其他压缩算法,Snappy 的压缩速度非常快,适用于低延迟的应用。 适度压缩率:虽然压缩率不如一些其他压缩算法,但在大多数场景下,Snappy 的压缩率足以应对需求。 轻量级:Snappy 算法设计简洁,适合嵌入到各种应用中,尤其适合大规模的数据处理场景。 官方文档、GitHub地址 官方网站:Snappy Java Documentation GitHub仓库:xeri...
web组件库lion
君子耻不修,不耻见污;耻不信,不耻不见信;耻不能,不耻不见用。——荀子 github: https://github.com/ing-bank/lion 官方文档: https://lion-web.netlify.app/ Lion 是一组高性能、可访问且灵活的 Web 组件 它们提供了一个无主见的白标签层,可以扩展到您自己的组件层 高性能:专注于在所有相关浏览器中实现出色的性能,具有最少的依赖项 可及性:旨在符合 WCAG 2.2 AA 标准,以创建每个人都可以使用的组件 灵活性:通过 Web Components 和 JavaScript 类提供解决方案,这些类可以使用、采用和扩展以满足所有需求 现代代码:Lion 以纯 es 模块的形式分发 公开函数/类和 Web 组件:以最合适的形式提供功能 注意:我们的演示可能看起来有点平淡无奇,但这是故意的。它们仅带有功能性样式。这是有道理的,因为主要用例是扩展这些组件,如果您这样做,则不想覆盖现有样式。 Guides: Lion 安装: 1npm i @lion/ui 使用: 1234567891011121314...
Caffeine缓存
君子威而不猛,忿而不怒,忧而不惧,悦而不喜。——诸葛亮 项目介绍 Caffeine是一个基于Java8开发的提供了近乎最佳命中率的高性能的缓存库。 缓存和ConcurrentMap有点相似,但还是有所区别。最根本的区别是ConcurrentMap将会持有所有加入到缓存当中的元素,直到它们被从缓存当中手动移除。但是,Caffeine的缓存Cache 通常会被配置成自动驱逐缓存中元素,以限制其内存占用。在某些场景下,LoadingCache和AsyncLoadingCache 因为其自动加载缓存的能力将会变得非常实用。 Caffeine提供了灵活的构造器去创建一个拥有下列特性的缓存: 自动加载元素到缓存当中,异步加载的方式也可供选择 当达到最大容量的时候可以使用基于就近度和频率的算法进行基于容量的驱逐 将根据缓存中的元素上一次访问或者被修改的时间进行基于过期时间的驱逐 当向缓存中一个已经过时的元素进行访问的时候将会进行异步刷新 key将自动被弱引用所封装 value将自动被弱引用或者软引用所封装 驱逐(或移除)缓存中的元素时将会进行通知 写入传播到一个外部数据源当中 持续计...
Apache-ShenYu注册失败问题
金钱和时间是人生两种最沉重的负担,最不快乐的就是那些拥有这两种东西太多,多得不知怎样使用的人。——约翰逊 https://github.com/apache/shenyu/pull/5648 主要是当client id发生变化以后,再次启动ShenyuTestHttpApplication 会报错client id不匹配注册不上,这里调整了判断,如果token里不存在client id,就不进行校验 123456String clientIdFromToken = JwtUtils.getClientId(token);if (StringUtils.isNotEmpty(clientIdFromToken) && StringUtils.isNotEmpty(dashboardUserVO.getClientId()) && !StringUtils.equals(dashboardUserVO.getClientId(), clientIdFromToken)) { throw new Authe...
Apache-ShenYu支持namespace功能(三)
若我会见到你,事隔经年。我如何和你招呼,以眼泪,以沉默。——《春逝》 PR链接: [Improve] Rule and MetaData module adaptation namespace by VampireAchao · Pull Request #478 · apache/shenyu-dashboard · GitHub 本次主要是支持了Rule和MetaData部分的namespace功能 这里要注意的是别忘记切换namespace后,在componentDidUpdate中要进行判断 12345678componentDidUpdate(prevProps) { const { currentNamespaceId } = this.props; // 如果当前namespace变更 if (prevProps.currentNamespaceId !== currentNamespaceId) { // 重新按照当前`namespaceId`查询列表 this.query(); }...
Disruptor
有教养的头脑的第一个标志就是善于提问。——普列汉诺夫 官方文档: LMAX Disruptor github: GitHub - LMAX-Exchange/disruptor: High Performance Inter-Thread Messaging Library Disruptor是由LMAX Exchange开发的一个高性能并发框架,专门用于处理需要低延迟和高吞吐量的场景。与传统的队列模型相比,Disruptor通过无锁的环形缓冲区实现了极高的性能,适合用在对性能要求苛刻的金融交易系统、日志处理系统等领域。 Disruptor的核心概念 Disruptor框架的核心组件包括: RingBuffer: 环形缓冲区,用于存储事件。它的大小是2的幂次方,以便利用位运算进行快速计算。 Event: 事件对象,代表要处理的数据单元。 Producer: 生产者,负责将事件发布到RingBuffer中。 Consumer: 消费者,从RingBuffer中获取事件并处理。 这些组件协同工作,形成一个高效的数据处理流水线。 引入依赖: 12345<depe...
MacBookM2Max配置CrossOver运行黑神话悟空
教条并不意味着没有思想,而是思想的终结。——切斯特顿 这里基础配置 Mac电脑如何安装运行《黑神话:悟空》,苹果电脑怎么玩《黑神话:悟空》-CrossOver中文网 打开发现黑屏无法运行 需要将高级设置里的D3DMetal、MSync、高分辨率模式打开 然后Wine配置里选择Windows版本为Windows 11 然后需要在 https://developer.apple.com/games/game-porting-toolkit/ 下载Tdpk2.0 打开dmg文件 在Game Porting Toolkit里选择Evaluation environment for Windows games 2.0 找到redist目录把lib下的external和wine复制到/Applications/CrossOver.app/Contents/SharedSupport/CrossOver/lib64/apple_gptk里面覆盖掉原有的external和wine目录,画质拉到最低即可平均40帧畅玩
jps、jstack查看java堆栈信息
宿命论是那些缺乏意志力的弱者的借口。——罗曼·罗兰 jps查看进程信息命令如下: 12345678Github-Id-VampireAchao:shenyu achao$ jps -l27312 jdk.jcmd/sun.tools.jps.Jps88929 27268 org.jetbrains.jps.cmdline.Launcher27269 org.apache.shenyu.examples.http.ShenyuTestSwaggerApplication19815 com.intellij.idea.Main27175 org.jetbrains.idea.maven.server.RemoteMavenServer3624237 org.sonarsource.sonarlint.core.backend.cli.SonarLintServerCli 然后用jstack查看堆栈信息: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484...
notice-maven-plugin
历史是一堆灰烬,但灰烬深处有余温。——黑格尔 Maven Notice Plugin 配置在Maven项目中使用notice-maven-plugin来生成关于项目依赖的法律声明,只需要简单地配置pom.xml文件: 1234567891011121314151617<plugin> <groupId>org.jasig.maven</groupId> <artifactId>notice-maven-plugin</artifactId> <version>2.0.0</version> <configuration> <noticesDirectory>${project.build.directory}/notices</noticesDirectory> <encoding>UTF-8</encoding> </configuration>...
jacoco-maven-plugin单元测试覆盖度报告
你与别人花费一样的时间,因为别人用心,而你吊儿郎当,所以到了最后检验成果的时候,别人成功,而你除了赔了时间之后,一无所得。——飞行员舒克 文档: JaCoCo - Maven Plug-in 首先配置: 12345678910111213141516171819<plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.12</version> <executions> <execution> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> ...
