• 《Java并发编程实战》读书笔记一 -- 简介

    时间:2023-12-17 12:32:08

    《Java并发编程实战》读书笔记一 -- 简介并发的历史并发的历史,也是人类利用有限的资源去提高生产效率的一个的例子。设想现在有台计算机,这台计算机具有以下的资源:单核CPU一个内存磁盘打印机就跟下图所示:一台简要的计算机很久以前(也没多久,几十年前),计算机只能跑一个程序(可以回想下初学51时候的...

  • 【Java并发编程实战】----- AQS(二):获取锁、释放锁

    时间:2023-12-17 12:31:20

    上篇博客稍微介绍了一下AQS,下面我们来关注下AQS的所获取和锁释放。AQS锁获取AQS包含如下几个方法:acquire(int arg):以独占模式获取对象,忽略中断。acquireInterruptibly(int arg): 以独占模式获取对象,如果被中断则中止。acquireShared(i...

  • Java并发编程实战 第10章 避免活跃性危险

    时间:2023-12-17 12:28:59

    死锁经典的死锁:哲学家进餐问题。5个哲学家 5个筷子 如果没有哲学家都占了一个筷子 互相等待筷子 陷入死锁数据库设计系统中一般有死锁检测,通过在表示等待关系的有向图中搜索循环来实现。JVM没有死锁检测。锁顺序死锁典型的列子:LeftRightDeadLock,多个线程尝试去获取左右的锁。这个和哲学家...

  • Java并发编程实战 第8章 线程池的使用

    时间:2023-12-17 12:27:31

    合理的控制线程池的大小:下面内容来自网络。不过跟作者说的一致。不想自己敲了。留个记录。要想合理的配置线程池的大小,首先得分析任务的特性,可以从以下几个角度分析:任务的性质:CPU密集型任务、IO密集型任务、混合型任务。任务的优先级:高、中、低。任务的执行时间:长、中、短。任务的依赖性:是否依赖其他系...

  • java并发编程实战:第二章----线程安全性

    时间:2023-12-17 12:22:50

    一个对象是否需要是线程安全的取决于它是否被多个线程访问。当多个线程访问同一个可变状态量时如果没有使用正确的同步规则,就有可能出错。解决办法:不在线程之间共享该变量将状态变量修改为不可变的在访问状态变量时使用同步机制完全由线程安全类构造的程序也不一定是线程安全的,线程安全类中也可以包含非线程安全的类一...

  • Java并发编程实战 第5章 构建基础模块

    时间:2023-12-17 12:02:33

    同步容器类Vector和HashTable和Collections.synchronizedXXX都是使用监视器模式实现的。暂且不考虑性能问题,使用同步容器类要注意:只能保证单个操作的同步。这会引起两个问题:第一个问题:如果有一个功能,需要计算得到最后一个的值,有这个方法:list.get(list...

  • Java并发编程实战 第16章 Java内存模型

    时间:2023-12-17 12:00:02

    什么是内存模型JMM(Java内存模型)规定了JVM必须遵循一组最小保证,这组保证规定了对变量的写入操作在何时将对其他线程可见。JMM为程序中所有的操作定义了一个偏序关系,称为Happens-Before。两个操作缺乏Happens-Before关系,则Jvm会对它们进行任意的重排序。Happend...

  • 《深入理解Java虚拟机》-----第9章 类加载及执行子系统的案例与实战

    时间:2023-12-16 19:25:45

    概述在Class文件格式与执行引擎这部分中,用户的程序能直接影响的内容并不太多, Class文件以何种格式存储,类型何时加载、如何连接,以及虚拟机如何执行字节码指令等都是由虚拟机直接控制的行为,用户程序无法对其进行改变。能通过程序进行操作的,主要是字节码生成与类加载器这两部分的功能,但仅仅在如何处理...

  • Java 入门课程视频实战-0基础 上线了,猜拳游戏,ATM实战,欢迎围观

    时间:2023-12-15 17:14:49

    Java 入门课程视频实战-0基础已经上传完了。欢迎小伙伴们过来围观直接进入:http://edu.csdn.net/course/detail/196课程文件夹例如以下:1 初识Java 19:082 熟悉Eclipse开发工具 12:423 Java语言基础 17:394 流程控制 14:535...

  • java的OutOfMemoryError: PermGen space实战剖析

    时间:2023-12-14 14:13:42

    由Word导出为PDF,导致java.lang.OutOfMemoryError: PermGen space永生代空间不足,导致内存溢出,用jvisualvm监控了一下,永生代默认值80~90M,没执行此方法前,都快占满了。解决办法:提高永生代内存配置值-Xms512M -Xmx1024M -XX...

  • 云端卫士实战录 | Java高级特性之多线程

    时间:2023-12-11 16:18:20

    《实战录》导语一转眼作为一名Java开发者已经四年多时间了,说长不长说短不短,对于java的感情还是比较深的,主要嘛毕竟它给了我饭吃。哈哈,开个玩笑。今天我想借此机会来和大家聊聊Java多线程。文中若有错误还请各位小伙伴及时指出。Java是一种跨平台,适合于分布式计算环境的面向对象编程语言。关于Ja...

  • java高并发系列 - 第27天:实战篇,接口性能成倍提升,让同事刮目相看,现学现用

    时间:2023-12-09 14:35:49

    这是java高并发系列第27篇文章。开发环境:jdk1.8。案例讲解电商app都有用过吧,商品详情页,需要给他们提供一个接口获取商品相关信息:商品基本信息(名称、价格、库存、会员价格等)商品图片列表商品描述信息(描述信息一般是由富文本编辑的大文本信息)数据库中我们用了3张表存储上面的信息:商品基本信...

  • 《实战Java高并发程序设计》读书笔记四

    时间:2023-12-09 13:46:21

    第四章 锁的优化及注意事项1、锁性能的几点建议减小锁持有时间:系统持有锁时间越长锁竞争程度就越激烈,只对需要同步的方法加锁,可以减小锁持有时间进而提高锁性能。减少锁的持有时间有助于降低锁冲突的可能性,进而提高锁的并发能力。减小锁粒度:减小锁粒度就是指缩小锁定对象的范围,从而减小锁冲突的可能性,进而提...

  • 【实战Java高并发程序设计 4】数组也能无锁:AtomicIntegerArray

    时间:2023-12-09 13:41:50

    除了提供基本数据类型外,JDK还为我们准备了数组等复合结构。当前可用的原子数组有:AtomicIntegerArray、AtomicLongArray和AtomicReferenceArray,分别表示整数数组、long型数组和普通的对象数组。这里以AtomicIntegerArray为例,展示原子...

  • 【实战Java高并发程序设计6】挑战无锁算法:无锁的Vector实现

    时间:2023-12-09 13:38:28

    【实战Java高并发程序设计 1】Java中的指针:Unsafe类【实战Java高并发程序设计 2】无锁的对象引用:AtomicReference【实战Java高并发程序设计 3】带有时间戳的对象引用:AtomicStampedReference【实战Java高并发程序设计 4】数组也能无锁:Ato...

  • 【实战Java高并发程序设计 3】带有时间戳的对象引用:AtomicStampedReference

    时间:2023-12-09 13:34:00

    【实战Java高并发程序设计 1】Java中的指针:Unsafe类【实战Java高并发程序设计 2】无锁的对象引用:AtomicReferenceAtomicReference无法解决上述问题的根本是因为对象在修改过程中,丢失了状态信息。对象值本身与状态被画上了等号。因此,我们只要能够记录对象在修改...

  • 《实战Java高并发程序设计》读书笔记

    时间:2023-12-09 13:22:58

    文章目录第二章 Java并行程序基础2.1 线程的基本操作2.1.1 线程中断2.1.2 等待(wait)和通知(notify)2.1.3 等待线程结束(join)和谦让(yield)2.2 volatile与Java内存模型(JMM)2.3 线程组2.4 守护线程(Daemon)2.5 线程安全的...

  • 【实战Java高并发程序设计 7】让线程之间互相帮助--SynchronousQueue的实现

    时间:2023-12-09 13:13:31

    【实战Java高并发程序设计 1】Java中的指针:Unsafe类【实战Java高并发程序设计 2】无锁的对象引用:AtomicReference【实战Java高并发程序设计 3】带有时间戳的对象引用:AtomicStampedReference【实战Java高并发程序设计 4】数组也能无锁:Ato...

  • java使用POI操作XWPFDocument 生成Word实战(一)

    时间:2023-12-02 15:13:03

    注:我使用的word 2016功能简介:(1)使用jsoup解析html得到我用来生成word的文本(这个你们可以忽略)(2)生成word、设置页边距、设置页脚(页码),设置页码(文本)一、解析htmlDocument doc = Jsoup.parseBodyFragment(contents);...

  • 重学 Java 设计模式:实战桥接模式(多支付渠道「微信、支付宝」与多支付模式「刷脸、指纹」场景)

    时间:2023-11-30 14:49:52

    作者:小傅哥博客:https://bugstack.cn - 编写系列原创专题文章沉淀、分享、成长,让自己和他人都能有所收获!一、前言为什么你的代码那么多ifelse同类的业务、同样的功能,怎么就你能写出来那么多ifelse。很多时候一些刚刚从校园进入企业的萌新,或者一部分从小公司跳槽到大企业的程序...