今天遇到一个应用场景: 在需要在自定义的Interceptor中判断用户密码是否过期,如果过期,则重定向到修改密码页,强制修改密码,同时给出提示:“您的密码已过期,请修改密码” 判断逻辑很简单,但是重定向的时候需要前台有消息提示...,如果是在Controller中,可以在方法上注入RedirectAttributes参数,但是Interceptor中默认没有这个参数,那么我们如何实现RedirectAttributes的flashMessage...通过跟踪Spring源码,发现了实现方法: FlashMap flashMap = new FlashMap(); flashMap.put('warning', "密码已过期,请先修改密码!")
因为饱受 GFM 和 Redcarpet 两种 Markdown 引擎生成 TOC 链接的差异的折磨,而我又不得不同时使用它们——博客基于 Jekyll 使用 Redcarpet(Update 2016.../09/16: GitHub Pages 现在已经改为只支持 kramdown),而其它放在 GitHub 仓库里的文档使用 GFM,我决定为我常用的 Markdown 编辑器 Vim 做一款同时支持...这算是我真正意义上完全独立开发的第一款实用 Vim 插件,当然开发过程中也参考了别人的做法。...在默认情况下,:GenTocXXX 命令会在插入的 Table of Contents 前后加上 <!...let g:vmt_dont_insert_fence = 1 g:vmt_cycle_list_item_markers 在默认情况下,所有 Table of Contents 项目前面的标记都是 *
因为饱受 GFM 和 Redcarpet 两种 Markdown 引擎生成 TOC 链接的差异的折磨,而我又不得不同时使用它们——博客基于 Jekyll 使用 Redcarpet(Update 2016.../09/16: GitHub Pages 现在已经改为只支持 kramdown),而其它放在 GitHub 仓库里的文档使用 GFM,我决定为我常用的 Markdown 编辑器 Vim 做一款同时支持...这算是我真正意义上完全独立开发的第一款实用 Vim 插件,当然开发过程中也参考了别人的做法。...: let g:vmt_auto_update_on_save = 0 g:vmt_dont_insert_fence 默认值:0 在默认情况下,:GenTocXXX 命令会在插入的 Table...g:vmt_cycle_list_item_markers 默认值:0 在默认情况下,所有 Table of Contents 项目前面的标记都是 *: * [Level 1](#level-1)
Redcarpet 是另一种 Markdown 引擎,我的基于 GitHub Pages 的博客采用它来解析 md 文件,_config.yml 文件里的配置如下: markdown: redcarpet...不同点: 下面的表格列举了一些我曾经遇到过的案例,并不全,完整的实现逻辑在表格下方有说明。...而 GFM 则没有。 YML 解析 在 Redcarpet 中,解析头部 YML 里的内容有些需要转义: --- keywords: C\+\+ --- 而 GFM 则不需要。...GFM 独有特性 GFM 自己添加的一些特性我甚是喜欢,可惜在 GitHub Pages 里使用 Redcarpet 享受不到了。...我对此功能并无需求,而且貌似会对其它使用 @ 号的地方产生非预期的解析,所以本博客当前并未启用。 对于如下格式的文本,GFM 会自动创建到对应用户对应仓库的对应链接。
AsciiDoc是高度可配置的:AsciiDoc源文件语法和后端输出标记(可以是几乎任何类型的SGML / XML标记)都可以由用户自定义和扩展。...Asciidoctor提供了一个asciidoctor-maven-plugin,可以方便的在maven环境使用。...这意味着你可以写你的文档中的任何语言,使用UTF-8编码的文件,并期望Asciidoctor到文本正确转换。但是,您可能会注意到PDF中缺少某些语言的某些字符,例如中文。...如果您使用非拉丁语书写,则需要使用专门的主题来提供必要的字体。例如,以从写在CJK语言文档的PDF如中国,你需要使用一个CJK主题。...很简单,使用KaiGenGothicTW字体即可。 PDF中文主题在maven中的使用 那么有了命令行,我们怎么在maven中使用呢?
列表项里嵌套的代码块 嵌套在列表项中的代码块在 Redcarpet 中使用 Tab 进行缩进即可,而在 kramdown 中需要根据列表项的内容开始位置决定缩进的字符数。...two unordered list item one print 'hello, world' unordered list item two ``` 遍历 Collections 我在本博客做了一个...不过这点其实严格说起来应该是我在使用 Redcarpet 时的写法没有遵循 Jekyll 的文档,参考 Collections。...TOC 链接 在我之前的一篇文章 GFM 与 Redcarpet 的不同点 中,描述了 Redcarpet 与 GFM 自动生成的 TOC 链接的区别,而 kramdown 即使启用了 input: GFM...* TOC {:toc} 删除线 在 Redcarpet 中使用如下语法能自动为文字加上删除线: ~~hello world~~ 但切换到 kramdown 后这种写法失效了,浏览了一下文档之后并没有找到
1、使用 = 和 - 标记一级和二级标题 = 和 - 标记语法格式如下: 我展示的是一级标题 ================= 我展示的是二级标题 ----------------- 显示效果如下图...Markdown 段落 Markdown 段落没有特殊的格式,直接编写文字就好,段落的换行是使用两个以上空格加上回车。 ? 当然也可以在段落后面使用一个空行来表示重新开始一个段落。 ?...有序列表使用数字并加上 . 号来表示,如: 1. 第一项 2. 第二项 3. 第三项 显示结果如下: ? 列表嵌套 列表嵌套只需在子列表中的选项添加四个空格即可: 1....感叹号 公式 当你需要在编辑器中插入数学公式时,可以使用两个美元符 $$ 包裹 TeX 或 LaTeX 格式的数学公式来实现。提交后,问答和文章页会根据需要加载 Mathjax 对数学公式进行渲染。...附录 备注:部分参考菜鸟教程 Typora 官方文档 持续更新中…,如果遇到问题欢迎联系我,在文章最后评论区【留言和讨论】,当然,欢迎点击文章最后的打赏按键,请墨白喝一杯冰阔乐,笑~**
我在此前是使用 Redcarpet,配置如下: markdown: redcarpet redcarpet: extensions: - no_intra_emphasis...列表项里嵌套的代码块 嵌套在列表项中的代码块在 Redcarpet 中使用 Tab 进行缩进即可,而在 kramdown 中需要根据列表项的内容开始位置决定缩进的字符数。...中使用如下语法能自动为文字加上删除线: ~~hello world~~ 但切换到 kramdown 后这种写法失效了,浏览了一下文档之后并没有找到 kramdown 对应的语法,这个用得也少,遂直接用...表格 在 Redcarpet 中如下写法能直接显示你写的内容: READ|WRITE|SHARE 但在 kramdown 中会解析成表格: READ|WRITE|SHARE 所以需要将 | 转义。...rouge 支持的语言列表可以参考如下链接: List of supported languages and lexers 图片上面空行 在 Redcarpet 中,如下写法的图片和文字之间会换行: Hello
这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。——维基百科 1. 标题 # 一级标题## 二级标题...###### 六级标题 一级标题,一个#号 二级标题 三级标题 .........此乃引用中的第二行,需要回车后另起一行写个> 在引用里面写两个#就成了引用中的二级标题 修辞和强调 Markdown 使用星号和底线来标记需要强调的区段。...列表 无序列表使用星号、加号和减号来做为列表的项目标记,这些符号是都可以使用的,使用星号: * Candy.* Gum.* Booze....前面加一个减号还是无序列表 有序的列表则是使用一般的数字接着一个英文句点作为项目标记: 1\. Red 2\. Green 3\. Blue 注意. 本文档的序号都是使用数字\.的方式写就的。...[][id]{ImgCap}alt text{/ImgCap}[id]: /path/to/img.jpg "Title" 代码 在一般的段落文字中,你可以使用反引号 ``来标记代码区段,区段内的&、<
kramdown 的列表嵌套内容的缩进规则很「奇葩」,不是使用自然的 Tab 缩进。...在年初 GitHub 宣布 GitHub Pages 服务将只支持 kramdown 这个 Markdown 解析引擎时,我曾经总结过从 Redcarpet 迁移到 kramdown 需要做的一些更改,...没错,这种情况下代码块必须缩进三个空格,因为除开列表记号后的第一个非空字符的缩进是三。...所以为此我做了一个简单的小 Vim 插件专门用于解决此问题。...安装方法 推荐使用 Vundle 来管理你的 Vim 插件,这样你就可以简单三步完成安装: 在你的 vimrc 文件中添加如下内容: :so $MYVIMRC :PluginInstall 屏幕截图
kramdown 的列表嵌套内容的缩进规则很「奇葩」,不是使用自然的 Tab 缩进。...在年初 GitHub 宣布 GitHub Pages 服务将只支持 kramdown 这个 Markdown 解析引擎时,我曾经总结过从 Redcarpet 迁移到 kramdown 需要做的一些更改,...没错,这种情况下代码块必须缩进三个空格,因为除开列表记号后的第一个非空字符的缩进是三。...所以为此我做了一个简单的小 Vim 插件专门用于解决此问题。...安装方法 推荐使用 Vundle 来管理你的 Vim 插件,这样你就可以简单三步完成安装: 在你的 vimrc 文件中添加如下内容: Plugin 'mzlogin/vim-kramdown-tab
在AI辅助编程飞速发展的时代,健全的DevOps实践显得尤为重要。本博客将演示如何在构建和增强CI/CD流水线中高效利用AI,并强调虽然AI带来重大进步,但人的专业知识仍不可替代。...这里,我将演示如何在ChatGPT 4的帮助下从零开始建立Git workflow。您可以使用我在此使用的同样提示来测试结果(需要ChatGPT 4版本)。...对于更严格控制的环境,可以从主分支手动触发部署。 版本标记: 在每个发布后,使用版本号对 main 分支中的代码进行标记。 文档: 确保项目文档保持最新,包括代码文档以及工作流程和流水线过程。...通过AI实现DevOps基线的实践 以上就是我的演示,展示了如何在AI的帮助下在实践中实现DevOps基线。开始提示不需要高级技能,但与任何运动一样,通过练习可以取得更好结果。...已经没有理由再犹豫是否要从一开始就投资DevOps。 随着时间流逝,我预计会出现越来越全面化的开发平台,其中许多流程实现自动化,使开发和 DevOps 更抽象化。
对于那些不熟悉它的人(我在写这篇文章的时候),URI 中的字符是保留的或未保留的。 根据维基百科,保留字是有时有特殊意义的字符,如/和&。 未保留的字符是没有任何特殊意义的字符,通常只是字母。...这样做的时候,我注意到,编辑器会在双引号里面包含一个单引号 - 这叫做悬置引号。 那个时候,我并没有真正理解它的含义。...根据 HackerOne,它们依赖于 Redcarpet(一个用于 Markdown 处理的 Ruby 库)的实现,来转义任何 Markdown 输入的 HTML 输出,随后它会通过 React 组件的...在 HackerOne 的实现中,它们并没有合理转义 HTML 输出,这会导致潜在的漏洞。现在,也就是说,查看披露,我觉得我应该测试一下心得代码。...虽然他们没有解释,我可以假设攻击者注意到了access_denied展示在了页面上,但是也包含在 URL 中。
`Could not locate Gemfile or .bundle/ directory` Bundle 安装非常慢 .yml 文件中设置文件忽略 参考文献 News 我已抛弃 Jekyll...通过 gem sources 命令配置源,或通过修改 Gemfile 中的 source 语句可以实现。...然后jekyll s开启 server,然后使用 http://localhost:4000/访问 2015-11-15 Updated 添加分页效果的时候遇到问题 提示说没有安装对应 module...使用 gem install 之后依然报错 原因是没有在 Config 里面配置本地的 Gem,config 中加入一行 gems 声明 gems: [jekyll-paginate] 记得要配置分页细节...server certificate B: certificate verify failed (https://api.rubygems.org/latest_specs.4.8.gz) Win10 中初次使用时出现问题
☆* o(≧▽≦)o *☆嗨~我是IT·陈寒 ✨博客主页:IT·陈寒的博客 该系列文章专栏:Java面试技巧 文章作者技术和水平有限,如果文中出现错误,希望大家能指正 欢迎大家关注!...那么,如何在编写多线程程序时优雅地处理这些共享资源问题呢? 使用同步机制: 同步机制是一种常用的方法,它确保在同一时间只有一个线程可以访问共享资源,从而避免了并发修改问题。...关键字: 在某些情况下,可以使用volatile关键字来保证变量的可见性。...它适用于一些场景,如标记变量或状态标志。...尽量避免共享状态,或者将共享状态限制在可控范围内。 通过遵循上述方法和原则,我们可以在Java多线程编程中优雅地处理共享资源问题,从而实现高性能和线程安全的应用程序。 结尾
如何在Spring Boot中优雅地重试调用第三方API?...☆* o(≧▽≦)o *☆嗨~我是IT·陈寒 ✨博客主页:IT·陈寒的博客 该系列文章专栏:架构设计 其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习 文章作者技术和水平有限...Boot中,我们可以使用@Retryable注解来标记希望重试的方法,并配置相应的重试策略。...异步重试 有时候,我们可能希望在异步任务中实现重试机制。Spring Retry同样提供了异步的支持。...使用@Recover标记的fallback方法同样支持异步,以处理异步方法的降级逻辑。
,是的,很多人都看好它,也有很多业内知名公司开始正式使用HTML 5重新构建自己的网站,如YouTube开始使用HTML 5视频,Google 已经弃用自家的Gears,开始全面拥抱HTML 5实现离线解决方案...的解释,展示了如何在一个页面上使用两次。...69 70 记住,在一个页面中可以有多个article元素,例如一个博客首页可能会有10多个article元素,article也可以进入section元素,因此你在嵌套使用时需要小心,可能一不小心就会出错...我们可以把My Article打包到header标记中。另外请注意,我们可以在article元素下再增加一个footer元素,用来容纳如翻页导航,相关文章或其它内容。...113 114 新标记的样式 115 116 在大多数浏览器中,你只需要如往常一样对元素使用样式,但是请一定要对每个元素加上display:block;规则,随着时间的推移,浏览器对HTML 5新元素的支持越来越标准后
领取专属 10元无门槛券
手把手带您无忧上云