- 博客(86)
- 问答 (7)
- 收藏
- 关注
原创 阅读《SQL必知必会》(第五版) 总结及笔记
SQL是使用最为广泛的数据库语言。本书是麻省理工学院、伊利诺伊大学等众多大学的参考教材,由浅入深地讲解了SQL的基本概念和语法,涉及数据的排序、过滤和分组,以及表、视图、联结、子查询、游标、存储过程和触发器等内容,实例丰富,便于查阅。与其他同类图书不同,本书没有过多阐述数据库基础理论,而是专门针对一线软件开发人员,直接从SQLSELECT开始,讲述实际工作环境中最常用和最必需的SQL知识,实用性极强。新版对书中的案例进行了全面的更新,并增加了章后挑战题,便于读者巩固所学知识。
2024-10-07 14:08:34
1217
原创 C++ Vector容器的详细指南
C++的vector容器提供了一种高效、灵活的序列存储方式。理解其内部实现机制以及正确使用方法,可以显著提升程序的性能和可靠性。在需要频繁插入和删除操作时,合理利用vector的容量管理特性,并通过预先分配内存来减少性能开销,是非常重要的优化手段。
2024-07-28 10:26:16
444
原创 C++中的atomic:原子
原子操作是指在多线程环境下,不可分割的操作,即在进行操作时不会被其他线程打断。原子操作是一种以单个事务来执行的操作,其他线程只能看到操作完成前或者完成后的资源状态,不存在中间状态可视。从底层来看,原子操作是一些硬件指令,其原子性由硬件保证,C++11 对原子操作进行了抽象,提供了统一的接口,避免使用时嵌入平台相关的代码来支持跨平台使用。提供了一种高效、安全的方式来处理多线程环境中的共享数据。通过利用底层硬件的原子操作指令,可以避免使用互斥锁,从而提高性能,并减少死锁的风险。在编写高并发应用程序时,合理使用。
2024-07-20 10:51:51
1121
原创 C++中的memory_order
是最弱的内存序,仅保证原子操作的原子性,但不保证操作的顺序。使用场景:适用于对操作顺序不敏感的场景,仅需要保证单个原子操作的原子性。例如,计数器的增减。优点:性能最高,开销最小。缺点:没有顺序保证,可能导致难以调试的并发问题。选择合适的内存序需要根据具体的应用场景和性能需求来权衡。默认使用最简单直观,但在追求性能的场景中,可以考虑使用更弱的内存序如和。通过合理使用内存序,既可以提高程序性能,又能保证程序的正确性和可靠性。希望这篇博客能帮助你更好地理解和使用C++11的内存模型。
2024-07-20 10:43:10
408
原创 C++中的condition_variable:条件变量
在多线程编程中,我们常常需要一个线程等待某个条件的变化,比如等待数据的生成或某个标志位的设置。如果没有条件变量(),线程可能会使用忙等待(不断检查条件是否满足),这会导致 CPU 资源的浪费。条件变量提供了一种高效的等待机制,使线程在等待条件时进入休眠状态,不占用 CPU 资源,当条件满足时被唤醒继续执行。
2024-07-15 07:48:33
1722
原创 C++中的Mutex:保护共享资源的利器
Mutex(互斥体)是用于控制资源独占访问的同步原语。当一个线程锁定(lock)mutex时,其他线程对同一mutex的锁定操作会被阻塞,直到第一个线程解锁(unlock)mutex。独占访问:同一时间只允许一个线程锁定。阻塞与非阻塞锁定:lock()阻塞,try_lock()非阻塞。数据保护:防止多个线程同时访问共享资源导致数据竞争。Mutex是多线程编程中保护共享资源的基础工具。通过合理使用不同类型的mutex和工具函数,可以有效防止数据竞争和死锁问题,提高程序的稳定性和性能。
2024-07-14 10:37:06
331
原创 C++11中的std::async: 简化并行任务的利器
std::async是C++11标准库中的一个函数,用于异步执行任务,并返回一个std::future对象以获取任务的结果。它提供了一种简单而灵活的方式来创建并行任务,而无需手动管理线程。std::async提供了一种高效且易用的方式来处理并行任务,简化了线程管理、结果同步和异常处理。与std::thread相比,std::async在很多情况下更为便捷,是进行异步编程的强大工具。通过本文的介绍,希望能帮助你更好地理解和使用std::async来编写高效的并行程序。
2024-07-14 10:32:40
592
原创 深入理解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
1273
原创 《深入Rust标准库》阅读第一章笔记
Rus标准库的构成组件被开发者精细设计,这是由Rust的设计目标和现代编程语言的特征决定的。在这些组件中,CORE库是基础,ALLOC库及 STD库都是基于CORE库的。第一章主要介绍Rust标准库的体系,让我们从整体上对Rust标准库有一个全面的了解。Rust完美地实现了对各种CPU架构及OS平台的兼容。推荐大家购买原版书籍观看。
2024-05-22 21:02:47
388
原创 Rust CallBack的几种写法
模拟常用的几种函数调用CallBack的写法。测试调用都放在函数t6_call_back_task中。我正在学习Rust,有不对或者欠缺的地方,欢迎交流指正。
2024-02-17 14:16:19
997
1
原创 鸿蒙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
1520
原创 c++ 工具类TaskProcessor 支持同步、异步、延迟任务
c++ 工具类TaskProcessor 支持同步、异步、延迟任务执行 有点类似android中ThreadHandler的实现
2023-04-05 11:00:33
380
原创 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
12339
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
670
原创 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
2974
空空如也
rust编程架构设计的方案 有偿
2024-04-25
使用GN (Generate Ninja) 编译Android平台动态库
2024-01-05
C++ lamdba值捕获引起的问题
2023-07-09
关于#AndroidJNI#的问题,如何解决?
2023-07-03
ijkplayer 断线重连问题
2021-06-28
Android端使用 ijkplayer0.8.8源码。RTMP 断网后无法重连问题
2021-06-14
下载webrtc,gclient sync之后报下面的错误
2020-05-27
ubuntu18 http_proxy执行后无效问题
2020-04-12
android高德地图纠偏和添加移动指示器
2016-08-13
android高德地图轨迹偏移问题,怎么给地图添加一个可以拖动的控件?
2016-08-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人