自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

顺其自然~专栏

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

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

转载 nginx详解

1.Nginx知识网结构图Nginx是一个高性能的HTTP和反向代理服务器,特点是占用内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好nginx专为性能优化而开发,性能是其最重要的要求,十分注重效率,有报告nginx能支持高达50000个并发连接数1.1反向代理正向代理(代理客户侧网络)正向代理:局域网中的电脑用户想要直接访问网络是不可行的,只能通过代理服务器来访问,这种代理服务就被称为正向代理。反向代理(代理服务侧网络)反向代理:客户端无法感知代理

2021-04-21 08:32:54 19

转载 electron打包:electron-packager及electron-builder两种方式实现(for Windows)

本文主要介绍如何通过electron-packager及electron-builder两种方式,将已有的electron应用打包成msi格式和exe可执行文件。打包是一个成熟的应用程序一个重要的环节,希望这篇文章可以给大家一些参考,最后会讲到打包时遇到的一些坑,与大家分享。本文适用于有一些electron实践经验的小伙伴,知道如何创建一个简单的electron应用,并且知道electron主进程、渲染进程间如何通信。electron-packager使用命令npm install elect.

2021-04-19 16:17:22 18

原创 electron asar

Asar is a simple extensive archive format, it works liketarthat concatenates all files together without compression, while having random access support.Asar是一种简单的扩展存档格式,它的工作原理是tar将所有文件连接在一起而不进行压缩,同时具有随机访问支持。特征支持随机访问 使用JSON存储文件信息 编写解析器非常容易安装Thi..

2021-04-19 16:06:12 7

转载 vue static和assets的区别

static和assets的区别,原理就在于webpack是如何处理静态资源的assets1)在vue组件中,所有模板和css都会被vue-html-loader和css-loader解析,并查找资源url。例:<img src="./logo.png" /> 或者background: url("./logo.png")  因为./logo.png是相对的资源路径,将会由webpack解析为模块依赖;2)由于logo.png不是js,当被视作模块依赖时,需要使用url...

2021-04-19 15:24:16 5

转载 lint

lint是最著名的C语言工具之一,是由贝尔实验室SteveJohnson于1979在PCC(PortableC Compiler)基础上开发的静态代码分析,一般由UNIX系统提供。工具介绍与大多数C语言编译器相比,lint可以对程序进行更加广泛的错误分析,是一种更加严密的编译工具。最初,lint这个工具用来扫描C源文件并对源程序中不可移植的代码提出警告。但是现在大多数lint实用程序已经变得更加严密,它不但可以检查出可移植性问题,而且可以检查出那些虽然可移植并且完全合乎语法但却很可能是错误的特性

2021-04-19 11:19:04 5

转载 前端模块化——彻底搞懂AMD、CMD、ESM和CommonJS

我们知道,在NodeJS之前,由于没有过于复杂的开发场景,前端是不存在模块化的,后端才有模块化。NodeJS诞生之后,它使用CommonJS的模块化规范。从此,js模块化开始快速发展。模块化的开发方式可以提供代码复用率,方便进行代码的管理。通常来说,一个文件就是一个模块,有自己的作用域,只向外暴露特定的变量和函数。目前流行的js模块化规范有CommonJS、AMD、CMD以及ES6的模块系统。下面开始一一介绍:CommonJSNodeJS是CommonJS规范的主要实践者,它有四个重要的环境变量

2021-04-16 14:22:33 8

转载 webpack介绍

本质上,webpack是一个用于现代 JavaScript 应用程序的静态模块打包工具。当 webpack 处理应用程序时,它会在内部构建一个依赖图(dependency graph),此依赖图对应映射到项目所需的每个模块,并生成一个或多个bundle。从 v4.0.0 开始,webpack 可以不用再引入一个配置文件来打包项目,然而,它仍然有着高度可配置性,可以很好满足你的需求。在开始前你需要先理解一些核心概念:入口(entry) 输出(output) loader 插件(pl...

2021-04-16 11:36:22 5

转载 HTTP协议的理解和使用

HTTP简介HTTP协议是Hyper Text Transfer Protocol(超文本传输协议(超越普通文本))的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTT

2021-04-16 10:20:47 28

转载 同源策略、跨域解决方案

一、同源策略1、先来说说什么是源源(origin,起源)就是协议、域名和端口号。如某url中的源就是:http://www.company.com:80。若地址里面的协议、域名和端口号均相同则属于同源。以下是相对于http://www.a.com/test/index.html的同源检测• http://www.a.com/dir/page.html----成功• http://www.child.a.com/test/index.html----失败,域名不同• https:...

2021-04-16 09:40:21 9

转载 使用 nlohmann 解析 json 文件

nlohmann 是德国工程师,以其名字为工程名的 nlohmann/json 项目又被成为 JSON for Modern C++。网上常见如何使用 nlohmann 生成 JSON 文件的中英文资料。但如何使用 nlohmann 解析 JSON 文件的 资料 不多,或者,不够清楚直接。其实,工程的README.md写得也算清楚。但是对于从未接触过 JSON 文件的新手来说,还是不太友好。此篇主要向未接触过 JSON 文件的新手介绍如何快速使用 nlohmann 解析 JSON 文件。工程引用..

2021-04-14 11:58:26 36

转载 Docker架构原理、功能及使用

一、简介1、了解Docker的前生LXCLXC为Linux Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpace。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。与传统虚拟化技术相比,它的优势在于:(1)与宿主机使用同一个内核,性能损耗小;(2)不需要指令级模拟;(3)不需要即时(Just-in-time)编译;(4)容器可

2021-04-12 09:12:56 23

转载 JVM概述

1.虚拟机虚拟机就是一台虚拟的计算机。通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的计算机系统。它是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为系统虚拟机(例如:VMware)和程序虚拟机(例如:java虚拟机)。无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源。 VMware 完全对物理计算机的仿真,提供了一个可运行完整操作系统的软件平台。 java虚拟机(JVM) 专门为执行某个单个...

2021-04-12 08:33:22 11

转载 Monaco Editor 使用入门

以前项目是用ace编辑器的,但是总有些不敬人意的地方。前端事件看见的VS Code编辑器Monaco Editor准备更换下,下面介绍一些使用中遇到的一点问题。代码提示1.项目引用import * as monaco from 'monaco-editor/esm/vs/editor/editor.api';项目中引用了editor.api.js,但是这个文件不包含一些默认的语言和插件,所以在使用的时候,还需要我们自己importimport 'monaco-editor/esm.

2021-04-09 09:22:26 51

转载 d.ts

一.简介经常看到d.ts,因为一个越来越广泛的应用场景是编辑器智能提示(具体见IntelliSense based on TypeScript Declaration Files):JavaScript IntelliSense can be provided for values declared in a .d.ts file (more info), and types such as interfaces and classes declared in TypeScript are ava

2021-04-09 09:06:50 21

转载 HTML 字符集

要正确显示一个 HTML 页面,浏览器必须知道要使用的字符集(字符编码)。HTML 字符集在 HTML 中,正确的字符编码是什么?HTML5 中默认的字符编码是 UTF-8。这并非总是如此。早期网络的字符编码是 ASCII 码。后来,从 HTML 2.0 到 HTML 4.01,ISO-8859-1 被认定为标准。随着 XML 和 HTML5 的出现,UTF-8 也终于到来了,解决了大量的字符编码问题。下面是关于字符编码标准的简短概述。在开始的时候:ASCII计算机信息(

2021-04-07 10:28:22 17

转载 HTML5 WebSocket

WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。现在,很多网站为了实现推送技术

2021-04-07 10:23:31 13

转载 electron-rebuild

该可执行文件将根据您的Electron项目使用的Node.js版本重建原生Node.js模块(native Node.js modules)。这使您可以在Electron应用程序中使用本机Node.js模块,而无需完全匹配您的系统版本的Node.js(通常不是这种情况,有时甚至是不可能的)。How does it work?Install the package with--save-dev:npm install --save-dev electron-rebuildThen, w.

2021-04-01 13:59:47 30

转载 better-sqlite3是Node.js中最快和最简单的SQLite3库

背景NodeJS web server 开发中总要操作数据的,对于轻量级的应用 选用 sqlite 存储是比较方便实用的。我们选用 better-sqlite3 这个库操作数据库。最方便的一点是,它是同步的。对比于原sqlite3类库更适合配合 koa2 一起使用。代码会变得更简单易读。为什么选用 better-sqlite3 而 不直接选用 sqlite3Node.js中SQLite3最快最简单的库。完整的事务支持 高性能,高效率和安全性 易于使用的同步API (比异步API更快..

2021-04-01 13:51:15 27

转载 Electron运行原理

Electron 结合了 Chromium、Node.js 和用于调用操作系统本地功能的API。ChromiumChromium是Google为发展Chrome浏览器而启动的开源项目,Chromium相当于Chrome的工程版或称实验版,新功能会率先在Chromium上实现,待验证后才会应用在Chrome上,故Chrome的功能会相对落后但较稳定。Chromium为Electron提供强大的UI能力,可以在不考虑兼容性的情况下开发界面。Node.jsNode.js是一个让JavaSc..

2021-03-31 11:13:41 28

转载 JavaScript prototype背后的工作原理

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

2021-03-30 14:29:48 18

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

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

2021-03-30 13:55:15 18

转载 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 19

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

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

2021-03-30 11:57:00 21

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

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

2021-03-30 08:18:25 21

转载 C++ vector 容器浅析

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

2021-03-30 08:10:47 25

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

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

2021-03-29 17:13:52 138

转载 log4cpp 使用完全手册

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

2021-03-29 15:11:10 21

转载 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 22

转载 C++宏定义详解

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

2021-03-29 11:15:46 25

转载 _T

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

2021-03-29 08:44:02 13

原创 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 117

转载 GetSystemMetrics

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

2021-03-26 10:50:37 16

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

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

2021-03-26 09:05:29 18

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

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

2021-03-25 08:46:39 33

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

char与wchar_t我们知道C++基本数据类型中表示字符的有两种:char、wchar_t。char叫多字节字符,一个char占一个字节,之所以叫多字节字符是因为它表示一个字时可能是一个字节也可能是多个字节。一个英文字符(如’s’)用一个char(一个字节)表示,一个中文汉字(如’中’)用3个char(三个字节)表示,看下面的例子。TestChar() { char ch1 = 's'; // 正确 cout << "ch1:" << ch1 &.

2021-03-24 09:21:54 21

转载 标准代码页(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 21

转载 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 19

转载 块级元素和行内元素

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

2021-03-23 13:48:40 7

转载 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 13

转载 js frame 框架编程与frameElement

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

2021-03-23 09:43:40 14

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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