自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lengye7的博客

主要是拿来记笔记用的,有错误欢迎指出。

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

转载 转:五大常用算法——分治法,动态规划,回溯法,分支界限法,贪心算法

分治算法一、基本概念   在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)……    任何一个可以用计算机求解的问题所需的计算...

2018-08-13 13:42:28 386

原创 gcc或clang更改函数入口点

gcc和clang编译器都是支持的自定义入口点的,用户可以通过-e选项来指定自定义的入口点。或就可以编译成功:但是,如果执行test程序,就会出现段错误,这是因为我们没有初始化标准输入输出,而printf函数需要使用标准输入和输出,因为访问了不存在的资源,所以就导致了段错误。根据参考一中的内容可知,gcc默认的入口点_start函数在调用main函数之前,会先做一系列的初始化工作,以确保main函数所需的资源准备好。

2023-05-02 01:32:55 674 1

原创 linux kernel版本号含义

linux kernel的版本号一直是w.y.x的形式,其中w代表内核版本号,y代表major revision号,x代表patch revision号。如果linux kernel有新的功能发布,那么就会添加增加y计数。如果有需要修复的bug补丁发布,就会添加x计数。这个策略直到现在都是适用的,但是需要注意,在2.6以前和3.0之后,x代表的意思有所区别。一直是odd-even模式,odd(奇数)

2023-03-10 23:48:46 2486

原创 vscode的远程开发与调试——以C/C++为例

再比如,当用户的本地环境是windows,但是程序的运行环境却是linux,用户虽然可以通过gdb在linux上调试,但是调试体验却较差,此时,vscode远程调试可以给用户一个良好的调试体验。这意味着,用户可以在本地开启vscode编辑代码,但是代码本身存在远程服务器上,同时在本地debug,但是却使用远程服务器编译,并启动被调试程序。引入了remote development特性。该离线安装方案,已经手动验证过了,考虑到vscode的版本可能较多,就没有脚本化了,等需要用到的时候,再去手动下载安装。

2023-03-09 00:51:51 7932 2

原创 git status输出的文件路径的中文乱码问题

根据上面的文档得知,git对超过0x80的字符都会以八进制输出,由于中文以UTF-8保存,所以上面的文件路径输出了一堆的八进制转义代码,这对用户极其不友好。该选项会以NUL为一行的几位,但是终端不能识别NUL结尾,所以终端不会自动换行。所有的输出全在一行,对用户也不好友。那么最终的解决办法:关闭这个特性。

2023-02-24 21:40:24 584

原创 电子电路中的各种接地(接地保护与GND)

多年以前,雷雨天气下,建筑会遭遇雷击,从而破坏建筑以及伤害建筑内的人,为了避免雷击的伤害,人们发明了避雷针,并将避雷针接地线,从而引导雷击产生的电流经过地线流入到地下。地线:通过导线将物体与大地相连,目前新建的建筑都会埋有地线。后来,随着电器的发展,一些金属外壳的电器很容易使人触电,为了防止人触电,于是人们将外壳与地线相连,引导电器内部漏电的电流通过地线流入到地下。这种防雷和防触电的接地端被称为保护地。

2023-02-06 22:04:30 5952 1

转载 PCB接地端怎么处理?PCB接地系统详细简介,14种PCB接地方案总结

重要的是要注意,不应在两个接地层之间的间隙上布线任何走线,因为这会产生很长的电流返回路径,极易受到 EMI 的影响。一个典型的例子是,当两个模块通过一根长电缆连接时,电缆中的返回电流导致一个模块的接地电压明显高于另一个模块的接地电压。但在某些情况下,电路中的信号使用不同的隔离接地来返回信号电流,这导致为信号定义单独的接地,信号地可以在敏感设备和测量仪器中找到。因此,接地端子和导体中的电压是不确定的,无意浮动接地被认为是系统故障(接地系统中的潜在断路),但也有有意使用浮动接地的应用。

2023-02-06 20:52:05 2859

原创 开源软件许可证(一):开源软件概述及其法律权限

开源软件(open source):开放源代码的软件,即用户可以获取到该软件的源代码。商业软件:商业软件一般都不会开放源代码。该类软件通常具有以下特点:用户可以获取源代码,自由修改并重新分发。开源软件通常包含了源代码,文档以及目标代码。开源软件并不意味着免费,也不意味着可以进行商业行为,具体如何往往与开源软件的许可证相关。

2023-01-30 19:32:19 2065

转载 公司使用 Qt 到底要不要付费?|博文精选

目前 Qt 拥有百万级的开发者,经过不断的迭代,软件质量稳定性都非常优秀,同时也不乏重量级的行业基础软件,比如 Maya, SubstancePainter, 视频剪辑软件达芬奇等,都基于 Qt 开发。如果你拿 Qt 开发商业软件,一年赚几百万,几千万,尤其是使用了手机,嵌入式版的 Qt,还是建议使用付费版,三年五万块人民币左右,支持下 Qt,开源软件的发展,有你的支持,会变得更好,自己公司也用得安心。Qt 能获得如此的成功,得益于 LGPL 协议,都知道 GPL 是非常严格,不能开发闭源商业软件的。

2023-01-28 10:43:14 1708

转载 不同平台的C/C++标准库

程序员们在特定的操作系统上(MAC、Windows、Linux等),利用特定的IDE(Xcode、Clion、Visual Studio等)或者文本编辑器(VSCode、Sublime等)完成C/C++源代码的编写,然后利用特定的编译器对源代码进行编译,链接对应的标准库,生成可执行程序,完成特定的软件功能。标准库新增的功能,标准库一般是我们学习编程的起点,无论是std::cout()或者printf()函数都是标准库中的函数,标准库为我们提供了丰富的操作系统底层系统软、硬件系统相关的函数接口。

2023-01-26 20:35:15 838

转载 DeepMind的人工智能 AlphaTensor 找到了更快的矩阵乘法算法

但数学家 Volker Strassen在 1969 年证明,2个2阶矩阵相乘(每个矩阵有4个元素),不一定需要执行8次乘法,可通过巧妙的技术,把乘法运算减少到 7 次。Deepmind 的 Hussein Fawzi 表示,结果在数学上是合理的,但对人类来说远非直观。AI经过探索,自行发现了一种算法,只需执行47次乘法运算,就可以算出2个4阶的乘积,这优于Strassen的49次乘法运算。几个世纪以来,人们认为最有效的矩阵乘法算法的用时与矩阵的元素数量成正比,这意味着对于越来越大的矩阵,用时越来越长。

2022-12-02 13:56:10 397

原创 vmware安装打印机(win10)

略。

2022-11-26 01:05:22 3741

转载 ARM 之五 发展史及各时期内核(ARM1 ~ ARM11 / Cortex)介绍

很久很久以前1978年12月5日,物理学家赫尔曼·豪泽(Hermann Hauser)和工程师 Chris Curry,在英国剑桥创办了CPU公司(Cambridge Processing Unit),主要业务是为当地市场供应电子设备。1979年,CPU公司改名为Acorn计算机公司。据说,还有一名创始人叫 Andy Hopper。Andy Hopper是Acorn的研究主管,但为了顾及自己在剑桥大学的本职工作,他刻意保持低调,而将代表公开露面的机会留给了另外两位创始人。

2022-11-21 23:30:26 2586

转载 从七种封装类型,看芯片封装发展史

从七种封装类型,看芯片封装发展史用一句话介绍封装,那肯定是:封装是沟通芯片内部世界与外部电路的桥梁。试想一下,如果芯片没有封装,我们该怎么用?芯片会变得无比脆弱,可能连最基础的电路功能都实现不了。所以芯片封装无疑是十分重要的。今天必考课堂就给大家介绍我们最常用的封装类型,同时也代表着封装的发展进程.随之集成电路的发展,封装的类型有几十种之多,并不是每一种我们都会用到,从结构方面可以看出封装的发展:TO→DIP→SOP→QFP→PLCC→BGA →CSP。

2022-11-21 22:02:39 1351

转载 史上最全的芯片封装介绍

从结构方面,封装经历了最早期的晶体管TO(如TO-89、TO92)封装发展到了双列直插封装,随后由PHILIP公司开发出了SOP小外型封装,以后逐渐派生出SOJ(J型引脚小外形封装)、TSOP(薄小外形封装)、VSOP(甚小外形封装)、 SSOP(缩小型SOP)、TSSOP(薄的缩小型SOP)及SOT(小外形晶体管)、SOIC(小外形集成电路)等。表面贴装型封装之一。从市场的角度而言,QFN封装越来越多地受到用户的关注,考虑到成本、体积各方面的因素,QFN封装将会是未来几年的一个增长点,发展前景极为乐观。

2022-11-21 19:32:36 10473

原创 raid(磁盘阵列)

略。

2022-11-15 21:58:52 1326

原创 http的缓存的age的计算

HTTP1.1规定,当一个Response从缓存中获得的时候,必须添加一个Age字段。这个字段的值表示从Origin Server产生该reponse或者该response validated开始,一直到现在所经过的时间的估计值(实际上,它表示的就是缓存的年龄。)。这是一个估计值,意味着不准确,这是非常重要的,后面的Age的算法也更加充分说明了,Age的确是一个不准备的值。Age通常与Max-Age一起使用,来确定一个response的缓存是否失效。Age在本质上等于reponse在路径上所有缓存serve

2022-06-01 19:01:21 1454 1

原创 nginx的location

前言Nginx的location就相当于url路由,Nginx根据location的配置来决定究竟如何处理一个请求。Nginx通过将一个请求的url与location进行对比,来决定将该请求扔到哪个location对应的处理策略中。一、location的匹配规则文档:Module ngx_http_core_module上面是文档,我将location的简单的总结为以下几点:概念:Nginx的location分为两类:一类是prefix string;另一类是regular

2022-05-07 21:08:58 2520

原创 Javascript的字符串String的编码之unicode的处理

首先确定的是Ecmascript使用的是一种UTF-16的编码,但是这种编码却不是标准的UTF-16编码的处理方式。前言unicode 2.0引入了utf-16编码,unicode3.0更精确的定义UTF-16编码。参考:https://iamzero.blog.csdn.net/article/details/1131233841999年ES3.0发布,该版本的Ecmascript直接规定了String类型的编码使用UTF-16,但是对String依然按照单个code unit

2022-05-04 02:59:30 3087

原创 Javascript的Json序列化与反序列化深入研究笔记

前言从ES5.0开始引入原生的Json对象,Json对象有两个函数可以使用:JSON.stringify():用于将一个ECMA的数据类型的值序列化为一个Json TEXT。JSON.parse():用于将一个Json TEXT反序列化为ECMA的数据类型的值。Json TEXT归根到底是一个字符串。 -------参考Json数据格式_lengye7的博客-CSDN博客序列化Javascript中,value主要分为两类:第一类是primitiv...

2022-05-02 17:20:27 1698

原创 Json数据格式

前言Json(Javascript Object Notation)从Javascript派生而来,它是一种语言无关的数据格式,Json数据格式的文件以.json结尾。Json数据格式由Douglas Crockford在2000年左右提出的。RFC4627是描述了Json数据格式的第一份informational状态的RFC文档。2013年,ECMA-404标准化了Json;2017年,RFC8259正式成为Standard状态的RFC文档,标志着Json数据格式正式成为一种标准。另外,ECM

2022-04-29 14:41:09 25630

原创 python子类实例化的时候父类的__new__会被调用吗?

测试代码:class A: def __new__(cls): print("testA")class B(A): def __new__(cls): print("testB")class C(B): passD=C()测试结果:testB这说明子类实例化的时候,会调用父类的__new__方法,但是不会调用祖先的__new__方法。class A: def __new__(cls): pr

2022-04-27 17:12:18 1350 1

原创 python导入系统

参考 python3.6.15的导入机制文档前言python的导入系统一直在变化,所以具体版本的导入系统,应该去查看文档。本文并不是文档,本文的目的是为了探究python的模块导入过程。概念module object:这是python关于模块的唯一的一个数据模型对象,所有的模块都是该对象,不管该模块是一个模块还是一个包。模块:可以简单的理解为文件系统中的一个.py文件。包:可以简单的理解为文件系统中的目录,该目录带有一个__init__.py文件。regular packa

2022-04-26 01:09:09 535

原创 python的词法结构(行、注释、文件编码、标识符、关键字和字面值)

python3.6版本1、行结构1.1 物理行python的物理行以一个行终止符为界限。在源文件中或者字符串中,支持使用任何标准平台上的行终止序列——Unix的LF(换行)或者Windows下的CRLF(回车加换行)或者一些老的机器上的CR(回车)。如果在C中通过python的API来调用python,那么传给python API的source code字符串必须使用明确的\n来表示一行的结束。1.2 逻辑行python的逻辑行按照概念上来说,逻辑行以NEWLINE表示的。除了c

2022-04-23 21:11:17 1180

原创 Mysql的字符集编码选择

mysql版本:5.7.37所有内容都来自于mysql5.7文档,这里只是做个笔记,方便以后自己查看。mysql中的基础概念:character set:字符集编码。collations:与字符集编码对应的一套规则,这套规则规定了字符如何比较算法,从而解决如何排序的问题,例如大小写敏感比较,按照字符的二进制编码比较等。collation的名字组成及含义: ...

2022-04-12 22:03:52 6557

原创 Promise这一篇就够了

参考:V8 Promise源码全面解读 - 掘金备份:V8 Promise源码全面解读_lengye7的博客-CSDN博客上面这篇文章中的几个错误:1、resolve不是对应于规范的FulfillPromise而是对应于Promise Resolve Functions。2、reject不是对应于规范的RejectPromise而是对应于Promise Reject Functions。上面这篇文章之中提到的TriggerPromiseReactions ( reactions, a

2022-04-07 23:53:17 1618

转载 Creating a JavaScript promise from scratch, Part 7: Unhandled rejection tracking

Rejected promises without rejection handlers can hide important errors, which is why both Node.js and browsers have a way of tracking them.When promises were introduced in ECMAScript 2015, they had an interesting flaw: if a promise didn’t have a rejectio

2022-04-04 20:17:31 291

原创 python判断一个对象是否是函数

函数对象都具备一个attr,即__call__,所以通过判断一个对象是否具备__call__即可判断其是否是一个函数。hanattr(obj,"__call__")

2022-04-02 21:52:08 1400

原创 利用python的dict实现一个switch

python的分支结构没有switch,所以在需要写多分支跳转的时候,就会出现一大堆的if...elif...else等语句,这种结构很难维护。下面介绍一种使用dict实现一种无if...elif...else的分支跳转:例子:def add(a,b): return a+bdef sub(a,b): return a-bdef mul(a,b): return a*bdef div(a,b): return a/bfun_dict={

2022-04-02 21:46:55 789

转载 V8 Promise源码全面解读

在前面的话阅读本文你将收获什么?了解 V8 Promise 源码全过程,世界上不再有能困住你的 Promise 题目,我就是这么肯定这篇文章的干货 仅仅了解或者实现了 Promise/A+ 规范,这与 JavaScript 的 Promise 中间还有很大的差距 如果你在面试时将 Promise 回答到本文的深度,一定是收获 SP 或者 SSP offer 的利器,因为面试官大概率也不知道这些知识。你知道 浏览器 & Node 中真正的 Promise 执行顺序是怎么样的吗,如果你只是

2022-04-01 21:26:59 330

原创 ES6的模块化

前言在ES6以前,javascript一直没有官方的模块化,所以有人就提出了多种模块化方案,例如:CommonJS,AMD,CMD,UMD等。从ES6开始,javascript具有了自己的模块化系统。浏览器兼容性参考:<script> - HTML(超文本标记语言) | MDN可以看到主流浏览器基本都已经实现了ES6的模块化加载script加载与html解析的关系1、传统script标签与html解析如图所示,传统脚本的下载会中断html的解析。

2022-03-31 23:23:01 1261

原创 JS的各种模块化方案使用方式(IIFE、AMD、CMD、COMMONJS、UMD)

说明首先要说明的是,这些模块化的方案已经过时了,只有一些还需要维护的老项目的还在使用,当前基本都是用打包器打包的模块化方案,例如webpack,通过webpack打包之后的方案,就是webpack模块化方式。IIFE(Immediately Invoked Function Expression)这是一种原始的方式,能起到的作用仅仅只是隔离模块之间额命令冲突,将各种名字限制在模块内部。模块之间的依赖关系依靠程序员手动解决,通过在html中手动编写script标签来确定依赖关系。模块定义:

2022-03-28 23:27:02 1522

原创 AMD(requirejs)模块的基本使用

前言使用requirejs在浏览器中加载模块,其实就只有3个主要的API:require,require.config,define。由于requirejs与require在全局作用域下是同一个API,我这里使用requirejs。我之所以使用requirejs的原因:requirejs在后续的define加载过程中,其会吧require重新绑定到另外一个函数,所以为了防止一些意外情况,我使用requirejs这个API来代替require这个API。所以,我使用的API就三个:

2022-03-28 19:12:57 798

原创 requirejs的源码学习-----整理

requirejs的学习笔记requirejs的源码学习(01)——初始化流程_lengye7的博客-CSDN博客requirejs的源码学习(02)——模块加载流程_lengye7的博客-CSDN博客requirejs源码学习(03)——define即其依赖加载流程_lengye7的博客-CSDN博客requirejs的源码学习(04)——define中回调能顺序执行的原理_lengye7的博客-CSDN博客还有一些没有弄清楚的东西1、如果是采用data-main方式,那么加载的过

2022-03-28 00:05:30 276

原创 requirejs的源码学习(04)——define中回调能顺序执行的原理

目录前言分析过程细节补充前言在上一篇的末尾提到了define中回调函数的执行顺序性是依靠发布-订阅模式实现的,那里只是简单说了一下,现在实际分析一下。分析过程还是接上一篇的分析先定位到完成订阅的地方:在module对象的enable方法中的on函数(该on函数是context中的那个,是Module的on函数的封装)调用实现了当前module对依赖模块的defined事件的订阅。箭头处则是事件发生的时候所执行的回调函数,但是需要注意的是,这里的回调函数并不

2022-03-27 23:57:16 654

原创 requirejs源码学习(03)——define即其依赖加载流程

前言接上一篇,上一篇加载的入口为app模块,当app模块下载完成之后,就会获得执行。app的依赖加载流程贴上app的代码:define( function(require) { 'use strict'; var moduleA = require('./lib/moduleA'); console.log("I am app! calling moduleA.hello!"); moduleA.helloA();});当app加载完成,就会执行

2022-03-27 00:31:25 1220

原创 requirejs的源码学习(02)——模块加载流程

前言这里讨论的模块加载流程只讨论define定义,require获取的形式。这里不涉及data-main以及config中的依赖模块加载过程。回顾requirejs的初始化流程:1、初始化各种API以及功能函数1)、req=require=requirejs,req.config,req.load,define等。2、newContext这个核心1)、定义各种内部使用的数据结构2)、context这个中心数据结构3)、module这个基本操作单元3、完成对re

2022-03-26 20:50:36 1841

原创 requirejs的源码学习(01)——初始化流程

前言现在已经2022年了,大家都已经用上webpack来进行各种打包了,webpack也能很好的兼容各种模块化方案,但是requirejs这个曾经很流行的模块化方案还是值得学习一下的。本次学习的目的并不是为了弄清楚requirejs的方方面面,而是为了弄清楚其模块化加载原理。注意:本文只探讨浏览器环境下的requirejs。程序入口本文分析的requirejs版本:2.3.6。本人菜鸡一个,直接阅读源码,显然不太可能,我采用F12动态调试的办法来追踪它的运行流程。<!--

2022-03-26 01:27:23 1939 3

原创 浏览器环境中javascript加载执行顺序及注意点

1、html中通过script标签引入的javascript代码。这种js代码是自上而下执行的,不论其加载快慢,始终都是按照顺序执行。2、不要在加载脚本中使用document.write插入任何javascript代码。因为这种方式写入的JS代码在执行流程中会出现一些问题,所以最好就是不要使用这种方式在加载过程中插入JS代码。外部脚本:通过script src引入。内部脚本:直接script内嵌。注:document.write写入内容的位置还存在一个问题,加入在<head&.

2022-03-24 15:50:45 2819

原创 CMD(seajs)的使用详解

一、模块定义模块定义文档:CMD 模块定义规范 · Issue #242 · seajs/seajs · GitHubCMD规范:https://github.com/cmdjs/specification/blob/master/draft/module.md核心:在 CMD 规范中,一个模块就是一个文件。代码的书写格式如下:define(factory);factory 可以是一个函数,也可以是一个对象或字符串。factory 为对象、字符串时,表示模块的接口就是该对象、字

2022-03-22 15:46:24 540

空空如也

空空如也

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

TA关注的人

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