java使用局部线程池为什么会造成线程泄露 - 无期(瑶瑶)

java使用局部线程池为什么会造成线程泄露   一、思考 - 造成泄露,肯定是无法被GC回收,那为什么局部线程池没有被回收,我们来通过源码一探究竟    这里先给出结论:ThreadPoolExecutor  ->   Worker   ->  Thread    由于存在这样的引用关系,并且 Thread 作为 GC Root ,所以无法被回收 二、通过ThreadPoolExecutor类对源码一探究竟  不详解 ExecutorService threadPool = new Thread...阅读全文

博客园 2018-10-23 11:01 博客园

Vim 查找/替换/输入非可见字符

在跨平台工作中由于不同编辑器处理换行和空白字符风格不一致, 常常在Vim下会看到一些特殊字符。 本文帮你解决不可见字符的查找、替换、输入等问题。 非可见字符表 Vim中可见特殊字符会直接显示,不可见特殊字符会显示为该字符在命令行的输入方式, 例如 \r 显示为 ^M。通过 :help digraph-table 可看到所有Vim中可输入的特殊字符: char digraph hex dec official name ^@ NU 0x00 0 NULL (NUL) ^A SH 0x01 1 ST...阅读全文

Harttle Land 2016-08-22 00:00 Harttle Land

Java8中lambda表达式无法抛出受检异常的问题

Java8中lambda表达式无法抛出受检异常的问题 问题提出 昨天写代码的时候遇到了一个需要在Java8流中抛出异常的问题,结果一直编译报错,先看下代码: //编译通过 Stream.of("a", "b", "c").forEach(str -> { throw new RuntimeException(); }); //编译失败 Stream.of("a", "b", "c").forEach(str -> { throw new IOException(); }); 把异常catch住处...阅读全文

简书 2764-03-01 00:00 简书

一个关于项目管理者与程序猿之间的笑话

在网上看见有一个笑话是这样的: 1. 程序员写出自认为没有Bug的代码。 2. 软件测试,发现了20个Bug。 3. 程序员修改了10个Bug,并告诉测试组另外10个不是Bug。 4. 测试组发现其中5个改动根本无法工作,同时又发现了15个新Bug。 5. 重复3次步骤3和步骤4。 6. 鉴于市场方面的压力,为了配合当初制定的过分乐观的发布时间表,产品终于上市了。 7. 用户发现了137个新Bug。 8. 已经领了项目奖金的程序员不知跑到哪里去了。...阅读全文

java技术圈 2020-04-17 15:06:41 CORNERSTONE

如何做好项目管理,避免“计划”和“执行”两张皮?

“凡事预则立,不预则废”,对于计划的重要性,古人早有名言。然而,现代生活压力过大,很多人忽略了计划的重要性,总以“计划永远赶不上变化”、“人生总是充满意外”等等借口来搪塞自己,认为“船到前头自然直”,做任何事情从不制定计划,糊里糊涂,想做就做,事情自然难以取得成功。 好的计划是成功的一半。任何事情,要取得成功,离不开一个科学合理的计划。在项目管理领域中,项目计划同样扮演者非常重要的角色。好的项目计划是项目实施的前提,贯穿整个项目活动,它能够帮助项目经理理清整个项目的脉络,确定项目实施成功所需要...阅读全文

java技术圈 2020-04-13 15:36:41 CORNERSTONE

UML 各种图总结精华

UML(Unified Modeling Language)是一种统一建模语言,为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。下面将对UML的九种图+包图的基本概念进行介绍以及各个图的使用场景。一、基本概念  如下图所示,UML图分为用例视图、设计视图、进程视图、实现视图和拓扑视图,又可以静动分为静态视图和动态视图。静态图分为:用例图,类图,对象图,包图,构件图,部署图。 动态图分为:状态图,活动图,协作图,序列图。  1、用例图(UseCase Diagrams):  用...阅读全文

Vim中如何快速进行光标移动?

Vim最大的特征与最大的困难就是纯键盘操作,所以快速移动光标是Vim的最基本技能。我接触Vim也有四个年头了, 曾经由于项目重构操作频繁而切换到了WebStorm,最近又由WebStorm 切换到了 Vim。 始终感觉光标移动是最大的痛处,同时又能从键盘操作获得极大的快乐。 下文便开始介绍那些常用的快捷键,先上图! 最近感受光标移动技能又一次升级了!来回顾一下我的Vim光标升级过程吧: 只会上下左右和插入(h, j, k, l, i)。所有操作都由这5个键来完成。这时候用Vim的键盘声因简直像打...阅读全文

Harttle Land 2015-11-07 00:00 Harttle Land

IntelliJ IDEA 常用快捷键 之 Mac 版_开发工具_CG国斌的博客

IntelliJ IDEA设置代码补全快捷键 01-14 阅读数 4067 由于IDEA原本的代码自动提示快捷键可能会跟输入法的快捷键冲突,所以更改首先File->Settings再将设置代码自动提示的快捷键设置为alt+/即可... 博文 来自: a549654065的博客 idea补全代码快捷键 09-17 阅读数 1432 两种方案:一:newString().var;回车即可;二:newString();ctrl+alt+v即可; 博文 来自: 乔治大哥的博客 IntelliJ I...阅读全文

CSDN博客 2017-10-17 17:51 CSDN博客

Mac OS 终端利器 iTerm2 - 田园里的蟋蟀

之前一直使用 Mac OS 自带的终端,用起来虽然有些不太方便,但总体来说还是可以接受的,是有想换个终端的想法,然后今天偶然看到一个终端利器 iTerm2,发现真的很强大,也非常的好用,按照网上配置了主题什么的,还是有些坑的,这边再记录下,以便后面查阅。 1. 安装 iTerm2 下载地址:https://www.iterm2.com/downloads.html 下载的是压缩文件,解压后是执行程序文件,你可以直接双击,或者直接将它拖到 Applications 目录下。 或者你可以直接使用 H...阅读全文

博客园 2017-12-28 13:02 博客园

彻底弄懂HTTP缓存机制及原理 - 云中桥

前言 Http 缓存机制作为 web 性能优化的重要手段,对于从事 Web 开发的同学们来说,应该是知识体系库中的一个基础环节,同时对于有志成为前端架构师的同学来说是必备的知识技能。 但是对于很多前端同学来说,仅仅只是知道浏览器会对请求的静态文件进行缓存,但是为什么被缓存,缓存是怎样生效的,却并不是很清楚。 在此,我会尝试用简单明了的文字,像大家系统的介绍HTTP缓存机制,期望对各位正确的理解前端缓存有所帮助。 在介绍HTTP缓存之前,作为知识铺垫,先简单介绍一下HTTP报文 HTTP报文就是浏...阅读全文

梯度提升树(GBDT)原理小结 - 刘建平Pinard

在集成学习之Adaboost算法原理小结中,我们对Boosting家族的Adaboost算法做了总结,本文就对Boosting家族中另一个重要的算法梯度提升树(Gradient Boosting Decison Tree, 以下简称GBDT)做一个总结。GBDT有很多简称,有GBT(Gradient Boosting Tree), GTB(Gradient Tree Boosting ), GBRT(Gradient Boosting Regression Tree), MART(Multipl...阅读全文

博客园 2016-12-07 19:59 博客园

并查集(Union-Find)算法介绍_网络_不忘初心,好好沉淀

本文主要介绍解决动态连通性一类问题的一种算法,使用到了一种叫做并查集的数据结构,称为Union-Find。 更多的信息可以参考Algorithms 一书的Section 1.5,实际上本文也就是基于它的一篇读后感吧。 原文中更多的是给出一些结论,我尝试给出一些思路上的过程,即为什么要使用这个方法,而不是别的什么方法。我觉得这个可能更加有意义一些,相比于记下一些结论。 关于动态连通性 我们看一张图来了解一下什么是动态连通性: 假设我们输入了一组整数对,即上图中的(4, 3) (3, 8)等等,每对...阅读全文

CSDN博客 2012-06-12 13:57 CSDN博客

操作系统内存管理_黄规速, 逆水行舟,不进则退。

1、 计算机的存储体系 内存是计算机很重要的一个资源,因为程序只有被加载到内存中才可以运行;此外,CPU所需要的指令与数据也都是来自内存的。可以说,内存是影响计算机性能的一个很重要的因素。 在介绍内存管理的细节前,先要了解一下分层存储器体系: 大部分的计算机都有一个存储器层次结构,即少量的非常快速、昂贵、易变的高速缓存(cache);若干兆字节的中等速度、中等价格、易变的主存储器(RAM);数百兆或数千兆的低速、廉价、不易变的磁盘。这些资源的合理使用与否直接关系着系统的效率。 CPU缓存(Cac...阅读全文

CPU漏洞之后 Ring 0究竟什么鬼?

最近一段时间CPU漏洞的新闻可谓让人惊诧不已,一个最不可能、最不能被允许的关键设备竟然有硬件漏洞!这几天PC厂商最忙的事情就是推出补丁,用软件方式弥补硬件漏洞的错误。而且,这些措施还会导致CPU性能下降。但是这个漏洞究竟影响什么?你真需要为此而担忧吗? 漏洞是真但不必害怕 漏洞存在这是千真万确的事情,但是你也不需要为此而担心——这个被证实影响了十几年来几乎大部分CPU的硬件缺陷确实存在,只是这个漏洞的技术细节没有(也不可能)公之于众。 事情要从去年说起,谷歌旗下的Project Zero团队发现...阅读全文

m.cfan.com.cn 2018-01-08 15:27 m.cfan.com.cn

当执行kill -9 PID时系统发生了什么

我们时常遇到这样的需求:要杀死一个正在运行运行的进程。这时候可以在终端输入 1 kill -9 <PID> (其中9的意思是SIGKILL,完整的linux信号请看这里)之后你再用ps查看进程的时候,会发现那个进程已经被杀掉了。 本文将说明在LINUX系统下,用户在终端输入kill -9 <PID>之后,整个系统到底发生了什么,我们将深入到内核代码。一开始我在想这个问题的时候遇到了一些问题,比如进程是怎么知道自己收到信号的?在执行进程工作代码的同时还要不断轮询有没有新到的信号吗?代价也太大了吧?...阅读全文

happens

学习Java并发,到后面总会接触到happens-before偏序关系。初接触玩意儿简直就是不知所云,下面是经过一段时间折腾后个人对此的一点浅薄理解,希望对初接触的人有帮助。如有不正确之处,欢迎指正。 synchronized、大部分锁,众所周知的一个功能就是使多个线程互斥/串行的(共享锁允许多个线程同时访问,如读锁)访问临界区,但他们的第二个功能 —— 保证变量的可见性 —— 常被遗忘。 为什么存在可见性问题?简单介绍下。相对于内存,CPU的速度是极高的,如果CPU需要存取数据时都直接与内存打...阅读全文

before俗解 | 并发编程网 – ifeve.com 2013-11-17 09:18 before俗解 | 并发编程 等

敏捷开发的那些事

“敏捷”这个词近几年非常火,经常会有人问:“我们应该怎样开始做敏捷?”或者:“能不能来帮我们推一下敏捷?敏捷有很多实践,管理的、工程的都有,但敏捷绝非我们看到的站会、持续集成、TDD等那么简单,真正的敏捷体系是从理念到文化的一次变革。 敏捷作为一种快速应对需求变化的新兴软件开发模式,正受到越来越广泛的关注和应用。它强调快速验证,表现为快速上线、快速根据反馈迭代产品。 今天在这里给大家推荐一款敏捷项目管理平台—CORNERSTONE,那么,究竟是什么样的呢?让我们一起来体验吧~ ...阅读全文

java技术圈 2020-03-19 15:11:55 CORNERSTONE