摘要: 根据《java虚拟机规范第二版》规定,现阶段的java内存区域总体如下图 其中,方法区和堆是所有线程共享区域。 虚拟机栈,本地方法栈,程序计数器是各线程独占。 概述一下各个区域 先说说线程私有的几个区域: 1.程序计数器 1.当前线程所执行的字节码的行号指示器,通过改变这个计数器的值来选取下一条需要 阅读全文
posted @ 2018-10-12 11:48 吃海苔的winton 阅读(141) 评论(0) 推荐(0) 编辑
摘要: List的常用实现:vector,ArrayList,linkedList。 总体关系如下(java8): vector和arraylist 两者底层都是采用数组的形式。但是有些许不同 在序列化的时候,arraylist将会调用writeObject和readObject方法来序列化。所以比vect 阅读全文
posted @ 2018-09-27 20:10 吃海苔的winton 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 微服务基本组件: 服务注册 注册中心 服务框架 服务监控 服务跟踪 服务治理 服务注册 提供的服务名,服务返回的结果格式,如何解析,其他服务信息。 常用的服务描述方式: REST API:例如swagger. XML: 例如spring+dubbo的配置 IDL: 例如gRPC这类跨语言调用框架。 阅读全文
posted @ 2018-09-20 20:05 吃海苔的winton 阅读(1416) 评论(0) 推荐(0) 编辑
摘要: 本系列是根据极客时间学习笔记 "从零开始学习微服务" 单机应用的痛点: 部署效率低 团队协作成本高 可用性差 发布慢 什么是服务化 通俗的说:由传统的jar包的本地调用,改成rpc的远程调用。 什么是微服务 由单一应用程序构成的小服务,拥有自己的进程与轻量化处理,服务依业务功能设计,以全自动的方式部 阅读全文
posted @ 2018-09-20 17:38 吃海苔的winton 阅读(197) 评论(0) 推荐(0) 编辑
摘要: java5以后,新增了显式锁,用于当内置锁不能满足需求后可选择的一种高级方案。 lock接口的特点 与内置锁一样,他能提供互斥性,内存可见性,可重入等特征,与内置锁不同的是,Lock提供了一种无条件,可轮询,定时的,可中断的锁获取操作,以及公平队列,非块结构锁,所有的操作都是显式的。 lock和内置 阅读全文
posted @ 2018-09-18 11:16 吃海苔的winton 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 1.线程饥饿锁 定义:在线程池中,如果任务的执行依赖其他任务,那么可能会产生线程饥饿锁。尤其是单线程线程池。 示例: 2.线程池的大小 可以参考这篇文章 "并发编程网:如何定义线程池的大小" 3.配置ThreadPoolExecutor Executors提供了很多静态方法来创建线程池,但是其内部都 阅读全文
posted @ 2018-09-10 16:31 吃海苔的winton 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 当你打算跳槽的时候你需要问清楚面试官的几件事。 公司现在的项目情况,上线多久,版本迭代等 公司加班文化(加班不可怕,可怕的是一个公司到了下班时间没活干却没人敢走,加班成了员工工作是否合格的标准,走了就成了异类,这样的公司慎重) 问清楚面试官当你入职后会从事哪方面的工作。只需要听他说的第一项主要工作, 阅读全文
posted @ 2018-09-07 15:51 吃海苔的winton 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 停止线程的几种方式 一般的逻辑停止 注意:上面的代码如果在线程的运行逻辑中有调用阻塞的方法,比如arrayBlockQueue的put操作,就会一直等待插入,直到队列有空位位置。就会导致cancel的判断永远不会执行。所以可以采用中断的方式 中断 采用interrupt()。对线程设置为中断标志。设 阅读全文
posted @ 2018-08-31 15:55 吃海苔的winton 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 1.线程池 众所周知创建大量线程时代价是非常大的: 线程的生命周期开销非常大 :创建需要时间,导致延迟处理请求,jvm需要分配空间。 资源消耗 :线程需要占用空间,如果线程数大于可用的处理器数量,那么线程就会闲置,这给Gc造成压力。线程在竞争cpu的时候也会造成性能开销,所以线程不是越多越好,使用不 阅读全文
posted @ 2018-08-28 14:58 吃海苔的winton 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 1.同步容器类 它们是线程安全的 1.1 vector和hashtable。 和Collections.synchronizeXxx()一样。实现方式就是在每个方法里面加入synchronize代码块包着。加锁对象为当前对象 但对于复合操作,还是有风险。 例如 有两个线程分别执行:检查 获取元素,检 阅读全文
posted @ 2018-08-27 18:13 吃海苔的winton 阅读(125) 评论(0) 推荐(0) 编辑