信笺
2022
04-01
收到来信,甚是开心良久💌
没有更多的黑历史了_(:з」∠)_
学习 - Linux
54
ArchLinux + DDE 安装教程
DTK常用和测试代码片
DTK的历史起源、发展,和简单入门(精华篇)
Deepin / UOS 中配置 DTK 开发环境
Deepin Custom Modify Window Corner Rounding Size
Deepin 开发任务栏网速插件 lfxSpeed
Deepin 愿望墙:社区插件等需求调研结果
Deepin 自定义修改窗口圆角大小
Deepin、DDE 的历史起源与发展(附 Deepin 所有版本的dde截图)
Deepin 任务栏网速插件推荐 NetSpeed(重构 lfxSpeed)
Linux or Mac 安装 gitbook 3.2.3 失败解决方案
Linux 中用 dh_make 将 Qt + CMake 项目打包为 deb 文件
Linux 该如何自我系统的学习「心路」?
Linux上面使用lintian检测deb包报错的解决方案
Linux下使用gcc生成动态库.so和调用(图文并茂,坑已踩完)
Linux下使用gcc生成静态库.a和调用(图文并茂,坑已踩完)
Linux中apt与apt-get命令的区别与解释
Linux中fork创建(兄弟)子进程,验证进程之间全局变量不共享,exec函数族
Linux中man手册,阻塞和非阻塞,stat,文件操作和遍历,文件描述符复制dup()
Linux中使用使用互斥量(锁)Mutex来操持多线程同步执行pthread_mutex_lock()
Linux中创建多线程实例pthread_create()
Linux中创建守护进程setsid()
Linux中原子操作,死锁原因以及解决方法,读写锁的属性和函数使用pthread_rwlock_wrlock()
Linux中多线程使用信号量(信号灯),和sem_wait()函数使用
Linux中多线程使用条件变量阻塞线程,和pthread_cond_wait()函数使用
Linux中多线程操作函数pthread_exit()、pthread_jion()、pthread_detach()、pthread_cancel()
Linux中孤儿进程,僵尸进程,进程回收wait、waitpid函数
Linux中文件操作,软硬链接ln,用户权限chmod、chown,文件查找和检索find、grep,压缩gz,bz2
Linux中普通的进程间通信方式--有名管道fifo(适用于无血缘关系的进程)
Linux中未决信号集和阻塞信号集的状态关系sigaddset,以及捕捉信号函数signal、sigaction
Linux中父子进程、兄弟子进程之间通信方式--匿名管道pipe(适用于有血缘关系的进程)
Linux中系统信号初识,和函数kill,raise,abort,alarm,setitimer
Linux中虚拟地址空间、pcb、文件描述符、C库函数工作流程、标准库和系统库函数区别
Linux中进程间的通信方式--内存映射区mmap()
Linux学习:root,apt,vim,gcc,静动态库制作和使用
PicGo在uos&&deepin系统运行失败:chrome-sandbox is owned by root and has mode 4755
Qt 项目用 doxygen 生成 .qch,嵌入文档到 Assistants
QtCreator 中自定义项目例子置于“欢迎-实例”中
Qv2ray 检测到 DDE 环境,提示弹窗:Deepin 设置代理错误
Shell、Bash、CMD、PowerShell 的区别
Sunny 截图上架 Microsoft Store 及Linux商店的指北
gcc和g++的区别,编译.c和.cpp文件的区别
gcc工作流程:预处理,编译,汇编,链接
gdb调试器的使用,初探全貌
使用gpg提交遇到error:gpg数据签名失败fatal:写提交对象失败
在 Deepin 研发 DDE 的时光
在Linux中,编写入门的makefile文件,然后逐渐迭代
在MacOS上面通过brew命令安装gcc编译器集
对 GNU/Linux 介绍、ArchLinux社区氛围、DDE移植Arch流程
小米AX6S刷OpenWrt和开启OpenClash,及刷回官网固件
小米路由器 R4A 刷原生 OpenWrt 后的风景
Sunny Screenshot 具有截图 & 钉图的跨平台软件,亦支持“OCR”和“图片翻译”功能
阿里云服务器 nginx 上部署 SSL 证书实现 https 访问
阿里云服务器部署 Hexo 博客
学习 - C/C++ 序二 经验
24
C++ 实现智能指针:shared_ptr 和 unique_ptr
C++ 标志位使用:校验、添加、删除
C++ 类的六个特殊成员函数
LPSTR/LPCSTR/LPTSTR/HWND/HANDLE/HMODULE/HINSTANCE 等含义和区别
Lambda 表达式详解
Log:日志之 Spdlog 极简用法示范『二』
Log:日志之 Spdlog 核心构成『三』
Log:日志选型调研『一』
Misleading indentation; statement is not part of the previous 'if'
Qt新弹窗不响应键盘按键,难道也是无焦点?
STL 中给 vector 去重的三种方法
STL 的 std::set 创建自定义结构体的对象,定义严格弱序的比较函数
Visual Studio 2019 进行远程调试
Visual Studio 断点调试之箭头偏移进错函数,怪异捉🐛记
WinDbg:入门分析 dmp 文件『一』
WinDbg:调试之附加进程生成 dmp『二』
Windows 编程之 WINUSERAPI 和 WINAPI 区别
“.inl”文件在C++工程的意义
一个微软自带的 notepad 所导致的问题
入门分析,多线程竞争为何不安全?
创建 QKeySequenceEdit() 后,显示方块■◆乱码
微软 SDK 导致的项目编译失败哦!
简洁且易用的ChatGPT&AI的桌面应用程序ThinkyMate
获取当前模块 EXE / DLL 的版本号信息
学习 - C/C++ 序一 技法
21
C++ 深入虚函数表
C++ 重载(overload)、重写(overrride)、重定义(redefine)总结
C语言中的 static变量(全局和局部)、static函数总结
Make、Makefile、Cmake、QMake 的区别
OpenMesh入门,安装,运行示例Hello World
OpenMesh模型分割:区域增长实现
QStyle自定义重绘QSlider控件二
Qt 编程中 namespace Ui { class Widget; } 解析
Qt5 QTreeWidget使用 创建具有多级联动和复选框的树形控件
STL之仿函数、谓词、内建函数对象、适配器、常用算法
STL之常用容器string、vector、deque、stack、list、set、map讲解
STL之类型异常处理、类型转换
STL模板set/multiset容器插入自定义数据类型排序
STL模板,内建函数对象(仿函数)的讲解运用和示范:greater()
STL模板,适配器的讲解运用和示范:函数对象适配器、函数指针适配器、成员函数适配器
C++中sizeof()运算符的的深入理解
C++类型转换`static_cast`,`dynamic_cast`,`const_cast`,`reinterpret_cast`
在子类里使用 using 父类 父类函数名fun
理解 C++ 中的头文件和源文件的作用
输出乱码原因:古文码、口字码、符号码、问号码、棍拷码
重绘的QStyle中sizeFromContents()没有被调用
学习 - MacOS
20
Linux 该如何自我系统的学习「心路」?
MacOS 安装 Parallels Desktop,再安装 UOS 20 + QtCreaor,及搭建 DTK 开发环境
MacOS 安装 QtCreator 5.9.8 作 C++ 的 IDE 开发工具
MacOS 的 VMware Fusionlimian 中安装 Linux Deepin15.11
Mac的邮件客户端使用--登录GMail邮箱和QQ邮箱的解决方案
Shell、Bash、CMD、PowerShell 的区别
Sunny 截图上架 Microsoft Store 及Linux商店的指北
gcc和g++的区别,编译.c和.cpp文件的区别
macOS执行npm install -g hexo-cli失败的解决方法
使用gpg提交遇到error:gpg数据签名失败fatal:写提交对象失败
修改typora主题的字体
在 Mac 编译成功运行 qt5.15 源码:debug 和 release 版本
在Linux中,编写入门的makefile文件,然后逐渐迭代
在MacOS10.14.6安装最新gdb8.3的详细教程,含可能遇到的所有坑(网上最新教程)
在MacOS上面通过brew命令安装gcc编译器集
在MacOS解决"修改“Applications”需要输入管理员名称和密码"的方法
在Mac上打不开“uPic.dmg”,因为 Apple 无法检查其是否包含恶意软件
在Mac上面安装HomeBrew失败的解决方案:修改hosts文件
在Mac使用Wine运行Windows软件:PanDownload_Beat(非虚拟机)
Sunny Screenshot 具有截图 & 钉图的跨平台软件,亦支持“OCR”和“图片翻译”功能
学习 - 底层兼架构
12
C++ 深入虚函数表
C++ 设计模式(8大设计原则、23种设计模式)李建忠
CMake 设置 Target 输出目录和后缀名
CMake 之 BUILD_SHARED_LIBS 和 CMAKE_BUILD_TYPE 用法教程
Make、Makefile、Cmake、QMake 的区别
QT源码分析QObject
Qt 编程中 namespace Ui { class Widget; } 解析
乱码原因产生和解决方案
位(bit)、字节(Byte)、MB(兆位)之间的换算关系
在子类里使用 using 父类 父类函数名fun
理解 C++ 中的头文件和源文件的作用
输出乱码原因:古文码、口字码、符号码、问号码、棍拷码
专栏 - QtExamples系列
61
C++ 实现智能指针:shared_ptr 和 unique_ptr
DTK 基础教程:自定义控件规范
DTK常用和测试代码片
Deepin 开发任务栏网速插件 lfxSpeed
Deepin、DTK 文档参考资料集合
Deepin 任务栏网速插件推荐 NetSpeed(重构 lfxSpeed)
MacOS 安装 Parallels Desktop,再安装 UOS 20 + QtCreaor,及搭建 DTK 开发环境
Model-View-Delegate:"模型-视图-代理"的讲解
QComboBox和QPlainTextEdit的讲解和使用
QFileSystemModel数据模型获取本机文件系统的使用
QNetworkAccessManager,QNetworkReply,QNetworkRequest实现高层网络的操作http
QSlider、QScrollBar、QProgressBar控件的联动
QString在2,8,10,16进制之间转换
QString常用的功能函数的介绍和用法
QStyle/DTK重绘Qt-GUI已有控件,举例QScrollBar
QStyle/DTK重绘自定义需求控件,举例MySwitchButton
QStyle之PenStyle的CustomDashLine使用
QStyle自定义重绘QRubberBand控件
QStyle自定义重绘QScrollBar
QStyle自定义重绘QSlider控件
QStyle自定义重绘QSlider控件二
QStyle设置界面的外观和QCommonStyle继承关系图讲解和使用
QTableView和QStandardItemModel(以及代理的例子)的用法
QTableWidget表格组件的属性介绍和使用
QTimer和QDateTime的讲解和使用
Qt 信号和槽原理分析
Qt 项目(CMake)设置国际化支持
Qt4和Qt5的信号和槽的使用差异
QtCreator 中自定义项目例子置于“欢迎-实例”中
QtCreator此IDE的界面基本组成和入门使用讲解(Win,Linux,MacOS搭配不同版本 Qt)
小技巧:QtCreator用快捷键秒实现,声明在基类中重写的派生类(纯)虚函数
Qt新弹窗不响应键盘按键,难道也是无焦点?
Sunny 截图上架 Microsoft Store 及Linux商店的指北
TCP通信之QTcpServer和QTcpSocket,服务器和客户端通讯
Upd通信之QUdpSocket的unicast单播、broadcast广播、multicast组播
VS2017调试Qt源码
VS2022 And QtCreator10 调试 Qt 源码教程
Win10 安装 QtCreator + Visual Studio 2015 作为 C++ 的 IDE 开发工具
Win10 的 VMware 中安装 UOS 20,在 UOS 中安装 QtCreator 及搭建 DTK 开发环境
Win10 安装 CLion + CMake + MSVC / MinGW 作 QT 开发
getOpenFileName标准对话框和自定义对话框的使用
在Win10环境下安装QtCreator5.9.8作为c++的IDE开发工具
主机信息查询QHostInfo和QNetworkInterface查询IP等
仪表盘 QSlider + 数值显示 QLCD_NUmber 的介绍及用法
元对象系统 MOC (Meat-Object System) 的对象 MetaObject 和(含动态)属性 Propert 的用法
分享如何拥有一份私人的『开源代码签名证书』
列表控件QListWidget和工具按钮QToolButton的和用法
创建 QKeySequenceEdit() 后,显示方块■◆乱码
在 Mac 编译成功运行 qt5.15 源码:debug 和 release 版本
基于 QT 开发的 FLIPPED 一款简易且漂亮的跨平台截图软件
多文档界面MDI(Multi-document Interface)的实现,QMdiArea使用
小技巧:Design设计师里,无法拖拽action到toolbar里
小技巧:设置`QToolBox`的每一页page的使用单独的布局(`QTabWidget`同理)
Sunny Screenshot 具有截图 & 钉图的跨平台软件,亦支持“OCR”和“图片翻译”功能
标准对话框之文件、颜色、字体、保存、消息、输入等对话框使用
滑动条QSlider和QAbstractSlider的介绍和用法
目录树组件QTreeWidget和停靠区域组件QDockWidget的用法
简洁且易用的ChatGPT&AI的桌面应用程序ThinkyMate
自定义和标准对话框的用法
讲解自定义和标准对话框的使用,以及多窗口之间的交互解决
重绘的QStyle中sizeFromContents()没有被调用
学习 - Qt
85
DTK 基础教程:自定义控件规范
DTK常用和测试代码片
DTK的历史起源、发展,和简单入门(精华篇)
Deepin / UOS 中配置 DTK 开发环境
Deepin 开发任务栏网速插件 lfxSpeed
Deepin、DDE 的历史起源与发展(附 Deepin 所有版本的dde截图)
Deepin、DTK 文档参考资料集合
Deepin 任务栏网速插件推荐 NetSpeed(重构 lfxSpeed)
Linux 中用 dh_make 将 Qt + CMake 项目打包为 deb 文件
MacOS 安装 Parallels Desktop,再安装 UOS 20 + QtCreaor,及搭建 DTK 开发环境
MacOS 安装 QtCreator 5.9.8 作 C++ 的 IDE 开发工具
Misleading indentation; statement is not part of the previous 'if'
Model-View-Delegate:"模型-视图-代理"的讲解
QComboBox和QPlainTextEdit的讲解和使用
QFileSystemModel数据模型获取本机文件系统的使用
QNetworkAccessManager,QNetworkReply,QNetworkRequest实现高层网络的操作http
QPushButton使用从右往左的显示之LayoutDirection
QSlider、QScrollBar、QProgressBar控件的联动
QString在2,8,10,16进制之间转换
QString常用的功能函数的介绍和用法
QStyle/DTK重绘Qt-GUI已有控件,举例QScrollBar
QStyle/DTK重绘自定义需求控件,举例MySwitchButton
QStyle之PenStyle的CustomDashLine使用
QStyle自定义重绘QRubberBand控件
QStyle自定义重绘QScrollBar
QStyle自定义重绘QSlider控件
QStyle自定义重绘QSlider控件二
QStyle设置界面的外观和QCommonStyle继承关系图讲解和使用
QTableView和QStandardItemModel(以及代理的例子)的用法
QTableWidget表格组件的属性介绍和使用
QTimer和QDateTime的讲解和使用
QTreeWidget和QDockWidget的讲解和使用
QT源码分析QObject
Qt Creator 关闭.cpp文件右侧的黄色警告
Qt 信号和槽原理分析
Qt 项目(CMake)设置国际化支持
Qt 项目用 doxygen 生成 .qch,嵌入文档到 Assistants
Qt 编程中 namespace Ui { class Widget; } 解析
Qt4和Qt5的信号和槽的使用差异
Qt5 QTreeWidget使用 创建具有多级联动和复选框的树形控件
QtCreator 中自定义项目例子置于“欢迎-实例”中
QtCreator 安装 SDK,在 MSVC 编译模式下使用 CDB 调试器
QtCreator此IDE的界面基本组成和入门使用讲解(Win,Linux,MacOS搭配不同版本 Qt)
小技巧:QtCreator用快捷键秒实现,声明在基类中重写的派生类(纯)虚函数
QtCreator设置代码美化astyle之Artistic
`Qt图片的绘图类`QPixmap`/`QBitmap`/`QImage`/`QPicture`区别和使用
Qt新弹窗不响应键盘按键,难道也是无焦点?
TCP通信之QTcpServer和QTcpSocket,服务器和客户端通讯
Upd通信之QUdpSocket的unicast单播、broadcast广播、multicast组播
VS2017调试Qt源码
VS2019调试Qt5时QString显示为内存地址而非字符串
VS2022 And QtCreator10 调试 Qt 源码教程
Win10 安装 QtCreator + Visual Studio 2015 作为 C++ 的 IDE 开发工具
Win10 的 VMware 中安装 UOS 20,在 UOS 中安装 QtCreator 及搭建 DTK 开发环境
Win10 安装 CLion + CMake + MSVC / MinGW 作 QT 开发
getOpenFileName标准对话框和自定义对话框的使用
Qt之proxy()代理探究
Qt绘画扇形drawPie()和反三角函数qAcos()
Qt网络编程之使用cookie和ssl
在Win10环境下安装QtCreator5.9.8作为c++的IDE开发工具
主机信息查询QHostInfo和QNetworkInterface查询IP等
仪表盘 QSlider + 数值显示 QLCD_NUmber 的介绍及用法
修改 Doxygen 主题,生成 Qt 风格的文档
元对象系统 MOC (Meat-Object System) 的对象 MetaObject 和(含动态)属性 Propert 的用法
列表控件QListWidget和工具按钮QToolButton的和用法
创建 QKeySequenceEdit() 后,显示方块■◆乱码
在 Mac 编译成功运行 qt5.15 源码:debug 和 release 版本
在子类里使用 using 父类 父类函数名fun
基于 QT 开发的 FLIPPED 一款简易且漂亮的跨平台截图软件
多文档界面MDI(Multi-document Interface)的实现,QMdiArea使用
如何给上游Qt提交Bug反馈和贡献代码Patch?
小技巧:Design设计师里,无法拖拽action到toolbar里
小技巧:设置`QToolBox`的每一页page的使用单独的布局(`QTabWidget`同理)
愿编程不再乱码(含Qt)-根因深究
Sunny Screenshot 具有截图 & 钉图的跨平台软件,亦支持“OCR”和“图片翻译”功能
标准对话框之文件、颜色、字体、保存、消息、输入等对话框使用
根据给定(任意)的QString文本, 获取其矩形大小
滑动条QSlider和QAbstractSlider的介绍和用法
目录树组件QTreeWidget和停靠区域组件QDockWidget的用法
简洁且易用的ChatGPT&AI的桌面应用程序ThinkyMate
自定义和标准对话框的用法
讲解自定义和标准对话框的使用,以及多窗口之间的交互解决
输出乱码原因:古文码、口字码、符号码、问号码、棍拷码
重绘的QStyle中sizeFromContents()没有被调用
高分屏、分辨率、DPI、PPI,及 Qt 处理高分屏
学习 - Windows
35
LPSTR/LPCSTR/LPTSTR/HWND/HANDLE/HMODULE/HINSTANCE 等含义和区别
Qt新弹窗不响应键盘按键,难道也是无焦点?
STL 中给 vector 去重的三种方法
STL 的 std::set 创建自定义结构体的对象,定义严格弱序的比较函数
Shell、Bash、CMD、PowerShell 的区别
Sunny 截图上架 Microsoft Store 及Linux商店的指北
VS2017调试Qt源码
VS2019调试Qt5时QString显示为内存地址而非字符串
VS2022 And QtCreator10 调试 Qt 源码教程
Visual Studio 2019 进行远程调试
Visual Studio 断点调试之箭头偏移进错函数,怪异捉🐛记
Visual Studio实际仅增删数行,却显示文件所有行均发生变更
Visual Studio生成.vs隐藏文件夹,导致Git命令错误
Win10 安装 CLion + CMake + MSVC / MinGW 作 QT 开发
WinDbg:入门分析 dmp 文件『一』
WinDbg:调试之附加进程生成 dmp『二』
Windows 打造颜值和实用可媲美 Linux 的终端:Pwsh7 + OhMyPosh
Windows 编程之 WINUSERAPI 和 WINAPI 区别
Windows-Terminal 配置 OhMyPosh 美化 GitBash
dot 绘图语言
iPhone 13 Pro 更换『移植电芯』和『超容电池』🔋体验
iPhone 13P 换超容电池,一年实记的"电池循环次数-容量"柱状图
Win10的20H2使用VS2019,拖曳窗口会崩溃
“.inl”文件在C++工程的意义
一个微软自带的 notepad 所导致的问题
为 Windows10 22H2 启用 Microsoft Copilot 功能
入门分析,多线程竞争为何不安全?
分享如何拥有一份私人的『开源代码签名证书』
创建 QKeySequenceEdit() 后,显示方块■◆乱码
微软 SDK 导致的项目编译失败哦!
愿编程不再乱码(含Qt)-根因深究
Sunny Screenshot 具有截图 & 钉图的跨平台软件,亦支持“OCR”和“图片翻译”功能
由于找不到VCRUNTIME140D.dll,无法继续执行代码
简洁且易用的ChatGPT&AI的桌面应用程序ThinkyMate
获取当前模块 EXE / DLL 的版本号信息
学习 - Git
6
git submodule 基本用法
Key is invalid. You must supply a key in OpenSSH public key format
Visual Studio实际仅增删数行,却显示文件所有行均发生变更
Windows-Terminal 配置 OhMyPosh 美化 GitBash
Git 提交两次commit到同一分支,被糅合为一次Marge Request的解决方法:cherry-pick
GitHub加载图片丢失解决方案
学习 - Hexo
7
Hexo 开启双线程解析部署到 GitHub + Aliyun
Hexo 部署 valine 评论的 leancloud 设置
hexo博客插入视频bilibili 和 youtube的mv视频《take me hand 》
macOS执行npm install -g hexo-cli失败的解决方法
刚买的域名怎么绑定自己博客?再白嫖一年的SSL,使用https访问博客
阿里云服务器 nginx 上部署 SSL 证书实现 https 访问
阿里云服务器部署 Hexo 博客
专栏 - 项目实战开发
8
Deepin 开发任务栏网速插件 lfxSpeed
Deepin 任务栏网速插件推荐 NetSpeed(重构 lfxSpeed)
QTreeWidget和QDockWidget的讲解和使用
Sunny 截图上架 Microsoft Store 及Linux商店的指北
分享如何拥有一份私人的『开源代码签名证书』
基于 QT 开发的 FLIPPED 一款简易且漂亮的跨平台截图软件
Sunny Screenshot 具有截图 & 钉图的跨平台软件,亦支持“OCR”和“图片翻译”功能
简洁且易用的ChatGPT&AI的桌面应用程序ThinkyMate
学习 - C/C++ 序三 商业
4
Sunny 截图上架 Microsoft Store 及Linux商店的指北
分享如何拥有一份私人的『开源代码签名证书』
基于 QT 开发的 FLIPPED 一款简易且漂亮的跨平台截图软件
Sunny Screenshot 具有截图 & 钉图的跨平台软件,亦支持“OCR”和“图片翻译”功能
生活 - 闲暇的趣闻
20
MateBoook x pro 2020 升级 1T 固态
Telegram Download Default Chat Wallpaper
WPS 的缩写含义
iPhone 13 Pro 更换『移植电芯』和『超容电池』🔋体验
iPhone 13P 换超容电池,一年实记的"电池循环次数-容量"柱状图
三亚之旅,让键盘先长几天草
上海之旅,再让键盘长几天草
上班两年干了些啥?该思考人生
人的一生七八十年,到底该如何度过?
人间烟火-藕汤篇
初次上班的感觉
又是一年春好色(辛丑年)
在 Deepin 研发 DDE 的时光
收到来信,甚是开心良久💌
有些快乐是真的快乐吗?
二十岁的所困惑所思考
眠` 忆卿
短时间如何清晰阐述你的需求、观点和目的?
第一次开车车
东京 ⇄ 京都游记⛩️
学习 - AIGC
2
为 Windows10 22H2 启用 Microsoft Copilot 功能
简洁且易用的ChatGPT&AI的桌面应用程序ThinkyMate
学习 - OpenMesh
2
OpenMesh入门,安装,运行示例Hello World
OpenMesh模型分割:区域增长实现
学习 - Doxygen
5
Qt 项目用 doxygen 生成 .qch,嵌入文档到 Assistants
doxygen介绍和安装和在Linux下使用
doxygen添加枚举在生成的文档里面显示
doxygen生成截图和注释图片在文档里面查看
修改 Doxygen 主题,生成 Qt 风格的文档
学习 - 代理
4
Qv2ray 检测到 DDE 环境,提示弹窗:Deepin 设置代理错误
在MacOS解决"修改“Applications”需要输入管理员名称和密码"的方法
小米AX6S刷OpenWrt和开启OpenClash,及刷回官网固件
小米路由器 R4A 刷原生 OpenWrt 后的风景
生活 - 阅读
2
读《如何阅读一本书》
读《找对英语学习方法的第一本书》