language汇
PE文件结构
PE(Portable Execute)文件是Windows下可执行文件的总称,常见的有DLL,EXE,OCX,SYS等。事实上,PE文件可以是任何扩展名,与扩展名无关。
Windows是怎么区分可执行文件和非可执行文件的呢?我们调用LoadLibrary传递一个文件名,系统是如何判断这个文件是一个合法的动态库呢?这就涉及到PE文件结构。
PE文件的结构,是:从起始位置开始依次是DOS头,NT头,节表,具体的节的4个。即
DOS头:用来兼容MS-DOS操作系统,目的是当这个文件在MS-DOS上运行时提示一段文字;还有个目的,指明NT头在文件中的位置。
NT头:3个,PE签名,PE文件头(IMAGEFILE_HEADER),PE可选头(IMAGE_OPTIONAL_HEADER32)。
:::包含windows PE文件的主要信息,
节表:是PE文件后续节的描述,windows根据节表的描述加载每个节。
具体的节:.idata节,.txt节,.data节等
::::每个节实际上是一个容器,可以包含代码、数据等。每个节有独立的内存权限,比如代码节默认有读/执行权限,节的名字和数量可以自己定义。
Socket原理
| Socket原理 |
在计算机通信领域,socket 被译为“套接字”。它是计算机之间进行通信的一种约定。通过 socket 约定,一台计算机可以接收其他计算机的数据,或发送数据。
起源于Unix,而Unix/Linux基本哲学就是“一切皆文件”,即一切可用“打开open –> 读写write/read –> 关闭close”模式来操作。
即 Socket 模式的实现:采用socket函数对文件进行“open—write/read—close”(打开、读/写IO、关闭)的操作。
默认方式以多进程的方式来工作
对连接tcp的connection封装,连接的socket,读事件,写事件在nginx中http请求的处理就是建立在connection上,利用nginx提供的封装的connection,我们可以与任何后端服务打交道。所以nginx可作为web服务器,也可作为邮件服务器;
Nginx
全称 engine x。由俄罗斯的程序设计师Igor Sysoev开发的高级Web和反向代理服务器,也是一个IMAP / POP3 / SMTP代理服务器。
在高连接并发的情况下,Nginx是Apache服务器不错的替代品。
系统平台:CentOS版本6.6(最终版)64位。
功能:
默认方式以多进程的方式来工作
对连接tcp的connection封装,连接的socket,读事件,写事件在nginx中http请求的处理就是建立在connection上,利用nginx提供的封装的connection,我们可以与任何后端服务打交道。所以nginx可作为web服务器,也可作为邮件服务器;
共识算法
六种:POW,POS,DPOS,PBFT,PAXOS,RAFT
POW:Proof of Work,工作证明。(最终一致性,适用公有链)
寻找合理hash是一个概率事件。需要经过大量尝试计算,计算时间取决于机器的哈希运算速度。pow主要是依靠计算机的机器的性能(计算能力)来出块,性能越高,出块概率越大;会导致大量资源浪费、网络性能低、算力太集中偏离了去中心化轨道.
POS:Proof of Stake,股权证明。(最终一致性,适用公有链)
PoS 试图解决 PoW 机制中大量资源被浪费的情况。采用通过计算你持有占总币数的百分比以及占有币数的时间来决定记账权。
DPOS:Delegated Proof of Stake,委任权益证明(最终一致性,适用公有链)
又称 股份授权证明机制。原理是让每个持有者投票,来产生101位代表 (即101个超级节点或矿池), 这101个的权利是完全相等。
优点是整个网络的能耗降低,网络运行成本更低;理论上更去中心化;
缺点小散投票积极性不高,坏节点不能被即时处理,必须经过一个选举才能清除坏节点。
PBFT:Practical Byzantine Fault Tolerance,实用拜占庭容错算法。(强一致性,适用私有链联盟链)
n是总投票人数,f是叛徒人数。多者胜原则,所以当n-2f>f的情况下才会做决定。
在区块链中使用,有四种:
工作量证明(Proof of Work,PoW)算法、
权益证明(Proof of Stake,PoS)算法、
股份授权证明(Delegated Proof of Stake,DPoS)算法、
实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)算法
golang
是 Google员工开发的一种静态强类型、编译型语言。语法与 C 相近,但变量的声明不同。
与C++相比,不包括枚举、异常处理、继承、泛型、断言、虚函数等功能。增加了 切片(Slice) 型、并发、管道、垃圾回收、接口(Interface)等特性的语言。
不同于Java,Go内嵌了关联数组(也称哈希表(Hashes)或字典(Dictionaries))
功能内存安全,GC(垃圾回收),结构形态, CSP-style 并发计算.
适合做
服务器端开发
日志处理、数据打包、虚拟机处理、数据库代理工作
应用领域:web应用,API接口,云计算,大数据,分布式,机器学习,人工智能,云原生软件,开源组件
lisp
全称 List Processing,LISP人工智能语言。是一种通用的高级计算机程序语言,长期以来垄断人工智能领域的应用。
于1958年,约翰·麦卡锡发明。首次实施在IBM704计算机上。
特别适用于人工智能,它可有效地处理的符号信息。
适用于符号处理、自动推理、硬件描述和超大规模集成电路设计。
特点是,使用表结构来表达非数值计算问题。
Lisp程序是由三个构建块组成:
:atom 原子,是一个连续字符串,包括数字和特殊字符。
:list 列表,放在括号中的原子和其他列表的序列。
:string 字符串,是一组括在双引号的字符。
注释用 ; 分号。
Lisp 诞生二十年后,它成了著名的《黑客词典》(Hacker’s Dictionary)中所说的,人工智能研究的“母语”。
能见到 Lisp 的身影的人工智能项目有: SHRDLU自然语言程序、Macsyma 代数系统、 ACL2 逻辑系统。/
写一个hello
(write-line "hello")
写一个运算
(write (+ (* (/ 9 5) 60) 32))
有空格区分。
Vue.js
是构建用户界面的渐进式框架。
目标是通过简单的 API 来实现响应的数据绑定和组合的视图组件。
要了解的知识:HTML、CSS、JavaScript.
框架的目录结构有六块
-build 建造,是项目建成的相关代码
-config 配置,配置目录、端口号
-node_modules 依赖模块,是 npm 加载的项目依赖模块
-src 资源,主要包括了资产(图片)、组件(组件文件)、App.vue(项目入口文件和组件)、main.js(项目的核心文件).
语法格式 var vm = new Vue({ })
它的数据绑定形式用 {{...}} ,作文本插值。
指令 用HTML 编写。
:指令是带有 v- 前缀的特殊属性。
表达式 用JavaScript 编写。
telephony
即电话通讯。 telephony服务是为电话应用程序编程接口 (TAPI) 提供支持。
是Android系统中的核心模块。Telephony主要提供了语音,短信,数据链接,SIM卡管理,电话簿等功能
架构分为4层:
:应用层(Application)。主要包括了Phone、Contacts、SMS等应用。Phone比较特殊,系统启动时就会被运行,同时会创建Telephony框架层。
:应用框架层(Framework)。主要包括了RILJ、Service、业务功能模块三个部分。提供了电话,短信,联系人等所需的所有功能。
:本地RIL层(RIL)。全称 Radio Interface Layer,是Telephony框架层与Modem之间的接口层,RIL将Modem提供的各种服务进行抽象,来提供给Framework层统一的接口。
:驱动层(Modem)。用于实现电话功能。主要硬件是通信模块(Modem),来实现与通信网络进行沟通,传输语音及数据,完成呼叫、短信等相关电话功能。一般 Modem 模块,装上 SIM 卡,直接上电即可工作,自动完成初始的找网、网络注册等工作,完成之后即可打电话、发短信。
智能机在硬件上多采用双 cpu 的架构:
一个是基带处理器,主要处理 数字信号、语音信号的编码解码、通信3协议。基带处理器、射频和其它外围芯片作为一个 Modem 模块,提供 AT 命令接口。
一个是应用处理器,运行操作系统和各种应用程序。
NLP
全称Natural Language Processing,自然语言处理
研究:人与计算机之间用自然语言通信的各种理论和方法。就是开发能够理解人类语言的应用程序或服务。
是一门融语言学、计算机科学、数学于一体的科学。
Python的自然语言处理工具包是NLTK 库 ,它是最简单的自然语言处理(NLP)库。
实际应用例子:如语音识别、语音翻译、理解完整的句子、理解匹配词的同义词,以及生成语法正确完整句子和段落。
MVP架构
全称Model View Presenter,分别表示数据层、视图层、逻辑层;它是MVC架构的一种演变。
MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter 来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过 Controller。
MVC架构全称Model View Controller,经典MVC模式中,M是指业务模型,V是指用户界面,C则是控制器;使用MVC的目的是将M和V的实现代码分离,使同一个程序可以使用不同的表现形式。
CNN
全称 Convolutional Neural Networks, 卷积神经网络。主要思想是学习图像的特征映射,并利用它进行更细致的特征映射。
是一类 包含卷积计算且具有深度结构的前馈神经网络。是深度学习(deep learning)的代表算法之一。
在深度学习领域中,已经过验证的成熟算法,目前主要有:深度卷积网络(DNN)和 递归网络(RNN),在图像识别、视频识别、语音识别领域 取得了巨大的成功。
相对应的,在深度学习研究领域,最热门的是AutoEncoder、RBM、DBN产生式网络架构,都具有巨大的前景。
AutoEncoder 在图像、视频搜索领域的应用
RBM 对非结构化数据的处理方面
DBN 网络在结合人工智能领域两大流派连接主义和符号主义
UNet神经网络
UNet最初是专门为医学图像分割而设计;自2015年,在生物医学图像分割领域,U-Net得到了广泛的应用。
它的编码和解码,早在2006年发表在nature上。当时这个结构提出的主要作用是压缩图像和去噪声,不是分割。是后来把这个思路被用在了图像分割的问题上,也就是现在看到的FCN或者U-Net结构。不过这个分割网络的本质结构是没有改动,即下采样、上采样和跳跃连接。
UNet的组成结构是U型架构;由三部分contraction,bottleneck,expansion 组成。
:contraction(收缩)部分,由多个contraction块组成。每个块接受一个输入,应用两个3X3的卷积层,一个2X2的最大池化。每个块之后,核或特征映射的数量会加倍,这样体系结构就可以有效地学习复杂的结构。
expansion (扩大)部分,是架构核心。与contraction层类似,包含多个expansion 块,每个块将输入传递到两个3X3 CNN层,再到2X2 采样层。
Objective-C
通常写作ObjC或OC。是扩充C的面向对象编程语言。
用于Mac OS X和GNUstep这两个使用OpenStep标准的系统;更是NeXTSTEP和OpenStep中的基本语言。
用于苹果iOS、Mac平台软件的开发语言。
哈希算法
全称:Hash,也称散列。
是一种以 键-值(key-indexed) 存储数据的结构。即输入值(key),来查找对应值。
SDK
全称:Software Development Kit,软件开发工具包。
SDK是一套工具包,即辅助开发某软件的相关文档、范例和工具的集合都可以叫做SDK。
SDK被开发出来是为了减少客户程序员工作量,里面包括了开发文档(就是说明书),范例(源代码写的),DEMO工具,封装好的库等。
在SDK环境下调用API数据。
常把仅使用 API 来编写 Windows 应用程序的开发方式叫做“SDK编程”。
API
全称:应用程序编程接口。
是数据接口,
是一种接口的规范,
是一些预先定义的函数,用于沟通两个不同的东西。
API是SDK的一个子集
就是编写可实现特定功能的函数;通过调用这个函数的接口,来实现这些功能。
即A员的软件A要调用B员开发软件B的部分功能,B员把需要的功能打包好,写成一个函数api接口给A员直接调用。
RPA
全称:Robotic Process Automation,机器人流程自动化。是一类流程自动化软件工具,通过对已有应用的操作业务流程模拟,形成自动化模式。
即通过模拟人工手动操作键鼠,自动处理高频业务。
适用于有明确业务规则、具有结构化输入和输出操作流程的;例如读取邮件、对账汇总、检查文件、生成文件和报告等枯燥、重复、标准化的工作,让RPA机器人代为完成。
即第三方的自动化业务处理RPA软件,面向B端用户。
LitRPA软件,面向C端,属于RPA产品。
是编程类工具,拥有强大的流程图的制作效果,帮助用户快捷的进行自动化机器人设计和操作效果。
对个人使用完全免费;支持控件点击,数据提取,浏览器模拟,文件保存,手机点击滑动,数据库操作等任务
Java
java拥有更多的库和产品,企业可根据业务需求定制开发Java平台。
Java 由 Sun Microsystems 公司于 1995 年 5 月推出的高级程序设计语言。
Java是一门静态面向对象的 编程语言,吸收了C++语言的各种优点,摒弃了C++里难以理解的多继承、指针等概念。
可运行于Windows, Mac OS多种 UNIX 版本的系统。
移动操作系统 Android 大部分的代码采用 Java 编程语言编程。
编写框架\
public class 变量名{
public static void main(String[] args) {
System.out.println("输出的内容");
}
}
PHP 全称:超文本预处理器
是在服务器端执行的脚本语言。扩展名是 .php
语法特点:
用于Web开发并可嵌入HTML中,PHP语法利用了C、Java和Perl
可发送和接收cookie。
可收集表单数据,添加,删除,修改数据库中的数据。
可加密数据。
可限制用户访问网站页面。
被定向,主要任务就是取得perl,利用CGI作网站的功能,所以最擅长web网页编程。
语法简化,更接近C语言。把遗传基因中的shell去掉。与Python相比,走大众化编程习惯,还是用 分号和'{}'大括号风格;并且内置了很多函数,不用引用模块来直接使用;
设计结构上,用数组取代Python,perl中 元组、字典、列表等数据结构。
编写框架 \
<!DOCTYPE html>
html
head……/head
body
<?php echo “ Hello World!” ; ?> echo是输出命令
/body
/html
//这是PHP单行注释
/* PHP多行注释 */
HTML
编写框架
html
head……/head
body……/body
/html
标题(Heading)
使用 h1 - h6 标签定义,1-6的大到小字号顺序
&:<用h1>This is a heading</用h1>
段落
使用 p 标签定义 ,<放这里>
&:<用p>This is a paragraph.</用p>
链接
使用 a 标签定义 ,
&:<用p>This is a heading</用p>
Ruby
面向对象(面向对象程序设计)脚本语言,遵守GPL协议和Ruby License许可证。Ruby源于Perl和Lisp两类语言。是与C,C++,C#,java不同的大类。
变量规则:以$开头的一定是全局变量,以@开头的都是实例变量,而以@@开头的是类变量。
常数规则:以大写字母开头;
语言特点:
是开源的,且免费。
类似于 Python 和 Perl 的服务器端脚本语言。
可用来编写通用网关接口(CGI)脚本。
可嵌入到超文本标记语言(HTML)。
可扩展性强,即用Ruby 编写的大程序易于维护。
可用于开发的 Internet 和 Intranet 应用程序。
可安装在 Windows 和 POSIX 环境中。
支持许多 GUI 工具,比如 Tcl/Tk、GTK 和 OpenGL。
可很容易地连接到 DB2、MySQL、Oracle 和 Sybase。
有丰富的内置函数,可以直接在 Ruby 脚本中使用。
C语言
程序结构
,# include <stdio.h>
int main ()
{ /* 注释符 */
printf ("Hello, World! \n");
return 0;
}
第一行 #include <stdio.h> 是预处理器指令,告诉 C 编译器在实际编译之前要包含 stdio.h 文件。
下一行 int main() 是主函数,程序从这里开始执行。
下一行 printf(...) 是 C 中另一个可用的函数,会在屏幕上显示消息
下一行 return 0; 终止 main() 函数。
// 是为编写 UNIX 操作系统而被发明
// C 语言是以 B 语言为基础
// 是一种 系统程序设计语言,处理底层的活动
// 最初是用于系统开发,是由于C 产生的代码运行速度与汇编语言编写的代码运行速度一样;
// 可用 任何文本编辑器来编写 C 语言程序
使用 C 的实例范围:操作系统,语言编译器,汇编器,文本编辑器,打印机,网络驱动器,数据库,语言解释器
C++语言
程序结构
,# include
using namespace std;
int main ()
{ // 单行注释
cout << "Hello, world!" << endl;
return 0;
}
// C++ 语言定义了一些头文件,这些头文件包含了程序中必需的或有用的信息。包含了第一行 头文件
// 下一行 using namespace std; 告诉编译器使用 std 命名空间。
// 下一行 int main() 是主函数,程序从这里开始执行。
// 下一行 cout << "Hello World"; 会在屏幕上显示消息
// 下一行 return 0; 终止 main( )函数
文件名 .cpp
电脑终端编译和运行文件:
键入 'g++ hello.cpp ',输入回车,编译代码文件
键入 ' a.out' 来运行程序。
Python代码结构:
import torch
form torch import nn
import torch.nn.functional as F
import optim as optim
class UnetGenerator(nn.Module):
控制语句5个:
if 语句,while语句,for 循环 for..in,break语句,continue语句
注意: 当for循环结束后执行else语句; range(a, b)返回一个序列,从a开始到b为止,但不包括b,range默认步长为1,可以指定步长,range(0,10,2);
break 终止循环语句,若从 for 或 while 中终止,任何对应循环的 else 将不执行。
continue 用于 跳过当前循环的剩余语句,继续下一轮循环。
JAVA语言
程序结构\
,public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
// 第一行 public class 创建一个类名。
// 下一行 System.out.println; 会在屏幕上显示消息。
public访问修饰符 static 关键字 void 返回类型 main 方法名 String String类型 args 字符串数组
文件名 .java
电脑终端编译和运行文件:
输入 javac HelloWorld.java,编译代码文件
输入 java HelloWorld 来运行程序。
Go语言
应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。
程序结构\
,package main
import "fmt"
func main () {
/* 注释 */
fmt.Println("Hello, World!")
}
// 第一行代码 package main 定义包名。必须在源文件中非注释的第一行指明这个文件属于哪个包,如 package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。
// 下一行 import "fmt" 告诉 Go 编译器这个程序需要使用 fmt 包,fmt 包实现了格式化 IO(输入/输出)的函数。
// 下一行 func main() 是程序开始执行的函数
// 下一行 fmt.Println(...) 将字符串输出到控制台,会在屏幕上显示消息。
文件名 .go
电脑终端编译和运行文件:
输入 go run hello.go 来运行程序。
具有开源、内存管理、数组安全特色;
在高性能分布式系统领域,具有更高的开发效率,提供海量并行,对游戏服务端的开发很友好。
PHP语言
是一种 创建动态交互性站点的强有力的服务器端脚本语言。
程序结构\
插入HTML中:
,< ! DOCTYPE html >
< html >
< body >
< h 1 > My first PHP page< / h 1 >
< ? php
echo "Hello World!";
? >
< / body >
< / html >
PHP 脚本:
,
// PHP 脚本 以 结束
// 下一行 echo 在浏览器输出文本。有两种在浏览器输出文本 echo 和 print
PHP 脚本 可放在文档中的任何位置。
// 单行注释,/ * 多行注释 * /
文件名 .php
浙公网安备 33010602011771号