自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

顺其自然~专栏

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

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

转载 Electron运行原理

Electron 结合了 Chromium、Node.js 和用于调用操作系统本地功能的API。

2021-03-31 11:13:41 2197

转载 JavaScript prototype背后的工作原理

“prototype”字面翻译是“原型”,是javascript实现继承的主要手段。粗略来说就是:prototype是javascript中的函数(function)的一个保留属性,并且它的值是一个对象(我们可以称这个对象为"prototype对象")。通过以此函数作为构造函数构造出来的对象都自动的拥有构造函数的prototype对象的成员属性和方法。其中的要点是:prototype是函数(function)的一个必备属性(书面一点的说法是"保留属性")(只要是function,就一定有一个pr

2021-03-30 14:29:48 300

转载 【深入浅出jQuery】源码浅析--整体架构

最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美。其结构明晰,高内聚、低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷、渐进增强)优雅的处理能力以及 Ajax 等方面周到而强大的定制功能无不令人惊叹。另外,阅读源码让我接触到了大量底层的知识。对原生JS 、框架设计、代码优化有了全新的认识,接下来将会写一系列关于 jQuery 解析的文章。我在 github 上关于 jQuery 源码的全文注解,感兴趣的可以围观一下。jQ

2021-03-30 13:55:15 331

转载 JQuery中$.each 和$(selector).each()的区别详解

1、$(selector).each()jQuery 遍历 - each() 方法主要用于DOM遍历,each() 方法规定为每个匹配元素规定运行的函数。语法:$(selector).each(function(index,element))W3School上显示回调函数是必须的,index - 选择器的 index 位置,element - 当前的元素(也可使用 "this" 选择器).$().each,对于这个方法,在dom处理上面用的较多。如果页面有多个input标签类型为che

2021-03-30 12:01:13 517

转载 MFC——单文档、多文档和对话框程序的区别

单文档就是一个窗口只能处理一个文档,多文档就是同时可以处理多个,共享工具栏,菜单栏什么的,对话框就是一个提示用户进行选择或者确认的窗体。对话框模板适合于做交互界面,单文档模板适合于做文件处理,多文档模板适合于做多文件处理。不过,还是没法明确这个问题。(1)基于对话框(3个类):1. CAboutDlg2. 程序名App3. 程序名DlgCAboutDlg(“关于”对话框)      CAboutDlg()      DoDataExchange(CD...

2021-03-30 11:57:00 2666

转载 C++中vector、array数组的使用方法

1、C++中内置数组简单方便 数组大小固定,速度较快通用格式是:数据类型 数组名[ 数组大小 ];2、vector 是STL中的容器类包含多种通用算法 长度可变,使用灵活,但效率稍低vector是使用 new 和 delete 来管理内存的(堆中分配内存)3、array 数组模板 ,在C++11中才支持通用格式:array<类型名, 元素个数> 数组名;注意,因为长度固定,这里的元素个数不能是变量。长度固定,提供了更好、更安全的接口,执行效率和内..

2021-03-30 08:18:25 1274

转载 C++ vector 容器浅析

一、什么是vector向量(Vector)(有方向的变量)是一个封装了动态大小数组的顺序容器(Sequence container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。二、容器特性1.顺序序列顺序容器中的元素按照严格的线性顺序排序。可以通过元素在序列中的位置访问对应的元素。2.动态数组支持对序列中的任意元素进行快速直接访问,甚至可以通过指针算述进行该操作。操供了在序列末尾相对快速地添加/删除元素的操作。

2021-03-30 08:10:47 557

转载 json解析数组 nlohmann_nlohmann/json 的主要用法

前言nlohmann/json是一个用于解析json的开源c++库,口碑一流,号称有业界最好的性能,并且使用非常方便直观,是很多c++程序员的首选。开源官网处有详细说明用法,但篇幅过长,不便于迅速阅读抓重点。而且,所举例的某些用法实践上其实比较少用到,而某些实践上常用到的一些用法,官网却缺例子。所以自己简要总结了一下它的主要用法,并加上自己写的示例,希望能给到新接触该库的朋友一些帮助。准备工作:引用头文件:#include "nlohmann/json.hpp"using json =

2021-03-29 17:13:52 16092 1

转载 log4cpp 使用完全手册

一、log4cpp概述Log4cpp是一个开源的C++类库,它提供了C++程序中使用日志和跟踪调试的功能,它的优点如下:提供应用程序运行上下文,方便跟踪调试;可扩展的、多种方式记录日志,包括命令行、文件、回卷文件、内存、syslog服务器、Win事件日志等;可以动态控制日志记录级别,在效率和功能中进行调整;所有配置可以通过配置文件进行动态调整;多语言支持,包括Java(log4j),C++(log4cpp、log4cplus),C(log4c),python(log4p)等;二、原理L

2021-03-29 15:11:10 2406 2

转载 http与https

一、前言:先来观察这两张图,第一张访问域名http://www.12306.cn,谷歌浏览器提示不安全链接,第二张是https://kyfw.12306.cn/otn/regist/init,浏览器显示安全,为什么会这样子呢?2017年1月发布的Chrome 56浏览器开始把收集密码或信用卡数据的HTTP页面标记为“不安全”,若用户使用2017年10月推出的Chrome 62,带有输入数据的HTTP页面和所有以无痕模式浏览的HTTP页面都会被标记为“不安全”,此外,苹果公司强制所有iOS App在20

2021-03-29 14:03:45 407

转载 C++宏定义详解

宏定义作用:把一个标识符(宏名)定义为字符串(替换文本),便于程序修改,同时使函数模块化,提高运行效率。形式:简单宏定义,带参数宏定义c语言源程序处理过程:预处理、编译、汇编和连接其中预处理过程包括宏展开,所以宏定义先宏展开后编译;一、#define的基本用法#define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率。1 #define命令剖析1.1 #define的概念#define命令是C语言中的一个宏定..

2021-03-29 11:15:46 1354

转载 _T

_T("Hello")是一个宏,他的作用是让你的程序支持Unicode编码,因为Windows使用两种字符集ANSI和UNICODE,前者就是通常使用的单字节方式,但这种方式处理象中文这样的双字节字符不方便,容易出现半个汉字的情况。而后者是双字节方式,方便处理双字节字符。Windows NT的所有与字符有关的函数都提供两种方式的版本,而Windows 9x只支持ANSI方式。如果你编译一个程序为ANSI方式,_T实际不起任何作用。而如果编译一个程序为UNICODE方式,则编译器会把"Hello"字符串

2021-03-29 08:44:02 141

原创 Windows10下Charles抓包教程

抓包步骤:从下载安装、**、汉化、客户端证书安装、把下载的证书导入到浏览器里(注意:安装包,**包,汉化包,三个版本必须一致,否则Charles不能用。先安装,再**,然后使用管理员进行汉化,最后才能打开Charles)1、下载安装2、打开:https://www.zzzmode.com/mytools/charles/,选择版本后生成**包,点击下载3、替换本地文件 charles.jar文件4、安装好以后打开,配置Charles证书;选择help——SSL Proxying——install

2021-03-28 21:38:41 6972 2

转载 GetSystemMetrics

GetSystemMetrics是一个计算机函数,该函数只有一个参数,称之为「索引」,这个索引有75个标识符,通过设置不同的标识符就可以获取系统分辨率、窗体显示区域的宽度和高度、滚动条的宽度和高度。(Metrics:量度; 指标)语法int WINAPI GetSystemMetrics( __in intnIndex);下面是GetSystemMetrics函数参数nIndex的定义:SM_ARRANGE 标志用于说明系统如何安排最小化窗口。详细请参看下方备注.:根据显示器显示的

2021-03-26 10:50:37 434

转载 如何通俗地解释程序设计中的『side effects』?

Side effect就是“副作用”(侧面影响),通常是对于一个函数而言的,说一个函数“有副作用”或者“没有副作用”。如果一个函数修改了自己范围之外的资源,那就叫做有副作用,反之,就是没有副作用。用一个更具体的方式来说,假设某个函数在某种参数组合下返回一个结果N,我们现在就写死这个函数直接return N,如果这个修改完之后,整个程序一切如初,那就说明这个函数没有副作用,反之,就是有副作用。很明显,有副作用的函数会做(不限于)这些事情:修改全局变量 修改输入参数所引用的对象 做输入输出操

2021-03-26 09:05:29 629

转载 Windows下C++实现进程间同步

多线程同步在平常的使用中很常见,可以通过临界区,互斥量,事件等来实现,具体的选择依赖于不同的使用场景。但是进程同步使用的比较少,网上查找资料,也多是以多线程使用来讲解的,并不详细。刚好自己正在做一个升级程序,主程序是一个进程,升级程序是一个进程,我把所有的与升级服务端的交互全部放在了升级程序中,所以当升级程序从服务端获取版本号与本地进行比较时,主程序需要进入等待阶段。当版本号比较完后,再触发升级程序或主程序的下一步操作。此文仅以记录我在完成这个升级过程中踩过的坑。一,方法介绍大家都知道,内核对象资源

2021-03-25 08:46:39 1193

转载 多字节字符与宽字节字符

char叫,之所以叫多字节字符是因为它表示一个字时可能是一个字节也可能是多个字节。一个英文字符(如’s’)用一个char(一个字节)表示,一个中文汉字(如’中’)用3个char(三个字节)表示,看下面的例子。结果如下:ch1:sch2:str:中wchar_t被称为。之所以叫宽字符是因为所有的字都要用两个字节(即一个wchar_t)来表示,不管是英文还是中文。

2021-03-24 09:21:54 3971 1

转载 标准代码页(codepage)列表

代码页列表,留作备忘代码页 简称 全称 37 IBM037 IBM EBCDIC (US-Canada) 437 IBM437 OEM United States 500 IBM500 IBM EBCDIC (International) 708 ASMO-708 Arabic (ASMO 708) 720 DOS-720 Arabic (DOS) 737 ibm737 Greek (DOS)

2021-03-24 08:44:47 792

转载 js中offsetParent详解

1. offsetParent(返回元素的偏移容器)定义offsetParent就是距离该子元素最近的进行过定位的父元素(position:absolute、relative、fixed),如果其父元素中不存在定位则offsetParent为:body元素。2. 根据定义分别存在以下几种情况【1】元素自身有fixed定位,父元素不存在定位,则offsetParent的结果为null(firefox中为:body,其他浏览器返回为null)【2】元素自身无fixed定位,且父元素也不存在定位,

2021-03-23 14:05:44 742

转载 块级元素和行内元素

块级元素每个块级元素(block-level element)通常都会独占一行或者是多行,可以对其单独设置高度,宽度以及对齐等属性。常见的块级元素有:<h1>~<h6>,<p>,<div>,<ul>,<ol>,<li>,<hr>等块级元素的特点:块级元素会独占一行,所以块级元素会新起一行。 高度,行高,外边距和内边距都可以单独设置。 宽度默认是容器的100%。 可以容纳内联元素和其

2021-03-23 13:48:40 257

转载 DOM position 属性

定义和用法position 属性把元素放置到一个静态的、相对的、绝对的、或固定的位置中。语法:Object.style.position=static|relative|absolute|fixed可能的值值 描述 static 默认。位置设置为 static 的元素,它始终会处于页面流给予的位置(static 元素会忽略任何 top、bottom、left 或 right 声明)。 relative 位置被设置为 relative 的元素,可将其移至相对于其

2021-03-23 13:15:04 379

转载 js frame 框架编程与frameElement

1 框架编程概述一个Html 页面可以有一个或多个子框架,这些子框架以<iframe>来标记,用来显示一个独立的Html 页面。这里所讲的框架编程包括框架的自我控制以及框架之间的互相访问,例如从一个框架中引用另一个框架中的JavaScript变量、调用其他框架内的函数、控制另一个框架中表单的行为等。2 框架间的互相引用一个页面中的所有框架以集合的形式作为window 对象的属性提供,例如:window.frames 就表示该页面内所有框架的集合,这和表单对象、链接对象、图片对...

2021-03-23 09:43:40 729

转载 JS中offsetTop、clientTop、scrollTop、offsetTop各位置属性详解(含示例图)

这里是javascript中制作滚动代码的常用属性网页可见区域宽: document.body.clientWidth;网页可见区域高: document.body.clientHeight;网页可见区域宽: document.body.offsetWidth (包括边线的宽);(offset:偏移)网页可见区域高: document.body.offsetHeight (包括边线的宽);网页正文全文宽: document.body.scrollWidth;网页正文全文高: documen..

2021-03-23 09:14:26 507

转载 MFC获取窗口句柄号的六种方法

CClientDC dc(this);CString fun1;//直接获得fun1.Format("%ld", AfxGetMainWnd()->m_hWnd);fun1 = "AfxGetMainWnd()->m_hWnd方法获取句柄号 = " + fun1;dc.TextOut(20, 50, fun1);//通过AfxGetApp()间接获得fun1.Format("%ld", AfxGetApp()->GetMainWnd()->m_hWnd);fun1 .

2021-03-23 08:30:09 3211

转载 android平台原理机制

引言看着手中的MI5,发亮的屏幕上显示各种应用,点击酷狗音乐,hello 酷狗!,伴随着熟悉的问候语,开启了音乐之旅。对于从事android开发的我们来说:app应用程序———>android系统—————>手机硬件;android的学习之路都是从android的体系架构开始,纪念那张永不被遗忘的体系图: Android系统本身是一套软件堆栈(或称为软件层叠架构),它包含三部分:操作系统、中间件、应用程序。我们通过AndroidSDK所提供的工具和API来开发各种应用。 .

2021-03-23 08:16:51 1033

原创 visual studio 2019命令

命令 解释 ASSOC 显示或修改文件扩展名关联。 ATTRIB 显示或更改文件属性。 BREAK 设置或清除扩展式 CTRL+C 检查。 BCDEDIT 设置启动数据库中的属性以控制启动加载。 CACLS 显示或修改文件的访问控制列表(ACL)。 CALL 从另一个批处理程序调用这一个。 CD 显示当前目录的名称或将其更改。 CHCP 显示或设置活动代码页数。 CHDIR 显示当前目录的名称或将其更改。 C

2021-03-18 11:05:56 1570

转载 OpenJDK和Oracle JDK有什么区别和联系?

《Linux 7安装Oracle 11g打怪经历》的安装过程中,启动图形界面,需要指定jre路径,当时使用yum install jdk安装的,并不能解决问题,查看版本才知道他是OpenJDK,最终使用Oracle JDK,才解决的问题,那OpenJDK和Oracle JDK究竟有什么区别?OpenJDKJava最早由SUN公司(Sun Microsystems,发起于美国斯坦福大学,SUN是Stanford University Network的缩写)发明,2006年SUN公司将Java开源,此时

2021-03-18 08:39:39 2081 3

转载 C++ Assert()断言机制原理以及使用

MSDN原文如是说:Evaluates an expression and, when the result is false, prints a diagnostic message and aborts the program.(判断一个表达式,如果结果为假,输出诊断消息并中止程序。)void assert( int expression);参数:Expression (including pointers) that evaluates to nonzero or 0.(...

2021-03-18 08:19:32 1148

转载 C++命名空间详解

使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突。在C++中,变量、函数和类都是大量存在的。如果没有命名空间,这些变量、函数、类的名称将都存在于全局命名空间中,会导致很多冲突。比如,如果我们在自己的程序中定义了一个函数toupper(),这将重写标准库中的toupper()函 数,这是因为这两个函数都是位于全局命名空间中的。命名冲突还会发生在一个程序中使用两个或者更多的第三方库的情况中。此时,很有可能,其中一个库中的名称和另外一个库中的名称是相同的,这样就冲突了。这种情况会经常发...

2021-03-16 08:24:44 2292

转载 C++全局变量的声明和定义

(1)编译单元(模块)在VC或VS上编写完代码,点击编译按钮准备生成exe文件时,编译器做了两步工作:第一步,将每个.cpp(.c)和相应的.h文件编译成obj文件; 第二步,将工程中所有的obj文件进行LINK,生成最终.exe文件。那么,错误可能在两个地方产生:一个,编译时的错误,这个主要是语法错误; 一个,链接时的错误,主要是重复定义变量等。编译单元指在编译阶段生成的每个obj文件。一个obj文件就是一个编译单元。一个.cpp(.c)和它相应的.h文件共同组成了一个编译单元。一个工

2021-03-15 17:02:34 4589

转载 extern关键字用法详解

extern关键字会提升变量或者函数的逼格,使得它们可以跨文件被访问。话虽然是这么说,使用这个关键字必须要注意一些东西。首先,你得在cpp文件里面实现这些全局变量和全局函数,这是最基本的,然后只需要在需要用到这些变量和函数的文件里声明一下,用extern修饰声明,这样弄完之后就可以随意使用这些全局变量和全局函数了。请不要为编译器担心,担心它们找不到这些东西,只要你实现了,不怕编译器找不到。在别的文件里写一堆的extern声明显得特别不专业,也显得代码十分臃肿,有没有好的做法呢?有的。我们一般把所

2021-03-15 14:40:59 6958

转载 C++匿名命名空间

当定义一个命名空间时,可以忽略这个命名空间的名称:namespce { char c;int i;double d;}编译器在内部会为这个命名空间生成一个唯一的名字,而且还会为这个匿名的命名空间生成一条using指令。所以上面的代码在效果上等同于:namespace __UNIQUE_NAME_ { char c; int i;double d;}using namespace __UNIQUE_NAME_;在匿...

2021-03-15 10:05:49 2768

转载 C++ thread用法总结(整理)

1,简介C++11中加入了<thread>头文件,此头文件主要声明了std::thread线程类。C++11的标准类std::thread对线程进行了封装,定义了C++11标准中的一些表示线程的类、用于互斥访问的类与方法等。应用C++11中的std::thread便于多线程程序的移值。std::thread类成员函数:(1)、get_id:获取线程ID,返回一个类型为std::thread::id的对象。(2)、joinable:检查线程是否可被join。检查当前的线程对象是否表

2021-03-15 09:00:11 30979 2

原创 C++ 异常处理

异常是程序在执行期间产生的问题。C++ 异常是指在程序运行时发生的特殊情况,比如尝试除以零的操作。异常提供了一种转移程序控制权的方式。C++ 异常处理涉及到三个关键字:try、catch、throw。throw:当问题出现时,程序会抛出一个异常。这是通过使用throw关键字来完成的。 catch:在您想要处理问题的地方,通过异常处理程序捕获异常。catch关键字用于捕获异常。 try:try块中的代码标识将被激活的特定异常。它后面通常跟着一个或多个 catch 块。如果有一个块抛...

2021-03-11 10:55:47 637 1

转载 WPS 加载项开发

WPS 加载项概述 WPS 加载项(Add-ins)是一套基于 Web 技术用来扩展 WPS 应用程序的解决方案。每个 WPS 加载项都对应打开了一个网页,并通过调用网页中 JavaScript 方法来完成其功能逻辑。 WPS 加载项打开的网页可以直接与 WPS 应用程序进行交互,同时一个 WPS 加载项中的多个网页形成了一个整体, 相互之间可以进行数据共享。 开发者不必关注浏览器兼容的问题,因为 WPS 加载项的底层是以 Chromium 开源浏览器项目为基础进行的优化扩展。 WP...

2021-03-11 09:19:17 14484 6

转载 CPU的工作过程

CPU的工作过程CPU的基本工作是执行存储的指令序列,即程序。程序的执行过程实际上是不断地取出指令、分析指令、执行指令的过程。CPU从存放程序的主存储器里取出一条指令,译码并执行这条指令,保存执行结果,紧接着又去取指令,译码,执行指令……,如此周而复始,反复循环,使得计算机能够自动地工作。除非遇到停机指令,否则这个循环将一直进行下去。其过程如图3-3所示图3-3 程序的执行过程3.2.1 指令的执行过程几乎所有的冯•诺伊曼型计算机的CPU,其工作都可以分为5个阶段:取指令、指令译码、

2021-03-10 09:13:47 9604 1

转载 c++简介

C++(c plus plus)是一种计算机高级程序设计语言由C语言扩展升级而产生最早于1979年由本贾尼·斯特劳斯特卢普在AT&T贝尔工作室研发。C++既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计。C++几乎可以创建任何类型的程序:游戏、设备驱动程序、HPC、云、桌面、嵌入式和移动应用等。甚至用于其他编程语言的库和编译器也使用C++编写。

2021-03-10 09:01:23 529

转载 PE文件详解

PE文件详解(教程1-7)=========================================PE教程1: PE文件格式一览PE 的意思就是 Portable Executable(可移植的执行体)。它是 Win32环境自身所带的执行体文件格式。它的一些特性继承自 Unix的 Coff (common object file format)文件格式。"portable executable"(可移植的执行体)意味着此文件格式是跨win32平台的 : 即使Windows运行在非Int

2021-03-10 08:25:49 1454

原创 迭代器

迭代器(iterator)有时又称光标(cursor)是程序设计的软件设计模式,可在容器对象(container,例如链表或数组)上遍访的接口,设计人员无需关心容器对象的内存分配的实现细节。各种语言实现迭代器的方式皆不尽同,有些面向对象语言像Java,C#,Ruby,Python,Delphi都已将迭代器的特性内置语言当中,完美的跟语言集成,我们称之隐式迭代器(implicit iterator),但像是C++语言本身就没有迭代器的特色,但STL仍利用模板实现了功能强大的迭代器。STL容器的数据的内存地

2021-03-09 08:30:23 150

转载 究竟什么是迭代?

最近几年有一个词,频繁的出现,很多人都把它挂在嘴边,甚至它变的很时髦,这个词叫——迭代迭代,这个词我以前是没听过(学编程的童鞋可能很早就知道它),现在回想一下,我觉得这个词应该是在智能手机出现后,才被吃瓜群众广泛传播和应用的。有一个词和“迭代”意思比较接近,叫“升级”,这个词我就很熟悉,也非常好理解。比如,Windows每年都会升级一次,从95到XP再到现在的win7;应用软件每年都会出一个新版本,比如PS5.0到PScs,这是升级。相反,刚听到“迭代”这个词的时候,我大致好像能理解它的意思

2021-03-09 08:11:09 5207 4

空空如也

空空如也

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

TA关注的人

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