背景 说来也惭愧,博客已经搭建很久了,一直免费的部署在 Coding 和 Github Pages 上,前者迁移到腾讯云 Serverless,导致原有的配置始终有问题,没时间仔细研究,刚好腾讯服务器有羊毛可以褥,果断作出迁移,至于选择腾讯云,是因为当初备案在腾讯云,但是购买域名是在阿里,感觉好拧巴,但是整体互不相关,没啥影响 部署环境 环境本地环境MacOS Monterey 12.0.1服务器环境CentOS Linux release 8.2.2004 (Core)本地环境配置 hexo 本地搭建过程网上太多了,这里不再赘述,这里只是做一点链接服务器的准备工作 生成 Git 密钥 1
无意间被同事看到,惊呼,你是怎么在网页上做标记的? 这其实是我个人浏览网页,每日浏览大量信息,从中标记重要信息必备的工具 个人痛点 1. 每日要浏览很多网页或者查阅资料,浏览过后重新定位重要信息又要费时查找 2. 虽然印象笔记或有道笔记插件可以做摘录,但当查找信息时,要在多个应用之间切换,显得不够流畅 3. 读文章没办法标记重要信息,在大脑中串联上下文 总之我需要一个可以简化研究过程,提升工作效率,让我不再费时追踪资料来源、复制粘贴及引文的工具 Weava Weava 是一个 Chrome 浏览器的插件|扩展,它就是可以帮我解决上述痛点的工具,说的再具体一点,它可以: 1
背景 在 JDK1.5 之前,面对 Java 并发问题, synchronized 是一招鲜的解决方案: 1. 普通同步方法,锁上当前实例对象 2. 静态同步方法,锁上当前类 Class 对象 3. 同步块,锁上括号里面配置的对象 拿同步块来举例: 1 2 3 4 5 public void test(){ synchronized (object) { i++; } } 经过 javap -v 编译后的指令如下: monitorenter 指令是在编译后插入到同步代码块的开始位置;monitorexit是插入到方法结束和异常的位置(实际隐藏了try-
前言 上一篇文章Git Worktree 高级使用 整体反应不错,这完全是日常开发中可以用到的奇淫技巧。微服务环境下,通常我们都会有多个 repo,高级用法好归好,但每个 repo 都按照高级用法进行配置,还是比较麻烦的,你看这不就有同学发声了嘛 说者有心,听者有意,那就写个脚本吧 Git Worktree 脚本 个人不是很擅长写 bash script,磕磕绊绊写了一个 worktree.sh,完全执行上一篇文章的整个过程 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #!/bin/bash -e repo=$1 dir="${repo#
前言 上一篇文章 Git Worktree 大法真香 带大家了解了 git worktree 是如何帮助我同时在多个分支工作,并且互不影响的。但是创建 worktree 的目录位置不是在当前项目下,总感觉创建好的这些 worktree 不属于当前项目,这对于磁盘管理强迫症的我来说是十分难受的,今天就带大家了解一种高级用法来解决这个痛点 准备知识 在使用高级用法之前,你需要知道一点 bare repo 知识,我们先从你熟悉的命令开始 1 2 git init git clone https://github.com/FraserYu/amend-crash-demo.git 这两个命
背景 上一篇文章 保持清洁的Git提交记录,三招就够了 ,大家看过后有私下留言说这是非常好用的功能,我突然想到工作中用到的另外一个 Git 功能那也是相当好用,必须全盘托出 作为程序员的我们应该都有一个感受,一旦进入某个项目,从开发,到发布生产,到 hotfix,到后期维护,那基本都有你的份,正在开发某个 feature,老板突然跳出来说让你做生产上的 hotfix 更是家常便饭,面对这种情况,使用 Git 的我们通常有两种解决方案: 1. 草草提交未完成的 feature,然后切换分支到 hotfix 2. git stash | git stash pop 暂存工作内容,然后再切换
背景 大家都有学习如何规范简洁的编写代码,但却很少学习如何规范简洁的提交代码。现在大家基本上都用 Git 作为源码管理的工具,Git 提供了极大的灵活性,我们按照各种 workflow 来提交/合并 code,这种灵活性把控不好,也会带来很多问题 最常见的问题就是乱成一团的 git log history,那真的是老太太的裹脚布, 又臭又长, 个人极其不喜欢这种 log 造成这个问题的根本原因就是随意提交代码。 代码都提交了,那还有什么办法拯救吗?三个锦囊,就可以完美解决了 善用 git commit –amend 这个命令的帮助文档是这样描述的: 1 --amend
前言 不知道你的 team 当中是否采用敏捷开发,总之我们的 team 贯彻敏捷方法很彻底 随着敏捷方法的步伐加快,如何加快软件的交付速度变得极为重要,快速交付离不开 DevOps,而 DevOps 技术栈中,Jenkins 绝对是 CI 过程的核心角色。要充分高效的使用 Jenkins,自然离不开 Jenkinsfile 什么是 Jenkinsfile? 其实在前两篇文章中大家已经和 Jenkinsfile 照过面,只不过他们不是当时的主角: * Jenkins 使用环境变量 * Jenkins 动态使用分支名称 终于不用跑龙套了,在 Jenk
前言 上一篇文章 IntelliJ IDEA 高级调试之Stream Trace 算是 IntelliJ IDEA 高级调试技巧的开胃菜,小伙伴们被这个小技巧征服,趁热打铁,今天给大家带来几个大家日常工作以及阅读源码必备的高级调试技巧 断点处添加 log 很多程序员在调试代码时都喜欢 print 一些内容,这样看起来更直观,print 完之后又很容易忘记删除掉这些没用的内容,最终将代码提交到 remote,code review 时又不得不删减这些内容重新提交,不但增加不必要的工作量,还让 log tree 的一些节点没有任何价值 IntelliJ IDEA 提供 Evaluate and
前言 自从 Java 8 开始,作为程序员的我们都离不开 Stream 相关功能的使用,书写起来那叫一个流畅(这个 feel~~)。但总是有一些时候,我们对 stream 的操作所要的结果和预期不符,这就需要我们逐步调试,定位问题 常规调试 先来看下面这段代码: 1 2 3 4 public static void main(String[] args) { Object[] res = Stream.of(1,2,3,4,5,6,7,8).filter( i -> i%2 == 0).filter( i -> i>3).toArray(); System.out.printl



Copyright 2018-2019 Tanθ's Blog   |   辽ICP备19017651号-1   |     站点总字数: 276.4k 字   |   载入天数...载入时分秒...   |  站点地图   |  站长统计
  总访问量:  次  总访问人数:  人

博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议