自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 利用C++和napi以及gtk编写addons向js提供接口

利用C++和napi以及gtk编写addons向js提供接口在做electron的时候,发现有一些linux上的内容只凭借node的api无法实现,例如获取桌面文件的图标等等,而且目前情况下node-ffi已经很久不更新了,使用起来还需要降级node,但是降级的话很多新的模块也就不能用了(比如fs-extra还有什么promise的错误)。因此,选择了napi来开发,这个用起来很方便。而且利用node-gyp编译后,结果就是.node形式的二进制文件,直接import就可以用了,但是为了方便使用最好是将

2021-10-17 23:49:05 775

原创 C++函数进阶

函数进阶using 指令尽量不要出现在头文件中因为在预编译的过程中,所有引用该头文件的文件都会再次申明出现这条using指令顶层const和底层const由于指针本身是一个对象,所以指针所指向的对象是不是常量和指针变量本身是不是常量是两个问题:顶层const是指指针本身是一个常量,申明一个常量指针可以通过以下方式:int a = 1;int *const var = &a;//此处报错,表达式必须是可修改的左值var = 0;底层const是指指针所指向的对象是一个常量

2021-09-26 14:38:46 206

原创 获取回调函数中的值

在nodejs封装了许多的异步的回调函数,例如在官方示例中,这个函数是这样使用:fs.readFile("1.txt", (err,data) => { if(!err) { console.log(data ); }})可是这种使用的方式,往往无法满足大多数的使用场景,所以可能会有新手朋友和我一样,写成这样let obj = {};fs.readFile("C:\\Users\\yeyeyeping\\Desktop\\1", (err,data) =

2021-09-24 22:51:20 1768

原创 第二讲 线性回归 梯度下降

机器学习的一般过程:构建线性模型:线性模型:试图学得一个通过属性的线性组合来进行预测的函数梯度下降算法构建一个线性模型拟合数据:根据机器学习三要素(绪论部分见第一讲)1.定义模型2.策略(也即损失函数)在线性模型中,损失函数可以用所有训练数据实际值和预测值差的平方和来描述,此函数值越小,模型对训练数据集的拟合能力越强。补充:在机器学习中表示的是第i个样本的y值,损失函数的系数只是为了后续的计算量3.算法当损失函数定义好了之后,算法的主要任务就是找到一种合理数学方案使得机器

2021-09-18 19:12:13 341

原创 第二讲 代码部分

涉及的numpy Api学了一个学期数据分析与可视化,numpy还不会用,惭愧惭愧np.loadtxt(参数说明太多了截图不下,介绍常用的)参数fname ------> 文件路径参数delimiter --------> 分割符号numpy.reshape、numpyarray.reshape作用:保持原始数据,改变数组的长度(static)参数a就是原数组,如果使用Numpyarray成员函数的reshape是没有这个方法的参数:newshape ------->可以

2021-09-18 19:11:01 187

原创 机器学习 绪论

1.什么是机器学习机器学习是这样一门学科,它致力于研究如何通过计算的手段,利用经验来改善系统自身的性能机器学习研究的主要内容:是关于在计算机上从数据产生模型的算法,即学习算法。2.泛化能力机器学习的目标是使得学得的模型能很好地适用于新样本,适用于新样本的能力,称之为泛化能力3.机器学习的分类本学期学习的重点是监督学习和无监督学习。...

2021-09-16 16:18:57 128

原创 汇编语言11之中断和int指令以及端口

中断第处理外部突发事件的一个重要技术硬件中断外部中断​ 一般是外设发出的中断内部中断​ 硬件出错或运算出错引起的中断,不可被屏蔽软件中断中断处理程序CPU必须建立中断信息和中断处理程序之间的联系中断信息中包含(1byte)中断类型码,CPU根据此来定位中断处理程序中断向量表:存放中断类型码和中断处理程序的对应关系的表,存放中断处理程序的入口地址8086的中断向量表是放在内存起始位置总共256个中断类型,占用1024个字节中断过程:取得中断类型码N标志位寄存器入栈,pus

2021-08-17 17:53:11 1128

原创 汇编语言10之标志寄存器以及一些movadcsbb指令

ret和retfret指令实现近转移,会利用栈中的数据,修改ip的值ret n指令相当于:pop ipadd sp,n也就是下面的过程:​ (ip)=((ss)*16+(sp))​ (sp)=(sp)+2retf指令实现远转移​ (ip)=((ss)*16+(sp))​ (sp)=(sp)+2​ (cs)=((ss)*16+(sp))​ (sp)=(sp)+2callcall指令执行的过程:​ 将当前ip或者cs和ip压入栈中​ 转移(jmp near或者call farpt

2021-08-13 14:30:56 418

原创 汇编语言9之callret指令以及mul乘法指令

ret和retfret指令实现近转移,会利用栈中的数据,修改ip的值ret n指令相当于:pop ipadd sp,n也就是下面的过程:​ (ip)=((ss)*16+(sp))​ (sp)=(sp)+2retf指令实现远转移​ (ip)=((ss)*16+(sp))​ (sp)=(sp)+2​ (cs)=((ss)*16+(sp))​ (sp)=(sp)+2callcall指令执行的过程:​ 将当前ip或者cs和ip压入栈中​ 转移(jmp near或者call farpt

2021-08-13 14:27:59 568

原创 汇编语言8之转移指令的原理

转移行为类型:无条件转换指令(如:jmp)条件转移指令循环指令(如:loop)过程中断操作符offset标号有段地址和偏移地址seg去段地址,offset去偏移地址如果直接在寄存器中使用标号,获得的是ds和offset组合得到的数据值功能:获取标号的偏移地址将s处的内容复制到s0处]根据位移进行转移的jmp指令短转移:jmp short 标号(转移到标号处执行指令)这种格式的jmp指令实现的是段内短转移,对ip修改范围为-128-127在一般的汇编指令中。汇编的idata(

2021-08-13 14:27:13 494

原创 汇编语言7之数据访问的基本问题以及div指令

bx,di,si,bpbx:常见的通用寄存器,默认基于数据段偏移,[bx]将会在ds段地址上偏移后然后寻址di和si:SI(source index)和DI(destination index)是8086CPU中和bx功能相近的寄存器,但是SI和DI不能分成两个低位的寄存器,在处理内存中的数据的过程中,只能一次将两个字节放入寄存器中bp:(base pointer)功能和bx一致,但是[bp]默认是基于ss上的偏移后寻址,和sp一样在[…]中,只能是这四个寄存器或者这四个寄存器的特定组合,这些组合只

2021-08-13 14:25:35 693

原创 汇编语言6之内存地址定位

and指令被允许的组合:AND reg, regAND reg, memAND reg, immAND mem, regAND mem, imm逻辑运算中的按位与运算还可以实现将寄存器中的某个位设置为0and al,111111110b将al寄存器的中的第0位设置为0or指令逻辑或指令还可以用于将某一位设置为1[bx+idata]]]]汇编实现到大写,到小写assume cs:codesg,ds:datasgdatasg segment db 'Unix' d

2021-08-13 14:24:52 540

原创 汇编语言5之包含多个段的程序

在代码段中使用数据在代码段定义一段数据:dw 0124h,0456h,0789hdw(define word)是用于定义字形数据的指令,放在代码段的最前面时,编译器会将代码段前相应的几个字节用于存放定义的数据。注意:一旦在代码段定义了数据,就需要相应的指定汇编指令部分的入口。也就是在真实指令部分的最前方给出标号,常用的是start,然后在程序末尾对应上end start,来用标识指令的结束。编译器识别入口其实就是先找到end,在通过end后面的标号名字向前查找入口代码段中使用栈:使用栈必须先

2021-08-13 14:23:28 196

原创 汇编语言4之loop指令和bx寄存器

[bx]在使用masm编译汇编源程序的时候,不能使用类似:mov ax,[0]作为相对寻址的方式。替代的方法就是现将偏移地址存到bx中,然后利用mov ax,[bx]的方式来代替.或者以ds:[偏移地址]的方式来寻址,在8086CPUT中,进行寄存器间接寻址的时候,[…]中的内容只可以是变址(index,指SI, DI)寄存器或基址(base,指BX, BP)寄存器。mov ax,2000hmov ds,axmov bx,1000hmov ax,[bx]bx寄存器常常用于存放偏移地址loop

2021-08-13 14:22:37 746

原创 汇编语言3之汇编程序

过程:编写源代码编译链接源代码生成可执行文件,可执行文件包含两部分内容程序和数据、相关描述信息源程序汇编指令伪指令:指令没有对应的机器码,由编译器识别和执行定义一个段一个汇编程序有多个段组成,这些段用来存放代码,数据或当做栈空间来使用。一个有意义的汇编程序至少用一个代码段]segment和ends:segment和ends是一对成对使用的伪指令,这是在写可被编译器编译的汇编程序时,必须要用到的一对伪令。segment和ends的功能是定义一个段,segment表示一个段的

2021-08-13 14:21:23 1032

原创 汇编语言2之寄存器的访问

在计算机系统中,通常是以字节为单位,每一个地址单元对应着一个字节,寄存器的位数超过一个字节的时候,就会出现字节安排的问题也就是说,当读取的内容超过一个字节的时候,每一个字节在读取的时候的位置如何放置,如果高地址放在高位就叫做大端格式,高地址放在低位就叫做小端格式。DS和[adress]CPU要你 从内存读取数据的时候,首先需要给出这个内存单元的地址.在8086也就是x86架构中,内存地址由段地址和偏移地址所组成,8086CPU的DS寄存器就是数据段寄存器,用来存放数据段地址,[adress]

2021-08-13 14:20:18 196

原创 汇编语言1之CPU工作原理

CPU工作原理:​ 对于8086 CPU,地址总线有20个,在存储器中寻址的时候一次可以传送20位地址信息,寻址能力为1 M。但是内部数据总线以及寄存器都是16位的,因此寻址的过程中需要进行转换。如何进行的转换呢?8086 CPU 采用一种在内部用两个16位地址(称为段地址和偏移地址)合成的方法来形成一个20位的物理地址。地址加法器合成物理地址的方法:​ 物理地址=段地址*16+偏移地址​ 在16进制下也就是,段地址左移一位+偏移地址但是实际上,存并没有分段,仍然是线性的,只是人类方便理解,

2021-08-13 14:19:17 141

原创 深入理解计算机系统第一章

c语言程序的生命周期:要在系统上运行程序,每条c语言的语句都必须被其他程序转换为一系列的低级机械语言指令,从源文件.c目标可执行文件的转换是由编译器驱动程序完成,这个转换过程分为四个阶段:内核不是一个进程,他是系统全部进程所用代码和数据结构的集合阿姆达尔定律:加速整个系统需要提升系统中相当大部分的速度浮点数计算:缘起:很奇怪、很不解,虽然有过计算机组成原理学习经历,似乎直到他与计算机中数的表示相关,但却不能道出其中的具体缘由。实在惭愧,查阅相关资料后先整理于下:要搞清楚其中缘由必须先了解

2021-07-27 19:22:49 121

原创 electron渲染进程与主进程的交互

electron渲染进程与主进程的交互Electron继承了来自Chromium 的多进程架构,多进程模型的使用虽然增加了系统资源的开销,但保证了单个进程的崩溃或无响应不会影响到整个浏览器。作为应用的开发者,我们在electron开发中所要管理的进程分为两种类型:主进程和渲染进程主进程应用程序的入口点,运行与Node.js环境中,这意味着他具有使用Node.js api的能力。其主要目的是使用BrowerWindow模块创建和管理应用程序窗口渲染进程每一个标签页只在自己的进程中渲染,他无权访问

2021-07-21 16:45:58 1067 1

原创 Spark的TF-IDF实践

一.公式的分析和编写代码的思路:根据公式,计算TF-IDF首先需要计算TF和IDF,然后在做乘积1.TF运算(1)TF运算的时候,首先需要统计某个单词在该篇文章出现的次数、和统计单词所在那篇文章的单词的总数(2)实现思路:在每个文章中对单词进行计数,形成一个(word,count)形式的元组,因为在不同文章中分别计算TF需要用到所在该单词文章单词的数量,所以最后的对于每篇文章我将计数的结果生成如下形式:即结果列表有两个元素,一个元素存储每个单词在文章的计数情况,另一个存储单词的个数然后使用m

2021-05-29 11:54:24 479 1

原创 arm汇编----入门概要

2中工作状态 7种工作模式 37个寄存器(1) 2种状态:ARM状态:执行32位ARM指令集Thumb状态: 执行16位Thumb指令集(2) 7种工作模式:用户模式(usr):ARM正常执行程序快速中断模式(fiq):用于高速数据传输或者通道处理外部中断模式(irq):用于通用的中断处理管理模式(svc):操作系统使用的保护模式(拥有额外的特权)中止模式(abt):当数据或指令预取中止时进入该模式,用于虚拟储存交换及储存保护未定义模式(und):当未定义的指令执行进入该模式,用于支.

2021-03-08 09:37:20 380

原创 原生js的一些语法

1.js代码一般使用引入外部文件的方法,如果使用内嵌式代码需要放在body内容最后,以防htm元素内容未加载,获取不到获取元素一般使用内置对象document的方法:document.getElementById(“填写id”),返回是元素的对象//获取元素对象var o = document.getElementById();var o = document.getElementdByTagName()//修改属性值o.style.color = “red”;//当修改属性值为双拼词的时候

2021-02-05 20:26:48 389

原创 css定位

定位属性:position可选择的值:absolute生成绝对定位元素,元素脱离文档流,参考点是设置了相对或者固定定位的父级元素relative:生成相对定位元素,不会脱离文档流,元素相对文档流位置进行偏移,就是相对本身的位置进行偏移fixed:生成固定定位元素,元素脱离文档流,不占据文档流的位置,漂浮在文档流上方,相对浏览器的窗口进行定位绝对都定位和固定定位的块元素和行内元素会自动转换为行内块元素,当元素重叠的时候还可以用z-index属性来选择悬浮在最上方的元素...

2021-02-04 18:32:22 86

原创 css浮动笔记

浮动的特点:(1)浮动只有左浮动和右浮动(2)浮动的元素会向右或者向左移动直到碰到父元素边际或者上一个浮动元素的边际为止(3)浮动的元素会脱离文档流,不在占据物理空间,后面不浮动的元素会占据浮动元素的位置,不浮动元素的文字将避开浮动的元素形成文字环绕(4)相邻的浮动的元素可以并成一行,超过父级元素的宽度会自动换行(5)父类元素如果子元素全部浮动将无法撑开宽度,需要用到清除浮动解决父类元素宽度无法撑开:(1)给父类元素设置相应的宽高(2)给父元素设置属性overflow:hidden(3)使

2021-02-04 15:41:58 136

原创 css元素溢出、padding和margin笔记

元素溢出:当元素内容超过元素大小的时候的显示方式使用方法:属性名字overflow默认visible可视,选项:hidden(超出部分隐藏) scroll(显示滚动条) auto(内容超出的时候自动出现滚动条)padding:元素的内容与边界的距离,实际设置的时候会影响div的大小margin:子元素距离父元素的距离(1)利用margin设置元素水平居中,margin:0px auto、(2)margin允许设置负值,通过设置负值可以两个元素的边框重合(3)消除浏览器自带的margin:*{ma

2021-02-04 11:15:44 573

原创 css学习笔记选择器、字体和文本、边框、背景

1.css:层叠样式,使用的时候是以属性和值的一对键值对的方式去定义,一对键值对与另外一对之间用分号隔开,同一个属性设置值的话一般使用空格隔开{background:red;border:1px red solid}2.三个基本选择器:(1)元素选择器:使用元素名字选中元素(2)id选择器:使用#加上要被选中的元素的id取定位元素(3)类选择器使用类选择器首先要给需要选中的元素起一个类名,并在属性上加上class=“类名”,然后在css文件中使用.类名{}的方式选择元素基本选择器之

2021-02-03 21:23:22 172

原创 html笔记

1.HTML规范:(1)所有标签必须小写(2)所有属性的值必须用引号引起来,属性与属性之间空格隔开(3)双标签闭合,单标签省略闭合2.段落、换行、实体字符:(1)标题标签,h标签可以在网页上定义6种级别的标题<h1></h1> <h2></h2> ····<h6></h6>(2)段落标签:<p>内容</p> p标签会将内容(text)写成一段,下一段将自动与第一段形成间距和换行(3)强制换行标签:

2021-02-02 21:11:08 169

原创 java注解学习笔记

1.注解的定义:Public @interface MyAnnotation{//定义属性的格式 //String[] name(); //String value();当注解的属性只有一个且属性名字是value时,在使用这个注解的时候直接填写值不需要填写内容 /*允许定义的属性的类型有:byte,short,int,long,float,double,boolean,char.String,enum以及对应的数组注解属性是数组的时候,使用方式:(1)@MyAnnotation("12"

2021-02-02 14:16:10 166 1

原创 java反射机制学习笔记

反射机制主要使用的包是:java.lang.reflect(下面的Method,Field,Constructor)、java.lang.Class1.获取class的三种方式(1).Class.forName(“类路径”)(2).实例对象.getClass()//方法继承自Object(3).类名.getClass2. 通过反射实例化对象调用Class的实例化对象.newInstance()底层调用的是类的无参构造方法,如果没有无参构造方法,会出现异常3. 调用类的静态代码块的一种方式C

2021-02-01 21:39:20 125

原创 Java多线程学习笔记

线程概述1.多线程并发实际上是人类的一种错觉,只是由于cpu运行较快,从而可以频繁的在不同任务之间相互切换,营造了一种多线程同时运行的感觉。2.进程和线程:进程中至少有一个线程,一个线程只能从属于一个进程,而一个进程可以创建多个线程,进程之间资源不共享,但一个进程所创建的多个线程之间共享资源3.对于java来说,无论多少个线程,在jvm中只共用一个方法区、一个堆,栈可以有多个。实际上,线程对象.start(),也就是创建分支栈、初始化一些资源,让该线程对象切换到就绪状态,这个过程速度很快。4...

2021-01-31 13:49:35 130

原创 通过xpath解析html

通过xpath解析html什么是xpath?xpath全名xml path language,是用来解析xml类语言的一种比较方便的工具,用好xpath就不需依赖字符串、索引等去定位元素、获取元素值。什么是xmlxml与常见的html一样,都属于尖括号语言,都是用来描述、表示数据的一种方式,不同的是html的标签有严格的规定和限制,而xml却更加灵活,可以根据自己的需求自定义标签,xml与html相互补充,可以说是一对亲兄弟了,所以用xpath对html是完全支持的,科普完毕,进入正题。

2021-01-25 21:05:05 1384

空空如也

空空如也

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

TA关注的人

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