java
可爱马莲花
这个作者很懒,什么都没留下…
展开
-
Java中的IO流系统详解
摘要:Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组。Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他编码的字符流和 java 内 Unicode 字符流之间的转换。而类 InputStreamReader 和 OutputS转载 2017-08-25 09:10:29 · 187 阅读 · 0 评论 -
分布式任务编排调度框架设计
运维焦油坑随着互联网+和去IOE浪潮的推进,传统行业X86服务器的数量逐渐增多。服务器数量剧增带来的直接后果就是运维复杂度的增加。原本一个人可以轻松维护十几台甚至几十台服务器:写几个常用的监控和配置下发脚本、或者利用cronTab制作几个定时任务就可以搞定。当服务器的数量由几十上升到几百,几千时,量变就引起了质变;而且随着应用数量的增多,需要同时对多个应用进行快速高效的备份或者持续部署等非...转载 2018-09-18 16:53:18 · 5913 阅读 · 1 评论 -
elasticJob分片跑批
业务迅速发展带来了跑批数据量的急剧增加。单机处理跑批数据已不能满足需要,另考虑到企业处理数据的扩展能力,多机跑批势在必行。多机跑批是指将跑批任务分发到多台服务器上执行,多机跑批的前提是”数据分片”。elasticJob通过JobShardingStrategy支持分片跑批。跑批配置需要做如下修改: shardingTotalCount:作业分片总数。jobShardingStrateg...转载 2018-09-18 10:18:23 · 5249 阅读 · 0 评论 -
gRPC服务发现&负载均衡
构建高可用、高性能的通信服务,通常采用服务注册与发现、负载均衡和容错处理等机制实现。根据负载均衡实现所在的位置不同,通常可分为以下三种解决方案:1、集中式LB(Proxy Model)在服务消费者和服务提供者之间有一个独立的LB,通常是专门的硬件设备如 F5,或者基于软件如 LVS,HAproxy等实现。LB上有所有服务的地址映射表,通常由运维配置注册,当服务消费方调用某个目标服务时,它向LB发起...转载 2018-07-03 20:48:55 · 531 阅读 · 0 评论 -
ConcurrentHashMap的jdk1.7源码
ConcurrentHashMap的锁分段技术:假如容器里有多把锁,每一把锁用于锁容器其中一部分数据,那么当多线程访问容器里不同数据段的数据时,线程间就不会存在锁竞争,从而可以有效的提高并发访问效率,这就是ConcurrentHashMap所使用的锁分段技术。首先将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问。 1.类变...转载 2018-05-24 23:29:44 · 133 阅读 · 0 评论 -
HashMap源码解析(基于JDK1.7)
一、HashMap简介哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理就是基于此。那么什么是哈希表呢? 在讨论哈希表之前,我们先大概了解下其他数据结构在新增,查找等基础操作执行性能数组:采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O(...转载 2018-05-24 13:05:38 · 157 阅读 · 0 评论 -
Java源码分析之HashMap(JDK1.8)
一、HashMap概述 HashMap是常用的Java集合之一,是基于哈希表的Map接口的实现。与HashTable主要区别为不支持同步和允许null作为key和value。由于HashMap不是线程安全的,如果想要线程安全,可以使用ConcurrentHashMap代替。二、HashMap数据结构 HashMap的底层是哈希数组,数组元素为Entry。HashMap通过key的hashCod...转载 2018-05-24 13:03:01 · 123 阅读 · 0 评论 -
在Java路上,看过的一些书、源码和框架
参考文章:https://www.jianshu.com/p/4a41ee88bd82面试经历关于Java面试,你应该准备这些知识点关于Java面试,你应该准备这些知识点(续)前段时间抽空整理了面试经历,收到不少的关注,很多同学私信我平时都是如何get到这些知识的,是否有一些相关的书单,Java的源码太多了,应该如何看,框架的代码应该如何阅读等等问题。现在想想,以前也这样迷茫过,整个方向不明确,做...转载 2018-05-15 13:18:14 · 285 阅读 · 0 评论 -
ThreadLocal原理详解
ThreadLocal是什么首先,它是一个数据结构,有点像HashMap,可以保存"key : value"键值对,但是一个ThreadLocal只能保存一个,并且各个线程的数据互不干扰。ThreadLocal<String> localName = new ThreadLocal();localName.set("hello");String name = localName.g...转载 2018-05-15 13:08:40 · 143 阅读 · 0 评论 -
java程序员必精--从源码讲解java线程池ThreadPoolExecuter的实现原理、各种坑、如何监控
类结构图示例自带线程池的各种坑基础参数源码分析java.util.concurrent.ThreadPoolExecutor构造方法重要的成员变量ctl线程池状态要牢记以下几点:与ctl相关的三个方法workerscompletedTaskCount线程池的运行添加任务execute方法往线程池添加线程addWorker方法成功添加worker工作线程需要线程池处于以下两种状态中的一种内部类Wor...转载 2018-05-14 19:23:09 · 173 阅读 · 0 评论 -
深入分析java线程池的实现原理
前言线程是稀缺资源,如果被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,合理的使用线程池对线程进行统一分配、调优和监控,有以下好处:1、降低资源消耗;2、提高响应速度;3、提高线程的可管理性。Java1.5中引入的Executor框架把任务的提交和执行进行解耦,只需要定义好任务,然后提交给线程池,而不用关心该任务是如何执行、被哪个线程执行,以及什么时候执行。demo1、Executors...转载 2018-05-14 19:19:43 · 128 阅读 · 0 评论 -
jdk的动态代理及为什么需要接口
参考文章:https://blog.csdn.net/zxysshgood/article/details/78684229动态代理有关,无非是使用JDK动态代理,和cglib动态代理。一直不待明白的是为什么,jdk的动态代理需要接口才能实现,这也是其短板和令人诟病的地方。很多的博文说的很复杂,代码一大堆,没有太明白。手打了一下,参考了一些优秀的博文,在这里给自己做个总结。首先,动态代理是个挺有用...转载 2018-05-14 16:34:46 · 12158 阅读 · 4 评论 -
ReentrantLock实现原理深入探究
前言这篇文章被归到Java基础分类中,其实真的一点都不基础。网上写ReentrantLock的使用、ReentrantLock和synchronized的区别的文章很多,研究ReentrantLock并且能讲清楚ReentrantLock的原理的文章很少,本文就来研究一下ReentrantLock的实现原理。研究ReentrantLock的实现原理需要比较好的Java基础以及阅读代码的能力,有...转载 2018-11-19 20:10:08 · 219 阅读 · 0 评论