无界

我是Oracle Java JCP会员 博客域名 https://linuxstyle.blog.csdn.net/

Java线上问题排障:Linux内核bug引发JVM死锁导致线程假死

Java本质上还是离不开操作系统,一来Java源码是用C/C++实现的,二来java进程还是需要依附于操作系统和硬件资源,有时候一些问题是操作系统级别导致的,下面的整个事件是源自一则真实的线上案例。 过程: JVM死锁导致线程不可用,然后会瞬间起N个线程,当然起再多也是不可用的,因为需要的...

2019-04-28 15:16:42

阅读数 1336

评论数 4

支撑Java框架的基础技术:泛型,反射,动态代理,cglib

以Spring为例要想看明白他的源码需要彻底理解Java的一些基础技术泛型,反射同时对于一些高级技术例如动态代理,cglib和字节码技术也需要掌握,下面就按章节来一一说清楚这些技术的核心部分,最后手写一个简单的Spring框架。 一.静态代码块和非静态代码块以及构造函数的调用顺序 静态...

2019-04-22 10:29:24

阅读数 2723

评论数 1

深入浅出Java反射原理和使用场景

反射非常重要,特别是Spring这类框架离不开反射,而反射对于初学者理解起来其实还是有一定的难度的,本帖希望把晦涩的反色用最易懂的方式给你讲明白。 先不说反射是什么先看一个问题:如果不知道对象的真实类型怎么去调用他的方法? Object obj = new Date(); 编译类型:O...

2019-04-19 16:38:56

阅读数 1420

评论数 3

Java多线程的11种创建方式以及纠正网上流传很久的一个谬误

创建线程比较传统的方式是继承Thread类和实现Runnable,也可以用内部类,Lambda表达式,线程池,FutureTask等。 经常面试会问到继承Thread类和实现Runnable的区别,然后网上会流传如下这样的说法,这是错误的。 流传很久的错误说法: 这个说法是举一个火车票售票的...

2019-04-06 21:22:58

阅读数 751

评论数 3

好理解的Java内存虚假共享(False Sharing)性能损耗以及解决方案

虚假共享(False Sharing)也有人翻译为伪共享 参考https://en.wikipedia.org/wiki/False_sharing 在计算机科学中,虚假共享是一种性能降低的使用模式,它可能出现在具有由高速缓存机制管理的最小资源块大小的分布式一致高速缓存的系统中。当系统参与者将...

2019-04-30 19:06:04

阅读数 894

评论数 5

你需要知道的高性能并发框架Disruptor原理

Disruptor的小史 现在要是不知道Disruptor真的已经很outer了,Disruptor是英国外汇交易公司LMAX开发的一款开源的高性能队列,LMAX Disruptor是一个高性能的线程间消息传递库,它源于LMAX对并发性,性能和非阻塞算法的研究,如今构成了其Exchange基础架...

2019-04-30 16:55:10

阅读数 923

评论数 3

小而美的Nginx日志分析利器GoAccess

一般会把Nginx的日志导入日志系统进行实时或者准实时的分析,不过不是每个公司都有这样的环境,还有有时候临时就是想分析监控下Nginx,那么GoAccess就很适合你,这块工具小而美,功能很强大。 GoAccess是一个开源的实时网络日志分析器和交互式查看器,可以在Linux/Unix系统中的终...

2019-04-30 11:18:46

阅读数 1461

评论数 8

Flink在美团的应用与实践听课笔记

本文系《Flink在美团的应用与实践》的听课笔记 原始视频视频资源已经在优酷公开:2018.8.11 Flink China Meetup·北京站-Flink在美团的应用与实践 作者:刘迪珊@美团 1.现状和背景 实时平台架构 最底层是数据缓存层,可以看到美团测的所有日志类的...

2019-04-29 19:42:31

阅读数 575

评论数 1

不同版本浏览器前端标准兼容性对照表以及CORS解决跨域和CSRF安全问题解决方案

CORS也已经成为主流的跨域解决方案,不过CORF也会引发CSRF,本文先分享第三方的一个前端工具箱全面展示那些浏览器版本支持CORS,由于各家浏览器厂商因为各自原因在不同的版本里支持的标准不同,这个工具小而美,可以清晰的比较不同版本浏览器前端技术兼容性对照表。 先看图下面这个网站可以很方便...

2019-04-29 17:18:22

阅读数 620

评论数 2

Linux内核的红黑树源码实现以及调用

红黑树可以说是程序员经常遇到的一种数据结构,不管是工作还是面试都会涉及,有时候还会让你写一段红黑树代码。 本文主要是讲Linux中的红黑树,关于红黑树定义参考wiki:https://en.wikipedia.org/wiki/Red%E2%80%93black_tree 其中《算法导论》中的...

2019-04-28 19:33:02

阅读数 1383

评论数 4

Flink 基本原理与生产实践分享【入门必读,概念清晰】

Flink 基本原理与生产实践分享【入门必读,概念清晰】 https://zh.wikipedia.org/zh-hans/Apache_Flink Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据...

2019-04-26 10:34:39

阅读数 861

评论数 3

一个冷僻的知识点try直接返回finally里的设置null其实无效

先看引用类型的代码: import java.util.HashMap; import java.util.Map; public class trycatchefinally { public static void main(String[] args) { Sy...

2019-04-26 09:32:37

阅读数 1258

评论数 3

JVM设置对象直接进入年老代

1.先说明一个事情就是在jdk1.8之后已经没有永久代被元空间取代,那么元空间在哪里? 说明:元空间在本地内存,自然更不是所谓年老代等分代里。 Java PermGen去了哪里? Java虚拟机(JVM)使用其类的内部表示,包含每个类的元数据,如类层次结构信息,方法数据和信息(如字节码,堆栈...

2019-04-19 18:56:11

阅读数 1136

评论数 4

多线程并发编程需要注意虚假唤醒Spurious wakeup

虚假唤醒 Spurious wakeup 如果等待线程在没有通知被调用的情况下唤醒,则称为Spurious wakeup。 解决方案就是: 使用while条件判断,更好的方案是避免使用wait这种低级的API,而是使用高级的并发工具。 因为这些高级的并发工具都是经过无数的坑才提炼出来的...

2019-04-19 17:48:04

阅读数 575

评论数 1

合理估算线程池线程数量

参考《Java并发编程实战》 线程数量计算公式 公式:Nthread = Ncpu * Ucpu * (1+ W/C),各字段含义: Nthreads:线程数量 Ncpu:CPU的数量,Runtime.getRuntime().availableProcessors() ...

2019-04-18 15:24:15

阅读数 695

评论数 1

Java一个线程能否结束另一个永不停止的线程

在Java中停止一个线程有三种办法: 1.正常结束执行; 2.发生异常; 3.被其他线程stop(Java官方不建议) 参考:https://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/threadPrimitive...

2019-04-16 17:29:08

阅读数 252

评论数 0

有界阻塞队列ArrayBlockingQueue和无界阻塞队列LinkedBlockingQueue

ArrayBlockingQueue和LinkedBlockingQueue最大的区别是一个是有界无界,各有优劣。 先看实例代码: main函数起2个线程模拟生成消费者 import java.util.concurrent.ArrayBlockingQueue; import java....

2019-04-15 18:48:07

阅读数 245

评论数 0

一句话说清聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM

聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM经常遇到有人向我咨询这个问题,其实呢,网上帖子很多,也说的都对,但是呢,看客可不一定是真的理解了。所以今天在这里用最简短的语言让你明白这些区别。 看这种图表就一切都明白了: 存储引擎 索引类型 主键叶子节点 非主键...

2019-04-14 23:34:50

阅读数 202

评论数 0

Java线程怎样映射到操作系统线程

先说多线程模型,参考经典教材《Operating System Concepts , Silberschatz ,9th edition》 中文版是《操作系统概念,第9版》 https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems...

2019-04-06 22:07:31

阅读数 552

评论数 2

小米的开源监控系统open-falcon架构设计,看完明白如何设计一个好的系统

小米的开源监控系统open-falcon架构设计,看完明白如何设计一个好的系统 小米的http://book.open-falcon.org/zh/intro/ 早期,一直在用zabbix,不过随着业务的快速发展,以及互联网公司特有的一些需求,现有的开源的监控系统在性能、扩展性、和用户的使用效...

2019-04-06 14:53:48

阅读数 384

评论数 0

提示
确定要删除当前文章?
取消 删除