Java

【转】-Java CAS操作的ABA问题

Java CAS操作的ABA问题 本文转载至​ksfzhaohui​的​Java CAS操作的ABA问题 1. CAS介绍 比较并交换(compare and swap, CAS),是原子操作的一种,可用于在多线程编程中实现不被打断的数据交换操作,从而避免多线程同时改写某一数据时由于执行顺序不确定性以及中断的不可预知性产生的数据不一致问题。 CAS操作基于CPU提供的原子操作指令实现,各个编译器根

Java中的设计模式:工厂模式

Java中的设计模式:工厂模式 大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 1. 什么是工厂模式? 工厂模式是一种创建型设计模式,用于创建对象的过程被推迟到子类。它提供了一种创建对象的最佳方式,而无需明确指定它们的具体类。工厂模式在面向对象编程中被广泛应用,有助于代码的灵活性和可维护性。 2. 简单工厂模式 简单工厂模式是工厂模式的最简单形式,它通过一个共同的接

【转】-并发下的集合

高并发下的Java数据结构(List、Set、Map、Queue) 本文转载至​薛勤的博客​的​高并发下的Java数据结构(List、Set、Map、Queue) 由于并行程序与串行程序的不同特点,适用于串行程序的一些数据结构可能无法直接在并发环境下正常工作,这是因为这些数据结构不是线程安全的。本节将着重介绍一些可以用于多线程环境的数据结构,如并发List、并发Set、并发Map等。 1. 并发L

Java中的线程池详解

Java中的线程池详解 大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 1. 理解线程池的概念 在Java中,线程池是一种管理和复用线程的机制,它能够有效地控制并发线程数量,提高系统性能和资源利用率。使用线程池可以避免反复创建和销毁线程的开销,同时能够管理大量并发请求。 2. Java中的线程池实现 Java提供了Executor框架来实现线程池,主要包括以下几种类

【转】-java多线程读写锁ReadWriteLock

Java多线程中读写锁ReadWriteLock的使用 该博客转载自​lavimer​的​Java多线程中读写锁ReadWriteLock的使用 1. 概念 读写锁分为读锁和写锁,多个读锁之间是不需要互斥的(读操作不会改变数据,如果上了锁,反而会影响效率),写锁和写锁之间需要互斥,也就是说,如果只是读数据,就可以多个线程同时读,但是如果你要写数据,就必须互斥,使得同一时刻只有一个线程在操作。 2.

【转】-Java锁解析

不可不说的Java“锁”事 **该博客转载自美团技术团队 的不可不说的Java“锁”事 ** 前言 Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8和Netty 3.10.6)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。 Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进

最近很火的Vue Vine是如何实现一个文件中写多个组件

前言 在今年的Vue Conf 2024大会上,沈青川大佬(维护Vue/Vite 中文文档)在会上介绍了他的新项目Vue Vine。Vue Vine提供了全新Vue组件书写方式,主要的卖点是可以在一个文件里面写多个vue组件。相信你最近应该看到了不少介绍Vue Vine的文章,这篇文章我们另辟蹊径来讲讲Vue Vine是如何实现在一个文件里面写多个vue组件。 关注公众号:【前端欧阳】,给自己一个

【转】-Java并发编程:CountDownLatch、CyclicBarrier和Semaphore

Java并发编程:CountDownLatch、CyclicBarrier和Semaphore 该博客转载自​Matrix海 子​的​Java并发编程:CountDownLatch、CyclicBarrier和Semaphore 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习

[Java SE] 字节操作工具类:ByteUtils

0 引言 与嵌入式软件数据交互过程中,必然涉及各种的、大量的字节操作场景。如:16进制与10进制、2进制间的转换,字符串、byte数组与int之间的转换等。故此有此核心工具类的沉淀。 1 ByteUtils 依赖 ByteUtils 本文作者: 千千寰宇 本文链接:

【转】-CountDownLatch详解

CountDownLatch详解 该博客转载自​爱宝贝丶 的​CountDownLatch详解 1. 简介 CountDownLatch中count down是倒数的意思,latch则是门闩的含义。整体含义可以理解为倒数的门栓,似乎有一点“三二一,芝麻开门”的感觉。CountDownLatch的作用也是如此,在构造CountDownLatch的时候需要传入一个整数n,在这个整数“倒数”到0之前,主

【转】-Java并发之CyclicBarrier

Java并发之CyclicBarrier ​ 该博客转载自​巴蜀码哥​ ** 的​Java并发之CyclicBarrier** barrier(屏障)与互斥量、读写锁、自旋锁不同,它不是用来保护临界区的。相反,它跟条件变量一样,是用来协同多线程一起工作的。 条件变量是多线程间传递状态的改变来达到协同工作的效果。屏障是多线程各自做自己的工作,如果某一线程完成了工作,就等待在屏障那里,直到其他线程的工

【转】-Java 中的阻塞队列

Java 中的阻塞队列 该博客转载自​方腾飞​的​聊聊并发(七)——Java 中的阻塞队列 1. 什么是阻塞队列? 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列

转-Java并发编程:阻塞队列

Java并发编程:阻塞队列 该博客转载自​Matrix海 子​的​Java并发编程:阻塞队列 Java并发编程:阻塞队列 在前面几篇文章中,我们讨论了同步容器(Hashtable、Vector),也讨论了并发容器(ConcurrentHashMap、CopyOnWriteArrayList),这些工具都为我们编写多线程程序提供了很大的方便。今天我们来讨论另外一类容器:阻塞队列。 在前面我们接触的队

【转】-Java实现生产者和消费者的5种方式

Java实现生产者和消费者的5种方式 该博客转载自​掘金​的​Java实现生产者和消费者的5种方式 1. 前言 生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者阻塞,当存储空间满时,生产者阻塞。 现在用四种方式来实现生产者消费者模型 2. wait()和notify()方法的

k8s 实战 3----标签

如果你对k8s还不了解,可以看下前文 什么是标签?标签也就是Label,是作用在k8s的资源上的,用来记录的资源的状态,或元数据的一组数据。label本质上就是一组键值对。我们可以将其作用在pod,deployment、node等等资源上。这一点和java语言中的注解非常像。我们可以通过注解来标记类或者方法或者属性,这些注解并不会直接改变类或者方法什么特性。而是由其它的方法分析这些注解,从而做出符

【转】-synchronized与Lock的区别与使用

详解synchronized与Lock的区别与使用 该博客转载自​淳安郭富城​的​详解synchronized与Lock的区别与使用 1. 引言: 昨天在学习别人分享的面试经验时,看到Lock的使用。想起自己在上次面试也遇到了synchronized与Lock的区别与使用。于是,我整理了两者的区别和使用情况,同时,对synchronized的使用过程一些常见问题的总结,最后是参照源码和说明文档,对

SpringBoot 整合 MyBatisPlus框架入门

步骤1:创建 maven 工程 创建一个空 Maven 工程,如下: 步骤2:pom.xml 文件中添加 MyBatisPlus 相关依赖 步骤3:创建数据库表 employee 使用数据库 GUI 工具 Navicat 新建数据库 mybatisplus, 如下: 创建数据库员工表 employee,如下 建表的 SQL 语句如下: 步骤4:构建数据模型 Employee 类 创建

Jenkins集成部署SpringBoot

Jenkins集成部署SpringBoot 1. 前言 随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致。基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化。因此,传统的人工部署已经心有余而力不足。 持续集成,持续部署,持续交互对于微服务开发来说,是提高团队整体效率不可或缺的一环。合理的使用CI,CD能够极大的提高

【转】-多线程之Callable

Java并发编程:Callable、Future和FutureTask 该博客转载自​Matrix海 子​的​Java并发编程:Callable、Future和FutureTask 在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或

[操作系统]零拷贝

什么是数据复制/数据拷贝(Copy)? 拷贝(Copy)数据,主要包括两种:CPU拷贝/ DMA拷贝。 第一类拷贝:CPU 拷贝(CPU Copy): 在 CPU 拷贝中,数据的传输是由中央处理器(CPU)直接进行的。当数据需要从一个内存区域拷贝到另一个内存区域时,CPU 首先将数据从源内存区域读取到 CPU 寄存器,然后再将数据从寄存器写入到目标内存区域。这个过程需要 CPU 的直接参与,因此称

利用SpringBoot+rabbitmq 实现邮件异步发送,保证100%投递成功

在之前的文章中,我们详细介绍了 SpringBoot 整合 mail 实现各类邮件的自动推送服务。 但是这类服务通常不稳定,当出现网络异常的时候,会导致邮件推送失败。 本篇文章将介绍另一种高可靠的服务架构,实现邮件 100% 被投递成功。类似的短信自动发送等服务也大体相同。 一、先来一张流程图 本文内容主要围绕这个流程图展开,利用 RabbitMQ 消息队列来实现邮件 100% 被投递,内容涵盖

IDEA社区版搭建Spring工程(03-Spring MVC搭建)

新建一个基于 Maven 的"webapp"模板的基础工程 在 main 文件夹下新建java源码文件夹 将自动生成的index.jsp移入webapp的view文件夹下,在java下新建一个controller文件夹 添加Spring MVC框架所需的POM配置 添加 tomcat 运行环境支持 配置tomcat7启动命令 在resources下添加 Spr

区块的显示和隐藏

在HTML、CSS和JavaScript的组合编程中,控制区块的显示和隐藏可以通过多种方式实现。以下是一些常见的方法: CSS 显示和隐藏: 使用CSS的display属性来控制元素的显示和隐藏。例如: 然后,你可以通过添加或移除hidden类来控制元素的显示和隐藏: CSS 可见性: 使用CSS的visibility属性来控制元素的可见性。当设置为hidden时,元素不会显示,

each()详解

each()方法能使DOM循环结构简洁,不容易出错。each()函数封装了十分强大的遍历功能,使用也很方便,它可以遍历一维数组、多维数组、DOM, JSON 等等在javaScript开发过程中使用$each可以大大的减轻我们的工作量。 下面提一下each的几种常用的用法 each处理一维数组 var arr1 = [ "aaa", "bbb", "ccc" ]; $.each(

MyBatisPlus 实现数据库 CURD 操作

BaseMapper 接口方法介绍 BaseMapper 中提供了 CRUD 方法,具体方法如下: 插入数据 insert 方法 在 MybatisPlusTests.java 测试类中增加 testInsert 测试方法,如下: 执行 testInsert 测试方法插入数据,结果如下: 插入成功,测试OK~ 由于数据库表中主键字段设置为自增ID,应该不需要employee.setEmpI

代码随想录算法训练营第8天 | 复习字符串API、双指针

2024年7月10日 题344. 翻转字符数组 记得用双指针,时间复杂度最低。 题541. 反转字符串II 首先自己实现一个String的reverse函数方便后面用,记得字符数组和字符串的互转方式。 然后计算有多少组2k,分组处理即可。 卡码网:题54. 替换数字 这题熟练使用String的相关切分API即可。暂时先不考虑双指针优化。

阿里云普罗米修斯接入mysql监控

打开 https://arms.console.aliyun.com/?spm=5176.12818093_-1363046575.ProductAndResource--ali--widget-product-recent.8.5cfe16d07QgyJq#/home             点击后,就会进入 这里就是你的m

pipeline 显示获取git分支

pipeline { agent any parameters { gitParameter( branchFilter: 'origin/(.*)', //高级中设置为这个 defaultValue: 'master', name: 'BRANCH', type: 'PT_BRANCH', useRepository: 'https://gitlab.lingtingshidai.com/l

浅谈qiankun微前端

qiankun是single-spa二开;使用场景:不同技术栈,不同团队,独立开发部署、增量升级;总结:解耦;                      主应用: 具有整合-输入子应用的html入口; 子应用  与single-spa基本一致,导出了三个生命周期函数 (bootstrap

Java中的SpringAOP、代理模式、常用AspectJ注解详解

    这篇文章主要介绍了Java中的SpringAOP、代理模式、常用AspectJ注解详解,Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务,例如审计和事务管理进行内聚性的开发,需要的朋友可以参考下   + 目录 一、AOP简述 回到主题,何为AOP?AOP即面向切面编程——Spring提供了面向切面编程的丰富支持,允许通过

<<  <  305  306  307  308  309  310  311  312  313  314  315  >  >>