• 2024-06-24C/C++ const 和 volatile 关键字要点总结
    const 和 volatile 是C/C++的两个关键字,各有不同的用途和要点。constconst 关键字用于声明常量,一旦声明为常量,其值就不能被修改。const 可以用于各种数据类型,也包括指针、函数参数、函数返回值和类成员函数。声明常量:声明为 const 的常量,在初始化后不能被修改。co
  • 2024-06-17上周面了百度,问的很细~
    上周刚刚面了百度,问的问题不算很难,但却很细,我把这些面试题和答案都整理出来了,一起来看吧。重点介绍一个你觉得有意义的项目?回答技巧和思路:介绍的项目业务难度和技术难点要高一些,最好是微服务项目。简明扼要的讲清楚项目核心板块的业务场景即可,切忌不要讲的太细和太久,这只是面
  • 2024-06-15synchronized内置锁和volatile关键字
    synchronized内置锁对象锁和类锁:对象锁是用于对象实例方法,或者一个对象实例上的,类锁是用于类的静态方法或者一个类的class对象上的。我们知道,类的对象实例可以有很多个,但是每个类只有一个class对象,所以不同对象实例的对象锁是互不干扰的,但是每个类只有一个类锁。但是有一点
  • 2024-06-15happens-before 关系
    happens-before关系是一组规则,用来描述程序中操作的执行顺序,保证程序的正确性和一致性。它定义了哪些操作必须在哪些操作之前执行,从而避免了数据竞争和不一致性问题。happens-before关系主要有以下几种:程序顺序规则:在一个线程内,按照程序代码的顺序,前面的操作happens-
  • 2024-06-13缺陷 & 规避
    1.NPE空指针异常(NullPointerException)1)使用注解@NotNull和@Nullable2)用Optional处理链式调用3)用Objects.equals(a,b)代替a.equals(b),能够避免任意对象为null时的NPE。4)使用空对象模式,空对像模式通过一个特殊对象代替不存在的情况,代表对象不存在时的
  • 2024-06-12mptcp inside lxc container can't access /proc/sys/net/mptcp_enabled
    https://github.com/multipath-tcp/mptcp/issues/470 VenkateswaranJ commented onMar20,2022 • edited Hi,Ihavecreatedanlxccontainer(ubuntu20.04)withprivilegedmodeandmyhostmachinehasmptcpkernelinstalledubuntu20.04.For
  • 2024-06-12你对内存模型(JMM)理解多少?
    Java内存模型(JMM)是一个抽象概念,它规定了在Java并发编程中如何处理多线程之间的内存交互。JMM解决并发程序中最关键的两个问题:线程间的可见性和指令重排序。线程间的可见性:确保当一个线程修改了共享变量的值时,其他线程可以立即看到这一改变。没有良好的可见性保证,一个线程对
  • 2024-06-09volatile关键字的作用
    在Java并发编程中,volatile和synchronized是两种常见的同步机制。它们虽然都可以用于多线程环境下的变量同步,但在语义和使用场景上有显著区别。以下是详细的对比与补充:volatile关键字volatile关键字用于声明共享变量,并为其赋予两层语义:可见性保证:当一个线程修改了volat
  • 2024-06-09volatile的用法
    1.作用防止编译器优化对该变量的访问过程,确保每次访问都能得到最新的值。编译器通常会对代码进行优化,例如将变量的值存储在寄存器中,以减少对内存的访问2.应用场景:1.硬件寄存器2.中断服务程序中的变量3.多线程程序中的共享变量//stm32f407xx.htypedefstruct{__IOui
  • 2024-06-06C#中volatile与lock用法
    C#中volatile与lock用法 更新时间:2014年10月28日14:28:52 投稿:shichen2014  这篇文章主要介绍了C#中volatile与lock用法,较为详细的分析了C#中volatile与lock的适用情况及用法实例,具有一定的参考借鉴价值,需要的朋友可以参考下 本文实例讲述了C#中volatile与lock
  • 2024-05-31JUC并发编程第六章——volatile与JMM
    1被volatile修饰的变量有两大特点特点:可见性有序性:有排序要求,有时需要禁重排内存语义:当写一个volatile变量时,JMM会把该线程对应的本地内存中的共享变量值立即刷新回主内存中当读一个volatile变量时,JMM会把该线程对应的本地内存设置为无效,重新回到主内存中读取最新共享
  • 2024-05-30线程简述:协程、抢占式、sleep、wait、interrupt,优雅中断线程,线程通信等
    思维导图在此:java线程简述-CSDN博客1、线程与协程协程-->线程-->进程,协程最小协程:用户态,go语言线程:用户态、内核态都有。cpu调度的最小单位。是工人,从进程获取资源,多个线程共享进程的资源。进程:内核态。操作系统调度资源的最小单位。是资源管家。2、调度机制协同式。
  • 2024-05-26赶紧收藏!2024 年最常见 20道 Redis面试题(七)
    上一篇地址:赶紧收藏!2024年最常见20道Redis面试题(六)-CSDN博客十三、Redis如何做内存优化?Redis是一个内存中的数据存储系统,因此内存优化对于提高性能和降低成本至关重要。以下是一些Redis内存优化的方法:选择合适的数据类型:根据实际存储的数据特征选择合适的数据类型,比如
  • 2024-05-11全局变量和局部变量以及静态修饰作用
    1,全局变量和全局静态变量a、全局变量:全局变量存放在静态存储区,作用域是全局(对比下面添加static),整个声明周期都可以使用,其他文件如需要使用,需要添加externb、全局静态变量(static):分配的内存与全局变量一样,也是在静态存储内存上,其生命周期也是与整个程序同在的,从程序开始到结束一
  • 2024-05-11JUC源码解析:深入理解 volatile
    JUC源码解析:深入理解volatilevolatile的定义volatile的作用:保证可见性禁止指令重排序volatile可以被看作是轻量版的synchronized,volatile保证了多线程中共享变量的“可见性”,就是说,当volatile变量的值被修改时,其他线程能读取到被修改的变量值。如果volatile使用恰
  • 2024-05-11Spring中的单例bean
    Spring框架中的单例bean是线程安全的吗?不是线程安全的,当多用户同时请求一个服务时,容器会给每一个请求分配一个线程,这是多个线程会并发执行该请求对应的业务逻辑(成员方法),如果该处理逻辑中有对该单列状态的修改(体现为该单例的成员属性),则必须考虑线程同步问题。Spring框架并没
  • 2024-05-07volatile关键字
    volatile关键字概要volatile修饰符并不是Java语言的首创,早在C和C++当中就已经存在。为了理解volatile关键字的作用和原理,需要先了解一些计算机基础知识。请先参考《什么是Java内存模型(JMM)?》我们知道,并发编程时,线程安全涉及三个特性:原子性、可见性、有序性。volatile用于保证
  • 2024-05-079.数字马力面试
    9.1Java基础 9.1.1volatile的概述和原理在Java中volatile是一个防止指令重排以及保证可见性的关键字。如果我们将变量声明为volatile,那么就指示JVM这个变量共享且不稳定,每次从主存中进行读取。AQS的status就是使用volatile修饰的。借用Guide哥的图片: 如果
  • 2024-04-26Redis淘汰策略
    Redis过期策略有几种?Redis中提供八种过期策略,默认是noeviction,即不删除任何数据,当内存不足时会直接报错。可以在Redis的配置文件中进行设置。noeviction:不淘汰任何key,但是内存满时不允许写入新数据,默认就是这种策略。volatile-ttl:对设置了TTL的key,比较key的剩余TTL值,TTL越
  • 2024-04-23Java面试题:请谈谈Java中的volatile关键字?
    在Java中,volatile关键字是一种特殊的修饰符,用于确保多线程环境下的变量可见性和顺序性。当一个变量被声明为volatile时,它可以确保以下两点:内存可见性:当一个线程修改了一个volatile变量的值,其他线程会立即看到这个改变。这是因为volatile关键字会禁止CPU缓存和编译器优化,从而确
  • 2024-04-20[Java]volatile关键字
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/18031966出自【进步*于辰的博客】启发博文:《Javavolatile关键字最全总结:原理剖析与实例讲解(简单易懂)》(转发)。参考笔记二,P73、P74.1。目录1、JMM规范2、并发编程的三
  • 2024-04-15Java并发编程实战读书笔记
    1.线程池模型    netty实战中讲到的线程池模型可以描述为:1.从线程池中选择一个空间的线程去执行任务,2.任务完成时,把线程归还给线程池。这个模型与连接池类似。    根据jdk源码的研究,具体的实现模型是,线程池ThreadPoolExecutor中有一个静态内部类Worker,使用装饰器模式扩
  • 2024-04-09《架构风清扬-Java面试系列第19讲》解释一下Java中的“volatile”在多线程环境中的作用是什么?
    适用范围:这道题适应范围挺宽的,各个年限都可以用参考答案:主要用于确保变量在多个线程之间的可见性和有序性。可见性:当一个线程修改了被volatile修饰的变量,其他线程能够立即看到修改后的值。这确保了变量在多个线程之间的可见性。有序性:volatile关键字能够防止指令重排序
  • 2024-04-08Java内存模型与可见性:volatile关键字、内存屏障与原子操作 第一章
    目录一、引言1.1定义Java内存模型(JMM)及其在并发编程中的重要性1.2简述可见性问题及其对程序正确性的影响二、Java内存模型概述2.1JMM的基本概念:主内存、工作内存、数据同步与一致性保证2.2JMM的特性:原子性、可见性、有序性2.3并发环境下常见的内存可见性问题示例
  • 2024-04-06Redis过期删除策略和内存淘汰机制
    过期删除策略1、惰性删除就是过期之后下一次取数据时,发现过期了,就删除它。2、定期删除定期删除一些过期的key。redis采用的时惰性删除+过期删除。问题:可能会漏掉一些key,从而导致OOM。内存淘汰机制3*2+2volatile-lru:从过期数据集中选择最近最少使用的数据淘汰。allKe