深度解析Java线程池的异常处理机制 · Issue #3 · aCoder2013/blog · GitHub

前言 今天小伙伴遇到个小问题,线程池提交的任务如果没有catch异常,那么会抛到哪里去,之前倒是没研究过,本着实事求是的原则,看了一下代码。 正文 小问题 考虑下面这段代码,有什么区别呢?你可以猜猜会不会有异常打出呢?如果打出来的话是在哪里?: ExecutorService threadPool = Executors.newFixedThreadPool(1); threadPool.submit(() -> { Object obj = null; System.out.println(o...阅读全文

github.com 2019-12-18 14:35 github.com

Tmux 使用教程

Tmux 是一个终端复用器(terminal multiplexer),非常有用,属于常用的开发工具。 本文介绍如何使用 Tmux。 一、Tmux 是什么? 1.1 会话与进程 命令行的典型使用方式是,打开一个终端窗口(terminal window,以下简称"窗口"),在里面输入命令。用户与计算机的这种临时的交互,称为一次"会话"(session) 。 会话的一个重要特点是,窗口与其中启动的进程是连在一起的。打开窗口,会话开始;关闭窗口,会话结束,会话内部的进程也会随之终止,不管有没有运行完。...阅读全文

阮一峰的网络日志 2019-10-21 00:00 阮一峰的网络日志

CORNERSTONE,一款让你无法自拔的项目管理工具

最近,相信细心的小伙伴们,在使用[CORNERSTONE](https://www.cornerstone365.cn/)管理项目时已经发现了,我们悄悄的对我们多维度视图有了一次重大的更新。更新前大家都知道,我们提供了【表格、分栏、看板、甘特图、日历、统计、周汇总、分类导图】八种视图,更新后我们把原有的日历视图跟改成了现有的资源日历视图。本文就主要介绍资源日历视图以及其一些基础操作,资源日历视图应该是现有市面上的项目管理工具都没有的,手动加狗头!仅此一家,绝无分店。其他视图的使用方法,相信大家都...阅读全文

java技术圈 2019-12-10 16:45:35 CORNERSTONE

AbstractQueuedSynchronizer的介绍和原理分析

感谢同事【魏鹏】投递本稿。 Dedicate to Molly. 简介 提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架。该同步器(以下简称同步器)利用了一个int来表示状态,期望它能够成为实现大部分同步需求的基础。使用的方法是继承,子类通过继承同步器并需要实现它的方法来管理其状态,管理的方式就是通过类似acquire和release的方式来操纵状态。然而多线程环境中对状态的操纵必须确保原子性,因此子类对于状态的把握,需要使用这个同步器提供的以下三个方法对状态进行操作: ...阅读全文

并发编程网 – ifeve.com 2013-10-25 03:53 并发编程网 – ifeve.c 等

Linux流量监控工具 - iftop (最全面的iftop教程)

在类Unix系统中可以使用top查看系统资源、进程、内存占用等信息。查看网络状态可以使用netstat、nmap等工具。若要查看实时的网络流量,监控TCP/IP连接等,则可以使用iftop。 一、iftop是什么? iftop是类似于top的实时流量监控工具。 官方网站:http://www.ex-parrot.com/~pdw/iftop/ 二、iftop有什么用? iftop可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等,详细的将会在后面的使用参数中说明。 三、安装...阅读全文

VPS侦探 2010-07-27 00:00 VPS侦探

如何运用项目管理思维制定工作计划?

我们都知道,项目管理的过程包括了启动、计划、执行、监控、收尾五个阶段;那么同样的,我们也可以把工作计划当做一个项目来进行管理。 工作计划的启动阶段,要想清楚想做什么、怎么做等这些问题,这个时候建议大家使用5W2H原则,以思维导图的形式将5个W和2个H写出来,每个部分都要做到心中有数,这样无论是个人计划还是工作计划都能做得清晰明了。 ![image.png](https://img-blog.csdnimg.cn/20191127170212424.png?x-os...阅读全文

java技术圈 2019-11-28 17:22:41 CORNERSTONE

JVM 不稳定参数 - 286

选项 默认值 描述 -XX:-CITime 默认启用 打印JIT编译器编译耗时。 -XX:ErrorFile=./hs_err_pid<pid>.log Java1.6引入 如果JVM crashed,将错误日志输出到指定文件路径。 -XX:-ExtendedDTraceProbes Java6引入,限于solaris,默认关闭 启用dtrace诊断 -XX:HeapDumpPath=./java_pid<pid>.hprof 默认是java进程启动位置 堆内存快照的存储文件路径。 什么是堆内存...阅读全文

ITeye博客 2013-08-15 14:02 ITeye博客

JVM 系列文章之 Full GC 和 Minor GC

Full GC Full GC 就是收集整个堆,包括新生代,老年代,永久代(在JDK 1.8及以后,永久代会被移除,换为metaspace)等收集所有部分的模式 RednaxelaFX大在Major GC和Full GC的区别是什么?触发条件呢?- 知乎这个问题有关于 GC分类的回答: 针对 HotSpot VM的实现,它里面的GC其实准确分类有两种: Partial GC(局部 GC): 并不收集整个 GC 堆的模式 Young GC: 只收集young gen的GC,Young GC还有种说...阅读全文

掘金 2018-09-03 00:00 掘金

Spark(五)Spark任务提交方式和执行流程 - Frankdeng

一、Spark中的基本概念 (1)Application:表示你的应用程序 (2)Driver:表示main()函数,创建SparkContext。由SparkContext负责与ClusterManager通信,进行资源的申请,任务的分配和监控等。程序执行完毕后关闭SparkContext (3)Executor:某个Application运行在Worker节点上的一个进程,该进程负责运行某些task,并且负责将数据存在内存或者磁盘上。在Spark on Yarn模式下,其进程名称为 Coar...阅读全文

博客园 2018-07-14 14:18 博客园

Kafka Rebalance机制分析 - gaoyanliang

什么是 Rebalance Rebalance 本质上是一种协议,规定了一个 Consumer Group 下的所有 consumer 如何达成一致,来分配订阅 Topic 的每个分区。 例如:某 Group 下有 20 个 consumer 实例,它订阅了一个具有 100 个 partition 的 Topic 。正常情况下,kafka 会为每个 Consumer 平均的分配 5 个分区。这个分配的过程就是 Rebalance。 触发 Rebalance 的时机 Rebalance 的触发条件...阅读全文

博客园 2019-08-24 17:33 博客园

Redis 高负载下的中断优化

背景2017年年初以来,随着Redis产品的用户量越来越大,接入服务越来越多,再加上美团点评Memcache和Redis两套缓存融合,Redis服务端的总体请求量从年初最开始日访问量百亿次级别上涨到高峰时段的万亿次级别,给运维和架构团队都带来了极大的挑战。原本稳定的环境也因为请求量的上涨带来了很多不稳定的因素,其中一直困扰我们的就是网卡丢包问题。起初线上存在部分Redis节点还在使用千兆网卡的老旧服务器,而缓存服务往往需要承载极高的查询量,并要求毫秒级的响应速度,如此一来千兆网卡很快就出现了瓶颈...阅读全文

美团技术团队 2018-03-16 00:00 美团技术团队

软中断会吃掉你多少CPU?

前面的几篇文章里讨论过了进程上下文切换和系统调用对系统性能的影响,我们今天再来看另外一个CPU吃货,那就是软中断。你在用vmstat或者其他一些工具查看系统CPU消耗的时候,发现有两列是单独列出来的,分别是是hi和si。他们分别是硬中断和软中断。既然vmstat把中断的开销单独列出来了,就说明一个问题,中断吃起CPU来那也是丝毫不含糊。我们没必要啃明白软中断的所有原理,但从一名追求性能的开发者的角度来看,我们有必要了解以下问题:一次软中断的开销到底多大?你的服务器上被软中断吃掉了多少CPU时间?...阅读全文

知乎 2019-08-30 00:00 知乎

为什么必须是final的呢?

一个谜团 如果你用过类似guava这种“伪函数式编程”风格的library的话,那下面这种风格的代码对你来说应该不陌生: 1 2 3 4 5 6 7 8 9 public void tryUsingGuava() { final int expectedLength = 4; Iterables.filter(Lists.newArrayList("123", "1234"), new Predicate<String>() { @Override public boolean apply(St...阅读全文

崔鹏飞的Octopress Blog 2019-10-20 22:18 崔鹏飞的Octopress B 等

手动编译并运行Java项目的过程 - 小得盈满

现在Java开发基本上就是IDE调试,如果跨平台打个jar包过去运行一般就可以了,但是有些情况比如需要引入外部依赖的时候,这个时候是不能直接运行的,还需要引入一些外部的参数,并不是简单的javac和java的关系了,下面来详细说一下   一般情况下,在本地都是使用eclipse开发工具进行开发,很多东西基本上就不用我们考虑了,如果我们要将项目放到Linux下运行的话,那么就需要进行转移的操作,当然有Maven、Ant这样的自动化部署工具,简直是太方便了,为了做到更进一步认识的话,我们纯手动的去打...阅读全文

博客园 2016-03-07 17:53 博客园

spring boot中,jar包、war包的区别 - cag2050

jar包、war包 比较(表格) 项目 jar包 war包 在开发调试完成之后,可以将应用打成JAR包的形式,可以直接使用Maven插件的package命令,最终会形成一个可运行的 JAR包。我们使用java –jar命令就可以运行这个JAR包了。 JAR包解压后的目录结构: 这个JAR包与传统JAR包的不同之处在于里面有一个名为lib的目录,在这个目录中包含了这个简单应用所依赖的其他JAR包,其中也包含内置的嵌 入式Tomcat,正是使用它,才能发布服务和访问Web资源。除了我们编写的源码所编...阅读全文

博客园 2017-11-14 17:09 博客园

使用Maven构建Web项目的目录结构 - xiaotou745

1.Web项目的目录结构     基于Java的Web项目,标准的打包方式是WAR。与JAR比较,包含更多的内容,比如JSP文件、Servlet、Java类、web.xml配置文件、依赖JAR包、静态web资源(HTML、CSS、JavaScript)等。 一个典型的WAR文件如下目录结构: File-system代码 —war/      + META-INF/      + WEB-INF/      |  + classes/      |  |  + ServletA.class    ...阅读全文

博客园 2014-11-24 17:35 博客园

为什么大公司一定要使用 DevOps?

究竟什么是DevOps? 要想回答这个问题,首先要明确DevOps这个过程参与的人员是谁,即开发团队和IT运维团队。那么,DevOps的意图是什么呢?即在两个团队之间,建立良好的沟通和协作,更快更可靠的创建高质量软件。 事实上,并不是这两个团队之间的协作帮助交付了更好的软件,而是“开发”和“运维”团队之间的统一导致了软件的改进,并以更快的速度交付。我们不要忘记DevOps工具在实现自动化方面所扮演的角色。 开发和运维“一体”的感觉是由开发人员和操作工程师之间的技能组合...阅读全文

技术圈 2019-10-18 16:03:38 CORNERSTONE