mirror of
https://github.com/Estom/notes.git
synced 2026-04-14 10:21:08 +08:00
计划
This commit is contained in:
57
Go/Go基础/1 概述.md
Normal file
57
Go/Go基础/1 概述.md
Normal file
@@ -0,0 +1,57 @@
|
||||
# 概述
|
||||
## 1 背景
|
||||
|
||||
### 产生原因
|
||||
Go是Google开发的一种静态、强类型、编译型、并发型,并具有垃圾回收功能的类C编程语言。2009以开源项目的形式发布,2012年发布1.0稳定版本,距今已经十年了。
|
||||
|
||||
Go语言之父Pike提到:Go语言是以C为原型,以C++为目标而设计的。因为他觉得C++忒复杂了,要解救程序员于水火。
|
||||
|
||||
核心设计师Pike和Ken都是出身自贝尔实验室,Ken之于Pike,亦师亦友,共同发明了UTF-8,还共同结对编程过,感情好的像穿一条裤子。
|
||||
|
||||
Pike是Unix先驱,贝尔实验室最早跟Ken、Dennis一起开发Unix的猛人,Plan9 OS的灵魂人物。大胡子Ken爷爷则是Unix之父,和Dennis一起发明了C语言,殿堂骨灰级程序员,早已是名满天下。
|
||||
|
||||
### 设计哲学
|
||||
|
||||
C++语法自由自在,于是乎一群大佬为tab or space、大括号要不要换行等诸如此类的格式问题吵得不可开交。Go设计师认为,都是吃饱了撑的。
|
||||
|
||||
Go编译器内建工具gofmt强制源码格式化。对不起,没有选项,我的地盘听我的,把精力focus到真正重要的事情上来,停止无意义的争吵。
|
||||
|
||||
Go在某些点确实有突破,比如让并发编程更容易、运行更高效,比如垃圾回收让程序更安全,比如基于消息(Channel)编程的支持,比如内嵌关联结构,这些都很赞,因为编程语言发展这么多年,任何突破都是艰难和宝贵的。
|
||||
### Go特色
|
||||
|
||||
Go是介于C与C++之间的语言,比C抽象层次高,比C++抽象层次低。因为是一门新的编程语言,站在巨人的肩膀,博采众长,规避了一些已知的问题,开发了一些优秀的特征,相比C/C++,Go的核心特征包括以下几个方面:
|
||||
|
||||
* 原生并发,以东尼·霍尔的通信顺序进程(CSP)为基础的goroutine,适合现代多核机器
|
||||
* 垃圾回收,非常高效(请来世界顶级内存管理专家设计)
|
||||
* 强大的标准库,对网络编程等的良好支持
|
||||
* CGO提供了GO调用C机制,扩展了GO的能力边界
|
||||
* 内嵌关联数组
|
||||
* 非侵入式的接口设计
|
||||
* 简单清晰的语法
|
||||
|
||||
|
||||
### 优点
|
||||
|
||||
* 自带gc。
|
||||
* 静态编译,编译好后,扔服务器直接运行。
|
||||
* 简单的思想,没有继承,多态,类等。
|
||||
* 丰富的库和详细的开发文档。
|
||||
* 语法层支持并发,和拥有同步并发的channel类型,使并发开发变得非常方便。
|
||||
* 简洁的语法,提高开发效率,同时提高代码的阅读性和可维护性。
|
||||
* 超级简单的交叉编译,仅需更改环境变量。(花了我两天时间编译一个imagemagick到arm平台)
|
||||
* 内含完善、全面的软件工程工具。Go语言自带的命令和工具相当地强大。通过它们,我们可以很轻松地完成
|
||||
* Go语言程序的获取、编译、测试、安装、运行、运行分析等一系列工作,这几乎涉及了开发和维护一个软件的所有环节。
|
||||
|
||||
|
||||
### Go VS C/C++
|
||||
|
||||

|
||||
|
||||
Go号称兼备C++的运行效率和PHP的开发效率,但benchmarks好像并不支持这个结论,数据有点打脸,Go的运行效率接近却略低于Java。
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
## 2 从C的角度理解Go
|
||||
|
||||
BIN
Go/Go基础/image/2021-05-20-07-25-25.png
Normal file
BIN
Go/Go基础/image/2021-05-20-07-25-25.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 291 KiB |
BIN
Go/Go基础/image/2021-05-20-07-40-21.png
Normal file
BIN
Go/Go基础/image/2021-05-20-07-40-21.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 267 KiB |
14
Go/test/1.go
Normal file
14
Go/test/1.go
Normal file
@@ -0,0 +1,14 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func main() {
|
||||
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
||||
fmt.Fprintf(w, "Hello, you've requested: %s\n", r.URL.Path)
|
||||
})
|
||||
|
||||
http.ListenAndServe(":80", nil)
|
||||
}
|
||||
8
Go/test/go.mod
Normal file
8
Go/test/go.mod
Normal file
@@ -0,0 +1,8 @@
|
||||
module example.com/m
|
||||
|
||||
go 1.16
|
||||
|
||||
require (
|
||||
github.com/ramya-rao-a/go-outline v0.0.0-20200117021646-2a048b4510eb // indirect
|
||||
golang.org/x/tools v0.1.1 // indirect
|
||||
)
|
||||
26
Go/test/go.sum
Normal file
26
Go/test/go.sum
Normal file
@@ -0,0 +1,26 @@
|
||||
github.com/ramya-rao-a/go-outline v0.0.0-20200117021646-2a048b4510eb h1:ilZSL4VaIq4Hsi+lH928xQKnSWymFug6r2gJomUBpW8=
|
||||
github.com/ramya-rao-a/go-outline v0.0.0-20200117021646-2a048b4510eb/go.mod h1:1WL5IqM+CnRCAbXetRnL1YVoS9KtU2zMhOi/5oAVPo4=
|
||||
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.1.1 h1:wGiQel/hW0NnEkJUk8lbzkX2gFJU6PFxf1v5OlCfuOs=
|
||||
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
@@ -1,26 +0,0 @@
|
||||
# 基于联邦学习的恶意软件表征系统研究
|
||||
|
||||
## 第一章:绪论
|
||||
|
||||
### 背景
|
||||
|
||||
### 国内外研究现状
|
||||
|
||||
### 研究内容
|
||||
|
||||
### 论文结构
|
||||
|
||||
## 第二章:相关技术研究
|
||||
|
||||
## 第三章:基于DNN的特征生成模型
|
||||
|
||||
|
||||
## 第四章:模型的解释方法与评估
|
||||
|
||||
|
||||
## 第五章:联邦学习系统的构建
|
||||
|
||||
## 第六章:模型的效果评估
|
||||
|
||||
|
||||
结论
|
||||
@@ -1,4 +1,13 @@
|
||||
## 研究任务
|
||||
## 任务
|
||||
|
||||
> 通过撰写论文驱动自己执行接下来的任务。研究任务->工程任务
|
||||
|
||||
- [ ] 1 数据预处理(研究任务),需要了解Android恶意软件的基础知识,并提取特征。
|
||||
- [ ] 2 阅读论文(研究任务),完成小论文和毕设论文的框架,以及大部分内容,实验和实验结果空着,等以后完成。
|
||||
- [ ] 3 继续实验(研究任务),找到一种衡量非独立同分布的方法(分布不平衡的程度。完成毕设论文中设计的半监督实验,非独立同分布的实验,并横向纵向对比实验结果。
|
||||
- [ ] 4 构建展示系统(工程任务)。做成一个可以用来展示的网站。可视化操作和训练过程。
|
||||
|
||||
## 研究任务(完成毕设论文)
|
||||
|
||||
> 四月份计划主要进行基础知识的学习和复习。完成了初步的数据处理。接下来的主要任务是阅读论文并完成论文复习计划。
|
||||
> 开始执行五月份计划,与四月份计划进行衔接。完成工程上与学术上的推进工作。
|
||||
@@ -6,74 +15,64 @@
|
||||
> 抓紧吧基础的工程弄完,然后开始搞论文,然后在搞回工程。实现最终的系统。
|
||||
> 我们是合作关系,而不是上下级关系。别懈怠了。
|
||||
|
||||
### **阅读论文**(两周)
|
||||
> (100篇计划)蒋师兄前前后后分享了估计也有一百篇了,现在重新开始读论文,在复现文章的同时进行广泛的阅读。利用citavi这个工具。
|
||||
### 阅读论文(两周)
|
||||
|
||||
> (100篇计划)蒋师兄前前后后分享了估计也有一百篇了,现在重新开始读论文,在复现文章的同时进行广泛的阅读。利用citavi这个工具。
|
||||
|
||||
- [ ] 待定
|
||||
|
||||
### **联邦学习文章复现**(四周)
|
||||
### 联邦学习论文复现(四周)
|
||||
|
||||
> 阅读当前最新的联邦学习文章。使用别人的代码复现联邦学习的过程。复习和复现
|
||||
|
||||
|
||||
|
||||
### **恶意软件文章复现**(四周)
|
||||
### 恶意软件文章复现(四周)
|
||||
|
||||
- [ ] DeepAMD
|
||||
- [ ] CIC
|
||||
|
||||
|
||||
### **联邦学习+恶意软件文章复现**(四周)
|
||||
> 后续任务:论文撰写计划(六月份计划)
|
||||
|
||||
|
||||
- [ ] 待定
|
||||
|
||||
|
||||
## 工程任务(完成目标系统)
|
||||
|
||||
> 需要确定最终实现到什么程度。如果还是单机多线程仿真的,大可不必进行大量修改。在本地通过socket多线程通信进行仿真即可。没有必要考虑网页端的训练(用户将模型下载到Chrome浏览器中,在Chrome浏览器中进行梯度下降?大可不必。第一步应该是首先实现本地浏览器调用本地后端的程序进行仿真。然后尝试远程浏览器,建立socket通信,进行真实系统仿真。而且远程系统,必须也有相关的Python环境才行,或者直接在浏览器中使用JavaScript进行梯度下降。)
|
||||
|
||||
> 对于单机仿真环境:前端调用后端的训练线程,实现联邦学习。
|
||||
|
||||
> 对于多机真实环境:前端直接下载模型,在浏览器中进行梯度下降,实现联邦学习过程。
|
||||
|
||||
### 初级阶段(五月份)
|
||||
|
||||
|
||||
### **初级阶段**(五月份)
|
||||
> 主要实现本地线程级别的仿真。用来完成研究中的实验和计划
|
||||
> 该仿真实验主要是了验证论文,发论文。
|
||||
|
||||
|
||||
- [ ] pysyft线程级别仿真
|
||||
- [X] pysyft线程级别仿真
|
||||
- [ ] pysyft论文仿真实验
|
||||
|
||||
- [ ] 针对联邦学习的仿真
|
||||
- [ ] 针对恶意软件的仿真
|
||||
|
||||
|
||||
- [ ] 尝试掌握最新的联邦学习框架(既然选择了pysyft,就不要考虑tensorflow了。pysyft的生态可能更好,而且做起来简单。主要是tensorflow框架过于庞大,很多东西虽然规范很好用起来方便,但是训练过程着实过于麻烦。使用Keras还好。如果想要修改底层必然会耗费大量精力。tensorflow能够使用js在网页中完成训练,pytorch也能够使用js在网页中完成训练。pytorch也能在android端完成训练。)
|
||||
- [ ] 对pysyft框架进行优化和扩展。
|
||||
|
||||
### **中级阶段**(六月份)
|
||||
### 中级阶段(六月份)
|
||||
|
||||
> 主要对pysyft框架中的内容进行理解和修改。
|
||||
> 构建pysyft对联邦学习的远程仿真实现。实现多端协同仿真,实现可视化界面。
|
||||
|
||||
- [ ] 使用docker容器和socket编程,实现多端协同训练。(从仿真向现实场景过渡。)
|
||||
- [ ] 使用docker容器,优化部署过程,实现windows/linux/android场景下的跨平台实验。(向现实场景过度。)
|
||||
|
||||
### **最终阶段**(七八月份)
|
||||
> 构建系统。主要是为了最终的毕业服务。
|
||||
### 最终阶段(八月份)
|
||||
|
||||
> 构建系统。主要是为了最终的毕业服务。
|
||||
|
||||
- [ ] 使用web服务器,实现可视化。包括可视化训练过程的控制、可视化展示训练过程和训练结果。(大概花一个月时间,本质上为了毕业,能够形成一个看起来很漂亮的系统)
|
||||
|
||||
- 前端:
|
||||
|
||||
- [ ] 训练控制模块(训练过程的配置。选择训练客户端、选择控制客户端,设置训练的参数。加号按钮,在本地网页上进行选择。)
|
||||
- [ ] 训练过程模块(训练过程中的日志和状态变化图。)
|
||||
- [ ] 模型展示模块(用来展示训练结果,可视化训练模型)
|
||||
- [ ] 恶意软件检测模块。(参考手写体ONNX.js的网页,简单好用)
|
||||
|
||||
- 后端:
|
||||
|
||||
- [ ] 通信模块(参与者,与参与者之间通信的实现。可以通过报名和注册的方式参与其中。)
|
||||
- [ ] 训练模块(联邦学习引擎,主要通过联邦学习的方法,训练一个恶意软件模型)
|
||||
- [ ] 应用模块(恶意软件检测引擎,包括大量的恶意软件处理模块)
|
||||
@@ -82,13 +81,23 @@
|
||||
> 需要实现跨平台socket通信。如果弄完这个,发一篇论文不怕比不了也。
|
||||
|
||||
考虑使用一下技术展示成果:
|
||||
|
||||
- html css javascrip
|
||||
- bootstrap vue.js chart.js
|
||||
- python django mysql
|
||||
- bootstrap vue.js chart.js
|
||||
- python django
|
||||
- pytorch pysyft websocket
|
||||
|
||||
## 计划
|
||||
|
||||
### 每日计划
|
||||
|
||||
* 上午:三篇论文
|
||||
* 下午:三篇论文
|
||||
* 晚上:四篇论文
|
||||
|
||||
如何看论文:
|
||||
|
||||
### 每周计划
|
||||
|
||||
* 第九周(4.26-5.2)完成论文阅读计划。
|
||||
* 第十周(5.3-5.9)完成论文复现计划1——联邦学习论文复现
|
||||
@@ -98,6 +107,11 @@
|
||||
|
||||
> 这样一看似乎真的没有时间。自己不过也只剩一个月的时间做完毕设了。
|
||||
|
||||
### 每月计划
|
||||
|
||||
* 五月份计划
|
||||
* 六月份计划
|
||||
* 七月份计划
|
||||
* 八月份计划
|
||||
|
||||
## 收获
|
||||
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
## 计划
|
||||
|
||||
- [x] 五月份计划——ida 实现
|
||||
- [x] 五月份计划——prox实现
|
||||
- [X] 五月份计划——ida 实现
|
||||
- [X] 五月份计划——prox实现
|
||||
|
||||
## 收获
|
||||
|
||||
* 学习了websocket的使用,了解了Python异步通信编程。可以考虑使用Django快速构建本地的一个网站,用来展示和控制联邦学习过程。
|
||||
* 学习了websocket的使用,了解了Python异步通信编程。可以考虑使用Django快速构建本地的一个网站,用来展示和控制联邦学习过程。
|
||||
* 参数服务器与客户端通信只能使用权重来更新服务器上的模型。因为,如果使用梯度的话,必须每个epoch或者每一个batchsize都要上传grad。但是在训练过程中,可以经过多个epoch或者batchsize后,上传权重,进行合并。
|
||||
|
||||
75
工作日志/毕业设计.md
Normal file
75
工作日志/毕业设计.md
Normal file
@@ -0,0 +1,75 @@
|
||||
# 基于联邦学习的恶意软件检测系统研究
|
||||
|
||||
## 第一章:绪论
|
||||
|
||||
### 研究背景和意义
|
||||
|
||||
1. 恶意软件检测
|
||||
2. 数据的需求:数据隐私保护的需求、数据无标签问题的解决、数据非独立同分布训练模型、数据动态变化问题的解决
|
||||
3. 针对以上背景,研究基于机器学习的恶意软件检测模型构建方案有十分重要的意义
|
||||
|
||||
> 说实话,我主要是解决联邦学习中的问题,而非解决恶意软件检测的问题。为了解决数据中存在的问题,而非恶意软件相关的问题。如何让解决的问题与恶意软件检测进行强相关?而非与联邦学习强相关。
|
||||
>
|
||||
> 训练数据+训练算法->训练模型->恶意软件检测。
|
||||
>
|
||||
> 通过概述训练算法,解决训练数据中的需求和存在的问题,从而改善训练模型的准确率。而非直接更改模型,增强恶意软件检测的结果。需要把这个东西说明。
|
||||
|
||||
### 研究现状
|
||||
|
||||
1. 恶意软件检测的机器学习方案
|
||||
2. 恶意软件检测的联邦学习方案
|
||||
3. 恶意软件检测与半监督学习的方案
|
||||
4. 联邦学习的隐私保护、半监督学习、非独立同分布等开放问题的解决方案。
|
||||
|
||||
### 研究内容
|
||||
|
||||
1. 联邦隐私保护学习方案
|
||||
2. 联邦半监督学习方案
|
||||
3. 联邦非独立同分布学习方案
|
||||
|
||||
### 论文结构
|
||||
|
||||
## 第二章:理论基础
|
||||
|
||||
### 1 恶意软件检测原理
|
||||
|
||||
> 恶意软件主要分类、恶意软件主要分类的依据和数学表示(接口、行为?)、恶意软件主要的检测方法利用到的原理。
|
||||
|
||||
### 2 特征提取技术
|
||||
|
||||
> 特征提取技术,特征降维方法。动静态特征的提取方法。
|
||||
|
||||
### 3 联邦学习
|
||||
|
||||
> 联邦学习的基础原理。联邦学习的实现方案。联邦学习的分类和数学表示。联邦学习中的开放问题。
|
||||
|
||||
### 4 隐私保护方法
|
||||
|
||||
> 差分隐私、同态加密方法。实现了多方安全计算。
|
||||
|
||||
### 5 半监督学习原理
|
||||
|
||||
> 半监督学习解决的问题。半监督学习的目标问题。
|
||||
|
||||
### 6 非独立同分布的原理
|
||||
|
||||
> 非独立同分布的原理、表示方法(衡量标准)、产生的影响(论证非独立同分布是联邦学习解决问题中的关键问题。)
|
||||
|
||||
## 第三章:基于联邦学习的恶意软件检测算法
|
||||
|
||||
## 第四章:基于联邦半监督学习的恶意软件检测算法
|
||||
|
||||
## 第五章:针对非独立同分布问题的恶意软件检测算法
|
||||
|
||||
## 第六章:恶意软件检测算法的实验与结果
|
||||
|
||||
|
||||
## 第七章:恶意软件检测系统构建
|
||||
|
||||
1. 训练控制模块
|
||||
2. 网络通信模块
|
||||
3. 训练展示模块
|
||||
4. 实验结果对比模块
|
||||
|
||||
|
||||
## 结论
|
||||
7
工作日志/研究方向.md
Normal file
7
工作日志/研究方向.md
Normal file
@@ -0,0 +1,7 @@
|
||||
> 文章的研究方向,应该主要包括以下三个点。
|
||||
|
||||
## 数据的隐私性问题——联邦学习与隐私保护框架
|
||||
|
||||
## 数据的非独立同分布问题——非独立同分布&联邦学习算法
|
||||
|
||||
## 数据的标签缺失问题——半监督学习&联邦学习算法
|
||||
Reference in New Issue
Block a user