自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

无界编程

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

  • 博客(23)
  • 资源 (20)
  • 收藏
  • 关注

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

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

2019-04-22 10:29:24 7488 3

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

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

2019-04-19 16:38:56 19780 7

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

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

2019-04-06 21:22:58 5422 4

原创 为什么Java8中HashMap链表使用红黑树而不是AVL树

在Jdk1.8版本后,Java对HashMap做了改进,在链表长度大于8的时候,将后面的数据存在红黑树中,以加快检索速度。那么很多人就有疑问为什么是使用红黑树而不是AVL树,AVL树是完全平衡二叉树阿?最主要的一点是:在CurrentHashMap中是加锁了的,实际上是读写锁,如果写冲突就会等待,如果插入时间过长必然等待时间更长,而红黑树相对AVL树他的插入更快!第一个问...

2019-04-01 01:51:46 31571 5

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

虚假共享(False Sharing)也有人翻译为伪共享参考https://en.wikipedia.org/wiki/False_sharing在计算机科学中,虚假共享是一种性能降低的使用模式,它可能出现在具有由高速缓存机制管理的最小资源块大小的分布式一致高速缓存的系统中。当系统参与者将定期尝试访问,将永远不会被另一方改变数据,但这些数据共享与数据的高速缓存块被修改,缓存协议可能迫使一...

2019-04-30 19:06:04 2926 5

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

Disruptor的小史现在要是不知道Disruptor真的已经很outer了,Disruptor是英国外汇交易公司LMAX开发的一款开源的高性能队列,LMAX Disruptor是一个高性能的线程间消息传递库,它源于LMAX对并发性,性能和非阻塞算法的研究,如今构成了其Exchange基础架构的核心部分。稍后,包括Apache Storm、Camel、Log4j等在内的很多知名项目都集成...

2019-04-30 16:55:10 3666 3

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

一般会把Nginx的日志导入日志系统进行实时或者准实时的分析,不过不是每个公司都有这样的环境,还有有时候临时就是想分析监控下Nginx,那么GoAccess就很适合你,这块工具小而美,功能很强大。GoAccess是一个开源的实时网络日志分析器和交互式查看器,可以在Linux/Unix系统中的终端或通过浏览器运行。它为需要动态可视化服务器报告的系统管理员提供快速且有价值的HTTP统计信息。...

2019-04-30 11:18:46 8860 8

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

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

2019-04-29 19:42:31 1865 1

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

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

2019-04-29 17:18:22 5017 2

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

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

2019-04-28 19:33:02 6791 4

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

Java本质上还是离不开操作系统,一来Java源码是用C/C++实现的,二来java进程还是需要依附于操作系统和硬件资源,有时候一些问题是操作系统级别导致的,下面的整个事件是源自一则真实的线上案例。过程:JVM死锁导致线程不可用,然后会瞬间起N个线程,当然起再多也是不可用的,因为需要的对象发生死锁,然后耗尽文件句柄导致外部请求也就是TCP连接无法建立产生拒绝服务,看起来就像线程假死...

2019-04-28 15:16:42 5620 5

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

Flink 基本原理与生产实践分享【入门必读,概念清晰】https://zh.wikipedia.org/zh-hans/Apache_FlinkApache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和流水线方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流处理程序。此外,Fl...

2019-04-26 10:34:39 4073 2

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

先看引用类型的代码:import java.util.HashMap;import java.util.Map;public class trycatchefinally { public static void main(String[] args) { System.out.println(getMap().get("KEY")); } p...

2019-04-26 09:32:37 2804 6

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

1.先说明一个事情就是在jdk1.8之后已经没有永久代被元空间取代,那么元空间在哪里?说明:元空间在本地内存,自然更不是所谓年老代等分代里。Java PermGen去了哪里?Java虚拟机(JVM)使用其类的内部表示,包含每个类的元数据,如类层次结构信息,方法数据和信息(如字节码,堆栈和变量大小),运行时常量池和已解析的符号引用和Vtables 。在过去(当自定义类加载器不常见时)...

2019-04-19 18:56:11 5578 5

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

虚假唤醒 Spurious wakeup如果等待线程在没有通知被调用的情况下唤醒,则称为Spurious wakeup。解决方案就是:使用while条件判断,更好的方案是避免使用wait这种低级的API,而是使用高级的并发工具。因为这些高级的并发工具都是经过无数的坑才提炼出来的,如果你对底层缺乏深入的了解比如不知道虚假唤醒那么你没有做这种处理,你的代码可能会出问题。s...

2019-04-19 17:48:04 2067 1

原创 合理估算线程池线程数量

参考《Java并发编程实战》线程数量计算公式公式:Nthread = Ncpu * Ucpu * (1+ W/C),各字段含义:Nthreads:线程数量Ncpu:CPU的数量,Runtime.getRuntime().availableProcessors()Ucpu:CPU使用率,范围在[0,1]W/C:等待时间与计算时间的比率公式解读:其实就...

2019-04-18 15:24:15 4733 1

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

在Java中停止一个线程有三种办法:1.正常结束执行;2.发生异常;3.被其他线程stop(Java官方不建议)参考:https://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html为什么Thread.stop弃用?因为它本质上是不安全的。停...

2019-04-16 17:29:08 5195

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

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

2019-04-15 18:48:07 15205 1

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

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

2019-04-14 23:34:50 3046 1

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

先说多线程模型,参考经典教材《Operating System Concepts , Silberschatz ,9th edition》中文版是《操作系统概念,第9版》https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/4_Threads.html一个线程是CPU利用率的基本单元,包括一个程序计数器,堆栈,一组寄存...

2019-04-06 22:07:31 5981 2

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

小米的开源监控系统open-falcon架构设计,看完明白如何设计一个好的系统小米的http://book.open-falcon.org/zh/intro/早期,一直在用zabbix,不过随着业务的快速发展,以及互联网公司特有的一些需求,现有的开源的监控系统在性能、扩展性、和用户的使用效率方面,已经无法支撑了。因此,我们在过去的一年里,从互联网公司的一些需求出发,从各位SRE、SA、...

2019-04-06 14:53:48 8608

原创 最新技术选型解决方案列表

最新技术选型解决方案列表1 概述这是一份当前的技术选型方案,针对创业、中小型公司2 目标2.1 产品目标2.1.1 SaaS2.1.1.1 免安装2.1.1.2 多租户2.1.1.3 流量计费2.1.2 可配置2.1.2.1 需开通服务2.1.2.2 服务自动组合2.1.2.3 服务单独结算2....

2019-04-03 12:18:50 4250 1

原创 transient HashMap使用目的分析

看HashSet源码有这么一句:private transient HashMap<E,Object> map;再看HashSet的Add方法:实际上HashSet是复用HashMap了。而我们去看看HashMap也会发现一样使用了transient而不管是HashSet还是HashMapdou都要求是Serializable的:public c...

2019-04-01 19:27:53 1497 1

数据结构与算法分析 Java语言描述(第3版)源码

经典教材 数据结构与算法分析_Java语言描述(第3版)源码 可以直接下载运行

2019-05-03

jdk-12_windows-x64_bin.exe和安装说明

jdk-12_windows-x64_bin.exe和安装说明,有截图一步一步照着做就行,IDEA下怎么安装需要注意的都写清楚了。

2019-03-23

Zing虚拟机文档Understanding Java Garbage Collection(了解Java垃圾收集)

WP - Understanding Java Garbage Collection(了解Java垃圾收集).pdf WP - C4(C4:连续并发压缩收集器).pdf WP - JVM Performance Study(JVM性能研究使用Apache Cassandra™比较OracleHotSpot®和AzulZing®).pdf

2019-03-19

JDK源码 openjdk-8u40-src-b25-10_feb_2015.zip

jdk1.8源码 这是从官方网站下载 请放心使用 openjdk和oracle jdk并无太大差异

2019-03-17

EncodingDetect.java

由于文件编码类型众多,例如UTF-8,GBK,UTF-16,GB2312等等,识别文件编码类型,使用方法参考此文:http://blog.csdn.net/21aspnet/article/details/50612867

2016-01-30

FreeTDS-0.95版

FreeTDS最新版本支持SqlServer2008,注意网上的FreeTDS0.91不支持--with-tdsver=7.1以上的SqlServer配置,也就是是说--with-SqlServer2005/2008在FreeTDS0.91下和2000是一样的驱动。

2015-08-13

freetds-0.91.tar.gz

Linux 环境 PHP 调用 Sqlserver

2015-08-12

计算机网络 第五版 带书签 谢希仁版

经典计算机书籍,带书签,文件也不大,非常清晰

2013-10-22

linux0.01代码

linux0.01代码,只有10000行左右,可以在redhat7.3下可成功编译,可以学到linux的优秀思想

2012-12-08

Bz1621.lzh二进制编译器

二进制编译器,是一种可以直接对二进制数编辑的软件

2012-11-16

图片和js代码

图片和js代码

2007-05-14

图片和js代码.rar

图片和js代码.rar

2007-05-14

图片和日历.rar

图片和日历.rar图片和日历.rar

2007-05-14

日历和时间钟

日历和时间钟

2007-05-14

clock.swf

clock.swf

2007-05-14

calendar.js

calendar.js

2007-05-14

wnl.js

wnl.js

2007-05-14

calendar.js

calendar.js

2007-05-14

梅花雨日历1

梅花雨日历1

2007-05-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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