今天是2025年12月06日 星期六 欢迎 aihome 的加入!

java_强制类型转换、内部类、异常处理

/* 目前多态情况下不能访问子类特有的成员。如果需要访问子类特有的成员,那么需要进行类型强制转换.基本数据类型的转换小数据类型-------->大的数据类型 自动类型转换大数据类型--------->小数据类型 强制类型转换 小数据类型 变量名 = (小数据类型)大数据类型;引用数据类型的转换小数据类型--------->大数据类型 自动类型转换。大数据类

多态中调用子类特有方法2种方式(强转+匿名内部类)

多态中调用子类特有方法的两种方式在日常撸代码的过程当中,总结了多态中调用子类特有方法的2种方式,现整理如下,如有错误,欢迎批评指正,不多说,先上代码!public class Animal{ //父类 public void eat(){ System.out.println("eat thing"); }}class Cat extends ...

Java并发之底层实现原理学习笔记

本篇博文将介绍java并发底层的实现原理,我们知道java实现的并发操作最后肯定是由我们的CPU完成的,中间经历了将java源码编译成.class文件,然后进行加载,然后虚拟机执行引擎进行执行,解释为汇编语言,然后转为操作系统指令,然后转为1,0,最后CPU进行识别执行。提到java的并发,我们不由的就会想到java中常见的键字:volatile和synchronized,我们接下来就会从这两

I0流1

博客,对我来说应该是很陌生的一个名词,因为我以前从来没有接触过,呵呵!这是我第一篇博客,可能会写的少,我会慢慢努力的!以前感觉博客没什么用,今天经过老师的教导,我感觉博客一方面可以锻炼我们的文采,更重要的是我们同学可以相互交流,当然我们的博客都是以学习为主!今天是第一天上

高并发编程底层原理探索

Hi All Darling: 您是否有过这样的经历:业务量不大,但服务器的CPU、内存总矗立在那冰冷的孤独高台! 您是否有过这样的经历:程序在我这里满院撒欢,而到运维处,却成十月小孩,勉强能走! 您是否有过这样的经历:我的程序没问题,数据库的错误数据是怎么产生的呢! 您是否有过这样的经历:您的业务量单一且流量的获取犹如疫情下的口罩,但服务器费用却高高在上! ...

JAVA基础--I0流

I/O流称为输入/输出流,是指数据在程序跟另一端进行流向的一个过程,另一端可以是硬盘上的文件,也可以是网络或者其它。

Java并发机制的底层实现原理1. 并发编程面临的挑战2. Java并发机制的底层实现原理

1. 并发编程面临的挑战并发编程的目的:为了让程序运行的更快1.1 上下文切换时间片:CPU分配给各个线程的时间(几十毫秒)CPU通过时间片分配算法来循环执行任务,当上一个任务执行一个时间片后会切换到下一个任务。在进行上下文切换之前,会保存上一个任务的状态,以便下次切换回这个任务时,可以在加载这个任务的状态,任务从保存到再加载的过程就是一次上下文切换。与串行执行相比,多线程不一...

并发编程之 源码剖析 线程池 实现原理

前言在上一篇文章中我们介绍了线程池的使用,那么现在我们有个疑问:线程池到底是怎么实现的?毕竟好奇是人类的天性。那我们今天就来看看吧,扒开 他的源码,一探究竟。1. 从 Demo 入手上图是个最简单的demo,我们从这个 demo 开始看源码,首先一步一步来看。首先我们手动创建了线程池,使用了有数量限制的阻塞队列,使用了线程池工厂提供的默认线程工厂,和一个默认的拒绝策略,我们看看默认的线程工厂是如何创

java并发编程高性能框架_Java并发编程高阶技术-高性能并发框架源码解析与实战...

Java并发编程高阶技术 高性能并发框架源码解析与实战全网唯一深度解析并发编程框架disruptor底层源码课程,助你成为并发编程高手,拿下高薪。高性能Java并发框架disruptor源码解析与实战什么是Disruptor?它一个高性能的并发编程框架,号称“单线程每秒可处理600W个订单”的神器. 本课程从高性能并发框架Disruptor核心知识开始学习,之后带你深度剖析底层源码,整合Netty...

并发编程五:java并发线程池底层原理详解和源码分析java并发线程池底层原理详解和源码分析

java并发线程池底层原理详解和源码分析上篇分析了java线程。现在来分析java线程池。在分析线程池之前,先来思考下我们的线程是创建的越多越好吗,显然不是,我们为什么要使用线程池,用下面的例子来看下/*** * 使用线程的方式去执行程序 */public class ThreadTest { public static void main(String[] args) throws InterruptedException { Long start = System.cu

并发编程之 CAS 的底层原理深入源码解读

1. 什么是CASCAS (compareAndSwap),中文叫比较交换,一种无锁原子算法。过程是这样:它包含 3 个参数 CAS(V,E,N),V表示要更新变量的值,E表示预期值,N表示新值。仅当 V值等于E值时,才会将V的值设为N,如果V值和E值不同,则说明已经有其他线程做两个更新,则当前线程则什么都不做。最后,CAS 返回当前V的真实值。CAS 操作时抱着乐观的态度进行的,它总是认为自己...

JUC并发编程——CAS 介绍及底层源码分析JUC并发编程——CAS 介绍及底层源码分析

文章目录JUC并发编程——CAS 介绍及底层源码分析1、什么是 CAS2、JDK 对 CAS 的支持3、原子类操作源码分析4、原子引用解决ABA问题JUC并发编程——CAS 介绍及底层源码分析1、什么是 CAS前言:使用锁的代价Java并发处理中锁非常重要,但是使用锁会带来下面几个问题:加锁、释放锁会需要操作系统进行上下文切换和调度延时,在上下文切换的时候,cpu之前缓存的指令和数据都将失效,这个过程将增加系统开销。多个线程同时竞争锁,锁竞争机制本身需要消耗系统资源。没有获取到锁的线程会被

如何实现Activiti的流程定义的设置

Activiti提供的流程定义是基于XML的,一旦发布完成后,若想对流程定义实现更改,只有一种办法,就是重新发布新的版本,但有时,我们需要的是不让他发行新版本,只是希望修改其原来的Xml,如我们对分支节点进行条件设置。<sequenceFlow id="flow1" name="input==1" sourceRef="exclusivegateway1" targe

多数据库下activiti的流程定义缓存问题

多数据库下activiti的流程定义缓存问题。我们的产品是支持多公司使用的,各个公司分别使用不同的数据库,因此不同公司下activiti生成的流程定义ID有可能重复(ACT_RE_PROCDEF的ID_字段),例如A公司和B公司都存在名为Proc:1:104的流程。这时候,activiti的缓存机制只会加载其中一个到内存中(先使用的先加载),因此就会出现A公司使用了B公司流程的问题。

flowable 清除流程本地缓存flowable 清除流程本地缓存

flowable 或者 activity 修改流程图属性后,需要清除本地缓存,可以用以下方法来实现。public class DeploymentCacheCmd implements Command<Deployment>, Serializable { private static final long serialVersionUID = 1L; private String definitionId; public Deploymen