2021

最近log4j2的核弹级漏洞席卷了大部分互联网公司,升级版本成了这两周的核心任务。对于要升级到什么版本,最新版本2.16.0是最佳选择。那么如何快速升级,之前也给出了Spring Boot项目升级版本的最简方法。 大家只需要使用这样的简单配置,就可以把log4j2一系列包的版本都升级了。 如果这种方法不行,注意加了配置之后要reload下。另外,如果你不是Spring Boot项目,或者是通过其他方式引入的log4j2,那么需要单独处理,或者在你项目的根依赖里,直接写上log4j2的依赖并设置版本为2.16.0,强制覆盖其他地方引入的版本。 上面的配置很简单,但还是有读者不清楚为什么这样就可以了: 所以,今天就具体给大家说一下这个配置的原理。 一步步了解为什么下面我会以读代码寻找源头的方式,带你一步步了解这个配置。希望你通过本文除了知道这个问题是为什么,还能学会这种自己探究问...

Spring Cloud 2020.0.5 正式发布,这是错误修正版本。兼容 Spring Boot 2.4.x and 2.5.x, 不支持 2.6.x (请使用 Spring Cloud 2021) 目前已经可以从中央仓库获取,坐标如下: <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>2020.0.5</version> ...

你见过哪些验证码?数字?图像?算数?拼图? 这些都太普通了!能不能用游戏的方式做一款验证码呢? 今天就给大家推荐一个开源项目:doomcaptcha doom,可能年轻点的小伙伴不清楚,但是在我小时候,doom及其制作小组都是神一样的存在,doom是当时最最流行的第一人称射击游戏,doom之父就是那位搞出快速平方根算法的约翰·卡马克。 想必作者采用doom作为验证码的原型,也是一种致敬! 项目非常有创意的将验证码和初代doom游戏结合在了一起,如果要完成验证,就需要在页面上使用当年doom的那把手枪干掉四个随机出现的doom小怪物就行了。 不过如果你打的太慢,可是要不合格的哟,因为作者还加入了倒计时模式,要在规定的时间里打完四个小怪物哟! 这里整理了一波超级好用的IDEA插件,一定有你喜欢的! 并且每一次出现的怪物和场景都是随机的,让你每一次输入验证码都是不一样的感受,真是让...

说起全球最有吸金能力的IP,大家会想到什么呢?是漫威?是哈利波特?还是王者荣耀(笑)? 其实很多印象都是主观的,根据Wikimili从上市公司财务数据、全球第三方权威数据统计平台等多方面汇总出来的数据,我们可以看到,目前全球最最吸金的IP,可是宝可梦哟! 整整1000亿美元,不过我们今天要说的主角可不是宝可梦,TJ君今天想跟大家分享的是榜单上的第9名,力压哈利波特一头的,super mario,马里奥大叔~ 毕竟,对于80后的TJ君来说,马里奥大叔就是童年FC的美好回忆,所以今天要和大家分享的就是一款完全由TypeScript完成的马里奥在线开源小游戏! MarioHTML 项目需要安装TypeScript和相关依赖 npm install -g typescript 然后运行TSC编译器来构建JavaScript文件 这里整理了一波超级好用的IDEA插件,一定有你喜欢的! ...

昨天,Apache Log4j 团队再次发布了新版本:2.16.0! 2.16.0 更新内容 默认禁用JNDI的访问,用户需要通过配置log4j2.enableJndi参数开启 默认允许协议限制为:java、ldap、ldaps,并将ldap协议限制为仅可访问Java原始对象 Message Lookups被完全移除,加固漏洞的防御 更多细节,可以通过官网查看:https://logging.apache.org/log4j/2.x/ 如果您正在学习Spring Boot,那么推荐一个连载多年还在继续更新的免费教程:https://blog.didispace.com/spring-boot-learning-2x/ Spring Boot用户如何升级Spring Boot用户依然可以通过前几天分享的Spring Boot应用简易升级Spring Boot下所有log4j版本的...

也许你是以为代码高手,Markdown写作高手,但你是PPT高手吗? 你的成绩有没有被PPT高手抢走过呢? 不会作精美PPT是不是很头疼呢? 今天就给大家介绍了一款PPT制作利器:Slidev~ 说Slidev之前,咱先聊聊Markdown,在认识Markdown之前,各种版式样式的问题也一直困扰着TJ君,所幸Markdown的出现完美的解决了这个问题,而Slidev,或许就是和Markdown一样的一个东东哦! 这里整理了一波超级好用的IDEA插件,一定有你喜欢的! Slidev使用了一种扩展的Markdown格式,使得用户可以仅仅使用纯文本的形式也完成PPT的制作,尤其对于开发者来说,Slidev可以通过代码支持 HTML 和 Vue 组件,可以现场根据演示效果进行编码和修改,开发者可以将精力更多的集中在内容实现上 简单来说,Slidev有如下的功能特点: 📝 Mark...

Office Automation,江湖人称OA,一般都是公司内部办公自动化系统的简称, 通常是将计算机、通信等现代化技术运用到传统办公方式,进而形成的一种新型办公方式。 一般去到某个公司入职,最早听到的往往就是“XXX,帮忙把新员工的OA开一下” 一个好的OA系统可以优质而高效地处理办公事务和业务信息,实现对信息资源的高效利用,进而达到提高生产率、辅助决策的目的,最大限度地提高工作效率和质量、改善工作环境。 今天小编就给大家带来一个开源OA系统,o2oa,供大家品鉴、学习! o2oa应用开发平台,是使用JavaEE技术栈,分布式架构设计的一款真正全代码开源的企业应用定制化开发平台。适用于企业OA、协同办公类信息化系统的建设和开发。 平台支持国产麒麟操作系统和国产数据库(例如达梦、人大金仓),真正做一个国人的国产OA系统 平台拥有流程管理、门户管理、信息管理、数据管理和服务管理五...

微信已经成为大家平常生活中离不开的一个工具,今天TJ君就给大家分享一个可能是效果最像的微信复刻项目 TLChat TLChat,使用iOSAppTemplate代码重构,此版本TLChat基于TLKit、 ZZFLEX实现。使用到的第三方库包括: Masonry:自动布局框架,简洁高效 FMDB:sqlite数据库管理框架 AFNetworking:网络请求 SDWebImage:网络图片下载、缓存 MJExtension:JSON - Model互转框架,高效低耦合 MJRefresh:下拉刷新,上拉加载更多,继承简单 CocoaLumberjack:日志分级、本地化 MWPhotoBrowser:图片选择器 SVProgressHUD:进度提示框 为什么说他可能是最像的? 让我们一起来看看这些效果截图: 这跟微信有什么区别呢?简直就是一毛一样好不好!如果不告诉你你是不...

相信这几天,很多小伙伴都因为Log4j2的史诗级漏洞忙翻了吧? 看到群里还有小伙伴说公司里还特别建了800+人的群在处理… 好在很快就有了缓解措施和解决方案。同时,log4j2官方也是速度影响发布了最新的修复版本。各应用方也可以执行较为稳定的修复方案了。 不过我看到群里发出来的各种修复方法,还真是不好看… 所以这里也提一下Spring Boot用户怎么修复最简单吧。 如果您正在学习Spring Boot,那么推荐一个连载多年还在继续更新的免费教程:http://blog.didispace.com/spring-boot-learning-2x/ 最简修复方式 有些小伙伴其实想到了直接通过Spring Boot的Starter去解决,所以还给Spring Boot提了Issue,希望spring-boot-starter-log4j2可以支持最新的2.15版本(提Issue的时...

1、漏洞简介Apache Log4j 2是一款优秀的Java日志框架。该工具重写了Log4j框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。由于Apache Log4j 2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。 2、漏洞危害漏洞利用无需特殊配置,攻击者可直接构造恶意请求,触发远程代码执行漏洞。 3、漏洞编号暂无 4、影响范围Apache Log4j 2.x <= 2.14.1 5、修复措施建议排查Java应用是否引入log4j-api , log4j-core 两个jar,若存在使用,极大可能会受到影响,强烈建议受影响用户尽快进行防护 。 升级Apache Log4j 2所有相关应用到最新的 log4j-2.15.0版本 升级已知受影响的应用及组件,如: spring-boot-strater-log4j...

关于SaaS和Serverless,相信关注我的很多读者都已经不陌生,所以这篇不会聊它们的技术细节,而将重点放在SaaS软件架构中引入Serverless之后,能给我们的SaaS软件带来多大的收益。 在开始下面的内容之前,不妨先给自己半分钟时间,思考下:你认为Serverless的引入,对你现有的SaaS软件架构带来多大的提升? 先说一个大部分人都可以想到的:从Serverless简化运维的角度去思考,站在软件平台的运维方,能够降低运维复杂度。这个收益显而易见,我开始也只想到了这一点,直到这几天看了AWS re:Invent中几个关于SaaS架构与Serverless的演讲,才有了一些更高维度的思考。 下面我们就来一起看看在SaaS遇到Serverless,可以迸出怎么样的火花。 背景SaaS软件和Serverless服务,在国内的发展,一直有种难兄难弟的感觉。虽然做的事情不一样,...

更新到Intellij IDEA 2021.3之后,Maven出问题了!无法从Maven私有仓库下载依赖了。 提示要从maven-default-http-blocker下载,难道不应该去私仓下载吗? 原因原来IDEA更新到2021.3后内置Maven的版本提升到了3.8.1。 Maven3.8.1发布一个变更(CVE-2021-26291): 由于使用 HTTP 的自定义存储库可能导致中间人攻击。现在越来越多的存储库使用 HTTPS,但情况并非总是如此。这意味着 Maven Central 包含带有自定义存储库的 POM,这些存储库通过 HTTP 引用 URL。这使得通过此类存储库下载的内容成为攻击目标。开发人员可能没有意识到某些下载使用了不安全的 URL。由于上传到 Maven Central 的 POM 是不可变的,因此需要对 Maven 进行更改。 为了解决这个问题,从3...

Java 13在2019年9月发布,这个版本引入的正式可用特性几乎没有,是我认为最无聊的版本之一。所以我们跳过Java 13直接来看Java 14吧。 Switch表达式我觉得switch表达式在日常中开发被使用的太少了,不是因为这个关键字和if比起来太“难”,而是因为它很冗长,而且这种视觉上的噪声容易掩盖那些难以调试的错误,特别是那些break语句,就像下面这样: switch (day) { case MONDAY: case FRIDAY: case SUNDAY: System.out.println(6); break; case TUESDAY: System.out.println(7); break; case THURSDAY: case SATURDAY: ...

上一篇文章Git Worktree 高级使用 整体反应不错,这完全是日常开发中可以用到的奇淫技巧。微服务环境下,通常我们都会有多个 repo,高级用法好归好,但每个 repo 都按照高级用法进行配置,还是比较麻烦的,你看这不就有同学发声了嘛 说者有心,听者有意,那就写个脚本吧 Git Worktree 脚本个人不是很擅长写 bash script,磕磕绊绊写了一个 worktree.sh,完全执行上一篇文章的整个过程 #!/bin/bash -erepo=$1dir="${repo##*/}"dir="${dir%.*}"echo $dirbranch=$2defaultBranch="${branch:-main}"mkdir -p $dircd $dirgit clone --bare $repo .bareecho ...

前言上一篇文章 Git Worktree 大法真香 带大家了解了 git worktree 是如何帮助我同时在多个分支工作,并且互不影响的。但是创建 worktree 的目录位置不是在当前项目下,总感觉创建好的这些 worktree 不属于当前项目,这对于磁盘管理强迫症的我来说是十分难受的,今天就带大家了解一种高级用法来解决这个痛点 准备知识在使用高级用法之前,你需要知道一点 bare repo 知识,我们先从你熟悉的命令开始 git initgit clone https://github.com/FraserYu/amend-crash-demo.git 这两个命令就会生成一个 non-bare repo,我们通常都在这样的 repo 中进行日常工作, 你可以在这里面 add/commit/pull/push 要想生成一个 bare repo 也很简单, 只需在上面两个命令的基础...