E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
C++11并发编程
几种智能指针的原理/简单实现
详细代码放在了:AC/Algorithms/STL/smartpointers/接口说明auto_ptr之后在
C++11
引入了移动语义,所以后面新出的三个智能指针实现和auto_ptr有比较明显区别auto_ptrhttp
devilisdevil
·
2024-02-11 02:59
JUC
并发编程
---ReentrantLock源码分析
1.ReentrantLockReentrantLock从名字看–重入锁(和synchronized关键字一样),同个线程在重复获取锁的话,会自动获取锁,而不是等待。ReentrantLock中又包含了公平锁、非公平锁的概念。下面列出构造函数和常用方法。publicclassReentrantLockimplementsLock,java.io.Serializable{privatefinalS
~clockwork~
·
2024-02-11 01:31
Java
并发编程
基础ReentrantLock源码分析
并发基础ReentrantLock分析基础知识NonFair的lockFair的lockAQS的acquireAQS的acquire源码:NonFair的tryAcquire源码:FairTyrAcquire源码:addWaiter源码:(返回添加后的Node)acquireQuened源码unLockrelease源码tryRelease源码unparkSuccessor源码基础知识Reentr
~~1112233
·
2024-02-11 01:31
并发编程
java
开发语言
后端
悲观锁的实现方式java_
并发编程
--锁--悲观锁和乐观锁
悲观锁和乐观锁并不是某个具体的“锁”而是一种
并发编程
的基本概念,是根据看待并发同步的角度。乐观锁和悲观锁最早出现在数据库的设计当中,后来逐渐被Java的并发包所引入。
徐德文科学频道
·
2024-02-11 01:31
悲观锁的实现方式java
并发编程
--线程池源码解析
文章目录一、背景与介绍1)何为线程池?2)什么时候使用?3)优点二、executor1)继承与实现UML图2)源码三、ExecutorService1)execute:履行Ruannable类型的任务2)submit:可用来提交Callable或Runnable任务,并返回代表此任务的Future对象3)shutdown:在完成已提交的任务后封闭办事,不再接管新任务4)shutdownNow:停止
心心念念的小鼠标
·
2024-02-11 01:01
并发编程
JAVA进阶
java
线程池源码解析
【
并发编程
】锁-源码分析
1、ReentrantLock1.1加锁流程源码1.1.1加锁流程概述1.1.2lock源码分析1.1.2.1公平和非公平锁方式//非公平锁finalvoidlock(){//上来就先基于CAS的方式,尝试将state从0改为1if(compareAndSetState(0,1))//获取锁资源成功,会将当前线程设置到exclusiveOwnerThread属性,代表是当前线程持有着锁资源setE
lxtx-0510
·
2024-02-11 01:01
并发编程
java
开发语言
一文读懂 Go sync.Cond 设计
Go语言通过go关键字开启goroutine让开发者可以轻松地实现
并发编程
,而并发程序的有效运行,往往离不开sync包的保驾护航。
机器铃砍菜刀s
·
2024-02-10 21:41
【
C++11
】lambda表达式 的定义、性质和用法
定义Lambda表达式是
C++11
引入的一种函数对象的匿名表示方法。它可以用于定义轻量级的、临时的、内联的函数对象,通常用于函数式编程的场景。
卜及中
·
2024-02-10 15:14
C++进阶
c++
java
开发语言
STL - map 和 set
1、关联式容器vector、list、deque、forward_list(
C++11
)等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身关联式容器也是用来存储数据的,与序列式容器不同的是
ketil27
·
2024-02-10 14:39
c++
开发语言
C++11
目录同一列表初始化{}初始化std::initializer_listautodecltypenullptr范围forSTL中的变化右值引用和移动语义左值引用和右值引用左值引用和右值引用比较右值引用使用场景和意义完美转发万能引用新的类功能强制生成默认函数的关键字default禁止生成默认函数的关键字delete可变参数模板lambda表达式lambda表达式语法捕捉列表包装器bindC++11中的
微yu
·
2024-02-10 13:36
C++
c++
开发语言
C++11
——智能指针
0.前言在C++异常处理时,当程序抛出异常时,程序会直接跳转到最近的捕获区域进行异常的处理,这种处理方式保证了程序的不崩溃,只针对一个区域内的某种错误进行处理。这样的代码看似很正常,但往往会忽略掉某些内存的处理。例如我们在某个函数调用前向内存申请了部分空间,本来内存的释放逻辑是在函数调用之后进行完成,但是如果函数内部出现异常错误,函数将直接跳转,申请的内存无法释放,就造成了内存泄漏的风险。1.为什
oywLearning
·
2024-02-10 13:36
C++
c++
开发语言
算法
C++——智能指针——auto_ptr、shared_ptr、unique_ptr
C++11
中提供了三种智能指针,使用这些智能指针时需要引用头文件:·shared_ptr;·unique_ptr;·auto_ptr;这三个智能指针模板都定义了类似指针的对象,可意义将new获得(直接或者间接
勿在浮沙築高臺
·
2024-02-10 13:05
C++
c++
C++ 11新特性之可变参数模板
概述随着
C++11
标准的发布,C++语言获得了许多强大的新特性,其中一项显著提升灵活性和实用性的创新便是可变参数模板。
hope_wisdom
·
2024-02-10 13:48
C++
11新特性
c++
开发语言
C++
11
可变参数模板
C++中的lambda表达式和函数对象
lambda表达式是
C++11
中引入的一项新技术,利用lambda表达式可以编写内嵌的匿名函数,用以替换独立函数或者函数对象,并且使代码更可读。
燕山暮雪
·
2024-02-10 12:13
C++
lambda
函数指针
函数对象
函数包装器
函数适配器
【Java八股面试系列】
并发编程
-并发关键字,线程池
目录并发关键字Synchronizedsynchronized最主要的三种使用方式:具体使用:双重校验锁单例模式synchronized底层实现原理?synchronized锁的优化偏向锁轻量级锁重量级锁MarkWord与Monitor之间的关系总结偏向锁、轻量级锁、重量级锁的应用场景偏向锁、轻量级锁、重量级锁的升级过程Volatilevolatile关键字的作用Lock锁Lock简介CASAQS
叮咚Zz
·
2024-02-10 06:56
java
面试
开发语言
AQS
并发编程
线程池
Java基础-
并发编程
-J.U.C包下的同步工具类
Java工程师知识树/Java基础J.U.C包下的同步工具类类作⽤Semaphore信号量-用来控制同一时间,资源可被访问的线程数量,一般可用于流量的控制。CountDownLatch多线程同步控制工具,它被称之为门阀、计数器或者闭锁。是基于AQS共享模式实现的。常见使用场景:Zookeeper分布式锁,Jmeter模拟高并发等CyclicBarrier回环栅栏(回环屏障)-可以让一组线程全部达到
HughJin
·
2024-02-10 04:28
【java
并发编程
实战读书总结6】显式锁
Java5.0以后除了内置锁synchronized外在concurrent包还提供了显式锁接口Lock。何为显式?就是显式地加锁和解锁,需要自己写代码去加锁和解锁。Synchronized是隐式加锁解锁,也就是无需自己写加锁解锁代码,进了synchronized代码块就隐式加锁,出了代码块就隐式解锁。下图为使用显式锁保证计数结果正确的demo:aaa.png在lock和unlock之间的代码是被
powerjiajun
·
2024-02-10 04:54
C++11
中的auto陷阱
作者:
[email protected]
++11中引入的auto关键字自动推导类型特性,可能是最方便也最容易理解的特性了。然而,即使是这个简单特性,也有陷阱,需要我们使用时注意。1、引用类型被推导为非引用类型例如:foo(void*arg){if(arg){autobig=*static_cast(arg);...}}上面的代码中big会被推导为MyBigClass类型,而不是MyBigClass&类型
DLite
·
2024-02-09 23:58
C/C++编程
c++
iterator
string
c
【C/C++ 14】
C++11
智能指针
目录一、智能指针概述二、auto_ptr三、unique_ptr四、shared_ptr五、weak_ptr六、定制删除器一、智能指针概述C++在进行异常处理的时候,若在new和delete之间或在lock和unlock之间就抛出异常了,这样会导致内存泄漏或死锁问题。为了解决上述问题,于是就引入了智能指针(RAII)的概念。RAII(ResourceAcquisitionIsInitializat
AllinTome
·
2024-02-09 19:34
C/C++
c++
开发语言
C++进阶(十一)
C++11
北尘_:个人主页个人专栏:《Linux操作系统》《经典算法试题》《C++》《数据结构与算法》☀️走在路上,不忘来时的初心文章目录一、
C++11
简介二、统一的列表初始化1、{}初始化2、std::initializer_list
北尘_
·
2024-02-09 17:02
C++
c++
java
开发语言
JUC-java
并发编程
的艺术
一、并发问题上下文切换:CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务。在切换前会保存上一个任务的状态,以便下次切换回这个任务时,可以再加载这个任务的状态。所以任务从保存到再加载的过程就是一次上下文切换。多线程不一定快:多线程有线程创建和上下文切换的开销。减少上下文切换:无锁并发:多线程竞争锁时,会引起上下文切换,所以多线程处理数据时,可以用一些办法来避免使用锁
HBryce24
·
2024-02-09 16:53
并发
java
JUC-并发面试题
一、基础1、为什么要
并发编程
充分利用多核CPU的资源2、
并发编程
存在的问题上下文切换:PU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务。
HBryce24
·
2024-02-09 16:53
并发
java
设计模式-单例模式(懒汉+饿汉+线程安全模式)
目录单例模式懒汉模式饿汉模式线程安全的懒汉模式双重检查锁定(过时,错误的版本)
C++11
特有的线程安全懒汉模式单例模式单例模式可以说是23种设计模式中最为简单的一种设计模式类中只有唯一一个实例并且是私有化的
WE xiye
·
2024-02-09 15:39
基础知识点
设计模式
单例模式
C++11
本篇将介绍
C++11
增加的语法种较为实用的部分统一的列表初始化{}初始化c++98中,标准允许使用花括号{}对数组或者结构体元素进行统一的列表初始值设定:structA{int_a;int_b;};intmain
Artiel
·
2024-02-09 15:09
C++
c++
【
并发编程
】享元模式
个人主页:五敷有你系列专栏:
并发编程
⛺️稳重求进,晒太阳享元模式简介定义英文名称:Flyweightpattern.当需要重用数量有限的同一类对象时享元模式是一种结构型的设计模式。
五敷有你
·
2024-02-09 14:07
并发编程
享元模式
java
开发语言
C++11
——— 右值引用和移动语义
C++11
———右值引用和移动语义基本概念左值vs右值左值引用vs右值引用右值引用使用场景和意义左值引用的使用场景左值引用的短板右值引用和移动语义右值引用引用左值右值引用的其他使用场景完美转发万能引用完美转发保持值的属性完美转发的使用场景基本概念左值
flyyyya
·
2024-02-09 10:34
c++
c++
java
jvm
C++11
智能指针
智能指针的使用及原理智能指针的使用智能指针的原理C++中的智能指针std::auto_ptrstd::unique_ptr防拷贝std::shared_ptrshared_ptr的模拟实现std::shared_ptr的线程安全问题std::weak_ptr智能指针的使用内存泄露问题内存泄露是指因为疏忽或错误,造成程序未能释放已经不再使用的内存的情况。比如:intdiv(){inta,b;cin>
flyyyya
·
2024-02-09 10:03
c++
c++
java
算法
2024最新Java面试题及答案!( 2024年 1 月最新版,持续更新)
了发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全~这套互联网Java工程师面试题包括了:Java面试、Spring、JVM、MyBatis、Redis、MySQL、
并发编程
程序一逸
·
2024-02-09 05:00
开发语言
java
后端
面试
程序员
多线程
JVM
Java并发基础:BlockingQueue和BlockingDeque接口的区别?
核心概念BlockingQueue和BlockingDeque它们都支持在
并发编程
中的线程安全操作,但是,这两个接口之间存在一些关键的区别,主要在于它们所支持的操作和数据结构的特性,如下:1、数据结构特性
程序员古德
·
2024-02-09 03:27
java
开发语言
Java
并发编程
:synchronized
在多线程编程过程中,那一定避免不了线程安全的问题。由于每个线程执行过程是不可控的,所以很可能导致最终的结果与实际上的愿望相违背或者直接导致程序出错。那么怎么解决线程安全的问题呢?基本上所有的并发模式在解决线程安全的问题时,都是采用互斥访问的方式来解决,就是在同一时刻,只能由一个线程访问共享的资源。也就是在访问共享资源的代码之前加一个锁,当线程访问该资源时持有这个锁,等访问结束释放这把锁,这样别的线
匿名用户_bcc3
·
2024-02-09 03:07
第三模块 面向对象&网络&
并发编程
第三模块面向对象&网络&
并发编程
面向对象基础1.初识面向对象1.1对象和self1.2常见成员1.3应用示例2.三大特性2.1封装2.2继承练习题2.3多态3.扩展:再看数据类型总结作业从今天开始,我们将进入系列课程第
李小狗儿
·
2024-02-09 03:42
python全栈
网络
php
开发语言
python
快速入门
并发编程
读书笔记20190424
1.多线程并发访问共享变量,如果不进行访问控制,则会出现数据不一致问题。2.而控制访问的主要方法就是加锁,限制访问,比如synchronized,Lock。synchronized是对象锁,使用方便,控制粒度比较粗;Lock是专门的锁对象,需要主动加锁和释放锁,能更灵活的控制锁粒度和策略(常用可重入锁ReentrantLock,读写锁ReentrantReadWriteLock),性能会更高。3.
dahai2019
·
2024-02-09 00:08
Java面试题2024(Java面试八股文)
文章目录基础SpringspringMybatis数据库Mysqlredis
并发编程
网络通信消息队列MQ分布式分布式事务设计模式更新中基础Java基础Java对象的创建集合HashMap详解HashMap
思静语
·
2024-02-08 20:17
Java面试总结
java
双非本科准备秋招(20.1)——
并发编程
之生产者消费者
生产者消费者与保护性暂停中的不同,不需要产生结果和消费结果的线程一一对应。生产者仅负责产生结果数据,不关心数据该如何处理,而消费者专心处理结果数据JDK中各种阻塞队列,采用的就是这种模式代码实现:首先,设计消息队列类MessageQueue,需要指定容量capacity,用双向链表list作为容器。提供take方法:检查list是否是空,空的话就wait,如果不空就打印Message,并唤醒所有线
随心自风流
·
2024-02-08 20:26
设计模式
java
开发语言
生产者消费者
并发编程
秋招
并发编程
中一种经典的分而治之的思想!!
写在前面在JDK中,提供了这样一种功能:它能够将复杂的逻辑拆分成一个个简单的逻辑来并行执行,待每个并行执行的逻辑执行完成后,再将各个结果进行汇总,得出最终的结果数据。有点像Hadoop中的MapReduce。ForkJoin是由JDK1.7之后提供的多线程并发处理框架。ForkJoin框架的基本思想是分而治之。什么是分而治之?分而治之就是将一个复杂的计算,按照设定的阈值分解成多个计算,然后将各个计
冰河团队
·
2024-02-08 19:06
Java并发系列学习(三)
Java生态圈中提供了非常丰富的
并发编程
类库,但是这样子也造就了非常多的人知其然而不知其所以然,很多人只会用,却不知其底层的运行机制,不知其优势与缺陷,也就无法将其融会贯通,做到信手拈来。
丑人林宗己
·
2024-02-08 18:37
[C/C++] -- Boost库、Muduo库编译安装使用
1.Muduo库Muduo是一个基于
C++11
的高性能网络库,其核心是事件驱动、非阻塞I/O、线程池等技术,以实现高并发、高性能的网络通信。
Afison
·
2024-02-08 16:29
C/C++
c++
C++之多线程(multi-thread)
学习
C++11
及以后的线程支持:
C++11
引入了对多线程编程的支持,包括std::thread类等。学习如何创建、加入和分离线程。#include#includevoidmyFunction
奋进的大脑袋
·
2024-02-08 15:16
c++
开发语言
C++服务器端开发(7):并发处理
1.线程:
C++11
引入了标准线程库,可以通过std::thread类来创建和管理线程。通过在不同的线程中执行不同的任务,可以实现并发处理。
Galaxy银河
·
2024-02-08 14:36
计算机
/
人工智能
C++更多语法
c++
算法
开发语言
并行和并发有什么区别?说一下 runnable 和 callable 有什么区别?线程有哪些状态?
并行和并发是计算机科学中两个相关但不同的概念,它们在多任务处理和
并发编程
中有着重要的区别。
weixin_53180424
·
2024-02-08 14:09
java
java
服务器
数据库
【Java八股面试系列】
并发编程
-进程与线程
目录进程线程线程和进程的区别Java线程和操作系统的线程的区别请简要描述一下进程和线程在Java中的关系,区别及优缺点?编辑编辑编辑并发和并行的区别为什么要使用多线程?线程的生命周期什么是线程上下文切换?sleep()方法和wait()方法对比为什么wait()方法不定义在Thread中?进程进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,
叮咚Zz
·
2024-02-08 13:43
java
面试
开发语言
进程与线程
c++是否应避免使用普通指针,而使用智能指针(包括shared,unique,weak)?
转自:详解
C++11
中的智能指针先说结论,是的,你应该尽量使用这些智能指针。
clw_18
·
2024-02-08 12:25
C++
c++
C++11
新特性
C++从诞生到现在一直是一门主流的编程语言,期间经历了多次更行迭代,最近的一次大版本更新就是
C++11
,而现在大部分公司也把
C++11
作为主流的应用版本。
猿来是这样^
·
2024-02-08 11:33
C++
c++
开发语言
c语言
Golang 并发 生产者消费者模式
Golang并发生产者消费者模式生产者-消费者模式能够带来的好处生产者消费者模式是一种常见的
并发编程
模式,用于解决生产者和消费者之间的数据传递和处理问题。
26857259
·
2024-02-08 11:19
Golang
golang
github
中间件
C++11
简介 —— “在写一种很新的代码”
C++11
标准可以说是近20年来C++语言标准最剧烈的一次修订,远远比前两次修订变动要大。因而,在C++语言标准委员会内部的讨论,以及在C++语言的社区和应用业界引发的震动和影响也极为深远。
_宁清
·
2024-02-08 10:30
C++
c++
开发语言
c语言
CMake指令解析 set(CMAKE_CXX_FLAGS “$ENV{CXXFLAGS} -rdynamic -O3 -fPIC -ggdb -std=
c++11
-Wall -Wno-deprec
完整代码set(CMAKE_CXX_FLAGS"$ENV{CXXFLAGS}-rdynamic-O3-fPIC-ggdb-std=c++11-Wall-Wno-deprecated-Werror-Wno-unused-function-Wno-builtin-macro-redefined-Wno-deprecated-declarations")1、CMAKE_CXX_FLAGS这种大写的变量,
For Nine
·
2024-02-08 10:50
CMake
c++
开发语言
C++11
异步任务轮子实现(header-only)
为什么写这个C++17异步任务需要future和promise配合使用,不是很喜欢那种语法。实现一个操作简洁的异步任务。满足功能异步任务超时控制get接口同步任务计时lambda回调任务重启使用#include"async_callback.h"#include#includeusingnamespacestd;intmain(){inta=0,b=0,c=0;AsyncTask*task1=ne
Y. F. Zhang
·
2024-02-08 09:25
C++
多线程编程
数据结构
c++
开发语言
算法
什么是右值引用,跟左值又有什么区别
右值引用是
C++11
引入的一种引用类型,用于绑定临时对象或将要被移动的对象。它使用双引号(&&)表示,例如int&&。左值是可以取地址的表达式,它有持久的身份,并且可以在多个地方使用。
草琳情
·
2024-02-08 08:57
c++
使用
C++11
简单测试接口性能矩阵
本版本和上一个版本的接口基本一致,就是做接口测试的工程。但是增加了简单的性能矩阵的测试。不是并发的性能,主要是单接口在不同参数下的表现。本例特点,在时间方面,去掉了C语言的time_t库,改用boost::posix_time和boost::date_time::gregorian库。在性能方面,除了简单的获取返回的gunzip后的解压数据大小外,还获取了unzip之前的rawdata大小。使用的
FredricZhu
·
2024-02-08 08:05
多线程
并发编程
9-ReentrantReadWriteLock源码剖析
前面文章说到了ReentrantLock,解决线程间安全问题,使用ReentrantLock就可以,但是ReentrantLock是独占锁,某一个时刻只能一个线程获取锁,在写少读多的场景下,显然ReentrantLock并不能满足次场景。今天要说的ReentrantReadWriteLock锁就能满足写少读多的场景。ReentrantReadWriteLock锁采用读写分离的策略,读锁是一个共享锁
Demo_zfs
·
2024-02-08 07:42
上一页
2
3
4
5
6
7
8
9
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他