自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

顺其自然~专栏

思路决定出路,科技创造奇迹。

  • 博客(30)
  • 收藏
  • 关注

翻译 cef / JavaScript集成

介绍Chromium和CEF将V8 JavaScript引擎用于其内部JavaScript(JS)实现。浏览器中的每个框架都有其自己的JS上下文,该上下文为在该框架中执行的JS代码提供范围和安全性(有关更多信息,请参见“使用上下文”部分)。CEF公开了许多JS功能以集成到客户端应用程序中。使用CEF3 Blink(WebKit)和JS执行可在单独的渲染器进程中运行。渲染器进程中的主线程被标识为TID_RENDERER,并且所有V8执行都必须在此线程上进行。与JS执行相关的回调通过CefRenderP

2021-02-26 17:30:32 64

转载 VS2019安装 VisualSVN Server 插件

选择VisualSVN for Visual Studio 2019进行安装,网址:https://www.visualsvn.com/visualsvn/download/

2021-02-26 16:59:07 146

转载 windows标准控件的介绍与使用

一、 Windows标准控件概述(一)Windows标准控件Windows系统提供的标准控件主要包括静态控件、按钮控件、编辑框控件、列表框控件、组合框控件等,如表所示。Windows标准控件的类型类别 MFC类 控件类型静态控件 CStatic Static Text、Group Box按钮控件 CButton Butto...

2021-02-25 17:18:36 119

转载 c++ mutex

操作系统中中提供一把互斥锁mutex(也称之为互斥量)。每个线程在对资源操作前都尝试先加锁,成功加锁才能操作,操作结束解锁。但通过“锁”就将资源的访问变成互斥操作,而后与时间有关的错误也不会再产生了。但,应注意:同一时刻,只能有一个线程持有该锁。当A线程对某个全局变量加锁访问,B在访问前尝试加锁,拿不到锁,B阻塞。C线程不去加锁,而直接访问该全局变量,依然能够访问,但会出现数据混乱。所以,互斥锁实质上是操作系统提供的一把“建议锁”(又称“协同锁”),建议程序中有多线程访问共享资源的时

2021-02-25 13:38:07 50

原创 v8引擎编译全记录2021-2-23

前言:在做v8编译之前,请做好踩坑准备,这篇帖子是为了让其他同学遇到我这种类似的问题的时候有一个参考,不一定就一定能解决掉你的问题,毕竟在操作的时候各种因素都会影响最后的结果。本人在编译时遇到的各种问题,也查阅无数资料,也算是比较好的解决了这些问题。同时保留及总结下来了相关步骤,如果按照我这些步骤没有差错的情况下,那么编译出来应该不是什么问题。一、下载依赖安装工具首先进入v8的github地址https://github.com/v8/v8点击这个就下载了 会下载下来dep.

2021-02-23 16:39:26 98 1

转载 Visual C++ 新增功能(2003 - 2015)

本页面包括从 Visual Studio 2003 到 Visual Studio 2015 的所有 Visual C++ 版本的“新增功能”页。提供这些信息的目的是方便用户从早期版本的 Visual Studio 进行升级。备注有关当前版本的 Visual Studio 的信息,请参阅Visual Studio 中 Visual C++ 的新增功能和Visual Studio 中 Visual C++ 的符合性改进。Visual Studio 2015 中 C++ 的新增功能在 V...

2021-02-23 15:52:20 148

转载 GYP,GN和Ninja

chromium的编译过程中用到了GYP,GN和Ninja这三个构建工具,GYP是一个在不同平台构建项目的工具,GN是GYP的升级版,Ninja是一个小型追求速度的构建系统。GYPGYP是Generate Your Projects的缩写,GYP的目的是为了支持更大的项目编译在不同的平台,比如Mac,Windows,Linux,它可以生成Xcode工程,Visual Studio工程,Ninja编译文件和Makefiles。GYP结构GYP的输入是.gyp和.gypi文件,.gypi文件是用

2021-02-23 14:50:39 82

转载 交叉编译详解

第 1 章 交叉编译简介1.1 什么是交叉编译对于没有做过嵌入式编程的人,可能不太理解交叉编译的概念,那么什么是交叉编译?它有什么作用?在解释什么是交叉编译之前,先要明白什么是本地编译。本地编译本地编译可以理解为,在当前编译平台下,编译出来的程序只能放到当前平台下运行。平时我们常见的软件开发,都是属于本地编译:比如,我们在 x86 平台上,编写程序并编译成可执行程序。这种方式下,我们使用 x86 平台上的工具,开发针对 x86 平台本身的可执行程序,这个编译过程称为本地编译。交叉

2021-02-23 13:36:10 82

翻译 ICU

ICU(International Components for Unicode,Unicode国际组件)是一套成熟,使用广泛的开源全球化API。ICU利用Unicode庞大的通用语言环境数据存储库(Common Locale Data Repository,CLDR)作为其数据库,为软件应用程序提供了全球化支持。ICU具有广泛的可移植性,可以在所有平台上为应用程序提供相同的结果。 ICU提供的全球化API服务的重点代码页转换:将文本数据与Unicode以及几乎任何其他字符集或编码进行文本数据..

2021-02-23 11:57:53 55

转载 Ninja 构建系统

Ninja 构建系统概述Ninja 是一个构建系统,与 Make 类似。作为输入,你需要描述将源文件处理为目标文件这一过程所需的命令。 Ninja 使用这些命令保持目标处于最新状态。与其它一些构建系统不同,Ninja 的主要设计目标是速度。我在参与 Google Chrome 项目时编写了 Ninja。一开始,我将 Ninja 视作一个实验——看看能不能让 Chrome 构建的更快。为了成功地构建 Chrome,Ninja 也有其它一些设计目标:Ninja 必须易于嵌入大型构建系统。Ninja

2021-02-23 09:03:46 127

转载 C++Error2208:...尝试引用已删除的函数

在用自己编写的类实例化c++stl容器vector时,调用了vector.erase()方法,结果编译器报了以下错误错误 C2280 “(类名)::operator =(const (类名) &)”: 尝试引用已删除的函数 F:\vs2015\VC\include\xutility 2581从错误的内容看,似乎是自己的类的赋值构造函数被尝试调用却发现其已被删除。在翻阅了资料后发现,erase方法会在将对象删除后,将所有该对象之后的对象向前移动。此时会调用该对象的赋值构造函数。一般

2021-02-22 09:58:22 390

转载 C++11中“= delete;“的使用

C++11中,对于deleted函数,编译器会对其禁用,从而避免某些非法的函数调用或者类型转换,从而提高代码的安全性。对于 C++ 的类,如果程序员没有为其定义特殊成员函数,那么在需要用到某个特殊成员函数的时候,编译器会隐式的自动生成一个默认的特殊成员函数,比如默认的构造函数、析构函数、拷贝构造函数以及拷贝赋值运算符。为了能够让程序员显式的禁用某个函数,C++11标准引入了一个新特性:deleted函数。程序员只需在函数声明后加上”=delete;”,就可将该函数禁用。deleted函数特性还可

2021-02-22 09:37:20 59

转载 智能指针 unique_ptr 详解

一、智能指针1.什么是智能指针简单地说,C++智能指针是包含重载运算符的类,其行为像常规指针,但智能指针能够及时、妥善地销毁动态分配的数据,并实现了明确的对象生命周期,因此更有价值。2.常规指针存在的问题C++在内存分配、释放和管理方面向程序猿提供了全面的灵活性。但是这种灵活性是把双刃剑,一方面它使C++成为一种功能强大的语言,另一方面它让程序猿能够制造与内存相关的问题,比如内存泄漏。例如在堆声明和分配的内存,析构方法是否会自动销毁对象,又或是方法结束后需要一个个释放,方法存在很多返回的

2021-02-22 09:02:36 61

原创 depot_tools

用于Chromium开发的工具。要支持python 3,需要python 2.7或3.8。工具最重要的工具是:fetch:gclient用于签出项目的包装器。使用fetch --help更多的细节。 gclient:元签出工具。考虑repo或git子模块,除非它支持特定于操作系统的规则,例如,签出Android时不要签出Windows依赖项。使用gclient help更多的细节和README.gclient.md。 git cl:与Rietveld或Gerrit交互的代码审查工具。使用gi

2021-02-21 14:05:27 408 1

转载 Ninja - chromium核心构建工具

缘由经过上次对chromium核心代码的初步了解之后,我转头去研究了一番ninja,并对其进行了一些改造(爱折腾的,都是小NB)。今天就来简单介绍一下ninja及其使用。(BTW: 细节的内容,大家阅读ninja 的手册就好了,我这里不会关注。)ninja是一个专注于速度的小型构建系统(Ninja is a small build system with a focus on speed)。ninja是其作者为了解决chromium代码编译慢这个问题(具体一点,就是发生在将Chrome移植到非Win

2021-02-21 10:47:40 76

转载 深入浅出让你理解什么是LLVM

什么是LLVMLLVM项目是模块化、可重用的编译器以及工具链技术的集合。美国计算机协会 (ACM) 将其2012 年软件系统奖项颁给了LLVM,之前曾经获得此奖项的软件和技术包括:Java、Apache、 Mosaic、the World Wide Web、Smalltalk、UNIX、Eclipse等等创始人:Chris Lattner,亦是Swift之父趣闻:Chris Latter本来只是想写一个底层的虚拟机,这也是LLVM名字的由来,low level virtual machi

2021-02-20 18:01:15 135

转载 gcc/g++/clang/cl编译器

GCC(GNU Compiler Collection,GNU编译器套装),是一套由GNU开发的编程语言编译器。它是一套以GPL及LGPL许可证所发布的自由软件,也是GNU项目的关键部分,亦是自由的类Unix及苹果电脑Mac OS X操作系统的标准编译器。GCC(特别是其中的C语言编译器)也常被认为是跨平台编译器的事实标准。GCC原名为GNU C语言编译器(GNU C Compiler),因为它原本只能处理C语言。GCC很快地扩展,变得可处理C++。之后也变得可处理Fortran、Pascal、Obj.

2021-02-20 17:37:37 53

转载 理清gcc、libc、libstdc++的关系

当你在linux下写C/C++代码的时候,是不是会遇到许多编译链接的问题? 时不时报个glibc,gcc,g++等相关的错误? 很多时候都无从下手,而且比较混乱。 这也是编译链接过程中经常出现的问题。这篇文章不是去介绍如何编译链接,而是理清编译链接过程中碰到的一些概念和出现的问题。尤其是,libc,glib,glibc,eglibc,libc++,libstdc++,gcc,g++。从libc说起。libc是Linux下原来的标准C库,也就是当初写hello world时包含的头文件#include

2021-02-20 16:55:16 33

转载 x86/x64/x86_64/i386/ia32/ia64/amd/amd64 辨析

x64 = x86_64 = amd6464位指令集,是对IA-32的扩展,由AMD提出。可兼容32位指令集(IA-32)目前大部分64位计算机均使用这套指令集。为什么叫x86-64,因为它是X86的一部分,兼容X86的其他指令集(32-bit,16-bit)。x86-64(also known asx64,x86_64andAMD64[note 1]) is the64-bitversion of thex86instruction set.It supports v...

2021-02-20 14:03:40 49

转载 sqlite加密

两种思路将内容加密后再写入数据库这种方式使用简单,在入库/出库只需要将字段做对应的加解密操作即可,一定程度上解决了将数据赤裸裸暴露的问题。但也有很大弊端:这种方式并不是彻底的加密,还是可以通过数据库查看到表结构等信息。 对于数据库的数据,数据都是分散的,要对所有数据都进行加解密操作会严重影响性能。对数据库文件加密SQLCipher(Cipher,[ˈsaɪfə(r)],加密算法的意思)。SQLCipher是一个在SQLite基础之上进行扩展的开源数据库,它主要是在SQLite的基础之上.

2021-02-07 13:24:37 149

转载 代理服务器

代理服务器(Proxy Server)的功能是代理网络用户去取得网络信息。形象地说,它是网络信息的中转站,是个人网络和Internet服务商之间的中间代理机构,负责转发合法的网络信息,对转发进行控制和登记。代理服务器作为连接Internet与Intranet的桥梁,在实际应用中发挥着极其重要的作用,它可用于多个目的,最基本的功能是连接,此外还包括安全性、缓存、内容过滤、访问控制管理等功能。更重要的是,代理服务器是Internet链路级网关所提供的一种重要的安全功能,它的工作主要在开放系统互联(OSI)模

2021-02-07 10:53:12 890

转载 V8编程详解

这里选用了官方文档的一个非常简洁的HelloWorld.cc,代码如下:#include <v8.h> using namespace v8;int main(int argc, char* argv[]) { // Create a stack-allocated handle scope. HandleScope handle_scope; // Create a new context. Persistent<Context> context

2021-02-06 16:32:28 142

翻译 嵌入V8入门

本文档介绍了V8的一些关键概念,并提供了一个“ hello world”示例来帮助您开始使用V8代码。本文档适用于希望将V8 JavaScript引擎嵌入C ++应用程序中的C ++程序员。它可以帮助您使自己的应用程序的C ++对象和方法可用于JavaScript,并使JavaScript对象和函数可用于C ++应用程序。HelloWorld让我们看一个Hello World示例,该示例采用JavaScript语句作为字符串参数,将其作为JavaScript代码执行,然后将结果打印到标准输出中。

2021-02-05 14:06:37 60

翻译 dll搜索顺序

一个系统可以包含同一动态链接库(DLL)的多个版本。应用程序可以通过指定完整路径或使用其他机制(如清单)来控制DLL的加载位置。如果未使用这些方法,则系统将如本主题中所述在加载时搜索DLL。影响搜索的因素以下因素影响系统是否搜索DLL:如果具有相同模块名称的DLL已在内存中加载,则系统在解析到已加载的DLL之前,仅检查重定向和清单,无论它位于哪个目录中。系统都不会搜索该DLL。 如果该DLL在运行该应用程序的Windows版本的已知DLL列表中,则系统将使用其已知DLL(以及已知DLL的从属D

2021-02-05 08:30:38 44

转载 静态库和动态库冲突

ZZmsvcprt.lib(MSVCP90.dll) : error LNK2005:已经在libcpmtd.lib(xmutex.obj) 中定义如果你使用的操作系统是 Linux、Mac 或其他非 Windows 平台,你可以忽略这篇文章;如果你使用的操作系统是 Windows 平台,但没有用 Microsoft Visual Studio C++(以下简称为 MSVC)编写 C++ 程序的话,这篇文章对你的帮助可能很有限;但如果你的操作系统是 Windows,而且你使用的程序整合开发环境是 MS.

2021-02-04 14:16:16 36

转载 你所不知道的C和C++运行库

在使用VC构建项目时,经常会遇到下面的链接错误:  初学者面对这些错误常常不知所错:libcmt.lib是什么东西?msvcrtd.dll又是干吗用的?在使用VC++时我们也常常对下面的运行库配置项感到疑惑,它们到底究竟是什么意思呢?甚至一些工作了很多年的程序员也对此一知半解。今天让我们来了解一下它们。 从C和C++运行库说起  为了提高C语言的开发效率,C标准定义了一系列常用的函数,称为C库函数。C标准仅仅定义了函数原型,并没有提供实现。因此这个任务留给了各个支持C语言标准的编译...

2021-02-04 13:18:26 34

翻译 Mt.exe

Mt.exe文件是生成签名文件和目录的工具。Microsoft Windows软件开发工具包(SDK)中提供了该工具。Mt.exe要求清单中引用的文件与清单位于同一目录中。Mt.exe使用安全哈希算法(SHA-1)的CryptoAPI实现生成哈希。哈希作为十六进制字符串插入清单中的文件标记中。尽管清单中的文件可能使用其他哈希方案,但该工具当前仅生成SHA-1哈希。Mt.exe使用Makecat.exe从目录定义文件(.cdf)生成目录文件(.cat)。该工具使用清单的名称和位置填写标准模板CDF。可

2021-02-02 16:06:14 47

转载 CEF网址打不开,提示Check failed: fallback_available == base::win::GetVersion() > base::win::VERSION_WIN8

这个错误表示应用程序需要一个带有相关兼容性条目的app.manifest,这里我们需要将,我们下载的源码路径下测试路径下(tests\cefsimple)的cefsimple.exe.manifest和compatibility.manifest文件拷贝到我们的项目中,如图所示:然后项目属性-》生成事件-》后期生成事件-》命令行,输入如下命令:setlocalmt.exe -nologo -manifest "compatibility.manifest" "TestCef.exe.mani

2021-02-02 15:51:35 54

转载 TCP协议下的recv函数

recv函数函数原型:int recv( SOCKET s, char *buf, int len, int flags)功能:不论是客户还是服务器应用程序都用recv函数从TCP连接的另一端接收数据。参数一:指定接收端套接字描述符;参数二:指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据;参数三:指明buf的长度;参数四 :一般置为0。同步Socket的recv函数的执行流程:当应用程序调用recv函数时,recv先等待s的发送缓冲中的数据被协议传送完毕。如果协

2021-02-02 10:29:25 110

转载 SendMessage 用法详解及消息详解

函数功能:该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。函数原型:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);参数:hWnd:其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口

2021-02-01 13:42:19 396

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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