- 博客(31)
- 资源 (1)
- 收藏
- 关注
转载 C++ 并发编程指南(3)线程安全
解释一线程安全是指代码在多线程环境下运行时的安全性。如果一个类或者函数在多线程环境中被安全地调用,且其内部状态和结果不会因为多线程的并发访问而遭到破坏,那么我们就说这个类或者函数是线程安全的,一句话讲就是多线程可以安全访问临界区资源,就是线程安全。解释二多线程同时对内存中的一共享变量操作,最终这个共享变量的值是正确的,那么就是线程安全,反之就是线程不安全。
2024-10-16 17:10:07
69
转载 C++ 并发编程指南(2)管理线程
转载:https://blog.youkuaiyun.com/cloud323/article/details/135577408。
2024-10-16 17:07:13
41
转载 【转载】C++ 并发编程指南(1)探索并发世界
转载:https://blog.youkuaiyun.com/cloud323/article/details/135575768。
2024-10-16 16:50:57
47
转载 【转载】C++ 并发编程指南(4)线程同步
线程同步是指在多线程环境下,通过协调和控制线程的执行顺序和访问共享资源的方式,确保线程之间能够按照一定的顺序合作和共享资源,以避免竞争条件和数据不一致的问题。即:当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作。其他线程处于等待状态,直到第一个线程完成操作并释放资源后,它们才能继续执行。在C++中,可以使用信号量(semaphore)来实现线程同步。信号量是一种用于控制多个线程对共享资源的访问的同步原语。
2024-10-16 16:17:29
74
原创 Android签名漏洞
Android证书签名漏洞,是指攻击者可以在不改变原APK的签名情况下修改APK的代码,从而绕过Android的签名认证安全机制。通过植入恶意代码的到仿冒的App中,就可替代原有的App做下载、更新。正常情况下,开发者发布了一个应用,该应用一定需要开发者使用他的私钥对其进行签名。恶意攻击者如果尝试修改了这个应用中的任何一个文件(包括代码和资源等),那么他就必须对APK进行重新签名,否则修改过的应用是无法安装到任何Android设备上的。
2024-01-09 15:38:26
1037
原创 Native Crash回溯栈
每个地址会的解析信息会保存在Dl_info中,如果有运行符号满足,dli_sname和dli_saddr就会被设定为相应的so名称跟地址,dli_fbase是基址信息,因为我们的so库被加载到程序的位置是不固定的!unwindCallback这里拿到了系统回调给我们的参数,关键就是这个了 _Unwind_Context这个结构体参数了,这个参数的作用就是传递给_Unwind_GetIP这个函数,获取我们当前的执行地址,即pc值!所返回的信息包括函数的基地址、链接器加载的共享库的名称以及函数名。
2024-01-09 15:02:42
895
原创 Linux信号处理浅析
信号集就是用来记录当前收到了哪个信号,会把当前信号的标志位置成“正在处理”,如果此时再收到该信号,那么信号就阻塞等待,使用数据类型sigset_t表示信号集,在Linux中该类型是一个32位无符号整数,这是因为在Linux中定义了32种信号,每一个信号用32位无符号整型变量中的一位来标志,如果该位置为1,那么表示正在处理该信号,如果置为0表示可以处理该信号。以第四行为例,阻塞信号为0,该信号没有被阻塞,未决信号为1,说明收到这个信号了,对应的处理方式是 sighandler函数,那就会执行该函数。
2024-01-09 14:53:50
1418
原创 Google Breakpad使用方法
依赖头文件下载地址:Breakpad由三个主要组件:client 是一个库, 以library的形式内置在应用中,在应用崩溃时写入一个minidump文件symbol dumper 是一个程序,读取由编译器产生的调试信息(debugging information),并生成一个使用Breakpad格式的符号文件( symbol file)processor 是一个程序,读取 minidump文件 和 symbol file,生成可读的c/c++ 堆栈跟踪(Stack trace.)
2024-01-09 14:52:51
1094
原创 CEF 测试demo编译和调试
背景CEF 32位和64位已经编译完成,现在开始编译官方Demo工程编译环境VS2019CMake 3.17编译步骤1. 解压cef_binary_88.0.0-master.2288+gd06fdcf+chromium-88.0.4324.0_windows32.zip2. 解压目录下创建文件夹vs20193. CMake生成VS工程,如下,有不清楚的可以找度娘4. VS2019打开工程5. 修改工程配置,没有使用沙箱,去掉Debug和Release所有工程中相关配置。工
2021-02-20 11:18:19
1009
1
转载 CEF MFC程序编译错误处理
嵌套CEF到MFC应用程序中,编译出现一个问题,记录下原文:https://www.cnblogs.com/qingtian224/p/5833456.html1>uafxcwd.lib(afxmem.obj) : error LNK2005: “void * __cdecl operator new(unsigned __int64)” (??2@YAPEAX_K@Z) 已经在 LIBCMTD.lib(new_scalar.obj) 中定义1>uafxcwd.lib(afxmem.obj
2021-02-01 15:01:57
354
原创 CEF源码编译支持H264 4324版本
本文主要记录CEF源码编译,为了支持视频播放一、准备工作1、建议编译机器尽可能选择高性能的,以及足够的硬盘空间(100G以上);2、安装 Microsoft Visual Studio 2017/2019,最好是默认路径,非默认路径需要自行修改编译配置;3、稳定的VN,用来下载 chromium 源码;4、如果你用的中文系统,需要更改系统区域设置为英文;5、至少8GB的RAM(建议至少32GB)和90GB的可用磁盘空间(用于调试版本);6、尽可能高性能机器,我的机器编译CPU都是99%。二
2021-01-30 17:41:08
2261
6
原创 CEF Debug模式运行打开网页白屏
CEF Debug模式运行打开网页白屏问题描述:Demo在Debug模式运行后会出现白屏,网上有解决方法:[https://www.cnblogs.com/lvdongjie/p/13226022.html]解决方法:1.此时查看日志,在运行目录下会看到一个名为debug.log的文件,错误提示如下FATAL:dwrite_font_proxy_init_impl_win.cc(91)] Check failed:fallback_available == base::win::GetVer
2021-01-30 16:48:21
2688
转载 C++ 32位64位的区别
一.32位和64位的概念所谓32位和64位,指的是CPU的字长,其实主要是 GPRS(General Purpose Regisers,通用寄存器)的数据宽度。电脑内部都是实行2进制运算,处理器(CPU)一次处理数据的能力也是2的倍数。8位处理器、16位处理器、32位处理器和64位处理器,其计数都是2的倍数。一次处理的数据越大,该电脑处理信息的能力越来越大。所谓32位处理器就是一次只能处理32
2017-05-11 09:43:52
7495
2
翻译 HTML调用Js文件
如果我们需要调用别的 js文件。怎么处理?看随机抽取这个例子。在一个页面中如下:random number//随机抽取人名 我们可以把 js 放在另外一个文件里,比如当前文件夹的 a.js 中。这样 html 页面如下:
2017-03-06 22:06:27
2420
原创 进制转换和按位运算
#include #include #include int btod(char *bstr); int dtob(int d, char *bstr); int main(int argc, char **argv){ char bstr[64] =""; memset(bstr,0,sizeof(bstr));
2014-09-25 23:40:45
626
转载 Bat 命令学习
基础部分:======================================================================一、基础语法: 1.批处理文件是一个“.bat”结尾的文本文件,这个文件的每一行都是一条DOS命令。可以使用任何文本文件编辑工具创建和修改。 2.批处理是一种简单的程序,可以用 if 和 goto 来控制流程,也可以使用 for
2014-08-22 00:48:23
626
翻译 文件相关函数<io.h>
dir.h文件中函数的用法(转) chdir()改变当前目录的函数 原形:int chdir(const char *path) 功能:把由path指定的目录改为当前目录。path参数中可以指定驱动器号,如“a:\\ddd”, 但只是改变该驱动器上的当前目录,对当前活动驱动器上的当前目录无影响。 返回值
2014-08-19 22:44:00
966
转载 C编写的简单病毒程序
C,是程序员最常用的编程语言之一。类似C等高级编程语言为开发人员提供了大量的内置函数,可以方便程序员编写各种跨平台的安心的应用编程。对于编写病毒而言,也方便了程序员来用自己擅长的语言来编写,但同时也带来了很多弊端。第一,许多高级语言的编程并不基于底层系统,即使是C也不太容易。这就导致这类的大都数病毒的传播机制十分原始(通常是通过重写来实现);另一方面的不足是,大多用高级语言编写的病毒至少有10K,
2014-08-18 23:06:27
3038
翻译 闪烁的爱心桃
#include #include #include#define I 20 //爱心的上半部分两个小半圆的半径#define R 340 //爱心的下半部分圆弧曲线半径int main() {FILE *fp;if((fp=fopen("爱心.txt","w"))==NULL){ printf("File open error!\n");
2014-08-18 22:59:08
1074
翻译 五角星
#include "stdio.h"void print(int(*p)[62]) { int i,i2=0,j,j2=49; for(i=0;i{ printf(" "); for(j=0;j{ if(i==i2||i==i2+1) if(j>j2&&jcontinue; if(*(*(p+i)+j)==1||*(*(p+i)+j)==2) p
2014-08-18 22:58:17
628
翻译 爱心桃
#include #include #define I 8#define R 150int main() {int i,j,e; int a; int t1; for(i=1,a=I;i for(j=(int) ( I-sqrt(I*I-(a-i)*(a-i)) );j>0;j--) p
2014-08-18 22:57:40
754
翻译 一箭穿心
#include #include #define I 8#define R 150int main() {int i,j,e; int a; int t1; for(i=1,a=I;i t1=6; while(t1--)printf(" "); for(j=(int
2014-08-18 22:57:02
1382
原创 逆序
#include #includeusing namespace std;class Reverse{public://字符串完全逆序void array_all_reverse(string &array);void array_all_reverse(char* array);//字符串中单词逆序void array_reverse(st
2014-08-18 22:41:42
634
转载 C/C++趣味程序百例
1.绘制余弦曲线 2.绘制余弦曲线和直线 3.绘制圆 4.歌星大奖赛 5.求最大数 6.高次方数的尾数 7.阶乘尾数零的个数 8.借书方案知多少 9.杨辉三角形 10.数制转换 11.打鱼还是晒网 12.抓交通肇事犯 13.该存多少钱 14.怎样存钱利最大 15.捕鱼和分鱼 16.出售金鱼 17.平分七筐鱼 18.有限5位数
2014-08-17 22:24:02
11139
原创 文件操作
#include #include #include #include using namespace std;int main(void){char buff[1024];ofstream file_oa("a.txt");if(!file_oa){cout return 0;}file_oa file_oa.close()
2014-07-13 23:28:17
562
原创 排序
#includeusing namespace std;void sort1(int* ,int);//冒泡void sort2(int* ,int);//选择void sort3(int* ,int);//插入void sort4(int* ,int);//快排void show(int* ,int);int main(){const int
2014-07-13 23:25:46
412
原创 网络编程
Server#include #include #include #include #include #include #include using namespace std;int main(){int sockfd=socket(AF_INET,SOCK_STREAM,0);sockaddr_in my_addr;
2014-07-13 23:24:15
510
原创 链表
?#include //#include #include //链表节点数据类型声明,链表中的每个节点都是一个Node类型变量struct Node{int data;struct Node *next;};//头指针为NULL表示链表为空,即链表中没有任何节点//头指针就是链表头结点(第一个节点)的指针,它可以代表整个链表,就像数组名代表整
2014-07-13 23:21:38
532
原创 List
#include using namespace std;struct Node{int id;string name;Node* next;};class List{private:Node* head;public:List();void add_list(int,const char*);void del_list(
2014-07-13 23:14:00
397
cef_binary_88.0.0-master.2288+gd06fdcf+chromium-88.0.4324.0_windows64.zip
2021-01-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人