自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Arman的博客

技术总结 整理 分享转载

  • 博客(85)
  • 问答 (7)
  • 收藏
  • 关注

原创 C++ Vector容器的详细指南

C++的vector容器提供了一种高效、灵活的序列存储方式。理解其内部实现机制以及正确使用方法,可以显著提升程序的性能和可靠性。在需要频繁插入和删除操作时,合理利用vector的容量管理特性,并通过预先分配内存来减少性能开销,是非常重要的优化手段。

2024-07-28 10:26:16 389

原创 C++中的atomic:原子

原子操作是指在多线程环境下,不可分割的操作,即在进行操作时不会被其他线程打断。原子操作是一种以单个事务来执行的操作,其他线程只能看到操作完成前或者完成后的资源状态,不存在中间状态可视。从底层来看,原子操作是一些硬件指令,其原子性由硬件保证,C++11 对原子操作进行了抽象,提供了统一的接口,避免使用时嵌入平台相关的代码来支持跨平台使用。提供了一种高效、安全的方式来处理多线程环境中的共享数据。通过利用底层硬件的原子操作指令,可以避免使用互斥锁,从而提高性能,并减少死锁的风险。在编写高并发应用程序时,合理使用。

2024-07-20 10:51:51 779

原创 C++中的memory_order

是最弱的内存序,仅保证原子操作的原子性,但不保证操作的顺序。使用场景:适用于对操作顺序不敏感的场景,仅需要保证单个原子操作的原子性。例如,计数器的增减。优点:性能最高,开销最小。缺点:没有顺序保证,可能导致难以调试的并发问题。选择合适的内存序需要根据具体的应用场景和性能需求来权衡。默认使用最简单直观,但在追求性能的场景中,可以考虑使用更弱的内存序如和。通过合理使用内存序,既可以提高程序性能,又能保证程序的正确性和可靠性。希望这篇博客能帮助你更好地理解和使用C++11的内存模型。

2024-07-20 10:43:10 331

原创 C++中的condition_variable:条件变量

在多线程编程中,我们常常需要一个线程等待某个条件的变化,比如等待数据的生成或某个标志位的设置。如果没有条件变量(),线程可能会使用忙等待(不断检查条件是否满足),这会导致 CPU 资源的浪费。条件变量提供了一种高效的等待机制,使线程在等待条件时进入休眠状态,不占用 CPU 资源,当条件满足时被唤醒继续执行。

2024-07-15 07:48:33 1234

原创 C++中的Mutex:保护共享资源的利器

Mutex(互斥体)是用于控制资源独占访问的同步原语。当一个线程锁定(lock)mutex时,其他线程对同一mutex的锁定操作会被阻塞,直到第一个线程解锁(unlock)mutex。独占访问:同一时间只允许一个线程锁定。阻塞与非阻塞锁定:lock()阻塞,try_lock()非阻塞。数据保护:防止多个线程同时访问共享资源导致数据竞争。Mutex是多线程编程中保护共享资源的基础工具。通过合理使用不同类型的mutex和工具函数,可以有效防止数据竞争和死锁问题,提高程序的稳定性和性能。

2024-07-14 10:37:06 266

原创 C++11中的std::async: 简化并行任务的利器

std::async是C++11标准库中的一个函数,用于异步执行任务,并返回一个std::future对象以获取任务的结果。它提供了一种简单而灵活的方式来创建并行任务,而无需手动管理线程。std::async提供了一种高效且易用的方式来处理并行任务,简化了线程管理、结果同步和异常处理。与std::thread相比,std::async在很多情况下更为便捷,是进行异步编程的强大工具。通过本文的介绍,希望能帮助你更好地理解和使用std::async来编写高效的并行程序。

2024-07-14 10:32:40 438

原创 深入理解C++11中的std::packaged_task

std::packaged_task封装的函数的计算结果会通过与之关联的std::future::get获取(可以在其它线程中异步获取)。关联的std::future可以通过std::packaged_task::get_future获取,该方法只能调用一次,多次调用会触发std::future_error异常。和std::function类似,std::packaged_task是一个多态的、能够感知内存分配的容器:存储的可调用目标可以分配到堆上,也可以通过提供的内存分配器定义存储方式。

2024-07-14 10:27:34 603

原创 c++ dynamic_cast

【代码】c++ dynamic_cast。

2024-07-01 07:49:13 139

原创 C++ 隐式转换

【代码】C++ 隐式转换。

2024-06-30 08:41:19 109

原创 c++ std::forward 笔记

请您查看如下代码块,这样方便复制过去直接运行。

2024-06-29 10:20:00 197

原创 《深入Rust标准库》阅读第一章笔记

Rus标准库的构成组件被开发者精细设计,这是由Rust的设计目标和现代编程语言的特征决定的。在这些组件中,CORE库是基础,ALLOC库及 STD库都是基于CORE库的。第一章主要介绍Rust标准库的体系,让我们从整体上对Rust标准库有一个全面的了解。Rust完美地实现了对各种CPU架构及OS平台的兼容。推荐大家购买原版书籍观看。

2024-05-22 21:02:47 254

原创 Rust CallBack的几种写法

模拟常用的几种函数调用CallBack的写法。测试调用都放在函数t6_call_back_task中。我正在学习Rust,有不对或者欠缺的地方,欢迎交流指正。

2024-02-17 14:16:19 795

原创 鸿蒙Native项目生产动态库(.so) 和静态库(.a)

通过Sutdio的操作 Build -> Build Hap(s)/APP(s) -> Build Hap(s) 之后会生成静态库,路径为:/entry/build/default/intermediates/cmake/default/obj 下。CMakeLists.txt 文件中默认生成的是动态库,该命令为:add_library(entry SHARED hello.cpp)生成静态库需要修改如下命令:add_library(entry STATIC hello.cpp)

2024-02-04 16:30:37 1288

原创 c++ Reference Collapsing

c++ Reference Collapsing

2023-10-04 12:49:32 212

原创 c++ this

c++ this

2023-10-04 12:41:35 169

原创 c++ std::move 和 std::forward

c++ std::move 和 std::forward

2023-10-03 19:36:58 222

原创 c++ mutable

c++ mutable

2023-09-07 10:51:16 247

原创 c++ nullptr

c++ nulllptr

2023-09-07 10:16:27 361

原创 C++ static

c++ static关键字

2023-09-04 10:59:26 121

原创 C++ new/delete 与 malloc/free 的区别?

new/delete 与 malloc/free 的区别?

2023-08-28 20:17:26 118

原创 C++ 函数指针

C++ 函数指针

2023-08-10 15:53:58 174

原创 C++ extern

c++ extern

2023-07-13 13:44:16 141

原创 c++ 左值 广义左值 右值 纯右值 将亡值

c++ 左值 广义左值 右值 纯右值 将亡值

2023-04-19 17:28:53 631

原创 c++ 工具类TaskProcessor 支持同步、异步、延迟任务

c++ 工具类TaskProcessor 支持同步、异步、延迟任务执行 有点类似android中ThreadHandler的实现

2023-04-05 11:00:33 321

原创 C++ operator

c++ operator

2023-03-02 09:33:09 410

原创 c++ default delete

c++ default delete

2023-02-11 08:30:00 133

原创 c++ virtual

c++ virtual

2023-02-11 08:00:00 80

原创 c++ enum class

c++ enum class

2023-02-05 12:45:07 142

原创 c++ #define

c++ #define

2023-02-05 12:43:08 115

原创 c++ explicit

c++ explicit

2023-02-05 12:42:48 67

原创 C++ final

c++ final

2023-02-05 12:41:34 97

原创 c++ inline

c++ inline总结

2023-01-28 11:25:08 522

原创 c++ decltype

c++ decltype总结

2023-01-28 11:10:20 518

原创 c++ const

c++ const总结

2023-01-28 11:08:51 468

原创 C++ auto

C++ auto相关总结

2023-01-28 11:07:45 635

转载 C++ assert

c++ assert相关知识总结

2023-01-28 11:06:30 852

原创 MediaCodec 错误整理

System.err: android.media.MediaCodec$CodecException: Failed to initialize OMX.qcom.video.encoder.avc, error 0xfffffff4错误原因:创建MediaCodec实例超限;ACodec: [OMX.allwinner.video.encoder.avc] ERROR(0x80001009)错误原因:1. 塞了错误的数据2. 入队Frame数据时用了flag(BUFFER_FLA.

2021-02-19 20:57:15 11188 4

原创 SDP笔记

SDP 是由会话级描述(session level description)和多个媒体级描述(media level description)组成,每个媒体层又分为媒体流描述、网络描述、安全描述和服务质量描述;会话级描述:的作用域是整个会话,其位置是从 v= 行开始到第一个媒体描述为止;媒体级:是对单个的媒体流进行描述,其位置是从 m= 行开始到下一个媒体描述(即下一个 m=)为止;WebRTC 按功能将 SDP 划分成了五部分:会话元数据SessionMetaData:v=;o=;t=;s=;.

2020-11-15 11:32:22 619

原创 Java线程暂停、等待、唤醒、让步总结

Thread.sleep(long millis) : 使当前线程暂停指定时间,暂停期间该线程不参与CPU竞争;```java@FastNativeprivate static native void sleep(Object lock, long millis, int nanos) throws InterruptedException;```1. 不会释放占有的锁。2. 必须传入时间,到时会自动唤醒(无法主动唤醒,醒后继续执行后续代码)。3. Thread.sleep(0);//传入.

2020-11-15 11:00:26 2924

原创 ava.lang.RuntimeException: Could not launch intent Intent,Perhaps the main thread has not gone idle

java.lang.RuntimeException: Could not launch intent Intent { act=android.intent.action.MAIN flg=0x14000000 cmp=cn.test.test/.MainActivity } within 45 seconds. Perhaps the main thread has not gone idl...

2020-02-25 19:59:31 4115

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除