提交 86441d7a 编写于 作者: P peterq

add: doc

上级 806497b5
## pan-light, 百度网盘不限速客户端
# pan-light
```
_ _ _ _
| (_) | | | |
_ __ __ _ _ __ | |_ __ _| |__ | |_
| '_ \ / _` | '_ \ | | |/ _` | '_ \| __|
| |_) | (_| | | | | | | | (_| | | | | |_
| .__/ \__,_|_| |_| |_|_|\__, |_| |_|\__|
| | __/ |
|_| |___/
```
# pan-light
> pan-light 是一款不限速的百度网盘客户端, 基于 golang + Qt5 开发.
本项意义在于探究 golang 在图形界面客户端; web 服务端; 事件调度, websocket, p2p 长连接 等方面的应用和实践.
欢迎广大 golang 开发者参与本项目.
### 开发环境
1. golang环境
2. qt环境, 并设置环境变量
3. 安装proto buf
[软件官网](https://pan-light.peterq.cn) | [在线体验](https://pan-light.peterq.cn/doc) | [技术文档](https://pan-light.peterq.cn/doc) | [交流群: 438604465](https://jq.qq.com/?_wv=1027&k=52HpwTS)
## 特性
- 利用golang轻量级协程, 高并发分段下载, 可通过调节并发数达到最佳下载速度; 下载进度状态数据持久化到磁盘, 实现软件重启后可断点续传;
- 客户端本地实现简单代理, 突破百度防盗链, 将网盘视频喂给qt视频播放组件, 从而在线播放视频
- 在线体验: 用户无需下载, 通过网页即可在线体验本软件部分功能; 该系统可应用于其他客户端产品的在线体验;
- 在线体验原理: 闲置的个人pc, 通过 docker 开启若干个'虚拟机', 虚拟机内安装好了本软件以及vnc服务.
用户打开网页, 在服务端的调度下, 网页通过 web rtc 和闲置pc建立p2p连接.
闲置pc将会打通一条用户网页到docker内部'隧道'. 网页连接虚拟机vnc服务进行远程控制
## 关于
本项目是作者第一个完整的go语言实战项目. 希望对于一些找不到好的实战项目的go语言初学者能起到一点帮助,
欢迎你们阅读项目技术文档, 源码, 并参与到项目开发. 但也正由于作者也是初学者且项目工作量挺大,个人精力有限等一些原因, 在代码严谨方面还有待后续跟进.
比如,你会看到为了网络数据的传递方便, 项目用了大量的`map[string]interface{}`类型, 并且没有做严格类型判断; 有些低频竞争数据的锁也省掉了, 等等; 欢迎大家一起来完善.
## 软件截图
![截图1](https://qiniu-cdn.peterq.cn/pan-light/img/shot_1.png)
![截图2](https://qiniu-cdn.peterq.cn/pan-light/img/shot_2.png)
![截图3](https://qiniu-cdn.peterq.cn/pan-light/img/shot_3.png)
## 其他
- 本项目花费了作者大量的时间和精力, 如果你觉得本项目对你有帮助, 帮忙点个star.
- 在线体验系统的源码暂未push到github. 如果需要, 你可以打开在线体验页面, 按f12, 按控制台描述方式获取
- 作者QQ
![](https://qiniu-cdn.peterq.cn/pan-light/img/author_qq.jpg)
_book/
node_modules
# 在线演示系统
## 敬请期待
# golang
## todo...
# 环境搭建
本项目需要以下开发环境
* golang 1.12 主要编程语言
* qt5 实现界面显示
* protobuf 实现数据序列化
* docker 实现在线演示'虚拟机'
# protobuf
## todo...
# qt5
## todo...
# 下载器实现
## todo...
\ No newline at end of file
# 独立包实现
## todo...
# 并发下载
## todo...
# 断点续传
## todo...
# 速度统计
## todo...
# Qt & Go
## todo...
\ No newline at end of file
# 用plugin加速编译
## todo...
# qml异步调用go
## todo...
# 方法互调
## todo...
# Go中使用Qt
## todo...
../README.md
\ No newline at end of file
# pan-light
- [环境搭建](DevEnv/introduction.md)
- [golang](DevEnv/golang.md)
- [qt5](DevEnv/qt5.md)
- [protobuf](DevEnv/protobuf.md)
- 开始
- [目录结构](Start/directory.md)
- [项目初始化](Start/init.md)
- [Qt & Go](LangBind/introduction.md)
- [Go中使用Qt](LangBind/qt_in_go.md)
- qml & go通信
- [方法互调](LangBind/qml/call.md)
- [qml异步调用go](LangBind/qml/async.md)
- [用plugin加速编译](LangBind/plugin.md)
- [下载器实现](Downloader/introduction.md)
- [独立包设计](Downloader/package.md)
- [并发下载](Downloader/parallel.md)
- [速度统计](Downloader/speed_count.md)
- [断点续传](Downloader/point_continue.md)
- [服务端相关](Server/introduction.md)
- [频率限制器](Server/throttle.md)
- [时间轮算法](Server/time_wheel.md)
- [用户认证](Server/auth.md)
- [参数处理](Server/param.md)
- [错误处理](Server/error.md)
- [在线演示系统](Demo/introduction.md)
- rpc实现
- docker & vnc
- web rtc
- 即时通信
- 排队系统
- 匿名聊天-武侠角色
\ No newline at end of file
# 用户认证
## todo...
# 错误处理
## todo...
# 服务端相关
## todo...
\ No newline at end of file
# 参数处理
## todo...
# 频率限制器
## todo...
# 时间轮算法
## todo...
# 目录结构
## todo...
# 项目初始化
## todo...
{
"title": "pan-light doc",
"description": "pan-light 技术文档",
"author": "PeterQ<me@peterq.cn>",
"generator": "site",
"language": "zh-hans",
"gitbook": "3.2.3",
"styles": {
"website": "styles/website.css"
},
"links": {
"sidebar": {
"<i class='fa fa-fw fa-qq'></i> <strong> 开发者交流群 438604465</strong>": "https://jq.qq.com/?_wv=1027&k=52HpwTS"
}
},
"plugins": [
"-lunr",
"-search",
"-highlight",
"-fontsettings",
"prism",
"prism-themes",
"edit-link",
"anchors",
"github",
"search-plus",
"expand-active-chapter",
"expandable-chapters-interactive",
"theme-comscore",
"footer"
],
"pluginsConfig": {
"edit-link": {
"base": "https://github.com/peterq/pan-light/edit/doc/",
"label": "编辑本页面"
},
"github": {
"url": "https://github.com/peterq/pan-light"
},
"prism": {
"css": [
"prism-themes/themes/prism-vs.css"
]
},
"layout": {
"footerPath": "styles/footer.html"
}
}
}
<script>
var _hmt = _hmt || [];
(function () {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?b819a528e3992eceef52b9fd07e09cba";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
@charset "utf-8";body{letter-spacing:.2px;font-size:15px;font-family:Source Sans Pro,Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,"微软雅黑",Arial,sans-serif;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-ms-text-size-adjust:100%;-moz-text-size-adjust:100%;-webkit-text-size-adjust:100%}.markdown-section h1{padding-bottom:1rem;border-bottom:1px dashed #ccc}.markdown-section h2{padding-bottom:1rem;border-bottom:1px solid #ddd}.markdown-section a{padding:0 .5rem;color:#42b983;font-weight:600}.markdown-section a:hover{padding:0 .5rem;color:#3e915f;text-decoration:none;font-weight:600}.markdown-section code{margin:0 2px;padding:3px 2px;border-radius:2px;background-color:#f8f8f8;color:#364149;white-space:nowrap;font-family:Roboto Mono,Monaco,courier,monospace;-webkit-font-smoothing:initial;-moz-osx-font-smoothing:initial}.markdown-section pre>code{color:#525252}.markdown-section blockquote{position:relative;margin:2em 0;padding:9pt 24px 9pt 30px;border-left:4px solid #f66;border-top-right-radius:2px;border-bottom-right-radius:2px;background-color:#f8f8f8;color:#34495e}.markdown-section blockquote p{margin:0}.markdown-section blockquote:before{position:absolute;top:14px;left:-9pt;width:20px;height:20px;border-radius:100%;background-color:#f66;color:#fff;content:"!";text-align:center;font-weight:700;font-size:14px;font-family:Dosis,Source Sans Pro,Helvetica Neue,Arial,sans-serif;line-height:20px}.markdown-section ul li{padding:.8rem .2rem;background-color:#fff;font-weight:500;font-size:14px;line-height:1.6}pre[class*=language-]{background-color:#fbfbfb}.token.cdata,.token.comment,.token.doctype,.token.prolog{font-style:normal}.token.selector,.token.tag{color:#da0000}.token.attr-value{color:#4183c4}.token.boolean,.token.constant,.token.inserted,.token.number,.token.symbol,.token.url,.token.variable{color:#351ea5}.language-json .token.property,.token.class-name{color:#6f42c1}.versions-select select{display:block;margin:0;padding:.5em;width:100%;height:auto;border:1px solid #ccc;border-radius:0;background:#fff url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMTJweCIgeT0iMHB4IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzcHgiIHZpZXdCb3g9IjAgMCA2IDMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYgMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBvbHlnb24gcG9pbnRzPSI1Ljk5MiwwIDIuOTkyLDMgLTAuMDA4LDAgIi8+PC9zdmc+) no-repeat 100% center; color: inherit;vertical-align:middle;text-transform:none;font:inherit;line-height:1.2;-webkit-appearance:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-font-feature-settings:"liga","kern";-moz-appearance:none!important}.book-summary ul.summary li a:hover {text-decoration:none}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册