关注公众号:日拱一兵 并设置为星标,回复 并发小册即可获取,希望这次我们不一样 Java 有并发,并发知识之大,一口吃不下 这曾是我不愿意触碰的知识角 多次一头扎进并发,无功而返 为应对面试,临时苦苦记忆,不成体系 这一次我决定从基础开始,攻克它 12,0000 字 68Mb 高清无水印图文 2021 年刚开始 日拱一兵免费送上整理好的小册 这次希望我们不一样 思维导图——理清脉络 知识讲解——循序渐进 抽象问题——图文并茂 实现细节——源码分析 「态度」夫夷以近,则游者众;险以远,则至者少。而世之奇伟、瑰怪,非常之观,常在于险远,而人之所罕至焉,故非有志者不能至
前言 不知道你的 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
前言 在上一篇 Jenkins 使用环境变量 中,帮助大家使用一条 Docker 命令就可以快速玩转 Jenkins,同时用最简单的方式解释了 Jenkins 中让人混乱的环境变量,本文还是接着变量说点事情 一般成熟的项目流程都会通过 Jenkins Pipeline 来做 CI 部分,在默认 Jenkins 环境配置中,Jenkins Pipeline 分为两种: 1. Pipeline (单分支 Pipeline) 2. Multibranch Pipeline (多分支 Pipeline) 如下图: 如果使用了多分支 Pipeline,就不会存在动态使用分支名称的问题了。
知识回顾 并发工具类我们已经讲了很多,这些工具类的「目标」是让我们只关注任务本身,并且忽视线程间合作细节,简化了并发编程难度的同时,也增加了很多安全性。工具类的对使用者的「目标」虽然一致,但每一个工具类本身都有它独特的应用场景,比如: * 我会手动创建线程,为什么要使用线程池? 介绍了使用线程池管理线程将一个大任务分解成多个子任务来简单执行,借助 不会用Java Future,我怀疑你泡茶没我快, 又是超长图文!! 的 Future 特性获取子任务执行结果——二者结合使用就可以处理简单的并行任务 * 搞定 CompletableFuture,并发异步编程和编写串行程序还有什么区别? 借助
前言 Jenkins, DevOps 技术栈的核心之一,CI/CD 离不开编写 Pipeline 脚本,上手 Jenkins ,简单查一下文档,你就应该不会被 agent,stages,step 这类关键词弄懵,也能很快构建出 pipeline 的骨架 但是当向骨架中填充内容的时候,尤其如何利用环境变量(系统内置 | 自定义),多数人都会变得比较混乱,浪费很多时间,本文就帮助大家快速通关环境变量 准备 如果你想一边阅读本文,一边实践,但是没有 Jenkins 服务可用,又想快速尝试,可以应用 Docker 一个命令快速搭建 Jenkins 服务 1 docker containe
大家对 Docker 都应该有了或多或少的认识了,相信大家都是从这两张图来粗旷的理解 Docker 及容器概念的 那我们如何更轻松的理解容器 Container 呢?说白了 Container 就是一个进程 比如我们 run 一个 mongo 的镜像 image 然后我们通过下面命令列举出正在运行的容器 (以下两个命令等同) 1 2 3 4 # 旧命令 docker ps # 新命令 docker container ls 个人建议使用新命令 如果你对上述等同命令有所疑惑,或者好奇动图中的命令自动补全是怎么实现的,以及为什么建议使用新命令,请看 Docker 命令
前言 不知道这个小伙伴有多久没用过 Docker 了, 突然对我说 Docker 命令怎么发生变化了 1 2 3 docker run ... #变成了 docker container run ... 他说,本来对 Docker 命令就不熟悉,这下感觉更加混乱了。其实个人看来,这么变化还使得命令看着更加规整 当在命令行直接输入 docker 然后回车: 从图中可以看出,Docker 将命令结构化的划分了两大类,Management Commands 和 Commands,其实前者就是一级命令,后者就是子命令 (这是自 Docker 1.13 开始的改动),所以以后使用命令就
上次写了个 cheat.sh 在手,天下我有,小伙伴们热情高涨,觉得这是一个没有杂质的好工具;也有小伙伴抱怨说对 Windows 用户不是特别友好 (其实用 curl API 是没啥问题的)。为了「雨露均沾」,今天就介绍一款对 Windows 超级 * N (N 是几,大家读完文章自己定) 友好的工具 我甚至有些嫉妒,因为 Windows 的这款工具需要我在 Mac 结合好几个工具才能达到与之相媲美的效果 今天的主角就是~ PowerToys PowerToys 就是这么一款有 Power 的工具,使用的前置要求很简单,Windows 10 操作系统,截至写本文时,PowerT



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

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