01 龙芯电脑 2
1.1 龙芯电脑和X86电脑的区别 2
1.2 龙芯电脑能运行Windows吗 4
1.3 龙芯电脑架构 6
1.3.1 电脑之心:CPU 6
1.3.2 龙芯3A3000 9
1.3.3 龙芯电脑主板 10
1.3.4 龙芯电脑有多快 12
1.3.5 龙芯电脑哪里买 13
1.4 龙芯软件生态 15
1.5 龙芯开发者 16
1.5.1 两种程序员 16
1.5.2 怎样成为龙芯开发者 18
1.6 如何学习本书 19
02 龙芯电脑的操作系统:Loongnix 22
2.1 Loongnix的来源和版本 22
2.2 安装Loongnix 23
2.2.1 下载Loongnix镜像文件 23
2.2.2 制作安装媒介:使用U盘或光盘 25
2.2.3 启动安装程序 28
2.2.4 硬盘分区设置 29
2.2.5 用户设置 31
2.3 Loongnix的桌面环境 32
2.3.1 开机和登录 32
2.3.2 桌面布局 33
2.3.3 开始菜单 34
2.4 Loongnix的软件工-具 35
2.4.1 常用软件 35
2.4.2 文件管理器 41
2.4.3 输入法 42
2.4.4 系统配置工具 42
2.4.5 安装和卸载软件 44
03 龙芯应用开发环境 48
3.1 应用开发环境概述 48
3.1.1 应用软件和基础软件 48
3.1.2 Loongnix的基础软件 50
3.2 龙芯开发工具概览 51
3.2.1 编程语言 51
3.2.2 函数库 52
3.2.3 平台引擎 53
3.2.4 浏览器 55
3.2.5 性能分析工具 56
3.2.6 集成开发环境 56
3.3 应用迁移“两步走”策略 57
3.4 龙芯应用公社 59
3.5 开启项目实战 60
04 久喝不厌的咖啡豆:Java 64
4.1 龙芯JDK概述 64
4.1.1 JDK工作流程 64
4.1.2 龙芯JDK 65
4.1.3 下载和安装JDK 68
4.2 龙芯Java应用开发 70
4.2.1 运行Tomcat网站 70
4.2.2 搭建个人博客 73
4.2.3 GlassFish服务器 74
4.2.4 图形界面编程AWT/Swing/JavaFX 76
4.2.5 第三方框架 81
4.2.6 解决乱码问题 82
4.3 Java本地接口 84
4.3.1 本地接口J N I 84
4.3.2 改进的本地接口JNA 87
4.3.3 Java程序的可迁移程度 88
4.4 龙芯Java性能 89
4.4.1 Java性能测试 89
4.4.2 Java性能优化 94
4.4.3 中间件负载均衡优化 94
4.5 项目实战:龙芯电脑移植Hadoop 95
4.5.1 Hadoop简介 95
4.5.2 编译依赖问题 97
4.5.3 代理服务器问题 97
4.5.4 编译时耗 98
4.5.5 测试搭建Hadoop集群 99
4.5.6 迁移大型应用软件的一般套路 106
05 永不消逝的0和1:数据库 110
5.1 龙芯MySQL开发 110
5.1.1 安装MySQL 111
5.1.2 数据查询 112
5.1.3 在Java中访问MySQL 113
5.1.4 龙芯电脑MySQL常见问题 116
5.2 神通数据库 118
5.2.1 安装和配置 119
5.2.2 SQL交互工具 120
5.2.3 安装ODBC 121
5.3 形形色色的NoSQL 123
5.3.1 什么是NoSQL 123
5.3.2 MongoDB 124
5.4 TPCC性能测试 126
5.4.1 配置数据库 127
5.4.2 运行TPCC测试 134
5.5 集群方案 134
5.6 项目实战 136
5.6.1 案例1: Qt访问神通数据库 136
5.6.2 案例2:龙芯移植RethinkDB 139
06 信息门户:浏览器 150
6.1 龙芯支持的Firefox和Chromium 150
6.2 浏览器编程语言和框架 150
6.2.1 JavaScript和Ajax 150
6.2.2 jQuery 155
6.2.3 AngularJS 159
6.2.4 Bootstrap 161
6.2.5 HTML5 165
6.2.6 WebGL 167
6.2.7 浏览器插件 173
6.2.8 龙芯浏览器的兼容性问题 175
6.3 浏览器的辅助工具 175
6.3.1 调试工具 175
6.3.2 性能测试工具 177
6.4 C/B/S:本地程序嵌入Web页面 178
6.4.1 CEF框架 178
6.4.2 Electron 180
6.5 Node.js: 服务器端的JavaScript 180
6.6 项目实战 183
6.6.1 案例1:龙芯应用公社客户端 183
6.6.2 案例2:浏览器插件的通用替代方案 185
07 MFC替代者:Qt图形库 198
7.1 MFC和Qt的对比 198
7.2 龙芯Qt基础 199
7.2.1 可视化设计器Qt Creator 199
7.2.2 Qt控件 205
7.2.3 Qt显示图表 206
7.2.4 Qt播放视频 210
7.2.5 在Python中调用Qt 212
7.2.6 Qt自带Demo 214
7.3 Qt程序嵌入网页 215
7.3.1 QtWebkit 216
7.3.2 QtWebEngine 217
7.4 桌面程序特性 219
7.4.1 程序自启动 219
7.4.2 托盘图标 220
7.4.3 消息气泡 221
7.5 Qt应用性能优化 222
7.5.1 GCC编译优化 222
7.5.2 多核优化 223
7.5.3 性能分析工具 223
7.5.4 Qt库性能测试工具 225
7.6 项目实战:安装程序制作工具 227
7.6.1 什么是安装程序制作工具 227
7.6.2 准备要打包的文件 228
7.6.3 编写打包器 232
7.6.4 测试安装程序 234
08 开源宠儿:PHP/Python/Ruby 238
8.1 PHP/Python/Ruby和Java的比较 238
8.2 龙芯PHP开发 239
8.2.1 Loongnix的PHP环境 240
8.2.2 PHP访问MySQL 241
8.2.3 搭建Discuz!论坛 245
8.2.4 常见问题 249
8.3 龙芯Python开发 253
8.3.1 网页爬虫 253
8.3.2 Django框架 255
8.3.3 常见问题 259
8.4 龙芯Ruby开发 261
8.4.1 Loongnix的Ruby环境 262
8.4.2 Ruby on Rails框架 262
8.4.3 Ruby大型应用 266
8.5 项目实战:动态壁纸 267
09 虚拟现实:3D开发 282
9.1 龙芯3D概述 282
9.1.1 3D架构 282
9.1.2 显卡支持 284
9.1.3 大型3D应用 286
9.2 龙芯3D编程 287
9.2.1 OpenGL 287
9.2.2 Qt的3D编程 292
9.2.3 Python的3D编程 299
9.3 3D引擎 301
9.3.1 三维地球OSG 301
9.3.2 游戏引擎OGRE 302
9.4 3D性能优化 303
9.4.1 3D性能测试工具 303
9.4.2 性能优化建议 305
9.5 项目实战 307
9.5.1 案例1:龙芯移植OGRE游戏引擎 307
9.5.2 案例2:龙芯移植NASA World Wind 310
10 奔向云端:Docker虚拟机 322
10.1 龙芯Docker概述 322
10.1.1 为什么要有容器技术 322
10.1.2 Docker功能列表 326
10.1.3 制作Loongnix最小镜像 328
10.1.4 创建和运行容器 329
10.1.5 在服务器之间传递容器 333
10.2 深入定制龙芯镜像 334
10.2.1 镜像的层次结构 334
10.2.2 解决最小镜像的vi乱码问题 335
10.2.3 制作常用命令行工具镜像 337
10.2.4 制作Apache/PHP/MySQL服务器镜像 340
10.2.5 龙芯镜像提交社区 344
10.3 龙芯的云平台:搭建Swarm集群 345
10.3.1 Swarm集群架构 346
10.3.2 Swarm集群管理 347
10.3.3 Portainer图形化管理工具 350
10.3.4 部署服务 351
10.3.5 节点下线和故障容错 354
10.3.6 Swarm和Kubernetes的对比 358
10.4 项目实战 359
10.4.1 案例1:龙芯电脑移植Portainer 359
10.4.2 案例2:专用云平台的典型架构 366