标签:swap

Java

1.2.3 线程安全之java锁相关

Harries 发布于 2019-09-19

自旋锁:为了不放弃CPU执行事件,循环的使用CAS技术对数据尝试进行更新,直至成功。 自旋锁实际是乐观锁的一种实现,假定一开始不会发生冲突,从内存加载数据,然后对数据修改的操作时将内存中数据与加载的数据进行比较,如果发生了变化就会一直占用CPU,不停的重新加载内存中的新数据,然后...

阅读(10)评论(0)赞 (0)

Java

Java高性能编程之CAS与ABA及解决方法

songhua.gao 发布于 2019-09-18

Java高性能编程之CAS与ABA及解决方法 前言 如果喜欢暗色调的界面或者想换换界面,可以看看我在个人博客发布的 Java高性能编程之CAS与ABA及解决方法 。 CAS概念 CAS,全称Compare And Swap,比较与交换。 属于硬件级别的同步原语,从处理器层面提供了...

阅读(15)评论(0)赞 (0)

Java

jdk8 ConcurrentHashMap 源码解析

2

邓龙华 发布于 2019-09-18

今天面试新同学, 整理面试题的时候, 看到ConcurrentHashMap, 很久之前了解过, 记得是按segment分段锁提高并发效率,jdk8重写了这个类, 平常业务代码中用到的也比较少, 忽略了,今天重新拾起来看一下, 做一个笔记, 有错误之处, 欢迎批评指正 jdk7 ...

阅读(13)评论(0)赞 (0)

Java

Java多线程之原子操作类

1

wenming.gapo 发布于 2019-09-18

在并发编程中很容易出现并发安全问题,最简单的例子就是多线程更新变量i=1,多个线程执行i++操作,就有可能获取不到正确的值,而这个问题,最常用的方法是通过Synchronized进行控制来达到线程安全的目的。但是由于synchronized是采用的是悲观锁策略,并不是特别高效的一...

阅读(13)评论(0)赞 (0)

Java

Java面经分类以及总结(2)–思考

5

changyuan.xu 发布于 2019-09-17

hashmap是一个非线程安全的集合。 他的线程不安全出现在,并发情况下可能会出现链表成环的问题,导致程序在执行get操作时形成死循环。 hashmap成环原因的代码出现在transfer代码中,也就是扩容之后的数据迁移部分 解决问题: 使用synchronize ,或者使用co...

阅读(18)评论(0)赞 (0)

Java

聊聊Java中的内存

1

wenming.gapo 发布于 2019-09-17

JVM的内存 先放一张JVM的内存划分图,总体上可以分为堆和非堆(粗略划分,基于java8) 那么一个Java进程最大占用的物理内存为: Max Memory = eden + survivor + old + String Constant Pool + Code cache ...

阅读(10)评论(0)赞 (0)

Java

Java性能 — 线程上下文切换

1

puefu.he 发布于 2019-09-16

在并发程序中,并不是启动更多的线程就能让程序最大限度地并发执行 线程数量设置太小,会导致程序不能充分地利用系统资源 线程数量设置 太大 ,可能带来资源的 过度竞争 ,导致 上下文切换 ,带来的额外的 系统开销 上下文切换 在单处理器时期,操作系统就能处理 多线程并发 任务,处理器...

阅读(19)评论(0)赞 (0)

Java

JVM 堆外内存泄漏分析(二)

1

yanxinchi 发布于 2019-09-16

关于 堆外内存的组成可以看上一篇文章 JVM 堆外内存泄漏分析(一) 1. NMT NMT(Native Memory Tracking)是 HotSpot JVM 引入的跟踪 JVM 内部使用的本地内存的一个特性,可以通过 jcmd 工具访问 NMT 数据。NMT 目前不支持跟...

阅读(15)评论(0)赞 (0)

Java

深入理解Java反射中的invoke方法

9

小丁 发布于 2019-09-15

什么是反射 反射(Reflection)是Java程序开发语言的特征之一,它允许运行中的Java程序获取自身的信息,并且可以操作类或对象的内部属性。主要是指程序可以访问、检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义...

阅读(20)评论(0)赞 (0)

Java

JDK源码那些事儿之SynchronousQueue下篇

2

wenming.gapo 发布于 2019-09-15

之前一篇文章已经讲解了阻塞队列SynchronousQueue的大部分内容,其中默认的非公平策略还未说明,本文就紧接上文继续讲解其中的非公平策略下的内部实现,顺便简单说明其涉及到的线程池部分的使用 前言 回顾一下,SynchronousQueue通过两个内部类实现了公平策略和非公...

阅读(16)评论(0)赞 (0)

Java

Java性能 — CAS乐观锁

2

likai 发布于 2019-09-14

synchronized和Lock实现的同步锁机制,都属于 悲观锁 ,而 CAS 属于 乐观锁 悲观锁在 高并发 的场景下,激烈的锁竞争会造成 线程阻塞 ,而大量阻塞线程会导致系统的 上下文切换 ,增加系统的 性能开销 乐观锁 乐观锁:在操作共享资源时,总是抱着乐观的态度进行,认...

阅读(23)评论(0)赞 (0)

Java

JVM 堆外内存泄漏分析(一)

5

yanxinchi 发布于 2019-09-13

1. JVM 感知容器资源 Java 应用部署在 Kubernetes 集群里,每个容器只运行一个进程, JVM 的启动命令是打包在镜像文件里的。 常规的方式是采用 -Xmx4g -Xms2g 这样的参数来指定 JVM 堆的最大、最小尺寸,如果需要调整堆大小就需要重新打包镜像。 ...

阅读(13)评论(0)赞 (0)

Java

JDK源码分析-FutureTask

5

邓龙华 发布于 2019-09-12

概述 FutureTask 是一个可取消的、异步执行任务的类, 它的继承结构如下: 它实现了 RunnableFuture 接口,而该接口又继承了 Runnable 接口和 Future 接口,因此 FutureTask 也具有这两个接口所定义的特征。 Future Task 的...

阅读(20)评论(0)赞 (0)

Java

并发读写数据一致性保证(一)Java并发容器

3

yanxinchi 发布于 2019-09-08

业务开发过程,其实就是用户业务数据的处理过程,因而开发的核心任务就是维护数据一致不出错。现实场景中,多个用户会并发读写同一份数据(如秒杀),不加控制会翻车、加了控制则降低并发度,影响性能和用户体验。 如何优雅的进行并发数据控制呢?本质上需要解决两个问题: 读-写冲突 写-写冲突 ...

阅读(37)评论(0)赞 (0)

Java

Springboot源码分析之Spring循环依赖揭秘

7

Harries 发布于 2019-09-08

摘要: 若你是一个有经验的程序员,那你在开发中必然碰到过这种现象:事务不生效。或许刚说到这,有的小伙伴就会大惊失色了。 Spring 不是解决了循环依赖问题吗,它是怎么又会发生循环依赖的呢?,接下来就让我们一起揭秘 Spring 循环依赖的最本质原因。 Spring循环依赖流程图...

阅读(29)评论(0)赞 (0)

Java

JDK源码那些事儿之SynchronousQueue上篇

4

xiaoli.wang 发布于 2019-09-07

今天继续来讲解阻塞队列,一个比较特殊的阻塞队列SynchronousQueue,通过Executors框架提供的线程池cachedThreadPool中我们可以看到其被使用作为可缓存线程池的队列实现,下面通过源码来了解其内部实现,便于后面帮助我们更好的使用线程池 前言 JDK版本...

阅读(25)评论(0)赞 (0)

Java

J.U.C并发包背后的那些事儿

邓龙华 发布于 2019-09-06

前言 J.U.C是java包java.util.concurrent的简写,中文简称并发包,是jdk1.5新增用来编写并发相关的基础api。 java从事者一定不陌生,同时,流量时代的今天,并发包也成为了高级开发面试时必问的一块内容,本篇内容 主要聊聊J.U.C背后的哪些事儿,然...

阅读(22)评论(0)赞 (0)

Spring

01 Python 基础数据类型

Harries 发布于 2019-09-05

基础数据类型,有7种类型,存在即合理。 1.int 整数 主要是做 运算 的 。比如加减乘除,幂,取余  + – * / ** %… 2.bool 布尔值 判断真假以及作为 条件变量 3.str 字符串 存储少量的数据。比如’pass...

阅读(32)评论(0)赞 (0)