From 0f3cfc38ad85bab52ba223734add72994e115fda Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 20 May 2018 22:24:04 +0800 Subject: [PATCH 001/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index ecdae90..1558078 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -34,6 +34,7 @@ * busybox: * Test DPC APK Download for Android: * fastlane screenshots for Android: +* genymotion: * 奇兔刷机: * Android Studio移动鼠标显示悬浮提示的设置方法: @@ -121,6 +122,10 @@ * MIUI ROM适配之旅第一天——认识Android手机: * H60-L01 EMUI3.0 ROOT 傻瓜教程: +* butterknife: +* xUtils3: +* jpinyin: + ## Jack * Android 新一代编译 toolchain Jack & Jill 简介: @@ -191,12 +196,42 @@ ## XMPP * -* Openfire 的安装和配置: + +* rfc3920: +* rfc3920翻译: + + +* smack: +* smack source: +* asmack: +* smack4-doc: * smack4-doc-zh: + * Android之基于XMPP协议即时通讯软件(一): * Android之基于XMPP协议即时通讯软件(二): * Android之基于XMPP协议即时通讯软件(三): +* Openfire 的安装和配置: +* Jabber 协议 概述: +* Smack编写jabber客户端: +* Subscriptions 运行机制: + +## Mina + +* +* Mina2.0快速入门: +* Mina2.0框架源码剖析(一): +* Mina2.0框架源码剖析(二): +* Mina2.0框架源码剖析(三): +* Mina2.0框架源码剖析(四): +* Mina2.0框架源码剖析(五): +* Mina2.0框架源码剖析(六): +* Mina2.0框架源码剖析(七): +* Mina2.0框架源码剖析(八): + +* MINA2官方教程翻译: + + ## Android常见路径说明 * /system/app/pkg_name 系统应用 From a9bc4427da2eca9ef9328e54fe456e1c07aa591d Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 27 May 2018 16:25:35 +0800 Subject: [PATCH 002/234] update --- ...5\246\344\271\240\344\271\213\350\267\257.md" | 16 +++++++++++----- ...5\246\344\271\240\344\271\213\350\267\257.md" | 4 ++++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 1558078..fd1d863 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -200,16 +200,23 @@ * rfc3920: * rfc3920翻译: - * smack: * smack source: * asmack: * smack4-doc: * smack4-doc-zh: -* Android之基于XMPP协议即时通讯软件(一): -* Android之基于XMPP协议即时通讯软件(二): -* Android之基于XMPP协议即时通讯软件(三): +* 环信即时通讯云: +* Android之基于XMPP协议即时通讯软件(一): +* Android之基于XMPP协议即时通讯软件(二): +* Android之基于XMPP协议即时通讯软件(三): + +* 基于xmpp openfire smack开发之openfire介绍和部署[1]: +* 基于xmpp openfire smack开发之smack类库介绍和使用[2]: +* 基于xmpp openfire smack开发之Android客户端开发[3]: +* 基于xmpp openfire smack开发之Android消息推送技术原理分析和实践[4]: + +* 基于XMPP协议的Android聊天IM客户端: * Openfire 的安装和配置: * Jabber 协议 概述: @@ -231,7 +238,6 @@ * MINA2官方教程翻译: - ## Android常见路径说明 * /system/app/pkg_name 系统应用 diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index a52f67d..36e2213 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -778,6 +778,10 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * * +## exe4j + +* + ## JBoss The JBoss AS community project has been renamed to the WildFly community project, which has a new home at wildfly.org. The JBoss name now only applies to the commercially supported product, called JBoss EAP, which is derived from the WildFly community project and is available at . From fc68084137ecf610784652566981463fe179c035 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 24 Jun 2018 21:03:08 +0800 Subject: [PATCH 003/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 64 +++++++++++++------ ...46\344\271\240\344\271\213\350\267\257.md" | 15 +++++ ...46\344\271\240\344\271\213\350\267\257.md" | 10 +++ 3 files changed, 69 insertions(+), 20 deletions(-) create mode 100644 "Kotlin\345\255\246\344\271\240\344\271\213\350\267\257.md" diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index fd1d863..06e0251 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -19,6 +19,8 @@ * Git repositories on android: * +* +* Android Support Overview: * 安卓巴士: * eoeandroid: @@ -119,12 +121,34 @@ * Android Studio优化技巧: * Android Studio相关目录解析: +* android程序自动化生成apk的过程: + * MIUI ROM适配之旅第一天——认识Android手机: * H60-L01 EMUI3.0 ROOT 傻瓜教程: * butterknife: * xUtils3: * jpinyin: +* Android-Universal-Image-Loader: + +## Android Studio插件 + +* ADB Idea 方便卸载apk,删除缓存: +* Android ButterKnife Zelezny ButterKnife对应的插件: +* Android Code Generator 生成ViewHolder,生成initView方法: +* Codota 搜索代码块: +* GsonFormat jsonString自动转bean插件: +* genymotion-idea-plugin genymotion对应的插件: +* SelectorChapek for Android 帮助生成selector: +* Sexy Editor 代码区域加背景: +* Android Drawable Importer 同一张图片生成多个自动生成多分辨率图片: +* Android Layout ID Converter xml到控件的转换: +* Android Postfix Completion toast和log加强: +* Android Studio Prettify 帮助findViewById: +* .ignore git忽略文件高亮效果,文件夹颜色提示: +* Android Parcelable code generator 生成Parcelable代码: +* Gradle Dependencies Helper gradle帮助插件: +* Android Toolbox Plugin 生成ViewHolder,意义不大: ## Jack @@ -200,6 +224,8 @@ * rfc3920: * rfc3920翻译: +* + * smack: * smack source: * asmack: @@ -222,21 +248,26 @@ * Jabber 协议 概述: * Smack编写jabber客户端: * Subscriptions 运行机制: +* XMPP协议分析-原理篇: + +## Player + +* ApolloMod: +* android-visualizer: -## Mina +## Vitamio -* -* Mina2.0快速入门: -* Mina2.0框架源码剖析(一): -* Mina2.0框架源码剖析(二): -* Mina2.0框架源码剖析(三): -* Mina2.0框架源码剖析(四): -* Mina2.0框架源码剖析(五): -* Mina2.0框架源码剖析(六): -* Mina2.0框架源码剖析(七): -* Mina2.0框架源码剖析(八): +* Vitamio: +* 帮助文档: +* 4.2.2版本之前的源码: +* 5.0.0版本之后的源码: +* vplayer: +* 一下科技: +* 使用Vitamio打造自己的Android万能播放器: -* MINA2官方教程翻译: +## 百度媒体云 + +* ## Android常见路径说明 @@ -257,11 +288,4 @@ * * * -* 如何搭建开源code review gerrit服务器: - -## Kotlin - -* -* -* 中文站: -* 《Kotlin for android developers》中文版翻译: +* 如何搭建开源code review gerrit服务器: \ No newline at end of file diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 36e2213..aaa2b99 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1100,6 +1100,21 @@ The yFiles diagramming software components are extensive class libraries that en * Mime Type Detection Utility: * jmimemagic: +## Mina + +* +* Mina2.0快速入门: +* Mina2.0框架源码剖析(一): +* Mina2.0框架源码剖析(二): +* Mina2.0框架源码剖析(三): +* Mina2.0框架源码剖析(四): +* Mina2.0框架源码剖析(五): +* Mina2.0框架源码剖析(六): +* Mina2.0框架源码剖析(七): +* Mina2.0框架源码剖析(八): + +* MINA2官方教程翻译: + ## 数据库连接池 * c3p0: diff --git "a/Kotlin\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Kotlin\345\255\246\344\271\240\344\271\213\350\267\257.md" new file mode 100644 index 0000000..094d08b --- /dev/null +++ "b/Kotlin\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -0,0 +1,10 @@ +# Kotlin学习之路 + +* +* +* +* +* 中文站: +* 《Kotlin for android developers》中文版翻译: +* Kotlin-Tutorials: +* \ No newline at end of file From ad20254e0ccbc010900e3e469557904b79b706bd Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Wed, 4 Jul 2018 23:19:20 +0800 Subject: [PATCH 004/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 65 ++++++++++++------- ...46\344\271\240\344\271\213\350\267\257.md" | 8 ++- 2 files changed, 48 insertions(+), 25 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 06e0251..e4b8547 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -33,11 +33,46 @@ * Xamarin: +## Libraries + +* butterknife: +* xUtils3: +* jpinyin: +* Android-Universal-Image-Loader: +* hugo: + +## Tools + * busybox: +* godeyes: * Test DPC APK Download for Android: * fastlane screenshots for Android: * genymotion: +* Android 应用开发调试利器——开发助手,数十倍效率提升: * 奇兔刷机: +* dex-method-counts: +* dexcount-gradle-plugin: + +## Android Studio插件 + +* ADB Idea 方便卸载apk,删除缓存: +* Android ButterKnife Zelezny ButterKnife对应的插件: +* Android Code Generator 生成ViewHolder,生成initView方法: +* Codota 搜索代码块: +* GsonFormat jsonString自动转bean插件: +* genymotion-idea-plugin genymotion对应的插件: +* SelectorChapek for Android 帮助生成selector: +* Sexy Editor 代码区域加背景: +* Android Drawable Importer 同一张图片生成多个自动生成多分辨率图片: +* Android Layout ID Converter xml到控件的转换: +* Android Postfix Completion toast和log加强: +* Android Studio Prettify 帮助findViewById: +* .ignore git忽略文件高亮效果,文件夹颜色提示: +* Android Parcelable code generator 生成Parcelable代码: +* Gradle Dependencies Helper gradle帮助插件: +* Android Toolbox Plugin 生成ViewHolder,意义不大: + +## Article * Android Studio移动鼠标显示悬浮提示的设置方法: * Android真机安装sqlite3的方法: @@ -110,6 +145,7 @@ * Android中app进程ABI确定过程: * Context, What Context? * Getting the null pointer exception in the getActionBar method: +* INSTALL_FAILED_TEST_ONLY: * Android Studio系列教程一--下载与安装: * Android Studio系列教程二--基本设置与运行: @@ -122,34 +158,11 @@ * Android Studio相关目录解析: * android程序自动化生成apk的过程: +* Android方法引用数超过65535优雅解决: * MIUI ROM适配之旅第一天——认识Android手机: * H60-L01 EMUI3.0 ROOT 傻瓜教程: -* butterknife: -* xUtils3: -* jpinyin: -* Android-Universal-Image-Loader: - -## Android Studio插件 - -* ADB Idea 方便卸载apk,删除缓存: -* Android ButterKnife Zelezny ButterKnife对应的插件: -* Android Code Generator 生成ViewHolder,生成initView方法: -* Codota 搜索代码块: -* GsonFormat jsonString自动转bean插件: -* genymotion-idea-plugin genymotion对应的插件: -* SelectorChapek for Android 帮助生成selector: -* Sexy Editor 代码区域加背景: -* Android Drawable Importer 同一张图片生成多个自动生成多分辨率图片: -* Android Layout ID Converter xml到控件的转换: -* Android Postfix Completion toast和log加强: -* Android Studio Prettify 帮助findViewById: -* .ignore git忽略文件高亮效果,文件夹颜色提示: -* Android Parcelable code generator 生成Parcelable代码: -* Gradle Dependencies Helper gradle帮助插件: -* Android Toolbox Plugin 生成ViewHolder,意义不大: - ## Jack * Android 新一代编译 toolchain Jack & Jill 简介: @@ -210,6 +223,10 @@ * 用Gradle 构建你的android程序: * 用Gradle 构建你的android程序-依赖管理篇: +## NDK + +* + ## Bug跟踪 * 网易云捕: diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index f0a65b0..d5b5d61 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -147,10 +147,16 @@ git push origin master:b1 * mercurialeclipse: * tortoisehg: -## Others +## Perforce * perforce: +* Helix VCS: + +## Others + * CVS: * bazaar: * ClearCase: * SourceSafe: + +* gource: From d199499dc0c6fc4da176d51e65b43decb3b59189 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Thu, 5 Jul 2018 23:40:42 +0800 Subject: [PATCH 005/234] update --- "Android\345\255\246\344\271\240\344\271\213\350\267\257.md" | 4 +++- ...20\206\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index e4b8547..b852096 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -158,7 +158,9 @@ * Android Studio相关目录解析: * android程序自动化生成apk的过程: -* Android方法引用数超过65535优雅解决: +* Android DEX安全攻防战: +* Android Dex文件格式(一): +* 配置方法数超过 64K 的应用: * MIUI ROM适配之旅第一天——认识Android手机: * H60-L01 EMUI3.0 ROOT 傻瓜教程: diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index d5b5d61..3ac15ac 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -124,6 +124,7 @@ * CHERRY-PICKING SPECIFIC COMMITS FROM ANOTHER BRANCH: * 上传图片到github wiki仓库: * git checkout --ours/--theirs: +* Git 如何 Merge 其他Fork仓库的代码到自己的仓库: ### git init 与 git init --bare From 0af3bb7996d6fdc803619d4a102bade5cc1eae56 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 8 Jul 2018 11:50:43 +0800 Subject: [PATCH 006/234] reconstruct the content --- ...46\344\271\240\344\271\213\350\267\257.md" | 43 +++++++++++-------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 3ac15ac..f477fd0 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -6,10 +6,8 @@ * (Git) * (Git Mercurial) * (Git Mercurial SVN) -* * -* -* (Git Mercurial SVN) +* * * (SVN) * @@ -19,10 +17,12 @@ ## 代码托管网站(已废弃) * (SVN) -* +* (SVN) * * (SVN) * (SVN) +* +* (Git Mercurial SVN) ## SVN @@ -73,6 +73,8 @@ * Documentation: * Pro Git book: +### Git客户端 + * git for windows: * posh-git: * SourceTree: @@ -80,40 +82,44 @@ * gitlab: * EGit: -* +### Github插件 * Travis CI: * appveyor: * codeclimate: * GITTER: * Waffle: -* bitdeli: * COVERALLS: * COVERITY: -* choosealicense: +* choosealicense: + +### Git优秀文章 * Git Community Book 中文版: +* git/github初级运用自如: +* github使用指南:使用指南 +* windows中使用Git工具连接GitHub(配置篇): +* 打造完美 Windows git 命令行环境: +* 详解在visual studio中使用git版本系统(图文): + +* Commit message 和 Change log 编写指南: +* Writing a Friendly README: +* 上传图片到github wiki仓库: +* Publishing a Website on Bitbucket Cloud: +* GitHub Pages + Hexo搭建博客: +* Hexo+Next搭建Github个人静态博客: + * 分支管理策略: * Bug分支: * git patch: Version Control with Git 2nd Edition[Git 版本控制管理 第2版] CHAPTER 14 Patches * Permanently remove files and folders from Git repo: -* git/github初级运用自如: -* windows中使用Git工具连接GitHub(配置篇): -* 详解在visual studio中使用git版本系统(图文): * git 把文件从版本管理中移除: * git乱码解决方案汇总: * git pull 和本地文件冲突问题解决: -* 打造完美 Windows git 命令行环境: * Remove sensitive data: * Caching your GitHub password in Git: -* github使用指南:使用指南 * github创建tag: -* Commit message 和 Change log 编写指南: -* Writing a Friendly README: -* GitHub Pages + Hexo搭建博客: -* Hexo+Next搭建Github个人静态博客: * Git教程-分支和tag管理: -* Publishing a Website on Bitbucket Cloud: * What are the git concepts of HEAD, master, origin? * How do I make Git use the editor of my choice for commits?: * warning: push.default is unset的解决方案: @@ -122,9 +128,8 @@ * git中将多次commit合并为一次commit: * Resolving a merge conflict on gerrit: * CHERRY-PICKING SPECIFIC COMMITS FROM ANOTHER BRANCH: -* 上传图片到github wiki仓库: * git checkout --ours/--theirs: -* Git 如何 Merge 其他Fork仓库的代码到自己的仓库: +* github上fork了别人的项目后,再同步更新别人的提交: ### git init 与 git init --bare From 4e8b8d3fc5ff5e8a83760101c3799b24ca32eaf2 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 29 Jul 2018 22:52:59 +0800 Subject: [PATCH 007/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 25 +++++++++++++------ ...46\344\271\240\344\271\213\350\267\257.md" | 1 + ...46\344\271\240\344\271\213\350\267\257.md" | 5 +++- ...46\344\271\240\344\271\213\350\267\257.md" | 1 + ...46\344\271\240\344\271\213\350\267\257.md" | 2 +- 5 files changed, 25 insertions(+), 9 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index b852096..8b4d7fd 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -5,6 +5,7 @@ * Configure Android Studio: * Managing the System UI: * SDK版本关系: +* Android P 开发者预览版: * 设置应用 ID: * (新)配置构建: * App Shortcuts: @@ -47,12 +48,18 @@ * godeyes: * Test DPC APK Download for Android: * fastlane screenshots for Android: -* genymotion: * Android 应用开发调试利器——开发助手,数十倍效率提升: * 奇兔刷机: * dex-method-counts: * dexcount-gradle-plugin: +## Android模拟器 + +* genymotion: +* genymotion个人免费版: +* genymotion-idea-plugin: +* 夜神模拟器: + ## Android Studio插件 * ADB Idea 方便卸载apk,删除缓存: @@ -60,7 +67,6 @@ * Android Code Generator 生成ViewHolder,生成initView方法: * Codota 搜索代码块: * GsonFormat jsonString自动转bean插件: -* genymotion-idea-plugin genymotion对应的插件: * SelectorChapek for Android 帮助生成selector: * Sexy Editor 代码区域加背景: * Android Drawable Importer 同一张图片生成多个自动生成多分辨率图片: @@ -74,6 +80,7 @@ ## Article +* Android O Preview 之 通知渠道(Notification Channels): * Android Studio移动鼠标显示悬浮提示的设置方法: * Android真机安装sqlite3的方法: * 使用 Intel HAXM 为 Android 模拟器加速,媲美真机: @@ -92,11 +99,6 @@ * 深入源码解析Android中的Handler,Message,MessageQueue,Looper: * 详解 Android 通信: * 什么是android.R.id.content? -* Android Fragment的用法(一): -* Fragment相关: Pro Android 5 -* Fragment相关源码解析一——FragmentManagerImpl和BackStackRecord: -* Fragment相关源码解析二——生命周期: -* Fragment相关源码解析三——状态保存与恢复: * Android Partitions Explained: boot, system, recovery, data, cache & misc: * Android for work总结(上): * Android for work总结(下): @@ -146,6 +148,15 @@ * Context, What Context? * Getting the null pointer exception in the getActionBar method: * INSTALL_FAILED_TEST_ONLY: +* setEnabled() vs setClickable(), what is the difference? +* Android兼容性测试CTS Verifier-环境搭建、测试执行、结果分析: + +* Android Fragment的用法(一): +* Fragment相关: Pro Android 5 +* Fragment相关源码解析一——FragmentManagerImpl和BackStackRecord: +* Fragment相关源码解析二——生命周期: +* Fragment相关源码解析三——状态保存与恢复: +* 为什么要用Fragment.setArguments(Bundle bundle)来传递参数: * Android Studio系列教程一--下载与安装: * Android Studio系列教程二--基本设置与运行: diff --git "a/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" index dcae02e..39e91f1 100644 --- "a/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -297,6 +297,7 @@ ORACLE_SID 实例ID * DB Browser for SQLite: * SQLite Expert: * SQLCipher: +* Sqlite学习笔记(四)&&SQLite-WAL原理: ## mongodb diff --git "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" index f1441d9..4ef9a20 100644 --- "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -46,11 +46,14 @@ * * +## sourceinsight + +* + ## Others * geany: * Lime Text: -* sourceinsight: * Scintilla: * xmlspy: * Bluefish: diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index aaa2b99..8f79e22 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -171,6 +171,7 @@ * 一个程序员能够控制多少行代码: * HTML中`       `等6种空白空格的区别: * UTF-8 encoding table and Unicode characters: +* Java之美[从菜鸟到高手演变]之设计模式: ## WebService diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index f477fd0..249bed7 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -112,7 +112,7 @@ * 分支管理策略: * Bug分支: * git patch: Version Control with Git 2nd Edition[Git 版本控制管理 第2版] CHAPTER 14 Patches -* Permanently remove files and folders from Git repo: +* Permanently remove files and folders from Git ``repo``: * git 把文件从版本管理中移除: * git乱码解决方案汇总: * git pull 和本地文件冲突问题解决: From 7a9b9f752070af96ecbd9aeb63efa5212775bf12 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 29 Jul 2018 23:49:33 +0800 Subject: [PATCH 008/234] update --- ...255\246\344\271\240\344\271\213\350\267\257.md" | 14 -------------- 1 file changed, 14 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 8b4d7fd..0dcbe26 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -299,20 +299,6 @@ * -## Android常见路径说明 - -* /system/app/pkg_name 系统应用 -* /system/priv-app/pkg_name 核心系统应用 -* /data/app 用户程序安装的目录 -* /data/user/pkg_name -* /data/user_de/user_id/pkg_name/databases 应用数据库 -* /data/user_de/user_id/pkg_name/shared_prefs 应用shared preference -* /data/data 存放应用程序的数据 -* /data/data/pkg_name/databases 数据库默认路径 -* /data/log/android_logs 应用日志 -* /data/system/dropbox 系统日志 -* /data/dalvik-cache dalvik虚拟机的可执行文件 - ## Gerrit * From 3f1e229994ca81c8e62c93b02e90fd60447e94c0 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Tue, 31 Jul 2018 00:29:19 +0800 Subject: [PATCH 009/234] update --- "Android\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + ...253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 0dcbe26..f77ebeb 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -150,6 +150,7 @@ * INSTALL_FAILED_TEST_ONLY: * setEnabled() vs setClickable(), what is the difference? * Android兼容性测试CTS Verifier-环境搭建、测试执行、结果分析: +* Why do most fields (class members) in Android tutorial start with `m`? * Android Fragment的用法(一): * Fragment相关: Pro Android 5 diff --git "a/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" index 282536a..def6b7f 100644 --- "a/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -79,7 +79,8 @@ Web Tools Platform(WTP): * JSX: * gohugo: * WordPress: -* echarts: +* echarts: +* antv: * CommonJS: * Node.js: From c254aaa0cf4d7494e520649b4962e7c17cdbd846 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sat, 4 Aug 2018 12:06:10 +0800 Subject: [PATCH 010/234] update --- "Android\345\255\246\344\271\240\344\271\213\350\267\257.md" | 3 +++ 1 file changed, 3 insertions(+) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index f77ebeb..ac8c384 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -52,6 +52,7 @@ * 奇兔刷机: * dex-method-counts: * dexcount-gradle-plugin: +* leakcanary: ## Android模拟器 @@ -151,6 +152,8 @@ * setEnabled() vs setClickable(), what is the difference? * Android兼容性测试CTS Verifier-环境搭建、测试执行、结果分析: * Why do most fields (class members) in Android tutorial start with `m`? +* Android多语言国际化适配(兼容7.0): +* ListView中getView的原理与解决多轮重复调用的方法: * Android Fragment的用法(一): * Fragment相关: Pro Android 5 From ed48ac45d31a53859e7d8c6f57e8964847408d3a Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Tue, 7 Aug 2018 23:07:18 +0800 Subject: [PATCH 011/234] optimization --- ...d\345\255\246\344\271\240\344\271\213\350\267\257.md" | 9 +++++++++ ...E\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + 2 files changed, 10 insertions(+) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index ac8c384..0534eeb 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -37,10 +37,15 @@ ## Libraries * butterknife: +* xUtils2: * xUtils3: +* SlidingMenu: +* ViewPagerIndicator: +* [DEPRECATED]ActionBarSherlock: * jpinyin: * Android-Universal-Image-Loader: * hugo: +* 极光推送: ## Tools @@ -81,6 +86,7 @@ ## Article +* Android 编程与兼容性问题: Android Programming The Big Nerd Ranch Guide 3rd[Android编程权威指南(第3版) 6.2 7.8 7.9 * Android O Preview 之 通知渠道(Notification Channels): * Android Studio移动鼠标显示悬浮提示的设置方法: * Android真机安装sqlite3的方法: @@ -155,6 +161,7 @@ * Android多语言国际化适配(兼容7.0): * ListView中getView的原理与解决多轮重复调用的方法: +* Fragments:Pro Android 5[精通Android 3] Chapter 8 * Android Fragment的用法(一): * Fragment相关: Pro Android 5 * Fragment相关源码解析一——FragmentManagerImpl和BackStackRecord: @@ -177,6 +184,8 @@ * Android Dex文件格式(一): * 配置方法数超过 64K 的应用: +* android存储访问框架Storage Access Framework: + * MIUI ROM适配之旅第一天——认识Android手机: * H60-L01 EMUI3.0 ROOT 傻瓜教程: diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 8f79e22..7c602d9 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -172,6 +172,7 @@ * HTML中`       `等6种空白空格的区别: * UTF-8 encoding table and Unicode characters: * Java之美[从菜鸟到高手演变]之设计模式: +* [System.currentTimeMillis]/[Calendar.getInstance().getTimeInMillis()]/[new Date().getTime()]: ## WebService From a772fdfadc4cee3a5ea8259d16ee0730cbfcf196 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 19 Aug 2018 22:17:53 +0800 Subject: [PATCH 012/234] update --- "Android\345\255\246\344\271\240\344\271\213\350\267\257.md" | 4 ++++ "Kotlin\345\255\246\344\271\240\344\271\213\350\267\257.md" | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 0534eeb..e3d5d2b 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -97,6 +97,7 @@ * Android系统开篇: * Handler内存泄漏详解及其解决方案: * 对于android.intent.action.MAIN和android.intent.category.LAUNCHER的理解: +* lntentfilter的匹配规则: Android开发艺术探索 1.3 * Android加密之文件级加密: * Android属性allowBackup安全风险浅析: * Android Bander设计与实现 - 设计篇: @@ -160,6 +161,8 @@ * Why do most fields (class members) in Android tutorial start with `m`? * Android多语言国际化适配(兼容7.0): * ListView中getView的原理与解决多轮重复调用的方法: +* Android控件--ProgressBar: +* Android逆向之旅---解析编译之后的AndroidManifest文件格式: * Fragments:Pro Android 5[精通Android 3] Chapter 8 * Android Fragment的用法(一): @@ -168,6 +171,7 @@ * Fragment相关源码解析二——生命周期: * Fragment相关源码解析三——状态保存与恢复: * 为什么要用Fragment.setArguments(Bundle bundle)来传递参数: +* IllegalStateException: Can not perform this action after onSaveInstanceState with ViewPager: * Android Studio系列教程一--下载与安装: * Android Studio系列教程二--基本设置与运行: diff --git "a/Kotlin\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Kotlin\345\255\246\344\271\240\344\271\213\350\267\257.md" index 094d08b..62335e9 100644 --- "a/Kotlin\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Kotlin\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -7,4 +7,6 @@ * 中文站: * 《Kotlin for android developers》中文版翻译: * Kotlin-Tutorials: -* \ No newline at end of file +* + +* Android Testing with Kotlin: \ No newline at end of file From 91128587f8857d91c98f67cbb01b8fc1467400fb Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Fri, 21 Sep 2018 23:28:30 +0800 Subject: [PATCH 013/234] update --- ...55\246\344\271\240\344\271\213\350\267\257.md" | 15 ++++++++++++--- ...55\246\344\271\240\344\271\213\350\267\257.md" | 1 + ...55\246\344\271\240\344\271\213\350\267\257.md" | 3 +++ 3 files changed, 16 insertions(+), 3 deletions(-) diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 7c602d9..2cad45d 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -90,7 +90,6 @@ * 转一个J2EE开发时的包命名规则,养成良好的开发习惯: * 对比C++ 和Java: Thinking in java[Java编程思想第4版].pdf * 舞蹈特点与编程语言特点的联想曲: -* className.class.getResourceAsStream()与ClassLoader.getSystemResourceAsStream() 的区别: * JAR文件包及jar命令详解: * JAVA调用系统命令或可执行程序: * 过时date.toLocaleString()的解决方法: @@ -491,6 +490,7 @@ Eclipse中`Update Project`,选择`Force Update of Snapshots/Releases` * How to Publish Maven Site Docs to BitBucket or GitHub Pages: * maven项目在eclipse的library中没有Maven Dependencies: * Maven Enforcer Plugin: +* templating-maven-plugin: * (搜索) * (搜索) @@ -615,6 +615,12 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * VisualVM: +## Eclipse Class Decompiler + +* Eclipse Class Decompiler——Java反编译插件: +* Eclipse Class Decompiler -> Enhanced Class Decompiler: +* Enhanced Class Decompiler: + ## JD(Java Decompiler) * 项目地址及安装说明: @@ -625,7 +631,6 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * jad: * jadclipse: -* Eclipse Class Decompiler——Java反编译插件: 注:jad支持命令行方式使用,最新版本为1.5.8g,支持的class版本过低。经常出现问题:The class file version is 48.0 (only 45.3, 46.0 and 47.0 are supported)。还有一个工具uuDeJava,也是基于jad,所以估计也难以避免这个问题。 @@ -1266,4 +1271,8 @@ The yFiles diagramming software components are extensive class libraries that en ## opengrok * -* OpenGrok搜索技巧: \ No newline at end of file +* OpenGrok搜索技巧: + +## Markdown转换 + +* flexmark-java: \ No newline at end of file diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index 2a45fb9..7a125d8 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -152,6 +152,7 @@ * iftop: * Iotop: * tldr: +* cloc: * 串口传输文件 lrzsz: * httpry(HTTP logging and information retrieval tool ): * iproute2: diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 249bed7..a806ad4 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -92,6 +92,9 @@ * COVERALLS: * COVERITY: * choosealicense: +* shields: +* JitPack: +* VersionEye(已废弃): ### Git优秀文章 From 167e782a63be3e9778e08f3c564dcd30e85cd73e Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sat, 3 Nov 2018 13:22:16 +0800 Subject: [PATCH 014/234] update --- ...255\246\344\271\240\344\271\213\350\267\257.md" | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 2cad45d..82cf7e9 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -483,7 +483,8 @@ Eclipse中`Update Project`,选择`Force Update of Snapshots/Releases` * MavenMNG-4715 version expression constant: * 解决Maven报Plugin execution not covered by lifecycle configuration: * Maven编译jar出现:无法确定 T 的类型参数的异常的原因和处理方案: -* 向maven中央仓库提交jar: +* 如何发布jar包到maven中央仓库: +* maven发布jar包到nexus: * 利用github搭建个人maven仓库: * Maven添加本地依赖: * Maven常用插件: @@ -493,6 +494,7 @@ Eclipse中`Update Project`,选择`Force Update of Snapshots/Releases` * templating-maven-plugin: * (搜索) +* (搜索) * (搜索) * (搜索) * (搜索) @@ -720,7 +722,8 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion Simian (Similarity Analyser) identifies duplication in Java, C#, C, C++, COBOL, Ruby, JSP, ASP, HTML, XML, Visual Basic, Groovy source code and even plain text files. In fact, simian can be used on any human readable files such as ini files, deployment descriptors, you name it. * 项目地址: -* maven-simian-plugin(不支持maven2): +* maven-simian-plugin(maven1): +* simian-maven-plugin(maven2+): * How do you use the maven-simian-plugin in Maven2?: ## CheckStyle @@ -813,9 +816,10 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * 官网: -## cpDetector +## 字符编码判断 -* +* cpdetector: +* juniversalchardet: ## EZMorph @@ -898,6 +902,8 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion ## XML +* Java Web开发详解[XML XSLT Servlet JSP深入剖析实例应用] +* What is difference between XML Schema and DTD? * JDOM: * JDOM: * Dom4j: From 15e027d16007561dbf16664158788f070606e7db Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 4 Nov 2018 09:35:32 +0800 Subject: [PATCH 015/234] update --- "J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" | 3 ++- ...220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 82cf7e9..b5593a2 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -721,7 +721,7 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion Simian (Similarity Analyser) identifies duplication in Java, C#, C, C++, COBOL, Ruby, JSP, ASP, HTML, XML, Visual Basic, Groovy source code and even plain text files. In fact, simian can be used on any human readable files such as ini files, deployment descriptors, you name it. -* 项目地址: +* 项目地址: * maven-simian-plugin(maven1): * simian-maven-plugin(maven2+): * How do you use the maven-simian-plugin in Maven2?: @@ -1033,6 +1033,7 @@ The yFiles diagramming software components are extensive class libraries that en * * * Drools规则描述语言快速手册: +* Why isn't Drools working with Java 8? ## jBPM diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index a806ad4..2f17eec 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -129,6 +129,7 @@ * 简单对比git pull和git pull --rebase的使用: * 使用git rebase合并多次commit: * git中将多次commit合并为一次commit: +* 如何合并两个Git仓库: * Resolving a merge conflict on gerrit: * CHERRY-PICKING SPECIFIC COMMITS FROM ANOTHER BRANCH: * git checkout --ours/--theirs: From abc5c1edc278759ba45bee83f5bb3e178989a6b6 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 4 Nov 2018 12:16:45 +0800 Subject: [PATCH 016/234] update --- "J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index b5593a2..42001ae 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -483,9 +483,8 @@ Eclipse中`Update Project`,选择`Force Update of Snapshots/Releases` * MavenMNG-4715 version expression constant: * 解决Maven报Plugin execution not covered by lifecycle configuration: * Maven编译jar出现:无法确定 T 的类型参数的异常的原因和处理方案: -* 如何发布jar包到maven中央仓库: -* maven发布jar包到nexus: * 利用github搭建个人maven仓库: +* 如何发布Maven依赖到中央仓库: * Maven添加本地依赖: * Maven常用插件: * How to Publish Maven Site Docs to BitBucket or GitHub Pages: From 3e33311f6c5a07e9e9d2c1fcaec0c94beb41b080 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 18 Nov 2018 22:59:53 +0800 Subject: [PATCH 017/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 146 ++++++++++-------- ...46\344\271\240\344\271\213\350\267\257.md" | 1 + 2 files changed, 85 insertions(+), 62 deletions(-) diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 42001ae..7c12fc9 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -167,6 +167,8 @@ * 浅析ReDoS的原理与实践: * More Servlets and JavaServer Pages: * 大陆简中自由软件本地化工作指南: +* 开源协议汇总: +* 如何选择开源许可证?: * 一个程序员能够控制多少行代码: * HTML中`       `等6种空白空格的区别: * UTF-8 encoding table and Unicode characters: @@ -492,6 +494,15 @@ Eclipse中`Update Project`,选择`Force Update of Snapshots/Releases` * Maven Enforcer Plugin: * templating-maven-plugin: +* 开发自己的Maven插件之一:hello world: +* 开发自己的Maven插件之二:利用创建向导简化工作: +* 开发自己的Maven插件之三:使用插件: +* 开发自己的Maven插件之四:基本概念: +* 开发自己的Maven插件之五:创建简单的report plugin: +* 开发自己的Maven插件之六:使用自己的report-plugin: +* 开发自己的Maven插件之七:开发jslint4java-report plugin: +* 开发自己的Maven插件之八:使用jslint4java-report plugin: + * (搜索) * (搜索) * (搜索) @@ -575,28 +586,6 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * 中国下载地址: * 在MyEclipse下创建Java Web项目 入门(图文并茂)经典教程: -## EclEmma - - EclEmma is a free Java code coverage tool for Eclipse. - -* 项目地址: -* EMMA项目地址: -* Maven EMMA plugin(不支持maven2): - -## eCobertura - - Eclipse Plugin for Cobertura. Java code coverage integrated into the IDE. - -* 项目地址: -* Cobertura Maven Plugin: - -## JavaNCSS - - JavaNCSS - A Source Measurement Suite for Java - -* -* javancss-maven-plugin: - ## Clover(收费) * 项目地址: @@ -658,18 +647,30 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * -## FindBugs +## Java静态代码检查 -* 项目地址及安装说明: -* FindBugs Bug Descriptions: * 浅淡静态代码分析工具: * 七款代码味道识别工具【简介】: -* FindBugs Plug-in: -* maven 使用findbugs 插件: -* 如何友好地展示findbugs分析报告: + +### FindBugs + +* FindBugs: +* spotbugs(FindBugs继承者): +* FindBugs Bug Descriptions: * FindBugs详解: +* FindBugs Plug-in(maven 1.0): +* FindBugs Maven Plugin(maven 2.0+): + +### CheckStyle -## PMD + Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard. It automates the process of checking Java code to spare humans of this boring (but important) task. This makes it ideal for projects that want to enforce a coding standard. + +* 项目地址: +* Eclipse Checkstyle plug-in: +* Checkclipse: +* maven-checkstyle-plugin: + +### PMD PMD is a source code analyzer. It finds common programming flaws like unused variables, empty catch blocks, unnecessary object creation, and so forth. It supports Java, JavaScript, PLSQL, Apache Velocity, XML, XSL. Additionally it includes CPD, the copy-paste-detector. CPD finds duplicated code in Java, C, C++, C#, PHP, Ruby, Fortran, JavaScript, PLSQL, Apache Velocity, Ruby, Scala, Objective C, Matlab, Python, Go. @@ -677,46 +678,44 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * * maven-pmd-plugin: -## Metric - -* Metrics-Java版的指标度量工具之一: -* Metrics-Java版的指标度量工具之二: - -## Jdepend +### Jdepend JDepend traverses Java class file directories and generates design quality metrics for each Java package. JDepend allows you to automatically measure the quality of a design in terms of its extensibility, reusability, and maintainability to manage package dependencies effectively. -* 官网: +* Jdepend: * JDepend4Eclipse: * JDepend Maven Plugin: -## SourceHelper +### Emma - The “Source Helper” plugin is an Eclipse plugin that takes a very useful feature that exists in Intellij IDEA and puts it into Eclipse. In short, the feature shows the code of an out-of-visible-range starting bracket by floating a window that shows the code you cannot see. This helps immensely when trying to identify what closing bracket belongs to what part of the code. + a free Java code coverage tool -* +* Emma: +* eclemma(Eclipse Plugin, 开始基于Emma后来基于JaCoCo): +* JaCoCo: +* Getting “Skipping JaCoCo execution due to missing execution data file” upon executing JaCoCo? +* Testng, Emma, Cobertura, coverage and JDK 7 result in ClassFormatError and VerifyError: +* Java 6 -> 7 migration ClassFormatError: Illegal local variable table length: +* Maven EMMA plugin(maven1): +* emma-maven-plugin(maven2+): -## Structure101 +### Cobertura - Structure101 is an agile architecture development environment (ADE) that lets the software development team organize a codebase. - -* + Cobertura is a free Java code coverage reporting tool. -## inFusion +* Cobertura: +* eCobertura(Eclipse Plugin): +* Cobertura Maven Plugin: +* 学习Maven之Cobertura Maven Plugin: - Whether you own, are responsible for, or are acquiring software projects in C/C++ or Java, inFusion puts you in full control of architecture and design quality. inFusion makes quality assurance of multi-million LOC systems not merely practical, but effective, successfully handling both object oriented and procedural style code. +### JavaNCSS -* (deprecated) -* InFusion错误类型分析: -* 软件设计度量工具inFusion(一):inFusion的基本概念: -* 软件设计度量工具inFusion(二):看懂inFusion度量结果: - -## SourceMonitor + JavaNCSS - A Source Measurement Suite for Java -* 官网: -* 代码度量工具——SourceMonitor的学习和使用: +* +* javancss-maven-plugin: -## Simian +### Simian Simian (Similarity Analyser) identifies duplication in Java, C#, C, C++, COBOL, Ruby, JSP, ASP, HTML, XML, Visual Basic, Groovy source code and even plain text files. In fact, simian can be used on any human readable files such as ini files, deployment descriptors, you name it. @@ -725,19 +724,41 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * simian-maven-plugin(maven2+): * How do you use the maven-simian-plugin in Maven2?: -## CheckStyle +### SourceMonitor - Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard. It automates the process of checking Java code to spare humans of this boring (but important) task. This makes it ideal for projects that want to enforce a coding standard. - -* 项目地址: -* Eclipse Checkstyle plug-in: -* Checkclipse: -* maven-checkstyle-plugin: +* 官网: +* 代码度量工具——SourceMonitor的学习和使用: -## CCT +### CCT 代码规模统计工具CCT是根据华为公司的项目特点而开发的软件规模统计工具;它既可以统计指定版本的非空非注释行,也可以通过比较当前版本和基础版本,计算新增修改规模得到增强项目的规模。CCT通过辨认不同的扩展名支持对多种语言的规模统计,包括C,C++,JAVA,DELPHI,汇编(ASM),SQL,JSP,ASP,HTML和TXT等文件。 +## Metric + +* Metrics-Java版的指标度量工具之一: +* Metrics-Java版的指标度量工具之二: + +## SourceHelper + + The “Source Helper” plugin is an Eclipse plugin that takes a very useful feature that exists in Intellij IDEA and puts it into Eclipse. In short, the feature shows the code of an out-of-visible-range starting bracket by floating a window that shows the code you cannot see. This helps immensely when trying to identify what closing bracket belongs to what part of the code. + +* + +## Structure101 + + Structure101 is an agile architecture development environment (ADE) that lets the software development team organize a codebase. + +* + +## inFusion + + Whether you own, are responsible for, or are acquiring software projects in C/C++ or Java, inFusion puts you in full control of architecture and design quality. inFusion makes quality assurance of multi-million LOC systems not merely practical, but effective, successfully handling both object oriented and procedural style code. + +* (deprecated) +* InFusion错误类型分析: +* 软件设计度量工具inFusion(一):inFusion的基本概念: +* 软件设计度量工具inFusion(二):看懂inFusion度量结果: + ## EJ-Technologies一家(收费) * 公司网址: @@ -817,6 +838,7 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion ## 字符编码判断 +* What is the most accurate encoding detector? * cpdetector: * juniversalchardet: diff --git "a/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" index 6ba05f6..babffd4 100644 --- "a/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -10,6 +10,7 @@ * codechef: * topcoder: * LeetCode Online Judge: +* awesome-algorithm: * LeetCode中国: * PKU JudgeOnline: * From 0139049f18edfa950313683e94e3b9df98a2773b Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Mon, 19 Nov 2018 23:52:48 +0800 Subject: [PATCH 018/234] update --- "J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 7c12fc9..0b1e67b 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -167,14 +167,18 @@ * 浅析ReDoS的原理与实践: * More Servlets and JavaServer Pages: * 大陆简中自由软件本地化工作指南: -* 开源协议汇总: -* 如何选择开源许可证?: * 一个程序员能够控制多少行代码: * HTML中`       `等6种空白空格的区别: * UTF-8 encoding table and Unicode characters: * Java之美[从菜鸟到高手演变]之设计模式: * [System.currentTimeMillis]/[Calendar.getInstance().getTimeInMillis()]/[new Date().getTime()]: +* 开源协议汇总: +* 如何选择开源许可证?: +* What is difference between fail safe iterator and fail fast iterator: +* Item 11: Always override hashCode when you override equals: +* Jdk1.8中的HashMap实现原理: + ## WebService * Style of WebService: REST vs. SOAP: From 7d0b7c10799a11d0d47a09c1c3bf099372609190 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Fri, 23 Nov 2018 23:26:14 +0800 Subject: [PATCH 019/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 87 +------------------ ...46\344\271\240\344\271\213\350\267\257.md" | 1 - 2 files changed, 1 insertion(+), 87 deletions(-) diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 0b1e67b..86bcc66 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -178,6 +178,7 @@ * What is difference between fail safe iterator and fail fast iterator: * Item 11: Always override hashCode when you override equals: * Jdk1.8中的HashMap实现原理: +* Java代码质量度量工具大阅兵: ## WebService @@ -651,92 +652,6 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * -## Java静态代码检查 - -* 浅淡静态代码分析工具: -* 七款代码味道识别工具【简介】: - -### FindBugs - -* FindBugs: -* spotbugs(FindBugs继承者): -* FindBugs Bug Descriptions: -* FindBugs详解: -* FindBugs Plug-in(maven 1.0): -* FindBugs Maven Plugin(maven 2.0+): - -### CheckStyle - - Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard. It automates the process of checking Java code to spare humans of this boring (but important) task. This makes it ideal for projects that want to enforce a coding standard. - -* 项目地址: -* Eclipse Checkstyle plug-in: -* Checkclipse: -* maven-checkstyle-plugin: - -### PMD - - PMD is a source code analyzer. It finds common programming flaws like unused variables, empty catch blocks, unnecessary object creation, and so forth. It supports Java, JavaScript, PLSQL, Apache Velocity, XML, XSL. Additionally it includes CPD, the copy-paste-detector. CPD finds duplicated code in Java, C, C++, C#, PHP, Ruby, Fortran, JavaScript, PLSQL, Apache Velocity, Ruby, Scala, Objective C, Matlab, Python, Go. - -* 项目地址: -* -* maven-pmd-plugin: - -### Jdepend - - JDepend traverses Java class file directories and generates design quality metrics for each Java package. JDepend allows you to automatically measure the quality of a design in terms of its extensibility, reusability, and maintainability to manage package dependencies effectively. - -* Jdepend: -* JDepend4Eclipse: -* JDepend Maven Plugin: - -### Emma - - a free Java code coverage tool - -* Emma: -* eclemma(Eclipse Plugin, 开始基于Emma后来基于JaCoCo): -* JaCoCo: -* Getting “Skipping JaCoCo execution due to missing execution data file” upon executing JaCoCo? -* Testng, Emma, Cobertura, coverage and JDK 7 result in ClassFormatError and VerifyError: -* Java 6 -> 7 migration ClassFormatError: Illegal local variable table length: -* Maven EMMA plugin(maven1): -* emma-maven-plugin(maven2+): - -### Cobertura - - Cobertura is a free Java code coverage reporting tool. - -* Cobertura: -* eCobertura(Eclipse Plugin): -* Cobertura Maven Plugin: -* 学习Maven之Cobertura Maven Plugin: - -### JavaNCSS - - JavaNCSS - A Source Measurement Suite for Java - -* -* javancss-maven-plugin: - -### Simian - - Simian (Similarity Analyser) identifies duplication in Java, C#, C, C++, COBOL, Ruby, JSP, ASP, HTML, XML, Visual Basic, Groovy source code and even plain text files. In fact, simian can be used on any human readable files such as ini files, deployment descriptors, you name it. - -* 项目地址: -* maven-simian-plugin(maven1): -* simian-maven-plugin(maven2+): -* How do you use the maven-simian-plugin in Maven2?: - -### SourceMonitor - -* 官网: -* 代码度量工具——SourceMonitor的学习和使用: - -### CCT - - 代码规模统计工具CCT是根据华为公司的项目特点而开发的软件规模统计工具;它既可以统计指定版本的非空非注释行,也可以通过比较当前版本和基础版本,计算新增修改规模得到增强项目的规模。CCT通过辨认不同的扩展名支持对多种语言的规模统计,包括C,C++,JAVA,DELPHI,汇编(ASM),SQL,JSP,ASP,HTML和TXT等文件。 - ## Metric * Metrics-Java版的指标度量工具之一: diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index 7a125d8..2a45fb9 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -152,7 +152,6 @@ * iftop: * Iotop: * tldr: -* cloc: * 串口传输文件 lrzsz: * httpry(HTTP logging and information retrieval tool ): * iproute2: From ec472b3e19241765dd656793394208fe913cc08d Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Wed, 28 Nov 2018 23:52:21 +0800 Subject: [PATCH 020/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 33 ++++++++++--------- ...46\344\271\240\344\271\213\350\267\257.md" | 17 ++++++++++ ...46\344\271\240\344\271\213\350\267\257.md" | 26 +++++++-------- 3 files changed, 45 insertions(+), 31 deletions(-) diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 1d3a939..5b0f984 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -18,6 +18,9 @@ * The International Obfuscated C Code Contest: * The C++ Standard Library - A Tutorial and Reference: +* The LLVM Compiler Infrastructure: +* clang: a C language family frontend for LLVM: + * CRT Library Features: * Security Features in the CRT: * Linker Tools Warning LNK4098: @@ -36,8 +39,6 @@ * Borland Graphics Interface (BGI) for Windows: * libcstl: * Valgrind: -* The LLVM Compiler Infrastructure: -* clang: a C language family frontend for LLVM: * SWIG: * EasyX Library for C++: * EGE(Easy Graphics Engine): @@ -54,7 +55,6 @@ * Borland-style CONIO: * cppcheck: * DISLIN: -* Useful enhancements for Visual Studio .NET: * ICU - International Components for Unicode: * libevent: @@ -74,21 +74,12 @@ * 安装说明: * 也可以在Eclipse的MarketPlace中搜索CDT,但是需要注意搜到的CDT版本是否与Eclipse版本匹配。 * eclipse 配置 TDM-GCC 64位版方法: -* 用UTF-8编写的代码在codeblocks中编译后汉字不能正常显示: * eclipse写C++控制台程序,不见输出: -## CodeBlocks - -* -* cbp2make: -* cbMakefileGen plugin: -* CodeBlocks插件开发指南(一): - -## CodeBlocks自定义自动补全 +## Visual Studio -1、依次打开 Project -> Properties -> C/C++ parser options 来到 Additional search paths; -2、点 Add 选择头文件的路径后点确定; -3、在源文件中添加相应的头文件后即可实现自动补全。 +* visual studio 2008中头文件和库文件路径设置: +* Useful enhancements for Visual Studio .NET: ## CMake @@ -159,7 +150,7 @@ * 使用CppUnit: * 开放源码 C/C++ 单元测试工具,第 3 部分: 了解 CppTest: -## Articles +## 杂项 * Comparison of Diagnostics between GCC and Clang: * C++ unit test start guide, how to set up Google Test (gtest) in Eclipse?: @@ -211,3 +202,13 @@ * VC知识库: * 基于X的GNOME、GTK、GDK、XLib、GLib等之间的关系: * 减少C++代码编译时间的方法: + +* C++编译错误cannot have cv-qualifier: +* 在 console mode 中使用 C/C++ 编译器: +* Linux静态/动态链接库的创建和使用: +* 基于对象和面向对象的区别: +* const 不再迷茫: +* C语言中随机数相关问题: +* Windows动态库与Linux共享对象比较: +* C/C++大数库简介: +* C++资源之不完全导引: C++资源之不完全导引.docx \ No newline at end of file diff --git "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 4ef9a20..fe21f88 100644 --- "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -50,6 +50,20 @@ * +## CodeBlocks + +* +* cbp2make: +* cbMakefileGen plugin: +* CodeBlocks插件开发指南(一): +* 用UTF-8编写的代码在codeblocks中编译后汉字不能正常显示: + +### CodeBlocks自定义自动补全 + +1、依次打开 Project -> Properties -> C/C++ parser options 来到 Additional search paths; +2、点 Add 选择头文件的路径后点确定; +3、在源文件中添加相应的头文件后即可实现自动补全。 + ## Others * geany: @@ -61,3 +75,6 @@ * codelite: * Anjuta: * kite: +* kdevelop: +* xcode: +* QtCreator: diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 86bcc66..737fa35 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,29 +1,24 @@ # J2EE学习之路 [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) -## Java Commons +## 官方文档 + +* Java SE: +* Java EE: -* The Java™ Tutorials: * Java Community Process: -* Java Platform, Enterprise Edition (Java EE): -* The Java® Language Specification: -* The Java® Virtual Machine Specification: -* JDK Tools and Utilities: + +## Java tutorial + * VirtualMachine: * Java HotSpot VM Options: * Setting Project Facets: * Overriding and Hiding Methods: -* List of HTTP status codes: * Java开源大全: -* importnew: * jarFinder: * java sampleexamples: * java examples: -* java papers: * -* 酷壳: - -## Java tutorial * Java Versions, Features and History: * Introduction to Java Programming, Eighth Edition: @@ -79,8 +74,6 @@ * 解析UML箭头、线条代表的意义: * Burp Suite使用介绍(一) (二) (三): * String.intern(): 深入理解Java虚拟机:JVM高级特性与最佳实践第二版-周志明.pdf -* [原创] SSO(Single Sign-on) in Action(上篇): -* 单点登陆(Single Sign-On,SSO)介绍(翻译): * 浅析Web工程目录和tomcat目录: * CSS3美化有序列表: * 简洁纯净的CSS表单设计实例: @@ -179,6 +172,7 @@ * Item 11: Always override hashCode when you override equals: * Jdk1.8中的HashMap实现原理: * Java代码质量度量工具大阅兵: +* List of HTTP status codes: ## WebService @@ -1188,8 +1182,10 @@ The yFiles diagramming software components are extensive class libraries that en * * Thirft框架介绍: -## CAS +## CAS/SSO +* [原创] SSO(Single Sign-on) in Action(上篇): +* 单点登陆(Single Sign-On,SSO)介绍(翻译): * * * CAS protocol: From 0fdf7422eb59db9421b7413ebab24d9f6e6c7ca6 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sat, 8 Dec 2018 17:52:11 +0800 Subject: [PATCH 021/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 70 ++++++++++--------- 1 file changed, 37 insertions(+), 33 deletions(-) diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 737fa35..7f341df 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -9,16 +9,39 @@ ## Java tutorial +* 9 Best Practices to Handle Exceptions in Java: +* API Design with Java 8: +* 如何重构“箭头型”代码: +* 软件项目“免坑”指南: +* 面向对象设计原则和创建SOLID应用的5个方法: +* 大陆简中自由软件本地化工作指南: +* 一个程序员能够控制多少行代码: + +* 开源协议汇总: +* 如何选择开源许可证?: + +* Item 11: Always override hashCode when you override equals: +* Jdk1.8中的HashMap实现原理: +* Java7/8 中的HashMap 和 ConcurrentHashMap: +* What is difference between fail safe iterator and fail fast iterator: + +* Java IO相关,字符编码相关: "Java IO 2nd Edition" +* Java直接内存与非直接内存性能测试: +* Java直接(堆外)内存使用详解: +* Buffer: +* Emoji的编码以及常见问题的解决方法: + +* Java代码质量度量工具大阅兵: +* List of HTTP status codes: + * VirtualMachine: * Java HotSpot VM Options: * Setting Project Facets: * Overriding and Hiding Methods: -* Java开源大全: * jarFinder: * java sampleexamples: * java examples: -* * Java Versions, Features and History: * Introduction to Java Programming, Eighth Edition: @@ -32,6 +55,7 @@ * Java annotation 自定义注释@interface的用法: * JAVA正则表达式高级用法(分组与捕获): * Java RMI 入门指南: +* Java RMI与RPC,JMS的比较: * Flatten your objects Discover the secrets of the Java Serialization API: * The Java serialization algorithm revealed: * Java Performance Tuning Guide: @@ -39,7 +63,6 @@ * POJO模式: * Java数字图像处理基础知识 - 必读: * Java反序列化时对象注入可以造成代码执行漏洞: -* Java NIO与IO的区别和比较: * [改编]深入equals方法,讨论instanceof的使用!: * Struts2、Spring和Hibernate应用实例: * spring中注册bean(通过代码动态注册): @@ -50,18 +73,13 @@ * Java自动装箱与拆箱及其陷阱: * Web安全漏洞之:JDK1.5环境下扫描远程调试端口导致JVM崩溃【JDWP exit error JVMTI_ERROR_NONE(0)】: * java byte与char互转原理: -* Java永久代去哪儿了: * Virtual Memory Usage from Java under Linux, too much memory used: -* Java直接内存与非直接内存性能测试: -* Java直接(堆外)内存使用详解: -* JVM调优总结(转): * 理解OAuth 2.0: * Spring框架的反序列化远程代码执行漏洞分析(转): * Spring “redirect:” EL vulnerability?: * Need to suppress “Warning: running an XSLT 1.0 stylesheet with an XSLT 2.0 processor” in Tomcat std out log file: * Java 授权内幕: * ServletInputStream的重复读取(多次读取)(转): -* Character Sets and Unicode: Java.I.O.2nd.Edition.May.2006.chm * 99%的人都理解错了HTTP中GET与POST的区别: * Developing a Service Provider using Java API(Service Provider Interface): * 驱动模块和桩模块的概念和区别: @@ -73,7 +91,6 @@ * UML关系(泛化,实现,依赖,关联(聚合,组合)): * 解析UML箭头、线条代表的意义: * Burp Suite使用介绍(一) (二) (三): -* String.intern(): 深入理解Java虚拟机:JVM高级特性与最佳实践第二版-周志明.pdf * 浅析Web工程目录和tomcat目录: * CSS3美化有序列表: * 简洁纯净的CSS表单设计实例: @@ -88,11 +105,8 @@ * 过时date.toLocaleString()的解决方法: * Jps介绍以及解决jps无法查看某个已经启动的java进程问题: * java中Assert的用法: -* Java RMI与RPC,JMS的比较: -* java存储数据的地方以及九种基本类型: * FINAL .....FINALLY ...... 和FINALIZE ......区别: * Comparable与Comparator的区别: -* FILE,FILEINPUTSTREAM,FILEREADER,INPUTSTREAMREADER,BUFFEREDREADER的使用和区别: * MyEclipse删除对Struts、Hibernate、Spring的支持: * 修改Struts2的struts.xml配置文件位置: * Eclipse 开发WEB项目所遇问题 WebContent WebRoot: @@ -100,11 +114,13 @@ * Java调用动态库方法说明: * struts2关于A web application created a ThreadLocal with key of type 异常解决办法: * 关于toString: -* 关于使用InputStreamReader读取GBK编码文件乱码的有关问题: -* Java编码浅析(注意区分三个概念): * Servlet容器的匹配过程: * 解决java.lang.IncompatibleClassChangeError: * html的meta总结,html标签中meta属性使用介绍: +* 使用 jQuery.i18n.properties 实现 Web 前端的国际化: +* ajax与302响应: +* HTTPS 升级指南: +* HTML中`       `等6种空白空格的区别: * javadoc相关问题: * 测试方面的基础概念: * SIT和UAT: @@ -113,10 +129,8 @@ * 一些安全相关的HTTP响应头: * Ehcache详细解读: * EhCache介绍: -* Java 8 API 设计经验浅析: * JDK自带工具之概览: * 服务化之-路由: -* Emoji的编码以及常见问题的解决方法: * Class热替换与卸载: * HTTP Keep-Alive详解: * 定义文档兼容性: (VS.85).aspx @@ -143,36 +157,26 @@ * Java 类的热替换 —— 概念、设计与实现: * 类加载器基本概念: * Installing Java Cryptography Extension unlimited strength jurisdiction policy files: -* 面向对象设计原则和创建SOLID应用的5个方法: * 数据库分页Java实现: -* 使用 jQuery.i18n.properties 实现 Web 前端的国际化: * Jar包的正确运行方法: -* ajax与302响应: -* HTTPS 升级指南: -* 软件项目“免坑”指南: -* 如何重构“箭头型”代码: * Atom Authentication: * 在AI寻路决策中运用势力图(Influence Map): * 关于 Token,你应该知道的十件事: * 10 Things You Should Know about Tokens: * Java陷阱之assert关键字: -* Buffer: * 浅析ReDoS的原理与实践: * More Servlets and JavaServer Pages: -* 大陆简中自由软件本地化工作指南: -* 一个程序员能够控制多少行代码: -* HTML中`       `等6种空白空格的区别: * UTF-8 encoding table and Unicode characters: * Java之美[从菜鸟到高手演变]之设计模式: * [System.currentTimeMillis]/[Calendar.getInstance().getTimeInMillis()]/[new Date().getTime()]: -* 开源协议汇总: -* 如何选择开源许可证?: -* What is difference between fail safe iterator and fail fast iterator: -* Item 11: Always override hashCode when you override equals: -* Jdk1.8中的HashMap实现原理: -* Java代码质量度量工具大阅兵: -* List of HTTP status codes: +## JVM + +* 深入理解Java虚拟机:JVM高级特性与最佳实践第二版-周志明 +* String.intern(): 深入理解Java虚拟机:JVM高级特性与最佳实践第二版-周志明 +* Java永久代去哪儿了: +* Java8内存模型—永久代(PermGen)和元空间(Metaspace): +* JVM调优总结(转): ## WebService From 23f94fca73e73f9c35f0e8f663767c4cb15a1d29 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 9 Dec 2018 21:39:07 +0800 Subject: [PATCH 022/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 16 ++++++-------- ...46\344\271\240\344\271\213\350\267\257.md" | 22 ++++++++++++++++--- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 7f341df..aa2985a 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -32,7 +32,6 @@ * Emoji的编码以及常见问题的解决方法: * Java代码质量度量工具大阅兵: -* List of HTTP status codes: * VirtualMachine: * Java HotSpot VM Options: @@ -40,10 +39,8 @@ * Overriding and Hiding Methods: * jarFinder: -* java sampleexamples: * java examples: -* Java Versions, Features and History: * Introduction to Java Programming, Eighth Edition: * Java杂项: * Java 理论与实践: @@ -99,7 +96,6 @@ * java中static{}语句块详解: * 转一个J2EE开发时的包命名规则,养成良好的开发习惯: * 对比C++ 和Java: Thinking in java[Java编程思想第4版].pdf -* 舞蹈特点与编程语言特点的联想曲: * JAR文件包及jar命令详解: * JAVA调用系统命令或可执行程序: * 过时date.toLocaleString()的解决方法: @@ -116,11 +112,6 @@ * 关于toString: * Servlet容器的匹配过程: * 解决java.lang.IncompatibleClassChangeError: -* html的meta总结,html标签中meta属性使用介绍: -* 使用 jQuery.i18n.properties 实现 Web 前端的国际化: -* ajax与302响应: -* HTTPS 升级指南: -* HTML中`       `等6种空白空格的区别: * javadoc相关问题: * 测试方面的基础概念: * SIT和UAT: @@ -170,6 +161,13 @@ * Java之美[从菜鸟到高手演变]之设计模式: * [System.currentTimeMillis]/[Calendar.getInstance().getTimeInMillis()]/[new Date().getTime()]: +* List of HTTP status codes: +* html的meta总结,html标签中meta属性使用介绍: +* 使用 jQuery.i18n.properties 实现 Web 前端的国际化: +* ajax与302响应: +* HTTPS 升级指南: +* HTML中`       `等6种空白空格的区别: + ## JVM * 深入理解Java虚拟机:JVM高级特性与最佳实践第二版-周志明 diff --git "a/\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" index f48bad5..41f2533 100644 --- "a/\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -3,11 +3,8 @@ * 汇编网: * 看雪学院: * 看雪安全论坛: -* MARS (MIPS Assembler and Runtime Simulator): -* SPIM A MIPS32 Simulator: * dosbox: * The MASM32 SDK: -* WinMIPS64: * OllyDbg: * winasm.net: * The Go tools for Windows + Assembler: @@ -17,3 +14,22 @@ * IDA: * 鱼C工作室: * asmplugin: +* Linux 汇编语言开发指南: +* AT&T(GAS)汇编指令小集: +* 汇编指令 int 21 h 调用: +* 汇编编写DOS下的内存驻留程序: <汇编编写DOS下的内存驻留程序.docx> +* 汇编语言常见的错误提示代码及含义: +* X86汇编快速入门: +* BIOS中断大全: +* 中断向量地址一览表: + +## MiPS汇编 + +* 常见模拟器里列表: +* MARS (MIPS Assembler and Runtime Simulator): +* SPIM(QtSpim): [new]: [old]: +* mipster20(MIPSter is a text editor written specifically for the MIPS assembly language, SPIM included): +* WinMIPS64: +* MIPSsim使用说明(含下载): +* 建立基于linux的MIPS交叉编译环境: +* MIPS的演化:See MIPS Run: Appendix D Evolving MIPS \ No newline at end of file From a9b0e6321a7b4196521cf24d6aef80827240c564 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 23 Dec 2018 10:35:12 +0800 Subject: [PATCH 023/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 43 ++++++++-- ...46\344\271\240\344\271\213\350\267\257.md" | 5 ++ ...46\344\271\240\344\271\213\350\267\257.md" | 13 +-- ...46\344\271\240\344\271\213\350\267\257.md" | 81 ------------------- 4 files changed, 50 insertions(+), 92 deletions(-) delete mode 100644 "Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 5b0f984..390f9b7 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -35,7 +35,6 @@ * OGLplus: * POSIX Threads for Win32: * Visual Leak Detector for Visual C++ : -* Libxml2: * Borland Graphics Interface (BGI) for Windows: * libcstl: * Valgrind: @@ -51,7 +50,6 @@ * CppUnit - C++ port of JUnit: * Log library for C++: * log4cplus: -* TinyXML: * Borland-style CONIO: * cppcheck: * DISLIN: @@ -85,6 +83,18 @@ * +## 包管理器 + +* Does C++ need a universal package manager? +* vcpkg(C++ Library Manager for Windows, Linux, and MacOS): +* Conan(the C / C++ Package Manager for Developers): +* Buckaroo: +* cget: +* Conda: +* CPM: +* CPPAN: +* Hunter: + ## Ctags * @@ -146,14 +156,37 @@ ## Unit Test * Google Test: -* Parasoft C/C++test: -* 使用CppUnit: +* 玩转Google开源C++单元测试框架Google Test系列(gtest)(总): +* Code Blocks+gtest环境配置: +* C++ unit test start guide, how to set up Google Test (gtest) in Eclipse?: + +* CppUnit(C++ port of JUnit): +* 使用CppUnit(Windows): +* cppunit helloworld详尽篇(Linux): * 开放源码 C/C++ 单元测试工具,第 3 部分: 了解 CppTest: +* Parasoft C/C++test: + +## XML + +* TinyXML: +* Libxml2: + +## INI + +* GetPrivateProfileString/WritePrivateProfileString: + +## JSON + +* jsoncpp: + +## 其它配置格式 + +* libconfig: + ## 杂项 * Comparison of Diagnostics between GCC and Clang: -* C++ unit test start guide, how to set up Google Test (gtest) in Eclipse?: * Linux内核中无名管道pipe和有名管道fifo的分析: * C/C++内存泄漏及检测: * 浅谈C/C++内存泄露及其检测工具: diff --git "a/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" index 39e91f1..ca7fd46 100644 --- "a/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -367,6 +367,11 @@ ORACLE_SID 实例ID * Apache Pig中文教程(进阶): * 使用Apache Pig时应该注意/避免的操作或事项: +## Redis + +* +* + ## Others * GBase: diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index aa2985a..acd7dd9 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -239,12 +239,6 @@ * SFTP Plug-in for Eclipse: * Eclipse 远程开发: -## Eclipse GUI Plugin - -* WindowBuilder(SWT Designer): -* Jigloo SWT/Swing GUI Builder: -* Visual Editor: - ## Eclipse根据java代码生成UML图 * Eclipse UML插件AmaterasUML的配置及使用(推荐): @@ -288,6 +282,13 @@ * 同一个服务器部署多个tomcat: * Tomcat 到底依赖JRE还是JDK: +## AWT/Swing/SWT/Jface + +* Visual Editor(deprated): +* WindowBuilder(SWT Designer): +* Jigloo SWT/Swing GUI Builder: +* SWT、Swing 或 AWT:哪个更适合您? + ## Hudson 用Java编写的持续集成(CI)工具。 diff --git "a/Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" deleted file mode 100644 index 14a2c19..0000000 --- "a/Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ /dev/null @@ -1,81 +0,0 @@ -# Windows学习之路 - -## 瘦身右键里的“发送到” - -xp是在“C:\Documents and Settings\Administrator\SendTo”下,win7位置有所不同。当然了这些文件夹肯定是默认隐藏的,如果你看不到,别忘了先进文件夹选项显示隐藏文件和文件夹。我只保留了,“桌面快捷方式”一个,其余杀之! - -## 不修改权限,修改hosts和service文件 - -win7的用户权限管理比较严格,默认情况下你是无法直接修改hosts和service这样的文件,提示无权限。网上有很多教程,讲解如何获取管理员或文件权限,如果你只是想修改类似这样的文件,不用动那么大的干戈,一个小小的动作就行。复制hosts、service文件系统文件夹之外的其他地方,任意编辑器修改-》保存,再paste回去覆盖掉系统同名文件,done. - -## Windows/system32权限问题 - -由于权限问题,无法修改其中的文件,可以右键取得管理员权限。 - -## Windows 8如何删除服务 - -现在的流氓软件,越来越多把自己注册为一个服务。对于这些流氓软件,需要删除相关的exe文件,使它不能再运行,或者直接清除这个服务本身,使计算机重启的时候,它不会再启动。删除的办法有两个: - -1.用sc.exe这个Windows命令。开始--运行--cmd.exe,然后输入sc就可以看到了。使用办法很简单:sc delete "服务名" (如果服务名中间有空格,就需要前后加引号)。如 sc delete KSD2Service - -2.直接进行注册表编辑(不推荐)。打开注册表编辑器,找到下面的键值: - - HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services - -一般服务会以相同的名字在这里显示一个主健,直接删除相关的键值便可。 - -注: - -1.如果服务显示的是rundll32.exe,并且这个文件是位于system32目录下,那么就不能删除这个rundll32.exe文件,它是Windows系统的文件。这时只要清除相关的服务就可以了 - -2.如果一个服务删除了马上又自动建立了,说明后台有进程在监视、保护。需要先在进程管理器中杀掉相应的进程,或者启动后按F8,到安全模式下删除。 - -## 在windows的资源管理器当前路径打开一个命令行 - -快捷键Alt+D选中地址栏,然后直接敲cmd - -注:你还能在资源管理器的地址栏启动其他程序,比如写字板(notepad)。 - -或者:Shift加右键,选择在此处打开命令窗口 - -## Powershell常用命令: - -* 同时打开多个powershell窗口:Win+R+powershell 多次即可 -* 查看powershell命令帮助 help [cmd]:help Remove-Item -* 删除文件夹:Remove-Item path –Recurse –Forse - -## 如何改变PowerShell启动的默认目录 - -为什么要修改PowerShell默认的启动目录, 如果你习惯操作一些特殊的命令行程序, 而又不习惯把它们放在默认的home路径下, 修改默认的启动位置, 可以让你在每次启动Powershell的时候不用执行切换目录的操作. - -PowerShell的默认启动路径其实就是执行PowerShell时指定的默认工作目录. 你可以编辑PowerShell的快捷方式, 在启动位置中输入一个你希望的默认位置. 这样再执行PowerShell时, 它默认的启动路径就是新的位置了. - -除了这个方法, 你还可以通过修改特定的profile来实现这个操作, 简单的在profile中加入cd XXX即可. - -最后说一下$home这个变量, 它是 HOMEPATH 和 HOMEDRIVE两个环境变量组合成的. 这两个环境变量存储在注册表中. 这两个变量我不推荐修改, 因为不知道会产生哪些副作用...但是理论上修改这些变量可以修改用户的主目录位置. - -## Beyond Compare对比.class文件 - -使用Beyond Compare扩展插件可以直接对比编译的.class文件,而不会显示一大堆乱码。 - -* windows: -* linux: - -## 解决xshell中vim显示中文乱码的问题 - -打开一个用utf8编码的中文文件,在vim中,执行`set encoding=utf-8 termencoding=gbk fileencoding=utf-8`后可正常显示中文。`encoding`是设置档案的当前编码。`termencoding`是用于vim屏幕的显示编码,由于xshell默认用于显示屏幕的编码是gbk,所以此处设置为gbk。同理,假设你修改了xshell的默认编码为utf-8,那么此处自然应该utf-8。`fileencoding`档案保存时的编码,此编码应和encoding保持一致,否则会弹出警告 - -至于xshell,打开`file->Properties`,点击`Terminal`节点,修改`Terminal Type`为linux(键盘映射模式,默认为xtrem,此种模式下对于vim小键盘输入数字会出现乱字符号),修改Encoding为uft-8(一般情况下linux系统采用此编码,可用locale命令查看自己系统的默认编码,修改为一致的就行)。 - -同理,也可以修改xftp的编码为utf-8以正常显示中文。 - -## 学习资料 - -* Powershell 错误记录:详细错误: -* pstips.net: -* Xshell利用登录脚本从服务器登录到另外一个服务器: -* 浅谈批处理中的%cd%与%~dp0: -* Win10添加本地帐户且设置为管理员帐户的方法: -* 证书错误 导航已阻止: -* PDF常见问题总结: -* PowerShell Studio: From b88d0140583f5db031ea785467a2c14ed2046a2d Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Wed, 26 Dec 2018 20:05:39 +0800 Subject: [PATCH 024/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 227 +++++++++--------- 1 file changed, 116 insertions(+), 111 deletions(-) diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 390f9b7..8abcdda 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -5,80 +5,142 @@ * * * - * C standard library: * C++ Standard Library: -* C POSIX library: -* GNU C Library: -* List of numerical libraries: -* Standard Template Library Programmer's Guide: + * comp.lang.c Frequently Asked Questions: -* Headers: -* cdecl: -* The International Obfuscated C Code Contest: +* C 语言常见问题集: * The C++ Standard Library - A Tutorial and Reference: -* The LLVM Compiler Infrastructure: -* clang: a C language family frontend for LLVM: +* The International Obfuscated C Code Contest: -* CRT Library Features: -* Security Features in the CRT: -* Linker Tools Warning LNK4098: -* LINK : fatal error LNK1104: 无法打开文件“LIBCD.lib”: +* Comparing Two High-Performance I/O Design Patterns: +* 使您的软件运行起来——防止缓冲区溢出: +* 屏幕输出VS文件输出: +* C/C++内存泄漏及检测: +* 浅谈C/C++内存泄露及其检测工具: +* 内存泄露检测工具比较: +* 亲密接触C可变参数函数 : +* TCP连接中的TIME_WAIT状态: +* see also: 《TCP-IP详解卷1:协议》第十八章 +* TCP可靠传输及流量控制系列六:TCP连接中的TIME_WAIT状态: +* C++项目中的extern "C" {}: +* 由函数clock想到的: +* 理解 pkg-config 工具: +* see also: +* C/C++中的abort、atexit、exit和_Exit: +* setjmp()/longjmp()的使用方法和场合: +* C++ 工程实践(7):iostream 的用途与局限: +* 指针的大小: +* C/C++指针原理: +* C++ STL轻松导学: +* undefined reference问题总结: +* Enabling string conversion functions in MinGW: +* C++ Rocks!: +* 减少C++代码编译时间的方法: +* C++编译错误cannot have cv-qualifier: +* 在 console mode 中使用 C/C++ 编译器: +* 基于对象和面向对象的区别: +* const 不再迷茫: +* C语言中随机数相关问题: +* C/C++大数库简介: +* C++资源之不完全导引: C++资源之不完全导引.docx -* C 语言常见问题集: +## Tools -* +* cdecl: +* Visual Leak Detector for Visual C++ : +* Valgrind: +* PC-lint for C/C++: +* cppcheck: +* C and C++ Code Counter(CCCC): +* Dev-C++: + +## Libraries + +* boost: * Ncurses: * GMP: * Crypto++: * OGLplus: * POSIX Threads for Win32: -* Visual Leak Detector for Visual C++ : * Borland Graphics Interface (BGI) for Windows: * libcstl: -* Valgrind: * SWIG: * EasyX Library for C++: * EGE(Easy Graphics Engine): -* PC-lint for C/C++: -* CLucene - a C++ search engine:  -* C and C++ Code Counter(CCCC): +* CLucene - a C++ search engine: * Translate STL 2 C Language: -* Dev-C++: -* C Unit Testing Framework: -* CppUnit - C++ port of JUnit: * Log library for C++: * log4cplus: * Borland-style CONIO: -* cppcheck: * DISLIN: * ICU - International Components for Unicode: * libevent: +* List of numerical libraries: +* Standard Template Library Programmer's Guide: -* Comparing Two High-Performance I/O Design Patterns: +## Windows C++ + +* CRT Library Features: +* Security Features in the CRT: +* Linker Tools Warning LNK4098: +* LINK : fatal error LNK1104: 无法打开文件“LIBCD.lib”: +* 为 Visual C++ 项目创建的文件类型: +* VC知识库: +* VC 常用数据类型总结 俩篇: +* 预编译头文件介绍和说明: +* 预编译头文件解析: +* VC 预编译头文件的使用: +* VC++的Unicode编程: +* VC++,掀起你的盖头来——谈VC++对象模型: +* Visual C++ 入门精解: +* visual studio 2008中头文件和库文件路径设置: +* Useful enhancements for Visual Studio .NET: +* Windows动态库与Linux共享对象比较: +* atexit和onexit的主要用法和区别: +* ODBC中的FX/Bulk RFX数据交换机制分析: + +## Linux C++ + +* GNU C Library: +* C POSIX library: +* POSIX.1-2017: + +* The LLVM Compiler Infrastructure: +* clang: a C language family frontend for LLVM: + +* Linux内核中无名管道pipe和有名管道fifo的分析: +* 应用 Valgrind 发现 Linux 程序的内存问题: +* 如何在linux下检测内存泄漏: +* Linux下的时间概念(主要是其中的计时器的使用): +* Linux 桌面应用技术专题: +* Linux系统调用列表: +* GNU GCC手册-1: +* gcc的基本用法: +* Linux 套接字编程中的 5 个隐患: +* gcc和g++的区别: +* 使用 GLib 工具集管理 C 数据帖子发表于: +* Linux静态/动态链接库的创建和使用: +* 基于X的GNOME、GTK、GDK、XLib、GLib等之间的关系: +* Comparison of Diagnostics between GCC and Clang: + +## Windows/Linux简不单理还乱 * MinGW: * MinGW-w64: * TDM-GCC: * cygwin: * 对话 UNIX: 在 Windows 上使用 Cygwin: -* 使您的软件运行起来——防止缓冲区溢出: -* 屏幕输出VS文件输出: +* GTK+与MFC不完全对比: +* 将 MFC 应用程序移植到 Linux: ## Eclipse CDT -* 项目地址: -* 安装说明: -* 也可以在Eclipse的MarketPlace中搜索CDT,但是需要注意搜到的CDT版本是否与Eclipse版本匹配。 +* * eclipse 配置 TDM-GCC 64位版方法: * eclipse写C++控制台程序,不见输出: -## Visual Studio - -* visual studio 2008中头文件和库文件路径设置: -* Useful enhancements for Visual Studio .NET: - ## CMake * @@ -95,22 +157,6 @@ * CPPAN: * Hunter: -## Ctags - -* - -## CLIPS - - CLIPS is a productive development and delivery expert system tool which provides a complete environment for the construction of rule and/or object based expert systems. - -* - -## Xapian - - Xapian is an Open Source Search Engine Library, released under the GPL v2+. It's written in C++, with bindings to allow use from Perl, Python, PHP, Java, Tcl, C#, Ruby, Lua, Erlang and Node.js (so far!) - -* - ## GTK+ * @@ -152,6 +198,8 @@ * * 学习用 doxygen 生成源码文档: +* 使用doxygen为C/C++程序生成中文文档(上): +* Doxygen + Graphviz + Htmlhelp, 成为文档好手: ## Unit Test @@ -164,6 +212,9 @@ * 使用CppUnit(Windows): * cppunit helloworld详尽篇(Linux): * 开放源码 C/C++ 单元测试工具,第 3 部分: 了解 CppTest: +* CppUnit源码解读: + +* C Unit Testing Framework: * Parasoft C/C++test: @@ -184,64 +235,18 @@ * libconfig: -## 杂项 +## Ctags -* Comparison of Diagnostics between GCC and Clang: -* Linux内核中无名管道pipe和有名管道fifo的分析: -* C/C++内存泄漏及检测: -* 浅谈C/C++内存泄露及其检测工具: -* 内存泄露检测工具比较: -* 应用 Valgrind 发现 Linux 程序的内存问题: -* 如何在linux下检测内存泄漏: -* 亲密接触C可变参数函数 : -* TCP连接中的TIME_WAIT状态: -* see also: 《TCP-IP详解卷1:协议》第十八章 -* TCP可靠传输及流量控制系列六:TCP连接中的TIME_WAIT状态: -* C++项目中的extern "C" {}: -* 由函数clock想到的: -* 理解 pkg-config 工具: -* GTK+与MFC不完全对比: -* 将 MFC 应用程序移植到 Linux: -* VC++,掀起你的盖头来——谈VC++对象模型: -* atexit和onexit的主要用法和区别: -* see also: -* C/C++中的abort、atexit、exit和_Exit: -* setjmp()/longjmp()的使用方法和场合: -* Linux下的时间概念(主要是其中的计时器的使用): -* C++ 工程实践(7):iostream 的用途与局限: -* 指针的大小: -* 使用doxygen为C/C++程序生成中文文档(上): -* C/C++指针原理: -* C++ STL轻松导学: -* Linux 桌面应用技术专题: -* CppUnit源码解读: -* ODBC中的FX/Bulk RFX数据交换机制分析: -* Linux系统调用列表: -* 预编译头文件介绍和说明: -* 预编译头文件解析: -* VC 预编译头文件的使用: -* VC++的Unicode编程: -* Visual C++ 入门精解: -* GNU GCC手册-1: -* gcc的基本用法: -* Linux 套接字编程中的 5 个隐患: -* gcc和g++的区别: -* VC 常用数据类型总结 俩篇: -* 使用 GLib 工具集管理 C 数据帖子发表于: -* undefined reference问题总结: -* Enabling string conversion functions in MinGW: -* Doxygen + Graphviz + Htmlhelp, 成为文档好手: -* C++ Rocks!: -* VC知识库: -* 基于X的GNOME、GTK、GDK、XLib、GLib等之间的关系: -* 减少C++代码编译时间的方法: +* -* C++编译错误cannot have cv-qualifier: -* 在 console mode 中使用 C/C++ 编译器: -* Linux静态/动态链接库的创建和使用: -* 基于对象和面向对象的区别: -* const 不再迷茫: -* C语言中随机数相关问题: -* Windows动态库与Linux共享对象比较: -* C/C++大数库简介: -* C++资源之不完全导引: C++资源之不完全导引.docx \ No newline at end of file +## CLIPS + + CLIPS is a productive development and delivery expert system tool which provides a complete environment for the construction of rule and/or object based expert systems. + +* + +## Xapian + + Xapian is an Open Source Search Engine Library, released under the GPL v2+. It's written in C++, with bindings to allow use from Perl, Python, PHP, Java, Tcl, C#, Ruby, Lua, Erlang and Node.js (so far!) + +* \ No newline at end of file From 6f6acbbc45aee830ec059cbe90a2c5fb3e146e52 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Mon, 31 Dec 2018 13:55:29 +0800 Subject: [PATCH 025/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 9 ++- ...46\344\271\240\344\271\213\350\267\257.md" | 80 ++++++++++--------- ...46\344\271\240\344\271\213\350\267\257.md" | 4 +- 3 files changed, 53 insertions(+), 40 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index e3d5d2b..f28c553 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -86,6 +86,12 @@ ## Article +* 《Android开发艺术探索》 +* Handler内存泄漏详解及其解决方案: +* Android中Handler的使用: +* 深入源码解析Android中的Handler,Message,MessageQueue,Looper: +* Android异步更新UI的几种方法: + * Android 编程与兼容性问题: Android Programming The Big Nerd Ranch Guide 3rd[Android编程权威指南(第3版) 6.2 7.8 7.9 * Android O Preview 之 通知渠道(Notification Channels): * Android Studio移动鼠标显示悬浮提示的设置方法: @@ -95,7 +101,6 @@ * ANDROID STUDIO详细教程汇总: * Android AM命令行启动程序的方法: * Android系统开篇: -* Handler内存泄漏详解及其解决方案: * 对于android.intent.action.MAIN和android.intent.category.LAUNCHER的理解: * lntentfilter的匹配规则: Android开发艺术探索 1.3 * Android加密之文件级加密: @@ -103,8 +108,6 @@ * Android Bander设计与实现 - 设计篇: * Android Application的使用及其生命周期: * Android ActionBar完全解析,使用官方推荐的最佳导航栏(上): -* Android中Handler的使用: -* 深入源码解析Android中的Handler,Message,MessageQueue,Looper: * 详解 Android 通信: * 什么是android.R.id.content? * Android Partitions Explained: boot, system, recovery, data, cache & misc: diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 8abcdda..8bd4a44 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -12,40 +12,6 @@ * C 语言常见问题集: * The C++ Standard Library - A Tutorial and Reference: -* The International Obfuscated C Code Contest: - -* Comparing Two High-Performance I/O Design Patterns: -* 使您的软件运行起来——防止缓冲区溢出: -* 屏幕输出VS文件输出: -* C/C++内存泄漏及检测: -* 浅谈C/C++内存泄露及其检测工具: -* 内存泄露检测工具比较: -* 亲密接触C可变参数函数 : -* TCP连接中的TIME_WAIT状态: -* see also: 《TCP-IP详解卷1:协议》第十八章 -* TCP可靠传输及流量控制系列六:TCP连接中的TIME_WAIT状态: -* C++项目中的extern "C" {}: -* 由函数clock想到的: -* 理解 pkg-config 工具: -* see also: -* C/C++中的abort、atexit、exit和_Exit: -* setjmp()/longjmp()的使用方法和场合: -* C++ 工程实践(7):iostream 的用途与局限: -* 指针的大小: -* C/C++指针原理: -* C++ STL轻松导学: -* undefined reference问题总结: -* Enabling string conversion functions in MinGW: -* C++ Rocks!: -* 减少C++代码编译时间的方法: -* C++编译错误cannot have cv-qualifier: -* 在 console mode 中使用 C/C++ 编译器: -* 基于对象和面向对象的区别: -* const 不再迷茫: -* C语言中随机数相关问题: -* C/C++大数库简介: -* C++资源之不完全导引: C++资源之不完全导引.docx - ## Tools * cdecl: @@ -86,6 +52,10 @@ * Security Features in the CRT: * Linker Tools Warning LNK4098: * LINK : fatal error LNK1104: 无法打开文件“LIBCD.lib”: +* 链接器工具错误 LNK2026: +* DUMPBIN Reference: +* atexit和onexit的主要用法和区别: +* _onexit, _onexit_m: * 为 Visual C++ 项目创建的文件类型: * VC知识库: * VC 常用数据类型总结 俩篇: @@ -98,8 +68,11 @@ * visual studio 2008中头文件和库文件路径设置: * Useful enhancements for Visual Studio .NET: * Windows动态库与Linux共享对象比较: -* atexit和onexit的主要用法和区别: * ODBC中的FX/Bulk RFX数据交换机制分析: +* VC++6.0编译时总死机,安装vcsp6补丁: +* DEBUG和RELEASE 版本差异及调试相关问题: +* Debug和Release有什么区别: +* MSVC vs. MinGW 之 (lib,dll,def,obj,exe) vs (a,dll,def,o,exe): ## Linux C++ @@ -249,4 +222,39 @@ Xapian is an Open Source Search Engine Library, released under the GPL v2+. It's written in C++, with bindings to allow use from Perl, Python, PHP, Java, Tcl, C#, Ruby, Lua, Erlang and Node.js (so far!) -* \ No newline at end of file +* + +## Others + +* The International Obfuscated C Code Contest: + +* Comparing Two High-Performance I/O Design Patterns: +* 使您的软件运行起来——防止缓冲区溢出: +* 屏幕输出VS文件输出: +* C/C++内存泄漏及检测: +* 浅谈C/C++内存泄露及其检测工具: +* 内存泄露检测工具比较: +* 亲密接触C可变参数函数 : +* TCP连接中的TIME_WAIT状态: +* see also: 《TCP-IP详解卷1:协议》第十八章 +* TCP可靠传输及流量控制系列六:TCP连接中的TIME_WAIT状态: +* C++项目中的extern "C" {}: +* 由函数clock想到的: +* 理解 pkg-config 工具: +* C/C++中的abort、atexit、exit和_Exit: +* setjmp()/longjmp()的使用方法和场合: +* C++ 工程实践(7):iostream 的用途与局限: +* 指针的大小: +* C/C++指针原理: +* C++ STL轻松导学: +* undefined reference问题总结: +* Enabling string conversion functions in MinGW: +* C++ Rocks!: +* 减少C++代码编译时间的方法: +* C++编译错误cannot have cv-qualifier: +* 在 console mode 中使用 C/C++ 编译器: +* 基于对象和面向对象的区别: +* const 不再迷茫: +* C语言中随机数相关问题: +* C/C++大数库简介: +* C++资源之不完全导引: C++资源之不完全导引.docx \ No newline at end of file diff --git "a/\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" index 41f2533..d37810e 100644 --- "a/\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -6,12 +6,14 @@ * dosbox: * The MASM32 SDK: * OllyDbg: +* win32asm: * winasm.net: * The Go tools for Windows + Assembler: * Yasm: * NASM: * flat assembler: * IDA: +* RadASM: * 鱼C工作室: * asmplugin: * Linux 汇编语言开发指南: @@ -25,7 +27,7 @@ ## MiPS汇编 -* 常见模拟器里列表: +* 常见模拟器列表: * MARS (MIPS Assembler and Runtime Simulator): * SPIM(QtSpim): [new]: [old]: * mipster20(MIPSter is a text editor written specifically for the MIPS assembly language, SPIM included): From 68627af2f4fda0f9aa2532c8cc1f0deb224a8f52 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Mon, 31 Dec 2018 23:18:34 +0800 Subject: [PATCH 026/234] update --- "Android\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + 1 file changed, 1 insertion(+) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index f28c553..847b425 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -91,6 +91,7 @@ * Android中Handler的使用: * 深入源码解析Android中的Handler,Message,MessageQueue,Looper: * Android异步更新UI的几种方法: +* AsyncTaskLoader vs AsyncTask: * Android 编程与兼容性问题: Android Programming The Big Nerd Ranch Guide 3rd[Android编程权威指南(第3版) 6.2 7.8 7.9 * Android O Preview 之 通知渠道(Notification Channels): From 117d3388dfe134578920776df7172ab15169db61 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Mon, 21 Jan 2019 23:29:03 +0800 Subject: [PATCH 027/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 19 ++++++++++++++++--- ...46\344\271\240\344\271\213\350\267\257.md" | 3 +++ ...46\344\271\240\344\271\213\350\267\257.md" | 5 +++++ ...46\344\271\240\344\271\213\350\267\257.md" | 1 + ...46\344\271\240\344\271\213\350\267\257.md" | 9 --------- ...46\344\271\240\344\271\213\350\267\257.md" | 2 ++ 6 files changed, 27 insertions(+), 12 deletions(-) diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 8bd4a44..3a2c5eb 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -134,7 +134,8 @@ * -* Glade User Interface Designer Reference Manual: +* GTK+ 2.0 Tutorial: +* GTK+ 2.0 教程: * GLib Reference Manual: * Part II. GTK+ Widgets and Objects: @@ -145,9 +146,7 @@ * Cairo: * GTK-Doc: * -* Glade: -* 用Glade和libGlade设计Gtk+图形界面: * 《GTK+》编程基础: * 在gtk+程序中显示中文说明: * Gtk对于通常的gui程序,大家想做的事就是做一点事件处理(包括各种计算、文件操作等),然后在界面上显示出来: @@ -156,6 +155,20 @@ * GLIB 常用数据结构介绍: * glib库简介: * glib库异步队列和线程池代码分析: +* 在Windows下使用GTK+开发GUI应用程序: +* Ubuntu下GTK的安装、编译和测试: +* GTK+ 2.0 教程--信号和回调函数的原理: +* ubuntu 14.04 中找不到 libgtk-x11-2.0.so: + +* Anjuta(难用): +* Glade(难用): +* Glade User Interface Designer Reference Manual: +* 用Glade和libGlade设计Gtk+图形界面: + +### GTK中的delete_event和destroy + +* delete_event 事件一般由用户或者说用户通过窗口管理器产生,即点击窗口右上角的退出按钮。假如不做任何特殊处理,窗口管理器会自动产生destroy信号;如果我们自 定义了处理delete_event事件的回调函数,是否产生destroy信号就和函数的返回值有关,如果是FALSE就产生,反之则没有效果。 +* destroy,除了可以由delete_event事件产生之外,还可以通过gtk_widget_destroy函数与其它信号发生交换。同样,如果不加指定,默认结果是关闭所指向的窗口但并不结束进程。如果我们希望主窗口和进程一起关闭,必须使用gtk_main_quit()。 ## QT diff --git "a/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" index ca7fd46..b698100 100644 --- "a/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -383,6 +383,9 @@ ORACLE_SID 实例ID ## 数据模型 +* 使用PowerDesigner画ER图详细教程: +* 使用visio 2010建立sql server数据模型——手动画、利用逆向工程: + ### PowerDesigner两张表主键如何设成一致的 设置方法:Tools--->Model Options->Model Settings。在Data Item组框中定义数据项的唯一性代码选项(Unique Code)与重用选项(Allow Reuse)。把allow reuse选上,去掉unique code选项。 diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index acd7dd9..4640427 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1116,6 +1116,11 @@ The yFiles diagramming software components are extensive class libraries that en * Hadoop源码分析——TaskAttemptContext类和TaskAttemptID类: * hadoop代理用户 -超级用户代理其它用户: +## Ambari + +* +* Ambari——大数据平台的搭建利器: + ## Spark * diff --git "a/Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" index f89c007..aadbfa3 100644 --- "a/Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -20,6 +20,7 @@ * SLIME: The Superior Lisp Interaction Mode for Emacs: * * Lispbox: +* slimv: * Jabberwocky a Lisp IDE: * Limp: * 使用 Cusp Eclipse 插件开发 Lisp 应用程序: diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index 2a45fb9..31c2e62 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -82,23 +82,19 @@ * ubuntu下终端路径只显示当前目录: * linux连接投影机: * Devhelp: -* 在Windows下使用GTK+开发GUI应用程序: * Unix 即集成开发环境: * Linux Troubleshooting Cheatsheet: strace, htop, lsof, tcpdump, iftop & sysdig: * java.lang.VerifyError: Expecting a stackmap frame at branch target JDK 1.7: * Rdseed与SAC的安装: -* Ubuntu下GTK的安装、编译和测试: * 将Linux下编译的warning警告信息输出到文件中[整理笔记]: * linux C中调用shell命令和运行shell脚本: * find 删除拷贝用法: * linux命令strings: * linux 修改分区卷标 ( Partition Label ) : -* GTK+ 2.0 教程--信号和回调函数的原理: * Linux快捷键: * shell脚本“syntax error:unexpected end of file”解决方案 : * String contains in Bash: * Could not get lock /var/lib/apt/lists/lock - open: -* ubuntu 14.04 中找不到 libgtk-x11-2.0.so: * tcpdump捕捉样例: * Slow Server? This is the Flow Chart You're Looking For: * 设置Linux系统的空闲等待时间TMOUT: @@ -514,11 +510,6 @@ bash-3.2# ls -l /data1/1230/server-a * environ记录了进程运行时的环境变量 * fd目录下是进程打开或使用的文件的符号连接 -## GTK中的delete_event和destroy - -* delete_event 事件一般由用户或者说用户通过窗口管理器产生,即点击窗口右上角的退出按钮。假如不做任何特殊处理,窗口管理器会自动产生destroy信号;如果我们自 定义了处理delete_event事件的回调函数,是否产生destroy信号就和函数的返回值有关,如果是FALSE就产生,反之则没有效果。 -* destroy,除了可以由delete_event事件产生之外,还可以通过gtk_widget_destroy函数与其它信号发生交换。同样,如果不加指定,默认结果是关闭所指向的窗口但并不结束进程。如果我们希望主窗口和进程一起关闭,必须使用gtk_main_quit()。 - ## Linux中C语言如何清空标准输入流 今天在Linux程序设计的时候需要清空标准输入缓冲区,于是使用了如下Windows程序设计中的方法: fflush(stdin),这个fflush()函数根本不是标准C中的函数,只是标准C的扩展,所以在Linux中使用根本不行;在网上搜索了下,发现有网友建议使用rewind(stdin);这个函数其实是将指针指向流的开始处。但是它是文件操作中的一个函数,操作的是FILE型流,在Windows程序设计中是可以清空标准输入缓冲区的,但是在Linux中不行。 diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 2f17eec..2793996 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -130,6 +130,8 @@ * 使用git rebase合并多次commit: * git中将多次commit合并为一次commit: * 如何合并两个Git仓库: +* Moving Repository from Bitbucket to GitHub: +* git 拉取远程指定分支 pull本地不存在的分支: * Resolving a merge conflict on gerrit: * CHERRY-PICKING SPECIFIC COMMITS FROM ANOTHER BRANCH: * git checkout --ours/--theirs: From 59aa5ef4344ae3c2a4998614a975871ea392d3c6 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 3 Feb 2019 16:55:35 +0800 Subject: [PATCH 028/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 38 +++++++++---------- ...46\344\271\240\344\271\213\350\267\257.md" | 1 - ...46\344\271\240\344\271\213\350\267\257.md" | 1 + ...46\344\271\240\344\271\213\350\267\257.md" | 3 ++ 4 files changed, 23 insertions(+), 20 deletions(-) diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 3a2c5eb..917ca5c 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -45,6 +45,7 @@ * libevent: * List of numerical libraries: * Standard Template Library Programmer's Guide: +* Cairo: ## Windows C++ @@ -130,35 +131,34 @@ * CPPAN: * Hunter: -## GTK+ - -* - -* GTK+ 2.0 Tutorial: -* GTK+ 2.0 教程: +## Glib/GTK+/Gnome * GLib Reference Manual: -* Part II. GTK+ Widgets and Objects: -* GNOME 开发者中心: -* -* Vala - Compiler for the GObject type system: +* Glib Test Framework: +* GLIB 常用数据结构介绍: +* glib库简介: +* glib库异步队列和线程池代码分析: -* Cairo: +* GTK+: +* Part II. GTK+ Widgets and Objects: +* Migrating from GTK+ 2.x to GTK+ 3: +* GTK+ 2.0 Tutorial: +* GTK+ 2.0 Tutorial(中文版): * GTK-Doc: -* - +* 在Windows下使用GTK+开发GUI应用程序: +* Ubuntu下GTK的安装、编译和测试: * 《GTK+》编程基础: * 在gtk+程序中显示中文说明: * Gtk对于通常的gui程序,大家想做的事就是做一点事件处理(包括各种计算、文件操作等),然后在界面上显示出来: * GTK+2.0 中的容器控件与布局技巧: * GTK编程: -* GLIB 常用数据结构介绍: -* glib库简介: -* glib库异步队列和线程池代码分析: -* 在Windows下使用GTK+开发GUI应用程序: -* Ubuntu下GTK的安装、编译和测试: * GTK+ 2.0 教程--信号和回调函数的原理: -* ubuntu 14.04 中找不到 libgtk-x11-2.0.so: +* ubuntu 14.04 中找不到libgtk-x11-2.0.so: + +* GNOME 开发者中心: +* Gnome下载地址: +* Port your application from GNOME 2 to GNOME 3: +* Vala - Compiler for the GObject type system: * Anjuta(难用): * Glade(难用): diff --git "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" index fe21f88..c8b6f3b 100644 --- "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -73,7 +73,6 @@ * Bluefish: * Understand: * codelite: -* Anjuta: * kite: * kdevelop: * xcode: diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index 31c2e62..9e61ac1 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -116,6 +116,7 @@ * linux关于S权限和T权限的介绍: * Linux使用技巧12--Ubuntu代理: * Bash的陷阱: +* 如何在ubuntu下创建eclipse的桌面快捷方式: * Linux下好玩的命令: * 动画演示一些无用但有趣的Linux命令: diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 2793996..5426fe6 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -112,6 +112,9 @@ * GitHub Pages + Hexo搭建博客: * Hexo+Next搭建Github个人静态博客: +* 将git commit的默认编辑器从nano转为vim: +* Linux下 保存 git账号密码: + * 分支管理策略: * Bug分支: * git patch: Version Control with Git 2nd Edition[Git 版本控制管理 第2版] CHAPTER 14 Patches From 3644ba21670e46d8fdcba39875a1330bc0ee5685 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Wed, 27 Feb 2019 19:19:10 +0800 Subject: [PATCH 029/234] update --- "OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" | 4 +++- README.md | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git "a/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" index babffd4..04440ef 100644 --- "a/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,6 +1,8 @@ # OJ学习之路 * ACM竞赛之输入输出: +* awesome-algorithm: + * codevs: * 九度OJ: * hihocoder: @@ -10,7 +12,6 @@ * codechef: * topcoder: * LeetCode Online Judge: -* awesome-algorithm: * LeetCode中国: * PKU JudgeOnline: * @@ -18,3 +19,4 @@ * ACdream Online Judge: * UVa Online Judge: * codeforces: +* 洛谷: diff --git a/README.md b/README.md index 0d73c16..c0483ce 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Issue Count](https://codeclimate.com/github/jiangxincode/cnblogs/badges/issue_count.svg)](https://codeclimate.com/github/jiangxincode/cnblogs) [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) -[![Maintenance](https://img.shields.io/maintenance/yes/2018.svg)](https://github.com/jiangxincode/cnblogs) +[![Maintenance](https://img.shields.io/maintenance/yes/2019.svg)](https://github.com/jiangxincode/cnblogs) [![GitHub license](https://img.shields.io/github/license/mashape/apistatus.svg)](http://mit-license.org/) 一些我在平时工作和学习中积累的编程相关的资源。每个程序员都有自己的学习之路,过程中会学习各种各样的网上知识,学习完最好记录下来,每隔一段时间看一看,会有不一样的收获。 From 1079be7a2fa9f18e4abc89bb43c2586c869cb57c Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sat, 2 Mar 2019 10:27:58 +0800 Subject: [PATCH 030/234] update --- "Android\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + ...16C++\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + "J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" | 5 +++++ 3 files changed, 7 insertions(+) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 847b425..513f2d8 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -167,6 +167,7 @@ * ListView中getView的原理与解决多轮重复调用的方法: * Android控件--ProgressBar: * Android逆向之旅---解析编译之后的AndroidManifest文件格式: +* .nomedia: 《解析 Google Android SDK-智能手机开发范例手册》5.3 * Fragments:Pro Android 5[精通Android 3] Chapter 8 * Android Fragment的用法(一): diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 917ca5c..857f24c 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -154,6 +154,7 @@ * GTK编程: * GTK+ 2.0 教程--信号和回调函数的原理: * ubuntu 14.04 中找不到libgtk-x11-2.0.so: +* GTK v1.2 Tutorial: * GNOME 开发者中心: * Gnome下载地址: diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 4640427..2eb4db3 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -41,6 +41,10 @@ * jarFinder: * java examples: +* SEI CERT Oracle Coding Standard for Java: +* Secure Coding Guidelines for Java SE: +* CWE/SANS Top 25 Most Dangerous Software Errors: + * Introduction to Java Programming, Eighth Edition: * Java杂项: * Java 理论与实践: @@ -691,6 +695,7 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * Sebug漏洞库: * The Open Web Application Security Project: * ESAPI(OWASP Enterprise Security API): +* OWASP Guide Project: * WooYun知识库: * HP Security Research: * CVE: From 70e7354050b22c50faaad6f08cfe2c1b67133e85 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Tue, 12 Mar 2019 00:45:02 +0800 Subject: [PATCH 031/234] update --- "Android\345\255\246\344\271\240\344\271\213\350\267\257.md" | 3 +++ ...16Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 513f2d8..10ac57c 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -168,6 +168,9 @@ * Android控件--ProgressBar: * Android逆向之旅---解析编译之后的AndroidManifest文件格式: * .nomedia: 《解析 Google Android SDK-智能手机开发范例手册》5.3 +* 存储访问框架android Storage Access Framework(SAF): +* Android 7.0 行为变更 通过FileProvider在应用间共享文件吧: +* FileProvider文件分享: * Fragments:Pro Android 5[精通Android 3] Chapter 8 * Android Fragment的用法(一): diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index 9e61ac1..be8d32f 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -116,7 +116,7 @@ * linux关于S权限和T权限的介绍: * Linux使用技巧12--Ubuntu代理: * Bash的陷阱: -* 如何在ubuntu下创建eclipse的桌面快捷方式: +* Linux下为刚安装好的Eclipse在桌面建一个启动图标: * Linux下好玩的命令: * 动画演示一些无用但有趣的Linux命令: From 3ae8c9477839f7caddc0f0dd3542ca63d2f979f3 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Wed, 13 Mar 2019 00:49:44 +0800 Subject: [PATCH 032/234] update --- ...\255\246\344\271\240\344\271\213\350\267\257.md" | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 10ac57c..446f7aa 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -168,6 +168,12 @@ * Android控件--ProgressBar: * Android逆向之旅---解析编译之后的AndroidManifest文件格式: * .nomedia: 《解析 Google Android SDK-智能手机开发范例手册》5.3 +* android程序自动化生成apk的过程: +* Android DEX安全攻防战: +* Android Dex文件格式(一): +* 配置方法数超过 64K 的应用: + +* android存储访问框架Storage Access Framework: * 存储访问框架android Storage Access Framework(SAF): * Android 7.0 行为变更 通过FileProvider在应用间共享文件吧: * FileProvider文件分享: @@ -191,13 +197,6 @@ * Android Studio优化技巧: * Android Studio相关目录解析: -* android程序自动化生成apk的过程: -* Android DEX安全攻防战: -* Android Dex文件格式(一): -* 配置方法数超过 64K 的应用: - -* android存储访问框架Storage Access Framework: - * MIUI ROM适配之旅第一天——认识Android手机: * H60-L01 EMUI3.0 ROOT 傻瓜教程: From 7af9a2e2769d4d38ec90f85173b41759f4c111fc Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 5 May 2019 21:06:07 +0800 Subject: [PATCH 033/234] update --- ...55\246\344\271\240\344\271\213\350\267\257.md" | 11 ++++++++--- ...55\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...55\246\344\271\240\344\271\213\350\267\257.md" | 3 ++- ...55\246\344\271\240\344\271\213\350\267\257.md" | 15 ++++++--------- ...55\246\344\271\240\344\271\213\350\267\257.md" | 2 +- 5 files changed, 18 insertions(+), 15 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 446f7aa..9fdf82c 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -23,6 +23,8 @@ * * Android Support Overview: +* I18n Translation Search: + * 安卓巴士: * eoeandroid: * @@ -68,18 +70,18 @@ ## Android Studio插件 +* 插件搜素: +* Android Localizationer: * ADB Idea 方便卸载apk,删除缓存: * Android ButterKnife Zelezny ButterKnife对应的插件: * Android Code Generator 生成ViewHolder,生成initView方法: * Codota 搜索代码块: * GsonFormat jsonString自动转bean插件: * SelectorChapek for Android 帮助生成selector: -* Sexy Editor 代码区域加背景: * Android Drawable Importer 同一张图片生成多个自动生成多分辨率图片: * Android Layout ID Converter xml到控件的转换: * Android Postfix Completion toast和log加强: * Android Studio Prettify 帮助findViewById: -* .ignore git忽略文件高亮效果,文件夹颜色提示: * Android Parcelable code generator 生成Parcelable代码: * Gradle Dependencies Helper gradle帮助插件: * Android Toolbox Plugin 生成ViewHolder,意义不大: @@ -158,7 +160,7 @@ * Android之分屏模式解析(下): * Android中app进程ABI确定过程: * Context, What Context? -* Getting the null pointer exception in the getActionBar method: +* Android “getActionBar()返回NullPointerException”问题分析: * INSTALL_FAILED_TEST_ONLY: * setEnabled() vs setClickable(), what is the difference? * Android兼容性测试CTS Verifier-环境搭建、测试执行、结果分析: @@ -172,6 +174,8 @@ * Android DEX安全攻防战: * Android Dex文件格式(一): * 配置方法数超过 64K 的应用: +* 目前最全面的Android安全工具清单: +* menu中的item标签的showAsAction属性可以取哪些值: * android存储访问框架Storage Access Framework: * 存储访问框架android Storage Access Framework(SAF): @@ -199,6 +203,7 @@ * MIUI ROM适配之旅第一天——认识Android手机: * H60-L01 EMUI3.0 ROOT 傻瓜教程: +* Android 获取手机中微信聊天记录: ## Jack diff --git "a/Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" index c4b5ca3..e25c523 100644 --- "a/Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -15,7 +15,7 @@ * IrrlichtWrapper Library: * Free BASIC 试用: -## QuickBASIC QBasic +## QuickBASIC/QBasic * QuickBASIC: * QBasic: diff --git "a/Fortran\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Fortran\345\255\246\344\271\240\344\271\213\350\267\257.md" index 9ca55f0..a0f24f1 100644 --- "a/Fortran\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Fortran\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,8 @@ # Fortran学习之路 * -* Welcome to the home of GNU Fortran: +* GNU Fortran: +* LFortran: * Fortran中文网: * Fortran77和90/95编程入门: * Approximatrix: diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 2eb4db3..6ae14a4 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -242,6 +242,7 @@ * 'Must Override a Superclass Method' Errors after importing a project into Eclipse: * SFTP Plug-in for Eclipse: * Eclipse 远程开发: +* How to set the Eclipse date variable format? ## Eclipse根据java代码生成UML图 @@ -514,6 +515,7 @@ Eclipse中`Update Project`,选择`Force Update of Snapshots/Releases` * (搜索) * (搜索) * (搜索) +* (搜索) * * * @@ -670,15 +672,6 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * -## inFusion - - Whether you own, are responsible for, or are acquiring software projects in C/C++ or Java, inFusion puts you in full control of architecture and design quality. inFusion makes quality assurance of multi-million LOC systems not merely practical, but effective, successfully handling both object oriented and procedural style code. - -* (deprecated) -* InFusion错误类型分析: -* 软件设计度量工具inFusion(一):inFusion的基本概念: -* 软件设计度量工具inFusion(二):看懂inFusion度量结果: - ## EJ-Technologies一家(收费) * 公司网址: @@ -1012,6 +1005,10 @@ The yFiles diagramming software components are extensive class libraries that en * +## Apache PDFBox - A Java PDF Library + +* + ## iText(AGPL) * diff --git "a/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" index def6b7f..59117f7 100644 --- "a/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -10,7 +10,7 @@ ## Tools -* jsunit: +* jsunit: * firebug: * Brackets: * Tridiv is a web-based editor for creating 3D shapes in CSS: From 14aadb1dd13b086d35f7b0f03bd2097623c6403b Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 26 May 2019 17:51:50 +0800 Subject: [PATCH 034/234] update --- ...345\255\246\344\271\240\344\271\213\350\267\257.md" | 10 ++++++---- ...345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...345\255\246\344\271\240\344\271\213\350\267\257.md" | 8 +++++++- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git "a/Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" index e25c523..fcf6ab3 100644 --- "a/Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -27,11 +27,13 @@ * -## Other - -* BASIC-256: -* PowerBASIC: +## Visual Basic/Visual Basic .NET * Developing Automated Tests Using NUnit and VB.NET: * Differences between VB.NET and VB: * Comparison of Visual Basic and Visual Basic .NET: + +## Other + +* BASIC-256: +* PowerBASIC: diff --git "a/Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" index aadbfa3..16ea9f5 100644 --- "a/Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -35,6 +35,8 @@ * Lisp Programming with Cusp: * MELPA: * CLOCC - Common Lisp Open Code Collection: +* Common Lisp配置:SBCL: + * MIT/GNU Scheme: * Lisp之根源: diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 5426fe6..8df1412 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -87,9 +87,9 @@ * Travis CI: * appveyor: * codeclimate: +* COVERALLS: * GITTER: * Waffle: -* COVERALLS: * COVERITY: * choosealicense: * shields: @@ -167,6 +167,12 @@ git push origin master:b1 * perforce: * Helix VCS: +## Sonar + +* sonarqube: +* sonarcloud: +* travis 和 sonarcloud(java项目举例): + ## Others * CVS: From 0e0f4cc2cc30209093170842483a15ba0dc84c2c Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 9 Jun 2019 14:27:20 +0800 Subject: [PATCH 035/234] update --- ...5\246\344\271\240\344\271\213\350\267\257.md" | 16 +++++++++++++++- ...5\246\344\271\240\344\271\213\350\267\257.md" | 5 +++++ ...5\246\344\271\240\344\271\213\350\267\257.md" | 5 ++++- ...5\246\344\271\240\344\271\213\350\267\257.md" | 1 + ...5\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\246\344\271\240\344\271\213\350\267\257.md" | 14 ++++++++++---- ...5\246\344\271\240\344\271\213\350\267\257.md" | 2 +- 7 files changed, 37 insertions(+), 8 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 9fdf82c..eafbae0 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -49,6 +49,8 @@ * hugo: * 极光推送: +* 移动服务SDK: + ## Tools * busybox: @@ -177,11 +179,21 @@ * 目前最全面的Android安全工具清单: * menu中的item标签的showAsAction属性可以取哪些值: +* Contacts Provider: + * android存储访问框架Storage Access Framework: * 存储访问框架android Storage Access Framework(SAF): * Android 7.0 行为变更 通过FileProvider在应用间共享文件吧: * FileProvider文件分享: +* Android:MediaSession框架介绍: + +* Android中的Service:默默的奉献者 (1): +* Android中的Service:Binder,Messenger,AIDL(2): +* Android:学习AIDL,这一篇文章就够了(上): +* Android:学习AIDL,这一篇文章就够了(下): +* Service的onStartCommand方法的返回值和参数详解: + * Fragments:Pro Android 5[精通Android 3] Chapter 8 * Android Fragment的用法(一): * Fragment相关: Pro Android 5 @@ -201,6 +213,8 @@ * Android Studio优化技巧: * Android Studio相关目录解析: +* Android8.0及以上,获取模拟器root权限: + * MIUI ROM适配之旅第一天——认识Android手机: * H60-L01 EMUI3.0 ROOT 傻瓜教程: * Android 获取手机中微信聊天记录: @@ -333,4 +347,4 @@ * * * -* 如何搭建开源code review gerrit服务器: \ No newline at end of file +* 如何搭建开源code review gerrit服务器: diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 857f24c..62db843 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -119,6 +119,11 @@ * +## GDB + +* GDB: The GNU Project Debugger: +* LINUX下GDB调试: + ## 包管理器 * Does C++ need a universal package manager? diff --git "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" index c8b6f3b..56bc1ad 100644 --- "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -50,6 +50,10 @@ * +## Understand + +* Understand: + ## CodeBlocks * @@ -71,7 +75,6 @@ * Scintilla: * xmlspy: * Bluefish: -* Understand: * codelite: * kite: * kdevelop: diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 6ae14a4..aea7280 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -293,6 +293,7 @@ * WindowBuilder(SWT Designer): * Jigloo SWT/Swing GUI Builder: * SWT、Swing 或 AWT:哪个更适合您? +* OpenSwing: ## Hudson diff --git "a/Kotlin\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Kotlin\345\255\246\344\271\240\344\271\213\350\267\257.md" index 62335e9..d2f74f3 100644 --- "a/Kotlin\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Kotlin\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -9,4 +9,4 @@ * Kotlin-Tutorials: * -* Android Testing with Kotlin: \ No newline at end of file +* Android Testing with Kotlin: diff --git "a/Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" index 16ea9f5..c936d75 100644 --- "a/Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,14 +1,18 @@ # Lisp学习之路 * Common Lisp: +* Common Lisp wiki: +* + * Clozure Common Lisp: * CLISP - an ANSI Common Lisp: * Allegro CL: * CMUCL: * Steel Bank Common Lisp: + +* LispWorks: * Common Lisp HyperSpec: -* Common Lisp wiki: -* + * L-99: Ninety-Nine Lisp Problems: * Quicklisp: * AspectL: @@ -23,16 +27,18 @@ * slimv: * Jabberwocky a Lisp IDE: * Limp: + * 使用 Cusp Eclipse 插件开发 Lisp 应用程序: +* Lisp Programming with Cusp: + * Dandelion: * Dandelion - Eclipse Lisp Plugin: -* LispWorks: + * Racket: * MIT/GNU Scheme: * The Common Foreign Function Interface(cffi): * milkypostman/melpa: * Build Your Own Lisp: -* Lisp Programming with Cusp: * MELPA: * CLOCC - Common Lisp Open Code Collection: * Common Lisp配置:SBCL: diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index be8d32f..a6b0011 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -41,6 +41,7 @@ ## Softwares/Tools/Knowledge +* explainshell: * Install Microsoft Windows Fonts in Ubuntu: * Linux Performance: * File system: @@ -73,7 +74,6 @@ * apt-get remove, apt-get autoremove和aptitude remove的区别: * What is the difference between dpkg and aptitude/apt-get? * Linux乱码问题解决方案: -* LINUX下GDB调试: * Linux 软件看门狗 watchdog: * C语言调试手段:锁定错误的实现方法: * Linux终端字符颜色设置: From 06981296d1d325a3f83599ce03bdb4d0779a0f4f Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 30 Jun 2019 21:31:56 +0800 Subject: [PATCH 036/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 20 +++++++++++++++---- ...46\344\271\240\344\271\213\350\267\257.md" | 1 + ...46\344\271\240\344\271\213\350\267\257.md" | 13 ++++++++++-- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index eafbae0..705457d 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -2,13 +2,25 @@ * * Intent: -* Configure Android Studio: + +* Android开发者预览版: + +* Android Jetpack: +* AndroidX 概览: + * Managing the System UI: +* Create and Manage Notification Channels: + +* App Shortcuts: * SDK版本关系: -* Android P 开发者预览版: +* 支持库: +* uses-library: + +* Configure Android Studio: * 设置应用 ID: * (新)配置构建: -* App Shortcuts: +* 创建和管理虚拟设备: +* 对您的应用进行版本控制: * dumpsys: * AOSP: @@ -98,7 +110,6 @@ * AsyncTaskLoader vs AsyncTask: * Android 编程与兼容性问题: Android Programming The Big Nerd Ranch Guide 3rd[Android编程权威指南(第3版) 6.2 7.8 7.9 -* Android O Preview 之 通知渠道(Notification Channels): * Android Studio移动鼠标显示悬浮提示的设置方法: * Android真机安装sqlite3的方法: * 使用 Intel HAXM 为 Android 模拟器加速,媲美真机: @@ -178,6 +189,7 @@ * 配置方法数超过 64K 的应用: * 目前最全面的Android安全工具清单: * menu中的item标签的showAsAction属性可以取哪些值: +* Android soong build系统介绍: * Contacts Provider: diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index aea7280..d898824 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -15,6 +15,7 @@ * 软件项目“免坑”指南: * 面向对象设计原则和创建SOLID应用的5个方法: * 大陆简中自由软件本地化工作指南: +* 为什么称为北向接口、南向接口? * 一个程序员能够控制多少行代码: * 开源协议汇总: diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index a6b0011..b29b527 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -42,6 +42,8 @@ ## Softwares/Tools/Knowledge * explainshell: +* tldr: + * Install Microsoft Windows Fonts in Ubuntu: * Linux Performance: * File system: @@ -117,6 +119,9 @@ * Linux使用技巧12--Ubuntu代理: * Bash的陷阱: * Linux下为刚安装好的Eclipse在桌面建一个启动图标: +* Linux命令之file - 检测并显示文件类型: +* Linux Centos 删除除某(多)个文件之外的所有文件: +* linux如何删除zip包中某个文件夹及里面的内容: * Linux下好玩的命令: * 动画演示一些无用但有趣的Linux命令: @@ -141,14 +146,12 @@ * Okular: * AppImage(Package desktop applications as AppImages that run on common Linux-based operating systems): * shunit2: -* ack: * iPerf / iPerf3: * Glances: * Atop: * htop: * iftop: * Iotop: -* tldr: * 串口传输文件 lrzsz: * httpry(HTTP logging and information retrieval tool ): * iproute2: @@ -161,6 +164,12 @@ * curl: * Poptop - The PPTP Server for Linux: +* GNU Grep: +* ack: + +* gawk: +* GNU sed: + ## Linux常用命令 ```shell From 5ea65fa04e9fd3461ba558994f108e48225b6404 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 20 Oct 2019 20:15:20 +0800 Subject: [PATCH 037/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 1 + ...46\344\271\240\344\271\213\350\267\257.md" | 21 +++++++++++++++---- ...46\344\271\240\344\271\213\350\267\257.md" | 5 +++++ ...46\344\271\240\344\271\213\350\267\257.md" | 6 ++---- ...46\344\271\240\344\271\213\350\267\257.md" | 5 +++-- ...46\344\271\240\344\271\213\350\267\257.md" | 14 +++++++++++++ ...46\344\271\240\344\271\213\350\267\257.md" | 1 + ...46\344\271\240\344\271\213\350\267\257.md" | 9 +++++++- ...46\344\271\240\344\271\213\350\267\257.md" | 4 +++- 9 files changed, 54 insertions(+), 12 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 705457d..93631e8 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -190,6 +190,7 @@ * 目前最全面的Android安全工具清单: * menu中的item标签的showAsAction属性可以取哪些值: * Android soong build系统介绍: +* Android Studio 3.0+ 新Dex编译器D8 Desugar R8: * Contacts Provider: diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 62db843..9f548c8 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -33,6 +33,7 @@ * Borland Graphics Interface (BGI) for Windows: * libcstl: * SWIG: +* Win32 BGI implementation: * EasyX Library for C++: * EGE(Easy Graphics Engine): * CLucene - a C++ search engine: @@ -99,16 +100,28 @@ * 基于X的GNOME、GTK、GDK、XLib、GLib等之间的关系: * Comparison of Diagnostics between GCC and Clang: -## Windows/Linux简不单理还乱 +## Windows/Linux剪不断理还乱 +* MinGW-w64(推荐): +* MinGW-w64下载地址: * MinGW: -* MinGW-w64: * TDM-GCC: * cygwin: * 对话 UNIX: 在 Windows 上使用 Cygwin: * GTK+与MFC不完全对比: * 将 MFC 应用程序移植到 Linux: +* Win32蓝牙开发: + +* Native Wifi: +* WiFi direct 的相关特点: +* NATIVE WIFI HOSTED NETWORK VS WIFI DIRECT LEGACY SOFT AP: +* Wi-Fi Direct: +* Wi-Fi Direct Legacy Connection C++ WRL Demo: +* Windows.Devices.WiFi Namespace: +* Windows.Devices.WiFiDirect Namespace: +* Windows.Devices.WiFiDirect.Services Namespace: + ## Eclipse CDT * @@ -132,7 +145,7 @@ * Buckaroo: * cget: * Conda: -* CPM: +* CPM(Deprcated): * CPPAN: * Hunter: @@ -276,4 +289,4 @@ * const 不再迷茫: * C语言中随机数相关问题: * C/C++大数库简介: -* C++资源之不完全导引: C++资源之不完全导引.docx \ No newline at end of file +* C++资源之不完全导引: C++资源之不完全导引.docx diff --git "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 56bc1ad..14f23db 100644 --- "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -30,6 +30,11 @@ * Vimperator: * VIM常见用法总结: +## Jetbrains + +* Clion: +* Eclipse Code Formatter: + ## Emacs * emacswiki: diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index d898824..18c2575 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -165,6 +165,7 @@ * UTF-8 encoding table and Unicode characters: * Java之美[从菜鸟到高手演变]之设计模式: * [System.currentTimeMillis]/[Calendar.getInstance().getTimeInMillis()]/[new Date().getTime()]: +* javac的调试选项-g的意义: * List of HTTP status codes: * html的meta总结,html标签中meta属性使用介绍: @@ -691,6 +692,7 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * The Open Web Application Security Project: * ESAPI(OWASP Enterprise Security API): * OWASP Guide Project: +* WebScarab: * WooYun知识库: * HP Security Research: * CVE: @@ -699,10 +701,6 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * acunetix: * xfocus: -## coverity(收费) - -* - ## klocwork(收费) * diff --git "a/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" index 04440ef..79c9284 100644 --- "a/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -3,6 +3,9 @@ * ACM竞赛之输入输出: * awesome-algorithm: +* LeetCode Online Judge: +* LeetCode中国: + * codevs: * 九度OJ: * hihocoder: @@ -11,8 +14,6 @@ * 猿圈: * codechef: * topcoder: -* LeetCode Online Judge: -* LeetCode中国: * PKU JudgeOnline: * * HDU Online Judge System: diff --git "a/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" index 2207b57..9faaeaf 100644 --- "a/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -23,10 +23,24 @@ * ChinaTeX: * LaTeX – A document preparation system: * ChinaTeX 论坛: +* All about TeXnique: * Chinese TeX(CTEX): * LaTeX Stack Exchange: * LaTeX工作室: +## TeX Live自带文档 + +* CTEX FAQ (常见问题集): texlive\2019\texmf-dist\doc\latex\ctex-faq\ctex-faq.pdf +* 一份(不太)简短的LATEX2e 介绍: texlive\2019\texmf-dist\doc\latex\lshort-chinese\lshort-zh-cn.pdf +* The Comprehensive LATEX Symbol List: texlive\2019\texmf-dist\doc\latex\comprehensive\symbols-a4.pdf + +## TeX Live自带模板 + +* moderncv: texlive\2019\texmf-dist\tex\latex\moderncv\moderncv.cls +* moderncv: template-zh: texlive\2019\texmf-dist\doc\latex\moderncv\examples\template-zh.tex + +## 其它文档 + * LaTeX内容总结: * LaTeX技巧68:TeX/LaTeX 常用宏包简介: * Linux下Texlive的ctex包中文字体问题: diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index b29b527..8bb061e 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -86,6 +86,7 @@ * Devhelp: * Unix 即集成开发环境: * Linux Troubleshooting Cheatsheet: strace, htop, lsof, tcpdump, iftop & sysdig: +* strace: * java.lang.VerifyError: Expecting a stackmap frame at branch target JDK 1.7: * Rdseed与SAC的安装: * 将Linux下编译的warning警告信息输出到文件中[整理笔记]: diff --git "a/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" index 59117f7..cca81e7 100644 --- "a/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -57,6 +57,10 @@ Web Tools Platform(WTP): * ASP.NET Ajax: Enhanced Interactivity and Responsiveness: * Ajax Q&A(Ajax"发明人"答问): +* [四天学会ajax]学习ajax教程第一天: +* [四天学会ajax] 学习Ajax教程第二天,JavaScript 和 Ajax 发出异步请求: +* [四天学会ajax] 学习Ajax教程第三天,Ajax 中的高级请求和响应: +* [四天学会ajax] 学习Ajax教程第四天,利用 DOM 进行 Web 响应: ## XPath @@ -82,6 +86,9 @@ Web Tools Platform(WTP): * echarts: * antv: * CommonJS: + +## Node.js + * Node.js: ## angularjs @@ -97,4 +104,4 @@ Web Tools Platform(WTP): ## Chrome调试 -* 最全面的JavaScript调试技巧总结: \ No newline at end of file +* 最全面的JavaScript调试技巧总结: diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 8df1412..6647783 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -90,11 +90,11 @@ * COVERALLS: * GITTER: * Waffle: -* COVERITY: * choosealicense: * shields: * JitPack: * VersionEye(已废弃): +* Semantic Versioning: ### Git优秀文章 @@ -139,6 +139,8 @@ * CHERRY-PICKING SPECIFIC COMMITS FROM ANOTHER BRANCH: * git checkout --ours/--theirs: * github上fork了别人的项目后,再同步更新别人的提交: +* 撤销 git commit --amend: +* git修改历史提交信息: ### git init 与 git init --bare From 8f996d26c7a87c774bf686c7a06f616a88f1708c Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Wed, 4 Dec 2019 20:48:46 +0800 Subject: [PATCH 038/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 2 +- ...46\344\271\240\344\271\213\350\267\257.md" | 6 ++++ ...46\344\271\240\344\271\213\350\267\257.md" | 35 +++++++++++++------ 3 files changed, 31 insertions(+), 12 deletions(-) diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 9f548c8..a4769c3 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -272,7 +272,7 @@ * TCP可靠传输及流量控制系列六:TCP连接中的TIME_WAIT状态: * C++项目中的extern "C" {}: * 由函数clock想到的: -* 理解 pkg-config 工具: +* 理解 pkg-config 工具: * C/C++中的abort、atexit、exit和_Exit: * setjmp()/longjmp()的使用方法和场合: * C++ 工程实践(7):iostream 的用途与局限: diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 18c2575..ed1ff1d 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -701,6 +701,12 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * acunetix: * xfocus: +## OpenSSL + +* OpenSSL: +* BoringSSL: +* LibreSSL: + ## klocwork(收费) * diff --git "a/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" index 79c9284..9437c86 100644 --- "a/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -3,21 +3,34 @@ * ACM竞赛之输入输出: * awesome-algorithm: -* LeetCode Online Judge: -* LeetCode中国: - -* codevs: -* 九度OJ: +* LeetCode Online Judge: +* 洛谷: +* Vijos: +* Virtual Judge: +* 牛客: * hihocoder: +* cometoj: +* LibreOJ: +* Universal Online Judge: +* 青藤OJ: * SPOJ (Sphere Online Judge): * OpenJudge: -* 猿圈: * codechef: -* topcoder: +* UVa Online Judge: +* codeforces: +* AtCoder: +* 小米OJ: + +## 高校OJ + * PKU JudgeOnline: -* +* ZOJ: * HDU Online Judge System: + +## 已经废弃的OJ + +* topcoder: +* codevs: +* 猿圈: +* 九度OJ: * ACdream Online Judge: -* UVa Online Judge: -* codeforces: -* 洛谷: From f6ecff60697dc621cb4eebe39e46bfbb4c693530 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sat, 21 Dec 2019 10:43:23 +0800 Subject: [PATCH 039/234] update --- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index a4769c3..9bf3fed 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -4,6 +4,7 @@ * * +* C++ compiler support: * * C standard library: * C++ Standard Library: @@ -50,6 +51,7 @@ ## Windows C++ +* /std (Specify Language Standard Version): * CRT Library Features: * Security Features in the CRT: * Linker Tools Warning LNK4098: @@ -82,23 +84,25 @@ * C POSIX library: * POSIX.1-2017: +* GCC, the GNU Compiler Collection: * The LLVM Compiler Infrastructure: * clang: a C language family frontend for LLVM: +* GNU GCC手册-1: +* gcc的基本用法: +* Comparison of Diagnostics between GCC and Clang: +* gcc和g++的区别: + * Linux内核中无名管道pipe和有名管道fifo的分析: * 应用 Valgrind 发现 Linux 程序的内存问题: * 如何在linux下检测内存泄漏: * Linux下的时间概念(主要是其中的计时器的使用): * Linux 桌面应用技术专题: * Linux系统调用列表: -* GNU GCC手册-1: -* gcc的基本用法: * Linux 套接字编程中的 5 个隐患: -* gcc和g++的区别: * 使用 GLib 工具集管理 C 数据帖子发表于: * Linux静态/动态链接库的创建和使用: * 基于X的GNOME、GTK、GDK、XLib、GLib等之间的关系: -* Comparison of Diagnostics between GCC and Clang: ## Windows/Linux剪不断理还乱 From 6c4162646ef3dee37b8e0ad20134c08c86971856 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sat, 21 Dec 2019 12:12:35 +0800 Subject: [PATCH 040/234] update --- ...+\345\255\246\344\271\240\344\271\213\350\267\257.md" | 9 +++++++-- ...6\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 9bf3fed..a435d12 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -60,7 +60,7 @@ * DUMPBIN Reference: * atexit和onexit的主要用法和区别: * _onexit, _onexit_m: -* 为 Visual C++ 项目创建的文件类型: +* error C4995: “wcscpy”: 名称被标记为 #pragma deprecated: * VC知识库: * VC 常用数据类型总结 俩篇: * 预编译头文件介绍和说明: @@ -69,14 +69,19 @@ * VC++的Unicode编程: * VC++,掀起你的盖头来——谈VC++对象模型: * Visual C++ 入门精解: -* visual studio 2008中头文件和库文件路径设置: * Useful enhancements for Visual Studio .NET: * Windows动态库与Linux共享对象比较: * ODBC中的FX/Bulk RFX数据交换机制分析: * VC++6.0编译时总死机,安装vcsp6补丁: * DEBUG和RELEASE 版本差异及调试相关问题: * Debug和Release有什么区别: +* 关于VS中区分debug与release,32位与64位编译的宏定义: * MSVC vs. MinGW 之 (lib,dll,def,obj,exe) vs (a,dll,def,o,exe): +* 为 Visual C++ 项目创建的文件类型: +* visual studio 2008中头文件和库文件路径设置: +* VS2017中设置程序以管理员身份运行: +* VS2017应用在XP系统上运行: +* 在 VS2017 使用所有旧版本的平台工具集: ## Linux C++ diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 6647783..ecaa036 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -114,6 +114,8 @@ * 将git commit的默认编辑器从nano转为vim: * Linux下 保存 git账号密码: +* 执行Git命令时出现各种 SSL certificate problem 的解决办法: +* warning: remote HEAD refers to nonexistent ref, unable to checkout: * 分支管理策略: * Bug分支: From c81b7d7009841da847e981078563b3eaf6bc9c59 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sat, 18 Jan 2020 18:14:22 +0800 Subject: [PATCH 041/234] update --- ...5\246\344\271\240\344\271\213\350\267\257.md" | 16 ++++++++++++++++ ...5\246\344\271\240\344\271\213\350\267\257.md" | 4 ++++ ...5\246\344\271\240\344\271\213\350\267\257.md" | 6 ------ ...5\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ 4 files changed, 22 insertions(+), 6 deletions(-) diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index a435d12..24e8bb5 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -150,6 +150,7 @@ * Does C++ need a universal package manager? * vcpkg(C++ Library Manager for Windows, Linux, and MacOS): +* 解决vcpkg下载缓慢的问题: * Conan(the C / C++ Package Manager for Developers): * Buckaroo: * cget: @@ -158,6 +159,14 @@ * CPPAN: * Hunter: +## 一点经验教训 + +C/C++由于历史原因,编译,构建难度相对于目前主流的其他语言如Java、Python、Go等要大的多,不同操作系统平台,不同编译工具差别很大,且没有一个完美的包管理工具,为了少花时间到环境配置上,推荐选型如下: + +* 如果是Windows平台,且基本没有依赖,建议配套CLION+GCC+MinGW; +* 如果是Windows平台,且依赖较多,比如Gtest,OpenSSL,建议配套VS+VCPKGS; +* 如果是Linux平台,CLION+GCC + ## Glib/GTK+/Gnome * GLib Reference Manual: @@ -232,6 +241,13 @@ * Parasoft C/C++test: +## OpenSSL + +* OpenSSL: +* BoringSSL: +* LibreSSL: +* OpenSSL 在windows系统下的编译全解: + ## XML * TinyXML: diff --git "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 14f23db..5381516 100644 --- "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -30,6 +30,10 @@ * Vimperator: * VIM常见用法总结: +* TagCollection: +* mpi.vim: +* VimLogViewer: + ## Jetbrains * Clion: diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index ed1ff1d..18c2575 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -701,12 +701,6 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * acunetix: * xfocus: -## OpenSSL - -* OpenSSL: -* BoringSSL: -* LibreSSL: - ## klocwork(收费) * diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index ecaa036..c473e85 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -175,6 +175,8 @@ git push origin master:b1 * sonarqube: * sonarcloud: +* SonarCFamily for C++: +* C/C++/Objective-C: * travis 和 sonarcloud(java项目举例): ## Others From 868f8e4bfd032958ea66ed06f1482b26e2be7bc7 Mon Sep 17 00:00:00 2001 From: Aloys Date: Wed, 29 Jan 2020 22:55:45 +0800 Subject: [PATCH 042/234] update --- ...0\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + ...\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 24e8bb5..272cddf 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -113,6 +113,7 @@ * MinGW-w64(推荐): * MinGW-w64下载地址: +* What is difference between sjlj vs dwarf vs seh? * MinGW: * TDM-GCC: * cygwin: diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index c473e85..49c3f10 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -122,7 +122,7 @@ * git patch: Version Control with Git 2nd Edition[Git 版本控制管理 第2版] CHAPTER 14 Patches * Permanently remove files and folders from Git ``repo``: * git 把文件从版本管理中移除: -* git乱码解决方案汇总: +* git乱码解决方案汇总: * git pull 和本地文件冲突问题解决: * Remove sensitive data: * Caching your GitHub password in Git: From 47bcb38f61c13be92d5f58513c4cd3d59647c13b Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Thu, 30 Jan 2020 15:01:27 +0800 Subject: [PATCH 043/234] update --- ...345\255\246\344\271\240\344\271\213\350\267\257.md" | 10 ++++++++++ ...345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + 2 files changed, 11 insertions(+) diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 272cddf..60d3a5b 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -53,6 +53,7 @@ * /std (Specify Language Standard Version): * CRT Library Features: +* VC 运行时库 /MD、/MDd 和 /MT、/MTd: * Security Features in the CRT: * Linker Tools Warning LNK4098: * LINK : fatal error LNK1104: 无法打开文件“LIBCD.lib”: @@ -82,6 +83,8 @@ * VS2017中设置程序以管理员身份运行: * VS2017应用在XP系统上运行: * 在 VS2017 使用所有旧版本的平台工具集: +* Visual Studio 如何屏蔽告警: +* C++17 Feature Removals And Deprecation: ## Linux C++ @@ -261,6 +264,7 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语 ## JSON * jsoncpp: +* nlohmann/json(JSON for Modern C++): ## 其它配置格式 @@ -282,6 +286,11 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语 * +## 标准C/C++语法知识点 + +* nothrow: +* C++中的delete和delete[]的区别: + ## Others * The International Obfuscated C Code Contest: @@ -314,5 +323,6 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语 * 基于对象和面向对象的区别: * const 不再迷茫: * C语言中随机数相关问题: +* VS Code C++ 代码格式化方法(clang-format): * C/C++大数库简介: * C++资源之不完全导引: C++资源之不完全导引.docx diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 49c3f10..c06cbf6 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -139,6 +139,7 @@ * git 拉取远程指定分支 pull本地不存在的分支: * Resolving a merge conflict on gerrit: * CHERRY-PICKING SPECIFIC COMMITS FROM ANOTHER BRANCH: +* Git操作 :从一个分支cherry-pick多个commit到其他分支: * git checkout --ours/--theirs: * github上fork了别人的项目后,再同步更新别人的提交: * 撤销 git commit --amend: From dcc3d38c49960964e67b0ed00f260acbc90a9b78 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Thu, 30 Jan 2020 15:10:59 +0800 Subject: [PATCH 044/234] update --- ...16C++\345\255\246\344\271\240\344\271\213\350\267\257.md" | 5 +++++ 1 file changed, 5 insertions(+) diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 60d3a5b..50028a6 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -54,6 +54,7 @@ * /std (Specify Language Standard Version): * CRT Library Features: * VC 运行时库 /MD、/MDd 和 /MT、/MTd: +* #error Please use the /MD switch for _AFXDLL builds: * Security Features in the CRT: * Linker Tools Warning LNK4098: * LINK : fatal error LNK1104: 无法打开文件“LIBCD.lib”: @@ -85,6 +86,7 @@ * 在 VS2017 使用所有旧版本的平台工具集: * Visual Studio 如何屏蔽告警: * C++17 Feature Removals And Deprecation: +* C++:在程序中获取全球唯一标识号(GUID或UUID): ## Linux C++ @@ -288,8 +290,11 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语 ## 标准C/C++语法知识点 +* C结构体之位域(位段): +* C++ NULL与nullptr的区别: * nothrow: * C++中的delete和delete[]的区别: +* 对C++中map的四种插入方式的比较及同值覆盖问题: ## Others From 3a0d6f262370fcd87325b97346f1af1cf14e8997 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Thu, 30 Jan 2020 15:57:15 +0800 Subject: [PATCH 045/234] update --- ...5\246\344\271\240\344\271\213\350\267\257.md" | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 50028a6..532922b 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -3,9 +3,9 @@ ## Reference * -* +* +* News, Status & Discussion about Standard C++: * C++ compiler support: -* * C standard library: * C++ Standard Library: @@ -63,21 +63,17 @@ * atexit和onexit的主要用法和区别: * _onexit, _onexit_m: * error C4995: “wcscpy”: 名称被标记为 #pragma deprecated: -* VC知识库: * VC 常用数据类型总结 俩篇: * 预编译头文件介绍和说明: * 预编译头文件解析: * VC 预编译头文件的使用: -* VC++的Unicode编程: +* VC++的Unicode编程: * VC++,掀起你的盖头来——谈VC++对象模型: * Visual C++ 入门精解: * Useful enhancements for Visual Studio .NET: * Windows动态库与Linux共享对象比较: * ODBC中的FX/Bulk RFX数据交换机制分析: * VC++6.0编译时总死机,安装vcsp6补丁: -* DEBUG和RELEASE 版本差异及调试相关问题: -* Debug和Release有什么区别: -* 关于VS中区分debug与release,32位与64位编译的宏定义: * MSVC vs. MinGW 之 (lib,dll,def,obj,exe) vs (a,dll,def,o,exe): * 为 Visual C++ 项目创建的文件类型: * visual studio 2008中头文件和库文件路径设置: @@ -88,6 +84,12 @@ * C++17 Feature Removals And Deprecation: * C++:在程序中获取全球唯一标识号(GUID或UUID): +## 需要整理的 + +* DEBUG和RELEASE 版本差异及调试相关问题: +* Debug和Release有什么区别: +* 关于VS中区分debug与release,32位与64位编译的宏定义: + ## Linux C++ * GNU C Library: From 70863e8f3f4e4b93e648176c9945d42efb26863a Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Wed, 12 Feb 2020 20:56:28 +0800 Subject: [PATCH 046/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 74 ++++++++++++------- ...46\344\271\240\344\271\213\350\267\257.md" | 6 +- ...46\344\271\240\344\271\213\350\267\257.md" | 2 + 3 files changed, 54 insertions(+), 28 deletions(-) diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 532922b..a0969f6 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -13,16 +13,6 @@ * C 语言常见问题集: * The C++ Standard Library - A Tutorial and Reference: -## Tools - -* cdecl: -* Visual Leak Detector for Visual C++ : -* Valgrind: -* PC-lint for C/C++: -* cppcheck: -* C and C++ Code Counter(CCCC): -* Dev-C++: - ## Libraries * boost: @@ -39,8 +29,6 @@ * EGE(Easy Graphics Engine): * CLucene - a C++ search engine: * Translate STL 2 C Language: -* Log library for C++: -* log4cplus: * Borland-style CONIO: * DISLIN: * ICU - International Components for Unicode: @@ -53,21 +41,33 @@ * /std (Specify Language Standard Version): * CRT Library Features: -* VC 运行时库 /MD、/MDd 和 /MT、/MTd: -* #error Please use the /MD switch for _AFXDLL builds: +* 从 WRL 移动到 C++/WinRT: * Security Features in the CRT: * Linker Tools Warning LNK4098: -* LINK : fatal error LNK1104: 无法打开文件“LIBCD.lib”: +* Importing and Exporting: +* OneCore.lib umbrella library (by module): +* Windows 8.1 API Sets: +* SecureZeroMemory function: +* ShellExecuteA function: * 链接器工具错误 LNK2026: +* CREATEGUID Function (GUID): * DUMPBIN Reference: +* 为 Visual C++ 项目创建的文件类型: + +* C++17 Feature Removals And Deprecation: + * atexit和onexit的主要用法和区别: * _onexit, _onexit_m: + +* VC 运行时库 /MD、/MDd 和 /MT、/MTd: +* #error Please use the /MD switch for _AFXDLL builds: +* LINK : fatal error LNK1104: 无法打开文件“LIBCD.lib”: * error C4995: “wcscpy”: 名称被标记为 #pragma deprecated: * VC 常用数据类型总结 俩篇: * 预编译头文件介绍和说明: * 预编译头文件解析: * VC 预编译头文件的使用: -* VC++的Unicode编程: +* VC++6.0应用程序错误,0x5003eaed: * VC++,掀起你的盖头来——谈VC++对象模型: * Visual C++ 入门精解: * Useful enhancements for Visual Studio .NET: @@ -75,13 +75,11 @@ * ODBC中的FX/Bulk RFX数据交换机制分析: * VC++6.0编译时总死机,安装vcsp6补丁: * MSVC vs. MinGW 之 (lib,dll,def,obj,exe) vs (a,dll,def,o,exe): -* 为 Visual C++ 项目创建的文件类型: * visual studio 2008中头文件和库文件路径设置: * VS2017中设置程序以管理员身份运行: * VS2017应用在XP系统上运行: * 在 VS2017 使用所有旧版本的平台工具集: * Visual Studio 如何屏蔽告警: -* C++17 Feature Removals And Deprecation: * C++:在程序中获取全球唯一标识号(GUID或UUID): ## 需要整理的 @@ -89,6 +87,7 @@ * DEBUG和RELEASE 版本差异及调试相关问题: * Debug和Release有什么区别: * 关于VS中区分debug与release,32位与64位编译的宏定义: +* VC++中debug跟release编译模式的区别总结: ## Linux C++ @@ -105,6 +104,12 @@ * Comparison of Diagnostics between GCC and Clang: * gcc和g++的区别: +* GNU build system: +* GNU_Libtool: +* Autotools Mythbuster: +* Autoconf: +* Automake: + * Linux内核中无名管道pipe和有名管道fifo的分析: * 应用 Valgrind 发现 Linux 程序的内存问题: * 如何在linux下检测内存泄漏: @@ -127,6 +132,9 @@ * 对话 UNIX: 在 Windows 上使用 Cygwin: * GTK+与MFC不完全对比: * 将 MFC 应用程序移植到 Linux: +* Enabling string conversion functions in MinGW: + +## C++近场通讯开发 * Win32蓝牙开发: @@ -144,6 +152,11 @@ * * eclipse 配置 TDM-GCC 64位版方法: * eclipse写C++控制台程序,不见输出: +* eclipse C/ C++编译含有多个main函数的项目: + +## Dev-C++ + +* Dev-C++: ## CMake @@ -171,9 +184,9 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语言如Java、Python、Go等要大的多,不同操作系统平台,不同编译工具差别很大,且没有一个完美的包管理工具,为了少花时间到环境配置上,推荐选型如下: -* 如果是Windows平台,且基本没有依赖,建议配套CLION+GCC+MinGW; +* 如果是Windows平台,且基本没有依赖,建议配套CLION+CMAKE+GCC(MinGW); * 如果是Windows平台,且依赖较多,比如Gtest,OpenSSL,建议配套VS+VCPKGS; -* 如果是Linux平台,CLION+GCC +* 如果是Linux平台,CLION+CMAKE+GCC ## Glib/GTK+/Gnome @@ -227,7 +240,7 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语 ## Doxygen -* +* * 学习用 doxygen 生成源码文档: * 使用doxygen为C/C++程序生成中文文档(上): * Doxygen + Graphviz + Htmlhelp, 成为文档好手: @@ -249,6 +262,18 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语 * Parasoft C/C++test: +## 日志 + +* Log library for C++: +* log4cplus: +* log4cxx: + +* glog: +* C++日志操作开源函数库之Google-glog: +* Google glog 使用: +* 关于glog使用中遇到的问题: +* 在Windows上编译、应用glog: + ## OpenSSL * OpenSSL: @@ -300,14 +325,13 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语 ## Others +* C++代码质量度量工具大阅兵: + * The International Obfuscated C Code Contest: * Comparing Two High-Performance I/O Design Patterns: * 使您的软件运行起来——防止缓冲区溢出: * 屏幕输出VS文件输出: -* C/C++内存泄漏及检测: -* 浅谈C/C++内存泄露及其检测工具: -* 内存泄露检测工具比较: * 亲密接触C可变参数函数 : * TCP连接中的TIME_WAIT状态: * see also: 《TCP-IP详解卷1:协议》第十八章 @@ -322,7 +346,6 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语 * C/C++指针原理: * C++ STL轻松导学: * undefined reference问题总结: -* Enabling string conversion functions in MinGW: * C++ Rocks!: * 减少C++代码编译时间的方法: * C++编译错误cannot have cv-qualifier: @@ -332,4 +355,5 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语 * C语言中随机数相关问题: * VS Code C++ 代码格式化方法(clang-format): * C/C++大数库简介: +* cdecl: * C++资源之不完全导引: C++资源之不完全导引.docx diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index 8bb061e..6577de7 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -43,6 +43,7 @@ * explainshell: * tldr: +* Nushell: * Install Microsoft Windows Fonts in Ubuntu: * Linux Performance: @@ -92,7 +93,6 @@ * 将Linux下编译的warning警告信息输出到文件中[整理笔记]: * linux C中调用shell命令和运行shell脚本: * find 删除拷贝用法: -* linux命令strings: * linux 修改分区卷标 ( Partition Label ) : * Linux快捷键: * shell脚本“syntax error:unexpected end of file”解决方案 : @@ -156,14 +156,14 @@ * 串口传输文件 lrzsz: * httpry(HTTP logging and information retrieval tool ): * iproute2: -* objdump: +* GNU Binutils(objdump/gprof/strings): * tcpdump: * indent: * cproto: -* gprof: * ttyrec 和 ttyplay(记录、保存和播放终端会话软件): * curl: * Poptop - The PPTP Server for Linux: +* Linux Extended BPF (eBPF) Tracing Tools: * GNU Grep: * ack: diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index c06cbf6..d515731 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -87,10 +87,12 @@ * Travis CI: * appveyor: * codeclimate: +* coverity: * COVERALLS: * GITTER: * Waffle: * choosealicense: +* codedocs: * shields: * JitPack: * VersionEye(已废弃): From 5a3cfce4bc03e225be72d9654b7bc9d2749607f6 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sat, 15 Feb 2020 13:01:44 +0800 Subject: [PATCH 047/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 42 +++++++++++++++---- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index a0969f6..eca41ab 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -41,23 +41,38 @@ * /std (Specify Language Standard Version): * CRT Library Features: +* UCRT 按字母顺序排列的函数参考: * 从 WRL 移动到 C++/WinRT: * Security Features in the CRT: -* Linker Tools Warning LNK4098: * Importing and Exporting: * OneCore.lib umbrella library (by module): * Windows 8.1 API Sets: +* Windows 7 API Sets: +* major changes between 7.00 and 8.00: * SecureZeroMemory function: * ShellExecuteA function: * 链接器工具错误 LNK2026: * CREATEGUID Function (GUID): * DUMPBIN Reference: * 为 Visual C++ 项目创建的文件类型: +* I/O Completion Ports: + +* C/C++ Compiler and build tools errors and warnings: + * C2360(initialization of 'identifier' is skipped by 'case' label) + * C4251('identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2') + * Exporting classes containing std:: objects (vector, map, etc) from a dll: + * LNK4042(object specified more than once; extras ignored) + * Visual Studio 2010's strange “warning LNK4042”: + * Visual Studio 2010 & 2008 can't handle source files with identical names in different folders?: + * LNK4098(defaultlib 'library' conflicts with use of other libs; use /NODEFAULTLIB:library) + +* GetPrivateProfileString/WritePrivateProfileString(INI读取和写入): * C++17 Feature Removals And Deprecation: * atexit和onexit的主要用法和区别: * _onexit, _onexit_m: +* Windows 8 SDK: Include files in "shared", "um", and "winrt" directories. What's the difference? * VC 运行时库 /MD、/MDd 和 /MT、/MTd: * #error Please use the /MD switch for _AFXDLL builds: @@ -76,11 +91,14 @@ * VC++6.0编译时总死机,安装vcsp6补丁: * MSVC vs. MinGW 之 (lib,dll,def,obj,exe) vs (a,dll,def,o,exe): * visual studio 2008中头文件和库文件路径设置: +* VS2005调试时出现无法找到调试信息解决方案: * VS2017中设置程序以管理员身份运行: * VS2017应用在XP系统上运行: * 在 VS2017 使用所有旧版本的平台工具集: * Visual Studio 如何屏蔽告警: * C++:在程序中获取全球唯一标识号(GUID或UUID): +* MSBulid、IncrediBuild命令行接口实现自动化编译: +* 理解WinRT: ## 需要整理的 @@ -139,14 +157,15 @@ * Win32蓝牙开发: * Native Wifi: -* WiFi direct 的相关特点: -* NATIVE WIFI HOSTED NETWORK VS WIFI DIRECT LEGACY SOFT AP: * Wi-Fi Direct: * Wi-Fi Direct Legacy Connection C++ WRL Demo: -* Windows.Devices.WiFi Namespace: -* Windows.Devices.WiFiDirect Namespace: +* Windows.Devices.WiFi Namespace: +* Windows.Devices.WiFiDirect Namespace(含Wi-Fi Direct sample): * Windows.Devices.WiFiDirect.Services Namespace: +* WiFi direct 的相关特点: +* NATIVE WIFI HOSTED NETWORK VS WIFI DIRECT LEGACY SOFT AP: + ## Eclipse CDT * @@ -286,10 +305,6 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语 * TinyXML: * Libxml2: -## INI - -* GetPrivateProfileString/WritePrivateProfileString: - ## JSON * jsoncpp: @@ -329,6 +344,14 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语 * The International Obfuscated C Code Contest: +* C++基础----C++ 布尔类型(bool)及BOOL和bool的区别: +* size_t 类型: +* C++命名空间: +* c++对象的生命周期: +* C语言内存分配方式: +* C++ 中 # 和 ## 和 #@ 的使用: +* 容器元素是const元素时的错误: +* Does C++11 allow vector? * Comparing Two High-Performance I/O Design Patterns: * 使您的软件运行起来——防止缓冲区溢出: * 屏幕输出VS文件输出: @@ -356,4 +379,5 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语 * VS Code C++ 代码格式化方法(clang-format): * C/C++大数库简介: * cdecl: +* Return-into-libc 攻击及其防御: * C++资源之不完全导引: C++资源之不完全导引.docx From c4a28b2fe96c414bfe77280a0598128887aa0e33 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 16 Feb 2020 19:03:33 +0800 Subject: [PATCH 048/234] update --- ...70\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + 1 file changed, 1 insertion(+) diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index eca41ab..436f7e0 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -99,6 +99,7 @@ * C++:在程序中获取全球唯一标识号(GUID或UUID): * MSBulid、IncrediBuild命令行接口实现自动化编译: * 理解WinRT: +* 请问如何修改某个exe文件的版本信息,包括CompanyName、ProductName等?: ## 需要整理的 From a0f2c718e2c81288477a4e690eecda72ee59443a Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 1 Mar 2020 20:01:47 +0800 Subject: [PATCH 049/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 436f7e0..3473208 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -21,17 +21,17 @@ * Crypto++: * OGLplus: * POSIX Threads for Win32: -* Borland Graphics Interface (BGI) for Windows: * libcstl: * SWIG: -* Win32 BGI implementation: +* Borland Graphics Interface (BGI) for Windows: +* Win32 BGI implementation(OpenBGI): * EasyX Library for C++: * EGE(Easy Graphics Engine): * CLucene - a C++ search engine: * Translate STL 2 C Language: * Borland-style CONIO: * DISLIN: -* ICU - International Components for Unicode: +* ICU - International Components for Unicode(ICU4C/ICU4J): * libevent: * List of numerical libraries: * Standard Template Library Programmer's Guide: @@ -51,16 +51,18 @@ * major changes between 7.00 and 8.00: * SecureZeroMemory function: * ShellExecuteA function: -* 链接器工具错误 LNK2026: * CREATEGUID Function (GUID): +* Strsafe.h: * DUMPBIN Reference: * 为 Visual C++ 项目创建的文件类型: * I/O Completion Ports: * C/C++ Compiler and build tools errors and warnings: * C2360(initialization of 'identifier' is skipped by 'case' label) + * C2760(syntax error : expected 'name1' not 'name2'): * C4251('identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2') * Exporting classes containing std:: objects (vector, map, etc) from a dll: + * LNK2026(链接器工具错误): * LNK4042(object specified more than once; extras ignored) * Visual Studio 2010's strange “warning LNK4042”: * Visual Studio 2010 & 2008 can't handle source files with identical names in different folders?: @@ -107,6 +109,7 @@ * Debug和Release有什么区别: * 关于VS中区分debug与release,32位与64位编译的宏定义: * VC++中debug跟release编译模式的区别总结: +* _DEBUG vs NDEBUG: ## Linux C++ @@ -180,7 +183,9 @@ ## CMake -* +* CMake: +* cmakeconverter: +* How to support both vcxproj to cmake on a project? ## GDB @@ -256,7 +261,15 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语 ## wxWidgets -* +* wxWidgets: + +## Duilib + +* Duilib: + +* DUILibxml配置: +* DUiLib 源码分析——第一篇UIManager: +* DUiLib 源码分析——第二篇UIBase: ## Doxygen @@ -284,6 +297,8 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语 ## 日志 +* log4c: +* clog: * Log library for C++: * log4cplus: * log4cxx: From 1cc2bd067309ee558f0a75cbfee5d83280aa8b22 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Tue, 24 Mar 2020 00:02:54 +0800 Subject: [PATCH 050/234] update --- "J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 - "OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 18c2575..299e8fc 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -13,7 +13,6 @@ * API Design with Java 8: * 如何重构“箭头型”代码: * 软件项目“免坑”指南: -* 面向对象设计原则和创建SOLID应用的5个方法: * 大陆简中自由软件本地化工作指南: * 为什么称为北向接口、南向接口? * 一个程序员能够控制多少行代码: diff --git "a/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" index 9437c86..1109325 100644 --- "a/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -32,5 +32,6 @@ * topcoder: * codevs: * 猿圈: -* 九度OJ: +* 九度OJ: +* 九度OJ永久关闭声明: * ACdream Online Judge: From 348a6f5289274eb989ec04d359463478dc651150 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Tue, 24 Mar 2020 22:58:10 +0800 Subject: [PATCH 051/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 299e8fc..c788031 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -13,6 +13,17 @@ * API Design with Java 8: * 如何重构“箭头型”代码: * 软件项目“免坑”指南: + +* 面向对象设计的SOLID原则: Agile Software Development Principles Patterns and Practices[敏捷软件开发:原则、模式与实践] +* 接口隔离原则+合成/聚合复用原则+迪米特法则(最小知识原则): +* 浅谈命令查询职责分离(CQRS)模式: +* Shalloway原则: Essential Skills for the Agile Developer[A Guide to Better Programming and Design][敏捷技能修炼_敏捷软件开发与设计的最佳实践] +* 好莱坞原则: Hear First 设计模式 + +* 变化驱动:正交设计: +* 正交设计,OO与SOLID: +* 实战正交设计: + * 大陆简中自由软件本地化工作指南: * 为什么称为北向接口、南向接口? * 一个程序员能够控制多少行代码: @@ -72,7 +83,6 @@ * PO BO VO DTO POJO DAO DO这些Java中的概念分别指一些什么?: * Java bytecode instruction listings: * Java自动装箱与拆箱及其陷阱: -* Web安全漏洞之:JDK1.5环境下扫描远程调试端口导致JVM崩溃【JDWP exit error JVMTI_ERROR_NONE(0)】: * java byte与char互转原理: * Virtual Memory Usage from Java under Linux, too much memory used: * 理解OAuth 2.0: @@ -87,8 +97,6 @@ * astyle 使用说明: * How to make Java 6, which fails SSL connection with “SSL peer shut down incorrectly”, succeed like Java 7?: * 使用监听器对Spring bean id进行唯一校验: -* Android安全开发之ZIP文件目录遍历: -* 华为内部的Web安全原则: * UML关系(泛化,实现,依赖,关联(聚合,组合)): * 解析UML箭头、线条代表的意义: * Burp Suite使用介绍(一) (二) (三): @@ -121,7 +129,6 @@ * SIT和UAT: * * 客户端的IP地址伪造、CDN、反向代理、获取的那些事儿: -* 一些安全相关的HTTP响应头: * Ehcache详细解读: * EhCache介绍: * JDK自带工具之概览: @@ -162,7 +169,6 @@ * 浅析ReDoS的原理与实践: * More Servlets and JavaServer Pages: * UTF-8 encoding table and Unicode characters: -* Java之美[从菜鸟到高手演变]之设计模式: * [System.currentTimeMillis]/[Calendar.getInstance().getTimeInMillis()]/[new Date().getTime()]: * javac的调试选项-g的意义: @@ -173,6 +179,13 @@ * HTTPS 升级指南: * HTML中`       `等6种空白空格的区别: +* STRIDE威胁建模方法讨论: +* STRIDE威胁建模漫谈: +* 华为内部的Web安全原则: +* Android安全开发之ZIP文件目录遍历: +* Web安全漏洞之:JDK1.5环境下扫描远程调试端口导致JVM崩溃【JDWP exit error JVMTI_ERROR_NONE(0)】: +* 一些安全相关的HTTP响应头: + ## JVM * 深入理解Java虚拟机:JVM高级特性与最佳实践第二版-周志明 From b297d310036bf3ba97a34554cd1528f701dbd7f7 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Tue, 24 Mar 2020 23:11:21 +0800 Subject: [PATCH 052/234] update --- "J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index c788031..e37e297 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -17,7 +17,7 @@ * 面向对象设计的SOLID原则: Agile Software Development Principles Patterns and Practices[敏捷软件开发:原则、模式与实践] * 接口隔离原则+合成/聚合复用原则+迪米特法则(最小知识原则): * 浅谈命令查询职责分离(CQRS)模式: -* Shalloway原则: Essential Skills for the Agile Developer[A Guide to Better Programming and Design][敏捷技能修炼_敏捷软件开发与设计的最佳实践] +* Shalloway原则+分离构造和使用原则: Essential Skills for the Agile Developer[A Guide to Better Programming and Design][敏捷技能修炼_敏捷软件开发与设计的最佳实践] * 好莱坞原则: Hear First 设计模式 * 变化驱动:正交设计: From b194335c48756659aff2cc50523f2d0c3e6c9d36 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Thu, 26 Mar 2020 22:44:38 +0800 Subject: [PATCH 053/234] update --- "J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index e37e297..805193c 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -15,7 +15,7 @@ * 软件项目“免坑”指南: * 面向对象设计的SOLID原则: Agile Software Development Principles Patterns and Practices[敏捷软件开发:原则、模式与实践] -* 接口隔离原则+合成/聚合复用原则+迪米特法则(最小知识原则): +* 合成/聚合复用原则+迪米特法则(最小知识原则): Java与模式.pdf * 浅谈命令查询职责分离(CQRS)模式: * Shalloway原则+分离构造和使用原则: Essential Skills for the Agile Developer[A Guide to Better Programming and Design][敏捷技能修炼_敏捷软件开发与设计的最佳实践] * 好莱坞原则: Hear First 设计模式 @@ -31,7 +31,7 @@ * 开源协议汇总: * 如何选择开源许可证?: -* Item 11: Always override hashCode when you override equals: +* Item 11: Always override hashCode when you override equals: Effective Java 3rd Edition * Jdk1.8中的HashMap实现原理: * Java7/8 中的HashMap 和 ConcurrentHashMap: * What is difference between fail safe iterator and fail fast iterator: @@ -48,6 +48,9 @@ * Java HotSpot VM Options: * Setting Project Facets: * Overriding and Hiding Methods: +* javac: +* javac的调试选项-g的意义: +* Java Platform Debugger Architecture (JPDA): * jarFinder: * java examples: @@ -170,7 +173,6 @@ * More Servlets and JavaServer Pages: * UTF-8 encoding table and Unicode characters: * [System.currentTimeMillis]/[Calendar.getInstance().getTimeInMillis()]/[new Date().getTime()]: -* javac的调试选项-g的意义: * List of HTTP status codes: * html的meta总结,html标签中meta属性使用介绍: From 28b94683eb85807b51fa00be6c578bf8dafa2034 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Fri, 27 Mar 2020 20:43:10 +0800 Subject: [PATCH 054/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 805193c..c26d666 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -15,7 +15,7 @@ * 软件项目“免坑”指南: * 面向对象设计的SOLID原则: Agile Software Development Principles Patterns and Practices[敏捷软件开发:原则、模式与实践] -* 合成/聚合复用原则+迪米特法则(最小知识原则): Java与模式.pdf +* 合成/聚合复用原则+迪米特法则(最小知识原则): Java与模式 * 浅谈命令查询职责分离(CQRS)模式: * Shalloway原则+分离构造和使用原则: Essential Skills for the Agile Developer[A Guide to Better Programming and Design][敏捷技能修炼_敏捷软件开发与设计的最佳实践] * 好莱坞原则: Hear First 设计模式 @@ -36,7 +36,7 @@ * Java7/8 中的HashMap 和 ConcurrentHashMap: * What is difference between fail safe iterator and fail fast iterator: -* Java IO相关,字符编码相关: "Java IO 2nd Edition" +* Java IO相关,字符编码相关: Java IO 2nd Edition * Java直接内存与非直接内存性能测试: * Java直接(堆外)内存使用详解: * Buffer: @@ -110,7 +110,7 @@ * Java关键字及其作用: * java中static{}语句块详解: * 转一个J2EE开发时的包命名规则,养成良好的开发习惯: -* 对比C++ 和Java: Thinking in java[Java编程思想第4版].pdf +* 对比C++ 和Java: Thinking in java[Java编程思想第4版] * JAR文件包及jar命令详解: * JAVA调用系统命令或可执行程序: * 过时date.toLocaleString()的解决方法: @@ -349,8 +349,17 @@ ## JMockit -* 官网: -* 各种mock工具的比较: +* JMockit: +* jMock: +* EasyMock: +* mockito: +* Mock测试工具比较: + +## Fuzz + +* fuzz实战之libfuzzer: +* 浅析Peach Fuzz: +* Syzkaller:Linux内核模糊测试工具分享: ## TestNG From 66b364e9627367eba5f6ba44385273458a0f2155 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 29 Mar 2020 21:19:17 +0800 Subject: [PATCH 055/234] update --- "J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" | 5 +++++ 1 file changed, 5 insertions(+) diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index c26d666..cf57453 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -9,6 +9,7 @@ ## Java tutorial +* On Java 8(事实上的 Java 编程思想 第5版): * 9 Best Practices to Handle Exceptions in Java: * API Design with Java 8: * 如何重构“箭头型”代码: @@ -19,10 +20,12 @@ * 浅谈命令查询职责分离(CQRS)模式: * Shalloway原则+分离构造和使用原则: Essential Skills for the Agile Developer[A Guide to Better Programming and Design][敏捷技能修炼_敏捷软件开发与设计的最佳实践] * 好莱坞原则: Hear First 设计模式 +* Tell, Don't Ask: * 变化驱动:正交设计: * 正交设计,OO与SOLID: * 实战正交设计: +* 简单设计: * 大陆简中自由软件本地化工作指南: * 为什么称为北向接口、南向接口? @@ -32,6 +35,7 @@ * 如何选择开源许可证?: * Item 11: Always override hashCode when you override equals: Effective Java 3rd Edition +* 在 Java 中初始化 List 的五种方法: * Jdk1.8中的HashMap实现原理: * Java7/8 中的HashMap 和 ConcurrentHashMap: * What is difference between fail safe iterator and fail fast iterator: @@ -40,6 +44,7 @@ * Java直接内存与非直接内存性能测试: * Java直接(堆外)内存使用详解: * Buffer: +* Java引用总结--StrongReference、SoftReference、WeakReference、PhantomReference: * Emoji的编码以及常见问题的解决方法: * Java代码质量度量工具大阅兵: From a5422473234fb46630f4f4a32ad8fe1576f1d758 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Tue, 14 Apr 2020 23:17:11 +0800 Subject: [PATCH 056/234] update --- ...6C++\345\255\246\344\271\240\344\271\213\350\267\257.md" | 6 +++++- "J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 3473208..6994f5d 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -39,6 +39,7 @@ ## Windows C++ +* VISUAL ASSIST: * /std (Specify Language Standard Version): * CRT Library Features: * UCRT 按字母顺序排列的函数参考: @@ -315,11 +316,14 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语 * BoringSSL: * LibreSSL: * OpenSSL 在windows系统下的编译全解: +* 使用OpenSSL实现X25519秘钥协商功能: ## XML -* TinyXML: +* TinyXML: +* tinyxml2: * Libxml2: +* RapidXml: ## JSON diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index cf57453..07c4652 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -515,6 +515,7 @@ Eclipse中`Update Project`,选择`Force Update of Snapshots/Releases` * overlays: * * Maven Ant Tasks: +* Maven插件maven-antrun-plugin的使用: * M2Eclipse项目地址: * 安装说明(Eclipse EE中自带): * 如何用Maven创建web项目(具体步骤): From f91071fbc197c3cd1ca0b1993f0e75b6dd13b49c Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 26 Apr 2020 01:12:05 +0800 Subject: [PATCH 057/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 243 +++++++++--------- ...04\344\270\216\347\256\227\346\263\225.md" | 9 + ...46\344\271\240\344\271\213\350\267\257.md" | 3 +- 3 files changed, 129 insertions(+), 126 deletions(-) create mode 100644 "\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225.md" diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 07c4652..b54d7bc 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -9,7 +9,6 @@ ## Java tutorial -* On Java 8(事实上的 Java 编程思想 第5版): * 9 Best Practices to Handle Exceptions in Java: * API Design with Java 8: * 如何重构“箭头型”代码: @@ -34,20 +33,49 @@ * 开源协议汇总: * 如何选择开源许可证?: +* java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一: +* Java 泛型中 的区别: * Item 11: Always override hashCode when you override equals: Effective Java 3rd Edition * 在 Java 中初始化 List 的五种方法: +* 最全的集合干货送给大家: +* Java集合ArrayDeque类解读: * Jdk1.8中的HashMap实现原理: * Java7/8 中的HashMap 和 ConcurrentHashMap: * What is difference between fail safe iterator and fail fast iterator: - * Java IO相关,字符编码相关: Java IO 2nd Edition * Java直接内存与非直接内存性能测试: * Java直接(堆外)内存使用详解: * Buffer: * Java引用总结--StrongReference、SoftReference、WeakReference、PhantomReference: -* Emoji的编码以及常见问题的解决方法: +* Java实现单例模式的9种方法: +* 5种必会的Java异步调用转同步的方法你会几种: +* Java中Volatile关键字详解: -* Java代码质量度量工具大阅兵: +* Java Runtime.exec()的使用: +* 深入理解Java:SimpleDateFormat安全的时间格式化: +* 深入理解Java:注解(Annotation)基本概念: +* Java annotation 自定义注释@interface的用法: +* [改编]深入equals方法,讨论instanceof的使用!: +* Java自动装箱与拆箱及其陷阱: +* java byte与char互转原理: +* Java关键字及其作用: +* java中static{}语句块详解: +* JAR文件包及jar命令详解: +* 类加载器基本概念: +* Jar包的正确运行方法: +* Class热替换与卸载: +* Java 类的热替换 —— 概念、设计与实现: +* Java陷阱之assert关键字: +* [System.currentTimeMillis]/[Calendar.getInstance().getTimeInMillis()]/[new Date().getTime()]: +* JAVA调用系统命令或可执行程序: +* 过时date.toLocaleString()的解决方法: +* java中Assert的用法: +* FINAL .....FINALLY ...... 和FINALIZE ......区别: +* Comparable与Comparator的区别: +* 关于toString: +* OpenJDK和SunJDK有啥区别? +* GetPropertyAction vs System.getProperty in obtaining system variables: +* File.separator vs FileSystem.getSeparator() vs System.getProperty(“file.separator”)?: * VirtualMachine: * Java HotSpot VM Options: @@ -55,130 +83,73 @@ * Overriding and Hiding Methods: * javac: * javac的调试选项-g的意义: +* javadoc相关问题: +* JDK自带工具之概览: +* How to solve the error: The system cannot find the file C:\ProgramData\Oracle\Java\javapath\java.exe: +* 三个实例演示 Java Thread Dump 日志分析: +* 深入 Java 调试体系: * Java Platform Debugger Architecture (JPDA): +* Jps介绍以及解决jps无法查看某个已经启动的java进程问题: +* Java永久代去哪儿了: +* Java8内存模型—永久代(PermGen)和元空间(Metaspace): +* JVM调优总结(转): +* Java server application troubleshooting using JDK tools: -* jarFinder: -* java examples: - -* SEI CERT Oracle Coding Standard for Java: -* Secure Coding Guidelines for Java SE: -* CWE/SANS Top 25 Most Dangerous Software Errors: - -* Introduction to Java Programming, Eighth Edition: +* Java代码质量度量工具大阅兵: * Java杂项: * Java 理论与实践: -* Java多线程: -* Java Runtime.exec()的使用: * 敏捷开发中高质量 Java 代码开发实践: -* 深入理解Java:SimpleDateFormat安全的时间格式化: -* 深入理解Java:注解(Annotation)基本概念: -* Java annotation 自定义注释@interface的用法: -* JAVA正则表达式高级用法(分组与捕获): * Java RMI 入门指南: * Java RMI与RPC,JMS的比较: * Flatten your objects Discover the secrets of the Java Serialization API: * The Java serialization algorithm revealed: -* Java Performance Tuning Guide: +* Emoji的编码以及常见问题的解决方法: * 构建一个文本可视化和分析应用程序: * POJO模式: * Java数字图像处理基础知识 - 必读: * Java反序列化时对象注入可以造成代码执行漏洞: -* [改编]深入equals方法,讨论instanceof的使用!: -* Struts2、Spring和Hibernate应用实例: -* spring中注册bean(通过代码动态注册): * Apache和IIS网站Web日志格式详解: * 领域驱动设计系列文章——浅析VO、DTO、DO、PO的概念、区别和用处: * PO BO VO DTO POJO DAO DO这些Java中的概念分别指一些什么?: * Java bytecode instruction listings: -* Java自动装箱与拆箱及其陷阱: -* java byte与char互转原理: * Virtual Memory Usage from Java under Linux, too much memory used: * 理解OAuth 2.0: -* Spring框架的反序列化远程代码执行漏洞分析(转): -* Spring “redirect:” EL vulnerability?: * Need to suppress “Warning: running an XSLT 1.0 stylesheet with an XSLT 2.0 processor” in Tomcat std out log file: * Java 授权内幕: * ServletInputStream的重复读取(多次读取)(转): -* 99%的人都理解错了HTTP中GET与POST的区别: * Developing a Service Provider using Java API(Service Provider Interface): * 驱动模块和桩模块的概念和区别: * astyle 使用说明: -* How to make Java 6, which fails SSL connection with “SSL peer shut down incorrectly”, succeed like Java 7?: -* 使用监听器对Spring bean id进行唯一校验: * UML关系(泛化,实现,依赖,关联(聚合,组合)): * 解析UML箭头、线条代表的意义: -* Burp Suite使用介绍(一) (二) (三): -* 浅析Web工程目录和tomcat目录: -* CSS3美化有序列表: -* 简洁纯净的CSS表单设计实例: -* DreamweaverCS5+Tomcat环境配置: -* Java关键字及其作用: -* java中static{}语句块详解: * 转一个J2EE开发时的包命名规则,养成良好的开发习惯: -* 对比C++ 和Java: Thinking in java[Java编程思想第4版] -* JAR文件包及jar命令详解: -* JAVA调用系统命令或可执行程序: -* 过时date.toLocaleString()的解决方法: -* Jps介绍以及解决jps无法查看某个已经启动的java进程问题: -* java中Assert的用法: -* FINAL .....FINALLY ...... 和FINALIZE ......区别: -* Comparable与Comparator的区别: -* MyEclipse删除对Struts、Hibernate、Spring的支持: -* 修改Struts2的struts.xml配置文件位置: * Eclipse 开发WEB项目所遇问题 WebContent WebRoot: -* javascript CDATA: * Java调用动态库方法说明: -* struts2关于A web application created a ThreadLocal with key of type 异常解决办法: -* 关于toString: * Servlet容器的匹配过程: -* 解决java.lang.IncompatibleClassChangeError: -* javadoc相关问题: + * 测试方面的基础概念: * SIT和UAT: +* Burp Suite使用介绍(一) (二) (三): * -* 客户端的IP地址伪造、CDN、反向代理、获取的那些事儿: * Ehcache详细解读: * EhCache介绍: -* JDK自带工具之概览: * 服务化之-路由: -* Class热替换与卸载: * HTTP Keep-Alive详解: * 定义文档兼容性: (VS.85).aspx -* 让浏览器不再显示 https 页面中的 http 请求警报: -* SNA (Share Nothing Architecture) Session 解剖: -* 挑战认证机制:《LINUX网络管理员指南(第3版).chm》6.8. Authentication with PPP -* Salted Password Hashing - Doing it Right: -* 加盐密码哈希:如何正确使用: -* CMD5(MD5反向查询): -* 数字证书原理: -* 彩虹表(Rainbow Tables)原理详解: -* 使用浏览器的计算力,对抗密码破解: -* GetPropertyAction vs System.getProperty in obtaining system variables: -* File.separator vs FileSystem.getSeparator() vs System.getProperty(“file.separator”)?: -* 三个实例演示 Java Thread Dump 日志分析: -* OpenJDK和SunJDK有啥区别? * 系统吞吐量(TPS)、用户并发量、性能测试概念和公式: * Java 语言的 XPath API: * XMLHttpRequest Living Standard: -* How to solve the error: The system cannot find the file C:\ProgramData\Oracle\Java\javapath\java.exe: * Servlet 3.1规范[翻译]: -* 深入 Java 调试体系: * MVC,MVP 和 MVVM 的图示: -* Java 类的热替换 —— 概念、设计与实现: -* 类加载器基本概念: -* Installing Java Cryptography Extension unlimited strength jurisdiction policy files: * 数据库分页Java实现: -* Jar包的正确运行方法: * Atom Authentication: * 在AI寻路决策中运用势力图(Influence Map): -* 关于 Token,你应该知道的十件事: -* 10 Things You Should Know about Tokens: -* Java陷阱之assert关键字: -* 浅析ReDoS的原理与实践: * More Servlets and JavaServer Pages: * UTF-8 encoding table and Unicode characters: -* [System.currentTimeMillis]/[Calendar.getInstance().getTimeInMillis()]/[new Date().getTime()]: +* jarFinder: +* java examples: +* 99%的人都理解错了HTTP中GET与POST的区别: * List of HTTP status codes: * html的meta总结,html标签中meta属性使用介绍: * 使用 jQuery.i18n.properties 实现 Web 前端的国际化: @@ -186,20 +157,83 @@ * HTTPS 升级指南: * HTML中`       `等6种空白空格的区别: +* javascript CDATA: +* 浅析Web工程目录和tomcat目录: +* CSS3美化有序列表: +* 简洁纯净的CSS表单设计实例: +* DreamweaverCS5+Tomcat环境配置: + +* How to make Java 6, which fails SSL connection with “SSL peer shut down incorrectly”, succeed like Java 7?: +* SEI CERT Oracle Coding Standard for Java: +* Secure Coding Guidelines for Java SE: +* CWE/SANS Top 25 Most Dangerous Software Errors: * STRIDE威胁建模方法讨论: * STRIDE威胁建模漫谈: * 华为内部的Web安全原则: * Android安全开发之ZIP文件目录遍历: * Web安全漏洞之:JDK1.5环境下扫描远程调试端口导致JVM崩溃【JDWP exit error JVMTI_ERROR_NONE(0)】: * 一些安全相关的HTTP响应头: +* SNA (Share Nothing Architecture) Session 解剖: +* 挑战认证机制:《LINUX网络管理员指南(第3版).chm》6.8. Authentication with PPP +* Salted Password Hashing - Doing it Right: +* 加盐密码哈希:如何正确使用: +* CMD5(MD5反向查询): +* 数字证书原理: +* 彩虹表(Rainbow Tables)原理详解: +* 使用浏览器的计算力,对抗密码破解: +* Installing Java Cryptography Extension unlimited strength jurisdiction policy files: +* 关于 Token,你应该知道的十件事: +* 10 Things You Should Know about Tokens: +* 浅析ReDoS的原理与实践: +* 让浏览器不再显示 https 页面中的 http 请求警报: +* 客户端的IP地址伪造、CDN、反向代理、获取的那些事儿: -## JVM +## Struts -* 深入理解Java虚拟机:JVM高级特性与最佳实践第二版-周志明 -* String.intern(): 深入理解Java虚拟机:JVM高级特性与最佳实践第二版-周志明 -* Java永久代去哪儿了: -* Java8内存模型—永久代(PermGen)和元空间(Metaspace): -* JVM调优总结(转): +* 官网: +* 源码:deprecated: +* 源码:now: + +* Struts 2.0系列: +* Struts2中的零配置与CoC(Convention over Configration): +* struts2采用convention-plugin实现零配置: +* struts2关于A web application created a ThreadLocal with key of type 异常解决办法: +* 修改Struts2的struts.xml配置文件位置: + +## Spring + +* 官网: +* 文档: +* Spring Framework 开发参考手册: +* Spring Security: +* 源码:Spring 3.0(deprecated) +* 源码:Spring 2.5及以下(deprecated) +* 源码:Spring Security(deprecated) +* 源码:spring-framework + +* Spring Tool Suite: +* spring-ide: +* Spring 的优秀工具类盘点: +* Spring使用Cache: +* spring security中限制用户登录次数超过限制的处理: +* Introducing Spring's Transaction Abstraction: Professional.Java.Development.with.the.Spring.Framework.chm + +* Struts2、Spring和Hibernate应用实例: +* spring中注册bean(通过代码动态注册): +* Spring框架的反序列化远程代码执行漏洞分析(转): +* Spring “redirect:” EL vulnerability?: +* 使用监听器对Spring bean id进行唯一校验: +* MyEclipse删除对Struts、Hibernate、Spring的支持: +* 解决java.lang.IncompatibleClassChangeError: + +## Hibernate + +* +* +* 源码:匿名可访问地址 +* 源码:开发者访问地址 + +* hibernator: ## WebService @@ -795,43 +829,6 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * Apache Shiro: -## Struts - -* 官网: -* 源码:deprecated: -* 源码:now: - -* Struts 2.0系列: -* Struts2中的零配置与CoC(Convention over Configration): -* struts2采用convention-plugin实现零配置: - -## Spring - -* 官网: -* 文档: -* Spring Framework 开发参考手册: -* Spring Security: -* 源码:Spring 3.0(deprecated) -* 源码:Spring 2.5及以下(deprecated) -* 源码:Spring Security(deprecated) -* 源码:spring-framework - -* Spring Tool Suite: -* spring-ide: -* Spring 的优秀工具类盘点: -* Spring使用Cache: -* spring security中限制用户登录次数超过限制的处理: -* Introducing Spring's Transaction Abstraction: Professional.Java.Development.with.the.Spring.Framework.chm - -## Hibernate - -* -* -* 源码:匿名可访问地址 -* 源码:开发者访问地址 - -* hibernator: - ## iBATIS/MyBatis * iBATIS官网: @@ -1056,10 +1053,6 @@ The yFiles diagramming software components are extensive class libraries that en * -## SPEL(Spring) - -* See Spring - ## JSP EL * diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225.md" new file mode 100644 index 0000000..241ecad --- /dev/null +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225.md" @@ -0,0 +1,9 @@ +# 数据结构与算法学习之路 + +* 十大经典排序算法动画,看我就够了! + +## 算法大牛和讲师们 + +* Robert Sedgewick: +* Mark Allen Weiss: +* Sartaj Sahni: diff --git "a/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\255\246\344\271\240\344\271\213\350\267\257.md" index 0355076..be34f67 100644 --- "a/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -2,4 +2,5 @@ * 我爱正则表达式: * Regular Expression Library: -* RegexBuddy/RegexMagic/PowerGREP: www.regexbuddy.com +* RegexBuddy/RegexMagic/PowerGREP: +* learn-regex: From 9c962259e3841760a7deadbb9130e7065bdc8719 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 26 Apr 2020 23:14:17 +0800 Subject: [PATCH 058/234] update --- "J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ 1 file changed, 2 insertions(+) diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index b54d7bc..ce48c18 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -49,6 +49,7 @@ * Java引用总结--StrongReference、SoftReference、WeakReference、PhantomReference: * Java实现单例模式的9种方法: * 5种必会的Java异步调用转同步的方法你会几种: +* java 偏向锁、轻量级锁及重量级锁synchronized原理: * Java中Volatile关键字详解: * Java Runtime.exec()的使用: @@ -94,6 +95,7 @@ * Java8内存模型—永久代(PermGen)和元空间(Metaspace): * JVM调优总结(转): * Java server application troubleshooting using JDK tools: +* jstack简单使用,定位死循环、线程阻塞、死锁等问题: * Java代码质量度量工具大阅兵: * Java杂项: From c03d0767a3224a52efe38b79d886a2fe61e28b2f Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Tue, 5 May 2020 19:57:24 +0800 Subject: [PATCH 059/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 9 +- ...46\344\271\240\344\271\213\350\267\257.md" | 85 ++++++++++--------- 2 files changed, 50 insertions(+), 44 deletions(-) diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index ce48c18..13313fa 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -30,9 +30,6 @@ * 为什么称为北向接口、南向接口? * 一个程序员能够控制多少行代码: -* 开源协议汇总: -* 如何选择开源许可证?: - * java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一: * Java 泛型中 的区别: * Item 11: Always override hashCode when you override equals: Effective Java 3rd Edition @@ -41,6 +38,8 @@ * Java集合ArrayDeque类解读: * Jdk1.8中的HashMap实现原理: * Java7/8 中的HashMap 和 ConcurrentHashMap: +* 图解LinkedHashMap原理: +* Java提高篇(二七)-----TreeMap: * What is difference between fail safe iterator and fail fast iterator: * Java IO相关,字符编码相关: Java IO 2nd Edition * Java直接内存与非直接内存性能测试: @@ -51,6 +50,9 @@ * 5种必会的Java异步调用转同步的方法你会几种: * java 偏向锁、轻量级锁及重量级锁synchronized原理: * Java中Volatile关键字详解: +* 请别再拿“String s = new String("xyz");创建了多少个String实例”来面试了吧: +* 彻底弄懂字符串常量池等相关问题: +* java安全沙箱(四)之安全管理器及Java API: * Java Runtime.exec()的使用: * 深入理解Java:SimpleDateFormat安全的时间格式化: @@ -189,6 +191,7 @@ * 浅析ReDoS的原理与实践: * 让浏览器不再显示 https 页面中的 http 请求警报: * 客户端的IP地址伪造、CDN、反向代理、获取的那些事儿: +* Threat Modeling: Uncover Security Design Flaws Using The STRIDE Approach: ## Struts diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index d515731..d4f1723 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -26,28 +26,28 @@ ## SVN -* 原项目地址,现在仍保留: -* 现在: -* 安装包下载地址: +* 原项目地址,现在仍保留: +* 现在: +* 安装包下载地址: * subclipse: * Subversive - SVN Team Provider: * CVS Team Provider: -* Windows Command Line客户端推荐Win32Svn: -* Windows GUI客户端推荐TortoiseSVN: -* Linux GUI客户端推荐RabbitVCS: -* SVNKit: +* Windows Command Line客户端推荐Win32Svn: +* Windows GUI客户端推荐TortoiseSVN: +* Linux GUI客户端推荐RabbitVCS: +* SVNKit: * VISUALSVN: -* Subversion 与版本控制: -* TortoiseSVN: -* TortoiseSVN命令行: +* Subversion 与版本控制: +* TortoiseSVN: +* TortoiseSVN命令行: * 设置SVN忽略文件和目录(文件夹): -* Google项目托管及Visual Studio 2008的SVN插件AnkhSVN的使用: -* 本地搭建SVN局域网服务器: -* windows下配置VisualSVN Server服务器(服务端和客户端): -* 使用svn——项目的目录布局: -* 如何结合使用 Subversion 和 Eclipse: -* Eclipse + SVN + Google code搭建代码仓库: +* Google项目托管及Visual Studio 2008的SVN插件AnkhSVN的使用: +* 本地搭建SVN局域网服务器: +* windows下配置VisualSVN Server服务器(服务端和客户端): +* 使用svn——项目的目录布局: +* 如何结合使用 Subversion 和 Eclipse: +* Eclipse + SVN + Google code搭建代码仓库: * MyEclipse使用总结——MyEclipse10安装SVN插件: * SVN版本库无损迁移与自动备份(一): * SVN版本库无损迁移与自动备份(二): @@ -68,19 +68,19 @@ ## GIT -* GIT: -* Reference: -* Documentation: +* GIT: +* Reference: +* Documentation: * Pro Git book: ### Git客户端 -* git for windows: +* git for windows: * posh-git: -* SourceTree: -* tortoisegit: -* gitlab: -* EGit: +* SourceTree: +* tortoisegit: +* gitlab: +* EGit: ### Github插件 @@ -100,15 +100,18 @@ ### Git优秀文章 -* Git Community Book 中文版: -* git/github初级运用自如: -* github使用指南:使用指南 -* windows中使用Git工具连接GitHub(配置篇): -* 打造完美 Windows git 命令行环境: -* 详解在visual studio中使用git版本系统(图文): +* Git Community Book 中文版: +* git/github初级运用自如: +* github使用指南: 使用指南 +* windows中使用Git工具连接GitHub(配置篇): +* 打造完美 Windows git 命令行环境: +* 详解在visual studio中使用git版本系统(图文): -* Commit message 和 Change log 编写指南: +* Commit message 和 Change log 编写指南: * Writing a Friendly README: +* 开源协议汇总: +* 如何选择开源许可证?: +* AGPL 开源授权协议: * 上传图片到github wiki仓库: * Publishing a Website on Bitbucket Cloud: * GitHub Pages + Hexo搭建博客: @@ -122,12 +125,12 @@ * 分支管理策略: * Bug分支: * git patch: Version Control with Git 2nd Edition[Git 版本控制管理 第2版] CHAPTER 14 Patches -* Permanently remove files and folders from Git ``repo``: -* git 把文件从版本管理中移除: -* git乱码解决方案汇总: -* git pull 和本地文件冲突问题解决: -* Remove sensitive data: -* Caching your GitHub password in Git: +* Permanently remove files and folders from Git ``repo``: +* git 把文件从版本管理中移除: +* git乱码解决方案汇总: +* git pull 和本地文件冲突问题解决: +* Remove sensitive data: +* Caching your GitHub password in Git: * github创建tag: * Git教程-分支和tag管理: * What are the git concepts of HEAD, master, origin? @@ -165,9 +168,9 @@ git push origin master:b1 ## Mercurial -* Mercurial: +* Mercurial: * mercurialeclipse: -* tortoisehg: +* tortoisehg: ## Perforce @@ -184,8 +187,8 @@ git push origin master:b1 ## Others -* CVS: -* bazaar: +* CVS: +* bazaar: * ClearCase: * SourceSafe: From 2c4374ea22c1e502c94abf584cbebfa985fdb56a Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Fri, 8 May 2020 20:27:27 +0800 Subject: [PATCH 060/234] update --- "J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 13313fa..1ec3f45 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -11,6 +11,7 @@ * 9 Best Practices to Handle Exceptions in Java: * API Design with Java 8: +* Java Tips and Best practices to avoid NullPointerException in Java Applications: * 如何重构“箭头型”代码: * 软件项目“免坑”指南: @@ -910,7 +911,7 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * 官网: -## * yFiles +## yFiles The yFiles diagramming software components are extensive class libraries that enable you to add high-quality diagramming functionality to your own software applications From 0ae8a11e7b1f9d47af0d1479266a126c7e3610e4 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Mon, 1 Jun 2020 22:34:19 +0800 Subject: [PATCH 061/234] update --- ...45\255\246\344\271\240\344\271\213\350\267\257.md" | 11 ++++++++++- ...45\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 93631e8..1490d39 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -151,7 +151,6 @@ * 高斯模糊: * 总结一下Android中主题(Theme)的正确玩法: * Android中`@`和`?`区别以及`?attr/**`与`@style/**`等的区别: -* Android:去掉系统自带的Activity跳转动画,跳转无动画,返回无动画: * Android 权限的一些细节: * Android 将自己的应用改为系统应用: * 用ColorFilter为安卓按钮增加效果: @@ -232,6 +231,16 @@ * H60-L01 EMUI3.0 ROOT 傻瓜教程: * Android 获取手机中微信聊天记录: +## 动效 + +* Android 属性动画 常用方法 与 插值器 Interpolator: +* Android动画之Interpolator(插值器): +* Android 路径绘制艺术——贝塞尔曲线: +* 三阶贝塞尔曲线Interpolator的应用: +* 在线演示: +* Android颜色透明度百分比和十六进制对应关系: +* Android:去掉系统自带的Activity跳转动画,跳转无动画,返回无动画: + ## Jack * Android 新一代编译 toolchain Jack & Jill 简介: diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index d4f1723..09832af 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -79,6 +79,7 @@ * posh-git: * SourceTree: * tortoisegit: +* TortoiseGit Disconnected:No supported authentication methods available: * gitlab: * EGit: @@ -121,6 +122,7 @@ * Linux下 保存 git账号密码: * 执行Git命令时出现各种 SSL certificate problem 的解决办法: * warning: remote HEAD refers to nonexistent ref, unable to checkout: +* git clone 时显示Filename too long的解决办法: * 分支管理策略: * Bug分支: From 9eb07530beda938fded3c4af9c9432beca63aa36 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Tue, 2 Jun 2020 23:11:33 +0800 Subject: [PATCH 062/234] update --- "Android\345\255\246\344\271\240\344\271\213\350\267\257.md" | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 1490d39..0710b99 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -233,11 +233,12 @@ ## 动效 +* Lottie - 让复杂动画如此简单: * Android 属性动画 常用方法 与 插值器 Interpolator: * Android动画之Interpolator(插值器): * Android 路径绘制艺术——贝塞尔曲线: * 三阶贝塞尔曲线Interpolator的应用: -* 在线演示: +* 在线演示: * Android颜色透明度百分比和十六进制对应关系: * Android:去掉系统自带的Activity跳转动画,跳转无动画,返回无动画: From 42437b8628c822c68bbab03a457152adbb21cb72 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Thu, 4 Jun 2020 23:35:20 +0800 Subject: [PATCH 063/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 0710b99..895154d 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -82,7 +82,7 @@ * genymotion-idea-plugin: * 夜神模拟器: -## Android Studio插件 +## Android Studio及其插件 * 插件搜素: * Android Localizationer: @@ -100,6 +100,19 @@ * Gradle Dependencies Helper gradle帮助插件: * Android Toolbox Plugin 生成ViewHolder,意义不大: +* Android Studio移动鼠标显示悬浮提示的设置方法: +* ANDROID STUDIO详细教程汇总: +* Android Studio 3.0+ 新Dex编译器D8 Desugar R8: +* Android Studio系列教程一--下载与安装: +* Android Studio系列教程二--基本设置与运行: +* Android Studio系列教程三--快捷键: +* Android Studio系列教程四--Gradle基础: +* ANDROID STUDIO系列教程五--GRADLE命令详解与导入第三方包: +* ANDROID STUDIO系列教程六--GRADLE多渠道打包: +* Android Studio优化技巧: +* Android Studio相关目录解析: +* Android Studio Build Output 栏内汉字出现乱码的解决方案: + ## Article * 《Android开发艺术探索》 @@ -110,11 +123,9 @@ * AsyncTaskLoader vs AsyncTask: * Android 编程与兼容性问题: Android Programming The Big Nerd Ranch Guide 3rd[Android编程权威指南(第3版) 6.2 7.8 7.9 -* Android Studio移动鼠标显示悬浮提示的设置方法: * Android真机安装sqlite3的方法: * 使用 Intel HAXM 为 Android 模拟器加速,媲美真机: * Android核心分析: -* ANDROID STUDIO详细教程汇总: * Android AM命令行启动程序的方法: * Android系统开篇: * 对于android.intent.action.MAIN和android.intent.category.LAUNCHER的理解: @@ -189,7 +200,6 @@ * 目前最全面的Android安全工具清单: * menu中的item标签的showAsAction属性可以取哪些值: * Android soong build系统介绍: -* Android Studio 3.0+ 新Dex编译器D8 Desugar R8: * Contacts Provider: @@ -215,16 +225,6 @@ * 为什么要用Fragment.setArguments(Bundle bundle)来传递参数: * IllegalStateException: Can not perform this action after onSaveInstanceState with ViewPager: -* Android Studio系列教程一--下载与安装: -* Android Studio系列教程二--基本设置与运行: -* Android Studio系列教程三--快捷键: -* Android Studio系列教程四--Gradle基础: -* ANDROID STUDIO系列教程五--GRADLE命令详解与导入第三方包: -* ANDROID STUDIO系列教程六--GRADLE多渠道打包: - -* Android Studio优化技巧: -* Android Studio相关目录解析: - * Android8.0及以上,获取模拟器root权限: * MIUI ROM适配之旅第一天——认识Android手机: From 00a2de6607efea64a6322723f2e91e9c9ef8e000 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 7 Jun 2020 18:16:55 +0800 Subject: [PATCH 064/234] update --- "Android\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ 1 file changed, 2 insertions(+) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 895154d..fd33ff3 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -74,6 +74,7 @@ * dex-method-counts: * dexcount-gradle-plugin: * leakcanary: +* Display and control your Android device: ## Android模拟器 @@ -233,6 +234,7 @@ ## 动效 +* 各种专场动画: * Lottie - 让复杂动画如此简单: * Android 属性动画 常用方法 与 插值器 Interpolator: * Android动画之Interpolator(插值器): From b306a874a867c251b67e4669e47491a5c1d551ba Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 7 Jun 2020 23:11:53 +0800 Subject: [PATCH 065/234] update --- ...id\345\255\246\344\271\240\344\271\213\350\267\257.md" | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index fd33ff3..65a4fd5 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -235,6 +235,7 @@ ## 动效 * 各种专场动画: +* Android:去掉系统自带的Activity跳转动画,跳转无动画,返回无动画: * Lottie - 让复杂动画如此简单: * Android 属性动画 常用方法 与 插值器 Interpolator: * Android动画之Interpolator(插值器): @@ -242,7 +243,12 @@ * 三阶贝塞尔曲线Interpolator的应用: * 在线演示: * Android颜色透明度百分比和十六进制对应关系: -* Android:去掉系统自带的Activity跳转动画,跳转无动画,返回无动画: +* Android 关于Path的FillType: +* Android中使用SVG实现炫酷动画效果: +* SVG 的 PathData 在 Android 中的使用: +* Android矢量图(一)--VectorDrawable基础: +* 在 Android 开发中使用 SVG: +* 手把手教学, android 使用 SVG: ## Jack From 6628c7dd6a530cbfd1d9c0e68cc90c58b57fbbfe Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Wed, 1 Jul 2020 20:51:43 +0800 Subject: [PATCH 066/234] update --- ...255\246\344\271\240\344\271\213\350\267\257.md" | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 65a4fd5..dbd2605 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -250,6 +250,20 @@ * 在 Android 开发中使用 SVG: * 手把手教学, android 使用 SVG: +## 图形处理库 + +* Vulkan: +* Vulkan Graphics API: +* Vulkan 设置: + +* ANGLE: + +* OpenGL: + +* Rajawali: +* Basic Rajawali3D Tutorial for Android: + + ## Jack * Android 新一代编译 toolchain Jack & Jill 简介: From 9afad34cd400c66bb7d54150bd0f22b2db8be8ea Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Mon, 6 Jul 2020 23:07:32 +0800 Subject: [PATCH 067/234] update --- "Android\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + 1 file changed, 1 insertion(+) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index dbd2605..e96b949 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -259,6 +259,7 @@ * ANGLE: * OpenGL: +* LearnOpenGL: * Rajawali: * Basic Rajawali3D Tutorial for Android: From f3dcb960a8e3a162eafa7950706415c857dec224 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Wed, 8 Jul 2020 23:37:20 +0800 Subject: [PATCH 068/234] update --- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index e96b949..7579bfc 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -252,6 +252,8 @@ ## 图形处理库 +* 计算机图形程序接口 | Graphics API: + * Vulkan: * Vulkan Graphics API: * Vulkan 设置: @@ -264,6 +266,16 @@ * Rajawali: * Basic Rajawali3D Tutorial for Android: +* 方海龙的书馆(图形学): +* OpenGL学习脚印: +* OpenGL ES: +* OpenGL入门: + +* 为什么opengl中,gl_Position是vec4类型的?不是应该是vec3吗,多出来的那个是什么呀: +* Is OpenGL coordinate system left-handed or right-handed? +* How vertex and fragment shaders communicate in OpenGL? +* How does the fragment shader know what variable to use for the color of a pixel? +* Non power of two textures in iOS ## Jack From 5995be7289e0d43aa077ef8c08d9c5ca8bafc733 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 12 Jul 2020 18:29:01 +0800 Subject: [PATCH 069/234] update --- "Android\345\255\246\344\271\240\344\271\213\350\267\257.md" | 4 ++++ 1 file changed, 4 insertions(+) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 7579bfc..5b78bd8 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -261,7 +261,10 @@ * ANGLE: * OpenGL: +* OpenGL Wiki: + * LearnOpenGL: +* OpenGL: * Rajawali: * Basic Rajawali3D Tutorial for Android: @@ -276,6 +279,7 @@ * How vertex and fragment shaders communicate in OpenGL? * How does the fragment shader know what variable to use for the color of a pixel? * Non power of two textures in iOS +* difference of freeglut vs glew? ## Jack From 233fa17f0abaf3109bcd032e5b95514cef5b9172 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sat, 18 Jul 2020 09:25:29 +0800 Subject: [PATCH 070/234] update --- "Android\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + 1 file changed, 1 insertion(+) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 5b78bd8..cab18e2 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -262,6 +262,7 @@ * OpenGL: * OpenGL Wiki: +* docs.GL: * LearnOpenGL: * OpenGL: From 14f9d35913bc5d37be4ea5d885588c9abba90307 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 26 Jul 2020 17:38:54 +0800 Subject: [PATCH 071/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 35 ++++++++++++------- ...46\344\271\240\344\271\213\350\267\257.md" | 9 ++++- 2 files changed, 30 insertions(+), 14 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index cab18e2..24373f2 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,6 +1,7 @@ # Andriod学习之路 * +* NDK: * Intent: * Android开发者预览版: @@ -76,6 +77,16 @@ * leakcanary: * Display and control your Android device: +## BugReport + +* Android adb bugreport工具分析和使用: +* battery-historian: +* ChkBugReport: + +## systrace + +* Android Systrace 基础知识: + ## Android模拟器 * genymotion: @@ -234,9 +245,8 @@ ## 动效 -* 各种专场动画: +* 各种转场动画: * Android:去掉系统自带的Activity跳转动画,跳转无动画,返回无动画: -* Lottie - 让复杂动画如此简单: * Android 属性动画 常用方法 与 插值器 Interpolator: * Android动画之Interpolator(插值器): * Android 路径绘制艺术——贝塞尔曲线: @@ -250,6 +260,16 @@ * 在 Android 开发中使用 SVG: * 手把手教学, android 使用 SVG: +## SVGA + +* SVGA: +* SVGAPlayer-Android: + +## Lottie + +* Lottie: +* Lottie - 让复杂动画如此简单: + ## 图形处理库 * 计算机图形程序接口 | Graphics API: @@ -342,10 +362,6 @@ * 用Gradle 构建你的android程序: * 用Gradle 构建你的android程序-依赖管理篇: -## NDK - -* - ## Bug跟踪 * 网易云捕: @@ -404,10 +420,3 @@ ## 百度媒体云 * - -## Gerrit - -* -* -* -* 如何搭建开源code review gerrit服务器: diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 09832af..27f6878 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -144,7 +144,6 @@ * 如何合并两个Git仓库: * Moving Repository from Bitbucket to GitHub: * git 拉取远程指定分支 pull本地不存在的分支: -* Resolving a merge conflict on gerrit: * CHERRY-PICKING SPECIFIC COMMITS FROM ANOTHER BRANCH: * Git操作 :从一个分支cherry-pick多个commit到其他分支: * git checkout --ours/--theirs: @@ -168,6 +167,14 @@ git push origin master:b1 解决办法就是使用”git init –bare”方法创建一个所谓的裸仓库,之所以叫裸仓库是因为这个仓库只保存git历史提交的版本信息,而不允许用户在上面进行各种git操作,如果你硬要操作的话,只会得到下面的错误(”This operation must be run in a work tree”)这个就是最好把远端仓库初始化成bare仓库的原因。 +## Gerrit + +* +* +* +* 如何搭建开源code review gerrit服务器: +* Resolving a merge conflict on gerrit: + ## Mercurial * Mercurial: From ecdc1b0d17670d1dd9bb5f96c624855816434a11 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Wed, 5 Aug 2020 23:41:34 +0800 Subject: [PATCH 072/234] update --- ...d\345\255\246\344\271\240\344\271\213\350\267\257.md" | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 24373f2..c490108 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -96,7 +96,8 @@ ## Android Studio及其插件 -* 插件搜素: +* JetBrains Plugins Repository: + * Android Localizationer: * ADB Idea 方便卸载apk,删除缓存: * Android ButterKnife Zelezny ButterKnife对应的插件: @@ -125,6 +126,11 @@ * Android Studio相关目录解析: * Android Studio Build Output 栏内汉字出现乱码的解决方案: +### Firebase + +* Firebase: +* Plugin Fierbase Services was not installed:Cannot download...: + ## Article * 《Android开发艺术探索》 @@ -350,6 +356,7 @@ * Getting Started With Gradle: * 彻底搞懂Gradle、Gradle Wrapper与Android Plugin for Gradle的区别和联系: +* 通过设置JDK解决存在多个Gradle后台进程的问题: * Gradle学习系列之一——Gradle快速入门: * gradle使用文档: From 1c2da1fe57b3b3b0542055383d318ea8461b416f Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Tue, 22 Sep 2020 23:49:50 +0800 Subject: [PATCH 073/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 112 +++++++++--------- ...46\344\271\240\344\271\213\350\267\257.md" | 25 ++-- ...46\344\271\240\344\271\213\350\267\257.md" | 6 +- 3 files changed, 72 insertions(+), 71 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index c490108..3dd62a6 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -49,6 +49,60 @@ * Xamarin: +## Gradle And Android Plugin + +* +* Gradle User Guide: +* Chapter 6. The Gradle Wrapper: +* Getting Started With Gradle: + +* 彻底搞懂Gradle、Gradle Wrapper与Android Plugin for Gradle的区别和联系: +* 通过设置JDK解决存在多个Gradle后台进程的问题: + +* Gradle学习系列之一——Gradle快速入门: +* gradle使用文档: +* Gradle修改本地仓库的位置: +* gradle cache目录(.gradle)剖析: + +* (老)Gradle Plugin User Guide: +* (老)Gradle Plugin User Guide 翻译: +* 加速Android Studio/Gradle构建: +* 用Gradle 构建你的android程序: +* 用Gradle 构建你的android程序-依赖管理篇: + +## Android Studio及其插件 + +* JetBrains Plugins Repository: +* 在 AndroidStudio 工程点击 Run 按钮, 实际上做了什么操作呢? + +* Android Localizationer: +* ADB Idea 方便卸载apk,删除缓存: +* Android ButterKnife Zelezny ButterKnife对应的插件: +* Android Code Generator 生成ViewHolder,生成initView方法: +* Codota 搜索代码块: +* GsonFormat jsonString自动转bean插件: +* SelectorChapek for Android 帮助生成selector: +* Android Drawable Importer 同一张图片生成多个自动生成多分辨率图片: +* Android Layout ID Converter xml到控件的转换: +* Android Postfix Completion toast和log加强: +* Android Studio Prettify 帮助findViewById: +* Android Parcelable code generator 生成Parcelable代码: +* Gradle Dependencies Helper gradle帮助插件: +* Android Toolbox Plugin 生成ViewHolder,意义不大: + +* Android Studio移动鼠标显示悬浮提示的设置方法: +* ANDROID STUDIO详细教程汇总: +* Android Studio 3.0+ 新Dex编译器D8 Desugar R8: +* Android Studio系列教程一--下载与安装: +* Android Studio系列教程二--基本设置与运行: +* Android Studio系列教程三--快捷键: +* Android Studio系列教程四--Gradle基础: +* ANDROID STUDIO系列教程五--GRADLE命令详解与导入第三方包: +* ANDROID STUDIO系列教程六--GRADLE多渠道打包: +* Android Studio优化技巧: +* Android Studio相关目录解析: +* Android Studio Build Output 栏内汉字出现乱码的解决方案: + ## Libraries * butterknife: @@ -87,6 +141,11 @@ * Android Systrace 基础知识: +## Perfetto + +* Perfetto: +* PerfettoUI: + ## Android模拟器 * genymotion: @@ -94,38 +153,6 @@ * genymotion-idea-plugin: * 夜神模拟器: -## Android Studio及其插件 - -* JetBrains Plugins Repository: - -* Android Localizationer: -* ADB Idea 方便卸载apk,删除缓存: -* Android ButterKnife Zelezny ButterKnife对应的插件: -* Android Code Generator 生成ViewHolder,生成initView方法: -* Codota 搜索代码块: -* GsonFormat jsonString自动转bean插件: -* SelectorChapek for Android 帮助生成selector: -* Android Drawable Importer 同一张图片生成多个自动生成多分辨率图片: -* Android Layout ID Converter xml到控件的转换: -* Android Postfix Completion toast和log加强: -* Android Studio Prettify 帮助findViewById: -* Android Parcelable code generator 生成Parcelable代码: -* Gradle Dependencies Helper gradle帮助插件: -* Android Toolbox Plugin 生成ViewHolder,意义不大: - -* Android Studio移动鼠标显示悬浮提示的设置方法: -* ANDROID STUDIO详细教程汇总: -* Android Studio 3.0+ 新Dex编译器D8 Desugar R8: -* Android Studio系列教程一--下载与安装: -* Android Studio系列教程二--基本设置与运行: -* Android Studio系列教程三--快捷键: -* Android Studio系列教程四--Gradle基础: -* ANDROID STUDIO系列教程五--GRADLE命令详解与导入第三方包: -* ANDROID STUDIO系列教程六--GRADLE多渠道打包: -* Android Studio优化技巧: -* Android Studio相关目录解析: -* Android Studio Build Output 栏内汉字出现乱码的解决方案: - ### Firebase * Firebase: @@ -348,27 +375,6 @@ * Android程序开发初级教程(二): * Android程序开发初级教程(三): -## Gradle And Android Plugin - -* -* Gradle User Guide: -* Chapter 6. The Gradle Wrapper: -* Getting Started With Gradle: - -* 彻底搞懂Gradle、Gradle Wrapper与Android Plugin for Gradle的区别和联系: -* 通过设置JDK解决存在多个Gradle后台进程的问题: - -* Gradle学习系列之一——Gradle快速入门: -* gradle使用文档: -* Gradle修改本地仓库的位置: -* gradle cache目录(.gradle)剖析: - -* (老)Gradle Plugin User Guide: -* (老)Gradle Plugin User Guide 翻译: -* 加速Android Studio/Gradle构建: -* 用Gradle 构建你的android程序: -* 用Gradle 构建你的android程序-依赖管理篇: - ## Bug跟踪 * 网易云捕: diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 1ec3f45..ecab91d 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -380,14 +380,6 @@ * -## JUnit - -* -* -* JUnit4 详解: -* Easy way of running the same junit test over and over? -* Testing for expected exceptions in JUnit: - ## DbUnit * 官网: @@ -406,6 +398,13 @@ * 浅析Peach Fuzz: * Syzkaller:Linux内核模糊测试工具分享: +## JUnit + +* +* JUnit4 详解: +* Easy way of running the same junit test over and over? +* Testing for expected exceptions in JUnit: + ## TestNG TestNG is a testing framework inspired from JUnit and NUnit but introducing some new functionalities that make it more powerful and easier to use. @@ -584,17 +583,11 @@ Eclipse中`Update Project`,选择`Force Update of Snapshots/Releases` * (搜索) * (搜索) -* (搜索) -* (搜索) * (搜索) * (搜索) -* -* -* +* +* * -* -* -* ## maven快速下载某个jar包依赖的所有jar diff --git "a/Pascal\344\270\216Delphi\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Pascal\344\270\216Delphi\345\255\246\344\271\240\344\271\213\350\267\257.md" index b4b9760..b96cd17 100644 --- "a/Pascal\344\270\216Delphi\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Pascal\344\270\216Delphi\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,6 +1,8 @@ # Pascal与Delphi学习之路 -* Pascal (programming language): (programming_language) -* Delphi (programming language): (programming_language) * free pascal: +* free pascal docs: * Lazarus: +* Delphi: +* Pascal (programming language): (programming_language) +* Delphi (programming language): (programming_language) \ No newline at end of file From ba345f146b123209347f8f9d06a58be80c57c8ce Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Wed, 23 Sep 2020 21:48:33 +0800 Subject: [PATCH 074/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 21 ++++-- ...46\344\271\240\344\271\213\350\267\257.md" | 65 +++++++++---------- 2 files changed, 45 insertions(+), 41 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 3dd62a6..07e7d79 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -160,7 +160,15 @@ ## Article -* 《Android开发艺术探索》 +* repo 下载Android源码(国内镜像): +* repo使用: + +* Android soong build系统介绍: + +* Android Studio导入整个Android系统源码: +* AndroidStudio工程导入部分Android源码: + +* HenCoder——给高级 Android 工程师的进阶手册: * Handler内存泄漏详解及其解决方案: * Android中Handler的使用: * 深入源码解析Android中的Handler,Message,MessageQueue,Looper: @@ -199,7 +207,6 @@ * Android vector标签 PathData 画图超详解: * Implementation vs API dependency: * Android软键盘遮挡的四种解决方案: -* repo 下载Android源码(国内镜像): * android怎样调用@hide和internal API: * android下的SuppressLint与TargetApi: * Android完美获取状态栏高度、标题栏高度、编辑区域高度的获取: @@ -244,7 +251,6 @@ * 配置方法数超过 64K 的应用: * 目前最全面的Android安全工具清单: * menu中的item标签的showAsAction属性可以取哪些值: -* Android soong build系统介绍: * Contacts Provider: @@ -270,11 +276,12 @@ * 为什么要用Fragment.setArguments(Bundle bundle)来传递参数: * IllegalStateException: Can not perform this action after onSaveInstanceState with ViewPager: +* 从圆角到圆角: +* J 的艺术,R 的艺术: + * Android8.0及以上,获取模拟器root权限: * MIUI ROM适配之旅第一天——认识Android手机: -* H60-L01 EMUI3.0 ROOT 傻瓜教程: -* Android 获取手机中微信聊天记录: ## 动效 @@ -303,6 +310,10 @@ * Lottie: * Lottie - 让复杂动画如此简单: +## Flutter + +* Flutter: + ## 图形处理库 * 计算机图形程序接口 | Graphics API: diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 27f6878..1ea18ef 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -70,8 +70,7 @@ * GIT: * Reference: -* Documentation: -* Pro Git book: +* Pro Git: ### Git客户端 @@ -83,47 +82,15 @@ * gitlab: * EGit: -### Github插件 - -* Travis CI: -* appveyor: -* codeclimate: -* coverity: -* COVERALLS: -* GITTER: -* Waffle: -* choosealicense: -* codedocs: -* shields: -* JitPack: -* VersionEye(已废弃): -* Semantic Versioning: - ### Git优秀文章 -* Git Community Book 中文版: -* git/github初级运用自如: -* github使用指南: 使用指南 * windows中使用Git工具连接GitHub(配置篇): * 打造完美 Windows git 命令行环境: * 详解在visual studio中使用git版本系统(图文): - -* Commit message 和 Change log 编写指南: -* Writing a Friendly README: -* 开源协议汇总: -* 如何选择开源许可证?: -* AGPL 开源授权协议: -* 上传图片到github wiki仓库: -* Publishing a Website on Bitbucket Cloud: -* GitHub Pages + Hexo搭建博客: -* Hexo+Next搭建Github个人静态博客: - -* 将git commit的默认编辑器从nano转为vim: -* Linux下 保存 git账号密码: +* Caching your GitHub password in Git: * 执行Git命令时出现各种 SSL certificate problem 的解决办法: * warning: remote HEAD refers to nonexistent ref, unable to checkout: * git clone 时显示Filename too long的解决办法: - * 分支管理策略: * Bug分支: * git patch: Version Control with Git 2nd Edition[Git 版本控制管理 第2版] CHAPTER 14 Patches @@ -132,7 +99,6 @@ * git乱码解决方案汇总: * git pull 和本地文件冲突问题解决: * Remove sensitive data: -* Caching your GitHub password in Git: * github创建tag: * Git教程-分支和tag管理: * What are the git concepts of HEAD, master, origin? @@ -150,6 +116,7 @@ * github上fork了别人的项目后,再同步更新别人的提交: * 撤销 git commit --amend: * git修改历史提交信息: +* git 清除所有untracked file: ### git init 与 git init --bare @@ -167,6 +134,32 @@ git push origin master:b1 解决办法就是使用”git init –bare”方法创建一个所谓的裸仓库,之所以叫裸仓库是因为这个仓库只保存git历史提交的版本信息,而不允许用户在上面进行各种git操作,如果你硬要操作的话,只会得到下面的错误(”This operation must be run in a work tree”)这个就是最好把远端仓库初始化成bare仓库的原因。 +## Github + +* Travis CI: +* appveyor: +* codeclimate: +* coverity: +* COVERALLS: +* GITTER: +* Waffle: +* choosealicense: +* codedocs: +* shields: +* JitPack: +* VersionEye(已废弃): +* Semantic Versioning: + +* Commit message 和 Change log 编写指南: +* Writing a Friendly README: +* 开源协议汇总: +* 如何选择开源许可证?: +* AGPL 开源授权协议: +* 上传图片到github wiki仓库: +* Publishing a Website on Bitbucket Cloud: +* GitHub Pages + Hexo搭建博客: +* Hexo+Next搭建Github个人静态博客: + ## Gerrit * From 7aee60f91a26cb6d4ca115f03c8cc5328f82f2f4 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Thu, 24 Sep 2020 23:12:47 +0800 Subject: [PATCH 075/234] update --- ...55\246\344\271\240\344\271\213\350\267\257.md" | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 07e7d79..2cc3488 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -139,7 +139,18 @@ ## systrace +* System Trace: * Android Systrace 基础知识: +* systrace.py环境配置: + +## CPU Profiler + +* CPU Profiler: + +## TraceView + +* TraceView: +* Android性能优化—TraceView的使用: ## Perfetto @@ -168,6 +179,10 @@ * Android Studio导入整个Android系统源码: * AndroidStudio工程导入部分Android源码: +* 图解 Android 事件分发机制: +* requestDisallowInterceptTouchEvent() 阻止父层的View截获touch事件(事件处理机制): +* View·InputEvent事件投递源码分析: + * HenCoder——给高级 Android 工程师的进阶手册: * Handler内存泄漏详解及其解决方案: * Android中Handler的使用: From 51e3d776c71fefe4376bb2758759fa466b4ee147 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sat, 26 Sep 2020 23:10:19 +0800 Subject: [PATCH 076/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 206 ++++++++---------- 1 file changed, 95 insertions(+), 111 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 2cc3488..1537f16 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -3,6 +3,7 @@ * * NDK: * Intent: +* Settings.Global: * Android开发者预览版: @@ -17,13 +18,6 @@ * 支持库: * uses-library: -* Configure Android Studio: -* 设置应用 ID: -* (新)配置构建: -* 创建和管理虚拟设备: -* 对您的应用进行版本控制: -* dumpsys: - * AOSP: * 代号、标记和细分版本号: * Repo command reference: @@ -32,32 +26,27 @@ * grepcode: * Git repositories on android: -* -* +* Android Studio: +* AndroidDevTools: * Android Support Overview: * I18n Translation Search: -* 安卓巴士: -* eoeandroid: -* -* andbook: -* +* androidcommunity: * -* -* * Xamarin: -## Gradle And Android Plugin +## Gradle/Gradle Wrapper/Android Plugin for Gradle -* +* Gradle: * Gradle User Guide: * Chapter 6. The Gradle Wrapper: * Getting Started With Gradle: * 彻底搞懂Gradle、Gradle Wrapper与Android Plugin for Gradle的区别和联系: * 通过设置JDK解决存在多个Gradle后台进程的问题: +* Gradle Could not find method leftShift() for arguments: * Gradle学习系列之一——Gradle快速入门: * gradle使用文档: @@ -65,7 +54,6 @@ * gradle cache目录(.gradle)剖析: * (老)Gradle Plugin User Guide: -* (老)Gradle Plugin User Guide 翻译: * 加速Android Studio/Gradle构建: * 用Gradle 构建你的android程序: * 用Gradle 构建你的android程序-依赖管理篇: @@ -73,22 +61,23 @@ ## Android Studio及其插件 * JetBrains Plugins Repository: +* Android Studio常用插件汇总: * 在 AndroidStudio 工程点击 Run 按钮, 实际上做了什么操作呢? -* Android Localizationer: -* ADB Idea 方便卸载apk,删除缓存: -* Android ButterKnife Zelezny ButterKnife对应的插件: -* Android Code Generator 生成ViewHolder,生成initView方法: -* Codota 搜索代码块: -* GsonFormat jsonString自动转bean插件: -* SelectorChapek for Android 帮助生成selector: -* Android Drawable Importer 同一张图片生成多个自动生成多分辨率图片: -* Android Layout ID Converter xml到控件的转换: -* Android Postfix Completion toast和log加强: -* Android Studio Prettify 帮助findViewById: -* Android Parcelable code generator 生成Parcelable代码: -* Gradle Dependencies Helper gradle帮助插件: -* Android Toolbox Plugin 生成ViewHolder,意义不大: +* 设置应用 ID: +* (新)配置构建: +* 创建和管理虚拟设备: +* 对您的应用进行版本控制: +* dumpsys: +* Debug Your layout with Layout Inspector and Layout Validation: +* Configure Android Studio: +* CPU Profiler: +* TraceView: + +* Android性能优化—TraceView的使用: + +* Android Studio导入整个Android系统源码: +* AndroidStudio工程导入部分Android源码: * Android Studio移动鼠标显示悬浮提示的设置方法: * ANDROID STUDIO详细教程汇总: @@ -143,15 +132,6 @@ * Android Systrace 基础知识: * systrace.py环境配置: -## CPU Profiler - -* CPU Profiler: - -## TraceView - -* TraceView: -* Android性能优化—TraceView的使用: - ## Perfetto * Perfetto: @@ -176,126 +156,130 @@ * Android soong build系统介绍: -* Android Studio导入整个Android系统源码: -* AndroidStudio工程导入部分Android源码: +* Handler内存泄漏详解及其解决方案: +* Android中Handler的使用: +* 深入源码解析Android中的Handler,Message,MessageQueue,Looper: +* Android异步更新UI的几种方法: +* AsyncTaskLoader vs AsyncTask: + +* Android中的Service:默默的奉献者 (1): +* Android中的Service:Binder,Messenger,AIDL(2): +* Android:学习AIDL,这一篇文章就够了(上): +* Android:学习AIDL,这一篇文章就够了(下): +* Service的onStartCommand方法的返回值和参数详解: + +* Fragments:Pro Android 5[精通Android 3] Chapter 8 +* Android Fragment的用法(一): +* Fragment相关: Pro Android 5 +* Fragment相关源码解析一——FragmentManagerImpl和BackStackRecord: +* Fragment相关源码解析二——生命周期: +* Fragment相关源码解析三——状态保存与恢复: +* 为什么要用Fragment.setArguments(Bundle bundle)来传递参数: +* IllegalStateException: Can not perform this action after onSaveInstanceState with ViewPager: * 图解 Android 事件分发机制: * requestDisallowInterceptTouchEvent() 阻止父层的View截获touch事件(事件处理机制): * View·InputEvent事件投递源码分析: +* Graphics: +* Hardware acceleration: +* Android应用程序UI硬件加速渲染技术简要介绍和学习计划: +* Android 显示系统:SurfaceFlinger详解: +* 关于 UI 渲染,你需要了解什么? +* Android P 图形显示系统(一)硬件合成HWC2: +* Android图形系统(十一)-Choreographer: * HenCoder——给高级 Android 工程师的进阶手册: -* Handler内存泄漏详解及其解决方案: -* Android中Handler的使用: -* 深入源码解析Android中的Handler,Message,MessageQueue,Looper: -* Android异步更新UI的几种方法: -* AsyncTaskLoader vs AsyncTask: + +* Android ActionBar完全解析,使用官方推荐的最佳导航栏(上): +* Android完美获取状态栏高度、标题栏高度、编辑区域高度的获取: +* menu中的item标签的showAsAction属性可以取哪些值: +* 什么是android.R.id.content? +* Android应用坐标系统全面详解: +* Android中visibility属性VISIBLE、INVISIBLE、GONE的区别: +* 如何在Root的手机上开启ViewServer,使得HierachyViewer能够连接: +* Formatting and Plurals: Android UI Fundamentals[Android UI基础教程](Formatting and Plurals) +* Android vector标签 PathData 画图超详解: +* Android开发中dip,dpi,density,px等详解: +* Android原生系统API自带dp、px、sp单位转换: +* 高斯模糊: +* 总结一下Android中主题(Theme)的正确玩法: +* Android中`@`和`?`区别以及`?attr/**`与`@style/**`等的区别: +* 用ColorFilter为安卓按钮增加效果: +* MaterialDesign之SearchView解锁 仿网易云音乐搜索: +* Android下setTextSize的正确使用姿势: +* Mipmap drawables for icons: +* 一大波 Android 刘海屏来袭,全网最全适配技巧! +* Android百分比布局: +* 安卓约束控件(ConstraintLayout)扁平化布局入门: +* Android “getActionBar()返回NullPointerException”问题分析: +* setEnabled() vs setClickable(), what is the difference? +* ListView中getView的原理与解决多轮重复调用的方法: +* Android控件--ProgressBar: * Android 编程与兼容性问题: Android Programming The Big Nerd Ranch Guide 3rd[Android编程权威指南(第3版) 6.2 7.8 7.9 -* Android真机安装sqlite3的方法: -* 使用 Intel HAXM 为 Android 模拟器加速,媲美真机: * Android核心分析: -* Android AM命令行启动程序的方法: * Android系统开篇: * 对于android.intent.action.MAIN和android.intent.category.LAUNCHER的理解: * lntentfilter的匹配规则: Android开发艺术探索 1.3 -* Android加密之文件级加密: -* Android属性allowBackup安全风险浅析: +* 详解 Android 通信: * Android Bander设计与实现 - 设计篇: * Android Application的使用及其生命周期: -* Android ActionBar完全解析,使用官方推荐的最佳导航栏(上): -* 详解 Android 通信: -* 什么是android.R.id.content? * Android Partitions Explained: boot, system, recovery, data, cache & misc: * Android for work总结(上): * Android for work总结(下): * android获取内置和外置SD卡路径: * Android之Adapter用法总结: -* Android签名机制之---签名过程详解: -* android文件读写以及不同应用之间的文件读写操作: -* [Android] 为Android安装BusyBox —— 完整的bash shell: * Android 使用android-support-multidex解决Dex超出方法数的限制问题,让你的应用不再爆棚: -* Android应用坐标系统全面详解: * Android命令行/c语言/java设置获取系统属性的方法: -* Android中visibility属性VISIBLE、INVISIBLE、GONE的区别: -* 如何在Root的手机上开启ViewServer,使得HierachyViewer能够连接: -* Formatting and Plurals: Android UI Fundamentals[Android UI基础教程](Formatting and Plurals) -* Android vector标签 PathData 画图超详解: * Implementation vs API dependency: -* Android软键盘遮挡的四种解决方案: * android怎样调用@hide和internal API: * android下的SuppressLint与TargetApi: -* Android完美获取状态栏高度、标题栏高度、编辑区域高度的获取: -* Android开发中dip,dpi,density,px等详解: -* 高斯模糊: -* 总结一下Android中主题(Theme)的正确玩法: -* Android中`@`和`?`区别以及`?attr/**`与`@style/**`等的区别: -* Android 权限的一些细节: -* Android 将自己的应用改为系统应用: -* 用ColorFilter为安卓按钮增加效果: -* What is the difference between system apps and privileged apps on Android? +* Android软键盘遮挡的四种解决方案: * 全面的Android文件目录解析和获取方法(包含对6.0系统的说明): * Android 那些年,处理getActivity()为null的日子: * Android 汉字转拼音的多种实现方式: -* MaterialDesign之SearchView解锁 仿网易云音乐搜索: -* Android下setTextSize的正确使用姿势: -* Android Notification常见样式总结: -* Mipmap drawables for icons: * Android 修改阿拉伯语数字显示: -* 安卓应用在各大应用市场上架方法整理: +* Android Notification常见样式总结: * Android 5.0 在优先模式下依然能收到微信的提醒是什么原理? -* 一大波 Android 刘海屏来袭,全网最全适配技巧! -* Android百分比布局: -* 安卓约束控件(ConstraintLayout)扁平化布局入门: * Android之分屏模式解析(上): * Android之分屏模式解析(下): * Android中app进程ABI确定过程: * Context, What Context? -* Android “getActionBar()返回NullPointerException”问题分析: * INSTALL_FAILED_TEST_ONLY: -* setEnabled() vs setClickable(), what is the difference? * Android兼容性测试CTS Verifier-环境搭建、测试执行、结果分析: * Why do most fields (class members) in Android tutorial start with `m`? * Android多语言国际化适配(兼容7.0): -* ListView中getView的原理与解决多轮重复调用的方法: -* Android控件--ProgressBar: -* Android逆向之旅---解析编译之后的AndroidManifest文件格式: * .nomedia: 《解析 Google Android SDK-智能手机开发范例手册》5.3 * android程序自动化生成apk的过程: -* Android DEX安全攻防战: -* Android Dex文件格式(一): * 配置方法数超过 64K 的应用: -* 目前最全面的Android安全工具清单: -* menu中的item标签的showAsAction属性可以取哪些值: - +* 升级ndk报错:No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android: * Contacts Provider: +* Android:MediaSession框架介绍: +* What is the difference between system apps and privileged apps on Android? +* Android加密之文件级加密: +* Android属性allowBackup安全风险浅析: +* Android签名机制之---签名过程详解: +* android文件读写以及不同应用之间的文件读写操作: +* Android 权限的一些细节: +* Android 将自己的应用改为系统应用: +* Android逆向之旅---解析编译之后的AndroidManifest文件格式: +* Android DEX安全攻防战: +* Android Dex文件格式(一): +* 目前最全面的Android安全工具清单: * android存储访问框架Storage Access Framework: * 存储访问框架android Storage Access Framework(SAF): * Android 7.0 行为变更 通过FileProvider在应用间共享文件吧: * FileProvider文件分享: -* Android:MediaSession框架介绍: - -* Android中的Service:默默的奉献者 (1): -* Android中的Service:Binder,Messenger,AIDL(2): -* Android:学习AIDL,这一篇文章就够了(上): -* Android:学习AIDL,这一篇文章就够了(下): -* Service的onStartCommand方法的返回值和参数详解: - -* Fragments:Pro Android 5[精通Android 3] Chapter 8 -* Android Fragment的用法(一): -* Fragment相关: Pro Android 5 -* Fragment相关源码解析一——FragmentManagerImpl和BackStackRecord: -* Fragment相关源码解析二——生命周期: -* Fragment相关源码解析三——状态保存与恢复: -* 为什么要用Fragment.setArguments(Bundle bundle)来传递参数: -* IllegalStateException: Can not perform this action after onSaveInstanceState with ViewPager: - +* 安卓应用在各大应用市场上架方法整理: * 从圆角到圆角: * J 的艺术,R 的艺术: * Android8.0及以上,获取模拟器root权限: - +* Android真机安装sqlite3的方法: +* 使用 Intel HAXM 为 Android 模拟器加速,媲美真机: +* [Android] 为Android安装BusyBox —— 完整的bash shell: * MIUI ROM适配之旅第一天——认识Android手机: ## 动效 From df487c0f4331b7c3f98bb4d52376cdf69aeab725 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Mon, 28 Sep 2020 23:06:22 +0800 Subject: [PATCH 077/234] update --- ...roid\345\255\246\344\271\240\344\271\213\350\267\257.md" | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 1537f16..d689617 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -20,7 +20,10 @@ * AOSP: * 代号、标记和细分版本号: + * Repo command reference: +* repo 下载Android源码(国内镜像): +* repo使用: * androidxref: * grepcode: @@ -151,9 +154,6 @@ ## Article -* repo 下载Android源码(国内镜像): -* repo使用: - * Android soong build系统介绍: * Handler内存泄漏详解及其解决方案: From a0403eef0387dabbc93eb8f4fb8fcbfe8bee577f Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 11 Oct 2020 19:34:45 +0800 Subject: [PATCH 078/234] update --- "Android\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 -- 1 file changed, 2 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index d689617..2a37fac 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -209,8 +209,6 @@ * Android下setTextSize的正确使用姿势: * Mipmap drawables for icons: * 一大波 Android 刘海屏来袭,全网最全适配技巧! -* Android百分比布局: -* 安卓约束控件(ConstraintLayout)扁平化布局入门: * Android “getActionBar()返回NullPointerException”问题分析: * setEnabled() vs setClickable(), what is the difference? * ListView中getView的原理与解决多轮重复调用的方法: From de6faba9c264915ab2aa16f9fc72e7e8fc4be56f Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Wed, 14 Oct 2020 21:27:45 +0800 Subject: [PATCH 079/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 34 ++++++++++++------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 2a37fac..64a7528 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -313,28 +313,23 @@ ## 图形处理库 -* 计算机图形程序接口 | Graphics API: - -* Vulkan: -* Vulkan Graphics API: -* Vulkan 设置: - -* ANGLE: +## OpenGL * OpenGL: * OpenGL Wiki: * docs.GL: * LearnOpenGL: -* OpenGL: - -* Rajawali: -* Basic Rajawali3D Tutorial for Android: +* OpenGL(很多文章的参考文献): +* Learn WebGL: -* 方海龙的书馆(图形学): +* OpenGL 3D渲染技术:坐标系及矩阵变换: +* OpenGL顶点坐标与纹理坐标: +* 投影矩阵的推导(Deriving Projection Matrices): +* Android OpenGL ES从白痴到入门(四):离屏渲染(Pbuffer): +* OpenGL入门: * OpenGL学习脚印: * OpenGL ES: -* OpenGL入门: * 为什么opengl中,gl_Position是vec4类型的?不是应该是vec3吗,多出来的那个是什么呀: * Is OpenGL coordinate system left-handed or right-handed? @@ -343,6 +338,19 @@ * Non power of two textures in iOS * difference of freeglut vs glew? +### 其他图形处理库 + +* 计算机图形程序接口 | Graphics API: + +* Vulkan: +* Vulkan Graphics API: +* Vulkan 设置: + +* ANGLE: + +* Rajawali: +* Basic Rajawali3D Tutorial for Android: + ## Jack * Android 新一代编译 toolchain Jack & Jill 简介: From 96f615fd6c21ab59c55a07681a3077187ca1bab1 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 18 Oct 2020 23:58:38 +0800 Subject: [PATCH 080/234] update --- ...246\344\271\240\344\271\213\350\267\257.md" | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 64a7528..6ca0860 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -313,7 +313,7 @@ ## 图形处理库 -## OpenGL +### OpenGL * OpenGL: * OpenGL Wiki: @@ -330,27 +330,31 @@ * OpenGL入门: * OpenGL学习脚印: * OpenGL ES: +* 20分钟让你了解OpenGL——OpenGL全流程详细解读: -* 为什么opengl中,gl_Position是vec4类型的?不是应该是vec3吗,多出来的那个是什么呀: +* OpenGL ES 2.0 specifiying position attribute vec3 or vec4: +* Why not vec3 for OpenGL ES 2.0 gl_Position? * Is OpenGL coordinate system left-handed or right-handed? * How vertex and fragment shaders communicate in OpenGL? * How does the fragment shader know what variable to use for the color of a pixel? * Non power of two textures in iOS -* difference of freeglut vs glew? ### 其他图形处理库 +* GLFW: +* freeglut: +* difference of freeglut vs glew? + +* Rajawali: +* Basic Rajawali3D Tutorial for Android: + * 计算机图形程序接口 | Graphics API: * Vulkan: * Vulkan Graphics API: -* Vulkan 设置: * ANGLE: -* Rajawali: -* Basic Rajawali3D Tutorial for Android: - ## Jack * Android 新一代编译 toolchain Jack & Jill 简介: From 1cd91100e7c54080ae23c87fa026c854d331da08 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Mon, 19 Oct 2020 22:58:49 +0800 Subject: [PATCH 081/234] update --- "Android\345\255\246\344\271\240\344\271\213\350\267\257.md" | 3 +++ 1 file changed, 3 insertions(+) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 6ca0860..19de292 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -331,6 +331,9 @@ * OpenGL学习脚印: * OpenGL ES: * 20分钟让你了解OpenGL——OpenGL全流程详细解读: +* affine transformation matrix 仿射变换矩阵 与 OpenGL: +* 3D图形:矩阵、欧拉角、四元数与方位的故事: +* 四元数与欧拉角(RPY角)的相互转换: * OpenGL ES 2.0 specifiying position attribute vec3 or vec4: * Why not vec3 for OpenGL ES 2.0 gl_Position? From 2ac6e7c95c515c64cb8d1884b4fd77cd89da3f7e Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Tue, 20 Oct 2020 23:55:44 +0800 Subject: [PATCH 082/234] update --- ...\255\246\344\271\240\344\271\213\350\267\257.md" | 13 ++++++++++--- ...\255\246\344\271\240\344\271\213\350\267\257.md" | 1 - 2 files changed, 10 insertions(+), 4 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 19de292..e0a400e 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -27,6 +27,7 @@ * androidxref: * grepcode: +* Android Code Search: * Git repositories on android: * Android Studio: @@ -190,6 +191,10 @@ * Android图形系统(十一)-Choreographer: * HenCoder——给高级 Android 工程师的进阶手册: +* 支持不同的屏幕尺寸: +* Android开发中dip,dpi,density,px等详解: +* Android原生系统API自带dp、px、sp单位转换: + * Android ActionBar完全解析,使用官方推荐的最佳导航栏(上): * Android完美获取状态栏高度、标题栏高度、编辑区域高度的获取: * menu中的item标签的showAsAction属性可以取哪些值: @@ -199,8 +204,6 @@ * 如何在Root的手机上开启ViewServer,使得HierachyViewer能够连接: * Formatting and Plurals: Android UI Fundamentals[Android UI基础教程](Formatting and Plurals) * Android vector标签 PathData 画图超详解: -* Android开发中dip,dpi,density,px等详解: -* Android原生系统API自带dp、px、sp单位转换: * 高斯模糊: * 总结一下Android中主题(Theme)的正确玩法: * Android中`@`和`?`区别以及`?attr/**`与`@style/**`等的区别: @@ -270,6 +273,8 @@ * Android 7.0 行为变更 通过FileProvider在应用间共享文件吧: * FileProvider文件分享: +* 使用广色域内容增强图形效果: + * 安卓应用在各大应用市场上架方法整理: * 从圆角到圆角: * J 的艺术,R 的艺术: @@ -323,7 +328,6 @@ * OpenGL(很多文章的参考文献): * Learn WebGL: -* OpenGL 3D渲染技术:坐标系及矩阵变换: * OpenGL顶点坐标与纹理坐标: * 投影矩阵的推导(Deriving Projection Matrices): * Android OpenGL ES从白痴到入门(四):离屏渲染(Pbuffer): @@ -358,6 +362,9 @@ * ANGLE: +* Cairo: +* Skia: + ## Jack * Android 新一代编译 toolchain Jack & Jill 简介: diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 6994f5d..242a48a 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -35,7 +35,6 @@ * libevent: * List of numerical libraries: * Standard Template Library Programmer's Guide: -* Cairo: ## Windows C++ From b643dad13f4375590fdee6761181347a7ecbb816 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Wed, 21 Oct 2020 23:05:45 +0800 Subject: [PATCH 083/234] update --- ...roid\345\255\246\344\271\240\344\271\213\350\267\257.md" | 6 ++++++ 1 file changed, 6 insertions(+) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index e0a400e..f517a19 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -194,6 +194,8 @@ * 支持不同的屏幕尺寸: * Android开发中dip,dpi,density,px等详解: * Android原生系统API自带dp、px、sp单位转换: +* 一种非常好用的Android屏幕适配: +* 最清晰的Android多屏幕适配方案: * Android ActionBar完全解析,使用官方推荐的最佳导航栏(上): * Android完美获取状态栏高度、标题栏高度、编辑区域高度的获取: @@ -290,6 +292,7 @@ * 各种转场动画: * Android:去掉系统自带的Activity跳转动画,跳转无动画,返回无动画: * Android 属性动画 常用方法 与 插值器 Interpolator: +* Property Animation框架详解(一): * Android动画之Interpolator(插值器): * Android 路径绘制艺术——贝塞尔曲线: * 三阶贝塞尔曲线Interpolator的应用: @@ -336,6 +339,9 @@ * OpenGL ES: * 20分钟让你了解OpenGL——OpenGL全流程详细解读: * affine transformation matrix 仿射变换矩阵 与 OpenGL: +* Android Matrix 详解: +* 谈一谈 Matrix 与坐标变换: +* Android中利用Camera与Matrix实现3D效果详解: * 3D图形:矩阵、欧拉角、四元数与方位的故事: * 四元数与欧拉角(RPY角)的相互转换: From fac35a8669877240ad01619e3e39a0d11ad8e993 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 25 Oct 2020 22:37:08 +0800 Subject: [PATCH 084/234] update --- "Android\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + 1 file changed, 1 insertion(+) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index f517a19..3719d4f 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -332,6 +332,7 @@ * Learn WebGL: * OpenGL顶点坐标与纹理坐标: +* OpenGL纹理上下颠倒翻转的三种解决办法: * 投影矩阵的推导(Deriving Projection Matrices): * Android OpenGL ES从白痴到入门(四):离屏渲染(Pbuffer): * OpenGL入门: From 05555b8c0caa12337ea2755ad4c993b2998ca1ca Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Mon, 2 Nov 2020 23:24:52 +0800 Subject: [PATCH 085/234] update --- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 3719d4f..3b86cd4 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -196,6 +196,7 @@ * Android原生系统API自带dp、px、sp单位转换: * 一种非常好用的Android屏幕适配: * 最清晰的Android多屏幕适配方案: +* Android 刘海屏适配全攻略: * Android ActionBar完全解析,使用官方推荐的最佳导航栏(上): * Android完美获取状态栏高度、标题栏高度、编辑区域高度的获取: @@ -213,7 +214,6 @@ * MaterialDesign之SearchView解锁 仿网易云音乐搜索: * Android下setTextSize的正确使用姿势: * Mipmap drawables for icons: -* 一大波 Android 刘海屏来袭,全网最全适配技巧! * Android “getActionBar()返回NullPointerException”问题分析: * setEnabled() vs setClickable(), what is the difference? * ListView中getView的原理与解决多轮重复调用的方法: @@ -319,7 +319,7 @@ * Flutter: -## 图形处理库 +## 图形处理库(参考"OpenGL学习之路"脑图) ### OpenGL @@ -330,6 +330,7 @@ * LearnOpenGL: * OpenGL(很多文章的参考文献): * Learn WebGL: +* NEHE Tutorials: * OpenGL顶点坐标与纹理坐标: * OpenGL纹理上下颠倒翻转的三种解决办法: @@ -355,20 +356,15 @@ ### 其他图形处理库 -* GLFW: -* freeglut: -* difference of freeglut vs glew? - * Rajawali: * Basic Rajawali3D Tutorial for Android: +* List of rendering APIs: * 计算机图形程序接口 | Graphics API: * Vulkan: * Vulkan Graphics API: -* ANGLE: - * Cairo: * Skia: From b1b0f1ff75344d1d6867bfc0db9dfd190a62d38d Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Thu, 12 Nov 2020 00:03:41 +0800 Subject: [PATCH 086/234] update --- "Android\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- "DB\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 3b86cd4..864a230 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -192,8 +192,8 @@ * HenCoder——给高级 Android 工程师的进阶手册: * 支持不同的屏幕尺寸: +* 多屏幕多分辨率的支持: * Android开发中dip,dpi,density,px等详解: -* Android原生系统API自带dp、px、sp单位转换: * 一种非常好用的Android屏幕适配: * 最清晰的Android多屏幕适配方案: * Android 刘海屏适配全攻略: diff --git "a/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" index b698100..9b5926e 100644 --- "a/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -163,6 +163,7 @@ * Oracle导入导出常用命令: * oracle 11g如何完全卸载: +* Oracle 11G数据库VMware虚拟机下载: * win7_oracle11g_64位连接32位PLSQL_Developer: * Oracle 11g 如何创建数据库: * 数据库使用详解:[3]SQL Developer如何配置: From ed4c7c7cb1dc8d840b62ce0983642d121824be71 Mon Sep 17 00:00:00 2001 From: jiangxincode Date: Sun, 22 Nov 2020 21:04:14 +0800 Subject: [PATCH 087/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 11 ----- ...46\344\271\240\344\271\213\350\267\257.md" | 3 +- ...46\344\271\240\344\271\213\350\267\257.md" | 43 +++++++++++-------- 3 files changed, 25 insertions(+), 32 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 864a230..114c0e7 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -359,15 +359,8 @@ * Rajawali: * Basic Rajawali3D Tutorial for Android: -* List of rendering APIs: -* 计算机图形程序接口 | Graphics API: - -* Vulkan: * Vulkan Graphics API: -* Cairo: -* Skia: - ## Jack * Android 新一代编译 toolchain Jack & Jill 简介: @@ -455,12 +448,8 @@ ## Vitamio -* Vitamio: -* 帮助文档: * 4.2.2版本之前的源码: * 5.0.0版本之后的源码: -* vplayer: -* 一下科技: * 使用Vitamio打造自己的Android万能播放器: ## 百度媒体云 diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index ecab91d..ffc167f 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -284,7 +284,7 @@ * * Eclipse MarketPlace地址: * 各个版本的下载地址: -* 帮助地址: +* Eclipse documentation: * 源码: * FAQ What is a Quick Fix?: ? * Eclipse插件开发总群(QQ群):584434100 @@ -517,7 +517,6 @@ sandbox中的项目无法直接通过maven进行依赖,必须通过svn下载 cd ../bcel (classscan/bcel) mvn clean package install -DskipTests -``` 在pom.xml中添加依赖 diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index 6577de7..5727f84 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -19,15 +19,10 @@ * RPM Fusion(RPM Fusion provides software that the Fedora Project or Red Hat doesn't want to ship): * Linux From Scratch: -* Linux中国: -* Linux导航: -* ChinaUnix: - ## Linux Distributions * Ubuntu: * Ubuntu Wiki: -* Ubuntu Kylin: * deepin: * Debian: * Fedora: @@ -37,10 +32,14 @@ * opensuse-guide: * 鳥哥的 Linux 私房菜: -* Linux命令大全: ## Softwares/Tools/Knowledge +* 一篇文章搞懂apt-get update, apt-get upgrade, apt-get dist-upgrade, do-release-upgrade, apt-get remove, apt-get autoremove, aptitude remove的区别: +* What is the difference between dpkg and aptitude/apt-get? +* Snap: + +* Linux命令大全: * explainshell: * tldr: * Nushell: @@ -74,8 +73,6 @@ * LNMP安装快速导航(官网教程): * ubuntu删除旧内核和多余启动项: * 各个Linux版本的本地root密码破解方法: -* apt-get remove, apt-get autoremove和aptitude remove的区别: -* What is the difference between dpkg and aptitude/apt-get? * Linux乱码问题解决方案: * Linux 软件看门狗 watchdog: * C语言调试手段:锁定错误的实现方法: @@ -129,18 +126,13 @@ * Linux中10个有用的命令行补齐命令: * Linux中的10个链接操作符: -* Linux兼容内核(龙井): * wine: * Winetricks: -* 搜狗输入法: -* wps for linux: -* LibreOffice: -* 永中office: -* 有道词典: -* Compiz(桌面美化工具): +* fswatch: +* Compiz: * 新立得(Synaptic): * GLX-Dock: -* vncview(远程控制): +* vncview: * gimp: * PDFtk: * Master PDF Editor for Linux: @@ -153,7 +145,7 @@ * htop: * iftop: * Iotop: -* 串口传输文件 lrzsz: +* lrzsz(串口传输文件): * httpry(HTTP logging and information retrieval tool ): * iproute2: * GNU Binutils(objdump/gprof/strings): @@ -174,9 +166,16 @@ ## Linux常用命令 ```shell + # 先尝试man再尝试google + man xxx + sha1sum/md5sum find "/etc/" -name "*" -type f | xargs wc -l | awk '{print $2" "$1"lines"}' # 打印某一文件夹下的所有文件名及其行数 - rdate # set the system's date from a remote host. (sudo apt-get install rdate) + + # set the system's date from a remote host + # sudo apt-get install rdate + rdate + grep -R "org.apache.commons.FileUtils" * grep -inr --color "ERROR" test_debug.log ps –fu $USER | grep java # 显示当前用户的所有线程 @@ -288,7 +287,13 @@ # Linux下分割合并文: man split/cat # 生成目录树结构: man tree - rename # http://man.linuxde.net/rename + # 重命名文件 + rename + + # 切换用户并执行一条命令 + su - oracle -c command + # 切换用户并执行一个shell文件 + su - oracle -s /bin/bash shell.sh ``` ## 修改默认打开文件的程序 From 6c099eb9e1bc979ec4fc3cbfc7f2a9b2f95c0476 Mon Sep 17 00:00:00 2001 From: Aloys Date: Wed, 13 Jan 2021 23:16:15 +0800 Subject: [PATCH 088/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 4 +-- ...46\344\271\240\344\271\213\350\267\257.md" | 28 ++++++------------- ...46\344\271\240\344\271\213\350\267\257.md" | 2 +- 3 files changed, 10 insertions(+), 24 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 114c0e7..d60009d 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -21,9 +21,7 @@ * AOSP: * 代号、标记和细分版本号: -* Repo command reference: -* repo 下载Android源码(国内镜像): -* repo使用: +* Repo实践指南: * androidxref: * grepcode: diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index ffc167f..5f9a8e6 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1017,31 +1017,19 @@ The yFiles diagramming software components are extensive class libraries that en * -## JACOB +## Java操作Word/Excel/PowerPoint/PDF -* old: -* new: +* Apache POI - the Java API for Microsoft Documents: +* aspose: +* iText: +* Apache PDFBox - A Java PDF Library: +* JExcelApi(长时间不更新): + +* jacob: * Java操作Microsoft Word之jacob: * 浅析JACOB: * JACOB的语法: -## Apache POI - the Java API for Microsoft Documents - -* - -## Apache PDFBox - A Java PDF Library - -* - -## iText(AGPL) - -* -* - -## aspose - -* - ## MVEL(Drools) * diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 1ea18ef..0d06297 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -53,7 +53,7 @@ * SVN版本库无损迁移与自动备份(二): * SVN+Apache域用户认证配置方法_Windows(转,重新排版,部分内容更新优化): * Use the SVN command-line tool: -* TortoiseSVN,TortoiseGit修改差异查看器为BeyondCompare: +* 在TortoiseSVN/TortoiseGit中使用BeyondCompare进行差异对比: * SVN的钩子--限制强制写日志(log): * svn ignore 的用法(忽略文件及目录): * SVN版本冲突,COMMIT时出现.MINE等文件: From cdec4f149d59c94aee692df13f9569252b84cae7 Mon Sep 17 00:00:00 2001 From: Aloys Date: Tue, 16 Feb 2021 12:31:02 +0800 Subject: [PATCH 089/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 295 ++++++++---------- ...46\344\271\240\344\271\213\350\267\257.md" | 81 +++-- 2 files changed, 195 insertions(+), 181 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index d60009d..639583c 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,8 +1,11 @@ # Andriod学习之路 * + * NDK: + * Intent: +* PendingIntent: * Settings.Global: * Android开发者预览版: @@ -18,158 +21,47 @@ * 支持库: * uses-library: -* AOSP: -* 代号、标记和细分版本号: - -* Repo实践指南: - -* androidxref: -* grepcode: -* Android Code Search: - -* Git repositories on android: * Android Studio: -* AndroidDevTools: +* Xamarin: * Android Support Overview: * I18n Translation Search: * androidcommunity: -* - -* Xamarin: - -## Gradle/Gradle Wrapper/Android Plugin for Gradle - -* Gradle: -* Gradle User Guide: -* Chapter 6. The Gradle Wrapper: -* Getting Started With Gradle: - -* 彻底搞懂Gradle、Gradle Wrapper与Android Plugin for Gradle的区别和联系: -* 通过设置JDK解决存在多个Gradle后台进程的问题: -* Gradle Could not find method leftShift() for arguments: - -* Gradle学习系列之一——Gradle快速入门: -* gradle使用文档: -* Gradle修改本地仓库的位置: -* gradle cache目录(.gradle)剖析: - -* (老)Gradle Plugin User Guide: -* 加速Android Studio/Gradle构建: -* 用Gradle 构建你的android程序: -* 用Gradle 构建你的android程序-依赖管理篇: - -## Android Studio及其插件 - -* JetBrains Plugins Repository: -* Android Studio常用插件汇总: -* 在 AndroidStudio 工程点击 Run 按钮, 实际上做了什么操作呢? - -* 设置应用 ID: -* (新)配置构建: -* 创建和管理虚拟设备: -* 对您的应用进行版本控制: -* dumpsys: -* Debug Your layout with Layout Inspector and Layout Validation: -* Configure Android Studio: -* CPU Profiler: -* TraceView: - -* Android性能优化—TraceView的使用: - -* Android Studio导入整个Android系统源码: -* AndroidStudio工程导入部分Android源码: - -* Android Studio移动鼠标显示悬浮提示的设置方法: -* ANDROID STUDIO详细教程汇总: -* Android Studio 3.0+ 新Dex编译器D8 Desugar R8: -* Android Studio系列教程一--下载与安装: -* Android Studio系列教程二--基本设置与运行: -* Android Studio系列教程三--快捷键: -* Android Studio系列教程四--Gradle基础: -* ANDROID STUDIO系列教程五--GRADLE命令详解与导入第三方包: -* ANDROID STUDIO系列教程六--GRADLE多渠道打包: -* Android Studio优化技巧: -* Android Studio相关目录解析: -* Android Studio Build Output 栏内汉字出现乱码的解决方案: - -## Libraries - -* butterknife: -* xUtils2: -* xUtils3: -* SlidingMenu: -* ViewPagerIndicator: -* [DEPRECATED]ActionBarSherlock: -* jpinyin: -* Android-Universal-Image-Loader: -* hugo: -* 极光推送: - -* 移动服务SDK: - -## Tools - -* busybox: -* godeyes: -* Test DPC APK Download for Android: -* fastlane screenshots for Android: -* Android 应用开发调试利器——开发助手,数十倍效率提升: -* 奇兔刷机: -* dex-method-counts: -* dexcount-gradle-plugin: -* leakcanary: -* Display and control your Android device: - -## BugReport - -* Android adb bugreport工具分析和使用: -* battery-historian: -* ChkBugReport: - -## systrace - -* System Trace: -* Android Systrace 基础知识: -* systrace.py环境配置: - -## Perfetto - -* Perfetto: -* PerfettoUI: - -## Android模拟器 - -* genymotion: -* genymotion个人免费版: -* genymotion-idea-plugin: -* 夜神模拟器: +* AndroidDevTools: -### Firebase +## AOSP源码与架构学习 -* Firebase: -* Plugin Fierbase Services was not installed:Cannot download...: +* AOSP相关网址: +* Android构建系统: +* Android soong build系统介绍: +* Repo实践指南: +* Android OTA升级: +* Android 新一代编译 toolchain Jack & Jill 简介: +* Google 又弃坑了,Jack+Jill vs. javac+dx: ## Article -* Android soong build系统介绍: +* Android 编程与兼容性问题: 《Android Programming The Big Nerd Ranch Guide 3rd[Android编程权威指南(第3版)》 6.2 7.8 7.9 +* lntentfilter的匹配规则: 《Android开发艺术探索》 1.3 +* .nomedia: 《解析 Google Android SDK-智能手机开发范例手册》5.3 +* StrictMode: 《Android核心原理与系统应用高效开发》 9.2.3 +* Eight Ways Your Android App Can Leak Memory: +* Eight Ways Your Android App Can STOP Leaking Memory: +* Android性能优化: +* 使用meminfo分析Android单个进程内存信息: +* How do I discover memory usage of my application in Android? * Handler内存泄漏详解及其解决方案: * Android中Handler的使用: * 深入源码解析Android中的Handler,Message,MessageQueue,Looper: * Android异步更新UI的几种方法: * AsyncTaskLoader vs AsyncTask: -* Android中的Service:默默的奉献者 (1): -* Android中的Service:Binder,Messenger,AIDL(2): -* Android:学习AIDL,这一篇文章就够了(上): -* Android:学习AIDL,这一篇文章就够了(下): -* Service的onStartCommand方法的返回值和参数详解: +* Service/Binder/Messenger/AIDL: +《Android开发艺术探索》第2章、第9章 * Fragments:Pro Android 5[精通Android 3] Chapter 8 * Android Fragment的用法(一): -* Fragment相关: Pro Android 5 * Fragment相关源码解析一——FragmentManagerImpl和BackStackRecord: * Fragment相关源码解析二——生命周期: * Fragment相关源码解析三——状态保存与恢复: @@ -180,7 +72,6 @@ * requestDisallowInterceptTouchEvent() 阻止父层的View截获touch事件(事件处理机制): * View·InputEvent事件投递源码分析: -* Graphics: * Hardware acceleration: * Android应用程序UI硬件加速渲染技术简要介绍和学习计划: * Android 显示系统:SurfaceFlinger详解: @@ -216,12 +107,11 @@ * setEnabled() vs setClickable(), what is the difference? * ListView中getView的原理与解决多轮重复调用的方法: * Android控件--ProgressBar: +* 拖放框架: -* Android 编程与兼容性问题: Android Programming The Big Nerd Ranch Guide 3rd[Android编程权威指南(第3版) 6.2 7.8 7.9 * Android核心分析: * Android系统开篇: * 对于android.intent.action.MAIN和android.intent.category.LAUNCHER的理解: -* lntentfilter的匹配规则: Android开发艺术探索 1.3 * 详解 Android 通信: * Android Bander设计与实现 - 设计篇: * Android Application的使用及其生命周期: @@ -250,7 +140,6 @@ * Android兼容性测试CTS Verifier-环境搭建、测试执行、结果分析: * Why do most fields (class members) in Android tutorial start with `m`? * Android多语言国际化适配(兼容7.0): -* .nomedia: 《解析 Google Android SDK-智能手机开发范例手册》5.3 * android程序自动化生成apk的过程: * 配置方法数超过 64K 的应用: * 升级ndk报错:No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android: @@ -303,6 +192,90 @@ * 在 Android 开发中使用 SVG: * 手把手教学, android 使用 SVG: +## Gradle/Gradle Wrapper/Android Plugin for Gradle + +* Gradle: +* Gradle User Guide: +* Chapter 6. The Gradle Wrapper: +* Getting Started With Gradle: + +* 彻底搞懂Gradle、Gradle Wrapper与Android Plugin for Gradle的区别和联系: +* 通过设置JDK解决存在多个Gradle后台进程的问题: +* Gradle Could not find method leftShift() for arguments: + +* Gradle学习系列之一——Gradle快速入门: +* gradle使用文档: +* Gradle修改本地仓库的位置: +* gradle cache目录(.gradle)剖析: + +* (老)Gradle Plugin User Guide: +* 加速Android Studio/Gradle构建: +* 用Gradle 构建你的android程序: +* 用Gradle 构建你的android程序-依赖管理篇: + +* Android Gradle and the curious case of invisible dependency: + +## Android Studio及其插件 + +* JetBrains Plugins Repository: +* Android Studio常用插件汇总: +* 在 AndroidStudio 工程点击 Run 按钮, 实际上做了什么操作呢? + +* 设置应用 ID: +* (新)配置构建: +* 创建和管理虚拟设备: +* 对您的应用进行版本控制: +* dumpsys: +* Debug Your layout with Layout Inspector and Layout Validation: +* Configure Android Studio: +* CPU Profiler: +* TraceView: + +* Android性能优化—TraceView的使用: + +* Android Studio导入整个Android系统源码: +* AndroidStudio工程导入部分Android源码: + +* Android Studio移动鼠标显示悬浮提示的设置方法: +* ANDROID STUDIO详细教程汇总: +* Android Studio 3.0+ 新Dex编译器D8 Desugar R8: +* Android Studio系列教程一--下载与安装: +* Android Studio系列教程二--基本设置与运行: +* Android Studio系列教程三--快捷键: +* Android Studio系列教程四--Gradle基础: +* ANDROID STUDIO系列教程五--GRADLE命令详解与导入第三方包: +* ANDROID STUDIO系列教程六--GRADLE多渠道打包: +* Android Studio优化技巧: +* Android Studio相关目录解析: +* Android Studio Build Output 栏内汉字出现乱码的解决方案: +* ERROR Android emulator gets killed: + +## Libraries + +* butterknife: +* xUtils3: +* SlidingMenu: +* ViewPagerIndicator: +* jpinyin: +* Android-Universal-Image-Loader: +* hugo: +* 极光推送: +* 移动服务SDK: + +## Tools + +* busybox: +* godeyes: +* Test DPC APK Download for Android: +* fastlane screenshots for Android: +* Android 应用开发调试利器——开发助手,数十倍效率提升: +* 奇兔刷机: +* dex-method-counts: +* dexcount-gradle-plugin: +* leakcanary: +* Display and control your Android device: +* PerfDog性能狗: + ## SVGA * SVGA: @@ -316,6 +289,36 @@ ## Flutter * Flutter: +* Flutter中文网: + +## BugReport + +* Android adb bugreport工具分析和使用: +* battery-historian: +* ChkBugReport: + +## systrace + +* System Trace: +* Android Systrace 基础知识: +* systrace.py环境配置: + +## Perfetto + +* Perfetto: +* PerfettoUI: + +## Android模拟器 + +* genymotion: +* genymotion个人免费版: +* genymotion-idea-plugin: +* 夜神模拟器: + +## Firebase + +* Firebase: +* Plugin Fierbase Services was not installed:Cannot download...: ## 图形处理库(参考"OpenGL学习之路"脑图) @@ -359,28 +362,6 @@ * Vulkan Graphics API: -## Jack - -* Android 新一代编译 toolchain Jack & Jill 简介: -* Google 又弃坑了,Jack+Jill vs. javac+dx: - -## 升级相关 - -* Android A/B System OTA分析(一)概览: -* Android A/B System OTA分析(二)系统image的生成: -* Android A/B System OTA分析(三)主系统和bootloader的通信: -* Android A/B System OTA分析(四)系统的启动和升级: - -* Android OTA升级原理和流程分析(一)--update.zip包的制作: -* Android OTA升级原理和流程分析(二)---update.zip差分包问题的解决: -* Android OTA升级原理和流程分析(三)---Android系统的三种启动模式: -* Android OTA升级原理和流程分析(四)---Android系统Recovery模式的工作原理: -* Android OTA升级原理和流程分析(五)---update.zip包从上层进入Recovery服务: -* Android OTA升级原理和流程分析(六)---Recovery服务流程细节: -* Android OTA升级原理和流程分析(七)---Recovery服务的核心install_package函数: -* Android OTA升级原理和流程分析(八)---升级程序update_binary的执行过程: -* Android OTA升级原理和流程分析(九)---updater-script脚本语法简介以及执行流程: - ## ADB * awesome-adb: diff --git "a/Python\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Python\345\255\246\344\271\240\344\271\213\350\267\257.md" index 9e024d3..d1e52a5 100644 --- "a/Python\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Python\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -2,50 +2,83 @@ * * -* PyPI - the Python Package Index: -* pip: -* setuptools: -* setuptools: -* spyder: + * Python Enhancement Proposals: +## Python基础知识 + +* Python注释: +* python中os.system出错问题: +* python进制转换: +* python list 的 del() 函数: +* Python zipfile报错问题: +* Python 3.0 抢“鲜”体验: +* 让你的python程序同时兼容python2和python3: +* Dive Into Python 3: + +* linux怎么改python默认版本: +* Python退格键出现方块: +* 在python交互式环境中,在不关闭窗口的情况在如何清除,之前的语句: + +## 发行版和实现 + * ActivePython: -* IronPython: +* IronPython: * Jython: +## IDE/工具/三方库 + * The Eric Python IDE: * Wing IDE: -* Python for Windows Extensions: * Stani's Python Editor(SPE): * Ulipad: - * Python Tools for Visual Studio: -* Virtualenv: -* Pillow: -* pythonchallenge: + * Unofficial Windows Binaries for Python Extension Packages: * SCons: A software construction tool: - +* spyder: * PyUnit testing framework: +* pywin32(Python for Windows Extensions): * PythonToolkit (PTK): +* JPype: -* -* 啄木鸟Python社区: - +* Python第三方常用工具、库、框架等: * 初探验证码识别: * Python 程序员必知必会的开发者工具: * Python自动单元测试框架: -* Python 3.0 抢“鲜”体验: -* Dive Into Python 3: -* Swaroop C H: -* JPype: -* Python zipfile报错问题: +## PyCharm + +* PyCharm: +* pycharm开发python时出现控制中文显示乱码: ## PyDev -* 项目地址: -* 安装说明: -* 与之相关的LiClipse项目地址: -* PyDev Manual: \ No newline at end of file +* PyDev: +* LiClipse: + +## PIL/Pillow(Python Imaging Library) + +* Pillow: +* Pillow文档: +* PIL、Pillow安装使用方法: +* 64位Win7下无法安装PIL库的原因: + +## pyenv/Virtualenv + +* pyenv: +* Virtualenv: +* 使用virtualenv创建python沙盒(虚拟)环境: + +## PyPI/pip/setuptools + +* PyPI - the Python Package Index: +* pip: +* setuptools: +* Python: What's PyPi, pip, easy_install, setuptools? + +## 其它 + +* pythonchallenge: +* Swaroop C H: \ No newline at end of file From 68de42041cd19fb8752b8b1343958f82bf6b9ed5 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 21 Feb 2021 18:40:28 +0800 Subject: [PATCH 090/234] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...46\344\271\240\344\271\213\350\267\257.md" | 47 +------------------ ...46\344\271\240\344\271\213\350\267\257.md" | 39 +++++++++++++++ 2 files changed, 41 insertions(+), 45 deletions(-) create mode 100644 "OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 639583c..6f4fe25 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -33,6 +33,8 @@ ## AOSP源码与架构学习 * AOSP相关网址: +* 将AOSP源码导入到Android Studio进行查看: +* AndroidStudio工程导入部分Android源码: * Android构建系统: * Android soong build系统介绍: * Repo实践指南: @@ -233,9 +235,6 @@ * Android性能优化—TraceView的使用: -* Android Studio导入整个Android系统源码: -* AndroidStudio工程导入部分Android源码: - * Android Studio移动鼠标显示悬浮提示的设置方法: * ANDROID STUDIO详细教程汇总: * Android Studio 3.0+ 新Dex编译器D8 Desugar R8: @@ -320,48 +319,6 @@ * Firebase: * Plugin Fierbase Services was not installed:Cannot download...: -## 图形处理库(参考"OpenGL学习之路"脑图) - -### OpenGL - -* OpenGL: -* OpenGL Wiki: -* docs.GL: - -* LearnOpenGL: -* OpenGL(很多文章的参考文献): -* Learn WebGL: -* NEHE Tutorials: - -* OpenGL顶点坐标与纹理坐标: -* OpenGL纹理上下颠倒翻转的三种解决办法: -* 投影矩阵的推导(Deriving Projection Matrices): -* Android OpenGL ES从白痴到入门(四):离屏渲染(Pbuffer): -* OpenGL入门: -* OpenGL学习脚印: -* OpenGL ES: -* 20分钟让你了解OpenGL——OpenGL全流程详细解读: -* affine transformation matrix 仿射变换矩阵 与 OpenGL: -* Android Matrix 详解: -* 谈一谈 Matrix 与坐标变换: -* Android中利用Camera与Matrix实现3D效果详解: -* 3D图形:矩阵、欧拉角、四元数与方位的故事: -* 四元数与欧拉角(RPY角)的相互转换: - -* OpenGL ES 2.0 specifiying position attribute vec3 or vec4: -* Why not vec3 for OpenGL ES 2.0 gl_Position? -* Is OpenGL coordinate system left-handed or right-handed? -* How vertex and fragment shaders communicate in OpenGL? -* How does the fragment shader know what variable to use for the color of a pixel? -* Non power of two textures in iOS - -### 其他图形处理库 - -* Rajawali: -* Basic Rajawali3D Tutorial for Android: - -* Vulkan Graphics API: - ## ADB * awesome-adb: diff --git "a/OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" new file mode 100644 index 0000000..16d0f0d --- /dev/null +++ "b/OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -0,0 +1,39 @@ +# OpenGL学习之路 + +* OpenGL: +* OpenGL Wiki: +* docs.GL: + +* LearnOpenGL: +* OpenGL(很多文章的参考文献): +* Learn WebGL: +* NEHE Tutorials: + +* OpenGL顶点坐标与纹理坐标: +* OpenGL纹理上下颠倒翻转的三种解决办法: +* 投影矩阵的推导(Deriving Projection Matrices): +* Android OpenGL ES从白痴到入门(四):离屏渲染(Pbuffer): +* OpenGL入门: +* OpenGL学习脚印: +* OpenGL ES: +* 20分钟让你了解OpenGL——OpenGL全流程详细解读: +* affine transformation matrix 仿射变换矩阵 与 OpenGL: +* Android Matrix 详解: +* 谈一谈 Matrix 与坐标变换: +* Android中利用Camera与Matrix实现3D效果详解: +* 3D图形:矩阵、欧拉角、四元数与方位的故事: +* 四元数与欧拉角(RPY角)的相互转换: + +* OpenGL ES 2.0 specifiying position attribute vec3 or vec4: +* Why not vec3 for OpenGL ES 2.0 gl_Position? +* Is OpenGL coordinate system left-handed or right-handed? +* How vertex and fragment shaders communicate in OpenGL? +* How does the fragment shader know what variable to use for the color of a pixel? +* Non power of two textures in iOS + +## 其他图形处理库 + +* Rajawali: +* Basic Rajawali3D Tutorial for Android: + +* Vulkan Graphics API: \ No newline at end of file From d8c4a7b7c8d632c01bb7cd9e1b5cbbbd983b0c31 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 18 Apr 2021 21:32:01 +0800 Subject: [PATCH 091/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 4 +-- ...46\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...46\344\271\240\344\271\213\350\267\257.md" | 36 +++++++++---------- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 6f4fe25..9b8e509 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -34,7 +34,6 @@ * AOSP相关网址: * 将AOSP源码导入到Android Studio进行查看: -* AndroidStudio工程导入部分Android源码: * Android构建系统: * Android soong build系统介绍: * Repo实践指南: @@ -144,6 +143,7 @@ * Android多语言国际化适配(兼容7.0): * android程序自动化生成apk的过程: * 配置方法数超过 64K 的应用: +* NDK编译脚本:Android.mk or CMakeLists.txt: * 升级ndk报错:No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android: * Contacts Provider: * Android:MediaSession框架介绍: @@ -264,7 +264,6 @@ ## Tools * busybox: -* godeyes: * Test DPC APK Download for Android: * fastlane screenshots for Android: * Android 应用开发调试利器——开发助手,数十倍效率提升: @@ -274,6 +273,7 @@ * leakcanary: * Display and control your Android device: * PerfDog性能狗: +* LibChecker: ## SVGA diff --git "a/OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" index 16d0f0d..2129b40 100644 --- "a/OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -9,6 +9,8 @@ * Learn WebGL: * NEHE Tutorials: +* Android平台OpenGL ES/Assimp/OpenCV/GLM集成说明: + * OpenGL顶点坐标与纹理坐标: * OpenGL纹理上下颠倒翻转的三种解决办法: * 投影矩阵的推导(Deriving Projection Matrices): diff --git "a/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" index 9faaeaf..3ff4b3e 100644 --- "a/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,28 +1,28 @@ # TeX学习之路 * TeX Live: -* winedt: -* Word-to-LaTeX Converter: -* TeXpen - Your LaTeX editor: -* The easy to use, online, collaborative LaTeX editor: +* TeXworks: +* winedt: * Texmaker - The universal LaTeX editor: -* TeXlipse: -* LEd: +* TeXstudio: +* TeXpen, a LaTeX editor for mankind: * SciTE LaTeX IDE: -* TeXstudio: +* LEd, is an environment for rapid TeX and LaTeX document development: +* Kile LaTeX Editor: +* Gummi: The simple LaTeX editor: +* The TeXlipse plugin for Eclipse provides support for LaTeX projects: * TeXmacs: + +* The easy to use, online, collaborative LaTeX editor: * jaxedit: -* TeXworks: -* BaKoMa TeX Word: -* Kile: -* Gummi: + * LyX: +* BaKoMa TeX Word: +* Word-to-LaTeX Converter: * The Comprehensive TEX Archive Network(CTAN): -* ChinaTeX: * LaTeX – A document preparation system: -* ChinaTeX 论坛: * All about TeXnique: * Chinese TeX(CTEX): * LaTeX Stack Exchange: @@ -30,14 +30,14 @@ ## TeX Live自带文档 -* CTEX FAQ (常见问题集): texlive\2019\texmf-dist\doc\latex\ctex-faq\ctex-faq.pdf -* 一份(不太)简短的LATEX2e 介绍: texlive\2019\texmf-dist\doc\latex\lshort-chinese\lshort-zh-cn.pdf -* The Comprehensive LATEX Symbol List: texlive\2019\texmf-dist\doc\latex\comprehensive\symbols-a4.pdf +* CTEX FAQ (常见问题集): texlive\${VERSION}\texmf-dist\doc\latex\ctex-faq\ctex-faq.pdf +* 一份(不太)简短的LATEX2e 介绍: texlive\${VERSION}\texmf-dist\doc\latex\lshort-chinese\lshort-zh-cn.pdf +* The Comprehensive LATEX Symbol List: texlive\${VERSION}\texmf-dist\doc\latex\comprehensive\symbols-a4.pdf ## TeX Live自带模板 -* moderncv: texlive\2019\texmf-dist\tex\latex\moderncv\moderncv.cls -* moderncv: template-zh: texlive\2019\texmf-dist\doc\latex\moderncv\examples\template-zh.tex +* moderncv: texlive\${VERSION}\texmf-dist\tex\latex\moderncv\moderncv.cls +* moderncv: template-zh: texlive\${VERSION}\texmf-dist\doc\latex\moderncv\examples\template-zh.tex ## 其它文档 From 499efbb86c8bff4d38126b3d494e34ad2f3e9ea2 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 25 Jul 2021 12:40:35 +0800 Subject: [PATCH 092/234] update --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c0483ce..33f5357 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Issue Count](https://codeclimate.com/github/jiangxincode/cnblogs/badges/issue_count.svg)](https://codeclimate.com/github/jiangxincode/cnblogs) [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) -[![Maintenance](https://img.shields.io/maintenance/yes/2019.svg)](https://github.com/jiangxincode/cnblogs) +[![Maintenance](https://img.shields.io/maintenance/yes/2021.svg)](https://github.com/jiangxincode/cnblogs) [![GitHub license](https://img.shields.io/github/license/mashape/apistatus.svg)](http://mit-license.org/) 一些我在平时工作和学习中积累的编程相关的资源。每个程序员都有自己的学习之路,过程中会学习各种各样的网上知识,学习完最好记录下来,每隔一段时间看一看,会有不一样的收获。 From 2edc378d31898627d5fd7d3bd7b6de1289cb565e Mon Sep 17 00:00:00 2001 From: Aloys Date: Wed, 1 Sep 2021 23:49:09 +0800 Subject: [PATCH 093/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 1 + ...46\344\271\240\344\271\213\350\267\257.md" | 19 ++++++------------- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 9b8e509..982cd42 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -40,6 +40,7 @@ * Android OTA升级: * Android 新一代编译 toolchain Jack & Jill 简介: * Google 又弃坑了,Jack+Jill vs. javac+dx: +* Android R Framework流程分析: ## Article diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index 5727f84..b3b2419 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -35,9 +35,7 @@ ## Softwares/Tools/Knowledge -* 一篇文章搞懂apt-get update, apt-get upgrade, apt-get dist-upgrade, do-release-upgrade, apt-get remove, apt-get autoremove, aptitude remove的区别: -* What is the difference between dpkg and aptitude/apt-get? -* Snap: +* 一篇文章搞懂Debian_Ubuntu软件包更新和删除: * Linux命令大全: * explainshell: @@ -195,7 +193,7 @@ watch "ls -al myfile" 监控文件变化 - cat /etc/issue | grep Linux # 查看当前操作系统发行版信息 + cat /etc/issue # 查看当前操作系统发行版信息 apt-cache # query the APT cache apt-file search libz.so.1 # APT package searching utility @@ -296,17 +294,12 @@ su - oracle -s /bin/bash shell.sh ``` -## 修改默认打开文件的程序 +## 修改文件打开方式 -linux 下全局的文件与程序的关联是通过`/usr/share/applications/defaults.list`文件来设置,该文件保存了个人文件与程序的关联的打开方式。安装了nero之后文件iso的文件默认使用archive manager打开,在`~/.local/share/applications/mimeapps.list`添加一行: +* 全局配置:`/usr/share/applications/defaults.list` +* 用户配置:`~/.local/share/applications/mimeapps.list` - `application/x-cd-image=nerolinux.desktop;` - -在`/usr/share/applications/defaults.list`中添加一行: - - `application/x-cd-image=nerolinux.desktop;` - -图形界面下双击iso文件就使用nero打开了。 +例如配置iso类型文件的打开方式一般默认是archive manager,如果想修改为nero,可以添加:`application/x-cd-image=nerolinux.desktop;`,然后图形界面下双击iso文件就使用nero打开了。 ## Linux重装系统指南(Ubuntu) From c155643c8d4587a067f127bf8fefd1be93e90493 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sat, 25 Sep 2021 18:04:54 +0800 Subject: [PATCH 094/234] update --- ...d\345\255\246\344\271\240\344\271\213\350\267\257.md" | 9 ++++++++- ...6\345\255\246\344\271\240\344\271\213\350\267\257.md" | 6 ++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 982cd42..81ab9fa 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -82,6 +82,8 @@ * Android图形系统(十一)-Choreographer: * HenCoder——给高级 Android 工程师的进阶手册: +* Android | 打印堆栈: + * 支持不同的屏幕尺寸: * 多屏幕多分辨率的支持: * Android开发中dip,dpi,density,px等详解: @@ -111,7 +113,7 @@ * Android控件--ProgressBar: * 拖放框架: -* Android核心分析: +* Android核心分析: * Android系统开篇: * 对于android.intent.action.MAIN和android.intent.category.LAUNCHER的理解: * 详解 Android 通信: @@ -165,6 +167,11 @@ * Android 7.0 行为变更 通过FileProvider在应用间共享文件吧: * FileProvider文件分享: +* 了解一下,Android 10中的APEX: +* Android-APEX化之后如何替换对应的文件: + +* 针对低电耗模式和应用待机模式进行优化: + * 使用广色域内容增强图形效果: * 安卓应用在各大应用市场上架方法整理: diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 0d06297..ba1cc24 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -85,6 +85,7 @@ ### Git优秀文章 * windows中使用Git工具连接GitHub(配置篇): +* Git下载GitHub仓库里的某一个文件夹或某一个文件: * 打造完美 Windows git 命令行环境: * 详解在visual studio中使用git版本系统(图文): * Caching your GitHub password in Git: @@ -118,6 +119,11 @@ * git修改历史提交信息: * git 清除所有untracked file: +### Git个人常用命令备忘录 + +* `git log -S"string" filepath`: 查看某个文件中特定内容的修改记录 +* `git log -- filepath`: 查看已经被删除文件的修改记录 + ### git init 与 git init --bare 使用命令"git init --bare"(bare汉语意思是:裸,裸的)初始化的版本库(暂且称为bare repository)只会生成一类文件:用于记录版本库历史记录的.git目录下面的文件;而不会包含实际项目源文件的拷贝;所以该版本库不能称为工作目录(working tree);如果你进入版本目录,就会发现只有.git目录下的文件,而没有其它文件;就是说,这个版本库里面的文件都是.git目录下面的文件,把原本在.git目录里面的文件放在版本库的根目录下面;换句话说,不使用--bare选项时,就会生成.git目录以及其下的版本历史记录文件,这些版本历史记录文件就存放在.git目录下;而使用--bare选项时,不再生成.git目录,而是只生成.git目录下面的版本历史记录文件,这些版本历史记录文件也不再存放在.git目录下面,而是直接存放在版本库的根目录下面。 From cd4660ff41c4ec57fe8a2b37769b6785d5dfe931 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 21 Nov 2021 19:04:26 +0800 Subject: [PATCH 095/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 39 +++++++++---------- ...46\344\271\240\344\271\213\350\267\257.md" | 3 +- ...46\344\271\240\344\271\213\350\267\257.md" | 3 ++ 3 files changed, 24 insertions(+), 21 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 81ab9fa..de8a7b4 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -49,11 +49,6 @@ * .nomedia: 《解析 Google Android SDK-智能手机开发范例手册》5.3 * StrictMode: 《Android核心原理与系统应用高效开发》 9.2.3 -* Eight Ways Your Android App Can Leak Memory: -* Eight Ways Your Android App Can STOP Leaking Memory: -* Android性能优化: -* 使用meminfo分析Android单个进程内存信息: -* How do I discover memory usage of my application in Android? * Handler内存泄漏详解及其解决方案: * Android中Handler的使用: * 深入源码解析Android中的Handler,Message,MessageQueue,Looper: @@ -238,10 +233,6 @@ * dumpsys: * Debug Your layout with Layout Inspector and Layout Validation: * Configure Android Studio: -* CPU Profiler: -* TraceView: - -* Android性能优化—TraceView的使用: * Android Studio移动鼠标显示悬浮提示的设置方法: * ANDROID STUDIO详细教程汇总: @@ -280,7 +271,6 @@ * dexcount-gradle-plugin: * leakcanary: * Display and control your Android device: -* PerfDog性能狗: * LibChecker: ## SVGA @@ -298,23 +288,32 @@ * Flutter: * Flutter中文网: -## BugReport +## 性能分析 -* Android adb bugreport工具分析和使用: -* battery-historian: -* ChkBugReport: - -## systrace - -* System Trace: +* Overview of system tracing: +* Inspect CPU activity with CPU Profiler: +* Simpleperf: * Android Systrace 基础知识: * systrace.py环境配置: -## Perfetto - * Perfetto: * PerfettoUI: +* TraceView(已弃用): +* Android性能优化—TraceView的使用: + +* PerfDog性能狗: + +* Eight Ways Your Android App Can Leak Memory: +* Eight Ways Your Android App Can STOP Leaking Memory: +* Android性能优化: +* 使用meminfo分析Android单个进程内存信息: +* How do I discover memory usage of my application in Android? + +* Android adb bugreport工具分析和使用: +* battery-historian: +* ChkBugReport: + ## Android模拟器 * genymotion: diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 5f9a8e6..fec72ba 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -545,6 +545,7 @@ Eclipse中`Update Project`,选择`Force Update of Snapshots/Releases` ## Maven and M2Eclipse * Maven项目地址: +* Maven Central Repository: * POM Reference: * Settings Reference: * Introduction to Repositories: @@ -562,7 +563,7 @@ Eclipse中`Update Project`,选择`Force Update of Snapshots/Releases` * MavenMNG-4715 version expression constant: * 解决Maven报Plugin execution not covered by lifecycle configuration: * Maven编译jar出现:无法确定 T 的类型参数的异常的原因和处理方案: -* 利用github搭建个人maven仓库: +* Hosting a Maven repository on github: * 如何发布Maven依赖到中央仓库: * Maven添加本地依赖: * Maven常用插件: diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index b3b2419..20bbed9 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -19,6 +19,8 @@ * RPM Fusion(RPM Fusion provides software that the Fedora Project or Red Hat doesn't want to ship): * Linux From Scratch: +* + ## Linux Distributions * Ubuntu: @@ -118,6 +120,7 @@ * Linux命令之file - 检测并显示文件类型: * Linux Centos 删除除某(多)个文件之外的所有文件: * linux如何删除zip包中某个文件夹及里面的内容: +* GPG入门教程: * Linux下好玩的命令: * 动画演示一些无用但有趣的Linux命令: From e67a55d436d91f66a85003535a2a7e78e2a16b0a Mon Sep 17 00:00:00 2001 From: Aloys Date: Tue, 15 Feb 2022 23:07:47 +0800 Subject: [PATCH 096/234] update --- ...45\255\246\344\271\240\344\271\213\350\267\257.md" | 4 ++++ ...45\255\246\344\271\240\344\271\213\350\267\257.md" | 11 ++++------- ...45\205\253\347\232\204\347\237\245\350\257\206.md" | 11 +++++++++++ ...45\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + 4 files changed, 20 insertions(+), 7 deletions(-) create mode 100644 "\346\235\202\344\270\203\346\235\202\345\205\253\347\232\204\347\237\245\350\257\206.md" diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index fec72ba..e1f4010 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -54,6 +54,7 @@ * 请别再拿“String s = new String("xyz");创建了多少个String实例”来面试了吧: * 彻底弄懂字符串常量池等相关问题: * java安全沙箱(四)之安全管理器及Java API: +* 深入浅出Java多线程: * Java Runtime.exec()的使用: * 深入理解Java:SimpleDateFormat安全的时间格式化: @@ -355,6 +356,9 @@ * Jigloo SWT/Swing GUI Builder: * SWT、Swing 或 AWT:哪个更适合您? * OpenSwing: +* FlatLaf: +* Darcula: +* beautyeye: ## Hudson diff --git "a/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" index 3ff4b3e..196ea2c 100644 --- "a/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,10 +1,10 @@ # TeX学习之路 * TeX Live: +* WinEdt: -* TeXworks: -* winedt: * Texmaker - The universal LaTeX editor: +* TeXworks: * TeXstudio: * TeXpen, a LaTeX editor for mankind: * SciTE LaTeX IDE: @@ -33,14 +33,11 @@ * CTEX FAQ (常见问题集): texlive\${VERSION}\texmf-dist\doc\latex\ctex-faq\ctex-faq.pdf * 一份(不太)简短的LATEX2e 介绍: texlive\${VERSION}\texmf-dist\doc\latex\lshort-chinese\lshort-zh-cn.pdf * The Comprehensive LATEX Symbol List: texlive\${VERSION}\texmf-dist\doc\latex\comprehensive\symbols-a4.pdf - -## TeX Live自带模板 - -* moderncv: texlive\${VERSION}\texmf-dist\tex\latex\moderncv\moderncv.cls -* moderncv: template-zh: texlive\${VERSION}\texmf-dist\doc\latex\moderncv\examples\template-zh.tex +* moderncv: texlive\${VERSION}\texmf-dist\doc\latex\moderncv\manual\moderncv_userguide.pdf ## 其它文档 +* 使用VSCode编写LaTeX: * LaTeX内容总结: * LaTeX技巧68:TeX/LaTeX 常用宏包简介: * Linux下Texlive的ctex包中文字体问题: diff --git "a/\346\235\202\344\270\203\346\235\202\345\205\253\347\232\204\347\237\245\350\257\206.md" "b/\346\235\202\344\270\203\346\235\202\345\205\253\347\232\204\347\237\245\350\257\206.md" new file mode 100644 index 0000000..1d11bb8 --- /dev/null +++ "b/\346\235\202\344\270\203\346\235\202\345\205\253\347\232\204\347\237\245\350\257\206.md" @@ -0,0 +1,11 @@ +# 杂七杂八的知识 + +## 编程辅助工具 + +* Copilot: +* Kite: +* codota: +* tabnine(codota继承者): +* Alibaba Cloud AI Coding Assistant(Cosy): +* aixcoder: +* IntelliCode 概述: diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index ba1cc24..821ea4b 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -118,6 +118,7 @@ * 撤销 git commit --amend: * git修改历史提交信息: * git 清除所有untracked file: +* 如何将 GitHub 项目导入码云?一步搞定! ### Git个人常用命令备忘录 From 6dfa7c77063e2c37911639ec0e67af4fc6810c8c Mon Sep 17 00:00:00 2001 From: Aloys Date: Thu, 24 Feb 2022 22:53:29 +0800 Subject: [PATCH 097/234] update --- .vscode/settings.json | 8 ++++++++ ...06\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + 2 files changed, 9 insertions(+) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..2421e38 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "files.exclude": { + "**/.classpath": true, + "**/.project": true, + "**/.settings": true, + "**/.factorypath": true + } +} \ No newline at end of file diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 821ea4b..795181a 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -108,6 +108,7 @@ * 简单对比git pull和git pull --rebase的使用: * 使用git rebase合并多次commit: * git中将多次commit合并为一次commit: +* git merge的三种操作merge, squash merge, 和rebase merge: * 如何合并两个Git仓库: * Moving Repository from Bitbucket to GitHub: * git 拉取远程指定分支 pull本地不存在的分支: From da98f086f47b1db7c8c8203bc7257beee9a273c5 Mon Sep 17 00:00:00 2001 From: Aloys Date: Tue, 5 Apr 2022 19:25:22 +0800 Subject: [PATCH 098/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 1 - ...46\344\271\240\344\271\213\350\267\257.md" | 28 +++++++++++++++++++ ...46\344\271\240\344\271\213\350\267\257.md" | 1 + 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 "Excel\345\255\246\344\271\240\344\271\213\350\267\257.md" diff --git "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 5381516..f3f26e1 100644 --- "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -85,7 +85,6 @@ * xmlspy: * Bluefish: * codelite: -* kite: * kdevelop: * xcode: * QtCreator: diff --git "a/Excel\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Excel\345\255\246\344\271\240\344\271\213\350\267\257.md" new file mode 100644 index 0000000..000b2c1 --- /dev/null +++ "b/Excel\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -0,0 +1,28 @@ +# Excel学习之路 + +## 书籍 + +* Excel 2019 Bible[EXCEL2019宝典(第10版)]: Michael Alexander,Dick Kusleika,Previously by John Walkenbach: 主力学习 +* Excel 2016 Power Programming with VBA[Excel 2016高级VBA编程宝典(第8版)]: Michael Alexander,Dick Kusleika: 主力学习 +* Excel 2016应用大全: 主力学习 +* Excel 2007 VBA办公范例应用: 内容老旧,阅读人数少,不适合学习 +* Excel 2010实用技巧集锦: 内容老旧,阅读人数少,不适合学习 +* Excel VBA实战技巧精粹: 评价不错 +* Excel 2010 VBA编程与实践: 已经有了《Excel 2013 VBA编程与实践》,但是后者找不到对应的电子版。前者评价还不错 +* Excel VBA程序开发自学宝典(第3版): 已经有了,但是后者找不到对应的电子版。前者评价还不错 + +## 函数 + +• All functions (alphabetical): +• IFS function: +• SWITCH function: + +## 小知识点 + +### 改变日期格式 + +```shell +# 'Fri Mar 18 22:49:05 2022 +0800'->'20220318 22:49:05' +# =MID(C1, 21,4)&TEXT(MONTH(MID(C1,5,3)&"-1"), "00")&MID(C1,9,2)&" "&MID(C1,12,8) +# 如果有点时间格式不稳定,如'Fri Mar 8 22:49:05 2022 +0800',则先分列再处理 +``` diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index e1f4010..8c756e7 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -568,6 +568,7 @@ Eclipse中`Update Project`,选择`Force Update of Snapshots/Releases` * 解决Maven报Plugin execution not covered by lifecycle configuration: * Maven编译jar出现:无法确定 T 的类型参数的异常的原因和处理方案: * Hosting a Maven repository on github: +* Working with the Apache Maven registry: * 如何发布Maven依赖到中央仓库: * Maven添加本地依赖: * Maven常用插件: From b26c097ba8e6c92b919e568ed7a0151628762cf1 Mon Sep 17 00:00:00 2001 From: Aloys Date: Mon, 11 Apr 2022 23:15:11 +0800 Subject: [PATCH 099/234] update --- ...el\345\255\246\344\271\240\344\271\213\350\267\257.md" | 4 +++- "J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" | 8 ++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git "a/Excel\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Excel\345\255\246\344\271\240\344\271\213\350\267\257.md" index 000b2c1..a0e1334 100644 --- "a/Excel\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Excel\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,8 +8,10 @@ * Excel 2007 VBA办公范例应用: 内容老旧,阅读人数少,不适合学习 * Excel 2010实用技巧集锦: 内容老旧,阅读人数少,不适合学习 * Excel VBA实战技巧精粹: 评价不错 -* Excel 2010 VBA编程与实践: 已经有了《Excel 2013 VBA编程与实践》,但是后者找不到对应的电子版。前者评价还不错 + * Excel VBA程序开发自学宝典(第3版): 已经有了,但是后者找不到对应的电子版。前者评价还不错 +* 疑难千寻千解丛书 + * Excel 2010 VBA编程与实践/Excel 2013 VBA编程与实践,评价还不错,后者找不到对应的电子版。 ## 函数 diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 8c756e7..7f8f133 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -570,6 +570,7 @@ Eclipse中`Update Project`,选择`Force Update of Snapshots/Releases` * Hosting a Maven repository on github: * Working with the Apache Maven registry: * 如何发布Maven依赖到中央仓库: +* 20分钟理清Maven构建中的测试相关工具的关系: * Maven添加本地依赖: * Maven常用插件: * How to Publish Maven Site Docs to BitBucket or GitHub Pages: @@ -926,9 +927,12 @@ The yFiles diagramming software components are extensive class libraries that en * * Protobuf协议的Java应用例子: -## zip4j +## Archiver/Compressor -* +* zip4j: +* jukka/java-unrar(No maintance): +* java-unrar(No maintance, based on jukka/java-unrar): +* junrar/junrar(Recommend): ## JFlex From ba870b0eb1ba5612e76c0782355c4ee13ab0a33b Mon Sep 17 00:00:00 2001 From: Aloys Date: Wed, 11 May 2022 22:30:18 +0800 Subject: [PATCH 100/234] update --- "Excel\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 - "J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" | 5 ----- 2 files changed, 6 deletions(-) diff --git "a/Excel\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Excel\345\255\246\344\271\240\344\271\213\350\267\257.md" index a0e1334..7719fa9 100644 --- "a/Excel\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Excel\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,7 +8,6 @@ * Excel 2007 VBA办公范例应用: 内容老旧,阅读人数少,不适合学习 * Excel 2010实用技巧集锦: 内容老旧,阅读人数少,不适合学习 * Excel VBA实战技巧精粹: 评价不错 - * Excel VBA程序开发自学宝典(第3版): 已经有了,但是后者找不到对应的电子版。前者评价还不错 * 疑难千寻千解丛书 * Excel 2010 VBA编程与实践/Excel 2013 VBA编程与实践,评价还不错,后者找不到对应的电子版。 diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 7f8f133..5b50acd 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -748,7 +748,6 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * 公司网址: * perfino: * jprofiler: -* install4j: ## FORTIFY SCA(收费) @@ -790,10 +789,6 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * * -## exe4j - -* - ## JBoss The JBoss AS community project has been renamed to the WildFly community project, which has a new home at wildfly.org. The JBoss name now only applies to the commercially supported product, called JBoss EAP, which is derived from the WildFly community project and is available at . From b268c36328d642dcf8c73607df0c4f838b00c6a3 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 4 Sep 2022 18:09:23 +0800 Subject: [PATCH 101/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 1 + ...46\344\271\240\344\271\213\350\267\257.md" | 79 +++++++++++-------- ...46\344\271\240\344\271\213\350\267\257.md" | 1 + 3 files changed, 50 insertions(+), 31 deletions(-) diff --git "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" index f3f26e1..31836d6 100644 --- "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -79,6 +79,7 @@ ## Others +* notepad++: * geany: * Lime Text: * Scintilla: diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 5b50acd..6f0a3a1 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,10 +1,8 @@ -# J2EE学习之路 [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) +# Java学习之路 [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) -## 官方文档 +## Java SE * Java SE: -* Java EE: - * Java Community Process: ## Java tutorial @@ -195,12 +193,26 @@ * 客户端的IP地址伪造、CDN、反向代理、获取的那些事儿: * Threat Modeling: Uncover Security Design Flaws Using The STRIDE Approach: +## Java EE + +* Jakarta EE: +* Jakarta EE Platform Project: +* Java EE(Deprcated): + +* Oracle Java SE Support Roadmap: +* Oracle Java SE Licensing FAQ: + ## Struts * 官网: * 源码:deprecated: * 源码:now: +* OGNL: + +* freemarker: +* Velocity: + * Struts 2.0系列: * Struts2中的零配置与CoC(Convention over Configration): * struts2采用convention-plugin实现零配置: @@ -213,9 +225,6 @@ * 文档: * Spring Framework 开发参考手册: * Spring Security: -* 源码:Spring 3.0(deprecated) -* 源码:Spring 2.5及以下(deprecated) -* 源码:Spring Security(deprecated) * 源码:spring-framework * Spring Tool Suite: @@ -255,9 +264,9 @@ * WebService之WSDL和SOAP实例(基于JAVA): * java 利用JAX-RS快速开发RESTful 服务(以JBoss为容器): * RESTful API 利器 Swagger: -* 使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务: * 改写Restful2ActionMapper让Struts2支持REST风格的URL映射: -* Jersey: +* Jersey: +* Build a RESTful Web service using Jersey and Apache Tomcat: * Restlet: * Apache CXF: * axis2: @@ -316,8 +325,15 @@ * ModelGoon UML4Java: * agile(收费): +* Web Tools Platform: * AnyEdit: +* YEdit: +* Enhanced Class Decompiler: +* Eclipse Web Developer Tools: +* Properties Editor: * StartExplorer: +* Eclipse Mylyn: +* JavaScript Development Tools (JSDT): * EClim: * Eclipse EditorList Plug-in: * eclipse-games: @@ -325,6 +341,7 @@ * FileSync: * eclipse-rbe: * CODE RECOMMENDERS: +* Eclipse EGit: * Spket IDE(提供Eclipse的插件): * Aptana(提供Eclipse插件): @@ -347,9 +364,9 @@ * 监控Tomcat解决方案(监控应用服务器系列文章): * CATALINA_BASE与CATALINA_HOME的区别: * 同一个服务器部署多个tomcat: -* Tomcat 到底依赖JRE还是JDK: +* Does Tomcat require JDK or JRE?: -## AWT/Swing/SWT/Jface +## AWT/Swing/SWT/Jface/JavaFX * Visual Editor(deprated): * WindowBuilder(SWT Designer): @@ -359,6 +376,7 @@ * FlatLaf: * Darcula: * beautyeye: +* JavaFX/JavaFX Scene Builder: ## Hudson @@ -500,7 +518,13 @@ Apache Commons is an Apache project focused on all aspects of reusable Java components. -* 官网: +* Apache Commons: +* commons-beanutils: +* commons-collections: +* commons-configuration: +* commons-io: +* commons-lang: +* commons-logging: sandbox中的项目无法直接通过maven进行依赖,必须通过svn下载源码,部署到本地maven仓库中。例如对于sandbox中的classscan项目: @@ -676,13 +700,11 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * -## Visual Performance Analyzer +## Java程序分析工具 * 洞悉 Java 应用性能瓶颈的利器:Visual Performance Analyzer: - -## VisualVM - * VisualVM: +* arthas: ## Eclipse Class Decompiler @@ -786,8 +808,13 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion ## sikuli -* -* +* sikuli(Deprcated): +* SikuliX1: +* SikuliX Docs: + +## Selenium + +* Selenium: ## JBoss @@ -924,7 +951,7 @@ The yFiles diagramming software components are extensive class libraries that en ## Archiver/Compressor -* zip4j: +* zip4j: * jukka/java-unrar(No maintance): * java-unrar(No maintance, based on jukka/java-unrar): * junrar/junrar(Recommend): @@ -952,6 +979,8 @@ The yFiles diagramming software components are extensive class libraries that en * * 常用IDE的Antlr插件: * ANTLR 4进阶: +* Enkel-JVM-language: +* JC-Compiler: ## cglib @@ -1040,22 +1069,10 @@ The yFiles diagramming software components are extensive class libraries that en * * -## OGNL(Struts) - -* - ## JSP EL * -## freemarker - -* - -## Velocity - -* - ## Aurora * diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 795181a..8edadc7 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -120,6 +120,7 @@ * git修改历史提交信息: * git 清除所有untracked file: * 如何将 GitHub 项目导入码云?一步搞定! +* GitHub Actions: ### Git个人常用命令备忘录 From b4b6a112637a230bdd74b5d912ea04e51ac74621 Mon Sep 17 00:00:00 2001 From: Aloys Date: Fri, 30 Sep 2022 22:48:54 +0800 Subject: [PATCH 102/234] update --- "TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + ...\206\345\255\246\344\271\240\344\271\213\350\267\257.md" | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git "a/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" index 196ea2c..cfd0ab6 100644 --- "a/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -41,3 +41,4 @@ * LaTeX内容总结: * LaTeX技巧68:TeX/LaTeX 常用宏包简介: * Linux下Texlive的ctex包中文字体问题: +* Latex相关资源汇总: diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 8edadc7..1682ce7 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -120,7 +120,6 @@ * git修改历史提交信息: * git 清除所有untracked file: * 如何将 GitHub 项目导入码云?一步搞定! -* GitHub Actions: ### Git个人常用命令备忘录 @@ -158,6 +157,9 @@ git push origin master:b1 * JitPack: * VersionEye(已废弃): * Semantic Versioning: +* GitHub Actions: +* The missing GitHub star history graph: +* Github Release Assets Download Analysis: * Commit message 和 Change log 编写指南: * Writing a Friendly README: @@ -168,6 +170,8 @@ git push origin master:b1 * Publishing a Website on Bitbucket Cloud: * GitHub Pages + Hexo搭建博客: * Hexo+Next搭建Github个人静态博客: +* jekyll: +* 静态博客网站生成器jekyll、hexo和hugo如何选择?有什么区别? ## Gerrit From d62c83d72b55097d3d9afd3de62daada3ff6f9b1 Mon Sep 17 00:00:00 2001 From: Aloys Date: Fri, 28 Oct 2022 22:33:02 +0800 Subject: [PATCH 103/234] update --- ...16Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" | 3 ++- ...220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index 20bbed9..ef0c7b6 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -19,7 +19,6 @@ * RPM Fusion(RPM Fusion provides software that the Fedora Project or Red Hat doesn't want to ship): * Linux From Scratch: -* ## Linux Distributions @@ -173,6 +172,8 @@ sha1sum/md5sum find "/etc/" -name "*" -type f | xargs wc -l | awk '{print $2" "$1"lines"}' # 打印某一文件夹下的所有文件名及其行数 + mtools # mtools 命令用于显示mtools 支持的指令。mtools 实际上是一个命令集合,是DOS 文件系统的工具程序,它可以模拟许多MS-DOS命令,使用起来非常方便。使用权限是所有用户。 + # set the system's date from a remote host # sudo apt-get install rdate rdate diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 1682ce7..99b6dbe 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -160,6 +160,7 @@ git push origin master:b1 * GitHub Actions: * The missing GitHub star history graph: * Github Release Assets Download Analysis: +* github-statistics: * Commit message 和 Change log 编写指南: * Writing a Friendly README: From 7bbded341a881c0b459a2e10eeae53bb42209762 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sat, 12 Nov 2022 12:34:52 +0800 Subject: [PATCH 104/234] update --- .vscode/settings.json | 3 ++- ...\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 2421e38..295430c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,5 +4,6 @@ "**/.project": true, "**/.settings": true, "**/.factorypath": true - } + }, + "sarif-viewer.connectToGithubCodeScanning": "off" } \ No newline at end of file diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 242a48a..5f97d19 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -12,6 +12,7 @@ * comp.lang.c Frequently Asked Questions: * C 语言常见问题集: * The C++ Standard Library - A Tutorial and Reference: +* Google 开源项目风格指南——中文版(Google Style Guide): ## Libraries @@ -120,6 +121,7 @@ * GCC, the GNU Compiler Collection: * The LLVM Compiler Infrastructure: * clang: a C language family frontend for LLVM: +* 简述 LLVM 与 Clang 及其关系: * GNU GCC手册-1: * gcc的基本用法: diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 99b6dbe..9e3833f 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -120,6 +120,7 @@ * git修改历史提交信息: * git 清除所有untracked file: * 如何将 GitHub 项目导入码云?一步搞定! +* Pull Request 与 Merge Request 的区别: ### Git个人常用命令备忘录 From 8b1ba3252812fa2ad380a5e950c4a80de56fde41 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sat, 12 Nov 2022 12:35:33 +0800 Subject: [PATCH 105/234] update --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 33f5357..aa38d65 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Issue Count](https://codeclimate.com/github/jiangxincode/cnblogs/badges/issue_count.svg)](https://codeclimate.com/github/jiangxincode/cnblogs) [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) -[![Maintenance](https://img.shields.io/maintenance/yes/2021.svg)](https://github.com/jiangxincode/cnblogs) +[![Maintenance](https://img.shields.io/maintenance/yes/2022.svg)](https://github.com/jiangxincode/cnblogs) [![GitHub license](https://img.shields.io/github/license/mashape/apistatus.svg)](http://mit-license.org/) 一些我在平时工作和学习中积累的编程相关的资源。每个程序员都有自己的学习之路,过程中会学习各种各样的网上知识,学习完最好记录下来,每隔一段时间看一看,会有不一样的收获。 From ec997ab8b58825b02227b4398a7a5811760b68bd Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 4 Dec 2022 19:57:50 +0800 Subject: [PATCH 106/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 25 ++++++++++++++++++- ...46\344\271\240\344\271\213\350\267\257.md" | 5 ++++ ...46\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...46\344\271\240\344\271\213\350\267\257.md" | 4 +-- ...46\344\271\240\344\271\213\350\267\257.md" | 4 +-- 5 files changed, 35 insertions(+), 5 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index de8a7b4..b7d6090 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -32,7 +32,30 @@ ## AOSP源码与架构学习 -* AOSP相关网址: +AOSP(Android Open Source Project)项目官网: +如果想了解如何将源码下载到本地进行查看,请直接参考,里面有介绍。 + +AOSP源码占用空间较大,有时不方便通过下载到本地的方式进行查看,可以考虑使用下列网址在线查看: + +* Android Code Search: +* AOSPXRef: +* androidxref: +* Android Cross Reference: +* Android OS: +* Git repositories on android: + +其它曾经关注的AOSP相关网址: + +* Building Android: +* Codenames, Tags, and Build Numbers: +* Graphics: + +Linux源码相关网址: + +* The Linux Kernel Archives: +* Elixir Cross Referencer: +* Linux online: + * 将AOSP源码导入到Android Studio进行查看: * Android构建系统: * Android soong build系统介绍: diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 5f97d19..caa4e2e 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -186,9 +186,14 @@ ## CMake * CMake: +* Mastering CMake: A Cross-Platform Build System: * cmakeconverter: * How to support both vcxproj to cmake on a project? +## XMake + +* XMake: + ## GDB * GDB: The GNU Project Debugger: diff --git "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 31836d6..75c4d84 100644 --- "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -58,6 +58,8 @@ ## sourceinsight * +* Source Insight 4 User Guide: +* 烤鸭的Source Insight学习笔记: ## Understand diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index ef0c7b6..863429f 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -66,11 +66,11 @@ * 多终端管理器tmux使用详解: * Linux系统里如何彻底的清空屏幕?: * 如何在Linux上将HTML页面转化成png图片: -* Ubuntu输入密码登陆后又跳回到登录界面: +* Ubuntu输入密码登陆后又跳回到登录界面: * Linux压缩与解压常用命令: * vimrc,bashrc中rc的含义: UNIX Power Tools (3rd Edition).chm 搜索rc * LNMP安装快速导航(官网教程): -* ubuntu删除旧内核和多余启动项: +* ubuntu删除旧内核和多余启动项: * 各个Linux版本的本地root密码破解方法: * Linux乱码问题解决方案: * Linux 软件看门狗 watchdog: diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 9e3833f..6a5b32d 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -145,7 +145,8 @@ git push origin master:b1 ## Github -* Travis CI: +* GitHub Actions: +* Travis CI(不再针对开源项目提供免费服务): * appveyor: * codeclimate: * coverity: @@ -158,7 +159,6 @@ git push origin master:b1 * JitPack: * VersionEye(已废弃): * Semantic Versioning: -* GitHub Actions: * The missing GitHub star history graph: * Github Release Assets Download Analysis: * github-statistics: From 474afc7eb2a419007a30bd45682f6f45dddb7dab Mon Sep 17 00:00:00 2001 From: Aloys Date: Sat, 17 Dec 2022 13:26:24 +0800 Subject: [PATCH 107/234] update --- "Android\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + 2 files changed, 3 insertions(+) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index b7d6090..62f770d 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -64,6 +64,8 @@ Linux源码相关网址: * Android 新一代编译 toolchain Jack & Jill 简介: * Google 又弃坑了,Jack+Jill vs. javac+dx: * Android R Framework流程分析: +* 深入分析 Android 系统返回手势的实现原理: +* Android 13 返回导航大变更:返回键彻底废弃 + 可预见型返回手势: ## Article diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 6a5b32d..b5af18e 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -162,6 +162,7 @@ git push origin master:b1 * The missing GitHub star history graph: * Github Release Assets Download Analysis: * github-statistics: +* One second to read GitHub code with VS Code: * Commit message 和 Change log 编写指南: * Writing a Friendly README: From 51668947518289ec242c7019c48b0f8d3e29c141 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 1 Jan 2023 14:46:48 +0800 Subject: [PATCH 108/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 22 ++++------- ...46\344\271\240\344\271\213\350\267\257.md" | 2 +- ChooseYourBest.md | 37 +++++++++++++++++++ ...46\344\271\240\344\271\213\350\267\257.md" | 6 --- README.md | 2 +- ...46\344\271\240\344\271\213\350\267\257.md" | 8 ++-- ...46\344\271\240\344\271\213\350\267\257.md" | 3 +- 7 files changed, 54 insertions(+), 26 deletions(-) create mode 100644 ChooseYourBest.md diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 62f770d..1cf02f6 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -50,12 +50,6 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * Codenames, Tags, and Build Numbers: * Graphics: -Linux源码相关网址: - -* The Linux Kernel Archives: -* Elixir Cross Referencer: -* Linux online: - * 将AOSP源码导入到Android Studio进行查看: * Android构建系统: * Android soong build系统介绍: @@ -63,9 +57,17 @@ Linux源码相关网址: * Android OTA升级: * Android 新一代编译 toolchain Jack & Jill 简介: * Google 又弃坑了,Jack+Jill vs. javac+dx: +* Android系统架构-[Android取经之路]: * Android R Framework流程分析: * 深入分析 Android 系统返回手势的实现原理: * Android 13 返回导航大变更:返回键彻底废弃 + 可预见型返回手势: +* 深入源码解析Android中的Handler,Message,MessageQueue,Looper: +* Fragment相关源码解析一——FragmentManagerImpl和BackStackRecord: +* Fragment相关源码解析二——生命周期: +* Fragment相关源码解析三——状态保存与恢复: +* 图解 Android 事件分发机制: +* requestDisallowInterceptTouchEvent() 阻止父层的View截获touch事件(事件处理机制): +* View·InputEvent事件投递源码分析: ## Article @@ -76,7 +78,6 @@ Linux源码相关网址: * Handler内存泄漏详解及其解决方案: * Android中Handler的使用: -* 深入源码解析Android中的Handler,Message,MessageQueue,Looper: * Android异步更新UI的几种方法: * AsyncTaskLoader vs AsyncTask: @@ -84,16 +85,9 @@ Linux源码相关网址: * Fragments:Pro Android 5[精通Android 3] Chapter 8 * Android Fragment的用法(一): -* Fragment相关源码解析一——FragmentManagerImpl和BackStackRecord: -* Fragment相关源码解析二——生命周期: -* Fragment相关源码解析三——状态保存与恢复: * 为什么要用Fragment.setArguments(Bundle bundle)来传递参数: * IllegalStateException: Can not perform this action after onSaveInstanceState with ViewPager: -* 图解 Android 事件分发机制: -* requestDisallowInterceptTouchEvent() 阻止父层的View截获touch事件(事件处理机制): -* View·InputEvent事件投递源码分析: - * Hardware acceleration: * Android应用程序UI硬件加速渲染技术简要介绍和学习计划: * Android 显示系统:SurfaceFlinger详解: diff --git "a/CSharp\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/CSharp\345\255\246\344\271\240\344\271\213\350\267\257.md" index cf73da9..6b8561e 100644 --- "a/CSharp\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/CSharp\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -2,5 +2,5 @@ * Mono: * MonoDevelop: -* SharpDevelop: +* SharpDevelop[Deprecated]: * Emonic: diff --git a/ChooseYourBest.md b/ChooseYourBest.md new file mode 100644 index 0000000..cf233c5 --- /dev/null +++ b/ChooseYourBest.md @@ -0,0 +1,37 @@ +# Choose Your Best + +## Note App + +|知识库/笔记应用|仍在维护|本地笔记|云同步|跨平台|双链|Markdown|付费|开源|备注| +|-|-|-|-|-|-|-|-|-|-| +|[OneNote](https://www.onenote.com/)|是|支持|支持|除Linux外全平台|不支持|不支持,私有格式|软件收费,服务免费|否|| +|[Notion](https://www.notion.so/)|是|不支持|支持|除Linux外全平台|不支持|不支持,私有格式|高级功能收费|否|| +|[Obsidian](https://obsidian.md/)|是|支持|支持|全平台|支持|使用Markdown存储|高级功能收费|否|| +|[Joplin](https://github.com/laurent22/joplin)|是|支持|支持|全平台|不支持|使用Markdown存储|云端服务需要付费|是|| +|[Logsql](https://github.com/logseq/logseq)|是|支持|支持|全平台|支持|使用Markdown存储|免费|是|| +|[RoamResearch](https://roamresearch.com/)|是|不支持|支持|全平台|支持|支持|收费|否|无免费版本| +|[RoamEdit](http://www.roamedit.com/)|是|不支持|支持|Android/iOS|支持|付费支持|高级功能收费|否|| +|[语雀](https://www.yuque.com/)|是|支持|支持|除Linux外全平台|不支持|支持|高级功能收费|否|| +|[印象笔记](https://www.yinxiang.com/)|是|支持|免费版有流量限制|除Linux外全平台|不支持|支持|高级功能收费|否|| +|[有道云笔记](https://note.youdao.com/)|是|支持|支持|全平台|不支持|支持|高级功能收费|否|1.有广告| +|[WizNote](https://www.wiz.cn/zh-cn)|是|支持|支持|全平台|不支持|支持|高级功能收费|否|| +|[wolai](https://www.wolai.com/)|是|不支持|支持|全平台|支持|不支持,私有格式|高级功能收费|否|1.协作功能比较强大| +|[FlowUs(息流)](https://flowus.cn/)|是|不支持|支持|除Linux外全平台|不支持|支持|高级功能收费|否|| +|[思源笔记](https://b3log.org/siyuan/)|是|支持|收费支持|全平台|支持|支持|云端服务需要付费|是|| +|[AppFlowy](https://github.com/AppFlowy-IO/appflowy)|是|支持|不支持|Windows/Mac/Linux|不支持|不支持|免费|是|| +|[Focalboard](https://github.com/mattermost/focalboard)|是|支持|不支持|Windows/Mac/Linux|不支持|不支持|免费|是|| +|[Notability](https://notability.com/)|是|支持|支持|iOS|不支持|不支持|高级功能收费|否|主攻iPad| +|[GoodNotes](https://www.goodnotes.com/)|是|支持|支持|iOS/Mac/Windows|不支持|不支持|高级功能收费|否|主攻iPad| +|[Springpad](http://springpad.com/)|否|||Android|||||| +|[CatchNotes](https://catch.com)|否|||Android|||||| + +## Mind-Mapping App + +| 思维导图软件|仍在维护|平台支持|收费情况|备注| +|---|---|---|---|---| +|[Xmind](https://xmind.cn/)|是|全平台|Pro版收费| | +|[MindManager](https://www.mindmanager.com/cn/)|是|Windows/Mac|收费| | +|[MindMaster](https://www.edrawsoft.cn/mindmaster/)|是|Windows/Mac/Linux|免费导出有水印| | +|[FreeMind](https://freemind.sourceforge.net/)|是|Windows/Mac/Linux|开源免费| | +|[freemind-mmx](https://github.com/jiangxin/freemind-mmx)|否|Windows/Mac/Linux|开源免费| | +|[Freeplane](https://sourceforge.net/projects/freeplane/)|是|Windows/Mac/Linux|开源免费 | diff --git "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 75c4d84..a06f3b7 100644 --- "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -55,12 +55,6 @@ * * -## sourceinsight - -* -* Source Insight 4 User Guide: -* 烤鸭的Source Insight学习笔记: - ## Understand * Understand: diff --git a/README.md b/README.md index aa38d65..4408600 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Issue Count](https://codeclimate.com/github/jiangxincode/cnblogs/badges/issue_count.svg)](https://codeclimate.com/github/jiangxincode/cnblogs) [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) -[![Maintenance](https://img.shields.io/maintenance/yes/2022.svg)](https://github.com/jiangxincode/cnblogs) +[![Maintenance](https://img.shields.io/maintenance/yes/2023.svg)](https://github.com/jiangxincode/cnblogs) [![GitHub license](https://img.shields.io/github/license/mashape/apistatus.svg)](http://mit-license.org/) 一些我在平时工作和学习中积累的编程相关的资源。每个程序员都有自己的学习之路,过程中会学习各种各样的网上知识,学习完最好记录下来,每隔一段时间看一看,会有不一样的收获。 diff --git "a/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" index cfd0ab6..bb41ca8 100644 --- "a/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,8 +1,9 @@ # TeX学习之路 * TeX Live: -* WinEdt: +* WinEdt: +* LaTeX-Workshop: * Texmaker - The universal LaTeX editor: * TeXworks: * TeXstudio: @@ -37,8 +38,9 @@ ## 其它文档 +* An overview of TEX, its children and their friends: * 使用VSCode编写LaTeX: * LaTeX内容总结: -* LaTeX技巧68:TeX/LaTeX 常用宏包简介: -* Linux下Texlive的ctex包中文字体问题: +* TeX/LaTeX 常用宏包简介: +* Linux下Texlive的ctex包中文字体问题: * Latex相关资源汇总: diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index 863429f..5be4aa7 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -10,6 +10,8 @@ * MenuetOS(Menuet isn't based on other operating system nor has it roots within UNIX or the POSIX standards.): * The Linux Kernel Archives: +* Elixir Cross Referencer: +* Linux online: * VGER.KERNEL.ORG(provide email list services for the linux kernel developers): * GNU Operating System: * Linux Professional Institute(LPI is the global certification standard and career support organization for open source professionals): @@ -19,7 +21,6 @@ * RPM Fusion(RPM Fusion provides software that the Fedora Project or Red Hat doesn't want to ship): * Linux From Scratch: - ## Linux Distributions * Ubuntu: From 804b07245fec23fc0352508940500f165a4d3b78 Mon Sep 17 00:00:00 2001 From: Aloys Date: Mon, 2 Jan 2023 23:08:43 +0800 Subject: [PATCH 109/234] update --- ChooseYourBest.md | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/ChooseYourBest.md b/ChooseYourBest.md index cf233c5..b94adde 100644 --- a/ChooseYourBest.md +++ b/ChooseYourBest.md @@ -27,7 +27,7 @@ ## Mind-Mapping App -| 思维导图软件|仍在维护|平台支持|收费情况|备注| +|思维导图软件|仍在维护|平台支持|收费情况|备注| |---|---|---|---|---| |[Xmind](https://xmind.cn/)|是|全平台|Pro版收费| | |[MindManager](https://www.mindmanager.com/cn/)|是|Windows/Mac|收费| | @@ -35,3 +35,35 @@ |[FreeMind](https://freemind.sourceforge.net/)|是|Windows/Mac/Linux|开源免费| | |[freemind-mmx](https://github.com/jiangxin/freemind-mmx)|否|Windows/Mac/Linux|开源免费| | |[Freeplane](https://sourceforge.net/projects/freeplane/)|是|Windows/Mac/Linux|开源免费 | + +## Tools Online + +### 表格转换 + +各种表格样式的互转(Excel/Markdown/LaTeX等) + + + +### 站长工具 + +各种站长常用工具,最常用的是时间戳转换 + + + +### 在线工具合集 + +各种在线工具,最常用的是str与hex的互转 + + + +### ezgif + +在线GIF生成和编辑工具 + + + +### convertio + +各种文件格式转换 + + From 98a757ef5f65465b8d0d62de3fa25ec6455766d3 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 8 Jan 2023 13:05:20 +0800 Subject: [PATCH 110/234] update --- ChooseYourBest.md | 38 ++++++++++++-------------------------- 1 file changed, 12 insertions(+), 26 deletions(-) diff --git a/ChooseYourBest.md b/ChooseYourBest.md index b94adde..f3efb8e 100644 --- a/ChooseYourBest.md +++ b/ChooseYourBest.md @@ -32,38 +32,24 @@ |[Xmind](https://xmind.cn/)|是|全平台|Pro版收费| | |[MindManager](https://www.mindmanager.com/cn/)|是|Windows/Mac|收费| | |[MindMaster](https://www.edrawsoft.cn/mindmaster/)|是|Windows/Mac/Linux|免费导出有水印| | -|[FreeMind](https://freemind.sourceforge.net/)|是|Windows/Mac/Linux|开源免费| | +|[FreeMind](https://freemind.sourceforge.net/)|否|Windows/Mac/Linux|开源免费| | |[freemind-mmx](https://github.com/jiangxin/freemind-mmx)|否|Windows/Mac/Linux|开源免费| | |[Freeplane](https://sourceforge.net/projects/freeplane/)|是|Windows/Mac/Linux|开源免费 | ## Tools Online -### 表格转换 +* 各种表格格式的互转(Excel/Markdown/LaTeX等): +* 各种站长常用工具,最常用的是时间戳转换: +* 各种在线工具,最常用的是str与hex的互转: +* 在线GIF生成和编辑工具: +* 各种文件格式转换: -各种表格样式的互转(Excel/Markdown/LaTeX等) +## 图床与图床工具 - +* PicGo: -### 站长工具 +## Others -各种站长常用工具,最常用的是时间戳转换 - - - -### 在线工具合集 - -各种在线工具,最常用的是str与hex的互转 - - - -### ezgif - -在线GIF生成和编辑工具 - - - -### convertio - -各种文件格式转换 - - +* jTessBoxEditor(jTessBoxEditor is a box editor and trainer for Tesseract OCR): +* MotionPro(VPN工具): +* Altova XMLSpy(Altova XMLSpy is the world's best selling JSON and XML editor for modeling, editing, transforming, and debugging related technologies.): From d0747a883d9bc8399f74885c88a6421aec3176ce Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 19 Feb 2023 11:40:02 +0800 Subject: [PATCH 111/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 3 + ChooseYourBest.md | 67 ++++++++++++++++++- ...46\344\271\240\344\271\213\350\267\257.md" | 4 +- ...46\344\271\240\344\271\213\350\267\257.md" | 7 ++ 4 files changed, 78 insertions(+), 3 deletions(-) create mode 100644 "Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 1cf02f6..9e2c06a 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -127,6 +127,9 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * Android控件--ProgressBar: * 拖放框架: +* 自动填充服务: +* 自动填充服务样例: + * Android核心分析: * Android系统开篇: * 对于android.intent.action.MAIN和android.intent.category.LAUNCHER的理解: diff --git a/ChooseYourBest.md b/ChooseYourBest.md index f3efb8e..a52762a 100644 --- a/ChooseYourBest.md +++ b/ChooseYourBest.md @@ -32,9 +32,32 @@ |[Xmind](https://xmind.cn/)|是|全平台|Pro版收费| | |[MindManager](https://www.mindmanager.com/cn/)|是|Windows/Mac|收费| | |[MindMaster](https://www.edrawsoft.cn/mindmaster/)|是|Windows/Mac/Linux|免费导出有水印| | +|[Freeplane](https://sourceforge.net/projects/freeplane/)|是|Windows/Mac/Linux|开源免费 |FreeMind的比较活跃分支| |[FreeMind](https://freemind.sourceforge.net/)|否|Windows/Mac/Linux|开源免费| | |[freemind-mmx](https://github.com/jiangxin/freemind-mmx)|否|Windows/Mac/Linux|开源免费| | -|[Freeplane](https://sourceforge.net/projects/freeplane/)|是|Windows/Mac/Linux|开源免费 | + +## Office办公软件 + +* WPS Office: +* WPS Office For Linux: +* LibreOffice: +* 永中Office: + +## PDF + +* wondershare(All-in-1 PDF Solution,PDF阅读器,PDF转换到其它文件等): +* PDF-XChange: + +## 浏览器 + +Chrome: +Fixefox: + +IE浏览器(不推荐,现已停止维护) +蚂蚁浏览器(不推荐,曾支持Linux): +遨游浏览器(不推荐,曾支持Linux): +百度浏览器(不推荐,现已停止维护) +QQ浏览器(不推荐,): ## Tools Online @@ -44,12 +67,54 @@ * 在线GIF生成和编辑工具: * 各种文件格式转换: +## 数据恢复工具 + +* DataNumen文件恢复: + ## 图床与图床工具 * PicGo: +## 电脑性能测评 + +* 鲁大师: + +## 地质相关软件 + +* ROCKWORKS(RockWorks是一个综合软件程序,用于为环境、岩土工程、采矿和石油行业创建2D和3D地图、日志和横截面、地质模型、体积报告和一般地质图): + +## 代理 + +* Shadowsocks: + ## Others * jTessBoxEditor(jTessBoxEditor is a box editor and trainer for Tesseract OCR): * MotionPro(VPN工具): * Altova XMLSpy(Altova XMLSpy is the world's best selling JSON and XML editor for modeling, editing, transforming, and debugging related technologies.): + +* HyperSnap: +* Snipaste: +* FastStone Capture: +* ClipMate: +* babun: +* UltraISO: + +* Total Commander: +* Rapidee: +* HostsX: +* WizMouse(WizMouse allows you to scroll the window under the mouse with your mouse wheel even if the that window doesn't have input focus. +Windows 10 already has this functionality built in so WizMouse is most useful if you're using earlier versions of Windows): +* ibat: +* Binary Viewer(Binary Viewer can display file contents in binary, hexadecimal, octal, decimal and text formats): +* NFOPad(NFOPad is a small, fast and flexible text editor and nfo viewer.): + +* PanDownload: + +* WizTools.org RESTClient(RESTful webservices测试工具): +* httpwatch(HTTP sniffer): +* Fiddler(Http sniffer): +* Burp Suite(用于攻击web 应用程序的集成平台): + +* CoolFormat: +* Convert Between Programming Languages(The Most Accurate and Reliable Source Code Converters): diff --git "a/Pascal\344\270\216Delphi\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Pascal\344\270\216Delphi\345\255\246\344\271\240\344\271\213\350\267\257.md" index b96cd17..63cb775 100644 --- "a/Pascal\344\270\216Delphi\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Pascal\344\270\216Delphi\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -4,5 +4,5 @@ * free pascal docs: * Lazarus: * Delphi: -* Pascal (programming language): (programming_language) -* Delphi (programming language): (programming_language) \ No newline at end of file +* Pascal (programming language): +* Delphi (programming language): \ No newline at end of file diff --git "a/Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" new file mode 100644 index 0000000..26a28f5 --- /dev/null +++ "b/Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -0,0 +1,7 @@ +# Windows学习之路 + +## Dos + +* FreeDOS: +* 中国DOS联盟: +* \ No newline at end of file From 0d94d28f6b3ab9b9ebd4929fb9d9350604fdf771 Mon Sep 17 00:00:00 2001 From: Aloys Date: Mon, 27 Feb 2023 00:00:55 +0800 Subject: [PATCH 112/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git "a/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" index 767e286..0915134 100644 --- "a/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,3 +1,63 @@ # 机器学习与人工智能学习之路 +## 专业术语 + +* AIGC即AI Generated Content,是指利用人工智能技术来生成内容,AIGC也被认为是继UGC(User Generated Content)、PGC(Professional Generated Content)之后的新型内容生产方式,AI绘画、AI写作等都属于AIGC的分支。对AIGC来说,2022年被认为是其发展速度惊人的一年。 +* NLP: Natural Language Processing +* NLG: Natural Language Generation + +## 深度学习库 + +* TensorFlow: +* PyTorch: + +## Hugging Face + +Hugging Face的愿景是构建机器学习领域的GitHub。它是一个社区驱动型的平台,拥有大量的资源。开发人员可以在机器学习模型、数据集和 ML 应用程序上不断创建、创新和互相协作。 + + + +* Transformers: (提供了数以千计的预训练模型,支持 100 多种语言的文本分类、信息抽取、问答、摘要、翻译、文本生成。它的宗旨是让最先进的 NLP 技术人人易用): + +## Civitai + +Civitai is a platform that makes it easy for people to share and discover resources for creating AI art. Our users can upload and share custom models that they've trained using their own data, or browse and download models created by other users. These models can then be used with AI art software to generate unique works of art. + + + +## DeepMind + + + +### AlphaGo + +* AlphaGo: + +## OpenAI + + + +### ChatGPT + +* ChatGPT(Chat Generative Pre-trained Transformer): + +## Stability AI + + + +### Stable Diffusion + +Stable Diffusion is a fast, efficient model for creating images from text which understands the relationships between words and images. It can create high-quality images of anything you can imagine in seconds — just type in a text prompt and hit Dream. + +* DreamStudio(DreamStudio is an easy-to-use interface for creating images using the latest version of the Stable Diffusion image generation model.): +* stable-diffusion(免费,但是需要排队): + +## Midjourney + +Midjourney is an independent research lab exploring new mediums of thought and expanding the imaginative powers of the human species. + + + +## 其它 + * 斯坦福大学公开课[机器学习课程]: From 8d7794a62fc57d286040ddb5ce74bd568cfff46c Mon Sep 17 00:00:00 2001 From: Aloys Date: Tue, 21 Mar 2023 00:09:57 +0800 Subject: [PATCH 113/234] update --- ChooseYourBest.md | 15 +++++++++++++++ ...46\344\271\240\344\271\213\350\267\257.md" | 13 ------------- ...46\344\271\240\344\271\213\350\267\257.md" | 19 ++++++++++++++++++- ...53\347\232\204\347\237\245\350\257\206.md" | 11 ----------- 4 files changed, 33 insertions(+), 25 deletions(-) delete mode 100644 "\346\235\202\344\270\203\346\235\202\345\205\253\347\232\204\347\237\245\350\257\206.md" diff --git a/ChooseYourBest.md b/ChooseYourBest.md index a52762a..180dcc2 100644 --- a/ChooseYourBest.md +++ b/ChooseYourBest.md @@ -86,6 +86,21 @@ QQ浏览器(不推荐,): ## 代理 * Shadowsocks: +* clash: +* Clash for Android: +* proxy: +* ProxyTool: +* v2rayNvpn: + +## 编程辅助工具 + +* Copilot: +* Kite(已停止运营): +* codota(已被tabnine替代): +* tabnine: +* Alibaba Cloud AI Coding Assistant(Cosy): +* aixcoder: +* IntelliCode 概述: ## Others diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index 5be4aa7..0ca14ee 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -359,19 +359,6 @@ Tools → Options... → LibreOffice → View → Graphics output (取消钩选U 查看一下是否安装了ibus,可在系统设置中的语言支持中重新把输入法改为ibus -## 主文件夹里的中文文件夹改成英文文件夹 - -打开终端,在终端下输入命令: - - export LANG=en_US - xdg-user-dirs-gtk-update - -这个时候会弹出一个配置界面,提示是否将中文目录切换为英文目录。选中不再提示,确定。系统会删除没有内容的中文目录,而有内容的目录会保持。并创建8个相应的英文目录如下: “Desktop”、“Download”、“Templates”、“Public”、“Documents”、“Music”、“Pictures”、“Videos”。此时,您在“位置”里看到的常用中文目录已经变成英文目录; - -再执行: - - export LANG=zh_CN.UTF-8 - ## Wireshark sudo apt-get install wireshark diff --git "a/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" index 0915134..4601b86 100644 --- "a/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -5,9 +5,11 @@ * AIGC即AI Generated Content,是指利用人工智能技术来生成内容,AIGC也被认为是继UGC(User Generated Content)、PGC(Professional Generated Content)之后的新型内容生产方式,AI绘画、AI写作等都属于AIGC的分支。对AIGC来说,2022年被认为是其发展速度惊人的一年。 * NLP: Natural Language Processing * NLG: Natural Language Generation +* LLM: Large Language Model ## 深度学习库 +* Keras(基于 Python 的深度学习库): * TensorFlow: * PyTorch: @@ -40,6 +42,7 @@ Civitai is a platform that makes it easy for people to share and discover resour ### ChatGPT * ChatGPT(Chat Generative Pre-trained Transformer): +* New Bind: ## Stability AI @@ -58,6 +61,20 @@ Midjourney is an independent research lab exploring new mediums of thought and e +## Notion AI + + + +## imagen + +a text-to-image diffusion model with an unprecedented degree of photorealism and a deep level of language understanding + + + +* Leonardo.Ai: +* playgroundai: + ## 其它 -* 斯坦福大学公开课[机器学习课程]: +Google's Wordcraft: +Prompt-Engineering-Guide: \ No newline at end of file diff --git "a/\346\235\202\344\270\203\346\235\202\345\205\253\347\232\204\347\237\245\350\257\206.md" "b/\346\235\202\344\270\203\346\235\202\345\205\253\347\232\204\347\237\245\350\257\206.md" deleted file mode 100644 index 1d11bb8..0000000 --- "a/\346\235\202\344\270\203\346\235\202\345\205\253\347\232\204\347\237\245\350\257\206.md" +++ /dev/null @@ -1,11 +0,0 @@ -# 杂七杂八的知识 - -## 编程辅助工具 - -* Copilot: -* Kite: -* codota: -* tabnine(codota继承者): -* Alibaba Cloud AI Coding Assistant(Cosy): -* aixcoder: -* IntelliCode 概述: From c50e9299c3452840ab3f14881cddfb2438bd6350 Mon Sep 17 00:00:00 2001 From: Aloys Date: Tue, 21 Mar 2023 23:19:03 +0800 Subject: [PATCH 114/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 31 +++++++++++++++++-- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git "a/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" index 4601b86..3050034 100644 --- "a/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -39,9 +39,8 @@ Civitai is a platform that makes it easy for people to share and discover resour -### ChatGPT - -* ChatGPT(Chat Generative Pre-trained Transformer): +* ChatGPT(通用型聊天机器人): +* DALL-E(文本生成图片): * New Bind: ## Stability AI @@ -73,6 +72,32 @@ a text-to-image diffusion model with an unprecedented degree of photorealism and * Leonardo.Ai: * playgroundai: +* DaVinci: +* OpenRead(AI读论文): +* DeepL(AI翻译): +* Synthesia(文本生成视频) +* jenni(AI写作): +* Copy.ai(AI写作): +* Peppertype.ai(AI写作): +* AI-Writer(AI写作): +* Designs.ai(AI创意设计): +* khroma(AI配色): +* AIVA(音乐创作): +* fireflies(文本转语音): +* repurpose(自动化社媒内容): +* livechat(多功能聊天机器人): + +## AI编程辅助 + +* Copilot: +* codeium: +* Cursor: +* Kite(已停止运营): +* codota(已被tabnine替代): +* tabnine: +* Alibaba Cloud AI Coding Assistant(Cosy): +* aixcoder: +* IntelliCode 概述: ## 其它 From eb93c5b417c5a457d292e79c52d6b66fd2e440c0 Mon Sep 17 00:00:00 2001 From: Aloys Date: Wed, 22 Mar 2023 22:15:01 +0800 Subject: [PATCH 115/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 71 +++++-------------- 1 file changed, 19 insertions(+), 52 deletions(-) diff --git "a/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" index 3050034..8f79697 100644 --- "a/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -13,69 +13,34 @@ * TensorFlow: * PyTorch: -## Hugging Face - -Hugging Face的愿景是构建机器学习领域的GitHub。它是一个社区驱动型的平台,拥有大量的资源。开发人员可以在机器学习模型、数据集和 ML 应用程序上不断创建、创新和互相协作。 - - - +* Hugging Face: * Transformers: (提供了数以千计的预训练模型,支持 100 多种语言的文本分类、信息抽取、问答、摘要、翻译、文本生成。它的宗旨是让最先进的 NLP 技术人人易用): -## Civitai - -Civitai is a platform that makes it easy for people to share and discover resources for creating AI art. Our users can upload and share custom models that they've trained using their own data, or browse and download models created by other users. These models can then be used with AI art software to generate unique works of art. - - - -## DeepMind - - - -### AlphaGo - -* AlphaGo: - -## OpenAI - - - -* ChatGPT(通用型聊天机器人): -* DALL-E(文本生成图片): -* New Bind: - -## Stability AI +* Civitai: - +* DeepMind: +* AlphaGo(DeepMind): -### Stable Diffusion +* OpenAI: +* ChatGPT(通用型聊天机器人)(OpenAI): +* DALL-E(文本生成图片)(OpenAI): -Stable Diffusion is a fast, efficient model for creating images from text which understands the relationships between words and images. It can create high-quality images of anything you can imagine in seconds — just type in a text prompt and hit Dream. +* New Bing: +* Stability AI: * DreamStudio(DreamStudio is an easy-to-use interface for creating images using the latest version of the Stable Diffusion image generation model.): * stable-diffusion(免费,但是需要排队): -## Midjourney - -Midjourney is an independent research lab exploring new mediums of thought and expanding the imaginative powers of the human species. - - - -## Notion AI - - - -## imagen - -a text-to-image diffusion model with an unprecedented degree of photorealism and a deep level of language understanding - - - -* Leonardo.Ai: +* Midjourney(文本生成图片): +* firefly(文本生成图片): +* imagen(文本生成图片): +* Leonardo.Ai(文本生成图片): * playgroundai: * DaVinci: * OpenRead(AI读论文): * DeepL(AI翻译): * Synthesia(文本生成视频) +* Notion AI(AI写作): * jenni(AI写作): * Copy.ai(AI写作): * Peppertype.ai(AI写作): @@ -89,15 +54,17 @@ a text-to-image diffusion model with an unprecedented degree of photorealism and ## AI编程辅助 -* Copilot: -* codeium: * Cursor: +* Codeium: + +* IntelliCode: * Kite(已停止运营): * codota(已被tabnine替代): * tabnine: + +* Copilot: * Alibaba Cloud AI Coding Assistant(Cosy): * aixcoder: -* IntelliCode 概述: ## 其它 From b7c049dd73ea09901b94fa7ed5bb9a4196dc6e0e Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 26 Mar 2023 14:04:32 +0800 Subject: [PATCH 116/234] update --- ChooseYourBest.md | 10 ---------- ...46\344\271\240\344\271\213\350\267\257.md" | 19 +++++++++++++++++-- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/ChooseYourBest.md b/ChooseYourBest.md index 180dcc2..b2228a9 100644 --- a/ChooseYourBest.md +++ b/ChooseYourBest.md @@ -92,16 +92,6 @@ QQ浏览器(不推荐,): * ProxyTool: * v2rayNvpn: -## 编程辅助工具 - -* Copilot: -* Kite(已停止运营): -* codota(已被tabnine替代): -* tabnine: -* Alibaba Cloud AI Coding Assistant(Cosy): -* aixcoder: -* IntelliCode 概述: - ## Others * jTessBoxEditor(jTessBoxEditor is a box editor and trainer for Tesseract OCR): diff --git "a/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" index 8f79697..278f08d 100644 --- "a/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -13,9 +13,15 @@ * TensorFlow: * PyTorch: +## 基于大数据模型的一些产品与网站 + +* Awesome ChatGPT Prompts: + * Hugging Face: * Transformers: (提供了数以千计的预训练模型,支持 100 多种语言的文本分类、信息抽取、问答、摘要、翻译、文本生成。它的宗旨是让最先进的 NLP 技术人人易用): +* ArtHub: + * Civitai: * DeepMind: @@ -35,6 +41,7 @@ * firefly(文本生成图片): * imagen(文本生成图片): * Leonardo.Ai(文本生成图片): +* ClipDrop(文本生成图片): * playgroundai: * DaVinci: * OpenRead(AI读论文): @@ -47,10 +54,14 @@ * AI-Writer(AI写作): * Designs.ai(AI创意设计): * khroma(AI配色): +* AI Colors: * AIVA(音乐创作): * fireflies(文本转语音): * repurpose(自动化社媒内容): * livechat(多功能聊天机器人): +* gerev.ai(工作区搜索引擎): +* 模型对比: +* PDF解析: ## AI编程辅助 @@ -63,10 +74,14 @@ * tabnine: * Copilot: +* GitHub Copilot chat: +* Github Next: * Alibaba Cloud AI Coding Assistant(Cosy): * aixcoder: +* CodeGeex: +* Bito: ## 其它 -Google's Wordcraft: -Prompt-Engineering-Guide: \ No newline at end of file +* Google's Wordcraft: +* Prompt-Engineering-Guide: From bbfacb2bf17feed8725cac8b523140670135b87e Mon Sep 17 00:00:00 2001 From: Aloys Date: Wed, 5 Apr 2023 17:44:12 +0800 Subject: [PATCH 117/234] update --- ...55\246\344\271\240\344\271\213\350\267\257.md" | 15 +++++++-------- ChooseYourBest.md | 11 +++++++++++ ...55\246\344\271\240\344\271\213\350\267\257.md" | 1 + ...55\246\344\271\240\344\271\213\350\267\257.md" | 1 + 4 files changed, 20 insertions(+), 8 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 9e2c06a..f8e9eb9 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -2,6 +2,13 @@ * +* Data and file storage overview: +* Managing the System UI: +* Create and manage notification channels: +* Support different screen sizes: +* Optimize for Doze and App Standby: +* Enhance graphics with wide color content: + * NDK: * Intent: @@ -13,9 +20,6 @@ * Android Jetpack: * AndroidX 概览: -* Managing the System UI: -* Create and Manage Notification Channels: - * App Shortcuts: * SDK版本关系: * 支持库: @@ -98,7 +102,6 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * Android | 打印堆栈: -* 支持不同的屏幕尺寸: * 多屏幕多分辨率的支持: * Android开发中dip,dpi,density,px等详解: * 一种非常好用的Android屏幕适配: @@ -187,10 +190,6 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * 了解一下,Android 10中的APEX: * Android-APEX化之后如何替换对应的文件: -* 针对低电耗模式和应用待机模式进行优化: - -* 使用广色域内容增强图形效果: - * 安卓应用在各大应用市场上架方法整理: * 从圆角到圆角: * J 的艺术,R 的艺术: diff --git a/ChooseYourBest.md b/ChooseYourBest.md index b2228a9..0943ce2 100644 --- a/ChooseYourBest.md +++ b/ChooseYourBest.md @@ -88,10 +88,21 @@ QQ浏览器(不推荐,): * Shadowsocks: * clash: * Clash for Android: +* Clash for Windows: +* Clash for Windows文档: * proxy: * ProxyTool: * v2rayNvpn: +## 密码管理工具 + +* KeePass: +* keepass2android: +* 1password: +* lastpass: +* authy: +* Microsoft Authenticator: + ## Others * jTessBoxEditor(jTessBoxEditor is a box editor and trainer for Tesseract OCR): diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 6f0a3a1..49af283 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -192,6 +192,7 @@ * 让浏览器不再显示 https 页面中的 http 请求警报: * 客户端的IP地址伪造、CDN、反向代理、获取的那些事儿: * Threat Modeling: Uncover Security Design Flaws Using The STRIDE Approach: +* 双因素认证(2FA)教程: ## Java EE diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index b5af18e..8528cd9 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -145,6 +145,7 @@ git push origin master:b1 ## Github +* Github代理: * GitHub Actions: * Travis CI(不再针对开源项目提供免费服务): * appveyor: From 58841cc87c86118f7ce0438617ec5ad6e5d64483 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 9 Apr 2023 22:44:04 +0800 Subject: [PATCH 118/234] update --- ChooseYourBest.md | 26 ++++++++++++++----- ...46\344\271\240\344\271\213\350\267\257.md" | 1 + ...46\344\271\240\344\271\213\350\267\257.md" | 8 +++++- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/ChooseYourBest.md b/ChooseYourBest.md index 0943ce2..bd87a4c 100644 --- a/ChooseYourBest.md +++ b/ChooseYourBest.md @@ -42,6 +42,7 @@ * WPS Office For Linux: * LibreOffice: * 永中Office: +* Prezi: ## PDF @@ -50,14 +51,14 @@ ## 浏览器 -Chrome: -Fixefox: +* Chrome: +* Fixefox: -IE浏览器(不推荐,现已停止维护) -蚂蚁浏览器(不推荐,曾支持Linux): -遨游浏览器(不推荐,曾支持Linux): -百度浏览器(不推荐,现已停止维护) -QQ浏览器(不推荐,): +* IE浏览器(不推荐,现已停止维护) +* 蚂蚁浏览器(不推荐,曾支持Linux): +* 遨游浏览器(不推荐,曾支持Linux): +* 百度浏览器(不推荐,现已停止维护) +* QQ浏览器(不推荐,): ## Tools Online @@ -66,6 +67,7 @@ QQ浏览器(不推荐,): * 各种在线工具,最常用的是str与hex的互转: * 在线GIF生成和编辑工具: * 各种文件格式转换: +* File conversion: ## 数据恢复工具 @@ -107,11 +109,14 @@ QQ浏览器(不推荐,): * jTessBoxEditor(jTessBoxEditor is a box editor and trainer for Tesseract OCR): * MotionPro(VPN工具): +* realvnc(安全远程连接): * Altova XMLSpy(Altova XMLSpy is the world's best selling JSON and XML editor for modeling, editing, transforming, and debugging related technologies.): * HyperSnap: * Snipaste: * FastStone Capture: +* OBS Studio: +* ScreenToGif: * ClipMate: * babun: * UltraISO: @@ -126,6 +131,7 @@ Windows 10 already has this functionality built in so WizMouse is most useful if * NFOPad(NFOPad is a small, fast and flexible text editor and nfo viewer.): * PanDownload: +* amule: * WizTools.org RESTClient(RESTful webservices测试工具): * httpwatch(HTTP sniffer): @@ -134,3 +140,9 @@ Windows 10 already has this functionality built in so WizMouse is most useful if * CoolFormat: * Convert Between Programming Languages(The Most Accurate and Reliable Source Code Converters): + +* inkscape: +* OpenShot(Video Editor): +* GIMP(Image Editor): +* Eagle(设计师图片管理工具): +* blender(3D CG): diff --git "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" index a06f3b7..ee0540c 100644 --- "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -85,3 +85,4 @@ * kdevelop: * xcode: * QtCreator: +* SlickEdit: diff --git "a/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" index 278f08d..d2e9386 100644 --- "a/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -42,6 +42,8 @@ * imagen(文本生成图片): * Leonardo.Ai(文本生成图片): * ClipDrop(文本生成图片): +* Lama Cleaner(文本修图): +* Opus.ai(文本创建3D): * playgroundai: * DaVinci: * OpenRead(AI读论文): @@ -60,8 +62,12 @@ * repurpose(自动化社媒内容): * livechat(多功能聊天机器人): * gerev.ai(工作区搜索引擎): -* 模型对比: * PDF解析: +* BookAI(Chat with any book using AI): +* regex.ai: +* AI Code Translator: +* 模型对比: +* ChatDoctor: ## AI编程辅助 From 09c84975003f50b290aae33051f838f2099efd61 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 16 Apr 2023 21:32:57 +0800 Subject: [PATCH 119/234] update --- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 12 ++++++------ ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 1 - 2 files changed, 6 insertions(+), 7 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index f8e9eb9..cde745b 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -78,6 +78,7 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * Android 编程与兼容性问题: 《Android Programming The Big Nerd Ranch Guide 3rd[Android编程权威指南(第3版)》 6.2 7.8 7.9 * lntentfilter的匹配规则: 《Android开发艺术探索》 1.3 * .nomedia: 《解析 Google Android SDK-智能手机开发范例手册》5.3 +* Android:MediaSession框架介绍: * StrictMode: 《Android核心原理与系统应用高效开发》 9.2.3 * Handler内存泄漏详解及其解决方案: @@ -168,8 +169,6 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * 配置方法数超过 64K 的应用: * NDK编译脚本:Android.mk or CMakeLists.txt: * 升级ndk报错:No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android: -* Contacts Provider: -* Android:MediaSession框架介绍: * What is the difference between system apps and privileged apps on Android? * Android加密之文件级加密: @@ -182,10 +181,11 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * Android DEX安全攻防战: * Android Dex文件格式(一): * 目前最全面的Android安全工具清单: -* android存储访问框架Storage Access Framework: -* 存储访问框架android Storage Access Framework(SAF): -* Android 7.0 行为变更 通过FileProvider在应用间共享文件吧: -* FileProvider文件分享: +* Open files using storage access framework: +* READ_EXTERNAL_STORAGE: +* FileProvider: +* Contacts Provider: +* 请求运行时权限: * 了解一下,Android 10中的APEX: * Android-APEX化之后如何替换对应的文件: diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index 0ca14ee..1dc8ded 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -134,7 +134,6 @@ * 新立得(Synaptic): * GLX-Dock: * vncview: -* gimp: * PDFtk: * Master PDF Editor for Linux: * Okular: From be6c7d2a68cef19fd14e5299349b5e998c09dbf7 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sat, 22 Apr 2023 23:21:31 +0800 Subject: [PATCH 120/234] update --- ...20\206\345\255\246\344\271\240\344\271\213\350\267\257.md" | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 8528cd9..a151b94 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -146,12 +146,14 @@ git push origin master:b1 ## Github * Github代理: -* GitHub Actions: +* GitHub Actions: +* Automatic token authentication: * Travis CI(不再针对开源项目提供免费服务): * appveyor: * codeclimate: * coverity: * COVERALLS: +* sonarcloud: * GITTER: * Waffle: * choosealicense: From b73cd06b8c6843e6e1bb37bca89fbe90c6770ef3 Mon Sep 17 00:00:00 2001 From: Aloys Date: Wed, 3 May 2023 13:18:51 +0800 Subject: [PATCH 121/234] update --- README.md | 1 - ...206\345\255\246\344\271\240\344\271\213\350\267\257.md" | 7 ++++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4408600..0ff5a77 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,5 @@ # cnblogs -[![Issue Count](https://codeclimate.com/github/jiangxincode/cnblogs/badges/issue_count.svg)](https://codeclimate.com/github/jiangxincode/cnblogs) [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) [![Maintenance](https://img.shields.io/maintenance/yes/2023.svg)](https://github.com/jiangxincode/cnblogs) [![GitHub license](https://img.shields.io/github/license/mashape/apistatus.svg)](http://mit-license.org/) diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index a151b94..c545907 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -148,15 +148,16 @@ git push origin master:b1 * Github代理: * GitHub Actions: * Automatic token authentication: -* Travis CI(不再针对开源项目提供免费服务): -* appveyor: +* Travis CI(不再针对开源项目提供免费服务,使用GitHub Actions代替): +* appveyor(使用GitHub Actions代替): * codeclimate: * coverity: * COVERALLS: * sonarcloud: -* GITTER: +* GITTER: * Waffle: * choosealicense: +* CONTRIBUTOR CODE OF CONDUCT: * codedocs: * shields: * JitPack: From f81be21e1dd244bc4701fffc121227eb0f2bcb18 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 21 May 2023 23:15:48 +0800 Subject: [PATCH 122/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 43 +++++++------------ ...46\344\271\240\344\271\213\350\267\257.md" | 31 +++++++------ ...46\344\271\240\344\271\213\350\267\257.md" | 1 + ...46\344\271\240\344\271\213\350\267\257.md" | 2 + 4 files changed, 38 insertions(+), 39 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index cde745b..797119e 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -145,7 +145,6 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * Android for work总结(下): * android获取内置和外置SD卡路径: * Android之Adapter用法总结: -* Android 使用android-support-multidex解决Dex超出方法数的限制问题,让你的应用不再爆棚: * Android命令行/c语言/java设置获取系统属性的方法: * Implementation vs API dependency: * android怎样调用@hide和internal API: @@ -166,7 +165,8 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * Why do most fields (class members) in Android tutorial start with `m`? * Android多语言国际化适配(兼容7.0): * android程序自动化生成apk的过程: -* 配置方法数超过 64K 的应用: +* Enable multidex for apps with over 64K methods: +* dex-method-counts: * NDK编译脚本:Android.mk or CMakeLists.txt: * 升级ndk报错:No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android: @@ -288,7 +288,6 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * fastlane screenshots for Android: * Android 应用开发调试利器——开发助手,数十倍效率提升: * 奇兔刷机: -* dex-method-counts: * dexcount-gradle-plugin: * leakcanary: * Display and control your Android device: @@ -334,6 +333,7 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * Android adb bugreport工具分析和使用: * battery-historian: * ChkBugReport: +* loganalysis(Android日志分析工具): ## Android模拟器 @@ -342,11 +342,6 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * genymotion-idea-plugin: * 夜神模拟器: -## Firebase - -* Firebase: -* Plugin Fierbase Services was not installed:Cannot download...: - ## ADB * awesome-adb: @@ -365,11 +360,15 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * Android程序开发初级教程(二): * Android程序开发初级教程(三): -## Bug跟踪 +## App Development Platform -* 网易云捕: -* bugly: -* BugTags: +* Firebase: +* Plugin Fierbase Services was not installed:Cannot download...: +* Does Firebase Work in China?: +* Supabase: +* Parse: +* 友盟: +* bugly: * 蒲公英: ## XMPP @@ -379,13 +378,8 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * rfc3920: * rfc3920翻译: -* - +* Open Realtime: * smack: -* smack source: -* asmack: -* smack4-doc: -* smack4-doc-zh: * 环信即时通讯云: * Android之基于XMPP协议即时通讯软件(一): @@ -407,15 +401,10 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 ## Player +* Universal Android Music Player: +* 百度音视频处理: * ApolloMod: * android-visualizer: - -## Vitamio - -* 4.2.2版本之前的源码: -* 5.0.0版本之后的源码: +* Vitamio 4.2.2版本之前的源码: +* Vitamio 5.0.0版本之后的源码: * 使用Vitamio打造自己的Android万能播放器: - -## 百度媒体云 - -* diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 49af283..07b18be 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -446,15 +446,6 @@ The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks (e.g. java.util.logging, logback, log4j) allowing the end user to plug in the desired logging framework at deployment time. * 官方网址: -* 为什么要使用SLF4J而不是Log4J: - -## Log4j - -* -* -* jdk-logging、log4j、logback日志介绍及原理: -* 热切换Log4j级别配置: -* log4j:ERROR Attempted to append to closed appender named: ## Logback @@ -465,6 +456,17 @@ * Java程序员修炼之道 之 Logging(2/3) - 怎么写Log: * Java程序员修炼之道 之 Logging(3/3) - 怎么分析Log: +## Log4j + +* +* +* jdk-logging、log4j、logback日志介绍及原理: +* jcl 与 jul、log4j1、log4j2、logback 的集成原理: +* slf4j 与 jul、log4j1、log4j2、logback 的集成原理: +* slf4j、jcl、jul、log4j1、log4j2、logback 大总结: +* 热切换Log4j级别配置: +* log4j:ERROR Attempted to append to closed appender named: + ## Log4E Log4E is an Eclipse Plugin which helps you to use your logger easily in Java Projects.The Plugin Log4E is not bound to any special logging framework. Thus you might be able to adapt to your own logger by defining your own templates using the preferences. It has active support for Log4j, Log4j 2, SLF4J, Commons Logging and JDK 1.4 logging. @@ -874,6 +876,7 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * 官网: * json中文网: +* JSON in Java [package org.json]: * Json-lib: * fastjson: * Eclipse Json Editor Plugin: @@ -1060,10 +1063,10 @@ The yFiles diagramming software components are extensive class libraries that en * Apache PDFBox - A Java PDF Library: * JExcelApi(长时间不更新): -* jacob: +* jacob(Java/COM Bridge): * Java操作Microsoft Word之jacob: * 浅析JACOB: -* JACOB的语法: +* JACOB的语法: ## MVEL(Drools) @@ -1259,4 +1262,8 @@ The yFiles diagramming software components are extensive class libraries that en ## Markdown转换 -* flexmark-java: \ No newline at end of file +* flexmark-java: + +## Tess4j + +* Tess4j: \ No newline at end of file diff --git "a/OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" index 2129b40..17f191f 100644 --- "a/OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -25,6 +25,7 @@ * Android中利用Camera与Matrix实现3D效果详解: * 3D图形:矩阵、欧拉角、四元数与方位的故事: * 四元数与欧拉角(RPY角)的相互转换: +* 3D代码实现仓库: * OpenGL ES 2.0 specifiying position attribute vec3 or vec4: * Why not vec3 for OpenGL ES 2.0 gl_Position? diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index c545907..fa2f86d 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -148,10 +148,12 @@ git push origin master:b1 * Github代理: * GitHub Actions: * Automatic token authentication: +* Automating Dependabot with GitHub Actions-accessing-secrets: * Travis CI(不再针对开源项目提供免费服务,使用GitHub Actions代替): * appveyor(使用GitHub Actions代替): * codeclimate: * coverity: +* gitguardian: * COVERALLS: * sonarcloud: * GITTER: From d8e0db0df2d6ee2298c95a3ff5c8e09bf6ab2e9f Mon Sep 17 00:00:00 2001 From: Aloys Date: Sat, 17 Jun 2023 19:46:32 +0800 Subject: [PATCH 123/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 07b18be..8a2aafd 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -206,8 +206,7 @@ ## Struts * 官网: -* 源码:deprecated: -* 源码:now: +* 源码: * OGNL: @@ -346,6 +345,23 @@ * Spket IDE(提供Eclipse的插件): * Aptana(提供Eclipse插件): +## Eclipse插件开发 + +* Eclipse Plug-in & OSGI: +* Eclipse插件开发打包为Update Site: +* 插件开发总览: +* Tycho - Building Eclipse plug-ins with maven: +* +* 使用Tycho来构建你的RCP程序: +* Dependencies from pom.xml not considered by Eclipse in Tycho Project: + +## OSGI + +* OSGI: +* Java 9, OSGi and the Future of Modularity (Part 1): +* Java 9, OSGi and the Future of Modularity (Part 2): +* OSGi and C++: + ## Tomcat * Apache Tomcat 8 Configuration Reference: @@ -1110,16 +1126,6 @@ The yFiles diagramming software components are extensive class libraries that en * The Tomcat JDBC Connection Pool: * Apache Commons Pool: -## Eclipse插件开发 - -* Eclipse Plug-in & OSGI: -* Eclipse插件开发打包为Update Site: -* 插件开发总览: -* Tycho - Building Eclipse plug-ins with maven: -* -* 使用Tycho来构建你的RCP程序: -* Dependencies from pom.xml not considered by Eclipse in Tycho Project: - ## Hadoop * From 4f878a48520f7ed76304a5573b500558da5b8223 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 9 Jul 2023 23:52:01 +0800 Subject: [PATCH 124/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 1 + ChooseYourBest.md | 12 +- ...46\344\271\240\344\271\213\350\267\257.md" | 186 +++++++----------- ...46\344\271\240\344\271\213\350\267\257.md" | 1 - ...46\344\271\240\344\271\213\350\267\257.md" | 68 +++++++ ...46\344\271\240\344\271\213\350\267\257.md" | 1 + 6 files changed, 148 insertions(+), 121 deletions(-) create mode 100644 "\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 797119e..0b456d0 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -280,6 +280,7 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * hugo: * 极光推送: * 移动服务SDK: +* Retrofit(A type-safe HTTP client for Android and Java): ## Tools diff --git a/ChooseYourBest.md b/ChooseYourBest.md index bd87a4c..7cd17d5 100644 --- a/ChooseYourBest.md +++ b/ChooseYourBest.md @@ -107,11 +107,20 @@ ## Others -* jTessBoxEditor(jTessBoxEditor is a box editor and trainer for Tesseract OCR): +* tesseract: +* Tesseract User Manual: +* jTessBoxEditor: +* Tess4J: +* VietOCR: + * MotionPro(VPN工具): * realvnc(安全远程连接): * Altova XMLSpy(Altova XMLSpy is the world's best selling JSON and XML editor for modeling, editing, transforming, and debugging related technologies.): +* potplayer(新版本不支持swf格式): +* QQ影音(播放WMV有时没有声音): +* VLC media player: + * HyperSnap: * Snipaste: * FastStone Capture: @@ -133,7 +142,6 @@ Windows 10 already has this functionality built in so WizMouse is most useful if * PanDownload: * amule: -* WizTools.org RESTClient(RESTful webservices测试工具): * httpwatch(HTTP sniffer): * Fiddler(Http sniffer): * Burp Suite(用于攻击web 应用程序的集成平台): diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 8a2aafd..dbffa42 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -13,6 +13,14 @@ * 如何重构“箭头型”代码: * 软件项目“免坑”指南: +* 当前各种设计模式主要来源: + * Design Patterns_Elements of Reusable Object-Oriented Software + * Patterns of Enterprise Application Architecture + * + +* 速查: + +* Java实现单例模式的9种方法: * 面向对象设计的SOLID原则: Agile Software Development Principles Patterns and Practices[敏捷软件开发:原则、模式与实践] * 合成/聚合复用原则+迪米特法则(最小知识原则): Java与模式 * 浅谈命令查询职责分离(CQRS)模式: @@ -45,7 +53,6 @@ * Java直接(堆外)内存使用详解: * Buffer: * Java引用总结--StrongReference、SoftReference、WeakReference、PhantomReference: -* Java实现单例模式的9种方法: * 5种必会的Java异步调用转同步的方法你会几种: * java 偏向锁、轻量级锁及重量级锁synchronized原理: * Java中Volatile关键字详解: @@ -124,8 +131,6 @@ * Developing a Service Provider using Java API(Service Provider Interface): * 驱动模块和桩模块的概念和区别: * astyle 使用说明: -* UML关系(泛化,实现,依赖,关联(聚合,组合)): -* 解析UML箭头、线条代表的意义: * 转一个J2EE开发时的包命名规则,养成良好的开发习惯: * Eclipse 开发WEB项目所遇问题 WebContent WebRoot: * Java调用动态库方法说明: @@ -203,22 +208,6 @@ * Oracle Java SE Support Roadmap: * Oracle Java SE Licensing FAQ: -## Struts - -* 官网: -* 源码: - -* OGNL: - -* freemarker: -* Velocity: - -* Struts 2.0系列: -* Struts2中的零配置与CoC(Convention over Configration): -* struts2采用convention-plugin实现零配置: -* struts2关于A web application created a ThreadLocal with key of type 异常解决办法: -* 修改Struts2的struts.xml配置文件位置: - ## Spring * 官网: @@ -251,8 +240,33 @@ * hibernator: +## Struts(漏洞多,发展慢,后续使用Spring MVC) + +* 官网: +* 源码: + +* Struts 2.0系列: +* Struts2中的零配置与CoC(Convention over Configration): +* struts2采用convention-plugin实现零配置: +* struts2关于A web application created a ThreadLocal with key of type 异常解决办法: +* 修改Struts2的struts.xml配置文件位置: + +## 模板引擎与表达式语言 + +* template engine: +* freemarker: +* Velocity: +* EL: +* OGNL(Object Graph Navigation Library): +* MVEL: +* MVEL: + ## WebService +* Restlet: +* Apache CXF: +* axis2: +* Jersey: * Style of WebService: REST vs. SOAP: * RESTful API 编写指南: * principles of good restful api design(中文): @@ -265,17 +279,14 @@ * java 利用JAX-RS快速开发RESTful 服务(以JBoss为容器): * RESTful API 利器 Swagger: * 改写Restful2ActionMapper让Struts2支持REST风格的URL映射: -* Jersey: * Build a RESTful Web service using Jersey and Apache Tomcat: -* Restlet: -* Apache CXF: -* axis2: * Axis2创建WebService实例: * Axis2中使用模块: * SOAPUI: +* WizTools.org RESTClient(RESTful webservices测试工具): * Automating SoapUI using Groovy – A Walk Through: * tcpmon: -* JMeter: +* JMeter: * JAX-WS error on WSDL file: “Error resolving component 's:schema'”: * JAX-WS Maven Plugin: @@ -301,7 +312,6 @@ * Eclipse插件: * Eclipse相关问题: * Top 10 Java Debugging Tips with Eclipse: -* JSP EL (Expression Language) causing problems in Eclipse: * Linux下安装最新的Eclipse: * eclipse调试的方法和技巧: * eclipse调试java程序的九个技巧: @@ -315,16 +325,9 @@ * Eclipse 远程开发: * How to set the Eclipse date variable format? -## Eclipse根据java代码生成UML图 +## Eclipse插件 -* Eclipse UML插件AmaterasUML的配置及使用(推荐): -* EclipseHTMLEditor/AmasterasUML/AmaterasERD: * GEF: -* Green UML: -* Eclipse UML Generators: -* ModelGoon UML4Java: -* agile(收费): - * Web Tools Platform: * AnyEdit: * YEdit: @@ -355,6 +358,17 @@ * 使用Tycho来构建你的RCP程序: * Dependencies from pom.xml not considered by Eclipse in Tycho Project: +## UML + +* AmaterasUML: +* Green UML: +* ModelGoon UML4Java: +* AgileJ(AgileJ StructureViews is a plugin for Eclipse which generates class diagrams reverse engineered from Java source code.): +* StarUML: +* Astah(JUDE): +* UML关系(泛化,实现,依赖,关联(聚合,组合)): +* 解析UML箭头、线条代表的意义: + ## OSGI * OSGI: @@ -448,14 +462,13 @@ TestNG is a testing framework inspired from JUnit and NUnit but introducing some new functionalities that make it more powerful and easier to use. -* 项目地址: -* 下载及安装说明: +* 项目地址: -## ReportNG +## ReportNG(已停止维护) ReportNG is a simple HTML reporting plug-in for the TestNG unit-testing framework. It is intended as a replacement for the default TestNG HTML report. The default report is comprehensive but is not so easy to understand at-a-glance. ReportNG provides a simple, colour-coded view of the test results. -* 项目地址: +* 项目地址: ## SLF4J @@ -691,7 +704,6 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion ## Ant * -* * Ivy(Apache Ant项目的一个子项目,一个可传递的依赖项管理器): * Apache IvyDE(Eclipse plugin which integrates Apache Ivy's dependency management into Eclipse): * Eclipse中Ant的配置与测试 转: @@ -912,12 +924,11 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * Java Web开发详解[XML XSLT Servlet JSP深入剖析实例应用] * What is difference between XML Schema and DTD? -* JDOM: * JDOM: -* Dom4j: -* xml-commons: -* XML Pull Parsing: -* Apache Santuario(xmlsec): +* Dom4j: +* xml-commons: +* XML Pull Parsing: +* Apache Santuario(xmlsec): * 使用 StAX 解析 XML,第 1 部分: Streaming API for XML (StAX) 简介: * 使用 StAX 解析 XML,第 2 部分: 拉式解析和事件: * 使用 StAX 解析 XML,第 3 部分: 使用定制事件和编写 XML: @@ -1084,15 +1095,6 @@ The yFiles diagramming software components are extensive class libraries that en * 浅析JACOB: * JACOB的语法: -## MVEL(Drools) - -* -* - -## JSP EL - -* - ## Aurora * @@ -1126,66 +1128,6 @@ The yFiles diagramming software components are extensive class libraries that en * The Tomcat JDBC Connection Pool: * Apache Commons Pool: -## Hadoop - -* -* -* HDFS Users Guide: - -* Hadoop 1.0.0集群安装: -* 一步步教你Hadoop多节点集群安装配置: -* Eclipse下搭建Hadoop2.4.0开发环境: -* 使用eclipse连接hadoop失败情况: -* Windows平台下安装Eclipse插件,开发Hadoop应用: -* Hadoop JobHistory: - -* 国内第一篇详细讲解hadoop2的automatic HA+Federation+Yarn配置的教程: -* 如何编译Apache Hadoop2.2.0源代码: -* ZooKeeper的分布模式安装: -* Hadoop HDFS和KFS (CloudStore)的比较: -* performance-benchmark-cgl-mapreduce-mpi-and-hadoop: -* 汇总运行在Hadoop YARN上的开源系统: -* 利用Hadoop实现超大矩阵相乘之我见(一): -* 使用mapreduce计算大矩阵相乘: - -* Hadoop Journal Node 作用: -* ERROR org.apache.hadoop.yarn.server.resourcemanager.ResourceManager: RECEIVED SIGNAL 15: SIGTERM: -* Hadoop在master查看live nodes为0解决方案: -* VMware虚拟机中Hadoop服务的端口无法访问的问题: - -* 虾皮工作室(讲解大数据相关知识,如《细细品味Hadoop系列文章》): -* [Hadoop系列]Hadoop的MapReduce中多文件输出: -* Hadoop源码分析——TaskAttemptContext类和TaskAttemptID类: -* hadoop代理用户 -超级用户代理其它用户: - -## Ambari - -* -* Ambari——大数据平台的搭建利器: - -## Spark - -* -* -* mmicky 的博客: -* Spark性能优化指南——基础篇: -* Spark性能优化指南——高级篇: -* RDD中cache和persist的区别: -* 每次进步一点点——Spark 中的宽依赖和窄依赖: -* Spark中的错误处理: -* Why does Spark RDD partition has 2GB limit for HDFS? -* Spark 架构: -* Spark(一): 基本架构及原理: - -## Storm - - - - -## nutch - -* - ## ZooKeeper * @@ -1195,11 +1137,13 @@ The yFiles diagramming software components are extensive class libraries that en * * Lucene原理与代码分析: -## Apache Flume +## nutch -* deprcated: -* -* 开源日志系统比较: +* + +## Heritrix + +* ## Solr @@ -1207,6 +1151,12 @@ The yFiles diagramming software components are extensive class libraries that en * solr教程,值得刚接触搜索开发人员一看: * nutch1.8+solr 4 配置过程: +## Apache Flume + +* deprcated: +* +* 开源日志系统比较: + ## Commons DbUtils: JDBC Utility Component * @@ -1270,6 +1220,6 @@ The yFiles diagramming software components are extensive class libraries that en * flexmark-java: -## Tess4j +## Flex -* Tess4j: \ No newline at end of file +* Versions in the Flash Platform: \ No newline at end of file diff --git "a/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" index cca81e7..cae9438 100644 --- "a/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -47,7 +47,6 @@ Web Tools Platform(WTP): * * -* jQuery API中文文档(适用jQuery1.9): ## EasyUI diff --git "a/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" new file mode 100644 index 0000000..0bc9f0b --- /dev/null +++ "b/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -0,0 +1,68 @@ +## Hadoop + +* +* Hadoop: Setting up a Single Node Cluster: +* Hadoop Cluster Setup: +* HDFS Users Guide: +* Hadoop Commands Guide: +* DistCp: +* Hadoop Archives Guide: +* Hadoop: Capacity Scheduler: +* HDFS Architecture: +* HDFS Permissions Guide: +* HDFS Quotas Guide: +* File System Shell: +* HDFS Users Guide: +* MapReduce Tutorial: +* Native Libraries Guide: +* Hadoop Streaming: + +* Hadoop 1.0.0集群安装: +* 一步步教你Hadoop多节点集群安装配置: +* Eclipse下搭建Hadoop2.4.0开发环境: +* 使用eclipse连接hadoop失败情况: +* Windows平台下安装Eclipse插件,开发Hadoop应用: +* Hadoop JobHistory: + +* 国内第一篇详细讲解hadoop2的automatic HA+Federation+Yarn配置的教程: +* 如何编译Apache Hadoop2.2.0源代码: +* ZooKeeper的分布模式安装: +* Hadoop HDFS和KFS (CloudStore)的比较: +* performance-benchmark-cgl-mapreduce-mpi-and-hadoop: +* 汇总运行在Hadoop YARN上的开源系统: +* 利用Hadoop实现超大矩阵相乘之我见(一): +* 使用mapreduce计算大矩阵相乘: + +* Hadoop Journal Node 作用: +* ERROR org.apache.hadoop.yarn.server.resourcemanager.ResourceManager: RECEIVED SIGNAL 15: SIGTERM: +* Hadoop在master查看live nodes为0解决方案: +* VMware虚拟机中Hadoop服务的端口无法访问的问题: + +* 虾皮工作室(讲解大数据相关知识,如《细细品味Hadoop系列文章》): +* [Hadoop系列]Hadoop的MapReduce中多文件输出: +* Hadoop源码分析——TaskAttemptContext类和TaskAttemptID类: +* hadoop代理用户 -超级用户代理其它用户: + +## Ambari + +* +* Ambari——大数据平台的搭建利器: + +## Spark + +* +* +* mmicky 的博客: +* Spark性能优化指南——基础篇: +* Spark性能优化指南——高级篇: +* RDD中cache和persist的区别: +* 每次进步一点点——Spark 中的宽依赖和窄依赖: +* Spark中的错误处理: +* Why does Spark RDD partition has 2GB limit for HDFS? +* Spark 架构: +* Spark(一): 基本架构及原理: + +## Storm + + + \ No newline at end of file diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index fa2f86d..f9c6e16 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -79,6 +79,7 @@ * SourceTree: * tortoisegit: * TortoiseGit Disconnected:No supported authentication methods available: +* TortoiseGit Right click in Explorer hangs for long time: * gitlab: * EGit: From 7ef1dedfb877e6c09cf2a4ff52634b628f9d9ff2 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 23 Jul 2023 20:54:42 +0800 Subject: [PATCH 125/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 2 ++ ChooseYourBest.md | 1 + ...46\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...46\344\271\240\344\271\213\350\267\257.md" | 9 +++----- ...46\344\271\240\344\271\213\350\267\257.md" | 8 ------- ...46\344\271\240\344\271\213\350\267\257.md" | 22 +++++++++++++++++++ 6 files changed, 30 insertions(+), 14 deletions(-) delete mode 100644 "R\345\255\246\344\271\240\344\271\213\350\267\257.md" create mode 100644 "\346\225\260\346\215\256\346\214\226\346\216\230\345\255\246\344\271\240\344\271\213\350\267\257.md" diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 0b456d0..0c45f95 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -34,6 +34,8 @@ * androidcommunity: * AndroidDevTools: +* Material Design: + ## AOSP源码与架构学习 AOSP(Android Open Source Project)项目官网: diff --git a/ChooseYourBest.md b/ChooseYourBest.md index 7cd17d5..f5e3a94 100644 --- a/ChooseYourBest.md +++ b/ChooseYourBest.md @@ -48,6 +48,7 @@ * wondershare(All-in-1 PDF Solution,PDF阅读器,PDF转换到其它文件等): * PDF-XChange: +* ILovePDF: ## 浏览器 diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index dbffa42..1a4cce6 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -7,6 +7,8 @@ ## Java tutorial +* Java SE 6 技術手冊: + * 9 Best Practices to Handle Exceptions in Java: * API Design with Java 8: * Java Tips and Best practices to avoid NullPointerException in Java Applications: diff --git "a/Matlab\344\270\216Octave\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Matlab\344\270\216Octave\345\255\246\344\271\240\344\271\213\350\267\257.md" index 95aefb4..67e3b17 100644 --- "a/Matlab\344\270\216Octave\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Matlab\344\270\216Octave\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -2,13 +2,10 @@ ## Matlab -* GNU Octave: +* Matlab: * Matrix: HB/west0479: * ilovematlab.cn: -* matlabsky: - -* Matclipse使用教程: * matlab GUI程序转换成exe可执行文件: * 基于MATLAB2008B与VS 2003生成独立可执行的程序: @@ -19,6 +16,6 @@ ## Octave -* Matlab: +* GNU Octave: +* GNU Octave Manual: * Octclipse项目地址: -* Octave入门基础: diff --git "a/R\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/R\345\255\246\344\271\240\344\271\213\350\267\257.md" deleted file mode 100644 index e2d60f9..0000000 --- "a/R\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ /dev/null @@ -1,8 +0,0 @@ -# R学习之路 - -* -* The Comprehensive R Archive Network: - -## rstudio - -* diff --git "a/\346\225\260\346\215\256\346\214\226\346\216\230\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\346\225\260\346\215\256\346\214\226\346\216\230\345\255\246\344\271\240\344\271\213\350\267\257.md" new file mode 100644 index 0000000..4f6c640 --- /dev/null +++ "b/\346\225\260\346\215\256\346\214\226\346\216\230\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -0,0 +1,22 @@ +# 数据挖掘学习之路 + +## R + +* +* The Comprehensive R Archive Network: + +* rstudio: + +## SPSS + +* +* SPSSAU: +* SPSSPRO: + +## SAS + +* SAS: + +## RapidMiner + +* RapidMiner: From 2199e0ad08e6d2016908fecb52fbb6d1db90ddbc Mon Sep 17 00:00:00 2001 From: Aloys Date: Mon, 25 Sep 2023 23:21:30 +0800 Subject: [PATCH 126/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 42 ++++++++++------ ChooseYourBest.md | 1 + ...46\344\271\240\344\271\213\350\267\257.md" | 2 +- ...46\344\271\240\344\271\213\350\267\257.md" | 13 +++++ ...46\344\271\240\344\271\213\350\267\257.md" | 16 +++++- ...46\344\271\240\344\271\213\350\267\257.md" | 49 ++++++++++++++++++- ...04\344\270\216\347\256\227\346\263\225.md" | 2 + ...46\344\271\240\344\271\213\350\267\257.md" | 22 +++++++++ 8 files changed, 127 insertions(+), 20 deletions(-) create mode 100644 "\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 0c45f95..5a83ec2 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,8 +1,17 @@ # Andriod学习之路 -* +* 开发者网站中文: +* 开发者网站英文: + +* Developer guide: + * Permissions: + * Android 权限的一些细节: + * Data and file storage overview: + * Autofill framework: + + + * Caching Bitmaps: -* Data and file storage overview: * Managing the System UI: * Create and manage notification channels: * Support different screen sizes: @@ -36,10 +45,16 @@ * Material Design: -## AOSP源码与架构学习 +## AOSP -AOSP(Android Open Source Project)项目官网: -如果想了解如何将源码下载到本地进行查看,请直接参考,里面有介绍。 +* AOSP项目官网中文: +* AOSP项目官网英文: + +* Building Android: +* Codenames, Tags, and Build Numbers: +* Graphics: +* Supporting Multiple Users: +* Android5.1--多用户模式: AOSP源码占用空间较大,有时不方便通过下载到本地的方式进行查看,可以考虑使用下列网址在线查看: @@ -52,10 +67,6 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 其它曾经关注的AOSP相关网址: -* Building Android: -* Codenames, Tags, and Build Numbers: -* Graphics: - * 将AOSP源码导入到Android Studio进行查看: * Android构建系统: * Android soong build系统介绍: @@ -133,9 +144,6 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * Android控件--ProgressBar: * 拖放框架: -* 自动填充服务: -* 自动填充服务样例: - * Android核心分析: * Android系统开篇: * 对于android.intent.action.MAIN和android.intent.category.LAUNCHER的理解: @@ -177,7 +185,6 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * Android属性allowBackup安全风险浅析: * Android签名机制之---签名过程详解: * android文件读写以及不同应用之间的文件读写操作: -* Android 权限的一些细节: * Android 将自己的应用改为系统应用: * Android逆向之旅---解析编译之后的AndroidManifest文件格式: * Android DEX安全攻防战: @@ -187,14 +194,11 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * READ_EXTERNAL_STORAGE: * FileProvider: * Contacts Provider: -* 请求运行时权限: * 了解一下,Android 10中的APEX: * Android-APEX化之后如何替换对应的文件: * 安卓应用在各大应用市场上架方法整理: -* 从圆角到圆角: -* J 的艺术,R 的艺术: * Android8.0及以上,获取模拟器root权限: * Android真机安装sqlite3的方法: @@ -202,6 +206,12 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * [Android] 为Android安装BusyBox —— 完整的bash shell: * MIUI ROM适配之旅第一天——认识Android手机: +## Android相关的知识 + +* 从圆角到圆角: +* J 的艺术,R 的艺术: +* HDR详解 - 什么是HDR? + ## 动效 * 各种转场动画: diff --git a/ChooseYourBest.md b/ChooseYourBest.md index f5e3a94..b9fb29e 100644 --- a/ChooseYourBest.md +++ b/ChooseYourBest.md @@ -54,6 +54,7 @@ * Chrome: * Fixefox: +* TorBrowser: * IE浏览器(不推荐,现已停止维护) * 蚂蚁浏览器(不推荐,曾支持Linux): diff --git "a/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" index 9b5926e..a946077 100644 --- "a/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -225,7 +225,7 @@ * 忘记oracle的sys用户密码怎么修改以及Oracle 11g 默认用户名和密码: * navicat 连接Oracle 报错:Cannot load OCI DLL, 126: -### oracle疑难问题排查集: +### oracle疑难问题排查集 * 数据库无响应,出现很多tns的错误: * oracle 11g不能连接报ORA-12537+ora-609解决: diff --git "a/Matlab\344\270\216Octave\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Matlab\344\270\216Octave\345\255\246\344\271\240\344\271\213\350\267\257.md" index 67e3b17..c82857b 100644 --- "a/Matlab\344\270\216Octave\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Matlab\344\270\216Octave\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -19,3 +19,16 @@ * GNU Octave: * GNU Octave Manual: * Octclipse项目地址: + +## Maple + +* Maple: +* User Manual: + +## Mathematica + +* Mathematica: + +## Mathcad + +* Mathcad: diff --git "a/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" index 0bc9f0b..9da2c6c 100644 --- "a/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -64,5 +64,17 @@ ## Storm - - \ No newline at end of file +* +* + +## Mahout + +Apache Mahout是基于Hadoop生态圈的一个机器学习库。 + +* Mahout: + +## neo4j + +知识图谱由于其数据包含实体、属性、关系等,常见的关系型数据库诸如MySQL之类不能很好的体现数据的这些特点,因此知识图谱数据的存储一般是采用图数据库(Graph Databases)。而Neo4j是其中最为常见的图数据库。 + +* neo4j: diff --git "a/\346\225\260\346\215\256\346\214\226\346\216\230\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\346\225\260\346\215\256\346\214\226\346\216\230\345\255\246\344\271\240\344\271\213\350\267\257.md" index 4f6c640..65b2067 100644 --- "a/\346\225\260\346\215\256\346\214\226\346\216\230\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\346\225\260\346\215\256\346\214\226\346\216\230\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,11 +1,54 @@ # 数据挖掘学习之路 +## 开源数据集 + +* Dataset Search: +* Data in Brief: +* data.world: +* Mendeley Data: +* figshare: +* Zenodo: +* UC Irvine Machine Learning Repository: +* Harvard Dataverse: +* DRYAD: +* Socrata: +* kaggle: +* Microsoft Research Open Data: +* 各领域公开数据集下载: + ## R * * The Comprehensive R Archive Network: -* rstudio: +* Econometrics in R: +* Applied Econometrics with R: +* Statistics Using R with Biological Examples: + +* RStudio: +* RStudio User Guide: +* Using RStudio Projects: + +* R语言中,你最常用的软件包有哪些,请简述功能及特点? + +* Bioconductor: +* Shiny(Easy web apps for data science without the compromises): +* R Markdown: +* quantmod(Quantitative Financial Modelling & Trading Framework for R): +* Tidyverse: +* ggplot2: +* gganimate: +* Plotly R Open Source Graphing Library: +* plyr(The split-apply-combine strategy for R): +* reshape2(长宽数据转换): +* PerformanceAnalytics(Econometric tools for performance and risk analysis): +* lavaan(latent variable analysis, 隐变量分析): + +* ggplot2 Version of Figures in “Lattice: Multivariate Data Visualization with R”: +* The R Graph Gallery: +* R Charts: + +* A comprehensive survey of the types of things in R; 'mode' and 'class' and 'typeof' are insufficient: ## SPSS @@ -17,6 +60,10 @@ * SAS: +## SYSTAT + +* SYSTAT: + ## RapidMiner * RapidMiner: diff --git "a/\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225.md" "b/\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225.md" index 241ecad..2f75ce0 100644 --- "a/\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225.md" +++ "b/\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225.md" @@ -1,5 +1,7 @@ # 数据结构与算法学习之路 +* 排序算法: +* 算法可视化: * 十大经典排序算法动画,看我就够了! ## 算法大牛和讲师们 diff --git "a/\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" new file mode 100644 index 0000000..ca013fa --- /dev/null +++ "b/\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -0,0 +1,22 @@ +# 设计学习之路 + +## Adobe Photoshop + +## Adobe After Effect + +## Adobe Acrobat + +* PitStop Pro: +* PitStop Pro Manuals: + +## Adobe Audition + +## Adobe Dreamweaver + +## Adobe InDesign + +## CINEMA 4D(C4D) + +3D computer animation, modeling, simulation, and rendering software + +* CINEMA 4D: From fe3f4b985c474b5d011ed407bb258a074de1ba8c Mon Sep 17 00:00:00 2001 From: Aloys Date: Mon, 25 Sep 2023 23:23:57 +0800 Subject: [PATCH 127/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 33 ++++++++++++++++++ ...46\344\271\240\344\271\213\350\267\257.md" | 34 ------------------- 2 files changed, 33 insertions(+), 34 deletions(-) create mode 100644 "R\345\255\246\344\271\240\344\271\213\350\267\257.md" diff --git "a/R\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/R\345\255\246\344\271\240\344\271\213\350\267\257.md" new file mode 100644 index 0000000..82635ae --- /dev/null +++ "b/R\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -0,0 +1,33 @@ +# R + +* +* The Comprehensive R Archive Network: + +* Econometrics in R: +* Applied Econometrics with R: +* Statistics Using R with Biological Examples: + +* RStudio: +* RStudio User Guide: +* Using RStudio Projects: + +* R语言中,你最常用的软件包有哪些,请简述功能及特点? + +* Bioconductor: +* Shiny(Easy web apps for data science without the compromises): +* R Markdown: +* quantmod(Quantitative Financial Modelling & Trading Framework for R): +* Tidyverse: +* ggplot2: +* gganimate: +* Plotly R Open Source Graphing Library: +* plyr(The split-apply-combine strategy for R): +* reshape2(长宽数据转换): +* PerformanceAnalytics(Econometric tools for performance and risk analysis): +* lavaan(latent variable analysis, 隐变量分析): + +* ggplot2 Version of Figures in “Lattice: Multivariate Data Visualization with R”: +* The R Graph Gallery: +* R Charts: + +* A comprehensive survey of the types of things in R; 'mode' and 'class' and 'typeof' are insufficient: \ No newline at end of file diff --git "a/\346\225\260\346\215\256\346\214\226\346\216\230\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\346\225\260\346\215\256\346\214\226\346\216\230\345\255\246\344\271\240\344\271\213\350\267\257.md" index 65b2067..577c5f2 100644 --- "a/\346\225\260\346\215\256\346\214\226\346\216\230\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\346\225\260\346\215\256\346\214\226\346\216\230\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -16,40 +16,6 @@ * Microsoft Research Open Data: * 各领域公开数据集下载: -## R - -* -* The Comprehensive R Archive Network: - -* Econometrics in R: -* Applied Econometrics with R: -* Statistics Using R with Biological Examples: - -* RStudio: -* RStudio User Guide: -* Using RStudio Projects: - -* R语言中,你最常用的软件包有哪些,请简述功能及特点? - -* Bioconductor: -* Shiny(Easy web apps for data science without the compromises): -* R Markdown: -* quantmod(Quantitative Financial Modelling & Trading Framework for R): -* Tidyverse: -* ggplot2: -* gganimate: -* Plotly R Open Source Graphing Library: -* plyr(The split-apply-combine strategy for R): -* reshape2(长宽数据转换): -* PerformanceAnalytics(Econometric tools for performance and risk analysis): -* lavaan(latent variable analysis, 隐变量分析): - -* ggplot2 Version of Figures in “Lattice: Multivariate Data Visualization with R”: -* The R Graph Gallery: -* R Charts: - -* A comprehensive survey of the types of things in R; 'mode' and 'class' and 'typeof' are insufficient: - ## SPSS * From 51c2c018cb8d64d679f1d523fe04596d9e3cdf4a Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 29 Oct 2023 17:47:46 +0800 Subject: [PATCH 128/234] update --- ChooseYourBest.md | 63 +++++++++++++++++++ ...46\344\271\240\344\271\213\350\267\257.md" | 5 +- ...46\344\271\240\344\271\213\350\267\257.md" | 5 +- ...46\344\271\240\344\271\213\350\267\257.md" | 3 +- ...46\344\271\240\344\271\213\350\267\257.md" | 9 +-- ...46\344\271\240\344\271\213\350\267\257.md" | 2 + ...46\344\271\240\344\271\213\350\267\257.md" | 1 + ...46\344\271\240\344\271\213\350\267\257.md" | 16 +---- ...46\344\271\240\344\271\213\350\267\257.md" | 3 +- 9 files changed, 78 insertions(+), 29 deletions(-) diff --git a/ChooseYourBest.md b/ChooseYourBest.md index b9fb29e..4d25421 100644 --- a/ChooseYourBest.md +++ b/ChooseYourBest.md @@ -33,6 +33,7 @@ |[MindManager](https://www.mindmanager.com/cn/)|是|Windows/Mac|收费| | |[MindMaster](https://www.edrawsoft.cn/mindmaster/)|是|Windows/Mac/Linux|免费导出有水印| | |[Freeplane](https://sourceforge.net/projects/freeplane/)|是|Windows/Mac/Linux|开源免费 |FreeMind的比较活跃分支| +|[DiagramDesigner](https://github.com/meesoft/DiagramDesigner)|是|Windows|开源免费| | |[FreeMind](https://freemind.sourceforge.net/)|否|Windows/Mac/Linux|开源免费| | |[freemind-mmx](https://github.com/jiangxin/freemind-mmx)|否|Windows/Mac/Linux|开源免费| | @@ -49,6 +50,9 @@ * wondershare(All-in-1 PDF Solution,PDF阅读器,PDF转换到其它文件等): * PDF-XChange: * ILovePDF: +* CAJViewer: +* 超星阅读器: +* WinDjView: ## 浏览器 @@ -98,6 +102,10 @@ * ProxyTool: * v2rayNvpn: +## 网络相关 + +* Connectify Hotspot: + ## 密码管理工具 * KeePass: @@ -107,6 +115,22 @@ * authy: * Microsoft Authenticator: +## 压缩/解压缩 + +* 7-Zip: +* WinRAR: +* 快压: +* 好压: +* Bitser(exe解压): +* UniExtract2: + +## SSH/FTP + +* FileZilla: +* WinSCP: +* PuTTY: +* Pietty: + ## Others * tesseract: @@ -115,14 +139,32 @@ * Tess4J: * VietOCR: +* 按键精灵: +* sikuli(Deprcated): +* SikuliX1: +* SikuliX Docs: +* AutoHotkey: +* SciTE4AutoHotkey: + * MotionPro(VPN工具): * realvnc(安全远程连接): * Altova XMLSpy(Altova XMLSpy is the world's best selling JSON and XML editor for modeling, editing, transforming, and debugging related technologies.): +* FFmpeg: +* K-Lite Codec Pack: +* Shark007 Codecs: +* KMPlayer: * potplayer(新版本不支持swf格式): * QQ影音(播放WMV有时没有声音): * VLC media player: +* 龙卷风收音机: +* 腾讯视频: +* 爱奇艺: +* 优酷: +* 央视影音: +* 暴风影音: + * HyperSnap: * Snipaste: * FastStone Capture: @@ -130,7 +172,16 @@ * ScreenToGif: * ClipMate: * babun: +* catdoc ported to Windows: * UltraISO: +* DAEMON Tools Lite: +* Sothink SWF Decompiler: +* Sothink Logo Maker: +* Wondershare DVD Slideshow Builder Deluxe: +* Wondershare Flash Gallery Factory Deluxe: +* Action Script Viewer: + +* 人人钢琴: * Total Commander: * Rapidee: @@ -139,14 +190,24 @@ Windows 10 already has this functionality built in so WizMouse is most useful if you're using earlier versions of Windows): * ibat: * Binary Viewer(Binary Viewer can display file contents in binary, hexadecimal, octal, decimal and text formats): +* Windows日志查看工具合集: * NFOPad(NFOPad is a small, fast and flexible text editor and nfo viewer.): +* 小Q书桌: +* Wox: + +* P2PSearcher: * PanDownload: * amule: +* WebSite eXtractor: +* uTorrent: +* Wireshark: * httpwatch(HTTP sniffer): * Fiddler(Http sniffer): * Burp Suite(用于攻击web 应用程序的集成平台): +* 迅雷(Thunder): +* 硕鼠(bigrats): * CoolFormat: * Convert Between Programming Languages(The Most Accurate and Reliable Source Code Converters): @@ -156,3 +217,5 @@ Windows 10 already has this functionality built in so WizMouse is most useful if * GIMP(Image Editor): * Eagle(设计师图片管理工具): * blender(3D CG): + +* GrampsAIO(族谱绘制): diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index caa4e2e..de65fe3 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -151,12 +151,13 @@ * MinGW-w64下载地址: * What is difference between sjlj vs dwarf vs seh? * MinGW: -* TDM-GCC: * cygwin: +* MSYS2: * 对话 UNIX: 在 Windows 上使用 Cygwin: * GTK+与MFC不完全对比: * 将 MFC 应用程序移植到 Linux: * Enabling string conversion functions in MinGW: +* TDM-GCC: ## C++近场通讯开发 @@ -342,7 +343,7 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语 ## Ctags -* +* ## CLIPS diff --git "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" index ee0540c..7163fc5 100644 --- "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -3,11 +3,12 @@ ## VSCode * Visual Studio Code: -* Settings Sync: +* Settings Sync: \ +* VSCode调试远程Linux机器上的C代码: ## VIM -* +* vim/gvim: * * Vim documentation: usr_41: * map.txt: diff --git "a/IO\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/IO\345\255\246\344\271\240\344\271\213\350\267\257.md" index 09a17f0..9673395 100644 --- "a/IO\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/IO\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,5 +1,4 @@ # IO学习之路 - - +* * diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 1a4cce6..2579f45 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -839,15 +839,10 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * 程序员的绘图利器 — Graphviz: * Graphviz Eclipse plug-in: -## sikuli - -* sikuli(Deprcated): -* SikuliX1: -* SikuliX Docs: - ## Selenium * Selenium: +* IE Driver Server: ## JBoss @@ -1038,7 +1033,7 @@ The yFiles diagramming software components are extensive class libraries that en * 中文分词器分词效果评估对比: * 分词工具比较(转): * ik-analyze(java开源中文分词器): -* ICTCLAS: +* ICTCLAS: ## 规则引擎 diff --git "a/Markdown\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Markdown\345\255\246\344\271\240\344\271\213\350\267\257.md" index 922da7c..43ad5fc 100644 --- "a/Markdown\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Markdown\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -3,6 +3,8 @@ * Markdown 语法说明 (简体中文版): * Eclipse-Markdown-Editor-Plugin: +* Typora: +* MarkdownPad: * Online Markdown Editor, DILLINGER: * Cmd Markdown: * 马克飞象: diff --git "a/PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" index 214df75..c85886c 100644 --- "a/PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -4,6 +4,7 @@ * phpStudy: * WAMPSERVER: +* WATMServer服务管理器: * LNMP一键安装包: * AppServ : Apache + PHP + MySQL: * XAMPP Apache + MariaDB + PHP + Perl: diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index 1dc8ded..15275fc 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -319,7 +319,7 @@ * 安装GLX-Dock并进行配置 * 安装clementine/osd-lyrics并进行配置,解决乱码问题,安装解码插件 * 安装快盘,进行配快盘和ubuntu one -* 安装filezilla/okular/meld +* 安装okular/meld * 卸载Rhythmbox/empathy/account-plugin-* * 安装font-manager @@ -358,20 +358,6 @@ Tools → Options... → LibreOffice → View → Graphics output (取消钩选U 查看一下是否安装了ibus,可在系统设置中的语言支持中重新把输入法改为ibus -## Wireshark - - sudo apt-get install wireshark - -出于安全方面的考虑,普通用户不能够打开网卡设备进行抓包,wireshark不建议用户通过sudo在root权限下运行,wireshark为ubuntu(Debian)用户提供了一种在非root下的解决方法。详细解释可以参考: - - /usr/share/doc/wireshark-common/README.Debian http://nariver.com/usr/share/doc/wireshark-common/README.Debian) - -具体步骤: - - sudo dpkg-reconfigure wireshark-common - press the right arrow and enter for yes - sudo chmod +x /usr/bin/dumpcap - ## 重装Ubuntu如何保留/home分区中的数据 windows系统可以在重装时只格式化C盘,从而保留其他分区的数据。 Ubuntu系统也可以,只要在安装系统时分出一个/home分区。你可以把Ubuntu的“/”分区看为windows的C盘,重装Ubuntu时只格式化“/”分区,不格式化“/home”,这样就可以保留“/home”中的数据 diff --git "a/Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" index 26a28f5..a2c9939 100644 --- "a/Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -3,5 +3,6 @@ ## Dos * FreeDOS: +* DOSBox: * 中国DOS联盟: -* \ No newline at end of file +* MaxDOS: \ No newline at end of file From d0d39bf2de703ebafc01591a89463c5aaa9d9f8f Mon Sep 17 00:00:00 2001 From: Aloys Date: Mon, 6 Nov 2023 23:05:53 +0800 Subject: [PATCH 129/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 33 +++++-------------- ...46\344\271\240\344\271\213\350\267\257.md" | 1 + ...46\344\271\240\344\271\213\350\267\257.md" | 2 +- ...46\344\271\240\344\271\213\350\267\257.md" | 2 +- 4 files changed, 12 insertions(+), 26 deletions(-) diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index de65fe3..5c5dea6 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -39,7 +39,10 @@ ## Windows C++ +* Visual Studio: * VISUAL ASSIST: +* Spec Explorer 2010 Visual Studio Power Tool: +* Microsoft Visual Studio 2010 Visualization and Modeling Feature Pack: * /std (Specify Language Standard Version): * CRT Library Features: * UCRT 按字母顺序排列的函数参考: @@ -223,38 +226,20 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语 ## Glib/GTK+/Gnome -* GLib Reference Manual: -* Glib Test Framework: +* GLib Reference Manual: * GLIB 常用数据结构介绍: * glib库简介: * glib库异步队列和线程池代码分析: * GTK+: -* Part II. GTK+ Widgets and Objects: -* Migrating from GTK+ 2.x to GTK+ 3: -* GTK+ 2.0 Tutorial: -* GTK+ 2.0 Tutorial(中文版): -* GTK-Doc: -* 在Windows下使用GTK+开发GUI应用程序: -* Ubuntu下GTK的安装、编译和测试: -* 《GTK+》编程基础: +* GTK文档: * 在gtk+程序中显示中文说明: -* Gtk对于通常的gui程序,大家想做的事就是做一点事件处理(包括各种计算、文件操作等),然后在界面上显示出来: -* GTK+2.0 中的容器控件与布局技巧: -* GTK编程: -* GTK+ 2.0 教程--信号和回调函数的原理: -* ubuntu 14.04 中找不到libgtk-x11-2.0.so: -* GTK v1.2 Tutorial: * GNOME 开发者中心: -* Gnome下载地址: -* Port your application from GNOME 2 to GNOME 3: -* Vala - Compiler for the GObject type system: - -* Anjuta(难用): -* Glade(难用): -* Glade User Interface Designer Reference Manual: -* 用Glade和libGlade设计Gtk+图形界面: + +* Vala: +* Anjuta(不推荐): +* Glade(不推荐): ### GTK中的delete_event和destroy diff --git "a/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" index a946077..b429502 100644 --- "a/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -57,6 +57,7 @@ ## SQL Server * SQL Server: +* AdventureWorks sample databases: * Transact-SQL 参考: (v=sql.105).aspx * TSQLT: * sqlcmd 实用工具: diff --git "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 7163fc5..84933ec 100644 --- "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -3,7 +3,7 @@ ## VSCode * Visual Studio Code: -* Settings Sync: \ +* Settings Sync: * VSCode调试远程Linux机器上的C代码: ## VIM diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index f9c6e16..3691ccd 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -42,7 +42,7 @@ * TortoiseSVN: * TortoiseSVN命令行: * 设置SVN忽略文件和目录(文件夹): -* Google项目托管及Visual Studio 2008的SVN插件AnkhSVN的使用: +* AnkhSVN - Subversion Support for Visual Studio: * 本地搭建SVN局域网服务器: * windows下配置VisualSVN Server服务器(服务端和客户端): * 使用svn——项目的目录布局: From 294a633ea2fb046d836884179a7cab188e5794af Mon Sep 17 00:00:00 2001 From: Aloys Date: Wed, 8 Nov 2023 22:10:21 +0800 Subject: [PATCH 130/234] update --- "J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 2579f45..11e9f2a 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -352,11 +352,12 @@ ## Eclipse插件开发 +* Eclipse 4 RCP指南: +* Eclipse RCP (Rich Client Platform) - Tutorial: * Eclipse Plug-in & OSGI: * Eclipse插件开发打包为Update Site: * 插件开发总览: -* Tycho - Building Eclipse plug-ins with maven: -* +* Tycho - Building Eclipse plug-ins with maven: * 使用Tycho来构建你的RCP程序: * Dependencies from pom.xml not considered by Eclipse in Tycho Project: From 703ef91b0dfa23ddec84f4c804441a8bf18a8cb9 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sat, 11 Nov 2023 22:29:22 +0800 Subject: [PATCH 131/234] update --- "J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + 1 file changed, 1 insertion(+) diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 11e9f2a..86a8333 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -617,6 +617,7 @@ Eclipse中`Update Project`,选择`Force Update of Snapshots/Releases` * overlays: * * Maven Ant Tasks: +* 阿里云云效 Maven: * Maven插件maven-antrun-plugin的使用: * M2Eclipse项目地址: * 安装说明(Eclipse EE中自带): From 7659d361b0514f3db44a7c7b2eb0cdc332151d90 Mon Sep 17 00:00:00 2001 From: Aloys Date: Wed, 6 Dec 2023 22:28:16 +0800 Subject: [PATCH 132/234] update --- ChooseYourBest.md | 23 +++++++++++-------- ...46\344\271\240\344\271\213\350\267\257.md" | 20 +++++++++------- ...46\344\271\240\344\271\213\350\267\257.md" | 2 +- ...46\344\271\240\344\271\213\350\267\257.md" | 15 ++++++++---- ...46\344\271\240\344\271\213\350\267\257.md" | 15 +++++------- ...46\344\271\240\344\271\213\350\267\257.md" | 7 +++--- ...46\344\271\240\344\271\213\350\267\257.md" | 19 +++++++-------- 7 files changed, 55 insertions(+), 46 deletions(-) diff --git a/ChooseYourBest.md b/ChooseYourBest.md index 4d25421..25034c3 100644 --- a/ChooseYourBest.md +++ b/ChooseYourBest.md @@ -60,12 +60,6 @@ * Fixefox: * TorBrowser: -* IE浏览器(不推荐,现已停止维护) -* 蚂蚁浏览器(不推荐,曾支持Linux): -* 遨游浏览器(不推荐,曾支持Linux): -* 百度浏览器(不推荐,现已停止维护) -* QQ浏览器(不推荐,): - ## Tools Online * 各种表格格式的互转(Excel/Markdown/LaTeX等): @@ -83,8 +77,19 @@ * PicGo: -## 电脑性能测评 - +## 电脑管理工具 + +* 微PE工具箱: +* ~~大白菜(有大量捆绑): ~~ +* balenaEtcher: +* 图拉丁吧工具箱: +* AIDA: +* CPU-Z: +* AS SSD Benchmark: +* DiskGenius: +* SpaceSniffer: +* UltraISO: +* DAEMON Tools Lite: * 鲁大师: ## 地质相关软件 @@ -173,8 +178,6 @@ * ClipMate: * babun: * catdoc ported to Windows: -* UltraISO: -* DAEMON Tools Lite: * Sothink SWF Decompiler: * Sothink Logo Maker: * Wondershare DVD Slideshow Builder Deluxe: diff --git "a/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" index b429502..7006af4 100644 --- "a/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -32,7 +32,7 @@ * * Workbench: * SQLyog: -* MySQL-Front: +* ~~MySQL-Front: ~~ * 5款常用mysql slow log分析工具的比较: * MYSQL常见错误及其解决方式: * MySQL默认数据库: @@ -95,9 +95,11 @@ ## Oracle Database * Oracle Database DownLoad: -* Oracle SQL Developer: -* Instant Client Downloads for Microsoft Windows (32-bit): -* Database Virtual Box Appliance / Virtual Machine: +* Oracle SQL Developer: +* Instant Client Downloads for Microsoft Windows (32-bit): +* Developer Day - Hands-on Database Application Development: + +* Toad for Oracle: * * @@ -277,8 +279,8 @@ ORACLE_SID 实例ID ## DB2 -* 官网: -* DB2China: +* 官网: +* DB2 JDBC Driver: * Ubuntu 16.04安装DB2 Express C v11.1: * DB2 9.5 数据库分区管理及应用实践: * 如何建立DB2分区数据库?: @@ -295,7 +297,7 @@ ORACLE_SID 实例ID ## SQLite -* +* SQLite: * DB Browser for SQLite: * SQLite Expert: * SQLCipher: @@ -319,7 +321,9 @@ ORACLE_SID 实例ID ## Teradata -* Teradata Express for VMware Player: +* Teradata JDBC Driver: +* Teradata Vantage Express: +* Teradata on VMware Developer Tier Preconfigured: * Teradata Aster: * Teradata 教程: diff --git "a/Golang\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Golang\345\255\246\344\271\240\344\271\213\350\267\257.md" index 2e67150..0937239 100644 --- "a/Golang\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Golang\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -9,7 +9,7 @@ * 深入解析Go: * The-Golang-Standard-Library-by-Example: * Go 标准库 中文参考: -* GoClipse: +* ~~GoClipse: ~~ * liteide: * Go Search: diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 86a8333..ef11479 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -340,7 +340,7 @@ * Eclipse Mylyn: * JavaScript Development Tools (JSDT): * EClim: -* Eclipse EditorList Plug-in: +* ~~Eclipse EditorList Plug-in: ~~ * eclipse-games: * MouseFeed: * FileSync: @@ -349,6 +349,7 @@ * Eclipse EGit: * Spket IDE(提供Eclipse的插件): * Aptana(提供Eclipse插件): +* EasyShell: ## Eclipse插件开发 @@ -365,7 +366,7 @@ * AmaterasUML: * Green UML: -* ModelGoon UML4Java: +* ModelGoon UML4Java(已停止维护): * AgileJ(AgileJ StructureViews is a plugin for Eclipse which generates class diagrams reverse engineered from Java source code.): * StarUML: * Astah(JUDE): @@ -412,6 +413,11 @@ * beautyeye: * JavaFX/JavaFX Scene Builder: +## IBM JDK + +* ~~IBM Development Package for Eclipse: ~~ +* ~~IBM JDK: ~~ + ## Hudson 用Java编写的持续集成(CI)工具。 @@ -467,7 +473,7 @@ * 项目地址: -## ReportNG(已停止维护) +## ~~ReportNG~~ ReportNG is a simple HTML reporting plug-in for the TestNG unit-testing framework. It is intended as a replacement for the default TestNG HTML report. The default report is comprehensive but is not so easy to understand at-a-glance. ReportNG provides a simple, colour-coded view of the test results. @@ -721,7 +727,6 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * * 官方中文网: -* 中国下载地址: * 在MyEclipse下创建Java Web项目 入门(图文并茂)经典教程: ## Clover(收费) @@ -1055,6 +1060,8 @@ The yFiles diagramming software components are extensive class libraries that en * * * +* ~~droolsjbpm-tools: ~~ +* ~~Installing Drools plugin on Eclipse: ~~ * Drools规则描述语言快速手册: * Why isn't Drools working with Java 8? diff --git "a/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" index 1109325..c8df408 100644 --- "a/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -26,12 +26,9 @@ * PKU JudgeOnline: * ZOJ: * HDU Online Judge System: - -## 已经废弃的OJ - -* topcoder: -* codevs: -* 猿圈: -* 九度OJ: -* 九度OJ永久关闭声明: -* ACdream Online Judge: +* ~~topcoder: ~~ +* ~~codevs: ~~ +* ~~猿圈: ~~ +* ~~九度OJ: ~~ +* ~~九度OJ永久关闭声明: ~~ +* ~~ACdream Online Judge: ~~ diff --git "a/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" index 9da2c6c..58552e7 100644 --- "a/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -19,9 +19,10 @@ * Hadoop 1.0.0集群安装: * 一步步教你Hadoop多节点集群安装配置: -* Eclipse下搭建Hadoop2.4.0开发环境: -* 使用eclipse连接hadoop失败情况: -* Windows平台下安装Eclipse插件,开发Hadoop应用: +* ~~hadoop2x-eclipse-plugin: ~~ +* ~~Eclipse下搭建Hadoop2.4.0开发环境:~~ +* ~~使用eclipse连接hadoop失败情况:~~ +* ~~Windows平台下安装Eclipse插件,开发Hadoop应用:~~ * Hadoop JobHistory: * 国内第一篇详细讲解hadoop2的automatic HA+Federation+Yarn配置的教程: diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 3691ccd..179886c 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -10,19 +10,16 @@ * * * (SVN) -* -* * - -## 代码托管网站(已废弃) - -* (SVN) -* (SVN) -* -* (SVN) -* (SVN) -* * (Git Mercurial SVN) +* ~~~~ +* ~~~~ +* ~~ (SVN)~~ +* ~~ (SVN)~~ +* ~~~~ +* ~~ (SVN)~~ +* ~~ (SVN)~~ +* ~~~~ ## SVN From 257249231bfd51436e9fb93617263feb0b0dd9ae Mon Sep 17 00:00:00 2001 From: Aloys Date: Fri, 22 Dec 2023 21:40:50 +0800 Subject: [PATCH 133/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 8 +- ...46\344\271\240\344\271\213\350\267\257.md" | 8 +- ...46\344\271\240\344\271\213\350\267\257.md" | 2 +- ...46\344\271\240\344\271\213\350\267\257.md" | 3 +- ...46\344\271\240\344\271\213\350\267\257.md" | 78 +++++++++---------- ...46\344\271\240\344\271\213\350\267\257.md" | 2 + ...46\344\271\240\344\271\213\350\267\257.md" | 2 +- ...46\344\271\240\344\271\213\350\267\257.md" | 1 + ...46\344\271\240\344\271\213\350\267\257.md" | 24 +++++- ...46\344\271\240\344\271\213\350\267\257.md" | 1 + ...46\344\271\240\344\271\213\350\267\257.md" | 6 +- 11 files changed, 77 insertions(+), 58 deletions(-) diff --git "a/Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" index fcf6ab3..4def157 100644 --- "a/Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -25,8 +25,6 @@ * Quick Basic 常用的语句: * All about QBasic and QuickBasic: -* - ## Visual Basic/Visual Basic .NET * Developing Automated Tests Using NUnit and VB.NET: @@ -35,5 +33,7 @@ ## Other -* BASIC-256: -* PowerBASIC: +* QB64: +* KBasic(Basic For Qt): +* BASIC-256: +* PowerBASIC: diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 5c5dea6..d47ed14 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -34,6 +34,7 @@ * DISLIN: * ICU - International Components for Unicode(ICU4C/ICU4J): * libevent: +* ZeroMQ: * List of numerical libraries: * Standard Template Library Programmer's Guide: @@ -144,13 +145,11 @@ * Linux 桌面应用技术专题: * Linux系统调用列表: * Linux 套接字编程中的 5 个隐患: -* 使用 GLib 工具集管理 C 数据帖子发表于: * Linux静态/动态链接库的创建和使用: -* 基于X的GNOME、GTK、GDK、XLib、GLib等之间的关系: ## Windows/Linux剪不断理还乱 -* MinGW-w64(推荐): +* MinGW-w64(推荐): * MinGW-w64下载地址: * What is difference between sjlj vs dwarf vs seh? * MinGW: @@ -234,6 +233,8 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语 * GTK+: * GTK文档: * 在gtk+程序中显示中文说明: +* 使用 GLib 工具集管理 C 数据帖子发表于: +* 基于X的GNOME、GTK、GDK、XLib、GLib等之间的关系: * GNOME 开发者中心: @@ -285,7 +286,6 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语 * CppUnit源码解读: * C Unit Testing Framework: - * Parasoft C/C++test: ## 日志 diff --git "a/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" index 7006af4..a766f5d 100644 --- "a/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -359,7 +359,7 @@ ORACLE_SID 实例ID ## Hive -* +* Hive: * * 使用Hive读取Hbase中的数据: diff --git "a/Golang\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Golang\345\255\246\344\271\240\344\271\213\350\267\257.md" index 0937239..0933647 100644 --- "a/Golang\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Golang\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,6 @@ # Golang学习之路 -* -* +* Go: * Go (programming language): * Go语言圣经(中文版): * Go 学习笔记: diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index ef11479..25c4882 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -4,6 +4,7 @@ * Java SE: * Java Community Process: +* Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files: ## Java tutorial @@ -192,7 +193,6 @@ * 数字证书原理: * 彩虹表(Rainbow Tables)原理详解: * 使用浏览器的计算力,对抗密码破解: -* Installing Java Cryptography Extension unlimited strength jurisdiction policy files: * 关于 Token,你应该知道的十件事: * 10 Things You Should Know about Tokens: * 浅析ReDoS的原理与实践: @@ -205,7 +205,7 @@ * Jakarta EE: * Jakarta EE Platform Project: -* Java EE(Deprcated): +* ~~Java EE: ~~ * Oracle Java SE Support Roadmap: * Oracle Java SE Licensing FAQ: @@ -362,6 +362,14 @@ * 使用Tycho来构建你的RCP程序: * Dependencies from pom.xml not considered by Eclipse in Tycho Project: +## RxJava + +* RxJava: Reactive Extensions for the JVM: + +## Vert.x + +* Vert.x(Eclipse Vert.x Reactive applications on the JVM): + ## UML * AmaterasUML: @@ -382,7 +390,7 @@ ## Tomcat -* Apache Tomcat 8 Configuration Reference: +* Apache Tomcat: * Security Considerations: * SSL/TLS Configuration HOW-TO: * Tomcat配置JNDI全局数据源: @@ -418,29 +426,12 @@ * ~~IBM Development Package for Eclipse: ~~ * ~~IBM JDK: ~~ -## Hudson - - 用Java编写的持续集成(CI)工具。 - -* - -## Jenkins - - 用Java编写的一个开源持续集成工具。项目是在和Oracle发生争执后的来自于Hudson 的分支。 +## 持续集成 -* - -## Atlassian Bamboo - - 持续集成和交付工具,它将自动化构建、测试和发布捆绑到单个流程中。 - -* - -## TeamCity - - 来自于JetBrains的一个基于Java构建的管理和持续集成服务器。 - -* +* Jenkins: +* ~~Hudson: ~~ +* Atlassian Bamboo: +* TeamCity: ## DbUnit @@ -910,7 +901,7 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * json中文网: * JSON in Java [package org.json]: * Json-lib: -* fastjson: +* fastjson: * Eclipse Json Editor Plugin: * Jackson: * Jackson: @@ -1134,38 +1125,37 @@ The yFiles diagramming software components are extensive class libraries that en * The Tomcat JDBC Connection Pool: * Apache Commons Pool: +## Commons DbUtils: JDBC Utility Component + +* + ## ZooKeeper -* +* ZooKeeper: ## Lucene * * Lucene原理与代码分析: -## nutch - -* - -## Heritrix - -* - ## Solr * * solr教程,值得刚接触搜索开发人员一看: * nutch1.8+solr 4 配置过程: -## Apache Flume +## 爬虫库 -* deprcated: -* -* 开源日志系统比较: +* nutch: +* Heritrix: +* crawler4j: -## Commons DbUtils: JDBC Utility Component +## Apache Flume -* + Flume is a distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of log data. It has a simple and flexible architecture based on streaming data flows. It is robust and fault tolerant with tunable reliability mechanisms and many failover and recovery mechanisms. It uses a simple extensible data model that allows for online analytic application. + +* Apache Flume: +* 开源日志系统比较: ## curator @@ -1228,4 +1218,8 @@ The yFiles diagramming software components are extensive class libraries that en ## Flex -* Versions in the Flash Platform: \ No newline at end of file +* Versions in the Flash Platform: + +## JarScan + +* JarScan: \ No newline at end of file diff --git "a/OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" index 17f191f..f057bce 100644 --- "a/OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,6 +1,8 @@ # OpenGL学习之路 * OpenGL: +* GLUT(The OpenGL Utility Toolkit): +* freeglut: * OpenGL Wiki: * docs.GL: diff --git "a/PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" index c85886c..b53fe08 100644 --- "a/PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -2,7 +2,7 @@ * -* phpStudy: +* phpStudy: * WAMPSERVER: * WATMServer服务管理器: * LNMP一键安装包: diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index 15275fc..78ba71d 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -32,6 +32,7 @@ * rethat: * openSUSE: * opensuse-guide: +* manjaro: * 鳥哥的 Linux 私房菜: diff --git "a/Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" index a2c9939..42105ab 100644 --- "a/Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -2,7 +2,25 @@ ## Dos -* FreeDOS: +* FreeDOS: * DOSBox: -* 中国DOS联盟: -* MaxDOS: \ No newline at end of file +* 中国DOS联盟: +* MaxDOS: + +## CMD + +* win10中如何将cmd,power shell设置默认编码为UTF-8(解决win10命令行中文乱码): +* 浅谈批处理中的%cd%与%~dp0: + +## PowerShell + +* PowerShell: +* PowerShell Studio 2023: +* Powershell 错误记录:详细错误: +* pstips.net: +* 如何改变PowerShell启动的默认目录: + +* 同时打开多个powershell窗口:Win+R+powershell 多次即可 +* 查看powershell命令帮助 help [cmd]:help Remove-Item +* 删除文件夹:Remove-Item path –Recurse –Forse +* 查看历史记录:Get-Content (Get-PSReadLineOption).HistorySavePath diff --git "a/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" index cae9438..f36ca29 100644 --- "a/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -85,6 +85,7 @@ Web Tools Platform(WTP): * echarts: * antv: * CommonJS: +* PhantomJS: ## Node.js diff --git "a/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" index 58552e7..929997d 100644 --- "a/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -46,7 +46,7 @@ ## Ambari -* +* Ambari: * Ambari——大数据平台的搭建利器: ## Spark @@ -79,3 +79,7 @@ Apache Mahout是基于Hadoop生态圈的一个机器学习库。 知识图谱由于其数据包含实体、属性、关系等,常见的关系型数据库诸如MySQL之类不能很好的体现数据的这些特点,因此知识图谱数据的存储一般是采用图数据库(Graph Databases)。而Neo4j是其中最为常见的图数据库。 * neo4j: + +## Apache Phoenix + +* Apache Phoenix: From 2a151169f401126d4773038eab07cab690591630 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 24 Dec 2023 19:55:25 +0800 Subject: [PATCH 134/234] update --- ChooseYourBest.md | 10 ++++ ...46\344\271\240\344\271\213\350\267\257.md" | 46 +++++-------------- ...46\344\271\240\344\271\213\350\267\257.md" | 33 ++++++------- ...46\344\271\240\344\271\213\350\267\257.md" | 7 ++- ...46\344\271\240\344\271\213\350\267\257.md" | 12 ++--- ...46\344\271\240\344\271\213\350\267\257.md" | 1 + ...46\344\271\240\344\271\213\350\267\257.md" | 35 ++++++++------ ...46\344\271\240\344\271\213\350\267\257.md" | 6 +++ 8 files changed, 73 insertions(+), 77 deletions(-) diff --git a/ChooseYourBest.md b/ChooseYourBest.md index 25034c3..e213570 100644 --- a/ChooseYourBest.md +++ b/ChooseYourBest.md @@ -45,6 +45,11 @@ * 永中Office: * Prezi: +## 虚拟机软件 + +* VMware Workstation Player: +* VirtualBox: + ## PDF * wondershare(All-in-1 PDF Solution,PDF阅读器,PDF转换到其它文件等): @@ -172,6 +177,8 @@ * HyperSnap: * Snipaste: +* PicPick: +* Snagit: * FastStone Capture: * OBS Studio: * ScreenToGif: @@ -206,6 +213,7 @@ Windows 10 already has this functionality built in so WizMouse is most useful if * uTorrent: * Wireshark: +* Omnipeek(Network protocol analyzer): * httpwatch(HTTP sniffer): * Fiddler(Http sniffer): * Burp Suite(用于攻击web 应用程序的集成平台): @@ -222,3 +230,5 @@ Windows 10 already has this functionality built in so WizMouse is most useful if * blender(3D CG): * GrampsAIO(族谱绘制): + +* 坚果云: diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 25c4882..896125e 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -737,41 +737,17 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * VisualVM: * arthas: -## Eclipse Class Decompiler - -* Eclipse Class Decompiler——Java反编译插件: -* Eclipse Class Decompiler -> Enhanced Class Decompiler: -* Enhanced Class Decompiler: - -## JD(Java Decompiler) - -* 项目地址及安装说明: - -注:不支持命令行使用,因而很难批量编译。 - -## jad - -* jad: -* jadclipse: - -注:jad支持命令行方式使用,最新版本为1.5.8g,支持的class版本过低。经常出现问题:The class file version is 48.0 (only 45.3, 46.0 and 47.0 are supported)。还有一个工具uuDeJava,也是基于jad,所以估计也难以避免这个问题。 - -## jdec - -* -* Jode Eclipse Plugin: - -## JODE - - JODE is a java package containing a decompiler and an optimizer (aka obfuscator ;-) for java. - -* - -## DJ Java Decompiler - -* - -注:收费软件,没有试用过 +## 反编译 + +* ~~Eclipse Class Decompiler——Java反编译插件: ~~ +* Enhanced Class Decompiler(fork from Eclipse Class Decompiler): +* JD(Java Decompiler,不支持命令行使用,无法批量编译): +* ~~jad(支持命令行方式使用,支持的class版本过低): ~~ +* ~~jadclipse: ~~ +* ~~jdec(支持命令行方式使用,支持的class版本过低): ~~ +* ~~JODE(Java Optimize and Decompile Environment, ,支持的class版本过低): ~~ +* ~~Jode Eclipse Plugin: ~~ +* DJ Java Decompiler(收费软件): ## ProGuard diff --git "a/Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" index c936d75..ea292d1 100644 --- "a/Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -5,36 +5,31 @@ * * Clozure Common Lisp: +* Steel Bank Common Lisp(SBCL): * CLISP - an ANSI Common Lisp: * Allegro CL: * CMUCL: -* Steel Bank Common Lisp: * LispWorks: * Common Lisp HyperSpec: * L-99: Ninety-Nine Lisp Problems: * Quicklisp: -* AspectL: +* AspectL: * lispforum: -* newLISP: -* DaanSystems: -* My Emacs For Common Lisp: * Lisp: Common Lisp, Racket, Clojure, Emacs Lisp: -* SLIME: The Superior Lisp Interaction Mode for Emacs: -* -* Lispbox: -* slimv: -* Jabberwocky a Lisp IDE: -* Limp: - -* 使用 Cusp Eclipse 插件开发 Lisp 应用程序: -* Lisp Programming with Cusp: - -* Dandelion: -* Dandelion - Eclipse Lisp Plugin: +* SLIME: Superior Lisp Interaction Mode for Emacs: +* slimv: Superior Lisp Interaction Mode for Vim: +* lispide: +* Dandelion: +* ~~My Emacs For Common Lisp: ~~ +* ~~Lispbox: ~~ +* ~~Jabberwocky a Lisp IDE: ~~ +* ~~Limp: ~~ +* ~~Cusp(Cusp is an Eclipse IDE plugin that runs on top of SBCL):~~ * Racket: +* newLISP: * MIT/GNU Scheme: * The Common Foreign Function Interface(cffi): * milkypostman/melpa: @@ -43,7 +38,6 @@ * CLOCC - Common Lisp Open Code Collection: * Common Lisp配置:SBCL: - * MIT/GNU Scheme: * Lisp之根源: * The Roots of Lisp: @@ -77,6 +71,5 @@ ## Clojure -* Clojure: -* Getting Started: +* Clojure: * Leiningen(一个自动化构建和依赖性管理工具,用于使用Clojure编程语言写的软件项目): diff --git "a/PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" index b53fe08..30be865 100644 --- "a/PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,10 @@ # PHP学习之路 -* +* PHP: +* Apache HTTP Server: + +* phpMyAdmin: * phpStudy: * WAMPSERVER: * WATMServer服务管理器: @@ -9,6 +12,8 @@ * AppServ : Apache + PHP + MySQL: * XAMPP Apache + MariaDB + PHP + Perl: +* Zend Optimizer,Zend Guard Loader 和 Zend Opcache 三者之间的区别: + ## PHPUnit * diff --git "a/Python\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Python\345\255\246\344\271\240\344\271\213\350\267\257.md" index d1e52a5..0e638f5 100644 --- "a/Python\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Python\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -5,6 +5,10 @@ * Python Enhancement Proposals: +* ActivePython: +* IronPython: +* Jython: + ## Python基础知识 * Python注释: @@ -20,13 +24,6 @@ * Python退格键出现方块: * 在python交互式环境中,在不关闭窗口的情况在如何清除,之前的语句: -## 发行版和实现 - -* ActivePython: - -* IronPython: -* Jython: - ## IDE/工具/三方库 * The Eric Python IDE: @@ -80,5 +77,6 @@ ## 其它 +* wxPython: * pythonchallenge: * Swaroop C H: \ No newline at end of file diff --git "a/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" index bb41ca8..bb1ea1c 100644 --- "a/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -21,6 +21,7 @@ * LyX: * BaKoMa TeX Word: * Word-to-LaTeX Converter: +* MathType: * The Comprehensive TEX Archive Network(CTAN): * LaTeX – A document preparation system: diff --git "a/\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" index d37810e..e09fbee 100644 --- "a/\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,21 +1,28 @@ # 汇编学习之路 -* 汇编网: -* 看雪学院: -* 看雪安全论坛: -* dosbox: -* The MASM32 SDK: -* OllyDbg: -* win32asm: -* winasm.net: -* The Go tools for Windows + Assembler: +* MASM: +* ~~TASM: ~~ +* flat assembler: * Yasm: * NASM: -* flat assembler: -* IDA: + +* winasm: +* The MASM32 SDK: * RadASM: +* The Go tools for Windows + Assembler: +* Masm for windows 集成实验环境: +* ~~asmplugin:~~ +* ~~Win-Masm v2.2 汇编集成编译器: ~~ + +* dosbox: +* EMU8086 - THE MICROPROCESSOR EMULATOR: +* OllyDbg: +* IDA: + +* 汇编网: +* 看雪学院: +* 看雪安全论坛: * 鱼C工作室: -* asmplugin: * Linux 汇编语言开发指南: * AT&T(GAS)汇编指令小集: * 汇编指令 int 21 h 调用: @@ -29,9 +36,9 @@ * 常见模拟器列表: * MARS (MIPS Assembler and Runtime Simulator): -* SPIM(QtSpim): [new]: [old]: +* SPIM(QtSpim): * mipster20(MIPSter is a text editor written specifically for the MIPS assembly language, SPIM included): * WinMIPS64: * MIPSsim使用说明(含下载): * 建立基于linux的MIPS交叉编译环境: -* MIPS的演化:See MIPS Run: Appendix D Evolving MIPS \ No newline at end of file +* MIPS的演化:See MIPS Run: Appendix D Evolving MIPS diff --git "a/\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" index ca013fa..3d35c45 100644 --- "a/\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -20,3 +20,9 @@ 3D computer animation, modeling, simulation, and rendering software * CINEMA 4D: + +## 其它 + +* 可牛影像: +* 美图秀秀: +* 光影魔术手: From 63b377effe4588cf78cd5984bc55602cb2729cdf Mon Sep 17 00:00:00 2001 From: Aloys Date: Sat, 30 Dec 2023 02:16:01 +0800 Subject: [PATCH 135/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 6 ++++- ChooseYourBest.md | 27 ++++++++++++++----- ...46\344\271\240\344\271\213\350\267\257.md" | 10 ++++++- ...46\344\271\240\344\271\213\350\267\257.md" | 9 ++++--- ...46\344\271\240\344\271\213\350\267\257.md" | 4 +-- ...46\344\271\240\344\271\213\350\267\257.md" | 3 ++- ...46\344\271\240\344\271\213\350\267\257.md" | 4 +++ ...46\344\271\240\344\271\213\350\267\257.md" | 3 ++- ...46\344\271\240\344\271\213\350\267\257.md" | 3 +++ ...46\344\271\240\344\271\213\350\267\257.md" | 6 +++++ 10 files changed, 58 insertions(+), 17 deletions(-) create mode 100644 "\347\274\226\350\257\221\345\216\237\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" diff --git "a/CSharp\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/CSharp\345\255\246\344\271\240\344\271\213\350\267\257.md" index 6b8561e..0106a3c 100644 --- "a/CSharp\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/CSharp\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -2,5 +2,9 @@ * Mono: * MonoDevelop: -* SharpDevelop[Deprecated]: +* ~~SharpDevelop: ~~ * Emonic: + +## .NET + +* NuGet: diff --git a/ChooseYourBest.md b/ChooseYourBest.md index e213570..89d55e5 100644 --- a/ChooseYourBest.md +++ b/ChooseYourBest.md @@ -49,6 +49,7 @@ * VMware Workstation Player: * VirtualBox: +* VMTransferFiles: ## PDF @@ -100,6 +101,10 @@ ## 地质相关软件 * ROCKWORKS(RockWorks是一个综合软件程序,用于为环境、岩土工程、采矿和石油行业创建2D和3D地图、日志和横截面、地质模型、体积报告和一般地质图): +* GeoCorelDRAW: +* SAC(Seismic Analysis Code): +* rdseed: +* Visual MINTEQ: ## 代理 @@ -158,7 +163,6 @@ * MotionPro(VPN工具): * realvnc(安全远程连接): -* Altova XMLSpy(Altova XMLSpy is the world's best selling JSON and XML editor for modeling, editing, transforming, and debugging related technologies.): * FFmpeg: * K-Lite Codec Pack: @@ -190,6 +194,7 @@ * Wondershare DVD Slideshow Builder Deluxe: * Wondershare Flash Gallery Factory Deluxe: * Action Script Viewer: +* install-us: * 人人钢琴: @@ -211,12 +216,6 @@ Windows 10 already has this functionality built in so WizMouse is most useful if * amule: * WebSite eXtractor: * uTorrent: - -* Wireshark: -* Omnipeek(Network protocol analyzer): -* httpwatch(HTTP sniffer): -* Fiddler(Http sniffer): -* Burp Suite(用于攻击web 应用程序的集成平台): * 迅雷(Thunder): * 硕鼠(bigrats): @@ -228,7 +227,21 @@ Windows 10 already has this functionality built in so WizMouse is most useful if * GIMP(Image Editor): * Eagle(设计师图片管理工具): * blender(3D CG): +* BusinessCards MX(名片制作工具): * GrampsAIO(族谱绘制): +* Asymptote(2D & 3D TeX-Aware Vector Graphics Language): + +* docx2txt: +* txt2tags: + +* Wireshark: +* Omnipeek(Network protocol analyzer): +* httpwatch(HTTP sniffer): +* Fiddler(Http sniffer): +* Burp Suite(用于攻击web 应用程序的集成平台): +* tcpdump: +* tcpdump捕捉样例: +* WinDump: * 坚果云: diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index d47ed14..951c14c 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -37,6 +37,8 @@ * ZeroMQ: * List of numerical libraries: * Standard Template Library Programmer's Guide: +* libiconv: +* GSL - GNU Scientific Library: ## Windows C++ @@ -152,9 +154,11 @@ * MinGW-w64(推荐): * MinGW-w64下载地址: * What is difference between sjlj vs dwarf vs seh? -* MinGW: +* MinGW: Minimalist GNU for Windows Files, A native Windows port of the GNU Compiler Collection (GCC): * cygwin: * MSYS2: +* ~~GnuWin: ~~ +* ~~UnxUtils: ~~ * 对话 UNIX: 在 Windows 上使用 Cygwin: * GTK+与MFC不完全对比: * 将 MFC 应用程序移植到 Linux: @@ -310,6 +314,10 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语 * OpenSSL 在windows系统下的编译全解: * 使用OpenSSL实现X25519秘钥协商功能: +## MPI + +* Open MPI(Open Source High Performance Computing): + ## XML * TinyXML: diff --git "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 84933ec..4b3e497 100644 --- "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -45,9 +45,11 @@ * emacswiki: * GNU Emacs Manuals Online: -## ultraedit +## UltraEdit -* +* UltraEdit: +* UEStudio: +* UltraCompare: * User-submitted wordfiles for UltraEdit/UEStudio: ## Sublime Text @@ -80,10 +82,11 @@ * geany: * Lime Text: * Scintilla: -* xmlspy: +* XMLSpy(Altova XMLSpy is the world's best selling JSON and XML editor for modeling, editing, transforming, and debugging related technologies.): * Bluefish: * codelite: * kdevelop: * xcode: * QtCreator: * SlickEdit: +* ReText(Simple but powerful editor for Markdown and reStructuredText): diff --git "a/PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" index 30be865..4caa28f 100644 --- "a/PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -14,6 +14,4 @@ * Zend Optimizer,Zend Guard Loader 和 Zend Opcache 三者之间的区别: -## PHPUnit - -* +* PHPUnit: diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index 78ba71d..b9cb6da 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -14,6 +14,7 @@ * Linux online: * VGER.KERNEL.ORG(provide email list services for the linux kernel developers): * GNU Operating System: +* Free Software Foundation (FSF): * Linux Professional Institute(LPI is the global certification standard and career support organization for open source professionals): * * @@ -96,7 +97,6 @@ * shell脚本“syntax error:unexpected end of file”解决方案 : * String contains in Bash: * Could not get lock /var/lib/apt/lists/lock - open: -* tcpdump捕捉样例: * Slow Server? This is the Flow Chart You're Looking For: * 设置Linux系统的空闲等待时间TMOUT: * Linux下chkconfig命令详解: @@ -151,6 +151,7 @@ * iproute2: * GNU Binutils(objdump/gprof/strings): * tcpdump: +* tcpdump捕捉样例: * indent: * cproto: * ttyrec 和 ttyplay(记录、保存和播放终端会话软件): diff --git "a/Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" index 42105ab..e48e472 100644 --- "a/Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -24,3 +24,7 @@ * 查看powershell命令帮助 help [cmd]:help Remove-Item * 删除文件夹:Remove-Item path –Recurse –Forse * 查看历史记录:Get-Content (Get-PSReadLineOption).HistorySavePath + +## Others + +* chocolatey(The Package Manager for Windows): diff --git "a/\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" index e09fbee..fb5886e 100644 --- "a/\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -17,7 +17,8 @@ * dosbox: * EMU8086 - THE MICROPROCESSOR EMULATOR: * OllyDbg: -* IDA: +* IDA Pro: +* WinHex: * 汇编网: * 看雪学院: diff --git "a/\347\274\226\350\257\221\345\216\237\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" new file mode 100644 index 0000000..7f6d11c --- /dev/null +++ "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -0,0 +1,3 @@ +# 编译原理学习之路 + +* Win flex-bison: diff --git "a/\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" index 3d35c45..8433905 100644 --- "a/\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -15,6 +15,12 @@ ## Adobe InDesign +## Corel + +* CorelDRAW Graphics Suite: +* CorelDRAW: +* VideoStudio(会声会影): + ## CINEMA 4D(C4D) 3D computer animation, modeling, simulation, and rendering software From 4c9f4c1405f1c43a5a2f310db9da28ef7f1666ff Mon Sep 17 00:00:00 2001 From: Aloys Date: Sat, 30 Dec 2023 03:28:55 +0800 Subject: [PATCH 136/234] update --- ChooseYourBest.md | 10 ++++++---- ...345\255\246\344\271\240\344\271\213\350\267\257.md" | 3 +-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/ChooseYourBest.md b/ChooseYourBest.md index 89d55e5..63cf68d 100644 --- a/ChooseYourBest.md +++ b/ChooseYourBest.md @@ -108,14 +108,16 @@ ## 代理 +* 自2023年11月2日起,中国开发者在GitHub上删除或存档翻墙工具: +* ~~clash: ~~ +* ~~Clash for Android: ~~ +* ~~Clash for Windows: ~~ +* ~~Clash Verge:~~ * Shadowsocks: -* clash: -* Clash for Android: -* Clash for Windows: -* Clash for Windows文档: * proxy: * ProxyTool: * v2rayNvpn: +* ~~Freegate: ~~ ## 网络相关 diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index b9cb6da..18e2f70 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -65,6 +65,7 @@ * 理解Linux系统的日志: * linux时间和时区修改(附suse): * linux中时间设置date、hwclock、clock: +* Linux&Windows双系统时间不一致解决方案: * 通过命令行查找一个IP的地理位置信息: * 多终端管理器tmux使用详解: * Linux系统里如何彻底的清空屏幕?: @@ -150,8 +151,6 @@ * httpry(HTTP logging and information retrieval tool ): * iproute2: * GNU Binutils(objdump/gprof/strings): -* tcpdump: -* tcpdump捕捉样例: * indent: * cproto: * ttyrec 和 ttyplay(记录、保存和播放终端会话软件): From 454c3335c9f6dcb246c3f42ba4d6f3f86c77243a Mon Sep 17 00:00:00 2001 From: Aloys Date: Sat, 30 Dec 2023 18:34:15 +0800 Subject: [PATCH 137/234] update --- ...\246\344\271\240\344\271\213\350\267\257.md" | 17 +++++++++++++++++ ...\246\344\271\240\344\271\213\350\267\257.md" | 1 + 2 files changed, 18 insertions(+) diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index 18e2f70..7ae7739 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -359,6 +359,23 @@ Tools → Options... → LibreOffice → View → Graphics output (取消钩选U 查看一下是否安装了ibus,可在系统设置中的语言支持中重新把输入法改为ibus +## 主文件夹里的中文文件夹改成英文文件夹 + +打开终端,在终端下输入命令: + +```shell + export LANG=en_US + xdg-user-dirs-gtk-update +``` + +这个时候会弹出一个配置界面,提示是否将中文目录切换为英文目录。选中不再提示,确定。系统会删除没有内容的中文目录,而有内容的目录会保持。并创建8个相应的英文目录如下: “Desktop”、“Download”、“Templates”、“Public”、“Documents”、“Music”、“Pictures”、“Videos”。此时,您在“位置”里看到的常用中文目录已经变成英文目录; + +再执行: + +```shell + export LANG=zh_CN.UTF-8 +``` + ## 重装Ubuntu如何保留/home分区中的数据 windows系统可以在重装时只格式化C盘,从而保留其他分区的数据。 Ubuntu系统也可以,只要在安装系统时分出一个/home分区。你可以把Ubuntu的“/”分区看为windows的C盘,重装Ubuntu时只格式化“/”分区,不格式化“/home”,这样就可以保留“/home”中的数据 diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 179886c..7d9d64d 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -86,6 +86,7 @@ * Git下载GitHub仓库里的某一个文件夹或某一个文件: * 打造完美 Windows git 命令行环境: * 详解在visual studio中使用git版本系统(图文): +* git-credential-store: * Caching your GitHub password in Git: * 执行Git命令时出现各种 SSL certificate problem 的解决办法: * warning: remote HEAD refers to nonexistent ref, unable to checkout: From b9243bc6b04a72e1b46da3d686b2e1b6473a0ca4 Mon Sep 17 00:00:00 2001 From: Aloys Date: Mon, 1 Jan 2024 14:42:27 +0800 Subject: [PATCH 138/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 10 +++---- ChooseYourBest.md | 3 +- ...46\344\271\240\344\271\213\350\267\257.md" | 8 +++--- ...46\344\271\240\344\271\213\350\267\257.md" | 28 +++++++++---------- ...46\344\271\240\344\271\213\350\267\257.md" | 2 +- ...46\344\271\240\344\271\213\350\267\257.md" | 26 ++++++++--------- ...46\344\271\240\344\271\213\350\267\257.md" | 2 +- ...46\344\271\240\344\271\213\350\267\257.md" | 2 +- ...46\344\271\240\344\271\213\350\267\257.md" | 15 +++++----- ...46\344\271\240\344\271\213\350\267\257.md" | 2 +- ...46\344\271\240\344\271\213\350\267\257.md" | 4 +-- ...46\344\271\240\344\271\213\350\267\257.md" | 4 +-- 12 files changed, 53 insertions(+), 53 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 5a83ec2..7e9f67d 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -201,7 +201,7 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * 安卓应用在各大应用市场上架方法整理: * Android8.0及以上,获取模拟器root权限: -* Android真机安装sqlite3的方法: +* Android真机安装sqlite3的方法: * 使用 Intel HAXM 为 Android 模拟器加速,媲美真机: * [Android] 为Android安装BusyBox —— 完整的bash shell: * MIUI ROM适配之旅第一天——认识Android手机: @@ -237,7 +237,7 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * Chapter 6. The Gradle Wrapper: * Getting Started With Gradle: -* 彻底搞懂Gradle、Gradle Wrapper与Android Plugin for Gradle的区别和联系: +* 彻底搞懂Gradle、Gradle Wrapper与Android Plugin for Gradle的区别和联系: * 通过设置JDK解决存在多个Gradle后台进程的问题: * Gradle Could not find method leftShift() for arguments: @@ -267,7 +267,7 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * Debug Your layout with Layout Inspector and Layout Validation: * Configure Android Studio: -* Android Studio移动鼠标显示悬浮提示的设置方法: +* Android Studio移动鼠标显示悬浮提示的设置方法: * ANDROID STUDIO详细教程汇总: * Android Studio 3.0+ 新Dex编译器D8 Desugar R8: * Android Studio系列教程一--下载与安装: @@ -277,7 +277,7 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * ANDROID STUDIO系列教程五--GRADLE命令详解与导入第三方包: * ANDROID STUDIO系列教程六--GRADLE多渠道打包: * Android Studio优化技巧: -* Android Studio相关目录解析: +* Android Studio相关目录解析: * Android Studio Build Output 栏内汉字出现乱码的解决方案: * ERROR Android emulator gets killed: @@ -359,7 +359,7 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * awesome-adb: * ADB: -* 解决adb push时出现的"Read-only file system"问题: +* 解决adb push时出现的"Read-only file system"问题: * android adb push 与 adb install的比较(两种安装APK的方法): ## Eclipse diff --git a/ChooseYourBest.md b/ChooseYourBest.md index 63cf68d..e31e53c 100644 --- a/ChooseYourBest.md +++ b/ChooseYourBest.md @@ -104,6 +104,7 @@ * GeoCorelDRAW: * SAC(Seismic Analysis Code): * rdseed: +* Rdseed与SAC的安装: * Visual MINTEQ: ## 代理 @@ -243,7 +244,7 @@ Windows 10 already has this functionality built in so WizMouse is most useful if * Fiddler(Http sniffer): * Burp Suite(用于攻击web 应用程序的集成平台): * tcpdump: -* tcpdump捕捉样例: +* tcpdump捕捉样例: * WinDump: * 坚果云: diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 951c14c..fea246f 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -374,15 +374,15 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语 * Does C++11 allow vector? * Comparing Two High-Performance I/O Design Patterns: * 使您的软件运行起来——防止缓冲区溢出: -* 屏幕输出VS文件输出: +* 屏幕输出VS文件输出: * 亲密接触C可变参数函数 : * TCP连接中的TIME_WAIT状态: * see also: 《TCP-IP详解卷1:协议》第十八章 * TCP可靠传输及流量控制系列六:TCP连接中的TIME_WAIT状态: * C++项目中的extern "C" {}: -* 由函数clock想到的: +* 由函数clock想到的: * 理解 pkg-config 工具: -* C/C++中的abort、atexit、exit和_Exit: +* C/C++中的abort、atexit、exit和_Exit: * setjmp()/longjmp()的使用方法和场合: * C++ 工程实践(7):iostream 的用途与局限: * 指针的大小: @@ -393,7 +393,7 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语 * 减少C++代码编译时间的方法: * C++编译错误cannot have cv-qualifier: * 在 console mode 中使用 C/C++ 编译器: -* 基于对象和面向对象的区别: +* 基于对象和面向对象的区别: * const 不再迷茫: * C语言中随机数相关问题: * VS Code C++ 代码格式化方法(clang-format): diff --git "a/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" index a766f5d..eaabcfb 100644 --- "a/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -24,7 +24,7 @@ * 存储过程使用建议: * Java 6 RowSet 使用完全剖析: -* Hibernate与autoCommit: +* Hibernate与autoCommit: ## MySQL @@ -34,8 +34,8 @@ * SQLyog: * ~~MySQL-Front: ~~ * 5款常用mysql slow log分析工具的比较: -* MYSQL常见错误及其解决方式: -* MySQL默认数据库: +* MYSQL常见错误及其解决方式: +* MySQL默认数据库: * Should I use field 'datetime' or 'timestamp'? * 如何提高MySql的安全性?: * 如何写出高质量、高性能的MySQL查询: @@ -159,11 +159,11 @@ * ToadWorld: -* Oracle系统表整理+常用SQL语句收集: -* Unix/Linux操作系统中如何在sqlplus/rman中使用方向键: -* oracle表空间表分区详解及oracle表分区查询使用方法(转+整理): -* oracle表空间不足相关问题解决办法: -* Oracle导入导出常用命令: +* Oracle系统表整理+常用SQL语句收集: +* Unix/Linux操作系统中如何在sqlplus/rman中使用方向键: +* oracle表空间表分区详解及oracle表分区查询使用方法(转+整理): +* oracle表空间不足相关问题解决办法: +* Oracle导入导出常用命令: * oracle 11g如何完全卸载: * Oracle 11G数据库VMware虚拟机下载: @@ -208,7 +208,7 @@ * Oracle OLAP 与 OLTP 介绍: * Oracle Database 11g Release 2 (11.2.0.3) RAC On Oracle Linux 6.3 Using VirtualBox: * Oracle RAC 12c Database on Linux Using VirtualBox: -* 如何利用Oracle VM Templates 在几分钟内部署Oracle Real Application Clusters (RAC): +* 如何利用Oracle VM Templates 在几分钟内部署Oracle Real Application Clusters (RAC): * 12c ASM audit目录增长过快的bug: * 【ASM】SYSASM 角色: * rac节点无法启动ORA-29702的问题及分析: @@ -224,8 +224,8 @@ * Oracle 10g Audit(审计) --- 记录登录用户在Oracle中的所有操作: * 修改oracle实例名(sid)和数据库名(db_name): * Oracle安装错误ora-00922(缺少或无效选项): -* Oracle中session和processes的设置: -* 忘记oracle的sys用户密码怎么修改以及Oracle 11g 默认用户名和密码: +* Oracle中session和processes的设置: +* 忘记oracle的sys用户密码怎么修改以及Oracle 11g 默认用户名和密码: * navicat 连接Oracle 报错:Cannot load OCI DLL, 126: ### oracle疑难问题排查集 @@ -281,9 +281,9 @@ ORACLE_SID 实例ID * 官网: * DB2 JDBC Driver: -* Ubuntu 16.04安装DB2 Express C v11.1: +* Ubuntu 16.04安装DB2 Express C v11.1: * DB2 9.5 数据库分区管理及应用实践: -* 如何建立DB2分区数据库?: +* 如何建立DB2分区数据库?: * IBM DB2关键特性解析:DB2分区特性: * db2建立schema: @@ -335,7 +335,7 @@ ORACLE_SID 实例ID * * HBase 官方文档(中文): -* HBase介绍: +* HBase介绍: * HBase 权限控制: * HBase Shell 常用操作: diff --git "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 4b3e497..756748c 100644 --- "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -29,7 +29,7 @@ * VIMAdventures: * Vimium - The Hacker's Browser: * Vimperator: -* VIM常见用法总结: +* VIM常见用法总结: * TagCollection: * mpi.vim: diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 896125e..01711c0 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -96,7 +96,7 @@ * Overriding and Hiding Methods: * javac: * javac的调试选项-g的意义: -* javadoc相关问题: +* javadoc相关问题: * JDK自带工具之概览: * How to solve the error: The system cannot find the file C:\ProgramData\Oracle\Java\javapath\java.exe: * 三个实例演示 Java Thread Dump 日志分析: @@ -105,12 +105,12 @@ * Jps介绍以及解决jps无法查看某个已经启动的java进程问题: * Java永久代去哪儿了: * Java8内存模型—永久代(PermGen)和元空间(Metaspace): -* JVM调优总结(转): +* JVM调优总结(转): * Java server application troubleshooting using JDK tools: * jstack简单使用,定位死循环、线程阻塞、死锁等问题: * Java代码质量度量工具大阅兵: -* Java杂项: +* Java杂项: * Java 理论与实践: * 敏捷开发中高质量 Java 代码开发实践: * Java RMI 入门指南: @@ -130,10 +130,10 @@ * 理解OAuth 2.0: * Need to suppress “Warning: running an XSLT 1.0 stylesheet with an XSLT 2.0 processor” in Tomcat std out log file: * Java 授权内幕: -* ServletInputStream的重复读取(多次读取)(转): +* ServletInputStream的重复读取(多次读取)(转): * Developing a Service Provider using Java API(Service Provider Interface): * 驱动模块和桩模块的概念和区别: -* astyle 使用说明: +* astyle 使用说明: * 转一个J2EE开发时的包命名规则,养成良好的开发习惯: * Eclipse 开发WEB项目所遇问题 WebContent WebRoot: * Java调用动态库方法说明: @@ -227,7 +227,7 @@ * Struts2、Spring和Hibernate应用实例: * spring中注册bean(通过代码动态注册): -* Spring框架的反序列化远程代码执行漏洞分析(转): +* Spring框架的反序列化远程代码执行漏洞分析(转): * Spring “redirect:” EL vulnerability?: * 使用监听器对Spring bean id进行唯一校验: * MyEclipse删除对Struts、Hibernate、Spring的支持: @@ -312,13 +312,13 @@ * FAQ What is a Quick Fix?: ? * Eclipse插件开发总群(QQ群):584434100 * Eclipse插件: -* Eclipse相关问题: +* Eclipse相关问题: * Top 10 Java Debugging Tips with Eclipse: -* Linux下安装最新的Eclipse: +* Linux下安装最新的Eclipse: * eclipse调试的方法和技巧: * eclipse调试java程序的九个技巧: * eclipse远程调试Tomcat方法: -* Eclipse远程调试出现“JDWP Transport dt_socket failed to initialize”的解决方案: +* Eclipse远程调试出现“JDWP Transport dt_socket failed to initialize”的解决方案: * Eclipse中用两个控制台测试网络通信程序: * Eclipse jar打包详解: * 如何使用Eclipse将Java项目打成jar包?: @@ -493,7 +493,7 @@ * jcl 与 jul、log4j1、log4j2、logback 的集成原理: * slf4j 与 jul、log4j1、log4j2、logback 的集成原理: * slf4j、jcl、jul、log4j1、log4j2、logback 大总结: -* 热切换Log4j级别配置: +* 热切换Log4j级别配置: * log4j:ERROR Attempted to append to closed appender named: ## Log4E @@ -505,7 +505,7 @@ ## 代码评审 * Jupiter: -* Peer Code Reviews Made Easy with Eclipse Plug-In: +* Peer Code Reviews Made Easy with Eclipse Plug-In: * reviewclipse: * Effective Code Reviews Without the Pain: @@ -707,7 +707,7 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * * Ivy(Apache Ant项目的一个子项目,一个可传递的依赖项管理器): * Apache IvyDE(Eclipse plugin which integrates Apache Ivy's dependency management into Eclipse): -* Eclipse中Ant的配置与测试 转: +* Eclipse中Ant的配置与测试 转: * 使用Ant脚本执行bat文件: ## Eclipse Color Themes @@ -1005,7 +1005,7 @@ The yFiles diagramming software components are extensive class libraries that en ## 分词 * 中文分词器分词效果评估对比: -* 分词工具比较(转): +* 分词工具比较(转): * ik-analyze(java开源中文分词器): * ICTCLAS: diff --git "a/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" index c8df408..7cb6c4c 100644 --- "a/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,6 +1,6 @@ # OJ学习之路 -* ACM竞赛之输入输出: +* ACM竞赛之输入输出: * awesome-algorithm: * LeetCode Online Judge: diff --git "a/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" index bb1ea1c..b8898cb 100644 --- "a/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -41,7 +41,7 @@ * An overview of TEX, its children and their friends: * 使用VSCode编写LaTeX: -* LaTeX内容总结: +* LaTeX内容总结: * TeX/LaTeX 常用宏包简介: * Linux下Texlive的ctex包中文字体问题: * Latex相关资源汇总: diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index 7ae7739..1786f7f 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -40,6 +40,12 @@ ## Softwares/Tools/Knowledge * 一篇文章搞懂Debian_Ubuntu软件包更新和删除: +* 扩容swap文件: +* Linux压缩与解压常用命令: +* Linux乱码问题解决方案: +* linux中无 conio.h的解决办法: +* Linux快捷键: +* ssh相关原理学习与常见错误总结: * Linux命令大全: * explainshell: @@ -71,16 +77,13 @@ * Linux系统里如何彻底的清空屏幕?: * 如何在Linux上将HTML页面转化成png图片: * Ubuntu输入密码登陆后又跳回到登录界面: -* Linux压缩与解压常用命令: * vimrc,bashrc中rc的含义: UNIX Power Tools (3rd Edition).chm 搜索rc * LNMP安装快速导航(官网教程): * ubuntu删除旧内核和多余启动项: * 各个Linux版本的本地root密码破解方法: -* Linux乱码问题解决方案: * Linux 软件看门狗 watchdog: * C语言调试手段:锁定错误的实现方法: * Linux终端字符颜色设置: -* linux中无 conio.h的解决办法: * hexdump命令使用: * ubuntu下终端路径只显示当前目录: * linux连接投影机: @@ -89,12 +92,10 @@ * Linux Troubleshooting Cheatsheet: strace, htop, lsof, tcpdump, iftop & sysdig: * strace: * java.lang.VerifyError: Expecting a stackmap frame at branch target JDK 1.7: -* Rdseed与SAC的安装: * 将Linux下编译的warning警告信息输出到文件中[整理笔记]: * linux C中调用shell命令和运行shell脚本: * find 删除拷贝用法: * linux 修改分区卷标 ( Partition Label ) : -* Linux快捷键: * shell脚本“syntax error:unexpected end of file”解决方案 : * String contains in Bash: * Could not get lock /var/lib/apt/lists/lock - open: @@ -113,7 +114,6 @@ * Shell脚本交互之: 自动输入密码: * Shell中重定向< * linux 终端backspace不能删除字符: -* ssh相关原理学习与常见错误总结: * Fedora 删除旧内核: * linux关于S权限和T权限的介绍: * Linux使用技巧12--Ubuntu代理: @@ -134,6 +134,7 @@ * fswatch: * Compiz: * 新立得(Synaptic): +* gparted: * GLX-Dock: * vncview: * PDFtk: @@ -225,7 +226,6 @@ lsusb -tv # 列出所有USB设备 lsmod # 列出加载的内核模块 env # 查看环境变量资源 - free -m # 查看内存使用量和交换区使用量 df -h # 查看各分区使用情况 df -i # 查看inode使用 du -sh <目录名> # 查看指定目录的大小 @@ -239,7 +239,6 @@ cfdisk -Ps # 查看磁盘分区的用法 cfdisk -Ps 磁盘设备名 只有一个硬盘也可以用 cfdisk -Ps cfdisk -Ps /dev/sda sfdisk -l - swapon -s # 查看所有交换分区 hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备) dmesg | grep IDE # 查看启动时IDE设备检测状况网络 ifconfig # 查看所有网络接口的属性 diff --git "a/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" index f36ca29..caaff1f 100644 --- "a/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -6,7 +6,7 @@ * W3School: * 前端开发框架对比: * 当我说前端基础时,我在说什么? —— 最近几年在前端圈的观察和反思: -* 清理无用的CSS样式的几个工具(转): +* 清理无用的CSS样式的几个工具(转): ## Tools diff --git "a/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" index 929997d..90653d9 100644 --- "a/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -22,11 +22,11 @@ * ~~hadoop2x-eclipse-plugin: ~~ * ~~Eclipse下搭建Hadoop2.4.0开发环境:~~ * ~~使用eclipse连接hadoop失败情况:~~ -* ~~Windows平台下安装Eclipse插件,开发Hadoop应用:~~ +* ~~Windows平台下安装Eclipse插件,开发Hadoop应用:~~ * Hadoop JobHistory: * 国内第一篇详细讲解hadoop2的automatic HA+Federation+Yarn配置的教程: -* 如何编译Apache Hadoop2.2.0源代码: +* 如何编译Apache Hadoop2.2.0源代码: * ZooKeeper的分布模式安装: * Hadoop HDFS和KFS (CloudStore)的比较: * performance-benchmark-cgl-mapreduce-mpi-and-hadoop: diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 7d9d64d..8693bb4 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -48,8 +48,8 @@ * MyEclipse使用总结——MyEclipse10安装SVN插件: * SVN版本库无损迁移与自动备份(一): * SVN版本库无损迁移与自动备份(二): -* SVN+Apache域用户认证配置方法_Windows(转,重新排版,部分内容更新优化): -* Use the SVN command-line tool: +* SVN+Apache域用户认证配置方法_Windows(转,重新排版,部分内容更新优化): +* Use the SVN command-line tool: * 在TortoiseSVN/TortoiseGit中使用BeyondCompare进行差异对比: * SVN的钩子--限制强制写日志(log): * svn ignore 的用法(忽略文件及目录): From 389fbb7f75c462d1b8c9e2d638da09fef9be9d34 Mon Sep 17 00:00:00 2001 From: Aloys Date: Mon, 1 Jan 2024 21:48:57 +0800 Subject: [PATCH 139/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 11 -- ...46\344\271\240\344\271\213\350\267\257.md" | 3 - ...46\344\271\240\344\271\213\350\267\257.md" | 8 - ...46\344\271\240\344\271\213\350\267\257.md" | 160 ++++++++++++++++++ ...46\344\271\240\344\271\213\350\267\257.md" | 4 - ...46\344\271\240\344\271\213\350\267\257.md" | 2 - ...46\344\271\240\344\271\213\350\267\257.md" | 119 +------------ ...46\344\271\240\344\271\213\350\267\257.md" | 3 - ...46\344\271\240\344\271\213\350\267\257.md" | 1 - ...46\344\271\240\344\271\213\350\267\257.md" | 2 - ...46\344\271\240\344\271\213\350\267\257.md" | 1 - ...46\344\271\240\344\271\213\350\267\257.md" | 4 +- ...46\344\271\240\344\271\213\350\267\257.md" | 13 -- ...46\344\271\240\344\271\213\350\267\257.md" | 4 - ...46\344\271\240\344\271\213\350\267\257.md" | 9 +- 15 files changed, 168 insertions(+), 176 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 7e9f67d..cff8495 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -362,17 +362,6 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * 解决adb push时出现的"Read-only file system"问题: * android adb push 与 adb install的比较(两种安装APK的方法): -## Eclipse - -* Android Development Tools for Eclipse: -* eclipse搭建android开发环境: -* Windows7部署Android开发环境傻瓜式教程(Eclipse+ADT): -* AndroidManifest.xml file missing! - -* Android程序开发初级教程(一): -* Android程序开发初级教程(二): -* Android程序开发初级教程(三): - ## App Development Platform * Firebase: diff --git "a/Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" index 4def157..ca81cc8 100644 --- "a/Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -9,9 +9,6 @@ * FBIde - editor for FreeBASIC: * FbEdit FreeBASIC code editor: * FBWiki: -* freebasic.vim: -* Freebasic-vim-syntax-file: -* fbc.vim: * IrrlichtWrapper Library: * Free BASIC 试用: diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index fea246f..03b5e00 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -179,13 +179,6 @@ * WiFi direct 的相关特点: * NATIVE WIFI HOSTED NETWORK VS WIFI DIRECT LEGACY SOFT AP: -## Eclipse CDT - -* -* eclipse 配置 TDM-GCC 64位版方法: -* eclipse写C++控制台程序,不见输出: -* eclipse C/ C++编译含有多个main函数的项目: - ## Dev-C++ * Dev-C++: @@ -281,7 +274,6 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语 * Google Test: * 玩转Google开源C++单元测试框架Google Test系列(gtest)(总): * Code Blocks+gtest环境配置: -* C++ unit test start guide, how to set up Google Test (gtest) in Eclipse?: * CppUnit(C++ port of JUnit): * 使用CppUnit(Windows): diff --git "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 756748c..da55dd8 100644 --- "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -35,6 +35,166 @@ * mpi.vim: * VimLogViewer: +* freebasic.vim: +* Freebasic-vim-syntax-file: +* fbc.vim: + +* slimv: Superior Lisp Interaction Mode for Vim: +* ~~Limp: ~~ + +## Eclipse + +### Eclipse核心 + +* +* Eclipse MarketPlace地址: +* 各个版本的下载地址: +* Eclipse documentation: +* 源码: +* FAQ What is a Quick Fix?: ? +* Eclipse插件开发总群(QQ群):584434100 +* Eclipse插件: +* Eclipse相关问题: +* Top 10 Java Debugging Tips with Eclipse: +* Linux下安装最新的Eclipse: +* Linux下为刚安装好的Eclipse在桌面建一个启动图标: +* eclipse调试的方法和技巧: +* eclipse调试java程序的九个技巧: +* eclipse远程调试Tomcat方法: +* Eclipse远程调试出现“JDWP Transport dt_socket failed to initialize”的解决方案: +* Eclipse中用两个控制台测试网络通信程序: +* Eclipse jar打包详解: +* 如何使用Eclipse将Java项目打成jar包?: +* 'Must Override a Superclass Method' Errors after importing a project into Eclipse: +* SFTP Plug-in for Eclipse: +* Eclipse 远程开发: +* How to set the Eclipse date variable format? + +### Eclipse插件 + +* subclipse: +* Subversive - SVN Team Provider: + +* 如何结合使用 Subversion 和 Eclipse: +* Eclipse + SVN + Google code搭建代码仓库: +* MyEclipse使用总结——MyEclipse10安装SVN插件: + +* EGit: + +* mercurialeclipse: + +* Eclipse Color Themes: +* Eclipse Graphical Editing Framework (GEF): + +* Graphviz Eclipse plug-in: + +* ~~Visual Editor: ~~ +* WindowBuilder(SWT Designer): +* Jigloo SWT/Swing GUI Builder: + +* Web Tools Platform: +* AnyEdit: +* YEdit: +* Properties Editor: +* Eclipse Json Editor Plugin: +* Eclipse-Markdown-Editor-Plugin: +* eclipse-rbe: + +* AgileJ(AgileJ StructureViews is a plugin for Eclipse which generates class diagrams reverse engineered from Java source code.): +* CAP (code analysis plugin): +* Bytecode Outline plugin for Eclipse: +* ~~Eclipse Class Decompiler——Java反编译插件: ~~ +* Enhanced Class Decompiler(fork from Eclipse Class Decompiler): +* ~~jadclipse: ~~ +* ~~Jode Eclipse Plugin: ~~ + +* Eclipse Web Developer Tools: +* Linux Tools - GProf Support: +* JavaCC Eclipse Plugin: + +* Apache IvyDE(Eclipse plugin which integrates Apache Ivy's dependency management into Eclipse): +* Eclipse中Ant的配置与测试 转: + +* Peer Code Reviews Made Easy with Eclipse Plug-In: +* reviewclipse: + +* StartExplorer: +* Eclipse Mylyn: +* JavaScript Development Tools (JSDT): +* EClim: +* ~~Eclipse EditorList Plug-in: ~~ +* eclipse-games: +* MouseFeed: +* FileSync: +* CODE RECOMMENDERS: +* EasyShell: +* ~~Installing Drools plugin on Eclipse: ~~ + +* Groovy with Eclipse - Tutorial: +* groovy-eclipse: +* ~~Eclipse Photran Fortran Development Tools:~~ +* ~~Cusp(Cusp is an Eclipse IDE plugin that runs on top of SBCL):~~ +* The TeXlipse plugin for Eclipse provides support for LaTeX projects: +* Configuring Eclipse as TCL/TK IDE: + +## MyEclipse + +* +* 官方中文网: +* 在MyEclipse下创建Java Web项目 入门(图文并茂)经典教程: +* MyEclipse删除对Struts、Hibernate、Spring的支持: + +### Eclipse插件开发 + +* Eclipse 4 RCP指南: +* Eclipse RCP (Rich Client Platform) - Tutorial: +* Eclipse Plug-in & OSGI: +* Eclipse插件开发打包为Update Site: +* 插件开发总览: +* Tycho - Building Eclipse plug-ins with maven: +* 使用Tycho来构建你的RCP程序: +* Dependencies from pom.xml not considered by Eclipse in Tycho Project: + +### Eclipse C/C++ + +* Eclipse CDT: +* eclipse 配置 TDM-GCC 64位版方法: +* eclipse写C++控制台程序,不见输出: +* eclipse C/ C++编译含有多个main函数的项目: +* C++ unit test start guide, how to set up Google Test (gtest) in Eclipse?: + +### Eclipse Android + +* ~~Android Development Tools for Eclipse: ~~ +* ~~eclipse搭建android开发环境: ~~ +* ~~Windows7部署Android开发环境傻瓜式教程(Eclipse+ADT): ~~ + +### Eclipse 前端 + +* Web Tools Platform(WTP): +* The JavaScript Development Tools (JSDT, 如果安装了WTP就不用再安装JSDT了,后者是前者的一个子项目): +* Spket IDE(提供Eclipse的插件): +* Aptana(提供Eclipse插件): +* + +### Eclipse J2EE + +* Eclipse 开发WEB项目所遇问题 WebContent WebRoot: +* spring-ide: + +### Eclipse Maven + +* M2Eclipse: +* 安装说明(Eclipse EE中自带): +* maven项目在eclipse的library中没有Maven Dependencies: + +### Eclipse大数据 + +* ~~hadoop2x-eclipse-plugin: ~~ +* ~~Eclipse下搭建Hadoop2.4.0开发环境:~~ +* ~~使用eclipse连接hadoop失败情况:~~ +* ~~Windows平台下安装Eclipse插件,开发Hadoop应用:~~ + ## Jetbrains * Clion: diff --git "a/Fortran\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Fortran\345\255\246\344\271\240\344\271\213\350\267\257.md" index a0f24f1..5e02731 100644 --- "a/Fortran\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Fortran\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,7 +8,3 @@ * Approximatrix: * Fortran Coder: -## Photran - -* 项目地址: -* 安装说明: diff --git "a/Groovy\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Groovy\345\255\246\344\271\240\344\271\213\350\267\257.md" index 0a9d573..cef179c 100644 --- "a/Groovy\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Groovy\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -2,7 +2,5 @@ * * source: -* Groovy with Eclipse - Tutorial: -* groovy-eclipse: * 实战 Groovy: 在 Java 应用程序中加一些 Groovy 进来: * Grape: diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 01711c0..2c520b6 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -135,7 +135,6 @@ * 驱动模块和桩模块的概念和区别: * astyle 使用说明: * 转一个J2EE开发时的包命名规则,养成良好的开发习惯: -* Eclipse 开发WEB项目所遇问题 WebContent WebRoot: * Java调用动态库方法说明: * Servlet容器的匹配过程: @@ -219,7 +218,6 @@ * 源码:spring-framework * Spring Tool Suite: -* spring-ide: * Spring 的优秀工具类盘点: * Spring使用Cache: * spring security中限制用户登录次数超过限制的处理: @@ -230,7 +228,6 @@ * Spring框架的反序列化远程代码执行漏洞分析(转): * Spring “redirect:” EL vulnerability?: * 使用监听器对Spring bean id进行唯一校验: -* MyEclipse删除对Struts、Hibernate、Spring的支持: * 解决java.lang.IncompatibleClassChangeError: ## Hibernate @@ -302,66 +299,6 @@ * * -## Eclipse - -* -* Eclipse MarketPlace地址: -* 各个版本的下载地址: -* Eclipse documentation: -* 源码: -* FAQ What is a Quick Fix?: ? -* Eclipse插件开发总群(QQ群):584434100 -* Eclipse插件: -* Eclipse相关问题: -* Top 10 Java Debugging Tips with Eclipse: -* Linux下安装最新的Eclipse: -* eclipse调试的方法和技巧: -* eclipse调试java程序的九个技巧: -* eclipse远程调试Tomcat方法: -* Eclipse远程调试出现“JDWP Transport dt_socket failed to initialize”的解决方案: -* Eclipse中用两个控制台测试网络通信程序: -* Eclipse jar打包详解: -* 如何使用Eclipse将Java项目打成jar包?: -* 'Must Override a Superclass Method' Errors after importing a project into Eclipse: -* SFTP Plug-in for Eclipse: -* Eclipse 远程开发: -* How to set the Eclipse date variable format? - -## Eclipse插件 - -* GEF: -* Web Tools Platform: -* AnyEdit: -* YEdit: -* Enhanced Class Decompiler: -* Eclipse Web Developer Tools: -* Properties Editor: -* StartExplorer: -* Eclipse Mylyn: -* JavaScript Development Tools (JSDT): -* EClim: -* ~~Eclipse EditorList Plug-in: ~~ -* eclipse-games: -* MouseFeed: -* FileSync: -* eclipse-rbe: -* CODE RECOMMENDERS: -* Eclipse EGit: -* Spket IDE(提供Eclipse的插件): -* Aptana(提供Eclipse插件): -* EasyShell: - -## Eclipse插件开发 - -* Eclipse 4 RCP指南: -* Eclipse RCP (Rich Client Platform) - Tutorial: -* Eclipse Plug-in & OSGI: -* Eclipse插件开发打包为Update Site: -* 插件开发总览: -* Tycho - Building Eclipse plug-ins with maven: -* 使用Tycho来构建你的RCP程序: -* Dependencies from pom.xml not considered by Eclipse in Tycho Project: - ## RxJava * RxJava: Reactive Extensions for the JVM: @@ -375,7 +312,6 @@ * AmaterasUML: * Green UML: * ModelGoon UML4Java(已停止维护): -* AgileJ(AgileJ StructureViews is a plugin for Eclipse which generates class diagrams reverse engineered from Java source code.): * StarUML: * Astah(JUDE): * UML关系(泛化,实现,依赖,关联(聚合,组合)): @@ -411,9 +347,6 @@ ## AWT/Swing/SWT/Jface/JavaFX -* Visual Editor(deprated): -* WindowBuilder(SWT Designer): -* Jigloo SWT/Swing GUI Builder: * SWT、Swing 或 AWT:哪个更适合您? * OpenSwing: * FlatLaf: @@ -505,8 +438,6 @@ ## 代码评审 * Jupiter: -* Peer Code Reviews Made Easy with Eclipse Plug-In: -* reviewclipse: * Effective Code Reviews Without the Pain: ## guava @@ -524,7 +455,7 @@ * Class Dependency Analyzer (CDA): * Classycle: Analysing Tools for Java Class and Package Dependencies: -* STAN, the leading Eclipse-based structure analysis tool for Java: +* STAN(Structure Analysis for Java): * nWire, Code Exploration for Eclipse(not free): ## OW2 @@ -532,7 +463,6 @@ OW2 is an independent, global, open-source software community. The mission of OW2 is to a) promote the development of open-source middleware, generic business applications, cloud computing platforms and b) foster a vibrant community and business ecosystem. * ASM: -* Bytecode Outline plugin for Eclipse: * JOTM: * XAPool: @@ -602,7 +532,7 @@ Eclipse中`Update Project`,选择`Force Update of Snapshots/Releases` * httpcomponents-httpclient-4.5.chm * 使用样例(搜索HttpClientTest): -## Maven and M2Eclipse +## Maven * Maven项目地址: * Maven Central Repository: @@ -616,8 +546,6 @@ Eclipse中`Update Project`,选择`Force Update of Snapshots/Releases` * Maven Ant Tasks: * 阿里云云效 Maven: * Maven插件maven-antrun-plugin的使用: -* M2Eclipse项目地址: -* 安装说明(Eclipse EE中自带): * 如何用Maven创建web项目(具体步骤): * maven依赖总结: * maven2 up to maven3的'version' contains an expression but should be a constant: @@ -631,7 +559,6 @@ Eclipse中`Update Project`,选择`Force Update of Snapshots/Releases` * Maven添加本地依赖: * Maven常用插件: * How to Publish Maven Site Docs to BitBucket or GitHub Pages: -* maven项目在eclipse的library中没有Maven Dependencies: * Maven Enforcer Plugin: * templating-maven-plugin: @@ -706,31 +633,13 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * * Ivy(Apache Ant项目的一个子项目,一个可传递的依赖项管理器): -* Apache IvyDE(Eclipse plugin which integrates Apache Ivy's dependency management into Eclipse): -* Eclipse中Ant的配置与测试 转: * 使用Ant脚本执行bat文件: -## Eclipse Color Themes - -* 项目地址: - -## MyEclipse - -* -* 官方中文网: -* 在MyEclipse下创建Java Web项目 入门(图文并茂)经典教程: - ## Clover(收费) * 项目地址: * 安装说明: -## CAP (code analysis plugin) - - CAP (code analysis plugin) is an eclipse plugin (written in Java) that analysis your java project. It checks dependencies between the classes and packages and gives you a hint about the architecture, reusability and maintainability. ("JDepend 2") - -* - ## Java程序分析工具 * 洞悉 Java 应用性能瓶颈的利器:Visual Performance Analyzer: @@ -739,14 +648,10 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion ## 反编译 -* ~~Eclipse Class Decompiler——Java反编译插件: ~~ -* Enhanced Class Decompiler(fork from Eclipse Class Decompiler): * JD(Java Decompiler,不支持命令行使用,无法批量编译): * ~~jad(支持命令行方式使用,支持的class版本过低): ~~ -* ~~jadclipse: ~~ * ~~jdec(支持命令行方式使用,支持的class版本过低): ~~ * ~~JODE(Java Optimize and Decompile Environment, ,支持的class版本过低): ~~ -* ~~Jode Eclipse Plugin: ~~ * DJ Java Decompiler(收费软件): ## ProGuard @@ -760,12 +665,6 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * Metrics-Java版的指标度量工具之一: * Metrics-Java版的指标度量工具之二: -## SourceHelper - - The “Source Helper” plugin is an Eclipse plugin that takes a very useful feature that exists in Intellij IDEA and puts it into Eclipse. In short, the feature shows the code of an out-of-visible-range starting bracket by floating a window that shows the code you cannot see. This helps immensely when trying to identify what closing bracket belongs to what part of the code. - -* - ## Structure101 Structure101 is an agile architecture development environment (ADE) that lets the software development team organize a codebase. @@ -801,17 +700,12 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * -## GProf - -* Linux Tools Project/GProf/User Guide: - ## Dot and Graphviz Graphviz (Graph Visualization Software) 是一个由AT&T实验室启动的开源工具包。DOT是一种图形描述语言,非常简单的,Graphviz就是用来处理这种语言的工具。 * Graphviz项目地址: * 程序员的绘图利器 — Graphviz: -* Graphviz Eclipse plug-in: ## Selenium @@ -834,13 +728,13 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion Virgo from EclipseRT is a completely module-based Java application server that is designed to run enterprise Java applications and Spring-powered applications with a high degree of flexibility and reliability. It offers a simple yet comprehensive platform to develop, deploy, and service enterprise Java applications. -* 官网: +* Virgo: ## Jetty Jetty provides a Web server and javax.servlet container, plus support for SPDY, WebSocket, OSGi, JMX, JNDI, JAAS and many other integrations. These components are open source and available for commercial use and distribution. -* 官网: +* Jetty: ## 字符编码判断 @@ -878,7 +772,6 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * JSON in Java [package org.json]: * Json-lib: * fastjson: -* Eclipse Json Editor Plugin: * Jackson: * Jackson: * Jackson: @@ -965,7 +858,6 @@ The yFiles diagramming software components are extensive class libraries that en ## JavaCC * -* JavaCC Eclipse Plugin: ## sablecc @@ -974,7 +866,7 @@ The yFiles diagramming software components are extensive class libraries that en ## Xtext -* +* Xtext: ## antlr @@ -1028,7 +920,6 @@ The yFiles diagramming software components are extensive class libraries that en * * * ~~droolsjbpm-tools: ~~ -* ~~Installing Drools plugin on Eclipse: ~~ * Drools规则描述语言快速手册: * Why isn't Drools working with Java 8? diff --git "a/Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" index ea292d1..49cbde7 100644 --- "a/Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -19,14 +19,11 @@ * lispforum: * Lisp: Common Lisp, Racket, Clojure, Emacs Lisp: * SLIME: Superior Lisp Interaction Mode for Emacs: -* slimv: Superior Lisp Interaction Mode for Vim: * lispide: * Dandelion: * ~~My Emacs For Common Lisp: ~~ * ~~Lispbox: ~~ * ~~Jabberwocky a Lisp IDE: ~~ -* ~~Limp: ~~ -* ~~Cusp(Cusp is an Eclipse IDE plugin that runs on top of SBCL):~~ * Racket: * newLISP: diff --git "a/Markdown\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Markdown\345\255\246\344\271\240\344\271\213\350\267\257.md" index 43ad5fc..13a32f5 100644 --- "a/Markdown\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Markdown\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,6 @@ # Markdown学习之路 * Markdown 语法说明 (简体中文版): -* Eclipse-Markdown-Editor-Plugin: * Typora: * MarkdownPad: diff --git "a/TCL\344\270\216TK\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/TCL\344\270\216TK\345\255\246\344\271\240\344\271\213\350\267\257.md" index 03bced4..36dc159 100644 --- "a/TCL\344\270\216TK\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/TCL\344\270\216TK\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -6,6 +6,4 @@ * MyTcl: * ACTIVETCL: -* Configuring Eclipse as TCL/TK IDE: - * Tcler's Wiki: diff --git "a/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" index b8898cb..fa51aae 100644 --- "a/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -12,7 +12,6 @@ * LEd, is an environment for rapid TeX and LaTeX document development: * Kile LaTeX Editor: * Gummi: The simple LaTeX editor: -* The TeXlipse plugin for Eclipse provides support for LaTeX projects: * TeXmacs: * The easy to use, online, collaborative LaTeX editor: diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index 1786f7f..f4b6209 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -77,7 +77,6 @@ * Linux系统里如何彻底的清空屏幕?: * 如何在Linux上将HTML页面转化成png图片: * Ubuntu输入密码登陆后又跳回到登录界面: -* vimrc,bashrc中rc的含义: UNIX Power Tools (3rd Edition).chm 搜索rc * LNMP安装快速导航(官网教程): * ubuntu删除旧内核和多余启动项: * 各个Linux版本的本地root密码破解方法: @@ -118,7 +117,6 @@ * linux关于S权限和T权限的介绍: * Linux使用技巧12--Ubuntu代理: * Bash的陷阱: -* Linux下为刚安装好的Eclipse在桌面建一个启动图标: * Linux命令之file - 检测并显示文件类型: * Linux Centos 删除除某(多)个文件之外的所有文件: * linux如何删除zip包中某个文件夹及里面的内容: @@ -159,6 +157,8 @@ * Poptop - The PPTP Server for Linux: * Linux Extended BPF (eBPF) Tracing Tools: +* grep_sed_awk练习: + * GNU Grep: * ack: diff --git "a/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" index caaff1f..2d1f0a8 100644 --- "a/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -16,18 +16,6 @@ * Tridiv is a web-based editor for creating 3D shapes in CSS: * CodeMirror: -## WTP - -Web Tools Platform(WTP): - -## JSDT - - The JavaScript Development Tools (JSDT) provide plug-ins that implement an IDE supporting the development of JavaScript applications and JavaScript within web applications. It adds a JavaScript project type and perspective to the Eclipse Workbench as well as a number of views, editors, wizards, and builders. - -* 官网: - -注:如果安装了WTP就不用再安装JSDT了,后者是前者的一个子项目 - ## ECMACSCRIPT 官网: @@ -95,7 +83,6 @@ Web Tools Platform(WTP): * * AngularJS中文社区: -* ## Foundation diff --git "a/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" index 90653d9..453cd66 100644 --- "a/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -19,10 +19,6 @@ * Hadoop 1.0.0集群安装: * 一步步教你Hadoop多节点集群安装配置: -* ~~hadoop2x-eclipse-plugin: ~~ -* ~~Eclipse下搭建Hadoop2.4.0开发环境:~~ -* ~~使用eclipse连接hadoop失败情况:~~ -* ~~Windows平台下安装Eclipse插件,开发Hadoop应用:~~ * Hadoop JobHistory: * 国内第一篇详细讲解hadoop2的automatic HA+Federation+Yarn配置的教程: diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 8693bb4..b9bb24e 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -26,9 +26,7 @@ * 原项目地址,现在仍保留: * 现在: * 安装包下载地址: -* subclipse: -* Subversive - SVN Team Provider: -* CVS Team Provider: + * Windows Command Line客户端推荐Win32Svn: * Windows GUI客户端推荐TortoiseSVN: * Linux GUI客户端推荐RabbitVCS: @@ -43,9 +41,6 @@ * 本地搭建SVN局域网服务器: * windows下配置VisualSVN Server服务器(服务端和客户端): * 使用svn——项目的目录布局: -* 如何结合使用 Subversion 和 Eclipse: -* Eclipse + SVN + Google code搭建代码仓库: -* MyEclipse使用总结——MyEclipse10安装SVN插件: * SVN版本库无损迁移与自动备份(一): * SVN版本库无损迁移与自动备份(二): * SVN+Apache域用户认证配置方法_Windows(转,重新排版,部分内容更新优化): @@ -78,7 +73,6 @@ * TortoiseGit Disconnected:No supported authentication methods available: * TortoiseGit Right click in Explorer hangs for long time: * gitlab: -* EGit: ### Git优秀文章 @@ -192,7 +186,6 @@ git push origin master:b1 ## Mercurial * Mercurial: -* mercurialeclipse: * tortoisehg: ## Perforce From 14b226f9074eaff96fb142e1718e1bbc1bf0f2c2 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 14 Jan 2024 21:57:08 +0800 Subject: [PATCH 140/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 4 --- ...46\344\271\240\344\271\213\350\267\257.md" | 27 ++++++++++++++++--- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" index da55dd8..a3780a7 100644 --- "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -103,10 +103,6 @@ * AgileJ(AgileJ StructureViews is a plugin for Eclipse which generates class diagrams reverse engineered from Java source code.): * CAP (code analysis plugin): * Bytecode Outline plugin for Eclipse: -* ~~Eclipse Class Decompiler——Java反编译插件: ~~ -* Enhanced Class Decompiler(fork from Eclipse Class Decompiler): -* ~~jadclipse: ~~ -* ~~Jode Eclipse Plugin: ~~ * Eclipse Web Developer Tools: * Linux Tools - GProf Support: diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 2c520b6..2b8c9d9 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -648,11 +648,30 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion ## 反编译 -* JD(Java Decompiler,不支持命令行使用,无法批量编译): -* ~~jad(支持命令行方式使用,支持的class版本过低): ~~ -* ~~jdec(支持命令行方式使用,支持的class版本过低): ~~ -* ~~JODE(Java Optimize and Decompile Environment, ,支持的class版本过低): ~~ +* jadx(Dex to Java decompiler): +* Apktool: +* GDA-android-reversing-Tool: * DJ Java Decompiler(收费软件): +* AndroChef Java Decompiler(收费软件): +* JEB by PNF Software: +* ~~JD(不支持命令行使用,无法批量编译,支持的class版本过低):~~ +* ~~jad(支持命令行方式使用,支持的class版本过低): ~~ +* ~~uuDaJava(基于jad): ~~ +* ~~jadclipse(基于jad): ~~ +* ~~jdec(支持命令行方式使用,支持的class版本过低): ~~ +* ~~JODE(Java Optimize and Decompile Environment, ,支持的class版本过低): ~~ +* ~~Jode Eclipse Plugin(基于JODE): ~~ +* Fernflower(IDEA内置反编译工具): +* Vineflower: +* CFR(Another Java Decompiler): +* Procyon: +* Luyten(Java Decompiler Gui for Procyon): +* Krakatau: +* enjarify: +* bytecode-viewer: +* jd-gui-duo: +* ~~Eclipse Class Decompiler——Java反编译插件: ~~ +* Enhanced Class Decompiler(fork from Eclipse Class Decompiler): ## ProGuard From e677796fb574779dfd4ad3898b7424d283aede0f Mon Sep 17 00:00:00 2001 From: Aloys Date: Wed, 7 Feb 2024 21:59:16 +0800 Subject: [PATCH 141/234] update --- ChooseYourBest.md | 7 +++++++ "OCaml\345\255\246\344\271\240\344\271\213\350\267\257.md" | 4 ++++ ...206\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + 3 files changed, 12 insertions(+) create mode 100644 "OCaml\345\255\246\344\271\240\344\271\213\350\267\257.md" diff --git a/ChooseYourBest.md b/ChooseYourBest.md index e31e53c..4cdcee7 100644 --- a/ChooseYourBest.md +++ b/ChooseYourBest.md @@ -74,6 +74,7 @@ * 在线GIF生成和编辑工具: * 各种文件格式转换: * File conversion: +* Protobuf Decoder: ## 数据恢复工具 @@ -144,10 +145,16 @@ ## SSH/FTP +* MobaXterm(自带rsync等工具,且免费): +* XManager/XShell/XSftp(收费): +* XShell使用问题汇总: * FileZilla: * WinSCP: * PuTTY: * Pietty: +* SecureCRT(收费): +* SecureFX(收费): +* ~~SSH Secure Shell Client(无官网): ~~ ## Others diff --git "a/OCaml\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/OCaml\345\255\246\344\271\240\344\271\213\350\267\257.md" new file mode 100644 index 0000000..560ca06 --- /dev/null +++ "b/OCaml\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -0,0 +1,4 @@ +# OCaml学习之路 + +* OCaml: +* opam(OCaml Package Manager): \ No newline at end of file diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index b9bb24e..8bb3cae 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -83,6 +83,7 @@ * git-credential-store: * Caching your GitHub password in Git: * 执行Git命令时出现各种 SSL certificate problem 的解决办法: +* Git 配置代理,解决 "Failed to connect to github.com port 443" 及 "Recv failure: Connection was reset" 等问题: * warning: remote HEAD refers to nonexistent ref, unable to checkout: * git clone 时显示Filename too long的解决办法: * 分支管理策略: From 1e6c90cba0c0d1d159b9308e0d4754ab10eb5d95 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 25 Feb 2024 23:36:22 +0800 Subject: [PATCH 142/234] update --- ...AndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" | 4 +++- "J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- "Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" index a3780a7..228a194 100644 --- "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -133,7 +133,7 @@ * The TeXlipse plugin for Eclipse provides support for LaTeX projects: * Configuring Eclipse as TCL/TK IDE: -## MyEclipse +### MyEclipse * * 官方中文网: @@ -193,7 +193,9 @@ ## Jetbrains +* IntelliJ IDEA: * Clion: +* RustRover: * Eclipse Code Formatter: ## Emacs diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 2b8c9d9..e6dba1f 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -662,7 +662,7 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * ~~JODE(Java Optimize and Decompile Environment, ,支持的class版本过低): ~~ * ~~Jode Eclipse Plugin(基于JODE): ~~ * Fernflower(IDEA内置反编译工具): -* Vineflower: +* Vineflower(QuiltflowerFork自Fernflower,后改名叫做Quiltflower): * CFR(Another Java Decompiler): * Procyon: * Luyten(Java Decompiler Gui for Procyon): diff --git "a/Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" index b20504e..ac45be2 100644 --- "a/Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -2,3 +2,5 @@ * * Rust Documentation: +* The Rust Programming Language: +* Rust 程序设计语言: From 9a8b5ba5cd8908c144afe8e6d53f17e8b6e34197 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 25 Feb 2024 23:43:09 +0800 Subject: [PATCH 143/234] update --- ...rAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + "Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" | 3 +++ 2 files changed, 4 insertions(+) diff --git "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 228a194..0046420 100644 --- "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -236,6 +236,7 @@ ## Others +* Lightly: * notepad++: * geany: * Lime Text: diff --git "a/Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" index ac45be2..42ee9e8 100644 --- "a/Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -4,3 +4,6 @@ * Rust Documentation: * The Rust Programming Language: * Rust 程序设计语言: + +* 欢迎来到 Comprehensive Rust: +* Android Rust 简介: From b7be146da285d9b0139cd88e543f2372750905ed Mon Sep 17 00:00:00 2001 From: Aloys Date: Mon, 26 Feb 2024 23:21:30 +0800 Subject: [PATCH 144/234] update --- "Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" | 5 ++++- ...6\241\345\255\246\344\271\240\344\271\213\350\267\257.md" | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git "a/Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" index 42ee9e8..3cb4494 100644 --- "a/Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -4,6 +4,9 @@ * Rust Documentation: * The Rust Programming Language: * Rust 程序设计语言: - +* Rust语言圣经(Rust Course): * 欢迎来到 Comprehensive Rust: + * Android Rust 简介: + +* awesome-rust: diff --git "a/\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" index 8433905..75041f0 100644 --- "a/\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -11,6 +11,9 @@ ## Adobe Audition +* RX: +* fabfilter: + ## Adobe Dreamweaver ## Adobe InDesign From d2d2f05267d20f0bbce244e3b44fb7cd995d97c5 Mon Sep 17 00:00:00 2001 From: Aloys Date: Tue, 27 Feb 2024 08:26:16 +0800 Subject: [PATCH 145/234] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0ff5a77..119c1ca 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # cnblogs [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) -[![Maintenance](https://img.shields.io/maintenance/yes/2023.svg)](https://github.com/jiangxincode/cnblogs) +[![Maintenance](https://img.shields.io/maintenance/yes/2024.svg)](https://github.com/jiangxincode/cnblogs) [![GitHub license](https://img.shields.io/github/license/mashape/apistatus.svg)](http://mit-license.org/) 一些我在平时工作和学习中积累的编程相关的资源。每个程序员都有自己的学习之路,过程中会学习各种各样的网上知识,学习完最好记录下来,每隔一段时间看一看,会有不一样的收获。 From 5069017e0f84d01daea110d1e3a924ead93b5854 Mon Sep 17 00:00:00 2001 From: Aloys Date: Fri, 1 Mar 2024 21:47:31 +0800 Subject: [PATCH 146/234] update --- ...45\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + ...45\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + ...45\255\246\344\271\240\344\271\213\350\267\257.md" | 11 ++++++----- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index cff8495..1d46d33 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -283,6 +283,7 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 ## Libraries +* Dagger2 使用: * butterknife: * xUtils3: * SlidingMenu: diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 03b5e00..af56146 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -234,6 +234,7 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语 * 基于X的GNOME、GTK、GDK、XLib、GLib等之间的关系: * GNOME 开发者中心: +* ~~GNOME Older guides and API references: ~~ * Vala: * Anjuta(不推荐): diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index e6dba1f..9c6c23c 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -203,7 +203,8 @@ ## Java EE * Jakarta EE: -* Jakarta EE Platform Project: +* Jakarta EE Platform Project: +* Jakarta EE Platform: * ~~Java EE: ~~ * Oracle Java SE Support Roadmap: @@ -212,12 +213,12 @@ ## Spring * 官网: -* 文档: +* 文档: * Spring Framework 开发参考手册: -* Spring Security: +* Spring Security: * 源码:spring-framework -* Spring Tool Suite: +* Spring Tools: * Spring 的优秀工具类盘点: * Spring使用Cache: * spring security中限制用户登录次数超过限制的处理: @@ -263,7 +264,7 @@ ## WebService * Restlet: -* Apache CXF: +* Apache CXF(开始叫XFire): * axis2: * Jersey: * Style of WebService: REST vs. SOAP: From cf82d19b843c8ece1d03436d5183b28afa3e422c Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 10 Mar 2024 18:43:46 +0800 Subject: [PATCH 147/234] update --- ...6C++\345\255\246\344\271\240\344\271\213\350\267\257.md" | 6 +++++- "Golang\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + "PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...16TK\345\255\246\344\271\240\344\271\213\350\267\257.md" | 4 +++- ...\256\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + 5 files changed, 12 insertions(+), 2 deletions(-) diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index af56146..ee3d0c2 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -124,6 +124,8 @@ * C POSIX library: * POSIX.1-2017: +* Linux 常用 C 函数参考手册: + * GCC, the GNU Compiler Collection: * The LLVM Compiler Infrastructure: * clang: a C language family frontend for LLVM: @@ -229,12 +231,14 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语 * GTK+: * GTK文档: +* GTK 4 Tutorial for beginners: * 在gtk+程序中显示中文说明: * 使用 GLib 工具集管理 C 数据帖子发表于: -* 基于X的GNOME、GTK、GDK、XLib、GLib等之间的关系: * GNOME 开发者中心: * ~~GNOME Older guides and API references: ~~ +* Project Ridley: +* libgnome and libgnomeui Must Die! * Vala: * Anjuta(不推荐): diff --git "a/Golang\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Golang\345\255\246\344\271\240\344\271\213\350\267\257.md" index 0933647..48d3a23 100644 --- "a/Golang\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Golang\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,6 +1,7 @@ # Golang学习之路 * Go: +* Go Documentation: * Go (programming language): * Go语言圣经(中文版): * Go 学习笔记: diff --git "a/PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" index 4caa28f..0c6d4e9 100644 --- "a/PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,6 +1,8 @@ # PHP学习之路 * PHP: +* PHP Manual: +* ~~PHP 5 Manual: ~~ * Apache HTTP Server: diff --git "a/TCL\344\270\216TK\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/TCL\344\270\216TK\345\255\246\344\271\240\344\271\213\350\267\257.md" index 36dc159..14ca590 100644 --- "a/TCL\344\270\216TK\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/TCL\344\270\216TK\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -4,6 +4,8 @@ * tclsqueak: * CrowTDE: * MyTcl: -* ACTIVETCL: + +* ACTIVETCL: +* Getting started with ActiveTc: * Tcler's Wiki: diff --git "a/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" index 453cd66..6230ffd 100644 --- "a/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,6 +1,7 @@ ## Hadoop * +* Apache Hadoop API REFERENCE: * Hadoop: Setting up a Single Node Cluster: * Hadoop Cluster Setup: * HDFS Users Guide: From fe9b321692d8f5732aec0c0a67e52a5989ef0751 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 10 Mar 2024 21:09:32 +0800 Subject: [PATCH 148/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 69 +++++++++++++++++-- ChooseYourBest.md | 10 --- 2 files changed, 62 insertions(+), 17 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 1d46d33..a412fa7 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -15,7 +15,6 @@ * Managing the System UI: * Create and manage notification channels: * Support different screen sizes: -* Optimize for Doze and App Standby: * Enhance graphics with wide color content: * NDK: @@ -76,15 +75,75 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * Google 又弃坑了,Jack+Jill vs. javac+dx: * Android系统架构-[Android取经之路]: * Android R Framework流程分析: -* 深入分析 Android 系统返回手势的实现原理: -* Android 13 返回导航大变更:返回键彻底废弃 + 可预见型返回手势: * 深入源码解析Android中的Handler,Message,MessageQueue,Looper: * Fragment相关源码解析一——FragmentManagerImpl和BackStackRecord: * Fragment相关源码解析二——生命周期: * Fragment相关源码解析三——状态保存与恢复: + +### 手势导航相关 + +* 深入分析 Android 系统返回手势的实现原理: +* Android 13 返回导航大变更:返回键彻底废弃 + 可预见型返回手势: +* Android 14 之返回界面升级:预览目标界面 + 全新返回箭头: +* 开启全面屏体验 | 手势导航 (一): +* 处理视觉冲突 | 手势导航 (二): +* 如何处理手势冲突 | 手势导航连载 (三): +* 沉浸模式 | 手势导航连载 (四) : + +### Input相关 + * 图解 Android 事件分发机制: * requestDisallowInterceptTouchEvent() 阻止父层的View截获touch事件(事件处理机制): * View·InputEvent事件投递源码分析: +* Android 输入系统【1】通过 IMS 的创建理解 Android 的输入流程: +* input子系统详解: +* 图解Android - Android GUI 系统 (5) - Android的Event Input System: +* Android input专题: +* Android InputDispatch事件派发->选择目标窗口: +* 10.12 android输入系统_InputStage理论: +* Android Input 4: +* kOS(13):inputflinger—InputReader线程: +* Android Input (4) -- inputDispatcher到ViewRootImpl: +* 【Android休眠】之Android对PowerKey事件的处理(2)EventHub: +* Android_input系统分析EventHub::getevents: +* Linux/Android——Input系统之InputReader (七): +* Android触摸事件的传递(四-1)--输入系统-InputReader: +* Input源码解读——从"Show tabs"开始: + +### 电源管理 + +* Optimize for Doze and App Standby: +* Android 11(R) Power HAL AIDL简析 -- 基本接口: + +### Battery相关 + +* Android 8.1 Battery系列(一) BatteryService分析: +* Android 8.1 Battery系列(二) BatteryStatsService分析: +* Android 8.1 Battery系列(三) PowerProfile和power_profile.xml: +* [Android Framework] 8.1 Battery系列(四) 电量还需多长时间充满时间计算: +* [Android Framework] 8.1 Battery系列(五) 电量预计可用多长时间计算: +* [Android Framework] 8.1 Battery系列(六) 上次充满电计算: +* Android 8.1 Battery系列(七) BatteryStatsHelper类和耗电量统计: + +* 通过 Battery Historian 工具分析 Android APP 耗电情况: +* AndroidO Battery saver省电助手实现原理: + +* battery-historian: + +### Binder + +* Android Binder设计与实现 - 设计篇: +* Service/Binder/Messenger/AIDL: +《Android开发艺术探索》第2章、第9章 +* 深入Android HAL binder: +* HwBinder入门篇-Android10.0 HwBinder通信原理(一): +* HIDL详解-Android10.0 HwBinder通信原理(二): +* BpHwBinder: +* Android源码的Binder权限是如何控制? +* Android Binder异常传递流程分析: + +### 稳定性 + +* 系统反复重启--RescueParty触发recovery记录: ## Article @@ -99,8 +158,6 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * Android异步更新UI的几种方法: * AsyncTaskLoader vs AsyncTask: -* Service/Binder/Messenger/AIDL: +《Android开发艺术探索》第2章、第9章 - * Fragments:Pro Android 5[精通Android 3] Chapter 8 * Android Fragment的用法(一): * 为什么要用Fragment.setArguments(Bundle bundle)来传递参数: @@ -148,7 +205,6 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * Android系统开篇: * 对于android.intent.action.MAIN和android.intent.category.LAUNCHER的理解: * 详解 Android 通信: -* Android Bander设计与实现 - 设计篇: * Android Application的使用及其生命周期: * Android Partitions Explained: boot, system, recovery, data, cache & misc: * Android for work总结(上): @@ -345,7 +401,6 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * How do I discover memory usage of my application in Android? * Android adb bugreport工具分析和使用: -* battery-historian: * ChkBugReport: * loganalysis(Android日志分析工具): diff --git a/ChooseYourBest.md b/ChooseYourBest.md index 4cdcee7..a3e1deb 100644 --- a/ChooseYourBest.md +++ b/ChooseYourBest.md @@ -66,16 +66,6 @@ * Fixefox: * TorBrowser: -## Tools Online - -* 各种表格格式的互转(Excel/Markdown/LaTeX等): -* 各种站长常用工具,最常用的是时间戳转换: -* 各种在线工具,最常用的是str与hex的互转: -* 在线GIF生成和编辑工具: -* 各种文件格式转换: -* File conversion: -* Protobuf Decoder: - ## 数据恢复工具 * DataNumen文件恢复: From f8ff1a4c19c27bd56a4f5e8a693d8b4efb9b121f Mon Sep 17 00:00:00 2001 From: Aloys Date: Mon, 11 Mar 2024 23:12:21 +0800 Subject: [PATCH 149/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 128 +++++++++++------- 1 file changed, 81 insertions(+), 47 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index a412fa7..c7634f0 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -9,9 +9,6 @@ * Data and file storage overview: * Autofill framework: - - * Caching Bitmaps: - * Managing the System UI: * Create and manage notification channels: * Support different screen sizes: @@ -80,6 +77,11 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * Fragment相关源码解析二——生命周期: * Fragment相关源码解析三——状态保存与恢复: +### 系统架构 + +*【Android进阶笔记】系统启动流程(init进程、Zygote进程、SystemServer): +* android关机流程 安卓关机流程: + ### 手势导航相关 * 深入分析 Android 系统返回手势的实现原理: @@ -112,8 +114,15 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 ### 电源管理 +* Android电源键亮灭屏流程: * Optimize for Doze and App Standby: +* App Standby Buckets: +* Doze模式简介: +* Android中的Doze模式: +* Android 8.1 Doze模式分析(一): * Android 11(R) Power HAL AIDL简析 -- 基本接口: +* AOD 息屏是什么?背后技术原理是什么? +* AOD相关机制: ### Battery相关 @@ -130,6 +139,10 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * battery-historian: +### 剪贴板框架 + +* 复制和粘贴: + ### Binder * Android Binder设计与实现 - 设计篇: @@ -144,6 +157,71 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 ### 稳定性 * 系统反复重启--RescueParty触发recovery记录: +* android-O RescueParty 介紹: +* Rescue Party: +* 理解Native Crash处理流程: +* ANR Broadcast TimeOut 超时判断: +* Android ANR:原理分析及解决办法: + +## 性能分析 + +* Overview of system tracing: +* Inspect CPU activity with CPU Profiler: +* Simpleperf: +* Android Systrace 基础知识: +* systrace.py环境配置: + +* Perfetto: +* PerfettoUI: + +* TraceView(已弃用): +* Android性能优化—TraceView的使用: + +* PerfDog性能狗: + +* Eight Ways Your Android App Can Leak Memory: +* Eight Ways Your Android App Can STOP Leaking Memory: +* Android性能优化: +* 使用meminfo分析Android单个进程内存信息: +* How do I discover memory usage of my application in Android? + +* Android adb bugreport工具分析和使用: +* ChkBugReport: +* loganalysis(Android日志分析工具): + +* 性能优化工具(十)- Android内存分析命令: +* Android内存优化(使用SparseArray和ArrayMap取代HashMap): +* Android-->iostat(显示CPU和IO系统负载情况): +* 内存耗用:VSS/RSS/PSS/USS: + +### 动效 + +* 各种转场动画: +* Android:去掉系统自带的Activity跳转动画,跳转无动画,返回无动画: +* Android 属性动画 常用方法 与 插值器 Interpolator: +* Property Animation框架详解(一): +* Android动画之Interpolator(插值器): +* Android 路径绘制艺术——贝塞尔曲线: +* 三阶贝塞尔曲线Interpolator的应用: +* 在线演示: +* Android颜色透明度百分比和十六进制对应关系: +* Android 关于Path的FillType: +* Android中使用SVG实现炫酷动画效果: +* SVG 的 PathData 在 Android 中的使用: +* Android矢量图(一)--VectorDrawable基础: +* 在 Android 开发中使用 SVG: +* 手把手教学, android 使用 SVG: + +### 控件 + +* Caching Bitmaps: +* 不同版本上 Bitmap 内存分配与回收原理对比: +* Android Drawable Resource学习(一)、Drawable Resource简介: +* How to convert multiple svgs to Android vector drawable in one shot: +* Drawable图像资源抽象类: +* 将Canvas转换为Drawable: +* Carson带你学Android:自定义View Canvas类使用教程: +* Android中Canvas绘图之PorterDuffXfermode使用及工作原理详解: ## Article @@ -268,24 +346,6 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * J 的艺术,R 的艺术: * HDR详解 - 什么是HDR? -## 动效 - -* 各种转场动画: -* Android:去掉系统自带的Activity跳转动画,跳转无动画,返回无动画: -* Android 属性动画 常用方法 与 插值器 Interpolator: -* Property Animation框架详解(一): -* Android动画之Interpolator(插值器): -* Android 路径绘制艺术——贝塞尔曲线: -* 三阶贝塞尔曲线Interpolator的应用: -* 在线演示: -* Android颜色透明度百分比和十六进制对应关系: -* Android 关于Path的FillType: -* Android中使用SVG实现炫酷动画效果: -* SVG 的 PathData 在 Android 中的使用: -* Android矢量图(一)--VectorDrawable基础: -* 在 Android 开发中使用 SVG: -* 手把手教学, android 使用 SVG: - ## Gradle/Gradle Wrapper/Android Plugin for Gradle * Gradle: @@ -378,32 +438,6 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * Flutter: * Flutter中文网: -## 性能分析 - -* Overview of system tracing: -* Inspect CPU activity with CPU Profiler: -* Simpleperf: -* Android Systrace 基础知识: -* systrace.py环境配置: - -* Perfetto: -* PerfettoUI: - -* TraceView(已弃用): -* Android性能优化—TraceView的使用: - -* PerfDog性能狗: - -* Eight Ways Your Android App Can Leak Memory: -* Eight Ways Your Android App Can STOP Leaking Memory: -* Android性能优化: -* 使用meminfo分析Android单个进程内存信息: -* How do I discover memory usage of my application in Android? - -* Android adb bugreport工具分析和使用: -* ChkBugReport: -* loganalysis(Android日志分析工具): - ## Android模拟器 * genymotion: From d8b710dd276d754fab4e7661c51adf6a28754495 Mon Sep 17 00:00:00 2001 From: Aloys Date: Wed, 13 Mar 2024 22:53:00 +0800 Subject: [PATCH 150/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 33 +++++++++++++++++++ ChooseYourBest.md | 7 ++++ ...46\344\271\240\344\271\213\350\267\257.md" | 1 + ...46\344\271\240\344\271\213\350\267\257.md" | 4 --- 4 files changed, 41 insertions(+), 4 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index c7634f0..5ec3c30 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -84,6 +84,7 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 ### 手势导航相关 +* Ensure compatibility with gesture navigation: * 深入分析 Android 系统返回手势的实现原理: * Android 13 返回导航大变更:返回键彻底废弃 + 可预见型返回手势: * Android 14 之返回界面升级:预览目标界面 + 全新返回箭头: @@ -143,9 +144,16 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * 复制和粘贴: +### 输入法与输入法框架 + +* 关于Android外设键盘导致系统输入法隐藏的解决方案: + ### Binder +* 架构概览: +* 适用于 HAL 的 AIDL: * Android Binder设计与实现 - 设计篇: +* Here comes Treble: A modular base for Android: * Service/Binder/Messenger/AIDL: +《Android开发艺术探索》第2章、第9章 * 深入Android HAL binder: * HwBinder入门篇-Android10.0 HwBinder通信原理(一): @@ -154,8 +162,23 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * Android源码的Binder权限是如何控制? * Android Binder异常传递流程分析: +### Service + +* About Background work: +* Android使用JobService实现后台服务: +* Android 中设置线程优先级的正确方式(2种方法): +* 微信团队原创分享:Android版微信后台保活实战分享(进程保活篇): +* Android单应用开多进程与单进程跑多应用: +* Android中使用ContentProvider进行跨进程方法调用: +* Android 进程管理篇(五)-调度策略与优先级: +* Android性能优化之实现拥有Looper的线程--HandlerThread: + ### 稳定性 +* AtomicFile: +* ResilientAtomicFile: +* Linux sync详解: +* ANDROID 设备写入文件,立即断电重启后,文件丢失,数据没有保存问题: * 系统反复重启--RescueParty触发recovery记录: * android-O RescueParty 介紹: * Rescue Party: @@ -223,6 +246,16 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * Carson带你学Android:自定义View Canvas类使用教程: * Android中Canvas绘图之PorterDuffXfermode使用及工作原理详解: +### Statsd + +* Statsd: +* android WMS中的Proto/ProtoLog/ProtoLogTool日志原理介绍: +* Android中使用 Protobuf: +* Language Guide (proto 2): +* Protocol Buffers: +* Protobuf语法指南(proto2): +* Android中的StatsLog: + ## Article * Android 编程与兼容性问题: 《Android Programming The Big Nerd Ranch Guide 3rd[Android编程权威指南(第3版)》 6.2 7.8 7.9 diff --git a/ChooseYourBest.md b/ChooseYourBest.md index a3e1deb..0416a01 100644 --- a/ChooseYourBest.md +++ b/ChooseYourBest.md @@ -45,6 +45,13 @@ * 永中Office: * Prezi: +## 输入法 + +* fcitx5: +* fcitx5-android: +* ibus: +* 深蓝词库转换: + ## 虚拟机软件 * VMware Workstation Player: diff --git "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 0046420..74da5cb 100644 --- "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -200,6 +200,7 @@ ## Emacs +* GNU Emacs: * emacswiki: * GNU Emacs Manuals Online: diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index f4b6209..1de4602 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -354,10 +354,6 @@ Tools → Options... → LibreOffice → View → Graphics output (取消钩选Use hardware acceleration) -## 小企鹅输入法突然无法使用 - -查看一下是否安装了ibus,可在系统设置中的语言支持中重新把输入法改为ibus - ## 主文件夹里的中文文件夹改成英文文件夹 打开终端,在终端下输入命令: From f30a454916f96dc30d4b71aef3b1f5e948039736 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 24 Mar 2024 19:38:07 +0800 Subject: [PATCH 151/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 103 +++++++++++++----- ...46\344\271\240\344\271\213\350\267\257.md" | 37 +++---- ...46\344\271\240\344\271\213\350\267\257.md" | 17 ++- ...46\344\271\240\344\271\213\350\267\257.md" | 16 ++- ...46\344\271\240\344\271\213\350\267\257.md" | 4 + ...46\344\271\240\344\271\213\350\267\257.md" | 2 + ...46\344\271\240\344\271\213\350\267\257.md" | 2 +- ...46\344\271\240\344\271\213\350\267\257.md" | 1 + 8 files changed, 124 insertions(+), 58 deletions(-) create mode 100644 "\346\225\260\347\224\265\345\255\246\344\271\240\344\271\213\350\267\257.md" diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 5ec3c30..3eb9c68 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -34,25 +34,12 @@ * Xamarin: * Android Support Overview: -* I18n Translation Search: - -* androidcommunity: -* AndroidDevTools: - -* Material Design: - ## AOSP * AOSP项目官网中文: * AOSP项目官网英文: -* Building Android: -* Codenames, Tags, and Build Numbers: -* Graphics: -* Supporting Multiple Users: -* Android5.1--多用户模式: - -AOSP源码占用空间较大,有时不方便通过下载到本地的方式进行查看,可以考虑使用下列网址在线查看: +### AOSP源码在线查看 * Android Code Search: * AOSPXRef: @@ -61,27 +48,35 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * Android OS: * Git repositories on android: -其它曾经关注的AOSP相关网址: +### AOSP构建 +* Building Android: +* Codenames, Tags, and Build Numbers: * 将AOSP源码导入到Android Studio进行查看: * Android构建系统: * Android soong build系统介绍: * Repo实践指南: -* Android OTA升级: -* Android 新一代编译 toolchain Jack & Jill 简介: -* Google 又弃坑了,Jack+Jill vs. javac+dx: -* Android系统架构-[Android取经之路]: -* Android R Framework流程分析: -* 深入源码解析Android中的Handler,Message,MessageQueue,Looper: -* Fragment相关源码解析一——FragmentManagerImpl和BackStackRecord: -* Fragment相关源码解析二——生命周期: -* Fragment相关源码解析三——状态保存与恢复: + +* ~~使用 Jack 编译 (AOSP 6.0 - 8.1): ~~ +* ~~Android 新一代编译 toolchain Jack & Jill 简介: ~~ +* ~~Google 又弃坑了,Jack+Jill vs. javac+dx: ~~ ### 系统架构 -*【Android进阶笔记】系统启动流程(init进程、Zygote进程、SystemServer): +* 系统启动流程(init进程、Zygote进程、SystemServer): * android关机流程 安卓关机流程: +### WMS + +* WMS转屏流程: +* Android WMS动画系统初探(一): +* WindowManagerService理解与深入(Android Q): +* android中Activity中的WindowManager与Window: +* 浅析onWindowsFocusChanged()方法: +* Window.setFlags 各种Flag笔记: +* Activity的创建(从Activity的角度理解IWindowSession): +* Android多点触控问题解决(windowEnableSplitTouch, splitMotionEvents): + ### 手势导航相关 * Ensure compatibility with gesture navigation: @@ -113,6 +108,10 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * Android触摸事件的传递(四-1)--输入系统-InputReader: * Input源码解读——从"Show tabs"开始: +### Accessibility + +* Android AccessibilityService机制源码解析: + ### 电源管理 * Android电源键亮灭屏流程: @@ -125,6 +124,11 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * AOD 息屏是什么?背后技术原理是什么? * AOD相关机制: +### 生物识别 + +* Android8.0 Fingerprint指纹启动流程详细分析: +* FingerPrintAuth: + ### Battery相关 * Android 8.1 Battery系列(一) BatteryService分析: @@ -161,10 +165,14 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * BpHwBinder: * Android源码的Binder权限是如何控制? * Android Binder异常传递流程分析: +* HIDL 简单介绍: +* 使用Android的HIDL+AIDL方式编写从HAL层到APP层的程序: +* AIDL interface between Java and C++: ### Service * About Background work: +* 深入源码解析Android中的Handler,Message,MessageQueue,Looper: * Android使用JobService实现后台服务: * Android 中设置线程优先级的正确方式(2种方法): * 微信团队原创分享:Android版微信后台保活实战分享(进程保活篇): @@ -186,7 +194,7 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * ANR Broadcast TimeOut 超时判断: * Android ANR:原理分析及解决办法: -## 性能分析 +### 性能分析 * Overview of system tracing: * Inspect CPU activity with CPU Profiler: @@ -255,9 +263,41 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * Protocol Buffers: * Protobuf语法指南(proto2): * Android中的StatsLog: +* Statsd In android 9 (2): + +### 文本分类 + +* Implement text classifier: +* TextClassification介绍(一): + +### Sensor + +* Android 4.4 Kitkat Phone工作流程浅析(十一)__PSensor工作流程浅析: + +### Vibrator + +* 触感反馈: ## Article +* I18n Translation Search: + +* androidcommunity: +* AndroidDevTools: + +* Material Design: + +* Graphics: +* Supporting Multiple Users: +* Android5.1--多用户模式: + +* Android OTA升级: +* Android系统架构-[Android取经之路]: +* Android R Framework流程分析: +* Fragment相关源码解析一——FragmentManagerImpl和BackStackRecord: +* Fragment相关源码解析二——生命周期: +* Fragment相关源码解析三——状态保存与恢复: + * Android 编程与兼容性问题: 《Android Programming The Big Nerd Ranch Guide 3rd[Android编程权威指南(第3版)》 6.2 7.8 7.9 * lntentfilter的匹配规则: 《Android开发艺术探索》 1.3 * .nomedia: 《解析 Google Android SDK-智能手机开发范例手册》5.3 @@ -268,6 +308,9 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * Android中Handler的使用: * Android异步更新UI的几种方法: * AsyncTaskLoader vs AsyncTask: +* 子线程调用Toast报Can't create handler inside thread that has not called Looper.prepare() 错误: +* Handler延迟消息执行机制,会阻塞吗? +* Handler、Thread、HandlerThread三者的区别: * Fragments:Pro Android 5[精通Android 3] Chapter 8 * Android Fragment的用法(一): @@ -402,7 +445,7 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * Android Gradle and the curious case of invisible dependency: -## Android Studio及其插件 +## Android Studio * JetBrains Plugins Repository: * Android Studio常用插件汇总: @@ -415,6 +458,7 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * dumpsys: * Debug Your layout with Layout Inspector and Layout Validation: * Configure Android Studio: +* Configure hardware acceleration for the Android Emulator: * Android Studio移动鼠标显示悬浮提示的设置方法: * ANDROID STUDIO详细教程汇总: @@ -437,7 +481,6 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * xUtils3: * SlidingMenu: * ViewPagerIndicator: -* jpinyin: * Android-Universal-Image-Loader: * hugo: * 极光推送: @@ -484,6 +527,10 @@ AOSP源码占用空间较大,有时不方便通过下载到本地的方式进 * ADB: * 解决adb push时出现的"Read-only file system"问题: * android adb push 与 adb install的比较(两种安装APK的方法): +* Android 8.0 adb shell dumpsys activity activities | findstr mFocusedActivity 获取当前的 activity 显示空的: +* How to read "adb shell dumpsys alarm" output: +* Android adb shell svc 知识详解: +* Android 系统内的守护进程 - core类中的服务 (1) : adbd: ## App Development Platform diff --git "a/Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" index ca81cc8..884ba90 100644 --- "a/Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -2,35 +2,32 @@ * BASIC: +## Visual Basic/Visual Basic .NET + +* Developing Automated Tests Using NUnit and VB.NET: +* Comparison of Visual Basic and Visual Basic .NET: + ## FreeBASIC -* freeBASIC: * FreeBASIC: -* FBIde - editor for FreeBASIC: -* FbEdit FreeBASIC code editor: +* freeBASIC: +* ~~FBIde - editor for FreeBASIC: ~~ +* ~~FbEdit FreeBASIC code editor: ~~ * FBWiki: -* IrrlichtWrapper Library: -* Free BASIC 试用: - -## QuickBASIC/QBasic - -* QuickBASIC: -* QBasic: -* QBasic讨论区: -* Features of QuickBasic: -* 文章分类 - Quick Basic: -* Quick Basic 常用的语句: -* All about QBasic and QuickBasic: -## Visual Basic/Visual Basic .NET +## ~~QuickBASIC/QBasic~~ -* Developing Automated Tests Using NUnit and VB.NET: -* Differences between VB.NET and VB: -* Comparison of Visual Basic and Visual Basic .NET: +* ~~QuickBASIC: ~~ +* ~~QBasic: ~~ +* ~~QBasic讨论区: ~~ +* ~~Features of QuickBasic: ~~ +* ~~文章分类 - Quick Basic: ~~ +* ~~Quick Basic 常用的语句: ~~ +* ~~All about QBasic and QuickBasic: ~~ ## Other * QB64: * KBasic(Basic For Qt): -* BASIC-256: +* BASIC-256: * PowerBASIC: diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 9c6c23c..3faa12b 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -574,7 +574,8 @@ Eclipse中`Update Project`,选择`Force Update of Snapshots/Releases` * (搜索) * (搜索) -* (搜索) +* ~~~~ +* JitPack: * (搜索) * * @@ -896,6 +897,10 @@ The yFiles diagramming software components are extensive class libraries that en * Enkel-JVM-language: * JC-Compiler: +## Markdown转换 + +* flexmark-java: + ## cglib * @@ -921,6 +926,12 @@ The yFiles diagramming software components are extensive class libraries that en * ik-analyze(java开源中文分词器): * ICTCLAS: +## 拼音 + +* TinyPinyin: +* pinyin4j: +* ~~jpinyin: ~~ + ## 规则引擎 * Java规则引擎与其API(JSR-94): @@ -1099,10 +1110,6 @@ The yFiles diagramming software components are extensive class libraries that en * * OpenGrok搜索技巧: -## Markdown转换 - -* flexmark-java: - ## Flex * Versions in the Flash Platform: diff --git "a/Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" index 3cb4494..a6a5d2d 100644 --- "a/Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,12 +1,20 @@ # Rust学习之路 -* +* Rust: + * Rust Documentation: +* Rust 官方文档中文教程: + * The Rust Programming Language: * Rust 程序设计语言: -* Rust语言圣经(Rust Course): -* 欢迎来到 Comprehensive Rust: +* Rust编程语言入门教程: -* Android Rust 简介: +* Rust语言圣经(Rust Course): * awesome-rust: + +* The Cargo Book: +* crates.io: + +* 欢迎来到 Comprehensive Rust: +* Android Rust 简介: diff --git "a/\346\225\260\347\224\265\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\346\225\260\347\224\265\345\255\246\344\271\240\344\271\213\350\267\257.md" new file mode 100644 index 0000000..6322ea0 --- /dev/null +++ "b/\346\225\260\347\224\265\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -0,0 +1,4 @@ +# 数电学习之路 + +* 中国电子顶级开发网论坛(EETOP) 国内最顶级的电子论坛,最活跃的电子工程师交流社区: +* Altera: \ No newline at end of file diff --git "a/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" index d2e9386..996985c 100644 --- "a/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -11,6 +11,8 @@ * Keras(基于 Python 的深度学习库): * TensorFlow: +* TensorFlow Lite: +* TensorFlow Lite 视频系列教程: * PyTorch: ## 基于大数据模型的一些产品与网站 diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 8bb3cae..d2930d9 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -153,10 +153,10 @@ git push origin master:b1 * GITTER: * Waffle: * choosealicense: +* SPDX License List: * CONTRIBUTOR CODE OF CONDUCT: * codedocs: * shields: -* JitPack: * VersionEye(已废弃): * Semantic Versioning: * The missing GitHub star history graph: diff --git "a/\347\274\226\350\257\221\345\216\237\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 7f6d11c..aead1de 100644 --- "a/\347\274\226\350\257\221\345\216\237\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\274\226\350\257\221\345\216\237\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,3 +1,4 @@ # 编译原理学习之路 * Win flex-bison: +* Compilers: Principles, Techniques, and Tools: From e7865a9feb7aa916790359b32aa12702d634f67c Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 24 Mar 2024 22:38:02 +0800 Subject: [PATCH 152/234] update --- ...45\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + ...45\255\246\344\271\240\344\271\213\350\267\257.md" | 11 +++++++++-- ...45\255\246\344\271\240\344\271\213\350\267\257.md" | 5 ----- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index ee3d0c2..8aa57d2 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -123,6 +123,7 @@ * GNU C Library: * C POSIX library: * POSIX.1-2017: +* SUSv4(Single UNIX® Specification, Version 4): * Linux 常用 C 函数参考手册: diff --git "a/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" index 2d1f0a8..40ffaf8 100644 --- "a/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,15 @@ * 当我说前端基础时,我在说什么? —— 最近几年在前端圈的观察和反思: * 清理无用的CSS样式的几个工具(转): +## 个人网站搭建 + +* GitHub Pages + Hexo搭建博客: +* Hexo+Next搭建Github个人静态博客: +* jekyll: +* 静态博客网站生成器jekyll、hexo和hugo如何选择?有什么区别? +* gohugo: +* WordPress: + ## Tools * jsunit: @@ -68,8 +77,6 @@ * react: * Ember.js: * JSX: -* gohugo: -* WordPress: * echarts: * antv: * CommonJS: diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index d2930d9..b4bf06f 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -170,11 +170,6 @@ git push origin master:b1 * 如何选择开源许可证?: * AGPL 开源授权协议: * 上传图片到github wiki仓库: -* Publishing a Website on Bitbucket Cloud: -* GitHub Pages + Hexo搭建博客: -* Hexo+Next搭建Github个人静态博客: -* jekyll: -* 静态博客网站生成器jekyll、hexo和hugo如何选择?有什么区别? ## Gerrit From 78834f7d63470d05b2fe4139867033d403633443 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 31 Mar 2024 10:38:24 +0800 Subject: [PATCH 153/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 18 ++++++++++++++- ChooseYourBest.md | 3 +++ ...46\344\271\240\344\271\213\350\267\257.md" | 1 + ...46\344\271\240\344\271\213\350\267\257.md" | 15 +++++++------ ...46\344\271\240\344\271\213\350\267\257.md" | 6 ++--- ...46\344\271\240\344\271\213\350\267\257.md" | 22 ++++++++++++++++--- ...46\344\271\240\344\271\213\350\267\257.md" | 18 ++++++++++----- ...46\344\271\240\344\271\213\350\267\257.md" | 5 ----- 8 files changed, 64 insertions(+), 24 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 3eb9c68..ea1bb06 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -65,6 +65,7 @@ * 系统启动流程(init进程、Zygote进程、SystemServer): * android关机流程 安卓关机流程: +* Android BOOTCLASSPATH详解: ### WMS @@ -107,6 +108,7 @@ * Linux/Android——Input系统之InputReader (七): * Android触摸事件的传递(四-1)--输入系统-InputReader: * Input源码解读——从"Show tabs"开始: +* input-samples: ### Accessibility @@ -144,6 +146,12 @@ * battery-historian: +### Alarm + +* How to read "adb shell dumpsys alarm" output: +* android后台执行定时任务(保活)&&使用AlarmManager的各种坑: +* Schedule alarms: + ### 剪贴板框架 * 复制和粘贴: @@ -219,6 +227,7 @@ * Android adb bugreport工具分析和使用: * ChkBugReport: * loganalysis(Android日志分析工具): +* Android单条日志太长导致被截断的问题分析和解决: * 性能优化工具(十)- Android内存分析命令: * Android内存优化(使用SparseArray和ArrayMap取代HashMap): @@ -270,6 +279,10 @@ * Implement text classifier: * TextClassification介绍(一): +### App Links + +* 处理 Android 应用链接: + ### Sensor * Android 4.4 Kitkat Phone工作流程浅析(十一)__PSensor工作流程浅析: @@ -428,6 +441,10 @@ * Gradle User Guide: * Chapter 6. The Gradle Wrapper: * Getting Started With Gradle: +* Android Gradle原理解释: +* Android Studio点击Run背后发生了什么? +* Android Studio Library 模块中 Native 代码进行 debug 的一些坑: +* Android gradle打包涉及task源码解析(一)准备工作: * 彻底搞懂Gradle、Gradle Wrapper与Android Plugin for Gradle的区别和联系: * 通过设置JDK解决存在多个Gradle后台进程的问题: @@ -528,7 +545,6 @@ * 解决adb push时出现的"Read-only file system"问题: * android adb push 与 adb install的比较(两种安装APK的方法): * Android 8.0 adb shell dumpsys activity activities | findstr mFocusedActivity 获取当前的 activity 显示空的: -* How to read "adb shell dumpsys alarm" output: * Android adb shell svc 知识详解: * Android 系统内的守护进程 - core类中的服务 (1) : adbd: diff --git a/ChooseYourBest.md b/ChooseYourBest.md index 0416a01..791dd50 100644 --- a/ChooseYourBest.md +++ b/ChooseYourBest.md @@ -171,6 +171,9 @@ * MotionPro(VPN工具): * realvnc(安全远程连接): +* Clementine: +* osdlyrics: + * FFmpeg: * K-Lite Codec Pack: * Shark007 Codecs: diff --git "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 8aa57d2..b75a6d4 100644 --- "a/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -109,6 +109,7 @@ * MSBulid、IncrediBuild命令行接口实现自动化编译: * 理解WinRT: * 请问如何修改某个exe文件的版本信息,包括CompanyName、ProductName等?: +* Visual Studio 2017 UTF-8 无 BOM 一站式解决办法: ## 需要整理的 diff --git "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 74da5cb..cee1d56 100644 --- "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -5,6 +5,7 @@ * Visual Studio Code: * Settings Sync: * VSCode调试远程Linux机器上的C代码: +* R in Visual Studio Code: ## VIM @@ -133,13 +134,6 @@ * The TeXlipse plugin for Eclipse provides support for LaTeX projects: * Configuring Eclipse as TCL/TK IDE: -### MyEclipse - -* -* 官方中文网: -* 在MyEclipse下创建Java Web项目 入门(图文并茂)经典教程: -* MyEclipse删除对Struts、Hibernate、Spring的支持: - ### Eclipse插件开发 * Eclipse 4 RCP指南: @@ -191,6 +185,13 @@ * ~~使用eclipse连接hadoop失败情况:~~ * ~~Windows平台下安装Eclipse插件,开发Hadoop应用:~~ +### MyEclipse + +* +* 官方中文网: +* 在MyEclipse下创建Java Web项目 入门(图文并茂)经典教程: +* MyEclipse删除对Struts、Hibernate、Spring的支持: + ## Jetbrains * IntelliJ IDEA: diff --git "a/Groovy\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Groovy\345\255\246\344\271\240\344\271\213\350\267\257.md" index cef179c..03267cf 100644 --- "a/Groovy\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Groovy\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,6 +1,6 @@ # Groovy学习之路 -* +* Groovy: * source: -* 实战 Groovy: 在 Java 应用程序中加一些 Groovy 进来: -* Grape: +* Grape: +* 实战 Groovy: 在 Java 应用程序中加一些 Groovy 进来: diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 3faa12b..54ea69b 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -51,7 +51,6 @@ * 图解LinkedHashMap原理: * Java提高篇(二七)-----TreeMap: * What is difference between fail safe iterator and fail fast iterator: -* Java IO相关,字符编码相关: Java IO 2nd Edition * Java直接内存与非直接内存性能测试: * Java直接(堆外)内存使用详解: * Buffer: @@ -117,7 +116,6 @@ * Java RMI与RPC,JMS的比较: * Flatten your objects Discover the secrets of the Java Serialization API: * The Java serialization algorithm revealed: -* Emoji的编码以及常见问题的解决方法: * 构建一个文本可视化和分析应用程序: * POJO模式: * Java数字图像处理基础知识 - 必读: @@ -757,12 +755,30 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * Jetty: -## 字符编码判断 +## 字符编码 * What is the most accurate encoding detector? * cpdetector: * juniversalchardet: +* Character encoding: +* What's the difference between an Encoding, Code Page, Character Set and Unicode? +* Code page 936 (Microsoft Windows): +* GBK (character encoding): +* Emoji的编码以及常见问题的解决方法: +* Java IO相关,字符编码相关: Java IO 2nd Edition + +* Linux乱码问题解决方案: +* git乱码解决方案汇总: + +* Unicode 和字符集: +* 【整理】Dword、LPSTR、LPWSTR、LPCSTR、LPCWSTR、LPTSTR、LPCTSTR: +* win10中如何将cmd,power shell设置默认编码为UTF-8(解决win10命令行中文乱码): + +* Android Studio Build Output 栏内汉字出现乱码的解决方案: +* pycharm开发python时出现控制中文显示乱码: +* 解决mysql字符集乱码问题: + ## EZMorph EZMorph is simple java library for transforming an Object to another Object. diff --git "a/R\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/R\345\255\246\344\271\240\344\271\213\350\267\257.md" index 82635ae..9e03dd7 100644 --- "a/R\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/R\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,16 +1,20 @@ # R -* +* R: * The Comprehensive R Archive Network: -* Econometrics in R: -* Applied Econometrics with R: -* Statistics Using R with Biological Examples: +## R Basics + +* A comprehensive survey of the types of things in R; 'mode' and 'class' and 'typeof' are insufficient: + +## RStudio * RStudio: * RStudio User Guide: * Using RStudio Projects: +## R Packages + * R语言中,你最常用的软件包有哪些,请简述功能及特点? * Bioconductor: @@ -30,4 +34,8 @@ * The R Graph Gallery: * R Charts: -* A comprehensive survey of the types of things in R; 'mode' and 'class' and 'typeof' are insufficient: \ No newline at end of file +## R Books + +* Econometrics in R: +* Applied Econometrics with R: +* Statistics Using R with Biological Examples: \ No newline at end of file diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index 1de4602..ad2c437 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -42,7 +42,6 @@ * 一篇文章搞懂Debian_Ubuntu软件包更新和删除: * 扩容swap文件: * Linux压缩与解压常用命令: -* Linux乱码问题解决方案: * linux中无 conio.h的解决办法: * Linux快捷键: * ssh相关原理学习与常见错误总结: @@ -346,10 +345,6 @@ 解决方法: 把 /etc/apt/sources.list里面有cdrom的几行删掉,或者利用软件中心或新立德包管理器把软件源终中的cdrom去掉。 -## 解决金山wps字体问题 - -将字体解压到~/.fonts目录,然后重启wps即可。这些文件为微软版权所有,使用这些字体请自行确定拥有这些字体的使用授权(比如说有某版本windows授权即可)。另外据一部分用户反映,如果系统安装了xfonts-mathml可能导致符号无法显示。经过查证,发现是因为xfonts-mathml中也存在一个字体叫Symbol导致的。如果安装上述字体后仍存在乱码现象,请尝试移除xfonts-mathml包。 - ## libreoffice中PPT字体便粗问题 Tools → Options... → LibreOffice → View → Graphics output (取消钩选Use hardware acceleration) From c45f990cd42cd09969ff431b420390dcafcf0690 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 31 Mar 2024 18:08:31 +0800 Subject: [PATCH 154/234] update --- ...246\344\271\240\344\271\213\350\267\257.md" | 1 - ...246\344\271\240\344\271\213\350\267\257.md" | 1 - ...246\344\271\240\344\271\213\350\267\257.md" | 18 +----------------- ...246\344\271\240\344\271\213\350\267\257.md" | 1 - ...246\344\271\240\344\271\213\350\267\257.md" | 1 - ...246\344\271\240\344\271\213\350\267\257.md" | 1 - ...246\344\271\240\344\271\213\350\267\257.md" | 1 - 7 files changed, 1 insertion(+), 23 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index ea1bb06..20e77a8 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -488,7 +488,6 @@ * ANDROID STUDIO系列教程六--GRADLE多渠道打包: * Android Studio优化技巧: * Android Studio相关目录解析: -* Android Studio Build Output 栏内汉字出现乱码的解决方案: * ERROR Android emulator gets killed: ## Libraries diff --git "a/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" index eaabcfb..fe54734 100644 --- "a/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/DB\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -39,7 +39,6 @@ * Should I use field 'datetime' or 'timestamp'? * 如何提高MySql的安全性?: * 如何写出高质量、高性能的MySQL查询: -* 解决mysql字符集乱码问题: * Oracle与MySQL字符串拼接: * 关于InnoDB索引长度限制的tips: * Using Innodb_large_prefix to Avoid ERROR 1071: diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 54ea69b..bf035f4 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -761,23 +761,7 @@ mvn deploy:deploy-file -DgroupId="edu.jiangxin" -DartifactId=”gcu” -Dversion * cpdetector: * juniversalchardet: -* Character encoding: -* What's the difference between an Encoding, Code Page, Character Set and Unicode? -* Code page 936 (Microsoft Windows): -* GBK (character encoding): -* Emoji的编码以及常见问题的解决方法: -* Java IO相关,字符编码相关: Java IO 2nd Edition - -* Linux乱码问题解决方案: -* git乱码解决方案汇总: - -* Unicode 和字符集: -* 【整理】Dword、LPSTR、LPWSTR、LPCSTR、LPCWSTR、LPTSTR、LPCTSTR: -* win10中如何将cmd,power shell设置默认编码为UTF-8(解决win10命令行中文乱码): - -* Android Studio Build Output 栏内汉字出现乱码的解决方案: -* pycharm开发python时出现控制中文显示乱码: -* 解决mysql字符集乱码问题: +* 字符乱码一锅炖: ## EZMorph diff --git "a/Python\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Python\345\255\246\344\271\240\344\271\213\350\267\257.md" index 0e638f5..9cf2f0e 100644 --- "a/Python\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Python\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -48,7 +48,6 @@ ## PyCharm * PyCharm: -* pycharm开发python时出现控制中文显示乱码: ## PyDev diff --git "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index ad2c437..6a492af 100644 --- "a/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -316,7 +316,6 @@ * 卸载libreoffice/firefox/youker-assistant/amazon * 重新启动计算机 * 安装GLX-Dock并进行配置 -* 安装clementine/osd-lyrics并进行配置,解决乱码问题,安装解码插件 * 安装快盘,进行配快盘和ubuntu one * 安装okular/meld * 卸载Rhythmbox/empathy/account-plugin-* diff --git "a/Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" index e48e472..b572caf 100644 --- "a/Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -9,7 +9,6 @@ ## CMD -* win10中如何将cmd,power shell设置默认编码为UTF-8(解决win10命令行中文乱码): * 浅谈批处理中的%cd%与%~dp0: ## PowerShell diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index b4bf06f..e8127b1 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -91,7 +91,6 @@ * git patch: Version Control with Git 2nd Edition[Git 版本控制管理 第2版] CHAPTER 14 Patches * Permanently remove files and folders from Git ``repo``: * git 把文件从版本管理中移除: -* git乱码解决方案汇总: * git pull 和本地文件冲突问题解决: * Remove sensitive data: * github创建tag: From be6e3cf05fd908a5887f528d52c032b5cb40edb6 Mon Sep 17 00:00:00 2001 From: Aloys Date: Wed, 3 Apr 2024 23:15:07 +0800 Subject: [PATCH 155/234] Initial commit --- .gitignore | 4 + Gemfile | 17 ++++ README.md | 27 +++++ _config.yml | 115 +++++++++++++++++++++ _data/navigation.yml | 9 ++ _pages/404.md | 8 ++ _pages/about.md | 8 ++ _pages/category-archive.md | 6 ++ _pages/tag-archive.md | 6 ++ _pages/year-archive.md | 6 ++ _posts/2010-01-07-post-modified.md | 14 +++ _posts/2010-01-07-post-standard.md | 32 ++++++ _posts/2010-01-08-post-chat.md | 134 +++++++++++++++++++++++++ _posts/2010-02-05-post-notice.md | 68 +++++++++++++ _posts/2010-02-05-post-quote.md | 12 +++ _posts/2010-03-07-post-link.md | 15 +++ _posts/2019-04-18-welcome-to-jekyll.md | 29 ++++++ assets/images/bio-photo.jpg | Bin 0 -> 1661 bytes index.html | 7 ++ 19 files changed, 517 insertions(+) create mode 100644 .gitignore create mode 100644 Gemfile create mode 100644 README.md create mode 100644 _config.yml create mode 100644 _data/navigation.yml create mode 100644 _pages/404.md create mode 100644 _pages/about.md create mode 100644 _pages/category-archive.md create mode 100644 _pages/tag-archive.md create mode 100644 _pages/year-archive.md create mode 100644 _posts/2010-01-07-post-modified.md create mode 100644 _posts/2010-01-07-post-standard.md create mode 100644 _posts/2010-01-08-post-chat.md create mode 100644 _posts/2010-02-05-post-notice.md create mode 100644 _posts/2010-02-05-post-quote.md create mode 100644 _posts/2010-03-07-post-link.md create mode 100644 _posts/2019-04-18-welcome-to-jekyll.md create mode 100644 assets/images/bio-photo.jpg create mode 100644 index.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2038447 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +_site +.sass-cache +.jekyll-metadata +Gemfile.lock \ No newline at end of file diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..5c41b36 --- /dev/null +++ b/Gemfile @@ -0,0 +1,17 @@ +source "https://rubygems.org" + +gem "github-pages", group: :jekyll_plugins + +gem "tzinfo-data" +gem "wdm", "~> 0.1.0" if Gem.win_platform? + +# If you have any plugins, put them here! +group :jekyll_plugins do + gem "jekyll-paginate" + gem "jekyll-sitemap" + gem "jekyll-gist" + gem "jekyll-feed" + gem "jemoji" + gem "jekyll-include-cache" + gem "jekyll-algolia" +end diff --git a/README.md b/README.md new file mode 100644 index 0000000..c58cc88 --- /dev/null +++ b/README.md @@ -0,0 +1,27 @@ +# Minimal Mistakes remote theme starter + +Click [**Use this template**](https://github.com/mmistakes/mm-github-pages-starter/generate) button above for the quickest method of getting started with the [Minimal Mistakes Jekyll theme](https://github.com/mmistakes/minimal-mistakes). + +Contains basic configuration to get you a site with: + +- Sample posts. +- Sample top navigation. +- Sample author sidebar with social links. +- Sample footer links. +- Paginated home page. +- Archive pages for posts grouped by year, category, and tag. +- Sample about page. +- Sample 404 page. +- Site wide search. + +Replace sample content with your own and [configure as necessary](https://mmistakes.github.io/minimal-mistakes/docs/configuration/). + +--- + +## Troubleshooting + +If you have a question about using Jekyll, start a discussion on the [Jekyll Forum](https://talk.jekyllrb.com/) or [StackOverflow](https://stackoverflow.com/questions/tagged/jekyll). Other resources: + +- [Ruby 101](https://jekyllrb.com/docs/ruby-101/) +- [Setting up a Jekyll site with GitHub Pages](https://jekyllrb.com/docs/github-pages/) +- [Configuring GitHub Metadata](https://github.com/jekyll/github-metadata/blob/master/docs/configuration.md#configuration) to work properly when developing locally and avoid `No GitHub API authentication could be found. Some fields may be missing or have incorrect data.` warnings. diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..3da6a50 --- /dev/null +++ b/_config.yml @@ -0,0 +1,115 @@ +# Welcome to Jekyll! +# +# This config file is meant for settings that affect your whole blog, values +# which you are expected to set up once and rarely edit after that. If you find +# yourself editing this file very often, consider using Jekyll's data files +# feature for the data you need to update frequently. +# +# For technical reasons, this file is *NOT* reloaded automatically when you use +# 'bundle exec jekyll serve'. If you change this file, please restart the server process. + +# Site settings +# These are used to personalize your new site. If you look in the HTML files, +# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. +# You can create any custom variable you would like, and they will be accessible +# in the templates via {{ site.myvariable }}. +title: MM +email: +description: >- # this means to ignore newlines until "baseurl:" + Write an awesome description for your new site here. You can edit this + line in _config.yml. It will appear in your document head meta (for + Google search results) and in your feed.xml site description. +twitter_username: username +github_username: username +minimal_mistakes_skin: default +search: true + +# Build settings +markdown: kramdown +remote_theme: mmistakes/minimal-mistakes +# Outputting +permalink: /:categories/:title/ +paginate: 5 # amount of posts to show +paginate_path: /page:num/ +timezone: # https://en.wikipedia.org/wiki/List_of_tz_database_time_zones + +include: + - _pages + +# Exclude from processing. +# The following items will not be processed, by default. Create a custom list +# to override the default setting. +# exclude: +# - Gemfile +# - Gemfile.lock +# - node_modules +# - vendor/bundle/ +# - vendor/cache/ +# - vendor/gems/ +# - vendor/ruby/ + +# Plugins (previously gems:) +plugins: + - jekyll-paginate + - jekyll-sitemap + - jekyll-gist + - jekyll-feed + - jemoji + - jekyll-include-cache + +author: + name : "First Lastname" + avatar : "/assets/images/bio-photo.jpg" + bio : "My awesome biography constrained to a sentence or two goes here." + links: + - label: "Website" + icon: "fas fa-fw fa-link" + url: "https://" + - label: "Twitter" + icon: "fab fa-fw fa-twitter-square" + url: "https://twitter.com/" + - label: "GitHub" + icon: "fab fa-fw fa-github" + url: "https://github.com/" + - label: "Instagram" + icon: "fab fa-fw fa-instagram" + url: "https://instagram.com/" + +footer: + links: + - label: "Twitter" + icon: "fab fa-fw fa-twitter-square" + url: "https://twitter.com/" + - label: "GitHub" + icon: "fab fa-fw fa-github" + url: "https://github.com/" + - label: "Instagram" + icon: "fab fa-fw fa-instagram" + url: "https://instagram.com/" + +defaults: + # _posts + - scope: + path: "" + type: posts + values: + layout: single + author_profile: true + read_time: true + comments: true + share: true + related: true + # _pages + - scope: + path: "_pages" + type: pages + values: + layout: single + author_profile: true + +category_archive: + type: liquid + path: /categories/ +tag_archive: + type: liquid + path: /tags/ diff --git a/_data/navigation.yml b/_data/navigation.yml new file mode 100644 index 0000000..e3af8ae --- /dev/null +++ b/_data/navigation.yml @@ -0,0 +1,9 @@ +main: + - title: "Posts" + url: /posts/ + - title: "Categories" + url: /categories/ + - title: "Tags" + url: /tags/ + - title: "About" + url: /about/ \ No newline at end of file diff --git a/_pages/404.md b/_pages/404.md new file mode 100644 index 0000000..b3025a6 --- /dev/null +++ b/_pages/404.md @@ -0,0 +1,8 @@ +--- +title: "Page Not Found" +excerpt: "Page not found. Your pixels are in another canvas." +sitemap: false +permalink: /404.html +--- + +Sorry, but the page you were trying to view does not exist. diff --git a/_pages/about.md b/_pages/about.md new file mode 100644 index 0000000..9ba0655 --- /dev/null +++ b/_pages/about.md @@ -0,0 +1,8 @@ +--- +permalink: /about/ +title: "About" +--- + +Tempor velit sint sunt ipsum tempor enim ad qui ullamco. Est dolore anim ad velit duis dolore minim sunt aliquip amet commodo labore. Ut eu pariatur aute ea aute excepteur laborum. Esse ea esse excepteur minim mollit qui cillum excepteur ex dolore magna. Labore deserunt fugiat incididunt incididunt sint ea. Consequat dolore aute laboris quis proident quis non et est consectetur ex eiusmod sit culpa. + +Cupidatat ea do et in excepteur in. Ad nostrud ut est esse eu duis ea sunt eiusmod. Aliquip tempor veniam sint elit fugiat. Velit incididunt laboris amet incididunt labore dolore irure velit excepteur commodo deserunt laborum. Consectetur eu fugiat veniam veniam Lorem labore magna eiusmod. Ea occaecat reprehenderit pariatur consectetur minim labore ut aliquip. \ No newline at end of file diff --git a/_pages/category-archive.md b/_pages/category-archive.md new file mode 100644 index 0000000..4cb3860 --- /dev/null +++ b/_pages/category-archive.md @@ -0,0 +1,6 @@ +--- +title: "Posts by Category" +layout: categories +permalink: /categories/ +author_profile: true +--- diff --git a/_pages/tag-archive.md b/_pages/tag-archive.md new file mode 100644 index 0000000..3f4e3f0 --- /dev/null +++ b/_pages/tag-archive.md @@ -0,0 +1,6 @@ +--- +title: "Posts by Tag" +permalink: /tags/ +layout: tags +author_profile: true +--- diff --git a/_pages/year-archive.md b/_pages/year-archive.md new file mode 100644 index 0000000..ce3413f --- /dev/null +++ b/_pages/year-archive.md @@ -0,0 +1,6 @@ +--- +title: "Posts by Year" +permalink: /posts/ +layout: posts +author_profile: true +--- diff --git a/_posts/2010-01-07-post-modified.md b/_posts/2010-01-07-post-modified.md new file mode 100644 index 0000000..c09d324 --- /dev/null +++ b/_posts/2010-01-07-post-modified.md @@ -0,0 +1,14 @@ +--- +title: "Post: Modified Date" +last_modified_at: 2016-03-09T16:20:02-05:00 +categories: + - Blog +tags: + - Post Formats + - readability + - standard +--- + +This post has been updated and should show a modified date if used in a layout. + +All children, except one, grow up. They soon know that they will grow up, and the way Wendy knew was this. One day when she was two years old she was playing in a garden, and she plucked another flower and ran with it to her mother. I suppose she must have looked rather delightful, for Mrs. Darling put her hand to her heart and cried, "Oh, why can't you remain like this for ever!" This was all that passed between them on the subject, but henceforth Wendy knew that she must grow up. You always know after you are two. Two is the beginning of the end. \ No newline at end of file diff --git a/_posts/2010-01-07-post-standard.md b/_posts/2010-01-07-post-standard.md new file mode 100644 index 0000000..fc25616 --- /dev/null +++ b/_posts/2010-01-07-post-standard.md @@ -0,0 +1,32 @@ +--- +title: "Post: Standard" +excerpt_separator: "" +categories: + - Blog +tags: + - Post Formats + - readability + - standard +--- + +All children, except one, grow up. They soon know that they will grow up, and the way Wendy knew was this. One day when she was two years old she was playing in a garden, and she plucked another flower and ran with it to her mother. I suppose she must have looked rather delightful, for Mrs. Darling put her hand to her heart and cried, "Oh, why can't you remain like this for ever!" This was all that passed between them on the subject, but henceforth Wendy knew that she must grow up. You always know after you are two. Two is the beginning of the end. + +Mrs. Darling first heard of Peter when she was tidying up her children's minds. It is the nightly custom of every good mother after her children are asleep to rummage in their minds and put things straight for next morning, repacking into their proper places the many articles that have wandered during the day. + + + +This post has a manual excerpt `` set after the second paragraph. The following YAML Front Matter has also be applied: + +```yaml +excerpt_separator: "" +``` + +If you could keep awake (but of course you can't) you would see your own mother doing this, and you would find it very interesting to watch her. It is quite like tidying up drawers. You would see her on her knees, I expect, lingering humorously over some of your contents, wondering where on earth you had picked this thing up, making discoveries sweet and not so sweet, pressing this to her cheek as if it were as nice as a kitten, and hurriedly stowing that out of sight. When you wake in the morning, the naughtiness and evil passions with which you went to bed have been folded up small and placed at the bottom of your mind and on the top, beautifully aired, are spread out your prettier thoughts, ready for you to put on. + +I don't know whether you have ever seen a map of a person's mind. Doctors sometimes draw maps of other parts of you, and your own map can become intensely interesting, but catch them trying to draw a map of a child's mind, which is not only confused, but keeps going round all the time. There are zigzag lines on it, just like your temperature on a card, and these are probably roads in the island, for the Neverland is always more or less an island, with astonishing splashes of colour here and there, and coral reefs and rakish-looking craft in the offing, and savages and lonely lairs, and gnomes who are mostly tailors, and caves through which a river runs, and princes with six elder brothers, and a hut fast going to decay, and one very small old lady with a hooked nose. It would be an easy map if that were all, but there is also first day at school, religion, fathers, the round pond, needle-work, murders, hangings, verbs that take the dative, chocolate pudding day, getting into braces, say ninety-nine, three-pence for pulling out your tooth yourself, and so on, and either these are part of the island or they are another map showing through, and it is all rather confusing, especially as nothing will stand still. + +Of course the Neverlands vary a good deal. John's, for instance, had a lagoon with flamingoes flying over it at which John was shooting, while Michael, who was very small, had a flamingo with lagoons flying over it. John lived in a boat turned upside down on the sands, Michael in a wigwam, Wendy in a house of leaves deftly sewn together. John had no friends, Michael had friends at night, Wendy had a pet wolf forsaken by its parents, but on the whole the Neverlands have a family resemblance, and if they stood still in a row you could say of them that they have each other's nose, and so forth. On these magic shores children at play are for ever beaching their coracles [simple boat]. We too have been there; we can still hear the sound of the surf, though we shall land no more. + +Of all delectable islands the Neverland is the snuggest and most compact, not large and sprawly, you know, with tedious distances between one adventure and another, but nicely crammed. When you play at it by day with the chairs and table-cloth, it is not in the least alarming, but in the two minutes before you go to sleep it becomes very real. That is why there are night-lights. + +Occasionally in her travels through her children's minds Mrs. Darling found things she could not understand, and of these quite the most perplexing was the word Peter. She knew of no Peter, and yet he was here and there in John and Michael's minds, while Wendy's began to be scrawled all over with him. The name stood out in bolder letters than any of the other words, and as Mrs. Darling gazed she felt that it had an oddly cocky appearance. \ No newline at end of file diff --git a/_posts/2010-01-08-post-chat.md b/_posts/2010-01-08-post-chat.md new file mode 100644 index 0000000..9092634 --- /dev/null +++ b/_posts/2010-01-08-post-chat.md @@ -0,0 +1,134 @@ +--- +title: "Post: Chat" +categories: + - Blog +tags: + - chat + - Post Formats +--- + +Abbott: Strange as it may seem, they give ball players nowadays very peculiar names. + +Costello: Funny names? + +Abbott: Nicknames, nicknames. Now, on the St. Louis team we have Who's on first, What's on second, I Don't Know is on third-- + +Costello: That's what I want to find out. I want you to tell me the names of the fellows on the St. Louis team. + +Abbott: I'm telling you. Who's on first, What's on second, I Don't Know is on third-- + +Costello: You know the fellows' names? + +Abbott: Yes. + +Costello: Well, then who's playing first? + +Abbott: Yes. + +Costello: I mean the fellow's name on first base. + +Abbott: Who. + +Costello: The fellow playin' first base. + +Abbott: Who. + +Costello: The guy on first base. + +Abbott: Who is on first. + +Costello: Well, what are you askin' me for? + +Abbott: I'm not asking you--I'm telling you. Who is on first. + +Costello: I'm asking you--who's on first? + +Abbott: That's the man's name. + +Costello: That's who's name? + +Abbott: Yes. + +Costello: When you pay off the first baseman every month, who gets the money? + +Abbott: Every dollar of it. And why not, the man's entitled to it. + +Costello: Who is? + +Abbott: Yes. + +Costello: So who gets it? + +Abbott: Why shouldn't he? Sometimes his wife comes down and collects it. + +Costello: Who's wife? + +Abbott: Yes. After all, the man earns it. + +Costello: Who does? + +Abbott: Absolutely. + +Costello: Well, all I'm trying to find out is what's the guy's name on first base? + +Abbott: Oh, no, no. What is on second base. + +Costello: I'm not asking you who's on second. + +Abbott: Who's on first! + +Costello: St. Louis has a good outfield? + +Abbott: Oh, absolutely. + +Costello: The left fielder's name? + +Abbott: Why. + +Costello: I don't know, I just thought I'd ask. + +Abbott: Well, I just thought I'd tell you. + +Costello: Then tell me who's playing left field? + +Abbott: Who's playing first. + +Costello: Stay out of the infield! The left fielder's name? + +Abbott: Why. + +Costello: Because. + +Abbott: Oh, he's center field. + +Costello: Wait a minute. You got a pitcher on this team? + +Abbott: Wouldn't this be a fine team without a pitcher? + +Costello: Tell me the pitcher's name. + +Abbott: Tomorrow. + +Costello: Now, when the guy at bat bunts the ball--me being a good catcher--I want to throw the guy out at first base, so I pick up the ball and throw it to who? + +Abbott: Now, that's he first thing you've said right. + +Costello: I DON'T EVEN KNOW WHAT I'M TALKING ABOUT! + +Abbott: Don't get excited. Take it easy. + +Costello: I throw the ball to first base, whoever it is grabs the ball, so the guy runs to second. Who picks up the ball and throws it to what. What throws it to I don't know. I don't know throws it back to tomorrow--a triple play. + +Abbott: Yeah, it could be. + +Costello: Another guy gets up and it's a long ball to center. + +Abbott: Because. + +Costello: Why? I don't know. And I don't care. + +Abbott: What was that? + +Costello: I said, I DON'T CARE! + +Abbott: Oh, that's our shortstop! \ No newline at end of file diff --git a/_posts/2010-02-05-post-notice.md b/_posts/2010-02-05-post-notice.md new file mode 100644 index 0000000..392f2cd --- /dev/null +++ b/_posts/2010-02-05-post-notice.md @@ -0,0 +1,68 @@ +--- +title: "Post: Notice" +categories: + - Blog +tags: + - Post Formats + - notice +--- + +A notice displays information that explains nearby content. Often used to call attention to a particular detail. + +When using Kramdown `{: .notice}` can be added after a sentence to assign the `.notice` to the `

` element. + +**Changes in Service:** We just updated our [privacy policy](#) here to better service our customers. We recommend reviewing the changes. +{: .notice} + +**Primary Notice:** Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. [Praesent libero](#). Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. +{: .notice--primary} + +**Info Notice:** Lorem ipsum dolor sit amet, [consectetur adipiscing elit](#). Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. +{: .notice--info} + +**Warning Notice:** Lorem ipsum dolor sit amet, consectetur adipiscing elit. [Integer nec odio](#). Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. +{: .notice--warning} + +**Danger Notice:** Lorem ipsum dolor sit amet, [consectetur adipiscing](#) elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. +{: .notice--danger} + +**Success Notice:** Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at [nibh elementum](#) imperdiet. +{: .notice--success} + +Want to wrap several paragraphs or other elements in a notice? Using Liquid to capture the content and then filter it with `markdownify` is a good way to go. + +```html +{% raw %}{% capture notice-2 %} +#### New Site Features + +* You can now have cover images on blog pages +* Drafts will now auto-save while writing +{% endcapture %}{% endraw %} + +
{% raw %}{{ notice-2 | markdownify }}{% endraw %}
+``` + +{% capture notice-2 %} +#### New Site Features + +* You can now have cover images on blog pages +* Drafts will now auto-save while writing +{% endcapture %} + +
+ {{ notice-2 | markdownify }} +
+ +Or you could skip the capture and stick with straight HTML. + +```html +
+

Message

+

A basic message.

+
+``` + +
+

Message

+

A basic message.

+
\ No newline at end of file diff --git a/_posts/2010-02-05-post-quote.md b/_posts/2010-02-05-post-quote.md new file mode 100644 index 0000000..fda06e9 --- /dev/null +++ b/_posts/2010-02-05-post-quote.md @@ -0,0 +1,12 @@ +--- +title: "Post: Quote" +categories: + - Blog +tags: + - Post Formats + - quote +--- + +> Only one thing is impossible for God: To find any sense in any copyright law on the planet. + +> Mark Twain \ No newline at end of file diff --git a/_posts/2010-03-07-post-link.md b/_posts/2010-03-07-post-link.md new file mode 100644 index 0000000..6d99180 --- /dev/null +++ b/_posts/2010-03-07-post-link.md @@ -0,0 +1,15 @@ +--- +title: "Post: Link" +categories: + - Blog +tags: + - link + - Post Formats +link: https://github.com +--- + +This theme supports **link posts**, made famous by John Gruber. To use, just add `link: http://url-you-want-linked` to the post's YAML front matter and you're done. + +> And this is how a quote looks. + +Some [link](#) can also be shown. \ No newline at end of file diff --git a/_posts/2019-04-18-welcome-to-jekyll.md b/_posts/2019-04-18-welcome-to-jekyll.md new file mode 100644 index 0000000..30fdbf3 --- /dev/null +++ b/_posts/2019-04-18-welcome-to-jekyll.md @@ -0,0 +1,29 @@ +--- +title: "Welcome to Jekyll!" +date: 2019-04-18T15:34:30-04:00 +categories: + - blog +tags: + - Jekyll + - update +--- + +You'll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. + +To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works. + +Jekyll also offers powerful support for code snippets: + +```ruby +def print_hi(name) + puts "Hi, #{name}" +end +print_hi('Tom') +#=> prints 'Hi, Tom' to STDOUT. +``` + +Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk]. + +[jekyll-docs]: https://jekyllrb.com/docs/home +[jekyll-gh]: https://github.com/jekyll/jekyll +[jekyll-talk]: https://talk.jekyllrb.com/ diff --git a/assets/images/bio-photo.jpg b/assets/images/bio-photo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..000845179832190a64352439f621bb797d05f826 GIT binary patch literal 1661 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<HTa{Rx=zyT4T z1C`?C<%!t7+kt^khfPK3u;^sAs z$CeymIysNQ(xibQvUma8S`G$rmMIJizcjF3z0FYc;sL{slm@<783u8g4u-{*4eYl+ zCorsDn82R(nn9{moQFB@@#_ZGLPmy}Q3(tWE;ESznZY1eZ(qsyi&=vqvHNPALxgef z0iM8$o@@cecadiA|Ju1He)M5rkd@3?zuh$h82q(ujz;m&B!@Xu0jyLZE;&fv#eHtuCTxb?%K&&%TSzOPiibL*Vwyic#n z{j@%$R)p0rP%nP3eQPZ6C67&B9I%pJRe&%&s^c_!F_{xmIZEl?_vMJGJgy z-kZ<-O7zcLrv5F5#ir_%3RG!)w3u)CYtHjD&$!F$Ry}tRnj|vGQRYEU%9)3!Cum+Z zpQN&+=JIO0=}`+6S4{bSzxK$sTLPYeRx_p6KDAoUG*8a#Wt50 zuYWP|YO3J%xMi_xt({hztFnAlY1z~F$)I)Vu}hCcM5Z!0%3WL@HDyJJ=cRz0Z8xGO z)a@=#u3P6lB{kJTD{9>qrkme|*yiQ@ox0*bgL`zdW@^E5XY1KfG5-6%ynNP@`?PAp z?^fA7o`+&DKc`K68N<8$cYWAgKg;P}GbOF>CFb^5d0ac;<$21`f$3#*!+(aES5|Mi zZMyQTiDRyijF-n7E~}khvv$SBbRBMgE@pAH@6cMC;{mby`e$d{U*e?Ge8ZEIUHWU0 zZ&YYp^D%F0Kckn~J?|SBFQ1vv>#XPB!+K>|*CcDND(BBqH|6xzP8H_qEccpg_j%=v z%zr*-gp(LkR1XE%oqR4o@e0F=2G)~DI1Y*0nS{JcU9$LrsfB0DveiC5oG+w$73$rgWD9=6=OGrVoZ<|sb1%HtcBd~5Ex>?m2cM%nCT;dB9+oYl4K zT>GZ#F}<2<@nOQ+R+|lT7wP8&Yw}B z<}%;Hlczo_DgT|ieop4T;L||?Q|=yfm+2RInPOG1cv{zDVYTPmbB^Dd&ZcRczrWSLD)e7xTSUW<*+Q!l!(Xp*7VL#~xvCuU4JlTp4)`>4KE;HolzjVI^k-`#)lfVnu^ z<0qP)PF_G#BE!!`qge0n--*#~0QET&yT4B6ry#3@B|7C8-)8jp+ zCAw;AX!vZy>+S`!RjRjF9pSp`H_fr#^jX6z)>wPyv#;YprHvp`DGV++3Ls?^Bd{#c N#G?RMeuEU;1OTJ`a#jEU literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..c5944a5 --- /dev/null +++ b/index.html @@ -0,0 +1,7 @@ +--- +# You don't need to edit this file, it's empty on purpose. +# Edit theme's home layout instead if you wanna make some changes +# See: https://jekyllrb.com/docs/themes/#overriding-theme-defaults +layout: home +author_profile: true +--- From cfd28594682d2d5d98eef1250d84fa8509302093 Mon Sep 17 00:00:00 2001 From: Aloys Date: Thu, 4 Apr 2024 10:04:15 +0800 Subject: [PATCH 156/234] add blog article --- ...dle-GradleWrappe-AndroidPluginForGradle.md | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 _posts/2018-01-07-Gradle-GradleWrappe-AndroidPluginForGradle.md diff --git a/_posts/2018-01-07-Gradle-GradleWrappe-AndroidPluginForGradle.md b/_posts/2018-01-07-Gradle-GradleWrappe-AndroidPluginForGradle.md new file mode 100644 index 0000000..e3aa403 --- /dev/null +++ b/_posts/2018-01-07-Gradle-GradleWrappe-AndroidPluginForGradle.md @@ -0,0 +1,50 @@ +--- +title: "彻底搞懂Gradle_Gradle Wrapper与Android Plugin for Gradle的区别和联系" +categories: + - Blog +tags: + - Android + - Gradle + - Gradle Wrapper + - Android Plugin for Gradle +--- + +本文首发于: + +对于初次学习Android应用开发的同学来讲,经常会被Gradle/Gradle Wrapper/Android Plugin for Gradle这三个概念搞蒙,他们的作用分别是什么?相互之间的关系是怎样的?希望本文可以给你答疑解惑。 + +首先用一段通俗易懂但是不是非常专业的话描述一下三者的概念、区别和联系。 + +* Gradle是个构建系统,能够简化你的编译、打包、测试过程。熟悉Java的同学,可以把Gradle类比成Maven。 +* Gradle Wrapper的作用是简化Gradle本身的安装、部署。不同版本的项目可能需要不同版本的Gradle,手工部署的话比较麻烦,而且可能产生冲突,所以需要Gradle Wrapper帮你搞定这些事情。Gradle Wrapper是Gradle项目的一部分。 +* Android Plugin for Gradle是一堆适合Android开发的Gradle插件的集合,主要由Google的Android团队开发,Gradle不是Android的专属构建系统,但是有了Android Plugin for Gradle的话,你会发现使用Gradle构建Android项目尤其的简单。 + +另外需要说明的一点是Gradle、Gradle Wrapper与Android Plugin for Gradle不一定要和Android Studio一起使用,你可以完全脱离Android Studio,使用三者独立进行Android项目的构建。下面是三者官方的指导文档(从地址可以看出Gradle Wrapper是Gradle项目的一部分): + +* Gradle: +* Gradle Wrapper: +* Android Plugin for Gradle: + +为了加深大家对于三者的理解,我们聊一聊在实际的项目构建中,这三者的关系,之前已经说过三者可以脱离Android Studio独立使用,但是这种情况在实际开发场景中并不多见,所以本文还是使用Android Studio作为开发工具进行介绍。当我们新建一个Android项目时,会出现类似于下图所示的目录结构: + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/20180107182239596.png) + +可以看到一个gradle/wrapper目录,其中有两个文件:gradle-wrapper.jar/gradle-wrapper.properties,gradle-wrapper.jar是Gradle Wrapper的主体功能包。在Android Studio安装过程中产生gradle-wrapper.jar(如果默认安装的话会在`C:\Program Files\Android\Android Studio\plugins\android\lib\templates\gradle\wrapper\gradle\wrapper\gradle-wrapper.jar`)。然后每次新建项目,会将gradle-wrapper.jar拷贝到你的项目的gradle/wrapper目录中。gradle-wrapper.properties文件主要指定了该项目需要什么版本的Gradle,从哪里下载该版本的Gradle,下载下来放到哪里,如下图所示: + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/20180107182326299.png) + +其中GRADLE_USER_HOME一般指`~/.gradle`,从图示项目中可以知道我要使用gradle-4.1版本,从`https://services.gradle.org/distributions/gradle-4.1-all.zip`下载,下载到本地的`~/.gradle/wrapper/dists`目录。 + +有时由于网络问题,可能无法正常下载对应的gradle版本,导致Sync Project With Gradle Files失败,此时可以在AS报错后在`~/.gradle/wrapper/dists`目录中找到gradle版本对应的那个目录,比如`~/.gradle/wrapper/dists/gradle-4.1-all/cdund22i8guosqylfo49op4dv`,然后从网上下载gradle-4.1-all.zip并将其放到该目录中,重新Sync Project With Gradle Files即可。 + +那是不是各个项目的Gradle都要通过Gradle Wrapper下载,能不能所有的项目共用一个Gradle?这样理论上是可以的,但是由于Gradle本身不一定保持完全的兼容性,所以新老项目共用一个Gradle有时可能会遇到意想不到的问题。指定对应版本的Gradle,而不通过Gradle Wrapper下载的设置方式是勾选如下图中的`Use local gradle distribution`,同时指定Gradle home: + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/20180107184405143.png) + +Gradle对应版本下载完成之后,Gradle Wrapper的使命基本完成了,Gradle会读取build.gradle文件,该文件中指定了该项目需要的Android Plugin for Gradle版本是什么,从哪里下载该版本的Android Plugin for Gradle。如下图所示: + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/20180107184419674.png) + +从图示项目中可以知道我们要使用3.0.1版本,从google和jcenter处下载,那么下载到我们本地的哪里呢?它会下载到`~\.gradle\caches\modules-2\files-2.1\com.android.tools.build`中。有时候大家网络装填不好,选择下图中的`Offline work`时可能出现"No cached version of com.android.tools.build:gradle:xxx available for offline mode"问题,此时你只要将对应版本的Android Plugin for Gradle下载到本地的`C:\Program Files\Android\Android Studio\gradle\m2repository\com\android\tools\build`中即可。 + +好了,三者的关系从样例项目中理清楚了。如果大家有什么疑问可以给我留言。 From aa97e8a6021a074266a75d9998f63a1268389448 Mon Sep 17 00:00:00 2001 From: Aloys Date: Thu, 4 Apr 2024 10:12:09 +0800 Subject: [PATCH 157/234] update article --- ...dle-GradleWrappe-AndroidPluginForGradle.md | 6 +- _posts/2023-01-07-Repo-In-Action.md | 358 ++++++++++++++++++ 2 files changed, 361 insertions(+), 3 deletions(-) create mode 100644 _posts/2023-01-07-Repo-In-Action.md diff --git a/_posts/2018-01-07-Gradle-GradleWrappe-AndroidPluginForGradle.md b/_posts/2018-01-07-Gradle-GradleWrappe-AndroidPluginForGradle.md index e3aa403..997c084 100644 --- a/_posts/2018-01-07-Gradle-GradleWrappe-AndroidPluginForGradle.md +++ b/_posts/2018-01-07-Gradle-GradleWrappe-AndroidPluginForGradle.md @@ -9,8 +9,6 @@ tags: - Android Plugin for Gradle --- -本文首发于: - 对于初次学习Android应用开发的同学来讲,经常会被Gradle/Gradle Wrapper/Android Plugin for Gradle这三个概念搞蒙,他们的作用分别是什么?相互之间的关系是怎样的?希望本文可以给你答疑解惑。 首先用一段通俗易懂但是不是非常专业的话描述一下三者的概念、区别和联系。 @@ -47,4 +45,6 @@ Gradle对应版本下载完成之后,Gradle Wrapper的使命基本完成了, 从图示项目中可以知道我们要使用3.0.1版本,从google和jcenter处下载,那么下载到我们本地的哪里呢?它会下载到`~\.gradle\caches\modules-2\files-2.1\com.android.tools.build`中。有时候大家网络装填不好,选择下图中的`Offline work`时可能出现"No cached version of com.android.tools.build:gradle:xxx available for offline mode"问题,此时你只要将对应版本的Android Plugin for Gradle下载到本地的`C:\Program Files\Android\Android Studio\gradle\m2repository\com\android\tools\build`中即可。 -好了,三者的关系从样例项目中理清楚了。如果大家有什么疑问可以给我留言。 +好了,三者的关系从样例项目中理清楚了。如果大家有什么疑问可以通过Github Issues给我留言。 + +本文首发于: diff --git a/_posts/2023-01-07-Repo-In-Action.md b/_posts/2023-01-07-Repo-In-Action.md new file mode 100644 index 0000000..f3cd4c9 --- /dev/null +++ b/_posts/2023-01-07-Repo-In-Action.md @@ -0,0 +1,358 @@ +--- +title: "Repo实践指南" +categories: + - Blog +tags: + - Android + - Repo +--- + +Android使用Git作为代码管理工具,开发了Gerrit进行代码审核以便更好的对代码进行集中式管理,还开发了Repo命令行工具,对Git命令进行封装,将几百个Git库有效的进行组织。Repo并不是用来取代Git,而是用Python对Git进行了一定的封装,简化了对多个Git版本库的管理。对应Repo管理的任何一个版本库,都需要使用Git命令进行操作。 + +## Repo工作流 + +下图是Repo工作流,大体分为如下几个核心步骤: + +1. 运行`repo init`,克隆Android的一个清单库。这个清单库是通过XML技术建立的版本库清单。清单库中的manifest.xml文件,列出了几百个版本库的克隆方式。包括版本库的地址和工作区地址的对应关系,以及分支的对应关系。 +2. 运行`repo sync`,分别克隆这几百个版本库到本地的工作区。 +3. 运行`repo start`创建并切换到本地工作分支。 +4. 本地修改代码,通过Git相关命令在某些项目中进行操作。 +5. 通过`repo upload`命令将代码修改发布到代码审核服务器。 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/1.png) + +## Repo引导脚本下载 + +在使用Repo前我们需要下载一个Repo引导脚本,Repo的核心功能不在其中,该引导脚本只是下载并加载完整Repo程序的工具。 + +```shell +mkdir ~/bin +PATH=~/bin:$PATH +curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo +chmod a+x ~/bin/repo +``` + +这里需要提到一点的是早期的Repo引导脚本是一个Shell脚本,第一行就是`#!/bin/sh`,然后通过以下代码完成Shell向Python的转换,不过在较新版本中都是直接使用Python,第一行变成了`#!/usr/bin/env python`。现在网络上的很多介绍都过时了。 + +```shell +magic='--calling-python-from-/bin/sh--' +"""exec" python -E "$0" "$@" """#$magic" +``` + +## Repo清单库介绍 + +一个清单库可以包含多个清单文件和多个分支,每个清单文件和分支都有对应的版本。清单文件以XML格式组织。举个例子: + +```shell +repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-11.0.0_r27 +``` + +```xml + + + + + + + + + + + + + + + + + ... + +``` + +* remote元素,定义了名为aosp的远程版本库,其库的基址为,还定义了代码审核服务器的地址。当然,还可以定义更多的remote元素。 +* default元素,设置各个项目默认远程版本库为aosp,默认的的分支为`refs/tags/android-11.0.0_r27`。当然各个project元素还可以定义自己的remote和revision覆盖默认的配置。 +* project元素,用于定义一个项目,path属性表示在工作区克隆的位置,name属性表示该项目的远程版本库的相对路径。 +* project元素的子元素copyfile,定义了项目克隆后的一个附件动作,从src拷贝文件到dest。 + +## 通过Repo下载AOSP系统源码 + +现在你可以通过Repo下载AOSP源码了,但是由于墙的原因,我们没有办法直接下载,需要通过一些AOSP镜像,其中使用比较多的是清华的镜像,具体下载方式请参考官方介绍: + +### Repo下载AOSP过程中可能遇到的问题 + +1. 某些project找不到: + +```shell +... +Checking out projects: 58% (432/733) platform/frameworks/hardware/interfaceserror: Cannot checkout platform/frameworks/layoutlib: ManifestInvalidRevisionError: revision refs/tags/android-10.0.0_r47 in platform/frameworks/layoutlib not found +error: in `sync -c -j4`: revision refs/tags/android-10.0.0_r47 in platform/frameworks/layoutlib not found +``` + +这个问题我一直没有找到根因,可能是镜像的问题,也可能是网络的问题。解决方式发现哪个project找不到就单独同步该项目,然后再整体同步。 + +```shell +repo sync -c platform/frameworks/layoutlib +repo sync -c -j4 +``` + +## Repo常用指令 + +Repo子命令实际上是Git命令的封装。每一个Repo子命令都对应于repo源码树中subcmds目录下的一个同名的Python文件。每一个repo子命令都可以通过下面的命令获得帮助。 + +```shell +repo help +``` + +当然你也可以参考Repo官方的介绍: + +### repo init + +```shell +repo init –u URL [OPTIONS] +``` + +常用参数如下,其它参数通过repo help init查询: + +* -u(--manifest-url):设定清单库的Git服务器地址 +* -m(--manifest-name):当有多个清单文件时,指定清单库中的某个清单为有效的清单文件。默认为default.xml +* -b(--manifest-branch):选择一个maniest仓库中的一个特殊的分支 + +命令repo init 要完成如下操作: + +* 完成repo工具的完整下载,执行的Repo脚本只是引导程序 +* 克隆清单库manifest.git (地址来自于-u 参数) +* 克隆的清单库位于manifest.git中,克隆到本地`.repo/manifests`。在之前的Repo版本中清单`.repo/manifest.xml`只是符号链接,它指向`.repo/manifests/default.xml`。在目前的repo版本中清单`.repo/manifest.xml`是一个实际的文件,通过include的方式引用`.repo/manifests/default.xml` +* 如果`.repo/manifests`中有多个xml文件,`repo init`可以任意选择其中一个,默认选择是default.xml +* 在`.repo/manifests`中执行`git branch -a | cut -d / -f 3`可以查看本地存放的已有的所有分支信息,但是该信息只是同步到你上次下载时的信息,如果需要最新信息需要先在该目录中执行`git pull`操作。 + +```shell +repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-11.0.0_r27 # 在当前目录出现了.repo文件夹 +repo init -u git://192.168.0.125/manifest.git –m android.xml # 选择的是android.xml里面的配置,.repo/manifest.xml便指向.repo/manifests/android.xml +``` + +### repo sync + +```shell +repo sync […] +``` + +用于参照清单文件`.repo/manifest.xml`克隆并同步版本库。如果某个项目版本库尚不存在,则执行repo sync 命令相当于执行git clone,如果项目版本库已经存在,则相当于执行下面的两条指令: + +```shell +git remote update # 相当于对每一个remote源执行了fetch操作 +git rebase origin/branch # 针对当前分支的跟踪分支执行rebase操作 +``` + +如果直接执行`repo sync`会同步所有project,如果后面指定project则只会同步指定的project。如`repo sync platform/build`。 + +### repo rebase + +### repo smartsync + +可以通过一些选项设置同步的方式,比如是否在遇到第一个错误的时候就停止,是否强制删除含有未提交修改的项目等等。 + +### repo start + +```shell +repo start [--all | …] +``` + +刚克隆下来的代码是没有分支的,`repo start`实际是对`git checkout –b`命令的封装。为指定的项目或所有项目(若使用—all参数),以清单文件中为设定的分支,创建特性分支。这条指令与`git checkout –b`还是有很大的区别的,`git checkout –b`是在当前所在的分支的基础上创建特性分支,而`repo start`是在清单文件设定分支的基础上创建特性分支。 + +```shell +repo start stable --all # 假设清单文件中设定的分支是gingerbread-exdroid-stable,那么执行以上指令就是对所有项目,在gingerbread-exdroid-stable的基础上创建特性分支stable +repo start stable platform/build platform/bionic # 假设清单文件中设定的分支是gingerbread-exdroid-stable,那么执行以上指令就是对platform/build、platform/bionic项目,在gingerbread-exdroid-stable的基础上创建特性分支stable +``` + +### repo checkout + +```shell +repo checkout […] +``` + +实际上是对`git checkout`命令的封装,检出之前由`repo start`创建的分支。但不能带-b参数,所以不能用此命令来创建特性分支。 + +```shell +repo checkout aosp-dev +repo checkout aosp-dev platform/build platform/bionic +``` + +### repo branches + +读取各个项目的分支列表并汇总显示。该命令实际上通过直接读取`.git/refs`目录下的引用来获取分支列表,以及分支的发布状态等。 + +```shell +repo branches […] +``` + +```shell +repo branches +repo branches platform/build platform/bionic +``` + +### repo diff + +```shell +repo diff […] +``` + +实际是对git diff 命令的封装,用于分别显示各个项目工作区下的文件差异。 + +```shell +repo diff # 查看所有项目 +repo diff platform/build platform/bionic # 只查看其中两个项目 +``` + +### repo stage + +实际是对`git add --interactive`命令的封装、用于挑选各个项目工作区中的改动以加入暂存区。 + +```shell +repo stage -i […] +``` + +-i代表`git add --interactive`命令中的`--interactive`,给出个界面供用户选择。 + +### repo prune + +实际上是对`git branch –d`命令的封装,该命令用于扫面项目的各个分支,并删除已经合并的分支,用法如下: + +```shell +repo prune […] +``` + +### repo abandon + +实际上是对`git branch –D`命令的封装,用法如下: + +```shell +repo abandon […] +``` + +### repo status + +实际上是对`git diff-index`、`git diff-filse`命令的封装,同时显示暂存区的状态和本地文件修改的状态 + +```shell +repo status platform/bionic +``` + +以上的实例输出显示了platform/bionic项目分支的修改状态 + +* 每个小节的首行显示羡慕名称,以及所在分支的名称 +* 第一个字母表示暂存区的文件修改状态 + * -:没有改变 + * A:添加(不在HEAD中,在暂存区中) + * M:修改(在HEAD中,在暂存区中,内容不同) + * D:删除(在HEAD中,不在暂存区) + * R:重命名(不在HEAD中,在暂存区,路径修改) + * C:拷贝(不在HEAD中,在暂存区,从其他文件拷贝) + * T:文件状态改变(在HEAD中,在暂存区,内容相同) + * U:未合并,需要冲突解决 +* 第二个字母表示工作区文件的更改状态 + * -:新/未知(不在暂存区,在工作区) + * m:修改(在暂存区,在工作区,被修改) + * d:删除(在暂存区,不在工作区) +* 两个表示状态的字母后面,显示文件名信息。如果有文件重名还会显示改变前后的文件名及文件的相似度 + +### repo remote + +```shell +repo remote add […] +repo remote rm […] +``` + +```shell +repo remote add origin_1 ssh://192.168.0.125/git_repo # 这个指令是根据xml文件添加的远程分支,方便于向服务器提交代码,执行之后的build目录下看到新的远程分支org +repo remote rm origin_1 # 删除远程仓库 +``` + +### repo push + +```shell +repo push [--all |…] +``` + +这是新添加的指令,用于向服务器提交代码,repo会自己查询需要向服务器提交的项目并提示用户。 + +```shell +repo push org +``` + +### repo forall + +```shell +repo forall […] –c +``` + +迭代器,可以在所有指定的项目中执行同一个shell指令 + +* -c:后面所带的参数着是shell指令 +* -p:在shell指令输出之前列出项目名称 +* -v:列出执行shell指令输出的错误信息 + +额外的环境变量: + +* REPO_PROJECT:指定项目的名称 +* REPO_PATH:指定项目在工作区的相对路径 +* REPO_REMOTE:指定项目远程仓库的名称 +* REPO_LREV:指定项目最后一次提交服务器仓库对应的哈希值 +* REPO_RREV:指定项目在克隆时的指定分支,manifest里的revision属性 + + 另外,如果-c后面所带的shell指令中有上述环境变量,则需要用单引号把shell指令括起来。 + +```shell +repo forall -c 'echo $REPO_PROJECT' # 输出项目的名称 +repo forall -p -c git merge aosp-my-dev # 把所有项目多切换到master分支,该指令将会把aosp-my-dev分支合并到master分支 +repo forall -c git tag aosp-mytag-1.0 # 在所有项目下打标签 +repo forall -c 'git remote add origin_1 ssh://jiangxin@192.168.0.125/$REPO_PROJECT.git' # 引用环境变量REPO_PROJECT添加远程仓库 +repo forall -c git remote add origin_1 # 删除远程仓库 +repo forall –c git branch aosp-dev # 切换分支 +repo forall –c git checkout –b aosp-dev # 创建分支 +repo forall -c git reset --hard # 当repo sync时如果提示discarding xx commits时可以通过该命令废弃所有提交,然后继续repo sync +``` + +### repo grep + +相当于对git grep 的封装,用于在项目文件中进行内容查找。 + +### repo manifest + +显示manifest文件内容,可以通过-o参数输出到指定的文件中。 + +```shell +repo manifest –o android.xml +``` + +### repo version + +显示Repo的版本号,还会同时显示Git/Python等依赖的应用版本。 + +### repo upload + +repo upload相当于git push,但是又有很大的不同。它不是将版本库改动推送到克隆时的远程服务器,而是推送到代码审核服务器(Gerrit软件架设)的特殊引用上,使用SSH协议。代码审核服务器会对推送的提交进行特殊处理,将新的提交显示为一个待审核的修改集,并进入代码审查流程,只有当审核通过后,才会合并到官方正式的版本库中。 + +```shell +repo upload [--re --cc] {[]… | --replace } +``` + +* -h, --help:显示帮助信息 +* -t:发送本地分支名称到Gerrit代码审核服务器 +* --replace:发送此分支的更新补丁集 +* --re=REVIEWERS:要求指定的人员进行审核 +* --cc=CC:同时发送通知到如下邮件地址 + +### repo download + +主要用于代码审核者下载和评估贡献者提交的修订。 + +```shell +repo download {project change [patchset]}… +``` + +### repo selfupdate + +用于repo自身的更新 From 28101c0c5decbea98de388ca15a227b9e16cf918 Mon Sep 17 00:00:00 2001 From: Aloys Date: Thu, 4 Apr 2024 10:19:08 +0800 Subject: [PATCH 158/234] update article --- ...2023-01-07-Repo-In-Action.md => 2021-01-13-Repo-In-Action.md} | 1 + 1 file changed, 1 insertion(+) rename _posts/{2023-01-07-Repo-In-Action.md => 2021-01-13-Repo-In-Action.md} (99%) diff --git a/_posts/2023-01-07-Repo-In-Action.md b/_posts/2021-01-13-Repo-In-Action.md similarity index 99% rename from _posts/2023-01-07-Repo-In-Action.md rename to _posts/2021-01-13-Repo-In-Action.md index f3cd4c9..498da54 100644 --- a/_posts/2023-01-07-Repo-In-Action.md +++ b/_posts/2021-01-13-Repo-In-Action.md @@ -5,6 +5,7 @@ categories: tags: - Android - Repo +toc: true --- Android使用Git作为代码管理工具,开发了Gerrit进行代码审核以便更好的对代码进行集中式管理,还开发了Repo命令行工具,对Git命令进行封装,将几百个Git库有效的进行组织。Repo并不是用来取代Git,而是用Python对Git进行了一定的封装,简化了对多个Git版本库的管理。对应Repo管理的任何一个版本库,都需要使用Git命令进行操作。 From 65c99647f5e93c582ba1584a6d2419abc5ba2855 Mon Sep 17 00:00:00 2001 From: Aloys Date: Thu, 4 Apr 2024 11:03:27 +0800 Subject: [PATCH 159/234] add comments feature --- _config.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index 3da6a50..66a77fa 100644 --- a/_config.yml +++ b/_config.yml @@ -13,17 +13,22 @@ # you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. # You can create any custom variable you would like, and they will be accessible # in the templates via {{ site.myvariable }}. -title: MM +title: Aloys's Blogs email: description: >- # this means to ignore newlines until "baseurl:" Write an awesome description for your new site here. You can edit this line in _config.yml. It will appear in your document head meta (for Google search results) and in your feed.xml site description. twitter_username: username -github_username: username +github_username: jiangxincode minimal_mistakes_skin: default search: true +comments: + provider: "disqus" + disqus: + shortname: "aloys-1" + # Build settings markdown: kramdown remote_theme: mmistakes/minimal-mistakes From f376e0bd6e19b34daccdf62542547f9d0123d3fb Mon Sep 17 00:00:00 2001 From: Aloys Date: Thu, 4 Apr 2024 14:37:16 +0800 Subject: [PATCH 160/234] update info --- _config.yml | 35 ++++++++++++++++------------------- assets/images/bio-photo.jpg | Bin 1661 -> 12005 bytes 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/_config.yml b/_config.yml index 66a77fa..a60514c 100644 --- a/_config.yml +++ b/_config.yml @@ -63,34 +63,31 @@ plugins: - jekyll-include-cache author: - name : "First Lastname" + name : "Aloys" avatar : "/assets/images/bio-photo.jpg" - bio : "My awesome biography constrained to a sentence or two goes here." + bio : "心若冰清,天塌不惊" links: - - label: "Website" - icon: "fas fa-fw fa-link" - url: "https://" - - label: "Twitter" - icon: "fab fa-fw fa-twitter-square" - url: "https://twitter.com/" - label: "GitHub" icon: "fab fa-fw fa-github" - url: "https://github.com/" - - label: "Instagram" - icon: "fab fa-fw fa-instagram" - url: "https://instagram.com/" + url: "https://github.com/jiangxincode" + - label: "知乎" + icon: "fas fa-fw fa-link" + url: "https://www.zhihu.com/people/jiangxinnju" + - label: "博客园" + icon: "fas fa-fw fa-link" + url: "https://www.cnblogs.com/jiangxinnju" footer: links: - - label: "Twitter" - icon: "fab fa-fw fa-twitter-square" - url: "https://twitter.com/" - label: "GitHub" icon: "fab fa-fw fa-github" - url: "https://github.com/" - - label: "Instagram" - icon: "fab fa-fw fa-instagram" - url: "https://instagram.com/" + url: "https://github.com/jiangxincode" + - label: "知乎" + icon: "fas fa-fw fa-link" + url: "https://www.zhihu.com/people/jiangxinnju" + - label: "博客园" + icon: "fas fa-fw fa-link" + url: "https://www.cnblogs.com/jiangxinnju" defaults: # _posts diff --git a/assets/images/bio-photo.jpg b/assets/images/bio-photo.jpg index 000845179832190a64352439f621bb797d05f826..394012cbca9ce7b736f848006fb8a331c08497d7 100644 GIT binary patch literal 12005 zcmbVy2T)Vpw{MUR3er1BQ>01Qa`gwG3Ajc^_Rsadg`AT7AEBb4 zAg83JqNe^wX=v$bX=vzZsHy30(9zLfCkZtz1LKYB4FBB!^OApt|1*koU8kX@`KQPK zn_RU4m}mgKfL?MkA;2{zGIA!et1f^5$yUmL5Rv_FgGtZV$SEkPNG8$IlRDJiB$-c6 zevM=-B?SekHHg#>pkSh87L?VXVljC|E#%267o3ghj!VPv^`t*e{2kMDawsQ-u1PhsH^ zkx|h}$zM`Z)BgIJo|~6nP*_x4Qd(7AQ(K3uZ)oi3?CSp6)7#fSIyOErIW;{qyNq60 zU0dJS+}g$-9vz?HPVr~w|KK76kpCyF|3daJxR^+|u93b01@%9;$gcVQ1DuJ1Qc#wP zS;K_-l_!gkTrdsm_5={1KIx_u#o>RWd8;1zj4h1 zu9K6IJ{~y}00@}Njh480c?FQ~h!*>P?Y~rB@7p&9???3M^67n8j(8sj+QBuq#-GWB zgUEN$+xseSUTw2Q-odavmWgS+F)ks(?1p^SaQ3ElM5e+KlBYvYj_2M;6^~96PDg>t zGAjo>y&`Jj?s}b8BNr=2*JGzt)WzRkPTAY9Wp|!OixI2=cX5ks1X;BK4uS}`nmlkm z9K9vA2Emi3Kt{7CixG9L$D*m|*~X$fn;G}%#JFb5337mb&rb5iEo~57!AoH>RxD59 z*{$4YF~I*x2L;`qO|5V)4oOP-U%vgq!$mdpR}sdwRFi z@~3TnzA*Opag-9PjrkP|{Ob_nFBHcTSX#T84Y&flg2XuRDM+v^!NZTXvUp?@Dz{;R zU!d@(Z-Dn?^YZ3<%j@qYN?9wjTyr9=;DJ=qee_d0?s0$Er;9w)q{$Z}XYcYQ>zfn`tAo`gRV z@dSoyFqj|wsMTJ0gBC8uEC!1>1A{}AgRNz0Pa_S zX_qd0dA!@~7vtk%Z`rYCQ znGY7uuK@NsC*@DmsMUDd^<#sQ&DW}`9j2Zi`Ypra$^*S8k6Z4v5&5RntSUfCCfnxc z_8H6yzyGM5IcMo{2_j=uO+*g0WBbhvl>39qx*RZ1vuAl8V|MHfFb77Hw-UY1VQJ_9 zgP0{oyOH75$DVT{Lq_-H9r7Li&fc|JCRuH>M3uHQ&ljFkLX($aJDDXQ4fZ(JE*`tr zC&5Wq!fGWXmUxo|d1rRskM8n;0v4`VW{+3od~V0x1VbLoSkDi4RRQyc8J~69-19Cm z+aLe-A}}`&pp|Lj&Hx&oro#hv+F{3A79N>sxrfUk0_~%<@t$E*t;Uy!7yP)g6)w*B_`fU^WlJS zd~8srLH$6Q*01I|Kf{O5YfpihYMTAnz`L0PlHV?CZ-2=dE?WzdX>=`YnM|(TE02>R z@4~6ytxf{bC#b$k9{9?|tqNY`I$VougDz6=ReWCxjb*Z!sJ4Y6mZwi1^d7uU2LsKK z#?m|&@6;xqZVbGGS-rj^@^h)e$O7~#JT0u*LG%(krl^uvJt-X9&#rcvMZEV&{*mzm z4W}DCPAih%Q_b~6aN^npTw)V5yOYCxIC$v6@3UF?oaoS!u$IXR8Q=BnS-bgUJG0t= zW0T(_Pk)K!Mg#s;@6w{bjBqQAiX$X-$@vBWURMC7KrMg1pBc-S><{%Xp-5i9p?};({hOXehpGqylicufPsFhRFFt9z|d<5}bp3bQ= z*rV=v%{R!F(XkZNB)Qm}8LeL=9 zQ^ZS5)S)WJUME@d6Ce1u#n$!=G0nbliZ=)ebsD>Sd8_I&r&<2SulJ4J-BV$Z{FgD1 zia$!(>#8g6UZ{O1)s<7DD?l+~eL-bKzah^5)w`kbWaPK6P!mka;Jl4$}wvb#rQx}H@E3zFZY>6IGb#@F>{AHrpbn|^L z;MSU*N$0J8Jg`J(=@Mj#aaxJ2rMDSqF>g~<9hdZw=7uQBpEj4=zE{s%@|H!IolTV z>Bsd6)1^%c@Pc14&x#IZj_0H$wECYdKPYg{8t--J^e&ZmeAuK*M!$)@<=D*)wv?ClbadakY(#WLtfy>Y;7}hWO=!asEOdS-;2iX zRj(aHD+s@AE?3IWduLj@Z$I#lO zxzO!0=__F)pztYN89X+xI>aoNCTAenPR3;Q7lsVsPPFlYc%z5$(o<1;X#8^w;*k~W zHg`nK>No*`zL2U*3*t=*qL?y|3|eD5n}s4K6L?|W>U@_CzC0+7K=a?e8G5i^K34$R z=^NTM4-T$d)AD6)*|VF+uVc<+6rNfs*;w}ovB$OJU2xr3fDm`+4(>@+GnOjb(-+IK zJYUM?G9g&|V$w&feeD38^DOysSvaW7>Cwj|9QJ3NB5ZHjfy?PHUS*uKv=Q@{3{yCL zOOnMF(oSu74bDeU9y)S=J#>gK{ai%JL5VF>RT{mp*{wZPhi|<&X<>f&q3>0aUio^s zi6_XHL2XC%%gw5vy29@$LTJSMf5mcHeVLB7+!u;}`zHRavsRL-@XJ0Srq6Bhbe}aS ze5n<7*HN$%Bes_-QqO^j#S>-WrKQh3InN+M3T zV|la1wJ6g>mLeV-XiwCsR0wxjICgT>wF)_;K2-DPj@sn!o`$@?0#ryv1*;00JMs2< z|EW^&VteU#x1B#_>9GIXJlB3*(AW$yVbGxjS5-oHoEM${qrhj%RciEbLUDEPH_4mk z-Tc=;?+1!&voS3?P*o`+w_2whpQ`I~LpB&Fx^~>>;<5N?>?fRVyc`i`t+sFrzlhl% zS~P1Kxm}NqkE~pn?YW+8qm28+V`csZIzaU&u3y{pv$n?J(XS`PP7^zt&Mu8 zInE?1R`ONdfj1J=4X2Q5rg!!=rr4_dV@O|S|28ojpSEMZ)|0{VsHfkmj$O82>GQHC z3zw4`d>4x$Z38?R-7uzBe98)S>u=w(jQZb}Ta{6g2hK_Bv|nn|eleUeMQ7$(7MRiH zm;`adL(jh)=4D6PtD1iM9QU$x@tG8S2$n+ddw=3`E|i;8HSKztUGwm6^Dx6;2~^#E zpZrO~#lzMh!!oM6*B_j6?<@w#4?L|(8a6~m2SiD)hbvlSPM8(G1V}&r_&s@u6(HY6 z9=#@n*HEdC*K2lKF-VXK1%sv?&3j%8M?uRE_@EU6WKaq7$qKftMV;z&+!K4QNd@T_ z0pDH*y(K?lL=O{g0^5PL4m}3~_~hk-nCxXlxKwTED;$kauP=z}V8m~+<-6XB66VLK zKfeLX+91U1T0YD=p$h&|0DpVxBgwa9!5GFR3DUFSl?YIw(!|NUZcbAxZPOe5;?l&& zVc&kZ-LI4!T2u_U)4oVI2bEb)jVW5FYAxWaPrV#pHSiOZvsKwTE%fL4zGJ88J=S6J z=`#OyMNqg4nwn`{^^IKMdpYmUj>*suuC?bijko6;IqlUk`*9Ue58ugSkllx&3GS8M zWXtm9*Lgq@cZQ8)z?<}?X7O3bC+XEj45EEr(>Uvqu<|`i*K|kSufw8+R@G#_yJ3g{U7dp$74~Lq`=3`*I#0?!@(TyW+8!E(wEIH5^Q2o8WASm43n!{Bra!sAYQa;@4gP+#=8P#Snt)X|o3Ug&OW;qr*!r{!Cf=Wwm#Okqixzjb?|64HS%V!PFTZs-~R{%bB>cNY91TU;#r@u&jeH|ul zyD-JmQ!vS(Mf?qmW$(~jljKwIg66=0t1My@NCPeP{Z}PHwNv8!h#|D0RC>uW)DG{dmF03Kf&|bBpyb&0ZmqIu0pv84LoQ7Q|FpZf!%55-y^sgZxqkd3C ztT5geEydW)^3n#cV?7qAr4IdNuKc&XE|4`iV&!S^etB+dh^~h)$$vlRt*r0w&A<5~ z;V~`SKwPJ!Hh&?%jgeH)b`Q)VK9!zFhl_8kU+xOfW)07|aK&;guk}RANS>54Z%Zk6 z&FcEpG$hh@da~TKpIz3V%<(FP3MQu5`BTU)8ONk9h)ftolv?+ZvJEy3jtr$_pQYx= zd)Mm@-yv_VCS&trNeo6R{VCom$?q4vv%w-;{upCkc`BBx*6Ew%d;vS`Br87?|e$?6Rjzwv3i}T3(dFvcAxE4a)<WOFwqZGK^$n;Z+o zrGWtgUvV*Ew=f!Y$ZX*;g|cN7H=Y)SHYuIOml@i#57>VGv+(! zkARn3TCefmXypik1N-G2+mYHQ^GM%<-RBiS>gH+}<^%VO`&9S~KdKJ%&q31+FCMN3 zLkhP|{_J1aXTJN%RWTLoFTe5n{t}_0z~L500#8XRHNLz6zl{c|Ozs#>f?0wVlHmf0 zL2mMKgZ#R0kJ?h@u$9!HT3}Z;N3+E8b?Gv+G2_;cwiKI8ZLzPFn_R)bFi-ybSidl$ zv}Naw>5?Wt*qTvd1+SJ%BJb%tCvAJM&AM`a<$qNp!A1Mdg1Qhu$%gksm$QA@f~hpu z+a57A6t)L&+Cy(J&a4h=q`u!;K&g{fUcEYFg63rrj29omx8M@3cDHzI$^}U99CMTO<2vn##%aLJF>xZ~Ti&0^JH> zFz}n*@L;n;0o^x&cr&GE#_I*_C>AtRKa7nrn8Pnh?b%AMy$0<@8NDtiF-giY>UvUX z>1t)$X>luCaT8|ZXR-QzOMp@i&-y z5^l<6oOg}p)=iCTC{jYU^mVar7gYlZUd3d`K!lUg%AfYe=lc6AvzaVIm=s0K$o%%j z(`Y`@tP9rVd$;jmfGl|X7qSAg)4u!0D@Z-RV|aGSrQ=cpPbb?aVtcp2>6fVncrC+1 z@c$lN-m5iJ0PbNwPm zAU|?K@vHA3J8q{FCi3~lDefg(^K5~cM-EW5Be-pjytr5A>3Wm682N+F8^sl&9*PNn zUjbaj6IH7hS5+xK_6w{(>!fzQoo-0GD>%oI!U%hJwd>g;3`3aDs`+?oA1`yj?62@lB{bf_S1gk zr=-2<4YVAypY6<>=@U_&JyNXFkGKJ%BCD^bu8fyIOzz1L5r<(a`e$b)9zd6n;VM$g z8oVaA&K#fJV`XRq0DcHiyybW{;90iq$?0pTVMf{Ta&cyIMf4UWR9bIQ`0lNSHp#@F zpd30%*wXg>2|kzV5gD1IfXjg#Liet4cpk5a-Rz{H`|5>ysf5<(DM(vvON-TvD~#3T z5#|5TXCI!C+pHr*@oQM%&n!+XdmMtG+KQzNn+o2qa6wHdSaor*SNp$ySXsAp7`Y<< zW8}Nj<&ydJ{@#|wgj!JKO3kRxMU+(SjaQkJT`s4o=9^^cz9j!o6|bPSmjs;-A!Fmu z0D*E`CviC3&W*S)uT{#?hV70fr)K_rZ9QH=eFz!FKF4p%5>6)~D^x$`eEdf8TNEIT zV+|+Y1b!wj?QT$av5IxHxOuI|-LG6PT*0(L=k3pnw|`72Yr)MfKcSY8s9NQ2Mh?wo zLxHw)$R1^o2l>1PTLMnKgwBPlzA;j&yma-Y0&XXDMFi_ml%Bnp0LK(9M`3~8!0=W% z3}0L(Vz$;M<~emFSfSv>ys$3L=y2D_YyIZ;>q(S>Y@~dgKuQ9`2@fwx0neM^8&J(o zQtH?$%uHiq-U5fpRu^UL!WeHgAy~N}Z6Kd~!h^e~9!bp?T+x zrG>(}v(-P)tXaLvT?Dgq5OQS!mA3hg|3gDd3SDyCd`4Vmqie(ER(F=-J7=fpu(v@r z)DqHfO^fIJYg+e;cLGFGQcvg3WtI~NY(ShhzKIt;jpBy!pN*~b*NrQ_J#H%T{{2H) zTa_W`%T(i5)}1lmGF_MIamkA12Ci^j7b|uXVjo2)-eT2ZxBG%WP>KXAk>HKJ0z@1S zhc?Q5BrFyKLVGs z;p8y(&5`L%2O1d9bk}G4_sK-29V?GJv9}UVtM4l$B?Z5zu4V@GA(9Jt-NncA;&Zq3 znLVpNH2ES8a3At!OCtL#S?{8~8sk0F8zCuWig~6nQ~L(La8l?m_Y}_xNEAp0o)Y^U z=Y#i$U?EFA-7-=3JimQZZ&gh-OSm9xAEq=v*R9m@2l1%>sndCq#4ES!G6H~GbpwG|21{d55yX!!ZjvwBd|K$N5u;y{shk*6@rqR!trDL%ly3Ggb-; z!@|+HN-RsyY(#9cZ&@D#is~AwWDmL4`nspN+tCr+5c~djgjZrXxM?-jif_R+<3T5p zwQ<~6*B9)iGK!v$v2?|vzOtw53jcE65^Xnat3P|j9QCa^2~8ZlXIM;-96i}H;u4*z zEzSpJ?0kfc_ye+x1><3>;G1z>Z`oK|A4`K!wD?QV`GpkD?B0u@PY*NsU#!qu_mx#Z zfYJ#8P4a~AXmQI}c1UzVOxa$gxObR-Ny%;WoI^FpNC$LR$`Q%J>5!wVT=|Mh1ItA2I&lC^p{1}o`$t$P3X3F`wci)DdJ6_N6H`z95 z{DVaGhA@}ji~tn)CsmQZo6vUnZRCPj%~T>h0FALj4rsaThW-f5zRFY`^jp38O{OPrRp{+u>o z+s+cJAf%P53Z6*Y+hZZpXRk=`QTI)#-^6=dn1?BG?Ww&|EH57*JB@`n3U|;B_i}?# z3m&zErtUe8_@BdV$+1~56XM87iQ26Tr0L9wQ>bCzzJ4xPB{jX z8|c_6>$tM!4Kxg0WaM$lew~wM%5;oo66r7ovYn&C=Y$>Zv<qom9nEhHE1H143NJ3>BaQZFYP?ImoK1N)}zhAuqjM+(3 z6G7H6mfyQ-LNVZi85`HS;d}4HXJuL6VB~9|n}8KQ@t@m44Wz>^3K9*e%cuNWs&<1J1lF zK&$rRmK|Rpjs<`7*dg(htLS3Q0c&vdN{iJ(qvPLAYgTTt?*Liz8>d$O!vz5xyTcbW z1R#Ejv>{zKfWh+&xyH1`x*PSqT2SC zThG&=9d|Er4Xdb|q@&v5P&ivn#*P3}pd^N&+_e;Z;r{&XdwkO@TI)!uSSErje0M4K z1d&cufwwa@E0+x`o^~8?xMfkMw7$yQ9%*gL3k~fGST(4Zdk3%ykD{KBAZI)EWgAZ2 z;GAnk)U}&^5nVk!u>pRa%6vz($@qQV>Y}aaI7?b(0Y&TSE-UaZM*M9OuNJ|K`idb= zb=P6z7T;nDTR`tKf~+45R}MB!IL1GHFJ*67PLRPOBLa0?^R@*T)bCnvPxVQrPKLHy z7j&i3voFdf_Xl@|EqoQ%<%v*>B_7qu+IuhanF~bn16#34gLHU5t?D%WQ4h<#_#N*b zX=xe>RD2_v+{&7({cT@-?i@e86RWx>b~yelJ0r&U3LxqVqh2|S7+DOHW!cEvyX&v* ziXf!R!K3hy6+UBgjB(8E-;idW6_A|=&s&H{W$S2$L8?lD98G4}@~1FI)=V;>;7Z{e z%xYu7KuvlT5rhY@; z9`8!O_tJk%YB_##uuUyk;oW5s=w(Uc%SX4SBmnb%0^arSPZ66>!z<)jLJDGf)UEoJ zJ@xw>oF?`_^9R3)n&@pS4{G@?rv_X9k`5zrFL2-C=KMsS^H^;j(gZ~-e+8gh)FKht zoP@ukH-pg)h)-kra9SUpG+)aM!|1j7NHZ-b#w23^;6wV%NVA3``hj-+7~+R7y)QW2 z#^zJHB4j_+R6D3Ff!$w;6^EF1717DsovRas||IaY{ zzr${td5Os1QW>!F>wX;O%I4h1NOPol(wT*ld{pWoPvjdStz%+dq9tR>mmmowETzZl zCs@r94Yhgi+#G_{*iCSya5(2{BG$?l(52+jMPrk`SO+LfTmdxoEXoY%P0OiP#8eCw z^9=Pw#`YT$MvP}5L^|cA#o6QzYe;8y{GKC;GUD~ecIWR52#)>m{gcbBQXyH966$)M z_Dd(Fg|jAN_dq<&lGqjrJ!ofk*DS)18QYr`eRgfkcl^Dl33s+E5pL zJ_!nleAR%g*N%QGsv+W)vs8As*GV{proAF>`C!iw8;WxpDM#a7Rv zbH^2qXsB1~!cX4V1oASmGTUftYrIiW#GkT4fu?e)cf^uB7ZVqD2r@Q^JBSQmt_sH% z{n?2g;?P=k8-gVf=(Au&jF zmf$#BvN0ZxmRHg*bK@{Kf5#w4e=l86_S^Lz?%Kv&oQPk;WF)8fu2mj%9|W9fWd+Gu z{~f+A|9$(uU3dOp7s*eis^oxyY|nIVy$o^3#}MfSuq)QpNe|fYcHhrJ`QO+Jw6tX1 z3&_*^P#J#ub~?bK(*!dd>1Ndt;(D?XhLS(It`lb~_;|bGZi!6Q);Mau9~OfT?YNJO z@o6eUMRNa4E5y4^s@`rK_1Q|7P>Rx!!VUB(sZ~;PiI>nZ)vF{z5yJ_1F$jSbVtAPw zC=Bda40FGQx5v^;fozd6y%Ak?ZIr~}zikJ z6YAFo4GqI0=MzDiW_FCmji}_v-B$q-IGTclP4SA#v% zLGX0FgU8PuYF?KH+-FJO%wC1duhqaRV~g}IOGHm=pd3Br7Ulw&Sg7WUT9AYQBNWyF zsq*iz^e9q)WA6{Jz5Gv}9hYuD<> z8!7S`nj#fER?qSV_7{3jI+UtqY?;YUa)U>siQ&M3d;fZD_Mgv;`T$qOUN^sYvjqF} z5tmO3Zrt4ZlW2|gpLNI^sZQJ9FB=|-c-OTiUWNgkIN|ON@oDM&C4NCJ%RssrjnbVf zfMaI)KH|xt0bhB#e!iN)-H^5XR5=kXBwYcwQzB5i+2#Te$c{yJT)?Ro0_8C&sEA!B zW%hTjlbVL<9bPo@e}=(pgV(#*sdVSd7q(}p>YxYmDrAsjEqntBV6s|KvVTG z&~0g$+S7mCL=9}+|HZAlSlR~ZlAl#N@YS^mgeANY_>kNJi-sN%X-t-RHd2jg3A)&g z2ruIl*Al71T9=!<@*;XZixv$c=cg46q+SLqPMO;ze40RixV_$Tme64_siQjYNvPeQOOwdNF$RK~Gk2B_3<@gWxtYwC& zq{)E#?@1g)0`yD0d9MXoIL)As;o%9oH6EW#inG92M0B8u=h8!JbWu1#3t?SQmsi@y z7%nm@=|gk+72G-^v0&F+rH={xTZ_A{ZRqgHbr>j6k2EsnGDksmCJ%GkdFggrm0BO` z950znI;VyJr9)cKtH(W=9zX4}lxoag%v>(CKJ4H6Yv+w7lbjTq!l zuXd|msRk=y%HS;oe*?Sg$~>deH?R!6~C_veCV9Kc;+Erw|{iAMzxAeV=B2 z6`4Mt?__+RDmAEhH*&{QOgdjsAeTr@qCqkPsjxpYcn7hX9j$y{|5ooogR*z&o6l(w zfrXIM&vIE^@t{KpSiCu!F5Jm{XV{u>8rA%ueSJD2=F|NBgaDDTy0p6Vb70~HH6^q? zq4ym~rbN%Yfah?&zRzxA98S31^`FjFp%Yrz|r@3A|u5c%!6+_=U5k#d2D3vp*Ub29v!4e2VB$7nvkTAQTKd zPG^1kZ~W4?N>W89+Vgxe-8XZI>)_%oHtov(fI$-2GFH+eBv+7)%^2!P;fP>G5~<`8 zzYjTGSlCyoo=ORZr5v3Vg*BAZ#l74!f5X3p6Fniiv23S%CG?wE zT#N!=;9`9WHYJWABuYGFitxDF%mx(>qZv2GD%guQRSu6B<}VIqmXM~rdow(M{f}`N zk$%iF;Uo!PxQ!<#E>%SUPk$p=E*}jaK*~_9!1W*?LCb@6ZT)-|wsi$KytBm)I$9*s zgAuNN{L*-ff}bOO6@NO*9CTU3-%4ieR(_to$kqGg^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<HTa{Rx=zyT4T z1C`?C<%!t7+kt^khfPK3u;^sAs z$CeymIysNQ(xibQvUma8S`G$rmMIJizcjF3z0FYc;sL{slm@<783u8g4u-{*4eYl+ zCorsDn82R(nn9{moQFB@@#_ZGLPmy}Q3(tWE;ESznZY1eZ(qsyi&=vqvHNPALxgef z0iM8$o@@cecadiA|Ju1He)M5rkd@3?zuh$h82q(ujz;m&B!@Xu0jyLZE;&fv#eHtuCTxb?%K&&%TSzOPiibL*Vwyic#n z{j@%$R)p0rP%nP3eQPZ6C67&B9I%pJRe&%&s^c_!F_{xmIZEl?_vMJGJgy z-kZ<-O7zcLrv5F5#ir_%3RG!)w3u)CYtHjD&$!F$Ry}tRnj|vGQRYEU%9)3!Cum+Z zpQN&+=JIO0=}`+6S4{bSzxK$sTLPYeRx_p6KDAoUG*8a#Wt50 zuYWP|YO3J%xMi_xt({hztFnAlY1z~F$)I)Vu}hCcM5Z!0%3WL@HDyJJ=cRz0Z8xGO z)a@=#u3P6lB{kJTD{9>qrkme|*yiQ@ox0*bgL`zdW@^E5XY1KfG5-6%ynNP@`?PAp z?^fA7o`+&DKc`K68N<8$cYWAgKg;P}GbOF>CFb^5d0ac;<$21`f$3#*!+(aES5|Mi zZMyQTiDRyijF-n7E~}khvv$SBbRBMgE@pAH@6cMC;{mby`e$d{U*e?Ge8ZEIUHWU0 zZ&YYp^D%F0Kckn~J?|SBFQ1vv>#XPB!+K>|*CcDND(BBqH|6xzP8H_qEccpg_j%=v z%zr*-gp(LkR1XE%oqR4o@e0F=2G)~DI1Y*0nS{JcU9$LrsfB0DveiC5oG+w$73$rgWD9=6=OGrVoZ<|sb1%HtcBd~5Ex>?m2cM%nCT;dB9+oYl4K zT>GZ#F}<2<@nOQ+R+|lT7wP8&Yw}B z<}%;Hlczo_DgT|ieop4T;L||?Q|=yfm+2RInPOG1cv{zDVYTPmbB^Dd&ZcRczrWSLD)e7xTSUW<*+Q!l!(Xp*7VL#~xvCuU4JlTp4)`>4KE;HolzjVI^k-`#)lfVnu^ z<0qP)PF_G#BE!!`qge0n--*#~0QET&yT4B6ry#3@B|7C8-)8jp+ zCAw;AX!vZy>+S`!RjRjF9pSp`H_fr#^jX6z)>wPyv#;YprHvp`DGV++3Ls?^Bd{#c N#G?RMeuEU;1OTJ`a#jEU From 82451c7e538dbfdad2852370c76b81022613fd10 Mon Sep 17 00:00:00 2001 From: Aloys Date: Thu, 4 Apr 2024 14:42:24 +0800 Subject: [PATCH 161/234] remove template post contents --- _posts/2010-01-07-post-modified.md | 14 --- _posts/2010-01-07-post-standard.md | 32 ------ _posts/2010-01-08-post-chat.md | 134 ------------------------- _posts/2010-02-05-post-notice.md | 68 ------------- _posts/2010-02-05-post-quote.md | 12 --- _posts/2010-03-07-post-link.md | 15 --- _posts/2019-04-18-welcome-to-jekyll.md | 29 ------ 7 files changed, 304 deletions(-) delete mode 100644 _posts/2010-01-07-post-modified.md delete mode 100644 _posts/2010-01-07-post-standard.md delete mode 100644 _posts/2010-01-08-post-chat.md delete mode 100644 _posts/2010-02-05-post-notice.md delete mode 100644 _posts/2010-02-05-post-quote.md delete mode 100644 _posts/2010-03-07-post-link.md delete mode 100644 _posts/2019-04-18-welcome-to-jekyll.md diff --git a/_posts/2010-01-07-post-modified.md b/_posts/2010-01-07-post-modified.md deleted file mode 100644 index c09d324..0000000 --- a/_posts/2010-01-07-post-modified.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: "Post: Modified Date" -last_modified_at: 2016-03-09T16:20:02-05:00 -categories: - - Blog -tags: - - Post Formats - - readability - - standard ---- - -This post has been updated and should show a modified date if used in a layout. - -All children, except one, grow up. They soon know that they will grow up, and the way Wendy knew was this. One day when she was two years old she was playing in a garden, and she plucked another flower and ran with it to her mother. I suppose she must have looked rather delightful, for Mrs. Darling put her hand to her heart and cried, "Oh, why can't you remain like this for ever!" This was all that passed between them on the subject, but henceforth Wendy knew that she must grow up. You always know after you are two. Two is the beginning of the end. \ No newline at end of file diff --git a/_posts/2010-01-07-post-standard.md b/_posts/2010-01-07-post-standard.md deleted file mode 100644 index fc25616..0000000 --- a/_posts/2010-01-07-post-standard.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: "Post: Standard" -excerpt_separator: "" -categories: - - Blog -tags: - - Post Formats - - readability - - standard ---- - -All children, except one, grow up. They soon know that they will grow up, and the way Wendy knew was this. One day when she was two years old she was playing in a garden, and she plucked another flower and ran with it to her mother. I suppose she must have looked rather delightful, for Mrs. Darling put her hand to her heart and cried, "Oh, why can't you remain like this for ever!" This was all that passed between them on the subject, but henceforth Wendy knew that she must grow up. You always know after you are two. Two is the beginning of the end. - -Mrs. Darling first heard of Peter when she was tidying up her children's minds. It is the nightly custom of every good mother after her children are asleep to rummage in their minds and put things straight for next morning, repacking into their proper places the many articles that have wandered during the day. - - - -This post has a manual excerpt `` set after the second paragraph. The following YAML Front Matter has also be applied: - -```yaml -excerpt_separator: "" -``` - -If you could keep awake (but of course you can't) you would see your own mother doing this, and you would find it very interesting to watch her. It is quite like tidying up drawers. You would see her on her knees, I expect, lingering humorously over some of your contents, wondering where on earth you had picked this thing up, making discoveries sweet and not so sweet, pressing this to her cheek as if it were as nice as a kitten, and hurriedly stowing that out of sight. When you wake in the morning, the naughtiness and evil passions with which you went to bed have been folded up small and placed at the bottom of your mind and on the top, beautifully aired, are spread out your prettier thoughts, ready for you to put on. - -I don't know whether you have ever seen a map of a person's mind. Doctors sometimes draw maps of other parts of you, and your own map can become intensely interesting, but catch them trying to draw a map of a child's mind, which is not only confused, but keeps going round all the time. There are zigzag lines on it, just like your temperature on a card, and these are probably roads in the island, for the Neverland is always more or less an island, with astonishing splashes of colour here and there, and coral reefs and rakish-looking craft in the offing, and savages and lonely lairs, and gnomes who are mostly tailors, and caves through which a river runs, and princes with six elder brothers, and a hut fast going to decay, and one very small old lady with a hooked nose. It would be an easy map if that were all, but there is also first day at school, religion, fathers, the round pond, needle-work, murders, hangings, verbs that take the dative, chocolate pudding day, getting into braces, say ninety-nine, three-pence for pulling out your tooth yourself, and so on, and either these are part of the island or they are another map showing through, and it is all rather confusing, especially as nothing will stand still. - -Of course the Neverlands vary a good deal. John's, for instance, had a lagoon with flamingoes flying over it at which John was shooting, while Michael, who was very small, had a flamingo with lagoons flying over it. John lived in a boat turned upside down on the sands, Michael in a wigwam, Wendy in a house of leaves deftly sewn together. John had no friends, Michael had friends at night, Wendy had a pet wolf forsaken by its parents, but on the whole the Neverlands have a family resemblance, and if they stood still in a row you could say of them that they have each other's nose, and so forth. On these magic shores children at play are for ever beaching their coracles [simple boat]. We too have been there; we can still hear the sound of the surf, though we shall land no more. - -Of all delectable islands the Neverland is the snuggest and most compact, not large and sprawly, you know, with tedious distances between one adventure and another, but nicely crammed. When you play at it by day with the chairs and table-cloth, it is not in the least alarming, but in the two minutes before you go to sleep it becomes very real. That is why there are night-lights. - -Occasionally in her travels through her children's minds Mrs. Darling found things she could not understand, and of these quite the most perplexing was the word Peter. She knew of no Peter, and yet he was here and there in John and Michael's minds, while Wendy's began to be scrawled all over with him. The name stood out in bolder letters than any of the other words, and as Mrs. Darling gazed she felt that it had an oddly cocky appearance. \ No newline at end of file diff --git a/_posts/2010-01-08-post-chat.md b/_posts/2010-01-08-post-chat.md deleted file mode 100644 index 9092634..0000000 --- a/_posts/2010-01-08-post-chat.md +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: "Post: Chat" -categories: - - Blog -tags: - - chat - - Post Formats ---- - -Abbott: Strange as it may seem, they give ball players nowadays very peculiar names. - -Costello: Funny names? - -Abbott: Nicknames, nicknames. Now, on the St. Louis team we have Who's on first, What's on second, I Don't Know is on third-- - -Costello: That's what I want to find out. I want you to tell me the names of the fellows on the St. Louis team. - -Abbott: I'm telling you. Who's on first, What's on second, I Don't Know is on third-- - -Costello: You know the fellows' names? - -Abbott: Yes. - -Costello: Well, then who's playing first? - -Abbott: Yes. - -Costello: I mean the fellow's name on first base. - -Abbott: Who. - -Costello: The fellow playin' first base. - -Abbott: Who. - -Costello: The guy on first base. - -Abbott: Who is on first. - -Costello: Well, what are you askin' me for? - -Abbott: I'm not asking you--I'm telling you. Who is on first. - -Costello: I'm asking you--who's on first? - -Abbott: That's the man's name. - -Costello: That's who's name? - -Abbott: Yes. - -Costello: When you pay off the first baseman every month, who gets the money? - -Abbott: Every dollar of it. And why not, the man's entitled to it. - -Costello: Who is? - -Abbott: Yes. - -Costello: So who gets it? - -Abbott: Why shouldn't he? Sometimes his wife comes down and collects it. - -Costello: Who's wife? - -Abbott: Yes. After all, the man earns it. - -Costello: Who does? - -Abbott: Absolutely. - -Costello: Well, all I'm trying to find out is what's the guy's name on first base? - -Abbott: Oh, no, no. What is on second base. - -Costello: I'm not asking you who's on second. - -Abbott: Who's on first! - -Costello: St. Louis has a good outfield? - -Abbott: Oh, absolutely. - -Costello: The left fielder's name? - -Abbott: Why. - -Costello: I don't know, I just thought I'd ask. - -Abbott: Well, I just thought I'd tell you. - -Costello: Then tell me who's playing left field? - -Abbott: Who's playing first. - -Costello: Stay out of the infield! The left fielder's name? - -Abbott: Why. - -Costello: Because. - -Abbott: Oh, he's center field. - -Costello: Wait a minute. You got a pitcher on this team? - -Abbott: Wouldn't this be a fine team without a pitcher? - -Costello: Tell me the pitcher's name. - -Abbott: Tomorrow. - -Costello: Now, when the guy at bat bunts the ball--me being a good catcher--I want to throw the guy out at first base, so I pick up the ball and throw it to who? - -Abbott: Now, that's he first thing you've said right. - -Costello: I DON'T EVEN KNOW WHAT I'M TALKING ABOUT! - -Abbott: Don't get excited. Take it easy. - -Costello: I throw the ball to first base, whoever it is grabs the ball, so the guy runs to second. Who picks up the ball and throws it to what. What throws it to I don't know. I don't know throws it back to tomorrow--a triple play. - -Abbott: Yeah, it could be. - -Costello: Another guy gets up and it's a long ball to center. - -Abbott: Because. - -Costello: Why? I don't know. And I don't care. - -Abbott: What was that? - -Costello: I said, I DON'T CARE! - -Abbott: Oh, that's our shortstop! \ No newline at end of file diff --git a/_posts/2010-02-05-post-notice.md b/_posts/2010-02-05-post-notice.md deleted file mode 100644 index 392f2cd..0000000 --- a/_posts/2010-02-05-post-notice.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: "Post: Notice" -categories: - - Blog -tags: - - Post Formats - - notice ---- - -A notice displays information that explains nearby content. Often used to call attention to a particular detail. - -When using Kramdown `{: .notice}` can be added after a sentence to assign the `.notice` to the `

` element. - -**Changes in Service:** We just updated our [privacy policy](#) here to better service our customers. We recommend reviewing the changes. -{: .notice} - -**Primary Notice:** Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. [Praesent libero](#). Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. -{: .notice--primary} - -**Info Notice:** Lorem ipsum dolor sit amet, [consectetur adipiscing elit](#). Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. -{: .notice--info} - -**Warning Notice:** Lorem ipsum dolor sit amet, consectetur adipiscing elit. [Integer nec odio](#). Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. -{: .notice--warning} - -**Danger Notice:** Lorem ipsum dolor sit amet, [consectetur adipiscing](#) elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. -{: .notice--danger} - -**Success Notice:** Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at [nibh elementum](#) imperdiet. -{: .notice--success} - -Want to wrap several paragraphs or other elements in a notice? Using Liquid to capture the content and then filter it with `markdownify` is a good way to go. - -```html -{% raw %}{% capture notice-2 %} -#### New Site Features - -* You can now have cover images on blog pages -* Drafts will now auto-save while writing -{% endcapture %}{% endraw %} - -
{% raw %}{{ notice-2 | markdownify }}{% endraw %}
-``` - -{% capture notice-2 %} -#### New Site Features - -* You can now have cover images on blog pages -* Drafts will now auto-save while writing -{% endcapture %} - -
- {{ notice-2 | markdownify }} -
- -Or you could skip the capture and stick with straight HTML. - -```html -
-

Message

-

A basic message.

-
-``` - -
-

Message

-

A basic message.

-
\ No newline at end of file diff --git a/_posts/2010-02-05-post-quote.md b/_posts/2010-02-05-post-quote.md deleted file mode 100644 index fda06e9..0000000 --- a/_posts/2010-02-05-post-quote.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "Post: Quote" -categories: - - Blog -tags: - - Post Formats - - quote ---- - -> Only one thing is impossible for God: To find any sense in any copyright law on the planet. - -> Mark Twain \ No newline at end of file diff --git a/_posts/2010-03-07-post-link.md b/_posts/2010-03-07-post-link.md deleted file mode 100644 index 6d99180..0000000 --- a/_posts/2010-03-07-post-link.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: "Post: Link" -categories: - - Blog -tags: - - link - - Post Formats -link: https://github.com ---- - -This theme supports **link posts**, made famous by John Gruber. To use, just add `link: http://url-you-want-linked` to the post's YAML front matter and you're done. - -> And this is how a quote looks. - -Some [link](#) can also be shown. \ No newline at end of file diff --git a/_posts/2019-04-18-welcome-to-jekyll.md b/_posts/2019-04-18-welcome-to-jekyll.md deleted file mode 100644 index 30fdbf3..0000000 --- a/_posts/2019-04-18-welcome-to-jekyll.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: "Welcome to Jekyll!" -date: 2019-04-18T15:34:30-04:00 -categories: - - blog -tags: - - Jekyll - - update ---- - -You'll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. - -To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works. - -Jekyll also offers powerful support for code snippets: - -```ruby -def print_hi(name) - puts "Hi, #{name}" -end -print_hi('Tom') -#=> prints 'Hi, Tom' to STDOUT. -``` - -Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk]. - -[jekyll-docs]: https://jekyllrb.com/docs/home -[jekyll-gh]: https://github.com/jekyll/jekyll -[jekyll-talk]: https://talk.jekyllrb.com/ From 822e39cf460a5ea23817fc02b5d27095a725769b Mon Sep 17 00:00:00 2001 From: Aloys Date: Thu, 4 Apr 2024 17:20:50 +0800 Subject: [PATCH 162/234] move draft blogs from data repo to this repo --- ...06\345\244\207\345\267\245\344\275\234.md" | 154 ++++ ...4_grep_sed_awk\347\273\203\344\271\240.md" | 579 +++++++++++++++ ...04\345\273\272\347\263\273\347\273\237.md" | 278 ++++++++ ...60\345\222\214\345\210\240\351\231\244.md" | 108 +++ ...55\345\244\256\344\273\223\345\272\223.md" | 75 ++ ...47\345\210\253\351\205\215\347\275\256.md" | 230 ++++++ ...55\345\244\256\344\273\223\345\272\223.md" | 486 +++++++++++++ ...05\345\256\271\346\200\273\347\273\223.md" | 153 ++++ ...56\351\242\230\346\200\273\347\273\223.md" | 63 ++ ...20\347\240\201\350\247\243\346\236\220.md" | 11 + ...36\350\267\265\346\214\207\345\215\227.md" | 362 ++++++++++ ...33\350\241\214\346\237\245\347\234\213.md" | 69 ++ ...67\344\276\213\346\214\207\345\257\274.md" | 663 ++++++++++++++++++ ...67\345\244\247\351\230\205\345\205\265.md" | 192 +++++ ...15\347\275\256\346\230\276\347\244\272.md" | 645 +++++++++++++++++ ...57\345\242\203\346\220\255\345\273\272.md" | 62 ++ ...2\347\232\204C\344\273\243\347\240\201.md" | 95 +++ ...45\256\271swap\346\226\207\344\273\266.md" | 52 ++ ...02\347\240\201\347\273\274\350\277\260.md" | 18 + ...01\344\270\200\351\224\205\347\202\226.md" | 210 ++++++ 20 files changed, 4505 insertions(+) create mode 100644 "_drafts/1_Groovy\345\256\236\347\216\260\345\216\237\347\220\206\345\210\206\346\236\220\342\200\224\342\200\224\345\207\206\345\244\207\345\267\245\344\275\234.md" create mode 100644 "_drafts/202002101104_grep_sed_awk\347\273\203\344\271\240.md" create mode 100644 "_drafts/202102141510\345\256\211\345\215\223\346\236\204\345\273\272\347\263\273\347\273\237.md" create mode 100644 "_drafts/202107251609\344\270\200\347\257\207\346\226\207\347\253\240\346\220\236\346\207\202Debian_Ubuntu\350\275\257\344\273\266\345\214\205\346\233\264\346\226\260\345\222\214\345\210\240\351\231\244.md" create mode 100644 "_drafts/202110171056\345\246\202\344\275\225\345\260\206cpdetector\345\217\221\345\270\203Maven\344\276\235\350\265\226\345\210\260\344\270\255\345\244\256\344\273\223\345\272\223.md" create mode 100644 "_drafts/202209041204\347\203\255\345\210\207\346\215\242Log4j\347\272\247\345\210\253\351\205\215\347\275\256.md" create mode 100644 "_drafts/202301062159\345\246\202\344\275\225\345\217\221\345\270\203Maven\344\276\235\350\265\226\345\210\260\344\270\255\345\244\256\344\273\223\345\272\223.md" create mode 100644 "_drafts/202301072207LaTeX\345\206\205\345\256\271\346\200\273\347\273\223.md" create mode 100644 "_drafts/202301072208PDF\345\270\270\350\247\201\351\227\256\351\242\230\346\200\273\347\273\223.md" create mode 100644 "_drafts/202301072210Doze\346\250\241\345\274\217\346\272\220\347\240\201\350\247\243\346\236\220.md" create mode 100644 "_drafts/202301072213Repo\345\256\236\350\267\265\346\214\207\345\215\227.md" create mode 100644 "_drafts/202301072215\345\260\206AOSP\346\272\220\347\240\201\345\257\274\345\205\245\345\210\260Android Studio\350\277\233\350\241\214\346\237\245\347\234\213.md" create mode 100644 "_drafts/202301072303Java Swing TreeTable\346\240\267\344\276\213\346\214\207\345\257\274.md" create mode 100644 "_drafts/202301081307Java\344\273\243\347\240\201\350\264\250\351\207\217\345\272\246\351\207\217\345\267\245\345\205\267\345\244\247\351\230\205\345\205\265.md" create mode 100644 "_drafts/202301081324Android\346\272\220\347\240\201\350\247\243\350\257\273-\350\247\246\346\221\270\344\275\215\347\275\256\346\230\276\347\244\272.md" create mode 100644 "_drafts/202302262208StableDiffusionWebui\347\216\257\345\242\203\346\220\255\345\273\272.md" create mode 100644 "_drafts/202317061029VSCode\350\260\203\350\257\225\350\277\234\347\250\213Linux\346\234\272\345\231\250\344\270\212\347\232\204C\344\273\243\347\240\201.md" create mode 100644 "_drafts/202401011357Ubuntu\346\211\251\345\256\271swap\346\226\207\344\273\266.md" create mode 100644 "_drafts/2_Groovy\345\256\236\347\216\260\345\216\237\347\220\206\345\210\206\346\236\220\342\200\224\342\200\224\350\257\215\346\263\225\345\210\206\346\236\220\343\200\201\350\257\255\346\263\225\345\210\206\346\236\220\343\200\201\347\224\237\346\210\220JVM\345\255\227\350\212\202\347\240\201\347\273\274\350\277\260.md" create mode 100644 "_drafts/\345\255\227\347\254\246\344\271\261\347\240\201\344\270\200\351\224\205\347\202\226.md" diff --git "a/_drafts/1_Groovy\345\256\236\347\216\260\345\216\237\347\220\206\345\210\206\346\236\220\342\200\224\342\200\224\345\207\206\345\244\207\345\267\245\344\275\234.md" "b/_drafts/1_Groovy\345\256\236\347\216\260\345\216\237\347\220\206\345\210\206\346\236\220\342\200\224\342\200\224\345\207\206\345\244\207\345\267\245\344\275\234.md" new file mode 100644 index 0000000..3ab375a --- /dev/null +++ "b/_drafts/1_Groovy\345\256\236\347\216\260\345\216\237\347\220\206\345\210\206\346\236\220\342\200\224\342\200\224\345\207\206\345\244\207\345\267\245\344\275\234.md" @@ -0,0 +1,154 @@ +# Groovy实现原理分析——准备工作 + +欢迎和大家交流技术相关问题: +邮箱: jiangxinnju@163.com +博客园地址: +GitHub地址: +知乎地址: + +首先说明一下为什么要写这样一系列分析Groovy实现原理的博文。我之前在华为大数据部门曾维护过一份规则引擎的项目,该项目说白了就是一种DSL(Domain Specified Language),把用户的输入转化为一种可以执行的程序。让不懂编程语言的用户只定义一些规则说明便可以完成流程编写。后来由于部门调动,接触不到原来的规则引擎了,但是无意间发现Groovy这种DSL语言的实现机制和当时的规则引擎原理大体相当,所以便借分析Groovy的实现原理,缅怀当时负责的规则引擎吧。同时也希望给其他对规则引擎开发、DSL开发或者编程语言开发感兴趣的朋友一个参考,权当抛砖引玉了。 + +作为这一系列文章的第一篇,我们先做一些准备工作,为后来的原理分析做下铺垫。 + +## 安装JDK + +要分析Groovy的实现原理,首先需要从源码构建Groovy,这样一边调试,一边看代码效率会高些。源码构建Groovy,需要JDK 9+,下载安装说明参考官网:,我使用的版本是:10.0.2。 + +```powershell +PS C:\Users\jiang> java -version +java 10.0.2 2018-07-17 +Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13) +Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode) +``` + +## 安装Git工具 + +Git是当下最流行的版本管理工具,我们需要利用Git下载Groovy的源代码。Git下载安装请参考官网:,我使用的版本是:2.27.0。 + +```powershell +PS C:\Users\jiang> git --version +git version 2.27.0.windows.1 +``` + +## 下载Groovy源码 + +Groovy的源码托管在Apache的网站上,但是Github上有镜像,我们可以直接在Github镜像下载最新的主干版本,然后切换到最新的稳定版本3.0.5对应的TAG上。 + +```powershell +PS C:\Users\jiang> cd D:\temp\Groovy\ +git clone https://github.com/apache/groovy.git +cd .\groovy\ +PS D:\temp\Groovy\groovy> git fetch origin tag GROOVY_3_0_5 +PS D:\temp\Groovy\groovy> git checkout GROOVY_3_0_5 +``` + +## 准备Gradle工具 + +Groovy的编译需要Gradle工具,但是该工具不需要我们自己下载、配置,我们可以直接执行如下命令: + +```powershell +PS D:\temp\Groovy\groovy> .\gradlew.bat +``` + +由于墙的原因,下载需要使用VPN,搭建VPN的方法这里不再叙述。命令执行完毕会在`%USERPROFILE%\.gradle\wrapper\dists`目录下下载对应版本的gradle,其中Groovy 3.0.5版本对应的Gradle版本是Gradle 6.5.1。 + +## 编译Groovy + +执行下面命令,由源码编译Groovy(如果失败可能仍然是墙的原因,使用VPN后重试): + +```powershell +.\gradlew.bat clean dist +``` + +编译完成后会在`target\distributions`目录下生成目标文件。 + +## 安装编译后的Groovy + +我们将`target\distributions\apache-groovy-binary-3.0.5.zip`文件中的内容解压到某个目录,比如说`C:\`,然后在%PATH%环境变量中添加`C:\groovy-3.0.5\bin`,并设置%GROOVY_HOME%环境变量为`C:\groovy-3.0.5`。然后我们新打开一个powershell验证Groovy是否安装成功: + +```powershell +PS C:\Users\jiang> cd D:\temp\Groovy\ +PS D:\temp\Groovy> groovy.bat -v +Groovy Version: 3.0.5 JVM: 10.0.2 Vendor: "Oracle Corporation" OS: Windows 10 +``` + +## 将Groovy源码导入IDEA + +为了更好的分析Groovy源码,我们需要一个IDE工具,具体是IDEA还是Eclipse或者其它都无所谓,看个人习惯,这里以IDEA为例。首先利用gradle生成IDEA项目: + +```powershell +PS D:\temp\Groovy> cd .\groovy\ +PS D:\temp\Groovy\groovy> .\gradlew jar idea +``` + +这时候就可以使用IDEA导入groovy源码项目,进行分析研究了。 + +## 执行Groovy程序 + +我们首先利用IDEA新建一个Groovy项目,写一个简单的Groovy程序,该程序会打印"Hello World": + +```groovy +package edu.jiangxin.test + +class Test { + static void main(def args) { + def mygreeting = "Hello World" + println mygreeting + } +} +``` + +我们知道Groovy是一种依赖于JVM的DSL,其先将*.groovy文件编译成*.class文件,然后调用JVM执行*.class文件,我们可以直接在IDEA中反编译该class文件,得到如下Java代码: + +```java +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package edu.jiangxin.test; + +import groovy.lang.GroovyObject; +import groovy.lang.MetaClass; +import groovy.transform.Generated; +import groovy.transform.Internal; +import org.codehaus.groovy.runtime.callsite.CallSite; + +public class Test implements GroovyObject { + @Generated + public Test() { + CallSite[] var1 = $getCallSiteArray(); + super(); + MetaClass var2 = this.$getStaticMetaClass(); + this.metaClass = var2; + } + + public static void main(String... args) { + CallSite[] var1 = $getCallSiteArray(); + Object mygreeting = "Hello World"; + var1[0].callStatic(Test.class, mygreeting); + } + + @Generated + @Internal + public MetaClass getMetaClass() { + MetaClass var10000 = this.metaClass; + if (var10000 != null) { + return var10000; + } else { + this.metaClass = this.$getStaticMetaClass(); + return this.metaClass; + } + } + + @Generated + @Internal + public void setMetaClass(MetaClass var1) { + this.metaClass = var1; + } +} +``` + +是不是看起来有些复杂?没关系我们会一点点搞懂它的。其实这里最关键的是三个函数`$getCallSiteArray()`,`$getStaticMetaClass()`以及`callStatic(Object, Object)`,我们会在之后的文章中逐步揭开他们的面纱。但是在这之前,我们先看下Groovy是如何将之前的*.groovy文件编译成对应的*.class文件的。 + +(未完待续) \ No newline at end of file diff --git "a/_drafts/202002101104_grep_sed_awk\347\273\203\344\271\240.md" "b/_drafts/202002101104_grep_sed_awk\347\273\203\344\271\240.md" new file mode 100644 index 0000000..c72a4d4 --- /dev/null +++ "b/_drafts/202002101104_grep_sed_awk\347\273\203\344\271\240.md" @@ -0,0 +1,579 @@ +# grep_sed_awk练习 + +在开始练习之前,创建文件`datafile`,内容如下: + +```shell +Steve Blenheim:238-923-7366:95 Latham Lane, Easton, PA 83755:11/12/56:20300 +Betty Boop:245-836-8357:635 Cutesy Lane, Hollywood, CA 91464:6/23/23:14500 +Igor Chevsky:385-375-8395:3567 Populus Place, Caldwell, NJ 23875:6/18/68:23400 +Norma Corder:397-857-2735:74 Pine Street, Dearborn, MI 23874:3/28/45:245700 +Jennifer Cowan:548-834-2348:583 Laurel Ave., Kingsville, TX 83745:10/1/35:58900 +Jon DeLoach:408-253-3122:123 Park St., San Jose, CA 04086:7/25/53:85100 +Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 +Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 +Lori Gortz:327-832-5728:3465 Mirlo Street, Peabody, MA 34756:10/2/65:35200 +Paco Gutierrez:835-365-1284:454 Easy Street, Decatur, IL 75732:2/28/53:123500 +Ephram Hardy:293-259-5395:235 CarltonLane, Joliet, IL 73858:8/12/20:56700 +James Ikeda:834-938-8376:23445 Aster Ave., Allentown, NJ 83745:12/1/38:45000 +Barbara Kertz:385-573-8326:832 Ponce Drive, Gary, IN 83756:12/1/46:268500 +Lesley Kirstin:408-456-1234:4 Harvard Square, Boston, MA 02133:4/22/62:52600 +William Kopf:846-836-2837:6937 Ware Road, Milton, PA 93756:9/21/46:43500 +Sir Lancelot:837-835-8257:474 Camelot Boulevard, Bath, WY 28356:5/13/69:24500 +Jesse Neal:408-233-8971:45 Rose Terrace, San Francisco, CA 92303:2/3/36:25000 +Zippy Pinhead:834-823-8319:2356 Bizarro Ave., Farmount, IL 84357:1/1/67:89500 +Arthur Putie:923-835-8745:23 Wimp Lane, Kensington, DL 38758:8/31/69:126000 +Popeye Sailor:156-454-3322:945 Bluto Street, Anywhere, USA 29358:3/19/35:22350 +Jose Santiago:385-898-8357:38 Fife Way, Abilene, TX 39673:1/5/58:95600 +Tommy Savage:408-724-0140:1222 Oxbow Court, Sunnyvale, CA 94087:5/19/66:34200 +Yukio Takeshida:387-827-1095:13 Uno Lane, Ashville, NC 23556:7/1/29:57000 +Vinh Tranh:438-910-7449:8235 Maple Street, Wilmington, VM 29085:9/23/63:68900 +``` + +## grep练习 + +### 显示所有包含San的行 + +```shell +grep San datafile + +Jon DeLoach:408-253-3122:123 Park St., San Jose, CA 04086:7/25/53:85100 +Jesse Neal:408-233-8971:45 Rose Terrace, San Francisco, CA 92303:2/3/36:25000 +Jose Santiago:385-898-8357:38 Fife Way, Abilene, TX 39673:1/5/58:95600 +``` + +### 显示所有以J开始的人名所在的行 + +```shell +grep ^J datafile + +Jennifer Cowan:548-834-2348:583 Laurel Ave., Kingsville, TX 83745:10/1/35:58900 +Jon DeLoach:408-253-3122:123 Park St., San Jose, CA 04086:7/25/53:85100 +James Ikeda:834-938-8376:23445 Aster Ave., Allentown, NJ 83745:12/1/38:45000 +Jesse Neal:408-233-8971:45 Rose Terrace, San Francisco, CA 92303:2/3/36:25000 +Jose Santiago:385-898-8357:38 Fife Way, Abilene, TX 39673:1/5/58:95600 +``` + +### 显示所有以700结尾的行 + +```shell +grep 700$ datafile + +Norma Corder:397-857-2735:74 Pine Street, Dearborn, MI 23874:3/28/45:245700 +Ephram Hardy:293-259-5395:235 CarltonLane, Joliet, IL 73858:8/12/20:56700 +``` + +### 显示所有不包括834的行 + +```shell +grep -v 834 datafile + +Steve Blenheim:238-923-7366:95 Latham Lane, Easton, PA 83755:11/12/56:20300 +Betty Boop:245-836-8357:635 Cutesy Lane, Hollywood, CA 91464:6/23/23:14500 +Igor Chevsky:385-375-8395:3567 Populus Place, Caldwell, NJ 23875:6/18/68:23400 +Norma Corder:397-857-2735:74 Pine Street, Dearborn, MI 23874:3/28/45:245700 +Jon DeLoach:408-253-3122:123 Park St., San Jose, CA 04086:7/25/53:85100 +Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 +Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 +Lori Gortz:327-832-5728:3465 Mirlo Street, Peabody, MA 34756:10/2/65:35200 +Paco Gutierrez:835-365-1284:454 Easy Street, Decatur, IL 75732:2/28/53:123500 +Ephram Hardy:293-259-5395:235 CarltonLane, Joliet, IL 73858:8/12/20:56700 +Barbara Kertz:385-573-8326:832 Ponce Drive, Gary, IN 83756:12/1/46:268500 +Lesley Kirstin:408-456-1234:4 Harvard Square, Boston, MA 02133:4/22/62:52600 +William Kopf:846-836-2837:6937 Ware Road, Milton, PA 93756:9/21/46:43500 +Sir Lancelot:837-835-8257:474 Camelot Boulevard, Bath, WY 28356:5/13/69:24500 +Jesse Neal:408-233-8971:45 Rose Terrace, San Francisco, CA 92303:2/3/36:25000 +Arthur Putie:923-835-8745:23 Wimp Lane, Kensington, DL 38758:8/31/69:126000 +Popeye Sailor:156-454-3322:945 Bluto Street, Anywhere, USA 29358:3/19/35:22350 +Jose Santiago:385-898-8357:38 Fife Way, Abilene, TX 39673:1/5/58:95600 +Tommy Savage:408-724-0140:1222 Oxbow Court, Sunnyvale, CA 94087:5/19/66:34200 +Yukio Takeshida:387-827-1095:13 Uno Lane, Ashville, NC 23556:7/1/29:57000 +Vinh Tranh:438-910-7449:8235 Maple Street, Wilmington, VM 29085:9/23/63:68900 +``` + +### 显示所有生日在December的行 + +```shell +grep :12/ datafile + +James Ikeda:834-938-8376:23445 Aster Ave., Allentown, NJ 83745:12/1/38:45000 +Barbara Kertz:385-573-8326:832 Ponce Drive, Gary, IN 83756:12/1/46:268500 +``` + +### 显示所有电话号码的区号为834的行 + +```shell +grep :834- datafile + +James Ikeda:834-938-8376:23445 Aster Ave., Allentown, NJ 83745:12/1/38:45000 +Zippy Pinhead:834-823-8319:2356 Bizarro Ave., Farmount, IL 84357:1/1/67:89500 +``` + +### 显示所有这样的行:它包含一个大写字母,后跟四个小写字母,一个逗号,一个空格,和一个大写字母 + +```shell +grep '[A-Z][a-z]\{4\}, [A-Z]' datafile + +Igor Chevsky:385-375-8395:3567 Populus Place, Caldwell, NJ 23875:6/18/68:23400 +Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +Barbara Kertz:385-573-8326:832 Ponce Drive, Gary, IN 83756:12/1/46:268500 +Tommy Savage:408-724-0140:1222 Oxbow Court, Sunnyvale, CA 94087:5/19/66:34200 +``` + +### 显示姓以K或k开头的行 + +```shell +grep -i ^k datafile + +Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +``` + +### 显示工资为六位数的行,并在前面加行号 + +```shell +grep -n '[0-9]\{6,\}' datafile + +4:Norma Corder:397-857-2735:74 Pine Street, Dearborn, MI 23874:3/28/45:245700 +10:Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 +11:Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 +13:Paco Gutierrez:835-365-1284:454 Easy Street, Decatur, IL 75732:2/28/53:123500 +16:Barbara Kertz:385-573-8326:832 Ponce Drive, Gary, IN 83756:12/1/46:268500 +22:Arthur Putie:923-835-8745:23 Wimp Lane, Kensington, DL 38758:8/31/69:126000 +``` + +### 显示包括Lincoln或lincoln的行,并且grep对大小写不敏感 + +```shell +grep -i lincoln datafile + +Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +``` + +## sed命令练习 + +### 把Jon的名字改成Jonathan + +```shell +sed -e 's/Jon/Jonathan/' datafile + +Steve Blenheim:238-923-7366:95 Latham Lane, Easton, PA 83755:11/12/56:20300 +Betty Boop:245-836-8357:635 Cutesy Lane, Hollywood, CA 91464:6/23/23:14500 +Igor Chevsky:385-375-8395:3567 Populus Place, Caldwell, NJ 23875:6/18/68:23400 +Norma Corder:397-857-2735:74 Pine Street, Dearborn, MI 23874:3/28/45:245700 +Jennifer Cowan:548-834-2348:583 Laurel Ave., Kingsville, TX 83745:10/1/35:58900 +Jonathan DeLoach:408-253-3122:123 Park St., San Jose, CA 04086:7/25/53:85100 +Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 +Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 +Lori Gortz:327-832-5728:3465 Mirlo Street, Peabody, MA 34756:10/2/65:35200 +Paco Gutierrez:835-365-1284:454 Easy Street, Decatur, IL 75732:2/28/53:123500 +Ephram Hardy:293-259-5395:235 CarltonLane, Joliet, IL 73858:8/12/20:56700 +James Ikeda:834-938-8376:23445 Aster Ave., Allentown, NJ 83745:12/1/38:45000 +Barbara Kertz:385-573-8326:832 Ponce Drive, Gary, IN 83756:12/1/46:268500 +Lesley Kirstin:408-456-1234:4 Harvard Square, Boston, MA 02133:4/22/62:52600 +William Kopf:846-836-2837:6937 Ware Road, Milton, PA 93756:9/21/46:43500 +Sir Lancelot:837-835-8257:474 Camelot Boulevard, Bath, WY 28356:5/13/69:24500 +Jesse Neal:408-233-8971:45 Rose Terrace, San Francisco, CA 92303:2/3/36:25000 +Zippy Pinhead:834-823-8319:2356 Bizarro Ave., Farmount, IL 84357:1/1/67:89500 +Arthur Putie:923-835-8745:23 Wimp Lane, Kensington, DL 38758:8/31/69:126000 +Popeye Sailor:156-454-3322:945 Bluto Street, Anywhere, USA 29358:3/19/35:22350 +Jose Santiago:385-898-8357:38 Fife Way, Abilene, TX 39673:1/5/58:95600 +Tommy Savage:408-724-0140:1222 Oxbow Court, Sunnyvale, CA 94087:5/19/66:34200 +Yukio Takeshida:387-827-1095:13 Uno Lane, Ashville, NC 23556:7/1/29:57000 +Vinh Tranh:438-910-7449:8235 Maple Street, Wilmington, VM 29085:9/23/63:68900 +``` + +### 删除头三行 + +```shell +sed -e '1,3d' datafile + +Norma Corder:397-857-2735:74 Pine Street, Dearborn, MI 23874:3/28/45:245700 +Jennifer Cowan:548-834-2348:583 Laurel Ave., Kingsville, TX 83745:10/1/35:58900 +Jon DeLoach:408-253-3122:123 Park St., San Jose, CA 04086:7/25/53:85100 +Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 +Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 +Lori Gortz:327-832-5728:3465 Mirlo Street, Peabody, MA 34756:10/2/65:35200 +Paco Gutierrez:835-365-1284:454 Easy Street, Decatur, IL 75732:2/28/53:123500 +Ephram Hardy:293-259-5395:235 CarltonLane, Joliet, IL 73858:8/12/20:56700 +James Ikeda:834-938-8376:23445 Aster Ave., Allentown, NJ 83745:12/1/38:45000 +Barbara Kertz:385-573-8326:832 Ponce Drive, Gary, IN 83756:12/1/46:268500 +Lesley Kirstin:408-456-1234:4 Harvard Square, Boston, MA 02133:4/22/62:52600 +William Kopf:846-836-2837:6937 Ware Road, Milton, PA 93756:9/21/46:43500 +Sir Lancelot:837-835-8257:474 Camelot Boulevard, Bath, WY 28356:5/13/69:24500 +Jesse Neal:408-233-8971:45 Rose Terrace, San Francisco, CA 92303:2/3/36:25000 +Zippy Pinhead:834-823-8319:2356 Bizarro Ave., Farmount, IL 84357:1/1/67:89500 +Arthur Putie:923-835-8745:23 Wimp Lane, Kensington, DL 38758:8/31/69:126000 +Popeye Sailor:156-454-3322:945 Bluto Street, Anywhere, USA 29358:3/19/35:22350 +Jose Santiago:385-898-8357:38 Fife Way, Abilene, TX 39673:1/5/58:95600 +Tommy Savage:408-724-0140:1222 Oxbow Court, Sunnyvale, CA 94087:5/19/66:34200 +Yukio Takeshida:387-827-1095:13 Uno Lane, Ashville, NC 23556:7/1/29:57000 +Vinh Tranh:438-910-7449:8235 Maple Street, Wilmington, VM 29085:9/23/63:68900 +``` + +### 显示5-10行 + +```shell +# 时刻记住sed是一个流编辑器,使用-n参数,取消自动打印模式空间 +sed -n '5,10p' datafile + +Jennifer Cowan:548-834-2348:583 Laurel Ave., Kingsville, TX 83745:10/1/35:58900 +Jon DeLoach:408-253-3122:123 Park St., San Jose, CA 04086:7/25/53:85100 +Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 +``` + +### 删除包含Lane的行 + +```shell +sed -e '/Lane/d' datafile + +Igor Chevsky:385-375-8395:3567 Populus Place, Caldwell, NJ 23875:6/18/68:23400 +Norma Corder:397-857-2735:74 Pine Street, Dearborn, MI 23874:3/28/45:245700 +Jennifer Cowan:548-834-2348:583 Laurel Ave., Kingsville, TX 83745:10/1/35:58900 +Jon DeLoach:408-253-3122:123 Park St., San Jose, CA 04086:7/25/53:85100 +Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +Lori Gortz:327-832-5728:3465 Mirlo Street, Peabody, MA 34756:10/2/65:35200 +Paco Gutierrez:835-365-1284:454 Easy Street, Decatur, IL 75732:2/28/53:123500 +James Ikeda:834-938-8376:23445 Aster Ave., Allentown, NJ 83745:12/1/38:45000 +Barbara Kertz:385-573-8326:832 Ponce Drive, Gary, IN 83756:12/1/46:268500 +Lesley Kirstin:408-456-1234:4 Harvard Square, Boston, MA 02133:4/22/62:52600 +William Kopf:846-836-2837:6937 Ware Road, Milton, PA 93756:9/21/46:43500 +Sir Lancelot:837-835-8257:474 Camelot Boulevard, Bath, WY 28356:5/13/69:24500 +Jesse Neal:408-233-8971:45 Rose Terrace, San Francisco, CA 92303:2/3/36:25000 +Zippy Pinhead:834-823-8319:2356 Bizarro Ave., Farmount, IL 84357:1/1/67:89500 +Popeye Sailor:156-454-3322:945 Bluto Street, Anywhere, USA 29358:3/19/35:22350 +Jose Santiago:385-898-8357:38 Fife Way, Abilene, TX 39673:1/5/58:95600 +Tommy Savage:408-724-0140:1222 Oxbow Court, Sunnyvale, CA 94087:5/19/66:34200 +Vinh Tranh:438-910-7449:8235 Maple Street, Wilmington, VM 29085:9/23/63:68900 +``` + +### 显示所有生日在November-December之间的行 + +```shell +sed -n '/\:1[12]\//p' datafile + +Steve Blenheim:238-923-7366:95 Latham Lane, Easton, PA 83755:11/12/56:20300 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +James Ikeda:834-938-8376:23445 Aster Ave., Allentown, NJ 83745:12/1/38:45000 +Barbara Kertz:385-573-8326:832 Ponce Drive, Gary, IN 83756:12/1/46:268500 +``` + +### 把三个星号(***)添加到以Fred开头的行 + +```shell +sed -e 's/^Fred/\*\*\*Fred/g' datafile + +Steve Blenheim:238-923-7366:95 Latham Lane, Easton, PA 83755:11/12/56:20300 +Betty Boop:245-836-8357:635 Cutesy Lane, Hollywood, CA 91464:6/23/23:14500 +Igor Chevsky:385-375-8395:3567 Populus Place, Caldwell, NJ 23875:6/18/68:23400 +Norma Corder:397-857-2735:74 Pine Street, Dearborn, MI 23874:3/28/45:245700 +Jennifer Cowan:548-834-2348:583 Laurel Ave., Kingsville, TX 83745:10/1/35:58900 +Jon DeLoach:408-253-3122:123 Park St., San Jose, CA 04086:7/25/53:85100 +Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +***Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 +***Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 +Lori Gortz:327-832-5728:3465 Mirlo Street, Peabody, MA 34756:10/2/65:35200 +Paco Gutierrez:835-365-1284:454 Easy Street, Decatur, IL 75732:2/28/53:123500 +Ephram Hardy:293-259-5395:235 CarltonLane, Joliet, IL 73858:8/12/20:56700 +James Ikeda:834-938-8376:23445 Aster Ave., Allentown, NJ 83745:12/1/38:45000 +Barbara Kertz:385-573-8326:832 Ponce Drive, Gary, IN 83756:12/1/46:268500 +Lesley Kirstin:408-456-1234:4 Harvard Square, Boston, MA 02133:4/22/62:52600 +William Kopf:846-836-2837:6937 Ware Road, Milton, PA 93756:9/21/46:43500 +Sir Lancelot:837-835-8257:474 Camelot Boulevard, Bath, WY 28356:5/13/69:24500 +Jesse Neal:408-233-8971:45 Rose Terrace, San Francisco, CA 92303:2/3/36:25000 +Zippy Pinhead:834-823-8319:2356 Bizarro Ave., Farmount, IL 84357:1/1/67:89500 +Arthur Putie:923-835-8745:23 Wimp Lane, Kensington, DL 38758:8/31/69:126000 +Popeye Sailor:156-454-3322:945 Bluto Street, Anywhere, USA 29358:3/19/35:22350 +Jose Santiago:385-898-8357:38 Fife Way, Abilene, TX 39673:1/5/58:95600 +Tommy Savage:408-724-0140:1222 Oxbow Court, Sunnyvale, CA 94087:5/19/66:34200 +Yukio Takeshida:387-827-1095:13 Uno Lane, Ashville, NC 23556:7/1/29:57000 +Vinh Tranh:438-910-7449:8235 Maple Street, Wilmington, VM 29085:9/23/63:68900 +``` + +### 用JOSE HAS RETIRED取代包含Jose的行 + +```shell +sed -e 's/^.*Jose.*$/JOSE HAS RETIRED/g' datafile + +Steve Blenheim:238-923-7366:95 Latham Lane, Easton, PA 83755:11/12/56:20300 +Betty Boop:245-836-8357:635 Cutesy Lane, Hollywood, CA 91464:6/23/23:14500 +Igor Chevsky:385-375-8395:3567 Populus Place, Caldwell, NJ 23875:6/18/68:23400 +Norma Corder:397-857-2735:74 Pine Street, Dearborn, MI 23874:3/28/45:245700 +Jennifer Cowan:548-834-2348:583 Laurel Ave., Kingsville, TX 83745:10/1/35:58900 +JOSE HAS RETIRED +Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 +Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 +Lori Gortz:327-832-5728:3465 Mirlo Street, Peabody, MA 34756:10/2/65:35200 +Paco Gutierrez:835-365-1284:454 Easy Street, Decatur, IL 75732:2/28/53:123500 +Ephram Hardy:293-259-5395:235 CarltonLane, Joliet, IL 73858:8/12/20:56700 +James Ikeda:834-938-8376:23445 Aster Ave., Allentown, NJ 83745:12/1/38:45000 +Barbara Kertz:385-573-8326:832 Ponce Drive, Gary, IN 83756:12/1/46:268500 +Lesley Kirstin:408-456-1234:4 Harvard Square, Boston, MA 02133:4/22/62:52600 +William Kopf:846-836-2837:6937 Ware Road, Milton, PA 93756:9/21/46:43500 +Sir Lancelot:837-835-8257:474 Camelot Boulevard, Bath, WY 28356:5/13/69:24500 +Jesse Neal:408-233-8971:45 Rose Terrace, San Francisco, CA 92303:2/3/36:25000 +Zippy Pinhead:834-823-8319:2356 Bizarro Ave., Farmount, IL 84357:1/1/67:89500 +Arthur Putie:923-835-8745:23 Wimp Lane, Kensington, DL 38758:8/31/69:126000 +Popeye Sailor:156-454-3322:945 Bluto Street, Anywhere, USA 29358:3/19/35:22350 +JOSE HAS RETIRED +Tommy Savage:408-724-0140:1222 Oxbow Court, Sunnyvale, CA 94087:5/19/66:34200 +Yukio Takeshida:387-827-1095:13 Uno Lane, Ashville, NC 23556:7/1/29:57000 +Vinh Tranh:438-910-7449:8235 Maple Street, Wilmington, VM 29085:9/23/63:68900 +``` + +### 把Popeye的生日改成11/14/46 + +```shell +sed -e '/Popeye/s/[1-9]*\/.*\/.*:/11\/14\/46:/' datafile + +Steve Blenheim:238-923-7366:95 Latham Lane, Easton, PA 83755:11/12/56:20300 +Betty Boop:245-836-8357:635 Cutesy Lane, Hollywood, CA 91464:6/23/23:14500 +Igor Chevsky:385-375-8395:3567 Populus Place, Caldwell, NJ 23875:6/18/68:23400 +Norma Corder:397-857-2735:74 Pine Street, Dearborn, MI 23874:3/28/45:245700 +Jennifer Cowan:548-834-2348:583 Laurel Ave., Kingsville, TX 83745:10/1/35:58900 +Jon DeLoach:408-253-3122:123 Park St., San Jose, CA 04086:7/25/53:85100 +Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 +Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 +Lori Gortz:327-832-5728:3465 Mirlo Street, Peabody, MA 34756:10/2/65:35200 +Paco Gutierrez:835-365-1284:454 Easy Street, Decatur, IL 75732:2/28/53:123500 +Ephram Hardy:293-259-5395:235 CarltonLane, Joliet, IL 73858:8/12/20:56700 +James Ikeda:834-938-8376:23445 Aster Ave., Allentown, NJ 83745:12/1/38:45000 +Barbara Kertz:385-573-8326:832 Ponce Drive, Gary, IN 83756:12/1/46:268500 +Lesley Kirstin:408-456-1234:4 Harvard Square, Boston, MA 02133:4/22/62:52600 +William Kopf:846-836-2837:6937 Ware Road, Milton, PA 93756:9/21/46:43500 +Sir Lancelot:837-835-8257:474 Camelot Boulevard, Bath, WY 28356:5/13/69:24500 +Jesse Neal:408-233-8971:45 Rose Terrace, San Francisco, CA 92303:2/3/36:25000 +Zippy Pinhead:834-823-8319:2356 Bizarro Ave., Farmount, IL 84357:1/1/67:89500 +Arthur Putie:923-835-8745:23 Wimp Lane, Kensington, DL 38758:8/31/69:126000 +Popeye Sailor:156-454-3322:945 Bluto Street, Anywhere, USA 29358:11/14/46:22350 +Jose Santiago:385-898-8357:38 Fife Way, Abilene, TX 39673:1/5/58:95600 +Tommy Savage:408-724-0140:1222 Oxbow Court, Sunnyvale, CA 94087:5/19/66:34200 +Yukio Takeshida:387-827-1095:13 Uno Lane, Ashville, NC 23556:7/1/29:57000 +Vinh Tranh:438-910-7449:8235 Maple Street, Wilmington, VM 29085:9/23/63:68900 +``` + +### 删除所有空白行 + +```shell +sed -e '/^$/d' datafile + +Steve Blenheim:238-923-7366:95 Latham Lane, Easton, PA 83755:11/12/56:20300 +Betty Boop:245-836-8357:635 Cutesy Lane, Hollywood, CA 91464:6/23/23:14500 +Igor Chevsky:385-375-8395:3567 Populus Place, Caldwell, NJ 23875:6/18/68:23400 +Norma Corder:397-857-2735:74 Pine Street, Dearborn, MI 23874:3/28/45:245700 +Jennifer Cowan:548-834-2348:583 Laurel Ave., Kingsville, TX 83745:10/1/35:58900 +Jon DeLoach:408-253-3122:123 Park St., San Jose, CA 04086:7/25/53:85100 +Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 +Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 +Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 +Lori Gortz:327-832-5728:3465 Mirlo Street, Peabody, MA 34756:10/2/65:35200 +Paco Gutierrez:835-365-1284:454 Easy Street, Decatur, IL 75732:2/28/53:123500 +Ephram Hardy:293-259-5395:235 CarltonLane, Joliet, IL 73858:8/12/20:56700 +James Ikeda:834-938-8376:23445 Aster Ave., Allentown, NJ 83745:12/1/38:45000 +Barbara Kertz:385-573-8326:832 Ponce Drive, Gary, IN 83756:12/1/46:268500 +Lesley Kirstin:408-456-1234:4 Harvard Square, Boston, MA 02133:4/22/62:52600 +William Kopf:846-836-2837:6937 Ware Road, Milton, PA 93756:9/21/46:43500 +Sir Lancelot:837-835-8257:474 Camelot Boulevard, Bath, WY 28356:5/13/69:24500 +Jesse Neal:408-233-8971:45 Rose Terrace, San Francisco, CA 92303:2/3/36:25000 +Zippy Pinhead:834-823-8319:2356 Bizarro Ave., Farmount, IL 84357:1/1/67:89500 +Arthur Putie:923-835-8745:23 Wimp Lane, Kensington, DL 38758:8/31/69:126000 +Popeye Sailor:156-454-3322:945 Bluto Street, Anywhere, USA 29358:3/19/35:22350 +Jose Santiago:385-898-8357:38 Fife Way, Abilene, TX 39673:1/5/58:95600 +Tommy Savage:408-724-0140:1222 Oxbow Court, Sunnyvale, CA 94087:5/19/66:34200 +Yukio Takeshida:387-827-1095:13 Uno Lane, Ashville, NC 23556:7/1/29:57000 +Vinh Tranh:438-910-7449:8235 Maple Street, Wilmington, VM 29085:9/23/63:68900 +``` + +### 写一个脚本,满足如下要求 + +1. 在第一行之前插入标题"PERSONNEL FILE" +2. 删除以500结尾的工资 +3. 显示文件内容,把姓和名颠倒 +4. 在文件末尾添加"THE END" + +```shell +#! /bin/sh + +# 将第1个字段(姓名)导出到cut1文件 +cut -d: -f1 datafile > cut1 +# 将第1个字段导出到cut2文件 +cut -d: -f2,3,4,5 datafile > cut2 +# 将cut1文件中的姓和名颠倒,导出到cut3文件 +awk '{print $2" "$1}' cut1 > cut3 +# 将cut3和cut2文件中的字段拼接,导出到cut4文件 +paste -d: cut3 cut2 > cut4 +# 将cut4文件中以500结尾的行删除 +sed -e 's/[1-9]*500$//' cut4 > cut0 + +awk 'BEGIN {print "\t\t\tPERSONNEL FILE\n"} {print $0} END {print "\t\t\tTHE END"}' cut0 +``` + +## awk命令练习 + +首先创建`datafile`文件,包含名字,电话号码和过去三个月里的捐款 + +```shell +Mike Harrington:[510] 548-1278:250:100:175 +Christian Dobbins:[408] 538-2358:155:90:201 +Susan Dalsass:[206] 654-6279:250:60:50 +Archie McNichol:[206] 548-1348:250:100:175 +Jody Savage:[206] 548-1278:15:188:150 +Guy Quigley:[916] 343-6410:250:100:175 +Dan Savage:[406] 298-7744:450:300:275 +Nancy McNeil:[206] 548-1278:250:80:75 +John Goldenrod:[916] 348-4278:250:100:175 +Chet Main:[510] 548-5258:50:95:135 +Tom Savage:[408] 926-3456:250:168:200 +Elizabeth Stachelin:[916] 440-1763:175:75:300 +``` + +### 显示所有电话号码 + +```shell +awk -F: '{print $2}' datafile + +[510] 548-1278 +[408] 538-2358 +[206] 654-6279 +[206] 548-1348 +[206] 548-1278 +[916] 343-6410 +[406] 298-7744 +[206] 548-1278 +[916] 348-4278 +[510] 548-5258 +[408] 926-3456 +[916] 440-1763 +``` + +### 显示Dan的电话号码 + +```shell +awk -F: '$1~/^Dan/{print $2}' datafile + +[406] 298-7744 +``` + +### 显示Susan的名字和电话号码 + +```shell +awk -F: '$1~/^Susan/{print $1":"$2}' datafile + +Susan Dalsass:[206] 654-6279 +``` + +### 显示所有以D开头的姓 + +```shell +awk -F"[: ]" '$2~/^D/{print $2}' datafile + +Dobbins +Dalsass +``` + +### 显示所有以一个C或E开头的名 + +```shell +awk -F"[: ]" '$1~/^C|E/{print $1}' datafile + +Christian +Chet +Elizabeth +``` + +### 显示所有只有四个字符的名 + +```shell +awk 'length($1)==4{print $1}' datafile + +Mike +Jody +John +Chet +``` + +### 显示所有区号为916的人名 + +```shell +awk -F"[: ]" '$3~/\[916\]/{print $1,$2}' datafile + +Guy Quigley +John Goldenrod +Elizabeth Stachelin +``` + +### 显示Mike的捐款.显示每个值时都有以$开头.如$250$100$175 + +```shell +awk -F"[: ]" '$1~/Mike/{print "$"$5,"$"$6,"$"$7}' datafile + +$250 $100 $175 +``` + +### 显示姓,其后跟一个逗号和名,如Jody,Savage + +```shell +awk -F"[: ]" '{print $2","$1}' datafile + +Harrington,Mike +Dobbins,Christian +Dalsass,Susan +McNichol,Archie +Savage,Jody +Quigley,Guy +Savage,Dan +McNeil,Nancy +Goldenrod,John +Main,Chet +Savage,Tom +Stachelin,Elizabeth +``` + +### 写一个脚本,满足如下要求 + +1. 显示Savage的全名和电话号码 +2. 显示Chet的捐款 +3. 显示所有头一个月捐款$250的人名. + +注:区号本来是圆括号表示的. + +```shell +#!/bin/sh +awk -F: '$1~/Savage/{print $1":"$2}' datafile > tmp +awk -F: '$1~/Chet/{print $3,$4,$5}'datafile >> tmp +awk -F: '$3~/250/{print $1}' datafile >> tmp +cat tmp +rm tmp +``` diff --git "a/_drafts/202102141510\345\256\211\345\215\223\346\236\204\345\273\272\347\263\273\347\273\237.md" "b/_drafts/202102141510\345\256\211\345\215\223\346\236\204\345\273\272\347\263\273\347\273\237.md" new file mode 100644 index 0000000..b30650c --- /dev/null +++ "b/_drafts/202102141510\345\256\211\345\215\223\346\236\204\345\273\272\347\263\273\347\273\237.md" @@ -0,0 +1,278 @@ +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2021021415101.jpeg) + +## 同步发布平台 + +* 博客园: +* CSDN: +* 掘金: +* 知乎: + +**未经允许,谢绝转载** + +在以下位置描述了Android构建系统: +你可以使用`build/envsetup.sh`设置一个"便利环境"来处理Android源代码。在当前shell环境中执行`source build/envsetup.sh`后,你可以输入hmm作为已定义函数的列表,这些函数有助于与源进行交互。 + +## 概述 + +构建系统使用一些预设的环境变量和一系列"make"文件来构建Android系统并准备将其部署到平台上。 + +子项目的Android构建文件叫做Android.bp和Android.mk。 + +整个存储库的源树顶部只有一个名为"Makefile"的官方文件。你设置了一些环境变量,然后键入"make"或仅键入m来构建内容。你可以在make命令行(其他目标)中添加一些选项以打开详细输出或执行其他操作。 + +构建输出放置在`out/host`和`out/target`中。`out/host`下的东西是为你的主机平台(台式机)编译的东西。最终在`out/target/product/`下的内容会以特定方式被放到目标设备(或模拟器)。 + +目录`out/target/product//obj`用于暂存"object"文件,这些文件是用于构建最终程序的中间二进制映像。实际落在目标文件系统中的内容存储在`out/target/product/`下的root,system和data目录中。通常,这些文件捆绑成名为system.img,ramdisk.img和userdata.img的映像文件。 + +这与大多数Android设备上使用的文件系统分区相匹配。 + +## 一些细节 + +### 使用什么工具 + +在构建期间,你将使用soong,ninja和'make'控制构建步骤。主机工具链(编译器,链接器和其他工具)和库将用于构建将在主机上运行的程序和工具。使用不同的工具链来编译将在目标(嵌入式板,设备或模拟器)上运行的C和C++代码。这通常是在X86平台上运行的"交叉"工具链,但会为其他平台(最常见的是ARM)生成代码。内核被编译为独立的二进制文件(它不使用程序加载器或链接到任何外部库)。其他项目,例如本机程序(例如init或工具箱),守护程序或库,将链接到仿生库或其他系统库。 + +你将使用Java编译器和大量与Java相关的工具来构建大多数应用程序框架,系统服务和Android应用程序本身。最后,使用工具打包应用程序和资源文件,并创建可以安装在设备上或与模拟器一起使用的文件系统映像。 + +### 告诉系统Java工具链在哪里 + +在构建任何东西之前,你必须告诉Android构建系统Java SDK的位置。(安装Java SDK是构建的先决条件)。 +通过设置JAVA_HOME环境变量来执行此操作。 + +### 指定要构建的内容 + +为了决定要构建什么以及如何构建,构建系统要求设置一些变量。可以从同一源代码树构建具有不同软件包和选项的不同产品。可以通过带有"make"变量声明的文件来设置控制此变量的变量,也可以在环境中指定该变量。 + +设备供应商可以创建定义文件,以描述特定板或特定产品要包含的内容。定义文件称为:buildspec.mk,它位于顶级源目录中。你可以手动编辑此选项以对选择进行硬编码。 + +如果你有一个buildspec.mk文件,它会设置构建所需的所有make变量,而你不必弄乱选项。 + +指定选项的另一种方法是设置环境变量。构建系统具有一种相当华丽的方法来为你管理这些选项。 + +要设置你的构建环境,你需要在`build/envsetup.sh`中加载变量和函数。通过将文件`source`到你的shell环境中来执行此操作,如下所示: + +```shell +. build/envsetup.sh +``` + +你可以在此时输入"help"(或"hmm")以查看一些实用程序功能,这些功能可以使你更轻松地使用源代码。 + +要选择要构建的一组东西以及要构建的项目,请使用"choosecombo"功能或"lunch"功能。"choosecombo"将一步一步地引导你完成必须选择的不同项目,而"lunch"则允许你选择一些预设组合。 + +必须为构建定义的项目是: + +• 产品("generic"或某些特定的芯片或平台名称) +• 构建变体("user","userdebug"或"eng") +• 是否在模拟器上运行("true"或"false") +• 构建类型("发布"或"调试") + +这些不同的构建变体的说明位于 + +在这篇博客文章中,从用户角度很好地描述了构建过程: + +### 实际构建系统 + +设置完毕后,实际上就可以使用"make"命令来构建系统。 + +要构建整个内容,请在顶层目录中运行"make"。如果要构建所有内容(例如,第一次进行构建),则构建将花费很长时间。 + +## 构建技巧 + +### 查看用于构建软件的实际命令 + +在"make"行上使用"showcommands"目标: + +```shell +make -j4 showcommands +``` + +可以将其与另一个make目标结合使用,以查看该构建的命令。也就是说,"showcommands"本身不是目标,而只是指定构建的修饰符。 + +在上面的示例中,-j4与showcommands选项无关,并且用于执行4个并行运行的make会话。 + +### 制定目标 + +这是可用于构建系统不同部分的不同make目标的列表: + +• `make sdk` - 构建属于SDK的工具(adb,fastboot等) +• `make snod` - 从当前软件二进制文件构建系统映像 +• `make services` +• `make runtime` +• `make droid` - make droid是正常的构建。 +• `make all` - 构建所有内容,无论是否包含在产品定义中 +• `make clean` - 删除所有构建的文件(准备进行新的构建)。与`rm -rf out//`相同 +• `make modules` - 显示可以构建的子模块的列表(所有LOCAL_MODULE定义的列表) +• `make ` - 构建一个特定的模块(请注意,这与目录名称不同。它是Android.mk文件中的LOCAL_MODULE定义) +• `make clean ` - 清理特定模块 +• `make bootimage TARGET_PREBUILT_KERNEL=/path/to/bzImage` - 使用自定义bzImage创建新的启动映像 + +### 辅助宏和函数 + +当你获取envsetup.sh时,会安装一些辅助宏和函数。它们记录在envesetup.sh的顶部,但是这里是其中一些信息: + +• `hmm` - 列出帮助内容 +• `lunch -` - 加载产品和构建变体配置(驱动程序文件,设备特定的配置等)。 +• `tapas [ ...] [arm | x86 | mips | armv5 | arm64 | x86_64 | mips64] [eng | userdebug | user]` - 该命令用于构建未捆绑的应用程序。如果你不提供构建版本,则默认为eng。 +• `provision` - 烧录具有所有必需分区的设备。选项将传递给fastboot。 + +### 构建宏和函数 + +• `croot` - 将目录更改为树的顶部 +• `m` - 从树的顶部执行"make"(即使当前目录位于其他位置) +• `mm` - 构建当前目录中的所有模块 +• `mmm ...` - 构建提供的目录中的所有模块,但不构建其依赖项。要限制正在构建的模块,请使用以下语法:`mmm dir /:target1,target2`。 +• `mma` - 构建当前目录中的所有模块及其依赖项。 +• `mmma ...` - 构建提供的目录中的所有模块及其依赖项。 + +### Grep宏和函数 + +• `cgrep ` 在所有本地C/C++文件上显示。 +• `ggrep ` 在所有本地Gradle文件上显示。 +• `jgrep ` 在所有本地Java文件上使用。 +• `resgrep ` 在所有本地res/*。xml文件上进行锁定。 +• `mangrep ` 在所有本地AndroidManifest.xml文件上进行扫描。 +• `mgrep ` 在所有本地Makefile文件上进行抓紧。 +• `sepgrep ` 在所有本地Sepolicy文件上进行锁定。 +• `sgrep ` 在所有本地源文件上进行抓紧。 +• `godir <文件名>` 转到包含文件的目录 + +### 加快构建 + +你可以在make中使用'-j'选项,以同时启动多个make执行线程。 + +根据我的经验,你应该指定比计算机上具有处理器多2个线程。如果你有2个处理器,请使用'make -j4';如果它们是超线程的(意味着你有4个虚拟处理器),请尝试'make -j6。 + +你还可以指定使用"ccache"编译器缓存,这将在你首次构建内容后加快处理速度。为此,请在你的shell命令行中指定"export USE_CCACHE = 1"。(请注意,ccache包含在存储库的预构建部分中,不必单独安装在主机上。) + +对于最新的Android版本,没有预建的ccache,并且需要根据此commit,使用CCACHE_EXEC将路径设置为本地二进制文件。 + +### 仅构建单个程序或模块 + +如果使用`build/envsetup.sh`,则可以使用某些已定义的函数来仅构建树的一部分。使用"mm"或"mmm"命令执行此操作。 + +"mm"命令在当前目录(和子目录,我相信)中进行填充。使用"mmm"命令,你可以指定目录或目录列表,然后将其构建。 +要安装你的更改,请从树的顶部开始"make snod"。"make snod"从当前的二进制文件构建新的系统映像。 + +### 设置模块特定的构建参数 + +Android系统中的某些代码可以按照其构建方式进行自定义(与构建变体以及发行版和调试选项分开)。你可以设置变量来控制各个构建选项,方法是在环境中进行设置,或者将其直接传递给"make"(或称为"make"的"m ..."函数)。 + +例如,可以通过设置INIT_BOOTCHART变量来构建支持bootchart日志记录的'init'程序。(有关为什么你可能要执行此操作,请参见在Android上使用Bootchart。) + +你可以使用以下任一方法来完成: + +```shell +touch system/init/init.c +export INIT_BOOTCHART=true +make +``` + +或者 + +```shell +touch system/init/init.c +m INIT_BOOTCHART=true +``` + +## Makefile技巧 + +这些是你可以在自己的Android.mk文件中使用的东西的一些提示。 + +### 建立助手功能 + +在文件build/core/definitions.mk中定义了很多构建帮助器函数 + +尝试列出详尽的清单。`grep define build/core/definitions.mk` + +通过以下方式调用它们:或不带参数:`$(call , , )$(call )` + +以下是一些可能有趣的功能: + +• `print-vars` - 打印所有Makefile变量,以进行调试(而不是它们的值)。 +• `emit-line` - 在构建期间将线输出到文件 +• `dump-words-to-file` - 将单词列表输出到文件 +• `copy-one-file` - 将文件从一个地方复制到另一个地方(目标是否在目的地?) +• `all-subdir-makefiles` - 从当前目录开始递归调用所有文件(用法:)。Android.mkinclude $(调用all-subdir-makefiles) + +### 构建变量 + +• `$(ANDROID_BUILD_TOP)` - AOSP文件系统根文件夹 +• `$(LOCAL_PATH)`- 通常为当前目录。由开发人员/用户在每个Android.mk文件中设置。 +它会在文件树下的其他文件中被覆盖(例如,使用时)。`Android.mk include $(call all-subdir-makefiles)` + +解决方法: + +```Makefile + SAVED_LOCAL_PATH := $(call my-dir) + include $(call all-subdir-makefiles) + LOCAL_PATH:= $(SAVED_LOCAL_PATH) +``` + +### 将文件直接添加到输出区域 + +你可以使用add-prebuilt-files函数将文件直接复制到输出区域,而无需构建任何内容。 + +从`prebuilt/android-arm/gdbserver/Android.mk`中提取的以下行将文件列表复制到输出区域的EXECUTABLES目录中: + +`$(call add-prebuilt-files, EXECUTABLES, $(prebuilt_files))` + +## 添加新程序以进行构建 + +### 将新程序添加到Android源代码树的步骤 + +• 在"外部"下建立目录 +• 例如ANDROID/external/myprogram +• 创建你的C/cpp文件。 +• 创建Android.mk作为external/ping/Android.mk的克隆 +• 更改名称ping.c和ping以匹配你的C/cpp文件和程序名称 +• 在external/zlib之后将ANDROID/build/core/main.mk中的目录名称添加为external/myprogram(至少从Android 7.1起不再需要) +• 从源代码树的根开始 +• 你的文件将显示在构建输出区域和系统映像中。 +• 如果要将文件单独复制到目标(而不执行整个安装),则可以从构建输出区域的out/target/product/...下复制文件。 + +有关更多详细信息,请参见。 + +### 构建内核 + +内核是普通Android构建系统的"外部"(实际上,默认情况下,Android Open Source Project中不包括该内核)。但是,AOSP中有一些用于构建内核的工具。如果要构建内核,请从此页面开始:http : //source.android.com/source/building-kernels.html + +如果你正在为模拟器构建内核,则可能还需要查看:http : //stackoverflow.com/questions/1809774/android-kernel-compile-and-test-with-android-emulator + +而且,Ron M写道(在2012年5月21日在android-kernel邮件列表中): + +这篇文章很老-但就AOSP而言,什么都没有改变,所以如果有人对QEMU感兴趣并遇到此问题,请执行以下操作: +实际上,为AOSP提供的QEMU目标构建内核是一种不错的,更短的方法: + +1. cd到你的内核源目录(仅金鱼2.6.29在模拟器中可用) +2. $ {ANDROID_BUILD_TOP} /external/qemu/distrib/build-kernel.sh -j = 64 --arch = x86 --out = $ YourOutDir +3. emulator -kernel ${YourOutDir}/kernel-qemu # run emulator: + +步骤#2 调用toolbox.sh包装程序脚本,该脚本可在SSE禁用gcc警告的情况下工作-在GCC <4.5时发生(如AOSP预先构建的X86工具链中一样)。 + +如果它是X86,该脚本会添加"-mfpmath = 387 -fno-pic",从而消除了上面看到的编译错误。 + +为了更好地控制构建过程,可以使用"toolbox.sh"包装器并设置一些其他内容,而无需修改脚本文件。 + +下面是构建相同模拟器的示例: + +```shell +# Set arch +export ARCH=x86 +# Have make refer to the QEMU wrapper script for building android over x86 +(eliminates the errors listed above) +export +CROSS_COMPILE=${ANDROID_BUILD_TOP}/external/qemu/distrib/kernel-toolchain/android-kernel-toolchain- +# Put your cross compiler here. I am using the AOSP prebuilt one in this example +export +REAL_CROSS_COMPILE=${ANDROID_BUILD_TOP}/prebuilt/linux-x86/toolchain/i686-android-linux-4.4.3/bin/i686-android-linux- +# Configure your kernel - here I am taking the default goldfish_defconfig +make goldfish_defconfig +# build +make -j64 +# Run emulator: +emulator -kernel arch/x86/boot/bzImage -show-kernel +``` + +这适用于2.6.29 goldfish 分支。 + +## 译自 diff --git "a/_drafts/202107251609\344\270\200\347\257\207\346\226\207\347\253\240\346\220\236\346\207\202Debian_Ubuntu\350\275\257\344\273\266\345\214\205\346\233\264\346\226\260\345\222\214\345\210\240\351\231\244.md" "b/_drafts/202107251609\344\270\200\347\257\207\346\226\207\347\253\240\346\220\236\346\207\202Debian_Ubuntu\350\275\257\344\273\266\345\214\205\346\233\264\346\226\260\345\222\214\345\210\240\351\231\244.md" new file mode 100644 index 0000000..cf09f9b --- /dev/null +++ "b/_drafts/202107251609\344\270\200\347\257\207\346\226\207\347\253\240\346\220\236\346\207\202Debian_Ubuntu\350\275\257\344\273\266\345\214\205\346\233\264\346\226\260\345\222\214\345\210\240\351\231\244.md" @@ -0,0 +1,108 @@ +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2021072516091.jpeg) + +## 同步发布平台 + +* 博客园: +* CSDN: +* 掘金: +* 知乎: + +**未经允许,谢绝转载** + +## 关联阅读 + +* What is the difference between dpkg and aptitude/apt-get? +* A snap is a bundle of an app and its dependencies that works without modification across Linux distributions: + +`apt-get update`, `apt-get upgrade`, `apt-get upgrade`, `do-release-upgrade`, `apt-get remove`, `aptitude remove`... + +相信很多人都接触过这些软件包更新、升级、删除的Linux命令,但是始终没能彻底理清他们的关系。这里我希望用一篇文章彻底解释清楚他们的区别。首先根据功能大类进行划分: + +* 软件包更新升级相关: + * `apt-get update` + * `apt-get upgrade` + * `apt-get upgrade` + * `do-release-upgrade` +* 软件包删除相关: + * `apt-get remove` + * `apt-get autoremove` + * `aptitude remove` + +当然也可以从另一个维度进行划分,`apt-get update`,`apt-get upgrade`,`apt-get dist-upgrade`,`apt-get remove`,`apt-get autoremove`都是`apt-get`命令使用不同参数,根据**掌握了man和-h就是掌握了所有Linux命令**这一原则,你只要能够敲出`man apt-get`,`man aptitude`就能了解这些命令的具体作用,而且是最权威、最即时的说明。我这里也只是对这行命令的manual做个归纳概括。 + +## 软件包更新升级 + +* `apt-get update`: 从`/etc/apt/sources`指定的软件源中重新同步软件包索引文件,这样就可以让我们知道哪些软件包有更新了。每次执行`apt-get upgrade`,`apt-get dist-upgrade`前都应该先执行`apt-get update`。 +* `apt-get upgrade`: 系统将现有的软件包进行升级,如果有相依性的问题,而此相依性需要安装其它新的软件包或影响到其它软件包的相依性时,此软件包就不会被升级,会保留下来。 +* `apt-get dist-upgrade`: 功能和`apt-get upgrade`类似,区别是可以解决相依性的问题,如果有相依性问题,需要安装/移除新的软件包,就会试着去安装/移除它。所以这个命令是有些风险的。例如软件包A原先依赖B/C/D,现在A依赖B/C/E。这种情况下,`apt-get dist-upgrade`会删除D安装E,并把A升级,而`apt-get upgrade`会认为依赖关系改变而拒绝升级A。 +* `do-release-upgrade`: 是Ubuntu发行版自己提供的一个命令(它没有对应的man手册,但是可以通过了解详细内容),比如当你想通过命令行将Ubuntu 18.04 LTS升级到Ubuntu 20.04 LTS,就可以使用这个命令。当然你也可以通过把/etc/apt/sources.list中的版本代号改掉,然后继续使用`apt-get update`+`apt-get dist-upgrade`来升级,但是这相对比较麻烦。 + +## 软件包删除 + +* `apt-get remove`的行为我们很好理解,就是删除某个包的同时,删除依赖于它的包,例如:A依赖于B,B依赖于C,`apt-get remove`删除B的同时,将删除A(很好理解,A依赖于B,B被删了,A也就无法正常运行了)。 + +* `apt-get autoremove`与`aptitude remove`效果相同,我们先了解下这两者的瓜葛:`apt-get`一开始并没有记录auto-install的信息,在06年的0.6.44.2exp1版本增加了类似于aptitude的auto-install记录(/var/lib/apt/extended_states)。此后,aptitude在07年的0.4.5.1版本转向使用apt-get的auto-install记录,而抛弃了自己原先的记录方式,再随后apt-get在07年的0.7.7版本增加了autoremove的选项。 + +依赖关系是一个复杂而交错的链条,我们把举几个例子来看看它们的行为。以下图中,绿色圆是为了满足依赖关系而apt-get或aptitude自动安装上的包,蓝色圆是管理员使用`apt-get install`或`aptitude install`手动安装的包。 + +### 例子1 + +1. C依赖于或推荐B软件包(apt-get和aptitude在安装软件时除了安装必要的依赖包,默认也会安装推荐的包) +2. B依赖于或推荐A,A被其他手动安装的包依赖 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/611264-20210725160952042-1417840439.png) + +* `apt-get remove C`将删除C,同时提示你用`apt-get autoremove`去清除B +* `apt-get autoremove C`将删除B,C +* `aptitude remove C`将删除B,C + +删除C,那么B这个包既是自动安装的,且没有其他手动安装的包依赖于它,则可以判定B也是没必要的。 + +### 例子2 + +1. 在例子1的基础上,D依赖于或者推荐B,且D没有被其他手动安装的包依赖 +这样的情况一般出现在用apt-get remove某个手动安装的包之后 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/611264-20210725161024049-1957944143.png) + +* `apt-get remove C`将删除C,同时提示你用`apt-get autoremove`去清除B,D +* `apt-get autoremove`C将删除B,C,D +* `aptitude remove C`将删除B,C,D + +删除C,那么B,D这两个包既是自动安装的,且没有其他手动安装的包依赖于它们,则可以判定B,D也是没必要的。 + +### 例子3 + +1.在例子2的基础上,有个手动安装的包E推荐D(既E Recommends D,手动安装E时,也会把D装上) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/611264-20210725161407635-132563814.png) + +* `apt-get remove C`将删除C,同时提示你用`apt-get autoremove`去清除B,D +* `apt-get autoremove C`将删除B,C,D +* `aptitude remove C`将删除B,C,D + +删除C,那么B,D这两个包既是自动安装的,且没有其他手动安装的包依赖于它们,则可以判定B,D也是没必要的,虽然D被E Recommend,但为啥是这么设计的,我也没猜出开发人员的想法。 + +### 例子4 + +1.在例子3的基础上,D变成依赖于B,E变成依赖于D + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/611264-20210725161119892-1372692114.png) + +* `apt-get remove C`将删除C +* `apt-get autoremove C`将删除C +* `aptitude remove C`将删除C + +只删除C,因为B被D依赖,D被E依赖,间接来说,E不能没有B,D而正常运行,所以B,D被保留。 + +### 例子5 + +1.在例子4的基础上,D变成推荐B,E依然依赖于D + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/611264-20210725161438557-691000730.png) + +* `apt-get remove C`将删除C,同时提示你用`apt-get autoremove`去清除B +* `apt-get autoremove C`将删除B,C +* `aptitude remove C`将删除B,C + +删除C,而B没有被其他手动安装的包直接依赖或者间接依赖(我指那些一层层depend on的关系),D被E依赖,所以B不是必要的,可以删除,而D不能删除。 diff --git "a/_drafts/202110171056\345\246\202\344\275\225\345\260\206cpdetector\345\217\221\345\270\203Maven\344\276\235\350\265\226\345\210\260\344\270\255\345\244\256\344\273\223\345\272\223.md" "b/_drafts/202110171056\345\246\202\344\275\225\345\260\206cpdetector\345\217\221\345\270\203Maven\344\276\235\350\265\226\345\210\260\344\270\255\345\244\256\344\273\223\345\272\223.md" new file mode 100644 index 0000000..5e92178 --- /dev/null +++ "b/_drafts/202110171056\345\246\202\344\275\225\345\260\206cpdetector\345\217\221\345\270\203Maven\344\276\235\350\265\226\345\210\260\344\270\255\345\244\256\344\273\223\345\272\223.md" @@ -0,0 +1,75 @@ +参考: +https://www.cnblogs.com/jiangxinnju/p/9903517.html + +从官网下载最新版本的发布包 +https://sourceforge.net/projects/cpdetector/ + +1、生成cpdetector_1.0.10_bundle.jar + +解压后把几个依赖的包放到一起,为了简单把cpdetector*.jar和几个扩展依赖打包到一起,解压各个jar包 +jar -xvf .\cpdetector_1.0.10.jar +jar -xvf .\chardet-1.0.jar +jar -xvf .\antlr-2.7.4.jar +jar -xvf .\jargs-1.0.jar +把jar包移除,然后 +jar -cvfM cpdetector-1.0.10.jar . + +2、生成cpdetector-1.0.10-javadoc.jar和cpdetector-1.0.10-sources.jar + +jar -cvf cpdetector-1.0.10-javadoc.jar .\binary-release.txt .\MPL-1.1.txt +jar -cvf cpdetector-1.0.10-sources.jar .\binary-release.txt .\MPL-1.1.txt + +3、生成cpdetector-1.0.10.pom + +然后创建pom.xml,填写对应信息。 + +```xml + + 4.0.0 + com.github.jiangxincode + cpdetector + 1.0.10 + jar + cpdetector + cpDetector is a proxy for codepage detection of documents. It delegates to multiple instances that try to detect the codepage by different techinques. A command line executeable is shipped that allows to sort documents by codepage. + https://sourceforge.net/projects/cpdetector/ + + + MPL-1.1 + https://www.mozilla.org/en-US/MPL/1.1/ + + + + git://git.code.sf.net/p/cpdetector/sourcecode cpdetector-sourcecode + git://git.code.sf.net/p/cpdetector/sourcecode cpdetector-sourcecode + git://git.code.sf.net/p/cpdetector/sourcecode cpdetector-sourcecode + + + + achimwestermann + + + +``` + +4、生成对应的asc签名文件 + +gpg --gen-key创建密钥(密码12345678) + +pub rsa3072 2021-10-17 [SC] [expires: 2023-10-17] + 6F52975E26BFE145B5A23C55A11AA01F0E9838A9 +uid Aloys +sub rsa3072 2021-10-17 [E] [expires: 2023-10-17] + +分发公钥到某个公钥服务器 +gpg --keyserver hkp://keyserver.ubuntu.com --send-keys 6F52975E26BFE145B5A23C55A11AA01F0E9838A9 + +gpg -ab .\cpdetector-1.0.10.jar +gpg -ab .\cpdetector-1.0.10-javadoc.jar +gpg -ab .\cpdetector-1.0.10-sources.jar +gpg -ab .\cpdetector-1.0.10.pom + +5、打包到一起 +jar -cvf bundle.jar cpdetector-1.0.10* \ No newline at end of file diff --git "a/_drafts/202209041204\347\203\255\345\210\207\346\215\242Log4j\347\272\247\345\210\253\351\205\215\347\275\256.md" "b/_drafts/202209041204\347\203\255\345\210\207\346\215\242Log4j\347\272\247\345\210\253\351\205\215\347\275\256.md" new file mode 100644 index 0000000..78f2c1f --- /dev/null +++ "b/_drafts/202209041204\347\203\255\345\210\207\346\215\242Log4j\347\272\247\345\210\253\351\205\215\347\275\256.md" @@ -0,0 +1,230 @@ +# 热切换Log4j级别配置 + +原创不易,转载请注明原始地址: + +做一个产品或者项目,在测试时一般要打印详细的log,发布以后,因为打印日志会损失性能,所以通常在生产机上将log4j级别设置为最高,以提高效率,一旦客户那里出了问题,需要查看详细的日志信息来跟踪问题,此时打印日志就是很重要的事情。这就需要在应用开发不重启的情况下,动态切换log4j日志策略了。 + +目前有两种方式可以实现热切换Log4j级别配置,一是定时刷新log4j配置文件,二是调用setlevel()动态设置。 + +## 定时刷新log4j配置文件 + +### 使用log4j原生动态更新配置文件的方法 + +使用log4j自带的动态更新配置很简单,只要调用 PropertyConfigurator 或者 DOMConfigurator类的 configureAndWatch(String configFileName)或者 configureAndWatch(String configFileName, long delay)方法就可以了。其中configFileName值配置文件的路径加文件名,delay指扫描配置文件是否改变的间隔时间,默认值是 60 秒。在调用时log4j会创建一个线程,定时的去检查配置文件是否改变,如果改变的话就重新加载配置文件。需要注意的是在log4j中每调用一次configureAndWatch方法都会启动一个新的扫描线程: + +Log4j configureAndWatch() spawning thousands of threads: + +实例代码参考: + +```java +package edu.jiangxin.log4j.hotchange; + +import org.apache.log4j.Logger; +import org.apache.log4j.PropertyConfigurator; + +public class Log4jHotChangeWatchdog { + public static Logger logger = Logger.getLogger(Log4jHotChangeWatchdog.class); + static { + PropertyConfigurator.configureAndWatch("log4j.properties", 60000); + } + + public static void main(String[] args) { + while (!Thread.interrupted()) { + if (logger.isDebugEnabled()) { + logger.debug("debug!!"); + } + if (logger.isInfoEnabled()) { + logger.info("info!!"); + } + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + } + } + } +} +``` + +### 使用触发方式更新配置文件 + +我们可以通过configureAndWatch方法来进行动态的改变log4j的配置,但是他采用了轮询方式来实现的,现在我们需要某种触发机制自己调用PropertyConfigurator对象的configure(String configFilename)方法重新加载log4j的配置。触发机制需要结合实际业务情况,比如提供JSP页面触发,提供Rest接口触发。 + +实例代码参考: + +```JSP + +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@ page import="java.util.*, java.io.*" %> +<%@ page import="org.apache.log4j.PropertyConfigurator" %> +<% + String state = request.getParameter("state"); + if (state != null && state.trim().equals("start")) { + PropertyConfigurator.configure("./log4j.properties"); + } +%> + + + Codestin Search App + + +开始 + + +``` + +### 使用Spring定时更新配置文件 + +spring通过org.springframework.util. Log4jConfigListener实现运行时切换需求,Log4jConfigListener对log4j原生方法进行封装。默认情况是1分钟重新加载一次。 + +在web.xml文件中 配置 加载 log4j.properties的属性 + +```xml + + log4jConfigLocation + /WEB-INF/log4j.properties + + + log4jRefreshInterval + 10000 + + + org.springframework.web.util.Log4jConfigListener + + + + webAppRootKey + scheduleProject + +``` + +1. log4jConfigLocation 指定Spring从哪个目录下加载 log4j.properties 配置文件 +2. log4jRefreshInterval 当修改了配置文件时,不需要重启就能加载变化了的log4j.properties 配置文件 +3. webAppRootKey 项目的标识,一个窗口中可能部署了多个项目,用它进行区分。当配置日志文件的输出目录时,可能会用到它。 + +## 调用setlevel()动态设置 + +### 通过界面 + +通过自己做的web界面,客户在前台设置日志级别,后台调用logger.setlevel()来完成日志级别切换,但是这有个缺点,下次服务重启后,本次的日志级别调整持久保存下来。 + +实例代码参考: + +```JSP + +<%@ page import="org.apache.log4j.*" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ page contentType="text/html;charset=GBK" language="java" %> + + +Codestin Search App + + +

Log4J级别控制

+<% String logName = request.getParameter("log"); + if (null != logName) { + Logger log = ("".equals(logName) ? + Logger.getRootLogger() : Logger.getLogger(logName)); + log.setLevel(Level.toLevel(request.getParameter("level"), Level.DEBUG)); + } +%> + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
LevelLoggerSet New Level
${rootLogger.level}${rootLogger.name} + + ${level} + +
${logger.level}${logger.name} + + ${level} + +
+
+
+Show 所有已知 loggers + + +``` + +效果如图所示: + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2022090412041.png) + +调用setlevel()方法与配置文件动态加载一样,除了可以通过JSP触发,还可以通过Rest接口触发,暴露Rest接口可以参考如下文章,本文不再展开。 +Build a RESTful Web service using Jersey and Apache Tomcat: + +提供一个暴露Rest服务的代码样例: + +```Java +package edu.jiangxin.jersey.resources; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +import org.apache.log4j.Level; +import org.apache.log4j.LogManager; +import org.apache.log4j.Logger; + +@Path("/Log4JHotChange") +public class Log4jHotChangeWS { + @GET + @Produces(MediaType.APPLICATION_XML) + @Path("/{package}/{level}") + public Response index(@PathParam("package") String p, @PathParam("level") String l) { + Level level = Level.toLevel(l); + Logger logger = LogManager.getLogger(p); + logger.setLevel(level); + return Response.ok().build(); + } + + @GET + @Produces(MediaType.APPLICATION_XML) + @Path("/root/{level}") + public Response index(@PathParam("level") String l) { + Level level = Level.toLevel(l); + LogManager.getRootLogger().setLevel(level); + return Response.ok().build(); + } + +} +``` + +### 通过Spring+JMX方式 + +如果使用spring和jmx会很简单 + +实例代码参考:Log4jHotChangeMBean + +本文所有实例代码见: \ No newline at end of file diff --git "a/_drafts/202301062159\345\246\202\344\275\225\345\217\221\345\270\203Maven\344\276\235\350\265\226\345\210\260\344\270\255\345\244\256\344\273\223\345\272\223.md" "b/_drafts/202301062159\345\246\202\344\275\225\345\217\221\345\270\203Maven\344\276\235\350\265\226\345\210\260\344\270\255\345\244\256\344\273\223\345\272\223.md" new file mode 100644 index 0000000..2d2e1ff --- /dev/null +++ "b/_drafts/202301062159\345\246\202\344\275\225\345\217\221\345\270\203Maven\344\276\235\350\265\226\345\210\260\344\270\255\345\244\256\344\273\223\345\272\223.md" @@ -0,0 +1,486 @@ +# 如何发布Maven依赖到中央仓库 + +平时我们都是从Maven中央仓库下载依赖,如果我们想发布我们自己写的Maven依赖到中央仓库供别人下载使用应该怎么办?这里以上传自己写的simian-maven-plugin()的实际过程为例说明如何发布Maven依赖到中央仓库。 + +开始之前,请注意几个地址: + +1、工单管理:https://issues.sonatype.org/secure/Dashboard.jspa + +说明:注册账号、创建和管理issue,依赖的发布是以解决issue的方式起步的。 + +2、缓存仓库:[https://oss.sonatype.org/\#stagingRepositories](https://oss.sonatype.org/#stagingRepositories) + +说明:当我们发布非SNAPSHOT版本时,会先将依赖上传到该过渡仓库,之后才能正式发布到中央仓库。 + +## 创建工单 + +访问工单管理的网址:。 + +如果之前没有注册过sonatype账号,需要先注册一个账号,注册过程本文不在赘述,务必记住用户名和密码。 + +Create Issue 填写内容说明: + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2023010621591.png) + +### Step 1 + +* Project:Community Support - Open Source Project Repository Hosting +* Issue Type:New Project + +### Step 2 + +* Summary:依赖名称,如:simian-maven-plugin +* Group Id:对应你的依赖的groupId,如com.github.jiangxincode +* Project URL:项目站点,如: +* SCM url:项目源码仓库,如: + +其他内容不用填写,创建Issue后需要等待一小段时间,Sonatype的工作人员审核处理,速度还是很快的,一般一个工作日以内,当Issue的Status变为RESOLVED后,就可以进行下一步操作了。 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2023010621592.png) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2023010621593.png) + +## 配置pom.xml + +在工程的pom.xml文件中,引入Sonatype官方的一个通用配置oss-parent,这样做的好处是很多pom.xml的发布配置不需要自己配置了: + +```xml + + org.sonatype.oss + oss-parent + 7 + +``` + +并增加Licenses、SCM、Developers信息: + +```xml + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + master + git@github.com:jiangxincode/simian-maven-plugin.git + scm:git:git@github.com:jiangxincode/simian-maven-plugin.git + scm:git:git@github.com:jiangxincode/simian-maven-plugin.git + + + + Aloys + jiangxinnju@163.com + Github + + +``` + +修改maven配置文件settings.xml,在servers中增加server配置。 + +```xml + + + sonatype-nexus-snapshots + Sonatype 账号 + Sonatype 密码 + + + sonatype-nexus-staging + Sonatype 账号 + Sonatype 密码 + + +``` + +## 配置gpg-key + +sonatype为了验证上传的依赖是我本人操作或者我授权其他人操作,需要验证上传依赖的签名,这样的话就需要一对密钥,我们保留私钥并进行签名,同时把公钥上传到公钥服务器,sonatype通过公钥验证上传的依赖是否是我本人操作。sonatype现在支持gpg对称加密方式,有关gpg的更多内容可以访问阮一峰老师的博客: + + + +以Windows为例,如果你安装了Git()则已经有了gpg工具,如果没有可以单独下载gpg4win()。以Git自带的gpg工具为例,生成密钥方式如下: + +```bash +jiang@windows MINGW64 /d/temp/Java/simian-maven-plugin (master) +$ gpg --gen-key +gpg (GnuPG) 1.4.22; Copyright (C) 2015 Free Software Foundation, Inc. +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. + +gpg: directory `/c/Users/jiang/.gnupg' created +gpg: new configuration file `/c/Users/jiang/.gnupg/gpg.conf' created +gpg: WARNING: options in `/c/Users/jiang/.gnupg/gpg.conf' are not yet active during this run +gpg: keyring `/c/Users/jiang/.gnupg/secring.gpg' created +gpg: keyring `/c/Users/jiang/.gnupg/pubring.gpg' created +Please select what kind of key you want: + (1) RSA and RSA (default) + (2) DSA and Elgamal + (3) DSA (sign only) + (4) RSA (sign only) +Your selection? +RSA keys may be between 1024 and 4096 bits long. +What keysize do you want? (2048) +Requested keysize is 2048 bits +Please specify how long the key should be valid. + 0 = key does not expire + = key expires in n days + w = key expires in n weeks + m = key expires in n months + y = key expires in n years +Key is valid for? (0) +Key does not expire at all +Is this correct? (y/N) y + +You need a user ID to identify your key; the software constructs the user ID +from the Real Name, Comment and Email Address in this form: + "Heinrich Heine (Der Dichter) " + +Real name: Aloys +Email address: jiangxinnju@163.com +Comment: for sonatype +You selected this USER-ID: + "Aloys (for sonatype) " + +Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? C +Comment: JiangXin +You selected this USER-ID: + "Aloys (JiangXin) " + +Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O +You need a Passphrase to protect your secret key. ********** + +We need to generate a lot of random bytes. It is a good idea to perform +some other action (type on the keyboard, move the mouse, utilize the +disks) during the prime generation; this gives the random number +generator a better chance to gain enough entropy. +........+++++ +...........+++++ +We need to generate a lot of random bytes. It is a good idea to perform +some other action (type on the keyboard, move the mouse, utilize the +disks) during the prime generation; this gives the random number +generator a better chance to gain enough entropy. +.+++++ ++++++ +gpg: /c/Users/jiang/.gnupg/trustdb.gpg: trustdb created +gpg: key 2AB935A0 marked as ultimately trusted +public and secret key created and signed. + +gpg: checking the trustdb +gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model +gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u +pub 2048R/2AB935A0 2018-10-28 + Key fingerprint = A5C1 8750 A311 0057 671C D8B7 A14C A7F2 2AB9 35A0 +uid Aloys (JiangXin) +sub 2048R/94B6D362 2018-10-28 +``` + +过程中需要填写名字、邮箱等,其他步骤可以使用默认值,其中需要输入Passphase,这个相当于是是密钥的密码,请务必记住该密码,之后发布过程中会用到。 +操作之后打开命令行窗口,查看gpg key并上传到第三方的key验证库: + +```bash +jiang@windows MINGW64 /d/temp/Java/simian-maven-plugin (master) +$ gpg --list-keys +/c/Users/jiang/.gnupg/pubring.gpg +--------------------------------- +pub 2048R/2AB935A0 2018-10-28 +uid Aloys (JiangXin) +sub 2048R/94B6D362 2018-10-28 + + +jiang@windows MINGW64 /d/temp/Java/simian-maven-plugin (master) +$ gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys 2AB935A0 +gpg: sending key 2AB935A0 to hkp server keyserver.ubuntu.com +``` + +我们可以验证下是否上传成功: + +```bash +jiang@windows MINGW64 /d/temp/Java/simian-maven-plugin (master) +$ gpg --keyserver hkp://keyserver.ubuntu.com:11371 --recv-keys 94B6D362 +gpg: requesting key 94B6D362 from hkp server keyserver.ubuntu.com +gpg: key 2AB935A0: "Aloys (JiangXin) " not changed +gpg: Total number processed: 1 +gpg: unchanged: 1 +``` + +## 部署依赖到stagingRepositories + +执行如下命令部署插件,中途会要求输入密钥的密码: + +`mvn clean deploy -P sonatype-oss-release` + +如果使用eclipse的mvn插件发布的话,配置如下: + +![eclipse](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2023010621594.png) + +如果发布成功,就可以到stagingRepositories([https://oss.sonatype.org/\#stagingRepositories](https://oss.sonatype.org/#stagingRepositories))中查看了。 + +## 发布到中央仓库 + +进入stagingRepositories查看发布好的构件,点击左侧的Staging +Repositories,一般最后一个就是刚刚发布的依赖,此时的构件状态为open。 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2023010621595.png) + +选中刚才发布的构件,并点击上方的Close–>Confirm,在下边的Activity选项卡中查看状态,当状态变成closed后,执行Release–>Confirm,并在下边的Activity选项卡中查看状态,成功后构件自动删除,一小段时间(约10分钟)后即可同步到maven的中央仓库,再过1-2个小时就可以搜索到该依赖了()。 + +## 其它问题 + +### 配置pom.xml时,为什么没有配置仓库的地址? + +为什么我只是在settings.xml中配置了id,又没有配置这个id对应的服务器地址,Maven是如果找到我想上传的服务器地址? + +还记的之前我们在pom.xml中配置的``节点么?这个节点中有如下内容: + +```xml + + + sonatype-nexus-snapshots + Sonatype Nexus Snapshots + ${sonatypeOssDistMgmtSnapshotsUrl} + + + sonatype-nexus-staging + Nexus Release Repository + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + +``` + +我们的项目相当于继承了这个配置,所以Maven根据我们在settings.xml中配置的id找到pom.xml中配置的url来上传依赖。 + +其实我们完全可以不配置``节点,而是根据实际需要自己配置对应的内容,只不过麻烦些,对新手不太友好。 + +### 我上传的依赖会自动签名么? + +会的,别忘了之前配置的``,里面有如下插件: + +```xml + + org.apache.maven.plugins + maven-gpg-plugin + 1.5 + + + verify + + sign + + + + +``` + +在执行`mvn clean deploy -P` +sonatype-oss-release时每次需要我们输入密钥的密码,比较麻烦,你可以在settings.xml或者pom.xml的做如下配置: + +```xml + + org.apache.maven.plugins + maven-gpg-plugin + 1.5 + + + verify + + sign + + + + +``` + +此时执行`mvn clean deploy -P +sonatype-oss-release`就不用输入密码了。但是此时文件中会有密码存储,不太安全,不推荐。建议随便配个字符串,然后在执行命令时覆盖: + +```bash +mvn clean deploy -P sonatype-oss-release -Darguments="gpg.passphrase=password" +``` + +安全和方便总是不可兼得,各取所需。 + +### 如何配置生成javadoc和sources? + +只要按照之前的章节配置了``节点,就不需要单独配置,因为已经继承了如下内容: + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2023010621596.png) + +如果不符合想要的效果,可以在pom.xml中覆盖修改。 + +### Snapshot/Staging/Release仓库的地址分别是什么? + +其中sonatype-nexus-snapshots和sonatype-nexus-staging仓库的地址可以在节点中查看: + +sonatype-nexus-snapshots: + + + +sonatype-nexus-staging: + + + +sonatype-nexus-release: + + + +### Maven怎么知道把我的依赖上传到哪个仓库? + +maven会根据模块的版本号中是否带有-SNAPSHOT来判断是快照版本还是正式版本。如果是快照版本,那么在mvn +deploy时会自动发布到快照版本库中,而使用快照版本的模块,在不更改版本号的情况下,直接编译打包时,maven会自动从镜像服务器上下载最新的快照版本。如果是正式发布版本,那么在mvn +deploy时会自动发布到正式版本库中,而使用正式版本的模块,在不更改版本号的情况下,编译打包时如果本地已经存在该版本的模块则不会主动去镜像服务器上下载。 + +所以,我们在开发阶段,可以将公用库的版本设置为快照版本,而被依赖组件则引用快照版本进行开发,在公用库的快照版本更新后,我们也不需要修改pom文件提示版本号来下载新的版本,直接mvn执行相关编译、打包命令即可重新下载最新的快照库了,从而也方便了我们进行开发。 + +### 每次发布,如果要切换发布仓库都要修改版本号,有没有办法简化? + +在pom.xml中做如下配置: + +```xml + com.github.jiangxincode + simian-maven-plugin + ${project.release.version} + maven-plugin + Simian Maven Plugin + https://github.com/jiangxincode/simian-maven-plugin + + 0.0.5-SNAPSHOT + + + + sonatype-oss-release + + 0.0.5 + + + +``` + +首先我们看到pom文件中version的定义是采用占位符的形式,这样的好处是可以根据不同的profile来替换版本信息。 + +如果在发布时使用mvn deploy -P sonatype-oss-release +的命令,那么会自动使用0.0.5作为发布版本,那么根据maven处理snapshot和release的规则,由于版本号后不带-SNAPSHOT故当成是正式发布版本,会被发布到release仓库; + +如果发布时使用mvn +deploy命令,那么就会使用默认的版本号0.0.5-SNAPSHOT,此时maven会认为是快照版本,会自动发布到快照版本库。 + +### 部署到snapshot仓库时,jar包会带上时间戳,怎么办? + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2023010621597.png) + +这没关系,maven会自动取相应版本最新的jar包; + +### 提交到release仓库是,报错怎么办? + +报错信息如下: + +```shell +Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy +(default-deploy) on project simian-maven-plugin: Failed to deploy artifacts: +Could not transfer artifact...from/to release... +``` + +这是因为elease的部署策略是【disable +redeploy】,不允许覆盖更新组件。修改一下版本号,再提交即可。 + +### 如何在Github项目中添加maven版本badge? + +如果你想达到下图的效果,只需要在README.md中添加如下内容,注意根据实际情况修改: + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2023010621598.png) + +[![Maven +Central](https://maven-badges.herokuapp.com/maven-central/com.github.jiangxincode/simian-maven-plugin/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.github.jiangxincode/simian-maven-plugin) + +### 如何上传非开源Jar包到Maven中央仓库 + +假设我们的groupId为com.github.jiangxincode,artifact为simian,版本为2.5.10。那么首先我们会有一个simian-2.5.10.jar,然后新建一个README文件和License文件,内容可以为空也可以根据实际情况填写,利用如下命令打包成simian-2.5.10-sources.jar: + +jar -cvf simian-2.5.10-javadoc.jar license.pdf README + +同理生成simian-2.5.10-sources.jar,那么我们现在有如下三个包了: + +simian-2.5.10.jar + +simian-2.5.10-sources.jar + +simian-2.5.10-javadoc.jar + +然后我们需要编辑一个pom文件,名称为simian-2.5.10.pom: + +```xml + + 4.0.0 + com.github.jiangxincode + simian + 2.5.10 + jar + Simian + Simian (Similarity Analyser) identifies duplication in Java, C#, C, C++, COBOL, Ruby, JSP, ASP, HTML, XML, Visual Basic, Groovy source code and even plain text files. In fact, simian can be used on any human readable files such as ini files, deployment descriptors, you name it. + http://www.harukizaemon.com/simian/index.html + + + Simian Software License Agreement + http://www.harukizaemon.com/simian/license.pdf + + + + git@harukizaemon.com:simian/simian-git.git + scm:git:git@harukizaemon.com:simian/simian-git.git + scm:git:git@harukizaemon.com:simian/simian-git.git + + + + haruki_zaemon + haruki_zaemon@mac.com + + + +``` + +以上pom文件根据实际内容填写,注意groupId,artifactId,version不能有错误,其次是packaging要填jar。scm节点中填写一个git地址,和代码没关系也行。 + +完成这一步后我们有四个文件分别为: + +* simian-2.5.10.jar +* simian-2.5.10-sources.jar +* simian-2.5.10-javadoc.jar +* simian-2.5.10.pom + +然后依次运行gpg命令签名这四个文件,以pom文件为例: + +```gpg -ab simian-2.5.10.pom``` + +然后会得到对应的asc文件,最后文件列表为 + +* simian-2.5.10.jar +* simian-2.5.10.jar.asc +* simian-2.5.10-sources.jar +* simian-2.5.10-sources.jar.asc +* simian-2.5.10-javadoc.jar +* simian-2.5.10-javadoc.jar.asc +* simian-2.5.10.pom +* simian-2.5.10.pom.asc + +接下来需要把八个文件打成一个bundle.jar,命令示例: + +```jar -cvf bundle.jar simian-2.5.10\*``` + +打开并登陆[https://oss.sonatype.org/\#welcome](https://oss.sonatype.org/#welcome),点击Staging +Upload选项 + +点击Staging Upload后,在Upload Mode后有个下拉选框,选择Artifact +bundle,然后select bundle,找到之前生成的bundle.jar,点击上传按钮。 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2023010621599.png) + +上传后会在上图的Staging +Repositories中有显示。之后的步骤就不在赘述了,和上传开源依赖是完全一样的。 + +## 参考内容 + +* Github开源Java项目(IJPay)上传到Maven Central +详细介绍: diff --git "a/_drafts/202301072207LaTeX\345\206\205\345\256\271\346\200\273\347\273\223.md" "b/_drafts/202301072207LaTeX\345\206\205\345\256\271\346\200\273\347\273\223.md" new file mode 100644 index 0000000..2d3b271 --- /dev/null +++ "b/_drafts/202301072207LaTeX\345\206\205\345\256\271\346\200\273\347\273\223.md" @@ -0,0 +1,153 @@ +# LaTeX内容总结 + +欢迎关注我的社交账号: + +邮箱: jiangxinnju@163.com +博客园地址: +GitHub地址: +知乎地址: + +## 心得 + +* TeX最好用的发行版就是`Tex Live`: +* Windows: `Tex Live` + `WinEdt/TexMaker`; Linux: `Tex Live` + `TexMaker` +* `TexWork`功能太少,`Sublime` + `LaTeXTools`太难用 +* `CTex`套装已经过时了,不要继续使用 + +## Ubuntu下搭建TeX环境 + +```shell +sudo apt-get install texlive-full +sudo apt get install texmaker +``` + +注:使用上述两条命令安装的Tex环境中已经包含了所有的常见宏包,包括xetex宏包、CJK宏包、ctex 宏包,xeCJK 宏包等。当然如果没有默认安装,可以: + +```shell + sudo apt-get install texlive-xetex + sudo apt-get install latex-cjk-all +``` + +安装目录:`/usr/share/` +目前如果使用xelatex进行编译,基本上已经能够处理所有的中文了,测试代码为: + +```TaLeX + \documentclass[12pt,dvipdfm]{article} + \usepackage{xeCJK}%根据自己的需要加载宏包。 + \setmainfont{方正黑体_GBK}% + \begin{document} +``` + +使用xelatex,处理中文不再困难。就是编译起来慢了点。如果缺少字体,则将字体复制到`~/.font/`下。对于原来的CJK方法,现在已经过时,不推荐使用,但如果测试,可以使用如下代码: + +```LaTeX +\documentclass[a4paper,12pt]{article} +\usepackage{CJK,indentfirst}%indenfirst宏包允许设置首行缩进 +\begin{document} +\begin{CJK*}{UTF8}{gbsn}%gbsn宋体gkai楷体 +......正文内容\\ +测试中文 +\end{CJK*} +\end{document} +``` + +xelatex使用可以在命令行中使用具体使用方法参考:`xelatex --help`。当然也可以在texmaker中使用xelatex,打开texmaker ,`Options/Configure Texmaker`,`Quick Build` 一栏中,选中`user`那一项,在命令里添加 +`xelatex -interaction=nonstopmode %.tex|`(命令最后有个“|”) +`Editor` 一栏中,`Editor Font Encoding` 选`UTF8` +使用texmaker的时候: +`F1(Quick Build )`是xelatex,`F2`是latex, `F6`是PDFLatex, `F7`是View PDF + +## 警告及错误处理 + +出现以下警告时为ctex等中文红包的引用不当(推测为引用的红包更新了,但是ctex没有修改),不需要处理 +![](http://images2015.cnblogs.com/blog/611264/201605/611264-20160521143147826-659839984.png) + +出现一下错误是因为font manager在~/文件夹中添加了.fong.conf文件,而这种添加方式已经被废弃了,可直接忽略,或者直接删除该文件,或者将font manager卸载掉 +![](http://images2015.cnblogs.com/blog/611264/201605/611264-20160521143205373-1911794757.png) + +## 警告解决 + +`Fontconfig warning: "/etc/fonts/conf.d/50-user.conf", line 9: reading configurations from ~/.fonts.conf is deprecated.` +尚未解决 + +## 使用moderncv制作中文简历 + +安装Tex Live后,下载的example目录,直接用WinEdit打开其中的template-zh.tex或者template-es.tex,编译选项为PDFLaTeX。 + +## WinEdt 和 Acrobat 程序关联 + +CTeX 套装 2.8 版本以后,也就是09年9月以后的版本加入了SumatraPDF程序,将PDF文件与Acrobat程序取消了关联,改用了SumatraPDF程序显示,也就是在WinEdt编辑器的面板上,点击“Acrobat Reader”按钮后用SumatraPDF程序打开关联的PDF文档,这可能涉及到版权啥的原因,在此就不多说了。 +我们可能还是习惯使用Acrobat程序查看和标记PDF文档,因此介绍一下如何在WinEdt编辑器中重设程序关联。 +比如说Acrobat程序安装在`C:\Program Files\Adobe\Acrobat 7.0` +打开WinEdt->左击菜单栏的`Options`->左击下拉菜单中的`Execution Modes`选项->在出现的跳出窗口中左击`Acrobat`子面板->左击`PDF Viewer Executable`选项的右侧文件夹图标,在弹出窗口中找到你的Acrobat程序,点击“打开”即可。完成后的显示路径就为`C:\Program Files\Adobe\Acrobat 7.0\Acrobat\Acrobat.exe`。 +左击`PDF Bin Folder`选项的右侧文件夹图标,在弹出窗口中找到你的Acrobat程序安装的文件夹,点击“打开”即可。完成后的显示路径就为`C:\Program Files\Adobe\Acrobat 7.0\Acrobat` 。 +`Auto-detect`前面的方框你可以选择是否打钩,如果打钩的话,选择好Acrobat程序安装的文件夹就可以自行检测PDF文件的查阅程序了。 +最后左击`OK`即可。 +上面例示的程序路径个人可能不一样,程序也不一定相同,有的是专业版/标准版/Reader版 等等,仅是示例作用! +这样以后你点击WinEdt编辑器的面板上的`Acrobat Reader`按钮后就用Acrobat程序打开关联的PDF文档了 + +## Cannot Open DDE Link to: "XXXX Acrobat. exe" + +WinEdt出现不能自动关闭pdf文件并再次自动生成的问题 `Cannot Open DDE Link to: "XXXX Acrobat. exe"`。主要是由于WinEdt自动识别的Adobe版本号和实际安装的版本号不符导致的问题。首先找到安装的Adobe Acrobat版本号,打开注册表编辑器:`HKEY_CLASSES_ROOT\acrobat\shell\open\ddeexec\application`来查看。之后打开 `Options menu -> Options Interface dialog -> Advanced Configuration -> PDF Macros -> Adobe Blues`: +在最后一行后面添加一行,并填入Adobe Acrobat的版本号(特别注意,添加的语句前面一定要先加一个空格,修改完要重启WinEdt) + +```LaTex +// Assign(!"Acro-DDE_Service",!"AcroviewR11"); +Assign(!"Acro-DDE_Service",!"AcroviewA18"); +``` + +## Latex WinEdt快捷键 + +Latex 快捷键: +自动换行:ctrl+w +【编辑】 +Alt+C:在剪贴板原有复制文本后增加新的被选择的文本 +Ctrl+Shift+Alt+Right/Left:对选中文本comment/uncomment +Shift+Enter:对当前单词进行拼写检查 +Alt+F12:对选中文本进行LaTeX语法检查(强烈推荐)。 +Ctrl+Shift+F12:对选中文本进行括号匹配检查。 +Ctrl+G:goto line +Ctrl+Shift+Backspace/Delete: Moving Ring Backward/Forward。 +选中整块添加注释: Left+Shift+Ctrl+Alt +选中整块删除注释: Right+Shift+Ctrl+Alt +【自动补全】 +补全LaTeX命令:Ctrl+Enter +补全环境:输入 +\begin{...}},补全\end{...} +;或输入\end{{。 +补全参考文献引用:输入\cite{}以后提示补全。若使用bibtex,要保证对应的bib文件 +已经在winedt中打开。 +【查找】 +Ctrl+F:查找 +Ctrl+I:incremental search +Ctrl+R:替换 +【编译预览】 +Ctrl+Shift+X:Texify (生成DVI文件) +Ctrl+Shift+L:LaTeX +Ctrl+Shift+B:编译bib文件 +Ctrl+Shift+C:编译选中的文本 +Ctrl+Shift+D:DVI-->PS +Ctrl+Shift+V:DVI预览 +Ctrl+Shift+G:GSView,查看PS文件 + +## WinEdt 中环境标识的自动补全 + +所谓“环境标识”是指类似于 + +```LaTeX + /begin{ itemize } + /end{ itemize } +``` + +这样的命令。在WinEdt中,输入完`/begin{ xxx }`后,不忙着按回车去写其它内容,紧接着最后的`}`后面,再输入一个`}`(也就是键入`/begin{ xxx } }`),这时WinEdt会自动将`/end{ xxx }`补上,同时将光标停在两者之间的空白行上,并且已经自动缩进,如下: + +```LaTeX + /begin{ xxx } + * + /end{ xxx } +``` + +其中*为光标位置(实际上也确实会显示一个*,但是已经选中,直接输入就会替换掉)。 +   +如果输入`/begin{ xxx }`时忘了这事儿,也没有关系,输入`/end`后,连续输入两个`{`,即`/end{ { `,WinEdt会自动匹配最近一个未匹配的`/begin{ xxx }`,并将其补全。这在环境标识嵌套时,特别有用。 +需要注意的是,以上两个功能,都没有拼写检查。也就是说,xxx的内容是任意的,即使你拼写错了,比如将itemize误写成itemizee,WinEdt还是会按你实际输入的补全,因为WinEdt并不能判断是你拼写错了,还是你定义了新的环境。 diff --git "a/_drafts/202301072208PDF\345\270\270\350\247\201\351\227\256\351\242\230\346\200\273\347\273\223.md" "b/_drafts/202301072208PDF\345\270\270\350\247\201\351\227\256\351\242\230\346\200\273\347\273\223.md" new file mode 100644 index 0000000..089ed65 --- /dev/null +++ "b/_drafts/202301072208PDF\345\270\270\350\247\201\351\227\256\351\242\230\346\200\273\347\273\223.md" @@ -0,0 +1,63 @@ +# PDF常见问题解决方案汇总 + +欢迎和大家交流技术相关问题: +邮箱: jiangxinnju@163.com +博客园地址: +GitHub地址: + +## Adobe Acrobat修改PDF文档,保存的时候报错“读取本文档时出现问题(135)” + +* 导出图片,然后再合并成PDF了。这种方法是可行的,但是缺点是书签就都没了,文字也因为变成图片格式而无法复制为文本了。 +* 直接导出PDF,但是试验了一下,此方法不可行。说缺少文件:`The file "PreflightLib.dll" is missing or corrupt` +* 另存为其他——优化的PDF——标准设置,对新的文档进行之前的修改即可。 +* 先随便找一个PDF文件(1.PDF)(可以先用一张图片转换成PDF,或者Word直接打印为PDF)。然后把需要保存的PDF文件和那个1.pdf一起选中,右键“在Acrobat中合并支持的文件...”。 然后保存为组合1.pdf。这个组合1已经能编辑自如了。把刚才的1.PDF的多余页面删除即可。此方法的优点是:保留了书签,而且保留了文本形式PDF上的文本的可复制性。 + +## Adobe Acrobat修改PDF文档,保存的时候报错:“读取本文档时出现问题(110)” + +1. 另存为其他——优化的PDF——标准设置,对新的文档进行之前的修改即可。 +2. 下载PDF-Viewer,然后用这个软件把问题文件打开,再把问题文件另存为自己随便取个名字的pdf文件。保存好后用之前的文件阅读器打开看看,基本上问题就解决了。最后记得把转存好的文件名字改回需要的名字。把原来的问题文件删除就OK了。 + +## 用Adobe Acrobat去除PDF文件的数字签名 + +今天遇到一个PDF,不但加了口令,还用了数字签名。口令很多工具都能对付,但是目前还真没什么工具能去除数字签名。我先把口令去了,现在可以复制内容,可以打印。但是由于数字签名还在,仍然无法进行修改、注释等操作。我尝试把这份文档再打印成PDF,这下数字签名倒是没有了,可原文件的书签也没了。又在网上看到有人说用“提取页面”也可以达到同样效果,但是也无法连书签一起提取。最后在网上找到一个解决方案: + +1. 创建一个只有一页的PDF,用Adobe Acrobat打开。 +2. 使用“文档->插入页面”,把有数字签名的文档插入到那一页后面。 +3. 使用“文档->删除页面”,删除第一页,然后保存文档。 + +## 用Adobe Acrobat批量删除PDF文件中各类水印、背景、文本等 + +下载的 PDF 文件经常被加入许多广告性质的水印等,影响阅读。其删除办法如下: + +1. `工具`-`页面`-`页眉和页脚`-`删除` +2. `工具`-`页面`-`背景`-`删除` +3. `工具`-`页面`-`水印`-`删除` +4. `工具`-`页面`-`Bates 编号`-`删除` +5. `工具`-`表单`-`清除表单` +6. `工具`-`保护`-`删除隐藏信息` +7. `工具`-`内容`-`编辑对象:删除选中对象`,或者有些对象在正文下层,需要先移开正文对象再删除 +8. 对于用以上方法仍删除的文本,用以下方法: + + 1. `工具`-`保护`-`搜索并删除文本`-`将选定结果标记密文` + 2. `工具`-`保护`-`应用密文` + 3. `工具`-`保护`-`删除隐藏信息` + 4. `工具`-`保护`-`整理文档` + +注:标记密文前,最好设置密文属性为无填充、100%透明:`工具`-`保护`-`密文属性` + +## 用Adobe Acrobat解决pdf页面大小不一致问题 + +`视图`-`工具`-`印刷制作`-`设置页面框`。在弹出的“设置页面框”视图里设置`固定大小:页面大小A4`(注:此处请按需设置)、`页面范围:所有页面`。然后点击“确定”。 + +## 使用Adobe Acrobat将PDF所有书签批量修改为“适合宽度”显示 + +注意:本文所述方法不能自动创建书签,仅仅是修改点击书签后的显示模式。 + +1. 使用Adobe Acrobat打开PDF文件,点击左侧书签栏,让书签栏获得焦点,按组合键Shift+*展开所有书签。 +2. 按组合键Ctrl+A选中所有书签,在任一书签上点击右键,选择“属性”菜单项,在弹出的“书签属性”对话框中,展开“选择动作”下拉框,选中“执行菜单项”。点击“添加…”按钮,在弹出的“菜单项”列表中选择“视图>缩放>适合宽度”,然后点击“确定”按钮返回“书签属性”对话框,再次点击“确定”按钮返回主界面。 +3. 按组合键Shift+/折叠所有书签。注意:组合键中的‘/’必须是数字小键盘上的除号,这意味着:如果您使用的笔记本没有数字小键盘,您需要外接一个带数字小键盘的完整键盘。 +4. 最后保存PDF文件的修改即可。 + +## 其它问题 + +* PDF to Word Converter: diff --git "a/_drafts/202301072210Doze\346\250\241\345\274\217\346\272\220\347\240\201\350\247\243\346\236\220.md" "b/_drafts/202301072210Doze\346\250\241\345\274\217\346\272\220\347\240\201\350\247\243\346\236\220.md" new file mode 100644 index 0000000..9ca9459 --- /dev/null +++ "b/_drafts/202301072210Doze\346\250\241\345\274\217\346\272\220\347\240\201\350\247\243\346\236\220.md" @@ -0,0 +1,11 @@ +## 同步发布平台 + +* 博客园: +* CSDN: +* 掘金: +* 知乎: + +**未经允许,谢绝转载** + +请先阅读谷歌官网对Doze的基础性介绍: 。本文代码分析基于Android R版本。 + diff --git "a/_drafts/202301072213Repo\345\256\236\350\267\265\346\214\207\345\215\227.md" "b/_drafts/202301072213Repo\345\256\236\350\267\265\346\214\207\345\215\227.md" new file mode 100644 index 0000000..b8e1531 --- /dev/null +++ "b/_drafts/202301072213Repo\345\256\236\350\267\265\346\214\207\345\215\227.md" @@ -0,0 +1,362 @@ +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2021021415101.jpeg) + +## 同步发布平台 + +* 博客园: +* CSDN: +* 掘金: +* 知乎: + +**未经允许,谢绝转载** + +## Repo简介 + +Android使用Git作为代码管理工具,开发了Gerrit进行代码审核以便更好的对代码进行集中式管理,还开发了Repo命令行工具,对Git命令进行封装,将几百个Git库有效的进行组织。Repo并不是用来取代Git,而是用Python对Git进行了一定的封装,简化了对多个Git版本库的管理。对应Repo管理的任何一个版本库,都需要使用Git命令进行操作。 + +## Repo工作流 + +下图是Repo工作流,大体分为如下几个核心步骤: + +1. 运行`repo init`,克隆Android的一个清单库。这个清单库是通过XML技术建立的版本库清单。清单库中的manifest.xml文件,列出了几百个版本库的克隆方式。包括版本库的地址和工作区地址的对应关系,以及分支的对应关系。 +2. 运行`repo sync`,分别克隆这几百个版本库到本地的工作区。 +3. 运行`repo start`创建并切换到本地工作分支。 +4. 本地修改代码,通过Git相关命令在某些项目中进行操作。 +5. 通过`repo upload`命令将代码修改发布到代码审核服务器。 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/1.png) + +## Repo引导脚本下载 + +在使用Repo前我们需要下载一个Repo引导脚本,Repo的核心功能不在其中,该引导脚本只是下载并加载完整Repo程序的工具。 + +```shell +mkdir ~/bin +PATH=~/bin:$PATH +curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo +chmod a+x ~/bin/repo +``` + +这里需要提到一点的是早期的Repo引导脚本是一个Shell脚本,第一行就是`#!/bin/sh`,然后通过以下代码完成Shell向Python的转换,不过在较新版本中都是直接使用Python,第一行变成了`#!/usr/bin/env python`。现在网络上的很多介绍都过时了。 + +```shell +magic='--calling-python-from-/bin/sh--' +"""exec" python -E "$0" "$@" """#$magic" +``` + +## Repo清单库介绍 + +一个清单库可以包含多个清单文件和多个分支,每个清单文件和分支都有对应的版本。清单文件以XML格式组织。举个例子: + +```shell +repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-11.0.0_r27 +``` + +```xml + + + + + + + + + + + + + + + + + ... + +``` + +* remote元素,定义了名为aosp的远程版本库,其库的基址为,还定义了代码审核服务器的地址。当然,还可以定义更多的remote元素。 +* default元素,设置各个项目默认远程版本库为aosp,默认的的分支为`refs/tags/android-11.0.0_r27`。当然各个project元素还可以定义自己的remote和revision覆盖默认的配置。 +* project元素,用于定义一个项目,path属性表示在工作区克隆的位置,name属性表示该项目的远程版本库的相对路径。 +* project元素的子元素copyfile,定义了项目克隆后的一个附件动作,从src拷贝文件到dest。 + +## 通过Repo下载AOSP系统源码 + +现在你可以通过Repo下载AOSP源码了,但是由于墙的原因,我们没有办法直接下载,需要通过一些AOSP镜像,其中使用比较多的是清华的镜像,具体下载方式请参考官方介绍: + +### Repo下载AOSP过程中可能遇到的问题 + +1. 某些project找不到: + +```shell +... +Checking out projects: 58% (432/733) platform/frameworks/hardware/interfaceserror: Cannot checkout platform/frameworks/layoutlib: ManifestInvalidRevisionError: revision refs/tags/android-10.0.0_r47 in platform/frameworks/layoutlib not found +error: in `sync -c -j4`: revision refs/tags/android-10.0.0_r47 in platform/frameworks/layoutlib not found +``` + +这个问题我一直没有找到根因,可能是镜像的问题,也可能是网络的问题。解决方式发现哪个project找不到就单独同步该项目,然后再整体同步。 + +```shell +repo sync -c platform/frameworks/layoutlib +repo sync -c -j4 +``` + +## Repo常用指令 + +Repo子命令实际上是Git命令的封装。每一个Repo子命令都对应于repo源码树中subcmds目录下的一个同名的Python文件。每一个repo子命令都可以通过下面的命令获得帮助。 + +```shell +repo help +``` + +当然你也可以参考Repo官方的介绍: + +### repo init + +```shell +repo init –u URL [OPTIONS] +``` + +常用参数如下,其它参数通过repo help init查询: + +* -u(--manifest-url):设定清单库的Git服务器地址 +* -m(--manifest-name):当有多个清单文件时,指定清单库中的某个清单为有效的清单文件。默认为default.xml +* -b(--manifest-branch):选择一个maniest仓库中的一个特殊的分支 + +命令repo init 要完成如下操作: + +* 完成repo工具的完整下载,执行的Repo脚本只是引导程序 +* 克隆清单库manifest.git (地址来自于-u 参数) +* 克隆的清单库位于manifest.git中,克隆到本地`.repo/manifests`。在之前的Repo版本中清单`.repo/manifest.xml`只是符号链接,它指向`.repo/manifests/default.xml`。在目前的repo版本中清单`.repo/manifest.xml`是一个实际的文件,通过include的方式引用`.repo/manifests/default.xml` +* 如果`.repo/manifests`中有多个xml文件,`repo init`可以任意选择其中一个,默认选择是default.xml +* 在`.repo/manifests`中执行`git branch -a | cut -d / -f 3`可以查看本地存放的已有的所有分支信息,但是该信息只是同步到你上次下载时的信息,如果需要最新信息需要先在该目录中执行`git pull`操作。 + +```shell +repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-11.0.0_r27 # 在当前目录出现了.repo文件夹 +repo init -u git://192.168.0.125/manifest.git –m android.xml # 选择的是android.xml里面的配置,.repo/manifest.xml便指向.repo/manifests/android.xml +``` + +### repo sync + +```shell +repo sync […] +``` + +用于参照清单文件`.repo/manifest.xml`克隆并同步版本库。如果某个项目版本库尚不存在,则执行repo sync 命令相当于执行git clone,如果项目版本库已经存在,则相当于执行下面的两条指令: + +```shell +git remote update # 相当于对每一个remote源执行了fetch操作 +git rebase origin/branch # 针对当前分支的跟踪分支执行rebase操作 +``` + +如果直接执行`repo sync`会同步所有project,如果后面指定project则只会同步指定的project。如`repo sync platform/build`。 + +### repo rebase + +### repo smartsync + +可以通过一些选项设置同步的方式,比如是否在遇到第一个错误的时候就停止,是否强制删除含有未提交修改的项目等等。 + +### repo start + +```shell +repo start [--all | …] +``` + +刚克隆下来的代码是没有分支的,`repo start`实际是对`git checkout –b`命令的封装。为指定的项目或所有项目(若使用—all参数),以清单文件中为设定的分支,创建特性分支。这条指令与`git checkout –b`还是有很大的区别的,`git checkout –b`是在当前所在的分支的基础上创建特性分支,而`repo start`是在清单文件设定分支的基础上创建特性分支。 + +```shell +repo start stable --all # 假设清单文件中设定的分支是gingerbread-exdroid-stable,那么执行以上指令就是对所有项目,在gingerbread-exdroid-stable的基础上创建特性分支stable +repo start stable platform/build platform/bionic # 假设清单文件中设定的分支是gingerbread-exdroid-stable,那么执行以上指令就是对platform/build、platform/bionic项目,在gingerbread-exdroid-stable的基础上创建特性分支stable +``` + +### repo checkout + +```shell +repo checkout […] +``` + +实际上是对`git checkout`命令的封装,检出之前由`repo start`创建的分支。但不能带-b参数,所以不能用此命令来创建特性分支。 + +```shell +repo checkout aosp-dev +repo checkout aosp-dev platform/build platform/bionic +``` + +### repo branches + +读取各个项目的分支列表并汇总显示。该命令实际上通过直接读取`.git/refs`目录下的引用来获取分支列表,以及分支的发布状态等。 + +```shell +repo branches […] +``` + +```shell +repo branches +repo branches platform/build platform/bionic +``` + +### repo diff + +```shell +repo diff […] +``` + +实际是对git diff 命令的封装,用于分别显示各个项目工作区下的文件差异。 + +```shell +repo diff # 查看所有项目 +repo diff platform/build platform/bionic # 只查看其中两个项目 +``` + +### repo stage + +实际是对`git add --interactive`命令的封装、用于挑选各个项目工作区中的改动以加入暂存区。 + +```shell +repo stage -i […] +``` + +-i代表`git add --interactive`命令中的`--interactive`,给出个界面供用户选择。 + +### repo prune + +实际上是对`git branch –d`命令的封装,该命令用于扫面项目的各个分支,并删除已经合并的分支,用法如下: + +```shell +repo prune […] +``` + +### repo abandon + +实际上是对`git branch –D`命令的封装,用法如下: + +```shell +repo abandon […] +``` + +### repo status + +实际上是对`git diff-index`、`git diff-filse`命令的封装,同时显示暂存区的状态和本地文件修改的状态 + +```shell +repo status platform/bionic +``` + +以上的实例输出显示了platform/bionic项目分支的修改状态 + +* 每个小节的首行显示羡慕名称,以及所在分支的名称 +* 第一个字母表示暂存区的文件修改状态 + * -:没有改变 + * A:添加(不在HEAD中,在暂存区中) + * M:修改(在HEAD中,在暂存区中,内容不同) + * D:删除(在HEAD中,不在暂存区) + * R:重命名(不在HEAD中,在暂存区,路径修改) + * C:拷贝(不在HEAD中,在暂存区,从其他文件拷贝) + * T:文件状态改变(在HEAD中,在暂存区,内容相同) + * U:未合并,需要冲突解决 +* 第二个字母表示工作区文件的更改状态 + * -:新/未知(不在暂存区,在工作区) + * m:修改(在暂存区,在工作区,被修改) + * d:删除(在暂存区,不在工作区) +* 两个表示状态的字母后面,显示文件名信息。如果有文件重名还会显示改变前后的文件名及文件的相似度 + +### repo remote + +```shell +repo remote add […] +repo remote rm […] +``` + +```shell +repo remote add origin_1 ssh://192.168.0.125/git_repo # 这个指令是根据xml文件添加的远程分支,方便于向服务器提交代码,执行之后的build目录下看到新的远程分支org +repo remote rm origin_1 # 删除远程仓库 +``` + +### repo push + +```shell +repo push [--all |…] +``` + +这是新添加的指令,用于向服务器提交代码,repo会自己查询需要向服务器提交的项目并提示用户。 + +```shell +repo push org +``` + +### repo forall + +```shell +repo forall […] –c +``` + +迭代器,可以在所有指定的项目中执行同一个shell指令 + +* -c:后面所带的参数着是shell指令 +* -p:在shell指令输出之前列出项目名称 +* -v:列出执行shell指令输出的错误信息 + +额外的环境变量: + +* REPO_PROJECT:指定项目的名称 +* REPO_PATH:指定项目在工作区的相对路径 +* REPO_REMOTE:指定项目远程仓库的名称 +* REPO_LREV:指定项目最后一次提交服务器仓库对应的哈希值 +* REPO_RREV:指定项目在克隆时的指定分支,manifest里的revision属性 + + 另外,如果-c后面所带的shell指令中有上述环境变量,则需要用单引号把shell指令括起来。 + +```shell +repo forall -c 'echo $REPO_PROJECT' # 输出项目的名称 +repo forall -p -c git merge aosp-my-dev # 把所有项目多切换到master分支,该指令将会把aosp-my-dev分支合并到master分支 +repo forall -c git tag aosp-mytag-1.0 # 在所有项目下打标签 +repo forall -c 'git remote add origin_1 ssh://jiangxin@192.168.0.125/$REPO_PROJECT.git' # 引用环境变量REPO_PROJECT添加远程仓库 +repo forall -c git remote add origin_1 # 删除远程仓库 +repo forall –c git branch aosp-dev # 切换分支 +repo forall –c git checkout –b aosp-dev # 创建分支 +repo forall -c git reset --hard # 当repo sync时如果提示discarding xx commits时可以通过该命令废弃所有提交,然后继续repo sync +``` + +### repo grep + +相当于对git grep 的封装,用于在项目文件中进行内容查找。 + +### repo manifest + +显示manifest文件内容,可以通过-o参数输出到指定的文件中。 + +```shell +repo manifest –o android.xml +``` + +### repo version + +显示Repo的版本号,还会同时显示Git/Python等依赖的应用版本。 + +### repo upload + +repo upload相当于git push,但是又有很大的不同。它不是将版本库改动推送到克隆时的远程服务器,而是推送到代码审核服务器(Gerrit软件架设)的特殊引用上,使用SSH协议。代码审核服务器会对推送的提交进行特殊处理,将新的提交显示为一个待审核的修改集,并进入代码审查流程,只有当审核通过后,才会合并到官方正式的版本库中。 + +```shell +repo upload [--re --cc] {[]… | --replace } +``` + +* -h, --help:显示帮助信息 +* -t:发送本地分支名称到Gerrit代码审核服务器 +* --replace:发送此分支的更新补丁集 +* --re=REVIEWERS:要求指定的人员进行审核 +* --cc=CC:同时发送通知到如下邮件地址 + +### repo download + +主要用于代码审核者下载和评估贡献者提交的修订。 + +```shell +repo download {project change [patchset]}… +``` + +### repo selfupdate + +用于repo自身的更新 diff --git "a/_drafts/202301072215\345\260\206AOSP\346\272\220\347\240\201\345\257\274\345\205\245\345\210\260Android Studio\350\277\233\350\241\214\346\237\245\347\234\213.md" "b/_drafts/202301072215\345\260\206AOSP\346\272\220\347\240\201\345\257\274\345\205\245\345\210\260Android Studio\350\277\233\350\241\214\346\237\245\347\234\213.md" new file mode 100644 index 0000000..e94d882 --- /dev/null +++ "b/_drafts/202301072215\345\260\206AOSP\346\272\220\347\240\201\345\257\274\345\205\245\345\210\260Android Studio\350\277\233\350\241\214\346\237\245\347\234\213.md" @@ -0,0 +1,69 @@ +# 将AOSP源码导入到Android Studio进行查看 + +## 生成iml和ipr文件 + +```shell +source build/envsetup.sh +lunch aosp_x86-eng +make idegen +development/tools/idegen/idegen.sh +``` + +说明: + +1. 执行`source build/envsetup.sh`和`./build/envsetup.sh`是一样的。 +2. 可以直接执行`lunch aosp_x86-eng`直接根据传入参数进行构建,也可以输入`lunch`根据提示选择对应的target。 +3. 执行完`lunch`命令后直接执行`make idegen`即可,有些教程说需要先执行`make`命令,这是不需要的,我们只需要构建`idegen`模块,不需要构建所有模块。后者要花费很长时间,而且对机器性能要求很高。命令执行过程中有些提示选项,如果没有报错导致中断,可以暂时忽略。有的教程使用`mmm development/tools/idegen/`代替`make idegen`,他们的功能是类似的。 +4. 执行`development/tools/idegen/idegen.sh`,可能会提示权限相关问题,如果没有中断程序可以暂时忽略,有的教程建议增加`sudo`前缀提升命令执行权限,这里不推荐,因为之前如果`source build/envsetup.sh`是以普通用户执行的,所有的构建环境都是以普通用户为前提的,提升权限可能会导致问题,比如`java: 未找到命令` +5. 以上命令成功执行后会在根目录生成`android.iml`/`android.ipr`,两个文件。 + +## 将代码导入到Android Studio + +绝大部分人的AOSP源码是放置到远程Linux机器上的,如果本地机和远程机间网络带宽很高,可以直接通过Samba服务器在本地机中访问远程机的AOSP源码,或者通过VNC Viewer/VNC Client的方式在远程机上安装AS。网络不是很好可以选择在本地机上创建一个目录,然后把`android.iml`/`android.ipr`以及需要查看的AOSP源码目录同步到该目录中,同步方式有很多,比如FTP/rsync等。 + +如果使用rsync进行同步,可以参考以下命令: + +```shell +rsync -az --progress --delete --exclude=".git" ${USER_NAME}@${IP}:/${REMOTE_DIR} ${LOCAL_DIR} +``` + +比如: + +```shell +rsync -az --progress --delete --exclude=".git" jiangxin@192.168.1.181:/home/jiangxin/aosp/frameworks /drives/d/aosp/ +``` + +如果使用FTP命令,由于文件数目较多,直接下载或者上传目录耗时比较长,可以考虑使用`tar`将需要的文件和目录打包,然后再进行同步。 + +我选择的是把`android.iml`/`android.ipr`以及`frameworks`目录同步到本地。打开Android Studio,`Open an Existed Project`,选择`android.ipr`,导入时间根据机器性能以及源码规模相关,可能比较长。 + +* `android.iml`文件中有目录的配置,如果打开整个工程非常慢,可以把里面无关的目录删除或者改到excludeFolder中。 +* 如果代码跳转到jar包的反编译文件中而不是导入的源码中,可以`File->Project Structure->Project Settings->Moudules->Dependencies`,把`Module source`调整到最顶端(Alt+Up)。 +* Android Studio默认只能打开10个代码文件,且文件打开多了以后显示不开的文件还会被隐藏,需要点击最右边的箭头才能查看。而最致命的是,如果不小心修改了某个文件,在标签页上,不会有任何的提示。`File->Settings->Editor->General->Editor Tabs`根据自己的习惯进行配置。 +* Android Studio只支持Java代码,C++代码只有最基础的着色功能。 +* 如果想要支持断点调试,按照如下步骤操作: + * `File->Project Structure->Project Settings->Project->Project SDK`,选择`Android API .. Platform` + * `Run->Edit Configurations->Add New Configuration->Android App`,然后直接保存。 + * 此时可以使用Attach To Process进行调试。调试要注意源码和手机版本匹配。service相关代码需要attach到system_process进程。 + +## 另一种利用Android Studio查看AOSP源码的方式 + +还有另一种不需要`android.iml`/`android.ipr`就可以查看AOSP源码的方式: + +1. 使用Android Studio创建一个简单的demo工程,确保编译通过。 +2. 在`app/build.gradle`文件的`android`节点下增加如下配置,其中路径是自己想查看的AOSP源码路径,可以是本地路径也可以是远程路径: + +```gradle + sourceSets { + main.java.srcDirs += 'D:\\Code\\sync\\android-11.0.0_r27\\frameworks\\base\\services\\core\\java' + main.resources.srcDirs += 'D:\\Code\\sync\\android-11.0.0_r27\\frameworks\\base\\core\\res\\res' + } +``` + +当然这种方式如果在自己想要查看的路径比较多时,自己手工配置路径会比较麻烦。 + +## 参考资料 + +* Android Studio导入整个Android系统源码: +* 使用Android Studio导入Android系统源码: +* AndroidStudio工程导入部分Android源码: diff --git "a/_drafts/202301072303Java Swing TreeTable\346\240\267\344\276\213\346\214\207\345\257\274.md" "b/_drafts/202301072303Java Swing TreeTable\346\240\267\344\276\213\346\214\207\345\257\274.md" new file mode 100644 index 0000000..d33b36b --- /dev/null +++ "b/_drafts/202301072303Java Swing TreeTable\346\240\267\344\276\213\346\214\207\345\257\274.md" @@ -0,0 +1,663 @@ +# Java Swing TreeTable样例指导 + +如何在Java中使用TreeTable本身就是一个主题。在各种GUI库中,我们一般都是假设这种组件是现成的。但是很不幸,在Java Swing这个GUI框架中并没有一个现成的TreeTable控件。但是我们仍然可以创建一个自定义控件,来模拟TreeTable。在接下来的教程中,我们使用一个样例来说明如何做到这一点。 + +在Oracle的网站上(之前是Sun的网站),Philip Milne曾经写过的一个教我们如何创建一个TreeTable控件的样例教程。很可能是因为这些代码太过于老旧的缘故,我们会感觉到源码中包含了一些现在来看并不需要的"hacks"。除此之外,这个样例中内置了很多功能,这些功能掩盖了TreeTable的本质特征。为了让样例代码更容易理解,我删除了一些非必要代码,方便大家理解,同时尽量展现出TreeTable组件的本质。 + +下面两张图是样例完成后的效果截图,其中一个在Windows平台,另一个在Windows平台。 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2023010723031.png) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2023010723032.png) + +下面的示意图展示了TreeTable的类结构。基于这个示意图,我们会用后面的一些图例详细解释TreeTable是如何进行组织的。所有来自于JDK的类都用渐变色背景,新建的类则使用纯色背景,同时这些新建的类都是以'My'开头的。 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2023010723033.png) + +首先,我们创建一个`MyTreeTableModel`接口,该接口继承于`TreeModel`接口。通过扩展我们可以让一个节点拥有多个列元素。使用的时候我们一般这样声明:`TreeModel MyTreeTableModel` + +```java +package de.hameister.treetable; +  +import javax.swing.tree.TreeModel; +  +public interface MyTreeTableModel extends TreeModel { +  +  +    /** +     * Returns the number of available columns. +     * @return Number of Columns +     */ +    public int getColumnCount(); +  +    /** +     * Returns the column name. +     * @param column Column number +     * @return Column name +     */ +    public String getColumnName(int column); +  +  +    /** +     * Returns the type (class) of a column. +     * @param column Column number +     * @return Class +     */ +    public Class getColumnClass(int column); +  +    /** +     * Returns the value of a node in a column. +     * @param node Node +     * @param column Column number +     * @return Value of the node in the column +     */ +    public Object getValueAt(Object node, int column); +  +  +    /** +     * Check if a cell of a node in one column is editable. +     * @param node Node +     * @param column Column number +     * @return true/false +     */ +    public boolean isCellEditable(Object node, int column); +  +    /** +     * Sets a value for a node in one column. +     * @param aValue New value +     * @param node Node +     * @param column Column number +     */ +    public void setValueAt(Object aValue, Object node, int column); +} +``` + +接下来,我们创建一个抽象类`MyAbstractTreeTableModel`来继承`MyTreeTableModel`。在该类中,我们保存根节点,同时提供一个方法来检查是否存在子节点,并且该类还负责管理所有的`EventListener`。`EventListener`可以确保当数据模型结构发生变化时会传递到树状结构,并被正确的显示。使用的时候我们一般这样声明:`MyTreeTableModel MyAbstractTreeTableModel` + +```java +package de.hameister.treetable; +  +import javax.swing.event.EventListenerList; +import javax.swing.event.TreeModelEvent; +import javax.swing.event.TreeModelListener; +import javax.swing.tree.TreePath; +  +public abstract class MyAbstractTreeTableModel implements MyTreeTableModel { +    protected Object root; +    protected EventListenerList listenerList = new EventListenerList(); +  +    private static final int CHANGED = 0; +    private static final int INSERTED = 1; +    private static final int REMOVED = 2; +    private static final int STRUCTURE_CHANGED = 3; +  +    public MyAbstractTreeTableModel(Object root) { +        this.root = root; +    } +  +    public Object getRoot() { +        return root; +    } +  +    public boolean isLeaf(Object node) { +        return getChildCount(node) == 0; +    } +  +    public void valueForPathChanged(TreePath path, Object newValue) { +    } +  +    /** +     * Die Methode wird normalerweise nicht aufgerufen. +     */ +    public int getIndexOfChild(Object parent, Object child) { +        return 0; +    } +  +    public void addTreeModelListener(TreeModelListener l) { +        listenerList.add(TreeModelListener.class, l); +    } +  +    public void removeTreeModelListener(TreeModelListener l) { +        listenerList.remove(TreeModelListener.class, l); +    } +  +    private void fireTreeNode(int changeType, Object source, Object[] path, int[] childIndices, Object[] children) { +        Object[] listeners = listenerList.getListenerList(); +        TreeModelEvent e = new TreeModelEvent(source, path, childIndices, children); +        for (int i = listeners.length - 2; i >= 0; i -= 2) { +            if (listeners[i] == TreeModelListener.class) { +  +                switch (changeType) { +                case CHANGED: +                    ((TreeModelListener) listeners[i + 1]).treeNodesChanged(e); +                    break; +                case INSERTED: +                    ((TreeModelListener) listeners[i + 1]).treeNodesInserted(e); +                    break; +                case REMOVED: +                    ((TreeModelListener) listeners[i + 1]).treeNodesRemoved(e); +                    break; +                case STRUCTURE_CHANGED: +                    ((TreeModelListener) listeners[i + 1]).treeStructureChanged(e); +                    break; +                default: +                    break; +                } +  +            } +        } +    } +  +    protected void fireTreeNodesChanged(Object source, Object[] path, int[] childIndices, Object[] children) { +        fireTreeNode(CHANGED, source, path, childIndices, children); +    } +  +    protected void fireTreeNodesInserted(Object source, Object[] path, int[] childIndices, Object[] children) { +        fireTreeNode(INSERTED, source, path, childIndices, children); +    } +  +    protected void fireTreeNodesRemoved(Object source, Object[] path, int[] childIndices, Object[] children) { +        fireTreeNode(REMOVED, source, path, childIndices, children); +    } +  +    protected void fireTreeStructureChanged(Object source, Object[] path, int[] childIndices, Object[] children) { +        fireTreeNode(STRUCTURE_CHANGED, source, path, childIndices, children); +    } +  +} +``` + +下面的类定义了视图的具体数据模型。意味着该类定义了每个数据列,以及它们对应的数据类型。同时该类还实现了接口中尚未被实现的方法。 + +```java +package de.hameister.treetable; +  +import java.util.Date; +  +public class MyDataModel extends MyAbstractTreeTableModel { +    // Spalten Name. +    static protected String[] columnNames = { "Knotentext", "String", "Datum", "Integer" }; +  +    // Spalten Typen. +    static protected Class[] columnTypes = { MyTreeTableModel.class, String.class, Date.class, Integer.class }; +  +    public MyDataModel(MyDataNode rootNode) { +        super(rootNode); +        root = rootNode; +    } +  +    public Object getChild(Object parent, int index) { +        return ((MyDataNode) parent).getChildren().get(index); +    } +  +  +    public int getChildCount(Object parent) { +        return ((MyDataNode) parent).getChildren().size(); +    } +  +  +    public int getColumnCount() { +        return columnNames.length; +    } +  +  +    public String getColumnName(int column) { +        return columnNames[column]; +    } +  +  +    public Class getColumnClass(int column) { +        return columnTypes[column]; +    } +  +    public Object getValueAt(Object node, int column) { +        switch (column) { +        case 0: +            return ((MyDataNode) node).getName(); +        case 1: +            return ((MyDataNode) node).getCapital(); +        case 2: +            return ((MyDataNode) node).getDeclared(); +        case 3: +            return ((MyDataNode) node).getArea(); +        default: +            break; +        } +        return null; +    } +  +    public boolean isCellEditable(Object node, int column) { +        return true; // Important to activate TreeExpandListener +    } +  +    public void setValueAt(Object aValue, Object node, int column) { +    } +  +} +``` + +下面的类是一个简单的值对象,通过一些get/set方法保存数据节点。 + +```java +package de.hameister.treetable; +  +import java.util.Collections; +import java.util.Date; +import java.util.List; +  +public class MyDataNode { +  +    private String name; +    private String capital; +    private Date declared; +    private Integer area; +  +    private List children; +  +    public MyDataNode(String name, String capital, Date declared, Integer area, List children) { +        this.name = name; +        this.capital = capital; +        this.declared = declared; +        this.area = area; +        this.children = children; +  +        if (this.children == null) { +            this.children = Collections.emptyList(); +        } +    } +  +    public String getName() { +        return name; +    } +  +    public String getCapital() { +        return capital; +    } +  +    public Date getDeclared() { +        return declared; +    } +  +    public Integer getArea() { +        return area; +    } +  +    public List getChildren() { +        return children; +    } +  +    /** +     * Knotentext vom JTree. +     */ +    public String toString() { +        return name; +    } +} +``` + +到此为止,数据模型部分已经准备完毕。在main方法所在的类中,我们可以创建包含节点的数据模型了。负责呈现界面的类将会在后面进行描述。在实际是使用过程中,数据结构不会在开始就通过一个方法就完整的创建出来,大部分场景下是需要在运行过程中通过数据库获取这些数据。 + +```java +package de.hameister.treetable; +  +import java.awt.Container; +import java.awt.GridLayout; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +  +import javax.swing.JFrame; +import javax.swing.JScrollPane; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +  +public class TreeTableMain extends JFrame { +  +  +    public TreeTableMain() { +        super("Tree Table Demo"); +  +        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); +  +        setLayout(new GridLayout(0, 1)); +  +        MyAbstractTreeTableModel treeTableModel = new MyDataModel(createDataStructure()); +  +        MyTreeTable myTreeTable = new MyTreeTable(treeTableModel); +  +        Container cPane = getContentPane(); +  +        cPane.add(new JScrollPane(myTreeTable)); +  +        setSize(1000, 800); +        setLocationRelativeTo(null); +  +  +    } +  +  +    private static MyDataNode createDataStructure() { +        List children1 = new ArrayList(); +        children1.add(new MyDataNode("N12", "C12", new Date(), Integer.valueOf(50), null)); +        children1.add(new MyDataNode("N13", "C13", new Date(), Integer.valueOf(60), null)); +        children1.add(new MyDataNode("N14", "C14", new Date(), Integer.valueOf(70), null)); +        children1.add(new MyDataNode("N15", "C15", new Date(), Integer.valueOf(80), null)); +  +        List children2 = new ArrayList(); +        children2.add(new MyDataNode("N12", "C12", new Date(), Integer.valueOf(10), null)); +        children2.add(new MyDataNode("N13", "C13", new Date(), Integer.valueOf(20), children1)); +        children2.add(new MyDataNode("N14", "C14", new Date(), Integer.valueOf(30), null)); +        children2.add(new MyDataNode("N15", "C15", new Date(), Integer.valueOf(40), null)); +  +        List rootNodes = new ArrayList(); +        rootNodes.add(new MyDataNode("N1", "C1", new Date(), Integer.valueOf(10), children2)); +        rootNodes.add(new MyDataNode("N2", "C2", new Date(), Integer.valueOf(10), children1)); +        rootNodes.add(new MyDataNode("N3", "C3", new Date(), Integer.valueOf(10), children2)); +        rootNodes.add(new MyDataNode("N4", "C4", new Date(), Integer.valueOf(10), children1)); +        rootNodes.add(new MyDataNode("N5", "C5", new Date(), Integer.valueOf(10), children1)); +        rootNodes.add(new MyDataNode("N6", "C6", new Date(), Integer.valueOf(10), children1)); +        rootNodes.add(new MyDataNode("N7", "C7", new Date(), Integer.valueOf(10), children1)); +        rootNodes.add(new MyDataNode("N8", "C8", new Date(), Integer.valueOf(10), children1)); +        rootNodes.add(new MyDataNode("N9", "C9", new Date(), Integer.valueOf(10), children1)); +        rootNodes.add(new MyDataNode("N10", "C10", new Date(), Integer.valueOf(10), children1)); +        rootNodes.add(new MyDataNode("N11", "C11", new Date(), Integer.valueOf(10), children1)); +        rootNodes.add(new MyDataNode("N12", "C7", new Date(), Integer.valueOf(10), children1)); +        rootNodes.add(new MyDataNode("N13", "C8", new Date(), Integer.valueOf(10), children1)); +        rootNodes.add(new MyDataNode("N14", "C9", new Date(), Integer.valueOf(10), children1)); +        rootNodes.add(new MyDataNode("N15", "C10", new Date(), Integer.valueOf(10), children1)); +        rootNodes.add(new MyDataNode("N16", "C11", new Date(), Integer.valueOf(10), children1)); +        MyDataNode root = new MyDataNode("R1", "R1", new Date(), Integer.valueOf(10), rootNodes); +  +        return root; +    } +  +    public static void main(final String[] args) { +        Runnable gui = new Runnable() { +  +            public void run() { +                try { +                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); +                } catch (Exception e) { +                    e.printStackTrace(); +                } +                new TreeTableMain().setVisible(true); +            } +        }; +        SwingUtilities.invokeLater(gui); +    } +} +``` + +因为TreeTable组件是由JTree组件和JTable组件组合而成, +Since the TreeTable is composed of a JTree component and a JTable component, it must be ensured that a continuous row is always marked when selecting the tree or table. To ensure this, create a class that extends the DefaultTreeSelectionModel. This SelectionModel is later assigned to the JTree and the JTable. MyTreeTableSelectionModel + +```java +package de.hameister.treetable; +  +import javax.swing.ListSelectionModel; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; +import javax.swing.tree.DefaultTreeSelectionModel; +  +public class MyTreeTableSelectionModel extends DefaultTreeSelectionModel { +  +    public MyTreeTableSelectionModel() { +        super(); +  +        getListSelectionModel().addListSelectionListener(new ListSelectionListener() { +            @Override +            public void valueChanged(ListSelectionEvent e) { +  +            } +        }); +    } +  +    ListSelectionModel getListSelectionModel() { +        return listSelectionModel; +    } +} +``` + +To enable the opening of the tree, you need a . That's why you create a class that extends and implements the interface. The only function of the class is to forward a double click to the tree. The method checks whether the first column () has been clicked. If this is the case, a double click is forwarded to the so that they can react. AbstractCellEditorMyTreeTableCellEditorAbstractCellEditorTableCellEditorMyTreeTableCellEditorisCellEditablecolumn1treeExpansionListener + +```java +package de.hameister.treetable; +  +import java.awt.Component; +import java.awt.event.MouseEvent; +import java.util.EventObject; +  +import javax.swing.AbstractCellEditor; +import javax.swing.JTable; +import javax.swing.JTree; +import javax.swing.table.TableCellEditor; +  +public class MyTreeTableCellEditor extends AbstractCellEditor implements TableCellEditor { +  +    private JTree tree; +    private JTable table; +  +    public MyTreeTableCellEditor(JTree tree, JTable table) { +        this.tree = tree; +        this.table = table; +    } +  +    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int r, int c) { +        return tree; +    } +  +    public boolean isCellEditable(EventObject e) { +        if (e instanceof MouseEvent) { +            int colunm1 = 0; +            MouseEvent me = (MouseEvent) e; +            int doubleClick = 2; +            MouseEvent newME = new MouseEvent(tree, me.getID(), me.getWhen(), me.getModifiers(), me.getX() - table.getCellRect(0, colunm1, true).x, me.getY(), doubleClick, me.isPopupTrigger()); +            tree.dispatchEvent(newME); +        } +        return false; +    } +  +    @Override +    public Object getCellEditorValue() { +        return null; +    } +  +} +``` + +Since in Java Swing the GUI components still required a Model, which is unlike the actual data model, a class , which inherits from , is now created. This class is later used in the class as a model for the . If the TreeTable later asks for values to be displayed, it must be distinguished whether the requested values can be delivered by the tree or directly by the data model. In addition, the class is still generated and registered. This reacts to clicks in the tree and ensures that the tree is opened and closed. MyTreeTableModelAdapterAbstractTableModelMyTreeTableJTableMyAbstractTreeTableModelTreeExpansionListener + +```java +package de.hameister.treetable; +  +import java.awt.Rectangle; +  +import javax.swing.JTree; +import javax.swing.event.TreeExpansionEvent; +import javax.swing.event.TreeExpansionListener; +import javax.swing.table.AbstractTableModel; +import javax.swing.tree.TreePath; +  +public class MyTreeTableModelAdapter extends AbstractTableModel { +  +     JTree tree; +    MyAbstractTreeTableModel treeTableModel; +  +    public MyTreeTableModelAdapter(MyAbstractTreeTableModel treeTableModel, JTree tree) { +        this.tree = tree; +        this.treeTableModel = treeTableModel; +  +        tree.addTreeExpansionListener(new TreeExpansionListener() { +            public void treeExpanded(TreeExpansionEvent event) { +                fireTableDataChanged(); +            } +  +            public void treeCollapsed(TreeExpansionEvent event) { +                fireTableDataChanged(); +            } +        }); +    } +  +  +  +    public int getColumnCount() { +        return treeTableModel.getColumnCount(); +    } +  +    public String getColumnName(int column) { +        return treeTableModel.getColumnName(column); +    } +  +    public Class getColumnClass(int column) { +        return treeTableModel.getColumnClass(column); +    } +  +    public int getRowCount() { +        return tree.getRowCount(); +    } +  +    protected Object nodeForRow(int row) { +        TreePath treePath = tree.getPathForRow(row); +        return treePath.getLastPathComponent(); +    } +  +    public Object getValueAt(int row, int column) { +        return treeTableModel.getValueAt(nodeForRow(row), column); +    } +  +    public boolean isCellEditable(int row, int column) { +        return treeTableModel.isCellEditable(nodeForRow(row), column); +    } +  +    public void setValueAt(Object value, int row, int column) { +        treeTableModel.setValueAt(value, nodeForRow(row), column); +    } +} +``` + +Finally, the JTree and the JTable have to be created. The Tree component inherits from and implements the interface. This class ensures that the row heights of Tree and Table are the same and that the background colors are set correctly during selection. In addition, it is ensured that the elements of the tree are correctly indented depending on the level. MyTreeTableCellRendererJTreeTableCellRenderer + +```java +package de.hameister.treetable; +  +import java.awt.Component; +import java.awt.Graphics; +  +import javax.swing.JTable; +import javax.swing.JTree; +import javax.swing.table.TableCellRenderer; +import javax.swing.tree.TreeModel; +  +  +public class MyTreeTableCellRenderer extends JTree implements TableCellRenderer { +    /** Die letzte Zeile, die gerendert wurde. */ +    protected int visibleRow; +  +    private MyTreeTable treeTable; +  +    public MyTreeTableCellRenderer(MyTreeTable treeTable, TreeModel model) { +        super(model); +        this.treeTable = treeTable; +  +        // Setzen der Zeilenhoehe fuer die JTable +        // Muss explizit aufgerufen werden, weil treeTable noch +        // null ist, wenn super(model) setRowHeight aufruft! +        setRowHeight(getRowHeight()); +    } +  +    /** +     * Tree und Table muessen die gleiche Hoehe haben. +     */ +    public void setRowHeight(int rowHeight) { +        if (rowHeight > 0) { +            super.setRowHeight(rowHeight); +            if (treeTable != null && treeTable.getRowHeight() != rowHeight) { +                treeTable.setRowHeight(getRowHeight()); +            } +        } +    } +  +    /** +     * Tree muss die gleiche Hoehe haben wie Table. +     */ +    public void setBounds(int x, int y, int w, int h) { +        super.setBounds(x, 0, w, treeTable.getHeight()); +    } +  +    /** +     * Sorgt fuer die Einrueckung der Ordner. +     */ +    public void paint(Graphics g) { +        g.translate(0, -visibleRow * getRowHeight()); +  +        super.paint(g); +    } +  +    /** +     * Liefert den Renderer mit der passenden Hintergrundfarbe zurueck. +     */ +    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { +        if (isSelected) +            setBackground(table.getSelectionBackground()); +        else +            setBackground(table.getBackground()); +  +        visibleRow = row; +        return this; +    } +} +``` + +Now that the data model, the auxiliary components and the Main class are in place, the actual TreeTable is still missing. For this purpose, the class is created. This inherits from . Since multiple inheritance is not possible with Java, the Tree component is included in the class via an association. The data model is passed to both the (Tree) and the Object (Table). The class is set as a model. For the simultaneous selection of Tree and Table, this is used for Tree and Table. Then you have to set a default renderer for the tree and set a default editor for the table. MyTreeTableJTableMyTreeTableCellRendererMyAbstractTreeTableModelMyTreeTableCellRendererMyTreeTableModelAdapterMyTreeTableModelAdapterMyTreeTableSelectionModel + +```java +package de.hameister.treetable; +  +import java.awt.Dimension; +  +import javax.swing.JTable; +  +public class MyTreeTable extends JTable { +  +    private MyTreeTableCellRenderer tree; +  +  +    public MyTreeTable(MyAbstractTreeTableModel treeTableModel) { +        super(); +  +        // JTree erstellen. +        tree = new MyTreeTableCellRenderer(this, treeTableModel); +  +        // Modell setzen. +        super.setModel(new MyTreeTableModelAdapter(treeTableModel, tree)); +  +        // Gleichzeitiges Selektieren fuer Tree und Table. +        MyTreeTableSelectionModel selectionModel = new MyTreeTableSelectionModel(); +        tree.setSelectionModel(selectionModel); //For the tree +        setSelectionModel(selectionModel.getListSelectionModel()); //For the table +  +  +        // Renderer fuer den Tree. +        setDefaultRenderer(MyTreeTableModel.class, tree); +        // Editor fuer die TreeTable +        setDefaultEditor(MyTreeTableModel.class, new MyTreeTableCellEditor(tree, this)); +  +        // Kein Grid anzeigen. +        setShowGrid(false); +  +        // Keine Abstaende. +        setIntercellSpacing(new Dimension(0, 0)); +  +    } +} +``` + +If the individual classes are now compiled with , then one should have a working TreeTable component. But as already indicated above, it is not to be understood that such a component is not part of Java. I find it incredible that you have to implement 8 classes to get a really simple TreeTable. It should be noted that functionalities such as javac + +edit +Connected rows and columns +Colored rows and columns +SwingWorker for long-running expansion events +Icons in the tree +Swing components in the Table (ComboBox, Images, ...) +have not yet been taken into account at all. It's easy to imagine how much source code and time would have to go into these features in order to have a working component. diff --git "a/_drafts/202301081307Java\344\273\243\347\240\201\350\264\250\351\207\217\345\272\246\351\207\217\345\267\245\345\205\267\345\244\247\351\230\205\345\205\265.md" "b/_drafts/202301081307Java\344\273\243\347\240\201\350\264\250\351\207\217\345\272\246\351\207\217\345\267\245\345\205\267\345\244\247\351\230\205\345\205\265.md" new file mode 100644 index 0000000..1dfbe51 --- /dev/null +++ "b/_drafts/202301081307Java\344\273\243\347\240\201\350\264\250\351\207\217\345\272\246\351\207\217\345\267\245\345\205\267\345\244\247\351\230\205\345\205\265.md" @@ -0,0 +1,192 @@ +## 以下大部分工具使用样例请访问 + +## FindBugs + + FindBugs, a program which uses static analysis to look for bugs in Java code. It is free software, distributed under the terms of the Lesser GNU Public License. The name FindBugs™ and the FindBugs logo are trademarked by The University of Maryland. FindBugs has been downloaded more than a million times. + +* FindBugs: +* FindBugs Bug Descriptions: +* FindBugs详解: +* FindBugs Maven Plugin(for Maven 1.x): +* FindBugs Maven Plugin(for Maven 2.0+): +* Jenkins+findbugs对java代码进行静态代码分析: + +## spotbugs + + SpotBugs is a fork of FindBugs (which is now an abandoned project), carrying on from the point where it left off with support of its community. Please check the official manual for details. + +* spotbugs: + +## CheckStyle + + Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard. It automates the process of checking Java code to spare humans of this boring (but important) task. This makes it ideal for projects that want to enforce a coding standard. + +* CheckStyle: +* Eclipse Checkstyle Plug-in: +* Checkclipse: +* CheckStyle-IDEA: +* maven-checkstyle-plugin: + +## PMD + + PMD is a source code analyzer. It finds common programming flaws like unused variables, empty catch blocks, unnecessary object creation, and so forth. It supports Java, JavaScript, Salesforce.com Apex and Visualforce, PLSQL, Apache Velocity, XML, XSL. + Additionally it includes CPD, the copy-paste-detector. CPD finds duplicated code in Java, C, C++, C#, Groovy, PHP, Ruby, Fortran, JavaScript, PLSQL, Apache Velocity, Scala, Objective C, Matlab, Python, Go, Swift and Salesforce.com Apex and Visualforce. + +* PMD(various plugin addresses included): +* PMD Rules: +* maven-pmd-plugin: + +## p3c + + Alibaba Java Coding Guidelines pmd implements and IDE plugin + +* p3c: + +## JDeodorant + + JDeodorant is an Eclipse plug-in that detects design problems in Java software, known as code smells, and recommends appropriate refactorings to resolve them. + +* JDeodorant: + +## Jdepend(Not Recommend) + + JDepend traverses Java class file directories and generates design quality metrics for each Java package. JDepend allows you to automatically measure the quality of a design in terms of its extensibility, reusability, and maintainability to manage package dependencies effectively. + Jdepend很久没有维护了,后续不建议使用 + +* Jdepend: +* JDepend4Eclipse: +* JDepend Maven Plugin(这个插件我也在维护): + +## Metrics + +* Eclipse Metrics plugin: +* Eclipse Metrics plugin continued: +* Metrics 3 - Eclipse Metrics Plugin Continued 'Again': + +## Emma(Not Recommend) + + a free Java code coverage tool + Emma很久没有维护了,不支持Java 8+语法,后续不建议使用 + +* Emma: +* 我做了一些优化和升级: + +* eclemma(Emma Eclipse Plugin, 开始基于Emma后来基于JaCoCo): + +* emma-maven-plugin(我开发的插件,欢迎大家使用,多提issues): + +## JaCoco(Recommend) + + JaCoCo is a free code coverage library for Java, which has been created by the EclEmma team based on the lessons learned from using and integration existing libraries for many years. + +* JaCoCo: +* Getting “Skipping JaCoCo execution due to missing execution data file” upon executing JaCoCo? + +## Cobertura(Not Recommend) + + Cobertura is a free Java code coverage reporting tool. + +* Cobertura: +* eCobertura(Cobertura Eclipse Plugin): +* cobertura-maven-plugin: +* 学习Maven之Cobertura Maven Plugin: + +## Coverlipse(Not Recommend) + + Coverlipse is an Eclipse plugin that visualizes the code coverage of JUnit Tests. It is unique for it integrates seamlessly in Eclipse. The coverage results are given directly after a JUnit run. This makes it the perfect tool for developers to recognize their tests fullfil their task. + +* Coverlipse: + +## JavaNCSS(Not Recommend) + + JavaNCSS - A Source Measurement Suite for Java. + JavaNCSS很久没有维护了,不支持Java 8+语法,后续不建议使用 + +* JavaNCSS: +* 当前有些源码分支还在开发,但完成度不高: +* javancss-maven-plugin: + +## Simian + + Simian (Similarity Analyser) identifies duplication in Java, C#, C, C++, COBOL, Ruby, JSP, ASP, HTML, XML, Visual Basic, Groovy source code and even plain text files. In fact, simian can be used on any human readable files such as ini files, deployment descriptors, you name it. + +* Simian: +* simian-maven-plugin(我开发的插件,欢迎大家使用,多提issues): + +注:If you like simian-maven-plugin, you can vote for my answer on + +## SourceMonitor + + SourceMonitor lets you see inside your software source code to find out how much code you have and to identify the relative complexity of your modules. For example, you can use SourceMonitor to identify the code that is most likely to contain defects and thus warrants formal review. + +* SourceMonitor: +* 代码度量工具——SourceMonitor的学习和使用: + +## iPlasma + + iPlasma is an integrated environment for quality analysis of object-oriented software systems that includes support for all the necessary phases of analysis: from model extraction (including scalable parsing for C++ and Java) up to high-level metrics-based analysis, or detection of code duplication. iPlasma has three major advantages: extensibility of supported analysis, integration with further analysis tools and scalability, as it was used in the past to analyse large-scale projects in the size of millions of code lines (e.g. Eclipse and Mozilla). + +* + +## inFusion + + Whether you own, are responsible for, or are acquiring software projects in C/C++ or Java, inFusion puts you in full control of architecture and design quality. inFusion makes quality assurance of multi-million LOC systems not merely practical, but effective, successfully handling both object oriented and procedural style code. + +* (deprecated) +* InFusion错误类型分析: +* 软件设计度量工具inFusion(一):inFusion的基本概念: +* 软件设计度量工具inFusion(二):看懂inFusion度量结果: + +## structure101 + +* +* 软件设计度量工具structure101学习(一):structure101试用版licence的获取以及众多的structure101系列工具: +* 软件设计度量工具structure101学习(二):Call Graph、Class Hierarchy、Collaboration、Composition视图: +* 软件设计度量工具structure101学习(三):Slices视图: +* 软件设计度量工具structure101学习(三.1):解决slices视图遗留问题: +* 软件设计度量工具structure101学习(四):complexity的使用与计: +* 软件设计度量工具structure101学习(五):repository的使用: +* 软件设计度量工具structure101学习(六):Project Properties: + +## coverity + + Coverity® static application security testing (SAST) helps you build software that’s more secure, higher-quality, and compliant with standards. + +* +* COVERITY CI: + +## pinpoint + + 静态分析,源代码审计 + +* Sourcebrella Pinpoint: + +## Infer + + Infer is a static analysis tool - if you give Infer some Java or C/C++/Objective-C code it produces a list of potential bugs. Anyone can use Infer to intercept critical bugs before they have shipped to users, and help prevent crashes or poor performance. + +* +* infer-maven-plugin(简单封装,意义不大,可以直接使用其它方式进行CI集成): + +## FireLine + +* +* fireline-maven-plugin(我开发的插件,欢迎大家使用,多提issues): + +## cloc + + cloc counts blank lines, comment lines, and physical lines of source code in many programming languages. + +* cloc: + +## 额外阅读 + +* 浅淡静态代码分析工具: +* 七款代码味道识别工具【简介】: + +欢迎和大家交流技术相关问题: + +* 邮箱: jiangxinnju@163.com +* 博客园: +* GitHub: +* 知乎: \ No newline at end of file diff --git "a/_drafts/202301081324Android\346\272\220\347\240\201\350\247\243\350\257\273-\350\247\246\346\221\270\344\275\215\347\275\256\346\230\276\347\244\272.md" "b/_drafts/202301081324Android\346\272\220\347\240\201\350\247\243\350\257\273-\350\247\246\346\221\270\344\275\215\347\275\256\346\230\276\347\244\272.md" new file mode 100644 index 0000000..149c078 --- /dev/null +++ "b/_drafts/202301081324Android\346\272\220\347\240\201\350\247\243\350\257\273-\350\247\246\346\221\270\344\275\215\347\275\256\346\230\276\347\244\272.md" @@ -0,0 +1,645 @@ +# Android源码解读-触摸位置显示 + +`本文基于Android T版本源码,梳理当用户在开发者选项中开启Show tabs功能后显示第点按操作的视觉反馈的原理,来进一步了解Android Input系统` + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2023010813241.png) + +## Settings 写入设置 + +首先是设置应用(`Settings`)提供的开发者选项画面响应点击,将`Show taps`选项对应的设置`Key SHOW_TOUCHES`的 ON 值通过`android.provder.Settings`接口写入到保存系统设置数据的`SettingsProvier`中。 + +```java +// packages/apps/Settings/src/com/android/settings/development/ShowTapsPreferenceController.java +public class ShowTapsPreferenceController extends DeveloperOptionsPreferenceController ... { + ... + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + final boolean isEnabled = (Boolean) newValue; + Settings.System.putInt(mContext.getContentResolver(), + Settings.System.SHOW_TOUCHES, isEnabled ? SETTING_VALUE_ON : SETTING_VALUE_OFF); + return true; + } + ... +} +``` + +## InputManagerService监听设置 + +负责管理输入的系统服务`InputManagerService`在启动之际,会监听设置中的 `SHOW_TOUCHES`字段的变化,在设置产生变化的时候调用native侧的代码进行处理。 + +```java +// frameworks/base/services/core/java/com/android/server/input/InputManagerService.java +public class InputManagerService extends IInputManager.Stub... { + ... + public void start() { + ... + registerShowTouchesSettingObserver(); + ... + } + + private void registerShowTouchesSettingObserver() { + mContext.getContentResolver().registerContentObserver( + Settings.System.getUriFor(Settings.System.SHOW_TOUCHES), true, + new ContentObserver(mHandler) { + @Override + public void onChange(boolean selfChange) { + updateShowTouchesFromSettings(); + } + }, UserHandle.USER_ALL); + } + + private void updateShowTouchesFromSettings() { + int setting = getShowTouchesSetting(0); + mNative.setShowTouches(setting != 0); + } + ... + +// frameworks/base/services/core/java/com/android/server/input/NativeInputManagerService.java +public interface NativeInputManagerService { + ... + void setShowTouches(boolean enabled); + ... +} +``` + +```cpp +// frameworks/base/services/core/jni/com_android_server_input_InputManagerService.cpp +class NativeInputManager : public virtual RefBase, ...{ + ... + void setShowTouches(bool enabled); + ... +} + +void NativeInputManager::setShowTouches(bool enabled) { + { // acquire lock + AutoMutex _l(mLock); + + if (mLocked.showTouches == enabled) { + return; + } + + ALOGI("Setting show touches feature to %s.", enabled ? "enabled" : "disabled"); + mLocked.showTouches = enabled; + } // release lock + + mInputManager->getReader().requestRefreshConfiguration( + InputReaderConfiguration::CHANGE_SHOW_TOUCHES); +} +``` + +这里的`mInputManager`是`InputManagerInterface`对象实例,`InputManager`是`InputManagerInterface`和子类,所以通过`mInputManager`可以连接`NativeInputManager`和`InputReader`。 + +这里向负责读取事件的`InputReader`发出更新配置的请求,配置变更的`Type`为 `CHANGE_SHOW_TOUCHES`。 + +## 通过 InputReader 请求刷新配置 + +`InputReader`接收到配置变化的`Type`之后,会根据记录待刷新配置的变量 `mConfigurationChangesToRefresh`判断当前是否已经在刷新过程中。 +如果尚未处于刷新中,则更新`mConfigurationChangesToRefresh`的值,并唤醒`EventHub`进行配置刷新。 + +```cpp +// frameworks/native/services/inputflinger/reader/InputReader.cpp +void InputReader::requestRefreshConfiguration(uint32_t changes) { + std::scoped_lock _l(mLock); + + if (changes) { + bool needWake = !mConfigurationChangesToRefresh; + mConfigurationChangesToRefresh |= changes; + + if (needWake) { + mEventHub->wake(); + } + } +} +``` + +## EventHub 唤醒 InputReader 线程 + +`InputManagerService`过来的刷新请求最终需要`InputReader`线程来处理。 +可是 InputReader 线程处在从`EventHub`中读取事件和没有事件时便调用`epoll_wait`进入等待状态的循环当中。 +所以为了让其立即处理配置变化,需要`EventHub`的手动唤醒。 + +```cpp +// frameworks/native/services/inputflinger/reader/EventHub.cpp +void EventHub::wake() { + ALOGV("wake() called"); + + ssize_t nWrite; + do { + nWrite = write(mWakeWritePipeFd, "W", 1); + } while (nWrite == -1 && errno == EINTR); + + if (nWrite != 1 && errno != EAGAIN) { + ALOGW("Could not write wake signal: %s", strerror(errno)); + } +} + +size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSize) { + ... + for (;;) { + ... + int pollResult = epoll_wait(mEpollFd, mPendingEventItems, EPOLL_MAX_EVENTS, timeoutMillis); + ... + } + ... +} +``` + +## InputReader线程刷新配置 + +`EventHub`唤醒后处于等待状态的`getEvents`会结束,之后`InputReader`线程会进入下次循环即`loopOnce`。 +其首先将检查是否存在待刷新的配置变化changes,存在的话调用`refreshConfigurationLocked`让`InputDevice`去重新适配变化。 + +```cpp +// frameworks/native/services/inputflinger/reader/InputReader.cpp +void InputReader::loopOnce() { + ... + std::vector inputDevices; + { // acquire lock + ... + uint32_t changes = mConfigurationChangesToRefresh; + if (changes) { + mConfigurationChangesToRefresh = 0; + timeoutMillis = 0; + refreshConfigurationLocked(changes); + } else if (mNextTimeout != LLONG_MAX) { + nsecs_t now = systemTime(SYSTEM_TIME_MONOTONIC); + timeoutMillis = toMillisecondTimeoutDelay(now, mNextTimeout); + } + } // release lock + + size_t count = mEventHub->getEvents(timeoutMillis, mEventBuffer, EVENT_BUFFER_SIZE); + ... +} +``` + +需要留意,`refreshConfigurationLocked`在调用`InputDevice`进一步处理之前需要先获取配置的变化放入`mConfig`中。 + +```cpp +// frameworks/native/services/inputflinger/reader/InputReader.cpp +void InputReader::refreshConfigurationLocked(uint32_t changes) { + mPolicy->getReaderConfiguration(&mConfig); + ... + + if (changes & InputReaderConfiguration::CHANGE_MUST_REOPEN) { + mEventHub->requestReopenDevices(); + } else { + for (auto& devicePair : mDevices) { + std::shared_ptr& device = devicePair.second; + device->configure(now, &mConfig, changes); + } + } + ... +} +``` + +### InputDevice配置变化 + +`InputDevice`的`configure`需要处理很多配置变化,比如键盘布局、麦克风等。对于`Show taps`的变化关注调用 `InputMapper`的`congfigure`即可。 + +```cpp +// frameworks/native/services/inputflinger/reader/InputDevice.cpp +void InputDevice::configure(nsecs_t when, const InputReaderConfiguration* config, + uint32_t changes) { + ... + if (!isIgnored()) { + ... + for_each_mapper([this, when, config, changes](InputMapper& mapper) { + mapper.configure(when, config, changes); + mSources |= mapper.getSources(); + }); + ... + } +} +``` + +### TouchInputMapper 进一步处理 + +众多输入事件的物理数据需要对应的`InputMapper`来转化为上层能识别的事件类型。比如识别键盘输入的 `KeyboardInputMapper`、识别震动的`VibratorInputMapper`等等。 + +现在的触摸屏都支持多点触控,所以是`MultiTouchInputMapper`来处理的。可`MultiTouchInputMapper`没有复写 configure(),而是沿用由父类`TouchInputMapper`的共通处理。 + +```cpp +// frameworks/native/services/inputflinger/reader/mapper/TouchInputMapper.cpp +void TouchInputMapper::configure(nsecs_t when, const InputReaderConfiguration* config, + uint32_t changes) { + ... + bool resetNeeded = false; + if (!changes || + (changes & + (InputReaderConfiguration::CHANGE_DISPLAY_INFO | + InputReaderConfiguration::CHANGE_POINTER_CAPTURE | + InputReaderConfiguration::CHANGE_POINTER_GESTURE_ENABLEMENT | + InputReaderConfiguration::CHANGE_SHOW_TOUCHES | + InputReaderConfiguration::CHANGE_EXTERNAL_STYLUS_PRESENCE))) { + // Configure device sources, display dimensions, orientation and + // scaling factors. + configureInputDevice(when, &resetNeeded); + } + ... +} +``` + +`TouchInputMapper`会依据`changes`的类型进行对应处理,对于`SHOW_TOUCHES`的变化需要调用`configureInputDevice`进一步处理。 + +## 创建和初始化 PointerController + +`configureInputDevice`进行多个参数的测量和配置,其中和`Show taps`相关的是`PointerController`的创建,该类是 Mouse、Taps、Pointer location 等系统 Touch 显示的专用类。 + +```cpp +// frameworks/native/services/inputflinger/reader/mapper/TouchInputMapper.cpp +void TouchInputMapper::configureInputDevice(nsecs_t when, bool* outResetNeeded) { + ... + // Create pointer controller if needed, and keep it around if Pointer Capture is enabled to + // preserve the cursor position. + if (mDeviceMode == DeviceMode::POINTER || + (mDeviceMode == DeviceMode::DIRECT && mConfig.showTouches) || + (mParameters.deviceType == Parameters::DeviceType::POINTER && + mConfig.pointerCaptureRequest.enable)) { + if (mPointerController == nullptr) { + mPointerController = getContext()->getPointerController(getDeviceId()); + } + if (mConfig.pointerCaptureRequest.enable) { + mPointerController->fade(PointerControllerInterface::Transition::IMMEDIATE); + } + } else { + mPointerController.reset(); + } + ... +} +``` + +这里调用`InputReaderContext#getPointerController`,`InputReader::ContextImpl`是`InputReaderContext`的子类,所以会回调到`InputReader`开启`PointerController`的创建和初始化。 + +```cpp +// frameworks/native/services/inputflinger/reader/InputReader.cpp +std::shared_ptr InputReader::ContextImpl::getPointerController( + int32_t deviceId) { + // lock is already held by the input loop + return mReader->getPointerControllerLocked(deviceId); +} + +std::shared_ptr InputReader::getPointerControllerLocked( + int32_t deviceId) { + std::shared_ptr controller = mPointerController.lock(); + if (controller == nullptr) { + controller = mPolicy->obtainPointerController(deviceId); + mPointerController = controller; + updatePointerDisplayLocked(); + } + return controller; +} +``` + +这里调用`InputReaderPolicyInterface#obtainPointerController`,而`NativeInputManager`是`InputReaderPolicyInterface`的子类。 + +```cpp +// frameworks/base/services/core/jni/com_android_server_input_InputManagerService.cpp +std::shared_ptr NativeInputManager::obtainPointerController( + int32_t /* deviceId */) { + ... + std::shared_ptr controller = mLocked.pointerController.lock(); + if (controller == nullptr) { + ensureSpriteControllerLocked(); + + controller = PointerController::create(this, mLooper, mLocked.spriteController); + mLocked.pointerController = controller; + updateInactivityTimeoutLocked(); + } + + return controller; +} +``` + +PointerController 构建的同时需要构建持有的 MouseCursorController。 + +```cpp +// frameworks/base/libs/input/PointerController.cpp +std::shared_ptr PointerController::create( ... ) { + std::shared_ptr controller = std::shared_ptr( + new PointerController(policy, looper, spriteController)); + ... + return controller; +} + +PointerController::PointerController( ... ) + : mContext(policy, looper, spriteController, *this), mCursorController(mContext) { + std::scoped_lock lock(mLock); + mLocked.presentation = Presentation::SPOT; + ... +} +``` + +`obtainPointerController`执行完之后调用`updatePointerDisplayLocked`执行`PointerController`的初始化。 + +### 初始化 PointerController + +调用`PointerController`的`setDisplayViewport`传入显示用的`DisplayViewPort`。 + +```cpp +// frameworks/native/services/inputflinger/reader/InputReader.cpp +void InputReader::updatePointerDisplayLocked() { + ... + std::optional viewport = + mConfig.getDisplayViewportById(mConfig.defaultPointerDisplayId); + if (!viewport) { + ... + viewport = mConfig.getDisplayViewportById(ADISPLAY_ID_DEFAULT); + } + ... + controller->setDisplayViewport(*viewport); +} +``` + +`setDisplayViewport`需要持有的`MouseCursorController`进一步初始化。 + +```cpp +// frameworks/base/libs/input/PointerController.cpp +void PointerController::setDisplayViewport(const DisplayViewport& viewport) { + ... + mCursorController.setDisplayViewport(viewport, getAdditionalMouseResources); +} +``` + +`MouseCursorController`需要获取Display相关的参数,并执行两个重要步骤:`loadResourcesLocked`/`updatePointerLocked` + +```cpp +// frameworks/base/libs/input/MouseCursorController.cpp +void MouseCursorController::setDisplayViewport(const DisplayViewport& viewport, + bool getAdditionalMouseResources) { + ... + // Reset cursor position to center if size or display changed. + if (oldViewport.displayId != viewport.displayId || oldDisplayWidth != newDisplayWidth || + oldDisplayHeight != newDisplayHeight) { + float minX, minY, maxX, maxY; + if (getBoundsLocked(&minX, &minY, &maxX, &maxY)) { + mLocked.pointerX = (minX + maxX) * 0.5f; + mLocked.pointerY = (minY + maxY) * 0.5f; + // Reload icon resources for density may be changed. + loadResourcesLocked(getAdditionalMouseResources); + ... + } + } else if (oldViewport.orientation != viewport.orientation) { + ... + } + + updatePointerLocked(); +} +``` + +### 加载 Pointer 相关资源 + +```cpp +// frameworks/base/libs/input/MouseCursorController.cpp +void MouseCursorController::loadResourcesLocked(bool getAdditionalMouseResources) REQUIRES(mLock) { + ... + policy->loadPointerResources(&mResources, mLocked.viewport.displayId); + policy->loadPointerIcon(&mLocked.pointerIcon, mLocked.viewport.displayId); + ... +} +``` + +省略诸多细节,`loadPointerResources`将通过`InputManagerService`的`JNI`端以及`PointerIcon`的`JNI`端创建`PointerIcon`实例,并读取显示的资源。 + +`getSystemIcon`则是负责的函数,其将读取系统资源里名为`Pointer`的`Style`,并读取指针对应的资源 ID。 + +```java +// frameworks/base/core/java/android/view/PointerIcon.java + public static PointerIcon getSystemIcon(@NonNull Context context, int type) { + ... + int typeIndex = getSystemIconTypeIndex(type); + if (typeIndex == 0) { + typeIndex = getSystemIconTypeIndex(TYPE_DEFAULT); + } + + int defStyle = sUseLargeIcons ? + com.android.internal.R.style.LargePointer : com.android.internal.R.style.Pointer; + TypedArray a = context.obtainStyledAttributes(null, + com.android.internal.R.styleable.Pointer, + 0, defStyle); + int resourceId = a.getResourceId(typeIndex, -1); + ... + icon = new PointerIcon(type); + if ((resourceId & 0xff000000) == 0x01000000) { + icon.mSystemIconResourceId = resourceId; + } else { + icon.loadResource(context, context.getResources(), resourceId); + } + systemIcons.append(type, icon); + return icon; + } + + private static int getSystemIconTypeIndex(int type) { + switch (type) { + ... + case TYPE_SPOT_TOUCH: + return com.android.internal.R.styleable.Pointer_pointerIconSpotTouch; + ... + default: + return 0; + } + } +``` + +资源 ID 为 pointer_spot_touch_icon。 + +```xml + + + +``` + +其指向的图片就是如下熟悉的 Spot png:`pointer_spot_touch.png`。之后的`loadPointerIcon`阶段会将该图片解析成 Bitmap 并被管理在`SpriteIcon`中。 + +而`SpriteIcon`在`updatePointerLocked`阶段会被存放到`SpriteController`中,等待显示的调度。 + +```cpp +// frameworks/base/libs/input/MouseCursorController.cpp +void MouseCursorController::updatePointerLocked() REQUIRES(mLock) { + if (!mLocked.viewport.isValid()) { + return; + } + sp spriteController = mContext.getSpriteController(); + spriteController->openTransaction(); + + ... + if (mLocked.updatePointerIcon) { + if (mLocked.requestedPointerType == mContext.getPolicy()->getDefaultPointerIconId()) { + mLocked.pointerSprite->setIcon(mLocked.pointerIcon); + ... + } + mLocked.updatePointerIcon = false; + } + + spriteController->closeTransaction(); +} +``` + +## 显示Tap + +点击的时候`EventHub#getEvents`会产生事件,`InputReader#loopOnce`会调用`processEventsLocked`处理事件。 + +```cpp +// frameworks/native/services/inputflinger/reader/InputReader.cpp +void InputReader::loopOnce() { + ... + size_t count = mEventHub->getEvents(timeoutMillis, mEventBuffer, EVENT_BUFFER_SIZE); + + { // acquire lock + ... + if (count) { + processEventsLocked(mEventBuffer, count); + } + .... + } // release lock + ... +} +``` + +之后调用`InputMapper`开始加工事件,并在`TouchInputMapper#cookAndDispatch`的时候调用`updateTouchSpots`更新 `PointerController`的一些参数。 + +```cpp +// frameworks/native/services/inputflinger/reader/mapper/TouchInputMapper.cpp +void TouchInputMapper::updateTouchSpots() { + ... + mPointerController->setPresentation(PointerControllerInterface::Presentation::SPOT); + mPointerController->fade(PointerControllerInterface::Transition::GRADUAL); + + mPointerController->setButtonState(mCurrentRawState.buttonState); + setTouchSpots(mCurrentCookedState.cookedPointerData.pointerCoords, + mCurrentCookedState.cookedPointerData.idToIndex, + mCurrentCookedState.cookedPointerData.touchingIdBits, mViewport.displayId); +} +``` + +其中比较关键的`setTouchSpots`是显示Taps的关键步骤,准备 x、y 坐标和压力值。 + +在 Reader 而不是 Dispatch、更不是 ViewRootImpl 的时候处理的原因在于:Read 到事件即显示可以更早地响,同时不用占用 App 进程。 + +```cpp +// frameworks/native/services/inputflinger/reader/mapper/TouchInputMapper.cpp +void TouchInputMapper::setTouchSpots(const PointerCoords* spotCoords, const uint32_t* spotIdToIndex, + BitSet32 spotIdBits, int32_t displayId) { + std::array outSpotCoords{}; + + for (BitSet32 idBits(spotIdBits); !idBits.isEmpty();) { + const uint32_t index = spotIdToIndex[idBits.clearFirstMarkedBit()]; + float x = spotCoords[index].getX(); + float y = spotCoords[index].getY(); + float pressure = spotCoords[index].getAxisValue(AMOTION_EVENT_AXIS_PRESSURE); + ... + } + + mPointerController->setSpots(outSpotCoords.data(), spotIdToIndex, spotIdBits, displayId); +} +``` + +其后`PointerController`会通过`TouchSpotController`创建`Spot`实例向其发送`updateSprite`请求。最后回调 `SpriteController`调用`setIcon`处理。 + +```cpp +// frameworks/base/libs/input/TouchSpotController.cpp +void TouchSpotController::Spot::updateSprite(const SpriteIcon* icon, float x, float y, + int32_t displayId) { + sprite->setLayer(Sprite::BASE_LAYER_SPOT + id); + ... + if (icon != mLastIcon) { + mLastIcon = icon; + if (icon) { + sprite->setIcon(*icon); + sprite->setVisible(true); + } else { + sprite->setVisible(false); + } + } +} +``` + +```cpp +// frameworks/base/libs/input/SpriteController.cpp +void SpriteController::SpriteImpl::setIcon(const SpriteIcon& icon) { + AutoMutex _l(mController->mLock); + ... + invalidateLocked(dirty); +} + +void SpriteController::SpriteImpl::invalidateLocked(uint32_t dirty) { + ... + if (!wasDirty) { + mController->invalidateSpriteLocked(this); + } +} + +void SpriteController::invalidateSpriteLocked(const sp& sprite) { + bool wasEmpty = mLocked.invalidatedSprites.isEmpty(); + mLocked.invalidatedSprites.push(sprite); + if (wasEmpty) { + if (mLocked.transactionNestingCount != 0) { + mLocked.deferredSpriteUpdate = true; + } else { + mLooper->sendMessage(mHandler, Message(MSG_UPDATE_SPRITES)); + } + } +} +``` + +`MSG_UPDATE_SPRITES`经过 Handler 回调`doUpdateSprites`,将取出封装在`SpriteUpdate`中的`SpriteIcon`并执行 draw。 + +```cpp +// frameworks/base/libs/input/SpriteController.cpp +void SpriteController::doUpdateSprites() { + ... + for (size_t i = 0; i < numSprites; i++) { + SpriteUpdate& update = updates.editItemAt(i); + + if ((update.state.dirty & DIRTY_BITMAP) && update.state.surfaceDrawn) { + update.state.surfaceDrawn = false; + update.surfaceChanged = surfaceChanged = true; + } + + if (update.state.surfaceControl != NULL && !update.state.surfaceDrawn + && update.state.wantSurfaceVisible()) { + sp surface = update.state.surfaceControl->getSurface(); + if (update.state.icon.draw(surface)) { + update.state.surfaceDrawn = true; + update.surfaceChanged = surfaceChanged = true; + } + } + } + ... + updates.clear(); +} +``` + +最后,`SpriteIcon`将取出`Bitmap`描画到`Surface`的`Canvas`上去。 + +```cpp +// frameworks/base/libs/input/SpriteIcon.cpp +bool SpriteIcon::draw(sp surface) const { + ... + graphics::Paint paint; + paint.setBlendMode(ABLEND_MODE_SRC); + + graphics::Canvas canvas(outBuffer, (int32_t)surface->getBuffersDataSpace()); + canvas.drawBitmap(bitmap, 0, 0, &paint); + ... + status = surface->unlockAndPost(); + if (status) { + ALOGE("Error %d unlocking and posting sprite surface after drawing.", status); + } + return !status; +} +``` + +## 总体流程 + +通过一个框图简单回顾一下整个流程。 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2023010813242.jpg) + +可以看到,简简单单的 Show taps 功能,从设置、配置、刷新再到显示,经历了多个进程、多个模块的协力。 + +## 涉及的Input核心逻辑框图 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2023010813243.jpg) \ No newline at end of file diff --git "a/_drafts/202302262208StableDiffusionWebui\347\216\257\345\242\203\346\220\255\345\273\272.md" "b/_drafts/202302262208StableDiffusionWebui\347\216\257\345\242\203\346\220\255\345\273\272.md" new file mode 100644 index 0000000..b8c8165 --- /dev/null +++ "b/_drafts/202302262208StableDiffusionWebui\347\216\257\345\242\203\346\220\255\345\273\272.md" @@ -0,0 +1,62 @@ +# stable-diffusion-webui环境搭建与使用 + +## 条件准备 + +* Git(2.38.1) +* Python(3.10.9) +* Pillow(9.4.0) +* 有科学上网工具 + +必须的是一台显存4g以上电脑,英伟达的显卡。最好有科学上网工具,否则最后一步的部署会经常中断,需要反复尝试。 + +## 安装git + +下载地址https://git-scm.com/downloads + +下载好,安装,一直next即可,在Select Components这一步可以把Windows Explorer integration的勾去掉,这个如果不去掉,鼠标右键菜单会加入git相关的操作。 + +## 安装python3.10.6 + +下载地址https://www.python.org/downloads/ + +安装时,要打勾Add Python 3.10 to PATH,之后一直next即可。 + +## 部署stable-diffusion-webui + +新建一个文件夹,文件名随意,用于存放stable-diffusion-webui和模型。 + +进入你新建的文件夹,右键页面空白处,点击在终端中打开,执行指令 git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git,下图是执行成功后的样子,成功后可关掉界面。 + + +## 下载模型文件 + +模型决定了生成图片的风格和质量。新手可以下载这个默认的模型,下载地址https://huggingface.co/CompVis/stable-diffusion-v-1-4-original/tree/main,下载sd-v1-4.ckpt,点击这个右边的小箭头即可。 + +下载后,回到步骤4中新建的那个文件夹,把下载好的模型文件,我这里使用的是(sd-v1-4.ckpt)放到stable-diffusion-webui\models\Stable-diffusion这个文件夹下(如果是NovelAi的模型,将ckpt和pt文件都放在此文件夹下) + +## 部署stable-diffusion-webui + +双击webui.bat,自动开始部署,如果不使用科学上网,这个过程会很慢且容易报错。非常建议使用科学上网。 + +若使用科学上网,在你的上网软件里看一下代理端口(port),下图是我的。 + + +然后在任务栏点击 + + +搜索Windows powershell,运行这行命令:git config --global http.proxy http://127.0.0.1:7890,这里7890是我的端口,要改成你自己的。 + +然后再运行webui-user.bat,部署过程中,可能会出现报错,或提示更新pip,不用管,多部署几次就好,我个人3次成功。 + + +出现这个就代表成功了。 + +## 开始ai作画 + +见上图,部署完成后会有一个链接 + + +链接复制到浏览器中打开,会出现以下界面,这里我在左上角输入apple,点击右上角generate,生成了一张关于苹果的图片。左下角可以调整图片参数和生成图片数量。 + + +教程结束,谢谢大家支持,欢迎在评论区交流讨论。 作者:46789FG https://www.bilibili.com/read/cv21748847 出处:bilibili \ No newline at end of file diff --git "a/_drafts/202317061029VSCode\350\260\203\350\257\225\350\277\234\347\250\213Linux\346\234\272\345\231\250\344\270\212\347\232\204C\344\273\243\347\240\201.md" "b/_drafts/202317061029VSCode\350\260\203\350\257\225\350\277\234\347\250\213Linux\346\234\272\345\231\250\344\270\212\347\232\204C\344\273\243\347\240\201.md" new file mode 100644 index 0000000..149ea72 --- /dev/null +++ "b/_drafts/202317061029VSCode\350\260\203\350\257\225\350\277\234\347\250\213Linux\346\234\272\345\231\250\344\270\212\347\232\204C\344\273\243\347\240\201.md" @@ -0,0 +1,95 @@ +# VSCode调试远程Linux机器上的C代码 + +## VSCode通过SSH远程连接Linux机器 + +保证可以正常查看代码: + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/20231706102901.png) + +## 创建launch.json + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/20231706102902.png) + +```json +{ + "version": "0.2.0", + "configurations": [ + { + "name": "(gdb) Launch", + "type": "cppdbg", + "request": "launch", + "program": "${workspaceFolder}/main", //这里需要指定可执行文件 + "args": [], + "stopAtEntry": false, + "cwd": "${fileDirname}", + "environment": [], + "externalConsole": false, + "MIMode": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + }, + { + "description": "Set Disassembly Flavor to Intel", + "text": "-gdb-set disassembly-flavor intel", + "ignoreFailures": true + } + ], + "preLaunchTask": "build-debug" //这里指定一个预先执行的Task + } + + ] +} +``` + +## 创建tasks.json + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/20231706102903.png) + +```json +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build-debug", + "command": "make", + "args": [""], + "type": "shell" + }, + { + "label": "clean", + "command": "make", + "args": ["clean"], + "type": "shell" + } + ] +} +``` + +## 开始调试 + +启动调试的方式: + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/20231706102904.png) + +调试界面: + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/20231706102905.png) + +## 使用VSCode Makefile Tools插件 + +如果VSCode上安装了`Makefile Tools`插件,也可以使用该插件直接进行调试,这边不展开说明。该插件官网: + + + +## 使用VSCode CMake Tools插件 + +如果VSCode上安装了`CMake Tools`插件,也可以使用该插件直接进行调试,这边不展开说明。该插件官网: + + + +## 参考链接 + +* Using C++ on Linux in VS Code: diff --git "a/_drafts/202401011357Ubuntu\346\211\251\345\256\271swap\346\226\207\344\273\266.md" "b/_drafts/202401011357Ubuntu\346\211\251\345\256\271swap\346\226\207\344\273\266.md" new file mode 100644 index 0000000..da8ab2a --- /dev/null +++ "b/_drafts/202401011357Ubuntu\346\211\251\345\256\271swap\346\226\207\344\273\266.md" @@ -0,0 +1,52 @@ +# Ubuntu扩容swap文件 + +## 查看/卸载/删除已有swap文件 + +```shell +# 查看交换分区的大小和使用量 +jiangxin@ubuntu11:~$ free -m + total used free shared buff/cache available +内存: 9815 297 6438 1 3080 9214 +交换: 1897 510 1386 + +# 查看swap文件的位置 +jiangxin@ubuntu11:~$ swapon -s +Filename Type Size Used Priority +/swapfile file 1942896 522948 -2 + +# 卸载删除已有swap文件 +jiangxin@ubuntu11:~$ sudo swapoff /swapfile +[sudo] jiangxin 的密码: +jiangxin@ubuntu11:~$ sudo rm -rf /swapfile + +# 由于我们后面新增的swap文件和删除的swap文件时同名的,所以不再修改/etc/fstab文件 +jiangxin@ubuntu11:~$ cat /etc/fstab +UUID=00fce965-efcd-4954-9777-14f52475b94b / ext4 errors=remount-ro 0 1 +/swapfile none swap sw 0 0 +``` + +## 创建/格式化/新的swap文件 + +```shell +# 创建一个32G的swap文件 +jiangxin@ubuntu11:~$ sudo dd if=/dev/zero of=/swapfile bs=1M count=32767 +记录了32767+0 的读入 +记录了32767+0 的写出 +34358689792字节(34 GB,32 GiB)已复制,139.379 s,247 MB/s + +# 格式化创建的swap文件 +jiangxin@ubuntu11:~$ sudo mkswap /swapfile +mkswap: /swapfile: insecure permissions 0644, fix with: chmod 0600 /swapfile +正在设置交换空间版本 1,大小 = 32 GiB (34358685696 个字节) +无标签, UUID=23f37fb3-b0a6-4c71-a9e0-1b4ea50a0c68 + +# 挂载新的swap文件,全兴提示可忽略或者按照要求整改 +jiangxin@ubuntu11:~$ sudo swapon /swapfile +swapon: /swapfile:不安全的权限 0644,建议使用 0600。 + +# 重新查看swap分区大小 +jiangxin@ubuntu11:~$ free -m + total used free shared buff/cache available +内存: 9815 797 135 6 8882 8703 +交换: 32766 0 32766 +``` diff --git "a/_drafts/2_Groovy\345\256\236\347\216\260\345\216\237\347\220\206\345\210\206\346\236\220\342\200\224\342\200\224\350\257\215\346\263\225\345\210\206\346\236\220\343\200\201\350\257\255\346\263\225\345\210\206\346\236\220\343\200\201\347\224\237\346\210\220JVM\345\255\227\350\212\202\347\240\201\347\273\274\350\277\260.md" "b/_drafts/2_Groovy\345\256\236\347\216\260\345\216\237\347\220\206\345\210\206\346\236\220\342\200\224\342\200\224\350\257\215\346\263\225\345\210\206\346\236\220\343\200\201\350\257\255\346\263\225\345\210\206\346\236\220\343\200\201\347\224\237\346\210\220JVM\345\255\227\350\212\202\347\240\201\347\273\274\350\277\260.md" new file mode 100644 index 0000000..964707c --- /dev/null +++ "b/_drafts/2_Groovy\345\256\236\347\216\260\345\216\237\347\220\206\345\210\206\346\236\220\342\200\224\342\200\224\350\257\215\346\263\225\345\210\206\346\236\220\343\200\201\350\257\255\346\263\225\345\210\206\346\236\220\343\200\201\347\224\237\346\210\220JVM\345\255\227\350\212\202\347\240\201\347\273\274\350\277\260.md" @@ -0,0 +1,18 @@ +# Groovy实现原理分析——词法分析、语法分析、生成JVM字节码综述 + +在上一篇文中中我们提到Groovy编译器将Groovy脚本编译成JVM可以执行的字节码文件,这之中涉及词法分析、语法分析、生成JVM字节码的过程,学过编译原理的同学可能会对这些概念比较熟悉,不熟悉也没关系,我们简单回忆一下一般编译器的编译过程。首先给出一张龙书中的示意图: + +![编译过程示意图](https://images2018.cnblogs.com/blog/611264/201803/611264-20180311224530074-1999481514.png) + +以一个很简单的表达式`position = initial + rate * 60`为例,要想生成机器可以执行的机器码或者汇编语言的话,要经过如下几个步骤: + +* 词法分析器将输入表达式按照预定规则分隔为一系列的词素单元。 +* 语法分析器将词素单元按照预定规则生成语法树。 +* 语义分析器进行类型检查等语义分析。 +* 中间代码生成器将语义分析之后的结果生成机器无关的代码。 + +## 参考资料 + +* Aho A V. Compilers: principles, techniques and tools (for Anna University), 2/e[M]. Pearson Education India, 2003. +* Parr T. The definitive ANTLR 4 reference[M]. Pragmatic Bookshelf, 2013. +* Bruneton E. ASM 4.0: A Java bytecode engineering library, Sept. 2011[J]. URL http://download.forge.objectweb.org/asm/asm4-guide.pdf. Version, 2. \ No newline at end of file diff --git "a/_drafts/\345\255\227\347\254\246\344\271\261\347\240\201\344\270\200\351\224\205\347\202\226.md" "b/_drafts/\345\255\227\347\254\246\344\271\261\347\240\201\344\270\200\351\224\205\347\202\226.md" new file mode 100644 index 0000000..779c112 --- /dev/null +++ "b/_drafts/\345\255\227\347\254\246\344\271\261\347\240\201\344\270\200\351\224\205\347\202\226.md" @@ -0,0 +1,210 @@ +# 字符乱码一锅炖 + +linux系统中文件名内容为urf8编码, windows系统中文件名默认为gbk编码, 多数文档使用gbk编码,系统采用utf8编码 + +## Linux系统无中文输入法导致乱码 + +### ibus + +Ubuntu 系统安装后已经自带了ibus输入法,在英语环境下默认不启动。配置ibus自动启动可以在ubuntu系统菜单上选择System --- Preferences --- Startup Applications,在该窗口中增加一个程序: + +```shell + Name: ibus-daemon + Command: ibus-daemon -d -x -r +``` + +ibus默认提供的中文输入法比较弱智,需要额外安装ibus-pinyin,命令如下: + +```shell + sudo apt-get install ibus-pinyin +``` + +这时,还需要将ibus-pinyin输入法启动。在ubuntu系统菜单上选择System --- Preferences --- IBus Preferences,在Input Method页中的“Select an input method”下拉框中选择增加Chinese – Pinyin,就是图标中有个一个大大的“拼”字的那一个,然后点击Add按钮,最后通过Up按钮将该输入法移动到最上面。系统重启后,通过Ctrl + 空格即可调出ibus输入法。ibus输入法总体来说不错,但是在我的环境下发现无法在部分Java程序中调出来,例如Netbeans、OpenProj。 + +### fcitx + +由于ibus的缺陷,所以我尝试了fcitx,使用下来也非常不错,而且可以在Java程序中正常使用,只是在这种情况下光标跟随有些问题,输入界面会停 留在屏幕最下端,但是可以接受,比起ibus不能使用要好多了。 + +安装fcitx:`sudo apt-get install fcitx` + +启动fcitx:`im-switch -s fcitx` + +注销后重新登录,fcitx就会生效。如果需要切换回ibus,可以运行`im-switch -s ibus`,然后注销,重新登录。fcitx同样可以通过`Ctrl + Space`调出,这时会发现fcitx显示的中文是方框,因此需要修改fcitx的配置。Fcitx的配置文件在`~/.fcitx/config`,该文件为 GBK编码,在Ubuntu下显示不正常,可以通过如下方式操作: + +```shell + cd ~/.fcitx + iconv -f gbk -t utf8 config > config.tmp +``` + +编辑config.tmp文件: + +```shell + 显示字体(中)=WenQuanYi Micro Hei + 显示字体大小=10 + 使用粗体=0 +``` + +保存退出,然后运行命令:`iconv -f utf8 -t gbk config.tmp > config` + +注销后重新登录,fcitx显示正常。 + +对于搜狗输入候选字乱码问题,先运行`sudo apt-get install fcitx-module-kimpanel`,然后注销或者重启,一般就可以了 + +## `utf8`和`UTF-8` + +`UTF-8`是标准写法,在windows下边英文不区分大小写,所以也可以写成`utf-8`。`UTF-8`也可以把中间的`-`省略,写成`UTF8`。一般程序都能识别,但也有例外(如下文),为了严格一点,最好用标准的大写`UTF-8`。只有在MySQL中可以使用`utf-8`的别名`utf8`,但是在其他地方一律使用大写`UTF-8`。 + +## Linux系统网页上Flash中的中文显示为方框 + +编辑`/etc/fonts/conf.d/49-sansserif.conf`文件,作如下修改: + +```xml + + WenQuanYi Micro Hei + +``` + +## Java程序部分中文显示为方框 + +在`$JAVA_HOME/jre /lib/fonts`目录下建立`fallback`目录,将中文字体文件复制(或link)到`fallback`目录。 + +```shell + sudo mkdir $JAVA_HOME/jre/lib/fonts/fallback + sudo ln /usr/share/fonts/truetype/wqy/wqy-microhei.ttc $JAVA_HOME/jre/lib/fonts/fallback/ +``` + +## “GBK乱码”,参考 + +乱码的样子类似:`à??ü òá??à3?£???1,°2à??ü òá??à3?£???1` + +解决方法:`convmv -r -f utf8 -t iso88591 --notest --nosmart * && convmv -r -f gbk -t utf8 --notest --nosmart *` # 把乱码文件名文件复制在一个空目录里运行(这样错了也不怕): + +## Linux系统“ascii乱码”参考 + +乱码的样子类似:`%E5%8C%BB%E4%BF%9D` + +解决方法: + +1.使用uni2ascii 代码:`echo 乱码原文 | ascii2uni -a J` +2.安装nautilus-filename-repairer0.06(官方有源码,但是依赖问题,我还没安装成功,而0.05版与现在的nautilus有点小小的合作障碍,只能看不能改名) +3.用chromeplus-1.3.3.1下载(因为这类乱码主要在用ff(默认utf8)下载qq群里的文件之后产生,用chromeplus(默认GBK)下就没问题了) + +另外,至于文件里面内容的乱码问题可以搜索enca. + +## Linux系统Rhythmox乱码 + +安装Rhythmox:sudo apt-get install rhythmbox + 安装mid3iconv:sudo apt-get install python-mutagen + mid3iconv -h + +## Linux系统Clementine乱码 + +安装mid3iconv:`sudo apt-get install python-mutagen` + +Clementine不支持utf8,需要吧所有的mp3歌曲转换为gbk格式,wma好像不用转就可以:`mid3iconv -e gbk *.mp3`(由于不能带-r参数,所以要依次进入每个文件夹) + +另外clementine采用gstreamer作为后端,需要安装gstreamer插件: + +* 如果想支持mp3,需要安装gstreamer-0.10-plugins-bad和gstreamer-0.10-plugins-ugly +* 如果想支持wma,需要安装gstreamer-0.10-ffmpeg +* 如果想支持mms流媒体,需要安装gstreamer plugins for mms + +另外Clementine基于Amarok,所以支持Amarok的插件一般都支持Clementine,比如osdlyrics。 + +## Linux系统转换文件内容编码 + +```shell + file -i #检测文件编码 + iconv --help +``` + +## Linux系统转换文件名编码 + +```shell + sudo apt-get install convmv + convmv --help + convmv -f gbk -t utf8 -r --notest files + convmv -r -f utf8 -t iso88591 * --notest --nosmart && convmv -r -f gbk -t utf8 * --notest --nosmart +``` + +## Linux系统gedit乱码 + +```shell + gsettings set org.gnome.gedit.preferences.encodings auto-detected "['GB18030', 'GB2312', 'GBK', 'UTF-8', 'BIG5', 'CURRENT', 'UTF-16']" + gsettings set org.gnome.gedit.preferences.encodings shown-in-menu "['GB18030', 'GB2312', 'GBK', 'UTF-8', 'BIG5', 'CURRENT', 'UTF-16']" +``` + +## Linux系统PDF中文乱码 + +```shell + sudo apt-get install poppler-data +``` + +## Linux系统rar文件乱码 + +使用`rar` + +## Linux系统解压zip文件乱码 + +新建文件`jieya.py`,写入以下代码: + +```python + #!/usr/bin/env python + # -*- coding: utf-8 -*- + + import os + import sys + import zipfile + + print "Processing File " + sys.argv[1] + file=zipfile.ZipFile(sys.argv[1],"r"); + for name in file.namelist(): + utf8name=name.decode('gbk') + print "Extracting " + utf8name + pathname = os.path.dirname(utf8name) + if not os.path.exists(pathname) and pathname!= "": + os.makedirs(pathname) + data = file.read(name) + if not os.path.exists(utf8name): + fo = open(utf8name, "w") + fo.write(data) + fo.close + file.close() +``` + +然后zip文件跟`jieya.py`放在同一级目录,运行命令`python jieya.py file.zip` + +## Linux系统smplayer中文字幕乱码 + +1. `选项`->`首选现`,选择`字幕`选项卡。 +2. 找到`默认字符编码`选项,在下拉框中选择`简体中文(cp936)` +3. 再打开`字体`页卡(上边),选择`系统字体`在下拉选框中选择一种简体中文字体,如`Weu Quanyi Zen Hei`。 + +## Linux系统VLC播放器显示文件名乱码 + +初选项中修改一种支持中文的字体 + +## xelatex+ctex乱码 + +修改文档的编码设为`utf-8` + +## 相关资料 + +* Character encoding: +* What's the difference between an Encoding, Code Page, Character Set and Unicode? +* Code page 936 (Microsoft Windows): +* GBK (character encoding): +* Emoji的编码以及常见问题的解决方法: +* Java IO相关,字符编码相关: Java IO 2nd Edition + +* git乱码解决方案汇总: + +* Unicode 和字符集: +* 【整理】Dword、LPSTR、LPWSTR、LPCSTR、LPCWSTR、LPTSTR、LPCTSTR: + +* win10中如何将cmd,power shell设置默认编码为UTF-8(解决win10命令行中文乱码): +* Android Studio Build Output 栏内汉字出现乱码的解决方案: +* pycharm开发python时出现控制中文显示乱码: +* 解决mysql字符集乱码问题: +* emacs在win8乱码: +* 一劳永逸解决:Tomcat启动日志乱码问题: From cb1fb72c48fcf3c6d89d2cb6bf2469a909c4a92d Mon Sep 17 00:00:00 2001 From: Aloys Date: Thu, 4 Apr 2024 17:46:29 +0800 Subject: [PATCH 163/234] update blog --- ...36\350\267\265\346\214\207\345\215\227.md" | 362 ------------------ .../2020-11-21-Package-Manager-In-Ubuntu.md | 22 +- .../2021-02-14-Android-Build-System.md | 19 +- 3 files changed, 21 insertions(+), 382 deletions(-) delete mode 100644 "_drafts/202301072213Repo\345\256\236\350\267\265\346\214\207\345\215\227.md" rename "_drafts/202107251609\344\270\200\347\257\207\346\226\207\347\253\240\346\220\236\346\207\202Debian_Ubuntu\350\275\257\344\273\266\345\214\205\346\233\264\346\226\260\345\222\214\345\210\240\351\231\244.md" => _posts/2020-11-21-Package-Manager-In-Ubuntu.md (95%) rename "_drafts/202102141510\345\256\211\345\215\223\346\236\204\345\273\272\347\263\273\347\273\237.md" => _posts/2021-02-14-Android-Build-System.md (97%) diff --git "a/_drafts/202301072213Repo\345\256\236\350\267\265\346\214\207\345\215\227.md" "b/_drafts/202301072213Repo\345\256\236\350\267\265\346\214\207\345\215\227.md" deleted file mode 100644 index b8e1531..0000000 --- "a/_drafts/202301072213Repo\345\256\236\350\267\265\346\214\207\345\215\227.md" +++ /dev/null @@ -1,362 +0,0 @@ -![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2021021415101.jpeg) - -## 同步发布平台 - -* 博客园: -* CSDN: -* 掘金: -* 知乎: - -**未经允许,谢绝转载** - -## Repo简介 - -Android使用Git作为代码管理工具,开发了Gerrit进行代码审核以便更好的对代码进行集中式管理,还开发了Repo命令行工具,对Git命令进行封装,将几百个Git库有效的进行组织。Repo并不是用来取代Git,而是用Python对Git进行了一定的封装,简化了对多个Git版本库的管理。对应Repo管理的任何一个版本库,都需要使用Git命令进行操作。 - -## Repo工作流 - -下图是Repo工作流,大体分为如下几个核心步骤: - -1. 运行`repo init`,克隆Android的一个清单库。这个清单库是通过XML技术建立的版本库清单。清单库中的manifest.xml文件,列出了几百个版本库的克隆方式。包括版本库的地址和工作区地址的对应关系,以及分支的对应关系。 -2. 运行`repo sync`,分别克隆这几百个版本库到本地的工作区。 -3. 运行`repo start`创建并切换到本地工作分支。 -4. 本地修改代码,通过Git相关命令在某些项目中进行操作。 -5. 通过`repo upload`命令将代码修改发布到代码审核服务器。 - -![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/1.png) - -## Repo引导脚本下载 - -在使用Repo前我们需要下载一个Repo引导脚本,Repo的核心功能不在其中,该引导脚本只是下载并加载完整Repo程序的工具。 - -```shell -mkdir ~/bin -PATH=~/bin:$PATH -curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo -chmod a+x ~/bin/repo -``` - -这里需要提到一点的是早期的Repo引导脚本是一个Shell脚本,第一行就是`#!/bin/sh`,然后通过以下代码完成Shell向Python的转换,不过在较新版本中都是直接使用Python,第一行变成了`#!/usr/bin/env python`。现在网络上的很多介绍都过时了。 - -```shell -magic='--calling-python-from-/bin/sh--' -"""exec" python -E "$0" "$@" """#$magic" -``` - -## Repo清单库介绍 - -一个清单库可以包含多个清单文件和多个分支,每个清单文件和分支都有对应的版本。清单文件以XML格式组织。举个例子: - -```shell -repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-11.0.0_r27 -``` - -```xml - - - - - - - - - - - - - - - - - ... - -``` - -* remote元素,定义了名为aosp的远程版本库,其库的基址为,还定义了代码审核服务器的地址。当然,还可以定义更多的remote元素。 -* default元素,设置各个项目默认远程版本库为aosp,默认的的分支为`refs/tags/android-11.0.0_r27`。当然各个project元素还可以定义自己的remote和revision覆盖默认的配置。 -* project元素,用于定义一个项目,path属性表示在工作区克隆的位置,name属性表示该项目的远程版本库的相对路径。 -* project元素的子元素copyfile,定义了项目克隆后的一个附件动作,从src拷贝文件到dest。 - -## 通过Repo下载AOSP系统源码 - -现在你可以通过Repo下载AOSP源码了,但是由于墙的原因,我们没有办法直接下载,需要通过一些AOSP镜像,其中使用比较多的是清华的镜像,具体下载方式请参考官方介绍: - -### Repo下载AOSP过程中可能遇到的问题 - -1. 某些project找不到: - -```shell -... -Checking out projects: 58% (432/733) platform/frameworks/hardware/interfaceserror: Cannot checkout platform/frameworks/layoutlib: ManifestInvalidRevisionError: revision refs/tags/android-10.0.0_r47 in platform/frameworks/layoutlib not found -error: in `sync -c -j4`: revision refs/tags/android-10.0.0_r47 in platform/frameworks/layoutlib not found -``` - -这个问题我一直没有找到根因,可能是镜像的问题,也可能是网络的问题。解决方式发现哪个project找不到就单独同步该项目,然后再整体同步。 - -```shell -repo sync -c platform/frameworks/layoutlib -repo sync -c -j4 -``` - -## Repo常用指令 - -Repo子命令实际上是Git命令的封装。每一个Repo子命令都对应于repo源码树中subcmds目录下的一个同名的Python文件。每一个repo子命令都可以通过下面的命令获得帮助。 - -```shell -repo help -``` - -当然你也可以参考Repo官方的介绍: - -### repo init - -```shell -repo init –u URL [OPTIONS] -``` - -常用参数如下,其它参数通过repo help init查询: - -* -u(--manifest-url):设定清单库的Git服务器地址 -* -m(--manifest-name):当有多个清单文件时,指定清单库中的某个清单为有效的清单文件。默认为default.xml -* -b(--manifest-branch):选择一个maniest仓库中的一个特殊的分支 - -命令repo init 要完成如下操作: - -* 完成repo工具的完整下载,执行的Repo脚本只是引导程序 -* 克隆清单库manifest.git (地址来自于-u 参数) -* 克隆的清单库位于manifest.git中,克隆到本地`.repo/manifests`。在之前的Repo版本中清单`.repo/manifest.xml`只是符号链接,它指向`.repo/manifests/default.xml`。在目前的repo版本中清单`.repo/manifest.xml`是一个实际的文件,通过include的方式引用`.repo/manifests/default.xml` -* 如果`.repo/manifests`中有多个xml文件,`repo init`可以任意选择其中一个,默认选择是default.xml -* 在`.repo/manifests`中执行`git branch -a | cut -d / -f 3`可以查看本地存放的已有的所有分支信息,但是该信息只是同步到你上次下载时的信息,如果需要最新信息需要先在该目录中执行`git pull`操作。 - -```shell -repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-11.0.0_r27 # 在当前目录出现了.repo文件夹 -repo init -u git://192.168.0.125/manifest.git –m android.xml # 选择的是android.xml里面的配置,.repo/manifest.xml便指向.repo/manifests/android.xml -``` - -### repo sync - -```shell -repo sync […] -``` - -用于参照清单文件`.repo/manifest.xml`克隆并同步版本库。如果某个项目版本库尚不存在,则执行repo sync 命令相当于执行git clone,如果项目版本库已经存在,则相当于执行下面的两条指令: - -```shell -git remote update # 相当于对每一个remote源执行了fetch操作 -git rebase origin/branch # 针对当前分支的跟踪分支执行rebase操作 -``` - -如果直接执行`repo sync`会同步所有project,如果后面指定project则只会同步指定的project。如`repo sync platform/build`。 - -### repo rebase - -### repo smartsync - -可以通过一些选项设置同步的方式,比如是否在遇到第一个错误的时候就停止,是否强制删除含有未提交修改的项目等等。 - -### repo start - -```shell -repo start [--all | …] -``` - -刚克隆下来的代码是没有分支的,`repo start`实际是对`git checkout –b`命令的封装。为指定的项目或所有项目(若使用—all参数),以清单文件中为设定的分支,创建特性分支。这条指令与`git checkout –b`还是有很大的区别的,`git checkout –b`是在当前所在的分支的基础上创建特性分支,而`repo start`是在清单文件设定分支的基础上创建特性分支。 - -```shell -repo start stable --all # 假设清单文件中设定的分支是gingerbread-exdroid-stable,那么执行以上指令就是对所有项目,在gingerbread-exdroid-stable的基础上创建特性分支stable -repo start stable platform/build platform/bionic # 假设清单文件中设定的分支是gingerbread-exdroid-stable,那么执行以上指令就是对platform/build、platform/bionic项目,在gingerbread-exdroid-stable的基础上创建特性分支stable -``` - -### repo checkout - -```shell -repo checkout […] -``` - -实际上是对`git checkout`命令的封装,检出之前由`repo start`创建的分支。但不能带-b参数,所以不能用此命令来创建特性分支。 - -```shell -repo checkout aosp-dev -repo checkout aosp-dev platform/build platform/bionic -``` - -### repo branches - -读取各个项目的分支列表并汇总显示。该命令实际上通过直接读取`.git/refs`目录下的引用来获取分支列表,以及分支的发布状态等。 - -```shell -repo branches […] -``` - -```shell -repo branches -repo branches platform/build platform/bionic -``` - -### repo diff - -```shell -repo diff […] -``` - -实际是对git diff 命令的封装,用于分别显示各个项目工作区下的文件差异。 - -```shell -repo diff # 查看所有项目 -repo diff platform/build platform/bionic # 只查看其中两个项目 -``` - -### repo stage - -实际是对`git add --interactive`命令的封装、用于挑选各个项目工作区中的改动以加入暂存区。 - -```shell -repo stage -i […] -``` - --i代表`git add --interactive`命令中的`--interactive`,给出个界面供用户选择。 - -### repo prune - -实际上是对`git branch –d`命令的封装,该命令用于扫面项目的各个分支,并删除已经合并的分支,用法如下: - -```shell -repo prune […] -``` - -### repo abandon - -实际上是对`git branch –D`命令的封装,用法如下: - -```shell -repo abandon […] -``` - -### repo status - -实际上是对`git diff-index`、`git diff-filse`命令的封装,同时显示暂存区的状态和本地文件修改的状态 - -```shell -repo status platform/bionic -``` - -以上的实例输出显示了platform/bionic项目分支的修改状态 - -* 每个小节的首行显示羡慕名称,以及所在分支的名称 -* 第一个字母表示暂存区的文件修改状态 - * -:没有改变 - * A:添加(不在HEAD中,在暂存区中) - * M:修改(在HEAD中,在暂存区中,内容不同) - * D:删除(在HEAD中,不在暂存区) - * R:重命名(不在HEAD中,在暂存区,路径修改) - * C:拷贝(不在HEAD中,在暂存区,从其他文件拷贝) - * T:文件状态改变(在HEAD中,在暂存区,内容相同) - * U:未合并,需要冲突解决 -* 第二个字母表示工作区文件的更改状态 - * -:新/未知(不在暂存区,在工作区) - * m:修改(在暂存区,在工作区,被修改) - * d:删除(在暂存区,不在工作区) -* 两个表示状态的字母后面,显示文件名信息。如果有文件重名还会显示改变前后的文件名及文件的相似度 - -### repo remote - -```shell -repo remote add […] -repo remote rm […] -``` - -```shell -repo remote add origin_1 ssh://192.168.0.125/git_repo # 这个指令是根据xml文件添加的远程分支,方便于向服务器提交代码,执行之后的build目录下看到新的远程分支org -repo remote rm origin_1 # 删除远程仓库 -``` - -### repo push - -```shell -repo push [--all |…] -``` - -这是新添加的指令,用于向服务器提交代码,repo会自己查询需要向服务器提交的项目并提示用户。 - -```shell -repo push org -``` - -### repo forall - -```shell -repo forall […] –c -``` - -迭代器,可以在所有指定的项目中执行同一个shell指令 - -* -c:后面所带的参数着是shell指令 -* -p:在shell指令输出之前列出项目名称 -* -v:列出执行shell指令输出的错误信息 - -额外的环境变量: - -* REPO_PROJECT:指定项目的名称 -* REPO_PATH:指定项目在工作区的相对路径 -* REPO_REMOTE:指定项目远程仓库的名称 -* REPO_LREV:指定项目最后一次提交服务器仓库对应的哈希值 -* REPO_RREV:指定项目在克隆时的指定分支,manifest里的revision属性 - - 另外,如果-c后面所带的shell指令中有上述环境变量,则需要用单引号把shell指令括起来。 - -```shell -repo forall -c 'echo $REPO_PROJECT' # 输出项目的名称 -repo forall -p -c git merge aosp-my-dev # 把所有项目多切换到master分支,该指令将会把aosp-my-dev分支合并到master分支 -repo forall -c git tag aosp-mytag-1.0 # 在所有项目下打标签 -repo forall -c 'git remote add origin_1 ssh://jiangxin@192.168.0.125/$REPO_PROJECT.git' # 引用环境变量REPO_PROJECT添加远程仓库 -repo forall -c git remote add origin_1 # 删除远程仓库 -repo forall –c git branch aosp-dev # 切换分支 -repo forall –c git checkout –b aosp-dev # 创建分支 -repo forall -c git reset --hard # 当repo sync时如果提示discarding xx commits时可以通过该命令废弃所有提交,然后继续repo sync -``` - -### repo grep - -相当于对git grep 的封装,用于在项目文件中进行内容查找。 - -### repo manifest - -显示manifest文件内容,可以通过-o参数输出到指定的文件中。 - -```shell -repo manifest –o android.xml -``` - -### repo version - -显示Repo的版本号,还会同时显示Git/Python等依赖的应用版本。 - -### repo upload - -repo upload相当于git push,但是又有很大的不同。它不是将版本库改动推送到克隆时的远程服务器,而是推送到代码审核服务器(Gerrit软件架设)的特殊引用上,使用SSH协议。代码审核服务器会对推送的提交进行特殊处理,将新的提交显示为一个待审核的修改集,并进入代码审查流程,只有当审核通过后,才会合并到官方正式的版本库中。 - -```shell -repo upload [--re --cc] {[]… | --replace } -``` - -* -h, --help:显示帮助信息 -* -t:发送本地分支名称到Gerrit代码审核服务器 -* --replace:发送此分支的更新补丁集 -* --re=REVIEWERS:要求指定的人员进行审核 -* --cc=CC:同时发送通知到如下邮件地址 - -### repo download - -主要用于代码审核者下载和评估贡献者提交的修订。 - -```shell -repo download {project change [patchset]}… -``` - -### repo selfupdate - -用于repo自身的更新 diff --git "a/_drafts/202107251609\344\270\200\347\257\207\346\226\207\347\253\240\346\220\236\346\207\202Debian_Ubuntu\350\275\257\344\273\266\345\214\205\346\233\264\346\226\260\345\222\214\345\210\240\351\231\244.md" b/_posts/2020-11-21-Package-Manager-In-Ubuntu.md similarity index 95% rename from "_drafts/202107251609\344\270\200\347\257\207\346\226\207\347\253\240\346\220\236\346\207\202Debian_Ubuntu\350\275\257\344\273\266\345\214\205\346\233\264\346\226\260\345\222\214\345\210\240\351\231\244.md" rename to _posts/2020-11-21-Package-Manager-In-Ubuntu.md index cf09f9b..d00d1d1 100644 --- "a/_drafts/202107251609\344\270\200\347\257\207\346\226\207\347\253\240\346\220\236\346\207\202Debian_Ubuntu\350\275\257\344\273\266\345\214\205\346\233\264\346\226\260\345\222\214\345\210\240\351\231\244.md" +++ b/_posts/2020-11-21-Package-Manager-In-Ubuntu.md @@ -1,13 +1,15 @@ -![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2021072516091.jpeg) - -## 同步发布平台 - -* 博客园: -* CSDN: -* 掘金: -* 知乎: - -**未经允许,谢绝转载** +--- +title: "彻底搞懂Ubuntu系统上的包管理" +categories: + - Blog +tags: + - Linux + - Ubuntu + - Debian + - apt + - aptitude +toc: true +--- ## 关联阅读 diff --git "a/_drafts/202102141510\345\256\211\345\215\223\346\236\204\345\273\272\347\263\273\347\273\237.md" b/_posts/2021-02-14-Android-Build-System.md similarity index 97% rename from "_drafts/202102141510\345\256\211\345\215\223\346\236\204\345\273\272\347\263\273\347\273\237.md" rename to _posts/2021-02-14-Android-Build-System.md index b30650c..aff4c36 100644 --- "a/_drafts/202102141510\345\256\211\345\215\223\346\236\204\345\273\272\347\263\273\347\273\237.md" +++ b/_posts/2021-02-14-Android-Build-System.md @@ -1,13 +1,12 @@ -![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2021021415101.jpeg) - -## 同步发布平台 - -* 博客园: -* CSDN: -* 掘金: -* 知乎: - -**未经允许,谢绝转载** +--- +title: "Android构建系统" +categories: + - Blog +tags: + - Android + - AOSP +toc: true +--- 在以下位置描述了Android构建系统: 你可以使用`build/envsetup.sh`设置一个"便利环境"来处理Android源代码。在当前shell环境中执行`source build/envsetup.sh`后,你可以输入hmm作为已定义函数的列表,这些函数有助于与源进行交互。 From d7a33dea21c5059db6ade7aa746fd64608d66c6a Mon Sep 17 00:00:00 2001 From: Aloys Date: Sat, 6 Apr 2024 12:05:12 +0800 Subject: [PATCH 164/234] update blogs --- ...02\347\240\201\347\273\274\350\277\260.md" | 18 -- .../2018-03-11-Groovy-Compiler-Analysis-01.md | 16 +- .../2018-03-11-Groovy-Compiler-Analysis-02.md | 166 ++++++++++++++++++ 3 files changed, 175 insertions(+), 25 deletions(-) delete mode 100644 "_drafts/2_Groovy\345\256\236\347\216\260\345\216\237\347\220\206\345\210\206\346\236\220\342\200\224\342\200\224\350\257\215\346\263\225\345\210\206\346\236\220\343\200\201\350\257\255\346\263\225\345\210\206\346\236\220\343\200\201\347\224\237\346\210\220JVM\345\255\227\350\212\202\347\240\201\347\273\274\350\277\260.md" rename "_drafts/1_Groovy\345\256\236\347\216\260\345\216\237\347\220\206\345\210\206\346\236\220\342\200\224\342\200\224\345\207\206\345\244\207\345\267\245\344\275\234.md" => _posts/2018-03-11-Groovy-Compiler-Analysis-01.md (95%) create mode 100644 _posts/2018-03-11-Groovy-Compiler-Analysis-02.md diff --git "a/_drafts/2_Groovy\345\256\236\347\216\260\345\216\237\347\220\206\345\210\206\346\236\220\342\200\224\342\200\224\350\257\215\346\263\225\345\210\206\346\236\220\343\200\201\350\257\255\346\263\225\345\210\206\346\236\220\343\200\201\347\224\237\346\210\220JVM\345\255\227\350\212\202\347\240\201\347\273\274\350\277\260.md" "b/_drafts/2_Groovy\345\256\236\347\216\260\345\216\237\347\220\206\345\210\206\346\236\220\342\200\224\342\200\224\350\257\215\346\263\225\345\210\206\346\236\220\343\200\201\350\257\255\346\263\225\345\210\206\346\236\220\343\200\201\347\224\237\346\210\220JVM\345\255\227\350\212\202\347\240\201\347\273\274\350\277\260.md" deleted file mode 100644 index 964707c..0000000 --- "a/_drafts/2_Groovy\345\256\236\347\216\260\345\216\237\347\220\206\345\210\206\346\236\220\342\200\224\342\200\224\350\257\215\346\263\225\345\210\206\346\236\220\343\200\201\350\257\255\346\263\225\345\210\206\346\236\220\343\200\201\347\224\237\346\210\220JVM\345\255\227\350\212\202\347\240\201\347\273\274\350\277\260.md" +++ /dev/null @@ -1,18 +0,0 @@ -# Groovy实现原理分析——词法分析、语法分析、生成JVM字节码综述 - -在上一篇文中中我们提到Groovy编译器将Groovy脚本编译成JVM可以执行的字节码文件,这之中涉及词法分析、语法分析、生成JVM字节码的过程,学过编译原理的同学可能会对这些概念比较熟悉,不熟悉也没关系,我们简单回忆一下一般编译器的编译过程。首先给出一张龙书中的示意图: - -![编译过程示意图](https://images2018.cnblogs.com/blog/611264/201803/611264-20180311224530074-1999481514.png) - -以一个很简单的表达式`position = initial + rate * 60`为例,要想生成机器可以执行的机器码或者汇编语言的话,要经过如下几个步骤: - -* 词法分析器将输入表达式按照预定规则分隔为一系列的词素单元。 -* 语法分析器将词素单元按照预定规则生成语法树。 -* 语义分析器进行类型检查等语义分析。 -* 中间代码生成器将语义分析之后的结果生成机器无关的代码。 - -## 参考资料 - -* Aho A V. Compilers: principles, techniques and tools (for Anna University), 2/e[M]. Pearson Education India, 2003. -* Parr T. The definitive ANTLR 4 reference[M]. Pragmatic Bookshelf, 2013. -* Bruneton E. ASM 4.0: A Java bytecode engineering library, Sept. 2011[J]. URL http://download.forge.objectweb.org/asm/asm4-guide.pdf. Version, 2. \ No newline at end of file diff --git "a/_drafts/1_Groovy\345\256\236\347\216\260\345\216\237\347\220\206\345\210\206\346\236\220\342\200\224\342\200\224\345\207\206\345\244\207\345\267\245\344\275\234.md" b/_posts/2018-03-11-Groovy-Compiler-Analysis-01.md similarity index 95% rename from "_drafts/1_Groovy\345\256\236\347\216\260\345\216\237\347\220\206\345\210\206\346\236\220\342\200\224\342\200\224\345\207\206\345\244\207\345\267\245\344\275\234.md" rename to _posts/2018-03-11-Groovy-Compiler-Analysis-01.md index 3ab375a..4843ff8 100644 --- "a/_drafts/1_Groovy\345\256\236\347\216\260\345\216\237\347\220\206\345\210\206\346\236\220\342\200\224\342\200\224\345\207\206\345\244\207\345\267\245\344\275\234.md" +++ b/_posts/2018-03-11-Groovy-Compiler-Analysis-01.md @@ -1,10 +1,12 @@ -# Groovy实现原理分析——准备工作 - -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: -GitHub地址: -知乎地址: +--- +title: "Groovy实现原理分析——准备工作" +categories: + - Blog +tags: + - Groovy + - 源码分析 + - 编译原理 +--- 首先说明一下为什么要写这样一系列分析Groovy实现原理的博文。我之前在华为大数据部门曾维护过一份规则引擎的项目,该项目说白了就是一种DSL(Domain Specified Language),把用户的输入转化为一种可以执行的程序。让不懂编程语言的用户只定义一些规则说明便可以完成流程编写。后来由于部门调动,接触不到原来的规则引擎了,但是无意间发现Groovy这种DSL语言的实现机制和当时的规则引擎原理大体相当,所以便借分析Groovy的实现原理,缅怀当时负责的规则引擎吧。同时也希望给其他对规则引擎开发、DSL开发或者编程语言开发感兴趣的朋友一个参考,权当抛砖引玉了。 diff --git a/_posts/2018-03-11-Groovy-Compiler-Analysis-02.md b/_posts/2018-03-11-Groovy-Compiler-Analysis-02.md new file mode 100644 index 0000000..69dc346 --- /dev/null +++ b/_posts/2018-03-11-Groovy-Compiler-Analysis-02.md @@ -0,0 +1,166 @@ +--- +title: "Groovy实现原理分析——词法分析、语法分析、生成JVM字节码综述" +categories: + - Blog +tags: + - Groovy + - 源码分析 + - 编译原理 +--- + +在上一篇文中中我们提到Groovy编译器将Groovy脚本编译成JVM可以执行的字节码文件,这之中涉及词法分析、语法分析、生成JVM字节码的过程,学过编译原理的同学可能会对这些概念比较熟悉,不熟悉也没关系,我们简单回忆一下一般编译器的编译过程。首先给出一张龙书中的示意图: + +![编译过程示意图](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2018031101.png) + +以一个很简单的表达式`position = initial + rate * 60`为例,要想生成机器可以执行的机器码或者JVM可以执行的字节码的话,最少需要执行以下几个步骤: + +* 词法分析器(Lexical Analyzer)将输入表达式按照预定规则分隔为一系列的词素单元。 +* 语法分析器(Syntax Analyzer)将词素单元按照预定规则生成语法树。 +* 语义分析器(Semantic Analyzer)将语法树进行语义分析,比如检查变量是否定义,检查类型是否匹配等。 +* 代码生成器(Code Generator)将语义分析之后的结果生成机器码或者JVM字节码。 + +当然这是简单到不能再简单的编译过程,真实情况下大多数编译期会做的更多,比如生成统一的中间代码进行优化后再生成机器码等。本系列文章的目的不是详细介绍编译原理,而是介绍Groovy编译器是如何实现这些过程的。如果你希望了更加详细的了解编译原理,龙书是我认为最好的学习资料。 + +![编译过程示意图](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2018031102.png) + +## 相关工具 + +现在手撸词法分析器、语法分析器、语义分析器、代码生成器这些工具很少见了,大部分还是会借助一些工具,Groovy的编译过程也不例外。下面我们介绍一些常用的工具。 + +词法分析生成器(专门用于生成词法分析器,一般称作: Lexical Analyzer Generator): + +* LEX: +* flex: +* Jflex: + +语法分析生成器(专门用于生成语法分析器,一般称作Parser Generator): + +* YACC: +* Bison: +* CUP: + +词法分析生成器+语法分析器生成器: + +* JavaCC: +* Antlr: + +字节码生成器: + +* ASM: +* CGLIB(Spring AOP): +* Javaassist(Jboss AOP): + +All-In-One: + +* Xtext: +* MPS: + +接下来我们介绍如何使用Antlr+ASM实现Groovy的词法分析、语法分析、生成JVM字节码。 + +## 一个例子了解Antrl + +假如我们希望做这样一种转化:把一个short类型的数组转换成一个Unicode表示的字符串。 + +```java +// from +static short[] data = {1, 2, 3}; + +// to +static String data = "\u0001\u0002\u0003"; +``` + +要想实现这个转化,我们首先需要一个词法分析器,词法分析器需要将这些字符分成一个个的词素单元,比如数字、字母、符号等。 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2018031103.png) + +然后我们通过Antlr来生成词法分析器。 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2018031104.png) + +默认生成的词法分析器是将识别到的内容打印: + +```java +/** Convert short array inits like {1,2,3} to "\u0001\u0002\u0003" */ +public class ShortToUnicodeString extends ArrayInitBaseListener { + /** Translate { to " */ + @Override + public void enterInit(ArrayInitParser.InitContext ctx) { + System.out.print('"'); + } + /** Translate } to " */ + @Override + public void exitInit(ArrayInitParser.InitContext ctx) { + System.out.print('"'); + } + /** Translate integers to 4-digit hexadecimal strings prefixed with \\u */ + @Override + public void enterValue(ArrayInitParser.ValueContext ctx) { + // Assumes no nested array initializers + int value = Integer.valueOf(ctx.INT().getText()); + System.out.printf("\\u%04x", value); + } +} +``` + +然后我们写一个调用类: + +```java +// import ANTLR's runtime libraries +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.tree.*; +public class Translate { + public static void main(String[] args) throws Exception { + // create a CharStream that reads from standard input + ANTLRInputStream input = new ANTLRInputStream(System.in); + // create a lexer that feeds off of input CharStream + ArrayInitLexer lexer = new ArrayInitLexer(input); + // create a buffer of tokens pulled from the lexer + CommonTokenStream tokens = new CommonTokenStream(lexer); + // create a parser that feeds off the tokens buffer + ArrayInitParser parser = new ArrayInitParser(tokens); + ParseTree tree = parser.init(); // begin parsing at init rule + // Create a generic parse tree walker that can trigger callbacks + ParseTreeWalker walker = new ParseTreeWalker(); + // Walk the tree created during the parse, trigger callbacks + walker.walk(new ShortToUnicodeString(), tree); + System.out.println(); // print a \n after translation + } +} +``` + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/2018031105.png) + +## 一个例子了解ASM + +假如我们想构造这样一个类: + +```java +package pkg; +public interface Comparable extends Mesurable { + int LESS = -1; + int EQUAL = 0; + int GREATER = 1; + int compareTo(Object o); +} +``` + +使用ClassVisitor生成这个类的字节码,需要调用6个方法: + +```java +ClassWriter cw = new ClassWriter(0); +cw.visit(V1_5, ACC_PUBLIC + ACC_ABSTRACT + ACC_INTERFACE, "pkg/Comparable", null, "java/lang/Object", new String[] { "pkg/Mesurable" }); +cw.visitField(ACC_PUBLIC + ACC_FINAL + ACC_STATIC, "LESS", "I", null, new Integer(-1)).visitEnd(); +cw.visitField(ACC_PUBLIC + ACC_FINAL + ACC_STATIC, "EQUAL", "I", null, new Integer(0)).visitEnd(); +cw.visitField(ACC_PUBLIC + ACC_FINAL + ACC_STATIC, "GREATER", "I", null, new Integer(1)).visitEnd(); +cw.visitMethod(ACC_PUBLIC + ACC_ABSTRACT, "compareTo", "(Ljava/lang/Object;)I", null, null).visitEnd(); +cw.visitEnd(); +byte[] b = cw.toByteArray(); +``` + +## 参考资料 + +* Aho A V. Compilers: principles, techniques and tools (for Anna University), 2/e[M]. Pearson Education India, 2003. +* Parr T. The definitive ANTLR 4 reference[M]. Pragmatic Bookshelf, 2013. +* Bruneton E. ASM 4.0: A Java bytecode engineering library, Sept. 2011[J]. URL http://download.forge.objectweb.org/asm/asm4-guide.pdf. Version, 2. + +(未完待续) From bd6b6d3f615e86a363cff2fd8bfce9142fb2777f Mon Sep 17 00:00:00 2001 From: Aloys Date: Sat, 6 Apr 2024 12:18:20 +0800 Subject: [PATCH 165/234] update blogs --- .../2018-11-23-Java-Code-Check.md | 19 +++--- _posts/2020-02-10-Cpp-Code-Check.md | 67 +++++++++++++++++++ 2 files changed, 78 insertions(+), 8 deletions(-) rename "_drafts/202301081307Java\344\273\243\347\240\201\350\264\250\351\207\217\345\272\246\351\207\217\345\267\245\345\205\267\345\244\247\351\230\205\345\205\265.md" => _posts/2018-11-23-Java-Code-Check.md (97%) create mode 100644 _posts/2020-02-10-Cpp-Code-Check.md diff --git "a/_drafts/202301081307Java\344\273\243\347\240\201\350\264\250\351\207\217\345\272\246\351\207\217\345\267\245\345\205\267\345\244\247\351\230\205\345\205\265.md" b/_posts/2018-11-23-Java-Code-Check.md similarity index 97% rename from "_drafts/202301081307Java\344\273\243\347\240\201\350\264\250\351\207\217\345\272\246\351\207\217\345\267\245\345\205\267\345\244\247\351\230\205\345\205\265.md" rename to _posts/2018-11-23-Java-Code-Check.md index 1dfbe51..09b35ec 100644 --- "a/_drafts/202301081307Java\344\273\243\347\240\201\350\264\250\351\207\217\345\272\246\351\207\217\345\267\245\345\205\267\345\244\247\351\230\205\345\205\265.md" +++ b/_posts/2018-11-23-Java-Code-Check.md @@ -1,4 +1,14 @@ -## 以下大部分工具使用样例请访问 +--- +title: "Java代码质量度量工具大阅兵" +categories: + - Blog +tags: + - Java + - Code Check +toc: true +--- + +以下大部分工具使用样例请访问: ## FindBugs @@ -183,10 +193,3 @@ * 浅淡静态代码分析工具: * 七款代码味道识别工具【简介】: - -欢迎和大家交流技术相关问题: - -* 邮箱: jiangxinnju@163.com -* 博客园: -* GitHub: -* 知乎: \ No newline at end of file diff --git a/_posts/2020-02-10-Cpp-Code-Check.md b/_posts/2020-02-10-Cpp-Code-Check.md new file mode 100644 index 0000000..4440ad1 --- /dev/null +++ b/_posts/2020-02-10-Cpp-Code-Check.md @@ -0,0 +1,67 @@ +--- +title: "Cpp代码质量度量工具大阅兵" +categories: + - Blog +tags: + - Cpp + - Code Check +toc: true +--- + +姊妹篇:Java代码质量度量工具大阅兵: + +## cppcheck + +* cppcheck: +* 各种IDE和编辑器插件: <> +* 检查项: + +## CCCC + +* C and C++ Code Counter(CCCC): + +## PC-lint + +* ~~PC-lint for C/C++: ~~ +* PC-lint Plus: + +## cpplint + +* cpplint: + +## Splint + +Splint is a tool for statically checking C programs for security vulnerabilities and coding mistakes. With minimal effort, Splint can be used as a better lint. If additional effort is invested adding annotations to programs, Splint can perform stronger checking than can be done by any standard lint. + +* Splint: + +## Frama-C + +Frama-C is a suite of tools dedicated to the analysis of the source code of software written in C. + +* Frama-C: + +## Goanna Studio + +* Goanna Studio(Static Analysis for C/C++): + +## Visual Leak Detector + +* Visual Leak Detector for Visual C++ : + +## MemLeak + +MemLeak -- a module to debug memory leaks in C code and other problems with malloc()--free() invocations. Written in ANSI C. Distributed under GPL. + +* MemLeak: + +## Valgrind + +Valgrind is an instrumentation framework for building dynamic analysis tools. There are Valgrind tools that can automatically detect many memory management and threading bugs, and profile your programs in detail. You can also use Valgrind to build new tools. + +* Valgrind: + +## 额外阅读 + +* C/C++内存泄漏及检测: +* 浅谈C/C++内存泄露及其检测工具: \ No newline at end of file From 70c51e6099d03e46694fcddbab75cf13adaed50d Mon Sep 17 00:00:00 2001 From: Aloys Date: Sat, 6 Apr 2024 16:57:56 +0800 Subject: [PATCH 166/234] update blog --- .../2018-11-04-Publish-to-Maven-Center.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) rename "_drafts/202301062159\345\246\202\344\275\225\345\217\221\345\270\203Maven\344\276\235\350\265\226\345\210\260\344\270\255\345\244\256\344\273\223\345\272\223.md" => _posts/2018-11-04-Publish-to-Maven-Center.md (99%) diff --git "a/_drafts/202301062159\345\246\202\344\275\225\345\217\221\345\270\203Maven\344\276\235\350\265\226\345\210\260\344\270\255\345\244\256\344\273\223\345\272\223.md" b/_posts/2018-11-04-Publish-to-Maven-Center.md similarity index 99% rename from "_drafts/202301062159\345\246\202\344\275\225\345\217\221\345\270\203Maven\344\276\235\350\265\226\345\210\260\344\270\255\345\244\256\344\273\223\345\272\223.md" rename to _posts/2018-11-04-Publish-to-Maven-Center.md index 2d2e1ff..4e4dbe3 100644 --- "a/_drafts/202301062159\345\246\202\344\275\225\345\217\221\345\270\203Maven\344\276\235\350\265\226\345\210\260\344\270\255\345\244\256\344\273\223\345\272\223.md" +++ b/_posts/2018-11-04-Publish-to-Maven-Center.md @@ -1,4 +1,12 @@ -# 如何发布Maven依赖到中央仓库 +--- +title: "如何发布Maven依赖到中央仓库" +categories: + - Blog +tags: + - Java + - Maven +toc: true +--- 平时我们都是从Maven中央仓库下载依赖,如果我们想发布我们自己写的Maven依赖到中央仓库供别人下载使用应该怎么办?这里以上传自己写的simian-maven-plugin()的实际过程为例说明如何发布Maven依赖到中央仓库。 From 57d4da6b0c935174ef1effcc1cbbd3edac2d82a3 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sat, 6 Apr 2024 17:11:27 +0800 Subject: [PATCH 167/234] update blogs --- .../2021-02-21-Import-AOSP-To-AS.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) rename "_drafts/202301072215\345\260\206AOSP\346\272\220\347\240\201\345\257\274\345\205\245\345\210\260Android Studio\350\277\233\350\241\214\346\237\245\347\234\213.md" => _posts/2021-02-21-Import-AOSP-To-AS.md (97%) diff --git "a/_drafts/202301072215\345\260\206AOSP\346\272\220\347\240\201\345\257\274\345\205\245\345\210\260Android Studio\350\277\233\350\241\214\346\237\245\347\234\213.md" b/_posts/2021-02-21-Import-AOSP-To-AS.md similarity index 97% rename from "_drafts/202301072215\345\260\206AOSP\346\272\220\347\240\201\345\257\274\345\205\245\345\210\260Android Studio\350\277\233\350\241\214\346\237\245\347\234\213.md" rename to _posts/2021-02-21-Import-AOSP-To-AS.md index e94d882..7a4103a 100644 --- "a/_drafts/202301072215\345\260\206AOSP\346\272\220\347\240\201\345\257\274\345\205\245\345\210\260Android Studio\350\277\233\350\241\214\346\237\245\347\234\213.md" +++ b/_posts/2021-02-21-Import-AOSP-To-AS.md @@ -1,4 +1,13 @@ -# 将AOSP源码导入到Android Studio进行查看 +--- +title: "将AOSP源码导入到Android Studio进行查看" +categories: + - Blog +tags: + - Android + - Android Studio + - AOSP +toc: true +--- ## 生成iml和ipr文件 From 274803c82ae8ac51d97112623711c38fa33495a9 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sat, 6 Apr 2024 18:02:52 +0800 Subject: [PATCH 168/234] update draft blog --- ...4_grep_sed_awk\347\273\203\344\271\240.md" | 232 ++++++++---------- 1 file changed, 105 insertions(+), 127 deletions(-) diff --git "a/_drafts/202002101104_grep_sed_awk\347\273\203\344\271\240.md" "b/_drafts/202002101104_grep_sed_awk\347\273\203\344\271\240.md" index c72a4d4..c57ded8 100644 --- "a/_drafts/202002101104_grep_sed_awk\347\273\203\344\271\240.md" +++ "b/_drafts/202002101104_grep_sed_awk\347\273\203\344\271\240.md" @@ -1,6 +1,8 @@ # grep_sed_awk练习 -在开始练习之前,创建文件`datafile`,内容如下: +## 数据文件 + +在开始练习之前,创建数据文件`datafile`,内容如下: ```shell Steve Blenheim:238-923-7366:95 Latham Lane, Easton, PA 83755:11/12/56:20300 @@ -9,11 +11,8 @@ Igor Chevsky:385-375-8395:3567 Populus Place, Caldwell, NJ 23875:6/18/68:23400 Norma Corder:397-857-2735:74 Pine Street, Dearborn, MI 23874:3/28/45:245700 Jennifer Cowan:548-834-2348:583 Laurel Ave., Kingsville, TX 83745:10/1/35:58900 Jon DeLoach:408-253-3122:123 Park St., San Jose, CA 04086:7/25/53:85100 -Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100 -Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 -Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 Lori Gortz:327-832-5728:3465 Mirlo Street, Peabody, MA 34756:10/2/65:35200 Paco Gutierrez:835-365-1284:454 Easy Street, Decatur, IL 75732:2/28/53:123500 Ephram Hardy:293-259-5395:235 CarltonLane, Joliet, IL 73858:8/12/20:56700 @@ -32,6 +31,8 @@ Yukio Takeshida:387-827-1095:13 Uno Lane, Ashville, NC 23556:7/1/29:57000 Vinh Tranh:438-910-7449:8235 Maple Street, Wilmington, VM 29085:9/23/63:68900 ``` +该数据文件每行有如下信息:姓名,电话号码,地址,生日,薪水。接下来我们将用这个数据文件来练习`grep`、`sed`、`awk`。 + ## grep练习 ### 显示所有包含San的行 @@ -75,11 +76,8 @@ Betty Boop:245-836-8357:635 Cutesy Lane, Hollywood, CA 91464:6/23/23:14500 Igor Chevsky:385-375-8395:3567 Populus Place, Caldwell, NJ 23875:6/18/68:23400 Norma Corder:397-857-2735:74 Pine Street, Dearborn, MI 23874:3/28/45:245700 Jon DeLoach:408-253-3122:123 Park St., San Jose, CA 04086:7/25/53:85100 -Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100 -Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 -Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 Lori Gortz:327-832-5728:3465 Mirlo Street, Peabody, MA 34756:10/2/65:35200 Paco Gutierrez:835-365-1284:454 Easy Street, Decatur, IL 75732:2/28/53:123500 Ephram Hardy:293-259-5395:235 CarltonLane, Joliet, IL 73858:8/12/20:56700 @@ -120,8 +118,6 @@ Zippy Pinhead:834-823-8319:2356 Bizarro Ave., Farmount, IL 84357:1/1/67:89500 grep '[A-Z][a-z]\{4\}, [A-Z]' datafile Igor Chevsky:385-375-8395:3567 Populus Place, Caldwell, NJ 23875:6/18/68:23400 -Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100 -Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 Barbara Kertz:385-573-8326:832 Ponce Drive, Gary, IN 83756:12/1/46:268500 Tommy Savage:408-724-0140:1222 Oxbow Court, Sunnyvale, CA 94087:5/19/66:34200 @@ -132,8 +128,6 @@ Tommy Savage:408-724-0140:1222 Oxbow Court, Sunnyvale, CA 94087:5/19/66:34200 ```shell grep -i ^k datafile -Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100 -Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 ``` @@ -143,11 +137,10 @@ Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 grep -n '[0-9]\{6,\}' datafile 4:Norma Corder:397-857-2735:74 Pine Street, Dearborn, MI 23874:3/28/45:245700 -10:Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 -11:Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 -13:Paco Gutierrez:835-365-1284:454 Easy Street, Decatur, IL 75732:2/28/53:123500 -16:Barbara Kertz:385-573-8326:832 Ponce Drive, Gary, IN 83756:12/1/46:268500 -22:Arthur Putie:923-835-8745:23 Wimp Lane, Kensington, DL 38758:8/31/69:126000 +8:Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 +10:Paco Gutierrez:835-365-1284:454 Easy Street, Decatur, IL 75732:2/28/53:123500 +13:Barbara Kertz:385-573-8326:832 Ponce Drive, Gary, IN 83756:12/1/46:268500 +19:Arthur Putie:923-835-8745:23 Wimp Lane, Kensington, DL 38758:8/31/69:126000 ``` ### 显示包括Lincoln或lincoln的行,并且grep对大小写不敏感 @@ -155,8 +148,6 @@ grep -n '[0-9]\{6,\}' datafile ```shell grep -i lincoln datafile -Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100 -Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 ``` @@ -173,10 +164,7 @@ Igor Chevsky:385-375-8395:3567 Populus Place, Caldwell, NJ 23875:6/18/68:23400 Norma Corder:397-857-2735:74 Pine Street, Dearborn, MI 23874:3/28/45:245700 Jennifer Cowan:548-834-2348:583 Laurel Ave., Kingsville, TX 83745:10/1/35:58900 Jonathan DeLoach:408-253-3122:123 Park St., San Jose, CA 04086:7/25/53:85100 -Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100 Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 -Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 -Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 Lori Gortz:327-832-5728:3465 Mirlo Street, Peabody, MA 34756:10/2/65:35200 Paco Gutierrez:835-365-1284:454 Easy Street, Decatur, IL 75732:2/28/53:123500 @@ -204,10 +192,7 @@ sed -e '1,3d' datafile Norma Corder:397-857-2735:74 Pine Street, Dearborn, MI 23874:3/28/45:245700 Jennifer Cowan:548-834-2348:583 Laurel Ave., Kingsville, TX 83745:10/1/35:58900 Jon DeLoach:408-253-3122:123 Park St., San Jose, CA 04086:7/25/53:85100 -Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100 Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 -Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 -Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 Lori Gortz:327-832-5728:3465 Mirlo Street, Peabody, MA 34756:10/2/65:35200 Paco Gutierrez:835-365-1284:454 Easy Street, Decatur, IL 75732:2/28/53:123500 @@ -235,10 +220,10 @@ sed -n '5,10p' datafile Jennifer Cowan:548-834-2348:583 Laurel Ave., Kingsville, TX 83745:10/1/35:58900 Jon DeLoach:408-253-3122:123 Park St., San Jose, CA 04086:7/25/53:85100 -Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100 -Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 +Lori Gortz:327-832-5728:3465 Mirlo Street, Peabody, MA 34756:10/2/65:35200 +Paco Gutierrez:835-365-1284:454 Easy Street, Decatur, IL 75732:2/28/53:123500 ``` ### 删除包含Lane的行 @@ -250,8 +235,6 @@ Igor Chevsky:385-375-8395:3567 Populus Place, Caldwell, NJ 23875:6/18/68:23400 Norma Corder:397-857-2735:74 Pine Street, Dearborn, MI 23874:3/28/45:245700 Jennifer Cowan:548-834-2348:583 Laurel Ave., Kingsville, TX 83745:10/1/35:58900 Jon DeLoach:408-253-3122:123 Park St., San Jose, CA 04086:7/25/53:85100 -Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100 -Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 Lori Gortz:327-832-5728:3465 Mirlo Street, Peabody, MA 34756:10/2/65:35200 Paco Gutierrez:835-365-1284:454 Easy Street, Decatur, IL 75732:2/28/53:123500 @@ -275,7 +258,6 @@ sed -n '/\:1[12]\//p' datafile Steve Blenheim:238-923-7366:95 Latham Lane, Easton, PA 83755:11/12/56:20300 Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 -Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 James Ikeda:834-938-8376:23445 Aster Ave., Allentown, NJ 83745:12/1/38:45000 Barbara Kertz:385-573-8326:832 Ponce Drive, Gary, IN 83756:12/1/46:268500 ``` @@ -291,11 +273,8 @@ Igor Chevsky:385-375-8395:3567 Populus Place, Caldwell, NJ 23875:6/18/68:23400 Norma Corder:397-857-2735:74 Pine Street, Dearborn, MI 23874:3/28/45:245700 Jennifer Cowan:548-834-2348:583 Laurel Ave., Kingsville, TX 83745:10/1/35:58900 Jon DeLoach:408-253-3122:123 Park St., San Jose, CA 04086:7/25/53:85100 -Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100 -Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 ***Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 -***Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 Lori Gortz:327-832-5728:3465 Mirlo Street, Peabody, MA 34756:10/2/65:35200 Paco Gutierrez:835-365-1284:454 Easy Street, Decatur, IL 75732:2/28/53:123500 Ephram Hardy:293-259-5395:235 CarltonLane, Joliet, IL 73858:8/12/20:56700 @@ -325,10 +304,7 @@ Igor Chevsky:385-375-8395:3567 Populus Place, Caldwell, NJ 23875:6/18/68:23400 Norma Corder:397-857-2735:74 Pine Street, Dearborn, MI 23874:3/28/45:245700 Jennifer Cowan:548-834-2348:583 Laurel Ave., Kingsville, TX 83745:10/1/35:58900 JOSE HAS RETIRED -Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100 Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 -Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 -Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 Lori Gortz:327-832-5728:3465 Mirlo Street, Peabody, MA 34756:10/2/65:35200 Paco Gutierrez:835-365-1284:454 Easy Street, Decatur, IL 75732:2/28/53:123500 @@ -359,10 +335,7 @@ Igor Chevsky:385-375-8395:3567 Populus Place, Caldwell, NJ 23875:6/18/68:23400 Norma Corder:397-857-2735:74 Pine Street, Dearborn, MI 23874:3/28/45:245700 Jennifer Cowan:548-834-2348:583 Laurel Ave., Kingsville, TX 83745:10/1/35:58900 Jon DeLoach:408-253-3122:123 Park St., San Jose, CA 04086:7/25/53:85100 -Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100 Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 -Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 -Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 Lori Gortz:327-832-5728:3465 Mirlo Street, Peabody, MA 34756:10/2/65:35200 Paco Gutierrez:835-365-1284:454 Easy Street, Decatur, IL 75732:2/28/53:123500 @@ -393,10 +366,7 @@ Igor Chevsky:385-375-8395:3567 Populus Place, Caldwell, NJ 23875:6/18/68:23400 Norma Corder:397-857-2735:74 Pine Street, Dearborn, MI 23874:3/28/45:245700 Jennifer Cowan:548-834-2348:583 Laurel Ave., Kingsville, TX 83745:10/1/35:58900 Jon DeLoach:408-253-3122:123 Park St., San Jose, CA 04086:7/25/53:85100 -Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100 Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 -Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200 -Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900 Lori Gortz:327-832-5728:3465 Mirlo Street, Peabody, MA 34756:10/2/65:35200 Paco Gutierrez:835-365-1284:454 Easy Street, Decatur, IL 75732:2/28/53:123500 @@ -416,30 +386,6 @@ Yukio Takeshida:387-827-1095:13 Uno Lane, Ashville, NC 23556:7/1/29:57000 Vinh Tranh:438-910-7449:8235 Maple Street, Wilmington, VM 29085:9/23/63:68900 ``` -### 写一个脚本,满足如下要求 - -1. 在第一行之前插入标题"PERSONNEL FILE" -2. 删除以500结尾的工资 -3. 显示文件内容,把姓和名颠倒 -4. 在文件末尾添加"THE END" - -```shell -#! /bin/sh - -# 将第1个字段(姓名)导出到cut1文件 -cut -d: -f1 datafile > cut1 -# 将第1个字段导出到cut2文件 -cut -d: -f2,3,4,5 datafile > cut2 -# 将cut1文件中的姓和名颠倒,导出到cut3文件 -awk '{print $2" "$1}' cut1 > cut3 -# 将cut3和cut2文件中的字段拼接,导出到cut4文件 -paste -d: cut3 cut2 > cut4 -# 将cut4文件中以500结尾的行删除 -sed -e 's/[1-9]*500$//' cut4 > cut0 - -awk 'BEGIN {print "\t\t\tPERSONNEL FILE\n"} {print $0} END {print "\t\t\tTHE END"}' cut0 -``` - ## awk命令练习 首先创建`datafile`文件,包含名字,电话号码和过去三个月里的捐款 @@ -464,34 +410,46 @@ Elizabeth Stachelin:[916] 440-1763:175:75:300 ```shell awk -F: '{print $2}' datafile -[510] 548-1278 -[408] 538-2358 -[206] 654-6279 -[206] 548-1348 -[206] 548-1278 -[916] 343-6410 -[406] 298-7744 -[206] 548-1278 -[916] 348-4278 -[510] 548-5258 -[408] 926-3456 -[916] 440-1763 +238-923-7366 +245-836-8357 +385-375-8395 +397-857-2735 +548-834-2348 +408-253-3122 +284-758-2867 +674-843-1385 +327-832-5728 +835-365-1284 +293-259-5395 +834-938-8376 +385-573-8326 +408-456-1234 +846-836-2837 +837-835-8257 +408-233-8971 +834-823-8319 +923-835-8745 +156-454-3322 +385-898-8357 +408-724-0140 +387-827-1095 +438-910-7449 ``` -### 显示Dan的电话号码 +### 显示Arthur的电话号码 ```shell -awk -F: '$1~/^Dan/{print $2}' datafile +awk -F: '$1~/^Arthur/{print $2}' datafile -[406] 298-7744 +923-835-8745 ``` -### 显示Susan的名字和电话号码 +### 显示Arthur的名字和电话号码 ```shell -awk -F: '$1~/^Susan/{print $1":"$2}' datafile +awk -F: '$1~/^Arthur/{print $1":"$2}' datafile -Susan Dalsass:[206] 654-6279 +Arthur Putie:923-835-8745 ``` ### 显示所有以D开头的姓 @@ -499,18 +457,17 @@ Susan Dalsass:[206] 654-6279 ```shell awk -F"[: ]" '$2~/^D/{print $2}' datafile -Dobbins -Dalsass +DeLoach ``` -### 显示所有以一个C或E开头的名 +### 显示所有以一个B或E开头的名 ```shell -awk -F"[: ]" '$1~/^C|E/{print $1}' datafile +awk -F"[: ]" '$1~/^B|E/{print $1}' datafile -Christian -Chet -Elizabeth +Betty +Ephram +Barbara ``` ### 显示所有只有四个字符的名 @@ -518,28 +475,28 @@ Elizabeth ```shell awk 'length($1)==4{print $1}' datafile -Mike -Jody -John -Chet +Igor +Fred +Lori +Paco +Jose +Vinh ``` -### 显示所有区号为916的人名 +### 显示所有区号为835的人名 ```shell -awk -F"[: ]" '$3~/\[916\]/{print $1,$2}' datafile +awk -F"[: ]" '$3~/^835/{print $1,$2}' datafile -Guy Quigley -John Goldenrod -Elizabeth Stachelin +Paco Gutierrez ``` -### 显示Mike的捐款.显示每个值时都有以$开头.如$250$100$175 +### 显示Paco的工资.显示时工资以$开头.如$10000 ```shell -awk -F"[: ]" '$1~/Mike/{print "$"$5,"$"$6,"$"$7}' datafile +awk -F"[:]" '$1~/Paco/{print "$"$5}' datafile -$250 $100 $175 +$123500 ``` ### 显示姓,其后跟一个逗号和名,如Jody,Savage @@ -547,33 +504,54 @@ $250 $100 $175 ```shell awk -F"[: ]" '{print $2","$1}' datafile -Harrington,Mike -Dobbins,Christian -Dalsass,Susan -McNichol,Archie -Savage,Jody -Quigley,Guy -Savage,Dan -McNeil,Nancy -Goldenrod,John -Main,Chet -Savage,Tom -Stachelin,Elizabeth -``` +Blenheim,Steve +Boop,Betty +Chevsky,Igor +Corder,Norma +Cowan,Jennifer +DeLoach,Jon +Evich,Karen +Fardbarkle,Fred +Gortz,Lori +Gutierrez,Paco +Hardy,Ephram +Ikeda,James +Kertz,Barbara +Kirstin,Lesley +Kopf,William +Lancelot,Sir +Neal,Jesse +Pinhead,Zippy +Putie,Arthur +Sailor,Popeye +Santiago,Jose +Savage,Tommy +Takeshida,Yukio +Tranh,Vinh +``` + +## 综合练习 + +写一个脚本,满足如下要求: -### 写一个脚本,满足如下要求 +1. 在第一行之前插入标题"PERSONNEL FILE" +2. 删除以500结尾的工资 +3. 显示文件内容,把姓和名颠倒 +4. 在文件末尾添加"THE END" -1. 显示Savage的全名和电话号码 -2. 显示Chet的捐款 -3. 显示所有头一个月捐款$250的人名. +```shell +#! /bin/sh -注:区号本来是圆括号表示的. +# 将第1个字段(姓名)导出到cut1文件 +cut -d: -f1 datafile > cut1 +# 将第1个字段导出到cut2文件 +cut -d: -f2,3,4,5 datafile > cut2 +# 将cut1文件中的姓和名颠倒,导出到cut3文件 +awk '{print $2" "$1}' cut1 > cut3 +# 将cut3和cut2文件中的字段拼接,导出到cut4文件 +paste -d: cut3 cut2 > cut4 +# 将cut4文件中以500结尾的行删除 +sed -e 's/[1-9]*500$//' cut4 > cut0 -```shell -#!/bin/sh -awk -F: '$1~/Savage/{print $1":"$2}' datafile > tmp -awk -F: '$1~/Chet/{print $3,$4,$5}'datafile >> tmp -awk -F: '$3~/250/{print $1}' datafile >> tmp -cat tmp -rm tmp +awk 'BEGIN {print "\t\t\tPERSONNEL FILE\n"} {print $0} END {print "\t\t\tTHE END"}' cut0 ``` From b947a27bbf2db0494ed1bbf7c11a5616f2d9d070 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sat, 6 Apr 2024 18:05:52 +0800 Subject: [PATCH 169/234] update blogs --- .../2020-02-10-Grep-Sed-Awk-Example.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) rename "_drafts/202002101104_grep_sed_awk\347\273\203\344\271\240.md" => _posts/2020-02-10-Grep-Sed-Awk-Example.md (99%) diff --git "a/_drafts/202002101104_grep_sed_awk\347\273\203\344\271\240.md" b/_posts/2020-02-10-Grep-Sed-Awk-Example.md similarity index 99% rename from "_drafts/202002101104_grep_sed_awk\347\273\203\344\271\240.md" rename to _posts/2020-02-10-Grep-Sed-Awk-Example.md index c57ded8..fec456d 100644 --- "a/_drafts/202002101104_grep_sed_awk\347\273\203\344\271\240.md" +++ b/_posts/2020-02-10-Grep-Sed-Awk-Example.md @@ -1,4 +1,15 @@ -# grep_sed_awk练习 +--- +title: "一个例子掌握grep, sed, awk" +categories: + - Blog +tags: + - Linux + - Grep + - Sed + - Awk + +toc: true +--- ## 数据文件 From d7ca47379ecd49c54b4d8839cd21614302af009b Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 7 Apr 2024 23:09:33 +0800 Subject: [PATCH 170/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 22 ++++++++++++++++++- ChooseYourBest.md | 1 + ...46\344\271\240\344\271\213\350\267\257.md" | 1 + ...46\344\271\240\344\271\213\350\267\257.md" | 5 ++--- ...46\344\271\240\344\271\213\350\267\257.md" | 10 ++++----- ...46\344\271\240\344\271\213\350\267\257.md" | 9 ++++---- ...46\344\271\240\344\271\213\350\267\257.md" | 16 ++++++++++++++ ...46\344\271\240\344\271\213\350\267\257.md" | 2 -- ...46\344\271\240\344\271\213\350\267\257.md" | 1 + 9 files changed, 51 insertions(+), 16 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 20e77a8..b1c289b 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -160,6 +160,16 @@ * 关于Android外设键盘导致系统输入法隐藏的解决方案: +### USB + +* USB 主机和配件概览: +* Android 开放配件 (AOA): +* Android Open Accessory 协议分析与开发: +* Android下USB Accessory的实现分析: + +* Android 对 USB 音频类的支持: +* How to enable USB "Audio Source" option on Android 9+? + ### Binder * 架构概览: @@ -276,8 +286,18 @@ ### 文本分类 +* android.view.textclassifier: + * Implement text classifier: -* TextClassification介绍(一): + +* TextClassification – Part 1: +* TextClassification – Part 2: +* TextClassification – Part 3: + +* TensorFlow Lite: +* TensorFlow Lite 视频系列教程: +* MediaPipe: +* Google MediaPipe:设备端机器学习【完整解决方案】背后的技术实现: ### App Links diff --git a/ChooseYourBest.md b/ChooseYourBest.md index 791dd50..bc049c6 100644 --- a/ChooseYourBest.md +++ b/ChooseYourBest.md @@ -32,6 +32,7 @@ |[Xmind](https://xmind.cn/)|是|全平台|Pro版收费| | |[MindManager](https://www.mindmanager.com/cn/)|是|Windows/Mac|收费| | |[MindMaster](https://www.edrawsoft.cn/mindmaster/)|是|Windows/Mac/Linux|免费导出有水印| | +|[ProcessOn](https://www.processon.com/)|是|Web|收费| | |[Freeplane](https://sourceforge.net/projects/freeplane/)|是|Windows/Mac/Linux|开源免费 |FreeMind的比较活跃分支| |[DiagramDesigner](https://github.com/meesoft/DiagramDesigner)|是|Windows|开源免费| | |[FreeMind](https://freemind.sourceforge.net/)|否|Windows/Mac/Linux|开源免费| | diff --git "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" index cee1d56..c78920b 100644 --- "a/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -197,6 +197,7 @@ * IntelliJ IDEA: * Clion: * RustRover: +* RubyMine: * Eclipse Code Formatter: ## Emacs diff --git "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index bf035f4..f08ee18 100644 --- "a/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -310,11 +310,11 @@ * AmaterasUML: * Green UML: -* ModelGoon UML4Java(已停止维护): +* ~~ModelGoon UML4Java: ~~ * StarUML: * Astah(JUDE): * UML关系(泛化,实现,依赖,关联(聚合,组合)): -* 解析UML箭头、线条代表的意义: +* 解析UML箭头、线条代表的意义: ## OSGI @@ -529,7 +529,6 @@ Eclipse中`Update Project`,选择`Force Update of Snapshots/Releases` * * httpcomponents-core-4.4.x.chm * httpcomponents-httpclient-4.5.chm -* 使用样例(搜索HttpClientTest): ## Maven diff --git "a/Ruby\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Ruby\345\255\246\344\271\240\344\271\213\350\267\257.md" index 0cf741b..6b55f2f 100644 --- "a/Ruby\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Ruby\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,13 +1,11 @@ # Ruby学习之路 -* -* Help and documentation for the Ruby programming language: -* 寻找、安装以及发布 RubyGems: +* Ruby: +* Help and documentation for the Ruby programming language: +* RubyGems: * Ruby on Rails 指南: * Programming Ruby The Pragmatic Programmer's Guide: -* RDE - Ruby IDE on Windows: -* +* 写给 Ruby 新人的公开信: * irb 與 ruby 指令: -* 写给 Ruby 新人的公开信: diff --git "a/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" index 40ffaf8..284de3b 100644 --- "a/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -10,11 +10,12 @@ ## 个人网站搭建 -* GitHub Pages + Hexo搭建博客: -* Hexo+Next搭建Github个人静态博客: -* jekyll: * 静态博客网站生成器jekyll、hexo和hugo如何选择?有什么区别? -* gohugo: +* jekyll(将纯文本转换为静态博客网站, Ruby): +* minimal-mistakes(jekyll主题): +* modernist(jekyll主题): +* Hexo(快速、简洁且高效的博客框架,Node.js): +* Hugo(The world’s fastest framework for building websites, Go): * WordPress: ## Tools diff --git "a/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" index 6230ffd..ee8cfde 100644 --- "a/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -80,3 +80,19 @@ Apache Mahout是基于Hadoop生态圈的一个机器学习库。 ## Apache Phoenix * Apache Phoenix: + +## MPI + +* Open MPI(Open Source High Performance Computing): +* Open MPI Frequently Asked Questions: +* The “vader” shared memory transport in Open MPI: Now featuring 3 flavors of zero copy! +* openMPI小集群安装: + +* MPICH: +* Setting Up an MPICH2 Cluster in Ubuntu: +* MPI Forum: +* DataMPI: + +* MapReduce-MPI Library: +* Hadoop 与MPI: +* mrmpi package in Ubuntu: diff --git "a/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" index 996985c..d2e9386 100644 --- "a/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -11,8 +11,6 @@ * Keras(基于 Python 的深度学习库): * TensorFlow: -* TensorFlow Lite: -* TensorFlow Lite 视频系列教程: * PyTorch: ## 基于大数据模型的一些产品与网站 diff --git "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index e8127b1..9a4a961 100644 --- "a/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -156,6 +156,7 @@ git push origin master:b1 * CONTRIBUTOR CODE OF CONDUCT: * codedocs: * shields: +* Font Awesome(Font Awesome is the Internet's icon library and toolkit): * VersionEye(已废弃): * Semantic Versioning: * The missing GitHub star history graph: From e5ae3aa362c1d8fbab889edd831c1d3105d41506 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 7 Apr 2024 23:20:33 +0800 Subject: [PATCH 171/234] update --- "Android\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + 1 file changed, 1 insertion(+) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index b1c289b..90d81ce 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -91,6 +91,7 @@ ### Input相关 +* 输入: * 图解 Android 事件分发机制: * requestDisallowInterceptTouchEvent() 阻止父层的View截获touch事件(事件处理机制): * View·InputEvent事件投递源码分析: From 909a495f87cfca59b08eb900a2bc94a6384bda78 Mon Sep 17 00:00:00 2001 From: Aloys Date: Wed, 10 Apr 2024 00:39:27 +0800 Subject: [PATCH 172/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 90d81ce..af9cdfd 100644 --- "a/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -16,8 +16,6 @@ * NDK: -* Intent: -* PendingIntent: * Settings.Global: * Android开发者预览版: @@ -157,10 +155,6 @@ * 复制和粘贴: -### 输入法与输入法框架 - -* 关于Android外设键盘导致系统输入法隐藏的解决方案: - ### USB * USB 主机和配件概览: @@ -171,6 +165,21 @@ * Android 对 USB 音频类的支持: * How to enable USB "Audio Source" option on Android 9+? +### 输入法与输入法框架 + +* Create an input method: +* InputMethodManager#Security: +* 关于Android外设键盘导致系统输入法隐藏的解决方案: + +### AMS + +* Intent: +* PendingIntent: +* android Application Component研究之Service: +* PendingIntent重定向:一种针对安卓系统和流行App的通用提权方法——BlackHat EU 2021议题详解(上): +* PendingIntent重定向:一种针对安卓系统和流行App的通用提权方法——BlackHat EU 2021议题详解 (下): +* 对于android.intent.action.MAIN和android.intent.category.LAUNCHER的理解: + ### Binder * 架构概览: @@ -391,7 +400,6 @@ * Android核心分析: * Android系统开篇: -* 对于android.intent.action.MAIN和android.intent.category.LAUNCHER的理解: * 详解 Android 通信: * Android Application的使用及其生命周期: * Android Partitions Explained: boot, system, recovery, data, cache & misc: From 93353ba3c9729a448f6bc122c8d12a9cf9df022e Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 14 Apr 2024 10:37:41 +0800 Subject: [PATCH 173/234] backup all articles from cnblogs --- ...36\344\276\213\350\256\262\350\247\243.md" | 56 ++ ...-04-13-Password-Recovery-Tools-Analysis.md | 104 +++ ...67\347\232\204\345\205\263\347\263\273.md" | 105 +++ ...++\344\270\272\344\276\213\357\274\211.md" | 335 +++++++++ .../Android OTA\345\215\207\347\272\247.md" | 18 + ...22\344\273\266\346\261\207\346\200\273.md" | 14 + ...56\345\275\225\350\247\243\346\236\220.md" | 11 + ...76\347\275\256\346\226\271\346\263\225.md" | 17 + ...06\346\210\220\350\257\264\346\230\216.md" | 80 +++ ...04\345\273\272\347\263\273\347\273\237.md" | 276 ++++++++ ...e3\347\232\204\346\226\271\346\263\225.md" | 62 ++ ...03\344\272\206\357\274\201\357\274\201.md" | 149 ++++ ...66\347\273\223\346\235\237\347\254\246.md" | 55 ++ ...67\345\244\247\351\230\205\345\205\265.md" | 64 ++ ...31\350\257\257cannot have cv-qualifier.md" | 62 ++ ...50\346\263\225\345\256\236\344\276\213.md" | 173 +++++ ...texit\343\200\201exit\345\222\214_Exit.md" | 69 ++ ...60\345\272\223\347\256\200\344\273\213.md" | 31 + ...\241\346\213\237\345\231\250(CacheSim).md" | 30 + ...25\347\232\204\345\214\272\345\210\253.md" | 66 ++ ...57\345\242\203\351\205\215\347\275\256.md" | 78 +++ ...70\345\205\263\351\227\256\351\242\230.md" | 75 ++ ...70\347\224\250\350\257\255\345\217\245.md" | 81 +++ ...56\351\242\230\345\210\206\346\236\220.md" | 31 + ...6\346\265\213\350\257\225 \350\275\254.md" | 131 ++++ ...37\345\260\217\346\212\200\345\267\247.md" | 154 +++++ ...70\345\205\263\351\227\256\351\242\230.md" | 332 +++++++++ ...43\345\206\263\346\226\271\346\241\210.md" | 38 ++ "_drafts/FindBugs\350\257\246\350\247\243.md" | 79 +++ ...06\345\244\207\345\267\245\344\275\234.md" | 152 +++++ "_drafts/HBase\344\273\213\347\273\215.md" | 283 ++++++++ "_drafts/Hibernate\344\270\216autoCommit.md" | 20 + ...how tabs"\345\274\200\345\247\213.md" | 645 ++++++++++++++++++ ...70\345\205\263\346\200\273\347\273\223.md" | 603 ++++++++++++++++ ...43\345\206\263\346\226\271\346\263\225.md" | 20 + ...23\357\274\210\350\275\254\357\274\211.md" | 18 + ...67\345\244\247\351\230\205\345\205\265.md" | 192 ++++++ "_drafts/Java\346\235\202\351\241\271.md" | 545 +++++++++++++++ ...56\351\242\230\346\261\207\346\200\273.md" | 13 + ...05\345\256\271\346\200\273\347\273\223.md" | 157 +++++ _drafts/Lecture Notes_ Macros.md | 185 +++++ ...234\200\346\226\260\347\232\204Eclipse.md" | 53 ++ ...70\347\224\250\345\221\275\344\273\244.md" | 57 ++ ...ux\345\277\253\346\215\267\351\224\256.md" | 56 ++ ...11\350\243\205\350\204\232\346\234\254.md" | 121 ++++ ...77\347\224\250\350\257\264\346\230\216.md" | 468 +++++++++++++ ...43\345\206\263\346\226\271\345\274\217.md" | 79 +++ ...44\346\225\260\346\215\256\345\272\223.md" | 14 + ...344\270\216UML\347\254\224\350\256\260.md" | 185 +++++ ...es\347\232\204\350\256\276\347\275\256.md" | 51 ++ ...70\347\224\250\345\221\275\344\273\244.md" | 18 + ...55\345\217\245\346\224\266\351\233\206.md" | 452 ++++++++++++ ...71\346\241\210\346\261\207\346\200\273.md" | 71 ++ ... Reviews Made Easy with Eclipse Plug-In.md | 235 +++++++ ...01\346\241\206\346\236\266\347\255\211.md" | 204 ++++++ ...AC\347\232\204\345\256\211\350\243\205.md" | 72 ++ ...36\350\267\265\346\214\207\345\215\227.md" | 360 ++++++++++ ...70\347\224\250\350\257\255\345\217\245.md" | 201 ++++++ ...4\346\226\260\344\274\230\345\214\226).md" | 107 +++ ...11\357\274\210\350\275\254\357\274\211.md" | 64 ++ ...20\357\274\210\350\275\254\357\274\211.md" | 107 +++ ...45\256\271swap\346\226\207\344\273\266.md" | 52 ++ ...50\346\226\271\345\220\221\351\224\256.md" | 35 + _drafts/Use the SVN command-line tool.md | 66 ++ ...50\346\263\225\346\200\273\347\273\223.md" | 302 ++++++++ ...56\351\242\230\346\200\273\347\273\223.md" | 106 +++ ...\217\221Hadoop\345\272\224\347\224\250.md" | 281 ++++++++ ...45\345\205\267\345\220\210\351\233\206.md" | 37 + ...56\351\242\230\346\261\207\346\200\273.md" | 31 + ...RNING] No dictionary file under folder.md" | 32 + ... files are present in two or more JARs.md" | 112 +++ ...coration links will not be relativized.md" | 38 ++ ...5\246[WARNING] Using legacy tag format.md" | 69 ++ ... create Maven project from repository..md" | 287 ++++++++ ...tTimeInMillis()]_[new Date().getTime()].md | 50 ++ ...77\347\224\250\350\257\264\346\230\216.md" | 88 +++ ...15\345\206\215\350\277\267\350\214\253.md" | 78 +++ ...264\346\226\260(web site) \350\275\254.md" | 129 ++++ ...70\345\205\263\351\227\256\351\242\230.md" | 72 ++ ...43\345\206\263\345\212\236\346\263\225.md" | 48 ++ ...10\346\255\242\350\277\220\347\256\227.md" | 13 + ...43\345\206\263\345\212\236\346\263\225.md" | 140 ++++ ...\350\275\254+\346\225\264\347\220\206).md" | 374 ++++++++++ ...r.filter.StrutsPrepareAndExecuteFilter.md" | 58 ++ ...07\344\273\266\350\257\246\350\247\243.md" | 71 ++ ...31\350\257\257\346\200\273\347\273\223.md" | 47 ++ ...25\346\215\211\346\240\267\344\276\213.md" | 85 +++ ...\346\216\214\346\217\241grep, sed, awk.md" | 556 +++++++++++++++ ...20\345\267\245\345\205\267\345\214\205.md" | 25 + ...07\347\250\213\346\200\273\347\273\223.md" | 36 + ...21\350\241\214\344\273\243\347\240\201.md" | 35 + ...60\345\222\214\345\210\240\351\231\244.md" | 106 +++ ...15\347\275\256\345\207\275\346\225\260.md" | 80 +++ ...5\344\273\2160\345\274\200\345\247\213.md" | 17 + ...15\346\210\220\347\233\256\346\240\207.md" | 9 + ...57\345\212\250\346\212\245\351\224\231.md" | 223 ++++++ ...17\345\225\206\345\212\237\350\203\275.md" | 31 + ...21\347\232\204\345\267\245\344\275\234.md" | 42 ++ ...00\347\232\204\345\214\272\345\210\253.md" | 19 + ...52\345\260\217\345\277\203\345\276\227.md" | 17 + ...03\357\274\210\350\275\254\357\274\211.md" | 83 +++ ...5\346\230\2572\347\232\204\345\271\202.md" | 103 +++ ...73\345\206\205\345\256\271\343\200\202.md" | 15 + ...07\347\250\213\350\256\260\345\275\225.md" | 78 +++ ...\347\233\256\345\275\225[\350\275\254].md" | 49 ++ ...274\226\347\250\213\351\242\230(C_C++).md" | 70 ++ ...41\351\201\215\345\216\206\357\274\211.md" | 70 ++ ...57\351\223\276\350\241\250\357\274\211.md" | 67 ++ ...13\357\274\210\350\275\254\357\274\211.md" | 184 +++++ ...56\345\274\202\345\257\271\346\257\224.md" | 27 + ...60\347\232\204\351\227\256\351\242\230.md" | 34 + ...41\347\232\204\345\214\272\345\210\253.md" | 27 + ...55\345\244\256\344\273\223\345\272\223.md" | 487 +++++++++++++ ...344\270\252Git\344\273\223\345\272\223.md" | 162 +++++ ...71\345\256\232\345\255\227\347\254\246.md" | 41 ++ ...37\357\274\210\350\275\254\357\274\211.md" | 163 +++++ ...47\232\204Java\344\273\243\347\240\201.md" | 25 + ....0\346\272\220\344\273\243\347\240\201.md" | 246 +++++++ ...30\346\261\240\345\211\226\346\236\220.md" | 1 + ...33\350\241\214\346\237\245\347\234\213.md" | 64 ++ ...07\344\273\266\350\276\223\345\207\272.md" | 60 ++ ...53\345\222\214\350\201\224\347\263\273.md" | 49 ++ ...15\345\222\214\345\257\206\347\240\201.md" | 54 ++ ...70\345\205\263\346\200\273\347\273\223.md" | 65 ++ ...67\357\274\210\350\275\254\357\274\211.md" | 34 + ...47\345\210\253\351\205\215\347\275\256.md" | 230 +++++++ ...ck\346\203\263\345\210\260\347\232\204.md" | 82 +++ ...PU\347\232\204\344\270\273\351\242\221.md" | 63 ++ ...downlint MD034\350\255\246\345\221\212.md" | 82 +++ ...e system"\351\227\256\351\242\230.md" | 23 + ...13\347\232\204\351\227\256\351\242\230.md" | 28 + ...lit-brain problem in HA)(\350\275\254).md" | 20 + ...34\345\213\230\350\257\257\350\241\250.md" | 95 +++ 133 files changed, 15362 insertions(+) create mode 100644 "_drafts/(\350\275\254)SQLServer\345\256\236\344\276\213\350\256\262\350\247\243.md" create mode 100644 _drafts/2024-04-13-Password-Recovery-Tools-Analysis.md create mode 100644 "_drafts/20\345\210\206\351\222\237\347\220\206\346\270\205Maven\346\236\204\345\273\272\344\270\255\347\232\204\346\265\213\350\257\225\347\233\270\345\205\263\345\267\245\345\205\267\347\232\204\345\205\263\347\263\273.md" create mode 100644 "_drafts/ACM\347\253\236\350\265\233\344\271\213\350\276\223\345\205\245\350\276\223\345\207\272\357\274\210\344\273\245C\344\270\216C++\344\270\272\344\276\213\357\274\211.md" create mode 100644 "_drafts/Android OTA\345\215\207\347\272\247.md" create mode 100644 "_drafts/Android Studio\345\270\270\347\224\250\346\217\222\344\273\266\346\261\207\346\200\273.md" create mode 100644 "_drafts/Android Studio\347\233\270\345\205\263\347\233\256\345\275\225\350\247\243\346\236\220.md" create mode 100644 "_drafts/Android Studio\347\247\273\345\212\250\351\274\240\346\240\207\346\230\276\347\244\272\346\202\254\346\265\256\346\217\220\347\244\272\347\232\204\350\256\276\347\275\256\346\226\271\346\263\225.md" create mode 100644 "_drafts/Android\345\271\263\345\217\260OpenGL ES_Assimp_OpenCV_GLM\351\233\206\346\210\220\350\257\264\346\230\216.md" create mode 100644 "_drafts/Android\346\236\204\345\273\272\347\263\273\347\273\237.md" create mode 100644 "_drafts/Android\347\234\237\346\234\272\345\256\211\350\243\205sqlite3\347\232\204\346\226\271\346\263\225.md" create mode 100644 "_drafts/ApkToolBoxGUI 0.0.8\345\217\221\345\270\203\344\272\206\357\274\201\357\274\201.md" create mode 100644 "_drafts/C++\344\273\216\351\224\256\347\233\230\350\276\223\345\205\245\346\226\207\344\273\266\347\273\223\346\235\237\347\254\246.md" create mode 100644 "_drafts/C++\344\273\243\347\240\201\350\264\250\351\207\217\345\272\246\351\207\217\345\267\245\345\205\267\345\244\247\351\230\205\345\205\265.md" create mode 100644 "_drafts/C++\347\274\226\350\257\221\351\224\231\350\257\257cannot have cv-qualifier.md" create mode 100644 "_drafts/C++\350\257\255\350\250\200\344\270\255cin cin.getline cin.get getline gets getchar \347\232\204\347\224\250\346\263\225\345\256\236\344\276\213.md" create mode 100644 "_drafts/C_C++\344\270\255\347\232\204abort\343\200\201atexit\343\200\201exit\345\222\214_Exit.md" create mode 100644 "_drafts/C_C++\345\244\247\346\225\260\345\272\223\347\256\200\344\273\213.md" create mode 100644 "_drafts/Cache\346\250\241\346\213\237\345\231\250(CacheSim).md" create mode 100644 "_drafts/Calendar\347\261\273\344\270\255add_set_roll\346\226\271\346\263\225\347\232\204\345\214\272\345\210\253.md" create mode 100644 "_drafts/Code Blocks+gtest\347\216\257\345\242\203\351\205\215\347\275\256.md" create mode 100644 "_drafts/C\350\257\255\350\250\200\344\270\255\351\232\217\346\234\272\346\225\260\347\233\270\345\205\263\351\227\256\351\242\230.md" create mode 100644 "_drafts/DB2\345\270\270\347\224\250\350\257\255\345\217\245.md" create mode 100644 "_drafts/Eclipse+Spark\346\220\255\345\273\272\346\272\220\347\240\201\345\210\206\346\236\220\347\216\257\345\242\203\351\227\256\351\242\230\345\210\206\346\236\220.md" create mode 100644 "_drafts/Eclipse\344\270\255Ant\347\232\204\351\205\215\347\275\256\344\270\216\346\265\213\350\257\225 \350\275\254.md" create mode 100644 "_drafts/Eclipse\345\205\250\351\235\242\346\217\220\351\200\237\345\260\217\346\212\200\345\267\247.md" create mode 100644 "_drafts/Eclipse\347\233\270\345\205\263\351\227\256\351\242\230.md" create mode 100644 "_drafts/Eclipse\350\277\234\347\250\213\350\260\203\350\257\225\345\207\272\347\216\260\342\200\234JDWP Transport dt_socket failed to initialize\342\200\235\347\232\204\350\247\243\345\206\263\346\226\271\346\241\210.md" create mode 100644 "_drafts/FindBugs\350\257\246\350\247\243.md" create mode 100644 "_drafts/Groovy\345\256\236\347\216\260\345\216\237\347\220\206\345\210\206\346\236\220\342\200\224\342\200\224\345\207\206\345\244\207\345\267\245\344\275\234.md" create mode 100644 "_drafts/HBase\344\273\213\347\273\215.md" create mode 100644 "_drafts/Hibernate\344\270\216autoCommit.md" create mode 100644 "_drafts/Input\346\272\220\347\240\201\350\247\243\350\257\273\342\200\224\342\200\224\344\273\216"Show tabs"\345\274\200\345\247\213.md" create mode 100644 "_drafts/J2EE\347\233\270\345\205\263\346\200\273\347\273\223.md" create mode 100644 "_drafts/JUnit org.junit.runner.Request.classWithoutSuiteMethod\350\247\243\345\206\263\346\226\271\346\263\225.md" create mode 100644 "_drafts/JVM\350\260\203\344\274\230\346\200\273\347\273\223\357\274\210\350\275\254\357\274\211.md" create mode 100644 "_drafts/Java\344\273\243\347\240\201\350\264\250\351\207\217\345\272\246\351\207\217\345\267\245\345\205\267\345\244\247\351\230\205\345\205\265.md" create mode 100644 "_drafts/Java\346\235\202\351\241\271.md" create mode 100644 "_drafts/Java\350\277\234\347\250\213\350\260\203\350\257\225\344\273\243\347\240\201\344\270\215\344\270\200\350\207\264\351\227\256\351\242\230\346\261\207\346\200\273.md" create mode 100644 "_drafts/LaTeX\345\206\205\345\256\271\346\200\273\347\273\223.md" create mode 100644 _drafts/Lecture Notes_ Macros.md create mode 100644 "_drafts/Linux\344\270\213\345\256\211\350\243\205\346\234\200\346\226\260\347\232\204Eclipse.md" create mode 100644 "_drafts/Linux\345\216\213\347\274\251\344\270\216\350\247\243\345\216\213\345\270\270\347\224\250\345\221\275\344\273\244.md" create mode 100644 "_drafts/Linux\345\277\253\346\215\267\351\224\256.md" create mode 100644 "_drafts/Linux\347\216\257\345\242\203\344\270\213JDK_Eclipse\344\270\200\351\224\256\345\256\211\350\243\205\350\204\232\346\234\254.md" create mode 100644 "_drafts/MIPSsim\344\275\277\347\224\250\350\257\264\346\230\216.md" create mode 100644 "_drafts/MYSQL\345\270\270\350\247\201\351\224\231\350\257\257\345\217\212\345\205\266\350\247\243\345\206\263\346\226\271\345\274\217.md" create mode 100644 "_drafts/MySQL\351\273\230\350\256\244\346\225\260\346\215\256\345\272\223.md" create mode 100644 "_drafts/OOAD\344\270\216UML\347\254\224\350\256\260.md" create mode 100644 "_drafts/Oracle\344\270\255session\345\222\214processes\347\232\204\350\256\276\347\275\256.md" create mode 100644 "_drafts/Oracle\345\257\274\345\205\245\345\257\274\345\207\272\345\270\270\347\224\250\345\221\275\344\273\244.md" create mode 100644 "_drafts/Oracle\347\263\273\347\273\237\350\241\250\346\225\264\347\220\206+\345\270\270\347\224\250SQL\350\257\255\345\217\245\346\224\266\351\233\206.md" create mode 100644 "_drafts/PDF\345\270\270\350\247\201\351\227\256\351\242\230\350\247\243\345\206\263\346\226\271\346\241\210\346\261\207\346\200\273.md" create mode 100644 _drafts/Peer Code Reviews Made Easy with Eclipse Plug-In.md create mode 100644 "_drafts/Python\347\254\254\344\270\211\346\226\271\345\270\270\347\224\250\345\267\245\345\205\267\343\200\201\345\272\223\343\200\201\346\241\206\346\236\266\347\255\211.md" create mode 100644 "_drafts/Rdseed\344\270\216SAC\347\232\204\345\256\211\350\243\205.md" create mode 100644 "_drafts/Repo\345\256\236\350\267\265\346\214\207\345\215\227.md" create mode 100644 "_drafts/SQL Server\345\270\270\347\224\250\350\257\255\345\217\245.md" create mode 100644 "_drafts/SVN+Apache\345\237\237\347\224\250\346\210\267\350\256\244\350\257\201\351\205\215\347\275\256\346\226\271\346\263\225_Windows(\350\275\254\357\274\214\351\207\215\346\226\260\346\216\222\347\211\210\357\274\214\351\203\250\345\210\206\345\206\205\345\256\271\346\233\264\346\226\260\344\274\230\345\214\226).md" create mode 100644 "_drafts/ServletInputStream\347\232\204\351\207\215\345\244\215\350\257\273\345\217\226\357\274\210\345\244\232\346\254\241\350\257\273\345\217\226\357\274\211\357\274\210\350\275\254\357\274\211.md" create mode 100644 "_drafts/Spring\346\241\206\346\236\266\347\232\204\345\217\215\345\272\217\345\210\227\345\214\226\350\277\234\347\250\213\344\273\243\347\240\201\346\211\247\350\241\214\346\274\217\346\264\236\345\210\206\346\236\220\357\274\210\350\275\254\357\274\211.md" create mode 100644 "_drafts/Ubuntu\346\211\251\345\256\271swap\346\226\207\344\273\266.md" create mode 100644 "_drafts/Unix_Linux\346\223\215\344\275\234\347\263\273\347\273\237\344\270\255\345\246\202\344\275\225\345\234\250sqlplus_rman\344\270\255\344\275\277\347\224\250\346\226\271\345\220\221\351\224\256.md" create mode 100644 _drafts/Use the SVN command-line tool.md create mode 100644 "_drafts/VIM\345\270\270\350\247\201\347\224\250\346\263\225\346\200\273\347\273\223.md" create mode 100644 "_drafts/VirtualBox\347\233\270\345\205\263\351\227\256\351\242\230\346\200\273\347\273\223.md" create mode 100644 "_drafts/Windows\345\271\263\345\217\260\344\270\213\345\256\211\350\243\205Eclipse\346\217\222\344\273\266\357\274\214\345\274\200\345\217\221Hadoop\345\272\224\347\224\250.md" create mode 100644 "_drafts/Windows\346\227\245\345\277\227\346\237\245\347\234\213\345\267\245\345\205\267\345\220\210\351\233\206.md" create mode 100644 "_drafts/XShell\344\275\277\347\224\250\351\227\256\351\242\230\346\261\207\346\200\273.md" create mode 100644 "_drafts/[Maven][l10n-maven-plugin]\345\221\212\350\255\246[WARNING] No dictionary file under folder.md" create mode 100644 "_drafts/[Maven][maven-shade-plugin]\345\221\212\350\255\246[WARNING] maven-shade-plugin has detected that some class files are present in two or more JARs.md" create mode 100644 "_drafts/[Maven][maven-site-plugin]\345\221\212\350\255\246[WARNING] No project URL defined - decoration links will not be relativized.md" create mode 100644 "_drafts/[Maven][taglist-maven-plugin]\345\221\212\350\255\246[WARNING] Using legacy tag format.md" create mode 100644 "_drafts/[Maven]\345\221\212\350\255\246[WARNING] Unable to create Maven project from repository..md" create mode 100644 _drafts/[System.currentTimeMillis]_[Calendar.getInstance().getTimeInMillis()]_[new Date().getTime()].md create mode 100644 "_drafts/astyle \344\275\277\347\224\250\350\257\264\346\230\216.md" create mode 100644 "_drafts/const \344\270\215\345\206\215\350\277\267\350\214\253.md" create mode 100644 "_drafts/eclipse\346\217\222\344\273\266\345\234\250\347\272\277\345\217\221\345\270\203\345\217\221\345\270\203\345\222\214\347\211\210\346\234\254\346\233\264\346\226\260(web site) \350\275\254.md" create mode 100644 "_drafts/javadoc\347\233\270\345\205\263\351\227\256\351\242\230.md" create mode 100644 "_drafts/linux\344\270\255\346\227\240 conio.h\347\232\204\350\247\243\345\206\263\345\212\236\346\263\225.md" create mode 100644 "_drafts/openmpi\345\207\272\347\216\260Segmentation Fault\350\200\214\347\273\210\346\255\242\350\277\220\347\256\227.md" create mode 100644 "_drafts/oracle\350\241\250\347\251\272\351\227\264\344\270\215\350\266\263\347\233\270\345\205\263\351\227\256\351\242\230\350\247\243\345\206\263\345\212\236\346\263\225.md" create mode 100644 "_drafts/oracle\350\241\250\347\251\272\351\227\264\350\241\250\345\210\206\345\214\272\350\257\246\350\247\243\345\217\212oracle\350\241\250\345\210\206\345\214\272\346\237\245\350\257\242\344\275\277\347\224\250\346\226\271\346\263\225(\350\275\254+\346\225\264\347\220\206).md" create mode 100644 "_drafts/org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter\344\270\216org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.md" create mode 100644 "_drafts/package-info.java\346\226\207\344\273\266\350\257\246\350\247\243.md" create mode 100644 "_drafts/ssh\347\233\270\345\205\263\345\216\237\347\220\206\345\255\246\344\271\240\344\270\216\345\270\270\350\247\201\351\224\231\350\257\257\346\200\273\347\273\223.md" create mode 100644 "_drafts/tcpdump\346\215\225\346\215\211\346\240\267\344\276\213.md" create mode 100644 "_drafts/\344\270\200\344\270\252\344\276\213\345\255\220\346\216\214\346\217\241grep, sed, awk.md" create mode 100644 "_drafts/\344\270\200\344\270\252\346\257\224\350\276\203\345\205\250\351\235\242\347\232\204java\351\232\217\346\234\272\346\225\260\346\215\256\347\224\237\346\210\220\345\267\245\345\205\267\345\214\205.md" create mode 100644 "_drafts/\344\270\200\344\270\252\347\224\261\344\272\216\347\275\221\347\273\234\351\227\256\351\242\230\345\257\274\350\207\264\347\232\204\346\234\215\345\212\241\346\227\240\346\263\225\344\275\277\347\224\250\342\200\224\342\200\224\350\260\203\350\257\225\350\277\207\347\250\213\346\200\273\347\273\223.md" create mode 100644 "_drafts/\344\270\200\344\270\252\347\250\213\345\272\217\345\221\230\350\203\275\345\244\237\346\216\247\345\210\266\345\244\232\345\260\221\350\241\214\344\273\243\347\240\201.md" create mode 100644 "_drafts/\344\270\200\347\257\207\346\226\207\347\253\240\346\220\236\346\207\202Debian_Ubuntu\350\275\257\344\273\266\345\214\205\346\233\264\346\226\260\345\222\214\345\210\240\351\231\244.md" create mode 100644 "_drafts/\344\270\215\345\274\225\345\205\245\346\226\260\347\232\204\346\225\260\347\273\204\357\274\214\345\256\236\347\216\260\346\225\260\347\273\204\345\205\203\347\264\240\344\272\244\346\215\242\344\275\215\347\275\256\345\207\275\346\225\260.md" create mode 100644 "_drafts/\344\270\272\344\273\200\344\271\210\345\244\247\345\244\232\346\225\260\347\274\226\347\250\213\350\257\255\350\250\200\344\270\255\347\232\204\346\225\260\347\273\204\351\203\275\344\273\2160\345\274\200\345\247\213.md" create mode 100644 "_drafts/\344\270\272\344\273\200\344\271\210\346\210\221\344\273\254\346\200\273\346\230\257\345\256\214\344\270\215\346\210\220\347\233\256\346\240\207.md" create mode 100644 "_drafts/\344\275\277\347\224\250CXF+Spring\345\217\221\345\270\203WebService\357\274\214\345\220\257\345\212\250\346\212\245\351\224\231.md" create mode 100644 "_drafts/\344\275\277\347\224\250OpenSSL\345\256\236\347\216\260X25519\347\247\230\351\222\245\345\215\217\345\225\206\345\212\237\350\203\275.md" create mode 100644 "_drafts/\344\275\277\347\224\250PowerShell\347\256\200\345\214\226\346\210\221\347\232\204\345\267\245\344\275\234.md" create mode 100644 "_drafts/\345\205\263\344\272\216\345\274\272\345\210\266\345\274\217\357\274\210\345\221\275\344\273\244\345\274\217\357\274\211\350\257\255\350\250\200\345\222\214\345\243\260\346\230\216\345\274\217\350\257\255\350\250\200\347\232\204\345\214\272\345\210\253.md" create mode 100644 "_drafts/\345\205\263\344\272\216\350\256\260\345\275\225\346\227\245\345\277\227\347\232\204\345\207\240\344\270\252\345\260\217\345\277\203\345\276\227.md" create mode 100644 "_drafts/\345\210\206\350\257\215\345\267\245\345\205\267\346\257\224\350\276\203\357\274\210\350\275\254\357\274\211.md" create mode 100644 "_drafts/\345\210\244\346\226\255\344\270\200\344\270\252\346\225\260\346\230\257\344\270\215\346\230\2572\347\232\204\345\271\202.md" create mode 100644 "_drafts/\345\210\251\347\224\250Spring\344\270\255\345\220\214\345\220\215Bean\347\233\270\344\272\222\350\246\206\347\233\226\347\232\204\347\211\271\346\200\247\357\274\214\345\256\232\345\210\266\345\271\263\345\217\260\347\232\204\347\261\273\345\206\205\345\256\271\343\200\202.md" create mode 100644 "_drafts/\345\210\266\344\275\234Aspose CHM\346\226\207\346\241\243\347\232\204\350\277\207\347\250\213\350\256\260\345\275\225.md" create mode 100644 "_drafts/\345\211\224\351\231\244eclipse\347\232\204configuration\347\233\256\345\275\225[\350\275\254].md" create mode 100644 "_drafts/\345\215\216\344\270\272\351\235\242\350\257\225\351\242\230\342\200\224\342\200\224\344\270\200\351\201\223\345\205\263\344\272\216\346\214\207\351\222\210\346\226\271\351\235\242\347\232\204\347\274\226\347\250\213\351\242\230(C_C++).md" create mode 100644 "_drafts/\345\215\216\344\270\272\351\235\242\350\257\225\351\242\230\342\200\224\342\200\224\345\215\225\345\220\221\351\223\276\350\241\250\345\200\222\350\275\254\357\274\210\344\270\200\346\254\241\351\201\215\345\216\206\357\274\211.md" create mode 100644 "_drafts/\345\215\216\344\270\272\351\235\242\350\257\225\351\242\230\342\200\224\342\200\224\347\272\246\347\221\237\345\244\253\351\227\256\351\242\230\347\232\204C++\347\256\200\345\215\225\345\256\236\347\216\260\357\274\210\345\276\252\347\216\257\351\223\276\350\241\250\357\274\211.md" create mode 100644 "_drafts/\345\234\250 Windows \344\270\212\345\256\211\350\243\205 Hadoop \346\225\231\347\250\213\357\274\210\350\275\254\357\274\211.md" create mode 100644 "_drafts/\345\234\250TortoiseSVN_TortoiseGit\344\270\255\344\275\277\347\224\250BeyondCompare\350\277\233\350\241\214\345\267\256\345\274\202\345\257\271\346\257\224.md" create mode 100644 "_drafts/\345\234\250\345\267\245\344\275\234\344\270\255\351\201\207\345\210\260\347\232\204\351\227\256\351\242\230.md" create mode 100644 "_drafts/\345\237\272\344\272\216\345\257\271\350\261\241\345\222\214\351\235\242\345\220\221\345\257\271\350\261\241\347\232\204\345\214\272\345\210\253.md" create mode 100644 "_drafts/\345\246\202\344\275\225\345\217\221\345\270\203Maven\344\276\235\350\265\226\345\210\260\344\270\255\345\244\256\344\273\223\345\272\223.md" create mode 100644 "_drafts/\345\246\202\344\275\225\345\220\210\345\271\266\344\270\244\344\270\252Git\344\273\223\345\272\223.md" create mode 100644 "_drafts/\345\246\202\344\275\225\345\234\250\345\244\247\351\207\217jar\345\214\205\344\270\255\346\220\234\347\264\242\347\211\271\345\256\232\345\255\227\347\254\246.md" create mode 100644 "_drafts/\345\246\202\344\275\225\345\273\272\347\253\213DB2\345\210\206\345\214\272\346\225\260\346\215\256\345\272\223\357\274\237\357\274\210\350\275\254\357\274\211.md" create mode 100644 "_drafts/\345\246\202\344\275\225\347\274\226\345\206\231\350\267\250\345\271\263\345\217\260\347\232\204Java\344\273\243\347\240\201.md" create mode 100644 "_drafts/\345\246\202\344\275\225\347\274\226\350\257\221Apache Hadoop2.2.0\346\272\220\344\273\243\347\240\201.md" create mode 100644 "_drafts/\345\257\271\350\261\241\346\261\240\343\200\201\347\272\277\347\250\213\346\261\240\343\200\201\346\225\260\346\215\256\345\272\223\350\277\236\346\216\245\346\261\240\343\200\201\345\206\205\345\255\230\346\261\240\345\211\226\346\236\220.md" create mode 100644 "_drafts/\345\260\206AOSP\346\272\220\347\240\201\345\257\274\345\205\245\345\210\260Android Studio\350\277\233\350\241\214\346\237\245\347\234\213.md" create mode 100644 "_drafts/\345\261\217\345\271\225\350\276\223\345\207\272VS\346\226\207\344\273\266\350\276\223\345\207\272.md" create mode 100644 "_drafts/\345\275\273\345\272\225\346\220\236\346\207\202Gradle\343\200\201Gradle Wrapper\344\270\216Android Plugin for Gradle\347\232\204\345\214\272\345\210\253\345\222\214\350\201\224\347\263\273.md" create mode 100644 "_drafts/\345\277\230\350\256\260oracle\347\232\204sys\347\224\250\346\210\267\345\257\206\347\240\201\346\200\216\344\271\210\344\277\256\346\224\271\344\273\245\345\217\212Oracle 11g \351\273\230\350\256\244\347\224\250\346\210\267\345\220\215\345\222\214\345\257\206\347\240\201.md" create mode 100644 "_drafts/\346\225\260\346\215\256\345\272\223\347\233\270\345\205\263\346\200\273\347\273\223.md" create mode 100644 "_drafts/\346\270\205\347\220\206\346\227\240\347\224\250\347\232\204CSS\346\240\267\345\274\217\347\232\204\345\207\240\344\270\252\345\267\245\345\205\267\357\274\210\350\275\254\357\274\211.md" create mode 100644 "_drafts/\347\203\255\345\210\207\346\215\242Log4j\347\272\247\345\210\253\351\205\215\347\275\256.md" create mode 100644 "_drafts/\347\224\261\345\207\275\346\225\260clock\346\203\263\345\210\260\347\232\204.md" create mode 100644 "_drafts/\347\274\226\347\250\213\350\216\267\345\276\227CPU\347\232\204\344\270\273\351\242\221.md" create mode 100644 "_drafts/\350\203\275\350\256\251\347\250\213\345\272\217\345\201\232\347\232\204\344\272\213\346\203\205\345\235\232\345\206\263\344\270\215\347\224\250\344\272\272\346\235\245\345\201\232\342\200\224\342\200\224\346\211\271\351\207\217\344\277\256\345\244\215markdownlint MD034\350\255\246\345\221\212.md" create mode 100644 "_drafts/\350\247\243\345\206\263adb push\346\227\266\345\207\272\347\216\260\347\232\204"Read-only file system"\351\227\256\351\242\230.md" create mode 100644 "_drafts/\351\200\232\350\277\207\350\256\276\347\275\256JDK\350\247\243\345\206\263\345\255\230\345\234\250\345\244\232\344\270\252Gradle\345\220\216\345\217\260\350\277\233\347\250\213\347\232\204\351\227\256\351\242\230.md" create mode 100644 "_drafts/\351\253\230\345\217\257\347\224\250\346\200\247\344\270\255\347\232\204\350\204\221\350\243\202\351\227\256\351\242\230(split-brain problem in HA)(\350\275\254).md" create mode 100644 "_drafts/\351\270\237\345\223\245\347\232\204linux\347\247\201\346\210\277\350\217\234\345\213\230\350\257\257\350\241\250.md" diff --git "a/_drafts/(\350\275\254)SQLServer\345\256\236\344\276\213\350\256\262\350\247\243.md" "b/_drafts/(\350\275\254)SQLServer\345\256\236\344\276\213\350\256\262\350\247\243.md" new file mode 100644 index 0000000..39e434a --- /dev/null +++ "b/_drafts/(\350\275\254)SQLServer\345\256\236\344\276\213\350\256\262\350\247\243.md" @@ -0,0 +1,56 @@ +欢迎和大家交流技术相关问题: +邮箱: jiangxinnju@163.com +博客园地址: http://www.cnblogs.com/jiangxinnju +GitHub地址: https://github.com/jiangxincode +知乎地址: https://www.zhihu.com/people/jiangxinnju + +实例就是一个在数据库中存在的,现实的数据库例子。数据库实例就是后台进程和数据库文件的集合。一个SQL Server服务器就是一个实例,2000支持在同一个NT/2000 Server操作系统装多个服务器,换言之,就是多个实例。 + +# 多个SQL Server实例 + +Microsoft® SQL Server™ 2000 支持在同一台计算机上同时运行多个 SQL Server 数据库引擎实例。每个 SQL Server 数据库引擎实例各有一套不为其它实例共享的系统及用户数据库。应用程序连接同一台计算机上的 SQL Server 数据库引擎实例的方式与连接其它计算机上运行的 SQL Server 数据库引擎的方式基本相同。实例主要应用于数据库引擎及其支持组件,而不应用于客户端工具。如果安装了多个实例,则每个实例都将获得各自唯一的一套: +系统和用户数据库。 +SQL Server 和 SQL Server 代理服务。对于默认实例,服务名仍为 MSSQLServer 和 SQLServerAgent。对于命名实例,服务名改为 MSSQL$instancename 和 SQLAgent$instancename,使得这些服务与服务器上的其它实例分开启动和停止。可使用相关联的 SQL Server 服务启动和停止不同实例的数据库引擎。SQL Server 代理服务管理相关联的数据库引擎实例的调度事件。 +与数据库引擎、SQL Server 和 SQL Server 代理服务相关联的注册表键。使应用程序能连接特定实例的网络连接地址。 +有两种类型的 SQL Server 实例: + +## 默认实例 + +SQL Server 2000 数据库引擎默认实例的运行方式与 SQL Server 早期版本的数据库引擎相同。默认实例仅由运行该实例的计算机的名称唯一标识,它没有单独的实例名。如果应用程序在请求连接 SQL Server 时只指定了计算机名,则 SQL Server 客户端组件将尝试连接这台计算机上的数据库引擎默认实例。这保留了与现有 SQL Server 应用程序的兼容性。 一台计算机上只能有一个默认实例,而默认实例可以是 SQL Server 的任何版本。 +计算机名是可以修改的,但修改后对默认实例无影响,即默认实例随计算机名的改变而改变,所以说,默认实例的名称是与计算机名相同,而不是称为"local",但一般情况下,如果要访问本机上的默认SQL服务器实例,使用计算机名、(local)、localhost、127.0.0.1、. 、本机IP地址,都可以达到相同的目的。但如果要访问非本机的SQL服务器,那就必须使用计算机/实例名的办法。 + +## 命名实例 + +除默认实例外,所有数据库引擎实例都由安装该实例的过程中指定的实例名标识。应用程序必须提供准备连接的计算机的名称和命名实例的实例名。计算机名和实例名以格式 computer_name\instance_name 指定。 一台计算机上可以运行多个命名实例,但只有 SQL Server 2000 数据库引擎才可作为命名实例运行。SQL Server 早期版本中的数据库引擎不能作为命名实例运行。 + +# 共享组件 + +以下组件可由运行于同一台计算机上的所有实例共享: 此计算机上只有一个 SQL Server 2000 程序组 (Microsoft SQL Server),以及由该程序组中的每个图标表示的唯一一个实用工具的复本、唯一一个 SQL Server 联机丛书的复本。 +程序组中的实用工具版本来自计算机上最先安装的 SQL Server 2000 版本。例如,如果将 SQL Server 2000 简体中文版作为默认实例安装,然后将 SQL Server 2000 美国英语版作为命名实例安装,则只有一个 SQL Server 2000 程序组。该程序组中的所有实用工具图标和 SQL Server 联机丛书图标都将启动简体中文版的工具。 +所有 SQL Server 2000 实用工具都能处理多个实例。可以从一个 SQL Server 2000 服务管理器的复本启动和停止每个实例。可使用一个 SQL Server 2000企业管理器复本控制计算机上所有实例中的对象,使用一个 SQL Server 2000 服务器网络管理器复本管理计算机上所有实例的网络通讯地址。 +仅有一个 MSSearchService 复本管理针对计算机上所有 SQL Server 实例的全文检索。 +English Query 和 Microsoft SQL Server 2000 Analysis Services 服务器都只有一个复本。 +与客户端软件相关联的注册表键在实例间不重复。 +只有一个 SQL Server 开发库(包括 *.lib 文件)和示例应用程序的复本。 + +# 查看机器上所装实例 + +开始---运行, 输入 services.msc, 回车。在服务列表里, 找到 MSSQLSERVER 开头的, 有几个,就是几个实例。 + +# 更改SQL实例名 + +下面是从网上找到的一个方法,稍微复杂些,以后安装一定要注意了,否则带来很多麻烦.但更名方法亦是十分重要,应掌握. + 重新命名服务器的过程非常简单。你所需要做的就是给服务器改名,就像平时为Windows NT或Windows 2000 Server改名那样。重新启动计算机,然后系统会给出一个出错信息:“安装文件被破坏,或者未知的包标识”。看起来很吓人。但实际上你只需要重新运行SQL Server的安装程序,会有提示“是否升级到当前版本”。点击Yes,安装程序很快就结束了。实际上并没有进行重新安装,只是重新设置了有关服务器名字方面的选项。然后我们需要运行一些存储过程重置服务器名字,以便让SQL Server中的一些函数,例如有关复制的函数,能够有效地工作。 + 我们切换到示范计算机,这将是我们的最后一个示范。先关掉一些刚才启动的应用程序。到“我的电脑”属性,转到“网络标示”的属性,改变这台计算机的名字。我们把这台计算机的名字改为“Win2kSQL”,点击OK。然后提示需要重新启动计算机。OK,重新启动。重新启动后,我们回到了登录界面。正如我们刚才已经提到的,有提示说“安装文件被破坏,或者未知的包标识”。我们现在需要登录到服务器上,转到SQL Server安装文件的目录,然后重新运行安装程序。 现在我们到SQL Server安装文件的目录,运行安装程序。NT有提示说有SQL Server服务不能正常运行。需要等一会儿安装程序才能继续。Windows NT提示说服务控制失败。现在安装程序可以继续了,接下来安装程序询问安装到哪里。我们选择本地安装。然后是搜索已安装组件。下面安装程序询问是否升级到标准版。这个提示看起来比较奇怪,但这正是我们现在想要的。点击Yes,SQL Server将更新一些服务器设置。现在运行完毕,我们返回并启动SQL Server服务。 打开Query Ananlyzer,我们将装入最后一个脚本。转到脚本目录,打开这个叫做“Rename SQL”的脚本。如果我们现在打开sysservers表的话,我们就会发现它仍然是指向原先的服务器名。我们需要把这个服务器先删除,然后再添加,以便让sysservers表能够反映新的服务器名。现在我们来运行这段脚本,删除原先的服务器,然后再添加。现在我们就已经成功改变了服务器的名字 + --打开修改系统表的开关 + EXEC sp_configure 'allow updates',1 RECONFIGURE WITH OVERRIDE + + update master..sysservers set srvname='新服务器名',datasource='新服务器名',srvnetname='新服务器名' where srvname='旧服务器名' + + --关闭修改系统表的开关 + EXEC sp_configure 'allow updates',0 RECONFIGURE WITH OVERRIDE + go + +# 删除 SQL Serve实例 + +已经安装SQLServer实例,想把原来的SQLExpress实例删除。 第一步:进“控制面板”,打开“添加\删除程序”; 第二步:打开 sql server 2008 卸载程序(三个选择:添加、修复、删除,选中删除就好了); 第三步:在配置窗口右侧选择你要删除的 数据引擎 ; 第四步:勾选所有选择(为了彻底清除); 第五步:下一步 到结束; 第六步:等待(大概15 分钟左右)。 \ No newline at end of file diff --git a/_drafts/2024-04-13-Password-Recovery-Tools-Analysis.md b/_drafts/2024-04-13-Password-Recovery-Tools-Analysis.md new file mode 100644 index 0000000..8f66867 --- /dev/null +++ b/_drafts/2024-04-13-Password-Recovery-Tools-Analysis.md @@ -0,0 +1,104 @@ +--- +title: "密码恢复工具分析" +categories: + - Blog +tags: + - Password Recovery +--- + +• Kali: https://www.kali.org/get-kali/ +• Hashcat + ○ https://hashcat.net/hashcat/ + ○ 密码破解全能工具:Hashcat密码破解攻略: https://www.freebuf.com/sectool/164507.html +• John the Ripper + ○ John the Ripper password cracker: https://www.openwall.com/john/ + ○ Johnny - GUI for John the Ripper: https://openwall.info/wiki/john/johnny + ○ John the Ripper Pro password cracker: https://www.openwall.com/john/pro/ + ○ Hash Suite: https://hashsuite.openwall.net/ + ○ 使用John the ripper 破解RAR、ZIP、Word、Excel、PDF文件密码: https://www.cnblogs.com/AirCrk/p/12939305.html +• hydra: https://zhuanlan.zhihu.com/p/378051599 +• rarcrack: https://haofly.net/linux-brute-force-rar-zip-7z/index.html + +• Compressor + ○ 压缩解压小工具,简单暴力破解 + ○ https://github.com/xu-ben/Compressor + ○ Compressor-master.zip +• password_crack + ○ 暴力破解zip密码 + ○ https://gitee.com/yymagicer/password_crack + ○ password_crack-master.zip +• Passwordcracker + ○ 字典破解样例 + ○ https://github.com/chandra1123/passwordcracker + ○ passwordcracker-master.zip +• PasswordCrackerMultiThread + ○ 多线程暴力破解样例 + ○ https://github.com/olzhabay/PasswordCrackerMultiThread + ○ PasswordCrackerMultiThread-master.zip +• ArchivePasswordTestTool + ○ https://github.com/RiverChu0/ArchivePasswordTestTool + ○ 多线程读取字典,使用Java实现 + ○ ArchivePasswordTestTool-main.zip +• 压缩包字典破解2.0 + ○ 一个简单的bat脚本,支持7z格式 + ○ https://tieba.baidu.com/p/5789842044 + ○ 字典破解2.0(支持7z并且支持中文).zip +• ArchivePasswordTestTool + ○ 多线程读取字典,作者优化了“压缩包字典破解2.0”小工具,后面又写了C#版本 + ○ https://www.bilibili.com/read/cv6101558 + ○ https://github.com/dawn-lc/ArchivePasswordTestTool + ○ ArchivePasswordTestToolGUI.zip + ○ ArchivePasswordTestTool-master.zip +• zip-file-cracker + ○ 使用WinRar破解各种类型的rar文件 + ○ https://github.com/shuanglong1104/zip-file-cracker + ○ zip-file-cracker-master.zip +• 主流格式压缩包密码破解方法+字典枚举 整理+工具: +• 解压缩全能王,一个解压缩的Android软件,支持密码破解,原理类似于Wifi王能钥匙,根据上传文件和对应的密码,组成一个词典,使用者上传文件的MD5值,即可能查询到对应的密码 + +字典 +• EroPassword,一些常用的解压密码组成的字典文件: +• 某百度网盘的密码库,提取码1234: +• skullsecurity: https://wiki.skullsecurity.org/index.php/Passwords +• CrackStation's Password Cracking Dictionary: https://crackstation.net/crackstation-wordlist-password-cracking-dictionary.htm +• weakpass: https://weakpass.com/download + + + + + +bkcrack,ZIP明文攻击开源软件:https://github.com/kimci86/bkcrack +pkcrack,ZIP明文攻击开源软件:https://github.com/keyunluo/pkcrack +qpdf: +pdfcrack: +PDFCrack-GUI: + + +专业工具: +• Passware Kit Forensic + ○ https://www.passware.com/kit-forensic/ +• Passper for XXX,比如Passper for ZIP + ○ 支持恢复PDF,RAR,ZIP等文件类型的密码 + ○ https://passper.imyfone.com/ +• 压缩包解密工具,感觉就是Passper for XXX魔改了下: https://www.yunjiemi.net/Passper/index.html +• ifindpass,感觉也是Passper for XXX魔改了下: https://www.ifindpass.com/zip-password-recovery-online/ +• PDF Password Remover + ○ 一家专业处理PDF的公司研发的PDF密码恢复软件 + ○ https://www.verypdf.com/app/pdf-password-remover/index.html +• PDF Password Remover + ○ https://www.pdfpasswordremover.com/ +• Rar Password Unlocker(官网已不可访问): http://www.passwordunlocker.com/ +• Ziperello(Zip Password Recovery Tool),原名 Turbo ZIP Cracker,自1.4版起更改了软件名,支持暴力破解和字典破解,官网已不可访问: http://www.ziperello.com +• Free Rar Password Recovery + ○ https://amazing-share.com/free-rar-password-recovery.html +• PassFab for XXX,比如PassFab for RAR + ○ 支持恢复PDF,RAR,ZIP等文件类型的密码 + ○ https://www.passfab.com/ +• Accent XXX Password Recovery,比如Accent OFFICE Password Recovery + ○ 支持恢复PDF,RAR,ZIP等文件类型的密码 + ○ https://passwordrecoverytools.com/ +• Advanced XXX Password Recovery + ○ Advanced Archive Password Recovery(ARCHPR): https://www.elcomsoft.com/archpr.html + ○ Advanced Office Password Recovery(AOPR): https://www.elcomsoft.com/aopr.html + ○ Advanced PDF Password Recovery(APDFPR): https://www.elcomsoft.com/apdfpr.html + diff --git "a/_drafts/20\345\210\206\351\222\237\347\220\206\346\270\205Maven\346\236\204\345\273\272\344\270\255\347\232\204\346\265\213\350\257\225\347\233\270\345\205\263\345\267\245\345\205\267\347\232\204\345\205\263\347\263\273.md" "b/_drafts/20\345\210\206\351\222\237\347\220\206\346\270\205Maven\346\236\204\345\273\272\344\270\255\347\232\204\346\265\213\350\257\225\347\233\270\345\205\263\345\267\245\345\205\267\347\232\204\345\205\263\347\263\273.md" new file mode 100644 index 0000000..f41f4d5 --- /dev/null +++ "b/_drafts/20\345\210\206\351\222\237\347\220\206\346\270\205Maven\346\236\204\345\273\272\344\270\255\347\232\204\346\265\213\350\257\225\347\233\270\345\205\263\345\267\245\345\205\267\347\232\204\345\205\263\347\263\273.md" @@ -0,0 +1,105 @@ +如果你用Maven进行系统构建,同时还要同步编写测试用例,获取用例成功与否以及用例覆盖率的相关报告,那么这些工具你肯定接触过不少: + +* JUnit +* TestNG +* maven-surefire-plugin +* maven-surefire-report-plugin +* emma-maven-plugin +* jacoco-maven-plugin +* cobertura-maven-plugin +* maven-project-info-reports-plugin +* maven-site-plugin + +是不是已经有些头晕了?没关系,我之前担任过很长时间的CI构建系统维护者,同时还是这里面几个Maven插件的Maintainer,我将尽最大努力帮你在最短的时间里理清他们的关系,帮助大家在实际项目中充分发挥这些工具的作用,提升产品质量。首先我们先大体分几个类别,让大家有个大概的印象。 + +* JUnit/TestNG是单元测试工具,可以帮你更方便的编写测试用例。 +* maven-surefire-plugin是一个Maven插件,帮你在通过Maven构建项目的时候自动执行之前编写的测试用例。它的输出文件是txt或者xml格式的测试报告。 +* maven-surefire-report-plugin是一个Maven插件,帮你将maven-surefire-plugin生成的测试报告转换为html格式,方便查看。 +* emma-maven-plugin/jacoco-maven-plugin/cobertura-maven-plugin这些是帮助生成测试覆盖率报告的Maven插件,他们的输出文件也是html格式。 +* maven-project-info-reports-plugin是一个Maven插件,他可以把maven-surefire-report-plugin/emma-maven-plugin/jacoco-maven-plugin/cobertura-maven-plugin这些插件生成的html格式文件进行汇总,帮助大家以更好的方式呈现。 +* maven-site-plugin是一个Maven插件,帮你自动生成、部署、启动你的站点,站点里面可以有很多东西,其中最重要的部分就是你使用maven-project-info-reports-plugin生成的项目报告。 + +接下来我们根据之前的分类详细了解下他们: + +## JUnit/TestNG + +* JUnit: +* TestNG: + +JUnit是老牌单元测试工具了,从3.X,4.X到最新的5.X版本,一直有广泛的群众基础。TestNG和JUnit一样,也是为了方便编写单元测试用例的Java类库,诞生之初就宣称是JUnit的下一代产品,事实也确实如此,在功能和易用性方面,TestNG都要强过于4.X及其更早版本的JUnit,网上有很多两者的对比文章,其中比较有名的一篇如下,感兴趣的话大家可以仔细阅读下: + +* JUnit 4 Vs TestNG – Comparison: + +JUnit面对市场份额被TestNG不断蚕食的情况,研发了更加强大的JUnit 5版本,补齐了能力差距,易用性方面也有了更大的提升。因此大家如果可以选择的话,我个人推荐大家直接使用JUnit 5,功能和易用性丝毫不逊色,还有广大的群众基础,出现问题也方便更快的搜索到解决方案。那你用JUnit或者TestNG工具写完了单元测试用例,怎么执行呢?你可以在各种IDE(比如Eclipse或者IntelliJ IDEA)使用对应的插件来帮助运行这些测试用例,当然你甚至都可以不用IDE,配置好依赖,直接命令行运行这些测试用例。 + +![](https://img2020.cnblogs.com/blog/611264/202008/611264-20200823170134052-10990627.png) + +但是如何在Maven项目中自动执行这些步骤呢?这就是maven-surefire-plugin所做的事情了。 + +## maven-surefire-plugin + +* maven-surefire-plugin: + +maven-surefire-plugin是Maven内嵌的一个插件,会帮助你在执行mvn test的时候自动执行用JUnit/TestNG编写的测试用例。 + +![](https://img2020.cnblogs.com/blog/611264/202008/611264-20200823170247317-1745411381.png) + +除了将用例执行结果打印到屏幕上之外,还会在`target\surefire-reports`目录下生成两种形式的用例执行结果: + +![](https://img2020.cnblogs.com/blog/611264/202008/611264-20200823170314097-523339706.png) + +但是xml和txt格式的报告文件不太方便查看,要是能以html格式展示就好,所以你需要maven-surefire-report-plugin + +## maven-surefire-report-plugin + +* maven-surefire-report-plugin: + +maven-surefire-report-plugin的输入就是maven-surefire-plugin所产生的的xml后者txt格式的用例执行报告,输出就是html格式的用例执行报告。当你执行`surefire-report:report`时,你就会获得一个html格式的文件: + +![](https://img2020.cnblogs.com/blog/611264/202008/611264-20200823170358803-2126291467.png) + +内容如下: + +![](https://img2020.cnblogs.com/blog/611264/202008/611264-20200823171109951-322803827.png) + +是不是感觉很丑?没有关系,我们可以利用maven-project-info-reports-plugin让他变得漂亮些。 + +## maven-site-plugin/maven-project-info-reports-plugin + +* maven-site-plugin: +* maven-project-info-reports-plugin: + +maven-site-plugin主要作用是帮你迅速生成(site:site)一个站点,并完成站点的部署(site:deploy)和启动(site:run)。当你执行site:site时,maven会同时调用maven-project-info-reports-plugin(所以如非定制要求,你可以不在pom.xml中配置maven-project-info-reports-plugin的依赖),生成一个项目框架结构,类似这种: + +![](https://img2020.cnblogs.com/blog/611264/202008/611264-20200823170514421-278511798.png) + +其实maven-project-info-reports-plugin还能根据你在pom.xml中配置的``配置的report插件,生成各种各样的项目报告,比如刚才说的maven-surefire-plugin生成的用例执行报告,和马上要说的用例覆盖报告。是不是感觉这里面展示的报告样式比直接打开surefire-report.html好多了? + +![](https://img2020.cnblogs.com/blog/611264/202008/611264-20200823170537517-1970699000.png) + +## [Emma/emma-maven-plugin][Jacoco/jacoco-maven-plugin][Cobertura/cobertura-maven-plugin] + +* Emma: +* emma-maven-plugin: +* JaCoCo/jacoco-maven-plugin: +* Cobertura: +* cobertura-maven-plugin: + +这坨东西可以分为两类,一类就是检查Java用例覆盖情况的工具,另一类就是为了方便maven项目使用,开发出来的对应maven插件。其中Emma和emma-maven-plugin都很长时间没人维护了,所以我fork了这两个项目,并打算继续维护,目前为止已经解决了一些常见问题: + +* Emma: +* emma-maven-plugin: + +JaCoCo/jacoco-maven-plugin是同一个团队(EclEmma)在维护,EclEmma原本是一个Emma在Eclipse上的插件,但是在插件开发过程中越来越发现Emma在框架结构上的缺陷无法彻底解决,于是另起炉灶开发了JaCoCo,也就是说EclEmma现在除了名字外已经和Emma没有关系了。 + +三类用例覆盖工具中JaCoCo是最新的,也是对Java 8+新标准支持最好的,但是另外两个工具也有其特长,大家工作中根据实际情况选择即可。 + +## 远不止这些 + +前面介绍了测试用例执行情况和用例覆盖情况的报告,其实为了提升项目质量,可以提供很多种报告供大家使用,比如静态检查的findbugs、PMD等,我之前写过一个更加全面的工具汇总文章,大家可以参考: + + +理论说了一大堆,大家有没有一种冲动,把这些工具引用到自己的项目中去?这边有个例子供大家参考: + +* 代码: +* 报告: diff --git "a/_drafts/ACM\347\253\236\350\265\233\344\271\213\350\276\223\345\205\245\350\276\223\345\207\272\357\274\210\344\273\245C\344\270\216C++\344\270\272\344\276\213\357\274\211.md" "b/_drafts/ACM\347\253\236\350\265\233\344\271\213\350\276\223\345\205\245\350\276\223\345\207\272\357\274\210\344\273\245C\344\270\216C++\344\270\272\344\276\213\357\274\211.md" new file mode 100644 index 0000000..b65deca --- /dev/null +++ "b/_drafts/ACM\347\253\236\350\265\233\344\271\213\350\276\223\345\205\245\350\276\223\345\207\272\357\274\210\344\273\245C\344\270\216C++\344\270\272\344\276\213\357\274\211.md" @@ -0,0 +1,335 @@ +本文转自互联网,内容、排版有修正。 + +欢迎和大家交流技术相关问题: +邮箱: jiangxinnju@163.com +博客园地址: +GitHub地址: +知乎地址: + +在ACM程序设计竞赛中,一道题目的所有测试数据是放在一个文本文件中,选手将一道题目的程序提交给评判系统运行,程序从该文件中读取测试数据,再把运行结果输出到另一个文本文件中。系统把输出文件与标准答案比对,来评判程序编写得正确与否。ACM现场赛采用的输入输出形式有(1)文件输入、标准输出;(2)文件输入、文件输出;(3)标准的输入输出。而Web形式的ACM程序设计在线评判系统一般采用标准的输入输出,但输入结束有文件末尾标识(EOF),这可以用于确定输入结束。 + +## 一、四种基本输入形式 + +### 1. 一组输入数据 + +示例:整数求和 + + +C语法: + +```C +#include +int main() +{ + int a,b; + scanf("%d %d",&a, &b); + printf("%d\n",a+b); +} +``` + +注意:输入前不要打印提示信息。输出完毕后立即终止程序,不要等待用户按键。 + +C++语法: + +```C++ +#include +using namespace std; +int main() +{ + int a ,b; + cin>>a>>b; + cout< + +C语法: + +```C +#include +int main() +{ + int a,b; + while (scanf("%d %d",&a, &b) != EOF) + printf("%d\n",a+b); +} +``` + +说明:scanf函数返回值就是读出的变量个数,如:scanf( “%d %d”, &a, &b );如果只有一个整数输入,返回值是1,如果有两个整数输入,返回值是2,如果一个都没有,则返回值是EOF。EOF是一个预定义的常量,等于-1 + +C++语法: + +```C++ +#include +using namespace std; +int main() +{ + int a ,b; + while (cin>>a>>b) + cout<> m >> n在读入发生错误返回0,否则返回cin的地址。 + +### 3. 多组输入数据,不说明多少组,以某特殊输入为结束标志。 + +示例:A + B Problem (2) + + +C语法: + +```C +#include +int main() +{ + int a,b; + while(scanf("%d %d",&a, &b) &&(a||b)) + printf("%d\n",a+b); +} +``` + +C++语法: + +```C++ +#include +using namespace std; +int main() +{ + int a ,b; + while(cin>>a>>b&&(a||b)) + {cout< + +C语法: + +```C +#include +int main() +{ + int a ,b,n; + scanf("%d",&n); + while(n--) + { + scanf("%d %d",&a, &b); + printf("%d\n",a+b); + } + return 0; +} +``` + +C++语法: + +```C++ +#include +using namespace std; +int main() +{ + int a ,b,n; + cin>>n + while(n--) + { + cin>>a>>b; + cout< + +C语法: + +```C +#include +int main() +{ + int n,sum,a; + while(scanf("%d",&n) && n) + { + sum=0; + while(n--) + { + scanf("%d",&a); + sum+=a; + } + printf("%d\n",sum); +printf("\n"); + } + return 0; +} +``` + +C++语法: + +```C++ +#include +using namespace std; +int main() +{ + int n,sum,a; + while(cin>>n&&n) + { + sum=0; + while(n--) + { + cin>>a; + sum+=a; + } + cout< 0) + printf(" "); + printf("%d", a[j]); + } + puts(""); + } +``` + +如果是按列,就要把1行和3行交换。 + +### 5、模拟屏幕输出 + +在一些模拟题中,题目要求输出一幅画,只不过这个画是由字符组成的。对于这种情况,可以采用和带格式的字符串输出相似的方法,先开一个字符数组(在这里,是二维数组),然后把数组当成屏幕输出,屏幕的(i, j)点就是数组的(i, j)号元素。最后,输出这个二维数组就行了。一般来说,可以输出一个二维字符数组的方法和输出一般数组的方法是一样的,用双重循环来做。不过,可以只用一个循环就可以了,原因是在数组每行的恰当位置(一般是末尾)加了一个'\0',那么,数组的每一行就成了一个字符串,于是,输出程序就变成了: + +```C +int i; +char str[100][100]; +... +for (i = 0; i < nRow; i++) +puts(str); +``` \ No newline at end of file diff --git "a/_drafts/Android OTA\345\215\207\347\272\247.md" "b/_drafts/Android OTA\345\215\207\347\272\247.md" new file mode 100644 index 0000000..58cabc4 --- /dev/null +++ "b/_drafts/Android OTA\345\215\207\347\272\247.md" @@ -0,0 +1,18 @@ +## Android A/B System OTA分析 + +* Android A/B System OTA分析(一)概览: +* Android A/B System OTA分析(二)系统image的生成: +* Android A/B System OTA分析(三)主系统和bootloader的通信: +* Android A/B System OTA分析(四)系统的启动和升级: + +## Android OTA升级原理和流程分析 + +* Android OTA升级原理和流程分析(一)--update.zip包的制作: +* Android OTA升级原理和流程分析(二)---update.zip差分包问题的解决: +* Android OTA升级原理和流程分析(三)---Android系统的三种启动模式: +* Android OTA升级原理和流程分析(四)---Android系统Recovery模式的工作原理: +* Android OTA升级原理和流程分析(五)---update.zip包从上层进入Recovery服务: +* Android OTA升级原理和流程分析(六)---Recovery服务流程细节: +* Android OTA升级原理和流程分析(七)---Recovery服务的核心install_package函数: +* Android OTA升级原理和流程分析(八)---升级程序update_binary的执行过程: +* Android OTA升级原理和流程分析(九)---updater-script脚本语法简介以及执行流程: diff --git "a/_drafts/Android Studio\345\270\270\347\224\250\346\217\222\344\273\266\346\261\207\346\200\273.md" "b/_drafts/Android Studio\345\270\270\347\224\250\346\217\222\344\273\266\346\261\207\346\200\273.md" new file mode 100644 index 0000000..3284226 --- /dev/null +++ "b/_drafts/Android Studio\345\270\270\347\224\250\346\217\222\344\273\266\346\261\207\346\200\273.md" @@ -0,0 +1,14 @@ +* Android Localizationer: +* ADB Idea 方便卸载apk,删除缓存: +* Android ButterKnife Zelezny ButterKnife对应的插件: +* Android Code Generator 生成ViewHolder,生成initView方法: +* Codota 搜索代码块: +* GsonFormat jsonString自动转bean插件: +* SelectorChapek for Android 帮助生成selector: +* Android Drawable Importer 同一张图片生成多个自动生成多分辨率图片: +* Android Layout ID Converter xml到控件的转换: +* Android Postfix Completion toast和log加强: +* Android Studio Prettify 帮助findViewById: +* Android Parcelable code generator 生成Parcelable代码: +* Gradle Dependencies Helper gradle帮助插件: +* Android Toolbox Plugin 生成ViewHolder,意义不大: \ No newline at end of file diff --git "a/_drafts/Android Studio\347\233\270\345\205\263\347\233\256\345\275\225\350\247\243\346\236\220.md" "b/_drafts/Android Studio\347\233\270\345\205\263\347\233\256\345\275\225\350\247\243\346\236\220.md" new file mode 100644 index 0000000..98d4439 --- /dev/null +++ "b/_drafts/Android Studio\347\233\270\345\205\263\347\233\256\345\275\225\350\247\243\346\236\220.md" @@ -0,0 +1,11 @@ +## `%USERPROFILE%\.` + +其中`CONFIGURATION_FOLDER`与Android Studio版本相关,比如对于Android Studio 3.0.1来说,该目录是指`C:\Users\jiang\.AndroidStudio3.0`。这个目录中保存着用户对于Android Studio的配置修改情况,比如你修改了字体、JVM参数等,都会在该文件中体现。如果你想重置Android Studid的设置,直接删除该文件夹,并重启Android Studio即可。想了解更详细的情况可以参考:[Configure Android Studio: ] + +## `%USERPROFILE%\AppData\Local\Android\Sdk` + +该目录保存了下载的SDK,该目录可以修改:`Settings -> Appearance & Behavior -> System Settings -> Android SDK` + +## `%USERPROFILE%\.android` + +该目录中保存了你的自定义AVD的配置,这些配置会覆盖SDK目录中的相关配置。如果你想重置Android Studid的设置除了要删除`%USERPROFILE%\.`,最好把该目录也删除,然后重启Android Studio。 \ No newline at end of file diff --git "a/_drafts/Android Studio\347\247\273\345\212\250\351\274\240\346\240\207\346\230\276\347\244\272\346\202\254\346\265\256\346\217\220\347\244\272\347\232\204\350\256\276\347\275\256\346\226\271\346\263\225.md" "b/_drafts/Android Studio\347\247\273\345\212\250\351\274\240\346\240\207\346\230\276\347\244\272\346\202\254\346\265\256\346\217\220\347\244\272\347\232\204\350\256\276\347\275\256\346\226\271\346\263\225.md" new file mode 100644 index 0000000..fd343f8 --- /dev/null +++ "b/_drafts/Android Studio\347\247\273\345\212\250\351\274\240\346\240\207\346\230\276\347\244\272\346\202\254\346\265\256\346\217\220\347\244\272\347\232\204\350\256\276\347\275\256\346\226\271\346\263\225.md" @@ -0,0 +1,17 @@ +欢迎和大家交流技术相关问题: +邮箱: jiangxinnju@163.com +博客园地址: http://www.cnblogs.com/jiangxinnju +GitHub地址: https://github.com/jiangxincode +知乎地址: https://www.zhihu.com/people/jiangxinnju + +以Windows 10 + Android Studio 3.0.1为例 + +默认情况下,在Android Studio中将鼠标移动到函数位置处无法显示悬浮提示,需要进行如下设置: + +`File -> Settings -> Editor -> General` 选中`Show quick documentation on mouse move` 点击`OK` + +但是此时如果将鼠标移动到函数位置处,会显示"fetching documentation",如果你网络比较好的话,等一会后会显示文档,但是如果网络不好的话则永远不会显示。这是因为Android Studio发现你没有在本地下载对应的文档,所以去google官网进行下载,速度比较慢。将文档下载到本地的方式是: + +`Toos -> Android -> SDK Manager` 选择`SDK Tools`页签,勾选`Documentation for Android SDK` 点击OK,下载完成后重启Android Studio应该很快看到悬浮文档提示了。 + +但是如果还不行的话,可能原因是对应的Android Studio版本优先从网络获取文档,即使你在本地下载了文档也不行,此时需要参考下面的地址,将默认读取方法进行修改: \ No newline at end of file diff --git "a/_drafts/Android\345\271\263\345\217\260OpenGL ES_Assimp_OpenCV_GLM\351\233\206\346\210\220\350\257\264\346\230\216.md" "b/_drafts/Android\345\271\263\345\217\260OpenGL ES_Assimp_OpenCV_GLM\351\233\206\346\210\220\350\257\264\346\230\216.md" new file mode 100644 index 0000000..18a527c --- /dev/null +++ "b/_drafts/Android\345\271\263\345\217\260OpenGL ES_Assimp_OpenCV_GLM\351\233\206\346\210\220\350\257\264\346\230\216.md" @@ -0,0 +1,80 @@ +# Android平台OpenGL ES/Assimp/OpenCV/GLM集成说明 + +本文代码见: + +## 集成Assimp + +* 下载Assimp 5.0.1版本: +* 解压后本地目录为`D:\Code\temp\assimp-5.0.1` +* 将`scripts\android_crosscompile\make_android.bat`拷贝为`scripts\android_crosscompile\make_android_self_defined.bat` +* 将`scripts\android_crosscompile\make_android_self_defined.bat`中的内容进行自定义配置,我的配置如下: + +```shell +@echo off + +set ASSIMP_PATH=D:\Code\temp\assimp-5.0.1 +set CMAKE_PATH="C:\Users\jiangxin\AppData\Local\Android\Sdk\cmake\3.6.4111459\bin\cmake.exe" +set ANDROID_NDK_PATH=C:\Users\jiangxin\AppData\Local\Android\Sdk\ndk\22.0.7026061 +set ANDROID_CMAKE_PATH=C:\Users\jiangxin\AppData\Local\Android\Sdk\ndk\22.0.7026061\build\cmake + +pushd %ASSIMP_PATH% + +rmdir /s /q build +mkdir build +cd build + +%CMAKE_PATH% .. ^ + -G"MinGW Makefiles" ^ + -DCMAKE_BUILD_TYPE=Release ^ + -DCMAKE_CXX_FLAGS_RELEASE="%CMAKE_CXX_FLAGS_RELEASE% -Os -Wall -s" ^ + -DCMAKE_TOOLCHAIN_FILE=%ANDROID_CMAKE_PATH%\android.toolchain.cmake ^ + -DCMAKE_MAKE_PROGRAM=%ANDROID_NDK_PATH%\prebuilt\windows-x86_64\bin\make.exe ^ + -DANDROID_NDK=%ANDROID_NDK_PATH% ^ + -DANDROID_NATIVE_API_LEVEL=android-16 ^ + -DASSIMP_ANDROID_JNIIOSYSTEM=ON ^ + -DANDROID_ABI=arm64-v8a ^ + -DASSIMP_BUILD_ZLIB=ON ^ + -DASSIMP_BUILD_TESTS=OFF ^ + -DASSIMP_BUILD_ASSIMP_TOOLS=OFF ^ + -DASSIMP_NO_EXPORT=ON + +%CMAKE_PATH% --build . + +popd +``` + +* 执行如下编译命令: + +```shell +cd D:\Code\temp\assimp-5.0.1\scripts\android_crosscompile +.\make_android_self_defined.bat +``` + +* 将`assimp-4.1.0\build\codelibassimp.so`放到`app\libs\` +* 将`assimp-4.1.0\include`中的目录放到`app\src\main\cpp\include` +* 将`assimp-4.1.0\build\include\assimp\config.h`拷贝到`app\src\main\cpp\assimp-4.1.0\include\assimp` + +## 集成OpenCV + +OpenCV的集成比较简单,官网提供了Android平台所需的动态库和C++头文件。 + +* 下载OpenCV 4.5.1版本: +* 解压后本地目录为`D:\Code\temp\opencv-4.5.1-android-sdk` +* 将`OpenCV-android-sdk\sdk\native\libs\arm64-v8a\libopencv_java4.so`拷贝到`app\libs\` +* 将`OpenCV-android-sdk\sdk\native\jni\include`中的内容拷贝到`app\src\main\cpp\include` + +## 集成GLM + +GLM的集成就更简单了,源码都是hpp文件(即定义和实现在同一个文件中)。 + +* 下载GLM 0.9.9.8版本: +* 解压后本地目录为`D:\Code\temp\glm-0.9.9.8` +* 将`glm-0.9.9.8\glm`中的内容拷贝到`app\src\main\cpp\include` + +## 参考 + +* Android: Use Assimp to load a 3D model: +* AssimpAndroid: +* 使用Android Studio+CMakeLists编译assimp: +* TestAssimp: +* Assimp编译实录: diff --git "a/_drafts/Android\346\236\204\345\273\272\347\263\273\347\273\237.md" "b/_drafts/Android\346\236\204\345\273\272\347\263\273\347\273\237.md" new file mode 100644 index 0000000..3444f6f --- /dev/null +++ "b/_drafts/Android\346\236\204\345\273\272\347\263\273\347\273\237.md" @@ -0,0 +1,276 @@ +## 同步发布平台 + +* 博客园: +* CSDN: +* 掘金: +* 知乎: + +**未经允许,谢绝转载** + +在以下位置描述了Android构建系统: +你可以使用`build/envsetup.sh`设置一个"便利环境"来处理Android源代码。在当前shell环境中执行`source build/envsetup.sh`后,你可以输入hmm作为已定义函数的列表,这些函数有助于与源进行交互。 + +## 概述 + +构建系统使用一些预设的环境变量和一系列"make"文件来构建Android系统并准备将其部署到平台上。 + +子项目的Android构建文件叫做Android.bp和Android.mk。 + +整个存储库的源树顶部只有一个名为"Makefile"的官方文件。你设置了一些环境变量,然后键入"make"或仅键入m来构建内容。你可以在make命令行(其他目标)中添加一些选项以打开详细输出或执行其他操作。 + +构建输出放置在`out/host`和`out/target`中。`out/host`下的东西是为你的主机平台(台式机)编译的东西。最终在`out/target/product/`下的内容会以特定方式被放到目标设备(或模拟器)。 + +目录`out/target/product//obj`用于暂存"object"文件,这些文件是用于构建最终程序的中间二进制映像。实际落在目标文件系统中的内容存储在`out/target/product/`下的root,system和data目录中。通常,这些文件捆绑成名为system.img,ramdisk.img和userdata.img的映像文件。 + +这与大多数Android设备上使用的文件系统分区相匹配。 + +## 一些细节 + +### 使用什么工具 + +在构建期间,你将使用soong,ninja和'make'控制构建步骤。主机工具链(编译器,链接器和其他工具)和库将用于构建将在主机上运行的程序和工具。使用不同的工具链来编译将在目标(嵌入式板,设备或模拟器)上运行的C和C++代码。这通常是在X86平台上运行的"交叉"工具链,但会为其他平台(最常见的是ARM)生成代码。内核被编译为独立的二进制文件(它不使用程序加载器或链接到任何外部库)。其他项目,例如本机程序(例如init或工具箱),守护程序或库,将链接到仿生库或其他系统库。 + +你将使用Java编译器和大量与Java相关的工具来构建大多数应用程序框架,系统服务和Android应用程序本身。最后,使用工具打包应用程序和资源文件,并创建可以安装在设备上或与模拟器一起使用的文件系统映像。 + +### 告诉系统Java工具链在哪里 + +在构建任何东西之前,你必须告诉Android构建系统Java SDK的位置。(安装Java SDK是构建的先决条件)。 +通过设置JAVA_HOME环境变量来执行此操作。 + +### 指定要构建的内容 + +为了决定要构建什么以及如何构建,构建系统要求设置一些变量。可以从同一源代码树构建具有不同软件包和选项的不同产品。可以通过带有"make"变量声明的文件来设置控制此变量的变量,也可以在环境中指定该变量。 + +设备供应商可以创建定义文件,以描述特定板或特定产品要包含的内容。定义文件称为:buildspec.mk,它位于顶级源目录中。你可以手动编辑此选项以对选择进行硬编码。 + +如果你有一个buildspec.mk文件,它会设置构建所需的所有make变量,而你不必弄乱选项。 + +指定选项的另一种方法是设置环境变量。构建系统具有一种相当华丽的方法来为你管理这些选项。 + +要设置你的构建环境,你需要在`build/envsetup.sh`中加载变量和函数。通过将文件`source`到你的shell环境中来执行此操作,如下所示: + +```shell +. build/envsetup.sh +``` + +你可以在此时输入"help"(或"hmm")以查看一些实用程序功能,这些功能可以使你更轻松地使用源代码。 + +要选择要构建的一组东西以及要构建的项目,请使用"choosecombo"功能或"lunch"功能。"choosecombo"将一步一步地引导你完成必须选择的不同项目,而"lunch"则允许你选择一些预设组合。 + +必须为构建定义的项目是: + +• 产品("generic"或某些特定的芯片或平台名称) +• 构建变体("user","userdebug"或"eng") +• 是否在模拟器上运行("true"或"false") +• 构建类型("发布"或"调试") + +这些不同的构建变体的说明位于 + +在这篇博客文章中,从用户角度很好地描述了构建过程: + +### 实际构建系统 + +设置完毕后,实际上就可以使用"make"命令来构建系统。 + +要构建整个内容,请在顶层目录中运行"make"。如果要构建所有内容(例如,第一次进行构建),则构建将花费很长时间。 + +## 构建技巧 + +### 查看用于构建软件的实际命令 + +在"make"行上使用"showcommands"目标: + +```shell +make -j4 showcommands +``` + +可以将其与另一个make目标结合使用,以查看该构建的命令。也就是说,"showcommands"本身不是目标,而只是指定构建的修饰符。 + +在上面的示例中,-j4与showcommands选项无关,并且用于执行4个并行运行的make会话。 + +### 制定目标 + +这是可用于构建系统不同部分的不同make目标的列表: + +• `make sdk` - 构建属于SDK的工具(adb,fastboot等) +• `make snod` - 从当前软件二进制文件构建系统映像 +• `make services` +• `make runtime` +• `make droid` - make droid是正常的构建。 +• `make all` - 构建所有内容,无论是否包含在产品定义中 +• `make clean` - 删除所有构建的文件(准备进行新的构建)。与`rm -rf out//`相同 +• `make modules` - 显示可以构建的子模块的列表(所有LOCAL_MODULE定义的列表) +• `make ` - 构建一个特定的模块(请注意,这与目录名称不同。它是Android.mk文件中的LOCAL_MODULE定义) +• `make clean ` - 清理特定模块 +• `make bootimage TARGET_PREBUILT_KERNEL=/path/to/bzImage` - 使用自定义bzImage创建新的启动映像 + +### 辅助宏和函数 + +当你获取envsetup.sh时,会安装一些辅助宏和函数。它们记录在envesetup.sh的顶部,但是这里是其中一些信息: + +• `hmm` - 列出帮助内容 +• `lunch -` - 加载产品和构建变体配置(驱动程序文件,设备特定的配置等)。 +• `tapas [ ...] [arm | x86 | mips | armv5 | arm64 | x86_64 | mips64] [eng | userdebug | user]` - 该命令用于构建未捆绑的应用程序。如果你不提供构建版本,则默认为eng。 +• `provision` - 烧录具有所有必需分区的设备。选项将传递给fastboot。 + +### 构建宏和函数 + +• `croot` - 将目录更改为树的顶部 +• `m` - 从树的顶部执行"make"(即使当前目录位于其他位置) +• `mm` - 构建当前目录中的所有模块 +• `mmm ...` - 构建提供的目录中的所有模块,但不构建其依赖项。要限制正在构建的模块,请使用以下语法:`mmm dir /:target1,target2`。 +• `mma` - 构建当前目录中的所有模块及其依赖项。 +• `mmma ...` - 构建提供的目录中的所有模块及其依赖项。 + +### Grep宏和函数 + +• `cgrep ` 在所有本地C/C++文件上显示。 +• `ggrep ` 在所有本地Gradle文件上显示。 +• `jgrep ` 在所有本地Java文件上使用。 +• `resgrep ` 在所有本地res/*。xml文件上进行锁定。 +• `mangrep ` 在所有本地AndroidManifest.xml文件上进行扫描。 +• `mgrep ` 在所有本地Makefile文件上进行抓紧。 +• `sepgrep ` 在所有本地Sepolicy文件上进行锁定。 +• `sgrep ` 在所有本地源文件上进行抓紧。 +• `godir <文件名>` 转到包含文件的目录 + +### 加快构建 + +你可以在make中使用'-j'选项,以同时启动多个make执行线程。 + +根据我的经验,你应该指定比计算机上具有处理器多2个线程。如果你有2个处理器,请使用'make -j4';如果它们是超线程的(意味着你有4个虚拟处理器),请尝试'make -j6。 + +你还可以指定使用"ccache"编译器缓存,这将在你首次构建内容后加快处理速度。为此,请在你的shell命令行中指定"export USE_CCACHE = 1"。(请注意,ccache包含在存储库的预构建部分中,不必单独安装在主机上。) + +对于最新的Android版本,没有预建的ccache,并且需要根据此commit,使用CCACHE_EXEC将路径设置为本地二进制文件。 + +### 仅构建单个程序或模块 + +如果使用`build/envsetup.sh`,则可以使用某些已定义的函数来仅构建树的一部分。使用"mm"或"mmm"命令执行此操作。 + +"mm"命令在当前目录(和子目录,我相信)中进行填充。使用"mmm"命令,你可以指定目录或目录列表,然后将其构建。 +要安装你的更改,请从树的顶部开始"make snod"。"make snod"从当前的二进制文件构建新的系统映像。 + +### 设置模块特定的构建参数 + +Android系统中的某些代码可以按照其构建方式进行自定义(与构建变体以及发行版和调试选项分开)。你可以设置变量来控制各个构建选项,方法是在环境中进行设置,或者将其直接传递给"make"(或称为"make"的"m ..."函数)。 + +例如,可以通过设置INIT_BOOTCHART变量来构建支持bootchart日志记录的'init'程序。(有关为什么你可能要执行此操作,请参见在Android上使用Bootchart。) + +你可以使用以下任一方法来完成: + +```shell +touch system/init/init.c +export INIT_BOOTCHART=true +make +``` + +或者 + +```shell +touch system/init/init.c +m INIT_BOOTCHART=true +``` + +## Makefile技巧 + +这些是你可以在自己的Android.mk文件中使用的东西的一些提示。 + +### 建立助手功能 + +在文件build/core/definitions.mk中定义了很多构建帮助器函数 + +尝试列出详尽的清单。`grep define build/core/definitions.mk` + +通过以下方式调用它们:或不带参数:`$(call , , )$(call )` + +以下是一些可能有趣的功能: + +• `print-vars` - 打印所有Makefile变量,以进行调试(而不是它们的值)。 +• `emit-line` - 在构建期间将线输出到文件 +• `dump-words-to-file` - 将单词列表输出到文件 +• `copy-one-file` - 将文件从一个地方复制到另一个地方(目标是否在目的地?) +• `all-subdir-makefiles` - 从当前目录开始递归调用所有文件(用法:)。Android.mkinclude $(调用all-subdir-makefiles) + +### 构建变量 + +• `$(ANDROID_BUILD_TOP)` - AOSP文件系统根文件夹 +• `$(LOCAL_PATH)`- 通常为当前目录。由开发人员/用户在每个Android.mk文件中设置。 +它会在文件树下的其他文件中被覆盖(例如,使用时)。`Android.mk include $(call all-subdir-makefiles)` + +解决方法: + +```Makefile + SAVED_LOCAL_PATH := $(call my-dir) + include $(call all-subdir-makefiles) + LOCAL_PATH:= $(SAVED_LOCAL_PATH) +``` + +### 将文件直接添加到输出区域 + +你可以使用add-prebuilt-files函数将文件直接复制到输出区域,而无需构建任何内容。 + +从`prebuilt/android-arm/gdbserver/Android.mk`中提取的以下行将文件列表复制到输出区域的EXECUTABLES目录中: + +`$(call add-prebuilt-files, EXECUTABLES, $(prebuilt_files))` + +## 添加新程序以进行构建 + +### 将新程序添加到Android源代码树的步骤 + +• 在"外部"下建立目录 +• 例如ANDROID/external/myprogram +• 创建你的C/cpp文件。 +• 创建Android.mk作为external/ping/Android.mk的克隆 +• 更改名称ping.c和ping以匹配你的C/cpp文件和程序名称 +• 在external/zlib之后将ANDROID/build/core/main.mk中的目录名称添加为external/myprogram(至少从Android 7.1起不再需要) +• 从源代码树的根开始 +• 你的文件将显示在构建输出区域和系统映像中。 +• 如果要将文件单独复制到目标(而不执行整个安装),则可以从构建输出区域的out/target/product/...下复制文件。 + +有关更多详细信息,请参见。 + +### 构建内核 + +内核是普通Android构建系统的"外部"(实际上,默认情况下,Android Open Source Project中不包括该内核)。但是,AOSP中有一些用于构建内核的工具。如果要构建内核,请从此页面开始:http : //source.android.com/source/building-kernels.html + +如果你正在为模拟器构建内核,则可能还需要查看:http : //stackoverflow.com/questions/1809774/android-kernel-compile-and-test-with-android-emulator + +而且,Ron M写道(在2012年5月21日在android-kernel邮件列表中): + +这篇文章很老-但就AOSP而言,什么都没有改变,所以如果有人对QEMU感兴趣并遇到此问题,请执行以下操作: +实际上,为AOSP提供的QEMU目标构建内核是一种不错的,更短的方法: + +1. cd到你的内核源目录(仅金鱼2.6.29在模拟器中可用) +2. $ {ANDROID_BUILD_TOP} /external/qemu/distrib/build-kernel.sh -j = 64 --arch = x86 --out = $ YourOutDir +3. emulator -kernel ${YourOutDir}/kernel-qemu # run emulator: + +步骤#2 调用toolbox.sh包装程序脚本,该脚本可在SSE禁用gcc警告的情况下工作-在GCC <4.5时发生(如AOSP预先构建的X86工具链中一样)。 + +如果它是X86,该脚本会添加"-mfpmath = 387 -fno-pic",从而消除了上面看到的编译错误。 + +为了更好地控制构建过程,可以使用"toolbox.sh"包装器并设置一些其他内容,而无需修改脚本文件。 + +下面是构建相同模拟器的示例: + +```shell +# Set arch +export ARCH=x86 +# Have make refer to the QEMU wrapper script for building android over x86 +(eliminates the errors listed above) +export +CROSS_COMPILE=${ANDROID_BUILD_TOP}/external/qemu/distrib/kernel-toolchain/android-kernel-toolchain- +# Put your cross compiler here. I am using the AOSP prebuilt one in this example +export +REAL_CROSS_COMPILE=${ANDROID_BUILD_TOP}/prebuilt/linux-x86/toolchain/i686-android-linux-4.4.3/bin/i686-android-linux- +# Configure your kernel - here I am taking the default goldfish_defconfig +make goldfish_defconfig +# build +make -j64 +# Run emulator: +emulator -kernel arch/x86/boot/bzImage -show-kernel +``` + +这适用于2.6.29 goldfish 分支。 + +## 译自 diff --git "a/_drafts/Android\347\234\237\346\234\272\345\256\211\350\243\205sqlite3\347\232\204\346\226\271\346\263\225.md" "b/_drafts/Android\347\234\237\346\234\272\345\256\211\350\243\205sqlite3\347\232\204\346\226\271\346\263\225.md" new file mode 100644 index 0000000..482227c --- /dev/null +++ "b/_drafts/Android\347\234\237\346\234\272\345\256\211\350\243\205sqlite3\347\232\204\346\226\271\346\263\225.md" @@ -0,0 +1,62 @@ +欢迎和大家交流技术相关问题: +邮箱: jiangxinnju@163.com +博客园地址: http://www.cnblogs.com/jiangxinnju +GitHub地址: https://github.com/jiangxincode +知乎地址: https://www.zhihu.com/people/jiangxinnju + +Android版本: 4.4.2 + +```powershell +PS C:\Users\jiang> adb shell +shell@hwH60:/ $ su - root + +# 此时输入sqlite3 发现命令无法使用 +root@hwH60:/ # sqlite3 +tmp-mksh: sqlite3: not found + +# find一下相关文件,确定到底需要安装哪些内容,如果已经找到则不需要安装对应文件 +root@hwH60:/ # find . -name "sqlite3" +root@hwH60:/ # find . -name "libsqlite.so" +root@hwH60:/ # find . -name "libsqlite_jni.so" + +root@hwH60:/ # exit +shell@hwH60:/ $ exit + +# 从https://files.cnblogs.com/files/jiangxinnju/sqlite3.zip处下载文件并解压。 + +# 将相关文件放到内置存储卡中,为什么不直接放到/system/xbin/和/system/lib/可以参考 +PS D:\> adb push sqlite3 /storage/emulated/0/ +PS D:\> adb push libsqlite.so /storage/emulated/0/ +PS D:\> adb push libsqlite_jni.so /storage/emulated/0/ + +PS D:\> adb shell +shell@hwH60:/ $ su - root + +# 为什么需要重新挂载/system分区可以参考 +root@hwH60:/ # mount -o remount rw /system + +# 将需要的文件从内置存储卡中转移到目标目录 +root@hwH60:/ # cp /storage/emulated/0/sqlite3 /system/xbin/ < +root@hwH60:/ # cp /storage/emulated/0/libsqlite.so /system/lib/ +root@hwH60:/ # cp /storage/emulated/0/libsqlite_jni.so /system/lib/ + +# 修改对应文件的权限 +root@hwH60:/ # chmod 4755 /system/xbin/sqlite3 +root@hwH60:/ # chmod 0644 /system/lib/libsqlite.so +root@hwH60:/ # chmod 0644 /system/lib/libsqlite_jni.so + +# 执行sqlite3命令,发现已经可以使用 +root@hwH60:/ # sqlite3 +SQLite version 3.7.11 2012-03-20 11:35:50 +Enter ".help" for instructions +Enter SQL statements terminated with a ";" +sqlite> .exit + +root@hwH60:/ # exit + +# 删除内置存储卡中的文件 +shell@hwH60:/ $ rm -rf /storage/emulated/0/sqlite3 +shell@hwH60:/ $ rm -rf /storage/emulated/0/libsqlite.so +shell@hwH60:/ $ rm -rf /storage/emulated/0/libsqlite_jni.so + +``` \ No newline at end of file diff --git "a/_drafts/ApkToolBoxGUI 0.0.8\345\217\221\345\270\203\344\272\206\357\274\201\357\274\201.md" "b/_drafts/ApkToolBoxGUI 0.0.8\345\217\221\345\270\203\344\272\206\357\274\201\357\274\201.md" new file mode 100644 index 0000000..b27ae8b --- /dev/null +++ "b/_drafts/ApkToolBoxGUI 0.0.8\345\217\221\345\270\203\344\272\206\357\274\201\357\274\201.md" @@ -0,0 +1,149 @@ +GitHub: +Gitee: + +APKToolBoxGUI是一个程序员常用的小工具合集,有个比较友好的交互界面。主要包含编码转换,时间戳转换,颜色拾取器,颜色转换,重复文件查找,批量文件重命名,文件摘要检查等。另外还有些专门为Android开发定制的小工具,比如带界面的Monkey,国际化语言批量处理等。 + +## Why you should try + +* Open source forever +* More powerful features +* Easier to use +* Update more frequently + +## Features + +### File + +#### Convert between different character encodings + +* 支持`UTF-8`,`GB2312`,`GBK`,`Big5`等上百种编码格式间的互相转换 +* 支持多文件夹、多文件批量转换 +* 支持源文件编码自动识别,自动识别采用多引擎方案,识别率高 + +类似工具: + +* 元宝文件编码转换器: +* UltraCodingSwitch: + +![FileEncoding](https://raw.githubusercontent.com/wiki/jiangxincode/ApkToolBoxGUI/FileEncoding_01.png) + +#### Convert between different OS types + +![OSType](https://raw.githubusercontent.com/wiki/jiangxincode/ApkToolBoxGUI/OSType_01.png) + +#### Convert between Simplified Chinese and Traditional Chinese + +![SimpleTraditional](https://raw.githubusercontent.com/wiki/jiangxincode/ApkToolBoxGUI/SimpleTraditional_01.png) + +#### Check files digest + +![CheckDigest](https://raw.githubusercontent.com/wiki/jiangxincode/ApkToolBoxGUI/CheckDigest_01.png) + +#### Find duplicated files(Not Finished) + +![DuplicateFile](https://raw.githubusercontent.com/wiki/jiangxincode/ApkToolBoxGUI/DuplicateFile_01.png) +![DuplicateFile](https://raw.githubusercontent.com/wiki/jiangxincode/ApkToolBoxGUI/DuplicateFile_02.png) + +类似工具: + +RenameIt: + +### Convert + +#### Convert between timestamp and formatted time + +![Timestamp](https://raw.githubusercontent.com/wiki/jiangxincode/ApkToolBoxGUI/Timestamp_01.png) + +#### Convert between color formats + +Convert between common color formats: `RGB`/`HEX`/`CMYK`/`HSB`(`HSV`) + +![ColorConvert](https://raw.githubusercontent.com/wiki/jiangxincode/ApkToolBoxGUI/ColorConvert_01.png) + +类似工具: + +* +* +* +* + +#### Color picker + +A useful little color picker that grabs the pixel under your mouse and transforms it into a number of different color formats. You can use the built-in magnifier to zoom in on your screen, click on a color value to copy it directly to the clipboard. + +类似工具: + +* ColorPix: + +![ColorPicker](https://raw.githubusercontent.com/wiki/jiangxincode/ApkToolBoxGUI/ColorPicker_01.png) + +#### Convert between different base + +![BaseConvert](https://raw.githubusercontent.com/wiki/jiangxincode/ApkToolBoxGUI/BaseConvert_01.png) + +#### Convert between Chinese character and Unicode character + +### Reverse + +Using third-party tools to decompile package like jar, aar, war, apk, dex and so on. + +类似工具: + +* I18NTools: +* TextTools: +* ApkToolBox(C#): +* ApkToolBox(PowerShell): +* APKDB(安卓逆向助手): +* APKIDE(改之理): +* ApkToolkit: +* Android Killer: + +| Name | Version | Website | License +| ------ | ------ | ------ | ------ | +| Apktool | v2.5.0 | | Apache 2.0 | +| GD-GUI | 1.6.6 | | GNU GPL v3 | +| JADX-GUI | v1.2.0 | | Apache 2.0 | +| ApkSigner | 1.3 | | Apache 2.0 | +| AXMLPrinter3 | 0.0.1-SNAPSHOT | | Apache 2.0 | + +### SnapShot + +### Dumpsys + +* adb shell dumpsys alarm + +### Test + +### I18N + +#### Copy Items + +Copy some `` in strings.xml in the `value[.*]` directory of the [A directory] to the strings.xml in the `value[.*]` directory of the [B directory]. It is mainly used to merge translations into several code branches. + +#### Replace Items + +Replace some `` in strings.xml in the `value[.*]` directory of the [A directory] to the strings.xml in the `value[.*]` directory of the [B directory]. It is mainly used to merge translations into several code branches. + +#### Delete Items + +Delete some `` in strings.xml in the `value[.*]` directory of the [A directory] + +#### Find the longest + +Find the longest translation of a ``. Primarily for finding cuts or line breaks. + +## License + +* Apache License V2.0 + +## Contributing + +Any contributing is welcomed. + +1. Fork repository +2. Make changes +3. Ensure tests pass (or hopefully adding tests!) +4. Submit pull request/issue + +* build binary: mvn clean package +* build project documentation: mvn clean package site \ No newline at end of file diff --git "a/_drafts/C++\344\273\216\351\224\256\347\233\230\350\276\223\345\205\245\346\226\207\344\273\266\347\273\223\346\235\237\347\254\246.md" "b/_drafts/C++\344\273\216\351\224\256\347\233\230\350\276\223\345\205\245\346\226\207\344\273\266\347\273\223\346\235\237\347\254\246.md" new file mode 100644 index 0000000..a8b8513 --- /dev/null +++ "b/_drafts/C++\344\273\216\351\224\256\347\233\230\350\276\223\345\205\245\346\226\207\344\273\266\347\273\223\346\235\237\347\254\246.md" @@ -0,0 +1,55 @@ + 当我们使用一个istream对象作为条件时,其效果是检测流的状态。如果流是有效的,即流未遇到错误,那么检测成功。当遇到文件结束符,或遇到一个无效输入时(例如需要将输入读到一个int变量中,但实际从键盘输入的是字符),istream对象的状态会变成无效。处于无效的istream对象会是条件变为假。 + + 当从键盘向程序输入数据时,对于如何指出文件结束符,不同的操作系统有不同的实现。在Windows平台中,输入文件结束符的方法是:按Ctrl+z,然后按Enter。在Unix或Linux下是按Ctrl+d,无需Enter,当然,由于当你输入Ctrl+d后,它仍然停留在系统的输入缓冲区中,所以你还是需要使用一个Enter使其生效。下面是几个关于该用法的示例: + +```CPP +#include +#include + +using namespace std; +/* +测试标准输入cin和文件结束符 +测试平台:Windows +*/ +int test_string_one(); +int test_string_two(); +int test_string_three(); + +int main() +{ + //test_string_one(); + test_string_two(); +} +int test_string_one() //第一个程序:输入的是整数 +{ + int num; + while(cin>>num) + cout << num << " "; + return 0; +} +/* +输入:1 2 3 4 5 Ctrl+d Enter +输出:1 2 3 4 5 +此处之所以循环停止,是因为遇到一个无效输入(Ctrl+d),而不是遇到了文件结束符。 +因为在windows平台,结束符是Ctrl+z,然后按Enter。 +例如输入:1 2 3 4 5 a Enter +输出仍是:1 2 3 4 5 +当然如果该测试用例用于Linux下,那么由于系统的结束符是Ctrl+d,所以虽然输出一样, +但是之所以循环停止,是因为到达了文件结束,而不是得到了一个无效输入。 +*/ + + +int test_string_two() //第二个程序:输入的是字符串 +{ + string word; + while(cin>>word) + cout << word << " "; + return 0; +} +/* +输入:hello world Ctrl+z 回车 +输出:hello world +此处之所以循环停止,是因为遇到一个文件结束符。 +因为在windows平台,结束符是Ctrl+z,然后按Enter。 +*/ +``` \ No newline at end of file diff --git "a/_drafts/C++\344\273\243\347\240\201\350\264\250\351\207\217\345\272\246\351\207\217\345\267\245\345\205\267\345\244\247\351\230\205\345\205\265.md" "b/_drafts/C++\344\273\243\347\240\201\350\264\250\351\207\217\345\272\246\351\207\217\345\267\245\345\205\267\345\244\247\351\230\205\345\205\265.md" new file mode 100644 index 0000000..ad7f710 --- /dev/null +++ "b/_drafts/C++\344\273\243\347\240\201\350\264\250\351\207\217\345\272\246\351\207\217\345\267\245\345\205\267\345\244\247\351\230\205\345\205\265.md" @@ -0,0 +1,64 @@ +姊妹篇:Java代码质量度量工具大阅兵: + +## cppcheck + +* cppcheck: +* 各种IDE和编辑器插件: <> +* 检查项: + +## CCCC + +* C and C++ Code Counter(CCCC): + +## PC-lint + +* ~~PC-lint for C/C++: ~~ +* PC-lint Plus: + +## cpplint + +* cpplint: + +## Splint + +Splint is a tool for statically checking C programs for security vulnerabilities and coding mistakes. With minimal effort, Splint can be used as a better lint. If additional effort is invested adding annotations to programs, Splint can perform stronger checking than can be done by any standard lint. + +* Splint: + +## Frama-C + +Frama-C is a suite of tools dedicated to the analysis of the source code of software written in C. + +* Frama-C: + +## Goanna Studio + +* Goanna Studio(Static Analysis for C/C++): + +## Visual Leak Detector + +* Visual Leak Detector for Visual C++ : + +## MemLeak + +MemLeak -- a module to debug memory leaks in C code and other problems with malloc()--free() invocations. Written in ANSI C. Distributed under GPL. + +* MemLeak: + +## Valgrind + +Valgrind is an instrumentation framework for building dynamic analysis tools. There are Valgrind tools that can automatically detect many memory management and threading bugs, and profile your programs in detail. You can also use Valgrind to build new tools. + +* Valgrind: + +## 额外阅读 + +* C/C++内存泄漏及检测: +* 浅谈C/C++内存泄露及其检测工具: + +欢迎和大家交流技术相关问题: + +* 邮箱: jiangxinnju@163.com +* 博客园: +* GitHub: +* 知乎: \ No newline at end of file diff --git "a/_drafts/C++\347\274\226\350\257\221\351\224\231\350\257\257cannot have cv-qualifier.md" "b/_drafts/C++\347\274\226\350\257\221\351\224\231\350\257\257cannot have cv-qualifier.md" new file mode 100644 index 0000000..02b9367 --- /dev/null +++ "b/_drafts/C++\347\274\226\350\257\221\351\224\231\350\257\257cannot have cv-qualifier.md" @@ -0,0 +1,62 @@ +const关键字放在非静态成员函数声明的尾部,表示该非静态成员函数不修改对象内容。volatile关键字放到非静态函数声明的尾部,表示该非静态成员函数是线程安全的。注意他们都只能放到非静态成员函数声明的尾部,否则会产生如下报错: +`error: non-member function 'xxx' cannot have cv-qualifier` +放到非成员函数声明的尾部 + +```CPP +#include + +using namespace std; + +double getSqureArea(int a) const +{ + return a * a; +} + + +int main(int arg, char *argv[]) +{ + cout << getSqureArea(2) << endl; + return 0; +} +``` + +编译上面的C++程序,报错如下: + +```shell +g++ -c const_volatile_test.cpp -o const_volatile_test.o +const_volatile_test.cpp:12:28: error: non-member function 'double getSqureArea(int)' cannot have cv-qualifier +``` + +放到静态成员函数声明的尾部 + +```CPP +#include + +using namespace std; + +class CStatic +{ + private: + static int static_value; + public: + static int get_static_value() const + { + return static_value; + } +}; + +int CStatic::static_value = 1; +int main(int argc,char *argv[]) +{ + cout << CStatic::get_static_value()< + +#include + +using namespace std; + +//关于cin cin.getline cin.get getline gets getchar 的用法实例 + +void main(int argc, char* argv[]) + +{ + +//1、cin>> + +//method one, 也就是最常用的方法 输入一个数字 + +cout << "Test cin>> 用法1:" << endl; + +int a,b; + +cout << "input two integer:" << endl; + +cin >> a >> b; + +cout << "SUM =" << a + b << "\n" << endl; + +//method two,输入一个字符串,遇到“空格 回车 Tab”都结束 + +cout << "Test cin>>用法2:" << endl; + +char array[10]; + +cout << "input a char array:" << endl; + +cin >> array; + +cout << array << "\n" << endl; + +//2、cin.get() + +//one cin.get(字符变量名) 可以用来接收字符 + +cout << "Test cin.get(字符变量名):" << endl; + +char ch; + +char cch; + +cout << "Input a char:" << endl; + +ch = cin.get(); //把之前输入的回车符号滤去 + +cch = cin.get(); //or cin.get(ch); + +cout << cch << "\n" << endl; + +//two cin.get(字符数组,接收的字符数) 用来接收一行字符串可以接收空格 + +cout << "Test cin.get(字符数组,接收的字符数):" << endl; + +char array1[20]; + +cout << "Input a char array:" << endl; + +ch = cin.get(); //把之前输入的回车符号滤去 + +cin.get(array1,10); + +cout << array1 << "\n" << endl; + +//注:cin.get(无参数)主要用来舍弃输入流中不需要的字符 或者舍弃回车 + +//从而弥补了cin.get(字符数组,接收的字符数)的不足 + +//3、cin.getline(cin,str) 接收一个字符串 可以接收空格 + +cout << "Test cin.getline() 的用法:" << endl; + +char array2[20]; + +cout << "Input a char array:" << endl; + +ch = cin.get(); //把之前输入的回车符号滤去 + +cin.getline(array2,20); + +cout << array2 << "\n" << endl; + +//实际上cin.get(字符数组,接收的字符数) 和cin.getline(字符数组,接收的字符数) + +//有三个参数cin.getline(字符数组,接收字符数,结束字符) 第三个参数默认是'\0' + +//多维数组中也经常用到cin.getline(字符数组,接收的字符数)的用法 + +cout << "cin.get(字符数组,接收的字符数) is used in multidimensional array:" << endl; + +char array3[3][10]; + +for (int i = 0;i < 3;i ++) + +{ + +cout << "请输入第" << i+1 << "行的字符串:" << endl; + +cin.getline(array3[i],10); + +} + +for (int j = 0;j < 3;j ++) + +{ + +cout << "第" << j+1 << "行:" << array3[j] << endl; + +} + +//4、getline(cin,str)的用法 接收一个可以包含空格的字符串(这儿是string类型的) 需要包含头文件#include + +//getline(cin,str)是string流不是i/o流 + +cout << "Test getline(cin,str):" << endl; + +string str; + +cout << "Input a string:" << endl; + +//ch = cin.get(); //把之前输入的回车符号滤去 + +getline(cin,str); + +cout << str << "\n" << endl; + +//5、gets(char *) 接收一个可以包含空格的字符串 需要包含头文件#include + +cout << "Test gets(char *)的用法" << endl; + +char array4[20]; + +cout << "input a char array:" << endl; + +ch = cin.get(); //把之前输入的回车符号滤去 + +gets(array4); + +//The gets function reads a line from the standard input stream stdin and stores it in buffer. + +//The line consists of all characters up to and including the first newline character ('\n'). + +//gets then replaces the newline character with a null character ('\0') before returning the line + +cout << array4 << "\n" << endl; + +//gets(char *)也可以用在多维数组里面 跟cin.getline()用法类似 + +//6、getchar(无参数) 接收一个字符 需要包含头文件#include + +cout << "Test getchar(无参数)的用法:" << endl; + +char ch1; + + + +cout << "input a char:" << endl; + +ch1 = getchar(); // 不能写成getchar(ch1); + +cout << ch1 << "\n" << endl; + +//getchar()是C的函数 C++是兼容C 所以也可以使用 但尽量不用或少用 + +} +``` \ No newline at end of file diff --git "a/_drafts/C_C++\344\270\255\347\232\204abort\343\200\201atexit\343\200\201exit\345\222\214_Exit.md" "b/_drafts/C_C++\344\270\255\347\232\204abort\343\200\201atexit\343\200\201exit\345\222\214_Exit.md" new file mode 100644 index 0000000..ac22d40 --- /dev/null +++ "b/_drafts/C_C++\344\270\255\347\232\204abort\343\200\201atexit\343\200\201exit\345\222\214_Exit.md" @@ -0,0 +1,69 @@ +这几个函数都在头文件`stdlib.h`中声明。`exit`、`_Exit`与`abort`函数使程序终止,控制并不返回到这些函数的调用者。 + +## exit函数 + +```c +void exit(intstate); +``` + +`exit`函数用于在程序运行的过程中随时结束程序,`exit`的参数`state`是返回给操作系统,返回0表示程序正常结束,非0表示程序非正常结束。`main`函数结束时也会隐式地调用`exit`函数。`exit`函数运行时首先会执行由`atexit`函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流、关闭所有打开的流、删除标准I/O函数`tmpfile`创建的临时文件、控制返回宿主环境,提供状态值。 + +按照许多系统中的习惯,`state`值为0表示终止程序成功,用非0值表示异常终止。标准C语言中数值0和宏EXIT_SCCESS的值表示终止成功,宏EXIT_FAILURE的值表示终止不成功,其他值的含义由实现定义。从函数`main`返回一个整数值相当于用这个值调用`exit`函数。 + +## _Exit函数 + +```c +void _Exit(int status); //C99 +``` + +函数`_Exit`与`exit`函数不同之处在于既不调用`atexit`注册的退出处理器,也不调用`singal`注册的信号处理器。是否进行其他清理操作由实现定义,如关闭所有打开的数据流。`_Exit`是C99增加的,传统上有些实现用名为`_exit`的函数提供类似功能。 + +## atexit函数 + +```c +int atexit(void(*func)(void)); +``` + +很多时候我们需要在程序退出的时候做一些诸如释放资源的操作,但程序退出的方式有很多种,比如`main`函数运行结束、在程序的某个地方用`exit`结束程序、用户通过`Ctrl+C`或`Ctrl+break`操作来终止程序等等,因此需要有一种与程序退出方式无关的方法来进行程序退出时的必要处理。方法就是用`atexit`函数来注册程序正常终止时要被调用的函数。 + +`atexit`函数的参数是一个函数指针,函数指针指向一个没有参数也没有返回值的函数。 + +在一个程序中最多可以用`atexit`注册32个处理函数,这些处理函数的调用顺序与其注册的顺序相反,也即最先注册的最后调用,最后注册的最先调用。注册函数不能引用任何不是自己定义的存储类为auto或 register的对象(例如通过指针引用)。函数注册几次就会在此时调用几次。 + +下面是一段代码示例: + +```c +#include +#include + +void terminateTest() +{ + cout<<"程序正在结束..."< + +MIRACL: + +GNU MP: + +Piologie: + +cryptlib: + +RSAEuro: + +OpenSSL: + +RSARef: + +GInt:(Delphi) \ No newline at end of file diff --git "a/_drafts/Cache\346\250\241\346\213\237\345\231\250(CacheSim).md" "b/_drafts/Cache\346\250\241\346\213\237\345\231\250(CacheSim).md" new file mode 100644 index 0000000..c27bd5b --- /dev/null +++ "b/_drafts/Cache\346\250\241\346\213\237\345\231\250(CacheSim).md" @@ -0,0 +1,30 @@ + + + +最近写了一个Cache的模拟器,由于平时空余时间比较分散,前前后后用了一周多的时间,基本实现的Cache的模拟功能(通过读取trace文件得到相应的命中率),能够实现直接映射、全相联、组相联三种映射方式,其中全相联和组相联能够实现随机、LRU两种替换策略。目前三种映射方式均采用回写法,但已经定义了其它写策略的接口,可以很容易扩充。程序具有比较强的鲁棒性,能够接受一定范围的错误输入,并能够比较智能的提示用户输入。 + +我尽量缩减了不必要的代码,控制在1000行以内。但日后加上部分功能后,可能会远超这个数目,希望大家帮我优化一下代码,以提高程序的空间效率。时间效率也不是很高,至少现在来说,读取30万行的内存地址数据,如果采取全相联的话,需要耗费的时间还是很长的。我会尽量优化。 + +程序使用C/C++混合编程,但不是采用面向对象的方法,虽然在编写过程中想改成以类的方式实现,但是整体框架已经完成的差不多了,所以就没有改。程序中使用了一些C++11标准中的类,比如bitset,所以必须在支持C++11的编译器上进行编译,但现在主流的编译器比如gcc和VS均已支持,所以不用太担心。 + +我已经上传了代码和可执行程序的最新版本,下载地址是: + +http://download.csdn.net/detail/jiangxinnju/7404137 + +程序能够在Windows平台下直接运行,如果你想在Linux平台运行,请重新编译,并调整base.h中相应的编译选项,其它文件不用修改,因为我已经使用了条件编译适应不同的编译环境。如果你只是想查看最后的数据结果,不关心每条数据的具体命中情况请不要在编译的时候注释掉 + +#define NDEBUG // For NDEBUG pattern + +否则,程序需要很长的运行时间。另外如果你希望看到本程序的历史版本,或者希望在我的程序中添加新的功能,可以直接fork我的github,地址为: + +https://github.com/jiangxincode/CacheSim + +关于本程序的版权声明,可以参考README.txt文件,在遵守相关条目的基础上,你可以任意拷贝、修改我的程序。 + +如果你对于程序中的内容有所疑问,比如无法在你的机器上正常编译或运行,可以直接联系我,我的Email地址为: + +jiangxinnju@163.com + +欢迎各位朋友提出修改意见。 + + \ No newline at end of file diff --git "a/_drafts/Calendar\347\261\273\344\270\255add_set_roll\346\226\271\346\263\225\347\232\204\345\214\272\345\210\253.md" "b/_drafts/Calendar\347\261\273\344\270\255add_set_roll\346\226\271\346\263\225\347\232\204\345\214\272\345\210\253.md" new file mode 100644 index 0000000..93789bb --- /dev/null +++ "b/_drafts/Calendar\347\261\273\344\270\255add_set_roll\346\226\271\346\263\225\347\232\204\345\214\272\345\210\253.md" @@ -0,0 +1,66 @@ +欢迎和大家交流技术相关问题: + +* 邮箱: jiangxinnju@163.com +* 博客园地址: http://www.cnblogs.com/jiangxinnju +* GitHub地址: https://github.com/jiangxincode +* 知乎地址: https://www.zhihu.com/people/jiangxinnju + +Calendar类中有三个方法更改日期的某个字段:set()、add() 和 roll()。 + +set(f, value) 将日历字段 f 更改为 value。此外,它设置了一个内部成员变量,以指示日历字段 f 已经被更改。尽管日历字段 f 是立即更改的,但是直到下次调用 get()、getTime()、getTimeInMillis()、add() 或 roll()时才会重新计算日历的时间值(以毫秒为单位)。因此,多次调用 set() 不会触发多次不必要的计算。使用 set()更改日历字段的结果是,其他日历字段也可能发生更改,这取决于日历字段、日历字段值和日历系统。此外,在重新计算日历字段之后,get(f) 没必要通过调用 set 方法返回 value 集合。具体细节是通过具体的日历类确定的。 + +示例:假定 GregorianCalendar 最初被设置为 1999 年 8 月 31 日。调用 set(Calendar.MONTH, Calendar.SEPTEMBER) 将该日期设置为 1999 年 9 月 31 日。如果随后调用 getTime(),那么这是解析 1999 年 10 月 1 日的一个暂时内部表示。但是,在调用 getTime() 之前调用 set(Calendar.DAY_OF_MONTH, 30) 会将该日期设置为 1999 年 9 月 30 日,因为在调用 set() 之后没有发生重新计算。 + +add(f, delta) 将 delta 添加到 f 字段中。这等同于调用 set(f, get(f) + delta),但要带以下两个调整: + +* Add 规则 1。调用后 f 字段的值减去调用前 f 字段的值等于 delta,以字段 f 中发生的任何溢出为模。溢出发生在字段值超出其范围时,结果,下一个更大的字段会递增或递减,并将字段值调整回其范围内。 + +* Add 规则 2。如果期望某一个更小的字段是不变的,但让它等于以前的值是不可能的,因为在字段 f发生更改之后,或者在出现其他约束之后,比如时区偏移量发生更改,它的最大值和最小值也在发生更改,然后它的值被调整为尽量接近于所期望的值。更小的字段表示一个更小的时间单元。HOUR 是一个比 DAY_OF_MONTH 小的字段。对于不期望是不变字段的更小字段,无需进行任何调整。日历系统会确定期望不变的那些字段。 + +此外,与 set() 不同,add() 强迫日历系统立即重新计算日历的毫秒数和所有字段。 + +示例:假定 GregorianCalendar 最初被设置为 1999 年 8 月 31 日。调用 add(Calendar.MONTH, 13) 将日历设置为 2000 年 9 月 30 日。Add 规则 1 将 MONTH 字段设置为 September,因为向 August 添加 13 个月得出的就是下一年的 September。因为在 GregorianCalendar 中,DAY_OF_MONTH 不可能是 9 月 31 日,所以 add 规则 2 将DAY_OF_MONTH 设置为 30,即最可能的值。尽管它是一个更小的字段,但不能根据规则 2 调整 DAY_OF_WEEK,因为在 GregorianCalendar 中的月份发生变化时,该值也需要发生变化。 + +roll(f, delta) 将 delta 添加到 f 字段中,但不更改更大的字段。这等同于调用 add(f, delta),但要带以下调整: + +* Roll 规则。在完成调用后,更大的字段无变化。更大的字段表示一个更大的时间单元。DAY_OF_MONTH是一个比 HOUR 大的字段。 + +示例:请参阅 GregorianCalendar.roll(int, int)。 + +使用模型。为了帮助理解 add() 和 roll() 的行为,假定有一个用户界面组件,它带有用于月、日、年和底层GregorianCalendar 的递增或递减按钮。如果从界面上读取的日期为 1999 年 1 月 31 日,并且用户按下月份的递增按钮,那么应该得到什么?如果底层实现使用 set(),那么可以将该日期读为 1999 年 3 月 3 日。更好的结果是 1999 年 2 月 28 日。此外,如果用户再次按下月份的递增按钮,那么该日期应该读为 1999 年 3 月 31 日,而不是 1999 年 3 月 28 日。通过保存原始日期并使用 add() 或 roll(),根据是否会影响更大的字段,用户界面可以像大多数用户所期望的那样运行。 + +假设:f= 2001-1-30 +f.add(Calendar.MONTH, 13) = 2002.2.28 +f.set(Calendar.MONTH,1) = 2002.3.2 +f.roll(Calendar.MONTH, 13) = 2001.2.28 + +Add:修改后如果符合实际,会调整,但不会改变调整的值,如例子中的MONTH。 +Set: 会改变如把2月改为3月。 +roll:于Add类似,不同在于不会改变更大的日期单位,如还是2001 不会为2002。 + +下面为代码演示: + +```java + Calendar c=Calendar.getInstance(); + //c.setTimeInMillis(System.currentTimeMillis()); + + c.set(2001,0,30); + c.add(Calendar.MONTH, 13); + System.out.println(c.getTime().toString()); + c.set(2001,0,30); + c.set(Calendar.MONTH,1); + System.out.println(c.getTime().toString()); + c.set(2001,0,30); + c.roll(Calendar.MONTH, 13); + System.out.println(c.getTime().toString()); +``` + +结果: + +``` + Thu Feb 28 10:22:37 CST 2002 + Fri Mar 02 10:22:37 CST 2001 + Wed Feb 28 10:22:37 CST 2001 +``` + +注意,Calendar.MONTH是从0开始的,也就是说一月用0表示 \ No newline at end of file diff --git "a/_drafts/Code Blocks+gtest\347\216\257\345\242\203\351\205\215\347\275\256.md" "b/_drafts/Code Blocks+gtest\347\216\257\345\242\203\351\205\215\347\275\256.md" new file mode 100644 index 0000000..e4dbcf4 --- /dev/null +++ "b/_drafts/Code Blocks+gtest\347\216\257\345\242\203\351\205\215\347\275\256.md" @@ -0,0 +1,78 @@ +本文仅介绍Code::Blocks+gtest环境配置,gtest具体使用方法请参考: +玩转Google开源C++单元测试框架Google Test系列(gtest)(总) + + +## 环境概要 +* Code::Blocks 13.12 +* Windows 8.1 +* gtest-1.7.0 + +## 说明 +gtest是一个优秀的开源C++单元测试框架,详细介绍可以参考官方网站。由于某种原因需要在Windows下使用Code::Blocks进行C++开发,特将配置过程进行记录以备之后查阅。 + +下载安装Code::Blocks,官方网址是,我下载的是codeblocks-13.12mingw-setup.exe版本,由于Code::Blocks的安装比较简单,这里我就不多说了,相信大家看此文章的目的不是查阅Code::Blocks的安装说明。 + +下载gtest,官方网站是,我下的是gtest-1.7.0.zip版本,下载完成之后进行解压,我解压的目录是E:\ gtest-1.7.0\ + +下载安装CMake,CMake是跨平台的构建工具,官方网站是,我下载的是cmake-3.2.1-win32-x86.exe,安装之后运行cmake-gui,配置源代码目录(之前解压的gtest目录)和要build到的目标目录。可以参考如下截图,但目录设置要根据自己的环境进行配置。 + +![](https://img2018.cnblogs.com/blog/611264/201812/611264-20181223093156175-476261803.png) + +单击Configure,出现如下对话框,按照下图选择合适选项: + +![](https://img2018.cnblogs.com/blog/611264/201812/611264-20181223093209117-1699921407.png) + +单击Finish,会在目标目录产生MinGW Makefiles,之后会出现下图: + +![](https://img2018.cnblogs.com/blog/611264/201812/611264-20181223093226394-691530640.png) + +选中gtest_disable_pthreads一项,单击Generate,即会产生Code::Blocks工程文件(.cbp)。 +用Code::Blocks打开该文件,直接进行编译,会在目标目录产生两个库文件: +* libgtest.a +* libgtest_main.a + +此时gtest的编译工作就完成了,用Code::Blocks新建工程目录gtest,在maim.h中写入如下代码: + +```cpp +#include +#include +int add(int a, int b) +{ + return a+b; +} +TEST(addtest, HandleNoneZeroInput) +{ + EXPECT_EQ(14, add(4, 10)); + EXPECT_EQ(-2, add(-3, 1)); +} +int main(int argc, char *argv[]) +{ + testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); + return 0; +} +``` + +将gtest源代码目录中的`include`中的文件拷贝到工程目录中的`include`文件夹中,将之前build生成的两个文件拷贝到工程目录中的`lib`文件夹中。右键`project`,选择`Build options...`,在`Linker settings > Other linker options`下填写`-lgtest`。点击选项卡`Search directories`,在`Compiler`子选项卡中`Add`一项,加入`include`目录,在`Linker`子选项卡中`Add`一项,加入`lib`目录。点击OK + +此时build工程如果成功会出现以下结果: + +![](https://img2018.cnblogs.com/blog/611264/201812/611264-20181223093246425-1302771199.png) + + +如果工程中想使用C++11的新特征,得用命令行参数`-std=gnu++11`,而不是`-std=c++11`。具体做法是右键`project`,选择`Build options...`,清除`Compiler settings > Compile Flags`下与-std=有关的复选框,点击选项卡`Compiler settings > Other options`,在对话框中填写`-std=gnu++11`。如果直接使用-std=c++11等选项会出现以下错误: + +```shell +include/gtest/internal/gtest-port.h: In function 'int testing::internal::posix::StrCaseCmp(const char*, const char*)': +include/gtest/internal/gtest-port.h:1719:25: error: '_stricmp' was not declared in this scope +include/gtest/internal/gtest-port.h: In function 'char* testing::internal::posix::StrDup(const char*)': +include/gtest/internal/gtest-port.h:1721:58: error: '_strdup' was not declared in this scope +include/gtest/internal/gtest-port.h: In function 'int testing::internal::posix::FileNo(FILE*)': +include/gtest/internal/gtest-port.h:1729:52: error: '_fileno' was not declared in this scope +include/gtest/internal/gtest-port.h: In function 'FILE* testing::internal::posix::FDOpen(int, const char*)': +include/gtest/internal/gtest-port.h:1779:71: error: 'fdopen' was not declared in this scope +``` + +另外,如果你的project的build option中已经清除Compiler settings > Compile Flags下与-std=有关的复选框,但还是出现这个问题,可能原因是你的global设置有问题,你可以查看Settings->Complier选项卡是否也设置正确,如果没有请正确设置。 + +![](https://img2018.cnblogs.com/blog/611264/201812/611264-20181223093303761-1014037495.png) \ No newline at end of file diff --git "a/_drafts/C\350\257\255\350\250\200\344\270\255\351\232\217\346\234\272\346\225\260\347\233\270\345\205\263\351\227\256\351\242\230.md" "b/_drafts/C\350\257\255\350\250\200\344\270\255\351\232\217\346\234\272\346\225\260\347\233\270\345\205\263\351\227\256\351\242\230.md" new file mode 100644 index 0000000..a8a874d --- /dev/null +++ "b/_drafts/C\350\257\255\350\250\200\344\270\255\351\232\217\346\234\272\346\225\260\347\233\270\345\205\263\351\227\256\351\242\230.md" @@ -0,0 +1,75 @@ +用C语言产生随机数重要用到rand函数、srand函数、及宏RAND_MAX(32767),它们均在stdlib.h中进行了声明。 + +int rand(void);//生成一个随机数 + +voidsrand(unsigned int seed); //为rand设置“种子”的值 + +srand()就是给rand()提供种子seed,如果srand每次输入的数值是一样的,那么每次运行产生的随机数也是一样的。通常的做法是以这样一句代码: + +srand((unsigned)time(NULL)); + +来取代,这样将使得种子为一个不固定的数,这样产生的随机数就不会每次执行都一样了。先看一个例子: + +```C +#include + +#include + +#include + + + +int test_rand() + +{ + + int i; + + /* Seed therandom-number generator with current time so that + + * thenumbers will be different every time we run. + + */ + + srand((unsigned)time( NULL ) ); + + /* Display10 numbers. */ + + for( i = 0;i < 10; i++ ) + + printf("%6d\n", rand()); + + return 0; + +} +``` + +C的函数库之所以没有把使用系统时钟初始化随机种子这步重要的操作直接放进rand函数的实现中,可能有如下原因: + +1.可以高效产生连续的随机数,不用每次都初始化; + +2.给程序员以更高的灵活性,因为可能在要求较高的场合,应该使用更好的的数据做种子,而不是系统时钟; + +3.对于只是想产生大量伪随机数来尽兴某种验证或者统计,未必需要初始化,大不了程序每次运行都产生同样的一系列随机数而已——有些情况下,这是无所谓的。 + +4.作为伪随机序列产生器的rand()函数,必须具备的一个重要特性就是:产生的序列必须是可重现的。这不仅仅是一个算法,相当大的程度上,它关系到代码测试的准确性。如果算法中使用了和rand()的结果相关的数据,通过一个可控的可重现序列,我们就有机会再现每一次测试的过程,从而更有效的找到问题的所在。所以这里提出一个建议,代码中,如果rand()的函数结果关系到算法的结果,那么,必须保证你的rand()调用是可重现的。 + +另外使用rand还用几个问题: + +* 如何生成 0到 100之间的随机数? + +用"int x = rand() % 100;"这种方法是不或取的,会使产生的随机数不在随机。产生一个0到n之间的随机数的比较好的做法是: + +j=(int)(n*rand()/(RAND_MAX+1.0)); + +* 如何产生一个范围在(a,b)之间的随机数? + +先计算a与b的差值,设c=b-a;产生一个介于0和b-a的数值,设 + +d=(int)((b-a)*rand())/(RAND_MAX+1.0) + +让上面产生的值d加上a就可以了。 + +如果你使用C++11编程,请使用C++11自己的随机数生成方法! + +虽然前面介绍了那么多,但是我还是想说C语言的随机数生成方法有很多缺陷,很容易被引入非随机性,而且功能单一,如果可以的话去,你最好避免使用它。 \ No newline at end of file diff --git "a/_drafts/DB2\345\270\270\347\224\250\350\257\255\345\217\245.md" "b/_drafts/DB2\345\270\270\347\224\250\350\257\255\345\217\245.md" new file mode 100644 index 0000000..3af4c9e --- /dev/null +++ "b/_drafts/DB2\345\270\270\347\224\250\350\257\255\345\217\245.md" @@ -0,0 +1,81 @@ +欢迎和大家交流技术相关问题: +邮箱: jiangxinnju@163.com +博客园地址: http://www.cnblogs.com/jiangxinnju +GitHub地址: https://github.com/jiangxincode +知乎地址: https://www.zhihu.com/people/jiangxinnju + + +```sql +CREATE TABLE STAFF_BAK LIKE STAFF; +INSERT INTO STAFF_BAK SELECT * FROM STAFF; + +SELECT * FROM STAFF_BAK; + +SELECT * FROM STAFF_BAK FETCH FIRST 10 ROWS ONLY; + +DELETE FROM STAFF_BAK; +DROP TABLE STAFF_BAK; + +CREATE TABLE STAFF_BAK AS (SELECT * FROM STAFF) DEFINITION ONLY; + +-- 创建物化表 +CREATE TABLE STAFF_BAK AS (SELECT * FROM STAFF) +DATA INITIALLY DEFERRED REFRESH DEFERRED; +REFRESH TABLE STAFF_BAK; + +-- 系统表说明 + +-- SYSIBM 基本表,对于db2使用进行最优化 + +-- 存放系统中check约束的信息,系统为每个表的每一个check约束建立一条记录 +SELECT * FROM SYSIBM.SYSCHECKS; + +-- 存放系统中所有表的数据列的描述信息,系统为db2里定义的每个表的每一列建立一条记录 +SELECT * FROM SYSIBM.SYSCOLUMNS; + +-- 为每个索引建立一条记录 +SELECT * FROM SYSIBM.SYSINDEXES; + +-- 系统为每一个表,视图和别名在该表中创建一行记录 +SELECT * FROM SYSIBM.SYSTABLES; + +-- 每个plan有一条记录 +SELECT * FROM SYSIBM.SYSPLAN; + +SELECT * FROM SYSIBM.SYSNODEGROUPDEF; + +-- SYSCAT 基于SYSIBM表的视图,对平常轻负荷使用进行优化 + +-- 这两个视图显示被注册的包装器和它们特定的选项 +SELECT * FROM SYSCAT.WRAPPERS; +SELECT * FROM SYSCAT.WRAPOPTIONS; + + +-- 这两个视图显示被注册的远程数据源和它们的特定选项 +SELECT * FROM SYSCAT.SERVERS; +SELECT * FROM SYSCAT.SERVEROPTIONS; + + +-- 这个视图显示被注册的一个db2用户用于特定服务器的用户认证 +SELECT * FROM SYSCAT.USEROPTIONS; + +-- 这个视图显示分区表信息 +SELECT * FROM SYSCAT.DATAPARTITIONS; + +-- SYSSTAT 数据库分析 + + +CREATE DATABASE 'JXDB'; + +-- 创建分区表 +CREATE TABLE MUSIC(ID INTEGER,NAME VARCHAR(20),STYLE VARCHAR(20),STYLE_CODE INTEGER) +PARTITION BY RANGE(STYLE_CODE) +(PART P1 STARTING '1',PART P2 STARTING '2',PART P3 STARTING '3',PART P4 STARTING '4' ENDING MAXVALUE); + +INSERT INTO MUSIC VALUES(1,'HAVE A NICE DAY','POP',2); +INSERT INTO MUSIC VALUES(2,'WE WILL ROCK YOU','ROCK',1); + +DESCRIBE DATA PARTITIONS FOR TABLE MUSIC SHOW DETAIL; + +SELECT DATAPARTITIONNAME,TABNAME,AVGROWSIZE FROM SYSCAT.DATAPARTITIONS WHERE TABNAME = 'MUSIC'; +``` \ No newline at end of file diff --git "a/_drafts/Eclipse+Spark\346\220\255\345\273\272\346\272\220\347\240\201\345\210\206\346\236\220\347\216\257\345\242\203\351\227\256\351\242\230\345\210\206\346\236\220.md" "b/_drafts/Eclipse+Spark\346\220\255\345\273\272\346\272\220\347\240\201\345\210\206\346\236\220\347\216\257\345\242\203\351\227\256\351\242\230\345\210\206\346\236\220.md" new file mode 100644 index 0000000..551689e --- /dev/null +++ "b/_drafts/Eclipse+Spark\346\220\255\345\273\272\346\272\220\347\240\201\345\210\206\346\236\220\347\216\257\345\242\203\351\227\256\351\242\230\345\210\206\346\236\220.md" @@ -0,0 +1,31 @@ +欢迎和大家交流技术相关问题: +邮箱: jiangxinnju@163.com +博客园地址: http://www.cnblogs.com/jiangxinnju +GitHub地址: https://github.com/jiangxincode +知乎地址: https://www.zhihu.com/people/jiangxinnju + + +# Scala IDE complains about ‘... is cross-compiled with an incompatible version of Scala ...’ + +* http://scala-ide.org/docs/current-user-doc/faq/index.html + + +# "Cannot run program "bash" ...: CreateProcess error=2" + +[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.8:run (default) on project spark-core_2.11: An Ant BuildException has occured: Execute failed: java.io.IOException: Cannot run program "bash" (in directory "D:\temp\Scala\spark\core"): CreateProcess error=2, 系统找不到指定的文件。 + +* http://blog.csdn.net/xubo245/article/details/52073805 + + +# "Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:3.0.0:clean..." + +[ERROR] Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:3.0.0:clean (default-clean) on project spark-parent_2.10: Failed to clean project: Failed to delete /usr/spark/spark-2.1.0/target/tmp -> [Help 1] + +* http://www.cnblogs.com/o-din/p/6292153.html + + +# "Could not transfer artifact ... from/to central ...: GET request of: ... from central failed: Tag mismatch!" + +[ERROR] Failed to execute goal on project spark-sql_2.11: Could not resolve dependencies for project org.apache.spark:spark-sql_2.11:jar:2.2.0-SNAPSHOT: Could not transfer artifact it.unimi.dsi:fastutil:jar:6.5.7 from/to central (https://repo1.maven.org/maven2): GET request of: it/unimi/dsi/fastutil/6.5.7/fastutil-6.5.7.jar from central failed: Tag mismatch! -> [Help 1] + +删除fastutil-6.5.7.jar重新下载 \ No newline at end of file diff --git "a/_drafts/Eclipse\344\270\255Ant\347\232\204\351\205\215\347\275\256\344\270\216\346\265\213\350\257\225 \350\275\254.md" "b/_drafts/Eclipse\344\270\255Ant\347\232\204\351\205\215\347\275\256\344\270\216\346\265\213\350\257\225 \350\275\254.md" new file mode 100644 index 0000000..6fa5a53 --- /dev/null +++ "b/_drafts/Eclipse\344\270\255Ant\347\232\204\351\205\215\347\275\256\344\270\216\346\265\213\350\257\225 \350\275\254.md" @@ -0,0 +1,131 @@ +欢迎关注我的社交账号: + +博客园地址: http://www.cnblogs.com/jiangxinnju/p/4781259.html +GitHub地址: https://github.com/jiangxincode +知乎地址: https://www.zhihu.com/people/jiangxinnju + + +Ant是Java平台下非常棒的批处理命令执行程序,能非常方便地自动完成编译,测试,打包,部署等等一系列任务,大大提高开发效率。如果你现在还没有开始使用Ant,那就要赶快开始学习使用,使自己的开发水平上一个新台阶。Eclipse中已经集成了Ant,我们可以直接在Eclipse中运行Ant。以前面建立的Hello工程为例,创建以下目录结构: + +![](http://images2015.cnblogs.com/blog/611264/201512/611264-20151211222840887-2057018532.jpg) + +新建一个build.xml,放在工程根目录下。build.xml定义了Ant要执行的批处理命令。虽然Ant也可以使用其它文件名,但是遵循标准能更使开发更规范,同时易于与别人交流。 通常,src存放Java源文件,classes存放编译后的class文件,lib存放编译和运行用到的所有jar文件,web存放JSP等web文件,dist存放打包后的jar文件,doc存放API文档。然后在根目录下创建build.xml文件,输入以下内容: + +```xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *********************************************************** + **** One or more tests failed! Check the output ... **** + *********************************************************** + + + + + + + + + + + + + + + + + + Hello, test]]> + All Rights Reserved.]]> + + + + + +``` + +选中Hello工程,然后选择“Project”,“Properties”,“Builders”,“New…”,选择“Ant Build”: + +![](http://images2015.cnblogs.com/blog/611264/201512/611264-20151211222905012-466425527.jpg) + +填入Name:Ant_Builder;Buildfile:build.xml;Base Directory:${workspace_loc:/Hello}(按“Browse Workspace”选择工程根目录),由于用到了junit.jar包,搜索Eclipse目录,找到junit.jar,把它复制到Hello/lib目录下,并添加到Ant的Classpath中: + +![](http://images2015.cnblogs.com/blog/611264/201512/611264-20151211222917434-787575864.jpg) + +然后在Builder面板中钩上Ant_Build,去掉Java Builder: + +![](http://images2015.cnblogs.com/blog/611264/201512/611264-20151211222930747-1268707877.jpg) + +再次编译,即可在控制台看到Ant的输出: + +```shell + +Buildfile: F:\eclipse-projects\Hello\build.xml +init: +compile: +[mkdir] Created dir: F:\eclipse-projects\Hello\classes +[javac] Compiling 2 source files to F:\eclipse-projects\Hello\classes +test: +[mkdir] Created dir: F:\eclipse-projects\Hello\report +[junit] Running example.HelloTest +[junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.02 sec +pack: +[mkdir] Created dir: F:\eclipse-projects\Hello\dist +[jar] Building jar: F:\eclipse-projects\Hello\dist\hello.jar +doc: +[mkdir] Created dir: F:\eclipse-projects\Hello\doc +[javadoc] Generating Javadoc +[javadoc] Javadoc execution +[javadoc] Loading source files for package example... +[javadoc] Constructing Javadoc information... +[javadoc] Standard Doclet version 1.4.2_04 +[javadoc] Building tree for all the packages and classes... +[javadoc] Building index for all the packages and classes... +[javadoc] Building index for all classes... +[javadoc] Generating F:\eclipse-projects\Hello\doc\stylesheet.css... +[javadoc] Note: Custom tags that could override future standard tags: +@todo. To avoid potential overrides, use at least one period character (.) in custom tag names. +[javadoc] Note: Custom tags that were not seen: @todo +BUILD SUCCESSFUL +Total time: 11 seconds + +``` + +Ant依次执行初始化,编译,测试,打包,生成API文档一系列任务,极大地提高了开发效率。将来开发J2EE项目时,还可加入部署等任务。并且,即使脱离了Eclipse环境,只要正确安装了Ant,配置好环境变量ANT_HOME=,Path=…;%ANT_HOME%\bin,在命令行提示符下切换到Hello目录,简单地键入ant即可。 \ No newline at end of file diff --git "a/_drafts/Eclipse\345\205\250\351\235\242\346\217\220\351\200\237\345\260\217\346\212\200\345\267\247.md" "b/_drafts/Eclipse\345\205\250\351\235\242\346\217\220\351\200\237\345\260\217\346\212\200\345\267\247.md" new file mode 100644 index 0000000..a11f620 --- /dev/null +++ "b/_drafts/Eclipse\345\205\250\351\235\242\346\217\220\351\200\237\345\260\217\346\212\200\345\267\247.md" @@ -0,0 +1,154 @@ +转自:http://rongmayisheng.com/post/eclipse%E5%85%A8%E9%9D%A2%E6%8F%90%E9%80%9F + +欢迎关注我的社交账号: + +博客园地址: http://www.cnblogs.com/jiangxinnju +GitHub地址: https://github.com/jiangxincode +知乎地址: https://www.zhihu.com/people/jiangxinnju + + +你是否经常在等待eclipse的一些操作完成? + +如果你看到这里,说明答案是yes。如果你苦于eclipse中响应很慢的功能,并且想给eclipse提速让开发更舒服些,就请看看下面的内容。 + +注意:可能一般人都建议加大内存。如果可以,你可以买个cpu好点的机器。弄个SSD让你的文件操作更快。 + +我们假设你买不起这些,你所能做的就是启动eclipse实例,所有ubuntu的设置都是基于eclipse 4.3.0版本,build id:I20121031-2000,当然其他平台的版本的设置都差不多。 + + +# Eclipse优化 + +## 插件 + +当我第一次找到强大的插件时,我非常高兴。我安装的越来越多后,eclipse就用起来不舒服了。所以你可以从众多的插件中禁用一些不常用的插件,禁用不代表删除,你仍然可以启用他们。 + +Window -> Preferences -> General -> Startup and Shutdown + +![](http://images2015.cnblogs.com/blog/611264/201604/611264-20160406215313750-912033735.jpg) +禁用不常用的eclipse启动插件 + +一些插件可能在尝试体验时用一用,但是后来可能在也不用了,这种情况可以把它删掉。 + +Help -> About Eclipse SDK -> Instalation Details -> Select plugin -> Uninstall + +![](http://images2015.cnblogs.com/blog/611264/201604/611264-20160406215333453-931954978.jpg) +卸载eclipse插件 + +## eclipse.ini + +下面的优化都需要修改eclipse所在目录下的eclipse.ini文件。 + +给eclipse执行jvm。它可以让你使用自己的jdk,而不是系统环境变量所指定的jdk + +-vm +/path/to/your/java +使用最新的jdk来运行eclipse。使用最新的jdk要好很多。 + +使用sun的jdk来运行ecipse。原因同上。 + +配置jvm虚拟机的启动参数。你可以自定义虚拟机参数,如果你觉得他们更合适(虚拟机参数介绍)。我使用下面的启动参数来增加堆的大小至768Mb,perm区设置为256Mb(内存总大小为3Gb) + +-vmargs +-Xms768m +-Xmx768m +-XX:PermSize=256m +-XX:MaxPermSize=256m +你可以添加-Xverify:none参数来跳过jvm对class文件的校验,以此提升eclipse的启动速度,但这是很不安全的。 + +你还可以通过测试不同的垃圾回收器策略、server参数来测试eclipse的性能差异。以下为实验过程中使用的部分参数: + +-server +-XX:+UnlockExperimentalVMOptions +-XX:+UseG1GC +-XX:+UseParallelGC +-XX:+UseFastAccessorMethods +-Xss2m +可以在这里查看所有的eclipse运行时参数,选择适合你的参数。 + + +## 禁用动画 + +动画很酷,但如果可以的话,我总是在所有的工具中禁用动画。所以classic主题是我最常用的主题。 + +Window -> Preferences -> General -> Appearance -> Uncheck 'Enable animations' + +![](http://images2015.cnblogs.com/blog/611264/201604/611264-20160406215358672-345703309.jpg) +设置eclipse主题 + +## 禁用label decoration + +label decoration是项目、文件、类层级上的小图标,它可以有益于显性化文件的状态。比如:文件是否已经提交到git。很多插件都提供了这个功能,但很少有用。你可以仅留下你想要的,其他的禁用。 + +Window -> Preferences -> General -> Appearance -> Label Decorations + +![](http://images2015.cnblogs.com/blog/611264/201604/611264-20160406215416437-851189716.jpg) +设置label decoration + +## 自动补全 + +有时在性能较差的机器上,或者当你有很多类的时,自动补全功能性能就会很差。一个很小的优化是减少自动补全的proposal。我仅保留了Java Proposals和Template Proposals: + +Window -> Preferences -> Java -> Editor -> Content Assist -> Advanced + +![](http://images2015.cnblogs.com/blog/611264/201604/611264-20160406215432031-265406027.jpg) +eclipse Content Assist,eclipse自动补全设置 + +## 取消验证器 + +如果你对自己的技术很自信,就可以暂停所有的校验器。就算出现问题,你也可以靠自己的能力定位问题,节省了你的开发时间。 + +Window -> Preferences -> Validation -> Suspend All Validators + +![](http://images2015.cnblogs.com/blog/611264/201604/611264-20160406215447500-1811569106.jpg) +取消eclipse校验器 + +## 关闭不相关的工程 + +如果你仅开发部分eclipse中的工程,那你最好把其他功能关闭掉。他们不会出现在eclipse索引中。 + +你可以在workspace中手动关闭不相关的工程(Close unrelated projects)。但我推荐使用Working Set,你可以添加多个工程到一个Working Set中,这样就可以快速的在Working Set件切换。 + +Right Click on Project -> Assign Working Sets.. +## 关闭编辑器中不用的tab** + +编辑中太多的tab会导致eclipse性能下降,可以这样控制下tab的个数: + +Window -> Preferences -> General -> Editors +勾选Close editors automatically并设置Number of opened tabs为10。 + + +![](http://images2015.cnblogs.com/blog/611264/201604/611264-20160406215502234-3237224.jpg) +控制eclipse编辑器中tab的个数 + +## 禁用拼写检查 + +你还是个程序员吗?我觉得没有任何理由需要拼写检查功能。取消这个功能吧: + +Window -> Preferences -> General -> Editors -> Text Editors -> Spelling -> Uncheck 'Enable spell checking' +## 禁用auto build + +如果你在意什么时候build你的工程,可以这样设置: + +Project -> Uncheck 'Build Automatically' +Window -> Preferences -> Java -> Compiler -> Building -> Uncheck 'Scrub output folders when cleaning' +Window -> Preferences -> Java -> Compiler -> Building -> Uncheck 'Rebuild class files modified by others' +## 快捷键 + +仁者见仁,智者见智。就算你用超快的IDE功能,但如果你要花10个动作才能实现一个操作,那你的开发过程就不算快。 + +把你最常用的动作配置成快捷键,并记住他们,几周的使用后,你的开发效率将由显著提升。 + +Windows -> Preferences -> General -> Keys +为了逼着自己使用所有的快捷键,我直接把工具栏给禁用了。 + +Window -> Hide Toolbar + +# 参考链接 + +* http://wiki.eclipse.org/Eclipse.ini +* http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html +* http://www.beyondlinux.com/2011/06/25/speed-up-your-eclipse-as-a-super-fast-ide/ +* http://blog.normation.com/2010/05/24/optimizing-eclipse-performances/ +* http://stackoverflow.com/questions/142357/what-are-the-best-jvm-settings-for-eclipse/1409590#1409590 + +英文原文:http://mishadoff.com/blog/eclipse-speedup/ \ No newline at end of file diff --git "a/_drafts/Eclipse\347\233\270\345\205\263\351\227\256\351\242\230.md" "b/_drafts/Eclipse\347\233\270\345\205\263\351\227\256\351\242\230.md" new file mode 100644 index 0000000..8a55e32 --- /dev/null +++ "b/_drafts/Eclipse\347\233\270\345\205\263\351\227\256\351\242\230.md" @@ -0,0 +1,332 @@ +博客园地址: http://www.cnblogs.com/jiangxinnju +GitHub地址: https://github.com/jiangxincode +知乎地址: https://www.zhihu.com/people/jiangxinnju + + +## MANIFEST.MF文件 + +在Eclipse的.classpath和runableX.jar中的MANIFEST.MF文件中都指定了可依赖jar包的顺序,所以只要保证需要的jar包排在前面,被classloader首先加载即可。对一普通的jar包,由于MANIFEST.MF没有指定加载顺序,所以必须`java -cp A.jar;C-2.jar;C-1.jar com.jiangxin.classloader.A` + + +## Eclipse 一直提示 loading descriptor for 解决 + +Eclipse左侧的Project Explorer 最右上角有一个小钮,鼠标移上去时提示"View Menu".点一下,在弹出的上下文菜单中选择"Customize View..." 弹出一个对话框.选择: Content 选项卡,在里面把没用的去掉就行了 J2EE WEB loading descriptor . + +## 关于Eclipse配置文件导出问题 + +Eclipse的默认配置一般不能满足我们的要求,我们一般会修改一些配置,如字体、背景颜色、快捷键及一些template等等,这样方便我们的开发。可是当我们新建一个工作空间的时候,Eclipse又会使用默认配置,怎样将我们习惯的配置导出然后导入新工作空间呢? + +方法一:使用eclipse的导出功能。工作目录中右键选择Export->General->Preference,这样可以导出epf文件,新的工作空间中可以用Import导入该配置文件,这个方法的确可以导入绝大多数的配置,但是并不全,导入后会丢失很多配置。 + +方法二:将workspace/.metadata/.plugins/org.eclipse.core.runtime中的.settings文件夹拷贝出来,里面就是所有的配置文件,新建工作空间的时候将该.settings文件夹替换掉新工作空间中的.settings文件夹即可。(有网友是将.plugings文件夹替换,但是.plugings文件夹太大了,实际上就是替换.settings文件夹,.settings只有几百k。)另外导出界面上的工具栏对话框布局等:.metadata\.plugins\org.eclipse.e4.workbench 将该文件夹保存起来即可。 + +## 如何升级Eclipse才能保留之前安装的插件 + +`File->Import->Install->From Exist Installation`,选择旧的Eclipse安装文件夹,这样以前装的插件就都出现了。直接全选安装,瞬间就从本地的安装中把原来的插件都迁移过来了。 +如果中途报错,直接重启,然后一部分一部分导入即可。揪出哪个插件导致的崩溃。 + + +## Eclipse列编辑 + +其实Eclipse也有列编辑功能,不过要3.5以后的版本。要使用Eclipse的列编辑功能,只需要通过快捷键Alt+Shift+a来打开,关闭也一样。有了列编辑功能,就可以对一块代码进行编辑了,比如一块代码的缩进,只需要选中代码块按Tab就可以了,又比如想在每行第二个字符前加入一个“test”,那么只需要向下拖动光标,使定位在每行的第二个字符,然后就可以插入啦。当然,还有更多好玩的功能可以使用,摸索一下就知道了。 + +## Eclipse中修改注释中@author + +`Window-->Preferences-->Java-->Code Style-->Code Templates`,点击Comments,找到Types 然后双击填入以下几个东西,然后在新建类的时候选择`Generate comments`即可 + + /** + * @author 作者的名字 E-mail: 写自己的Email + * @version 创建时间:${date} ${time} + */ + +## Eclipse中 sysout 按alt+/为什么不出System.out.println(); + +需要重新设置快捷键。按快捷键ctrl+shirt+L,然后在按一下L。设置快捷键的对话框就出来了,然你将Word Completion移除,在将Content Assist 这个设置为alt+/。就可以了。 + +1、myeclpse–>Preferences–>General–>Keys。删掉word completion的快捷键设置alt+/ 【这个跟Content Assist起冲突了】 + +2、把Content Assist的快捷键由ctrl+space改成alt+/ + +## Eclipse Unable to install breakpoint in XXX 解决办法 + +我出现的原因是这样:使用ant进行编译,之后就打不了断点,这个是ant的编译eclipse不认。 + +解决方法: + +1.要么删除class文件 重新在eclipse中编译 + +2.在build.xml里的javac标签里加上一句 debug="true" + +## eclipse调试时鼠标移动到变量上不显示值的问题 + +今天同事问一问题,就说在eclipse中调试时,鼠标移动到变量上不显示值,这个原来自己也遇到过,没注意,反正就使用ctrl+shift+i嘛,也可以的,刚查了一下,解决方法如下: + +Window->Preferences->Java->Editor->Hovers 将[Variable Values]选择即可,如果第一个[Combined Hover]已经勾选,则将这个勾去掉,勾选[Variable Values]。如果还不行,就只能用ctrl+shift+i快捷键了。 + +## Eclipse中如何快速替换变量 + +之前用别的开发工具开发的时候,要替换一个变量,直接“Ctr+H”就好了,可是用Eclipse开发的时候,使用这个快捷键,难用的要死,下面给大家介绍一种更加简便的方法在Eclipse中替换变量。 + +选中要替换掉的变量,按下组合键“Alt+Shift+R”,直接在键盘上输入要改为的变量,按回车键“Enter”,就可以完成替换了,文件中的所有变量都被替换完毕。 + +## 如何使用eclipse打开已有工程 + +在开始使用Eclipse的时候,会发现一个问题,那就是如何打开一个现有的Eclipse工程,开始在菜单中找了好久也没找到。 + +其实,Eclipse生成的结果不像VC,Jcreator那样可以直接打开,若要打开非workspace文件夹下的其他已有工程,可以打开菜单file->import→general→existing project into space.在select root directory中选中要打开的文件夹即可。此时如果选择copy existing project into workspace就会同时将文件拷贝到workspace下。这里首先要保证要保证Eclipse两个文件.classpath和.project还在,不然无法导入,就是说Eclipse的import只认自己家的东西。 + +## Eclipse乱码问题 + +我的eclipse在执行System.out.println("中文出现乱码!");时,控制台上打印的都是乱码,这个是什么问题啊!我整个eclipse的工作空间都设为UTF-8了啊!!!好晕啊! 对啊,设置为GBK的就没有问题,我用maven跑工程的时候为什么控制台又不是乱码了?maven的那些工程都是设置的UTF-8的。 + +把整个工程的“Text file encoding”属性设为GBK,就不会有乱码了。设置方法:在eclipse中右击工程,点击弹出框最下面的“Properties”,然后在弹出的窗口左侧点击“Resource”,便可以在窗口的右部看到“Text file encoding”属性,点击“Other”前的单选框,在下拉列表中选择“GBK”。最后,点击右下部的“Apply”,“OK”退出。这样设置后,你再执行System.out.println("中文出现乱码!");时控制台上就不会是乱码了。 + + + +Eclipse 的控制台必须用GBK编码。所以条件1和条件4必须同时满足否则运行的还是乱码。才能保证不是乱码。 + +条件1,Window | Preferences | Workspace | Text fileencoding | GBK编码。 + +这样定义的是整个工作区间的编码。 + +这样就把整个工作空间的编码格式定死了,但是如果某一个工程用的是不同的编码格式的话这样单独再解决。如下: + +条件2,工程上右键 | Properties | Resource | Text fileencoding | UTF-8编码。或者适合的编码格式。这样定义的是整个工程的编码。 + +这样就把整个工程的编码格式定死了,但是如果某一个文件用的是不同的编码格式的话这样单独再解决。如下: + +条件3,在某个文件上右键| Properties | Resource | Text fileencoding | UTF-8编码。或者适合的编码格式。这样定义的是单独某个文件的编码。 + +这里要说的是文件的实际编码格式优先用的是:第3个,其次再用2,最后先用1。有时候是123,必须满足条件。无论怎样这几种编码格式试一试就全知道了。 + + + +条件4,还有运行时编码设置如下:菜单:Run Configuration | 右侧的选项卡Common 的 Console Encoding 选择GBK编码。这个是用来控制console控制台显示,必须是GBK,就不会乱码。尽管1,2,3条件都不是GBK,只要4是GBK。控制台就不会乱码。 + +这样保证了工作空间和工程代码编程方式和工程里的单独文件的编码格式的不冲突。 + +## 如何修改eclipse的默认工作空间 + +打开eclipse,选择File菜单,再选择switch workspace,最后选择other,接着你就选择你想要存储的工作区间 + +## Eclipse中Build path specifies execution environment J2SE-1.5.There are no JREs installed.. + +提示警告: + +Description Resource Path Location Type + +Build path specifies execution environment J2SE-1.5. There are no JREs installed in the workspace that are strictly compatible with this environment. platform Build path JRE System Library Problem + +该如何去掉这个警告? + +eclipse 菜单上 window > preference 然后在 Java > Installed JRE 下面的 Execution Environment 中的 J2SE-1.5 中勾中一个 JDK,这表示将这个 JDK 展示成为 J2SE-1.5 的 JDK,以后选择 J2SE-1.5 实际上就选择了这个 JDK,因为 J2SE-1.5 有多种 JDK,我们的eclipse 项目可以仅指定要求 J2SE-1.5 的JDK 而不是 Sun JDK 1.5 或 IBM JDK 1.5 这样的具体类型,这比较方便我们使用不同的厂商的 JDK 而不用复制代码到其它机器时还要安装指定的 JDK 或修改eclipse 设置。它的好处主要体现在项目小组的协作上,很多同事可以使用不同的 JDK,我们的项目设置提交到 CVS/SVN 上之后都不用修改项目设置本身,当大家 JDK 不同时只需要自己修改 eclipse 自己的 JDK 参数,这样你使用 32 位还是 64 位没关系,使用 Sun , IBM 还是 BEA Jrocket 或 Open JDK 都没关系。 + +## Eclipse使用第三方jar包 + +1. 右键项目名称,Build Path > Add External Archives + +2. 右键项目名称,Properties > Java Build Path > Libraries > Add jars + +## Eclipse设置编译文件.class输出路径 + +### 为项目设置.class设置输出路径 + +右键项目 > Properties > Java Build Path > Source > Default Output Folder + +设置完成后,src中的.java文件编译后生成的.class文件与package所对应的目录一起 + +存放在classes目录中。 + +### 设置全局.class文件输出路径 + +Window > Preferences > Java > Build Path > Source and Output Folder + +设置完成后再新建项目的时候会自动的将.class文件放置在你所设置的目录中 + +## Eclipse 中给项目自动创建ant的build.xml文件 + +Eclipse 自动生成 Ant的Build.xml 配置文件,生成的方法很隐蔽 + +选择你要生成Build.xml文件的项目,右键. Export-> General -> Ant Buildfiles . + +点Next,再点Finish.生成完毕.希望使用的可以试试了。总算不用再傻傻的自己编写build.xml了。 + + + + + +## Eclipse中添加Src和JavaDoc + +Eclipse有直接查看java文档和类库源码的功能,不过得手工添加才行,下面对如何在Eclipse中添加java文档和类库源码进行总结。 + + + +1. Window->Pereferences...打开参数选择对话框,展开Java节点,单击“InstalledJREs",此时右边窗口会显示已经加载的jre。 + + + +2. 选中要设置的jre版本,单击"Edit",弹出JRE编辑窗口 + + + +3. 添加javadoc:将JREsystem libraries下的所有包选中,单击右边的“JavadocLocation”按钮,弹出javadoc设置窗口。选择“JavadocURL”单选框,单击“Browse”按钮,选中docs/api目录,然后点击“OK” + + + +4. 添加source:将JREsystem libraries下的所有包选中,单击右边的“SourceAttachment”按钮,弹出sourceattachment configuration窗口。单击“ExternalFile”按钮,选中java安装目录中的src.zip文件,然后点击“OK” + + + +5.后面就一路OK、确定就行了。 + + + +在添加好了javadoc与source后,在eclipse中,使用快捷键"Shift+F2",可快速调出选中类的api文档;使用快捷建F3(或在类上点击右键,现在查看声明),可打开类的源文件。 + +## eclipse中禁用javadoc注释的Format功能 + +在用eclipse进行java开发时,经常需要添加一些必要的javadoc注释。可是每当进行Format操作时(亦即按快捷键:Ctrl+Shift+F时),就会对排版进行自作聪明的调整,但往往这种调整是开发者不愿意看到的。举例如下: + +程序员希望的注释格式: + +```java +/** + +* 根据文件开头的BOM(如果存在的话),判断文件的编码格式。 +* 文本文件有各种不同的编码格式,如果判断有误,则会导致显示或保存错误。 +* 为了标识文件的编码格式,便于编辑和保存,则在文件开头加入了BOM,用以标识编码格式。 +* UTF-8格式:0xef 0xbb 0xbf +* Unicode Little Endian格式:0xff 0xfe +* Unicode Big Endian格式:0xfe 0xff +* 而ANSI格式是没有BOM的。 +* 另有一种不含BOM的UTF-8格式的文件,则不易与ANSI相区分,因此未能识别此类格式。 +* +* @param file 待判断的文件 +*/ +``` + +执行Format操作后,注释格式却变为: + +```java +/** + * 根据文件开头的BOM(如果存在的话),判断文件的编码格式。 文本文件有各种不同的编码格式,如果判断有误,则会导致显示或保存错误。 +* 为了标识文件的编码格式,便于编辑和保存,则在文件开头加入了BOM,用以标识编码格式。 UTF-8格式:0xef 0xbb 0xbf, Unicode + * Little Endian格式:0xff 0xfe, Unicode Big Endian格式:0xfe + * 0xff。而ANSI格式是没有BOM的。另有一种不含BOM的UTF-8格式的文件,则不易与ANSI相区分,因此未能识别此类格式。 +* + * @param file + * 待判断的文件 +*/ +``` + +以上2种排版格式,哪一个更直观清晰,相信不用多说。那么如何禁用eclipse对javadoc注释的Format功能呢?其实很简单,操作如下: + +依次选择菜单:Window->Preferences...->java->Code Style->Formatter。 + +如果"Active profile"为默认的profile,则可以选择:New...打开New Profile对话框,输入Profile name为:My-Profile(自定义的名称) + +如果"Active profile"为自定义的profile可直接选择Edit...->Comments,去掉"Enable Javadoc comment formatting"的选择->OK。 + +注:系统默认的profile是不可以直接编辑的,只能新建一个profile,然后才能Edit...。 + +## eclipse 自动补全的设置,不用按 alt-/ 了 + +偶然间看到了这个,或许有和我一样不喜欢按 alt-/ 兄弟用得上。不用老去按那个 alt-/ 了,还是方便不少。 + +打开 Eclipse -> Window -> Perferences,会打开个Perferences 的设置界面。 + +会看到只有一个"."存在。表示:只有输入"."之后才会有代码提示,我们要修改的地方就是这里,可是Eclipse默认只允许输入4个自定义字符。 + +不过我们可以把当前的设置导出,保存为一个文件,然后在文件中修改,再导入设置,这样就可以突破Eclipse的限制。 先把上图中"."的地方输入几个随便的字符,例如"asdf",点最下面的"OK"来保存设置。 然后打开 Eclipse的 File -> Export,在窗口中展开 General -> Perferences-->Export all然后点击 NEXT。然后点击"Browse"选择任意的一个路径,保存配置文件,然后点击"Finish"。 用记事本打开刚才保存的那个配置文件(扩展文件名:*.epf),按"ctrl + F",输入刚才设置的"asdf",找到刚才字符串。把"asdf"修改为"abcdefghijklmnopqrstuvwxyz.",然后保存,退出记事本。 打 开Eclipse的 File -> Import 然后在打开的窗口里展开 General -> Perferences,点击NEXT,选中刚才修改过的配置文件,Finish。现在,再打开Window -> Perferences,并依次展开 Java -> Editor -> Content Assist,会发现已经超过了4个字符,也就是说我们输入任何字母和"."都会有代码提示了。 + +修改之后,默认是你输入某个字符200毫秒之后出现代码提示,如果出现输入很卡的情况,需要把提示延迟调高一些;如果你嫌它太慢,可以修改成更小的数字,不过数字改的越小,对系统性能的要求就越高,我设置的是50毫秒。现在,Eclipse用起来是不是更加顺手了? + +## Eclipse中的classpath拒绝访问 + +文件是隐藏了,取消隐藏之后就可以了 + +## 通过Eclipse中的Java Build Path 时报错Could not write file: xx:\xx\.classpath + +通过Eclipse的import一个项目到工作台。在通过Java Build Path修改classpath时报错,网上收到解决方法:确保Eclipse说的那个文件不是可读,确保文件不是隐藏的。经过检查我的文件时隐藏,修改属性再试。没问题了。 + +## eclipse中,把java函数代码折叠/展开 + +首先在eclipse 中开启设置代码折叠功能 + +1. windows->perferences->General->Editors->Structured Text Editors + +可以看到Enable folding选项,打上勾就可以使用代码折叠功能,但还要在具体的语言中设置。 + +2、 + +windows->perferences->Java->Editors->Folding + +可以看到Enable folding选项,打上勾就可以使用代码折叠功能。 + +其次 使用快捷键 + +下面你就可以用如下快捷键在你的java class 中 折叠或者展开你的代码了. + +代码折叠的快捷键,默认是: + + Ctrl+Shift+Numpad_Divede(小键盘的/号) + + Ctrl+Shift+Numpad_Multiply(小键盘的*号) + +笔记本没小键盘,于是改成: + + Ctrl+Shift+- + + Ctrl+Shift+= + +## Eclipse空心J 实心J + +Eclipse中Java文件图标由实心J变成空心J的问题。空心J的java文件,不被包含在项目中进行编译,而是当做资源存在项目中。在网上搜到的两种解决办法: + +办法1: + +右击该文件 --> BuildPath --> Include + +正常实心J时,该选项为 Exclude + +方法2: + +BuildPath-->configure buildpath--->source中添加需要被包含的代码 + +没太看懂,最后用类似的方法解决的: + +选中工程--右键Properties--Java Build Path--Source + +找到出现空心J的Java文件所在的包,展开树,正常情况为: + +Included:(All) + +Excluded:(None) + +Native library location:(None) + +我的工程中Exclued项有空心J的Java文件的目录,选中Excluded,点左侧Remove,然后确定. + +## eclipse 保存文件时候自动格式化及import 条目优化 + +在eclipse设置页面,java -> editor-> save actions.进行设置,当你ctrl +s 时候,格式和import 条目优化全搞定 + +## Eclipse一直building workspace问题解决 + +在项目右键点击->Properties->Builder->Maven Project Builder取消勾选就可以了。其他保持不变。 + +## build.properties does not exist + +在导入工程时,老是报:build.properties does not exist错误,不甚其烦,原因是.project文件中设置了: + +org.eclipse.pde.PluginNature + +导致对build.properties的引用,但是build.properties 并不存在。处理办法就是将其注释掉: + + + +## Eclipse插件开发相关问题 + +在Eclipse插件开发过程中,运行或调试时总会在控制台中输出一些对于当前开发无用的日志,比如各种插件的快捷键冲突,某些插件的自身报错,某些插件的license交互等等,这些日志会妨碍我们查看真正想看的日志。解决办法是在run/debug设置中去掉对应的启动插件。 + +![](http://images2015.cnblogs.com/blog/611264/201604/611264-20160424232948226-816722543.jpg) \ No newline at end of file diff --git "a/_drafts/Eclipse\350\277\234\347\250\213\350\260\203\350\257\225\345\207\272\347\216\260\342\200\234JDWP Transport dt_socket failed to initialize\342\200\235\347\232\204\350\247\243\345\206\263\346\226\271\346\241\210.md" "b/_drafts/Eclipse\350\277\234\347\250\213\350\260\203\350\257\225\345\207\272\347\216\260\342\200\234JDWP Transport dt_socket failed to initialize\342\200\235\347\232\204\350\247\243\345\206\263\346\226\271\346\241\210.md" new file mode 100644 index 0000000..c74e66b --- /dev/null +++ "b/_drafts/Eclipse\350\277\234\347\250\213\350\260\203\350\257\225\345\207\272\347\216\260\342\200\234JDWP Transport dt_socket failed to initialize\342\200\235\347\232\204\350\247\243\345\206\263\346\226\271\346\241\210.md" @@ -0,0 +1,38 @@ +欢迎关注我的社交账号: + +博客园地址: http://www.cnblogs.com/jiangxinnju/p/4781259.html +GitHub地址: https://github.com/jiangxincode +知乎地址: https://www.zhihu.com/people/jiangxinnju + +工作中经常需要使用Eclipse远程连接Tomcat,调试Web应用程序,关于如何进行远程调试,本文不再赘述,可以参考下面的文章: + + eclipse远程调试Tomcat方法:http://blog.csdn.net/afgasdg/article/details/9236877 + +但是按照上面的方法进行操作可能会有一些小问题,在远程服务器中更改Tomcat的配置文件catalina.sh之后第一次重启Tomcat时,一般是没有问题的(注意设置的DEBUG端口号不要和其它已有应用端口号冲突),但是在之后的重启过程中可能会出现下面的问题: + + cd tomcat/bin + ./shutdown.sh ; ./startup.sh ; tailf ../logs/catalina.out + + ERROR: transport error 202: bind failed + ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510) + JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:690] + FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197) + +之所以出现这个问题,主要是因为,我们添加的DEBUG端口在关闭Tomcat时不能正常关闭,重启时又会重新开启,所以端口被占用,我们可以在关闭Tomcat之后利用下面的命令进行验证会发现,仍然有进程在占用着DEBUG端口。 + + lsof -i:44121(或者 netstat -na|grep 44121) + +这个其实就是我们自己之前开启的。当然我们可以在每次shutdown之后手动kill掉这个进程,但是终归不是解决之道。我现在想到的比较好的方法是在catalina.sh中配置DEBUG端口时,把需要添加的那一行添加到start条件的开始处: + + ... + elif [ "$1" = "start" ] ; then + CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n" + ... + +并且在stop条件的开始处把DEBUG端口干掉 + + ... + elif [ "$1" = "stop" ] ; then + debug_pid=`lsof -i:44121 | tail -n 1 | awk -F" " '{print $2}'` + kill -9 ${debug_pid}· + ... \ No newline at end of file diff --git "a/_drafts/FindBugs\350\257\246\350\247\243.md" "b/_drafts/FindBugs\350\257\246\350\247\243.md" new file mode 100644 index 0000000..44ea32f --- /dev/null +++ "b/_drafts/FindBugs\350\257\246\350\247\243.md" @@ -0,0 +1,79 @@ +欢迎和大家交流技术相关问题: +邮箱: jiangxinnju@163.com +博客园地址: http://www.cnblogs.com/jiangxinnju +GitHub地址: https://github.com/jiangxincode +知乎地址: https://www.zhihu.com/people/jiangxinnju + + +## Find bugs误报告警的消除方法 + +### 背景介绍 + +在java工程中,Find bugs的静态检查能够帮助我们挖掘出代码可能存在的缺陷。在我实际使用的过程中,也确实发现了两处由于“缺少else分支”导致“引入未初始化对象”的错误。与之相对应的是,通过Find bugs也发现四处对象中使用静态成员导致Find bugs告警的情况。通过仔细阅读和分析代码逻辑,可以确认代码本身没有问题,这个是属于Find bugs误报的情况。既然我们打算使用Find bugs来做代码的静态检查,那么就有必要保持一个干净的代码环境,这里面没有任何的Find bugs告警。如果确定是代码问题,毫无疑问需要马上纠正。如果确认是Find bugs误报,也应该进行消除,以便后续的检查能够基于一个干净的环境,同样的误报不需要反复确认。Find bugs告警误报的消除非常容易,只需要在两个级别(类级别和方法进行)加上Find bugs的注解就可以消除。这里建议误报消除尽量在方法级别上进行,以控制误报消除的范围,最大限度放置将真正的代码问题也作为误报给隐藏掉了。 + +### 方法 + +* 在工程添加注解依赖的jar包:使用Find bugs注解需要用到两个jar包,annotations.jar和jsr305.jar。在eclipse中装完Find bugs插件后,在eclipse目录下可以找到这两个jar包文件。 +* 添加注解:在疑问代码所在的类或者方法前面添加注解。其中,value的值就是前面提到的find bugs告警信息中的模式,因为value是一个数组,所以可以同时添加多个模式。justification的值是一句描述信息,你可以理解为是这条注解的注释,内容可以是任意的。 + +```java + @edu.umd.cs.findbugs.annotations + SuppressWarnings(value={"NM_CONFUSING"}, justification="remove findbugs") +``` + + +* 重新运行Find bugs进行检查:添加完注解后,接下来应该重新运行find bugs工具进行检查,以确定误报已经被消除。 + +## MS: Field should be package protected (MS_PKGPROTECT) + +A mutable static field could be changed by malicious code or by accident. The field could be made package protected to avoid this vulnerability. + +我这样定义了多个数组,均使用了 public final static 修饰符: + +```java + public final static double[][][] Y_MIN_SCOPE= + { + {{-120, -25}}, + {{0, 254}}, + {{0, 254}}, + {{0, 254}} + + }; + public final static double[] GRID_HEIGHT = {1,1,1,1}; + + public final static String[][] TAG_NAMES= + { + {"RSRQ(dB)","RSRP(dBm)"}, + {"TA(16*Ts)","UE TxPower(dBm)"}, + {"TA(16*Ts)","RSRP(dBm)"}, + {"TA(16*Ts)","RSRQ(dB)"} + }; +``` + +findbugs给的修改提示是: + +``` + In LTE3DConstant + Field LTE3DConstant.Y_MIN_SCOPE + At LTE3DConstant.java:[line 53] + Y_MIN_SCOPE should be package protected + Bug Type: MS_PKGPROTECT + Bug Category:MALICIOUS_CODE (Malicious code vulnerability) + Source File: + Line:53 +``` + +修改成这样就不报错了。 + +```java + protected final double[][][] Y_MIN_SCOPE= + { + {{-120, -25}}, + {{0, 254}}, + {{0, 254}}, + {{0, 254}} + + }; +``` + +可能原因是因为其它地方没有使用到这个类的变量,所以最好将public改成protected,但是为什么要去掉static还是不理解。 \ No newline at end of file diff --git "a/_drafts/Groovy\345\256\236\347\216\260\345\216\237\347\220\206\345\210\206\346\236\220\342\200\224\342\200\224\345\207\206\345\244\207\345\267\245\344\275\234.md" "b/_drafts/Groovy\345\256\236\347\216\260\345\216\237\347\220\206\345\210\206\346\236\220\342\200\224\342\200\224\345\207\206\345\244\207\345\267\245\344\275\234.md" new file mode 100644 index 0000000..ac474e4 --- /dev/null +++ "b/_drafts/Groovy\345\256\236\347\216\260\345\216\237\347\220\206\345\210\206\346\236\220\342\200\224\342\200\224\345\207\206\345\244\207\345\267\245\344\275\234.md" @@ -0,0 +1,152 @@ +欢迎和大家交流技术相关问题: +邮箱: jiangxinnju@163.com +博客园地址: +GitHub地址: +知乎地址: + +首先说明一下为什么要写这样一系列分析Groovy实现原理的博文。我之前在华为大数据部门曾维护过一份规则引擎的项目,该项目说白了就是一种DSL(Domain Specified Language),把用户的输入转化为一种可以执行的程序。让不懂编程语言的用户只定义一些规则说明便可以完成流程编写。后来由于部门调动,接触不到原来的规则引擎了,但是无意间发现Groovy这种DSL语言的实现机制和当时的规则引擎原理大体相当,所以便借分析Groovy的实现原理,缅怀当时负责的规则引擎吧。同时也希望给其他对规则引擎开发、DSL开发或者编程语言开发感兴趣的朋友一个参考,权当抛砖引玉了。 + +作为这一系列文章的第一篇,我们先做一些准备工作,为后来的原理分析做下铺垫。 + +## 安装JDK + +要分析Groovy的实现原理,首先需要从源码构建Groovy,这样一边调试,一边看代码效率会高些。源码构建Groovy,需要JDK 9+,下载安装说明参考官网:,我使用的版本是:10.0.2。 + +```powershell +PS C:\Users\jiang> java -version +java 10.0.2 2018-07-17 +Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13) +Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode) +``` + +## 安装Git工具 + +Git是当下最流行的版本管理工具,我们需要利用Git下载Groovy的源代码。Git下载安装请参考官网:,我使用的版本是:2.27.0。 + +```powershell +PS C:\Users\jiang> git --version +git version 2.27.0.windows.1 +``` + +## 下载Groovy源码 + +Groovy的源码托管在Apache的网站上,但是Github上有镜像,我们可以直接在Github镜像下载最新的主干版本,然后切换到最新的稳定版本3.0.5对应的TAG上。 + +```powershell +PS C:\Users\jiang> cd D:\temp\Groovy\ +git clone https://github.com/apache/groovy.git +cd .\groovy\ +PS D:\temp\Groovy\groovy> git fetch origin tag GROOVY_3_0_5 +PS D:\temp\Groovy\groovy> git checkout GROOVY_3_0_5 +``` + +## 准备Gradle工具 + +Groovy的编译需要Gradle工具,但是该工具不需要我们自己下载、配置,我们可以直接执行如下命令: + +```powershell +PS D:\temp\Groovy\groovy> .\gradlew.bat +``` + +由于墙的原因,下载需要使用VPN,搭建VPN的方法这里不再叙述。命令执行完毕会在`%USERPROFILE%\.gradle\wrapper\dists`目录下下载对应版本的gradle,其中Groovy 3.0.5版本对应的Gradle版本是Gradle 6.5.1。 + +## 编译Groovy + +执行下面命令,由源码编译Groovy(如果失败可能仍然是墙的原因,使用VPN后重试): + +```powershell +.\gradlew.bat clean dist +``` + +编译完成后会在`target\distributions`目录下生成目标文件。 + +## 安装编译后的Groovy + +我们将`target\distributions\apache-groovy-binary-3.0.5.zip`文件中的内容解压到某个目录,比如说`C:\`,然后在%PATH%环境变量中添加`C:\groovy-3.0.5\bin`,并设置%GROOVY_HOME%环境变量为`C:\groovy-3.0.5`。然后我们新打开一个powershell验证Groovy是否安装成功: + +```powershell +PS C:\Users\jiang> cd D:\temp\Groovy\ +PS D:\temp\Groovy> groovy.bat -v +Groovy Version: 3.0.5 JVM: 10.0.2 Vendor: "Oracle Corporation" OS: Windows 10 +``` + +## 将Groovy源码导入IDEA + +为了更好的分析Groovy源码,我们需要一个IDE工具,具体是IDEA还是Eclipse或者其它都无所谓,看个人习惯,这里以IDEA为例。首先利用gradle生成IDEA项目: + +```powershell +PS D:\temp\Groovy> cd .\groovy\ +PS D:\temp\Groovy\groovy> .\gradlew jar idea +``` + +这时候就可以使用IDEA导入groovy源码项目,进行分析研究了。 + +## 执行Groovy程序 + +我们首先利用IDEA新建一个Groovy项目,写一个简单的Groovy程序,该程序会打印"Hello World": + +```groovy +package edu.jiangxin.test + +class Test { + static void main(def args) { + def mygreeting = "Hello World" + println mygreeting + } +} +``` + +我们知道Groovy是一种依赖于JVM的DSL,其先将*.groovy文件编译成*.class文件,然后调用JVM执行*.class文件,我们可以直接在IDEA中反编译该class文件,得到如下Java代码: + +```java +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package edu.jiangxin.test; + +import groovy.lang.GroovyObject; +import groovy.lang.MetaClass; +import groovy.transform.Generated; +import groovy.transform.Internal; +import org.codehaus.groovy.runtime.callsite.CallSite; + +public class Test implements GroovyObject { + @Generated + public Test() { + CallSite[] var1 = $getCallSiteArray(); + super(); + MetaClass var2 = this.$getStaticMetaClass(); + this.metaClass = var2; + } + + public static void main(String... args) { + CallSite[] var1 = $getCallSiteArray(); + Object mygreeting = "Hello World"; + var1[0].callStatic(Test.class, mygreeting); + } + + @Generated + @Internal + public MetaClass getMetaClass() { + MetaClass var10000 = this.metaClass; + if (var10000 != null) { + return var10000; + } else { + this.metaClass = this.$getStaticMetaClass(); + return this.metaClass; + } + } + + @Generated + @Internal + public void setMetaClass(MetaClass var1) { + this.metaClass = var1; + } +} +``` + +是不是看起来有些复杂?没关系我们会一点点搞懂它的。其实这里最关键的是三个函数`$getCallSiteArray()`,`$getStaticMetaClass()`以及`callStatic(Object, Object)`,我们会在之后的文章中逐步揭开他们的面纱。但是在这之前,我们先看下Groovy是如何将之前的*.groovy文件编译成对应的*.class文件的。 + +(未完待续) \ No newline at end of file diff --git "a/_drafts/HBase\344\273\213\347\273\215.md" "b/_drafts/HBase\344\273\213\347\273\215.md" new file mode 100644 index 0000000..fb16916 --- /dev/null +++ "b/_drafts/HBase\344\273\213\347\273\215.md" @@ -0,0 +1,283 @@ +欢迎和大家交流技术相关问题: +邮箱: jiangxinnju@163.com +博客园地址: http://www.cnblogs.com/jiangxinnju +GitHub地址: https://github.com/jiangxincode +知乎地址: https://www.zhihu.com/people/jiangxinnju + + + +转自:http://jiajun.iteye.com/blog/899632 + +原文图片丢失,本文补充图片,优化排版,修正部分错误。 + +## 一、简介 + +### History + +* started by chad walters and jim +* 2006.11 G release paper on BigTable +* 2007.2 inital HBase prototype created as Hadoop contrib +* 2007.10 First useable Hbase +* 2008.1 Hadoop become Apache top-level project and Hbase becomes subproject +* 2008.10 Hbase 0.18,0.19 released + +Hbase是bigtable的开源山寨版本。是建立的HDFS之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。 + +它介于NoSQL和RDBMS之间,仅能通过主键(row key)和主键的range来检索数据,仅支持单行事务(可通过hive支持来实现多表join等复杂操作)。主要用来存储非结构化和半结构化的松散数据。 + +与hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。 + +HBase中的表一般有这样的特点: + +* 大:一个表可以有上亿行,上百万列 +* 面向列:面向列(族)的存储和权限控制,列(族)独立检索。 +* 稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。 + +下面一幅图是Hbase在Hadoop Ecosystem中的位置。 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/611264-20170222003636960-1143541416.png) + +## 二、逻辑视图 +HBase以表的形式存储数据。表有行和列组成。列划分为若干个列族(row family) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/611264-20170222003637820-2049220902.png) + +### Row Key + +与nosql数据库们一样,row key是用来检索记录的主键。访问hbase table中的行,只有三种方式: + +l 通过单个row key访问 + +l 通过row key的range + +l 全表扫描 + +Row key行键 (Row key)可以是任意字符串(最大长度是 64KB,实际应用中长度一般为 10-100bytes),在hbase内部,row key保存为字节数组。 + +存储时,数据按照Row key的字典序(byte order)排序存储。设计key时,要充分利用排序存储这个特性,将经常一起读取的行存储放到一起。(位置相关性) + +注意: + +字典序对int排序的结果是1,10,100,11,12,13,14,15,16,17,18,19,2,20,21,…,9,91,92,93,94,95,96,97,98,99。要保持整形的自然序,行键必须用0作左填充。 + +行的一次读写是原子操作 (不论一次读写多少列)。这个设计决策能够使用户很容易的理解程序在对同一个行进行并发更新操作时的行为。 + +### 列族 + +hbase表中的每个列,都归属与某个列族。列族是表的chema的一部分(而列不是),必须在使用表之前定义。列名都以列族作为前缀。例如courses:history,courses:math + +都属于courses 这个列族。 + +访问控制、磁盘和内存的使用统计都是在列族层面进行的。实际应用中,列族上的控制权限能帮助我们管理不同类型的应用:我们允许一些应用可以添加新的基本数据、一些应用可以读取基本数据并创建继承的列族、一些应用则只允许浏览数据(甚至可能因为隐私的原因不能浏览所有数据)。 + +### 时间戳 + +HBase中通过row和columns确定的为一个存贮单元称为cell。每个 cell都保存着同一份数据的多个版本。版本通过时间戳来索引。时间戳的类型是 64位整型。时间戳可以由hbase(在数据写入时自动 )赋值,此时时间戳是精确到毫秒的当前系统时间。时间戳也可以由客户显式赋值。如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳。每个 cell中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。 + +为了避免数据存在过多版本造成的的管理 (包括存贮和索引)负担,hbase提供了两种数据版本回收方式。一是保存数据的最后n个版本,二是保存最近一段时间内的版本(比如最近七天)。用户可以针对每个列族进行设置。 + +### Cell + +由{row key, column(= + +``` + +#### 将配置好的hadoop文件copy到另一台slave机器上 + +```shell +hadoop@Ubuntu-01:/usr/local/hadoop$ scp -r hadoop-2.7.3/ hadoop@Ubuntu-02:/usr/local/hadoop/ +hadoop@Ubuntu-01:/usr/local/hadoop$ scp -r hadoop-2.7.3/ hadoop@Ubuntu-03:/usr/local/hadoop/ +``` + + +### 验证 + +#### 格式化namenode + +```shell +hadoop@Ubuntu-01:/usr/local/hadoop/hadoop-2.7.3/etc/hadoop$ hdfs namenode -format +17/02/12 14:00:27 INFO namenode.NameNode: STARTUP_MSG: +/************************************************************ +STARTUP_MSG: Starting NameNode +STARTUP_MSG: host = Ubuntu-01/127.0.1.1 +STARTUP_MSG: args = [-format] +STARTUP_MSG: version = 2.7.3 +STARTUP_MSG: classpath = /usr/local/hadoop/hadoop-2.7.3/etc/hadoop:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/jettison-1.1.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/gson-2.2.4.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/commons-digester-1.8.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/commons-configuration-1.6.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/jets3t-0.9.0.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/servlet-api-2.5.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/httpclient-4.2.5.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/hamcrest-core-1.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/jaxb-api-2.2.2.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/jersey-core-1.9.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/activation-1.1.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/apacheds-kerberos-codec-2.0.0-M15.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/commons-httpclient-3.1.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/jetty-6.1.26.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/java-xmlbuilder-0.4.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/hadoop-auth-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/commons-logging-1.1.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/commons-codec-1.4.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/jersey-server-1.9.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/jackson-core-asl-1.9.13.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/api-asn1-api-1.0.0-M20.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/curator-recipes-2.7.1.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/jsch-0.1.42.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/jackson-mapper-asl-1.9.13.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/api-util-1.0.0-M20.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/apacheds-i18n-2.0.0-M15.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/mockito-all-1.8.5.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/log4j-1.2.17.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/slf4j-api-1.7.10.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/jaxb-impl-2.2.3-1.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/netty-3.6.2.Final.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/commons-collections-3.2.2.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/stax-api-1.0-2.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/jsr305-3.0.0.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/httpcore-4.2.5.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/commons-math3-3.1.1.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/jackson-xc-1.9.13.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/htrace-core-3.1.0-incubating.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/commons-io-2.4.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/commons-net-3.1.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/snappy-java-1.0.4.1.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/curator-framework-2.7.1.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/commons-lang-2.6.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/junit-4.11.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/xz-1.0.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/guava-11.0.2.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/commons-beanutils-1.7.0.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/asm-3.2.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/avro-1.7.4.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/jersey-json-1.9.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/jetty-util-6.1.26.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/zookeeper-3.4.6.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/xmlenc-0.52.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/commons-beanutils-core-1.8.0.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/commons-compress-1.4.1.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/jackson-jaxrs-1.9.13.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/paranamer-2.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/commons-cli-1.2.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/protobuf-java-2.5.0.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/jsp-api-2.1.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/curator-client-2.7.1.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/hadoop-annotations-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/hadoop-common-2.7.3-tests.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/hadoop-nfs-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/hadoop-common-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/lib/xml-apis-1.3.04.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/lib/servlet-api-2.5.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/lib/jersey-core-1.9.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/lib/jetty-6.1.26.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/lib/commons-logging-1.1.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/lib/commons-codec-1.4.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/lib/jersey-server-1.9.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/lib/jackson-core-asl-1.9.13.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/lib/netty-all-4.0.23.Final.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/lib/jackson-mapper-asl-1.9.13.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/lib/log4j-1.2.17.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/lib/netty-3.6.2.Final.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/lib/jsr305-3.0.0.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/lib/htrace-core-3.1.0-incubating.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/lib/commons-io-2.4.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/lib/commons-lang-2.6.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/lib/xercesImpl-2.9.1.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/lib/guava-11.0.2.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/lib/asm-3.2.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/lib/commons-daemon-1.0.13.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/lib/jetty-util-6.1.26.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/lib/xmlenc-0.52.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/lib/leveldbjni-all-1.8.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/lib/commons-cli-1.2.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/lib/protobuf-java-2.5.0.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/hadoop-hdfs-nfs-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/hadoop-hdfs-2.7.3-tests.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/hdfs/hadoop-hdfs-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/jettison-1.1.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/servlet-api-2.5.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/guice-3.0.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/aopalliance-1.0.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/jaxb-api-2.2.2.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/guice-servlet-3.0.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/jersey-core-1.9.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/activation-1.1.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/jetty-6.1.26.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/commons-logging-1.1.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/commons-codec-1.4.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/jersey-server-1.9.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/jackson-core-asl-1.9.13.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/jackson-mapper-asl-1.9.13.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/log4j-1.2.17.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/jaxb-impl-2.2.3-1.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/netty-3.6.2.Final.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/commons-collections-3.2.2.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/stax-api-1.0-2.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/jsr305-3.0.0.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/jackson-xc-1.9.13.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/commons-io-2.4.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/commons-lang-2.6.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/jersey-guice-1.9.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/xz-1.0.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/guava-11.0.2.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/asm-3.2.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/jersey-json-1.9.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/jetty-util-6.1.26.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/zookeeper-3.4.6.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/jersey-client-1.9.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/commons-compress-1.4.1.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/jackson-jaxrs-1.9.13.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/leveldbjni-all-1.8.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/zookeeper-3.4.6-tests.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/commons-cli-1.2.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/protobuf-java-2.5.0.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/javax.inject-1.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/hadoop-yarn-registry-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/hadoop-yarn-server-sharedcachemanager-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/hadoop-yarn-server-resourcemanager-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/hadoop-yarn-server-web-proxy-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/hadoop-yarn-client-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/hadoop-yarn-server-nodemanager-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/hadoop-yarn-api-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/hadoop-yarn-server-tests-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/hadoop-yarn-common-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/hadoop-yarn-applications-distributedshell-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/hadoop-yarn-server-common-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/hadoop-yarn-server-applicationhistoryservice-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/hadoop-yarn-applications-unmanaged-am-launcher-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/lib/hamcrest-core-1.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/lib/guice-3.0.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/lib/aopalliance-1.0.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/lib/guice-servlet-3.0.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/lib/jersey-core-1.9.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/lib/jersey-server-1.9.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/lib/jackson-core-asl-1.9.13.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/lib/jackson-mapper-asl-1.9.13.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/lib/log4j-1.2.17.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/lib/netty-3.6.2.Final.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/lib/commons-io-2.4.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/lib/snappy-java-1.0.4.1.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/lib/junit-4.11.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/lib/jersey-guice-1.9.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/lib/xz-1.0.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/lib/asm-3.2.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/lib/avro-1.7.4.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/lib/commons-compress-1.4.1.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/lib/paranamer-2.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/lib/leveldbjni-all-1.8.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/lib/protobuf-java-2.5.0.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/lib/javax.inject-1.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/lib/hadoop-annotations-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-client-app-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-client-hs-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-client-hs-plugins-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-client-common-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-client-shuffle-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.3-tests.jar:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar:/usr/local/hadoop/hadoop-2.7.3/contrib/capacity-scheduler/*.jar +STARTUP_MSG: build = https://git-wip-us.apache.org/repos/asf/hadoop.git -r baa91f7c6bc9cb92be5982de4719c1c8af91ccff; compiled by 'root' on 2016-08-18T01:41Z +STARTUP_MSG: java = 1.8.0_121 +************************************************************/ +17/02/12 14:00:27 INFO namenode.NameNode: registered UNIX signal handlers for [TERM, HUP, INT] +17/02/12 14:00:27 INFO namenode.NameNode: createNameNode [-format] +Formatting using clusterid: CID-7e34c743-19b0-4ebb-b922-37e8657a8090 +17/02/12 14:00:27 INFO namenode.FSNamesystem: No KeyProvider found. +17/02/12 14:00:27 INFO namenode.FSNamesystem: fsLock is fair:true +17/02/12 14:00:27 INFO blockmanagement.DatanodeManager: dfs.block.invalidate.limit=1000 +17/02/12 14:00:27 INFO blockmanagement.DatanodeManager: dfs.namenode.datanode.registration.ip-hostname-check=true +17/02/12 14:00:27 INFO blockmanagement.BlockManager: dfs.namenode.startup.delay.block.deletion.sec is set to 000:00:00:00.000 +17/02/12 14:00:27 INFO blockmanagement.BlockManager: The block deletion will start around 2017 二月 12 14:00:27 +17/02/12 14:00:27 INFO util.GSet: Computing capacity for map BlocksMap +17/02/12 14:00:27 INFO util.GSet: VM type = 64-bit +17/02/12 14:00:28 INFO util.GSet: 2.0% max memory 966.7 MB = 19.3 MB +17/02/12 14:00:28 INFO util.GSet: capacity = 2^21 = 2097152 entries +17/02/12 14:00:28 INFO blockmanagement.BlockManager: dfs.block.access.token.enable=false +17/02/12 14:00:28 INFO blockmanagement.BlockManager: defaultReplication = 3 +17/02/12 14:00:28 INFO blockmanagement.BlockManager: maxReplication = 512 +17/02/12 14:00:28 INFO blockmanagement.BlockManager: minReplication = 1 +17/02/12 14:00:28 INFO blockmanagement.BlockManager: maxReplicationStreams = 2 +17/02/12 14:00:28 INFO blockmanagement.BlockManager: replicationRecheckInterval = 3000 +17/02/12 14:00:28 INFO blockmanagement.BlockManager: encryptDataTransfer = false +17/02/12 14:00:28 INFO blockmanagement.BlockManager: maxNumBlocksToLog = 1000 +17/02/12 14:00:28 INFO namenode.FSNamesystem: fsOwner = hadoop (auth:SIMPLE) +17/02/12 14:00:28 INFO namenode.FSNamesystem: supergroup = supergroup +17/02/12 14:00:28 INFO namenode.FSNamesystem: isPermissionEnabled = true +17/02/12 14:00:28 INFO namenode.FSNamesystem: HA Enabled: false +17/02/12 14:00:28 INFO namenode.FSNamesystem: Append Enabled: true +17/02/12 14:00:28 INFO util.GSet: Computing capacity for map INodeMap +17/02/12 14:00:28 INFO util.GSet: VM type = 64-bit +17/02/12 14:00:28 INFO util.GSet: 1.0% max memory 966.7 MB = 9.7 MB +17/02/12 14:00:28 INFO util.GSet: capacity = 2^20 = 1048576 entries +17/02/12 14:00:28 INFO namenode.FSDirectory: ACLs enabled? false +17/02/12 14:00:28 INFO namenode.FSDirectory: XAttrs enabled? true +17/02/12 14:00:28 INFO namenode.FSDirectory: Maximum size of an xattr: 16384 +17/02/12 14:00:28 INFO namenode.NameNode: Caching file names occuring more than 10 times +17/02/12 14:00:28 INFO util.GSet: Computing capacity for map cachedBlocks +17/02/12 14:00:28 INFO util.GSet: VM type = 64-bit +17/02/12 14:00:28 INFO util.GSet: 0.25% max memory 966.7 MB = 2.4 MB +17/02/12 14:00:28 INFO util.GSet: capacity = 2^18 = 262144 entries +17/02/12 14:00:28 INFO namenode.FSNamesystem: dfs.namenode.safemode.threshold-pct = 0.9990000128746033 +17/02/12 14:00:28 INFO namenode.FSNamesystem: dfs.namenode.safemode.min.datanodes = 0 +17/02/12 14:00:28 INFO namenode.FSNamesystem: dfs.namenode.safemode.extension = 30000 +17/02/12 14:00:28 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.window.num.buckets = 10 +17/02/12 14:00:28 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.num.users = 10 +17/02/12 14:00:28 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.windows.minutes = 1,5,25 +17/02/12 14:00:28 INFO namenode.FSNamesystem: Retry cache on namenode is enabled +17/02/12 14:00:28 INFO namenode.FSNamesystem: Retry cache will use 0.03 of total heap and retry cache entry expiry time is 600000 millis +17/02/12 14:00:28 INFO util.GSet: Computing capacity for map NameNodeRetryCache +17/02/12 14:00:28 INFO util.GSet: VM type = 64-bit +17/02/12 14:00:28 INFO util.GSet: 0.029999999329447746% max memory 966.7 MB = 297.0 KB +17/02/12 14:00:28 INFO util.GSet: capacity = 2^15 = 32768 entries +Re-format filesystem in Storage Directory /usr/local/hadoop/hadoop-2.7.3/name ? (Y or N) Y +17/02/12 14:00:33 INFO namenode.FSImage: Allocated new BlockPoolId: BP-1871053033-127.0.1.1-1486879233735 +17/02/12 14:00:33 INFO common.Storage: Storage directory /usr/local/hadoop/hadoop-2.7.3/name has been successfully formatted. +17/02/12 14:00:33 INFO namenode.FSImageFormatProtobuf: Saving image file /usr/local/hadoop/hadoop-2.7.3/name/current/fsimage.ckpt_0000000000000000000 using no compression +17/02/12 14:00:33 INFO namenode.FSImageFormatProtobuf: Image file /usr/local/hadoop/hadoop-2.7.3/name/current/fsimage.ckpt_0000000000000000000 of size 353 bytes saved in 0 seconds. +17/02/12 14:00:33 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0 +17/02/12 14:00:33 INFO util.ExitUtil: Exiting with status 0 +17/02/12 14:00:33 INFO namenode.NameNode: SHUTDOWN_MSG: +/************************************************************ +SHUTDOWN_MSG: Shutting down NameNode at Ubuntu-01/127.0.1.1 +************************************************************/ +``` + + +#### 启动hdfs + +```shell +hadoop@Ubuntu-01:/usr/local/hadoop/hadoop-2.7.3/etc/hadoop$ start-dfs.sh +Starting namenodes on [Ubuntu-01] +Ubuntu-01: starting namenode, logging to /usr/local/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-namenode-Ubuntu-01.out +Ubuntu-03: starting datanode, logging to /usr/local/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-datanode-Ubuntu-03.out +Ubuntu-02: starting datanode, logging to /usr/local/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-datanode-Ubuntu-02.out +Starting secondary namenodes [Ubuntu-01] +Ubuntu-01: starting secondarynamenode, logging to /usr/local/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-secondarynamenode-Ubuntu-01.out +hadoop@Ubuntu-01:/usr/local/hadoop/hadoop-2.7.3/etc/hadoop$ jps +9466 Jps +9147 NameNode +9357 SecondaryNameNode +``` + +#### 停止hdfs + +```shell +hadoop@Ubuntu-01:/usr/local/hadoop/hadoop-2.7.3/etc/hadoop$ stop-dfs.sh +Stopping namenodes on [Ubuntu-01] +Ubuntu-01: stopping namenode +Ubuntu-02: stopping datanode +Ubuntu-03: stopping datanode +Stopping secondary namenodes [Ubuntu-01] +Ubuntu-01: stopping secondarynamenode +hadoop@Ubuntu-01:/usr/local/hadoop/hadoop-2.7.3/etc/hadoop$ jps +9814 Jps +``` + +#### 启动yarn + +```shell +hadoop@Ubuntu-01:~$ start-yarn.sh +starting yarn daemons +starting resourcemanager, logging to /usr/local/hadoop/hadoop-2.7.3/logs/yarn-hadoop-resourcemanager-Ubuntu-01.out +Ubuntu-02: starting nodemanager, logging to /usr/local/hadoop/hadoop-2.7.3/logs/yarn-hadoop-nodemanager-Ubuntu-02.out +Ubuntu-03: starting nodemanager, logging to /usr/local/hadoop/hadoop-2.7.3/logs/yarn-hadoop-nodemanager-Ubuntu-03.out +hadoop@Ubuntu-01:~$ jps +6252 ResourceManager +6509 Jps +``` + +#### 停止yarn + +```shell +hadoop@Ubuntu-01:~$ stop-yarn.sh +stopping yarn daemons +stopping resourcemanager +Ubuntu-03: stopping nodemanager +Ubuntu-02: stopping nodemanager +Ubuntu-03: nodemanager did not stop gracefully after 5 seconds: killing with kill -9 +Ubuntu-02: nodemanager did not stop gracefully after 5 seconds: killing with kill -9 +no proxyserver to stop +``` + +#### 查看集群状态 + +```shell +hadoop@Ubuntu-01:/usr/local/hadoop/hadoop-2.7.3/etc/hadoop$ hdfs dfsadmin -report +report: Call From Ubuntu-01/127.0.1.1 to Ubuntu-01:9000 failed on connection exception: java.net.ConnectException: 拒绝连接; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused +hadoop@Ubuntu-01:/usr/local/hadoop/hadoop-2.7.3/etc/hadoop$ start-dfs.sh +Starting namenodes on [Ubuntu-01] +Ubuntu-01: starting namenode, logging to /usr/local/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-namenode-Ubuntu-01.out +Ubuntu-03: starting datanode, logging to /usr/local/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-datanode-Ubuntu-03.out +Ubuntu-02: starting datanode, logging to /usr/local/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-datanode-Ubuntu-02.out +Starting secondary namenodes [Ubuntu-01] +Ubuntu-01: starting secondarynamenode, logging to /usr/local/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-secondarynamenode-Ubuntu-01.out +hadoop@Ubuntu-01:~$ hdfs dfsadmin -report +Configured Capacity: 82167201792 (76.52 GB) +Present Capacity: 67444781056 (62.81 GB) +DFS Remaining: 67444297728 (62.81 GB) +DFS Used: 483328 (472 KB) +DFS Used%: 0.00% +Under replicated blocks: 0 +Blocks with corrupt replicas: 0 +Missing blocks: 0 +Missing blocks (with replication factor 1): 0 + +------------------------------------------------- +Live datanodes (2): + +Name: 192.168.1.180:50010 (Ubuntu-03) +Hostname: Ubuntu-03 +Decommission Status : Normal +Configured Capacity: 41083600896 (38.26 GB) +DFS Used: 241664 (236 KB) +Non DFS Used: 7351656448 (6.85 GB) +DFS Remaining: 33731702784 (31.42 GB) +DFS Used%: 0.00% +DFS Remaining%: 82.11% +Configured Cache Capacity: 0 (0 B) +Cache Used: 0 (0 B) +Cache Remaining: 0 (0 B) +Cache Used%: 100.00% +Cache Remaining%: 0.00% +Xceivers: 1 +Last contact: Sun Feb 12 23:18:24 CST 2017 + + +Name: 192.168.1.170:50010 (Ubuntu-02) +Hostname: Ubuntu-02 +Decommission Status : Normal +Configured Capacity: 41083600896 (38.26 GB) +DFS Used: 241664 (236 KB) +Non DFS Used: 7370764288 (6.86 GB) +DFS Remaining: 33712594944 (31.40 GB) +DFS Used%: 0.00% +DFS Remaining%: 82.06% +Configured Cache Capacity: 0 (0 B) +Cache Used: 0 (0 B) +Cache Remaining: 0 (0 B) +Cache Used%: 100.00% +Cache Remaining%: 0.00% +Xceivers: 1 +Last contact: Sun Feb 12 23:18:24 CST 2017 +``` + +#### 查看HDFS前台 + +http://192.168.1.160:50070/ +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image062.png) + +#### 查看RM + +http://192.168.1.160:8088/ + + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image063.png) + +#### 查看Jobhistory + +```shell +hadoop@Ubuntu-01:~$ mr-jobhistory-daemon.sh start historyserver +starting historyserver, logging to /usr/local/hadoop/hadoop-2.7.3/logs/mapred-hadoop-historyserver-Ubuntu-01.out +hadoop@Ubuntu-01:~$ mr-jobhistory-daemon.sh stop historyserver +stopping historyserver +``` + +http://192.168.1.160:19888/jobhistory + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image064.png) + +#### 运行wordcount程序 + +创建 input目录 + +```shell +hadoop@Ubuntu-01:~$ mkdir input +``` + +在input创建f1、f2并写内容 + +```shell +hadoop@Ubuntu-01:~$ cat input/f1 +Hello world bye jj +hadoop@Ubuntu-01:~$ cat input/f2 +Hello Hadoop bye Hadoop +``` + +在hdfs创建/tmp/input目录 + +```shell +hadoop@Ubuntu-01:~$ hadoop fs -mkdir /tmp +hadoop@Ubuntu-01:~$ hadoop fs -mkdir /tmp/input +``` + +将f1、f2文件copy到hdfs /tmp/input目录 + +```shell +hadoop@Ubuntu-01:~$ hadoop fs -put input/ /tmp +``` + +执行wordcount程序 + +```shell +hadoop@Ubuntu-01:~$ hadoop jar /usr/local/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /tmp/input /output +17/02/12 21:47:48 INFO client.RMProxy: Connecting to ResourceManager at Ubuntu-01/192.168.1.160:8032 +17/02/12 21:47:49 INFO input.FileInputFormat: Total input paths to process : 2 +17/02/12 21:47:49 INFO mapreduce.JobSubmitter: number of splits:2 +17/02/12 21:47:50 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1486907123913_0001 +17/02/12 21:47:50 INFO impl.YarnClientImpl: Submitted application application_1486907123913_0001 +17/02/12 21:47:50 INFO mapreduce.Job: The url to track the job: http://Ubuntu-01:8088/proxy/application_1486907123913_0001/ +17/02/12 21:47:50 INFO mapreduce.Job: Running job: job_1486907123913_0001 +17/02/12 21:48:02 INFO mapreduce.Job: Job job_1486907123913_0001 running in uber mode : false +17/02/12 21:48:02 INFO mapreduce.Job: map 0% reduce 0% +17/02/12 21:48:12 INFO mapreduce.Job: map 100% reduce 0% +17/02/12 21:48:20 INFO mapreduce.Job: map 100% reduce 100% +17/02/12 21:48:21 INFO mapreduce.Job: Job job_1486907123913_0001 completed successfully +17/02/12 21:48:21 INFO mapreduce.Job: Counters: 49 + File System Counters + FILE: Number of bytes read=84 + FILE: Number of bytes written=357236 + FILE: Number of read operations=0 + FILE: Number of large read operations=0 + FILE: Number of write operations=0 + HDFS: Number of bytes read=243 + HDFS: Number of bytes written=36 + HDFS: Number of read operations=9 + HDFS: Number of large read operations=0 + HDFS: Number of write operations=2 + Job Counters + Launched map tasks=2 + Launched reduce tasks=1 + Data-local map tasks=2 + Total time spent by all maps in occupied slots (ms)=16865 + Total time spent by all reduces in occupied slots (ms)=4585 + Total time spent by all map tasks (ms)=16865 + Total time spent by all reduce tasks (ms)=4585 + Total vcore-milliseconds taken by all map tasks=16865 + Total vcore-milliseconds taken by all reduce tasks=4585 + Total megabyte-milliseconds taken by all map tasks=17269760 + Total megabyte-milliseconds taken by all reduce tasks=4695040 + Map-Reduce Framework + Map input records=2 + Map output records=8 + Map output bytes=75 + Map output materialized bytes=90 + Input split bytes=198 + Combine input records=8 + Combine output records=7 + Reduce input groups=5 + Reduce shuffle bytes=90 + Reduce input records=7 + Reduce output records=5 + Spilled Records=14 + Shuffled Maps =2 + Failed Shuffles=0 + Merged Map outputs=2 + GC time elapsed (ms)=426 + CPU time spent (ms)=1580 + Physical memory (bytes) snapshot=508022784 + Virtual memory (bytes) snapshot=5689307136 + Total committed heap usage (bytes)=263376896 + Shuffle Errors + BAD_ID=0 + CONNECTION=0 + IO_ERROR=0 + WRONG_LENGTH=0 + WRONG_MAP=0 + WRONG_REDUCE=0 + File Input Format Counters + Bytes Read=45 + File Output Format Counters + Bytes Written=36 +``` + +查看执行结果 + +```shell +hadoop@Ubuntu-01:~$ hadoop fs -cat /output/part-r-00000 +Hadoop 2 +Hello 2 +bye 2 +jj 1 +world 1 +``` + +## 安装Scala + +scala-2.11.8.tgz +http://www.scala-lang.org/download/ + +```shell +hadoop@Ubuntu-01:~$ cd /usr/local +hadoop@Ubuntu-01:/usr/local$ sudo mkdir scala +hadoop@Ubuntu-01:/usr/local$ sudo chown hadoop:hadoop scala +hadoop@Ubuntu-01:/usr/local$ cd scala/ +hadoop@Ubuntu-01:/usr/local/scala$ tar -zxvf scala-2.11.8.tgz + + +hadoop@Ubuntu-01:/usr/local/scala$ sudo vim /etc/profile +``` + +末尾加入: + +```shell +export SCALA_HOME=/usr/local/scala/scala-2.11.8 +export PATH=$PATH:$SCALA_HOME/bin +``` + +```shell +hadoop@Ubuntu-01:/usr/local/scala$ source /etc/profile +``` +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image065.png) + +另外两台机器进行类似操作安装scala + +## 安装Spark + +http://spark.apache.org/ + +spark-2.1.0-bin-hadoop2.7.tgz + +```shell +hadoop@Ubuntu-01:~$ cd /usr/local +hadoop@Ubuntu-01:/usr/local$ sudo mkdir spark +hadoop@Ubuntu-01:/usr/local$ sudo chown hadoop:hadoop spark +hadoop@Ubuntu-01:/usr/local$ cd spark/ +hadoop@Ubuntu-01:/usr/local/spark$ tar -zxvf spark-2.1.0-bin-hadoop2.7.tgz + +hadoop@Ubuntu-01:/usr/local/spark$ sudo vim /etc/profile +``` + +```shell +export SPARK_HOME=/usr/local/spark/spark-2.1.0-bin-hadoop2.7 +export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin +``` + +```shell +hadoop@Ubuntu-01:/usr/local/spark$ source /etc/profile +``` + +另外两台进行类似操作 + +### 配置 + +```shell +cd /usr/local/spark/conf +mv spark-env.sh.template spark-env.sh +vim spark-env.sh +``` + +```shell +HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop +SPARK_MASTER_HOST=192.168.1.160 +SPARK_MASTER_WEBUI_PORT=28686 +SPARK_LOCAL_DIRS=/usr/local/spark/spark-2.1.0-bin-hadoop2.7/tmp/local +SPARK_WORKER_DIR=/usr/local/spark/spark-2.1.0-bin-hadoop2.7/tmp/worker +SPARK_DRIVER_MEMORY=4G +SPARK_WORKER_CORES=16 +SPARK_WORKER_MEMORY=64g +SPARK_LOG_DIR=/usr/local/spark/spark-2.1.0-bin-hadoop2.7/tmp/logs +# 下面的配置主要用于jobhistory,非必须 +SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://Ubuntu-01:9000/spark/log" +``` + +```shell +mv spark-defaults.conf.template spark-defaults.conf +vim spark-defaults.conf +``` + +```shell +#下面的配置主要用于jobhistory,非必须 + +spark.eventLog.enabled true +spark.eventLog.dir hdfs://Ubuntu-01:9000/spark/log +spark.eventLog.compress true +``` + + +复制spark目录 + +```shell +hadoop@Ubuntu-01:/usr/local/spark$ scp -r spark-2.1.0-bin-hadoop2.7/ hadoop@Ubuntu-02:/usr/local/spark +hadoop@Ubuntu-01:/usr/local/spark$ scp -r spark-2.1.0-bin-hadoop2.7/ hadoop@Ubuntu-03:/usr/local/spark +``` + + +### 验证 + +```shell +hadoop@Ubuntu-01:~$ start-dfs.sh +Starting namenodes on [Ubuntu-01] +Ubuntu-01: starting namenode, logging to /usr/local/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-namenode-Ubuntu-01.out +Ubuntu-02: starting datanode, logging to /usr/local/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-datanode-Ubuntu-02.out +Ubuntu-03: starting datanode, logging to /usr/local/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-datanode-Ubuntu-03.out +Starting secondary namenodes [Ubuntu-01] +Ubuntu-01: starting secondarynamenode, logging to /usr/local/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-secondarynamenode-Ubuntu-01.out +hadoop@Ubuntu-01:~$ jps +5057 SecondaryNameNode +4846 NameNode +5166 Jps +hadoop@Ubuntu-01:~$ start-yarn.sh +starting yarn daemons +starting resourcemanager, logging to /usr/local/hadoop/hadoop-2.7.3/logs/yarn-hadoop-resourcemanager-Ubuntu-01.out +Ubuntu-02: starting nodemanager, logging to /usr/local/hadoop/hadoop-2.7.3/logs/yarn-hadoop-nodemanager-Ubuntu-02.out +Ubuntu-03: starting nodemanager, logging to /usr/local/hadoop/hadoop-2.7.3/logs/yarn-hadoop-nodemanager-Ubuntu-03.out +hadoop@Ubuntu-01:~$ jps +5568 Jps +5057 SecondaryNameNode +5223 ResourceManager +4846 NameNode +hadoop@Ubuntu-01:~$ start-master.sh +starting org.apache.spark.deploy.master.Master, logging to /usr/local/spark/spark-2.1.0-bin-hadoop2.7/tmp/logs/spark-hadoop-org.apache.spark.deploy.master.Master-1-Ubuntu-01.out +hadoop@Ubuntu-01:~$ jps +5649 Jps +5057 SecondaryNameNode +5223 ResourceManager +5597 Master +4846 NameNode +hadoop@Ubuntu-01:~$ start-slave.sh 192.168.1.160:7077 +starting org.apache.spark.deploy.worker.Worker, logging to /usr/local/spark/spark-2.1.0-bin-hadoop2.7/tmp/logs/spark-hadoop-org.apache.spark.deploy.worker.Worker-1-Ubuntu-01.out +hadoop@Ubuntu-01:~$ jps +5057 SecondaryNameNode +5223 ResourceManager +5672 Worker +5720 Jps +5597 Master +4846 NameNode + +hadoop@Ubuntu-01:~$ start-history-server.sh +starting org.apache.spark.deploy.history.HistoryServer, logging to /usr/local/spark/spark-2.1.0-bin-hadoop2.7/tmp/logs/spark-hadoop-org.apache.spark.deploy.history.HistoryServer-1-Ubuntu-01.out + +hadoop@Ubuntu-01:~$ run-example org.apache.spark.examples.SparkPi 2>%1 | grep "Pi is roughly" +Pi is roughly 3.140195700978505 +hadoop@Ubuntu-01:~$ spark-submit $SPARK_HOME/examples/src/main/python/pi.py 2>%1 | grep "Pi is roughly" +Pi is roughly 3.146920 + + +hadoop@Ubuntu-01:~$ spark-shell +Setting default log level to "WARN". +To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel). +17/02/15 22:30:19 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable +17/02/15 22:30:29 WARN metastore.ObjectStore: Version information not found in metastore. hive.metastore.schema.verification is not enabled so recording the schema version 1.2.0 +17/02/15 22:30:29 WARN metastore.ObjectStore: Failed to get database default, returning NoSuchObjectException +17/02/15 22:30:32 WARN metastore.ObjectStore: Failed to get database global_temp, returning NoSuchObjectException +Spark context Web UI available at http://192.168.1.160:4040 +Spark context available as 'sc' (master = local[*], app id = local-1487169020439). +Spark session available as 'spark'. +Welcome to + ____ __ + / __/__ ___ _____/ /__ + _\ \/ _ \/ _ `/ __/ '_/ + /___/ .__/\_,_/_/ /_/\_\ version 2.1.0 + /_/ + +Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_121) +Type in expressions to have them evaluated. +Type :help for more information. + +scala> val textFile =sc.textFile("file:///usr/local/spark/spark-2.1.0-bin-hadoop2.7/README.md"); +textFile: org.apache.spark.rdd.RDD[String] = file:///usr/local/spark/spark-2.1.0-bin-hadoop2.7/README.md MapPartitionsRDD[1] at textFile at :24 + +scala> textFile.count(); +res8: Long = 104 + +scala> textFile.first(); +res9: String = # Apache Spark + +scala> val linesWithSpark = textFile.filter(line=> line.contains("Spark")); +linesWithSpark: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[2] at filter at :26 + +scala> linesWithSpark.count(); +res10: Long = 20 + +scala> textFile.filter(line =>line.contains("Spark")).count(); +res11: Long = 20 + +scala> +``` + +#### 前台界面 + +SPARK_MASTER_WEBUI: http://192.168.1.160:28686/ +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image066.png) + +SPARK_HISTORY:http://192.168.1.160:18080/ + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image067.png) + +### 关闭顺序 + +```shell +hadoop@Ubuntu-01:~$ stop-history-server.sh +stopping org.apache.spark.deploy.history.HistoryServer +hadoop@Ubuntu-01:~$ stop-slaves.sh +Ubuntu-02: stopping org.apache.spark.deploy.worker.Worker +Ubuntu-03: stopping org.apache.spark.deploy.worker.Worker +Ubuntu-01: stopping org.apache.spark.deploy.worker.Worker +hadoop@Ubuntu-01:~$ stop-master.sh +stopping org.apache.spark.deploy.master.Master +hadoop@Ubuntu-01:~$ stop-yarn.sh +stopping yarn daemons +stopping resourcemanager +Ubuntu-03: stopping nodemanager +Ubuntu-02: stopping nodemanager +no proxyserver to stop +hadoop@Ubuntu-01:~$ stop-dfs.sh +Stopping namenodes on [Ubuntu-01] +Ubuntu-01: stopping namenode +Ubuntu-02: stopping datanode +Ubuntu-03: stopping datanode +Stopping secondary namenodes [Ubuntu-01] +Ubuntu-01: stopping secondarynamenode +``` + +### Scala-IDE搭建Spark源码分析环境 + +下载、解压Scala-IDE,下载地址为: +http://scala-ide.org/index.html +scala-SDK-4.5.0-vfinal-2.11-win32.win32.x86_64.zip + +下载、安装SBT,下载地址为: +http://www.scala-sbt.org/ +sbt-0.13.13.1.msi + +在github上下载最新的Spark源码: + +```shell +PS D:\temp\Scala> git clone https://github.com/apache/spark.git + +PS D:\temp\Scala> cd .\spark\ +``` + +输入sbt命令,首次会下载很多东西,速度比较慢,某些在墙外,所以需要提前搭建VPN。如果出错可以多执行几遍 + +```shell +PS D:\temp\Scala\spark> sbt + ignoring option MaxPermSize=256m; support was removed in 8.0 +[info] Loading project definition from D:\temp\Scala\spark\project +[info] Resolving key references (18753 settings) ... +[info] Set current project to spark-parent (in build file:/D:/temp/Scala/spark/) +``` + +在sbt提示符下输入eclipse,首次会下载很多东西,速度比较慢。如果出错多执行几遍。 + +```shell +> eclipse +[info] About to create Eclipse project files for your project(s). +[info] Resolving jline#jline;2.12.1 ... +[info] Successfully created Eclipse project files for project(s): +[info] spark-sql +[info] spark-sql-kafka-0-10 +[info] spark-streaming-kafka-0-8-assembly +[info] spark-examples +[info] spark-streaming +[info] spark-mllib +[info] spark-catalyst +[info] spark-streaming-kafka-0-10-assembly +[info] spark-graphx +[info] spark-streaming-flume-sink +[info] spark-tags +[info] spark-assembly +[info] spark-mllib-local +[info] spark-tools +[info] spark-repl +[info] spark-streaming-flume-assembly +[info] spark-streaming-kafka-0-8 +[info] old-deps +[info] spark-network-common +[info] spark-hive +[info] spark-streaming-flume +[info] spark-sketch +[info] spark-network-shuffle +[info] spark-core +[info] spark-unsafe +[info] spark-streaming-kafka-0-10 +[info] spark-launcher +> exit +``` + +在Scala-IDE导入spark项目: +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image068.png) +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image069.png) + +## 安装Zookeeper + +https://zookeeper.apache.org/ + +zookeeper-3.4.9.tar.gz + +```shell +hadoop@Ubuntu-01:~$ cd /usr/local +hadoop@Ubuntu-01:/usr/local$ sudo mkdir zookeeper +hadoop@Ubuntu-01:/usr/local$ sudo chown hadoop:hadoop zookeeper/ +hadoop@Ubuntu-01:/usr/local$ cd zookeeper/ +hadoop@Ubuntu-01:/usr/local/zookeeper$ tar -zxvf zookeeper-3.4.9.tar.gz + +hadoop@Ubuntu-01:/usr/local/zookeeper$ sudo vim /etc/profile + +export ZOOKEEPER_HOME=/usr/local/zookeeper/zookeeper-3.4.9 +export PATH=$PATH:$ZOOKEEPER_HOME/bin + +hadoop@Ubuntu-01:/usr/local/zookeeper$ source /etc/profile + +hadoop@Ubuntu-01:/usr/local/zookeeper/ $ cd zookeeper-3.4.9/conf +hadoop@Ubuntu-01:/usr/local/zookeeper/zookeeper-3.4.9/conf$ cp zoo_sample.cfg zoo.cfg +hadoop@Ubuntu-01:/usr/local/zookeeper/zookeeper-3.4.9/conf$ vim zoo.cfg +``` + +将dataDir改为dataDir=/usr/local/zookeeper/zookeeper-3.4.9/data(该目录需要新建),在文件末位添加所有的主机,注意server后面的数字需要与myid文件中的数字保持一致。 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image070.png) + +```shell +hadoop@Ubuntu-01:/usr/local/zookeeper/zookeeper-3.4.9$ mkdir data +hadoop@Ubuntu-01:/usr/local/zookeeper/zookeeper-3.4.9$ cd data/ +hadoop@Ubuntu-01:/usr/local/zookeeper/zookeeper-3.4.9/data$ vim myid +``` + +myid中写入1 + +对Ubuntu-02与Ubuntu-03机器进行类似操作,在各主机myid文件中写入各自的编号。 + +```shell +hadoop@Ubuntu-01:/usr/local/zookeeper$ scp -r zookeeper-3.4.9/ hadoop@Ubuntu-02:/usr/local/zookeeper/ +hadoop@Ubuntu-01:/usr/local/zookeeper$ scp -r zookeeper-3.4.9/ hadoop@Ubuntu-03:/usr/local/zookeeper/ +``` + +### 验证 +在每台zookeeper机器上执行: + +```shell +hadoop@Ubuntu-01:~$ zkServer.sh start +ZooKeeper JMX enabled by default +Using config: /usr/local/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg +Starting zookeeper ... STARTED + +hadoop@Ubuntu-02:~$ zkServer.sh start +ZooKeeper JMX enabled by default +Using config: /usr/local/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg +Starting zookeeper ... STARTED + +hadoop@Ubuntu-03:~$ zkServer.sh start +ZooKeeper JMX enabled by default +Using config: /usr/local/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg +Starting zookeeper ... STARTED + +hadoop@Ubuntu-01:~$ zkServer.sh status +ZooKeeper JMX enabled by default +Using config: /usr/local/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg +Mode: follower + +hadoop@Ubuntu-02:~$ zkServer.sh status +ZooKeeper JMX enabled by default +Using config: /usr/local/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg +Mode: leader + +hadoop@Ubuntu-03:~$ zkServer.sh status +ZooKeeper JMX enabled by default +Using config: /usr/local/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg +Mode: follower + + +hadoop@Ubuntu-01:~$ zkCli.sh -server Ubuntu-01:2181 +Connecting to Ubuntu-01:2181 +2017-02-18 22:32:23,226 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.9-1757313, built on 08/23/2016 06:50 GMT +2017-02-18 22:32:23,231 [myid:] - INFO [main:Environment@100] - Client environment:host.name=Ubuntu-01 +2017-02-18 22:32:23,231 [myid:] - INFO [main:Environment@100] - Client environment:java.version=1.8.0_121 +2017-02-18 22:32:23,233 [myid:] - INFO [main:Environment@100] - Client environment:java.vendor=Oracle Corporation +2017-02-18 22:32:23,233 [myid:] - INFO [main:Environment@100] - Client environment:java.home=/usr/local/java/jdk1.8.0_121/jre +2017-02-18 22:32:23,233 [myid:] - INFO [main:Environment@100] - Client environment:java.class.path=/usr/local/zookeeper/zookeeper-3.4.9/bin/../build/classes:/usr/local/zookeeper/zookeeper-3.4.9/bin/../build/lib/*.jar:/usr/local/zookeeper/zookeeper-3.4.9/bin/../lib/slf4j-log4j12-1.6.1.jar:/usr/local/zookeeper/zookeeper-3.4.9/bin/../lib/slf4j-api-1.6.1.jar:/usr/local/zookeeper/zookeeper-3.4.9/bin/../lib/netty-3.10.5.Final.jar:/usr/local/zookeeper/zookeeper-3.4.9/bin/../lib/log4j-1.2.16.jar:/usr/local/zookeeper/zookeeper-3.4.9/bin/../lib/jline-0.9.94.jar:/usr/local/zookeeper/zookeeper-3.4.9/bin/../zookeeper-3.4.9.jar:/usr/local/zookeeper/zookeeper-3.4.9/bin/../src/java/lib/*.jar:/usr/local/zookeeper/zookeeper-3.4.9/bin/../conf:.:/usr/local/java/jdk1.8.0_121/lib:.:/usr/local/java/jdk1.8.0_121/lib:.:/usr/local/java/jdk1.8.0_121/lib: +2017-02-18 22:32:23,234 [myid:] - INFO [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib +2017-02-18 22:32:23,234 [myid:] - INFO [main:Environment@100] - Client environment:java.io.tmpdir=/tmp +2017-02-18 22:32:23,234 [myid:] - INFO [main:Environment@100] - Client environment:java.compiler= +2017-02-18 22:32:23,235 [myid:] - INFO [main:Environment@100] - Client environment:os.name=Linux +2017-02-18 22:32:23,235 [myid:] - INFO [main:Environment@100] - Client environment:os.arch=amd64 +2017-02-18 22:32:23,235 [myid:] - INFO [main:Environment@100] - Client environment:os.version=4.4.0-62-generic +2017-02-18 22:32:23,235 [myid:] - INFO [main:Environment@100] - Client environment:user.name=hadoop +2017-02-18 22:32:23,236 [myid:] - INFO [main:Environment@100] - Client environment:user.home=/home/hadoop +2017-02-18 22:32:23,236 [myid:] - INFO [main:Environment@100] - Client environment:user.dir=/home/hadoop +2017-02-18 22:32:23,237 [myid:] - INFO [main:ZooKeeper@438] - Initiating client connection, connectString=Ubuntu-01:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@531d72ca +Welcome to ZooKeeper! +2017-02-18 22:32:23,268 [myid:] - INFO [main-SendThread(Ubuntu-01:2181):ClientCnxn$SendThread@1032] - Opening socket connection to server Ubuntu-01/192.168.1.160:2181. Will not attempt to authenticate using SASL (unknown error) +JLine support is enabled +2017-02-18 22:32:23,398 [myid:] - INFO [main-SendThread(Ubuntu-01:2181):ClientCnxn$SendThread@876] - Socket connection established to Ubuntu-01/192.168.1.160:2181, initiating session +2017-02-18 22:32:23,429 [myid:] - INFO [main-SendThread(Ubuntu-01:2181):ClientCnxn$SendThread@1299] - Session establishment complete on server Ubuntu-01/192.168.1.160:2181, sessionid = 0x15a51a0e47d0000, negotiated timeout = 30000 + +WATCHER:: + +WatchedEvent state:SyncConnected type:None path:null +[zk: Ubuntu-01:2181(CONNECTED) 0] quit +Quitting... +2017-02-18 22:32:34,993 [myid:] - INFO [main-EventThread:ClientCnxn$EventThread@519] - EventThread shut down for session: 0x15a51a0e47d0000 +2017-02-18 22:32:34,994 [myid:] - INFO [main:ZooKeeper@684] - Session: 0x15a51a0e47d0000 closed + + +hadoop@Ubuntu-01:~$ echo ruok| nc Ubuntu-01 2181 +imokhadoop@Ubuntu-01:~$ +``` + +## 安装HBase +下载地址:http://hbase.apache.org/ +安装版本:hbase-1.2.4-bin.tar.gz + +```shell +hadoop@Ubuntu-01:~$ cd /usr/local +hadoop@Ubuntu-01:/usr/local$ sudo mkdir hbase +hadoop@Ubuntu-01:/usr/local$ sudo chown hadoop:hadoop hbase/ +hadoop@Ubuntu-01:/usr/local$ cd hbase/ +hadoop@Ubuntu-01:/usr/local/hbase$ tar -zxvf hbase-1.2.4-bin.tar.gz +hadoop@Ubuntu-01:/usr/local/spark$ sudo vim /etc/profile + +export HBASE_HOME=/usr/local/hbase/hbase-1.2.4 +export PATH=$PATH:$HBASE_HOME/bin +export HBASE_CLASSPATH=$HBASE_HOME/lib + +hadoop@Ubuntu-01:/usr/local/spark$ source /etc/profile +hadoop@Ubuntu-01:/usr/local/hbase$ cd hbase-1.2.4/conf +hadoop@Ubuntu-01:/usr/local/hbase/hbase-1.2.4/conf$ vim hbase-env.sh +``` + +取消JAVA_HOME和HBASE_MANAGES_ZK项的注释,并设置正确值。 + +```shell +export JAVA_HOME=/usr/local/java/jdk1.8.0_121 +export HBASE_MANAGES_ZK=false +``` + +```shell +hadoop@Ubuntu-01:/usr/local/hbase/hbase-1.2.4/conf$ vim hbase-site.xml +``` + +```xml + + + hbase.rootdir + hdfs://Ubuntu-01:9000/hbase + + + hbase.cluster.distributed + true + + + hbase.zookeeper.quorum + Ubuntu-01,Ubuntu-02,Ubuntu-03 + + +``` + +复制到另外两个节点 + +```shell +hadoop@Ubuntu-01:/usr/local/hbase$ scp -r hbase-1.2.4 hadoop@Ubuntu-02:/usr/local/hbase/ +hadoop@Ubuntu-01:/usr/local/hbase$ scp -r hbase-1.2.4 hadoop@Ubuntu-03:/usr/local/hbase/ +``` +### 验证 + +#### 启动 +除了zkServer.sh start要在所有节点执行外,其余启动命令只需要在主节点执行 + +```shell +hadoop@Ubuntu-01:~$ start-dfs.sh +Starting namenodes on [Ubuntu-01] +Ubuntu-01: starting namenode, logging to /usr/local/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-namenode-Ubuntu-01.out +Ubuntu-02: starting datanode, logging to /usr/local/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-datanode-Ubuntu-02.out +Ubuntu-03: starting datanode, logging to /usr/local/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-datanode-Ubuntu-03.out +Starting secondary namenodes [Ubuntu-01] +Ubuntu-01: starting secondarynamenode, logging to /usr/local/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-secondarynamenode-Ubuntu-01.out +hadoop@Ubuntu-01:~$ jps +10835 Jps +10518 NameNode +4299 SecondaryNameNode +hadoop@Ubuntu-01:~$ zkServer.sh start +ZooKeeper JMX enabled by default +Using config: /usr/local/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg +Starting zookeeper ... STARTED +hadoop@Ubuntu-01:~$ jps +10518 NameNode +10854 QuorumPeerMain +4299 SecondaryNameNode +10879 Jps +hadoop@Ubuntu-01:~$ start-hbase.sh +starting master, logging to /usr/local/hbase/hbase-1.2.4/logs/hbase-hadoop-master-Ubuntu-01.out +Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0 +Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0 +hadoop@Ubuntu-01:~$ jps +10518 NameNode +10854 QuorumPeerMain +11015 HMaster +11191 Jps +4299 SecondaryNameNode +hadoop@Ubuntu-01:~$ hbase shell +SLF4J: Class path contains multiple SLF4J bindings. +SLF4J: Found binding in [jar:file:/usr/local/hbase/hbase-1.2.4/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class] +SLF4J: Found binding in [jar:file:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class] +SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. +SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] +HBase Shell; enter 'help' for list of supported commands. +Type "exit" to leave the HBase Shell +Version 1.2.4, r67592f3d062743907f8c5ae00dbbe1ae4f69e5af, Tue Oct 25 18:10:20 CDT 2016 + +hbase(main):001:0> +``` + +#### 查看hbase管理界面 +http://ubuntu-01:16010/ + + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image071.png) + + + + +#### 关闭 +除了zkServer.sh stop要在所有节点执行外,其余关闭命令只需要在主节点执行 + +```shell +hadoop@Ubuntu-01:~$ jps +11297 Jps +10518 NameNode +10854 QuorumPeerMain +11015 HMaster +4299 SecondaryNameNode +hadoop@Ubuntu-01:~$ stop-hbase.sh +stopping hbase................ +hadoop@Ubuntu-01:~$ jps +10518 NameNode +10854 QuorumPeerMain +4299 SecondaryNameNode +11516 Jps +hadoop@Ubuntu-01:~$ zkServer.sh stop +ZooKeeper JMX enabled by default +Using config: /usr/local/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg +Stopping zookeeper ... STOPPED +hadoop@Ubuntu-01:~$ jps +11537 Jps +10518 NameNode +4299 SecondaryNameNode +hadoop@Ubuntu-01:~$ stop-dfs.sh +Stopping namenodes on [Ubuntu-01] +Ubuntu-01: stopping namenode +Ubuntu-02: stopping datanode +Ubuntu-03: stopping datanode +Stopping secondary namenodes [Ubuntu-01] +hadoop@Ubuntu-01:~$ jps +11880 Jps +``` + +## 安装Hive +http://hive.apache.org/ + +apache-hive-2.1.1-bin.tar.gz + + +```shell +hadoop@Ubuntu-01:~$ cd /usr/local +hadoop@Ubuntu-01:/usr/local$ sudo mkdir hive +hadoop@Ubuntu-01:/usr/local$ sudo chown hadoop:hadoop hive/ +hadoop@Ubuntu-01:/usr/local$ cd hive/ +hadoop@Ubuntu-01:/usr/local/hive$ tar -zxvf apache-hive-2.1.1-bin.tar.gz + + +hadoop@Ubuntu-01:/usr/local/hive$ sudo vim /etc/profile + + + +export HIVE_HOME=/usr/local/hive/apache-hive-2.1.1-bin +export PATH=$PATH:$HIVE_HOME/bin + +hadoop@Ubuntu-01:/usr/local/hive$ source /etc/profile + + +hadoop@Ubuntu-01:/usr/local/hive$ cd apache-hive-2.1.1-bin/conf/ +hadoop@Ubuntu-01:/usr/local/hive/apache-hive-2.1.1-bin/conf$ cp hive-default.xml.template hive-site.xml +hadoop@Ubuntu-01:/usr/local/hive/apache-hive-2.1.1-bin/conf$ vim hive-site.xml +``` + +```xml + + + javax.jdo.option.ConnectionURL + jdbc:mysql://192.168.1.100:3306/hive?createDatabaseIfNotExist=true + + + javax.jdo.option.ConnectionDriverName + com.mysql.jdbc.Driver + + + javax.jdo.option.ConnectionUserName + hive + username to use against metastore database + + + javax.jdo.option.ConnectionPassword + hive + + + hive.hwi.listen.port + 9999 + This is the port the Hive Web Interface will listen on + + + datanucleus.autoCreateSchema + false + + + datanucleus.fixedDatastore + true + + + hive.metastore.local + true + controls whether to connect to remove metastore server or open a new metastore server in Hive Client JVM + + + hive.metastore.schema.verification + false + + Enforce metastore schema version consistency. + True: Verify that version information stored in metastore matches with one from Hive jars. Also disable automatic + schema migration attempt. Users are required to manully migrate schema after Hive upgrade which ensures + proper metastore schema migration. (Default) + False: Warn if the version information stored in metastore doesn't match with one from in Hive jars. + + + +``` + +下载mysql连接java的驱动 并拷入hive home的lib下(mysql-connector-java-5.1.38.jar) + +```shell +hadoop@Ubuntu-01:~$ schematool -initSchema -dbType mysql +SLF4J: Class path contains multiple SLF4J bindings. +SLF4J: Found binding in [jar:file:/usr/local/hive/apache-hive-2.1.1-bin/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] +SLF4J: Found binding in [jar:file:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class] +SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. +SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory] +Metastore connection URL: jdbc:mysql://192.168.1.100:3306/hive?createDatabaseIfNotExist=true +Metastore Connection Driver : com.mysql.jdbc.Driver +Metastore connection User: hive +Starting metastore schema initialization to 2.1.0 +Initialization script hive-schema-2.1.0.mysql.sql +Initialization script completed +schemaTool completed +hadoop@Ubuntu-01:~$ start-dfs.sh +Starting namenodes on [Ubuntu-01] +Ubuntu-01: starting namenode, logging to /usr/local/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-namenode-Ubuntu-01.out +Ubuntu-02: starting datanode, logging to /usr/local/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-datanode-Ubuntu-02.out +Ubuntu-03: starting datanode, logging to /usr/local/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-datanode-Ubuntu-03.out +Starting secondary namenodes [Ubuntu-01] +Ubuntu-01: starting secondarynamenode, logging to /usr/local/hadoop/hadoop-2.7.3/logs/hadoop-hadoop-secondarynamenode-Ubuntu-01.out +hadoop@Ubuntu-01:~$ hive +SLF4J: Class path contains multiple SLF4J bindings. +SLF4J: Found binding in [jar:file:/usr/local/hive/apache-hive-2.1.1-bin/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] +SLF4J: Found binding in [jar:file:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class] +SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. +SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory] + +Logging initialized using configuration in jar:file:/usr/local/hive/apache-hive-2.1.1-bin/lib/hive-common-2.1.1.jar!/hive-log4j2.properties Async: true +Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases. +hive> +``` + +```sql +create database hive; +-- 创建hive用户,并授权 +grant all on hive.* to hive@'%' identified by 'hive'; +flush privileges; +``` + + +## 安装PIG +http://pig.apache.org/ +pig-0.16.0.tar.gz + +```shell +hadoop@Ubuntu-01:~$ cd /usr/local +hadoop@Ubuntu-01:/usr/local$ sudo mkdir pig +hadoop@Ubuntu-01:/usr/local$ sudo chown hadoop:hadoop pig/ +hadoop@Ubuntu-01:/usr/local$ cd pig/ +hadoop@Ubuntu-01:/usr/local/pig$ tar -zxvf pig-0.16.0.tar.gz + +hadoop@Ubuntu-01:/usr/local/pig$ sudo vim /etc/profile + +export PIG_HOME=/usr/local/pig/pig-0.16.0 +export PATH=$PATH:$PIG_HOME/bin +export PIG_CLASSPATH=$HADDOP_HOME/conf + + +hadoop@Ubuntu-01:/usr/local/pig$ source /etc/profile +``` + +### 测试 + +```shell +hadoop@Ubuntu-01:~$ pig -x local +SLF4J: Class path contains multiple SLF4J bindings. +SLF4J: Found binding in [jar:file:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class] +SLF4J: Found binding in [jar:file:/usr/local/hbase/hbase-1.2.4/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class] +SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. +SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] +17/02/24 22:26:57 INFO pig.ExecTypeProvider: Trying ExecType : LOCAL +17/02/24 22:26:57 INFO pig.ExecTypeProvider: Picked LOCAL as the ExecType +2017-02-24 22:26:57,715 [main] INFO org.apache.pig.Main - Apache Pig version 0.16.0 (r1746530) compiled Jun 01 2016, 23:10:49 +2017-02-24 22:26:57,715 [main] INFO org.apache.pig.Main - Logging error messages to: /home/hadoop/pig_1487946417711.log +2017-02-24 22:26:57,754 [main] INFO org.apache.pig.impl.util.Utils - Default bootup file /home/hadoop/.pigbootup not found +2017-02-24 22:26:58,045 [main] INFO org.apache.hadoop.conf.Configuration.deprecation - mapred.job.tracker is deprecated. Instead, use mapreduce.jobtracker.address +2017-02-24 22:26:58,046 [main] INFO org.apache.hadoop.conf.Configuration.deprecation - fs.default.name is deprecated. Instead, use fs.defaultFS +2017-02-24 22:26:58,048 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: file:/// +2017-02-24 22:26:58,344 [main] INFO org.apache.hadoop.conf.Configuration.deprecation - io.bytes.per.checksum is deprecated. Instead, use dfs.bytes-per-checksum +2017-02-24 22:26:58,374 [main] INFO org.apache.pig.PigServer - Pig Script ID for the session: PIG-default-7efc5f81-68bd-4e67-aa0d-30882be88c11 +2017-02-24 22:26:58,375 [main] WARN org.apache.pig.PigServer - ATS is disabled since yarn.timeline-service.enabled set to false +grunt> quit +2017-02-24 22:30:50,757 [main] INFO org.apache.pig.Main - Pig script completed in 3 minutes, 53 seconds and 947 milliseconds (233947 ms) +hadoop@Ubuntu-01:~$ pig +17/02/24 22:32:52 INFO pig.ExecTypeProvider: Trying ExecType : LOCAL +17/02/24 22:32:52 INFO pig.ExecTypeProvider: Trying ExecType : MAPREDUCE +17/02/24 22:32:52 INFO pig.ExecTypeProvider: Picked MAPREDUCE as the ExecType +2017-02-24 22:32:52,844 [main] INFO org.apache.pig.Main - Apache Pig version 0.16.0 (r1746530) compiled Jun 01 2016, 23:10:49 +2017-02-24 22:32:52,845 [main] INFO org.apache.pig.Main - Logging error messages to: /home/hadoop/pig_1487946772836.log +2017-02-24 22:32:52,890 [main] INFO org.apache.pig.impl.util.Utils - Default bootup file /home/hadoop/.pigbootup not found +SLF4J: Class path contains multiple SLF4J bindings. +SLF4J: Found binding in [jar:file:/usr/local/hadoop/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class] +SLF4J: Found binding in [jar:file:/usr/local/hbase/hbase-1.2.4/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class] +SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. +SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] +2017-02-24 22:32:53,865 [main] INFO org.apache.hadoop.conf.Configuration.deprecation - mapred.job.tracker is deprecated. Instead, use mapreduce.jobtracker.address +2017-02-24 22:32:53,866 [main] INFO org.apache.hadoop.conf.Configuration.deprecation - fs.default.name is deprecated. Instead, use fs.defaultFS +2017-02-24 22:32:53,866 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: hdfs://Ubuntu-01:9000 +2017-02-24 22:32:54,752 [main] INFO org.apache.pig.PigServer - Pig Script ID for the session: PIG-default-aeeb7102-d88a-4154-9876-d76ff0da3a8c +2017-02-24 22:32:54,752 [main] WARN org.apache.pig.PigServer - ATS is disabled since yarn.timeline-service.enabled set to false +grunt> ls / +hdfs://Ubuntu-01:9000/hbase +hdfs://Ubuntu-01:9000/output +hdfs://Ubuntu-01:9000/tmp +``` + +## 安装Mahout + +http://mahout.apache.org/ +apache-mahout-distribution-0.12.2.tar.gz + +```shell +hadoop@Ubuntu-01:~$ cd /usr/local +hadoop@Ubuntu-01:/usr/local$ sudo mkdir mahout +hadoop@Ubuntu-01:/usr/local$ sudo chown hadoop:hadoop mahout/ +hadoop@Ubuntu-01:/usr/local$ cd mahout/ +hadoop@Ubuntu-01:/usr/local/mahout$ tar -zxvf apache-mahout-distribution-0.12.2.tar.gz + + +hadoop@Ubuntu-01:/usr/local/mahout$ sudo vim /etc/profile + +export MAHOUT_HOME=/usr/local/mahout/apache-mahout-distribution-0.12.2 +export PATH=$PATH:$MAHOUT_HOME/bin + +hadoop@Ubuntu-01:/usr/local/mahout$ source /etc/profile + +hadoop@Ubuntu-01:~$ cd +hadoop@Ubuntu-01:~$ start-dfs.sh +hadoop@Ubuntu-01:~$ start-yarn.sh +hadoop@Ubuntu-01:~$ mahout –help +Running on hadoop, using /usr/local/hadoop/hadoop-2.7.3/bin/hadoop and HADOOP_CONF_DIR= +MAHOUT-JOB: /usr/local/mahout/apache-mahout-distribution-0.12.2/mahout-examples-0.12.2-job.jar +Unknown program '--help' chosen. +Valid program names are: + arff.vector: : Generate Vectors from an ARFF file or directory + baumwelch: : Baum-Welch algorithm for unsupervised HMM training + canopy: : Canopy clustering + cat: : Print a file or resource as the logistic regression models would see it + cleansvd: : Cleanup and verification of SVD output + clusterdump: : Dump cluster output to text + clusterpp: : Groups Clustering Output In Clusters + cmdump: : Dump confusion matrix in HTML or text formats + cvb: : LDA via Collapsed Variation Bayes (0th deriv. approx) + cvb0_local: : LDA via Collapsed Variation Bayes, in memory locally. + describe: : Describe the fields and target variable in a data set + evaluateFactorization: : compute RMSE and MAE of a rating matrix factorization against probes + fkmeans: : Fuzzy K-means clustering + hmmpredict: : Generate random sequence of observations by given HMM + itemsimilarity: : Compute the item-item-similarities for item-based collaborative filtering + kmeans: : K-means clustering + lucene.vector: : Generate Vectors from a Lucene index + matrixdump: : Dump matrix in CSV format + matrixmult: : Take the product of two matrices + parallelALS: : ALS-WR factorization of a rating matrix + qualcluster: : Runs clustering experiments and summarizes results in a CSV + recommendfactorized: : Compute recommendations using the factorization of a rating matrix + recommenditembased: : Compute recommendations using item-based collaborative filtering + regexconverter: : Convert text files on a per line basis based on regular expressions + resplit: : Splits a set of SequenceFiles into a number of equal splits + rowid: : Map SequenceFile to {SequenceFile, SequenceFile} + rowsimilarity: : Compute the pairwise similarities of the rows of a matrix + runAdaptiveLogistic: : Score new production data using a probably trained and validated AdaptivelogisticRegression model + runlogistic: : Run a logistic regression model against CSV data + seq2encoded: : Encoded Sparse Vector generation from Text sequence files + seq2sparse: : Sparse Vector generation from Text sequence files + seqdirectory: : Generate sequence files (of Text) from a directory + seqdumper: : Generic Sequence File dumper + seqmailarchives: : Creates SequenceFile from a directory containing gzipped mail archives + seqwiki: : Wikipedia xml dump to sequence file + spectralkmeans: : Spectral k-means clustering + split: : Split Input data into test and train sets + splitDataset: : split a rating dataset into training and probe parts + ssvd: : Stochastic SVD + streamingkmeans: : Streaming k-means clustering + svd: : Lanczos Singular Value Decomposition + testnb: : Test the Vector-based Bayes classifier + trainAdaptiveLogistic: : Train an AdaptivelogisticRegression model + trainlogistic: : Train a logistic regression using stochastic gradient descent + trainnb: : Train the Vector-based Bayes classifier + transpose: : Take the transpose of a matrix + validateAdaptiveLogistic: : Validate an AdaptivelogisticRegression model against hold-out data set + vecdist: : Compute the distances between a set of Vectors (or Cluster or Canopy, they must fit in memory) and a list of Vectors + vectordump: : Dump vectors from a sequence file to text + viterbi: : Viterbi decoding of hidden states from given output states sequence +hadoop@Ubuntu-01:~$ hadoop fs -mkdir /user +hadoop@Ubuntu-01:~$ hadoop fs -mkdir /user/Hadoop +hadoop@Ubuntu-01:~$ hadoop fs -mkdir /user/hadoop/testdata +hadoop@Ubuntu-01:~$ hadoop fs -put big-data-demo/synthetic_control.data.txt /user/hadoop/testdata +hadoop@Ubuntu-01:~$ hadoop jar /usr/local/mahout/apache-mahout-distribution-0.12.2/mahout-examples-0.12.2-job.jar org.apache.mahout.clustering.syntheticcontrol.kmeans.Job +hadoop@Ubuntu-01:~$ hadoop fs -ls -R output +-rw-r--r-- 2 hadoop supergroup 194 2017-03-01 22:21 output/_policy +drwxr-xr-x - hadoop supergroup 0 2017-03-01 22:21 output/clusteredPoints +-rw-r--r-- 2 hadoop supergroup 0 2017-03-01 22:21 output/clusteredPoints/_SUCCESS +-rw-r--r-- 2 hadoop supergroup 363282 2017-03-01 22:21 output/clusteredPoints/part-m-00000 +drwxr-xr-x - hadoop supergroup 0 2017-03-01 22:16 output/clusters-0 +-rw-r--r-- 2 hadoop supergroup 194 2017-03-01 22:16 output/clusters-0/_policy +-rw-r--r-- 2 hadoop supergroup 1891 2017-03-01 22:16 output/clusters-0/part-00000 +-rw-r--r-- 2 hadoop supergroup 1891 2017-03-01 22:16 output/clusters-0/part-00001 +-rw-r--r-- 2 hadoop supergroup 1891 2017-03-01 22:16 output/clusters-0/part-00002 +-rw-r--r-- 2 hadoop supergroup 1891 2017-03-01 22:16 output/clusters-0/part-00003 +-rw-r--r-- 2 hadoop supergroup 1891 2017-03-01 22:16 output/clusters-0/part-00004 +-rw-r--r-- 2 hadoop supergroup 1891 2017-03-01 22:16 output/clusters-0/part-00005 +drwxr-xr-x - hadoop supergroup 0 2017-03-01 22:16 output/clusters-1 +-rw-r--r-- 2 hadoop supergroup 0 2017-03-01 22:16 output/clusters-1/_SUCCESS +-rw-r--r-- 2 hadoop supergroup 194 2017-03-01 22:16 output/clusters-1/_policy +-rw-r--r-- 2 hadoop supergroup 7581 2017-03-01 22:16 output/clusters-1/part-r-00000 +drwxr-xr-x - hadoop supergroup 0 2017-03-01 22:21 output/clusters-10-final +-rw-r--r-- 2 hadoop supergroup 0 2017-03-01 22:21 output/clusters-10-final/_SUCCESS +-rw-r--r-- 2 hadoop supergroup 194 2017-03-01 22:21 output/clusters-10-final/_policy +-rw-r--r-- 2 hadoop supergroup 7581 2017-03-01 22:21 output/clusters-10-final/part-r-00000 +drwxr-xr-x - hadoop supergroup 0 2017-03-01 22:17 output/clusters-2 +-rw-r--r-- 2 hadoop supergroup 0 2017-03-01 22:17 output/clusters-2/_SUCCESS +-rw-r--r-- 2 hadoop supergroup 194 2017-03-01 22:17 output/clusters-2/_policy +-rw-r--r-- 2 hadoop supergroup 7581 2017-03-01 22:17 output/clusters-2/part-r-00000 +drwxr-xr-x - hadoop supergroup 0 2017-03-01 22:17 output/clusters-3 +-rw-r--r-- 2 hadoop supergroup 0 2017-03-01 22:17 output/clusters-3/_SUCCESS +-rw-r--r-- 2 hadoop supergroup 194 2017-03-01 22:17 output/clusters-3/_policy +-rw-r--r-- 2 hadoop supergroup 7581 2017-03-01 22:17 output/clusters-3/part-r-00000 +drwxr-xr-x - hadoop supergroup 0 2017-03-01 22:18 output/clusters-4 +-rw-r--r-- 2 hadoop supergroup 0 2017-03-01 22:18 output/clusters-4/_SUCCESS +-rw-r--r-- 2 hadoop supergroup 194 2017-03-01 22:18 output/clusters-4/_policy +-rw-r--r-- 2 hadoop supergroup 7581 2017-03-01 22:18 output/clusters-4/part-r-00000 +drwxr-xr-x - hadoop supergroup 0 2017-03-01 22:18 output/clusters-5 +-rw-r--r-- 2 hadoop supergroup 0 2017-03-01 22:18 output/clusters-5/_SUCCESS +-rw-r--r-- 2 hadoop supergroup 194 2017-03-01 22:18 output/clusters-5/_policy +-rw-r--r-- 2 hadoop supergroup 7581 2017-03-01 22:18 output/clusters-5/part-r-00000 +drwxr-xr-x - hadoop supergroup 0 2017-03-01 22:19 output/clusters-6 +-rw-r--r-- 2 hadoop supergroup 0 2017-03-01 22:19 output/clusters-6/_SUCCESS +-rw-r--r-- 2 hadoop supergroup 194 2017-03-01 22:19 output/clusters-6/_policy +-rw-r--r-- 2 hadoop supergroup 7581 2017-03-01 22:19 output/clusters-6/part-r-00000 +drwxr-xr-x - hadoop supergroup 0 2017-03-01 22:19 output/clusters-7 +-rw-r--r-- 2 hadoop supergroup 0 2017-03-01 22:19 output/clusters-7/_SUCCESS +-rw-r--r-- 2 hadoop supergroup 194 2017-03-01 22:19 output/clusters-7/_policy +-rw-r--r-- 2 hadoop supergroup 7581 2017-03-01 22:19 output/clusters-7/part-r-00000 +drwxr-xr-x - hadoop supergroup 0 2017-03-01 22:20 output/clusters-8 +-rw-r--r-- 2 hadoop supergroup 0 2017-03-01 22:20 output/clusters-8/_SUCCESS +-rw-r--r-- 2 hadoop supergroup 194 2017-03-01 22:20 output/clusters-8/_policy +-rw-r--r-- 2 hadoop supergroup 7581 2017-03-01 22:20 output/clusters-8/part-r-00000 +drwxr-xr-x - hadoop supergroup 0 2017-03-01 22:20 output/clusters-9 +-rw-r--r-- 2 hadoop supergroup 0 2017-03-01 22:20 output/clusters-9/_SUCCESS +-rw-r--r-- 2 hadoop supergroup 194 2017-03-01 22:20 output/clusters-9/_policy +-rw-r--r-- 2 hadoop supergroup 7581 2017-03-01 22:20 output/clusters-9/part-r-00000 +drwxr-xr-x - hadoop supergroup 0 2017-03-01 22:16 output/data +-rw-r--r-- 2 hadoop supergroup 0 2017-03-01 22:16 output/data/_SUCCESS +-rw-r--r-- 2 hadoop supergroup 335470 2017-03-01 22:16 output/data/part-m-00000 +drwxr-xr-x - hadoop supergroup 0 2017-03-01 22:16 output/random-seeds +-rw-r--r-- 2 hadoop supergroup 7723 2017-03-01 22:16 output/random-seeds/part-randomSeed +``` + +## 使用Ambari安装Hadoop集群 + +ubuntu-16.04.1-04 ubuntu-16.04.1-05 ubuntu-16.04.1-06三台虚拟机已经拆除,如果需要再次尝试Ambari需要重新创建虚拟机。 + +### 基础环境搭建 +配置主机名,安装JDK,配置SSH互登陆等参考前文所述方法,配置SSH互登陆过程中要使用root用户,在配置过程中,如果scp命令不允许使用root用户远程访问,参考下面的方法解决: + +```shell +root@Ubuntu-04:~# vi /etc/ssh/sshd_config + +# Authentication: +LoginGraceTime 120 +PermitRootLogin yes +#PermitRootLogin prohibit-password +StrictModes yes +``` + +重启 ssh 服务 + +```shell +root@Ubuntu-04:~# service ssh restart +``` + +另外由于Ambari最新版本的安装需要Maven,所以在某个节点上使用下面方式安装Maven: + +```shell +root@Ubuntu-04:~# mkdir /usr/local/maven +root@Ubuntu-04:~# cd /usr/local/maven/ +root@Ubuntu-04:/usr/local/maven# ls +apache-maven-3.5.0-bin.tar.gz +root@Ubuntu-04:/usr/local/maven# tar -zxvf apache-maven-3.5.0-bin.tar.gz + + +root@Ubuntu-04:/usr/local/maven# sudo vim /etc/profile + +export M2_HOME=/usr/local/maven/apache-maven-3.5.0 +export PATH=$PATH:$M2_HOME/bin + + +root@Ubuntu-04:/usr/local/maven# source /etc/profile +``` + +### 安装Ambari +主要参考官方文档:https://cwiki.apache.org/confluence/display/AMBARI/Installation+Guide+for+Ambari+2.5.1 + +在其中一个节点(安装maven的节点)下载ambari的源码包,并打包成deb包,拷贝到所有其它节点进行安装。 + +```shell +root@Ubuntu-04:~# mkdir /usr/local/ambary +root@Ubuntu-04:~# cd /usr/local/ambari/ +root@Ubuntu-04:/usr/local/ambari# wget http://www.apache.org/dist/ambari/ambari-2.5.1/apache-ambari-2.5.1-src.tar.gz +root@Ubuntu-04:/usr/local/ambari# tar xfvz apache-ambari-2.5.1-src.tar.gz +root@Ubuntu-04:/usr/local/ambari# cd apache-ambari-2.5.1-src +root@Ubuntu-04:/usr/local/ambari/apache-ambari-2.5.1-src# mvn versions:set -DnewVersion=2.5.1.0.0 +root@Ubuntu-04:/usr/local/ambari/apache-ambari-2.5.1-src# pushd ambari-metrics +/usr/local/ambari/apache-ambari-2.5.1-src/ambari-metrics /usr/local/ambari/apache-ambari-2.5.1-src +root@Ubuntu-04:/usr/local/ambari/apache-ambari-2.5.1-src/ambari-metrics# mvn versions:set -DnewVersion=2.5.1.0.0 +root@Ubuntu-04:/usr/local/ambari/apache-ambari-2.5.1-src/ambari-metrics# popd +/usr/local/ambari/apache-ambari-2.5.1-src +root@Ubuntu-04:/usr/local/ambari/apache-ambari-2.5.1-src# mvn -B clean install package jdeb:jdeb -DnewVersion=2.5.1.0.0 -DskipTests -Dpython.ver="python >= 2.6" +# 如果遇到某些包因为墙的原因无法下载,则直接在网上下载对应的包放到日志指定的目录。 +# 如果报错:ENOGIT git is not installed or not in the PATH,则安装git:apt-get install git。 +# 如果遇到类似于下面的错误,则在对应项目的pom.xml中增加 +``` + +```xml + + org.vafer + jdeb + 1.0.1 + + + + stub-execution + none + + jdeb + + + + + true + false + false + ${project.basedir}/../src/main/package/deb/control + + \ +``` + +```log +[ERROR] Failed to execute goal org.vafer:jdeb:1.0.1:jdeb (default-cli) on project ambari-logsearch: Failed to create debian package /home/kylin/apache-ambari-2.4.2-src/ambari-logsearch/target/ambari-logsearch_2.4.2.0.0_all.deb: “/home/kylin/apache-ambari-2.4.2-src/ambari-logsearch/src/main/package/deb/control” is not a valid ‘control’ directory) -> [Help 1] + +# 如果遇到类似下面的错误,将对应项目的pom.xml中的storm版本改为1.1.0 + + + 1.1.0 + +# 如果遇到如下报错,执行sudo apt-get install python-dev + + [exec] creating build/temp.linux-x86_64-2.7/psutil + [exec] x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c psutil/_psutil_linux.c -o build/temp.linux-x86_64-2.7/psutil/_psutil_linux.o + [exec] psutil/_psutil_linux.c:12:20: fatal error: Python.h: 没有那个文件或目录 + [exec] compilation terminated. + [exec] error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 + +# 如果报如下错误,参考https://cwiki.apache.org//confluence/display/MAVEN/OutOfMemoryError + +[ERROR] Java heap space -> [Help 1] +[ERROR] +[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. +[ERROR] Re-run Maven using the -X switch to enable full debug logging. +[ERROR] +[ERROR] For more information about the errors and possible solutions, please read the following articles: +[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/OutOfMemoryError +``` + +## 大数据平台-kerberos安装部署文档 + +### 环境准备 + +#### 操作系统 +本次安装部署要求在操作系统为CentOS release 6.5 (Final)的版本下进行部署,所以在安装部署kerberos之前请先确保操作系统为以上版本,并且集群中各机器已做时钟同步。 +本次安装部署以csdm-hadoop-04作为主kdc服务器,以csdm-hadoop-05作为从kdc服务器,以csdm-hadoop-03作为客户端。一般不建议在服务器上再安装其他应用程序,比如hadoop。但为了节省资源本次安装在这三台机器均已安装hadoop相关软件。 +#### 创建操作用户 +创建操作系统hdfs、yarn、mapred用户,并使其归属于hadoop用户组: +adduser hdfs -g Hadoop +adduser yarn -g Hadoop +adduser mapred -g Hadoop +#### 配置hosts文件 +为各台机器修改/etc/hosts文件,将真实ip与主机名对应配置,服务端与客户端均需配置,形如:(不能存在127.0.0.1的配置,否则hadoop进行kerberos验证时将会出错) +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image072.png) + +#### 关闭防火墙 +执行以下命令关闭防火墙: +service iptables stop +出现以下界面表示关闭成功 +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image073.png) + +#### 注册服务与端口的对应 +在/etc/service文件最后增加以下信息,以便后续使用: + krb5_prop 754/tcp # Kerberos slave propagation + +### 安装配置Kerberos +#### 安装rpm包 + 以root用户登录并创建目录存放安装包: +mkdir /var/kerberos + 上传安装包文件到创建的目录,包括krb5-libs-1.10.3-10.el6_4.6.x86_64.rpm、krb5-server-1.10.3-10.el6_4.6.x86_64.rpm(客户端可不安装)、krb5-workstation-1.10.3-10.el6_4.6.x86_64.rpm + 执行安装命令: +rpm -ivh krb5-libs-1.10.3-10.el6_4.6.x86_64.rpm +rpm -ivh krb5-server-1.10.3-10.el6_4.6.x86_64.rpm【客户端可不安装】 +rpm -ivh krb5-workstation-1.10.3-10.el6_4.6.x86_64.rpm + 查看上述包是否已安装成功: +rpm –qa krb5* + 若出现以下情况则代表安装成功。 +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image074.jpg) + +#### 配置主KDC服务器 +##### 设置全局环境变量 +需要以root身份登录系统在/etc/profile末尾增加配置文件的全局环境变量: +export KRB5_CONFIG=/etc/krb5.conf +export KRB5_KDC_PROFILE=/var/kerberos/krb5kdc/kdc.conf + +保存后并 执行source /etc/profile 使之生效。 + +##### 配置krb5.conf +执行vi编辑/etc/krb5.conf,内容如下: + +[libdefaults] + default_realm = ERICSSON.COM + dns_lookup_realm = false + dns_lookup_kdc = false + ticket_lifetime = 24h + renew_lifetime = 7d + forwardable = true + +[realms] + ERICSSON.COM = { + kdc = csdm-hadoop-04 +kdc = csdm-hadoop-05 + admin_server =csdm-hadoop-04 + } + +[domain_realm] + .ericsson.com = ERICSSON.COM + ericsson.com = ERICSSON.COM + + +##### 配置kdc.conf +执行vi编辑/var/kerberos/krb5kdc/kdc.conf,内容如下: + [kdcdefaults] +Kdc_ports=750,88 + +[realms] + ERICSSON.COM ={ + kadmind_port = 749 + max_life=10h 0m 0s + max_renewable_life=7d 0h 0m 0s + database_name= /var/kerberos/krb5kdc/principal + admin_keytab=/var/kerberos /krb5kdc/kadm5.keytab + acl_file=/var/kerberos /krb5kdc/kadm5.acl + key_stash_file=/var/kerberos /krb5kdc/.k5.ERICSSON.COM + } +[logging] + default = FILE:/var/log/krb5libs.log + kdc = FILE:/var/log/krb5kdc.log + admin_server = FILE:/var/log/kadmind.log + +集群机器如果开启selinux,请在机器上执行restorecon -R -v /etc/krb5.conf +##### 生成数据库 +在主KDC服务器上执行以下命令创建数据库,在执行的过程中会提示输入密码和确认密码,两次输入相同的密码即可: +kdb5_util create -r ericsson.com –s + +等待片刻后在提示输入密码界面输入密码后会出现以下界面: +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image075.png) + +##### 创建管理用户 +运行管理入口命令: +kadmin.local +在提示符下执行以下命令 +addprinc kadmin/admin@ERICSSON.COM +addprinc kadmin/changepw@ERICSSON.COM +会提示输入密码,输入两次一样的密码后会提示成功创建。 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image076.png) +将主体添加至密钥文件中 + ktadd -k /var/kerberos/krb5kdc/kadm5.keytab kadmin/admin +ktadd -k /var/kerberos/krb5kdc/kadm5.keytab kadmin/changepw + +##### 启动krb5kdc 和kadmind服务 +执行以下命令启动krb5kdc和kadmind服务: +krb5kdc start +kadmind +出现以下界面表示启动成功 +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image077.png) + +#### 配置从KDC服务器 +##### 为从kdc服务器创建创建授权票证 +每一个kdc服务器都需要一个host票证,用于在迁移数据库数据市在各kdc服务器之间进行交互验证。注意,创建host票据需要在主kdc服务器上执行而不是在从kdc服务器。在csdm-hadoop-04上执行以下命令创建票证: + +kadmin +addprinc –randkey host/csdm-hadoop-04@ERICSSON.COM +addprinc –randkey host/csdm-hadoop-05@ERICSSON.COM +ktadd host/csdm-hadoop-05@ERICSSON.COM + +##### 设置从kdc服务器的配置文件 +将主kdc服务器中的配置文件(kdc.conf、 krb5.conf、 .k5.ERICSSON.COM、 kadm5.acl)复制到从kdc服务器上相应的目录中;在从kdc服务器的/var/Kerberos/krb5kdc的目录下创建kpropd.acl文件并增加以下信息: + +host/csdm-hadoop-04@ERICSSON.COM +host/csdm-hadoop-05@ERICSSON.COM + +#### 复制数据库数据到KDC从服务器 + 在主服务器上创建数据库的dump文件 +kdb5_util dump /var/kerberos/krb5kdc/slave_datatrans + 在从服务器上执行数据迁移 +kprop -f /var/Kerberos/krb5kdc/slave_datatrans csdm-hadoop-05 + +定时将主KDC服务器上的数据库数据,更新到从KDC服务器上 +由于KDC不提供数据库数据的同步服务功能,因此需要使用脚本或者手工将主KDC服务器上的数据同步到从KDC服务器上,可以参考以下脚本,并配置到定时器中 +#!/bin/sh + kdclist = "kerberos2.example.com kerberos3.example.com" + kdb5_util dump /var/kerberos/krb5kdc/slave_datatrans + for kdc in $kdclist do + kprop -f /var/kerberos/krb5kdc/slave_datatrans $kdc + +#### 启动从服务器的krb5kdc程序 +在从服务器上启动命令执行启动: + krb5kdc +#### 配置自启动 +在/etc/inittab中增加以下信息可使进程随系统自启动: +/etc/init.d/krb5kdc start +Kadmind + +#### 客户端配置 +下面以csdm-hadoop-03这台机器作为客户端说明相关配置 +1、在csdm-hadoop-03上安装客户端软件 +rpm -ivh krb5-libs-1.10.3-10.el6_4.6.x86_64.rpm +rpm -ivh krb5-workstation-1.10.3-10.el6_4.6.x86_64.rpm +2、在主KDC服务器csdm-hadoop-04上,把/etc/krb5.conf复制到csdm-hadoop-03本地对应目录 +3、在客户端csdm-hadoop-03上启动命令执行启动: + krb5kdc +此时即可在客户端csdm-hadoop-03上连接KDC服务器 + +4、生成可访问csdm-hadoop-03机器应用程序的验证 +在主KDC服务器csdm-hadoop-04,生成csdm-hadoop-03的principals和keytab, +为客户端csdm-hadoop-03添加principals(可以为host或者所要进行验证的机器用户) +addprinc –randkey host/csdm-hadoop-03@ERICSSON.COM + 为客户端csdm-hadoop-03生成keytab +Ktadd –k /var/kerberos/krb5kdc/keytab/host.keytab host/csdm-hadoop-03@ERICSSON.COM +把csdm-hadoop-04上生成的keytab复制到csdm-hadoop-03机器上 + + +### 测试服务器 +#### 服务器端测试客户端连接 + 运行kinit admin/admin,显示提示输入密码则代表配置成功: +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image078.png) +#### 远程客户机连接测试 + 在客户机运行kinit admin/admin 连接服务端,显示提示输入密码则代表配置成功: +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image079.png) + +### Hadoop集成kerberos配置 +#### 4.1 kerberos配置 +Hadoop官方网站建议的操作系统用户及权限如下,下面我们按照这三个用户的权限进行配置,要求使用下面三种用户分别具有各自启动相应进程的权限。 +User:Group Daemons +hdfs:hadoop NameNode, Secondary NameNode, JournalNode, DataNode +yarn:hadoop ResourceManager, NodeManager +mapred:hadoop MapReduce,JobHistory Server + +##### 4.1.1 为所有机器的用户生成principal +从主KDC服务器csdm-hadoop-04上,把/etc/krb5.conf复制到csdm-hadoop-03本地对应目录, +在主KDC服务器上为hadoop集群中每台机器的用户创建principal,下面以csdm-hadoop-03这台机器为例,运行管理入口命令: +kadmin.local +在提示符下执行以下命令: +addprinc -randkey hdfs/csdm-hadoop-03@ERICSSON.COM +addprinc -randkey host/csdm-hadoop-03@ERICSSON.COM + +addprinc -randkey yarn/csdm-hadoop-03@ERICSSON.COM +addprinc -randkey host/csdm-hadoop-03@ERICSSON.COM + +addprinc -randkey mapred/csdm-hadoop-03@ERICSSON.COM +addprinc -randkey host/csdm-hadoop-03@ERICSSON.COM + +注: + 集群中的每台机器所用到的用户都需执行上面的命令生成principal + 每个用户必须执行addprinc -randkey host/XX@XX的命令,这个命令生成的是基于 Kerberos 的应用程序(例如 klist 和 kprop)和服务(例如 ftp 和 telnet)使用的主体。此主体称为 host 主体或服务主体。 + +##### 4.1.2 生成keytab文件 +完成5.1.1后在主KDC服务器上为所有principal生成keytab文件,运行管理入口命令: +kadmin.local +在提示符下执行以下命令: +xst -norandkey -k /var/kerberos/krb5kdc/keytab/hdfs.keytab +hdfs/csdm-hadoop-03@ERICSSON.COM host/csdm-hadoop-03@ERICSSON.COM +xst -norandkey -k /var/kerberos/krb5kdc/keytab/mapred.keytab +mapred/csdm-hadoop-03@ ERICSSON.COM host/csdm-hadoop-03@ERICSSON.COM +xst -norandkey -k /var/kerberos/krb5kdc/keytab/yarn.keytab +yarn/csdm-hadoop-03@ERICSSON.COM host/csdm-hadoop-03@ERICSSON.COM + +生成授权文件后,使用以下命令检查生成的keytab是否可用: +kinit -k -t +/var/kerberos/krb5kdc/keytab/hdfs.keytab hdfs/csdm-hadoop-03@ERICSSON.COM +kinit -k -t +/var/kerberos/krb5kdc/keytab/mapred.keytab mapred/csdm-hadoop-03@ERICSSON.COM +kinit -k -t +/var/kerberos/krb5kdc/keytab/yarn.keytab yarn/csdm-hadoop-03@ERICSSON.COM + +检查没问题后,把生成的keytab文件分发到整个集群中的所有机器。 + +#### 修改HADOOP配置文件 +##### 4.2.1 Jsvc安装配置 +Datanode的安全机制需要以root用户身份用jsvc来启动,因此首先需要检查是否安装是jsvc如果没有,按以下步骤进行安装: +1、 下载commons-daemon-1.0.15-src.tar.gz 包并上传至自定义的目录(本操作目录为/home/hadoop) +2、 解压缩后 +以root用户登录进入目录/home/Hadoop 执行: +tar –xvf commons-daemon-1.0.15-bin.tar.gz +解压完成后进入 +/home/Hadoop /commons-daemon-1.0.15-src/src/native/unix +执行命令:configure +执行命令:make +编译完成后,会在/home/hadoop/commons-daemon-1.0.15-src/src/native/unix目录下生成jsvc可执行文件,如下图 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image080.png) + +在该目录下执行file jsvc如果出现下图所示,则jsvc安装成功 +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image081.png) + + 这里,我们把该执行文件复制到$HADOOP_HOME/bin以便后续的配置 +执行命令:cp /home/hadoop/commons-daemon-1.0.15-src/src/native/unix/jsvc +/home/hadoop/hadoop/bin +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image082.png) + +##### 4.2.2 hadoop-env.sh配置 +找到以下两项配置,并修改 +export HADOOP_SECURE_DN_USER=hdfs(配置为要执行datanode的用户,这里为hdfs) +export JSVC_HOME=/home/hadoop/hadoop/bin(配置为jsvc所在的目录) +##### 4.2.3 core-site.xml +在集群中所有节点的core-site.xml文件中添加下面的配置 + +```xml + + + hadoop.security.authorization + true + + + hadoop.security.authentication + kerberos + + + hadoop.rpc.protection + authentication + + + hadoop.security.auth_to_local + DEFAULT + +``` + +##### 4.2.4 hdfs-site.xml +在集群中所有节点的hdfs-site.xml文件中添加下面的配置,下面配置以节点csdm-hadoop-04为例: + + + dfs.block.access.token.enable + true + + + + dfs.encrypt.data.transfer + true + + + dfs.https.address + csdm-hadoop-04:50470 + + + dfs.https.port + 50470 + + + dfs.namenode.keytab.file + /var/kerberos/krb5kdc/keytab/hdfs.keytab + + + + dfs.namenode.kerberos.principal + hdfs/_HOST@ERICSSON.COM + + + dfs.namenode.kerberos.https.principal + host/_HOST@ERICSSON.COM + + + + + dfs.secondary.https.address + csdm-hadoop-04:50495 + + + dfs.secondary.https.port + 50495 + + + dfs.secondary.namenode.keytab.file + /var/kerberos/krb5kdc/keytab/hdfs.keytab + + + dfs.secondary.namenode.kerberos.principal + hdfs/_HOST@ERICSSON.COM + + + dfs.secondary.namenode.kerberos.https.principal + host/_HOST@ERICSSON.COM + + + + + dfs.datanode.data.dir.perm + 700 + + + dfs.datanode.address + 0.0.0.0:1004 + + + dfs.datanode.http.address + 0.0.0.0:1006 + + + dfs.datanode.keytab.file + /var/kerberos/krb5kdc/keytab/hdfs.keytab + + + dfs.datanode.kerberos.principal + hdfs/_HOST@ERICSSON.COM + + + dfs.datanode.kerberos.https.principal + host/_HOST@ERICSSON.COM + + + + + dfs.web.authentication.kerberos.principal + hdfs/_HOST@ERICSSON.COM + + + dfs.web.authentication.kerberos.keytab + /var/kerberos/krb5kdc/keytab/hdfs.keytab + + The Kerberos keytab file with the credentials for the + HTTP Kerberos principal used by Hadoop-Auth in the HTTP endpoint. + + + +配置中有几点要注意的 + . dfs.datanode.address表示data transceiver RPC server所绑定的hostname或IP地址,如果开启security,端口号必须小于1024(privileged port),否则的话启动datanode时候会报“Cannot start secure cluster without privileged resources”错误 + . principal中的instance部分可以使用'_HOST'标记,系统会自动替换它为全称域名 + . 如果开启了security, hadoop会对hdfs block data做permission check,方式用户的代码不是调用hdfs api而是直接本地读block data,这样就绕过了kerberos和文件权限验证,管理员可以通过设置dfs.datanode.data.dir.perm来修改datanode文件权限,这里我们设置为700 + + +配置完成后,修改hdfs.keytab所有者为hdfs +chown -R hdfs:hadoop /var/kerberos/krb5kdc/keytab/hdfs.keytab +chmod 700 /var/kerberos/krb5kdc/keytab/hdfs.keytab + +同时保证以下表格中各个目录的对于hdfs用户的权限 + +Filesystem Path User:Group Permissions +local dfs.namenode.name.dir hdfs:hadoop drwx------ +local dfs.datanode.data.dir hdfs:hadoop drwx------ +local $HADOOP_LOG_DIR hdfs:hadoop drwxrwxr-x +Hdfs / hdfs:hadoop drwxr-xr-x +Hdfs /tmp hdfs:hadoop drwxrwxrwxt +Hdfs /user hdfs:hadoop drwxr-xr-x + +###### 1、测试namenode进程启动是否正常 +切换到hdfs用户,首先执行klist命令,查看当前是否获取了ticket,经测试,如果已经获取了ticket那么启动namenode进程的时候会报以下错误 +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image083.png) +使用kdestroy销毁获取的ticket +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image084.png) + +切换到hdfs用户,启动namenode进程(已经执行过HDFS格式化的操作) +执行命令:hadoop namenode +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image085.png) +如果配置正常,应该会看到以下的日志信息输出 +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image086.png) + +验证namenode是否启动正常 + 可打开网页 +http://XX:50070/dfshealth.html#tab-overview验证 + hadoop fs -ls / +注:如果在你的凭据缓存中没有有效的kerberos ticket,执行hadoop fs –ls /将会失败。 +可以使用klist来查看是否有有有效的ticket。 +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image087.png) +如果为空,使用kinit来获取ticket.命令如下 +kinit -k -t /var/kerberos/krb5kdc/keytab/hdfs.keytab hdfs/csdm-hadoop-03@ERICSSON.COM + +###### 2、测试datanode启动是否正常 +切换到root用户, +执行命令:hadoop-daemon.sh start datanode +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image088.png) +如果启动正常,能在日志文件看到以下日志内容 +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image089.png) +在日志目录,启动datanode进程会有以下几个日志文件,其中jsvc.err记录了jsvc的错误信息 +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image090.png) + +启动datanode进程,只能使用root用户,如果使用其他用户启动,只会报以下错误 +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image091.png) +##### 4.2.5 mapred-site.xml +在mapred-site.xml中添加 + + + mapreduce.jobtracker.kerberos.principal + mapred/_HOST@ERICSSON.COM + + + mapreduce.jobtracker.kerberos.https.principal + host/_HOST@ERICSSON.COM + + + mapreduce.jobtracker.keytab.file + /var/kerberos/krb5kdc/keytab/mapred.keytab + + + + + mapreduce.tasktracker.kerberos.principal + mapred/_HOST@ERICSSON.COM + + + mapreduce.tasktracker.kerberos.https.principal + host/_HOST@ERICSSON.COM + + + mapreduce.tasktracker.keytab.file + /var/kerberos/krb5kdc/keytab/mapred.keytab + + + + + + + 10020 + + + + mapreduce.jobhistory.keytab + /var/kerberos/krb5kdc/keytab/mapred.keytab + + + mapreduce.jobhistory.principal + mapred/_HOST@ERICSSON.COM + + +将mapred.keytab文件赋权给mapred用户 ,执行以下命令: +chown -R mapred:hadoop /var/kerberos/krb5kdc/keytab/mapred.keytab +chmod 700 /var/kerberos/krb5kdc/keytab/mapred.keytab +确保以下表格中各个路径的执行权限 +Filesystem Path User:Group Permissions +hdfs mapreduce.jobhistory.intermediate-done-dir mapred:hadoop drwxrwxrwxt +hdfs mapreduce.jobhistory.done-dir mapred:hadoop drwxr-x--- + +测试historyserver 进程 +执行命令:mr-jobhistory-daemon.sh start historyserver +配置正常,则会看到以下日志内容 +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image092.png) + +##### 4.2.6 yarn-site.xml +在yarn-site.xml追加以下内容: + + + yarn.resourcemanager.keytab + /var/kerberos/krb5kdc/keytab/yarn.keytab + + + yarn.resourcemanager.principal + yarn/_HOST@ERICSSON.COM + + + + yarn.nodemanager.keytab + /var/kerberos/krb5kdc/keytab/yarn.keytab + + + yarn.nodemanager.principal + yarn/_HOST@ERICSSON.COM + + + yarn.nodemanager.container-executor.class + org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor + + + yarn.nodemanager.linux-container-executor.group + hadoop + + + + yarn.nodemanager.linux-container-executor.path + /home/hadoop/hadoop/bin/container-executor + + + +YARN提供了两种Container启动实现,DefaultContainerExecutor以及LinuxContainerExecutor,在上面的yarn-site.xml里配置了yarn.nodemanager.container-executor.class的启动方式为LinuxContainerExecutor,那么就需要编译安装LinuxContainerExecutor,按如下操作执行:在hadoop的home目录(这里是/home/Hadoop/hadoop)的 /etc/hadoop/目录下创建 container-executor.cfg 文件,内容如下: + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image093.png) + + 设置该文件权限: +$ chown root:hadoop container-executor.cfg +$ chmod 400 container-executor.cfg +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image094.png) +注意: +• container-executor.cfg 文件读写权限需设置为 400,所有者为 root:hadoop。 +并且该文件所在的父目录所有者必须为root用户,并对该文件所在的各个父目录赋以下权限,例如:chmod 750 /home/hadoop/ +• yarn.nodemanager.linux-container-executor.group 要同时配置在 yarn-site.xml 和 container-executor.cfg,且其值需要为运行 NodeManager 的用户所在的组,这里为 hadoop。 +• banned.users 不能为空,默认值为 hfds,yarn,mapred,bin +• min.user.id 默认值为 1000,在centos系统中,需要设置为小于500的值 +• 确保 yarn.nodemanager.local-dirs 和 yarn.nodemanager.log-dirs 对应的目录权限为 755 。 +设置 $HADOOP_HOME/bin/container-executor 读写权限为 6050 如下: +$ chown root:hadoop $HADOOP_HOME/bin/container-executor +$ chmod 6050 $HADOOP_HOME/bin/container-executor + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image095.png) +测试是否配置正确: +$ /home/hadoop/hadoop/bin/container-executor –checksetup +出现以下信息,则表示配置正确,如果出错,请检查各个目录的权限及container-executor.cfg文件是否配置正确 +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image096.png) + +修改yarn.keytab权限 +chown -R yarn:hadoop /var/kerberos/krb5kdc/keytab/ yarn.keytab +chmod 700 /var/kerberos/krb5kdc/keytab/yarn.keytab + +确保以下表格各目录的权限 +Filesystem Path User:Group Permissions +hdfs yarn.nodemanager.remote-app-log-dir yarn:hadoop drwxrwxrwxt +local $YARN_LOG_DIR yarn:hadoop drwxrwxr-x +local yarn.nodemanager.local-dirs yarn:hadoop drwxr-xr-x +local yarn.nodemanager.log-dirs yarn:hadoop drwxr-xr-x +local container-executor root:hadoop --Sr-s--- +local conf/container-executor.cfg root:hadoop r-------- + + + 测试 nodemanager 进程 +执行命令:yarn nodemanager +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image097.png) +如果配置正常,会输出以下日志 +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image098.png) + + + 测试resourcemanager进程 +执行命令:yarn resourcemanager +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image099.png) +如果配置正常,会输出以下日志 +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image100.png) + +### 说明 +注:本部署文档部署环境默认机器未配置DNS,如果配置有DNS的机器上创建实体则格式为:用户名/hostname.DNS@领域名。例如:hdfs/csdm-hadoop-04.ericsson.com@ERICSSON.COM + + + +火狐配置使用SPNNEGO +1、 在地址栏输入about:config打开配置界面 +2、 network.negotiate-auth.delegation-uris +network.negotiate-auth.trusted-uris +找到以上两个选项,把你要访问的页面地址加进去 + +LINUX下配置 +1、 在/etc/hosts下加入要访问的地址对应关系(包括客户端和服务器) +2、 在KDC服务器上生成浏览器所在客户端的principal:格式如下:HTTP/hd2@ERICSSON.COM,并把该principal生成到keytab中,在KEYTAB中应该可以看到如下的信息 +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image101.png) + +## Ubuntu 16.04安装DB2 Express C v11.1 + +```shell +jiangxin@db01:~$ su – root #切换到root用户 +密码: +root@db01:~# uname -a #查看内核和操作系统信息 +Linux db01 4.4.0-66-generic #87-Ubuntu SMP Fri Mar 3 15:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux +root@db01:~# head -n 1 /etc/issue #查看Linux发行版信息 +Ubuntu 16.04.1 LTS \n \l +root@db01:~# cd /usr/local +root@db01:/usr/local# ls +bin db2 etc games include java lib man sbin scala share src +root@db01:/usr/local# mkdir db2 +root@db01:/usr/local# cd db2/ +#上传安装包 +root@db01:/usr/local/db2# ll +总用量 675924 +drwxrwxrwx 2 root root 4096 3月 17 22:08 ./ +drwxr-xr-x 20 root root 4096 3月 17 22:07 ../ +-rw-rw-r-- 1 root root 692132552 3月 17 22:08 v11.1_linuxx64_expc.tar.gz +root@db01:/usr/local/db2# tar -zxvf v11.1_linuxx64_expc.tar.gz +root@db01:/usr/local/db2# cd expc/ +root@db01:/usr/local/db2/expc# ls +db2 db2ckupgrade db2_deinstall db2_install db2ls db2prereqcheck db2setup +root@db01:/usr/local/db2/expc# ./db2prereqcheck #检查是否满足安装条件 + +========================================================================== + +正在检查操作系统 "Linux" V"11.1.1.1" 的 DB2 安装的先决条件。 + +正在验证 "Linux 分发 " ... +要求的最低 "UBUNTU" 版本:"14.04" +实际版本:"16.04" +达到要求。 + +正在验证 "内核级别 " ... +要求的最低操作系统内核级别:"2.6.16"。 +实际操作系统内核级别:"4.4.0"。 +达到要求。 + +正在验证 "C++ 库版本 " ... +要求的最低 C++ 库版本:"libstdc++.so.6" +标准 C++ 库位于以下目录中:"/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21"。 +实际 C++ 库:"CXXABI_1.3.1" +达到要求。 + + +正在验证 ""libstdc++.so.6" 的 32 位版本 " ... +在以下目录中找到了 64 位 "/usr/lib/x86_64-linux-gnu/libstdc++.so.6":"/usr/lib/x86_64-linux-gnu"。 +在以下目录中找到了 32 位 "/usr/lib32/libstdc++.so.6":"/usr/lib32"。 +达到要求。 + +正在验证 "libaio.so 版本 " ... +DBT3553I db2prereqcheck 实用程序已成功装入 libaio.so.1 文件。 +达到要求。 + +正在验证 "Unable to find the string resource 30186" ... +Unable to find the string resource 33610 +达到要求。 + +正在验证 "/lib/i386-linux-gnu/libpam.so*" ... +达到要求。 +DBT3533I db2prereqcheck 实用程序已确认所有安装先决条件均已满足。 +#限于篇幅,此处省略部分内容 + +DBT3533I db2prereqcheck 实用程序已确认所有安装先决条件均已满足。 +DBT3555E db2prereqcheck 实用程序已确定,以下版本不支持当前平台:"9.8.0.4"。 +DBT3555E db2prereqcheck 实用程序已确定,以下版本不支持当前平台:"9.8.0.3"。 +DBT3555E db2prereqcheck 实用程序已确定,以下版本不支持当前平台:"9.8.0.2"。 + +#如果之前的检查中存在某些不满足项,可以通过下面的命令安装对应库文件 +root@db01:/usr/local/db2/expc# apt-get install lib32stdc++6 +root@db01:/usr/local/db2/expc# apt-get install libaio1 +root@db01:/usr/local/db2/expc# apt-get install libpam0g:i386 + +root@db01:/usr/local/db2/expc# ./db2_install #开始正式安装 +阅读 CD 上 db2/license 目录中的许可协议文件。 + +*********************************************************** +要接受这些条款,请输入 "yes"。否则,输入 "no" 以取消安装过程。[yes/no] +yes + + +产品的缺省安装目录 - /opt/ibm/db2/V11.1 + +*********************************************************** +是否安装至缺省目录 (/opt/ibm/db2/V11.1)?[yes/no] +yes +正在初始化 DB2 安装。 + + 要执行的任务总数为:36 +要执行的所有任务的总估计时间为:1591 秒 + +任务 #1 启动 +描述:正在检查许可协议的接受情况 +估计时间 1 秒 +任务 #1 结束 + +任务 #2 启动 +描述:具备 root 用户特权的情况下进行安装时的基本客户机支持 +估计时间 3 秒 +任务 #2 结束 + +任务 #3 启动 +描述:产品消息 - 英语 +估计时间 14 秒 +任务 #3 结束 + +任务 #4 启动 +描述:基本客户机支持 +估计时间 352 秒 +任务 #4 结束 + +任务 #5 启动 +描述:Java 运行时支持 +估计时间 188 秒 +任务 #5 结束 + +任务 #6 启动 +描述:Java 帮助 (HTML) - 英语 +估计时间 7 秒 +任务 #6 结束 + +任务 #7 启动 +描述:具备 root 用户特权的情况下进行安装时的基本服务器支持 +估计时间 8 秒 +任务 #7 结束 + +任务 #8 启动 +描述:全局安全工具箱 +估计时间 64 秒 +任务 #8 结束 + +任务 #9 启动 +描述:Java 支持 +估计时间 13 秒 +任务 #9 结束 + +任务 #10 启动 +描述:SQL 过程 +估计时间 3 秒 +任务 #10 结束 + +任务 #11 启动 +描述:ICU 实用程序 +估计时间 34 秒 +任务 #11 结束 + +任务 #12 启动 +描述:Java 公共文件 +估计时间 18 秒 +任务 #12 结束 + +任务 #13 启动 +描述:基本服务器支持 +估计时间 577 秒 +任务 #13 结束 + +任务 #14 启动 +描述:DB2 数据源支持 +估计时间 6 秒 +任务 #14 结束 + +任务 #15 启动 +描述:Spatial Extender 服务器支持 +估计时间 18 秒 +任务 #15 结束 + +任务 #16 启动 +描述:DB2 LDAP 支持 +估计时间 4 秒 +任务 #16 结束 + +任务 #17 启动 +描述:“DB2 实例安装”向导 +估计时间 25 秒 +任务 #17 结束 + +任务 #18 启动 +描述:集成动漫复制支持 +估计时间 3 秒 +任务 #18 结束 + +任务 #19 启动 +描述:Spatial Extender 客户机 +估计时间 3 秒 +任务 #19 结束 + +任务 #20 启动 +描述:通信支持 - TCP/IP +估计时间 3 秒 +任务 #20 结束 + +任务 #21 启动 +描述:基本应用程序开发工具 +估计时间 35 秒 +任务 #21 结束 + +任务 #22 启动 +描述:DB2 更新服务 +估计时间 4 秒 +任务 #22 结束 + +任务 #23 启动 +描述:EnterpriseDB 代码 +估计时间 4 秒 +任务 #23 结束 + +任务 #24 启动 +描述:样本数据库源 +估计时间 4 秒 +任务 #24 结束 + +任务 #25 启动 +描述:DB2 Text Search +估计时间 123 秒 +任务 #25 结束 + +任务 #26 启动 +描述:命令行处理器加强版 +估计时间 6 秒 +任务 #26 结束 + +任务 #27 启动 +描述:第一步 +估计时间 3 秒 +任务 #27 结束 + +任务 #28 启动 +描述:DB2 Express-C 的产品特征符 +估计时间 3 秒 +任务 #28 结束 + +任务 #29 启动 +描述:正在设置 DB2 库路径 +估计时间 180 秒 +任务 #29 结束 + +任务 #30 启动 +描述:正在执行控制任务 +估计时间 20 秒 +任务 #30 结束 + +任务 #31 启动 +描述:正在更新全局注册表 +估计时间 20 秒 +任务 #31 结束 + +任务 #32 启动 +描述:正在启动 DB2 故障监视器 +估计时间 10 秒 +任务 #32 结束 + +任务 #33 启动 +描述:正在更新 db2ls 和 db2greg 链接 +估计时间 1 秒 +任务 #33 结束 + +任务 #34 启动 +描述:正在注册 DB2 许可证 +估计时间 5 秒 +任务 #34 结束 + +任务 #35 启动 +描述:正在设置缺省全局概要文件注册表变量 +估计时间 1 秒 +任务 #35 结束 + +任务 #36 启动 +描述:正在初始化实例列表 +估计时间 5 秒 +任务 #36 结束 + +任务 #37 启动 +描述:正在注册 DB2 更新服务 +估计时间 30 秒 +任务 #37 结束 + +任务 #38 启动 +描述:正在更新全局概要文件注册表 +估计时间 3 秒 +任务 #38 结束 + +已成功完成执行。 + +有关更多信息,请参阅 "/tmp/db2_install.log.5804" 上的 DB2 +安装日志。 + +#创建实例前先创建对应的用户和组 +root@db01:/usr/local/db2/expc# groupadd -g 2000 db2iadm1 +root@db01:/usr/local/db2/expc# groupadd -g 2001 db2fadm1 +root@db01:/usr/local/db2/expc# useradd -m -g db2iadm1 -d /home/db2inst1 db2inst1 +root@db01:/usr/local/db2/expc# useradd -m -g db2fadm1 -d /home/db2fenc1 db2fenc1 +root@db01:/usr/local/db2/expc# passwd db2inst1 +输入新的 UNIX 密码: +重新输入新的 UNIX 密码: +passwd:已成功更新密码 +root@db01:/usr/local/db2/expc# passwd db2fenc1 +输入新的 UNIX 密码: +重新输入新的 UNIX 密码: +passwd:已成功更新密码 + +#安装License +root@db01:/usr/local/db2/expc# cd /opt/ibm/db2/V11.1/adm/ +root@db01:/opt/ibm/db2/V11.1/adm# chmod -R 775 * +root@db01:/opt/ibm/db2/V11.1/adm# ./db2licm -a /usr/local/db2/expc/db2/license/db2expc_uw.lic + +LIC1402I License added successfully. + + +LIC1426I This product is now licensed for use as outlined in your License Agreement. USE OF THE PRODUCT CONSTITUTES ACCEPTANCE OF THE TERMS OF THE IBM LICENSE AGREEMENT, LOCATED IN THE FOLLOWING DIRECTORY: "/opt/ibm/db2/V11.1/license/zh_CN.utf8" + +# 创建实例 +root@db01:/opt/ibm/db2/V11.1/adm# cd /opt/ibm/db2/V11.1/instance/ +root@db01:/opt/ibm/db2/V11.1/instance# chmod -R 775 * +root@db01:/opt/ibm/db2/V11.1/instance# ./db2icrt -p 50000 -u db2fenc1 db2inst1 +DBI1446I The db2icrt command is running. + + +DB2 installation is being initialized. + + Total number of tasks to be performed: 4 +Total estimated time for all tasks to be performed: 309 second(s) + +Task #1 start +Description: Setting default global profile registry variables +Estimated time 1 second(s) +Task #1 end + +Task #2 start +Description: Initializing instance list +Estimated time 5 second(s) +Task #2 end + +Task #3 start +Description: Configuring DB2 instances +Estimated time 300 second(s) +Task #3 end + +Task #4 start +Description: Updating global profile registry +Estimated time 3 second(s) +Task #4 end + +The execution completed successfully. + +For more information see the DB2 installation log at "/tmp/db2icrt.log.28370". +DBI1070I Program db2icrt completed successfully. + + +#创建样本数据库 +root@db01:/opt/ibm/db2/V11.1/instance# +db2inst1@db01:~$ db2sampl + + Starting the DB2 instance... + Creating database "SAMPLE"... + Connecting to database "SAMPLE"... + Creating tables and data in schema "DB2INST1"... + Creating tables with XML columns and XML data in schema "DB2INST1"... + Stopping the DB2 instance... + + 'db2sampl' processing complete. + + +db2inst1@db01:~$ db2start +SQL1063N DB2START processing was successful. +db2inst1@db01:~$ db2 connect to sample + + Database Connection Information + + Database server = DB2/LINUXX8664 11.1.1.1 + SQL authorization ID = DB2INST1 + Local database alias = SAMPLE + +db2inst1@db01:~$ db2 "select * from staff" + +ID NAME DEPT JOB YEARS SALARY COMM +------ --------- ------ ----- ------ --------- --------- + 10 Sanders 20 Mgr 7 98357.50 - + 20 Pernal 20 Sales 8 78171.25 612.45 + 30 Marenghi 38 Mgr 5 77506.75 - + 40 O'Brien 38 Sales 6 78006.00 846.55 + 50 Hanes 15 Mgr 10 80659.80 - + 60 Quigley 38 Sales - 66808.30 650.25 + 70 Rothman 15 Sales 7 76502.83 1152.00 + 80 James 20 Clerk - 43504.60 128.20 + 90 Koonitz 42 Sales 6 38001.75 1386.70 + 100 Plotz 42 Mgr 7 78352.80 - + 110 Ngan 15 Clerk 5 42508.20 206.60 + 120 Naughton 38 Clerk - 42954.75 180.00 + 130 Yamaguchi 42 Clerk 6 40505.90 75.60 + 140 Fraye 51 Mgr 6 91150.00 - + 150 Williams 51 Sales 6 79456.50 637.65 + 160 Molinare 10 Mgr 7 82959.20 - + 170 Kermisch 15 Clerk 4 42258.50 110.10 + 180 Abrahams 38 Clerk 3 37009.75 236.50 + 190 Sneider 20 Clerk 8 34252.75 126.50 + 200 Scoutten 42 Clerk - 41508.60 84.20 + 210 Lu 10 Mgr 10 90010.00 - + 220 Smith 51 Sales 7 87654.50 992.80 + 230 Lundquist 51 Clerk 3 83369.80 189.65 + 240 Daniels 10 Mgr 5 79260.25 - + 250 Wheeler 51 Clerk 6 74460.00 513.30 + 260 Jones 10 Mgr 12 81234.00 - + 270 Lea 66 Mgr 9 88555.50 - + 280 Wilson 66 Sales 9 78674.50 811.50 + 290 Quill 84 Mgr 10 89818.00 - + 300 Davis 84 Sales 5 65454.50 806.10 + 310 Graham 66 Sales 13 71000.00 200.30 + 320 Gonzales 66 Sales 4 76858.20 844.00 + 330 Burke 66 Clerk 1 49988.00 55.50 + 340 Edwards 84 Sales 7 67844.00 1285.00 + 350 Gafney 84 Clerk 5 43030.50 188.00 + + 35 record(s) selected. + +#安装DAS。为了远程客户端能够用控制中心来控制数据库服务器,需要在数据库服务器上安装DAS,当然如果只是远程连接而不是远程管理,可以不用装 +db2inst1@db01:~$ exit +注销 +root@db01:/opt/ibm/db2/V11.1/instance# groupadd -g 2002 db2asgrp +root@db01:/opt/ibm/db2/V11.1/instance# useradd -m -g db2asgrp -d /home/db2as db2as +root@db01:/opt/ibm/db2/V11.1/instance# passwd db2as +输入新的 UNIX 密码: +重新输入新的 UNIX 密码: +passwd:已成功更新密码 + +root@db01:/opt/ibm/db2/V11.1/instance# ./dascrt -u db2as +DBI1070I Program dascrt completed successfully. + +root@db01:/opt/ibm/db2/V11.1/instance# su - db2as +db2as@db01:~$ db2admin start +SQL4409W The DB2 Administration Server is already active. +#确认db2inst1实例的服务名 +db2as@db01:~$ su - db2inst1 +密码: +db2inst1@db01:~$ db2 get dbm cfg|grep SVCENAME + TCP/IP Service name (SVCENAME) = 50000 + SSL service name (SSL_SVCENAME) = +#如果SVCENAME显示为空,则执行下面的语句更新 +db2inst1@db01:~$ db2 update dbm cfg using SVCENAME 50000 +DB20000I The UPDATE DATABASE MANAGER CONFIGURATION command completed +successfully. +#看一下License的情况,svcename在客户端连接时需要用到 +db2inst1@db01:~$ db2licm -l +Product name: "DB2 Express-C" +License type: "Unwarranted" +Expiry date: "Permanent" +Product identifier: "db2expc" +Version information: "11.1" +Max number of CPUs: "2" +Max amount of memory (GB): "16" +Enforcement policy: "Soft Stop" +``` + +## Ubunut安装/卸载Mysql(apg-get方式) + +### 安装 + +```shell +jiangxin@db01:~$ uname -a #查看内核和操作系统信息 +Linux db01 4.4.0-66-generic #87-Ubuntu SMP Fri Mar 3 15:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux +jiangxin@db01:~$ head -n 1 /etc/issue #查看Linux发行版信息 +Ubuntu 16.04.1 LTS \n \l +jiangxin@db01:~$ sudo netstat -tap | grep mysql #查看是否系统中已经安装mysql +jiangxin@db01:~$ sudo apt-get install mysql-server mysql-client libmysqlclient-dev +``` + +安装过程中会要求输入mysql的root账号密码,如下所示: + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image102.png) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image103.png) + +```shell +jiangxin@db01:~$ mysql -u root -p +Enter password: +Welcome to the MySQL monitor. Commands end with ; or \g. +Your MySQL connection id is 6 +Server version: 5.7.17-0ubuntu0.16.04.1 (Ubuntu) + +Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. + +Oracle is a registered trademark of Oracle Corporation and/or its +affiliates. Other names may be trademarks of their respective +owners. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| mysql | +| performance_schema | +| sys | ++--------------------+ +4 rows in set (0.00 sec) +``` + +MySQL安装后的目录结构如下(此结构只针对于使用apt-get install 在线安装情况): + +* 数据库存放目录: /var/lib/mysql/ +* 相关配置文件存放目录: /usr/share/mysql +* 相关命令存放目录: /usr/bin(mysqladmin mysqldump等命令) +* 启动脚步存放目录: /etc/rc.d/init.d/ + +### 卸载 + +```shell +jiangxin@db01:~$ ps aux | grep mysql +mysql 1942 3.5 14.8 1115880 150404 ? Ssl 10:45 0:00 /usr/sbin/mysqld +jiangxin 1980 0.0 0.0 15984 948 pts/0 S+ 10:45 0:00 grep --color=auto mysql +jiangxin@db01:~$ mysqladmin -u root -p shutdown +Enter password: +jiangxin@db01:~$ ps aux | grep mysql +jiangxin 1984 0.0 0.0 15984 964 pts/0 S+ 10:46 0:00 grep --color=auto mysql +jiangxin@db01:~$ sudo apt-get autoremove --purge mysql-* +... +jiangxin@db01:~$ dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P +... +jiangxin@db01:~$ su – root +root@db01:~# rm -rf /var/lib/mysql +root@db01:~# rm -rf /etc/mysql +``` + +### MySQL简单管理 + +```shell +#启动MySQL服务 +sudo service mysql start +#停止MySQL服务 +sudo service mysql stop +#修改 MySQL 的管理员密码 +sudo mysqladmin -u root password newpassword + +#正常情况下,mysql占用的3306端口只是在IP 127.0.0.1上监听,拒绝了其他IP的访问。取消本地监听限制需要修改 mysqld.cnf 文件 + +sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf +# 找到此内容并且注释 +bind-address = 127.0.0.1 +``` + +## Windows 10安装MySQL5.5 安装 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image177.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image178.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image179.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image180.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image181.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image182.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image183.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image184.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image185.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image186.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image187.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image188.jpg) + +## Ubuntu 16.04安装SQLLite3 + +```shell +jiangxin@db01:~$ sudo apt-get install sqlite3 +[sudo] jiangxin 的密码: +正在读取软件包列表... 完成 +正在分析软件包的依赖关系树 +正在读取状态信息... 完成 +建议安装: + sqlite3-doc +下列【新】软件包将被安装: + sqlite3 +升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 244 个软件包未被升级。 +需要下载 515 kB 的归档。 +解压缩后会消耗 1,938 kB 的额外空间。 +获取:1 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 sqlite3 amd64 3.11.0-1ubuntu1 [515 kB] +已下载 515 kB,耗时 0秒 (713 kB/s) +正在选中未选择的软件包 sqlite3。 +(正在读取数据库 ... 系统当前共安装有 213307 个文件和目录。) +正准备解包 .../sqlite3_3.11.0-1ubuntu1_amd64.deb ... +正在解包 sqlite3 (3.11.0-1ubuntu1) ... +正在处理用于 man-db (2.7.5-1) 的触发器 ... +正在设置 sqlite3 (3.11.0-1ubuntu1) ... +jiangxin@db01:~$ sudo apt-get install sqlite3-doc +正在读取软件包列表... 完成 +正在分析软件包的依赖关系树 +正在读取状态信息... 完成 +下列【新】软件包将被安装: + sqlite3-doc +升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 244 个软件包未被升级。 +需要下载 3,145 kB 的归档。 +解压缩后会消耗 13.4 MB 的额外空间。 +获取:1 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 sqlite3-doc all 3.11.0-1ubuntu1 [3,145 kB] +已下载 3,145 kB,耗时 8秒 (363 kB/s) +正在选中未选择的软件包 sqlite3-doc。 +(正在读取数据库 ... 系统当前共安装有 213313 个文件和目录。) +正准备解包 .../sqlite3-doc_3.11.0-1ubuntu1_all.deb ... +正在解包 sqlite3-doc (3.11.0-1ubuntu1) ... +正在处理用于 doc-base (0.10.7) 的触发器 ... +Processing 1 added doc-base file... +正在设置 sqlite3-doc (3.11.0-1ubuntu1) ... + +jiangxin@db01:~$ sqlite3 test.db +SQLite version 3.11.0 2016-02-15 17:29:24 +Enter ".help" for usage hints. +sqlite> create table mytable(id integer primary key, value text); +sqlite> insert into mytable(id, value) values(1, 'Micheal'); +sqlite> select * from mytable; +1|Micheal +sqlite> .help +.backup ?DB? FILE Backup DB (default "main") to FILE +.bail on|off Stop after hitting an error. Default OFF +.binary on|off Turn binary output on or off. Default OFF +.changes on|off Show number of rows changed by SQL +.clone NEWDB Clone data into NEWDB from the existing database +.databases List names and files of attached databases +.dbinfo ?DB? Show status information about the database +.dump ?TABLE? ... Dump the database in an SQL text format + If TABLE specified, only dump tables matching + LIKE pattern TABLE. +.echo on|off Turn command echo on or off +.eqp on|off Enable or disable automatic EXPLAIN QUERY PLAN +.exit Exit this program +.explain ?on|off|auto? Turn EXPLAIN output mode on or off or to automatic +.fullschema Show schema and the content of sqlite_stat tables +.headers on|off Turn display of headers on or off +.help Show this message +.import FILE TABLE Import data from FILE into TABLE +.indexes ?TABLE? Show names of all indexes + If TABLE specified, only show indexes for tables + matching LIKE pattern TABLE. +.limit ?LIMIT? ?VAL? Display or change the value of an SQLITE_LIMIT +.load FILE ?ENTRY? Load an extension library +.log FILE|off Turn logging on or off. FILE can be stderr/stdout +.mode MODE ?TABLE? Set output mode where MODE is one of: + ascii Columns/rows delimited by 0x1F and 0x1E + csv Comma-separated values + column Left-aligned columns. (See .width) + html HTML code + insert SQL insert statements for TABLE + line One value per line + list Values delimited by .separator strings + tabs Tab-separated values + tcl TCL list elements +.nullvalue STRING Use STRING in place of NULL values +.once FILENAME Output for the next SQL command only to FILENAME +.open ?FILENAME? Close existing database and reopen FILENAME +.output ?FILENAME? Send output to FILENAME or stdout +.print STRING... Print literal STRING +.prompt MAIN CONTINUE Replace the standard prompts +.quit Exit this program +.read FILENAME Execute SQL in FILENAME +.restore ?DB? FILE Restore content of DB (default "main") from FILE +.save FILE Write in-memory database into FILE +.scanstats on|off Turn sqlite3_stmt_scanstatus() metrics on or off +.schema ?TABLE? Show the CREATE statements + If TABLE specified, only show tables matching + LIKE pattern TABLE. +.separator COL ?ROW? Change the column separator and optionally the row + separator for both the output mode and .import +.shell CMD ARGS... Run CMD ARGS... in a system shell +.show Show the current values for various settings +.stats on|off Turn stats on or off +.system CMD ARGS... Run CMD ARGS... in a system shell +.tables ?TABLE? List names of tables + If TABLE specified, only list tables matching + LIKE pattern TABLE. +.timeout MS Try opening locked tables for MS milliseconds +.timer on|off Turn SQL timer on or off +.trace FILE|off Output each SQL statement as it is run +.vfsinfo ?AUX? Information about the top-level VFS +.vfslist List all available VFSes +.vfsname ?AUX? Print the name of the VFS stack +.width NUM1 NUM2 ... Set column widths for "column" mode + Negative values right-justify +sqlite> .quit +jiangxin@db01:~$\ +``` + +由于Sqlite本身不支持远程访问,如果需要在Windows上连接远程Linux上的Sqlite,需要在Linux上共享文件给Windows。 +共享方式见: +Ubuntu创建共享文件夹并支持Windows访问:http://jingyan.baidu.com/article/2fb0ba40a8283500f2ec5f35.html + + +在Windows上打开资源浏览器,在输入框输入\\192.168.1.150 +然后输入用户名、密码即可 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image104.png) + + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image105.png) + +将之前创建的test.db移到share/sqlite目录: + +jiangxin@db01:~$ mv test.db share/sqlite/ + +在Windows上用dbeaver连接Linux上的远程数据库 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image106.png) + +## 安装TeraData(SUSE LINUX Enterprise Server 11) + +### 下载、安装VMware-workstation: +VMware-workstation-full-12.5.5-5234757.exe + +### 下载、安装TDExpress +TDExpress14.10.03_Sles11_40GB.7z +http://downloads.teradata.com/download/database/teradata-express-for-vmware-player + +安装可以参考: +http://downloads.teradata.com/database/articles/teradata-express-14-0-for-vmware-user-guide + +### 网络设置 + +编辑-虚拟网络编辑器 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image107.png) + +SUSE静态配置IP成功上网: http://blog.csdn.net/seulww/article/details/17136555 +按照上面链接设置之后,发现虚拟机无法ping通网关,经查询是DNS配置没有生效。按照下述步骤处理: + +修改ip地址(建议通过GUI配置) +即时生效: ifconfig eth0 192.168.1.155 netmask 255.255.255.0 +启动生效:修改/etc/sysconfig/network/ifcfg-eth0 +修改default gateway(建议通过GUI配置) +即时生效:route add default gw 192.168.1.1 +启动生效:修改/etc/sysconfig/network/ifcfg-eth0 +修改dns(不知为何通过GUI配置没有生效) +修改/etc/resolv.conf +修改后可即时生效,启动同样有效(一下为修改的内容) + +search localdomain +nameserver 114.114.114.114 +nameserver 8.8.8.8 + +修改host name(建议通过GUI配置) +即时生效:hostname TDExpress +启动生效:修改/etc/HOSTNAME + +### 启动报错解决 +启动之后可以查看/var/log/boot.msg获取此次开机的报错日志。 + +问题1: +Error:cannot mount filesystem:Protocol error +Mounting HGFS shares: FAILED + +解决: + +在VM->Setting中的Option页面,设置Shared Folders,使之enable 就可以了,这个功能能把host上的目录mount到Guest上的/mnt/hgfs目录,实现共享访问。 + +问题2: + + ipmi start +Starting ipmi drivers: failed + 'ipmi start' exits with status 1 + +解决: +不影响功能,暂未解决。 + +### 使用DBeaver进行连接 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image108.png) + + + +## 安装Oracle +Database Application Development Hands On Labs: http://www.oracle.com/technetwork/database/enterprise-edition/databaseappdev-vm-161299.html + +### 配置网络 +[root@vbgeneric ~]# ifconfig + +enp0s3: flags=4163 mtu 1500 + inet 192.168.1.105 netmask 255.255.255.0 broadcast 192.168.1.255 + ether 08:00:27:0c:40:7f txqueuelen 1000 (Ethernet) + RX packets 2677 bytes 2476158 (2.3 MiB) + RX errors 0 dropped 0 overruns 0 frame 0 + TX packets 2645 bytes 323609 (316.0 KiB) + TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 + +lo: flags=73 mtu 65536 + inet 127.0.0.1 netmask 255.0.0.0 + loop txqueuelen 0 (Local Loopback) + RX packets 473 bytes 111334 (108.7 KiB) + RX errors 0 dropped 0 overruns 0 frame 0 + TX packets 473 bytes 111334 (108.7 KiB) + TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 + +virbr0: flags=4099 mtu 1500 + inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255 + ether 52:54:00:fc:2d:7f txqueuelen 0 (Ethernet) + RX packets 0 bytes 0 (0.0 B) + RX errors 0 dropped 0 overruns 0 frame 0 + TX packets 0 bytes 0 (0.0 B) + TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 + +[root@vbgeneric ~]# hostname +vbgeneric + + +[root@vbgeneric ~]# vim /etc/sysconfig/network-scripts/ifcfg-enp0s3 + +TYPE="Ethernet" +BOOTPROTO="static" +NAME="enp0s3" +UUID="05c05f77-20d5-4842-808d-366b3dc466d4" +DEVICE="enp0s3" +ONBOOT="yes" +IPADDR=192.168.1.145 +NETMASK=255.255.255.0 + +[root@vbgeneric ~]# vim /etc/sysconfig/network + +NETWORKING=yes +HOSTNAME=vbgeneric.localdomain +GATEWAY=192.168.1.1 + +[root@vbgeneric ~]# vim /etc/resolv.conf + +nameserver 114.114.114.114 +nameserver 8.8.8.8 + + +[root@vbgeneric ~]# service network restart +Restarting network (via systemctl): [ OK ] + +### 账号信息 +root/oracle + + + +[root@vbgeneric ~]# cat /etc/oracle-release +Oracle Linux Server release 7.3 +[root@vbgeneric ~]# su - oracle +Last login: Sat Sep 2 08:30:31 EDT 2017 on pts/1 +[oracle@vbgeneric ~]$ sqlplus / as sysdba + +SQL*Plus: Release 12.2.0.1.0 Production on Sat Sep 2 08:39:20 2017 + +Copyright (c) 1982, 2016, Oracle. All rights reserved. + +ERROR: +ORA-01017: invalid username/password; logon denied + + +Enter user-name: sys as sysdba +Enter password: + +Connected to: +Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production + +SQL> + +## Windows 10 安装 Oracle Database 11.2g +win64_11gR2_database_1of2.zip、win64_11gR2_database_2of2.zip两个解压到同一个目录 +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image109.png) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image110.png) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image111.png) +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image112.png) +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image113.png) + +Oracle基目录:$ORACLE_BASE +软件位置:$ORACLE_HOME +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image114.png) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image115.png) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image116.png) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image117.png) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image118.png) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image119.png) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image120.png) +## Windows 10 安装 Oracle12c + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image121.jpg) +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image122.jpg) +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image123.jpg) + + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image124.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image125.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image126.jpg) +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image127.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image128.jpg) +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image129.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image130.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image131.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image132.jpg) + + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image133.jpg) + +## 如何利用Oracle VM Templates 在几分钟内部署Oracle Real Application Clusters (RAC) + +本文未经授权,禁止一切形式的转载。如果对本文有任何疑问可以通过以下方式和我交流: + +邮箱: jiangxinnju@163.com +博客园地址: http://www.cnblogs.com/jiangxinnju +GitHub地址: https://github.com/jiangxincode +知乎地址: https://www.zhihu.com/people/jiangxinnju + +### 阅读前准备 +阅读本教程前首先需要访问如下地址: +http://www.oracle.com/technetwork/server-storage/vm/downloads/hol-oraclevm-2368799.html + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image134.png) +下载红框标识的ovmm10471.oow.local.ova和ovs10471.oow.local.ova文件,并仔细阅读绿框标识的教程(OOW2015_HOL10471_RAC_20151116,以下简称OOW2015_HOL10471_RAC),本文是针对该教程的补充说明。 + +另外阅读OOW2015_HOL10471_RAC和本文需要对Oracle VM VirtualBox和Oracle VM有基本的了解,可以访问如下地址: +Oracle VM VirtualBox: +http://www.oracle.com/technetwork/server-storage/virtualbox/overview/index.html +Oracle VM: +http://www.oracle.com/technetwork/server-storage/vm/overview/index.html + +### 1 INTRODUCTION +#### 1.1 LAB OBJECTIVE +#### 1.2 PREPARATION (HAS BEEN DONE BEFORE THE LAB) +要想满足和OOW2015_HOL10471_RAC中所述的前提条件,只需要在满足硬件要求的笔记本或者台式机(内存16G以上,CPU 4核以上)中下载安装VirtualBox,进行VirtualBox网络配置,导入之前下载的虚拟机即可。VirtualBox下载地址为: +http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html +下载符合宿主机操作系统的VirtualBox并按照提示进行安装。 +安装后需要进行基础网络设置,之所以需要基础网络配置是因为如果想在宿主机中访问Oracle VM Manager虚拟机、Oracle VM Server虚拟机以及Oracle VM Server中Oracle RAC虚拟机,需要让宿主机和虚拟机处于一个网段之中,在OOW2015_HOL10471_RAC的1.3章节中可以知道虚拟机的网段是192.168.56.X,所以需要在Virtualbox中添加一个IP地址为192.168.56.1的网卡。添加网卡的步骤如下: + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image135.png) + + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image136.png) + + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image137.png) + +设置之后在【控制面板\网络和 Internet\网络连接】中可以看到配置的网卡 +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image138.png) + +在cmd或者powershell中执行ipconfig命令,可以发现多了一块网卡: + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image139.png) + + +增加网卡之后需要导入Oracle VM Manager+Oracle VM Server模板。首先导入Oracle VM Manager +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image140.png) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image141.png) + +然后导入Oracle VM Server +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image142.png) +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image143.png) + +启动虚拟机,如果出现类似于下面的提示: +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image144.png) + +则重新进行网络设置: +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image145.png) + +禁用掉OVS的USB控制器 +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image146.png) + + + +启动虚拟机,直到看到如下界面: +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image147.png) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image148.png) + +此时在宿主机中ping两台虚拟机的IP地址,应该都是可以ping通的。 +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image149.png) + + +#### 1.3 GLOBAL PICTURE +### 2 DETAILED INSTRUCTIONS +#### 2.1 START BOTH SERVERS (VIRTUAL BOX VMS) +#### 2.2 CONNECT TO THE ORACLE VM MANAGER CONSOLE +如果使用最新的Firefox版本(本文写作时的最新版本是Firefox 56),访问https://192.168.56.30:7002/ovm/console时会提示“建立安全连接失败”: +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image150.png) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image151.png) + +此时可以使用老版本的Firefox进行访问,47.0版本的Firefox安装包可以从百度网盘进行下载:http://pan.baidu.com/s/1dEBT5df + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image152.png) + +安装之后首先设置禁止检查更新,防止后台再次更新升级到最新版本。 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image153.png) + +继续访问https://192.168.56.30:7002/ovm/console +出现如下图提示时单击“添加例外” + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image154.png) + +点击“确认安全例外” +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image155.png) + + + +此时可以看到VM Manager的登陆界面。 + +#### 2.3 CREATE A STORAGE REPOSITORY +#### 2.4 CLONE 3 VMS FROM DB/RAC ORACLE VM TEMPLATE +#### 2.5 CREATING SHARED DISK FOR ASM CONFIGURATION +在使用ssh连接Oracle VM Manager时如果使用的是Xshell的话,不支持OOW2015_HOL10471_RAC中所提到的ssh命令: +ssh admin@192.168.56.30 -p 10000 +需要在图形配置页中进行配置,如下: + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image156.png) +### 3 START INSTALLATION USING DEPLOYCLUSTER +#### 3.1 CREATE A NETCONFIG.INI FILE FOR DEPLOYMENT +#### 3.2 RUNNING DEPLOYCLUSTER.PY +在执行deploycluster.py命令时如果出现下图错误说明之前分配给三个虚拟机的资源过少: + + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image157.png) + +此时在浏览器中修改对应的内存值即可: +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image158.png) + +安装成功的标志是buildcluster.log中出现如下内容: + + + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image159.png) + + +### 如何关闭、启动系统 +OOW2015_HOL10471_RAC中未提及如何关系和启动系统,这里做简要说明。 +关闭系统时首先通过浏览器关闭三台VM: +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image160.png) + +待节点状态都是Stopped之后关闭Virtualbox 虚拟机 +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image161.png) + + +启动系统时反过来,先运行Virtualbox虚拟机: + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image162.png) + +看到如下画面代表Oracle VM Server启动成功: +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image163_01.png) + +看到如下画面代表Oracle VM Manager启动成功: +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image163.png) + +然后使用Firefox浏览器打开OVMM控制台: + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image164.png) + +待所有节点的状态都为Running时,用SSH登陆到racnode0.1节点,执行crsstat -t。当出现如下结果时说明RAC已经启动成功。 +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image165.png) + + +### 常用Oracle RAC相关的命令 + +```shell +[oracle@racnode01h ~]$ crsctl check css +CRS-4529: Cluster Synchronization Services is online +[oracle@racnode01h ~]$ ps -ef|grep cssd +root 1548 1 0 16:48 ? 00:00:17 /u01/app/12.1.0/grid/bin/cssdmonitor +root 1565 1 0 16:48 ? 00:00:16 /u01/app/12.1.0/grid/bin/cssdagent +oracle 1576 1 1 16:48 ? 00:01:02 /u01/app/12.1.0/grid/bin/ocssd.bin +oracle 4905 2855 0 18:04 pts/0 00:00:00 grep cssd +[oracle@racnode01h ~]$ crsctl check has +CRS-4638: Oracle High Availability Services is online +[oracle@racnode01h ~]$ ps -ef|grep ohasd.bin +root 1195 1 1 16:47 ? 00:01:06 /u01/app/12.1.0/grid/bin/ohasd.bin reboot +oracle 4932 2855 0 18:05 pts/0 00:00:00 grep ohasd.bin +[oracle@racnode01h ~]$ crs_stat -t +Name Type Target State Host +------------------------------------------------------------ +ora....SM.lsnr ora....er.type ONLINE ONLINE racnode01h +ora.DATA.dg ora....up.type ONLINE ONLINE racnode01h +ora....ER.lsnr ora....er.type ONLINE ONLINE racnode01h +ora....AF.lsnr ora....er.type OFFLINE OFFLINE +ora....N1.lsnr ora....er.type ONLINE ONLINE racnode01h +ora.asm ora.asm.type ONLINE ONLINE racnode01h +ora.cvu ora.cvu.type OFFLINE OFFLINE +ora.gns ora.gns.type ONLINE ONLINE racnode01h +ora.gns.vip ora....ip.type ONLINE ONLINE racnode01h +ora....network ora....rk.type ONLINE ONLINE racnode01h +ora.oc4j ora.oc4j.type OFFLINE OFFLINE +ora.ons ora.ons.type ONLINE ONLINE racnode01h +ora.oow.db ora....se.type ONLINE ONLINE racnode01h +ora....1H.lsnr application ONLINE ONLINE racnode01h +ora....01h.ons application ONLINE ONLINE racnode01h +ora....01h.vip ora....t1.type ONLINE ONLINE racnode01h +ora....2H.lsnr application ONLINE ONLINE racnode02h +ora....02h.ons application ONLINE ONLINE racnode02h +ora....02h.vip ora....t1.type ONLINE ONLINE racnode02h +ora.scan1.vip ora....ip.type ONLINE ONLINE racnode01h +[oracle@racnode01h ~]$ crsctl status resource -t +-------------------------------------------------------------------------------- +Name Target State Server State details +-------------------------------------------------------------------------------- +Local Resources +-------------------------------------------------------------------------------- +ora.ASMNET1LSNR_ASM.lsnr + ONLINE ONLINE racnode01h STABLE + ONLINE ONLINE racnode02h STABLE +ora.DATA.dg + ONLINE ONLINE racnode01h STABLE + ONLINE ONLINE racnode02h STABLE +ora.LISTENER.lsnr + ONLINE ONLINE racnode01h STABLE + ONLINE ONLINE racnode02h STABLE +ora.LISTENER_LEAF.lsnr + OFFLINE OFFLINE racnode03h STABLE +ora.net1.network + ONLINE ONLINE racnode01h STABLE + ONLINE ONLINE racnode02h STABLE +ora.ons + ONLINE ONLINE racnode01h STABLE + ONLINE ONLINE racnode02h STABLE +-------------------------------------------------------------------------------- +Cluster Resources +-------------------------------------------------------------------------------- +ora.LISTENER_SCAN1.lsnr + 1 ONLINE ONLINE racnode01h STABLE +ora.asm + 1 ONLINE ONLINE racnode01h Started,STABLE + 2 ONLINE ONLINE racnode02h Started,STABLE + 3 OFFLINE OFFLINE STABLE +ora.cvu + 1 OFFLINE OFFLINE STABLE +ora.gns + 1 ONLINE ONLINE racnode01h STABLE +ora.gns.vip + 1 ONLINE ONLINE racnode01h STABLE +ora.oc4j + 1 OFFLINE OFFLINE STABLE +ora.oow.db + 1 ONLINE ONLINE racnode01h Open,STABLE + 2 ONLINE ONLINE racnode02h Open,STABLE +ora.racnode01h.vip + 1 ONLINE ONLINE racnode01h STABLE +ora.racnode02h.vip + 1 ONLINE ONLINE racnode02h STABLE +ora.scan1.vip + 1 ONLINE ONLINE racnode01h STABLE +-------------------------------------------------------------------------------- +[oracle@racnode01h ~]$ sqlplus / as sysdba + +SQL*Plus: Release 12.1.0.2.0 Production on Fri Nov 10 18:14:09 2017 + +Copyright (c) 1982, 2014, Oracle. All rights reserved. + + +Connected to: +Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production +With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, +Advanced Analytics and Real Application Testing options + +SQL> set linesize 200; +SQL> select * from gv$instance; + + INST_ID INSTANCE_NUMBER INSTANCE_NAME HOST_NAME VERSION STARTUP_T STATUS PAR THREAD# ARCHIVE LOG_SWITCH_WAIT LOGINS +---------- --------------- ---------------- ---------------------------------------------------------------- ----------------- --------- ------------ --- ---------- ------- --------------- ---------- +SHU DATABASE_STATUS INSTANCE_ROLE ACTIVE_ST BLO CON_ID INSTANCE_MO EDITION FAMILY +--- ----------------- ------------------ --------- --- ---------- ----------- ------- -------------------------------------------------------------------------------- + 1 1 OOW1 racnode01h 12.1.0.2.0 10-NOV-17 OPEN YES 1 STOPPED ALLOWED +NO ACTIVE PRIMARY_INSTANCE NORMAL NO 0 REGULAR EE + + 2 2 OOW2 racnode02h 12.1.0.2.0 10-NOV-17 OPEN YES 2 STOPPED ALLOWED +NO ACTIVE PRIMARY_INSTANCE NORMAL NO 0 REGULAR EE + + +SQL> +``` + +## 安装PLSQL Developer 11.0.6 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image166.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image167.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image168.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image169.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image170.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image171.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image172.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image173.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image174.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image175.jpg) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image176.jpg) + +## 安装Prometheus +下载地址: +https://prometheus.io/download/ + +jiangxin@tomcat:~$ sudo mkdir /usr/local/prometheus +jiangxin@tomcat:~$ sudo chown -R jiangxin:jiangxin /usr/local/prometheus +jiangxin@tomcat:~$ cd /usr/local/prometheus/ +jiangxin@tomcat:/usr/local/prometheus$ ls +prometheus-1.7.1.linux-amd64.tar.gz +jiangxin@tomcat:/usr/local/prometheus$ tar -zxvf prometheus-1.7.1.linux-amd64.tar.gz +jiangxin@tomcat:/usr/local/prometheus$ cd prometheus-1.7.1.linux-amd64/ + +jiangxin@tomcat:/usr/local/prometheus/prometheus-1.7.1.linux-amd64$ sudo vim /etc/profile + +export PROMETHEUS_HOME=/usr/local/prometheus/prometheus-1.7.1.linux-amd64 +export PATH=$PATH:$PROMETHEUS_HOME + +jiangxin@tomcat:/usr/local/prometheus/prometheus-1.7.1.linux-amd64$ source /etc/profile +jiangxin@tomcat:/usr/local/prometheus/prometheus-1.7.1.linux-amd64$ cd +### 启动 +jiangxin@tomcat:~$ prometheus -config.file=${PROMETHEUS_HOME}/prometheus.yml +INFO[0000] Starting prometheus (version=1.7.1, branch=master, revision=3afb3fffa3a29c3de865e1172fb740442e9d0133) source="main.go:88" +INFO[0000] Build context (go=go1.8.3, user=root@0aa1b7fc430d, date=20170612-11:44:05) source="main.go:89" +INFO[0000] Host details (Linux 4.4.0-78-generic #99-Ubuntu SMP Thu Apr 27 15:29:09 UTC 2017 x86_64 tomcat (none)) source="main.go:90" +INFO[0000] Loading configuration file /usr/local/prometheus/prometheus-1.7.1.linux-amd64/prometheus.yml source="main.go:252" +INFO[0000] Loading series map and head chunks... source="storage.go:428" +INFO[0000] 0 series loaded. source="storage.go:439" +INFO[0000] Starting target manager... source="targetmanager.go:63" +INFO[0000] Listening on :9090 source="web.go:259" + + + + +### 查看界面 +http://192.168.1.130:9090/metrics + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image189.png) + + + +http://192.168.1.130:9090/graph + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image190.png) + +## 安装配置CAS +#### 基础环境安装 +搭建CAS单点登录系统,首先需要基础环境的部署。主要包括Windows/Linux/Java/Maven/GIT/Tomcat等,基础环境的部署不是本文的描写重点,本文仅做简要说明,如有疑问可以邮件咨询。 +#### Windows +Windows 10,安装有JDK/GIT/Maven等工具,主要功能是下载CAS服务端和客户端源码,并进行编译打包,上传到Linux服务器上进行部署。同时利用Chrome浏览器对安装之后的环境进行检验。 +#### Linux +Ubuntu 16.04.1 LTS,安装有JDK、Tomcat等工具,主要作为CAS Server和Web Server的宿主环境。 +#### JDK +Linux服务器端安装JDK主要是作为Tomcat的运行时环境,并提供keytool等工具进行HTTPS配置;Windows客户端安装JDK主要是作为Maven的运行时环境。 + +jiangxin@tomcat:~$ java -version +java version "1.8.0_121" +Java(TM) SE Runtime Environment (build 1.8.0_121-b13) +Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode) + +PS C:\Users\jiang> java -version +java version "1.8.0_102" +Java(TM) SE Runtime Environment (build 1.8.0_102-b14) +Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode) +#### GIT +安装在Windows机器,主要用于下载并及时更新CAS Server和Client源码。 +PS C:\Users\jiang> git --version +git version 2.8.3.windows.1 +#### Maven +安装在Windows机器,主要作用是编译打包。 +PS C:\Users\jiang> mvn -v +Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00) +Maven home: C:\apache-maven-3.3.9 +Java version: 1.8.0_102, vendor: Oracle Corporation +Java home: C:\Java\jdk1.8.0_102\jre +Default locale: zh_CN, platform encoding: GBK +OS name: "windows 10", version: "10.0", arch: "amd64", family: "dos" +#### Tomcat +安装在Linux,安装包为: +apache-tomcat-8.5.14.tar.gz +为了更好的模拟单点登录,需要安装三个Tomcat实例,其中一个作为CAS Server,另外两个作为CAS Client。具体分配 + +安装过程为: +jiangxin@tomcat:/usr/local$ sudo mkdir tomcat +jiangxin@tomcat:/usr/local$ sudo chown -R jiangxin:jiangxin tomcat/ +jiangxin@tomcat:/usr/local$ cd tomcat/ +jiangxin@tomcat:/usr/local/tomcat$ ls +jiangxin@tomcat:/usr/local/tomcat$ tar -zxvf apache-tomcat-8.5.14.tar.gz +jiangxin@tomcat:/usr/local/tomcat$ cd + +jiangxin@tomcat:~$ sudo vim /etc/profile + +export CATALINA_BASE=/usr/local/tomcat/apache-tomcat-8.5.14 +export CATALINA_HOME=/usr/local/tomcat/apache-tomcat-8.5.14 +export PATH=$PATH:$CATALINA_HOME/lib:$CATALINA_HOME/bin + +jiangxin@tomcat:~$ source /etc/profile + +jiangxin@tomcat:~$ startup.sh ; tailf $CATALINA_HOME/logs/catalina.out +Using CATALINA_BASE: /usr/local/tomcat/apache-tomcat-8.5.14 +Using CATALINA_HOME: /usr/local/tomcat/apache-tomcat-8.5.14 +Using CATALINA_TMPDIR: /usr/local/tomcat/apache-tomcat-8.5.14/temp +Using JRE_HOME: /usr/local/java/jdk1.8.0_121 +#限于篇幅,此处有省略 +05-May-2017 20:27:53.487 信息 [main] org.apache.catalina.startup.Catalina.start Server startup in 1633 ms + + +在浏览器中访问下面地址,查看能否正常访问: + +http://192.168.1.130:8080/ + + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image191.png) + +jiangxin@tomcat:~$ shutdown.sh +Using CATALINA_BASE: /usr/local/tomcat/apache-tomcat-8.5.14 +Using CATALINA_HOME: /usr/local/tomcat/apache-tomcat-8.5.14 +Using CATALINA_TMPDIR: /usr/local/tomcat/apache-tomcat-8.5.14/temp +Using JRE_HOME: /usr/local/java/jdk1.8.0_121 +Using CLASSPATH: /usr/local/tomcat/apache-tomcat-8.5.14/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-8.5.14/bin/tomcat-juli.jar + +### 安装CAS服务端 +在较新的CAS版本中不在提供CAS服务端和客户端的安装包,都是依靠下载源码,重新打包。如果对本文的安装内容有疑问可以参考CAS的官网: + +https://apereo.github.io/cas/5.0.x/installation/Maven-Overlay-Installation.html +https://github.com/apereo/cas-overlay-template + +正常情况下应该在服务器上进行maven编译,这样才能保证编译的JDK版本和运行时的版本一致,但是此处为了方便,直接在Windows编译。 + +PS C:\Users\jiang> cd D:\temp\Java\ +PS D:\temp\Java> git clone https://github.com/apereo/cas-overlay-template.git +Cloning into 'cas-overlay-template'... +remote: Counting objects: 566, done. +remote: Compressing objects: 100% (12/12), done. +remote: Total 566 (delta 4), reused 0 (delta 0), pack-reused 550 eceiving objects: 96% (544/566), 116.00 KiB | 79.00 KiB/ +Receiving objects: 100% (566/566), 188.70 KiB | 79.00 KiB/s, done. +Resolving deltas: 100% (275/275), done. +Checking connectivity... done. +PS D:\temp\Java> cd .\cas-overlay-template\ +PS D:\temp\Java\cas-overlay-template> .\build.cmd package +[INFO] Scanning for projects... +[INFO] +[INFO] Using the MultiThreadedBuilder implementation with a thread count of 5 +[INFO] +[INFO] ------------------------------------------------------------------------ +[INFO] Building cas-overlay 1.0 +由于篇幅原因,此处有省略 +[INFO] Packaging webapp +[INFO] Assembling webapp [cas-overlay] in [D:\temp\Java\cas-overlay-template\target\cas] +[info] Copying manifest... +[INFO] Processing war project +[INFO] Processing overlay [ id org.apereo.cas:cas-server-webapp] +[INFO] Webapp assembled in [2685 msecs] +[INFO] Building war: D:\temp\Java\cas-overlay-template\target\cas.war +[INFO] ------------------------------------------------------------------------ +[INFO] BUILD SUCCESS +[INFO] ------------------------------------------------------------------------ +[INFO] Total time: 06:34 min (Wall Clock) +[INFO] Finished at: 2017-05-05T20:06:02+08:00 +[INFO] Final Memory: 13M/200M +[INFO] ------------------------------------------------------------------------ + + +把cas-overlay-template\target\cas.war上传到/usr/local/tomcat/apache-tomcat-8.5.14/webapps + +重新启动tomcat + +05-May-2017 20:39:10.561 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server version: Apache Tomcat/8.5.14 +由于篇幅原因,此处有省略 +05-May-2017 20:39:11.026 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive /usr/local/tomcat/apache-tomcat-8.5.14/webapps/cas.war +05-May-2017 20:39:20.915 信息 [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. + + + __ ____ _ ____ __ + / / / ___| / \ / ___| \ \ +| | | | / _ \ \___ \ | | +| | | |___ / ___ \ ___) | | | +| | \____|/_/ \_\|____/ | | + \_\ /_/ + +CAS Version: 5.0.5 +Apache Tomcat Version: Apache Tomcat/8.5.14 +Build Date/Time: 2017-04-21T03:24:20Z +System Temp Directory: /usr/local/tomcat/apache-tomcat-8.5.14/temp +Java Home: /usr/local/java/jdk1.8.0_121/jre +Java Vendor: Oracle Corporation +Java Version: 1.8.0_121 +JCE Installed: no +OS Architecture: amd64 +OS Name: Linux +OS Version: 4.4.0-72-generic + + +2017-05-05 20:39:29,134 INFO [org.apereo.cas.web.CasWebApplicationServletInitializer] - + +在浏览器中范围如下地址,查看能否访问: +http://192.168.1.130:8080/cas/login + + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image192.png) + +使用casuser/Mellon进行登录(application.properties中配置用户名和密码),查看是否登录成功。 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image193.png) +### 配置数字证书 +CAS要求CAS Server和CAS Client以及客户端浏览器端全部使用https访问,所以需要配置证书。 + +正常情况下,数字证书的生成,分发,使用是在多台机器上,以本文搭建的SSO系统为例,在A机器(CA)上生成证书,然后将证书(包括私钥和公钥)分发到B机器(SSO Server),B机器根据该证书导出公钥分发给C机器(SSO Client),此时B和C即可正常建立连接。同时当D机器(客户端浏览器)与A机器交互时即可在A机器上下载公钥,进行连接。 +但为了方便测试,本文中A、B、C机器为一台。 + +下边的命令,会创建一条证书记录并写入cacerts。证书记录信息包含该条证书的私钥,公钥和对应的数字证书的信息。 + +```shell +jiangxin@tomcat:~$ keytool -genkey -alias castest -keyalg RSA -keystore /usr/local/java/jdk1.8.0_121/jre/lib/security/cacerts +输入密钥库口令: # 按照JDK后,默认的密钥库密码为changeit +您的名字与姓氏是什么? # 名字与姓氏为CAS跳转域名 + [Unknown]: cas.sso.com +您的组织单位名称是什么? + [Unknown]: castest +您的组织名称是什么? + [Unknown]: castest +您所在的城市或区域名称是什么? + [Unknown]: nanjing +您所在的省/市/自治区名称是什么? + [Unknown]: jiangsu +该单位的双字母国家/地区代码是什么? + [Unknown]: cn +CN=cas.sso.com, OU=castest, O=castest, L=nanjing, ST=jiangsu, C=cn是否正确? + [否]: y + +输入 的密钥口令 + (如果和密钥库口令相同, 按回车): +``` + +可使用如下命令查看证书信息: +jiangxin@tomcat:~$ keytool -list -keystore "$JAVA_HOME/jre/lib/security/cacerts" -alias castest +输入密钥库口令: +castest, 2017-5-7, PrivateKeyEntry, +证书指纹 (SHA1): 9A:9A:DF:AB:18:B7:D9:81:8D:24:BA:E3:73:99:67:CE:58:B0:3A:CD + +如果要更新证书,可以先删除原证书,再导入新证书: +jiangxin@tomcat:~$ keytool -delete -alias castest -keystore /usr/local/java/jdk1.8.0_121/jre/lib/security/cacerts + +接下来修改server.xml文件 +jiangxin@tomcat:~$ cp /usr/local/tomcat/apache-tomcat-8.5.14/conf/server.xml /usr/local/tomcat/apache-tomcat-8.5.14/conf/server.xml.bak +jiangxin@tomcat:~$ vim /usr/local/tomcat/apache-tomcat-8.5.14/conf/server.xml + +```xml + + +``` + +重启tomcat,访问下面地址,查看是否能够正常访问: +https://192.168.1.130:8443/cas + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image194.png) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image195.png) + + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image196.png) + + + + +由于本文所部署的环境是CAS Server和CAS Client在一台服务器上,所以不需要单独将公钥导出到CAS Client上,但是如果需要,可以参考下面的导入导出过程。 + +导出数字证书,数字证书包含三部分信息:证书元数据信息,序列号,过期时间等、所有者信息,姓名、地区等、所有者公钥;相比于在keystore中的信息,没有所有者的密钥,所有者的密钥只有所有者自己知道,而此处的数字证书是要分发到公网上的。 + +jiangxin@tomcat:~$ keytool -export -file ssokey/castest.crt -alias castest -keystore ssokey/castest +输入密钥库口令: +存储在文件 中的证书 + + +jiangxin@tomcat:~$ keytool -import -keystore "$JAVA_HOME/jre/lib/security/cacerts" -file ssokey/castest.crt -alias castest +输入密钥库口令: +keytool 错误: java.io.IOException: Keystore was tampered with, or password was incorrect +jiangxin@tomcat:~$ keytool -import -keystore "$JAVA_HOME/jre/lib/security/cacerts" -file ssokey/castest.crt -alias castest +输入密钥库口令: +所有者: CN=cas.sso.com, OU=castest, O=castest, L=nanjing, ST=jiangsu, C=cn +发布者: CN=cas.sso.com, OU=castest, O=castest, L=nanjing, ST=jiangsu, C=cn +序列号: 3cc98964 +有效期开始日期: Sun May 07 09:03:47 CST 2017, 截止日期: Sat Aug 05 09:03:47 CST 2017 +证书指纹: + MD5: F4:B8:E4:B1:07:EE:86:45:C7:96:5F:FA:EF:E9:5C:11 + SHA1: D0:7B:BB:30:0C:D3:8A:49:C9:89:3B:E0:C4:C0:98:30:74:E3:15:98 + SHA256: 4B:AB:EA:C1:06:3F:0D:3B:A2:C9:3C:F7:45:B6:CF:66:EA:BE:B3:6A:42:61:05:E3:C4:D4:AE:DC:0C:DC:20:31 + 签名算法名称: SHA256withRSA + 版本: 3 + +扩展: + +#1: ObjectId: 2.5.29.14 Criticality=false +SubjectKeyIdentifier [ +KeyIdentifier [ +0000: D0 C7 06 22 8B 57 71 E4 39 08 E5 05 F9 5B B4 2D ...".Wq.9....[.- +0010: ED 9F 92 28 ...( +] +] + +是否信任此证书? [否]: y +证书已添加到密钥库中 +### 安装CAS客户端 +建立客户端工程,参考: + +https://bitbucket.org/jiangxincode/casclient/ + +使用maven打包,得到casclient.war,上传到服务器上 + + + + + +### 验证 +验证之前先在Windows和Linux机器的hosts文件中加入: +192.168.1.130 cas.sso.com + + +重新启动Tomcat容器,在浏览器访问如下地址: +https://cas.sso.com:8443/casclient/index.jsp +会发现浏览器被重定向到如下地址: +https://cas.sso.com:8443/cas/login?service=https%3A%2F%2Fcas.sso.com%3A8443%2Fcasclient%2Findex.jsp +输入casuser/Mellon之后,浏览器会跳转到下面的地址 +https://cas.sso.com:8443/casclient/index.jsp;jsessionid=23551AEBF9B7B61431D0CC942F923771 + +### 配置日志路径 +为了防止在不同地方启动tomcat,导致日志位置不同,不方便查找,修改一下日志路径。 + +jiangxin@tomcat:/usr/local/tomcat/apache-tomcat-8.5.14/webapps/cas/WEB-INF/classes$ cp log4j2.xml log4j2.xml.bak +jiangxin@tomcat:/usr/local/tomcat/apache-tomcat-8.5.14/webapps/cas/WEB-INF/classes$ vim log4j2.xml + +```xml + + + + + /usr/local/tomcat/apache-tomcat-8.5.14/logs/cas + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#限于篇幅,此处有省略 + +``` + +### 其它配置 +CAS支持的配置很多,此处不一一说明,有需要的可以参考下面的链接: + +https://github.com/apereo/cas +CAS protocol: https://apereo.github.io/cas/5.0.x/protocol/CAS-Protocol.html +CAS Client集群环境的问题及解决方案: https://yq.aliyun.com/articles/49871 +cas系列文章: http://www.cnblogs.com/vhua/tag/cas/ +cas单点登录配置速成: http://www.blogjava.net/goodlyts/archive/2009/10/20/299091.html + +## Windows 10系统下搭建Jenkins环境 +主要参考: +http://www.cnblogs.com/edward2013/p/5269465.html +但是没有安装ant,而且java、maven、tomcat都是使用的压缩包方式安装。 +## Ubuntu 16.04安装docker +主要参考: +https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository + +## Ubuntu 22.04安装Samba +### 下载/安装Samba服务器: +sudo apt-get install samba samba-common +### 配置Samba服务器 +首先将默认的配置文件进行备份 +sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak + +sudo vim /etc/samba/smb.conf + +[jiangxin] +path = /home/jiangxin +available = yes +browseable = yes +public = yes +writable = yes +valid users = jiangxin +### 设置密码并重启服务器 +sudo smbpasswd -a jiangxin //设置访问的密码 +sudo service smbd restart //重启smb服务器 +### 访问 +在Windows资源管理器导航栏输入`\\ip_adress`,然后输入账号和密码就可以访问了。为了后续方便快速访问Linux侧目录,将远程目录映射为网络驱动器: +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image197.png) + + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image198.png) +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image199.png) + +### 其它问题 +如果Windows无法访问samba服务器,尝试通过以下方式确认问题所在: + +控制面板-系统和安全-Windows Defender 防火墙,关闭防火墙 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image200.png) +控制面板-程序-启用或关闭Windows功能,勾选SMB 1.0/CIFS文件共享支持 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image201.png) +Win+R,输入gpedit.msc,计算器配置-管理模板-网络-Lanman工作站,选中"不安全的来宾登陆",在新的对话框中选中"已启用" + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image202.png) +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image203.png) + +## 配置AOSP源码查看环境 +### 在Windows上安装Repo,同步AOSP代码【不推荐】 +第一个想到的方案是在Windows上配置Repo,然后下载AOSP源码,参考: +Windows安装repo的真正解决方案:https://ysy950803.blog.csdn.net/article/details/104188793 +但是就像Repo官网(https://gerrit.googlesource.com/git-repo/+/HEAD/docs/windows.md)说的那样: +Repo is primarily developed on Linux with a lot of users on macOS. Windows is, unfortunately, not a common platform. There is support in repo for Windows, but there might be some rough edges. +Keep in mind that Windows in general is “best effort” and “community supported”. That means we don't actively test or verify behavior, but rely heavily on users to report problems back to us, and to contribute fixes as needed. +Windows版的Repo虽然可用,但是可能会出现各种各样的问题,这些问题可能会让我们在解决环境问题上分心过多,所以不推荐这种方式。 + +### 在Linux上安装Repo,同步AOSP代码【推荐】 +根据实际情况有两种工作模式: +1、 Linux作为AOSP代码的同步、存储、查看、修改、编译环境,大部分工作都是在Linux上完成,Android Studio也是安装在Linux上,这种我觉得是最完美的模式。但是要求Linux的性能足够好。由于我这边没有实际的Linux机器,是在Windows上用虚拟机配置的Linux环境,所以没有采用这种方法。 +2、 Linux作为AOSP代码的同步、存储、编译环境,查看和修改工作在Windows上完成,具体的实现方式有两种: +a) 用Samba服务器把Linux上的AOSP代码共享到Windows平台,然后在Windows平台上安装IDE环境,直接打开远程AOSP代码目录,查看和修改,这种方式的优点是配置简单,不用代码同步。但是我这边网速一般,而AOSP代码量太大,导致Android Studio经常卡死,所以我也放弃了这种方式。 +b) 将android.iml/android.ipr以及常用的仓(比如frameworks/base frameworks/native等)使用rsync等工具同步到Windows平台,然后在Windows上使用Android Studio导入,进行查看和修改,修改完成后通过Beyondcompare工具将修改的内容同步到Linux平台进行编译等工作。这个各方面折中的方案。后续主要介绍这种工作环境的配置。 +#### 安装配置Linux环境 +如果已经有Linux机器,本步骤省略。我在家中没有,遂采用在Windows上安装Virtualbox,然后通过Virtualbox安装Linux(Ubuntu)。 +同时按需安装Git/Vim/OpenSSH Server等工具,安装方式不再赘述,网上有很多。 +#### 下载AOSP源码 +在配置好的Linux环境中下载AOSP源码,Google官方的下载AOSP源码的方式:https://source.android.com/docs/setup/build/downloading。 +但是由于墙的原因,这种方式不容易实现,所以推荐使用清华的镜像,使用指导:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/。 +Repo的使用方式可以参考:Repo实践指南:https://www.cnblogs.com/jiangxinnju/p/14274982.html +#### 配置Windows上的工具 +1、 安装SSH客户端工具,这里推荐MobaXTerm,因为它不仅免费还自带了rsync命令行工具,可以非常方便从Linux上同步代码到Windows。 +a) mkdir -p /drives/d/Code/sync/aosp/frameworks +b) rsync -az --progress --delete --exclude=".git" android@192.168.1.125:/home/android/aosp/frameworks/base /drives/d/Code/sync/aosp/frameworks/ +c) rsync -az --progress --delete --exclude=".git" android@192.168.1.125:/home/android/aosp/frameworks/native /drives/d/Code/sync/aosp/frameworks/ +2、 安装BeyondCompare工具,方便对比,将修改的代码同步到Linux环境。 +3、 安装Android Sudio,将AOSP源码导入到Android Studio进行查看:https://www.cnblogs.com/jiangxinnju/p/14426645.html +4、 安装Source Insight工具,AS查看AOSP的Java代码比较合适,但是C/C++代码不支持跳转,着色也比较差,看这部分代码还是SI比较好用。 +## TensorFlow环境搭建 +### 预备条件 + Ubuntu 22.04.2 LTS + 配置好固定IP,安装SSH(Server)/Samba等基础网络连接软件 +## 腾讯云环境构建 +### 开启root用户 +sudo passwd root + +### 修改主机名 +sudo vim /etc/hostname +修改成ubuntu +sudo reboot + +### 防止SSH经常断连 +ubuntu@ubuntu:~$ sudo vim /etc/ssh/sshd_config +ClientAliveInterval 30 +ClientAliveCountMax 86400 + +ubuntu@ubuntu:~$ sudo /etc/init.d/ssh restart +### 安装JDK 8 +ubuntu@ubuntu:/usr/local$ sudo mkdir java +ubuntu@ubuntu:/usr/local$ sudo chown ubuntu:ubuntu java + +上传jdk-8u371-linux-x64.tar.gz到java目录 + +ubuntu@ubuntu:/usr/local$ cd java/ +ubuntu@ubuntu:/usr/local/java$ tar -zxvf jdk-8u371-linux-x64.tar.gz + +ubuntu@ubuntu:/usr/local/java $ cd +ubuntu@ubuntu:~$ sudo vim /etc/profile + +在文件末尾添加如下内容: + +export JAVA_HOME=/usr/local/java/jdk1.8.0_371 +export CLASSPATH=.:$JAVA_HOME/lib:$CLASSPATH +export PATH=$JAVA_HOME/bin:$PATH + +ubuntu@ubuntu:~$ source /etc/profile +ubuntu@ubuntu:~$ java -version +java version "1.8.0_371" +Java(TM) SE Runtime Environment (build 1.8.0_371-b11) +Java HotSpot(TM) 64-Bit Server VM (build 25.371-b11, mixed mode) +### 安装JDK 17 +ubuntu@ubuntu:/usr/local$ sudo mkdir java +ubuntu@ubuntu:/usr/local$ sudo chown ubuntu:ubuntu java + +上传jdk-8u371-linux-x64.tar.gz到java目录 + +ubuntu@ubuntu:/usr/local$ cd java/ +ubuntu@ubuntu:/usr/local/java$ tar -zxvf jdk-17_linux-x64_bin.tar.gz + +ubuntu@ubuntu:/usr/local/java $ cd +ubuntu@ubuntu:~$ sudo vim /etc/profile + +在文件末尾添加如下内容: + +export JAVA_HOME=/usr/local/java/jdk-17.0.7 +export PATH=$JAVA_HOME/bin:$PATH + +ubuntu@ubuntu:~$ source /etc/profile +ubuntu@ubuntu:~$ java -version +java 17.0.7 2023-04-18 LTS +Java(TM) SE Runtime Environment (build 17.0.7+8-LTS-224) +Java HotSpot(TM) 64-Bit Server VM (build 17.0.7+8-LTS-224, mixed mode, sharing) + +### 安装Tomcat 8.5 +ubuntu@ubuntu:/usr/local$ sudo mkdir tomcat +ubuntu@ubuntu:/usr/local$ sudo chown -R jiangxin:jiangxin tomcat +ubuntu@ubuntu:/usr/local$ cd tomcat/ +ubuntu@ubuntu:/usr/local/tomcat$ tar -zxvf apache-tomcat-8.5.88.tar.gz +ubuntu@ubuntu:/usr/local/tomcat$ cd + +ubuntu@ubuntu:~$ sudo vim /etc/profile + +export CATALINA_BASE=/usr/local/tomcat/apache-tomcat-8.5.88 +export CATALINA_HOME=/usr/local/tomcat/apache-tomcat-8.5.88 +export PATH=$PATH:$CATALINA_HOME/lib:$CATALINA_HOME/bin + +ubuntu@ubuntu:~$ source /etc/profile + +本次会话启动tomcat +startup.sh ; tail -f $CATALINA_HOME/logs/catalina.out + +后台启动tomcat +nohup startup.sh & + +关闭tomcat +shutdown.sh + +端口占用查询 +sudo netstat -tulpn | grep 8080 + +进程查询 +ps -ef | grep tomcat + +在浏览器中访问下面地址,查看能否正常访问: + +http://124.222.145.48:8080/ +### 安装Tomcat 9 +ubuntu@ubuntu:/usr/local$ sudo mkdir tomcat +ubuntu@ubuntu:/usr/local$ sudo chown -R jiangxin:jiangxin tomcat +ubuntu@ubuntu:/usr/local$ cd tomcat/ +ubuntu@ubuntu:/usr/local/tomcat$ tar -zxvf apache-tomcat-9.0.75.tar.gz +ubuntu@ubuntu:/usr/local/tomcat$ cd + +ubuntu@ubuntu:~$ sudo vim /etc/profile + +export CATALINA_BASE=/usr/local/tomcat/apache-tomcat-9.0.75 +export CATALINA_HOME=/usr/local/tomcat/apache-tomcat-9.0.75 +export PATH=$PATH:$CATALINA_HOME/lib:$CATALINA_HOME/bin + +ubuntu@ubuntu:~$ source /etc/profile + +本次会话启动tomcat +startup.sh ; tail -f $CATALINA_HOME/logs/catalina.out + +后台启动tomcat +nohup startup.sh & + +关闭tomcat +shutdown.sh + +端口占用查询 +sudo netstat -tulpn | grep 8080 + +进程查询 +ps -ef | grep tomcat + +在浏览器中访问下面地址,查看能否正常访问: + +http://124.222.145.48:8080/ +### 安装Tomcat 10 +ubuntu@ubuntu:/usr/local$ sudo mkdir tomcat +ubuntu@ubuntu:/usr/local$ sudo chown -R jiangxin:jiangxin tomcat +ubuntu@ubuntu:/usr/local$ cd tomcat/ +ubuntu@ubuntu:/usr/local/tomcat$ tar -zxvf apache-tomcat-10.1.9.tar.gz +ubuntu@ubuntu:/usr/local/tomcat$ cd + +ubuntu@ubuntu:~$ sudo vim /etc/profile + +export CATALINA_BASE=/usr/local/tomcat/apache-tomcat-10.1.9 +export CATALINA_HOME=/usr/local/tomcat/apache-tomcat-10.1.9 +export PATH=$PATH:$CATALINA_HOME/lib:$CATALINA_HOME/bin + +ubuntu@ubuntu:~$ source /etc/profile + +本次会话启动tomcat +startup.sh ; tail -f $CATALINA_HOME/logs/catalina.out + +后台启动tomcat +nohup startup.sh & + +关闭tomcat +shutdown.sh + +端口占用查询 +sudo netstat -tulpn | grep 8080 + +进程查询 +ps -ef | grep tomcat + +在浏览器中访问下面地址,查看能否正常访问: + +http://124.222.145.48:8080/ + +### 安装MySQL + +root@ubuntu:~# mkdir /usr/local/mysql +root@ubuntu:~# cd /usr/local/mysql/ +root@ubuntu:/usr/local/mysql# groupadd mysql +root@ubuntu:/usr/local/mysql# useradd -r -g mysql -s /bin/false mysql +root@ubuntu:/usr/local/mysql# tar zxvf mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz +root@ubuntu:/usr/local/mysql# cd mysql-5.7.19-linux-glibc2.12-x86_64/ +root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# mkdir mysql-files +root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# chmod 750 mysql-files +root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# chown -R mysql . +root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# chgrp -R mysql . +root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# bin/mysqld --initialize --user=mysql +2023-05-19T14:53:42.895566Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). +2023-05-19T14:53:42.895679Z 0 [ERROR] Can't find error-message file '/usr/local/mysql/share/errmsg.sys'. Check error-message file location and 'lc-messages-dir' configuration directive. +2023-05-19T14:53:43.307387Z 0 [Warning] InnoDB: New log files created, LSN=45790 +2023-05-19T14:53:43.391326Z 0 [Warning] InnoDB: Creating foreign key constraint system tables. +2023-05-19T14:53:43.460485Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: f319f8fa-f654-11ed-96fb-525400468e37. +2023-05-19T14:53:43.467893Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. +2023-05-19T14:53:43.468453Z 1 [Note] A temporary password is generated for root@localhost: /2jW>kFeerno +root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# bin/mysql_ssl_rsa_setup + + +root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# sudo vim /etc/profile + +export MYSQL_HOME=/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64 +export PATH=$PATH:$MYSQL_HOME/bin + +root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# source /etc/profile + +root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# cd +root@ubuntu:~# mysqld_safe --user=mysql & +[1] 1931893 +root@ubuntu:~# Logging to '/usr/local/mysql/data/ubuntu.err'. +2023-05-19T15:00:22.730000Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data +root@ubuntu:~# mysql -u root -p +[1] 1931893 +root@ubuntu:~# Logging to '/usr/local/mysql/data/ubuntu.err'. +2023-05-19T15:00:22.730000Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data + +root@ubuntu:~# mysql -u root -p +Enter password: +Welcome to the MySQL monitor. Commands end with ; or \g. +Your MySQL connection id is 3 +Server version: 5.7.19 + +Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. + +Oracle is a registered trademark of Oracle Corporation and/or its +affiliates. Other names may be trademarks of their respective +owners. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +mysql> exit +Bye +root@ubuntu:~# mysqladmin -uroot -p'/2jW>kFeerno' password test +mysqladmin: [Warning] Using a password on the command line interface can be insecure. +Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety. +root@ubuntu:~# mysql -u root -p +Enter password: +Welcome to the MySQL monitor. Commands end with ; or \g. +Your MySQL connection id is 5 +Server version: 5.7.19 MySQL Community Server (GPL) + +Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. + +Oracle is a registered trademark of Oracle Corporation and/or its +affiliates. Other names may be trademarks of their respective +owners. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +mysql> select `user`, `host` from mysql.user; ++---------------+-----------+ +| user | host | ++---------------+-----------+ +| mysql.session | localhost | +| mysql.sys | localhost | +| root | localhost | ++---------------+-----------+ +3 rows in set (0.00 sec) + +mysql> update mysql.user set host = '%' where user = 'root'; +Query OK, 1 row affected (0.00 sec) +Rows matched: 1 Changed: 1 Warnings: 0 + +mysql> flush privileges; +Query OK, 0 rows affected (0.00 sec) + +mysql> exit +Bye +### 部署项目 +war包放到$CATALINA_HOME/webapps/目录下,然后重启tomcat +shutdown.sh; startup.sh ; tail -f $CATALINA_HOME/logs/catalina.out + +http://124.222.145.48:8080/JavaWebTest/index.jsp + +## MyEclipse 2014安装说明 + +下载过程就不详述了。 + +说明一下,可以只安装MyEclipse 2014,而不用提前安装JDK、Eclipse、Tomcat等软件,MyEclipse 2014内嵌了这些东西,网上说的MyEclipse只是Eclipse的插件,所以要安装MyEclipse就要先安装Eclipse,而要安装Eclipse又必须提前安装JDK。这对于旧版本的MyEclipse来说确实是这样,但是对于比较新的几个版本来说,不需要了,MyEclipse包含了开发所需要的大多数工具。 + +当然,如果你不想使用其自带的JDK或者服务器软件,你可以在安装了其它的JDK版本和服务器软件之后自行设置。(在Window->Preferences中进行配置) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image204.png) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image205.png) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image206.png) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image207.png) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image208.png) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image209.png) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image210.png) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image211.png) + +安装好之后,先不要打开MyEclipse 2014的程序。 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image212.png) + +接下来对MyEclipse进行破解,由于破解包是jar包,所以需要JRE,不过一般的机子上都有,可以打开CMD输入java命令测试一下,如果显示以下命令则证明本机已有JRE,无需安装,如果没有下载JRE,进行安装。 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image213.png) + +打开破解文件夹,运行`cracker.jar`。在破解界面中,usercode随便输入,然后点击右边的SystemId按钮,将在SystemId中自动生成一串机器码。 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image214.png) + +然后选择`Tools->RebuildKey`。 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image215.png) + +点击激活按钮。将会看到有日志生成。 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image216.png) + +选择`Tools->ReplaceJarFiles`。选择MyEclipse安装目录中的Plugin文件夹。 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image217.png) + +操作`Tools->SaveProperities` + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image218.png) + +重新打开MyEclipse 2014 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image219.png) + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image220.png) + +`MyEclipse->Subscription Informatioon`,显示激活。 + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image221.png) + From a0a6962fcb718e7c6cf3be7dc29f71d6163a5ad7 Mon Sep 17 00:00:00 2001 From: Aloys Date: Fri, 12 Jul 2024 22:21:14 +0800 Subject: [PATCH 194/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 2 - _posts/2019-04-22-Linux-Memory-Analysis.md | 61 +++++++++++++++++++ 2 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 _posts/2019-04-22-Linux-Memory-Analysis.md diff --git "a/_posts/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 51f087c..01bbf5b 100644 --- "a/_posts/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -265,10 +265,8 @@ toc: true * loganalysis(Android日志分析工具): * Android单条日志太长导致被截断的问题分析和解决: -* 性能优化工具(十)- Android内存分析命令: * Android内存优化(使用SparseArray和ArrayMap取代HashMap): * Android-->iostat(显示CPU和IO系统负载情况): -* 内存耗用:VSS/RSS/PSS/USS: ### 动效 diff --git a/_posts/2019-04-22-Linux-Memory-Analysis.md b/_posts/2019-04-22-Linux-Memory-Analysis.md new file mode 100644 index 0000000..0bfe9ae --- /dev/null +++ b/_posts/2019-04-22-Linux-Memory-Analysis.md @@ -0,0 +1,61 @@ +--- +title: "Linux内存工具解析之RSS/VSS/USS/PSS区别于联系" +categories: + - Blog +tags: + - Linux Memory Analysis +--- + +对于Linux系统程序开发人员,经常需要和进程所使用的内存情况打交道,比如,分析程序的内存泄漏问题。这时候我们可能使用ps、top、procrank、dumpsys(后两个命令为Android系统)来跟踪、调试进程内存的使用情况。上述几个工具进程涉及到的几个比较的重要的概念:VSS、RSS、PSS、USS,对于这几个概念,大家总是存在一种似曾相识,却又不甚了解的感觉,这对于真正的把握进程内存使用情况是十分有害的。所以,本文旨在彻底分析这个四个概念,弄清各个量之间的联系和区别,提供有助于解释各种工具的内存报告的信息,以便确定Linux进程和系统的实际内存使用量,为以后分析内存问题提供坚实的理论基础。 + +## 基本概念 + +* VSS:Virtual Set Size 虚拟耗用的内存(包含与其他进程共享占用的虚拟内存) +* RSS:Resident Set Size 实际使用的物理内存(包含与其他进程共享占用的内存) +* PSS:Proportional Set Size 实际使用的物理内存(按比例包含与其他进程共享占用的内存) +* USS:Unique Set Size 进程独自占用的物理内存(不包含与其他进程共享占用的内存) + +对于单个进程,一般来说内存占用大小排序如下:`VSS >= RSS >= PSS >= USS` + +## 概念解析 + +Android有一个名为`procrank`(`/system/xbin/procrank`)的工具,它列出了Linux进程的内存使用量,并按使用量的高低排序。每个进程报告的内存使用情况分为VSS、RSS、PSS和USS。 + +为了简单起见,在这个描述中,内存将用页面而不是字节来表示。像我们这样的Linux系统在最低级别上以4096字节的页面管理内存。 + +下面分别具体解释一下各个概念的含义: + +* VSS(ps工具中表示为VSZ)表示进程总的可访问地址空间。这个大小还包括可能不驻留在RAM中的内存,比如使用malloc分配内存后,尚未写入数据的内存。VSS对于确定进程的实际内存使用量几乎没有什么用处。 +* RSS表示一个进程在RAM中实际拥有的总内存。RSS可能具有误导性,因为它包括了该进程与其他进程共享的实际物理内存使用量,例如,对于共享库,其往往只加载到内存中一次,而不管有多少进程使用它。RSS不能准确地表示单个进程的内存使用情况。 +* PSS与RSS不同之处是,对于进程间共享的内存,其按比例报告其所使用的共享物理内存大小。比如有n进程同时在使用一个共享库,那对于单个进程其占用的该共享库的内存为1/n。如果三个进程都使用一个有30页的共享库,那么这个库将只向每个进程报告的PSS贡献10页。PSS是一个非常有用的数字,因为当系统中所有进程的PSS加在一起时,就可以很好地表示系统中总的内存使用量。当一个进程被终止时,贡献给它的PSS的共享库将按比例分配给仍然使用该库的其他进程的PSS总数。这样,PSS可能有点误导人,因为当进程被终止时,PSS不能准确地表示返回到整个系统的内存。 +* USS表示进程占用的总的物理内存大小,也就是说这部分内存是该进程完全独占的。 USS是一个非常有用的数字,因为它表示运行特定进程的实际增量成本。当进程被终止时,USS是实际返回给系统的总内存。当最初怀疑某个进程存在内存泄漏时,USS是最好的监视数字。 + +对于使用Python的系统,还有一个很好的工具叫做`ledsmem`,它可以报告内存统计信息,包括所有这些类别。 + +NOTE:这里有几个问题需要注意: + +* 两个进程共享的部分,远远不是只有共享库,比如我们在Linux里面开2个bash进程,那么这2个bash,实际是共享1个代码段;其他的mmap()的时候shared的映射当然也是两个进程共享的内存。 +* 共享库里面的内存,也不是都共享,只是代码段等不会做CoW(写时拷贝)的内存才会跨进程共享。 +* USS去掉的是所有跨进程共享的内存,不是只去掉了共享库。 + +## 实例解析 + +下面通过一个实例,具体解析各个量之间的关系。假设Linux下有两个bash进程、一个cat进程,进程ID分别为1044、1045、1054,下面通过公式分别计算VSS、RSS、PSS、USS: + +![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/20190422144031323.png) + +* VSS = 1 + 2 + 3 +* RSS = 4 + 5 + 6 +* PSS = 4/3 + 5/2 + 6 +* USS = 6 + +上图中的4这片内存,是libc的代码段在内存驻留的部分,被3个进程共享;5这段内存,是bash的代码段,被2个进程(1044和1045)指向。在计算PSS的时候,这些都需要被比例化。 + +## 监测工具 + +对于Linux系统,一般都会提供ps、top两个命令,Android系统还会提供procrank、dumpsys这两个命令。对于ps、top其只能查到VSS、RSS这两个值;procrank、dumpsys可以提供PSS、USS信息,dumpsys meminfo 可以查出native和dalvik分别占用多少内存。另外,dumpsys可以查询到很多有用的系统信息,比如meminfo、cpuinfo、activity、window、wifi、account等信息。 + +## 参考信息 + +* 性能优化工具(十)- Android内存分析命令: +* 内存耗用:VSS/RSS/PSS/USS: \ No newline at end of file From 34adc7a8de875128fdd779331b242e5ead6661a1 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 1 Sep 2024 12:20:04 +0800 Subject: [PATCH 195/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 8 +- ...46\344\271\240\344\271\213\350\267\257.md" | 5 +- ...46\344\271\240\344\271\213\350\267\257.md" | 1 + ...46\344\271\240\344\271\213\350\267\257.md" | 1 - _posts/2024-06-22-Aloys-Build-Manual.md | 213 +++++++----------- 5 files changed, 97 insertions(+), 131 deletions(-) diff --git "a/_posts/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 01bbf5b..b555ff6 100644 --- "a/_posts/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -40,6 +40,11 @@ toc: true * Xamarin: * Android Support Overview: +* platform-samples: +* input-samples: +* casa-android: +* Now in Android App: + ## AOSP * AOSP项目官网中文: @@ -56,7 +61,6 @@ toc: true ### AOSP构建 -* Building Android: * Codenames, Tags, and Build Numbers: * 将AOSP源码导入到Android Studio进行查看: * Android构建系统: @@ -104,7 +108,6 @@ toc: true * Linux/Android——Input系统之InputReader (七): * Android触摸事件的传递(四-1)--输入系统-InputReader: * Input源码解读——从"Show tabs"开始: -* input-samples: ### 输入法与输入法框架 @@ -504,6 +507,7 @@ toc: true * 用Gradle 构建你的android程序-依赖管理篇: * Android Gradle and the curious case of invisible dependency: +* Gradle的安装及换源: ## Android Studio diff --git "a/_posts/2015-05-19-R\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/2015-05-19-R\345\255\246\344\271\240\344\271\213\350\267\257.md" index 8e517e3..68de9c9 100644 --- "a/_posts/2015-05-19-R\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/2015-05-19-R\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -3,6 +3,8 @@ * R: * The Comprehensive R Archive Network: +* Rtools: + ## RStudio * RStudio: @@ -21,6 +23,7 @@ * Bioconductor: * Shiny(Easy web apps for data science without the compromises): +* colourpicker(A colour picker tool for Shiny and for selecting colours in plots): * R Markdown: * quantmod(Quantitative Financial Modelling & Trading Framework for R): * Tidyverse: @@ -29,7 +32,7 @@ * Plotly R Open Source Graphing Library: * plyr(The split-apply-combine strategy for R): * reshape2(长宽数据转换): -* PerformanceAnalytics(Econometric tools for performance and risk analysis): +* PerformanceAnalytics(Econometric tools for performance and risk analysis): * lavaan(latent variable analysis, 隐变量分析): * brew(用于动态生成文本和代码,类似于模板引擎): * rstatscn(R Interface for China National Data): diff --git "a/_posts/2015-05-19-TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/2015-05-19-TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" index 9228b9d..6269ea6 100644 --- "a/_posts/2015-05-19-TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/2015-05-19-TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -25,6 +25,7 @@ toc: true * The easy to use, online, collaborative LaTeX editor: * jaxedit: +* Typst: * LyX: * BaKoMa TeX Word: * Word-to-LaTeX Converter: diff --git "a/_posts/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index 045c4d7..fd22404 100644 --- "a/_posts/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -19,7 +19,6 @@ toc: true * The Linux Kernel Archives: * Elixir Cross Referencer: -* Linux online: * VGER.KERNEL.ORG(provide email list services for the linux kernel developers): * GNU Operating System: * Free Software Foundation (FSF): diff --git a/_posts/2024-06-22-Aloys-Build-Manual.md b/_posts/2024-06-22-Aloys-Build-Manual.md index a5e9b9e..7e7746d 100644 --- a/_posts/2024-06-22-Aloys-Build-Manual.md +++ b/_posts/2024-06-22-Aloys-Build-Manual.md @@ -2916,6 +2916,91 @@ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf bind-address = 127.0.0.1 ``` +## Ubuntu安装MySQL(安装包方式) + +```shell +root@ubuntu:~# mkdir /usr/local/mysql +root@ubuntu:~# cd /usr/local/mysql/ +root@ubuntu:/usr/local/mysql# groupadd mysql +root@ubuntu:/usr/local/mysql# useradd -r -g mysql -s /bin/false mysql +root@ubuntu:/usr/local/mysql# tar zxvf mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz +root@ubuntu:/usr/local/mysql# cd mysql-5.7.19-linux-glibc2.12-x86_64/ +root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# mkdir mysql-files +root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# chmod 750 mysql-files +root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# chown -R mysql . +root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# chgrp -R mysql . +# 安装过程中会生成一个随机密码,需要记录下来 +root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# bin/mysqld --initialize --user=mysql +root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# bin/mysql_ssl_rsa_setup + +# 添加环境变量 +root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# sudo vim /etc/profile + +export MYSQL_HOME=/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64 +export PATH=$PATH:$MYSQL_HOME/bin + +root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# source /etc/profile + +root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# cd +root@ubuntu:~# mysqld_safe --user=mysql & +[1] 1931893 +root@ubuntu:~# Logging to '/usr/local/mysql/data/ubuntu.err'. +2023-05-19T15:00:22.730000Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data + +root@ubuntu:~# mysql -u root -p +Enter password: +Welcome to the MySQL monitor. Commands end with ; or \g. +Your MySQL connection id is 3 +Server version: 5.7.19 + +Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. + +Oracle is a registered trademark of Oracle Corporation and/or its +affiliates. Other names may be trademarks of their respective +owners. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +mysql> exit +Bye +root@ubuntu:~# mysqladmin -uroot -p'/2jW>kFeerno' password test +mysqladmin: [Warning] Using a password on the command line interface can be insecure. +Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety. +root@ubuntu:~# mysql -u root -p +Enter password: +Welcome to the MySQL monitor. Commands end with ; or \g. +Your MySQL connection id is 5 +Server version: 5.7.19 MySQL Community Server (GPL) + +Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. + +Oracle is a registered trademark of Oracle Corporation and/or its +affiliates. Other names may be trademarks of their respective +owners. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +mysql> select `user`, `host` from mysql.user; ++---------------+-----------+ +| user | host | ++---------------+-----------+ +| mysql.session | localhost | +| mysql.sys | localhost | +| root | localhost | ++---------------+-----------+ +3 rows in set (0.00 sec) + +mysql> update mysql.user set host = '%' where user = 'root'; +Query OK, 1 row affected (0.00 sec) +Rows matched: 1 Changed: 1 Warnings: 0 + +mysql> flush privileges; +Query OK, 0 rows affected (0.00 sec) + +mysql> exit +Bye +``` + ## Windows 10安装MySQL5.5 安装 ![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image177.jpg) @@ -2946,44 +3031,6 @@ bind-address = 127.0.0.1 ```shell jiangxin@db01:~$ sudo apt-get install sqlite3 -[sudo] jiangxin 的密码: -正在读取软件包列表... 完成 -正在分析软件包的依赖关系树 -正在读取状态信息... 完成 -建议安装: - sqlite3-doc -下列【新】软件包将被安装: - sqlite3 -升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 244 个软件包未被升级。 -需要下载 515 kB 的归档。 -解压缩后会消耗 1,938 kB 的额外空间。 -获取:1 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 sqlite3 amd64 3.11.0-1ubuntu1 [515 kB] -已下载 515 kB,耗时 0秒 (713 kB/s) -正在选中未选择的软件包 sqlite3。 -(正在读取数据库 ... 系统当前共安装有 213307 个文件和目录。) -正准备解包 .../sqlite3_3.11.0-1ubuntu1_amd64.deb ... -正在解包 sqlite3 (3.11.0-1ubuntu1) ... -正在处理用于 man-db (2.7.5-1) 的触发器 ... -正在设置 sqlite3 (3.11.0-1ubuntu1) ... -jiangxin@db01:~$ sudo apt-get install sqlite3-doc -正在读取软件包列表... 完成 -正在分析软件包的依赖关系树 -正在读取状态信息... 完成 -下列【新】软件包将被安装: - sqlite3-doc -升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 244 个软件包未被升级。 -需要下载 3,145 kB 的归档。 -解压缩后会消耗 13.4 MB 的额外空间。 -获取:1 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 sqlite3-doc all 3.11.0-1ubuntu1 [3,145 kB] -已下载 3,145 kB,耗时 8秒 (363 kB/s) -正在选中未选择的软件包 sqlite3-doc。 -(正在读取数据库 ... 系统当前共安装有 213313 个文件和目录。) -正准备解包 .../sqlite3-doc_3.11.0-1ubuntu1_all.deb ... -正在解包 sqlite3-doc (3.11.0-1ubuntu1) ... -正在处理用于 doc-base (0.10.7) 的触发器 ... -Processing 1 added doc-base file... -正在设置 sqlite3-doc (3.11.0-1ubuntu1) ... - jiangxin@db01:~$ sqlite3 test.db SQLite version 3.11.0 2016-02-15 17:29:24 Enter ".help" for usage hints. @@ -4230,96 +4277,8 @@ http://124.222.145.48:8080/ ### 安装MySQL -root@ubuntu:~# mkdir /usr/local/mysql -root@ubuntu:~# cd /usr/local/mysql/ -root@ubuntu:/usr/local/mysql# groupadd mysql -root@ubuntu:/usr/local/mysql# useradd -r -g mysql -s /bin/false mysql -root@ubuntu:/usr/local/mysql# tar zxvf mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz -root@ubuntu:/usr/local/mysql# cd mysql-5.7.19-linux-glibc2.12-x86_64/ -root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# mkdir mysql-files -root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# chmod 750 mysql-files -root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# chown -R mysql . -root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# chgrp -R mysql . -root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# bin/mysqld --initialize --user=mysql -2023-05-19T14:53:42.895566Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). -2023-05-19T14:53:42.895679Z 0 [ERROR] Can't find error-message file '/usr/local/mysql/share/errmsg.sys'. Check error-message file location and 'lc-messages-dir' configuration directive. -2023-05-19T14:53:43.307387Z 0 [Warning] InnoDB: New log files created, LSN=45790 -2023-05-19T14:53:43.391326Z 0 [Warning] InnoDB: Creating foreign key constraint system tables. -2023-05-19T14:53:43.460485Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: f319f8fa-f654-11ed-96fb-525400468e37. -2023-05-19T14:53:43.467893Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. -2023-05-19T14:53:43.468453Z 1 [Note] A temporary password is generated for root@localhost: /2jW>kFeerno -root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# bin/mysql_ssl_rsa_setup - - -root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# sudo vim /etc/profile - -export MYSQL_HOME=/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64 -export PATH=$PATH:$MYSQL_HOME/bin - -root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# source /etc/profile - -root@ubuntu:/usr/local/mysql/mysql-5.7.19-linux-glibc2.12-x86_64# cd -root@ubuntu:~# mysqld_safe --user=mysql & -[1] 1931893 -root@ubuntu:~# Logging to '/usr/local/mysql/data/ubuntu.err'. -2023-05-19T15:00:22.730000Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data -root@ubuntu:~# mysql -u root -p -[1] 1931893 -root@ubuntu:~# Logging to '/usr/local/mysql/data/ubuntu.err'. -2023-05-19T15:00:22.730000Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data - -root@ubuntu:~# mysql -u root -p -Enter password: -Welcome to the MySQL monitor. Commands end with ; or \g. -Your MySQL connection id is 3 -Server version: 5.7.19 - -Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. - -Oracle is a registered trademark of Oracle Corporation and/or its -affiliates. Other names may be trademarks of their respective -owners. - -Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. +参考前文 -mysql> exit -Bye -root@ubuntu:~# mysqladmin -uroot -p'/2jW>kFeerno' password test -mysqladmin: [Warning] Using a password on the command line interface can be insecure. -Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety. -root@ubuntu:~# mysql -u root -p -Enter password: -Welcome to the MySQL monitor. Commands end with ; or \g. -Your MySQL connection id is 5 -Server version: 5.7.19 MySQL Community Server (GPL) - -Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. - -Oracle is a registered trademark of Oracle Corporation and/or its -affiliates. Other names may be trademarks of their respective -owners. - -Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. - -mysql> select `user`, `host` from mysql.user; -+---------------+-----------+ -| user | host | -+---------------+-----------+ -| mysql.session | localhost | -| mysql.sys | localhost | -| root | localhost | -+---------------+-----------+ -3 rows in set (0.00 sec) - -mysql> update mysql.user set host = '%' where user = 'root'; -Query OK, 1 row affected (0.00 sec) -Rows matched: 1 Changed: 1 Warnings: 0 - -mysql> flush privileges; -Query OK, 0 rows affected (0.00 sec) - -mysql> exit -Bye ### 部署项目 war包放到$CATALINA_HOME/webapps/目录下,然后重启tomcat shutdown.sh; startup.sh ; tail -f $CATALINA_HOME/logs/catalina.out From 3871e808eacbfe8aaab555a777ae4f704268e133 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 1 Sep 2024 13:13:59 +0800 Subject: [PATCH 196/234] Reorganize the program directory structure. --- README.md | 1 + ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 3 --- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 4 ---- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 4 ---- _posts/{ => android}/2021-01-13-Repo-In-Action.md | 2 +- .../{ => android}/2021-02-14-Android-Build-System.md | 2 +- _posts/{ => android}/2021-02-21-Import-AOSP-To-AS.md | 2 +- .../2012-01-19-how-to-learn-r-by-reading-books.md | 2 +- .../2016-08-23-j-lo-performance-analysissy-tools.md | 2 +- .../2016-08-23-j-lo-performance-analysissy-tools2.md | 2 +- .../2016-08-23-j-lo-performance-analysissy-tools3.md | 2 +- ...-07-Gradle-GradleWrappe-AndroidPluginForGradle.md | 2 +- .../2018-03-11-Groovy-Compiler-Analysis-01.md | 2 +- .../2018-03-11-Groovy-Compiler-Analysis-02.md | 2 +- .../2018-11-04-Publish-to-Maven-Center.md | 2 +- _posts/{ => others}/2018-11-23-Java-Code-Check.md | 2 +- .../{ => others}/2019-04-22-Linux-Memory-Analysis.md | 2 +- _posts/{ => others}/2020-02-10-Cpp-Code-Check.md | 2 +- .../2020-11-21-Package-Manager-In-Ubuntu.md | 2 +- .../{ => others}/2024-01-01-Grep-Sed-Awk-Example.md | 2 +- .../2024-04-13-Password-Recovery-Tools-Analysis.md | 2 +- _posts/{ => others}/2024-06-22-Aloys-Build-Manual.md | 0 ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 10 +++++++++- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 10 +++++++++- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 10 +++++++++- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 11 +++++++++++ ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 10 +++++++++- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 11 ++++++++++- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 12 ++++++++++++ ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 12 ++++++++++++ ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 10 +++++++++- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 10 +++++++++- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 10 +++++++++- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 11 ++++++++++- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 10 +++++++++- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 10 +++++++++- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 10 +++++++++- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 10 +++++++++- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 10 +++++++++- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 10 +++++++++- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...6\236\204\344\270\216\347\256\227\346\263\225.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- ...5\255\246\344\271\240\344\271\213\350\267\257.md" | 2 +- .../vcs/2018-11-03-How_to_merge_two_git_repo.md | 9 +++++++++ ...21-01-09-TortoiseSVN_TortoiseGit_BeyondCompare.md | 2 +- 72 files changed, 230 insertions(+), 74 deletions(-) delete mode 100644 "_posts/2015-05-19-Lua\345\255\246\344\271\240\344\271\213\350\267\257.md" delete mode 100644 "_posts/2015-05-19-Nginx\345\255\246\344\271\240\344\271\213\350\267\257.md" delete mode 100644 "_posts/2015-05-19-OCaml\345\255\246\344\271\240\344\271\213\350\267\257.md" rename _posts/{ => android}/2021-01-13-Repo-In-Action.md (99%) rename _posts/{ => android}/2021-02-14-Android-Build-System.md (99%) rename _posts/{ => android}/2021-02-21-Import-AOSP-To-AS.md (99%) rename _posts/{ => others}/2012-01-19-how-to-learn-r-by-reading-books.md (99%) rename _posts/{ => others}/2016-08-23-j-lo-performance-analysissy-tools.md (99%) rename _posts/{ => others}/2016-08-23-j-lo-performance-analysissy-tools2.md (99%) rename _posts/{ => others}/2016-08-23-j-lo-performance-analysissy-tools3.md (99%) rename _posts/{ => others}/2018-01-07-Gradle-GradleWrappe-AndroidPluginForGradle.md (99%) rename _posts/{ => others}/2018-03-11-Groovy-Compiler-Analysis-01.md (99%) rename _posts/{ => others}/2018-03-11-Groovy-Compiler-Analysis-02.md (99%) rename _posts/{ => others}/2018-11-04-Publish-to-Maven-Center.md (99%) rename _posts/{ => others}/2018-11-23-Java-Code-Check.md (99%) rename _posts/{ => others}/2019-04-22-Linux-Memory-Analysis.md (99%) rename _posts/{ => others}/2020-02-10-Cpp-Code-Check.md (99%) rename _posts/{ => others}/2020-11-21-Package-Manager-In-Ubuntu.md (99%) rename _posts/{ => others}/2024-01-01-Grep-Sed-Awk-Example.md (99%) rename _posts/{ => others}/2024-04-13-Password-Recovery-Tools-Analysis.md (99%) rename _posts/{ => others}/2024-06-22-Aloys-Build-Manual.md (100%) rename "_posts/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" (99%) rename "_posts/2015-05-19-Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" (98%) rename "_posts/2015-05-19-CSharp\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-CSharp\345\255\246\344\271\240\344\271\213\350\267\257.md" (93%) rename "_posts/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" (99%) rename "_posts/2015-05-19-DB\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-DB\345\255\246\344\271\240\344\271\213\350\267\257.md" (99%) rename "_posts/2015-05-19-Docker\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-Docker\345\255\246\344\271\240\344\271\213\350\267\257.md" (96%) rename "_posts/2015-05-19-EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" (99%) rename "_posts/2015-05-19-Erlang\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-Erlang\345\255\246\344\271\240\344\271\213\350\267\257.md" (86%) rename "_posts/2015-05-19-Excel\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-Excel\345\255\246\344\271\240\344\271\213\350\267\257.md" (98%) rename "_posts/2015-05-19-Fortran\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-Fortran\345\255\246\344\271\240\344\271\213\350\267\257.md" (94%) rename "_posts/2015-05-19-Golang\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-Golang\345\255\246\344\271\240\344\271\213\350\267\257.md" (98%) rename "_posts/2015-05-19-Groovy\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-Groovy\345\255\246\344\271\240\344\271\213\350\267\257.md" (94%) rename "_posts/2015-05-19-Haskell\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-Haskell\345\255\246\344\271\240\344\271\213\350\267\257.md" (83%) rename "_posts/2015-05-19-IO\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-IO\345\255\246\344\271\240\344\271\213\350\267\257.md" (87%) rename "_posts/2015-05-19-J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" (99%) rename "_posts/2015-05-19-Kotlin\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-Kotlin\345\255\246\344\271\240\344\271\213\350\267\257.md" (82%) rename "_posts/2015-05-19-Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" (97%) create mode 100644 "_posts/the-way-of-learning/2015-05-19-Lua\345\255\246\344\271\240\344\271\213\350\267\257.md" rename "_posts/2015-05-19-Markdown\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-Markdown\345\255\246\344\271\240\344\271\213\350\267\257.md" (82%) rename "_posts/2015-05-19-Matlab\344\270\216Octave\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-Matlab\344\270\216Octave\345\255\246\344\271\240\344\271\213\350\267\257.md" (89%) create mode 100644 "_posts/the-way-of-learning/2015-05-19-Nginx\345\255\246\344\271\240\344\271\213\350\267\257.md" create mode 100644 "_posts/the-way-of-learning/2015-05-19-OCaml\345\255\246\344\271\240\344\271\213\350\267\257.md" rename "_posts/2015-05-19-OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" (92%) rename "_posts/2015-05-19-OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" (96%) rename "_posts/2015-05-19-PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" (87%) rename "_posts/2015-05-19-Pascal\344\270\216Delphi\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-Pascal\344\270\216Delphi\345\255\246\344\271\240\344\271\213\350\267\257.md" (74%) rename "_posts/2015-05-19-Perl\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-Perl\345\255\246\344\271\240\344\271\213\350\267\257.md" (89%) rename "_posts/2015-05-19-Prolog\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-Prolog\345\255\246\344\271\240\344\271\213\350\267\257.md" (62%) rename "_posts/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" (96%) rename "_posts/2015-05-19-Ruby\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-Ruby\345\255\246\344\271\240\344\271\213\350\267\257.md" (80%) rename "_posts/2015-05-19-Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" (87%) rename "_posts/2015-05-19-R\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-R\345\255\246\344\271\240\344\271\213\350\267\257.md" (96%) rename "_posts/2015-05-19-Scala\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-Scala\345\255\246\344\271\240\344\271\213\350\267\257.md" (95%) rename "_posts/2015-05-19-TCL\344\270\216TK\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-TCL\344\270\216TK\345\255\246\344\271\240\344\271\213\350\267\257.md" (95%) rename "_posts/2015-05-19-TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" (99%) rename "_posts/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" (99%) rename "_posts/2015-05-19-Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" (97%) rename "_posts/2015-05-19-\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" (99%) rename "_posts/2015-05-19-\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" (99%) rename "_posts/2015-05-19-\346\225\260\346\215\256\346\214\226\346\216\230\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-\346\225\260\346\215\256\346\214\226\346\216\230\345\255\246\344\271\240\344\271\213\350\267\257.md" (97%) rename "_posts/2015-05-19-\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225.md" => "_posts/the-way-of-learning/2015-05-19-\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225.md" (95%) rename "_posts/2015-05-19-\346\225\260\347\224\265\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-\346\225\260\347\224\265\345\255\246\344\271\240\344\271\213\350\267\257.md" (92%) rename "_posts/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" (99%) rename "_posts/2015-05-19-\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\255\246\344\271\240\344\271\213\350\267\257.md" (93%) rename "_posts/2015-05-19-\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" (99%) rename "_posts/2015-05-19-\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" (99%) rename "_posts/2015-05-19-\347\274\226\350\257\221\345\216\237\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-\347\274\226\350\257\221\345\216\237\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" (91%) rename "_posts/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" (97%) rename "_drafts/\345\246\202\344\275\225\345\220\210\345\271\266\344\270\244\344\270\252Git\344\273\223\345\272\223.md" => _posts/vcs/2018-11-03-How_to_merge_two_git_repo.md (98%) rename _posts/{ => vcs}/2021-01-09-TortoiseSVN_TortoiseGit_BeyondCompare.md (99%) diff --git a/README.md b/README.md index 22095dd..67dc968 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ 博客地址: +* [原有"学习之路系列博客"](https://jiangxincode.github.io/cnblogs/categories/#the-way-of-learning) * [Github](https://jiangxincode.github.io/cnblogs/) * [博客园](https://www.cnblogs.com/jiangxinnju) diff --git "a/_posts/2015-05-19-Lua\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/2015-05-19-Lua\345\255\246\344\271\240\344\271\213\350\267\257.md" deleted file mode 100644 index 6a6840d..0000000 --- "a/_posts/2015-05-19-Lua\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ /dev/null @@ -1,3 +0,0 @@ -# Lua学习之路 - -* diff --git "a/_posts/2015-05-19-Nginx\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/2015-05-19-Nginx\345\255\246\344\271\240\344\271\213\350\267\257.md" deleted file mode 100644 index aa28a54..0000000 --- "a/_posts/2015-05-19-Nginx\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ /dev/null @@ -1,4 +0,0 @@ -# Nginx学习之路 - -* -* Pre-Built Packages for Stable version: diff --git "a/_posts/2015-05-19-OCaml\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/2015-05-19-OCaml\345\255\246\344\271\240\344\271\213\350\267\257.md" deleted file mode 100644 index 560ca06..0000000 --- "a/_posts/2015-05-19-OCaml\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ /dev/null @@ -1,4 +0,0 @@ -# OCaml学习之路 - -* OCaml: -* opam(OCaml Package Manager): \ No newline at end of file diff --git a/_posts/2021-01-13-Repo-In-Action.md b/_posts/android/2021-01-13-Repo-In-Action.md similarity index 99% rename from _posts/2021-01-13-Repo-In-Action.md rename to _posts/android/2021-01-13-Repo-In-Action.md index 498da54..db3a89d 100644 --- a/_posts/2021-01-13-Repo-In-Action.md +++ b/_posts/android/2021-01-13-Repo-In-Action.md @@ -1,7 +1,7 @@ --- title: "Repo实践指南" categories: - - Blog + - android tags: - Android - Repo diff --git a/_posts/2021-02-14-Android-Build-System.md b/_posts/android/2021-02-14-Android-Build-System.md similarity index 99% rename from _posts/2021-02-14-Android-Build-System.md rename to _posts/android/2021-02-14-Android-Build-System.md index aff4c36..85810f2 100644 --- a/_posts/2021-02-14-Android-Build-System.md +++ b/_posts/android/2021-02-14-Android-Build-System.md @@ -1,7 +1,7 @@ --- title: "Android构建系统" categories: - - Blog + - android tags: - Android - AOSP diff --git a/_posts/2021-02-21-Import-AOSP-To-AS.md b/_posts/android/2021-02-21-Import-AOSP-To-AS.md similarity index 99% rename from _posts/2021-02-21-Import-AOSP-To-AS.md rename to _posts/android/2021-02-21-Import-AOSP-To-AS.md index ec58353..354e3c5 100644 --- a/_posts/2021-02-21-Import-AOSP-To-AS.md +++ b/_posts/android/2021-02-21-Import-AOSP-To-AS.md @@ -1,7 +1,7 @@ --- title: "将AOSP源码导入到Android Studio进行查看" categories: - - Blog + - android tags: - Android - Android Studio diff --git a/_posts/2012-01-19-how-to-learn-r-by-reading-books.md b/_posts/others/2012-01-19-how-to-learn-r-by-reading-books.md similarity index 99% rename from _posts/2012-01-19-how-to-learn-r-by-reading-books.md rename to _posts/others/2012-01-19-how-to-learn-r-by-reading-books.md index 6833395..eaca957 100644 --- a/_posts/2012-01-19-how-to-learn-r-by-reading-books.md +++ b/_posts/others/2012-01-19-how-to-learn-r-by-reading-books.md @@ -1,7 +1,7 @@ --- title: "R语言书籍的学习路线图" categories: - - Blog + - others tags: - R - 书籍 diff --git a/_posts/2016-08-23-j-lo-performance-analysissy-tools.md b/_posts/others/2016-08-23-j-lo-performance-analysissy-tools.md similarity index 99% rename from _posts/2016-08-23-j-lo-performance-analysissy-tools.md rename to _posts/others/2016-08-23-j-lo-performance-analysissy-tools.md index 8587d16..f5c53f9 100644 --- a/_posts/2016-08-23-j-lo-performance-analysissy-tools.md +++ b/_posts/others/2016-08-23-j-lo-performance-analysissy-tools.md @@ -1,7 +1,7 @@ --- title: "Java 性能分析工具,第 1 部分:操作系统工具" categories: - - Blog + - others tags: - Java - 性能分析工具 diff --git a/_posts/2016-08-23-j-lo-performance-analysissy-tools2.md b/_posts/others/2016-08-23-j-lo-performance-analysissy-tools2.md similarity index 99% rename from _posts/2016-08-23-j-lo-performance-analysissy-tools2.md rename to _posts/others/2016-08-23-j-lo-performance-analysissy-tools2.md index 634b8aa..c261fe2 100644 --- a/_posts/2016-08-23-j-lo-performance-analysissy-tools2.md +++ b/_posts/others/2016-08-23-j-lo-performance-analysissy-tools2.md @@ -1,7 +1,7 @@ --- title: "Java 性能分析工具,第 2 部分:Java 内置监控工具" categories: - - Blog + - others tags: - Java - 性能分析工具 diff --git a/_posts/2016-08-23-j-lo-performance-analysissy-tools3.md b/_posts/others/2016-08-23-j-lo-performance-analysissy-tools3.md similarity index 99% rename from _posts/2016-08-23-j-lo-performance-analysissy-tools3.md rename to _posts/others/2016-08-23-j-lo-performance-analysissy-tools3.md index d6e06e8..9afd0e2 100644 --- a/_posts/2016-08-23-j-lo-performance-analysissy-tools3.md +++ b/_posts/others/2016-08-23-j-lo-performance-analysissy-tools3.md @@ -1,7 +1,7 @@ --- title: "Java 性能分析工具,第 3 部分:Java Mission Control" categories: - - Blog + - others tags: - Android - Gradle diff --git a/_posts/2018-01-07-Gradle-GradleWrappe-AndroidPluginForGradle.md b/_posts/others/2018-01-07-Gradle-GradleWrappe-AndroidPluginForGradle.md similarity index 99% rename from _posts/2018-01-07-Gradle-GradleWrappe-AndroidPluginForGradle.md rename to _posts/others/2018-01-07-Gradle-GradleWrappe-AndroidPluginForGradle.md index 997c084..b241db6 100644 --- a/_posts/2018-01-07-Gradle-GradleWrappe-AndroidPluginForGradle.md +++ b/_posts/others/2018-01-07-Gradle-GradleWrappe-AndroidPluginForGradle.md @@ -1,7 +1,7 @@ --- title: "彻底搞懂Gradle_Gradle Wrapper与Android Plugin for Gradle的区别和联系" categories: - - Blog + - others tags: - Android - Gradle diff --git a/_posts/2018-03-11-Groovy-Compiler-Analysis-01.md b/_posts/others/2018-03-11-Groovy-Compiler-Analysis-01.md similarity index 99% rename from _posts/2018-03-11-Groovy-Compiler-Analysis-01.md rename to _posts/others/2018-03-11-Groovy-Compiler-Analysis-01.md index 4843ff8..c78ab00 100644 --- a/_posts/2018-03-11-Groovy-Compiler-Analysis-01.md +++ b/_posts/others/2018-03-11-Groovy-Compiler-Analysis-01.md @@ -1,7 +1,7 @@ --- title: "Groovy实现原理分析——准备工作" categories: - - Blog + - others tags: - Groovy - 源码分析 diff --git a/_posts/2018-03-11-Groovy-Compiler-Analysis-02.md b/_posts/others/2018-03-11-Groovy-Compiler-Analysis-02.md similarity index 99% rename from _posts/2018-03-11-Groovy-Compiler-Analysis-02.md rename to _posts/others/2018-03-11-Groovy-Compiler-Analysis-02.md index 69dc346..14a46d1 100644 --- a/_posts/2018-03-11-Groovy-Compiler-Analysis-02.md +++ b/_posts/others/2018-03-11-Groovy-Compiler-Analysis-02.md @@ -1,7 +1,7 @@ --- title: "Groovy实现原理分析——词法分析、语法分析、生成JVM字节码综述" categories: - - Blog + - others tags: - Groovy - 源码分析 diff --git a/_posts/2018-11-04-Publish-to-Maven-Center.md b/_posts/others/2018-11-04-Publish-to-Maven-Center.md similarity index 99% rename from _posts/2018-11-04-Publish-to-Maven-Center.md rename to _posts/others/2018-11-04-Publish-to-Maven-Center.md index 4e4dbe3..10902eb 100644 --- a/_posts/2018-11-04-Publish-to-Maven-Center.md +++ b/_posts/others/2018-11-04-Publish-to-Maven-Center.md @@ -1,7 +1,7 @@ --- title: "如何发布Maven依赖到中央仓库" categories: - - Blog + - others tags: - Java - Maven diff --git a/_posts/2018-11-23-Java-Code-Check.md b/_posts/others/2018-11-23-Java-Code-Check.md similarity index 99% rename from _posts/2018-11-23-Java-Code-Check.md rename to _posts/others/2018-11-23-Java-Code-Check.md index 09b35ec..3be7427 100644 --- a/_posts/2018-11-23-Java-Code-Check.md +++ b/_posts/others/2018-11-23-Java-Code-Check.md @@ -1,7 +1,7 @@ --- title: "Java代码质量度量工具大阅兵" categories: - - Blog + - others tags: - Java - Code Check diff --git a/_posts/2019-04-22-Linux-Memory-Analysis.md b/_posts/others/2019-04-22-Linux-Memory-Analysis.md similarity index 99% rename from _posts/2019-04-22-Linux-Memory-Analysis.md rename to _posts/others/2019-04-22-Linux-Memory-Analysis.md index 0bfe9ae..6206600 100644 --- a/_posts/2019-04-22-Linux-Memory-Analysis.md +++ b/_posts/others/2019-04-22-Linux-Memory-Analysis.md @@ -1,7 +1,7 @@ --- title: "Linux内存工具解析之RSS/VSS/USS/PSS区别于联系" categories: - - Blog + - others tags: - Linux Memory Analysis --- diff --git a/_posts/2020-02-10-Cpp-Code-Check.md b/_posts/others/2020-02-10-Cpp-Code-Check.md similarity index 99% rename from _posts/2020-02-10-Cpp-Code-Check.md rename to _posts/others/2020-02-10-Cpp-Code-Check.md index 4440ad1..31ee9fb 100644 --- a/_posts/2020-02-10-Cpp-Code-Check.md +++ b/_posts/others/2020-02-10-Cpp-Code-Check.md @@ -1,7 +1,7 @@ --- title: "Cpp代码质量度量工具大阅兵" categories: - - Blog + - others tags: - Cpp - Code Check diff --git a/_posts/2020-11-21-Package-Manager-In-Ubuntu.md b/_posts/others/2020-11-21-Package-Manager-In-Ubuntu.md similarity index 99% rename from _posts/2020-11-21-Package-Manager-In-Ubuntu.md rename to _posts/others/2020-11-21-Package-Manager-In-Ubuntu.md index d00d1d1..98008f1 100644 --- a/_posts/2020-11-21-Package-Manager-In-Ubuntu.md +++ b/_posts/others/2020-11-21-Package-Manager-In-Ubuntu.md @@ -1,7 +1,7 @@ --- title: "彻底搞懂Ubuntu系统上的包管理" categories: - - Blog + - others tags: - Linux - Ubuntu diff --git a/_posts/2024-01-01-Grep-Sed-Awk-Example.md b/_posts/others/2024-01-01-Grep-Sed-Awk-Example.md similarity index 99% rename from _posts/2024-01-01-Grep-Sed-Awk-Example.md rename to _posts/others/2024-01-01-Grep-Sed-Awk-Example.md index fec456d..78ac0b2 100644 --- a/_posts/2024-01-01-Grep-Sed-Awk-Example.md +++ b/_posts/others/2024-01-01-Grep-Sed-Awk-Example.md @@ -1,7 +1,7 @@ --- title: "一个例子掌握grep, sed, awk" categories: - - Blog + - others tags: - Linux - Grep diff --git a/_posts/2024-04-13-Password-Recovery-Tools-Analysis.md b/_posts/others/2024-04-13-Password-Recovery-Tools-Analysis.md similarity index 99% rename from _posts/2024-04-13-Password-Recovery-Tools-Analysis.md rename to _posts/others/2024-04-13-Password-Recovery-Tools-Analysis.md index 7dd1d4c..cc352d0 100644 --- a/_posts/2024-04-13-Password-Recovery-Tools-Analysis.md +++ b/_posts/others/2024-04-13-Password-Recovery-Tools-Analysis.md @@ -1,7 +1,7 @@ --- title: "密码恢复工具分析" categories: - - Blog + - others tags: - Password Recovery --- diff --git a/_posts/2024-06-22-Aloys-Build-Manual.md b/_posts/others/2024-06-22-Aloys-Build-Manual.md similarity index 100% rename from _posts/2024-06-22-Aloys-Build-Manual.md rename to _posts/others/2024-06-22-Aloys-Build-Manual.md diff --git "a/_posts/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 99% rename from "_posts/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index b555ff6..c6138bc 100644 --- "a/_posts/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "Andriod学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - Android diff --git "a/_posts/2015-05-19-Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 98% rename from "_posts/2015-05-19-Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" index ccebd53..826f04d 100644 --- "a/_posts/2015-05-19-Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "Basic学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - Basic diff --git "a/_posts/2015-05-19-CSharp\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-CSharp\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 93% rename from "_posts/2015-05-19-CSharp\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-CSharp\345\255\246\344\271\240\344\271\213\350\267\257.md" index 5179425..72a220a 100644 --- "a/_posts/2015-05-19-CSharp\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-CSharp\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "C#学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - C# diff --git "a/_posts/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 99% rename from "_posts/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 0586415..0440bc9 100644 --- "a/_posts/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "C与C++学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - C diff --git "a/_posts/2015-05-19-DB\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-DB\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 99% rename from "_posts/2015-05-19-DB\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-DB\345\255\246\344\271\240\344\271\213\350\267\257.md" index ec015fe..348acaa 100644 --- "a/_posts/2015-05-19-DB\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-DB\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "Database学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - Database diff --git "a/_posts/2015-05-19-Docker\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Docker\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 96% rename from "_posts/2015-05-19-Docker\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-Docker\345\255\246\344\271\240\344\271\213\350\267\257.md" index e7babd6..17e8100 100644 --- "a/_posts/2015-05-19-Docker\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Docker\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "Docker学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - Docker diff --git "a/_posts/2015-05-19-EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 99% rename from "_posts/2015-05-19-EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 98c7ebb..43be49d 100644 --- "a/_posts/2015-05-19-EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "Editor与IDE学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - Editor diff --git "a/_posts/2015-05-19-Erlang\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Erlang\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 86% rename from "_posts/2015-05-19-Erlang\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-Erlang\345\255\246\344\271\240\344\271\213\350\267\257.md" index b9283ed..2d343ea 100644 --- "a/_posts/2015-05-19-Erlang\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Erlang\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "Erlang学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - Erlang diff --git "a/_posts/2015-05-19-Excel\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Excel\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 98% rename from "_posts/2015-05-19-Excel\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-Excel\345\255\246\344\271\240\344\271\213\350\267\257.md" index 106ddcf..9c8b63b 100644 --- "a/_posts/2015-05-19-Excel\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Excel\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "Excel学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - Excel diff --git "a/_posts/2015-05-19-Fortran\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Fortran\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 94% rename from "_posts/2015-05-19-Fortran\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-Fortran\345\255\246\344\271\240\344\271\213\350\267\257.md" index 8133a12..5014aec 100644 --- "a/_posts/2015-05-19-Fortran\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Fortran\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "Fortran学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - Fortran diff --git "a/_posts/2015-05-19-Golang\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Golang\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 98% rename from "_posts/2015-05-19-Golang\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-Golang\345\255\246\344\271\240\344\271\213\350\267\257.md" index 70112f9..8e5029f 100644 --- "a/_posts/2015-05-19-Golang\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Golang\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "Golang学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - Golang diff --git "a/_posts/2015-05-19-Groovy\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Groovy\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 94% rename from "_posts/2015-05-19-Groovy\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-Groovy\345\255\246\344\271\240\344\271\213\350\267\257.md" index a03131e..4d6fca3 100644 --- "a/_posts/2015-05-19-Groovy\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Groovy\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "Groovy学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - Groovy diff --git "a/_posts/2015-05-19-Haskell\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Haskell\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 83% rename from "_posts/2015-05-19-Haskell\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-Haskell\345\255\246\344\271\240\344\271\213\350\267\257.md" index 280ae23..1dccedf 100644 --- "a/_posts/2015-05-19-Haskell\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Haskell\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "Haskell学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - Haskell diff --git "a/_posts/2015-05-19-IO\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-IO\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 87% rename from "_posts/2015-05-19-IO\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-IO\345\255\246\344\271\240\344\271\213\350\267\257.md" index da44a28..241373c 100644 --- "a/_posts/2015-05-19-IO\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-IO\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "IO学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - IO diff --git "a/_posts/2015-05-19-J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 99% rename from "_posts/2015-05-19-J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 6d5c11c..a001130 100644 --- "a/_posts/2015-05-19-J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,4 +1,12 @@ -# Java学习之路 [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) +--- +title: "Java学习之路" +categories: + - the-way-of-learning +tags: + - 学习之路 + - Java +toc: true +--- ## Java SE diff --git "a/_posts/2015-05-19-Kotlin\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Kotlin\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 82% rename from "_posts/2015-05-19-Kotlin\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-Kotlin\345\255\246\344\271\240\344\271\213\350\267\257.md" index d2f74f3..6f378c5 100644 --- "a/_posts/2015-05-19-Kotlin\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Kotlin\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,4 +1,12 @@ -# Kotlin学习之路 +--- +title: "Kotlin学习之路" +categories: + - the-way-of-learning +tags: + - 学习之路 + - Kotlin +toc: true +--- * * diff --git "a/_posts/2015-05-19-Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 97% rename from "_posts/2015-05-19-Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" index 49cbde7..2a61706 100644 --- "a/_posts/2015-05-19-Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,4 +1,12 @@ -# Lisp学习之路 +--- +title: "Lisp学习之路" +categories: + - the-way-of-learning +tags: + - 学习之路 + - Lisp +toc: true +--- * Common Lisp: * Common Lisp wiki: diff --git "a/_posts/the-way-of-learning/2015-05-19-Lua\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Lua\345\255\246\344\271\240\344\271\213\350\267\257.md" new file mode 100644 index 0000000..1561353 --- /dev/null +++ "b/_posts/the-way-of-learning/2015-05-19-Lua\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -0,0 +1,11 @@ +--- +title: "Lua学习之路" +categories: + - the-way-of-learning +tags: + - 学习之路 + - Lua +toc: true +--- + +* diff --git "a/_posts/2015-05-19-Markdown\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Markdown\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 82% rename from "_posts/2015-05-19-Markdown\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-Markdown\345\255\246\344\271\240\344\271\213\350\267\257.md" index 13a32f5..e1d31d4 100644 --- "a/_posts/2015-05-19-Markdown\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Markdown\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,4 +1,12 @@ -# Markdown学习之路 +--- +title: "Markdown学习之路" +categories: + - the-way-of-learning +tags: + - 学习之路 + - Markdown +toc: true +--- * Markdown 语法说明 (简体中文版): diff --git "a/_posts/2015-05-19-Matlab\344\270\216Octave\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Matlab\344\270\216Octave\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 89% rename from "_posts/2015-05-19-Matlab\344\270\216Octave\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-Matlab\344\270\216Octave\345\255\246\344\271\240\344\271\213\350\267\257.md" index c82857b..fbdc1fb 100644 --- "a/_posts/2015-05-19-Matlab\344\270\216Octave\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Matlab\344\270\216Octave\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,4 +1,13 @@ -# Matlab & Octave学习之路 +--- +title: "Matlab & Octave学习之路" +categories: + - the-way-of-learning +tags: + - 学习之路 + - Matlab + - Octave +toc: true +--- ## Matlab diff --git "a/_posts/the-way-of-learning/2015-05-19-Nginx\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Nginx\345\255\246\344\271\240\344\271\213\350\267\257.md" new file mode 100644 index 0000000..22c7901 --- /dev/null +++ "b/_posts/the-way-of-learning/2015-05-19-Nginx\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -0,0 +1,12 @@ +--- +title: "Nginx学习之路" +categories: + - the-way-of-learning +tags: + - 学习之路 + - Nginx +toc: true +--- + +* +* Pre-Built Packages for Stable version: diff --git "a/_posts/the-way-of-learning/2015-05-19-OCaml\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-OCaml\345\255\246\344\271\240\344\271\213\350\267\257.md" new file mode 100644 index 0000000..bd8c978 --- /dev/null +++ "b/_posts/the-way-of-learning/2015-05-19-OCaml\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -0,0 +1,12 @@ +--- +title: "OCaml学习之路" +categories: + - the-way-of-learning +tags: + - 学习之路 + - OCaml +toc: true +--- + +* OCaml: +* opam(OCaml Package Manager): \ No newline at end of file diff --git "a/_posts/2015-05-19-OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 92% rename from "_posts/2015-05-19-OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" index 7cb6c4c..f8b7601 100644 --- "a/_posts/2015-05-19-OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,4 +1,12 @@ -# OJ学习之路 +--- +title: "OJ学习之路" +categories: + - the-way-of-learning +tags: + - 学习之路 + - OJ +toc: true +--- * ACM竞赛之输入输出: * awesome-algorithm: diff --git "a/_posts/2015-05-19-OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 96% rename from "_posts/2015-05-19-OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" index f057bce..2583f7b 100644 --- "a/_posts/2015-05-19-OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,4 +1,12 @@ -# OpenGL学习之路 +--- +title: "OpenGL学习之路" +categories: + - the-way-of-learning +tags: + - 学习之路 + - OpenGL +toc: true +--- * OpenGL: * GLUT(The OpenGL Utility Toolkit): diff --git "a/_posts/2015-05-19-PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 87% rename from "_posts/2015-05-19-PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" index 0c6d4e9..ea27682 100644 --- "a/_posts/2015-05-19-PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,4 +1,12 @@ -# PHP学习之路 +--- +title: "PHP学习之路" +categories: + - the-way-of-learning +tags: + - 学习之路 + - PHP +toc: true +--- * PHP: * PHP Manual: diff --git "a/_posts/2015-05-19-Pascal\344\270\216Delphi\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Pascal\344\270\216Delphi\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 74% rename from "_posts/2015-05-19-Pascal\344\270\216Delphi\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-Pascal\344\270\216Delphi\345\255\246\344\271\240\344\271\213\350\267\257.md" index 63cb775..113431a 100644 --- "a/_posts/2015-05-19-Pascal\344\270\216Delphi\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Pascal\344\270\216Delphi\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,4 +1,13 @@ -# Pascal与Delphi学习之路 +--- +title: "Pascal&Delphi学习之路" +categories: + - the-way-of-learning +tags: + - 学习之路 + - Pascal + - Delphi +toc: true +--- * free pascal: * free pascal docs: diff --git "a/_posts/2015-05-19-Perl\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Perl\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 89% rename from "_posts/2015-05-19-Perl\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-Perl\345\255\246\344\271\240\344\271\213\350\267\257.md" index 9f3fc05..18d5a17 100644 --- "a/_posts/2015-05-19-Perl\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Perl\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,4 +1,12 @@ -# Perl学习之路 +--- +title: "Perl学习之路" +categories: + - the-way-of-learning +tags: + - 学习之路 + - Perl +toc: true +--- * The Perl Programming Language: * Perl FAQ: diff --git "a/_posts/2015-05-19-Prolog\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Prolog\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 62% rename from "_posts/2015-05-19-Prolog\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-Prolog\345\255\246\344\271\240\344\271\213\350\267\257.md" index 75f7e7d..b405567 100644 --- "a/_posts/2015-05-19-Prolog\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Prolog\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,4 +1,12 @@ -# Prolog学习之路 +--- +title: "Prolog学习之路" +categories: + - the-way-of-learning +tags: + - 学习之路 + - Prolog +toc: true +--- * Visual Prolog: * SWI-Prolog: diff --git "a/_posts/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 96% rename from "_posts/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" index 9cf2f0e..9b88304 100644 --- "a/_posts/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,4 +1,12 @@ -# Python学习之路 +--- +title: "Python学习之路" +categories: + - the-way-of-learning +tags: + - 学习之路 + - Python +toc: true +--- * * diff --git "a/_posts/2015-05-19-Ruby\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Ruby\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 80% rename from "_posts/2015-05-19-Ruby\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-Ruby\345\255\246\344\271\240\344\271\213\350\267\257.md" index 6b55f2f..0ac04ab 100644 --- "a/_posts/2015-05-19-Ruby\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Ruby\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,4 +1,12 @@ -# Ruby学习之路 +--- +title: "Ruby学习之路" +categories: + - the-way-of-learning +tags: + - 学习之路 + - Ruby +toc: true +--- * Ruby: * Help and documentation for the Ruby programming language: diff --git "a/_posts/2015-05-19-Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 87% rename from "_posts/2015-05-19-Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" index a6a5d2d..cbe6a8f 100644 --- "a/_posts/2015-05-19-Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,4 +1,12 @@ -# Rust学习之路 +--- +title: "Rust学习之路" +categories: + - the-way-of-learning +tags: + - 学习之路 + - Rust +toc: true +--- * Rust: diff --git "a/_posts/2015-05-19-R\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-R\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 96% rename from "_posts/2015-05-19-R\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-R\345\255\246\344\271\240\344\271\213\350\267\257.md" index 68de9c9..44ba417 100644 --- "a/_posts/2015-05-19-R\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-R\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,4 +1,12 @@ -# R +--- +title: "R学习之路" +categories: + - the-way-of-learning +tags: + - 学习之路 + - R +toc: true +--- * R: * The Comprehensive R Archive Network: diff --git "a/_posts/2015-05-19-Scala\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Scala\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 95% rename from "_posts/2015-05-19-Scala\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-Scala\345\255\246\344\271\240\344\271\213\350\267\257.md" index 51a33a5..2294a32 100644 --- "a/_posts/2015-05-19-Scala\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Scala\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "Scala学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - Scala diff --git "a/_posts/2015-05-19-TCL\344\270\216TK\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-TCL\344\270\216TK\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 95% rename from "_posts/2015-05-19-TCL\344\270\216TK\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-TCL\344\270\216TK\345\255\246\344\271\240\344\271\213\350\267\257.md" index 44d4510..ef8a627 100644 --- "a/_posts/2015-05-19-TCL\344\270\216TK\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-TCL\344\270\216TK\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "TCL与TK学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - TCL与TK diff --git "a/_posts/2015-05-19-TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 99% rename from "_posts/2015-05-19-TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" index 6269ea6..9cc008d 100644 --- "a/_posts/2015-05-19-TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "TeX学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - TeX diff --git "a/_posts/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 99% rename from "_posts/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index fd22404..4838975 100644 --- "a/_posts/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "Unix与Linux学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - Linux diff --git "a/_posts/2015-05-19-Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 97% rename from "_posts/2015-05-19-Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" index 266315a..59c416d 100644 --- "a/_posts/2015-05-19-Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "Windows学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - Windows diff --git "a/_posts/2015-05-19-\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 99% rename from "_posts/2015-05-19-\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" index 403a720..154571c 100644 --- "a/_posts/2015-05-19-\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "前端学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - 前端 diff --git "a/_posts/2015-05-19-\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 99% rename from "_posts/2015-05-19-\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" index f325663..bb81842 100644 --- "a/_posts/2015-05-19-\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "大数据学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - 大数据 diff --git "a/_posts/2015-05-19-\346\225\260\346\215\256\346\214\226\346\216\230\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\346\225\260\346\215\256\346\214\226\346\216\230\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 97% rename from "_posts/2015-05-19-\346\225\260\346\215\256\346\214\226\346\216\230\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-\346\225\260\346\215\256\346\214\226\346\216\230\345\255\246\344\271\240\344\271\213\350\267\257.md" index d6102de..e4e1401 100644 --- "a/_posts/2015-05-19-\346\225\260\346\215\256\346\214\226\346\216\230\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\346\225\260\346\215\256\346\214\226\346\216\230\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "数据挖掘学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - 数据挖掘 diff --git "a/_posts/2015-05-19-\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225.md" "b/_posts/the-way-of-learning/2015-05-19-\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225.md" similarity index 95% rename from "_posts/2015-05-19-\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225.md" rename to "_posts/the-way-of-learning/2015-05-19-\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225.md" index 01051bd..6a5bef6 100644 --- "a/_posts/2015-05-19-\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225.md" @@ -1,7 +1,7 @@ --- title: "数据结构与算法学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - 数据结构与算法 diff --git "a/_posts/2015-05-19-\346\225\260\347\224\265\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\346\225\260\347\224\265\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 92% rename from "_posts/2015-05-19-\346\225\260\347\224\265\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-\346\225\260\347\224\265\345\255\246\344\271\240\344\271\213\350\267\257.md" index 7141cef..90aafe0 100644 --- "a/_posts/2015-05-19-\346\225\260\347\224\265\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\346\225\260\347\224\265\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "数电学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - 数电 diff --git "a/_posts/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 99% rename from "_posts/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" index 4fd9527..721475e 100644 --- "a/_posts/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "机器学习与人工智能学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - 机器学习 diff --git "a/_posts/2015-05-19-\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 93% rename from "_posts/2015-05-19-\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\255\246\344\271\240\344\271\213\350\267\257.md" index 23d7ecc..743bba2 100644 --- "a/_posts/2015-05-19-\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "正则表达式学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - 正则表达式 diff --git "a/_posts/2015-05-19-\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 99% rename from "_posts/2015-05-19-\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" index aca3172..91fdba8 100644 --- "a/_posts/2015-05-19-\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "汇编学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - 汇编 diff --git "a/_posts/2015-05-19-\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 99% rename from "_posts/2015-05-19-\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 3fefdb0..abcdd39 100644 --- "a/_posts/2015-05-19-\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "VCS(Version Control System)学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - VCS diff --git "a/_posts/2015-05-19-\347\274\226\350\257\221\345\216\237\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\347\274\226\350\257\221\345\216\237\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 91% rename from "_posts/2015-05-19-\347\274\226\350\257\221\345\216\237\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-\347\274\226\350\257\221\345\216\237\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index a8dfa3f..eb1aacf 100644 --- "a/_posts/2015-05-19-\347\274\226\350\257\221\345\216\237\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\347\274\226\350\257\221\345\216\237\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "编译原理学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - 编译原理 diff --git "a/_posts/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 97% rename from "_posts/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" index dfefe92..15a7393 100644 --- "a/_posts/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -1,7 +1,7 @@ --- title: "设计学习之路" categories: - - Blog + - the-way-of-learning tags: - 学习之路 - 设计 diff --git "a/_drafts/\345\246\202\344\275\225\345\220\210\345\271\266\344\270\244\344\270\252Git\344\273\223\345\272\223.md" b/_posts/vcs/2018-11-03-How_to_merge_two_git_repo.md similarity index 98% rename from "_drafts/\345\246\202\344\275\225\345\220\210\345\271\266\344\270\244\344\270\252Git\344\273\223\345\272\223.md" rename to _posts/vcs/2018-11-03-How_to_merge_two_git_repo.md index b2f899f..5325197 100644 --- "a/_drafts/\345\246\202\344\275\225\345\220\210\345\271\266\344\270\244\344\270\252Git\344\273\223\345\272\223.md" +++ b/_posts/vcs/2018-11-03-How_to_merge_two_git_repo.md @@ -1,3 +1,12 @@ +--- +title: "如何合并两个Git仓库" +categories: + - vcs +tags: + - Git +toc: true +--- + 假设有两个Git仓库: diff --git a/_posts/2021-01-09-TortoiseSVN_TortoiseGit_BeyondCompare.md b/_posts/vcs/2021-01-09-TortoiseSVN_TortoiseGit_BeyondCompare.md similarity index 99% rename from _posts/2021-01-09-TortoiseSVN_TortoiseGit_BeyondCompare.md rename to _posts/vcs/2021-01-09-TortoiseSVN_TortoiseGit_BeyondCompare.md index 2ca7b98..1a37a58 100644 --- a/_posts/2021-01-09-TortoiseSVN_TortoiseGit_BeyondCompare.md +++ b/_posts/vcs/2021-01-09-TortoiseSVN_TortoiseGit_BeyondCompare.md @@ -1,7 +1,7 @@ --- title: "在TortoiseSVN/TortoiseGit中使用BeyondCompare进行差异对比" categories: - - Blog + - vcs tags: - TortoiseSVN - TortoiseGit From e345f10468398de49c8c07f7a75f78d551b772ab Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 1 Sep 2024 15:01:25 +0800 Subject: [PATCH 197/234] Reorganize the directory structure 2. --- ...73\245C\344\270\216C++\344\270\272\344\276\213\357\274\211.md" | 0 ...46\226\207\344\273\266\347\273\223\346\235\237\347\254\246.md" | 0 ...50\257\221\351\224\231\350\257\257cannot have cv-qualifier.md" | 0 ...47\232\204\347\224\250\346\263\225\345\256\236\344\276\213.md" | 0 ...04abort\343\200\201atexit\343\200\201exit\345\222\214_Exit.md" | 0 ...45\244\247\346\225\260\345\272\223\347\256\200\344\273\213.md" | 0 ...ocks+gtest\347\216\257\345\242\203\351\205\215\347\275\256.md" | 0 ...46\225\260\347\233\270\345\205\263\351\227\256\351\242\230.md" | 0 .../const \344\270\215\345\206\215\350\277\267\350\214\253.md" | 0 ...\207\272VS\346\226\207\344\273\266\350\276\223\345\207\272.md" | 0 ...7\275\346\225\260clock\346\203\263\345\210\260\347\232\204.md" | 0 ...216\267\345\276\227CPU\347\232\204\344\270\273\351\242\221.md" | 0 ...)SQLServer\345\256\236\344\276\213\350\256\262\350\247\243.md" | 0 .../DB2\345\270\270\347\224\250\350\257\255\345\217\245.md" | 0 ...45\205\266\350\247\243\345\206\263\346\226\271\345\274\217.md" | 0 ...51\273\230\350\256\244\346\225\260\346\215\256\345\272\223.md" | 0 ...n\345\222\214processes\347\232\204\350\256\276\347\275\256.md" | 0 ...45\207\272\345\270\270\347\224\250\345\221\275\344\273\244.md" | 0 ...224\250SQL\350\257\255\345\217\245\346\224\266\351\233\206.md" | 0 ...SQL Server\345\270\270\347\224\250\350\257\255\345\217\245.md" | 0 ...51\242\230\350\247\243\345\206\263\345\212\236\346\263\225.md" | 0 ...226\271\346\263\225(\350\275\254+\346\225\264\347\220\206).md" | 0 ...45\272\223\357\274\237\357\274\210\350\275\254\357\274\211.md" | 0 ...46\210\267\345\220\215\345\222\214\345\257\206\347\240\201.md" | 0 ...45\272\223\347\233\270\345\205\263\346\200\273\347\273\223.md" | 0 ...45\210\260\344\270\255\345\244\256\344\273\223\345\272\223.md" | 0 ...5\242Log4j\347\272\247\345\210\253\351\205\215\347\275\256.md" | 0 ... TreeTable\346\240\267\344\276\213\346\214\207\345\257\274.md" | 0 ...45\267\245\345\205\267\347\232\204\345\205\263\347\263\273.md" | 0 ...46\226\271\346\263\225\347\232\204\345\214\272\345\210\253.md" | 0 ...45\242\203\351\227\256\351\242\230\345\210\206\346\236\220.md" | 0 ...7\275\256\344\270\216\346\265\213\350\257\225 \350\275\254.md" | 0 ...46\217\220\351\200\237\345\260\217\346\212\200\345\267\247.md" | 0 .../Eclipse\347\233\270\345\205\263\351\227\256\351\242\230.md" | 0 ...47\232\204\350\247\243\345\206\263\346\226\271\346\241\210.md" | 0 .../Java/FindBugs\350\257\246\350\247\243.md" | 0 .../Java/HBase\344\273\213\347\273\215.md" | 0 .../Java/Hibernate\344\270\216autoCommit.md" | 0 ...uiteMethod\350\247\243\345\206\263\346\226\271\346\263\225.md" | 0 ...46\200\273\347\273\223\357\274\210\350\275\254\357\274\211.md" | 0 .../Java/Java\346\235\202\351\241\271.md" | 0 ...50\207\264\351\227\256\351\242\230\346\261\207\346\200\273.md" | 0 .../Peer Code Reviews Made Easy with Eclipse Plug-In.md | 0 ...45\217\226\357\274\211\357\274\210\350\275\254\357\274\211.md" | 0 ...45\210\206\346\236\220\357\274\210\350\275\254\357\274\211.md" | 0 ...1\212\350\255\246[WARNING] No dictionary file under folder.md" | 0 ...cted that some class files are present in two or more JARs.md" | 0 ...ect URL defined - decoration links will not be relativized.md" | 0 ...]\345\221\212\350\255\246[WARNING] Using legacy tag format.md" | 0 ...6[WARNING] Unable to create Maven project from repository..md" | 0 ...dar.getInstance().getTimeInMillis()]_[new Date().getTime()].md | 0 ...346\234\254\346\233\264\346\226\260(web site) \350\275\254.md" | 0 .../javadoc\347\233\270\345\205\263\351\227\256\351\242\230.md" | 0 ...he.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.md" | 0 ...-info.java\346\226\207\344\273\266\350\257\246\350\247\243.md" | 0 ...47\224\237\346\210\220\345\267\245\345\205\267\345\214\205.md" | 0 ...57\274\214\345\220\257\345\212\250\346\212\245\351\224\231.md" | 0 ...47\232\204\347\261\273\345\206\205\345\256\271\343\200\202.md" | 0 ...232\204configuration\347\233\256\345\275\225[\350\275\254].md" | 0 ...47\264\242\347\211\271\345\256\232\345\255\227\347\254\246.md" | 0 ...71\263\345\217\260\347\232\204Java\344\273\243\347\240\201.md" | 0 ...\221Apache Hadoop2.2.0\346\272\220\344\273\243\347\240\201.md" | 0 ...50\277\233\347\250\213\347\232\204\351\227\256\351\242\230.md" | 0 ...45\274\217\346\272\220\347\240\201\350\247\243\346\236\220.md" | 0 ...46\221\270\344\275\215\347\275\256\346\230\276\347\244\272.md" | 0 ...5\231\250\344\270\212\347\232\204C\344\273\243\347\240\201.md" | 0 ...Ubuntu\346\211\251\345\256\271swap\346\226\207\344\273\266.md" | 0 .../Linux/Android OTA\345\215\207\347\272\247.md" | 0 ...47\224\250\346\217\222\344\273\266\346\261\207\346\200\273.md" | 0 ...45\205\263\347\233\256\345\275\225\350\247\243\346\236\220.md" | 0 ...47\232\204\350\256\276\347\275\256\346\226\271\346\263\225.md" | 0 ...OpenCV_GLM\351\233\206\346\210\220\350\257\264\346\230\216.md" | 0 ...211\350\243\205sqlite3\347\232\204\346\226\271\346\263\225.md" | 0 ...211\350\243\205\346\234\200\346\226\260\347\232\204Eclipse.md" | 0 ...45\216\213\345\270\270\347\224\250\345\221\275\344\273\244.md" | 0 .../Linux/Linux\345\277\253\346\215\267\351\224\256.md" | 0 ...51\224\256\345\256\211\350\243\205\350\204\232\346\234\254.md" | 0 ...44\275\277\347\224\250\346\226\271\345\220\221\351\224\256.md" | 0 ...47\232\204\350\247\243\345\206\263\345\212\236\346\263\225.md" | 0 ...50\247\201\351\224\231\350\257\257\346\200\273\347\273\223.md" | 0 ...4"Read-only file system"\351\227\256\351\242\230.md" | 0 ...46\210\277\350\217\234\345\213\230\350\257\257\350\241\250.md" | 0 ...50\243\205\347\250\213\345\272\217\346\225\231\347\250\213.md" | 0 ...72207LaTeX\345\206\205\345\256\271\346\200\273\347\273\223.md" | 0 ...50\247\201\351\227\256\351\242\230\346\200\273\347\273\223.md" | 0 ...usionWebui\347\216\257\345\242\203\346\220\255\345\273\272.md" | 0 ...45\217\221\345\270\203\344\272\206\357\274\201\357\274\201.md" | 0 .../Cache\346\250\241\346\213\237\345\231\250(CacheSim).md" | 0 _drafts/{ => Others}/ChooseYourBest.md | 0 ...4\344\273\216"Show tabs"\345\274\200\345\247\213.md" | 0 _drafts/{ => Others}/Lecture Notes_ Macros.md | 0 .../MIPSsim\344\275\277\347\224\250\350\257\264\346\230\216.md" | 0 .../Others/OOAD\344\270\216UML\347\254\224\350\256\260.md" | 0 ...45\272\223\343\200\201\346\241\206\346\236\266\347\255\211.md" | 0 .../Rdseed\344\270\216SAC\347\232\204\345\256\211\350\243\205.md" | 0 ...5\256\271\346\233\264\346\226\260\344\274\230\345\214\226).md" | 0 _drafts/{ => Others}/Use the SVN command-line tool.md | 0 ...50\247\201\347\224\250\346\263\225\346\200\273\347\273\223.md" | 0 ...45\205\263\351\227\256\351\242\230\346\200\273\347\273\223.md" | 0 ...\214\345\274\200\345\217\221Hadoop\345\272\224\347\224\250.md" | 0 ...47\234\213\345\267\245\345\205\267\345\220\210\351\233\206.md" | 0 ...47\224\250\351\227\256\351\242\230\346\261\207\346\200\273.md" | 0 .../astyle \344\275\277\347\224\250\350\257\264\346\230\216.md" | 0 ...50\200\214\347\273\210\346\255\242\350\277\220\347\256\227.md" | 0 .../tcpdump\346\215\225\346\215\211\346\240\267\344\276\213.md" | 0 ...50\257\225\350\277\207\347\250\213\346\200\273\347\273\223.md" | 0 ...45\244\232\345\260\221\350\241\214\344\273\243\347\240\201.md" | 0 ...46\215\242\344\275\215\347\275\256\345\207\275\346\225\260.md" | 0 ...7\273\204\351\203\275\344\273\2160\345\274\200\345\247\213.md" | 0 ...45\256\214\344\270\215\346\210\220\347\233\256\346\240\207.md" | 0 ...51\222\245\345\215\217\345\225\206\345\212\237\350\203\275.md" | 0 ...45\214\226\346\210\221\347\232\204\345\267\245\344\275\234.md" | 0 ...50\257\255\350\250\200\347\232\204\345\214\272\345\210\253.md" | 0 ...45\207\240\344\270\252\345\260\217\345\277\203\345\276\227.md" | 0 ...46\257\224\350\276\203\357\274\210\350\275\254\357\274\211.md" | 0 ...6\230\257\344\270\215\346\230\2572\347\232\204\345\271\202.md" | 0 ...47\232\204\350\277\207\347\250\213\350\256\260\345\275\225.md" | 0 ...242\347\232\204\347\274\226\347\250\213\351\242\230(C_C++).md" | 0 ...44\270\200\346\254\241\351\201\215\345\216\206\357\274\211.md" | 0 ...45\276\252\347\216\257\351\223\276\350\241\250\357\274\211.md" | 0 ...46\225\231\347\250\213\357\274\210\350\275\254\357\274\211.md" | 0 ...51\201\207\345\210\260\347\232\204\351\227\256\351\242\230.md" | 0 ...45\257\271\350\261\241\347\232\204\345\214\272\345\210\253.md" | 0 ...44\271\261\347\240\201\344\270\200\351\224\205\347\202\226.md" | 0 ...45\206\205\345\255\230\346\261\240\345\211\226\346\236\220.md" | 0 ...45\267\245\345\205\267\357\274\210\350\275\254\357\274\211.md" | 0 ...\256\345\244\215markdownlint MD034\350\255\246\345\221\212.md" | 0 ...7\256\351\242\230(split-brain problem in HA)(\350\275\254).md" | 0 128 files changed, 0 insertions(+), 0 deletions(-) rename "_drafts/ACM\347\253\236\350\265\233\344\271\213\350\276\223\345\205\245\350\276\223\345\207\272\357\274\210\344\273\245C\344\270\216C++\344\270\272\344\276\213\357\274\211.md" => "_drafts/C_Cpp/ACM\347\253\236\350\265\233\344\271\213\350\276\223\345\205\245\350\276\223\345\207\272\357\274\210\344\273\245C\344\270\216C++\344\270\272\344\276\213\357\274\211.md" (100%) rename "_drafts/C++\344\273\216\351\224\256\347\233\230\350\276\223\345\205\245\346\226\207\344\273\266\347\273\223\346\235\237\347\254\246.md" => "_drafts/C_Cpp/C++\344\273\216\351\224\256\347\233\230\350\276\223\345\205\245\346\226\207\344\273\266\347\273\223\346\235\237\347\254\246.md" (100%) rename "_drafts/C++\347\274\226\350\257\221\351\224\231\350\257\257cannot have cv-qualifier.md" => "_drafts/C_Cpp/C++\347\274\226\350\257\221\351\224\231\350\257\257cannot have cv-qualifier.md" (100%) rename "_drafts/C++\350\257\255\350\250\200\344\270\255cin cin.getline cin.get getline gets getchar \347\232\204\347\224\250\346\263\225\345\256\236\344\276\213.md" => "_drafts/C_Cpp/C++\350\257\255\350\250\200\344\270\255cin cin.getline cin.get getline gets getchar \347\232\204\347\224\250\346\263\225\345\256\236\344\276\213.md" (100%) rename "_drafts/C_C++\344\270\255\347\232\204abort\343\200\201atexit\343\200\201exit\345\222\214_Exit.md" => "_drafts/C_Cpp/C_C++\344\270\255\347\232\204abort\343\200\201atexit\343\200\201exit\345\222\214_Exit.md" (100%) rename "_drafts/C_C++\345\244\247\346\225\260\345\272\223\347\256\200\344\273\213.md" => "_drafts/C_Cpp/C_C++\345\244\247\346\225\260\345\272\223\347\256\200\344\273\213.md" (100%) rename "_drafts/Code Blocks+gtest\347\216\257\345\242\203\351\205\215\347\275\256.md" => "_drafts/C_Cpp/Code Blocks+gtest\347\216\257\345\242\203\351\205\215\347\275\256.md" (100%) rename "_drafts/C\350\257\255\350\250\200\344\270\255\351\232\217\346\234\272\346\225\260\347\233\270\345\205\263\351\227\256\351\242\230.md" => "_drafts/C_Cpp/C\350\257\255\350\250\200\344\270\255\351\232\217\346\234\272\346\225\260\347\233\270\345\205\263\351\227\256\351\242\230.md" (100%) rename "_drafts/const \344\270\215\345\206\215\350\277\267\350\214\253.md" => "_drafts/C_Cpp/const \344\270\215\345\206\215\350\277\267\350\214\253.md" (100%) rename "_drafts/\345\261\217\345\271\225\350\276\223\345\207\272VS\346\226\207\344\273\266\350\276\223\345\207\272.md" => "_drafts/C_Cpp/\345\261\217\345\271\225\350\276\223\345\207\272VS\346\226\207\344\273\266\350\276\223\345\207\272.md" (100%) rename "_drafts/\347\224\261\345\207\275\346\225\260clock\346\203\263\345\210\260\347\232\204.md" => "_drafts/C_Cpp/\347\224\261\345\207\275\346\225\260clock\346\203\263\345\210\260\347\232\204.md" (100%) rename "_drafts/\347\274\226\347\250\213\350\216\267\345\276\227CPU\347\232\204\344\270\273\351\242\221.md" => "_drafts/C_Cpp/\347\274\226\347\250\213\350\216\267\345\276\227CPU\347\232\204\344\270\273\351\242\221.md" (100%) rename "_drafts/(\350\275\254)SQLServer\345\256\236\344\276\213\350\256\262\350\247\243.md" => "_drafts/Database/(\350\275\254)SQLServer\345\256\236\344\276\213\350\256\262\350\247\243.md" (100%) rename "_drafts/DB2\345\270\270\347\224\250\350\257\255\345\217\245.md" => "_drafts/Database/DB2\345\270\270\347\224\250\350\257\255\345\217\245.md" (100%) rename "_drafts/MYSQL\345\270\270\350\247\201\351\224\231\350\257\257\345\217\212\345\205\266\350\247\243\345\206\263\346\226\271\345\274\217.md" => "_drafts/Database/MYSQL\345\270\270\350\247\201\351\224\231\350\257\257\345\217\212\345\205\266\350\247\243\345\206\263\346\226\271\345\274\217.md" (100%) rename "_drafts/MySQL\351\273\230\350\256\244\346\225\260\346\215\256\345\272\223.md" => "_drafts/Database/MySQL\351\273\230\350\256\244\346\225\260\346\215\256\345\272\223.md" (100%) rename "_drafts/Oracle\344\270\255session\345\222\214processes\347\232\204\350\256\276\347\275\256.md" => "_drafts/Database/Oracle\344\270\255session\345\222\214processes\347\232\204\350\256\276\347\275\256.md" (100%) rename "_drafts/Oracle\345\257\274\345\205\245\345\257\274\345\207\272\345\270\270\347\224\250\345\221\275\344\273\244.md" => "_drafts/Database/Oracle\345\257\274\345\205\245\345\257\274\345\207\272\345\270\270\347\224\250\345\221\275\344\273\244.md" (100%) rename "_drafts/Oracle\347\263\273\347\273\237\350\241\250\346\225\264\347\220\206+\345\270\270\347\224\250SQL\350\257\255\345\217\245\346\224\266\351\233\206.md" => "_drafts/Database/Oracle\347\263\273\347\273\237\350\241\250\346\225\264\347\220\206+\345\270\270\347\224\250SQL\350\257\255\345\217\245\346\224\266\351\233\206.md" (100%) rename "_drafts/SQL Server\345\270\270\347\224\250\350\257\255\345\217\245.md" => "_drafts/Database/SQL Server\345\270\270\347\224\250\350\257\255\345\217\245.md" (100%) rename "_drafts/oracle\350\241\250\347\251\272\351\227\264\344\270\215\350\266\263\347\233\270\345\205\263\351\227\256\351\242\230\350\247\243\345\206\263\345\212\236\346\263\225.md" => "_drafts/Database/oracle\350\241\250\347\251\272\351\227\264\344\270\215\350\266\263\347\233\270\345\205\263\351\227\256\351\242\230\350\247\243\345\206\263\345\212\236\346\263\225.md" (100%) rename "_drafts/oracle\350\241\250\347\251\272\351\227\264\350\241\250\345\210\206\345\214\272\350\257\246\350\247\243\345\217\212oracle\350\241\250\345\210\206\345\214\272\346\237\245\350\257\242\344\275\277\347\224\250\346\226\271\346\263\225(\350\275\254+\346\225\264\347\220\206).md" => "_drafts/Database/oracle\350\241\250\347\251\272\351\227\264\350\241\250\345\210\206\345\214\272\350\257\246\350\247\243\345\217\212oracle\350\241\250\345\210\206\345\214\272\346\237\245\350\257\242\344\275\277\347\224\250\346\226\271\346\263\225(\350\275\254+\346\225\264\347\220\206).md" (100%) rename "_drafts/\345\246\202\344\275\225\345\273\272\347\253\213DB2\345\210\206\345\214\272\346\225\260\346\215\256\345\272\223\357\274\237\357\274\210\350\275\254\357\274\211.md" => "_drafts/Database/\345\246\202\344\275\225\345\273\272\347\253\213DB2\345\210\206\345\214\272\346\225\260\346\215\256\345\272\223\357\274\237\357\274\210\350\275\254\357\274\211.md" (100%) rename "_drafts/\345\277\230\350\256\260oracle\347\232\204sys\347\224\250\346\210\267\345\257\206\347\240\201\346\200\216\344\271\210\344\277\256\346\224\271\344\273\245\345\217\212Oracle 11g \351\273\230\350\256\244\347\224\250\346\210\267\345\220\215\345\222\214\345\257\206\347\240\201.md" => "_drafts/Database/\345\277\230\350\256\260oracle\347\232\204sys\347\224\250\346\210\267\345\257\206\347\240\201\346\200\216\344\271\210\344\277\256\346\224\271\344\273\245\345\217\212Oracle 11g \351\273\230\350\256\244\347\224\250\346\210\267\345\220\215\345\222\214\345\257\206\347\240\201.md" (100%) rename "_drafts/\346\225\260\346\215\256\345\272\223\347\233\270\345\205\263\346\200\273\347\273\223.md" => "_drafts/Database/\346\225\260\346\215\256\345\272\223\347\233\270\345\205\263\346\200\273\347\273\223.md" (100%) rename "_drafts/202110171056\345\246\202\344\275\225\345\260\206cpdetector\345\217\221\345\270\203Maven\344\276\235\350\265\226\345\210\260\344\270\255\345\244\256\344\273\223\345\272\223.md" => "_drafts/Java/202110171056\345\246\202\344\275\225\345\260\206cpdetector\345\217\221\345\270\203Maven\344\276\235\350\265\226\345\210\260\344\270\255\345\244\256\344\273\223\345\272\223.md" (100%) rename "_drafts/202209041204\347\203\255\345\210\207\346\215\242Log4j\347\272\247\345\210\253\351\205\215\347\275\256.md" => "_drafts/Java/202209041204\347\203\255\345\210\207\346\215\242Log4j\347\272\247\345\210\253\351\205\215\347\275\256.md" (100%) rename "_drafts/202301072303Java Swing TreeTable\346\240\267\344\276\213\346\214\207\345\257\274.md" => "_drafts/Java/202301072303Java Swing TreeTable\346\240\267\344\276\213\346\214\207\345\257\274.md" (100%) rename "_drafts/20\345\210\206\351\222\237\347\220\206\346\270\205Maven\346\236\204\345\273\272\344\270\255\347\232\204\346\265\213\350\257\225\347\233\270\345\205\263\345\267\245\345\205\267\347\232\204\345\205\263\347\263\273.md" => "_drafts/Java/20\345\210\206\351\222\237\347\220\206\346\270\205Maven\346\236\204\345\273\272\344\270\255\347\232\204\346\265\213\350\257\225\347\233\270\345\205\263\345\267\245\345\205\267\347\232\204\345\205\263\347\263\273.md" (100%) rename "_drafts/Calendar\347\261\273\344\270\255add_set_roll\346\226\271\346\263\225\347\232\204\345\214\272\345\210\253.md" => "_drafts/Java/Calendar\347\261\273\344\270\255add_set_roll\346\226\271\346\263\225\347\232\204\345\214\272\345\210\253.md" (100%) rename "_drafts/Eclipse+Spark\346\220\255\345\273\272\346\272\220\347\240\201\345\210\206\346\236\220\347\216\257\345\242\203\351\227\256\351\242\230\345\210\206\346\236\220.md" => "_drafts/Java/Eclipse+Spark\346\220\255\345\273\272\346\272\220\347\240\201\345\210\206\346\236\220\347\216\257\345\242\203\351\227\256\351\242\230\345\210\206\346\236\220.md" (100%) rename "_drafts/Eclipse\344\270\255Ant\347\232\204\351\205\215\347\275\256\344\270\216\346\265\213\350\257\225 \350\275\254.md" => "_drafts/Java/Eclipse\344\270\255Ant\347\232\204\351\205\215\347\275\256\344\270\216\346\265\213\350\257\225 \350\275\254.md" (100%) rename "_drafts/Eclipse\345\205\250\351\235\242\346\217\220\351\200\237\345\260\217\346\212\200\345\267\247.md" => "_drafts/Java/Eclipse\345\205\250\351\235\242\346\217\220\351\200\237\345\260\217\346\212\200\345\267\247.md" (100%) rename "_drafts/Eclipse\347\233\270\345\205\263\351\227\256\351\242\230.md" => "_drafts/Java/Eclipse\347\233\270\345\205\263\351\227\256\351\242\230.md" (100%) rename "_drafts/Eclipse\350\277\234\347\250\213\350\260\203\350\257\225\345\207\272\347\216\260\342\200\234JDWP Transport dt_socket failed to initialize\342\200\235\347\232\204\350\247\243\345\206\263\346\226\271\346\241\210.md" => "_drafts/Java/Eclipse\350\277\234\347\250\213\350\260\203\350\257\225\345\207\272\347\216\260\342\200\234JDWP Transport dt_socket failed to initialize\342\200\235\347\232\204\350\247\243\345\206\263\346\226\271\346\241\210.md" (100%) rename "_drafts/FindBugs\350\257\246\350\247\243.md" => "_drafts/Java/FindBugs\350\257\246\350\247\243.md" (100%) rename "_drafts/HBase\344\273\213\347\273\215.md" => "_drafts/Java/HBase\344\273\213\347\273\215.md" (100%) rename "_drafts/Hibernate\344\270\216autoCommit.md" => "_drafts/Java/Hibernate\344\270\216autoCommit.md" (100%) rename "_drafts/JUnit org.junit.runner.Request.classWithoutSuiteMethod\350\247\243\345\206\263\346\226\271\346\263\225.md" => "_drafts/Java/JUnit org.junit.runner.Request.classWithoutSuiteMethod\350\247\243\345\206\263\346\226\271\346\263\225.md" (100%) rename "_drafts/JVM\350\260\203\344\274\230\346\200\273\347\273\223\357\274\210\350\275\254\357\274\211.md" => "_drafts/Java/JVM\350\260\203\344\274\230\346\200\273\347\273\223\357\274\210\350\275\254\357\274\211.md" (100%) rename "_drafts/Java\346\235\202\351\241\271.md" => "_drafts/Java/Java\346\235\202\351\241\271.md" (100%) rename "_drafts/Java\350\277\234\347\250\213\350\260\203\350\257\225\344\273\243\347\240\201\344\270\215\344\270\200\350\207\264\351\227\256\351\242\230\346\261\207\346\200\273.md" => "_drafts/Java/Java\350\277\234\347\250\213\350\260\203\350\257\225\344\273\243\347\240\201\344\270\215\344\270\200\350\207\264\351\227\256\351\242\230\346\261\207\346\200\273.md" (100%) rename _drafts/{ => Java}/Peer Code Reviews Made Easy with Eclipse Plug-In.md (100%) rename "_drafts/ServletInputStream\347\232\204\351\207\215\345\244\215\350\257\273\345\217\226\357\274\210\345\244\232\346\254\241\350\257\273\345\217\226\357\274\211\357\274\210\350\275\254\357\274\211.md" => "_drafts/Java/ServletInputStream\347\232\204\351\207\215\345\244\215\350\257\273\345\217\226\357\274\210\345\244\232\346\254\241\350\257\273\345\217\226\357\274\211\357\274\210\350\275\254\357\274\211.md" (100%) rename "_drafts/Spring\346\241\206\346\236\266\347\232\204\345\217\215\345\272\217\345\210\227\345\214\226\350\277\234\347\250\213\344\273\243\347\240\201\346\211\247\350\241\214\346\274\217\346\264\236\345\210\206\346\236\220\357\274\210\350\275\254\357\274\211.md" => "_drafts/Java/Spring\346\241\206\346\236\266\347\232\204\345\217\215\345\272\217\345\210\227\345\214\226\350\277\234\347\250\213\344\273\243\347\240\201\346\211\247\350\241\214\346\274\217\346\264\236\345\210\206\346\236\220\357\274\210\350\275\254\357\274\211.md" (100%) rename "_drafts/[Maven][l10n-maven-plugin]\345\221\212\350\255\246[WARNING] No dictionary file under folder.md" => "_drafts/Java/[Maven][l10n-maven-plugin]\345\221\212\350\255\246[WARNING] No dictionary file under folder.md" (100%) rename "_drafts/[Maven][maven-shade-plugin]\345\221\212\350\255\246[WARNING] maven-shade-plugin has detected that some class files are present in two or more JARs.md" => "_drafts/Java/[Maven][maven-shade-plugin]\345\221\212\350\255\246[WARNING] maven-shade-plugin has detected that some class files are present in two or more JARs.md" (100%) rename "_drafts/[Maven][maven-site-plugin]\345\221\212\350\255\246[WARNING] No project URL defined - decoration links will not be relativized.md" => "_drafts/Java/[Maven][maven-site-plugin]\345\221\212\350\255\246[WARNING] No project URL defined - decoration links will not be relativized.md" (100%) rename "_drafts/[Maven][taglist-maven-plugin]\345\221\212\350\255\246[WARNING] Using legacy tag format.md" => "_drafts/Java/[Maven][taglist-maven-plugin]\345\221\212\350\255\246[WARNING] Using legacy tag format.md" (100%) rename "_drafts/[Maven]\345\221\212\350\255\246[WARNING] Unable to create Maven project from repository..md" => "_drafts/Java/[Maven]\345\221\212\350\255\246[WARNING] Unable to create Maven project from repository..md" (100%) rename _drafts/{ => Java}/[System.currentTimeMillis]_[Calendar.getInstance().getTimeInMillis()]_[new Date().getTime()].md (100%) rename "_drafts/eclipse\346\217\222\344\273\266\345\234\250\347\272\277\345\217\221\345\270\203\345\217\221\345\270\203\345\222\214\347\211\210\346\234\254\346\233\264\346\226\260(web site) \350\275\254.md" => "_drafts/Java/eclipse\346\217\222\344\273\266\345\234\250\347\272\277\345\217\221\345\270\203\345\217\221\345\270\203\345\222\214\347\211\210\346\234\254\346\233\264\346\226\260(web site) \350\275\254.md" (100%) rename "_drafts/javadoc\347\233\270\345\205\263\351\227\256\351\242\230.md" => "_drafts/Java/javadoc\347\233\270\345\205\263\351\227\256\351\242\230.md" (100%) rename "_drafts/org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter\344\270\216org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.md" => "_drafts/Java/org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter\344\270\216org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.md" (100%) rename "_drafts/package-info.java\346\226\207\344\273\266\350\257\246\350\247\243.md" => "_drafts/Java/package-info.java\346\226\207\344\273\266\350\257\246\350\247\243.md" (100%) rename "_drafts/\344\270\200\344\270\252\346\257\224\350\276\203\345\205\250\351\235\242\347\232\204java\351\232\217\346\234\272\346\225\260\346\215\256\347\224\237\346\210\220\345\267\245\345\205\267\345\214\205.md" => "_drafts/Java/\344\270\200\344\270\252\346\257\224\350\276\203\345\205\250\351\235\242\347\232\204java\351\232\217\346\234\272\346\225\260\346\215\256\347\224\237\346\210\220\345\267\245\345\205\267\345\214\205.md" (100%) rename "_drafts/\344\275\277\347\224\250CXF+Spring\345\217\221\345\270\203WebService\357\274\214\345\220\257\345\212\250\346\212\245\351\224\231.md" => "_drafts/Java/\344\275\277\347\224\250CXF+Spring\345\217\221\345\270\203WebService\357\274\214\345\220\257\345\212\250\346\212\245\351\224\231.md" (100%) rename "_drafts/\345\210\251\347\224\250Spring\344\270\255\345\220\214\345\220\215Bean\347\233\270\344\272\222\350\246\206\347\233\226\347\232\204\347\211\271\346\200\247\357\274\214\345\256\232\345\210\266\345\271\263\345\217\260\347\232\204\347\261\273\345\206\205\345\256\271\343\200\202.md" => "_drafts/Java/\345\210\251\347\224\250Spring\344\270\255\345\220\214\345\220\215Bean\347\233\270\344\272\222\350\246\206\347\233\226\347\232\204\347\211\271\346\200\247\357\274\214\345\256\232\345\210\266\345\271\263\345\217\260\347\232\204\347\261\273\345\206\205\345\256\271\343\200\202.md" (100%) rename "_drafts/\345\211\224\351\231\244eclipse\347\232\204configuration\347\233\256\345\275\225[\350\275\254].md" => "_drafts/Java/\345\211\224\351\231\244eclipse\347\232\204configuration\347\233\256\345\275\225[\350\275\254].md" (100%) rename "_drafts/\345\246\202\344\275\225\345\234\250\345\244\247\351\207\217jar\345\214\205\344\270\255\346\220\234\347\264\242\347\211\271\345\256\232\345\255\227\347\254\246.md" => "_drafts/Java/\345\246\202\344\275\225\345\234\250\345\244\247\351\207\217jar\345\214\205\344\270\255\346\220\234\347\264\242\347\211\271\345\256\232\345\255\227\347\254\246.md" (100%) rename "_drafts/\345\246\202\344\275\225\347\274\226\345\206\231\350\267\250\345\271\263\345\217\260\347\232\204Java\344\273\243\347\240\201.md" => "_drafts/Java/\345\246\202\344\275\225\347\274\226\345\206\231\350\267\250\345\271\263\345\217\260\347\232\204Java\344\273\243\347\240\201.md" (100%) rename "_drafts/\345\246\202\344\275\225\347\274\226\350\257\221Apache Hadoop2.2.0\346\272\220\344\273\243\347\240\201.md" => "_drafts/Java/\345\246\202\344\275\225\347\274\226\350\257\221Apache Hadoop2.2.0\346\272\220\344\273\243\347\240\201.md" (100%) rename "_drafts/\351\200\232\350\277\207\350\256\276\347\275\256JDK\350\247\243\345\206\263\345\255\230\345\234\250\345\244\232\344\270\252Gradle\345\220\216\345\217\260\350\277\233\347\250\213\347\232\204\351\227\256\351\242\230.md" => "_drafts/Java/\351\200\232\350\277\207\350\256\276\347\275\256JDK\350\247\243\345\206\263\345\255\230\345\234\250\345\244\232\344\270\252Gradle\345\220\216\345\217\260\350\277\233\347\250\213\347\232\204\351\227\256\351\242\230.md" (100%) rename "_drafts/202301072210Doze\346\250\241\345\274\217\346\272\220\347\240\201\350\247\243\346\236\220.md" => "_drafts/Linux/202301072210Doze\346\250\241\345\274\217\346\272\220\347\240\201\350\247\243\346\236\220.md" (100%) rename "_drafts/202301081324Android\346\272\220\347\240\201\350\247\243\350\257\273-\350\247\246\346\221\270\344\275\215\347\275\256\346\230\276\347\244\272.md" => "_drafts/Linux/202301081324Android\346\272\220\347\240\201\350\247\243\350\257\273-\350\247\246\346\221\270\344\275\215\347\275\256\346\230\276\347\244\272.md" (100%) rename "_drafts/202317061029VSCode\350\260\203\350\257\225\350\277\234\347\250\213Linux\346\234\272\345\231\250\344\270\212\347\232\204C\344\273\243\347\240\201.md" => "_drafts/Linux/202317061029VSCode\350\260\203\350\257\225\350\277\234\347\250\213Linux\346\234\272\345\231\250\344\270\212\347\232\204C\344\273\243\347\240\201.md" (100%) rename "_drafts/202401011357Ubuntu\346\211\251\345\256\271swap\346\226\207\344\273\266.md" => "_drafts/Linux/202401011357Ubuntu\346\211\251\345\256\271swap\346\226\207\344\273\266.md" (100%) rename "_drafts/Android OTA\345\215\207\347\272\247.md" => "_drafts/Linux/Android OTA\345\215\207\347\272\247.md" (100%) rename "_drafts/Android Studio\345\270\270\347\224\250\346\217\222\344\273\266\346\261\207\346\200\273.md" => "_drafts/Linux/Android Studio\345\270\270\347\224\250\346\217\222\344\273\266\346\261\207\346\200\273.md" (100%) rename "_drafts/Android Studio\347\233\270\345\205\263\347\233\256\345\275\225\350\247\243\346\236\220.md" => "_drafts/Linux/Android Studio\347\233\270\345\205\263\347\233\256\345\275\225\350\247\243\346\236\220.md" (100%) rename "_drafts/Android Studio\347\247\273\345\212\250\351\274\240\346\240\207\346\230\276\347\244\272\346\202\254\346\265\256\346\217\220\347\244\272\347\232\204\350\256\276\347\275\256\346\226\271\346\263\225.md" => "_drafts/Linux/Android Studio\347\247\273\345\212\250\351\274\240\346\240\207\346\230\276\347\244\272\346\202\254\346\265\256\346\217\220\347\244\272\347\232\204\350\256\276\347\275\256\346\226\271\346\263\225.md" (100%) rename "_drafts/Android\345\271\263\345\217\260OpenGL ES_Assimp_OpenCV_GLM\351\233\206\346\210\220\350\257\264\346\230\216.md" => "_drafts/Linux/Android\345\271\263\345\217\260OpenGL ES_Assimp_OpenCV_GLM\351\233\206\346\210\220\350\257\264\346\230\216.md" (100%) rename "_drafts/Android\347\234\237\346\234\272\345\256\211\350\243\205sqlite3\347\232\204\346\226\271\346\263\225.md" => "_drafts/Linux/Android\347\234\237\346\234\272\345\256\211\350\243\205sqlite3\347\232\204\346\226\271\346\263\225.md" (100%) rename "_drafts/Linux\344\270\213\345\256\211\350\243\205\346\234\200\346\226\260\347\232\204Eclipse.md" => "_drafts/Linux/Linux\344\270\213\345\256\211\350\243\205\346\234\200\346\226\260\347\232\204Eclipse.md" (100%) rename "_drafts/Linux\345\216\213\347\274\251\344\270\216\350\247\243\345\216\213\345\270\270\347\224\250\345\221\275\344\273\244.md" => "_drafts/Linux/Linux\345\216\213\347\274\251\344\270\216\350\247\243\345\216\213\345\270\270\347\224\250\345\221\275\344\273\244.md" (100%) rename "_drafts/Linux\345\277\253\346\215\267\351\224\256.md" => "_drafts/Linux/Linux\345\277\253\346\215\267\351\224\256.md" (100%) rename "_drafts/Linux\347\216\257\345\242\203\344\270\213JDK_Eclipse\344\270\200\351\224\256\345\256\211\350\243\205\350\204\232\346\234\254.md" => "_drafts/Linux/Linux\347\216\257\345\242\203\344\270\213JDK_Eclipse\344\270\200\351\224\256\345\256\211\350\243\205\350\204\232\346\234\254.md" (100%) rename "_drafts/Unix_Linux\346\223\215\344\275\234\347\263\273\347\273\237\344\270\255\345\246\202\344\275\225\345\234\250sqlplus_rman\344\270\255\344\275\277\347\224\250\346\226\271\345\220\221\351\224\256.md" => "_drafts/Linux/Unix_Linux\346\223\215\344\275\234\347\263\273\347\273\237\344\270\255\345\246\202\344\275\225\345\234\250sqlplus_rman\344\270\255\344\275\277\347\224\250\346\226\271\345\220\221\351\224\256.md" (100%) rename "_drafts/linux\344\270\255\346\227\240 conio.h\347\232\204\350\247\243\345\206\263\345\212\236\346\263\225.md" => "_drafts/Linux/linux\344\270\255\346\227\240 conio.h\347\232\204\350\247\243\345\206\263\345\212\236\346\263\225.md" (100%) rename "_drafts/ssh\347\233\270\345\205\263\345\216\237\347\220\206\345\255\246\344\271\240\344\270\216\345\270\270\350\247\201\351\224\231\350\257\257\346\200\273\347\273\223.md" => "_drafts/Linux/ssh\347\233\270\345\205\263\345\216\237\347\220\206\345\255\246\344\271\240\344\270\216\345\270\270\350\247\201\351\224\231\350\257\257\346\200\273\347\273\223.md" (100%) rename "_drafts/\350\247\243\345\206\263adb push\346\227\266\345\207\272\347\216\260\347\232\204"Read-only file system"\351\227\256\351\242\230.md" => "_drafts/Linux/\350\247\243\345\206\263adb push\346\227\266\345\207\272\347\216\260\347\232\204"Read-only file system"\351\227\256\351\242\230.md" (100%) rename "_drafts/\351\270\237\345\223\245\347\232\204linux\347\247\201\346\210\277\350\217\234\345\213\230\350\257\257\350\241\250.md" => "_drafts/Linux/\351\270\237\345\223\245\347\232\204linux\347\247\201\346\210\277\350\217\234\345\213\230\350\257\257\350\241\250.md" (100%) rename "_drafts/2014-11-04-EXE \346\226\207\344\273\266\350\275\254\346\215\242\346\210\220\345\256\211\350\243\205\347\250\213\345\272\217\346\225\231\347\250\213.md" => "_drafts/Others/2014-11-04-EXE \346\226\207\344\273\266\350\275\254\346\215\242\346\210\220\345\256\211\350\243\205\347\250\213\345\272\217\346\225\231\347\250\213.md" (100%) rename "_drafts/202301072207LaTeX\345\206\205\345\256\271\346\200\273\347\273\223.md" => "_drafts/Others/202301072207LaTeX\345\206\205\345\256\271\346\200\273\347\273\223.md" (100%) rename "_drafts/202301072208PDF\345\270\270\350\247\201\351\227\256\351\242\230\346\200\273\347\273\223.md" => "_drafts/Others/202301072208PDF\345\270\270\350\247\201\351\227\256\351\242\230\346\200\273\347\273\223.md" (100%) rename "_drafts/202302262208StableDiffusionWebui\347\216\257\345\242\203\346\220\255\345\273\272.md" => "_drafts/Others/202302262208StableDiffusionWebui\347\216\257\345\242\203\346\220\255\345\273\272.md" (100%) rename "_drafts/ApkToolBoxGUI 0.0.8\345\217\221\345\270\203\344\272\206\357\274\201\357\274\201.md" => "_drafts/Others/ApkToolBoxGUI 0.0.8\345\217\221\345\270\203\344\272\206\357\274\201\357\274\201.md" (100%) rename "_drafts/Cache\346\250\241\346\213\237\345\231\250(CacheSim).md" => "_drafts/Others/Cache\346\250\241\346\213\237\345\231\250(CacheSim).md" (100%) rename _drafts/{ => Others}/ChooseYourBest.md (100%) rename "_drafts/Input\346\272\220\347\240\201\350\247\243\350\257\273\342\200\224\342\200\224\344\273\216"Show tabs"\345\274\200\345\247\213.md" => "_drafts/Others/Input\346\272\220\347\240\201\350\247\243\350\257\273\342\200\224\342\200\224\344\273\216"Show tabs"\345\274\200\345\247\213.md" (100%) rename _drafts/{ => Others}/Lecture Notes_ Macros.md (100%) rename "_drafts/MIPSsim\344\275\277\347\224\250\350\257\264\346\230\216.md" => "_drafts/Others/MIPSsim\344\275\277\347\224\250\350\257\264\346\230\216.md" (100%) rename "_drafts/OOAD\344\270\216UML\347\254\224\350\256\260.md" => "_drafts/Others/OOAD\344\270\216UML\347\254\224\350\256\260.md" (100%) rename "_drafts/Python\347\254\254\344\270\211\346\226\271\345\270\270\347\224\250\345\267\245\345\205\267\343\200\201\345\272\223\343\200\201\346\241\206\346\236\266\347\255\211.md" => "_drafts/Others/Python\347\254\254\344\270\211\346\226\271\345\270\270\347\224\250\345\267\245\345\205\267\343\200\201\345\272\223\343\200\201\346\241\206\346\236\266\347\255\211.md" (100%) rename "_drafts/Rdseed\344\270\216SAC\347\232\204\345\256\211\350\243\205.md" => "_drafts/Others/Rdseed\344\270\216SAC\347\232\204\345\256\211\350\243\205.md" (100%) rename "_drafts/SVN+Apache\345\237\237\347\224\250\346\210\267\350\256\244\350\257\201\351\205\215\347\275\256\346\226\271\346\263\225_Windows(\350\275\254\357\274\214\351\207\215\346\226\260\346\216\222\347\211\210\357\274\214\351\203\250\345\210\206\345\206\205\345\256\271\346\233\264\346\226\260\344\274\230\345\214\226).md" => "_drafts/Others/SVN+Apache\345\237\237\347\224\250\346\210\267\350\256\244\350\257\201\351\205\215\347\275\256\346\226\271\346\263\225_Windows(\350\275\254\357\274\214\351\207\215\346\226\260\346\216\222\347\211\210\357\274\214\351\203\250\345\210\206\345\206\205\345\256\271\346\233\264\346\226\260\344\274\230\345\214\226).md" (100%) rename _drafts/{ => Others}/Use the SVN command-line tool.md (100%) rename "_drafts/VIM\345\270\270\350\247\201\347\224\250\346\263\225\346\200\273\347\273\223.md" => "_drafts/Others/VIM\345\270\270\350\247\201\347\224\250\346\263\225\346\200\273\347\273\223.md" (100%) rename "_drafts/VirtualBox\347\233\270\345\205\263\351\227\256\351\242\230\346\200\273\347\273\223.md" => "_drafts/Others/VirtualBox\347\233\270\345\205\263\351\227\256\351\242\230\346\200\273\347\273\223.md" (100%) rename "_drafts/Windows\345\271\263\345\217\260\344\270\213\345\256\211\350\243\205Eclipse\346\217\222\344\273\266\357\274\214\345\274\200\345\217\221Hadoop\345\272\224\347\224\250.md" => "_drafts/Others/Windows\345\271\263\345\217\260\344\270\213\345\256\211\350\243\205Eclipse\346\217\222\344\273\266\357\274\214\345\274\200\345\217\221Hadoop\345\272\224\347\224\250.md" (100%) rename "_drafts/Windows\346\227\245\345\277\227\346\237\245\347\234\213\345\267\245\345\205\267\345\220\210\351\233\206.md" => "_drafts/Others/Windows\346\227\245\345\277\227\346\237\245\347\234\213\345\267\245\345\205\267\345\220\210\351\233\206.md" (100%) rename "_drafts/XShell\344\275\277\347\224\250\351\227\256\351\242\230\346\261\207\346\200\273.md" => "_drafts/Others/XShell\344\275\277\347\224\250\351\227\256\351\242\230\346\261\207\346\200\273.md" (100%) rename "_drafts/astyle \344\275\277\347\224\250\350\257\264\346\230\216.md" => "_drafts/Others/astyle \344\275\277\347\224\250\350\257\264\346\230\216.md" (100%) rename "_drafts/openmpi\345\207\272\347\216\260Segmentation Fault\350\200\214\347\273\210\346\255\242\350\277\220\347\256\227.md" => "_drafts/Others/openmpi\345\207\272\347\216\260Segmentation Fault\350\200\214\347\273\210\346\255\242\350\277\220\347\256\227.md" (100%) rename "_drafts/tcpdump\346\215\225\346\215\211\346\240\267\344\276\213.md" => "_drafts/Others/tcpdump\346\215\225\346\215\211\346\240\267\344\276\213.md" (100%) rename "_drafts/\344\270\200\344\270\252\347\224\261\344\272\216\347\275\221\347\273\234\351\227\256\351\242\230\345\257\274\350\207\264\347\232\204\346\234\215\345\212\241\346\227\240\346\263\225\344\275\277\347\224\250\342\200\224\342\200\224\350\260\203\350\257\225\350\277\207\347\250\213\346\200\273\347\273\223.md" => "_drafts/Others/\344\270\200\344\270\252\347\224\261\344\272\216\347\275\221\347\273\234\351\227\256\351\242\230\345\257\274\350\207\264\347\232\204\346\234\215\345\212\241\346\227\240\346\263\225\344\275\277\347\224\250\342\200\224\342\200\224\350\260\203\350\257\225\350\277\207\347\250\213\346\200\273\347\273\223.md" (100%) rename "_drafts/\344\270\200\344\270\252\347\250\213\345\272\217\345\221\230\350\203\275\345\244\237\346\216\247\345\210\266\345\244\232\345\260\221\350\241\214\344\273\243\347\240\201.md" => "_drafts/Others/\344\270\200\344\270\252\347\250\213\345\272\217\345\221\230\350\203\275\345\244\237\346\216\247\345\210\266\345\244\232\345\260\221\350\241\214\344\273\243\347\240\201.md" (100%) rename "_drafts/\344\270\215\345\274\225\345\205\245\346\226\260\347\232\204\346\225\260\347\273\204\357\274\214\345\256\236\347\216\260\346\225\260\347\273\204\345\205\203\347\264\240\344\272\244\346\215\242\344\275\215\347\275\256\345\207\275\346\225\260.md" => "_drafts/Others/\344\270\215\345\274\225\345\205\245\346\226\260\347\232\204\346\225\260\347\273\204\357\274\214\345\256\236\347\216\260\346\225\260\347\273\204\345\205\203\347\264\240\344\272\244\346\215\242\344\275\215\347\275\256\345\207\275\346\225\260.md" (100%) rename "_drafts/\344\270\272\344\273\200\344\271\210\345\244\247\345\244\232\346\225\260\347\274\226\347\250\213\350\257\255\350\250\200\344\270\255\347\232\204\346\225\260\347\273\204\351\203\275\344\273\2160\345\274\200\345\247\213.md" => "_drafts/Others/\344\270\272\344\273\200\344\271\210\345\244\247\345\244\232\346\225\260\347\274\226\347\250\213\350\257\255\350\250\200\344\270\255\347\232\204\346\225\260\347\273\204\351\203\275\344\273\2160\345\274\200\345\247\213.md" (100%) rename "_drafts/\344\270\272\344\273\200\344\271\210\346\210\221\344\273\254\346\200\273\346\230\257\345\256\214\344\270\215\346\210\220\347\233\256\346\240\207.md" => "_drafts/Others/\344\270\272\344\273\200\344\271\210\346\210\221\344\273\254\346\200\273\346\230\257\345\256\214\344\270\215\346\210\220\347\233\256\346\240\207.md" (100%) rename "_drafts/\344\275\277\347\224\250OpenSSL\345\256\236\347\216\260X25519\347\247\230\351\222\245\345\215\217\345\225\206\345\212\237\350\203\275.md" => "_drafts/Others/\344\275\277\347\224\250OpenSSL\345\256\236\347\216\260X25519\347\247\230\351\222\245\345\215\217\345\225\206\345\212\237\350\203\275.md" (100%) rename "_drafts/\344\275\277\347\224\250PowerShell\347\256\200\345\214\226\346\210\221\347\232\204\345\267\245\344\275\234.md" => "_drafts/Others/\344\275\277\347\224\250PowerShell\347\256\200\345\214\226\346\210\221\347\232\204\345\267\245\344\275\234.md" (100%) rename "_drafts/\345\205\263\344\272\216\345\274\272\345\210\266\345\274\217\357\274\210\345\221\275\344\273\244\345\274\217\357\274\211\350\257\255\350\250\200\345\222\214\345\243\260\346\230\216\345\274\217\350\257\255\350\250\200\347\232\204\345\214\272\345\210\253.md" => "_drafts/Others/\345\205\263\344\272\216\345\274\272\345\210\266\345\274\217\357\274\210\345\221\275\344\273\244\345\274\217\357\274\211\350\257\255\350\250\200\345\222\214\345\243\260\346\230\216\345\274\217\350\257\255\350\250\200\347\232\204\345\214\272\345\210\253.md" (100%) rename "_drafts/\345\205\263\344\272\216\350\256\260\345\275\225\346\227\245\345\277\227\347\232\204\345\207\240\344\270\252\345\260\217\345\277\203\345\276\227.md" => "_drafts/Others/\345\205\263\344\272\216\350\256\260\345\275\225\346\227\245\345\277\227\347\232\204\345\207\240\344\270\252\345\260\217\345\277\203\345\276\227.md" (100%) rename "_drafts/\345\210\206\350\257\215\345\267\245\345\205\267\346\257\224\350\276\203\357\274\210\350\275\254\357\274\211.md" => "_drafts/Others/\345\210\206\350\257\215\345\267\245\345\205\267\346\257\224\350\276\203\357\274\210\350\275\254\357\274\211.md" (100%) rename "_drafts/\345\210\244\346\226\255\344\270\200\344\270\252\346\225\260\346\230\257\344\270\215\346\230\2572\347\232\204\345\271\202.md" => "_drafts/Others/\345\210\244\346\226\255\344\270\200\344\270\252\346\225\260\346\230\257\344\270\215\346\230\2572\347\232\204\345\271\202.md" (100%) rename "_drafts/\345\210\266\344\275\234Aspose CHM\346\226\207\346\241\243\347\232\204\350\277\207\347\250\213\350\256\260\345\275\225.md" => "_drafts/Others/\345\210\266\344\275\234Aspose CHM\346\226\207\346\241\243\347\232\204\350\277\207\347\250\213\350\256\260\345\275\225.md" (100%) rename "_drafts/\345\215\216\344\270\272\351\235\242\350\257\225\351\242\230\342\200\224\342\200\224\344\270\200\351\201\223\345\205\263\344\272\216\346\214\207\351\222\210\346\226\271\351\235\242\347\232\204\347\274\226\347\250\213\351\242\230(C_C++).md" => "_drafts/Others/\345\215\216\344\270\272\351\235\242\350\257\225\351\242\230\342\200\224\342\200\224\344\270\200\351\201\223\345\205\263\344\272\216\346\214\207\351\222\210\346\226\271\351\235\242\347\232\204\347\274\226\347\250\213\351\242\230(C_C++).md" (100%) rename "_drafts/\345\215\216\344\270\272\351\235\242\350\257\225\351\242\230\342\200\224\342\200\224\345\215\225\345\220\221\351\223\276\350\241\250\345\200\222\350\275\254\357\274\210\344\270\200\346\254\241\351\201\215\345\216\206\357\274\211.md" => "_drafts/Others/\345\215\216\344\270\272\351\235\242\350\257\225\351\242\230\342\200\224\342\200\224\345\215\225\345\220\221\351\223\276\350\241\250\345\200\222\350\275\254\357\274\210\344\270\200\346\254\241\351\201\215\345\216\206\357\274\211.md" (100%) rename "_drafts/\345\215\216\344\270\272\351\235\242\350\257\225\351\242\230\342\200\224\342\200\224\347\272\246\347\221\237\345\244\253\351\227\256\351\242\230\347\232\204C++\347\256\200\345\215\225\345\256\236\347\216\260\357\274\210\345\276\252\347\216\257\351\223\276\350\241\250\357\274\211.md" => "_drafts/Others/\345\215\216\344\270\272\351\235\242\350\257\225\351\242\230\342\200\224\342\200\224\347\272\246\347\221\237\345\244\253\351\227\256\351\242\230\347\232\204C++\347\256\200\345\215\225\345\256\236\347\216\260\357\274\210\345\276\252\347\216\257\351\223\276\350\241\250\357\274\211.md" (100%) rename "_drafts/\345\234\250 Windows \344\270\212\345\256\211\350\243\205 Hadoop \346\225\231\347\250\213\357\274\210\350\275\254\357\274\211.md" => "_drafts/Others/\345\234\250 Windows \344\270\212\345\256\211\350\243\205 Hadoop \346\225\231\347\250\213\357\274\210\350\275\254\357\274\211.md" (100%) rename "_drafts/\345\234\250\345\267\245\344\275\234\344\270\255\351\201\207\345\210\260\347\232\204\351\227\256\351\242\230.md" => "_drafts/Others/\345\234\250\345\267\245\344\275\234\344\270\255\351\201\207\345\210\260\347\232\204\351\227\256\351\242\230.md" (100%) rename "_drafts/\345\237\272\344\272\216\345\257\271\350\261\241\345\222\214\351\235\242\345\220\221\345\257\271\350\261\241\347\232\204\345\214\272\345\210\253.md" => "_drafts/Others/\345\237\272\344\272\216\345\257\271\350\261\241\345\222\214\351\235\242\345\220\221\345\257\271\350\261\241\347\232\204\345\214\272\345\210\253.md" (100%) rename "_drafts/\345\255\227\347\254\246\344\271\261\347\240\201\344\270\200\351\224\205\347\202\226.md" => "_drafts/Others/\345\255\227\347\254\246\344\271\261\347\240\201\344\270\200\351\224\205\347\202\226.md" (100%) rename "_drafts/\345\257\271\350\261\241\346\261\240\343\200\201\347\272\277\347\250\213\346\261\240\343\200\201\346\225\260\346\215\256\345\272\223\350\277\236\346\216\245\346\261\240\343\200\201\345\206\205\345\255\230\346\261\240\345\211\226\346\236\220.md" => "_drafts/Others/\345\257\271\350\261\241\346\261\240\343\200\201\347\272\277\347\250\213\346\261\240\343\200\201\346\225\260\346\215\256\345\272\223\350\277\236\346\216\245\346\261\240\343\200\201\345\206\205\345\255\230\346\261\240\345\211\226\346\236\220.md" (100%) rename "_drafts/\346\270\205\347\220\206\346\227\240\347\224\250\347\232\204CSS\346\240\267\345\274\217\347\232\204\345\207\240\344\270\252\345\267\245\345\205\267\357\274\210\350\275\254\357\274\211.md" => "_drafts/Others/\346\270\205\347\220\206\346\227\240\347\224\250\347\232\204CSS\346\240\267\345\274\217\347\232\204\345\207\240\344\270\252\345\267\245\345\205\267\357\274\210\350\275\254\357\274\211.md" (100%) rename "_drafts/\350\203\275\350\256\251\347\250\213\345\272\217\345\201\232\347\232\204\344\272\213\346\203\205\345\235\232\345\206\263\344\270\215\347\224\250\344\272\272\346\235\245\345\201\232\342\200\224\342\200\224\346\211\271\351\207\217\344\277\256\345\244\215markdownlint MD034\350\255\246\345\221\212.md" => "_drafts/Others/\350\203\275\350\256\251\347\250\213\345\272\217\345\201\232\347\232\204\344\272\213\346\203\205\345\235\232\345\206\263\344\270\215\347\224\250\344\272\272\346\235\245\345\201\232\342\200\224\342\200\224\346\211\271\351\207\217\344\277\256\345\244\215markdownlint MD034\350\255\246\345\221\212.md" (100%) rename "_drafts/\351\253\230\345\217\257\347\224\250\346\200\247\344\270\255\347\232\204\350\204\221\350\243\202\351\227\256\351\242\230(split-brain problem in HA)(\350\275\254).md" => "_drafts/Others/\351\253\230\345\217\257\347\224\250\346\200\247\344\270\255\347\232\204\350\204\221\350\243\202\351\227\256\351\242\230(split-brain problem in HA)(\350\275\254).md" (100%) diff --git "a/_drafts/ACM\347\253\236\350\265\233\344\271\213\350\276\223\345\205\245\350\276\223\345\207\272\357\274\210\344\273\245C\344\270\216C++\344\270\272\344\276\213\357\274\211.md" "b/_drafts/C_Cpp/ACM\347\253\236\350\265\233\344\271\213\350\276\223\345\205\245\350\276\223\345\207\272\357\274\210\344\273\245C\344\270\216C++\344\270\272\344\276\213\357\274\211.md" similarity index 100% rename from "_drafts/ACM\347\253\236\350\265\233\344\271\213\350\276\223\345\205\245\350\276\223\345\207\272\357\274\210\344\273\245C\344\270\216C++\344\270\272\344\276\213\357\274\211.md" rename to "_drafts/C_Cpp/ACM\347\253\236\350\265\233\344\271\213\350\276\223\345\205\245\350\276\223\345\207\272\357\274\210\344\273\245C\344\270\216C++\344\270\272\344\276\213\357\274\211.md" diff --git "a/_drafts/C++\344\273\216\351\224\256\347\233\230\350\276\223\345\205\245\346\226\207\344\273\266\347\273\223\346\235\237\347\254\246.md" "b/_drafts/C_Cpp/C++\344\273\216\351\224\256\347\233\230\350\276\223\345\205\245\346\226\207\344\273\266\347\273\223\346\235\237\347\254\246.md" similarity index 100% rename from "_drafts/C++\344\273\216\351\224\256\347\233\230\350\276\223\345\205\245\346\226\207\344\273\266\347\273\223\346\235\237\347\254\246.md" rename to "_drafts/C_Cpp/C++\344\273\216\351\224\256\347\233\230\350\276\223\345\205\245\346\226\207\344\273\266\347\273\223\346\235\237\347\254\246.md" diff --git "a/_drafts/C++\347\274\226\350\257\221\351\224\231\350\257\257cannot have cv-qualifier.md" "b/_drafts/C_Cpp/C++\347\274\226\350\257\221\351\224\231\350\257\257cannot have cv-qualifier.md" similarity index 100% rename from "_drafts/C++\347\274\226\350\257\221\351\224\231\350\257\257cannot have cv-qualifier.md" rename to "_drafts/C_Cpp/C++\347\274\226\350\257\221\351\224\231\350\257\257cannot have cv-qualifier.md" diff --git "a/_drafts/C++\350\257\255\350\250\200\344\270\255cin cin.getline cin.get getline gets getchar \347\232\204\347\224\250\346\263\225\345\256\236\344\276\213.md" "b/_drafts/C_Cpp/C++\350\257\255\350\250\200\344\270\255cin cin.getline cin.get getline gets getchar \347\232\204\347\224\250\346\263\225\345\256\236\344\276\213.md" similarity index 100% rename from "_drafts/C++\350\257\255\350\250\200\344\270\255cin cin.getline cin.get getline gets getchar \347\232\204\347\224\250\346\263\225\345\256\236\344\276\213.md" rename to "_drafts/C_Cpp/C++\350\257\255\350\250\200\344\270\255cin cin.getline cin.get getline gets getchar \347\232\204\347\224\250\346\263\225\345\256\236\344\276\213.md" diff --git "a/_drafts/C_C++\344\270\255\347\232\204abort\343\200\201atexit\343\200\201exit\345\222\214_Exit.md" "b/_drafts/C_Cpp/C_C++\344\270\255\347\232\204abort\343\200\201atexit\343\200\201exit\345\222\214_Exit.md" similarity index 100% rename from "_drafts/C_C++\344\270\255\347\232\204abort\343\200\201atexit\343\200\201exit\345\222\214_Exit.md" rename to "_drafts/C_Cpp/C_C++\344\270\255\347\232\204abort\343\200\201atexit\343\200\201exit\345\222\214_Exit.md" diff --git "a/_drafts/C_C++\345\244\247\346\225\260\345\272\223\347\256\200\344\273\213.md" "b/_drafts/C_Cpp/C_C++\345\244\247\346\225\260\345\272\223\347\256\200\344\273\213.md" similarity index 100% rename from "_drafts/C_C++\345\244\247\346\225\260\345\272\223\347\256\200\344\273\213.md" rename to "_drafts/C_Cpp/C_C++\345\244\247\346\225\260\345\272\223\347\256\200\344\273\213.md" diff --git "a/_drafts/Code Blocks+gtest\347\216\257\345\242\203\351\205\215\347\275\256.md" "b/_drafts/C_Cpp/Code Blocks+gtest\347\216\257\345\242\203\351\205\215\347\275\256.md" similarity index 100% rename from "_drafts/Code Blocks+gtest\347\216\257\345\242\203\351\205\215\347\275\256.md" rename to "_drafts/C_Cpp/Code Blocks+gtest\347\216\257\345\242\203\351\205\215\347\275\256.md" diff --git "a/_drafts/C\350\257\255\350\250\200\344\270\255\351\232\217\346\234\272\346\225\260\347\233\270\345\205\263\351\227\256\351\242\230.md" "b/_drafts/C_Cpp/C\350\257\255\350\250\200\344\270\255\351\232\217\346\234\272\346\225\260\347\233\270\345\205\263\351\227\256\351\242\230.md" similarity index 100% rename from "_drafts/C\350\257\255\350\250\200\344\270\255\351\232\217\346\234\272\346\225\260\347\233\270\345\205\263\351\227\256\351\242\230.md" rename to "_drafts/C_Cpp/C\350\257\255\350\250\200\344\270\255\351\232\217\346\234\272\346\225\260\347\233\270\345\205\263\351\227\256\351\242\230.md" diff --git "a/_drafts/const \344\270\215\345\206\215\350\277\267\350\214\253.md" "b/_drafts/C_Cpp/const \344\270\215\345\206\215\350\277\267\350\214\253.md" similarity index 100% rename from "_drafts/const \344\270\215\345\206\215\350\277\267\350\214\253.md" rename to "_drafts/C_Cpp/const \344\270\215\345\206\215\350\277\267\350\214\253.md" diff --git "a/_drafts/\345\261\217\345\271\225\350\276\223\345\207\272VS\346\226\207\344\273\266\350\276\223\345\207\272.md" "b/_drafts/C_Cpp/\345\261\217\345\271\225\350\276\223\345\207\272VS\346\226\207\344\273\266\350\276\223\345\207\272.md" similarity index 100% rename from "_drafts/\345\261\217\345\271\225\350\276\223\345\207\272VS\346\226\207\344\273\266\350\276\223\345\207\272.md" rename to "_drafts/C_Cpp/\345\261\217\345\271\225\350\276\223\345\207\272VS\346\226\207\344\273\266\350\276\223\345\207\272.md" diff --git "a/_drafts/\347\224\261\345\207\275\346\225\260clock\346\203\263\345\210\260\347\232\204.md" "b/_drafts/C_Cpp/\347\224\261\345\207\275\346\225\260clock\346\203\263\345\210\260\347\232\204.md" similarity index 100% rename from "_drafts/\347\224\261\345\207\275\346\225\260clock\346\203\263\345\210\260\347\232\204.md" rename to "_drafts/C_Cpp/\347\224\261\345\207\275\346\225\260clock\346\203\263\345\210\260\347\232\204.md" diff --git "a/_drafts/\347\274\226\347\250\213\350\216\267\345\276\227CPU\347\232\204\344\270\273\351\242\221.md" "b/_drafts/C_Cpp/\347\274\226\347\250\213\350\216\267\345\276\227CPU\347\232\204\344\270\273\351\242\221.md" similarity index 100% rename from "_drafts/\347\274\226\347\250\213\350\216\267\345\276\227CPU\347\232\204\344\270\273\351\242\221.md" rename to "_drafts/C_Cpp/\347\274\226\347\250\213\350\216\267\345\276\227CPU\347\232\204\344\270\273\351\242\221.md" diff --git "a/_drafts/(\350\275\254)SQLServer\345\256\236\344\276\213\350\256\262\350\247\243.md" "b/_drafts/Database/(\350\275\254)SQLServer\345\256\236\344\276\213\350\256\262\350\247\243.md" similarity index 100% rename from "_drafts/(\350\275\254)SQLServer\345\256\236\344\276\213\350\256\262\350\247\243.md" rename to "_drafts/Database/(\350\275\254)SQLServer\345\256\236\344\276\213\350\256\262\350\247\243.md" diff --git "a/_drafts/DB2\345\270\270\347\224\250\350\257\255\345\217\245.md" "b/_drafts/Database/DB2\345\270\270\347\224\250\350\257\255\345\217\245.md" similarity index 100% rename from "_drafts/DB2\345\270\270\347\224\250\350\257\255\345\217\245.md" rename to "_drafts/Database/DB2\345\270\270\347\224\250\350\257\255\345\217\245.md" diff --git "a/_drafts/MYSQL\345\270\270\350\247\201\351\224\231\350\257\257\345\217\212\345\205\266\350\247\243\345\206\263\346\226\271\345\274\217.md" "b/_drafts/Database/MYSQL\345\270\270\350\247\201\351\224\231\350\257\257\345\217\212\345\205\266\350\247\243\345\206\263\346\226\271\345\274\217.md" similarity index 100% rename from "_drafts/MYSQL\345\270\270\350\247\201\351\224\231\350\257\257\345\217\212\345\205\266\350\247\243\345\206\263\346\226\271\345\274\217.md" rename to "_drafts/Database/MYSQL\345\270\270\350\247\201\351\224\231\350\257\257\345\217\212\345\205\266\350\247\243\345\206\263\346\226\271\345\274\217.md" diff --git "a/_drafts/MySQL\351\273\230\350\256\244\346\225\260\346\215\256\345\272\223.md" "b/_drafts/Database/MySQL\351\273\230\350\256\244\346\225\260\346\215\256\345\272\223.md" similarity index 100% rename from "_drafts/MySQL\351\273\230\350\256\244\346\225\260\346\215\256\345\272\223.md" rename to "_drafts/Database/MySQL\351\273\230\350\256\244\346\225\260\346\215\256\345\272\223.md" diff --git "a/_drafts/Oracle\344\270\255session\345\222\214processes\347\232\204\350\256\276\347\275\256.md" "b/_drafts/Database/Oracle\344\270\255session\345\222\214processes\347\232\204\350\256\276\347\275\256.md" similarity index 100% rename from "_drafts/Oracle\344\270\255session\345\222\214processes\347\232\204\350\256\276\347\275\256.md" rename to "_drafts/Database/Oracle\344\270\255session\345\222\214processes\347\232\204\350\256\276\347\275\256.md" diff --git "a/_drafts/Oracle\345\257\274\345\205\245\345\257\274\345\207\272\345\270\270\347\224\250\345\221\275\344\273\244.md" "b/_drafts/Database/Oracle\345\257\274\345\205\245\345\257\274\345\207\272\345\270\270\347\224\250\345\221\275\344\273\244.md" similarity index 100% rename from "_drafts/Oracle\345\257\274\345\205\245\345\257\274\345\207\272\345\270\270\347\224\250\345\221\275\344\273\244.md" rename to "_drafts/Database/Oracle\345\257\274\345\205\245\345\257\274\345\207\272\345\270\270\347\224\250\345\221\275\344\273\244.md" diff --git "a/_drafts/Oracle\347\263\273\347\273\237\350\241\250\346\225\264\347\220\206+\345\270\270\347\224\250SQL\350\257\255\345\217\245\346\224\266\351\233\206.md" "b/_drafts/Database/Oracle\347\263\273\347\273\237\350\241\250\346\225\264\347\220\206+\345\270\270\347\224\250SQL\350\257\255\345\217\245\346\224\266\351\233\206.md" similarity index 100% rename from "_drafts/Oracle\347\263\273\347\273\237\350\241\250\346\225\264\347\220\206+\345\270\270\347\224\250SQL\350\257\255\345\217\245\346\224\266\351\233\206.md" rename to "_drafts/Database/Oracle\347\263\273\347\273\237\350\241\250\346\225\264\347\220\206+\345\270\270\347\224\250SQL\350\257\255\345\217\245\346\224\266\351\233\206.md" diff --git "a/_drafts/SQL Server\345\270\270\347\224\250\350\257\255\345\217\245.md" "b/_drafts/Database/SQL Server\345\270\270\347\224\250\350\257\255\345\217\245.md" similarity index 100% rename from "_drafts/SQL Server\345\270\270\347\224\250\350\257\255\345\217\245.md" rename to "_drafts/Database/SQL Server\345\270\270\347\224\250\350\257\255\345\217\245.md" diff --git "a/_drafts/oracle\350\241\250\347\251\272\351\227\264\344\270\215\350\266\263\347\233\270\345\205\263\351\227\256\351\242\230\350\247\243\345\206\263\345\212\236\346\263\225.md" "b/_drafts/Database/oracle\350\241\250\347\251\272\351\227\264\344\270\215\350\266\263\347\233\270\345\205\263\351\227\256\351\242\230\350\247\243\345\206\263\345\212\236\346\263\225.md" similarity index 100% rename from "_drafts/oracle\350\241\250\347\251\272\351\227\264\344\270\215\350\266\263\347\233\270\345\205\263\351\227\256\351\242\230\350\247\243\345\206\263\345\212\236\346\263\225.md" rename to "_drafts/Database/oracle\350\241\250\347\251\272\351\227\264\344\270\215\350\266\263\347\233\270\345\205\263\351\227\256\351\242\230\350\247\243\345\206\263\345\212\236\346\263\225.md" diff --git "a/_drafts/oracle\350\241\250\347\251\272\351\227\264\350\241\250\345\210\206\345\214\272\350\257\246\350\247\243\345\217\212oracle\350\241\250\345\210\206\345\214\272\346\237\245\350\257\242\344\275\277\347\224\250\346\226\271\346\263\225(\350\275\254+\346\225\264\347\220\206).md" "b/_drafts/Database/oracle\350\241\250\347\251\272\351\227\264\350\241\250\345\210\206\345\214\272\350\257\246\350\247\243\345\217\212oracle\350\241\250\345\210\206\345\214\272\346\237\245\350\257\242\344\275\277\347\224\250\346\226\271\346\263\225(\350\275\254+\346\225\264\347\220\206).md" similarity index 100% rename from "_drafts/oracle\350\241\250\347\251\272\351\227\264\350\241\250\345\210\206\345\214\272\350\257\246\350\247\243\345\217\212oracle\350\241\250\345\210\206\345\214\272\346\237\245\350\257\242\344\275\277\347\224\250\346\226\271\346\263\225(\350\275\254+\346\225\264\347\220\206).md" rename to "_drafts/Database/oracle\350\241\250\347\251\272\351\227\264\350\241\250\345\210\206\345\214\272\350\257\246\350\247\243\345\217\212oracle\350\241\250\345\210\206\345\214\272\346\237\245\350\257\242\344\275\277\347\224\250\346\226\271\346\263\225(\350\275\254+\346\225\264\347\220\206).md" diff --git "a/_drafts/\345\246\202\344\275\225\345\273\272\347\253\213DB2\345\210\206\345\214\272\346\225\260\346\215\256\345\272\223\357\274\237\357\274\210\350\275\254\357\274\211.md" "b/_drafts/Database/\345\246\202\344\275\225\345\273\272\347\253\213DB2\345\210\206\345\214\272\346\225\260\346\215\256\345\272\223\357\274\237\357\274\210\350\275\254\357\274\211.md" similarity index 100% rename from "_drafts/\345\246\202\344\275\225\345\273\272\347\253\213DB2\345\210\206\345\214\272\346\225\260\346\215\256\345\272\223\357\274\237\357\274\210\350\275\254\357\274\211.md" rename to "_drafts/Database/\345\246\202\344\275\225\345\273\272\347\253\213DB2\345\210\206\345\214\272\346\225\260\346\215\256\345\272\223\357\274\237\357\274\210\350\275\254\357\274\211.md" diff --git "a/_drafts/\345\277\230\350\256\260oracle\347\232\204sys\347\224\250\346\210\267\345\257\206\347\240\201\346\200\216\344\271\210\344\277\256\346\224\271\344\273\245\345\217\212Oracle 11g \351\273\230\350\256\244\347\224\250\346\210\267\345\220\215\345\222\214\345\257\206\347\240\201.md" "b/_drafts/Database/\345\277\230\350\256\260oracle\347\232\204sys\347\224\250\346\210\267\345\257\206\347\240\201\346\200\216\344\271\210\344\277\256\346\224\271\344\273\245\345\217\212Oracle 11g \351\273\230\350\256\244\347\224\250\346\210\267\345\220\215\345\222\214\345\257\206\347\240\201.md" similarity index 100% rename from "_drafts/\345\277\230\350\256\260oracle\347\232\204sys\347\224\250\346\210\267\345\257\206\347\240\201\346\200\216\344\271\210\344\277\256\346\224\271\344\273\245\345\217\212Oracle 11g \351\273\230\350\256\244\347\224\250\346\210\267\345\220\215\345\222\214\345\257\206\347\240\201.md" rename to "_drafts/Database/\345\277\230\350\256\260oracle\347\232\204sys\347\224\250\346\210\267\345\257\206\347\240\201\346\200\216\344\271\210\344\277\256\346\224\271\344\273\245\345\217\212Oracle 11g \351\273\230\350\256\244\347\224\250\346\210\267\345\220\215\345\222\214\345\257\206\347\240\201.md" diff --git "a/_drafts/\346\225\260\346\215\256\345\272\223\347\233\270\345\205\263\346\200\273\347\273\223.md" "b/_drafts/Database/\346\225\260\346\215\256\345\272\223\347\233\270\345\205\263\346\200\273\347\273\223.md" similarity index 100% rename from "_drafts/\346\225\260\346\215\256\345\272\223\347\233\270\345\205\263\346\200\273\347\273\223.md" rename to "_drafts/Database/\346\225\260\346\215\256\345\272\223\347\233\270\345\205\263\346\200\273\347\273\223.md" diff --git "a/_drafts/202110171056\345\246\202\344\275\225\345\260\206cpdetector\345\217\221\345\270\203Maven\344\276\235\350\265\226\345\210\260\344\270\255\345\244\256\344\273\223\345\272\223.md" "b/_drafts/Java/202110171056\345\246\202\344\275\225\345\260\206cpdetector\345\217\221\345\270\203Maven\344\276\235\350\265\226\345\210\260\344\270\255\345\244\256\344\273\223\345\272\223.md" similarity index 100% rename from "_drafts/202110171056\345\246\202\344\275\225\345\260\206cpdetector\345\217\221\345\270\203Maven\344\276\235\350\265\226\345\210\260\344\270\255\345\244\256\344\273\223\345\272\223.md" rename to "_drafts/Java/202110171056\345\246\202\344\275\225\345\260\206cpdetector\345\217\221\345\270\203Maven\344\276\235\350\265\226\345\210\260\344\270\255\345\244\256\344\273\223\345\272\223.md" diff --git "a/_drafts/202209041204\347\203\255\345\210\207\346\215\242Log4j\347\272\247\345\210\253\351\205\215\347\275\256.md" "b/_drafts/Java/202209041204\347\203\255\345\210\207\346\215\242Log4j\347\272\247\345\210\253\351\205\215\347\275\256.md" similarity index 100% rename from "_drafts/202209041204\347\203\255\345\210\207\346\215\242Log4j\347\272\247\345\210\253\351\205\215\347\275\256.md" rename to "_drafts/Java/202209041204\347\203\255\345\210\207\346\215\242Log4j\347\272\247\345\210\253\351\205\215\347\275\256.md" diff --git "a/_drafts/202301072303Java Swing TreeTable\346\240\267\344\276\213\346\214\207\345\257\274.md" "b/_drafts/Java/202301072303Java Swing TreeTable\346\240\267\344\276\213\346\214\207\345\257\274.md" similarity index 100% rename from "_drafts/202301072303Java Swing TreeTable\346\240\267\344\276\213\346\214\207\345\257\274.md" rename to "_drafts/Java/202301072303Java Swing TreeTable\346\240\267\344\276\213\346\214\207\345\257\274.md" diff --git "a/_drafts/20\345\210\206\351\222\237\347\220\206\346\270\205Maven\346\236\204\345\273\272\344\270\255\347\232\204\346\265\213\350\257\225\347\233\270\345\205\263\345\267\245\345\205\267\347\232\204\345\205\263\347\263\273.md" "b/_drafts/Java/20\345\210\206\351\222\237\347\220\206\346\270\205Maven\346\236\204\345\273\272\344\270\255\347\232\204\346\265\213\350\257\225\347\233\270\345\205\263\345\267\245\345\205\267\347\232\204\345\205\263\347\263\273.md" similarity index 100% rename from "_drafts/20\345\210\206\351\222\237\347\220\206\346\270\205Maven\346\236\204\345\273\272\344\270\255\347\232\204\346\265\213\350\257\225\347\233\270\345\205\263\345\267\245\345\205\267\347\232\204\345\205\263\347\263\273.md" rename to "_drafts/Java/20\345\210\206\351\222\237\347\220\206\346\270\205Maven\346\236\204\345\273\272\344\270\255\347\232\204\346\265\213\350\257\225\347\233\270\345\205\263\345\267\245\345\205\267\347\232\204\345\205\263\347\263\273.md" diff --git "a/_drafts/Calendar\347\261\273\344\270\255add_set_roll\346\226\271\346\263\225\347\232\204\345\214\272\345\210\253.md" "b/_drafts/Java/Calendar\347\261\273\344\270\255add_set_roll\346\226\271\346\263\225\347\232\204\345\214\272\345\210\253.md" similarity index 100% rename from "_drafts/Calendar\347\261\273\344\270\255add_set_roll\346\226\271\346\263\225\347\232\204\345\214\272\345\210\253.md" rename to "_drafts/Java/Calendar\347\261\273\344\270\255add_set_roll\346\226\271\346\263\225\347\232\204\345\214\272\345\210\253.md" diff --git "a/_drafts/Eclipse+Spark\346\220\255\345\273\272\346\272\220\347\240\201\345\210\206\346\236\220\347\216\257\345\242\203\351\227\256\351\242\230\345\210\206\346\236\220.md" "b/_drafts/Java/Eclipse+Spark\346\220\255\345\273\272\346\272\220\347\240\201\345\210\206\346\236\220\347\216\257\345\242\203\351\227\256\351\242\230\345\210\206\346\236\220.md" similarity index 100% rename from "_drafts/Eclipse+Spark\346\220\255\345\273\272\346\272\220\347\240\201\345\210\206\346\236\220\347\216\257\345\242\203\351\227\256\351\242\230\345\210\206\346\236\220.md" rename to "_drafts/Java/Eclipse+Spark\346\220\255\345\273\272\346\272\220\347\240\201\345\210\206\346\236\220\347\216\257\345\242\203\351\227\256\351\242\230\345\210\206\346\236\220.md" diff --git "a/_drafts/Eclipse\344\270\255Ant\347\232\204\351\205\215\347\275\256\344\270\216\346\265\213\350\257\225 \350\275\254.md" "b/_drafts/Java/Eclipse\344\270\255Ant\347\232\204\351\205\215\347\275\256\344\270\216\346\265\213\350\257\225 \350\275\254.md" similarity index 100% rename from "_drafts/Eclipse\344\270\255Ant\347\232\204\351\205\215\347\275\256\344\270\216\346\265\213\350\257\225 \350\275\254.md" rename to "_drafts/Java/Eclipse\344\270\255Ant\347\232\204\351\205\215\347\275\256\344\270\216\346\265\213\350\257\225 \350\275\254.md" diff --git "a/_drafts/Eclipse\345\205\250\351\235\242\346\217\220\351\200\237\345\260\217\346\212\200\345\267\247.md" "b/_drafts/Java/Eclipse\345\205\250\351\235\242\346\217\220\351\200\237\345\260\217\346\212\200\345\267\247.md" similarity index 100% rename from "_drafts/Eclipse\345\205\250\351\235\242\346\217\220\351\200\237\345\260\217\346\212\200\345\267\247.md" rename to "_drafts/Java/Eclipse\345\205\250\351\235\242\346\217\220\351\200\237\345\260\217\346\212\200\345\267\247.md" diff --git "a/_drafts/Eclipse\347\233\270\345\205\263\351\227\256\351\242\230.md" "b/_drafts/Java/Eclipse\347\233\270\345\205\263\351\227\256\351\242\230.md" similarity index 100% rename from "_drafts/Eclipse\347\233\270\345\205\263\351\227\256\351\242\230.md" rename to "_drafts/Java/Eclipse\347\233\270\345\205\263\351\227\256\351\242\230.md" diff --git "a/_drafts/Eclipse\350\277\234\347\250\213\350\260\203\350\257\225\345\207\272\347\216\260\342\200\234JDWP Transport dt_socket failed to initialize\342\200\235\347\232\204\350\247\243\345\206\263\346\226\271\346\241\210.md" "b/_drafts/Java/Eclipse\350\277\234\347\250\213\350\260\203\350\257\225\345\207\272\347\216\260\342\200\234JDWP Transport dt_socket failed to initialize\342\200\235\347\232\204\350\247\243\345\206\263\346\226\271\346\241\210.md" similarity index 100% rename from "_drafts/Eclipse\350\277\234\347\250\213\350\260\203\350\257\225\345\207\272\347\216\260\342\200\234JDWP Transport dt_socket failed to initialize\342\200\235\347\232\204\350\247\243\345\206\263\346\226\271\346\241\210.md" rename to "_drafts/Java/Eclipse\350\277\234\347\250\213\350\260\203\350\257\225\345\207\272\347\216\260\342\200\234JDWP Transport dt_socket failed to initialize\342\200\235\347\232\204\350\247\243\345\206\263\346\226\271\346\241\210.md" diff --git "a/_drafts/FindBugs\350\257\246\350\247\243.md" "b/_drafts/Java/FindBugs\350\257\246\350\247\243.md" similarity index 100% rename from "_drafts/FindBugs\350\257\246\350\247\243.md" rename to "_drafts/Java/FindBugs\350\257\246\350\247\243.md" diff --git "a/_drafts/HBase\344\273\213\347\273\215.md" "b/_drafts/Java/HBase\344\273\213\347\273\215.md" similarity index 100% rename from "_drafts/HBase\344\273\213\347\273\215.md" rename to "_drafts/Java/HBase\344\273\213\347\273\215.md" diff --git "a/_drafts/Hibernate\344\270\216autoCommit.md" "b/_drafts/Java/Hibernate\344\270\216autoCommit.md" similarity index 100% rename from "_drafts/Hibernate\344\270\216autoCommit.md" rename to "_drafts/Java/Hibernate\344\270\216autoCommit.md" diff --git "a/_drafts/JUnit org.junit.runner.Request.classWithoutSuiteMethod\350\247\243\345\206\263\346\226\271\346\263\225.md" "b/_drafts/Java/JUnit org.junit.runner.Request.classWithoutSuiteMethod\350\247\243\345\206\263\346\226\271\346\263\225.md" similarity index 100% rename from "_drafts/JUnit org.junit.runner.Request.classWithoutSuiteMethod\350\247\243\345\206\263\346\226\271\346\263\225.md" rename to "_drafts/Java/JUnit org.junit.runner.Request.classWithoutSuiteMethod\350\247\243\345\206\263\346\226\271\346\263\225.md" diff --git "a/_drafts/JVM\350\260\203\344\274\230\346\200\273\347\273\223\357\274\210\350\275\254\357\274\211.md" "b/_drafts/Java/JVM\350\260\203\344\274\230\346\200\273\347\273\223\357\274\210\350\275\254\357\274\211.md" similarity index 100% rename from "_drafts/JVM\350\260\203\344\274\230\346\200\273\347\273\223\357\274\210\350\275\254\357\274\211.md" rename to "_drafts/Java/JVM\350\260\203\344\274\230\346\200\273\347\273\223\357\274\210\350\275\254\357\274\211.md" diff --git "a/_drafts/Java\346\235\202\351\241\271.md" "b/_drafts/Java/Java\346\235\202\351\241\271.md" similarity index 100% rename from "_drafts/Java\346\235\202\351\241\271.md" rename to "_drafts/Java/Java\346\235\202\351\241\271.md" diff --git "a/_drafts/Java\350\277\234\347\250\213\350\260\203\350\257\225\344\273\243\347\240\201\344\270\215\344\270\200\350\207\264\351\227\256\351\242\230\346\261\207\346\200\273.md" "b/_drafts/Java/Java\350\277\234\347\250\213\350\260\203\350\257\225\344\273\243\347\240\201\344\270\215\344\270\200\350\207\264\351\227\256\351\242\230\346\261\207\346\200\273.md" similarity index 100% rename from "_drafts/Java\350\277\234\347\250\213\350\260\203\350\257\225\344\273\243\347\240\201\344\270\215\344\270\200\350\207\264\351\227\256\351\242\230\346\261\207\346\200\273.md" rename to "_drafts/Java/Java\350\277\234\347\250\213\350\260\203\350\257\225\344\273\243\347\240\201\344\270\215\344\270\200\350\207\264\351\227\256\351\242\230\346\261\207\346\200\273.md" diff --git a/_drafts/Peer Code Reviews Made Easy with Eclipse Plug-In.md b/_drafts/Java/Peer Code Reviews Made Easy with Eclipse Plug-In.md similarity index 100% rename from _drafts/Peer Code Reviews Made Easy with Eclipse Plug-In.md rename to _drafts/Java/Peer Code Reviews Made Easy with Eclipse Plug-In.md diff --git "a/_drafts/ServletInputStream\347\232\204\351\207\215\345\244\215\350\257\273\345\217\226\357\274\210\345\244\232\346\254\241\350\257\273\345\217\226\357\274\211\357\274\210\350\275\254\357\274\211.md" "b/_drafts/Java/ServletInputStream\347\232\204\351\207\215\345\244\215\350\257\273\345\217\226\357\274\210\345\244\232\346\254\241\350\257\273\345\217\226\357\274\211\357\274\210\350\275\254\357\274\211.md" similarity index 100% rename from "_drafts/ServletInputStream\347\232\204\351\207\215\345\244\215\350\257\273\345\217\226\357\274\210\345\244\232\346\254\241\350\257\273\345\217\226\357\274\211\357\274\210\350\275\254\357\274\211.md" rename to "_drafts/Java/ServletInputStream\347\232\204\351\207\215\345\244\215\350\257\273\345\217\226\357\274\210\345\244\232\346\254\241\350\257\273\345\217\226\357\274\211\357\274\210\350\275\254\357\274\211.md" diff --git "a/_drafts/Spring\346\241\206\346\236\266\347\232\204\345\217\215\345\272\217\345\210\227\345\214\226\350\277\234\347\250\213\344\273\243\347\240\201\346\211\247\350\241\214\346\274\217\346\264\236\345\210\206\346\236\220\357\274\210\350\275\254\357\274\211.md" "b/_drafts/Java/Spring\346\241\206\346\236\266\347\232\204\345\217\215\345\272\217\345\210\227\345\214\226\350\277\234\347\250\213\344\273\243\347\240\201\346\211\247\350\241\214\346\274\217\346\264\236\345\210\206\346\236\220\357\274\210\350\275\254\357\274\211.md" similarity index 100% rename from "_drafts/Spring\346\241\206\346\236\266\347\232\204\345\217\215\345\272\217\345\210\227\345\214\226\350\277\234\347\250\213\344\273\243\347\240\201\346\211\247\350\241\214\346\274\217\346\264\236\345\210\206\346\236\220\357\274\210\350\275\254\357\274\211.md" rename to "_drafts/Java/Spring\346\241\206\346\236\266\347\232\204\345\217\215\345\272\217\345\210\227\345\214\226\350\277\234\347\250\213\344\273\243\347\240\201\346\211\247\350\241\214\346\274\217\346\264\236\345\210\206\346\236\220\357\274\210\350\275\254\357\274\211.md" diff --git "a/_drafts/[Maven][l10n-maven-plugin]\345\221\212\350\255\246[WARNING] No dictionary file under folder.md" "b/_drafts/Java/[Maven][l10n-maven-plugin]\345\221\212\350\255\246[WARNING] No dictionary file under folder.md" similarity index 100% rename from "_drafts/[Maven][l10n-maven-plugin]\345\221\212\350\255\246[WARNING] No dictionary file under folder.md" rename to "_drafts/Java/[Maven][l10n-maven-plugin]\345\221\212\350\255\246[WARNING] No dictionary file under folder.md" diff --git "a/_drafts/[Maven][maven-shade-plugin]\345\221\212\350\255\246[WARNING] maven-shade-plugin has detected that some class files are present in two or more JARs.md" "b/_drafts/Java/[Maven][maven-shade-plugin]\345\221\212\350\255\246[WARNING] maven-shade-plugin has detected that some class files are present in two or more JARs.md" similarity index 100% rename from "_drafts/[Maven][maven-shade-plugin]\345\221\212\350\255\246[WARNING] maven-shade-plugin has detected that some class files are present in two or more JARs.md" rename to "_drafts/Java/[Maven][maven-shade-plugin]\345\221\212\350\255\246[WARNING] maven-shade-plugin has detected that some class files are present in two or more JARs.md" diff --git "a/_drafts/[Maven][maven-site-plugin]\345\221\212\350\255\246[WARNING] No project URL defined - decoration links will not be relativized.md" "b/_drafts/Java/[Maven][maven-site-plugin]\345\221\212\350\255\246[WARNING] No project URL defined - decoration links will not be relativized.md" similarity index 100% rename from "_drafts/[Maven][maven-site-plugin]\345\221\212\350\255\246[WARNING] No project URL defined - decoration links will not be relativized.md" rename to "_drafts/Java/[Maven][maven-site-plugin]\345\221\212\350\255\246[WARNING] No project URL defined - decoration links will not be relativized.md" diff --git "a/_drafts/[Maven][taglist-maven-plugin]\345\221\212\350\255\246[WARNING] Using legacy tag format.md" "b/_drafts/Java/[Maven][taglist-maven-plugin]\345\221\212\350\255\246[WARNING] Using legacy tag format.md" similarity index 100% rename from "_drafts/[Maven][taglist-maven-plugin]\345\221\212\350\255\246[WARNING] Using legacy tag format.md" rename to "_drafts/Java/[Maven][taglist-maven-plugin]\345\221\212\350\255\246[WARNING] Using legacy tag format.md" diff --git "a/_drafts/[Maven]\345\221\212\350\255\246[WARNING] Unable to create Maven project from repository..md" "b/_drafts/Java/[Maven]\345\221\212\350\255\246[WARNING] Unable to create Maven project from repository..md" similarity index 100% rename from "_drafts/[Maven]\345\221\212\350\255\246[WARNING] Unable to create Maven project from repository..md" rename to "_drafts/Java/[Maven]\345\221\212\350\255\246[WARNING] Unable to create Maven project from repository..md" diff --git a/_drafts/[System.currentTimeMillis]_[Calendar.getInstance().getTimeInMillis()]_[new Date().getTime()].md b/_drafts/Java/[System.currentTimeMillis]_[Calendar.getInstance().getTimeInMillis()]_[new Date().getTime()].md similarity index 100% rename from _drafts/[System.currentTimeMillis]_[Calendar.getInstance().getTimeInMillis()]_[new Date().getTime()].md rename to _drafts/Java/[System.currentTimeMillis]_[Calendar.getInstance().getTimeInMillis()]_[new Date().getTime()].md diff --git "a/_drafts/eclipse\346\217\222\344\273\266\345\234\250\347\272\277\345\217\221\345\270\203\345\217\221\345\270\203\345\222\214\347\211\210\346\234\254\346\233\264\346\226\260(web site) \350\275\254.md" "b/_drafts/Java/eclipse\346\217\222\344\273\266\345\234\250\347\272\277\345\217\221\345\270\203\345\217\221\345\270\203\345\222\214\347\211\210\346\234\254\346\233\264\346\226\260(web site) \350\275\254.md" similarity index 100% rename from "_drafts/eclipse\346\217\222\344\273\266\345\234\250\347\272\277\345\217\221\345\270\203\345\217\221\345\270\203\345\222\214\347\211\210\346\234\254\346\233\264\346\226\260(web site) \350\275\254.md" rename to "_drafts/Java/eclipse\346\217\222\344\273\266\345\234\250\347\272\277\345\217\221\345\270\203\345\217\221\345\270\203\345\222\214\347\211\210\346\234\254\346\233\264\346\226\260(web site) \350\275\254.md" diff --git "a/_drafts/javadoc\347\233\270\345\205\263\351\227\256\351\242\230.md" "b/_drafts/Java/javadoc\347\233\270\345\205\263\351\227\256\351\242\230.md" similarity index 100% rename from "_drafts/javadoc\347\233\270\345\205\263\351\227\256\351\242\230.md" rename to "_drafts/Java/javadoc\347\233\270\345\205\263\351\227\256\351\242\230.md" diff --git "a/_drafts/org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter\344\270\216org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.md" "b/_drafts/Java/org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter\344\270\216org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.md" similarity index 100% rename from "_drafts/org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter\344\270\216org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.md" rename to "_drafts/Java/org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter\344\270\216org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.md" diff --git "a/_drafts/package-info.java\346\226\207\344\273\266\350\257\246\350\247\243.md" "b/_drafts/Java/package-info.java\346\226\207\344\273\266\350\257\246\350\247\243.md" similarity index 100% rename from "_drafts/package-info.java\346\226\207\344\273\266\350\257\246\350\247\243.md" rename to "_drafts/Java/package-info.java\346\226\207\344\273\266\350\257\246\350\247\243.md" diff --git "a/_drafts/\344\270\200\344\270\252\346\257\224\350\276\203\345\205\250\351\235\242\347\232\204java\351\232\217\346\234\272\346\225\260\346\215\256\347\224\237\346\210\220\345\267\245\345\205\267\345\214\205.md" "b/_drafts/Java/\344\270\200\344\270\252\346\257\224\350\276\203\345\205\250\351\235\242\347\232\204java\351\232\217\346\234\272\346\225\260\346\215\256\347\224\237\346\210\220\345\267\245\345\205\267\345\214\205.md" similarity index 100% rename from "_drafts/\344\270\200\344\270\252\346\257\224\350\276\203\345\205\250\351\235\242\347\232\204java\351\232\217\346\234\272\346\225\260\346\215\256\347\224\237\346\210\220\345\267\245\345\205\267\345\214\205.md" rename to "_drafts/Java/\344\270\200\344\270\252\346\257\224\350\276\203\345\205\250\351\235\242\347\232\204java\351\232\217\346\234\272\346\225\260\346\215\256\347\224\237\346\210\220\345\267\245\345\205\267\345\214\205.md" diff --git "a/_drafts/\344\275\277\347\224\250CXF+Spring\345\217\221\345\270\203WebService\357\274\214\345\220\257\345\212\250\346\212\245\351\224\231.md" "b/_drafts/Java/\344\275\277\347\224\250CXF+Spring\345\217\221\345\270\203WebService\357\274\214\345\220\257\345\212\250\346\212\245\351\224\231.md" similarity index 100% rename from "_drafts/\344\275\277\347\224\250CXF+Spring\345\217\221\345\270\203WebService\357\274\214\345\220\257\345\212\250\346\212\245\351\224\231.md" rename to "_drafts/Java/\344\275\277\347\224\250CXF+Spring\345\217\221\345\270\203WebService\357\274\214\345\220\257\345\212\250\346\212\245\351\224\231.md" diff --git "a/_drafts/\345\210\251\347\224\250Spring\344\270\255\345\220\214\345\220\215Bean\347\233\270\344\272\222\350\246\206\347\233\226\347\232\204\347\211\271\346\200\247\357\274\214\345\256\232\345\210\266\345\271\263\345\217\260\347\232\204\347\261\273\345\206\205\345\256\271\343\200\202.md" "b/_drafts/Java/\345\210\251\347\224\250Spring\344\270\255\345\220\214\345\220\215Bean\347\233\270\344\272\222\350\246\206\347\233\226\347\232\204\347\211\271\346\200\247\357\274\214\345\256\232\345\210\266\345\271\263\345\217\260\347\232\204\347\261\273\345\206\205\345\256\271\343\200\202.md" similarity index 100% rename from "_drafts/\345\210\251\347\224\250Spring\344\270\255\345\220\214\345\220\215Bean\347\233\270\344\272\222\350\246\206\347\233\226\347\232\204\347\211\271\346\200\247\357\274\214\345\256\232\345\210\266\345\271\263\345\217\260\347\232\204\347\261\273\345\206\205\345\256\271\343\200\202.md" rename to "_drafts/Java/\345\210\251\347\224\250Spring\344\270\255\345\220\214\345\220\215Bean\347\233\270\344\272\222\350\246\206\347\233\226\347\232\204\347\211\271\346\200\247\357\274\214\345\256\232\345\210\266\345\271\263\345\217\260\347\232\204\347\261\273\345\206\205\345\256\271\343\200\202.md" diff --git "a/_drafts/\345\211\224\351\231\244eclipse\347\232\204configuration\347\233\256\345\275\225[\350\275\254].md" "b/_drafts/Java/\345\211\224\351\231\244eclipse\347\232\204configuration\347\233\256\345\275\225[\350\275\254].md" similarity index 100% rename from "_drafts/\345\211\224\351\231\244eclipse\347\232\204configuration\347\233\256\345\275\225[\350\275\254].md" rename to "_drafts/Java/\345\211\224\351\231\244eclipse\347\232\204configuration\347\233\256\345\275\225[\350\275\254].md" diff --git "a/_drafts/\345\246\202\344\275\225\345\234\250\345\244\247\351\207\217jar\345\214\205\344\270\255\346\220\234\347\264\242\347\211\271\345\256\232\345\255\227\347\254\246.md" "b/_drafts/Java/\345\246\202\344\275\225\345\234\250\345\244\247\351\207\217jar\345\214\205\344\270\255\346\220\234\347\264\242\347\211\271\345\256\232\345\255\227\347\254\246.md" similarity index 100% rename from "_drafts/\345\246\202\344\275\225\345\234\250\345\244\247\351\207\217jar\345\214\205\344\270\255\346\220\234\347\264\242\347\211\271\345\256\232\345\255\227\347\254\246.md" rename to "_drafts/Java/\345\246\202\344\275\225\345\234\250\345\244\247\351\207\217jar\345\214\205\344\270\255\346\220\234\347\264\242\347\211\271\345\256\232\345\255\227\347\254\246.md" diff --git "a/_drafts/\345\246\202\344\275\225\347\274\226\345\206\231\350\267\250\345\271\263\345\217\260\347\232\204Java\344\273\243\347\240\201.md" "b/_drafts/Java/\345\246\202\344\275\225\347\274\226\345\206\231\350\267\250\345\271\263\345\217\260\347\232\204Java\344\273\243\347\240\201.md" similarity index 100% rename from "_drafts/\345\246\202\344\275\225\347\274\226\345\206\231\350\267\250\345\271\263\345\217\260\347\232\204Java\344\273\243\347\240\201.md" rename to "_drafts/Java/\345\246\202\344\275\225\347\274\226\345\206\231\350\267\250\345\271\263\345\217\260\347\232\204Java\344\273\243\347\240\201.md" diff --git "a/_drafts/\345\246\202\344\275\225\347\274\226\350\257\221Apache Hadoop2.2.0\346\272\220\344\273\243\347\240\201.md" "b/_drafts/Java/\345\246\202\344\275\225\347\274\226\350\257\221Apache Hadoop2.2.0\346\272\220\344\273\243\347\240\201.md" similarity index 100% rename from "_drafts/\345\246\202\344\275\225\347\274\226\350\257\221Apache Hadoop2.2.0\346\272\220\344\273\243\347\240\201.md" rename to "_drafts/Java/\345\246\202\344\275\225\347\274\226\350\257\221Apache Hadoop2.2.0\346\272\220\344\273\243\347\240\201.md" diff --git "a/_drafts/\351\200\232\350\277\207\350\256\276\347\275\256JDK\350\247\243\345\206\263\345\255\230\345\234\250\345\244\232\344\270\252Gradle\345\220\216\345\217\260\350\277\233\347\250\213\347\232\204\351\227\256\351\242\230.md" "b/_drafts/Java/\351\200\232\350\277\207\350\256\276\347\275\256JDK\350\247\243\345\206\263\345\255\230\345\234\250\345\244\232\344\270\252Gradle\345\220\216\345\217\260\350\277\233\347\250\213\347\232\204\351\227\256\351\242\230.md" similarity index 100% rename from "_drafts/\351\200\232\350\277\207\350\256\276\347\275\256JDK\350\247\243\345\206\263\345\255\230\345\234\250\345\244\232\344\270\252Gradle\345\220\216\345\217\260\350\277\233\347\250\213\347\232\204\351\227\256\351\242\230.md" rename to "_drafts/Java/\351\200\232\350\277\207\350\256\276\347\275\256JDK\350\247\243\345\206\263\345\255\230\345\234\250\345\244\232\344\270\252Gradle\345\220\216\345\217\260\350\277\233\347\250\213\347\232\204\351\227\256\351\242\230.md" diff --git "a/_drafts/202301072210Doze\346\250\241\345\274\217\346\272\220\347\240\201\350\247\243\346\236\220.md" "b/_drafts/Linux/202301072210Doze\346\250\241\345\274\217\346\272\220\347\240\201\350\247\243\346\236\220.md" similarity index 100% rename from "_drafts/202301072210Doze\346\250\241\345\274\217\346\272\220\347\240\201\350\247\243\346\236\220.md" rename to "_drafts/Linux/202301072210Doze\346\250\241\345\274\217\346\272\220\347\240\201\350\247\243\346\236\220.md" diff --git "a/_drafts/202301081324Android\346\272\220\347\240\201\350\247\243\350\257\273-\350\247\246\346\221\270\344\275\215\347\275\256\346\230\276\347\244\272.md" "b/_drafts/Linux/202301081324Android\346\272\220\347\240\201\350\247\243\350\257\273-\350\247\246\346\221\270\344\275\215\347\275\256\346\230\276\347\244\272.md" similarity index 100% rename from "_drafts/202301081324Android\346\272\220\347\240\201\350\247\243\350\257\273-\350\247\246\346\221\270\344\275\215\347\275\256\346\230\276\347\244\272.md" rename to "_drafts/Linux/202301081324Android\346\272\220\347\240\201\350\247\243\350\257\273-\350\247\246\346\221\270\344\275\215\347\275\256\346\230\276\347\244\272.md" diff --git "a/_drafts/202317061029VSCode\350\260\203\350\257\225\350\277\234\347\250\213Linux\346\234\272\345\231\250\344\270\212\347\232\204C\344\273\243\347\240\201.md" "b/_drafts/Linux/202317061029VSCode\350\260\203\350\257\225\350\277\234\347\250\213Linux\346\234\272\345\231\250\344\270\212\347\232\204C\344\273\243\347\240\201.md" similarity index 100% rename from "_drafts/202317061029VSCode\350\260\203\350\257\225\350\277\234\347\250\213Linux\346\234\272\345\231\250\344\270\212\347\232\204C\344\273\243\347\240\201.md" rename to "_drafts/Linux/202317061029VSCode\350\260\203\350\257\225\350\277\234\347\250\213Linux\346\234\272\345\231\250\344\270\212\347\232\204C\344\273\243\347\240\201.md" diff --git "a/_drafts/202401011357Ubuntu\346\211\251\345\256\271swap\346\226\207\344\273\266.md" "b/_drafts/Linux/202401011357Ubuntu\346\211\251\345\256\271swap\346\226\207\344\273\266.md" similarity index 100% rename from "_drafts/202401011357Ubuntu\346\211\251\345\256\271swap\346\226\207\344\273\266.md" rename to "_drafts/Linux/202401011357Ubuntu\346\211\251\345\256\271swap\346\226\207\344\273\266.md" diff --git "a/_drafts/Android OTA\345\215\207\347\272\247.md" "b/_drafts/Linux/Android OTA\345\215\207\347\272\247.md" similarity index 100% rename from "_drafts/Android OTA\345\215\207\347\272\247.md" rename to "_drafts/Linux/Android OTA\345\215\207\347\272\247.md" diff --git "a/_drafts/Android Studio\345\270\270\347\224\250\346\217\222\344\273\266\346\261\207\346\200\273.md" "b/_drafts/Linux/Android Studio\345\270\270\347\224\250\346\217\222\344\273\266\346\261\207\346\200\273.md" similarity index 100% rename from "_drafts/Android Studio\345\270\270\347\224\250\346\217\222\344\273\266\346\261\207\346\200\273.md" rename to "_drafts/Linux/Android Studio\345\270\270\347\224\250\346\217\222\344\273\266\346\261\207\346\200\273.md" diff --git "a/_drafts/Android Studio\347\233\270\345\205\263\347\233\256\345\275\225\350\247\243\346\236\220.md" "b/_drafts/Linux/Android Studio\347\233\270\345\205\263\347\233\256\345\275\225\350\247\243\346\236\220.md" similarity index 100% rename from "_drafts/Android Studio\347\233\270\345\205\263\347\233\256\345\275\225\350\247\243\346\236\220.md" rename to "_drafts/Linux/Android Studio\347\233\270\345\205\263\347\233\256\345\275\225\350\247\243\346\236\220.md" diff --git "a/_drafts/Android Studio\347\247\273\345\212\250\351\274\240\346\240\207\346\230\276\347\244\272\346\202\254\346\265\256\346\217\220\347\244\272\347\232\204\350\256\276\347\275\256\346\226\271\346\263\225.md" "b/_drafts/Linux/Android Studio\347\247\273\345\212\250\351\274\240\346\240\207\346\230\276\347\244\272\346\202\254\346\265\256\346\217\220\347\244\272\347\232\204\350\256\276\347\275\256\346\226\271\346\263\225.md" similarity index 100% rename from "_drafts/Android Studio\347\247\273\345\212\250\351\274\240\346\240\207\346\230\276\347\244\272\346\202\254\346\265\256\346\217\220\347\244\272\347\232\204\350\256\276\347\275\256\346\226\271\346\263\225.md" rename to "_drafts/Linux/Android Studio\347\247\273\345\212\250\351\274\240\346\240\207\346\230\276\347\244\272\346\202\254\346\265\256\346\217\220\347\244\272\347\232\204\350\256\276\347\275\256\346\226\271\346\263\225.md" diff --git "a/_drafts/Android\345\271\263\345\217\260OpenGL ES_Assimp_OpenCV_GLM\351\233\206\346\210\220\350\257\264\346\230\216.md" "b/_drafts/Linux/Android\345\271\263\345\217\260OpenGL ES_Assimp_OpenCV_GLM\351\233\206\346\210\220\350\257\264\346\230\216.md" similarity index 100% rename from "_drafts/Android\345\271\263\345\217\260OpenGL ES_Assimp_OpenCV_GLM\351\233\206\346\210\220\350\257\264\346\230\216.md" rename to "_drafts/Linux/Android\345\271\263\345\217\260OpenGL ES_Assimp_OpenCV_GLM\351\233\206\346\210\220\350\257\264\346\230\216.md" diff --git "a/_drafts/Android\347\234\237\346\234\272\345\256\211\350\243\205sqlite3\347\232\204\346\226\271\346\263\225.md" "b/_drafts/Linux/Android\347\234\237\346\234\272\345\256\211\350\243\205sqlite3\347\232\204\346\226\271\346\263\225.md" similarity index 100% rename from "_drafts/Android\347\234\237\346\234\272\345\256\211\350\243\205sqlite3\347\232\204\346\226\271\346\263\225.md" rename to "_drafts/Linux/Android\347\234\237\346\234\272\345\256\211\350\243\205sqlite3\347\232\204\346\226\271\346\263\225.md" diff --git "a/_drafts/Linux\344\270\213\345\256\211\350\243\205\346\234\200\346\226\260\347\232\204Eclipse.md" "b/_drafts/Linux/Linux\344\270\213\345\256\211\350\243\205\346\234\200\346\226\260\347\232\204Eclipse.md" similarity index 100% rename from "_drafts/Linux\344\270\213\345\256\211\350\243\205\346\234\200\346\226\260\347\232\204Eclipse.md" rename to "_drafts/Linux/Linux\344\270\213\345\256\211\350\243\205\346\234\200\346\226\260\347\232\204Eclipse.md" diff --git "a/_drafts/Linux\345\216\213\347\274\251\344\270\216\350\247\243\345\216\213\345\270\270\347\224\250\345\221\275\344\273\244.md" "b/_drafts/Linux/Linux\345\216\213\347\274\251\344\270\216\350\247\243\345\216\213\345\270\270\347\224\250\345\221\275\344\273\244.md" similarity index 100% rename from "_drafts/Linux\345\216\213\347\274\251\344\270\216\350\247\243\345\216\213\345\270\270\347\224\250\345\221\275\344\273\244.md" rename to "_drafts/Linux/Linux\345\216\213\347\274\251\344\270\216\350\247\243\345\216\213\345\270\270\347\224\250\345\221\275\344\273\244.md" diff --git "a/_drafts/Linux\345\277\253\346\215\267\351\224\256.md" "b/_drafts/Linux/Linux\345\277\253\346\215\267\351\224\256.md" similarity index 100% rename from "_drafts/Linux\345\277\253\346\215\267\351\224\256.md" rename to "_drafts/Linux/Linux\345\277\253\346\215\267\351\224\256.md" diff --git "a/_drafts/Linux\347\216\257\345\242\203\344\270\213JDK_Eclipse\344\270\200\351\224\256\345\256\211\350\243\205\350\204\232\346\234\254.md" "b/_drafts/Linux/Linux\347\216\257\345\242\203\344\270\213JDK_Eclipse\344\270\200\351\224\256\345\256\211\350\243\205\350\204\232\346\234\254.md" similarity index 100% rename from "_drafts/Linux\347\216\257\345\242\203\344\270\213JDK_Eclipse\344\270\200\351\224\256\345\256\211\350\243\205\350\204\232\346\234\254.md" rename to "_drafts/Linux/Linux\347\216\257\345\242\203\344\270\213JDK_Eclipse\344\270\200\351\224\256\345\256\211\350\243\205\350\204\232\346\234\254.md" diff --git "a/_drafts/Unix_Linux\346\223\215\344\275\234\347\263\273\347\273\237\344\270\255\345\246\202\344\275\225\345\234\250sqlplus_rman\344\270\255\344\275\277\347\224\250\346\226\271\345\220\221\351\224\256.md" "b/_drafts/Linux/Unix_Linux\346\223\215\344\275\234\347\263\273\347\273\237\344\270\255\345\246\202\344\275\225\345\234\250sqlplus_rman\344\270\255\344\275\277\347\224\250\346\226\271\345\220\221\351\224\256.md" similarity index 100% rename from "_drafts/Unix_Linux\346\223\215\344\275\234\347\263\273\347\273\237\344\270\255\345\246\202\344\275\225\345\234\250sqlplus_rman\344\270\255\344\275\277\347\224\250\346\226\271\345\220\221\351\224\256.md" rename to "_drafts/Linux/Unix_Linux\346\223\215\344\275\234\347\263\273\347\273\237\344\270\255\345\246\202\344\275\225\345\234\250sqlplus_rman\344\270\255\344\275\277\347\224\250\346\226\271\345\220\221\351\224\256.md" diff --git "a/_drafts/linux\344\270\255\346\227\240 conio.h\347\232\204\350\247\243\345\206\263\345\212\236\346\263\225.md" "b/_drafts/Linux/linux\344\270\255\346\227\240 conio.h\347\232\204\350\247\243\345\206\263\345\212\236\346\263\225.md" similarity index 100% rename from "_drafts/linux\344\270\255\346\227\240 conio.h\347\232\204\350\247\243\345\206\263\345\212\236\346\263\225.md" rename to "_drafts/Linux/linux\344\270\255\346\227\240 conio.h\347\232\204\350\247\243\345\206\263\345\212\236\346\263\225.md" diff --git "a/_drafts/ssh\347\233\270\345\205\263\345\216\237\347\220\206\345\255\246\344\271\240\344\270\216\345\270\270\350\247\201\351\224\231\350\257\257\346\200\273\347\273\223.md" "b/_drafts/Linux/ssh\347\233\270\345\205\263\345\216\237\347\220\206\345\255\246\344\271\240\344\270\216\345\270\270\350\247\201\351\224\231\350\257\257\346\200\273\347\273\223.md" similarity index 100% rename from "_drafts/ssh\347\233\270\345\205\263\345\216\237\347\220\206\345\255\246\344\271\240\344\270\216\345\270\270\350\247\201\351\224\231\350\257\257\346\200\273\347\273\223.md" rename to "_drafts/Linux/ssh\347\233\270\345\205\263\345\216\237\347\220\206\345\255\246\344\271\240\344\270\216\345\270\270\350\247\201\351\224\231\350\257\257\346\200\273\347\273\223.md" diff --git "a/_drafts/\350\247\243\345\206\263adb push\346\227\266\345\207\272\347\216\260\347\232\204"Read-only file system"\351\227\256\351\242\230.md" "b/_drafts/Linux/\350\247\243\345\206\263adb push\346\227\266\345\207\272\347\216\260\347\232\204"Read-only file system"\351\227\256\351\242\230.md" similarity index 100% rename from "_drafts/\350\247\243\345\206\263adb push\346\227\266\345\207\272\347\216\260\347\232\204"Read-only file system"\351\227\256\351\242\230.md" rename to "_drafts/Linux/\350\247\243\345\206\263adb push\346\227\266\345\207\272\347\216\260\347\232\204"Read-only file system"\351\227\256\351\242\230.md" diff --git "a/_drafts/\351\270\237\345\223\245\347\232\204linux\347\247\201\346\210\277\350\217\234\345\213\230\350\257\257\350\241\250.md" "b/_drafts/Linux/\351\270\237\345\223\245\347\232\204linux\347\247\201\346\210\277\350\217\234\345\213\230\350\257\257\350\241\250.md" similarity index 100% rename from "_drafts/\351\270\237\345\223\245\347\232\204linux\347\247\201\346\210\277\350\217\234\345\213\230\350\257\257\350\241\250.md" rename to "_drafts/Linux/\351\270\237\345\223\245\347\232\204linux\347\247\201\346\210\277\350\217\234\345\213\230\350\257\257\350\241\250.md" diff --git "a/_drafts/2014-11-04-EXE \346\226\207\344\273\266\350\275\254\346\215\242\346\210\220\345\256\211\350\243\205\347\250\213\345\272\217\346\225\231\347\250\213.md" "b/_drafts/Others/2014-11-04-EXE \346\226\207\344\273\266\350\275\254\346\215\242\346\210\220\345\256\211\350\243\205\347\250\213\345\272\217\346\225\231\347\250\213.md" similarity index 100% rename from "_drafts/2014-11-04-EXE \346\226\207\344\273\266\350\275\254\346\215\242\346\210\220\345\256\211\350\243\205\347\250\213\345\272\217\346\225\231\347\250\213.md" rename to "_drafts/Others/2014-11-04-EXE \346\226\207\344\273\266\350\275\254\346\215\242\346\210\220\345\256\211\350\243\205\347\250\213\345\272\217\346\225\231\347\250\213.md" diff --git "a/_drafts/202301072207LaTeX\345\206\205\345\256\271\346\200\273\347\273\223.md" "b/_drafts/Others/202301072207LaTeX\345\206\205\345\256\271\346\200\273\347\273\223.md" similarity index 100% rename from "_drafts/202301072207LaTeX\345\206\205\345\256\271\346\200\273\347\273\223.md" rename to "_drafts/Others/202301072207LaTeX\345\206\205\345\256\271\346\200\273\347\273\223.md" diff --git "a/_drafts/202301072208PDF\345\270\270\350\247\201\351\227\256\351\242\230\346\200\273\347\273\223.md" "b/_drafts/Others/202301072208PDF\345\270\270\350\247\201\351\227\256\351\242\230\346\200\273\347\273\223.md" similarity index 100% rename from "_drafts/202301072208PDF\345\270\270\350\247\201\351\227\256\351\242\230\346\200\273\347\273\223.md" rename to "_drafts/Others/202301072208PDF\345\270\270\350\247\201\351\227\256\351\242\230\346\200\273\347\273\223.md" diff --git "a/_drafts/202302262208StableDiffusionWebui\347\216\257\345\242\203\346\220\255\345\273\272.md" "b/_drafts/Others/202302262208StableDiffusionWebui\347\216\257\345\242\203\346\220\255\345\273\272.md" similarity index 100% rename from "_drafts/202302262208StableDiffusionWebui\347\216\257\345\242\203\346\220\255\345\273\272.md" rename to "_drafts/Others/202302262208StableDiffusionWebui\347\216\257\345\242\203\346\220\255\345\273\272.md" diff --git "a/_drafts/ApkToolBoxGUI 0.0.8\345\217\221\345\270\203\344\272\206\357\274\201\357\274\201.md" "b/_drafts/Others/ApkToolBoxGUI 0.0.8\345\217\221\345\270\203\344\272\206\357\274\201\357\274\201.md" similarity index 100% rename from "_drafts/ApkToolBoxGUI 0.0.8\345\217\221\345\270\203\344\272\206\357\274\201\357\274\201.md" rename to "_drafts/Others/ApkToolBoxGUI 0.0.8\345\217\221\345\270\203\344\272\206\357\274\201\357\274\201.md" diff --git "a/_drafts/Cache\346\250\241\346\213\237\345\231\250(CacheSim).md" "b/_drafts/Others/Cache\346\250\241\346\213\237\345\231\250(CacheSim).md" similarity index 100% rename from "_drafts/Cache\346\250\241\346\213\237\345\231\250(CacheSim).md" rename to "_drafts/Others/Cache\346\250\241\346\213\237\345\231\250(CacheSim).md" diff --git a/_drafts/ChooseYourBest.md b/_drafts/Others/ChooseYourBest.md similarity index 100% rename from _drafts/ChooseYourBest.md rename to _drafts/Others/ChooseYourBest.md diff --git "a/_drafts/Input\346\272\220\347\240\201\350\247\243\350\257\273\342\200\224\342\200\224\344\273\216"Show tabs"\345\274\200\345\247\213.md" "b/_drafts/Others/Input\346\272\220\347\240\201\350\247\243\350\257\273\342\200\224\342\200\224\344\273\216"Show tabs"\345\274\200\345\247\213.md" similarity index 100% rename from "_drafts/Input\346\272\220\347\240\201\350\247\243\350\257\273\342\200\224\342\200\224\344\273\216"Show tabs"\345\274\200\345\247\213.md" rename to "_drafts/Others/Input\346\272\220\347\240\201\350\247\243\350\257\273\342\200\224\342\200\224\344\273\216"Show tabs"\345\274\200\345\247\213.md" diff --git a/_drafts/Lecture Notes_ Macros.md b/_drafts/Others/Lecture Notes_ Macros.md similarity index 100% rename from _drafts/Lecture Notes_ Macros.md rename to _drafts/Others/Lecture Notes_ Macros.md diff --git "a/_drafts/MIPSsim\344\275\277\347\224\250\350\257\264\346\230\216.md" "b/_drafts/Others/MIPSsim\344\275\277\347\224\250\350\257\264\346\230\216.md" similarity index 100% rename from "_drafts/MIPSsim\344\275\277\347\224\250\350\257\264\346\230\216.md" rename to "_drafts/Others/MIPSsim\344\275\277\347\224\250\350\257\264\346\230\216.md" diff --git "a/_drafts/OOAD\344\270\216UML\347\254\224\350\256\260.md" "b/_drafts/Others/OOAD\344\270\216UML\347\254\224\350\256\260.md" similarity index 100% rename from "_drafts/OOAD\344\270\216UML\347\254\224\350\256\260.md" rename to "_drafts/Others/OOAD\344\270\216UML\347\254\224\350\256\260.md" diff --git "a/_drafts/Python\347\254\254\344\270\211\346\226\271\345\270\270\347\224\250\345\267\245\345\205\267\343\200\201\345\272\223\343\200\201\346\241\206\346\236\266\347\255\211.md" "b/_drafts/Others/Python\347\254\254\344\270\211\346\226\271\345\270\270\347\224\250\345\267\245\345\205\267\343\200\201\345\272\223\343\200\201\346\241\206\346\236\266\347\255\211.md" similarity index 100% rename from "_drafts/Python\347\254\254\344\270\211\346\226\271\345\270\270\347\224\250\345\267\245\345\205\267\343\200\201\345\272\223\343\200\201\346\241\206\346\236\266\347\255\211.md" rename to "_drafts/Others/Python\347\254\254\344\270\211\346\226\271\345\270\270\347\224\250\345\267\245\345\205\267\343\200\201\345\272\223\343\200\201\346\241\206\346\236\266\347\255\211.md" diff --git "a/_drafts/Rdseed\344\270\216SAC\347\232\204\345\256\211\350\243\205.md" "b/_drafts/Others/Rdseed\344\270\216SAC\347\232\204\345\256\211\350\243\205.md" similarity index 100% rename from "_drafts/Rdseed\344\270\216SAC\347\232\204\345\256\211\350\243\205.md" rename to "_drafts/Others/Rdseed\344\270\216SAC\347\232\204\345\256\211\350\243\205.md" diff --git "a/_drafts/SVN+Apache\345\237\237\347\224\250\346\210\267\350\256\244\350\257\201\351\205\215\347\275\256\346\226\271\346\263\225_Windows(\350\275\254\357\274\214\351\207\215\346\226\260\346\216\222\347\211\210\357\274\214\351\203\250\345\210\206\345\206\205\345\256\271\346\233\264\346\226\260\344\274\230\345\214\226).md" "b/_drafts/Others/SVN+Apache\345\237\237\347\224\250\346\210\267\350\256\244\350\257\201\351\205\215\347\275\256\346\226\271\346\263\225_Windows(\350\275\254\357\274\214\351\207\215\346\226\260\346\216\222\347\211\210\357\274\214\351\203\250\345\210\206\345\206\205\345\256\271\346\233\264\346\226\260\344\274\230\345\214\226).md" similarity index 100% rename from "_drafts/SVN+Apache\345\237\237\347\224\250\346\210\267\350\256\244\350\257\201\351\205\215\347\275\256\346\226\271\346\263\225_Windows(\350\275\254\357\274\214\351\207\215\346\226\260\346\216\222\347\211\210\357\274\214\351\203\250\345\210\206\345\206\205\345\256\271\346\233\264\346\226\260\344\274\230\345\214\226).md" rename to "_drafts/Others/SVN+Apache\345\237\237\347\224\250\346\210\267\350\256\244\350\257\201\351\205\215\347\275\256\346\226\271\346\263\225_Windows(\350\275\254\357\274\214\351\207\215\346\226\260\346\216\222\347\211\210\357\274\214\351\203\250\345\210\206\345\206\205\345\256\271\346\233\264\346\226\260\344\274\230\345\214\226).md" diff --git a/_drafts/Use the SVN command-line tool.md b/_drafts/Others/Use the SVN command-line tool.md similarity index 100% rename from _drafts/Use the SVN command-line tool.md rename to _drafts/Others/Use the SVN command-line tool.md diff --git "a/_drafts/VIM\345\270\270\350\247\201\347\224\250\346\263\225\346\200\273\347\273\223.md" "b/_drafts/Others/VIM\345\270\270\350\247\201\347\224\250\346\263\225\346\200\273\347\273\223.md" similarity index 100% rename from "_drafts/VIM\345\270\270\350\247\201\347\224\250\346\263\225\346\200\273\347\273\223.md" rename to "_drafts/Others/VIM\345\270\270\350\247\201\347\224\250\346\263\225\346\200\273\347\273\223.md" diff --git "a/_drafts/VirtualBox\347\233\270\345\205\263\351\227\256\351\242\230\346\200\273\347\273\223.md" "b/_drafts/Others/VirtualBox\347\233\270\345\205\263\351\227\256\351\242\230\346\200\273\347\273\223.md" similarity index 100% rename from "_drafts/VirtualBox\347\233\270\345\205\263\351\227\256\351\242\230\346\200\273\347\273\223.md" rename to "_drafts/Others/VirtualBox\347\233\270\345\205\263\351\227\256\351\242\230\346\200\273\347\273\223.md" diff --git "a/_drafts/Windows\345\271\263\345\217\260\344\270\213\345\256\211\350\243\205Eclipse\346\217\222\344\273\266\357\274\214\345\274\200\345\217\221Hadoop\345\272\224\347\224\250.md" "b/_drafts/Others/Windows\345\271\263\345\217\260\344\270\213\345\256\211\350\243\205Eclipse\346\217\222\344\273\266\357\274\214\345\274\200\345\217\221Hadoop\345\272\224\347\224\250.md" similarity index 100% rename from "_drafts/Windows\345\271\263\345\217\260\344\270\213\345\256\211\350\243\205Eclipse\346\217\222\344\273\266\357\274\214\345\274\200\345\217\221Hadoop\345\272\224\347\224\250.md" rename to "_drafts/Others/Windows\345\271\263\345\217\260\344\270\213\345\256\211\350\243\205Eclipse\346\217\222\344\273\266\357\274\214\345\274\200\345\217\221Hadoop\345\272\224\347\224\250.md" diff --git "a/_drafts/Windows\346\227\245\345\277\227\346\237\245\347\234\213\345\267\245\345\205\267\345\220\210\351\233\206.md" "b/_drafts/Others/Windows\346\227\245\345\277\227\346\237\245\347\234\213\345\267\245\345\205\267\345\220\210\351\233\206.md" similarity index 100% rename from "_drafts/Windows\346\227\245\345\277\227\346\237\245\347\234\213\345\267\245\345\205\267\345\220\210\351\233\206.md" rename to "_drafts/Others/Windows\346\227\245\345\277\227\346\237\245\347\234\213\345\267\245\345\205\267\345\220\210\351\233\206.md" diff --git "a/_drafts/XShell\344\275\277\347\224\250\351\227\256\351\242\230\346\261\207\346\200\273.md" "b/_drafts/Others/XShell\344\275\277\347\224\250\351\227\256\351\242\230\346\261\207\346\200\273.md" similarity index 100% rename from "_drafts/XShell\344\275\277\347\224\250\351\227\256\351\242\230\346\261\207\346\200\273.md" rename to "_drafts/Others/XShell\344\275\277\347\224\250\351\227\256\351\242\230\346\261\207\346\200\273.md" diff --git "a/_drafts/astyle \344\275\277\347\224\250\350\257\264\346\230\216.md" "b/_drafts/Others/astyle \344\275\277\347\224\250\350\257\264\346\230\216.md" similarity index 100% rename from "_drafts/astyle \344\275\277\347\224\250\350\257\264\346\230\216.md" rename to "_drafts/Others/astyle \344\275\277\347\224\250\350\257\264\346\230\216.md" diff --git "a/_drafts/openmpi\345\207\272\347\216\260Segmentation Fault\350\200\214\347\273\210\346\255\242\350\277\220\347\256\227.md" "b/_drafts/Others/openmpi\345\207\272\347\216\260Segmentation Fault\350\200\214\347\273\210\346\255\242\350\277\220\347\256\227.md" similarity index 100% rename from "_drafts/openmpi\345\207\272\347\216\260Segmentation Fault\350\200\214\347\273\210\346\255\242\350\277\220\347\256\227.md" rename to "_drafts/Others/openmpi\345\207\272\347\216\260Segmentation Fault\350\200\214\347\273\210\346\255\242\350\277\220\347\256\227.md" diff --git "a/_drafts/tcpdump\346\215\225\346\215\211\346\240\267\344\276\213.md" "b/_drafts/Others/tcpdump\346\215\225\346\215\211\346\240\267\344\276\213.md" similarity index 100% rename from "_drafts/tcpdump\346\215\225\346\215\211\346\240\267\344\276\213.md" rename to "_drafts/Others/tcpdump\346\215\225\346\215\211\346\240\267\344\276\213.md" diff --git "a/_drafts/\344\270\200\344\270\252\347\224\261\344\272\216\347\275\221\347\273\234\351\227\256\351\242\230\345\257\274\350\207\264\347\232\204\346\234\215\345\212\241\346\227\240\346\263\225\344\275\277\347\224\250\342\200\224\342\200\224\350\260\203\350\257\225\350\277\207\347\250\213\346\200\273\347\273\223.md" "b/_drafts/Others/\344\270\200\344\270\252\347\224\261\344\272\216\347\275\221\347\273\234\351\227\256\351\242\230\345\257\274\350\207\264\347\232\204\346\234\215\345\212\241\346\227\240\346\263\225\344\275\277\347\224\250\342\200\224\342\200\224\350\260\203\350\257\225\350\277\207\347\250\213\346\200\273\347\273\223.md" similarity index 100% rename from "_drafts/\344\270\200\344\270\252\347\224\261\344\272\216\347\275\221\347\273\234\351\227\256\351\242\230\345\257\274\350\207\264\347\232\204\346\234\215\345\212\241\346\227\240\346\263\225\344\275\277\347\224\250\342\200\224\342\200\224\350\260\203\350\257\225\350\277\207\347\250\213\346\200\273\347\273\223.md" rename to "_drafts/Others/\344\270\200\344\270\252\347\224\261\344\272\216\347\275\221\347\273\234\351\227\256\351\242\230\345\257\274\350\207\264\347\232\204\346\234\215\345\212\241\346\227\240\346\263\225\344\275\277\347\224\250\342\200\224\342\200\224\350\260\203\350\257\225\350\277\207\347\250\213\346\200\273\347\273\223.md" diff --git "a/_drafts/\344\270\200\344\270\252\347\250\213\345\272\217\345\221\230\350\203\275\345\244\237\346\216\247\345\210\266\345\244\232\345\260\221\350\241\214\344\273\243\347\240\201.md" "b/_drafts/Others/\344\270\200\344\270\252\347\250\213\345\272\217\345\221\230\350\203\275\345\244\237\346\216\247\345\210\266\345\244\232\345\260\221\350\241\214\344\273\243\347\240\201.md" similarity index 100% rename from "_drafts/\344\270\200\344\270\252\347\250\213\345\272\217\345\221\230\350\203\275\345\244\237\346\216\247\345\210\266\345\244\232\345\260\221\350\241\214\344\273\243\347\240\201.md" rename to "_drafts/Others/\344\270\200\344\270\252\347\250\213\345\272\217\345\221\230\350\203\275\345\244\237\346\216\247\345\210\266\345\244\232\345\260\221\350\241\214\344\273\243\347\240\201.md" diff --git "a/_drafts/\344\270\215\345\274\225\345\205\245\346\226\260\347\232\204\346\225\260\347\273\204\357\274\214\345\256\236\347\216\260\346\225\260\347\273\204\345\205\203\347\264\240\344\272\244\346\215\242\344\275\215\347\275\256\345\207\275\346\225\260.md" "b/_drafts/Others/\344\270\215\345\274\225\345\205\245\346\226\260\347\232\204\346\225\260\347\273\204\357\274\214\345\256\236\347\216\260\346\225\260\347\273\204\345\205\203\347\264\240\344\272\244\346\215\242\344\275\215\347\275\256\345\207\275\346\225\260.md" similarity index 100% rename from "_drafts/\344\270\215\345\274\225\345\205\245\346\226\260\347\232\204\346\225\260\347\273\204\357\274\214\345\256\236\347\216\260\346\225\260\347\273\204\345\205\203\347\264\240\344\272\244\346\215\242\344\275\215\347\275\256\345\207\275\346\225\260.md" rename to "_drafts/Others/\344\270\215\345\274\225\345\205\245\346\226\260\347\232\204\346\225\260\347\273\204\357\274\214\345\256\236\347\216\260\346\225\260\347\273\204\345\205\203\347\264\240\344\272\244\346\215\242\344\275\215\347\275\256\345\207\275\346\225\260.md" diff --git "a/_drafts/\344\270\272\344\273\200\344\271\210\345\244\247\345\244\232\346\225\260\347\274\226\347\250\213\350\257\255\350\250\200\344\270\255\347\232\204\346\225\260\347\273\204\351\203\275\344\273\2160\345\274\200\345\247\213.md" "b/_drafts/Others/\344\270\272\344\273\200\344\271\210\345\244\247\345\244\232\346\225\260\347\274\226\347\250\213\350\257\255\350\250\200\344\270\255\347\232\204\346\225\260\347\273\204\351\203\275\344\273\2160\345\274\200\345\247\213.md" similarity index 100% rename from "_drafts/\344\270\272\344\273\200\344\271\210\345\244\247\345\244\232\346\225\260\347\274\226\347\250\213\350\257\255\350\250\200\344\270\255\347\232\204\346\225\260\347\273\204\351\203\275\344\273\2160\345\274\200\345\247\213.md" rename to "_drafts/Others/\344\270\272\344\273\200\344\271\210\345\244\247\345\244\232\346\225\260\347\274\226\347\250\213\350\257\255\350\250\200\344\270\255\347\232\204\346\225\260\347\273\204\351\203\275\344\273\2160\345\274\200\345\247\213.md" diff --git "a/_drafts/\344\270\272\344\273\200\344\271\210\346\210\221\344\273\254\346\200\273\346\230\257\345\256\214\344\270\215\346\210\220\347\233\256\346\240\207.md" "b/_drafts/Others/\344\270\272\344\273\200\344\271\210\346\210\221\344\273\254\346\200\273\346\230\257\345\256\214\344\270\215\346\210\220\347\233\256\346\240\207.md" similarity index 100% rename from "_drafts/\344\270\272\344\273\200\344\271\210\346\210\221\344\273\254\346\200\273\346\230\257\345\256\214\344\270\215\346\210\220\347\233\256\346\240\207.md" rename to "_drafts/Others/\344\270\272\344\273\200\344\271\210\346\210\221\344\273\254\346\200\273\346\230\257\345\256\214\344\270\215\346\210\220\347\233\256\346\240\207.md" diff --git "a/_drafts/\344\275\277\347\224\250OpenSSL\345\256\236\347\216\260X25519\347\247\230\351\222\245\345\215\217\345\225\206\345\212\237\350\203\275.md" "b/_drafts/Others/\344\275\277\347\224\250OpenSSL\345\256\236\347\216\260X25519\347\247\230\351\222\245\345\215\217\345\225\206\345\212\237\350\203\275.md" similarity index 100% rename from "_drafts/\344\275\277\347\224\250OpenSSL\345\256\236\347\216\260X25519\347\247\230\351\222\245\345\215\217\345\225\206\345\212\237\350\203\275.md" rename to "_drafts/Others/\344\275\277\347\224\250OpenSSL\345\256\236\347\216\260X25519\347\247\230\351\222\245\345\215\217\345\225\206\345\212\237\350\203\275.md" diff --git "a/_drafts/\344\275\277\347\224\250PowerShell\347\256\200\345\214\226\346\210\221\347\232\204\345\267\245\344\275\234.md" "b/_drafts/Others/\344\275\277\347\224\250PowerShell\347\256\200\345\214\226\346\210\221\347\232\204\345\267\245\344\275\234.md" similarity index 100% rename from "_drafts/\344\275\277\347\224\250PowerShell\347\256\200\345\214\226\346\210\221\347\232\204\345\267\245\344\275\234.md" rename to "_drafts/Others/\344\275\277\347\224\250PowerShell\347\256\200\345\214\226\346\210\221\347\232\204\345\267\245\344\275\234.md" diff --git "a/_drafts/\345\205\263\344\272\216\345\274\272\345\210\266\345\274\217\357\274\210\345\221\275\344\273\244\345\274\217\357\274\211\350\257\255\350\250\200\345\222\214\345\243\260\346\230\216\345\274\217\350\257\255\350\250\200\347\232\204\345\214\272\345\210\253.md" "b/_drafts/Others/\345\205\263\344\272\216\345\274\272\345\210\266\345\274\217\357\274\210\345\221\275\344\273\244\345\274\217\357\274\211\350\257\255\350\250\200\345\222\214\345\243\260\346\230\216\345\274\217\350\257\255\350\250\200\347\232\204\345\214\272\345\210\253.md" similarity index 100% rename from "_drafts/\345\205\263\344\272\216\345\274\272\345\210\266\345\274\217\357\274\210\345\221\275\344\273\244\345\274\217\357\274\211\350\257\255\350\250\200\345\222\214\345\243\260\346\230\216\345\274\217\350\257\255\350\250\200\347\232\204\345\214\272\345\210\253.md" rename to "_drafts/Others/\345\205\263\344\272\216\345\274\272\345\210\266\345\274\217\357\274\210\345\221\275\344\273\244\345\274\217\357\274\211\350\257\255\350\250\200\345\222\214\345\243\260\346\230\216\345\274\217\350\257\255\350\250\200\347\232\204\345\214\272\345\210\253.md" diff --git "a/_drafts/\345\205\263\344\272\216\350\256\260\345\275\225\346\227\245\345\277\227\347\232\204\345\207\240\344\270\252\345\260\217\345\277\203\345\276\227.md" "b/_drafts/Others/\345\205\263\344\272\216\350\256\260\345\275\225\346\227\245\345\277\227\347\232\204\345\207\240\344\270\252\345\260\217\345\277\203\345\276\227.md" similarity index 100% rename from "_drafts/\345\205\263\344\272\216\350\256\260\345\275\225\346\227\245\345\277\227\347\232\204\345\207\240\344\270\252\345\260\217\345\277\203\345\276\227.md" rename to "_drafts/Others/\345\205\263\344\272\216\350\256\260\345\275\225\346\227\245\345\277\227\347\232\204\345\207\240\344\270\252\345\260\217\345\277\203\345\276\227.md" diff --git "a/_drafts/\345\210\206\350\257\215\345\267\245\345\205\267\346\257\224\350\276\203\357\274\210\350\275\254\357\274\211.md" "b/_drafts/Others/\345\210\206\350\257\215\345\267\245\345\205\267\346\257\224\350\276\203\357\274\210\350\275\254\357\274\211.md" similarity index 100% rename from "_drafts/\345\210\206\350\257\215\345\267\245\345\205\267\346\257\224\350\276\203\357\274\210\350\275\254\357\274\211.md" rename to "_drafts/Others/\345\210\206\350\257\215\345\267\245\345\205\267\346\257\224\350\276\203\357\274\210\350\275\254\357\274\211.md" diff --git "a/_drafts/\345\210\244\346\226\255\344\270\200\344\270\252\346\225\260\346\230\257\344\270\215\346\230\2572\347\232\204\345\271\202.md" "b/_drafts/Others/\345\210\244\346\226\255\344\270\200\344\270\252\346\225\260\346\230\257\344\270\215\346\230\2572\347\232\204\345\271\202.md" similarity index 100% rename from "_drafts/\345\210\244\346\226\255\344\270\200\344\270\252\346\225\260\346\230\257\344\270\215\346\230\2572\347\232\204\345\271\202.md" rename to "_drafts/Others/\345\210\244\346\226\255\344\270\200\344\270\252\346\225\260\346\230\257\344\270\215\346\230\2572\347\232\204\345\271\202.md" diff --git "a/_drafts/\345\210\266\344\275\234Aspose CHM\346\226\207\346\241\243\347\232\204\350\277\207\347\250\213\350\256\260\345\275\225.md" "b/_drafts/Others/\345\210\266\344\275\234Aspose CHM\346\226\207\346\241\243\347\232\204\350\277\207\347\250\213\350\256\260\345\275\225.md" similarity index 100% rename from "_drafts/\345\210\266\344\275\234Aspose CHM\346\226\207\346\241\243\347\232\204\350\277\207\347\250\213\350\256\260\345\275\225.md" rename to "_drafts/Others/\345\210\266\344\275\234Aspose CHM\346\226\207\346\241\243\347\232\204\350\277\207\347\250\213\350\256\260\345\275\225.md" diff --git "a/_drafts/\345\215\216\344\270\272\351\235\242\350\257\225\351\242\230\342\200\224\342\200\224\344\270\200\351\201\223\345\205\263\344\272\216\346\214\207\351\222\210\346\226\271\351\235\242\347\232\204\347\274\226\347\250\213\351\242\230(C_C++).md" "b/_drafts/Others/\345\215\216\344\270\272\351\235\242\350\257\225\351\242\230\342\200\224\342\200\224\344\270\200\351\201\223\345\205\263\344\272\216\346\214\207\351\222\210\346\226\271\351\235\242\347\232\204\347\274\226\347\250\213\351\242\230(C_C++).md" similarity index 100% rename from "_drafts/\345\215\216\344\270\272\351\235\242\350\257\225\351\242\230\342\200\224\342\200\224\344\270\200\351\201\223\345\205\263\344\272\216\346\214\207\351\222\210\346\226\271\351\235\242\347\232\204\347\274\226\347\250\213\351\242\230(C_C++).md" rename to "_drafts/Others/\345\215\216\344\270\272\351\235\242\350\257\225\351\242\230\342\200\224\342\200\224\344\270\200\351\201\223\345\205\263\344\272\216\346\214\207\351\222\210\346\226\271\351\235\242\347\232\204\347\274\226\347\250\213\351\242\230(C_C++).md" diff --git "a/_drafts/\345\215\216\344\270\272\351\235\242\350\257\225\351\242\230\342\200\224\342\200\224\345\215\225\345\220\221\351\223\276\350\241\250\345\200\222\350\275\254\357\274\210\344\270\200\346\254\241\351\201\215\345\216\206\357\274\211.md" "b/_drafts/Others/\345\215\216\344\270\272\351\235\242\350\257\225\351\242\230\342\200\224\342\200\224\345\215\225\345\220\221\351\223\276\350\241\250\345\200\222\350\275\254\357\274\210\344\270\200\346\254\241\351\201\215\345\216\206\357\274\211.md" similarity index 100% rename from "_drafts/\345\215\216\344\270\272\351\235\242\350\257\225\351\242\230\342\200\224\342\200\224\345\215\225\345\220\221\351\223\276\350\241\250\345\200\222\350\275\254\357\274\210\344\270\200\346\254\241\351\201\215\345\216\206\357\274\211.md" rename to "_drafts/Others/\345\215\216\344\270\272\351\235\242\350\257\225\351\242\230\342\200\224\342\200\224\345\215\225\345\220\221\351\223\276\350\241\250\345\200\222\350\275\254\357\274\210\344\270\200\346\254\241\351\201\215\345\216\206\357\274\211.md" diff --git "a/_drafts/\345\215\216\344\270\272\351\235\242\350\257\225\351\242\230\342\200\224\342\200\224\347\272\246\347\221\237\345\244\253\351\227\256\351\242\230\347\232\204C++\347\256\200\345\215\225\345\256\236\347\216\260\357\274\210\345\276\252\347\216\257\351\223\276\350\241\250\357\274\211.md" "b/_drafts/Others/\345\215\216\344\270\272\351\235\242\350\257\225\351\242\230\342\200\224\342\200\224\347\272\246\347\221\237\345\244\253\351\227\256\351\242\230\347\232\204C++\347\256\200\345\215\225\345\256\236\347\216\260\357\274\210\345\276\252\347\216\257\351\223\276\350\241\250\357\274\211.md" similarity index 100% rename from "_drafts/\345\215\216\344\270\272\351\235\242\350\257\225\351\242\230\342\200\224\342\200\224\347\272\246\347\221\237\345\244\253\351\227\256\351\242\230\347\232\204C++\347\256\200\345\215\225\345\256\236\347\216\260\357\274\210\345\276\252\347\216\257\351\223\276\350\241\250\357\274\211.md" rename to "_drafts/Others/\345\215\216\344\270\272\351\235\242\350\257\225\351\242\230\342\200\224\342\200\224\347\272\246\347\221\237\345\244\253\351\227\256\351\242\230\347\232\204C++\347\256\200\345\215\225\345\256\236\347\216\260\357\274\210\345\276\252\347\216\257\351\223\276\350\241\250\357\274\211.md" diff --git "a/_drafts/\345\234\250 Windows \344\270\212\345\256\211\350\243\205 Hadoop \346\225\231\347\250\213\357\274\210\350\275\254\357\274\211.md" "b/_drafts/Others/\345\234\250 Windows \344\270\212\345\256\211\350\243\205 Hadoop \346\225\231\347\250\213\357\274\210\350\275\254\357\274\211.md" similarity index 100% rename from "_drafts/\345\234\250 Windows \344\270\212\345\256\211\350\243\205 Hadoop \346\225\231\347\250\213\357\274\210\350\275\254\357\274\211.md" rename to "_drafts/Others/\345\234\250 Windows \344\270\212\345\256\211\350\243\205 Hadoop \346\225\231\347\250\213\357\274\210\350\275\254\357\274\211.md" diff --git "a/_drafts/\345\234\250\345\267\245\344\275\234\344\270\255\351\201\207\345\210\260\347\232\204\351\227\256\351\242\230.md" "b/_drafts/Others/\345\234\250\345\267\245\344\275\234\344\270\255\351\201\207\345\210\260\347\232\204\351\227\256\351\242\230.md" similarity index 100% rename from "_drafts/\345\234\250\345\267\245\344\275\234\344\270\255\351\201\207\345\210\260\347\232\204\351\227\256\351\242\230.md" rename to "_drafts/Others/\345\234\250\345\267\245\344\275\234\344\270\255\351\201\207\345\210\260\347\232\204\351\227\256\351\242\230.md" diff --git "a/_drafts/\345\237\272\344\272\216\345\257\271\350\261\241\345\222\214\351\235\242\345\220\221\345\257\271\350\261\241\347\232\204\345\214\272\345\210\253.md" "b/_drafts/Others/\345\237\272\344\272\216\345\257\271\350\261\241\345\222\214\351\235\242\345\220\221\345\257\271\350\261\241\347\232\204\345\214\272\345\210\253.md" similarity index 100% rename from "_drafts/\345\237\272\344\272\216\345\257\271\350\261\241\345\222\214\351\235\242\345\220\221\345\257\271\350\261\241\347\232\204\345\214\272\345\210\253.md" rename to "_drafts/Others/\345\237\272\344\272\216\345\257\271\350\261\241\345\222\214\351\235\242\345\220\221\345\257\271\350\261\241\347\232\204\345\214\272\345\210\253.md" diff --git "a/_drafts/\345\255\227\347\254\246\344\271\261\347\240\201\344\270\200\351\224\205\347\202\226.md" "b/_drafts/Others/\345\255\227\347\254\246\344\271\261\347\240\201\344\270\200\351\224\205\347\202\226.md" similarity index 100% rename from "_drafts/\345\255\227\347\254\246\344\271\261\347\240\201\344\270\200\351\224\205\347\202\226.md" rename to "_drafts/Others/\345\255\227\347\254\246\344\271\261\347\240\201\344\270\200\351\224\205\347\202\226.md" diff --git "a/_drafts/\345\257\271\350\261\241\346\261\240\343\200\201\347\272\277\347\250\213\346\261\240\343\200\201\346\225\260\346\215\256\345\272\223\350\277\236\346\216\245\346\261\240\343\200\201\345\206\205\345\255\230\346\261\240\345\211\226\346\236\220.md" "b/_drafts/Others/\345\257\271\350\261\241\346\261\240\343\200\201\347\272\277\347\250\213\346\261\240\343\200\201\346\225\260\346\215\256\345\272\223\350\277\236\346\216\245\346\261\240\343\200\201\345\206\205\345\255\230\346\261\240\345\211\226\346\236\220.md" similarity index 100% rename from "_drafts/\345\257\271\350\261\241\346\261\240\343\200\201\347\272\277\347\250\213\346\261\240\343\200\201\346\225\260\346\215\256\345\272\223\350\277\236\346\216\245\346\261\240\343\200\201\345\206\205\345\255\230\346\261\240\345\211\226\346\236\220.md" rename to "_drafts/Others/\345\257\271\350\261\241\346\261\240\343\200\201\347\272\277\347\250\213\346\261\240\343\200\201\346\225\260\346\215\256\345\272\223\350\277\236\346\216\245\346\261\240\343\200\201\345\206\205\345\255\230\346\261\240\345\211\226\346\236\220.md" diff --git "a/_drafts/\346\270\205\347\220\206\346\227\240\347\224\250\347\232\204CSS\346\240\267\345\274\217\347\232\204\345\207\240\344\270\252\345\267\245\345\205\267\357\274\210\350\275\254\357\274\211.md" "b/_drafts/Others/\346\270\205\347\220\206\346\227\240\347\224\250\347\232\204CSS\346\240\267\345\274\217\347\232\204\345\207\240\344\270\252\345\267\245\345\205\267\357\274\210\350\275\254\357\274\211.md" similarity index 100% rename from "_drafts/\346\270\205\347\220\206\346\227\240\347\224\250\347\232\204CSS\346\240\267\345\274\217\347\232\204\345\207\240\344\270\252\345\267\245\345\205\267\357\274\210\350\275\254\357\274\211.md" rename to "_drafts/Others/\346\270\205\347\220\206\346\227\240\347\224\250\347\232\204CSS\346\240\267\345\274\217\347\232\204\345\207\240\344\270\252\345\267\245\345\205\267\357\274\210\350\275\254\357\274\211.md" diff --git "a/_drafts/\350\203\275\350\256\251\347\250\213\345\272\217\345\201\232\347\232\204\344\272\213\346\203\205\345\235\232\345\206\263\344\270\215\347\224\250\344\272\272\346\235\245\345\201\232\342\200\224\342\200\224\346\211\271\351\207\217\344\277\256\345\244\215markdownlint MD034\350\255\246\345\221\212.md" "b/_drafts/Others/\350\203\275\350\256\251\347\250\213\345\272\217\345\201\232\347\232\204\344\272\213\346\203\205\345\235\232\345\206\263\344\270\215\347\224\250\344\272\272\346\235\245\345\201\232\342\200\224\342\200\224\346\211\271\351\207\217\344\277\256\345\244\215markdownlint MD034\350\255\246\345\221\212.md" similarity index 100% rename from "_drafts/\350\203\275\350\256\251\347\250\213\345\272\217\345\201\232\347\232\204\344\272\213\346\203\205\345\235\232\345\206\263\344\270\215\347\224\250\344\272\272\346\235\245\345\201\232\342\200\224\342\200\224\346\211\271\351\207\217\344\277\256\345\244\215markdownlint MD034\350\255\246\345\221\212.md" rename to "_drafts/Others/\350\203\275\350\256\251\347\250\213\345\272\217\345\201\232\347\232\204\344\272\213\346\203\205\345\235\232\345\206\263\344\270\215\347\224\250\344\272\272\346\235\245\345\201\232\342\200\224\342\200\224\346\211\271\351\207\217\344\277\256\345\244\215markdownlint MD034\350\255\246\345\221\212.md" diff --git "a/_drafts/\351\253\230\345\217\257\347\224\250\346\200\247\344\270\255\347\232\204\350\204\221\350\243\202\351\227\256\351\242\230(split-brain problem in HA)(\350\275\254).md" "b/_drafts/Others/\351\253\230\345\217\257\347\224\250\346\200\247\344\270\255\347\232\204\350\204\221\350\243\202\351\227\256\351\242\230(split-brain problem in HA)(\350\275\254).md" similarity index 100% rename from "_drafts/\351\253\230\345\217\257\347\224\250\346\200\247\344\270\255\347\232\204\350\204\221\350\243\202\351\227\256\351\242\230(split-brain problem in HA)(\350\275\254).md" rename to "_drafts/Others/\351\253\230\345\217\257\347\224\250\346\200\247\344\270\255\347\232\204\350\204\221\350\243\202\351\227\256\351\242\230(split-brain problem in HA)(\350\275\254).md" From b10b3e221ece9da384437d264ade453c73b6b9cd Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 1 Sep 2024 15:08:25 +0800 Subject: [PATCH 198/234] add toc and optimize for Aloys-Build-Manual --- .../others/2024-06-22-Aloys-Build-Manual.md | 73 +++++++++++++++---- 1 file changed, 60 insertions(+), 13 deletions(-) diff --git a/_posts/others/2024-06-22-Aloys-Build-Manual.md b/_posts/others/2024-06-22-Aloys-Build-Manual.md index 7e7746d..21fd823 100644 --- a/_posts/others/2024-06-22-Aloys-Build-Manual.md +++ b/_posts/others/2024-06-22-Aloys-Build-Manual.md @@ -1,4 +1,11 @@ -# Aloys的环境搭建手册 +--- +title: "Aloys的环境搭建手册" +categories: + - others +tags: + - 环境搭建 +toc: true +--- Windows信息: @@ -3674,14 +3681,22 @@ http://192.168.1.130:9090/graph ![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image190.png) -## 安装配置CAS -#### 基础环境安装 +## 安装配置CAS + +### 基础环境安装 + 搭建CAS单点登录系统,首先需要基础环境的部署。主要包括Windows/Linux/Java/Maven/GIT/Tomcat等,基础环境的部署不是本文的描写重点,本文仅做简要说明,如有疑问可以邮件咨询。 -#### Windows + +### Windows + Windows 10,安装有JDK/GIT/Maven等工具,主要功能是下载CAS服务端和客户端源码,并进行编译打包,上传到Linux服务器上进行部署。同时利用Chrome浏览器对安装之后的环境进行检验。 -#### Linux + +### Linux + Ubuntu 16.04.1 LTS,安装有JDK、Tomcat等工具,主要作为CAS Server和Web Server的宿主环境。 -#### JDK + +### JDK + Linux服务器端安装JDK主要是作为Tomcat的运行时环境,并提供keytool等工具进行HTTPS配置;Windows客户端安装JDK主要是作为Maven的运行时环境。 jiangxin@tomcat:~$ java -version @@ -3693,11 +3708,15 @@ PS C:\Users\jiang> java -version java version "1.8.0_102" Java(TM) SE Runtime Environment (build 1.8.0_102-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode) -#### GIT + + +### GIT 安装在Windows机器,主要用于下载并及时更新CAS Server和Client源码。 PS C:\Users\jiang> git --version git version 2.8.3.windows.1 -#### Maven + +### Maven + 安装在Windows机器,主要作用是编译打包。 PS C:\Users\jiang> mvn -v Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00) @@ -3706,7 +3725,9 @@ Java version: 1.8.0_102, vendor: Oracle Corporation Java home: C:\Java\jdk1.8.0_102\jre Default locale: zh_CN, platform encoding: GBK OS name: "windows 10", version: "10.0", arch: "amd64", family: "dos" -#### Tomcat + +### Tomcat + 安装在Linux,安装包为: apache-tomcat-8.5.14.tar.gz 为了更好的模拟单点登录,需要安装三个Tomcat实例,其中一个作为CAS Server,另外两个作为CAS Client。具体分配 @@ -3751,6 +3772,7 @@ Using JRE_HOME: /usr/local/java/jdk1.8.0_121 Using CLASSPATH: /usr/local/tomcat/apache-tomcat-8.5.14/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-8.5.14/bin/tomcat-juli.jar ### 安装CAS服务端 + 在较新的CAS版本中不在提供CAS服务端和客户端的安装包,都是依靠下载源码,重新打包。如果对本文的安装内容有疑问可以参考CAS的官网: https://apereo.github.io/cas/5.0.x/installation/Maven-Overlay-Installation.html @@ -3833,7 +3855,9 @@ http://192.168.1.130:8080/cas/login 使用casuser/Mellon进行登录(application.properties中配置用户名和密码),查看是否登录成功。 ![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image193.png) + ### 配置数字证书 + CAS要求CAS Server和CAS Client以及客户端浏览器端全部使用https访问,所以需要配置证书。 正常情况下,数字证书的生成,分发,使用是在多台机器上,以本文搭建的SSO系统为例,在A机器(CA)上生成证书,然后将证书(包括私钥和公钥)分发到B机器(SSO Server),B机器根据该证书导出公钥分发给C机器(SSO Client),此时B和C即可正常建立连接。同时当D机器(客户端浏览器)与A机器交互时即可在A机器上下载公钥,进行连接。 @@ -3935,18 +3959,17 @@ KeyIdentifier [ 是否信任此证书? [否]: y 证书已添加到密钥库中 + ### 安装CAS客户端 + 建立客户端工程,参考: https://bitbucket.org/jiangxincode/casclient/ 使用maven打包,得到casclient.war,上传到服务器上 - - - - ### 验证 + 验证之前先在Windows和Linux机器的hosts文件中加入: 192.168.1.130 cas.sso.com @@ -3959,6 +3982,7 @@ https://cas.sso.com:8443/cas/login?service=https%3A%2F%2Fcas.sso.com%3A8443%2Fca https://cas.sso.com:8443/casclient/index.jsp;jsessionid=23551AEBF9B7B61431D0CC942F923771 ### 配置日志路径 + 为了防止在不同地方启动tomcat,导致日志位置不同,不方便查找,修改一下日志路径。 jiangxin@tomcat:/usr/local/tomcat/apache-tomcat-8.5.14/webapps/cas/WEB-INF/classes$ cp log4j2.xml log4j2.xml.bak @@ -4023,6 +4047,7 @@ jiangxin@tomcat:/usr/local/tomcat/apache-tomcat-8.5.14/webapps/cas/WEB-INF/class ``` ### 其它配置 + CAS支持的配置很多,此处不一一说明,有需要的可以参考下面的链接: https://github.com/apereo/cas @@ -4032,16 +4057,21 @@ cas系列文章: http://www.cnblogs.com/vhua/tag/cas/ cas单点登录配置速成: http://www.blogjava.net/goodlyts/archive/2009/10/20/299091.html ## Windows 10系统下搭建Jenkins环境 + 主要参考: http://www.cnblogs.com/edward2013/p/5269465.html 但是没有安装ant,而且java、maven、tomcat都是使用的压缩包方式安装。 + ## Ubuntu 16.04安装docker + 主要参考: https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository ## Ubuntu 22.04安装Samba + ### 下载/安装Samba服务器: sudo apt-get install samba samba-common + ### 配置Samba服务器 首先将默认的配置文件进行备份 sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak @@ -4055,10 +4085,14 @@ browseable = yes public = yes writable = yes valid users = jiangxin + ### 设置密码并重启服务器 + sudo smbpasswd -a jiangxin //设置访问的密码 sudo service smbd restart //重启smb服务器 + ### 访问 + 在Windows资源管理器导航栏输入`\\ip_adress`,然后输入账号和密码就可以访问了。为了后续方便快速访问Linux侧目录,将远程目录映射为网络驱动器: ![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image197.png) @@ -4067,6 +4101,7 @@ sudo service smbd restart //重启smb服务器 ![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image199.png) ### 其它问题 + 如果Windows无法访问samba服务器,尝试通过以下方式确认问题所在: 控制面板-系统和安全-Windows Defender 防火墙,关闭防火墙 @@ -4081,7 +4116,9 @@ Win+R,输入gpedit.msc,计算器配置-管理模板-网络-Lanman工作站 ![](https://raw.githubusercontent.com/jiangxincode/PicGo/master/aloys_build_manual/image203.png) ## 配置AOSP源码查看环境 + ### 在Windows上安装Repo,同步AOSP代码【不推荐】 + 第一个想到的方案是在Windows上配置Repo,然后下载AOSP源码,参考: Windows安装repo的真正解决方案:https://ysy950803.blog.csdn.net/article/details/104188793 但是就像Repo官网(https://gerrit.googlesource.com/git-repo/+/HEAD/docs/windows.md)说的那样: @@ -4090,18 +4127,24 @@ Keep in mind that Windows in general is “best effort” and “community suppo Windows版的Repo虽然可用,但是可能会出现各种各样的问题,这些问题可能会让我们在解决环境问题上分心过多,所以不推荐这种方式。 ### 在Linux上安装Repo,同步AOSP代码【推荐】 + 根据实际情况有两种工作模式: 1、 Linux作为AOSP代码的同步、存储、查看、修改、编译环境,大部分工作都是在Linux上完成,Android Studio也是安装在Linux上,这种我觉得是最完美的模式。但是要求Linux的性能足够好。由于我这边没有实际的Linux机器,是在Windows上用虚拟机配置的Linux环境,所以没有采用这种方法。 2、 Linux作为AOSP代码的同步、存储、编译环境,查看和修改工作在Windows上完成,具体的实现方式有两种: a) 用Samba服务器把Linux上的AOSP代码共享到Windows平台,然后在Windows平台上安装IDE环境,直接打开远程AOSP代码目录,查看和修改,这种方式的优点是配置简单,不用代码同步。但是我这边网速一般,而AOSP代码量太大,导致Android Studio经常卡死,所以我也放弃了这种方式。 b) 将android.iml/android.ipr以及常用的仓(比如frameworks/base frameworks/native等)使用rsync等工具同步到Windows平台,然后在Windows上使用Android Studio导入,进行查看和修改,修改完成后通过Beyondcompare工具将修改的内容同步到Linux平台进行编译等工作。这个各方面折中的方案。后续主要介绍这种工作环境的配置。 + #### 安装配置Linux环境 + 如果已经有Linux机器,本步骤省略。我在家中没有,遂采用在Windows上安装Virtualbox,然后通过Virtualbox安装Linux(Ubuntu)。 同时按需安装Git/Vim/OpenSSH Server等工具,安装方式不再赘述,网上有很多。 + #### 下载AOSP源码 + 在配置好的Linux环境中下载AOSP源码,Google官方的下载AOSP源码的方式:https://source.android.com/docs/setup/build/downloading。 但是由于墙的原因,这种方式不容易实现,所以推荐使用清华的镜像,使用指导:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/。 Repo的使用方式可以参考:Repo实践指南:https://www.cnblogs.com/jiangxinnju/p/14274982.html + #### 配置Windows上的工具 1、 安装SSH客户端工具,这里推荐MobaXTerm,因为它不仅免费还自带了rsync命令行工具,可以非常方便从Linux上同步代码到Windows。 a) mkdir -p /drives/d/Code/sync/aosp/frameworks @@ -4110,11 +4153,15 @@ c) rsync -az --progress --delete --exclude=".git" android@192.168.1.125:/home/an 2、 安装BeyondCompare工具,方便对比,将修改的代码同步到Linux环境。 3、 安装Android Sudio,将AOSP源码导入到Android Studio进行查看:https://www.cnblogs.com/jiangxinnju/p/14426645.html 4、 安装Source Insight工具,AS查看AOSP的Java代码比较合适,但是C/C++代码不支持跳转,着色也比较差,看这部分代码还是SI比较好用。 + ## TensorFlow环境搭建 + ### 预备条件  Ubuntu 22.04.2 LTS  配置好固定IP,安装SSH(Server)/Samba等基础网络连接软件 + ## 腾讯云环境构建 + ### 开启root用户 sudo passwd root From 825655f0cd27191d38e892d25b7ef7187446e342 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 1 Sep 2024 15:20:05 +0800 Subject: [PATCH 199/234] update About page --- _pages/about.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/_pages/about.md b/_pages/about.md index 9ba0655..47325d0 100644 --- a/_pages/about.md +++ b/_pages/about.md @@ -3,6 +3,15 @@ permalink: /about/ title: "About" --- -Tempor velit sint sunt ipsum tempor enim ad qui ullamco. Est dolore anim ad velit duis dolore minim sunt aliquip amet commodo labore. Ut eu pariatur aute ea aute excepteur laborum. Esse ea esse excepteur minim mollit qui cillum excepteur ex dolore magna. Labore deserunt fugiat incididunt incididunt sint ea. Consequat dolore aute laboris quis proident quis non et est consectetur ex eiusmod sit culpa. +一些我在平时工作和学习中积累的编程相关的资源。每个程序员都有自己的学习之路,过程中会学习各种各样的网上知识,学习完最好记录下来,每隔一段时间看一看,会有不一样的收获。 -Cupidatat ea do et in excepteur in. Ad nostrud ut est esse eu duis ea sunt eiusmod. Aliquip tempor veniam sint elit fugiat. Velit incididunt laboris amet incididunt labore dolore irure velit excepteur commodo deserunt laborum. Consectetur eu fugiat veniam veniam Lorem labore magna eiusmod. Ea occaecat reprehenderit pariatur consectetur minim labore ut aliquip. \ No newline at end of file +博客地址: + +* [原有"学习之路系列博客"](https://jiangxincode.github.io/cnblogs/categories/#the-way-of-learning) +* [Github](https://jiangxincode.github.io/cnblogs/) +* [博客园](https://www.cnblogs.com/jiangxinnju) + +如果大家有兴趣可以一起增加,修改。 + +* [文章源码目录](https://github.com/jiangxincode/cnblogs/tree/master/_posts) +* [文章依赖图床](https://github.com/jiangxincode/PicGo) From 823d56b41946a0df44486299d2678fe1fc42d5ad Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 1 Sep 2024 16:05:15 +0800 Subject: [PATCH 200/234] change the skin --- _config.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/_config.yml b/_config.yml index 3b0edc2..fb1dfc5 100644 --- a/_config.yml +++ b/_config.yml @@ -21,7 +21,8 @@ description: >- # this means to ignore newlines until "baseurl:" Google search results) and in your feed.xml site description. twitter_username: username github_username: jiangxincode -minimal_mistakes_skin: default +#minimal_mistakes_skin: default +minimal_mistakes_skin: sunrise search: true comments: From ac6ed9a758b0dfff8f2229b5d751b86c81132143 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 1 Sep 2024 16:21:46 +0800 Subject: [PATCH 201/234] Reorganize the directory structure 3. --- ...\274\217\346\272\220\347\240\201\350\247\243\346\236\220.md" | 0 ...\221\270\344\275\215\347\275\256\346\230\276\347\244\272.md" | 0 .../Android/Android OTA\345\215\207\347\272\247.md" | 0 ...\224\250\346\217\222\344\273\266\346\261\207\346\200\273.md" | 0 ...\205\263\347\233\256\345\275\225\350\247\243\346\236\220.md" | 0 ...\232\204\350\256\276\347\275\256\346\226\271\346\263\225.md" | 0 ...enCV_GLM\351\233\206\346\210\220\350\257\264\346\230\216.md" | 0 ...1\350\243\205sqlite3\347\232\204\346\226\271\346\263\225.md" | 0 ...quot;Read-only file system"\351\227\256\351\242\230.md" | 0 _posts/{others => linux}/2019-04-22-Linux-Memory-Analysis.md | 2 +- .../{others => linux}/2020-11-21-Package-Manager-In-Ubuntu.md | 2 +- _posts/{others => linux}/2024-01-01-Grep-Sed-Awk-Example.md | 2 +- 12 files changed, 3 insertions(+), 3 deletions(-) rename "_drafts/Linux/202301072210Doze\346\250\241\345\274\217\346\272\220\347\240\201\350\247\243\346\236\220.md" => "_drafts/Android/202301072210Doze\346\250\241\345\274\217\346\272\220\347\240\201\350\247\243\346\236\220.md" (100%) rename "_drafts/Linux/202301081324Android\346\272\220\347\240\201\350\247\243\350\257\273-\350\247\246\346\221\270\344\275\215\347\275\256\346\230\276\347\244\272.md" => "_drafts/Android/202301081324Android\346\272\220\347\240\201\350\247\243\350\257\273-\350\247\246\346\221\270\344\275\215\347\275\256\346\230\276\347\244\272.md" (100%) rename "_drafts/Linux/Android OTA\345\215\207\347\272\247.md" => "_drafts/Android/Android OTA\345\215\207\347\272\247.md" (100%) rename "_drafts/Linux/Android Studio\345\270\270\347\224\250\346\217\222\344\273\266\346\261\207\346\200\273.md" => "_drafts/Android/Android Studio\345\270\270\347\224\250\346\217\222\344\273\266\346\261\207\346\200\273.md" (100%) rename "_drafts/Linux/Android Studio\347\233\270\345\205\263\347\233\256\345\275\225\350\247\243\346\236\220.md" => "_drafts/Android/Android Studio\347\233\270\345\205\263\347\233\256\345\275\225\350\247\243\346\236\220.md" (100%) rename "_drafts/Linux/Android Studio\347\247\273\345\212\250\351\274\240\346\240\207\346\230\276\347\244\272\346\202\254\346\265\256\346\217\220\347\244\272\347\232\204\350\256\276\347\275\256\346\226\271\346\263\225.md" => "_drafts/Android/Android Studio\347\247\273\345\212\250\351\274\240\346\240\207\346\230\276\347\244\272\346\202\254\346\265\256\346\217\220\347\244\272\347\232\204\350\256\276\347\275\256\346\226\271\346\263\225.md" (100%) rename "_drafts/Linux/Android\345\271\263\345\217\260OpenGL ES_Assimp_OpenCV_GLM\351\233\206\346\210\220\350\257\264\346\230\216.md" => "_drafts/Android/Android\345\271\263\345\217\260OpenGL ES_Assimp_OpenCV_GLM\351\233\206\346\210\220\350\257\264\346\230\216.md" (100%) rename "_drafts/Linux/Android\347\234\237\346\234\272\345\256\211\350\243\205sqlite3\347\232\204\346\226\271\346\263\225.md" => "_drafts/Android/Android\347\234\237\346\234\272\345\256\211\350\243\205sqlite3\347\232\204\346\226\271\346\263\225.md" (100%) rename "_drafts/Linux/\350\247\243\345\206\263adb push\346\227\266\345\207\272\347\216\260\347\232\204"Read-only file system"\351\227\256\351\242\230.md" => "_drafts/Android/\350\247\243\345\206\263adb push\346\227\266\345\207\272\347\216\260\347\232\204"Read-only file system"\351\227\256\351\242\230.md" (100%) rename _posts/{others => linux}/2019-04-22-Linux-Memory-Analysis.md (99%) rename _posts/{others => linux}/2020-11-21-Package-Manager-In-Ubuntu.md (99%) rename _posts/{others => linux}/2024-01-01-Grep-Sed-Awk-Example.md (99%) diff --git "a/_drafts/Linux/202301072210Doze\346\250\241\345\274\217\346\272\220\347\240\201\350\247\243\346\236\220.md" "b/_drafts/Android/202301072210Doze\346\250\241\345\274\217\346\272\220\347\240\201\350\247\243\346\236\220.md" similarity index 100% rename from "_drafts/Linux/202301072210Doze\346\250\241\345\274\217\346\272\220\347\240\201\350\247\243\346\236\220.md" rename to "_drafts/Android/202301072210Doze\346\250\241\345\274\217\346\272\220\347\240\201\350\247\243\346\236\220.md" diff --git "a/_drafts/Linux/202301081324Android\346\272\220\347\240\201\350\247\243\350\257\273-\350\247\246\346\221\270\344\275\215\347\275\256\346\230\276\347\244\272.md" "b/_drafts/Android/202301081324Android\346\272\220\347\240\201\350\247\243\350\257\273-\350\247\246\346\221\270\344\275\215\347\275\256\346\230\276\347\244\272.md" similarity index 100% rename from "_drafts/Linux/202301081324Android\346\272\220\347\240\201\350\247\243\350\257\273-\350\247\246\346\221\270\344\275\215\347\275\256\346\230\276\347\244\272.md" rename to "_drafts/Android/202301081324Android\346\272\220\347\240\201\350\247\243\350\257\273-\350\247\246\346\221\270\344\275\215\347\275\256\346\230\276\347\244\272.md" diff --git "a/_drafts/Linux/Android OTA\345\215\207\347\272\247.md" "b/_drafts/Android/Android OTA\345\215\207\347\272\247.md" similarity index 100% rename from "_drafts/Linux/Android OTA\345\215\207\347\272\247.md" rename to "_drafts/Android/Android OTA\345\215\207\347\272\247.md" diff --git "a/_drafts/Linux/Android Studio\345\270\270\347\224\250\346\217\222\344\273\266\346\261\207\346\200\273.md" "b/_drafts/Android/Android Studio\345\270\270\347\224\250\346\217\222\344\273\266\346\261\207\346\200\273.md" similarity index 100% rename from "_drafts/Linux/Android Studio\345\270\270\347\224\250\346\217\222\344\273\266\346\261\207\346\200\273.md" rename to "_drafts/Android/Android Studio\345\270\270\347\224\250\346\217\222\344\273\266\346\261\207\346\200\273.md" diff --git "a/_drafts/Linux/Android Studio\347\233\270\345\205\263\347\233\256\345\275\225\350\247\243\346\236\220.md" "b/_drafts/Android/Android Studio\347\233\270\345\205\263\347\233\256\345\275\225\350\247\243\346\236\220.md" similarity index 100% rename from "_drafts/Linux/Android Studio\347\233\270\345\205\263\347\233\256\345\275\225\350\247\243\346\236\220.md" rename to "_drafts/Android/Android Studio\347\233\270\345\205\263\347\233\256\345\275\225\350\247\243\346\236\220.md" diff --git "a/_drafts/Linux/Android Studio\347\247\273\345\212\250\351\274\240\346\240\207\346\230\276\347\244\272\346\202\254\346\265\256\346\217\220\347\244\272\347\232\204\350\256\276\347\275\256\346\226\271\346\263\225.md" "b/_drafts/Android/Android Studio\347\247\273\345\212\250\351\274\240\346\240\207\346\230\276\347\244\272\346\202\254\346\265\256\346\217\220\347\244\272\347\232\204\350\256\276\347\275\256\346\226\271\346\263\225.md" similarity index 100% rename from "_drafts/Linux/Android Studio\347\247\273\345\212\250\351\274\240\346\240\207\346\230\276\347\244\272\346\202\254\346\265\256\346\217\220\347\244\272\347\232\204\350\256\276\347\275\256\346\226\271\346\263\225.md" rename to "_drafts/Android/Android Studio\347\247\273\345\212\250\351\274\240\346\240\207\346\230\276\347\244\272\346\202\254\346\265\256\346\217\220\347\244\272\347\232\204\350\256\276\347\275\256\346\226\271\346\263\225.md" diff --git "a/_drafts/Linux/Android\345\271\263\345\217\260OpenGL ES_Assimp_OpenCV_GLM\351\233\206\346\210\220\350\257\264\346\230\216.md" "b/_drafts/Android/Android\345\271\263\345\217\260OpenGL ES_Assimp_OpenCV_GLM\351\233\206\346\210\220\350\257\264\346\230\216.md" similarity index 100% rename from "_drafts/Linux/Android\345\271\263\345\217\260OpenGL ES_Assimp_OpenCV_GLM\351\233\206\346\210\220\350\257\264\346\230\216.md" rename to "_drafts/Android/Android\345\271\263\345\217\260OpenGL ES_Assimp_OpenCV_GLM\351\233\206\346\210\220\350\257\264\346\230\216.md" diff --git "a/_drafts/Linux/Android\347\234\237\346\234\272\345\256\211\350\243\205sqlite3\347\232\204\346\226\271\346\263\225.md" "b/_drafts/Android/Android\347\234\237\346\234\272\345\256\211\350\243\205sqlite3\347\232\204\346\226\271\346\263\225.md" similarity index 100% rename from "_drafts/Linux/Android\347\234\237\346\234\272\345\256\211\350\243\205sqlite3\347\232\204\346\226\271\346\263\225.md" rename to "_drafts/Android/Android\347\234\237\346\234\272\345\256\211\350\243\205sqlite3\347\232\204\346\226\271\346\263\225.md" diff --git "a/_drafts/Linux/\350\247\243\345\206\263adb push\346\227\266\345\207\272\347\216\260\347\232\204"Read-only file system"\351\227\256\351\242\230.md" "b/_drafts/Android/\350\247\243\345\206\263adb push\346\227\266\345\207\272\347\216\260\347\232\204"Read-only file system"\351\227\256\351\242\230.md" similarity index 100% rename from "_drafts/Linux/\350\247\243\345\206\263adb push\346\227\266\345\207\272\347\216\260\347\232\204"Read-only file system"\351\227\256\351\242\230.md" rename to "_drafts/Android/\350\247\243\345\206\263adb push\346\227\266\345\207\272\347\216\260\347\232\204"Read-only file system"\351\227\256\351\242\230.md" diff --git a/_posts/others/2019-04-22-Linux-Memory-Analysis.md b/_posts/linux/2019-04-22-Linux-Memory-Analysis.md similarity index 99% rename from _posts/others/2019-04-22-Linux-Memory-Analysis.md rename to _posts/linux/2019-04-22-Linux-Memory-Analysis.md index 6206600..f1cbcd2 100644 --- a/_posts/others/2019-04-22-Linux-Memory-Analysis.md +++ b/_posts/linux/2019-04-22-Linux-Memory-Analysis.md @@ -1,7 +1,7 @@ --- title: "Linux内存工具解析之RSS/VSS/USS/PSS区别于联系" categories: - - others + - linux tags: - Linux Memory Analysis --- diff --git a/_posts/others/2020-11-21-Package-Manager-In-Ubuntu.md b/_posts/linux/2020-11-21-Package-Manager-In-Ubuntu.md similarity index 99% rename from _posts/others/2020-11-21-Package-Manager-In-Ubuntu.md rename to _posts/linux/2020-11-21-Package-Manager-In-Ubuntu.md index 98008f1..b849532 100644 --- a/_posts/others/2020-11-21-Package-Manager-In-Ubuntu.md +++ b/_posts/linux/2020-11-21-Package-Manager-In-Ubuntu.md @@ -1,7 +1,7 @@ --- title: "彻底搞懂Ubuntu系统上的包管理" categories: - - others + - linux tags: - Linux - Ubuntu diff --git a/_posts/others/2024-01-01-Grep-Sed-Awk-Example.md b/_posts/linux/2024-01-01-Grep-Sed-Awk-Example.md similarity index 99% rename from _posts/others/2024-01-01-Grep-Sed-Awk-Example.md rename to _posts/linux/2024-01-01-Grep-Sed-Awk-Example.md index 78ac0b2..fb6b55c 100644 --- a/_posts/others/2024-01-01-Grep-Sed-Awk-Example.md +++ b/_posts/linux/2024-01-01-Grep-Sed-Awk-Example.md @@ -1,7 +1,7 @@ --- title: "一个例子掌握grep, sed, awk" categories: - - others + - linux tags: - Linux - Grep From 78bf0492618ebe01bbda4fe50dec3fe8dde442c5 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 1 Sep 2024 18:01:56 +0800 Subject: [PATCH 202/234] fix link error --- _config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/_config.yml b/_config.yml index fb1dfc5..8ba45f4 100644 --- a/_config.yml +++ b/_config.yml @@ -20,6 +20,7 @@ description: >- # this means to ignore newlines until "baseurl:" line in _config.yml. It will appear in your document head meta (for Google search results) and in your feed.xml site description. twitter_username: username +url: "https://jiangxincode.github.io/cnblogs/" github_username: jiangxincode #minimal_mistakes_skin: default minimal_mistakes_skin: sunrise From f39baacdbc11f7fbb5f67795dfd93d318f64f8c8 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sat, 14 Sep 2024 23:50:28 +0800 Subject: [PATCH 203/234] update --- ...03\344\272\206\357\274\201\357\274\201.md" | 149 ------------------ _drafts/Others/ApkToolBoxGUI Release Notes.md | 47 ++++++ ...46\344\271\240\344\271\213\350\267\257.md" | 1 + 3 files changed, 48 insertions(+), 149 deletions(-) delete mode 100644 "_drafts/Others/ApkToolBoxGUI 0.0.8\345\217\221\345\270\203\344\272\206\357\274\201\357\274\201.md" create mode 100644 _drafts/Others/ApkToolBoxGUI Release Notes.md diff --git "a/_drafts/Others/ApkToolBoxGUI 0.0.8\345\217\221\345\270\203\344\272\206\357\274\201\357\274\201.md" "b/_drafts/Others/ApkToolBoxGUI 0.0.8\345\217\221\345\270\203\344\272\206\357\274\201\357\274\201.md" deleted file mode 100644 index b27ae8b..0000000 --- "a/_drafts/Others/ApkToolBoxGUI 0.0.8\345\217\221\345\270\203\344\272\206\357\274\201\357\274\201.md" +++ /dev/null @@ -1,149 +0,0 @@ -GitHub: -Gitee: - -APKToolBoxGUI是一个程序员常用的小工具合集,有个比较友好的交互界面。主要包含编码转换,时间戳转换,颜色拾取器,颜色转换,重复文件查找,批量文件重命名,文件摘要检查等。另外还有些专门为Android开发定制的小工具,比如带界面的Monkey,国际化语言批量处理等。 - -## Why you should try - -* Open source forever -* More powerful features -* Easier to use -* Update more frequently - -## Features - -### File - -#### Convert between different character encodings - -* 支持`UTF-8`,`GB2312`,`GBK`,`Big5`等上百种编码格式间的互相转换 -* 支持多文件夹、多文件批量转换 -* 支持源文件编码自动识别,自动识别采用多引擎方案,识别率高 - -类似工具: - -* 元宝文件编码转换器: -* UltraCodingSwitch: - -![FileEncoding](https://raw.githubusercontent.com/wiki/jiangxincode/ApkToolBoxGUI/FileEncoding_01.png) - -#### Convert between different OS types - -![OSType](https://raw.githubusercontent.com/wiki/jiangxincode/ApkToolBoxGUI/OSType_01.png) - -#### Convert between Simplified Chinese and Traditional Chinese - -![SimpleTraditional](https://raw.githubusercontent.com/wiki/jiangxincode/ApkToolBoxGUI/SimpleTraditional_01.png) - -#### Check files digest - -![CheckDigest](https://raw.githubusercontent.com/wiki/jiangxincode/ApkToolBoxGUI/CheckDigest_01.png) - -#### Find duplicated files(Not Finished) - -![DuplicateFile](https://raw.githubusercontent.com/wiki/jiangxincode/ApkToolBoxGUI/DuplicateFile_01.png) -![DuplicateFile](https://raw.githubusercontent.com/wiki/jiangxincode/ApkToolBoxGUI/DuplicateFile_02.png) - -类似工具: - -RenameIt: - -### Convert - -#### Convert between timestamp and formatted time - -![Timestamp](https://raw.githubusercontent.com/wiki/jiangxincode/ApkToolBoxGUI/Timestamp_01.png) - -#### Convert between color formats - -Convert between common color formats: `RGB`/`HEX`/`CMYK`/`HSB`(`HSV`) - -![ColorConvert](https://raw.githubusercontent.com/wiki/jiangxincode/ApkToolBoxGUI/ColorConvert_01.png) - -类似工具: - -* -* -* -* - -#### Color picker - -A useful little color picker that grabs the pixel under your mouse and transforms it into a number of different color formats. You can use the built-in magnifier to zoom in on your screen, click on a color value to copy it directly to the clipboard. - -类似工具: - -* ColorPix: - -![ColorPicker](https://raw.githubusercontent.com/wiki/jiangxincode/ApkToolBoxGUI/ColorPicker_01.png) - -#### Convert between different base - -![BaseConvert](https://raw.githubusercontent.com/wiki/jiangxincode/ApkToolBoxGUI/BaseConvert_01.png) - -#### Convert between Chinese character and Unicode character - -### Reverse - -Using third-party tools to decompile package like jar, aar, war, apk, dex and so on. - -类似工具: - -* I18NTools: -* TextTools: -* ApkToolBox(C#): -* ApkToolBox(PowerShell): -* APKDB(安卓逆向助手): -* APKIDE(改之理): -* ApkToolkit: -* Android Killer: - -| Name | Version | Website | License -| ------ | ------ | ------ | ------ | -| Apktool | v2.5.0 | | Apache 2.0 | -| GD-GUI | 1.6.6 | | GNU GPL v3 | -| JADX-GUI | v1.2.0 | | Apache 2.0 | -| ApkSigner | 1.3 | | Apache 2.0 | -| AXMLPrinter3 | 0.0.1-SNAPSHOT | | Apache 2.0 | - -### SnapShot - -### Dumpsys - -* adb shell dumpsys alarm - -### Test - -### I18N - -#### Copy Items - -Copy some `` in strings.xml in the `value[.*]` directory of the [A directory] to the strings.xml in the `value[.*]` directory of the [B directory]. It is mainly used to merge translations into several code branches. - -#### Replace Items - -Replace some `` in strings.xml in the `value[.*]` directory of the [A directory] to the strings.xml in the `value[.*]` directory of the [B directory]. It is mainly used to merge translations into several code branches. - -#### Delete Items - -Delete some `` in strings.xml in the `value[.*]` directory of the [A directory] - -#### Find the longest - -Find the longest translation of a ``. Primarily for finding cuts or line breaks. - -## License - -* Apache License V2.0 - -## Contributing - -Any contributing is welcomed. - -1. Fork repository -2. Make changes -3. Ensure tests pass (or hopefully adding tests!) -4. Submit pull request/issue - -* build binary: mvn clean package -* build project documentation: mvn clean package site \ No newline at end of file diff --git a/_drafts/Others/ApkToolBoxGUI Release Notes.md b/_drafts/Others/ApkToolBoxGUI Release Notes.md new file mode 100644 index 0000000..09acbf6 --- /dev/null +++ b/_drafts/Others/ApkToolBoxGUI Release Notes.md @@ -0,0 +1,47 @@ + +# ApkToolBoxGUI v1.0.4发布了 + +ApkToolBoxGUI是一个方便程序员使用的工具,具有用户友好的图形界面。它是一个常用工具的集合,包括密码恢复、编码转换、时间戳转换、颜色选择器等,此外还有一些专门用于Android开发的工具(这就是为什么它被命名为ApkToolBoxGUI)。 + +项目地址: + +* GitHub: +* Gitee: + +[![Apache License V2.0](https://img.shields.io/badge/license-Apache%202-green)](http://www.apache.org/licenses/LICENSE-2.0) +[![GitHub all releases](https://img.shields.io/github/downloads/jiangxincode/ApkToolBoxGUI/total)](https://github.com/jiangxincode/ApkToolBoxGUI/releases) +[![Build and Rel +ease](https://github.com/jiangxincode/ApkToolBoxGUI/actions/workflows/BuildAndRelease.yml/badge.svg)](https://github.com/jiangxincode/ApkToolBoxGUI/actions/workflows/BuildAndRelease.yml) +[![Project Reports](https://img.shields.io/badge/ApkToolBoxGUI-Reports-green.svg)](https://jiangxincode.github.io/ApkToolBoxGUI/project-reports.html) +[![Codacy Badge](https://app.codacy.com/project/badge/Grade/dab038ef9ed04bf1b73bd0031422b814)](https://app.codacy.com/gh/jiangxincode/ApkToolBoxGUI/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade) +[![Code Scan](https://img.shields.io/badge/Github-CodeScan-green)](https://github.com/jiangxincode/ApkToolBoxGUI/security/code-scanning) +[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=jiangxincode_ApkToolBoxGUI&metric=alert_status)](https://sonarcloud.io/dashboard?id=jiangxincode_ApkToolBoxGUI) +[![CodeFactor](https://www.codefactor.io/repository/github/jiangxincode/apktoolboxgui/badge)](https://www.codefactor.io/repository/github/jiangxincode/apktoolboxgui) +[![Code Climate Maintainability](https://api.codeclimate.com/v1/badges/fb8d289a4b0ee14f9d8b/maintainability)](https://codeclimate.com/github/jiangxincode/ApkToolBoxGUI/maintainability) +[![Coverage Status](https://coveralls.io/repos/github/jiangxincode/ApkToolBoxGUI/badge.svg?branch=master)](https://coveralls.io/github/jiangxincode/ApkToolBoxGUI?branch=master) +[![Coverity Scan Build Status](https://scan.coverity.com/projects/19016/badge.svg)](https://scan.coverity.com/projects/jiangxincode-apktoolboxgui) + +## Feature and Usage(功能和使用方式) + +[![Documentation](https://img.shields.io/badge/Documentation-文档-green.svg)](https://jiangxincode.github.io/ApkToolBoxGUI) + +* [Password Recovery(密码恢复)](https://jiangxincode.github.io/ApkToolBoxGUI/features/recovery_file_password.html) +* [Batch Rename(批量重命名)](https://jiangxincode.github.io/ApkToolBoxGUI/features/batch_rename.html) +* [Check Summary(文件摘要检查)](https://jiangxincode.github.io/ApkToolBoxGUI/features/check_summary.html) +* [Color Picker(颜色拾取器)](https://jiangxincode.github.io/ApkToolBoxGUI/features/color_picker.html) +* [Base Convert(进制转换)](https://jiangxincode.github.io/ApkToolBoxGUI/features/convert_base.html) +* [OS Pattern Convert(操作系统文件格式转换)](https://jiangxincode.github.io/ApkToolBoxGUI/features/convert_os_pattern.html) +* [Time Convert(时间格式转换)](https://jiangxincode.github.io/ApkToolBoxGUI/features/convert_time_format.html) +* [Decode Protobuf(Protobuf解码)](https://jiangxincode.github.io/ApkToolBoxGUI/features/decode_protobuf.html) +* [Find Duplicate Files(重复文件查找)](https://jiangxincode.github.io/ApkToolBoxGUI/features/find_duplicate_files.html) +* [Reverse Engineer(逆向工程)](https://jiangxincode.github.io/ApkToolBoxGUI/features/reverse_engineer.html) +* [Android Develop(Android开发)](https://jiangxincode.github.io/ApkToolBoxGUI/features/android_i18n_operation.html) +* ... + +## Contribute(共同参与) + +[![Documentation](https://img.shields.io/badge/Contribute-共同参与-green.svg)](https://jiangxincode.github.io/ApkToolBoxGUI/contribute/how_to_contribute.html) + +## Communication Group(交流群) + +![QQ Group](https://raw.githubusercontent.com/wiki/jiangxincode/ApkToolBoxGUI/QQ_Group.png) \ No newline at end of file diff --git "a/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 0440bc9..3477805 100644 --- "a/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -216,6 +216,7 @@ toc: true * Does C++ need a universal package manager? * vcpkg(C++ Library Manager for Windows, Linux, and MacOS): +* vcpkg.io: * 解决vcpkg下载缓慢的问题: * Conan(the C / C++ Package Manager for Developers): * Buckaroo: From b5e50baaf180cba447fecfa357c31fa27a453930 Mon Sep 17 00:00:00 2001 From: Aloys Date: Tue, 17 Sep 2024 22:30:48 +0800 Subject: [PATCH 204/234] update --- ...77\347\224\250\346\226\271\346\263\225.md" | 128 ++++++++++++++++++ ...46\344\271\240\344\271\213\350\267\257.md" | 1 + 2 files changed, 129 insertions(+) create mode 100644 "_drafts/Java/JNI\344\275\277\347\224\250\346\226\271\346\263\225.md" diff --git "a/_drafts/Java/JNI\344\275\277\347\224\250\346\226\271\346\263\225.md" "b/_drafts/Java/JNI\344\275\277\347\224\250\346\226\271\346\263\225.md" new file mode 100644 index 0000000..0810570 --- /dev/null +++ "b/_drafts/Java/JNI\344\275\277\347\224\250\346\226\271\346\263\225.md" @@ -0,0 +1,128 @@ +# JNI使用方法 + +Java通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在Windows平台下是dll文件形式,在UNIX机器上是so文件形式)。通过调用本地的库文件的内部方法,使Java可以实现和本地机器的紧密联系,调用系统级的各接口方法。 + +使用的简单流程: + +## Java中所需要做的工作 + +1、在Java程序中,首先需要在类中声明所调用的库名称,如 + +```java +static { + System.loadLibrary(“testdll”); +} +``` + +这里库的扩展名可以不用写出来,究竟是DLL还是SO,由系统自己判断。 + +2、还需要对将要调用的方法做本地声明,关键字为native。且只需要声明,而不需要具体实现 + +```java +public native static void set(int i); +public native static int get(); +``` + +得到的Java程序如下:TestJNI.java + +```java +public class TestJNI { + static { + System.loadLibrary("testdll"); + } + public native static int get(); + public native static void set(int i); + public static void main(String[] args) { + testdll test = new testdll(); + test.set(10); + System.out.println(test.get()); + } +} +``` + +3、使用`javac TestJNI.java`编译它,得到`TestJNI.class`,再用`javah TestJNI`,则会在当前目录下生成`TestJNI.h`文件。 + +注意:用`javah`命令生成相应h头文件的时候有可能会出现无法找到相应class文件的错误,建议使用如下格式在控制台生成.h头文件: `javah -classpath . testdll` + +## C/C++中所需要做的工作 + +1、打开VC++,新建工程->win32 DLL,在向导中选择空工程。然后编写testdll.cpp文件 + +```cpp +#include +#include "TestJNI.h" + +int i = 0; + +JNIEXPORT jint JNICALL Java_testdll_get (JNIEnv *, jclass) +{ + return i; +} +JNIEXPORT void JNICALL Java_testdll_set (JNIEnv *, jclass, jint j) +{ + i = j; +} +int WINAPI DllMain (HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved) +{ + return TRUE; +} +``` + +说明: + +* 必须有DllMain函数,并且DllMain必须返回TRUE,否则系统将终止程序并弹出一个“启动程序时出错”对话框,其他两个为Java中调用的两个函数的实现,解释见最后的补充 +* 把Java编译生成的TestJNI.h加入到C/C++的工程中,否则上面代码的include "TestJNI.h"无法引用到 + +2、编译上面的testdll.cpp文件,可以生成testdll.dll文件,但是这过程通常会出现:在TestJNI.h中找不到jni.h + +解决方法:把Javajdk中的下面这些.h文件复制一份到Microsoft Visual Studio的安装目录下的\VC\include文件夹下,例如笔者的是`D:\Program Files\Microsoft Visual Studio 10.0\VC\include` + +* \jdk\include\jni.h +* \jdk\include\win32\jawt_md.h +* \jdk\include\win32\jni_md.h + +## 结合起来 + +1、生成的DLL文件的名称要跟Java代码中需要调用的testdll一样,如果不同可以修改文件名,这里是testdll.dll + +2、然后把该dll文件拷贝到TestJNI.class文件的目录下。 + +3、使用java testdll 运行它,就可以观察到结果 + +说明:如果运行java testdll 出现错误:“ 找不到或无法加载主类”,可能是环境变量的classpath键值的分号;掉了,一般掉了这个就会出现这种问题 + +## 最后对TestJNI.h的内容理解补充 + +```cpp +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class TestJNI*/ +#ifndef _Included_TestJNI +#define _Included_TestJNI +#ifdef __cplusplus +extern "C" { +#endif +/* +* Class: TestJNI +* Method: get +* Signature: ()I +*/ +JNIEXPORT jint JNICALL Java_TestJNI_get (JNIEnv *, jclass); +/* +* Class: TestJNI +* Method: set +* Signature: (I)V +*/ +JNIEXPORT void JNICALL Java_TestJNI_set (JNIEnv *, jclass, jint); +#ifdef __cplusplus +} +#endif +#endif +``` + +在具体实现的时候,我们只关心两个函数原型 + +* `JNIEXPORT jint JNICALL Java_TestJNI_get (JNIEnv *, jclass);` +* `JNIEXPORT void JNICALL Java_TestJNI_set (JNIEnv *, jclass, jint);` + +这里JNIEXPORT和JNICALL都是JNI的关键字,表示此函数是要被JNI调用的。而jint是以JNI为中介使JAVA的int类型与本地的int沟通的一种类型,我们可以视而不见,就当做int使用。函数的名称是JAVA_再加上java程序的package路径再加函数名组成的。参数中,我们也只需要关心在JAVA程序中存在的参数,至于JNIEnv*和jclass我们一般没有必要去碰它。 diff --git "a/_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" index 9b88304..4edbcca 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -31,6 +31,7 @@ toc: true * linux怎么改python默认版本: * Python退格键出现方块: * 在python交互式环境中,在不关闭窗口的情况在如何清除,之前的语句: +* 扩展和嵌入 Python 解释器: ## IDE/工具/三方库 From 00ecd9ba040e80e0c7b29e5d2f921fe422edccd2 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 22 Sep 2024 12:19:17 +0800 Subject: [PATCH 205/234] update --- ...17\345\214\226\345\267\245\345\205\267.md" | 99 +++++++++++++++++++ _drafts/Others/ChooseYourBest.md | 1 - ...77\347\224\250\350\257\264\346\230\216.md" | 88 ----------------- ...46\344\271\240\344\271\213\350\267\257.md" | 1 - ...46\344\271\240\344\271\213\350\267\257.md" | 1 - ...46\344\271\240\344\271\213\350\267\257.md" | 5 - 6 files changed, 99 insertions(+), 96 deletions(-) create mode 100644 "_drafts/Others/2015-10-25-\344\273\243\347\240\201\351\243\216\346\240\274\344\270\216\344\273\243\347\240\201\346\240\274\345\274\217\345\214\226\345\267\245\345\205\267.md" delete mode 100644 "_drafts/Others/astyle \344\275\277\347\224\250\350\257\264\346\230\216.md" diff --git "a/_drafts/Others/2015-10-25-\344\273\243\347\240\201\351\243\216\346\240\274\344\270\216\344\273\243\347\240\201\346\240\274\345\274\217\345\214\226\345\267\245\345\205\267.md" "b/_drafts/Others/2015-10-25-\344\273\243\347\240\201\351\243\216\346\240\274\344\270\216\344\273\243\347\240\201\346\240\274\345\274\217\345\214\226\345\267\245\345\205\267.md" new file mode 100644 index 0000000..c5d931a --- /dev/null +++ "b/_drafts/Others/2015-10-25-\344\273\243\347\240\201\351\243\216\346\240\274\344\270\216\344\273\243\347\240\201\346\240\274\345\274\217\345\214\226\345\267\245\345\205\267.md" @@ -0,0 +1,99 @@ +# 代码风格与代码格式化工具 + +* Google Style Guides: +* Google 开源项目风格指南——中文版(Google Style Guide): + +* The tidyverse style guide: +* Google’s R Style Guide: + +## clang-format + +clang-format 位于 clang/tools/clang-format,可用于格式化 C/C++/Java/JavaScript/JSON/Objective-C/Protobuf/C# 代码。 + +* 官网: + +## astyle(Artistic Style) + +astyle是一个免费、快速且小巧的自动格式化工具,适用于 C、C++、C++/CLI、Objective-C、C# 和 Java 源代码。 + +* 官网: +* 文档: + +### 基本命令 + +`astyle --style=ansi main.cs` + +### 格式化目录 + +使用ansi风格格式当前目录下的所有cpp,cs文件,注意在批处理文件时,"%f" 要改为"%%f" + +`for /R %f in (*.cpp;*.cs;) do astyle --style=ansi "%f"` + +### 加入到VS2008,VS2005 + +* 工具——>外部工具——>添加 +* 标题:astyle +* 命令:AStyle.exe (填好astyle.exe的路径) +* 参数:--style=allman -N $(ItemDir)$(ItemFileName)$(ItemExt) +* 初始目录:$(TargetDir) +* 勾上“使用初始目录” +* 点击确定完成,以后就可以在工具菜单中找到“astyle“这一项了,点击它,就可以对当前文件进行格式化操作。 + +### 加入到VS6 + +* Tools——>Customize——>Tools +* 标题:astyle +* 命令:AStyle.exe (填好astyle.exe的路径) +* 参数:--style=ansi -s4 --suffix=.orig $(FileName)$(FileExt) +* 初始目录:$(FileDir) +* 勾上“Using Output Window” +* 点击确定完成。以后就可以在工具菜单中找到“astyle“这一项了,点击它,就可以对当前文件进行格式化操作。 + +### 加入到UltraEdit和UltraStudio + +* 高级-->工具配置——>外部工具——>添加 +* 命令:AStyle.exe -v --style=ansi -s4 --suffix=.orig "%f"(填好astyle.exe的路径) +* Optiones:选择 Windows program和Save Active File. +* Output: 选择output to list box,show dos box 和no replace。 +* 点击确定完成。以后就可以在工具菜单中找到“astyle“这一项了,点击它,就可以对当前文件进行格式化操作。 + +### 加入到Source insight + +* Options-->Custom Command-->Add +* Command:astyle +* Run "D:\soft\astyle\astyle.exe" --style=ansi -f -p -P -U -v -n -N %f(填好astyle.exe的路径) +* Output:不选. +* Control: 选择pause when done和exit to window. +* source links in output:file, then line +* -->menu +* add to work menu. +* 点击确定完成。以后就可以在Work菜单中找到“astyle“这一项了,点击它,就可以对当前文件进行格式化操作。 + +另外可以参考:在source insight中集成astyle: + +### 控制台目录批处理(astyle.bat) + +```Bash +REM 批量将本目录中的所有C++文件用Astyle进行代码美化操作 +REM 设置Astyle命令位置和参数 +@echo off +set astyle="astyle.exe" +REM 循环遍历目录 +for /r . %%a in (*.cpp;*.c) do %astyle% --style=ansi --pad=oper --unpad=paren -s4 -n "%%a" +for /r . %%a in (*.hpp;*.h) do %astyle% --style=ansi --pad=oper --unpad=paren -s4 -n "%%a" +REM 删除所有的astyle生成文件 +for /r . %%a in (*.orig) do del "%%a" +pause +``` + +## CoolFormat + +CoolFormat源代码格式化是一款C\C++\C#\CSS\HTML\Java\JavaScript\JSON\Objective-C\PHP\SQL\Verilog\XML代码格式化工具。软件可以快速多种风格格式化,并对语言进行着色。界面采用Office 2010风格,并有多种样式可以替换。并且支持代码高亮到网页上显示,方便博客文章之类的撰写阅读。 + +* 官网: + +## Adapter for Eclipse Code Formatter + +允许直接从 IntelliJ 使用 Eclipse 的 Java 代码格式化工具。解决了在使用 IDEA 和 Eclipse 的团队环境中维护统一代码风格的问题。 + +* 官网: diff --git a/_drafts/Others/ChooseYourBest.md b/_drafts/Others/ChooseYourBest.md index 3bf3442..861c31c 100644 --- a/_drafts/Others/ChooseYourBest.md +++ b/_drafts/Others/ChooseYourBest.md @@ -231,7 +231,6 @@ Windows 10 already has this functionality built in so WizMouse is most useful if * 迅雷(Thunder): * 硕鼠(bigrats): -* CoolFormat: * Convert Between Programming Languages(The Most Accurate and Reliable Source Code Converters): * inkscape: diff --git "a/_drafts/Others/astyle \344\275\277\347\224\250\350\257\264\346\230\216.md" "b/_drafts/Others/astyle \344\275\277\347\224\250\350\257\264\346\230\216.md" deleted file mode 100644 index 382138e..0000000 --- "a/_drafts/Others/astyle \344\275\277\347\224\250\350\257\264\346\230\216.md" +++ /dev/null @@ -1,88 +0,0 @@ -欢迎关注我的社交账号: - - -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - - -astyle是一款代码格式化工具,它的下载地址是: -http://sourceforge.net/projects/astyle - -项目地址: -http://astyle.sourceforge.net/ - -文档说明: -http://astyle.sourceforge.net/astyle.html - -## 基本命令 - -`astyle --style=ansi main.cs` - -## 格式化目录 - -使用ansi风格格式当前目录下的所有cpp,cs文件,注意在批处理文件时,"%f" 要改为"%%f" - -`for /R %f in (*.cpp;*.cs;) do astyle --style=ansi "%f"` - -## 参数说明: - -http://astyle.sourceforge.net/astyle.html - - -## 加入到VS2008,VS2005 - -+ 工具——>外部工具——>添加 -+ 标题:astyle -+ 命令:AStyle.exe (填好astyle.exe的路径) -+ 参数:--style=allman -N $(ItemDir)$(ItemFileName)$(ItemExt) -+ 初始目录:$(TargetDir) -+ 勾上“使用初始目录” -+ 点击确定完成,以后就可以在工具菜单中找到“astyle“这一项了,点击它,就可以对当前文件进行格式化操作。 - -## 加入到VS6 - -+ Tools——>Customize——>Tools -+ 标题:astyle -+ 命令:AStyle.exe (填好astyle.exe的路径) -+ 参数:--style=ansi -s4 --suffix=.orig $(FileName)$(FileExt) -+ 初始目录:$(FileDir) -+ 勾上“Using Output Window” -+ 点击确定完成。以后就可以在工具菜单中找到“astyle“这一项了,点击它,就可以对当前文件进行格式化操作。 - -## 加入到Ultraedit和UltraStudio - -+ 高级-->工具配置——>外部工具——>添加 -+ 命令:AStyle.exe -v --style=ansi -s4 --suffix=.orig "%f"(填好astyle.exe的路径) -+ Optiones:选择 Windows program和Save Active File. -+ Output: 选择output to list box,show dos box 和no replace。 -+ 点击确定完成。以后就可以在工具菜单中找到“astyle“这一项了,点击它,就可以对当前文件进行格式化操作。 - -## 加入到Source insight - -+ Options-->Custom Command-->Add -+ Command:astyle -+ Run "D:\soft\astyle\astyle.exe" --style=ansi -f -p -P -U -v -n -N %f(填好astyle.exe的路径) -+ Output:不选. -+ Control: 选择pause when done和exit to window. -+ source links in output:file, then line -+ -->menu -+ add to work menu. -+ 点击确定完成。以后就可以在Work菜单中找到“astyle“这一项了,点击它,就可以对当前文件进行格式化操作。 - -另外可以参考:在source insight中集成astyle: - -## 控制台目录批处理(astyle.bat) - -```Bash -REM 批量将本目录中的所有C++文件用Astyle进行代码美化操作 -REM 设置Astyle命令位置和参数 -@echo off -set astyle="astyle.exe" -REM 循环遍历目录 -for /r . %%a in (*.cpp;*.c) do %astyle% --style=ansi --pad=oper --unpad=paren -s4 -n "%%a" -for /r . %%a in (*.hpp;*.h) do %astyle% --style=ansi --pad=oper --unpad=paren -s4 -n "%%a" -REM 删除所有的astyle生成文件 -for /r . %%a in (*.orig) do del "%%a" -pause -``` \ No newline at end of file diff --git "a/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 3477805..3a2f539 100644 --- "a/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -21,7 +21,6 @@ toc: true * comp.lang.c Frequently Asked Questions: * C 语言常见问题集: * The C++ Standard Library - A Tutorial and Reference: -* Google 开源项目风格指南——中文版(Google Style Guide): ## Libraries diff --git "a/_posts/the-way-of-learning/2015-05-19-J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index a001130..e63dabe 100644 --- "a/_posts/the-way-of-learning/2015-05-19-J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -139,7 +139,6 @@ toc: true * ServletInputStream的重复读取(多次读取)(转): * Developing a Service Provider using Java API(Service Provider Interface): * 驱动模块和桩模块的概念和区别: -* astyle 使用说明: * 转一个J2EE开发时的包命名规则,养成良好的开发习惯: * Java调用动态库方法说明: * Servlet容器的匹配过程: diff --git "a/_posts/the-way-of-learning/2015-05-19-R\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-R\345\255\246\344\271\240\344\271\213\350\267\257.md" index 44ba417..8e0e402 100644 --- "a/_posts/the-way-of-learning/2015-05-19-R\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-R\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -19,11 +19,6 @@ toc: true * RStudio User Guide: * Using RStudio Projects: -## style guide - -* The tidyverse style guide: -* Google’s R Style Guide: - ## R Packages * R语言中,你最常用的软件包有哪些,请简述功能及特点? From 406bdaa1e0375e2d947d85e06c8a0bca40dbcfc9 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sat, 28 Sep 2024 22:51:04 +0800 Subject: [PATCH 206/234] update --- ...60\345\272\223\347\256\200\344\273\213.md" | 31 ----- ...46\344\271\240\344\271\213\350\267\257.md" | 119 +++++++++++------- 2 files changed, 77 insertions(+), 73 deletions(-) delete mode 100644 "_drafts/C_Cpp/C_C++\345\244\247\346\225\260\345\272\223\347\256\200\344\273\213.md" diff --git "a/_drafts/C_Cpp/C_C++\345\244\247\346\225\260\345\272\223\347\256\200\344\273\213.md" "b/_drafts/C_Cpp/C_C++\345\244\247\346\225\260\345\272\223\347\256\200\344\273\213.md" deleted file mode 100644 index d6d453d..0000000 --- "a/_drafts/C_Cpp/C_C++\345\244\247\346\225\260\345\272\223\347\256\200\344\273\213.md" +++ /dev/null @@ -1,31 +0,0 @@ -在网络安全技术领域中各种加密解密算法的软件实现上始终有一个共同的问题就是如何在普通的PC机上实现大数的运算。我们日常生活中所应用的PC机内部字长多是32位或64位,但是在各种加密解密的算法中为了达到一定的安全强度,都是要求在128位、512位或者是1024位这样的字长下进行加减乘除模逆等各种数学运算,我们称为大数运算。在这样的前提下,如何在PC机上快速高效的实现大数运算就很自然的成为了在PC机上实现加密解密算法最为基础和重要的问题。像Python、Lisp等语言都内建了大数计算机制,但是像C/C++语言既没有内建大数运算机制也没有对应的标准库实现。 - -为了解决C/C++大数运算的问题,许多优秀的大数运算库随之出现。下面对几种优秀的大数库进行简单的介绍: - -GMP:GMP大数库是GNU项目的一部分,诞生于1991年。作为一个任意精度的大整数运算库,它包括了任意精度的整数、浮点数的各种基本运算操作。它是一个C语言的库,但是官方提供了C++的包装类,主要的应用方向是密码学、网络安全、代数系统、计算科学等。GMP库的运行速度非常快,它的官方网站上称自己为地球上最快的大数库,但是GMP库所提供的只是数学运算功能,并没有密码学相关的高级功能。(注:GMP安装如果出现了问题,可能是安装包所在目录太深了,试着换个目录重新安装下) - -Miracl:Miracl库是Shamus Software Ltd开发的一个大数库,它的使用许可针对教育科学研究或者非商业目的的应用是免费的。它是一个C语言的库,同时提供了几个较为简单的c++包装类。在功能上它不但提供了高精度的大整数和分数的各种数学运算操作而且提供了很多密码学算法中的功能模块,如SHA、AES、DSA等中的一些底层操作。最为特别的是它还提供了很多椭圆曲线密码体制中的底层功能模块。由于Miracl库的内部实现采用了很多的汇编代码,故运行速度也非常快。 - -Crypto++:Crypto++库是一个开源项目。由于它是一个纯C++实现的库,所以应用非常的方便,库的结构清晰,文档也很健全。Crypto++库提供了很多密码学算法的实现。 - -OpenSSL:OpenSSL是一个开放源代码的实现了SSL及相关加密技术的软件包,由加拿大的Eric Yang等发起编写的。它可以实现消息摘要、文件的加密和解密、数字证书、数字签名和随机数字等。它的主要用途并不是大数库,而是SSL协议的实现和应用,但是其中也有一些关于大整数的功能,此外它也是基于C语言。 - -下面是一些常用的大数运算库的地址(有些虽然不是专门的大数运算库,但是带有相关的库) - -Crypto++: - -MIRACL: - -GNU MP: - -Piologie: - -cryptlib: - -RSAEuro: - -OpenSSL: - -RSARef: - -GInt:(Delphi) \ No newline at end of file diff --git "a/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 3a2f539..93d9bdc 100644 --- "a/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -26,11 +26,8 @@ toc: true * boost: * Ncurses: -* GMP: -* Crypto++: * OGLplus: * POSIX Threads for Win32: -* libcstl: * SWIG: * Borland Graphics Interface (BGI) for Windows: * Win32 BGI implementation(OpenBGI): @@ -48,42 +45,90 @@ toc: true * libiconv: * GSL - GNU Scientific Library: +* Piologie: +* cryptlib: +* RSAEuro: +* RSARef: + +### GMP + +GMP大数库是GNU项目的一部分,诞生于1991年。作为一个任意精度的大整数运算库,它包括了任意精度的整数、浮点数的各种基本运算操作。它是一个C语言的库,但是官方提供了C++的包装类,主要的应用方向是密码学、网络安全、代数系统、计算科学等。GMP库的运行速度非常快,它的官方网站上称自己为地球上最快的大数库,但是GMP库所提供的只是数学运算功能,并没有密码学相关的高级功能。 + +* GNU MP(GMP): +* GMP Manual: + +### Miracl + +Miracl库是Shamus Software Ltd开发的一个大数库,它的使用许可针对教育科学研究或者非商业目的的应用是免费的。它是一个C语言的库,同时提供了几个较为简单的c++包装类。在功能上它不但提供了高精度的大整数和分数的各种数学运算操作而且提供了很多密码学算法中的功能模块,如SHA、AES、DSA等中的一些底层操作。最为特别的是它还提供了很多椭圆曲线密码体制中的底层功能模块。由于Miracl库的内部实现采用了很多的汇编代码,故运行速度也非常快。 + +* MIRACL: +* miracl user manual: + +### Crypto++ + +Crypto++库是一个开源项目。由于它是一个纯C++实现的库,所以应用非常的方便,库的结构清晰,文档也很健全。Crypto++库提供了很多密码学算法的实现。 + +* Crypto++: + +### OpenSSL + +OpenSSL是一个开放源代码的实现了SSL及相关加密技术的软件包,由加拿大的Eric Yang等发起编写的。它可以实现消息摘要、文件的加密和解密、数字证书、数字签名和随机数字等。 + +* OpenSSL: +* BoringSSL: +* LibreSSL: +* OpenSSL 在windows系统下的编译全解: +* 使用OpenSSL实现X25519秘钥协商功能: + +### libcstl + +* libcstl: +* The libcstl Library User Guide: + ## Windows C++ * Visual Studio: +* Visual Studio Locator: * VISUAL ASSIST: * Spec Explorer 2010 Visual Studio Power Tool: * Microsoft Visual Studio 2010 Visualization and Modeling Feature Pack: -* /std (Specify Language Standard Version): -* CRT Library Features: -* UCRT 按字母顺序排列的函数参考: -* 从 WRL 移动到 C++/WinRT: -* Security Features in the CRT: -* Importing and Exporting: -* OneCore.lib umbrella library (by module): -* Windows 8.1 API Sets: -* Windows 7 API Sets: -* major changes between 7.00 and 8.00: -* SecureZeroMemory function: -* ShellExecuteA function: -* CREATEGUID Function (GUID): -* Strsafe.h: -* DUMPBIN Reference: -* 为 Visual C++ 项目创建的文件类型: -* I/O Completion Ports: - -* C/C++ Compiler and build tools errors and warnings: + +### Visual C++参考 + +* 通过命令行使用 Microsoft C++ 工具集: +* Precompiled header files: +* LINK 输入文件(lib,def,pdf等): +* 为 Visual Studio C++ 项目创建的文件类型: +* /PDB(使用程序数据库): +* /std (Specify Language Standard Version): +* CRT Library Features: +* UCRT 按字母顺序排列的函数参考: +* Security Features in the CRT: +* Importing and Exporting: +* DUMPBIN Reference: +* 自变量传递和命名约定(__cdecl/__stdcall/__fastcall): + +* C/C++ Compiler and build tools errors and warnings: * C2360(initialization of 'identifier' is skipped by 'case' label) * C2760(syntax error : expected 'name1' not 'name2'): * C4251('identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2') * Exporting classes containing std:: objects (vector, map, etc) from a dll: - * LNK2026(链接器工具错误): + * LNK2026(链接器工具错误): * LNK4042(object specified more than once; extras ignored) * Visual Studio 2010's strange “warning LNK4042”: * Visual Studio 2010 & 2008 can't handle source files with identical names in different folders?: * LNK4098(defaultlib 'library' conflicts with use of other libs; use /NODEFAULTLIB:library) -* GetPrivateProfileString/WritePrivateProfileString(INI读取和写入): +* 从 WRL 移动到 C++/WinRT: +* windows-data-types: +* OneCore.lib umbrella library (by module): +* Windows 8.1 API Sets: +* SecureZeroMemory function: +* ShellExecuteA function: +* CREATEGUID Function (GUID): +* Strsafe.h: +* I/O Completion Ports: +* GetPrivateProfileString/WritePrivateProfileString(INI读取和写入): * C++17 Feature Removals And Deprecation: @@ -96,9 +141,7 @@ toc: true * LINK : fatal error LNK1104: 无法打开文件“LIBCD.lib”: * error C4995: “wcscpy”: 名称被标记为 #pragma deprecated: * VC 常用数据类型总结 俩篇: -* 预编译头文件介绍和说明: * 预编译头文件解析: -* VC 预编译头文件的使用: * VC++6.0应用程序错误,0x5003eaed: * VC++,掀起你的盖头来——谈VC++对象模型: * Visual C++ 入门精解: @@ -119,7 +162,7 @@ toc: true * 请问如何修改某个exe文件的版本信息,包括CompanyName、ProductName等?: * Visual Studio 2017 UTF-8 无 BOM 一站式解决办法: -## 需要整理的 +### 需要整理的 * DEBUG和RELEASE 版本差异及调试相关问题: * Debug和Release有什么区别: @@ -129,7 +172,7 @@ toc: true ## Linux C++ -* GNU C Library: +* GNU C Library(glibc): * C POSIX library: * POSIX.1-2017: * SUSv4(Single UNIX® Specification, Version 4): @@ -179,14 +222,14 @@ toc: true ## C++近场通讯开发 -* Win32蓝牙开发: +* Win32蓝牙开发: -* Native Wifi: -* Wi-Fi Direct: +* Native Wifi: +* Wi-Fi Direct: * Wi-Fi Direct Legacy Connection C++ WRL Demo: -* Windows.Devices.WiFi Namespace: -* Windows.Devices.WiFiDirect Namespace(含Wi-Fi Direct sample): -* Windows.Devices.WiFiDirect.Services Namespace: +* Windows.Devices.WiFi Namespace: +* Windows.Devices.WiFiDirect Namespace(含Wi-Fi Direct sample): +* Windows.Devices.WiFiDirect.Services Namespace: * WiFi direct 的相关特点: * NATIVE WIFI HOSTED NETWORK VS WIFI DIRECT LEGACY SOFT AP: @@ -314,14 +357,6 @@ C/C++由于历史原因,编译,构建难度相对于目前主流的其他语 * 关于glog使用中遇到的问题: * 在Windows上编译、应用glog: -## OpenSSL - -* OpenSSL: -* BoringSSL: -* LibreSSL: -* OpenSSL 在windows系统下的编译全解: -* 使用OpenSSL实现X25519秘钥协商功能: - ## MPI * Open MPI(Open Source High Performance Computing): From 104548956e66085089b1eef37945820a50bc16c2 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 29 Sep 2024 23:20:02 +0800 Subject: [PATCH 207/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 32 ++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git "a/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index 93d9bdc..f71670e 100644 --- "a/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -91,7 +91,8 @@ OpenSSL是一个开放源代码的实现了SSL及相关加密技术的软件包 * Visual Studio Locator: * VISUAL ASSIST: * Spec Explorer 2010 Visual Studio Power Tool: -* Microsoft Visual Studio 2010 Visualization and Modeling Feature Pack: +* ~~Microsoft Visual Studio 2010 Visualization and Modeling Feature Pack: ~~ +* ~~Windows 8 SDK: Include files in "shared", "um", and "winrt" directories. What's the difference? ~~ ### Visual C++参考 @@ -119,22 +120,35 @@ OpenSSL是一个开放源代码的实现了SSL及相关加密技术的软件包 * Visual Studio 2010 & 2008 can't handle source files with identical names in different folders?: * LNK4098(defaultlib 'library' conflicts with use of other libs; use /NODEFAULTLIB:library) -* 从 WRL 移动到 C++/WinRT: +* Windows 控制台应用: + +* 框架选项概述: + +* 使用 Win32 API 的桌面 Windows 应用入门: +* 进程间通信: * windows-data-types: * OneCore.lib umbrella library (by module): * Windows 8.1 API Sets: -* SecureZeroMemory function: -* ShellExecuteA function: -* CREATEGUID Function (GUID): +* windows.foundation.h: +* shellapi.h: * Strsafe.h: +* winbase.h: +* libloaderapi.h: +* processthreadsapi.h: +* synchapi.h: +* debugapi.h: * I/O Completion Ports: -* GetPrivateProfileString/WritePrivateProfileString(INI读取和写入): +* CNG DPAPI: + +* ~~通用 Windows 平台 (UWP) - 入门: ~~ +* ~~C++/WinRT: ~~ +* ~~选择哪一种网络技术?~~ +* ~~Turning to the past to power Windows’ future: An in-depth look at WinRT: ~~ * C++17 Feature Removals And Deprecation: * atexit和onexit的主要用法和区别: * _onexit, _onexit_m: -* Windows 8 SDK: Include files in "shared", "um", and "winrt" directories. What's the difference? * VC 运行时库 /MD、/MDd 和 /MT、/MTd: * #error Please use the /MD switch for _AFXDLL builds: @@ -158,7 +172,6 @@ OpenSSL是一个开放源代码的实现了SSL及相关加密技术的软件包 * Visual Studio 如何屏蔽告警: * C++:在程序中获取全球唯一标识号(GUID或UUID): * MSBulid、IncrediBuild命令行接口实现自动化编译: -* 理解WinRT: * 请问如何修改某个exe文件的版本信息,包括CompanyName、ProductName等?: * Visual Studio 2017 UTF-8 无 BOM 一站式解决办法: @@ -227,9 +240,6 @@ OpenSSL是一个开放源代码的实现了SSL及相关加密技术的软件包 * Native Wifi: * Wi-Fi Direct: * Wi-Fi Direct Legacy Connection C++ WRL Demo: -* Windows.Devices.WiFi Namespace: -* Windows.Devices.WiFiDirect Namespace(含Wi-Fi Direct sample): -* Windows.Devices.WiFiDirect.Services Namespace: * WiFi direct 的相关特点: * NATIVE WIFI HOSTED NETWORK VS WIFI DIRECT LEGACY SOFT AP: From 6757a1ff71c6c01786c32c93bdbb98e600e3bf99 Mon Sep 17 00:00:00 2001 From: Aloys Date: Tue, 1 Oct 2024 10:27:18 +0800 Subject: [PATCH 208/234] update --- ...01\346\241\206\346\236\266\347\255\211.md" | 204 ------------------ ...46\344\271\240\344\271\213\350\267\257.md" | 9 +- ...46\344\271\240\344\271\213\350\267\257.md" | 65 ++++++ 3 files changed, 70 insertions(+), 208 deletions(-) delete mode 100644 "_drafts/Others/Python\347\254\254\344\270\211\346\226\271\345\270\270\347\224\250\345\267\245\345\205\267\343\200\201\345\272\223\343\200\201\346\241\206\346\236\266\347\255\211.md" diff --git "a/_drafts/Others/Python\347\254\254\344\270\211\346\226\271\345\270\270\347\224\250\345\267\245\345\205\267\343\200\201\345\272\223\343\200\201\346\241\206\346\236\266\347\255\211.md" "b/_drafts/Others/Python\347\254\254\344\270\211\346\226\271\345\270\270\347\224\250\345\267\245\345\205\267\343\200\201\345\272\223\343\200\201\346\241\206\346\236\266\347\255\211.md" deleted file mode 100644 index 13779fb..0000000 --- "a/_drafts/Others/Python\347\254\254\344\270\211\346\226\271\345\270\270\347\224\250\345\267\245\345\205\267\343\200\201\345\272\223\343\200\201\346\241\206\346\236\266\347\255\211.md" +++ /dev/null @@ -1,204 +0,0 @@ - Python ImagingLibrary(PIL):它提供强大的图形处理的能力,并提供广泛的图形文件格式支持,该库能进行图形格式的转换、打印和显示。还能进行一些图形效果的处理,如图形的放大、缩小和旋转等。是用户进行图象处理的强有力工具。 -http://www.pythonware.com/products/pil/ - -matplotlib:一个Python的2D绘图库。 - -http://matplotlib.org/ - -Pmw(Pythonmegawidgets):它是超级GUI组件集————一个利用Tkinter模块构建的高级GUI组件,每个Pmw都合并了一个或多个Tkinter组件,以实现更有用和更复杂的功能。 - -http://sourceforge.net/projects/pmw/ - -PyXML(Python/XML):用Python解析和处理XML文档的工具包,包中的4DOM是完全相容于W3C DOM规范的。它包含以下内容:xmlproc:一个符合规范的XML解析器;Expat: 一个快速的,非验证的XML解析器。遗憾的是该包已经停止更新。其他和他同级别的还有 PyHtml PySGML - -http://sourceforge.net/projects/pyxml/ - -PyGame:用于多媒体开发和游戏软件开发的模块。 - -http://www.pygame.org/news.html - -PyOpenGL:模块封装了“OpenGL应用程序编程接口”,通过该模块python程序员可在程序中集成2D和3D的图形。 - -http://sourceforge.net/projects/pyopengl/ - -NumPy、NumArray和SAGE:NumArray是Python的一个扩展库,主要用于处理任意维数的固定类型数组,简单说就是一个矩阵库。它的低层代码使用C来编写,所以速度的优势很明显。NumPy是Numarray的后继者,用来代替NumArray(目前NumArray已经不再更新)。SAGE是基于NumPy和其他几个工具所整合成的数学软件包,目标是取代Magma, Maple, Mathematica和Matlab 这类工具。 - -http://www.numpy.org/ - -http://www.sagemath.org/ - -SciPy(pronounced “Sigh Pie”) is a Python-based ecosystem of open-source software formathematics, science, and engineering. - -http://www.scipy.org/ - -MySQLdb:用于连接MySQL数据库。还有用于zope的ZMySQLDA模块,通过它就可在zope中连接mysql数据库。 - -http://sourceforge.net/projects/mysql-python/ - -PyGTK:用于GUI程序开发的GTK+库。GTK就是用来实现GIMP和Gnome的那个库。有了它,你完全可以自信的尝试自己制造Photoshop - -http://www.pygtk.org/ - -PyQt:用于Qt开发库。QT就是实现了KDE环境的那个库,由一系列的模块组成,有qt,qtcanvas, qtgl, qtnetwork, qtsql, qttable, qtui and qtxml,包含有300个类和超过5750个的函数和方法。PyQt还支持一个叫qtext的模块,它包含一个QScintilla库。该库是 Scintillar编辑器类的Qt接口。 - -http://www.riverbankcomputing.co.uk/news - -PyMedia:用于多媒体操作的python模块。它提供了丰富而简单的接口用于多媒体处理(wav,mp3, ogg, avi, divx, dvd, cdda etc)。可在Windows和Linux平台下使用。 - -http://pymedia.org/ - -PyPy和Psyco:Psyco是一个代码加速度器,可使代码的执行速度提高到与编译语言一样的水平。目前Psyco已经不再更新,PyPy是Psyco的升级替代品。 - -http://pypy.org/ - -http://sourceforge.jp/projects/sfnet_psyco/ - -Python-ldap:提供一组面向对象的API,可方便地在python中访问ldap目录服务,它基于OpenLDAP2.x。 - -http://www.python-ldap.org/ - -xmpppy:Jabber服务器采用开发的XMPP协议,Google Talk也是采用XMPP协议的IM系统。在中有一个xmpppy模块支持该协议。也就是说,我们可以通过该模块与Jabber服务器通信,是不是很Cool。 - -http://sourceforge.net/projects/xmpppy/ - -  下面这些就不详细介绍,只列出名字和功能 - -adodb:ADO数据库连接组件,主要用于PHP也可用于Python - -http://sourceforge.net/projects/adodb/ - -wxPython :GUI编程框架,熟悉MFC的人会非常喜欢,简直是同一架构(对于初学者或者对设计要求不高的用户来说,使用 Boa Constructor可以方便迅速的进行wxPython的开发) - -http://www.wxpython.org/ - -py2exe:用来生成windows可执行文件 - -http://www.py2exe.org/ - -twisted:巨无霸的网络编程框架 - -https://twistedmatrix.com/trac/ - -Kodos:正则表达式调试工具 - -http://sourceforge.net/projects/kodos/ - -Mechanize:爬虫连接网站常用 - -https://pypi.python.org/pypi/mechanize/ - -winpdb:自己的程序或者用别的库不太明白的时候就靠它了 - -http://winpdb.org/ - -Pyro:实现与JAVA RMI类似的技术 - -http://python-pyro-3-7.updatestar.com/ - -pylint:培养良好的编码习惯 - -http://www.pylint.org/ - -django:一个WEB framework - -https://www.djangoproject.com/ - -docutils:用来写文档的 - -https://pypi.python.org/pypi/docutils/ - -Pylons:又一个web framework - -http://www.pylonsproject.org/ - -pythonwin: Windows扩展 - -http://sourceforge.net/projects/pywin32/ - -reportlab:Python操作PDF的Libary。 - -http://www.reportlab.com/ - -cherrypy:一个WEB framework - -http://www.cherrypy.org/ - -pandas:pandas is an open source, BSD-licensed library providinghigh-performance, easy-to-use data structures and data analysis tools for thePython programming language. - -http://pandas.pydata.org/ - -bsddb3 ————BerkeleyDB的连接组件 - -https://pypi.python.org/pypi/bsddb3/ - -chardet ———— 编码检测 - -https://pypi.python.org/pypi/chardet/ - -scons ———— 项目构建工具,写好了模板用起来还是很方便的 - -http://www.scons.org - -pycurl ———— URL处理工具 - -https://pypi.python.org/pypi/pycurl - -pydot ———— 画图的,graphiz,可以很方便画流程图 - -https://code.google.com/p/pydot/ - -feedparser ————rss解析 - -http://feedparser.luaforge.net/ - -astropy/PyRAF/astroplotlib:天文相关的一些工具: - -http://www.astropy.org/ - -http://www.stsci.edu/institute/software_hardware/pyraf/ - -http://astroplotlib.stsci.edu/ - -scapy ———— 网络包构建分析框架,可编程的wireshark,有兴趣的google “Silver Needle in the Skype” - -http://www.secdev.org/projects/scapy/ - -Cheetah ———— 构建和扩充任何种类的基于文本的内容 - -http://www.cheetahtemplate.org/ - - - -  sendpkt ———— 一个开发包 - -  pyevent ———— 事件支持 - -  pypcap ———— 抓包的 - -  python-dnet ———— 控制网络安全的其他设备 - -  simplejson ———— JSON的支持 - -  sqlalchemy ———— SQL数据库连接池 - -  SQLObject ———— 数据库连接池 - -  ctypes ———— 用来调用动态链接库 - -  Cx-oracle ———— 连接oracle的工具 - -  DBUtils ———— 数据库连接池 - -  DPKT ———— raw-scoket网络编程 - -  dpkt ———— 数据包的解包和组包 - -  pefile ———— windows pe文件解析器 - -  PLY———— 基于LEX、YACC的语言工具 - -  Corepy———— 使用开发编写x86汇编程序 - -  LightCloud———— 实现的分布式的键-值数据库 - -  Parallel Python(PP)———— 轻松开发SMP、集群并行计算的库 \ No newline at end of file diff --git "a/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index f71670e..e297ce6 100644 --- "a/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -97,6 +97,7 @@ OpenSSL是一个开放源代码的实现了SSL及相关加密技术的软件包 ### Visual C++参考 * 通过命令行使用 Microsoft C++ 工具集: +* Understanding Custom Build Steps and Build Events: * Precompiled header files: * LINK 输入文件(lib,def,pdf等): * 为 Visual Studio C++ 项目创建的文件类型: @@ -114,11 +115,12 @@ OpenSSL是一个开放源代码的实现了SSL及相关加密技术的软件包 * C2760(syntax error : expected 'name1' not 'name2'): * C4251('identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2') * Exporting classes containing std:: objects (vector, map, etc) from a dll: - * LNK2026(链接器工具错误): +* 链接器工具错误和警告 (LNKxxxx): + * LNK2026: 模块对于 SAFESEH 映像不安全 + * LNK4098: 默认库“library”与其他库的使用冲突;请使用 /NODEFAULTLIB:library * LNK4042(object specified more than once; extras ignored) * Visual Studio 2010's strange “warning LNK4042”: * Visual Studio 2010 & 2008 can't handle source files with identical names in different folders?: - * LNK4098(defaultlib 'library' conflicts with use of other libs; use /NODEFAULTLIB:library) * Windows 控制台应用: @@ -127,8 +129,7 @@ OpenSSL是一个开放源代码的实现了SSL及相关加密技术的软件包 * 使用 Win32 API 的桌面 Windows 应用入门: * 进程间通信: * windows-data-types: -* OneCore.lib umbrella library (by module): -* Windows 8.1 API Sets: +* Windows API 集: * windows.foundation.h: * shellapi.h: * Strsafe.h: diff --git "a/_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" index 4edbcca..303badc 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -40,6 +40,7 @@ toc: true * Stani's Python Editor(SPE): * Ulipad: * Python Tools for Visual Studio: +* pylint(培养良好的编码习惯): * Unofficial Windows Binaries for Python Extension Packages: * SCons: A software construction tool: @@ -85,6 +86,70 @@ toc: true ## 其它 +* PyGTK: +* PyQt: * wxPython: +* Pmw(Pythonmegawidgets): + +* ~~PyXML(Python/XML): ~~ +* PyGame(用于多媒体开发和游戏软件开发的模块): +* PyOpenGL: + +* ~~numarray(用于处理任意维数的固定类型数组,简单说就是一个矩阵库。低层代码使用C来编写): ~~ +* NumPy(Numarray的后继者): +* matplotlib(一个Python的2D绘图库): +* SciPy(Python-based ecosystem of open-source software formathematics, science, and engineering): +* SAGE(基于NumPy和其他几个工具所整合成的数学软件包,目标是取代Magma, Maple, Mathematica和Matlab 这类工具): + +* MySQLdb: +* ~~adodb(ADO数据库连接组件,主要用于PHP也可用于Python): ~~ +* PyMedia(用于多媒体操作): + +* ~~Psyco(代码加速度器,可使代码的执行速度提高到与编译语言一样的水平): ~~ +* PyPy(Psyco的升级替代品): +* py2exe(用来生成windows可执行文件): +* Python-ldap(提供一组面向对象的API,可方便地在python中访问ldap目录服务,它基于OpenLDAP2.x): +* xmpppy(XMPP协议支持): +* Mechanize(爬虫连接网站常用): +* Pyro(实现与JAVA RMI类似的技术): +* twisted(An event-driven networking engine): +* django(一个WEB framework): +* Pylons(又一个web framework): +* Kodos(正则表达式调试工具): + +* Winpdb(Cross Platform Python Debugger): +* docutils(用来写文档的): +* reportlab(Python操作PDF的Libary。): +* cherrypy(一个WEB framework): +* pandas(data structures and data analysis tools): +* bsddb3(BerkeleyDB的连接组件): +* chardet(编码检测): +* scons(项目构建工具,写好了模板用起来还是很方便的): +* pycurl(URL处理工具): +* pydot(画图的,graphiz,可以很方便画流程图): +* feedparser(rss解析): +* astropy(天文相关的一些工具): +* PyRAF(天文相关的一些工具): +* astroplotlib(天文相关的一些工具): +* scapy(网络包构建分析框架,可编程的wireshark): +* Cheetah(构建和扩充任何种类的基于文本的内容): +* sendpkt(一个开发包) +* pyevent(事件支持) +* pypcap(抓包的) +* python-dnet(控制网络安全的其他设备) +* simplejson(JSON的支持) +* sqlalchemy(SQL数据库连接池) +* SQLObject(数据库连接池) +* ctypes(用来调用动态链接库) +* Cx-oracle(连接oracle的工具) +* DBUtils(数据库连接池) +* DPKT(raw-scoket网络编程) +* dpkt(数据包的解包和组包) +* pefile(windows pe文件解析器) +* PLY(基于LEX、YACC的语言工具) +* Corepy(使用开发编写x86汇编程序) +* LightCloud(实现的分布式的键-值数据库) +* Parallel Python(PP)(轻松开发SMP、集群并行计算的库) + * pythonchallenge: * Swaroop C H: \ No newline at end of file From 36da402c90e51c352fe66e0368a4472ca96cda25 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 6 Oct 2024 13:01:32 +0800 Subject: [PATCH 209/234] update --- ...0\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + 2 files changed, 3 insertions(+) diff --git "a/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index e297ce6..f544e5b 100644 --- "a/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -90,6 +90,8 @@ OpenSSL是一个开放源代码的实现了SSL及相关加密技术的软件包 * Visual Studio: * Visual Studio Locator: * VISUAL ASSIST: +* +* MSDN Magazine Issues and Downloads: * Spec Explorer 2010 Visual Studio Power Tool: * ~~Microsoft Visual Studio 2010 Visualization and Modeling Feature Pack: ~~ * ~~Windows 8 SDK: Include files in "shared", "um", and "winrt" directories. What's the difference? ~~ diff --git "a/_posts/the-way-of-learning/2015-05-19-\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index abcdd39..63af3db 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -87,6 +87,7 @@ toc: true * windows中使用Git工具连接GitHub(配置篇): * Git下载GitHub仓库里的某一个文件夹或某一个文件: * 打造完美 Windows git 命令行环境: +* git中文名转义带来的麻烦;git配置之core.quotepath;git中文乱码: * 详解在visual studio中使用git版本系统(图文): * git-credential-store: * Caching your GitHub password in Git: From 5b0e4852be1fc9c9f32357d3f732d884527d70dc Mon Sep 17 00:00:00 2001 From: Aloys Date: Sat, 26 Oct 2024 19:26:53 +0800 Subject: [PATCH 210/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 20 ++++++++++++++++--- ...46\344\271\240\344\271\213\350\267\257.md" | 1 - ...46\344\271\240\344\271\213\350\267\257.md" | 2 -- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git "a/_posts/the-way-of-learning/2015-05-19-OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" index 2583f7b..62aedff 100644 --- "a/_posts/the-way-of-learning/2015-05-19-OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -9,16 +9,23 @@ toc: true --- * OpenGL: -* GLUT(The OpenGL Utility Toolkit): -* freeglut: * OpenGL Wiki: * docs.GL: +* GLUT(The OpenGL Utility Toolkit): +* freeglut: +* GLFW: + +* GLEW: +* Glad: + * LearnOpenGL: * OpenGL(很多文章的参考文献): * Learn WebGL: * NEHE Tutorials: +* PyOpenGL: + * Android平台OpenGL ES/Assimp/OpenCV/GLM集成说明: * OpenGL顶点坐标与纹理坐标: @@ -49,4 +56,11 @@ toc: true * Rajawali: * Basic Rajawali3D Tutorial for Android: -* Vulkan Graphics API: \ No newline at end of file +* Vulkan Graphics API: + +## 其它 + +```shell +glxinfo | grep rendering # 查询OpenGL是否打开。提示: direct rendering: Yes 表明启动正常 +glxgears # glxgears是一个测试你的Linux是否可以顺利运行2D、3D的测试软件。 +``` diff --git "a/_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" index 303badc..7031227 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -93,7 +93,6 @@ toc: true * ~~PyXML(Python/XML): ~~ * PyGame(用于多媒体开发和游戏软件开发的模块): -* PyOpenGL: * ~~numarray(用于处理任意维数的固定类型数组,简单说就是一个矩阵库。低层代码使用C来编写): ~~ * NumPy(Numarray的后继者): diff --git "a/_posts/the-way-of-learning/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index 4838975..47059a6 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -200,8 +200,6 @@ toc: true netstat -s # 查看网络统计信息进程 find . –name "*.log" | xargs grep error # 在当前目录的所有日志文件中查找关键词"error" ls -t `find . -name "*.log"` #列出最近修改的文件 - glxinfo | grep rendering # 查询OpenGL是否打开。提示: direct rendering: Yes 表明启动正常 - glxgears # glxgears是一个测试你的Linux是否可以顺利运行2D、3D的测试软件。 watch "ls -al myfile" 监控文件变化 From 5f0583d4313ef1633820ca05b4a0f9c8e857aa83 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 24 Nov 2024 20:03:38 +0800 Subject: [PATCH 211/234] update --- _drafts/Others/ChooseYourBest.md | 18 +++++++++++++----- ...246\344\271\240\344\271\213\350\267\257.md" | 3 +++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/_drafts/Others/ChooseYourBest.md b/_drafts/Others/ChooseYourBest.md index 861c31c..3ab625d 100644 --- a/_drafts/Others/ChooseYourBest.md +++ b/_drafts/Others/ChooseYourBest.md @@ -62,6 +62,7 @@ ## PDF +* 福昕PDF阅读器: * wondershare(All-in-1 PDF Solution,PDF阅读器,PDF转换到其它文件等): * PDF-XChange: * ILovePDF: @@ -96,6 +97,7 @@ * SpaceSniffer: * UltraISO: * DAEMON Tools Lite: +* Nero Burning ROM: * 鲁大师: ## 地质相关软件 @@ -173,9 +175,6 @@ * MotionPro(VPN工具): * realvnc(安全远程连接): -* Clementine: -* osdlyrics: - * FFmpeg: * K-Lite Codec Pack: * Shark007 Codecs: @@ -194,18 +193,24 @@ * HyperSnap: * Snipaste: * PicPick: +* Camtasia: * Snagit: * FastStone Capture: * OBS Studio: * ScreenToGif: * ClipMate: -* babun: -* catdoc ported to Windows: * Sothink SWF Decompiler: * Sothink Logo Maker: * Wondershare DVD Slideshow Builder Deluxe: * Wondershare Flash Gallery Factory Deluxe: * Action Script Viewer: +* Clementine: +* osdlyrics: +* Switch Audio File Converter: +* Digital Voice Player: + +* babun: +* catdoc ported to Windows: * install-us: * 人人钢琴: @@ -235,6 +240,8 @@ Windows 10 already has this functionality built in so WizMouse is most useful if * inkscape: * OpenShot(Video Editor): +* Boilsoft Video Splitter: +* Easy RealMedia Producer & Easy RealMedia Editor: * GIMP(Image Editor): * Eagle(设计师图片管理工具): * blender(3D CG): @@ -251,6 +258,7 @@ Windows 10 already has this functionality built in so WizMouse is most useful if * httpwatch(HTTP sniffer): * Fiddler(Http sniffer): * Burp Suite(用于攻击web 应用程序的集成平台): +* IETester: * tcpdump: * tcpdump捕捉样例: * WinDump: diff --git "a/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index c6138bc..441fe37 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -11,6 +11,9 @@ toc: true * 开发者网站中文: * 开发者网站英文: +* 了解 Google Pixel 手机何时会收到软件更新: +* 获取 Android 16: + * Developer guide: * Permissions: * Android 权限的一些细节: From ad265484e10e69736862108cd002150979d2db28 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 29 Dec 2024 19:14:26 +0800 Subject: [PATCH 212/234] update --- _drafts/Others/ChooseYourBest.md | 3 +++ ...droid\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" | 5 +++++ 3 files changed, 10 insertions(+) diff --git a/_drafts/Others/ChooseYourBest.md b/_drafts/Others/ChooseYourBest.md index 3ab625d..36e3a01 100644 --- a/_drafts/Others/ChooseYourBest.md +++ b/_drafts/Others/ChooseYourBest.md @@ -56,9 +56,12 @@ ## 虚拟机软件 +* Hypervisor: * VMware Workstation Player: * VirtualBox: * VMTransferFiles: +* QEMU: +* Kernel Virtual Machine: ## PDF diff --git "a/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 441fe37..0b45645 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -79,6 +79,8 @@ toc: true * 系统启动流程(init进程、Zygote进程、SystemServer): * android关机流程 安卓关机流程: * Android BOOTCLASSPATH详解: +* Android 虚拟化框架 (AVF) : +* Trusty TEE: ### WMS diff --git "a/_posts/the-way-of-learning/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index 47059a6..5d37bec 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -42,6 +42,11 @@ toc: true * opensuse-guide: * manjaro: +* ChromiumOS: +* ChromeOS: +* Differences between ChromeOS Flex and ChromeOS: +* FydeOS: + * 鳥哥的 Linux 私房菜: ## Softwares/Tools/Knowledge From 453063eed19bc5b7c89b1a42afc1ba30a9215ec6 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 5 Jan 2025 17:01:39 +0800 Subject: [PATCH 213/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 5 ++- ...46\344\271\240\344\271\213\350\267\257.md" | 2 +- ...46\344\271\240\344\271\213\350\267\257.md" | 45 +++++++++++++++++++ 3 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 "_posts/the-way-of-learning/2025-01-05-\346\212\225\345\261\217\347\237\245\350\257\206\345\255\246\344\271\240\344\271\213\350\267\257.md" diff --git "a/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 0b45645..272237e 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -82,6 +82,10 @@ toc: true * Android 虚拟化框架 (AVF) : * Trusty TEE: +### 网络 + +* 原生安卓WiFi信号去叹号去叉教程: + ### WMS * WMS转屏流程: @@ -564,7 +568,6 @@ toc: true * 奇兔刷机: * dexcount-gradle-plugin: * leakcanary: -* Display and control your Android device: * LibChecker: ## SVGA diff --git "a/_posts/the-way-of-learning/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index 5d37bec..8b5abb1 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -42,7 +42,7 @@ toc: true * opensuse-guide: * manjaro: -* ChromiumOS: +* Chromium OS: * ChromeOS: * Differences between ChromeOS Flex and ChromeOS: * FydeOS: diff --git "a/_posts/the-way-of-learning/2025-01-05-\346\212\225\345\261\217\347\237\245\350\257\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2025-01-05-\346\212\225\345\261\217\347\237\245\350\257\206\345\255\246\344\271\240\344\271\213\350\267\257.md" new file mode 100644 index 0000000..efcd469 --- /dev/null +++ "b/_posts/the-way-of-learning/2025-01-05-\346\212\225\345\261\217\347\237\245\350\257\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -0,0 +1,45 @@ +--- +title: "投屏知识学习之路" +categories: + - the-way-of-learning +tags: + - 学习之路 + - 投屏 +toc: true +--- + +## 投屏模式 + +首先了解投屏的模式。 + +### 推送模式 + +主要用于投屏视频和音乐,投屏之后手机可以关闭或聊微信,电视不会停止播放。玩手机看电视两不误。最常见是视频软件里的tv按钮。 + +投屏推送的原理:原理就是,让手机与电视连接同一个wifi后,通过投屏协议传输数据。(就好像蓝牙一样的一个专门通道)。点击投屏按钮,手机就开始搜索wifi内有没有投屏广播服务。 + +手机搜索到电视之后,手机会发送一个视频地址给电视,电视收到地址后,开始播放。投屏后,手机可以控制电视的进度,暂停,下一集,音量之类的指令。 + +### 镜像模式 + +就是投屏手机屏幕或者投屏电脑屏幕;就是同屏显示。主要用于投屏手机PPT、手机桌面、吃鸡王者荣耀等手游;投屏淘宝、微信、抖音等暂时投屏功能的APP。苹果手机的屏幕镜像,安卓手机的多屏互动,都属于镜像模式。 + +原理:一样依靠局域网wifi通道,手机搜索到电视之后,开始镜像后,手机会不断截屏就是录屏。手机一边录屏,一般发送给电视。速度超快每秒60帧以上,电视收到之后再展现出来,就成了同屏功能了。 + +### 拓展模式 + +拓展模式是指将电脑屏幕投射到电视上,同时电脑屏幕也可以显示。这种模式一般用于工作场景,比如在电视上展示PPT,而在电脑上操作PPT。 + +## 投屏协议/应用对比 + +|投屏协议/应用|源平台|目标平台|无线/有线|推送/镜像|厂商|备注| +|-|-|-|-|-|-|-| +|[Miracast](https://www.wi-fi.org/discover-wi-fi/miracast)|支持协议的源设备|支持协议的显示设备|无线/有线|推送/镜像|Wi-Fi联盟|NA| +|[AirPlay](https://www.apple.com/airplay/)|iOS/iPadOS/Mac|AirPlay‑enabled smart TV|无线/有线|推送/镜像|Apple|NA| +|[DLNA](https://www.dlna.org/)|支持协议的源设备|支持协议的显示设备|无线/有线|推送|由索尼、英特尔、微软等企业共同发起|大部分视频软件投屏使用该协议| +|[Cast+](https://developer.huawei.com/consumer/cn/codelab/CastPlusKit)|华为/荣耀手机|Android大屏设备|无线/有线|镜像|华为|NA| +|[Chromecast](https://support.google.com/chromecast)|Android设备|插入Chromecast的显示设备|无线/有线|镜像|谷歌|NA| +|[WiDi](https://www.intel.cn/content/www/cn/zh/support/articles/000014926/emerging-technologies.html)|Windows设备|支持协议的显示设备|无线/有线|镜像/拓展|Intel|[已停止支持](https://www.intel.cn/content/www/cn/zh/support/articles/000021693/emerging-technologies.html)| +|[scrcpy](https://github.com/Genymobile/scrcpy)|Android|Linux/Windows/macOS|有线+无线|镜像|开源|NA| +|[Vysor](https://www.vysor.io/#)|Android/iOS|Linux/Windows/macOS|有线+无线|镜像|vysor|NA| +|[手机连接](https://support.microsoft.com/zh-cn/topic/%E6%89%8B%E6%9C%BA%E8%BF%9E%E6%8E%A5%E8%A6%81%E6%B1%82%E5%92%8C%E8%AE%BE%E7%BD%AE-cd2a1ee7-75a7-66a6-9d4e-bf22e735f9e3)|Android/iOS|Windows|无线|推送|微软|NA| From 6eff76abe8aa91d7545dd5e8a60439992cdc5978 Mon Sep 17 00:00:00 2001 From: Aloys Date: Wed, 15 Jan 2025 23:27:11 +0800 Subject: [PATCH 214/234] update --- .../others/2024-06-22-Aloys-Build-Manual.md | 2 +- ...46\344\271\240\344\271\213\350\267\257.md" | 6 + ...46\344\271\240\344\271\213\350\267\257.md" | 109 ++++++++++++------ ...46\344\271\240\344\271\213\350\267\257.md" | 14 ++- ...46\344\271\240\344\271\213\350\267\257.md" | 6 +- 5 files changed, 90 insertions(+), 47 deletions(-) diff --git a/_posts/others/2024-06-22-Aloys-Build-Manual.md b/_posts/others/2024-06-22-Aloys-Build-Manual.md index 21fd823..3c94956 100644 --- a/_posts/others/2024-06-22-Aloys-Build-Manual.md +++ b/_posts/others/2024-06-22-Aloys-Build-Manual.md @@ -4330,7 +4330,7 @@ http://124.222.145.48:8080/ war包放到$CATALINA_HOME/webapps/目录下,然后重启tomcat shutdown.sh; startup.sh ; tail -f $CATALINA_HOME/logs/catalina.out -http://124.222.145.48:8080/JavaWebTest/index.jsp +http://124.222.145.48:8080/java-web-test/index.jsp ## MyEclipse 2014安装说明 diff --git "a/_posts/the-way-of-learning/2015-05-19-CSharp\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-CSharp\345\255\246\344\271\240\344\271\213\350\267\257.md" index 72a220a..0b7a019 100644 --- "a/_posts/the-way-of-learning/2015-05-19-CSharp\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-CSharp\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -16,3 +16,9 @@ toc: true ## .NET * NuGet: + +## 其它 + +* Windows Forms: +* WPF: +* WCF: diff --git "a/_posts/the-way-of-learning/2015-05-19-\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" index 154571c..1c0c88a 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,12 +8,82 @@ tags: toc: true --- +## ECMACScript/JavaScript/TypeScript + + ECMAScript 是 JavaScript 的标准,JavaScript 是 ECMAScript 的实现。TypeScript 是 JavaScript 的超集,它增加了类型系统。 + +* TypeScript: +* ECMACScript: + +## Node.js + + Node.js 是一个免费、开源、跨平台的 JavaScript 运行时环境, 它让开发人员能够创建服务器 Web 应用、命令行工具和脚本。 + +* Node.js: + +## jQuery + + jQuery 是一个快速、小型且功能丰富的 JavaScript 库。它通过可在多种浏览器上运行的易于使用的 API,使 HTML 文档遍历和操作、事件处理、动画和 Ajax 等事情变得更加简单。凭借多功能性和可扩展性的结合,jQuery 改变了数百万人编写 JavaScript 的方式。 + +* jQuery: +* jQuery Validation Plugin: + +## Angular + + Angular 是一个平台,用于构建移动和桌面 Web 应用。它是一个开源框架,由 Google 的工程师和社区志愿者共同维护。 + +* Angular: + +## React + + React 是一个用于构建用户界面的 JavaScript 库。 + +* React: + +## Vue.js + + Vue 是一个渐进式 JavaScript 框架,用于构建用户界面。 + +* Vue.js: + +## Webpack + + Webpack 是一个现代 JavaScript 应用程序的静态模块打包器。当 Webpack 处理应用程序时,它会递归地构建一个依赖关系图,其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle。 + +* Webpack: +* 尚硅谷Webpack5入门到原理: + +## 测试框架 + +* Jest: +* Jasmine: +* ~~jsunit: ~~ + +## 其它 + * MDN: * W3C: * W3C QA: * W3School: -* 前端开发框架对比: +* ~~前端开发框架对比:~~ +* Front End JavaScript Development Handbook – React, Angular, and Vue Compared: * 当我说前端基础时,我在说什么? —— 最近几年在前端圈的观察和反思: +* npm: +* dojo: +* ExtJS: +* Backbone.js: +* UNDERSCORE.JS: +* Zepto.JS: +* IMMUTABLE.JS: +* css-layout: +* flux: +* refluxjs: +* Ember.js: +* JSX: +* echarts: +* antv: +* CommonJS: +* PhantomJS: * 清理无用的CSS样式的几个工具(转): ## 个人网站搭建 @@ -28,16 +98,11 @@ toc: true ## Tools -* jsunit: * firebug: * Brackets: * Tridiv is a web-based editor for creating 3D shapes in CSS: * CodeMirror: -## ECMACSCRIPT - -官网: - ## RequireJS RequireJS is a JavaScript file and module loader. It is optimized for in-browser use, but it can be used in other JavaScript environments, like Rhino and Node. Using a modular script loader like RequireJS will improve the speed and quality of your code. @@ -49,11 +114,6 @@ toc: true * Javascript模块化编程(三):require.js的用法: * 大漠穷秋: -## jQuery - -* -* - ## EasyUI * @@ -73,33 +133,6 @@ toc: true * XPath Visualizer: * XPath Tester: -* npm: -* dojo: -* ExtJS: -* Backbone.js: -* UNDERSCORE.JS: -* Zepto.JS: -* IMMUTABLE.JS: -* css-layout: -* flux: -* refluxjs: -* react: -* Ember.js: -* JSX: -* echarts: -* antv: -* CommonJS: -* PhantomJS: - -## Node.js - -* Node.js: - -## angularjs - -* -* AngularJS中文社区: - ## Foundation * diff --git "a/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" index 721475e..621056f 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -80,19 +80,21 @@ toc: true ## AI编程辅助 -* Cursor: +* Cursor: * Codeium: -* IntelliCode: -* Kite(已停止运营): -* codota(已被tabnine替代): +* Visual Studio 中的 AI 辅助开发: +* ~~Kite(已停止运营): ~~ +* ~~codota(已被tabnine替代): ~~ * tabnine: * Copilot: * GitHub Copilot chat: * Github Next: -* Alibaba Cloud AI Coding Assistant(Cosy): -* aixcoder: +* ~~Alibaba Cloud AI Coding Assistant(Cosy): ~~ +* 通义灵码: +* 豆包MarsCode: +* aiXcoder(硅心科技): * CodeGeex: * Bito: diff --git "a/_posts/the-way-of-learning/2025-01-05-\346\212\225\345\261\217\347\237\245\350\257\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2025-01-05-\346\212\225\345\261\217\347\237\245\350\257\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index efcd469..f26b78e 100644 --- "a/_posts/the-way-of-learning/2025-01-05-\346\212\225\345\261\217\347\237\245\350\257\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2025-01-05-\346\212\225\345\261\217\347\237\245\350\257\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -38,8 +38,10 @@ toc: true |[AirPlay](https://www.apple.com/airplay/)|iOS/iPadOS/Mac|AirPlay‑enabled smart TV|无线/有线|推送/镜像|Apple|NA| |[DLNA](https://www.dlna.org/)|支持协议的源设备|支持协议的显示设备|无线/有线|推送|由索尼、英特尔、微软等企业共同发起|大部分视频软件投屏使用该协议| |[Cast+](https://developer.huawei.com/consumer/cn/codelab/CastPlusKit)|华为/荣耀手机|Android大屏设备|无线/有线|镜像|华为|NA| -|[Chromecast](https://support.google.com/chromecast)|Android设备|插入Chromecast的显示设备|无线/有线|镜像|谷歌|NA| +|[Chromecast](https://support.google.com/chromecast)|Android/iOS设备|插入Chromecast的显示设备|无线/有线|镜像|谷歌|NA| |[WiDi](https://www.intel.cn/content/www/cn/zh/support/articles/000014926/emerging-technologies.html)|Windows设备|支持协议的显示设备|无线/有线|镜像/拓展|Intel|[已停止支持](https://www.intel.cn/content/www/cn/zh/support/articles/000021693/emerging-technologies.html)| +|[Windows手机连接](https://support.microsoft.com/zh-cn/topic/%E6%89%8B%E6%9C%BA%E8%BF%9E%E6%8E%A5%E8%A6%81%E6%B1%82%E5%92%8C%E8%AE%BE%E7%BD%AE-cd2a1ee7-75a7-66a6-9d4e-bf22e735f9e3)|Android/iOS|Windows|无线|推送|微软|NA| |[scrcpy](https://github.com/Genymobile/scrcpy)|Android|Linux/Windows/macOS|有线+无线|镜像|开源|NA| |[Vysor](https://www.vysor.io/#)|Android/iOS|Linux/Windows/macOS|有线+无线|镜像|vysor|NA| -|[手机连接](https://support.microsoft.com/zh-cn/topic/%E6%89%8B%E6%9C%BA%E8%BF%9E%E6%8E%A5%E8%A6%81%E6%B1%82%E5%92%8C%E8%AE%BE%E7%BD%AE-cd2a1ee7-75a7-66a6-9d4e-bf22e735f9e3)|Android/iOS|Windows|无线|推送|微软|NA| + +## 其它链接 From debcbaf000646785c0d0d95ce20e6c881cdf1d44 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 19 Jan 2025 11:13:37 +0800 Subject: [PATCH 215/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 47 ++++++++++++------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git "a/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" index 621056f..aafca68 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -22,7 +22,23 @@ toc: true * TensorFlow: * PyTorch: -## 基于大数据模型的一些产品与网站 +## 大模型 + +* OpenAI: +* ChatGPT(通用型聊天机器人)(OpenAI): +* DALL-E(文本生成图片)(OpenAI): + +* DeepSeek: + +* Claude(Anthropic): +* Llama(Meta): +* gemini(Google): + +## 基于大模型的衍生产品 + +* OpenRouter(大模型统一接口): +* Ollama(在本地机器上便捷部署和运行大型语言模型): +* Devin(AI合作伙伴): * Awesome ChatGPT Prompts: @@ -36,12 +52,6 @@ toc: true * DeepMind: * AlphaGo(DeepMind): -* OpenAI: -* ChatGPT(通用型聊天机器人)(OpenAI): -* DALL-E(文本生成图片)(OpenAI): - -* New Bing: - * Stability AI: * DreamStudio(DreamStudio is an easy-to-use interface for creating images using the latest version of the Stable Diffusion image generation model.): * stable-diffusion(免费,但是需要排队): @@ -81,22 +91,27 @@ toc: true ## AI编程辅助 * Cursor: -* Codeium: +* cline: +* Roo-Cline: +* Copilot: +* Github Next: +* Codeium(Windsurf独立应用以及Codeium插件): * Visual Studio 中的 AI 辅助开发: -* ~~Kite(已停止运营): ~~ -* ~~codota(已被tabnine替代): ~~ * tabnine: -* Copilot: -* GitHub Copilot chat: -* Github Next: -* ~~Alibaba Cloud AI Coding Assistant(Cosy): ~~ -* 通义灵码: -* 豆包MarsCode: +* 通义灵码(阿里巴巴): +* 豆包MarsCode(字节跳动): * aiXcoder(硅心科技): +* 代码小浣熊(商汤科技): +* 文心快码(百度): * CodeGeex: +* Amazon Q 开发者版: +* Cody(Sourcegraph): * Bito: +* ~~Kite(已停止运营): ~~ +* ~~codota(已被tabnine替代): ~~ +* ~~Alibaba Cloud AI Coding Assistant(Cosy): ~~ ## 其它 From a3ab7ce6815a7ca9c6268b3363a431423736e242 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 19 Jan 2025 13:30:12 +0800 Subject: [PATCH 216/234] update --- ...\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 -- 1 file changed, 2 deletions(-) diff --git "a/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" index aafca68..443d144 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -110,8 +110,6 @@ toc: true * Cody(Sourcegraph): * Bito: * ~~Kite(已停止运营): ~~ -* ~~codota(已被tabnine替代): ~~ -* ~~Alibaba Cloud AI Coding Assistant(Cosy): ~~ ## 其它 From 69fa6141c90208dd00a5ab1b90312a4e90c6321c Mon Sep 17 00:00:00 2001 From: Aloys Date: Thu, 23 Jan 2025 23:31:06 +0800 Subject: [PATCH 217/234] update --- ...\241\345\255\246\344\271\240\344\271\213\350\267\257.md" | 6 ++++++ 1 file changed, 6 insertions(+) diff --git "a/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" index 15a7393..1f27e2f 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -12,6 +12,12 @@ toc: true ## Adobe After Effect +## Adobe Premiere + +## EDIUS + +* EDIUS(非线性编辑软件专为广播和后期制作环境而设计): + ## Adobe Acrobat * PitStop Pro: From 99ff85458223bc129385a8ff764ba8cbc2af4f9d Mon Sep 17 00:00:00 2001 From: Aloys Date: Wed, 29 Jan 2025 18:38:19 +0800 Subject: [PATCH 218/234] update --- _drafts/Others/ChooseYourBest.md | 1 - ...\246\344\271\240\344\271\213\350\267\257.md" | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/_drafts/Others/ChooseYourBest.md b/_drafts/Others/ChooseYourBest.md index 36e3a01..69f2ff4 100644 --- a/_drafts/Others/ChooseYourBest.md +++ b/_drafts/Others/ChooseYourBest.md @@ -247,7 +247,6 @@ Windows 10 already has this functionality built in so WizMouse is most useful if * Easy RealMedia Producer & Easy RealMedia Editor: * GIMP(Image Editor): * Eagle(设计师图片管理工具): -* blender(3D CG): * BusinessCards MX(名片制作工具): * GrampsAIO(族谱绘制): diff --git "a/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" index 1f27e2f..fc36da5 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -38,12 +38,29 @@ toc: true * CorelDRAW: * VideoStudio(会声会影): +## blender + +* blender(3D CG): + ## CINEMA 4D(C4D) 3D computer animation, modeling, simulation, and rendering software * CINEMA 4D: +## AutoCAD + +* Autodesk AutoCAD(二维和三维 CAD 工具,助力提升创造力): +* Autodesk 3ds Max(三维建模、渲染和动画软件): +* Autodesk Maya(三维动画和视觉特效软件): +* Autodesk Viewer: + +* 浩辰CAD: +* 中望CAD: +* 天正建筑软件: +* ~~Acme CAD Converter: ~~ +* CAD迷你看图: + ## 其它 * 可牛影像: From 3a41157bc0582bfd1b6e7a5e38aa54e37218ac99 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 2 Feb 2025 23:10:36 +0800 Subject: [PATCH 219/234] update --- _drafts/Others/ChooseYourBest.md | 1 - ...46\344\271\240\344\271\213\350\267\257.md" | 36 +++++++-------- ...46\344\271\240\344\271\213\350\267\257.md" | 44 +++++++++---------- 3 files changed, 36 insertions(+), 45 deletions(-) diff --git a/_drafts/Others/ChooseYourBest.md b/_drafts/Others/ChooseYourBest.md index 69f2ff4..2b72880 100644 --- a/_drafts/Others/ChooseYourBest.md +++ b/_drafts/Others/ChooseYourBest.md @@ -245,7 +245,6 @@ Windows 10 already has this functionality built in so WizMouse is most useful if * OpenShot(Video Editor): * Boilsoft Video Splitter: * Easy RealMedia Producer & Easy RealMedia Editor: -* GIMP(Image Editor): * Eagle(设计师图片管理工具): * BusinessCards MX(名片制作工具): diff --git "a/_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" index 7031227..2d1b8a8 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,14 +8,28 @@ tags: toc: true --- -* -* +* CPython: +* Documentation: * Python Enhancement Proposals: * ActivePython: * IronPython: * Jython: +* PyPy(Psyco的升级替代品): + +* pyenv: +* Virtualenv: +* 使用virtualenv创建python沙盒(虚拟)环境: + +* PyPI - the Python Package Index: +* pip: +* setuptools: +* Python: What's PyPi, pip, easy_install, setuptools? + +* conda: +* Anaconda: +* PyCharm: ## Python基础知识 @@ -55,10 +69,6 @@ toc: true * Python 程序员必知必会的开发者工具: * Python自动单元测试框架: -## PyCharm - -* PyCharm: - ## PyDev * PyDev: @@ -71,19 +81,6 @@ toc: true * PIL、Pillow安装使用方法: * 64位Win7下无法安装PIL库的原因: -## pyenv/Virtualenv - -* pyenv: -* Virtualenv: -* 使用virtualenv创建python沙盒(虚拟)环境: - -## PyPI/pip/setuptools - -* PyPI - the Python Package Index: -* pip: -* setuptools: -* Python: What's PyPi, pip, easy_install, setuptools? - ## 其它 * PyGTK: @@ -105,7 +102,6 @@ toc: true * PyMedia(用于多媒体操作): * ~~Psyco(代码加速度器,可使代码的执行速度提高到与编译语言一样的水平): ~~ -* PyPy(Psyco的升级替代品): * py2exe(用来生成windows可执行文件): * Python-ldap(提供一组面向对象的API,可方便地在python中访问ldap目录服务,它基于OpenLDAP2.x): * xmpppy(XMPP协议支持): diff --git "a/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" index fc36da5..b332f6e 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,18 +8,29 @@ tags: toc: true --- -## Adobe Photoshop +## 图像处理 -## Adobe After Effect +* Photoshop: +* GIMP: +* 可牛影像: +* 美图秀秀: +* 光影魔术手: -## Adobe Premiere +## 矢量图形设计 -## EDIUS +* Illustrator: +* CorelDRAW Graphics Suite: + +## 视频编辑 * EDIUS(非线性编辑软件专为广播和后期制作环境而设计): +* Adobe Premiere: +* VideoStudio(会声会影): +* Adobe After Effects(影视后期处理): -## Adobe Acrobat +## PDF处理 +* Adobe Acrobat: * PitStop Pro: * PitStop Pro Manuals: @@ -32,27 +43,16 @@ toc: true ## Adobe InDesign -## Corel - -* CorelDRAW Graphics Suite: -* CorelDRAW: -* VideoStudio(会声会影): - -## blender +## 三维建模与动画 * blender(3D CG): - -## CINEMA 4D(C4D) - -3D computer animation, modeling, simulation, and rendering software - -* CINEMA 4D: +* CINEMA 4D(三维动画、建模、模拟、渲染软件): +* Autodesk 3ds Max(三维建模、渲染和动画软件): +* Autodesk Maya(三维动画和视觉特效软件): ## AutoCAD * Autodesk AutoCAD(二维和三维 CAD 工具,助力提升创造力): -* Autodesk 3ds Max(三维建模、渲染和动画软件): -* Autodesk Maya(三维动画和视觉特效软件): * Autodesk Viewer: * 浩辰CAD: @@ -62,7 +62,3 @@ toc: true * CAD迷你看图: ## 其它 - -* 可牛影像: -* 美图秀秀: -* 光影魔术手: From 50401f13fce2feb8de6694a01c787b95fd6a6d54 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 9 Feb 2025 18:41:12 +0800 Subject: [PATCH 220/234] update --- _drafts/Others/ChooseYourBest.md | 2 - ...46\344\271\240\344\271\213\350\267\257.md" | 36 +++++++------- ...46\344\271\240\344\271\213\350\267\257.md" | 28 +++++------ ...46\344\271\240\344\271\213\350\267\257.md" | 47 ++++++++++++------- 4 files changed, 59 insertions(+), 54 deletions(-) diff --git a/_drafts/Others/ChooseYourBest.md b/_drafts/Others/ChooseYourBest.md index 36e3a01..2b72880 100644 --- a/_drafts/Others/ChooseYourBest.md +++ b/_drafts/Others/ChooseYourBest.md @@ -245,9 +245,7 @@ Windows 10 already has this functionality built in so WizMouse is most useful if * OpenShot(Video Editor): * Boilsoft Video Splitter: * Easy RealMedia Producer & Easy RealMedia Editor: -* GIMP(Image Editor): * Eagle(设计师图片管理工具): -* blender(3D CG): * BusinessCards MX(名片制作工具): * GrampsAIO(族谱绘制): diff --git "a/_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" index 7031227..2d1b8a8 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,14 +8,28 @@ tags: toc: true --- -* -* +* CPython: +* Documentation: * Python Enhancement Proposals: * ActivePython: * IronPython: * Jython: +* PyPy(Psyco的升级替代品): + +* pyenv: +* Virtualenv: +* 使用virtualenv创建python沙盒(虚拟)环境: + +* PyPI - the Python Package Index: +* pip: +* setuptools: +* Python: What's PyPi, pip, easy_install, setuptools? + +* conda: +* Anaconda: +* PyCharm: ## Python基础知识 @@ -55,10 +69,6 @@ toc: true * Python 程序员必知必会的开发者工具: * Python自动单元测试框架: -## PyCharm - -* PyCharm: - ## PyDev * PyDev: @@ -71,19 +81,6 @@ toc: true * PIL、Pillow安装使用方法: * 64位Win7下无法安装PIL库的原因: -## pyenv/Virtualenv - -* pyenv: -* Virtualenv: -* 使用virtualenv创建python沙盒(虚拟)环境: - -## PyPI/pip/setuptools - -* PyPI - the Python Package Index: -* pip: -* setuptools: -* Python: What's PyPi, pip, easy_install, setuptools? - ## 其它 * PyGTK: @@ -105,7 +102,6 @@ toc: true * PyMedia(用于多媒体操作): * ~~Psyco(代码加速度器,可使代码的执行速度提高到与编译语言一样的水平): ~~ -* PyPy(Psyco的升级替代品): * py2exe(用来生成windows可执行文件): * Python-ldap(提供一组面向对象的API,可方便地在python中访问ldap目录服务,它基于OpenLDAP2.x): * xmpppy(XMPP协议支持): diff --git "a/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" index 443d144..47fc225 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -22,14 +22,11 @@ toc: true * TensorFlow: * PyTorch: -## 大模型 - -* OpenAI: -* ChatGPT(通用型聊天机器人)(OpenAI): -* DALL-E(文本生成图片)(OpenAI): - -* DeepSeek: +## 通用型聊天机器人 +* ChatGPT(OpenAI): +* DeepSeek(深度求索): +* Kimi(月之暗面): * Claude(Anthropic): * Llama(Meta): * gemini(Google): @@ -37,12 +34,14 @@ toc: true ## 基于大模型的衍生产品 * OpenRouter(大模型统一接口): -* Ollama(在本地机器上便捷部署和运行大型语言模型): +* Ollama(在本地机器上便捷部署和运行大型语言模型): +* chatbox: * Devin(AI合作伙伴): +* 模型对比: * Awesome ChatGPT Prompts: -* Hugging Face: +* Hugging Face(AI交流社区): * Transformers: (提供了数以千计的预训练模型,支持 100 多种语言的文本分类、信息抽取、问答、摘要、翻译、文本生成。它的宗旨是让最先进的 NLP 技术人人易用): * ArtHub: @@ -54,7 +53,8 @@ toc: true * Stability AI: * DreamStudio(DreamStudio is an easy-to-use interface for creating images using the latest version of the Stable Diffusion image generation model.): -* stable-diffusion(免费,但是需要排队): +* stable-diffusion: +* ComfyUI: * Midjourney(文本生成图片): * firefly(文本生成图片): @@ -66,6 +66,7 @@ toc: true * playgroundai: * DaVinci: * OpenRead(AI读论文): +* ResearchFlow: * DeepL(AI翻译): * Synthesia(文本生成视频) * Notion AI(AI写作): @@ -73,24 +74,19 @@ toc: true * Copy.ai(AI写作): * Peppertype.ai(AI写作): * AI-Writer(AI写作): -* Designs.ai(AI创意设计): * khroma(AI配色): * AI Colors: * AIVA(音乐创作): * fireflies(文本转语音): -* repurpose(自动化社媒内容): * livechat(多功能聊天机器人): -* gerev.ai(工作区搜索引擎): * PDF解析: * BookAI(Chat with any book using AI): * regex.ai: -* AI Code Translator: -* 模型对比: -* ChatDoctor: ## AI编程辅助 * Cursor: +* Trae: * cline: * Roo-Cline: * Copilot: diff --git "a/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" index 1f27e2f..b009243 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,18 +8,31 @@ tags: toc: true --- -## Adobe Photoshop +## 图像处理 -## Adobe After Effect +* Photoshop: +* SAI: +* Krita: +* GIMP: +* 可牛影像: +* 美图秀秀: +* 光影魔术手: -## Adobe Premiere +## 矢量图形设计 -## EDIUS +* Illustrator: +* CorelDRAW Graphics Suite: + +## 视频编辑 * EDIUS(非线性编辑软件专为广播和后期制作环境而设计): +* Adobe Premiere: +* VideoStudio(会声会影): +* Adobe After Effects(影视后期处理): -## Adobe Acrobat +## PDF处理 +* Adobe Acrobat: * PitStop Pro: * PitStop Pro Manuals: @@ -32,20 +45,22 @@ toc: true ## Adobe InDesign -## Corel +## 三维建模与动画 -* CorelDRAW Graphics Suite: -* CorelDRAW: -* VideoStudio(会声会影): +* blender(3D CG): +* CINEMA 4D(三维动画、建模、模拟、渲染软件): +* Autodesk 3ds Max(三维建模、渲染和动画软件): +* Autodesk Maya(三维动画和视觉特效软件): -## CINEMA 4D(C4D) +## AutoCAD -3D computer animation, modeling, simulation, and rendering software +* Autodesk AutoCAD(二维和三维 CAD 工具,助力提升创造力): +* Autodesk Viewer: -* CINEMA 4D: +* 浩辰CAD: +* 中望CAD: +* 天正建筑软件: +* ~~Acme CAD Converter: ~~ +* CAD迷你看图: ## 其它 - -* 可牛影像: -* 美图秀秀: -* 光影魔术手: From 7d66f73235d250b95b0402c9ecc19ed05d9078af Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 13 Apr 2025 09:01:49 +0800 Subject: [PATCH 221/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 1 + ...46\344\271\240\344\271\213\350\267\257.md" | 2 +- ...46\344\271\240\344\271\213\350\267\257.md" | 20 +++++++++---------- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git "a/_posts/the-way-of-learning/2015-05-19-OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" index f8b7601..6215b4b 100644 --- "a/_posts/the-way-of-learning/2015-05-19-OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -12,6 +12,7 @@ toc: true * awesome-algorithm: * LeetCode Online Judge: +* HackerRanker: * 洛谷: * Vijos: * Virtual Judge: diff --git "a/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" index 47fc225..31e38fc 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -88,7 +88,7 @@ toc: true * Cursor: * Trae: * cline: -* Roo-Cline: +* Roo-Code: * Copilot: * Github Next: * Codeium(Windsurf独立应用以及Codeium插件): diff --git "a/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" index 0428fcd..26930fe 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -11,9 +11,9 @@ toc: true ## 图像处理 * Photoshop: +* GIMP: * SAI: * Krita: -* GIMP: * 可牛影像: * 美图秀秀: * 光影魔术手: @@ -33,6 +33,12 @@ toc: true * VideoStudio(会声会影): * Adobe After Effects(影视后期处理): +## 音频编辑 + +* Adobe Audition: +* RX: +* fabfilter: + ## PDF处理 * Adobe Acrobat: @@ -40,15 +46,6 @@ toc: true * PitStop Pro: * PitStop Pro Manuals: -## Adobe Audition - -* RX: -* fabfilter: - -## Adobe Dreamweaver - -## Adobe InDesign - ## 三维建模与动画 * blender(3D CG): @@ -72,3 +69,6 @@ toc: true * CAD迷你看图: ## 其它 + +* Adobe Dreamweaver: +* Adobe InDesign: From 080ef196e6ddb29ce46e57e4915e784990d873d3 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 11 May 2025 12:08:04 +0800 Subject: [PATCH 222/234] update --- README.md | 2 +- ...345\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + ...345\255\246\344\271\240\344\271\213\350\267\257.md" | 10 ++++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 "_posts/the-way-of-learning/2025-05-09-\346\236\266\346\236\204\345\270\210\345\255\246\344\271\240\344\271\213\350\267\257.md" diff --git a/README.md b/README.md index 67dc968..cfe936b 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # cnblogs [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) -[![Maintenance](https://img.shields.io/maintenance/yes/2024.svg)](https://github.com/jiangxincode/cnblogs) +[![Maintenance](https://img.shields.io/maintenance/yes/2025.svg)](https://github.com/jiangxincode/cnblogs) [![GitHub license](https://img.shields.io/github/license/mashape/apistatus.svg)](http://mit-license.org/) 一些我在平时工作和学习中积累的编程相关的资源。每个程序员都有自己的学习之路,过程中会学习各种各样的网上知识,学习完最好记录下来,每隔一段时间看一看,会有不一样的收获。 diff --git "a/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" index 26930fe..20ece8a 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -54,6 +54,7 @@ toc: true * Autodesk Maya(三维动画和视觉特效软件): * blender(3D CG): * CINEMA 4D(三维动画、建模、模拟、渲染软件): +* 【C4D教程】零基础快速入门教程合集: * Autodesk 3ds Max(三维建模、渲染和动画软件): * Autodesk Maya(三维动画和视觉特效软件): diff --git "a/_posts/the-way-of-learning/2025-05-09-\346\236\266\346\236\204\345\270\210\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2025-05-09-\346\236\266\346\236\204\345\270\210\345\255\246\344\271\240\344\271\213\350\267\257.md" new file mode 100644 index 0000000..19a6b8a --- /dev/null +++ "b/_posts/the-way-of-learning/2025-05-09-\346\236\266\346\236\204\345\270\210\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -0,0 +1,10 @@ +--- +title: "架构师学习之路" +categories: + - the-way-of-learning +tags: + - 学习之路 + - 架构师 + - 架构 +toc: true +--- \ No newline at end of file From 7c8db6c0cfe02d7f1321ad742a81ac85c4a4bd56 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 11 May 2025 12:48:11 +0800 Subject: [PATCH 223/234] update --- _config.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/_config.yml b/_config.yml index 8ba45f4..2812dfb 100644 --- a/_config.yml +++ b/_config.yml @@ -20,7 +20,8 @@ description: >- # this means to ignore newlines until "baseurl:" line in _config.yml. It will appear in your document head meta (for Google search results) and in your feed.xml site description. twitter_username: username -url: "https://jiangxincode.github.io/cnblogs/" +baseurl: "/cnblogs" +url: "https://jiangxincode.github.io" github_username: jiangxincode #minimal_mistakes_skin: default minimal_mistakes_skin: sunrise From dc72bea473ca4510e8bc8667d5f1bdcdcbaea9d3 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 11 May 2025 17:47:51 +0800 Subject: [PATCH 224/234] add article abstract --- ...ndroid\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...-Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...CSharp\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...-19-DB\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...Docker\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...AndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...Erlang\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...-Excel\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...ortran\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...Golang\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...Groovy\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...askell\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...-19-IO\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...9-J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" | 4 +++- ...Kotlin\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...9-Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...19-Lua\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...rkdown\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...Octave\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...-Nginx\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...-OCaml\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...-19-OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...19-PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...Delphi\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...9-Perl\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...Prolog\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...Python\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...9-Ruby\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...9-Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...5-19-R\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...-Scala\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...\216TK\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...19-TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...6Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...indows\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...53\257\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...15\256\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...16\230\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...73\223\346\236\204\344\270\216\347\256\227\346\263\225.md" | 2 ++ ...24\265\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...03\275\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...74\217\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...74\226\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...20\206\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...20\206\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...56\241\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...57\206\345\255\246\344\271\240\344\271\213\350\267\257.md" | 2 ++ ...70\210\345\255\246\344\271\240\344\271\213\350\267\257.md" | 4 +++- 50 files changed, 102 insertions(+), 2 deletions(-) diff --git "a/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 272237e..913dd7f 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了 Android 学习的相关资源,包括开发者文档、系统架构、性能优化、工具使用等内容,适合 Android 开发者参考。 + * 开发者网站中文: * 开发者网站英文: diff --git "a/_posts/the-way-of-learning/2015-05-19-Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" index 826f04d..4f691c9 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Basic\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了 Basic 语言学习的相关资源,包括 Visual Basic、FreeBASIC 等语言的学习路径和参考资料,适合对 Basic 感兴趣的开发者参考。 + * BASIC: ## Visual Basic/Visual Basic .NET diff --git "a/_posts/the-way-of-learning/2015-05-19-CSharp\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-CSharp\345\255\246\344\271\240\344\271\213\350\267\257.md" index 0b7a019..07e4c71 100644 --- "a/_posts/the-way-of-learning/2015-05-19-CSharp\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-CSharp\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了 C# 学习的相关资源,包括语言基础、.NET 框架、WPF、ASP.NET 等技术的学习路径和参考资料,适合 C# 开发者参考。 + * Mono: * MonoDevelop: * ~~SharpDevelop: ~~ diff --git "a/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" index f544e5b..b902337 100644 --- "a/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-C\344\270\216C++\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -9,6 +9,8 @@ tags: toc: true --- +本篇文章汇总了 C 与 C++ 学习的相关资源,包括语言基础、标准库、跨平台开发、性能优化等内容,适合系统级开发者参考。 + ## Reference * diff --git "a/_posts/the-way-of-learning/2015-05-19-DB\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-DB\345\255\246\344\271\240\344\271\213\350\267\257.md" index 348acaa..bb1bb48 100644 --- "a/_posts/the-way-of-learning/2015-05-19-DB\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-DB\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了数据库学习的相关资源,包括 SQL、MySQL、SQL Server、Oracle 等数据库的学习路径和参考资料,适合数据库开发者参考。 + * * Tech On The Net: diff --git "a/_posts/the-way-of-learning/2015-05-19-Docker\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Docker\345\255\246\344\271\240\344\271\213\350\267\257.md" index 17e8100..9afe6b6 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Docker\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Docker\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了 Docker 学习的相关资源,包括 Docker 的基本概念、安装配置、镜像管理、容器操作等内容,适合容器化技术的初学者参考。 + * * * About images, containers, and storage drivers: diff --git "a/_posts/the-way-of-learning/2015-05-19-EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" index 43be49d..322f1c5 100644 --- "a/_posts/the-way-of-learning/2015-05-19-EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-EditorAndIDE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -9,6 +9,8 @@ tags: toc: true --- +本篇文章汇总了多种编辑器与 IDE 的学习资源,包括 VSCode、VIM、Eclipse、JetBrains 系列等工具的使用技巧和插件推荐,适合开发者提升开发效率。 + ## VSCode * Visual Studio Code: diff --git "a/_posts/the-way-of-learning/2015-05-19-Erlang\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Erlang\345\255\246\344\271\240\344\271\213\350\267\257.md" index 2d343ea..659a4ac 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Erlang\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Erlang\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,5 +8,7 @@ tags: toc: true --- +本篇文章汇总了 Erlang 学习的相关资源,包括 Erlang 的基本概念、安装配置、编程语言特性等内容,适合 Erlang 开发者参考。 + * * diff --git "a/_posts/the-way-of-learning/2015-05-19-Excel\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Excel\345\255\246\344\271\240\344\271\213\350\267\257.md" index 9c8b63b..8cf2362 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Excel\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Excel\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了 Excel 学习的相关资源,包括 Excel 的基本概念、函数、VBA 编程等内容,适合 Excel 开发者参考。 + ## 书籍 * Excel 2019 Bible[EXCEL2019宝典(第10版)]: Michael Alexander,Dick Kusleika,Previously by John Walkenbach: 主力学习 diff --git "a/_posts/the-way-of-learning/2015-05-19-Fortran\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Fortran\345\255\246\344\271\240\344\271\213\350\267\257.md" index 5014aec..ffe351f 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Fortran\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Fortran\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了 Fortran 学习的相关资源,包括 Fortran 的基本概念、编程语言特性、编译器等内容,适合 Fortran 开发者参考。 + * * GNU Fortran: * LFortran: diff --git "a/_posts/the-way-of-learning/2015-05-19-Golang\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Golang\345\255\246\344\271\240\344\271\213\350\267\257.md" index 8e5029f..7609864 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Golang\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Golang\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了 Golang 学习的相关资源,包括 Golang 的基本概念、安装配置、编程语言特性等内容,适合 Golang 开发者参考。 + * Go: * Go Documentation: * Go (programming language): diff --git "a/_posts/the-way-of-learning/2015-05-19-Groovy\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Groovy\345\255\246\344\271\240\344\271\213\350\267\257.md" index 4d6fca3..94e472a 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Groovy\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Groovy\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了 Groovy 学习的相关资源,包括 Groovy 的基本概念、编程语言特性、Groovy 语法等内容,适合 Groovy 开发者参考。 + * Groovy: * source: * Grape: diff --git "a/_posts/the-way-of-learning/2015-05-19-Haskell\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Haskell\345\255\246\344\271\240\344\271\213\350\267\257.md" index 1dccedf..14dd367 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Haskell\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Haskell\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,4 +8,6 @@ tags: toc: true --- +本篇文章汇总了 Haskell 学习的相关资源,包括 Haskell 的基本概念、编程语言特性、编译器等内容,适合 Haskell 开发者参考。 + * diff --git "a/_posts/the-way-of-learning/2015-05-19-IO\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-IO\345\255\246\344\271\240\344\271\213\350\267\257.md" index 241373c..22a3510 100644 --- "a/_posts/the-way-of-learning/2015-05-19-IO\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-IO\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,5 +8,7 @@ tags: toc: true --- +本篇文章汇总了 IO 学习的相关资源,包括 IO 的基本概念、编程语言特性、编译器等内容,适合 IO 开发者参考。 + * * diff --git "a/_posts/the-way-of-learning/2015-05-19-J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" index e63dabe..316e15a 100644 --- "a/_posts/the-way-of-learning/2015-05-19-J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-J2EE\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了 J2EE 学习的相关资源,包括 Java SE、Java EE、Spring、Hibernate 等技术的学习路径和参考资料,适合 Java 开发者参考。 + ## Java SE * Java SE: @@ -1123,4 +1125,4 @@ The yFiles diagramming software components are extensive class libraries that en ## JarScan -* JarScan: \ No newline at end of file +* JarScan: diff --git "a/_posts/the-way-of-learning/2015-05-19-Kotlin\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Kotlin\345\255\246\344\271\240\344\271\213\350\267\257.md" index 6f378c5..2b26165 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Kotlin\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Kotlin\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了 Kotlin 学习的相关资源,包括 Kotlin 的基本概念、编程语言特性、编译器等内容,适合 Kotlin 开发者参考。 + * * * diff --git "a/_posts/the-way-of-learning/2015-05-19-Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" index 2a61706..03dda60 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Lisp\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了 Lisp 学习的相关资源,包括 Lisp 的基本概念、编程语言特性、编译器等内容,适合 Lisp 开发者参考。 + * Common Lisp: * Common Lisp wiki: * diff --git "a/_posts/the-way-of-learning/2015-05-19-Lua\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Lua\345\255\246\344\271\240\344\271\213\350\267\257.md" index 1561353..61d6537 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Lua\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Lua\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,4 +8,6 @@ tags: toc: true --- +本篇文章汇总了 Lua 学习的相关资源,包括 Lua 的基本概念、编程语言特性、编译器等内容,适合 Lua 开发者参考。 + * diff --git "a/_posts/the-way-of-learning/2015-05-19-Markdown\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Markdown\345\255\246\344\271\240\344\271\213\350\267\257.md" index e1d31d4..bde7f9c 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Markdown\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Markdown\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了 Markdown 学习的相关资源,包括 Markdown 的基本概念、语法、编辑器等内容,适合 Markdown 开发者参考。 + * Markdown 语法说明 (简体中文版): * Typora: diff --git "a/_posts/the-way-of-learning/2015-05-19-Matlab\344\270\216Octave\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Matlab\344\270\216Octave\345\255\246\344\271\240\344\271\213\350\267\257.md" index fbdc1fb..c28aaa3 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Matlab\344\270\216Octave\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Matlab\344\270\216Octave\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -9,6 +9,8 @@ tags: toc: true --- +本篇文章汇总了 Matlab 和 Octave 学习的相关资源,包括 Matlab 和 Octave 的基本概念、安装配置、编程语言特性等内容,适合 Matlab 和 Octave 开发者参考。 + ## Matlab * Matlab: diff --git "a/_posts/the-way-of-learning/2015-05-19-Nginx\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Nginx\345\255\246\344\271\240\344\271\213\350\267\257.md" index 22c7901..db87103 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Nginx\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Nginx\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,5 +8,7 @@ tags: toc: true --- +本篇文章汇总了 Nginx 学习的相关资源,包括 Nginx 的基本概念、安装配置、编程语言特性等内容,适合 Nginx 开发者参考。 + * * Pre-Built Packages for Stable version: diff --git "a/_posts/the-way-of-learning/2015-05-19-OCaml\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-OCaml\345\255\246\344\271\240\344\271\213\350\267\257.md" index bd8c978..b752504 100644 --- "a/_posts/the-way-of-learning/2015-05-19-OCaml\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-OCaml\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,5 +8,7 @@ tags: toc: true --- +本篇文章汇总了 OCaml 学习的相关资源,包括 OCaml 的基本概念、安装配置、编程语言特性等内容,适合 OCaml 开发者参考。 + * OCaml: * opam(OCaml Package Manager): \ No newline at end of file diff --git "a/_posts/the-way-of-learning/2015-05-19-OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" index 6215b4b..5f922a7 100644 --- "a/_posts/the-way-of-learning/2015-05-19-OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-OJ\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了Online Judge的相关资源,包含主要的OJ平台。 + * ACM竞赛之输入输出: * awesome-algorithm: diff --git "a/_posts/the-way-of-learning/2015-05-19-OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" index 62aedff..d54a998 100644 --- "a/_posts/the-way-of-learning/2015-05-19-OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-OpenGL\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了 OpenGL 学习的相关资源,包括 OpenGL 的基本概念、相关工具等内容,适合 OpenGL 开发者参考。 + * OpenGL: * OpenGL Wiki: * docs.GL: diff --git "a/_posts/the-way-of-learning/2015-05-19-PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" index ea27682..8a7cd5a 100644 --- "a/_posts/the-way-of-learning/2015-05-19-PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-PHP\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了 PHP 学习的相关资源,包括 PHP 的基本概念、安装配置、编程语言特性等内容,适合 PHP 开发者参考。 + * PHP: * PHP Manual: * ~~PHP 5 Manual: ~~ diff --git "a/_posts/the-way-of-learning/2015-05-19-Pascal\344\270\216Delphi\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Pascal\344\270\216Delphi\345\255\246\344\271\240\344\271\213\350\267\257.md" index 113431a..3bed284 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Pascal\344\270\216Delphi\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Pascal\344\270\216Delphi\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -9,6 +9,8 @@ tags: toc: true --- +本篇文章汇总了 Pascal&Delphi 学习的相关资源,包括 Pascal&Delphi 的基本概念、安装配置、编程语言特性等内容,适合 Pascal&Delphi 开发者参考。 + * free pascal: * free pascal docs: * Lazarus: diff --git "a/_posts/the-way-of-learning/2015-05-19-Perl\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Perl\345\255\246\344\271\240\344\271\213\350\267\257.md" index 18d5a17..58a68ae 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Perl\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Perl\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了 Perl 学习的相关资源,包括 Perl 的基本概念、安装配置、编程语言特性等内容,适合 Perl 开发者参考。 + * The Perl Programming Language: * Perl FAQ: * Perl programming documentation: diff --git "a/_posts/the-way-of-learning/2015-05-19-Prolog\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Prolog\345\255\246\344\271\240\344\271\213\350\267\257.md" index b405567..8f05cff 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Prolog\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Prolog\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了 Prolog 学习的相关资源,包括 Prolog 的基本概念、安装配置、编程语言特性等内容,适合 Prolog 开发者参考。 + * Visual Prolog: * SWI-Prolog: * Amzi! Prolog + Logic Server™: diff --git "a/_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" index 2d1b8a8..e9d3322 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Python\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了 Python 学习的相关资源,包括 Python 的基本概念、安装配置、编程语言特性等内容,适合 Python 开发者参考。 + * CPython: * Documentation: diff --git "a/_posts/the-way-of-learning/2015-05-19-Ruby\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Ruby\345\255\246\344\271\240\344\271\213\350\267\257.md" index 0ac04ab..c66ff81 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Ruby\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Ruby\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了 Ruby 学习的相关资源,包括 Ruby 的基本概念、安装配置、编程语言特性等内容,适合 Ruby 开发者参考。 + * Ruby: * Help and documentation for the Ruby programming language: * RubyGems: diff --git "a/_posts/the-way-of-learning/2015-05-19-Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" index cbe6a8f..44fc5b3 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Rust\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了 Rust 学习的相关资源,包括 Rust 的基本概念、安装配置、编程语言特性等内容,适合 Rust 开发者参考。 + * Rust: * Rust Documentation: diff --git "a/_posts/the-way-of-learning/2015-05-19-R\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-R\345\255\246\344\271\240\344\271\213\350\267\257.md" index 8e0e402..2f2e3d8 100644 --- "a/_posts/the-way-of-learning/2015-05-19-R\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-R\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了 R 学习的相关资源,包括 R 语言的基本概念、安装配置、编程语言特性等内容,适合 R 开发者参考。 + * R: * The Comprehensive R Archive Network: diff --git "a/_posts/the-way-of-learning/2015-05-19-Scala\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Scala\345\255\246\344\271\240\344\271\213\350\267\257.md" index 2294a32..d7bca42 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Scala\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Scala\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了 Scala 学习的相关资源,包括 Scala 的基本概念、安装配置、编程语言特性等内容,适合 Scala 开发者参考。 + * * documentation: * wikipedia: (programming_language) diff --git "a/_posts/the-way-of-learning/2015-05-19-TCL\344\270\216TK\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-TCL\344\270\216TK\345\255\246\344\271\240\344\271\213\350\267\257.md" index ef8a627..47ae350 100644 --- "a/_posts/the-way-of-learning/2015-05-19-TCL\344\270\216TK\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-TCL\344\270\216TK\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了 TCL 与 TK 学习的相关资源,包括 TCL 与 TK 的基本概念、安装配置、编程语言特性等内容,适合 TCL 与 TK 开发者参考。 + * Tloona Tcl/Tk IDE: * tclsqueak: * CrowTDE: diff --git "a/_posts/the-way-of-learning/2015-05-19-TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" index 9cc008d..addf3ba 100644 --- "a/_posts/the-way-of-learning/2015-05-19-TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了 TeX 学习的相关资源,包括 TeX 的基本概念、安装配置等内容,适合 TeX 开发者参考。 + * TeX Live: * WinEdt: diff --git "a/_posts/the-way-of-learning/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" index 8b5abb1..f03b86f 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Unix\344\270\216Linux\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了 Unix 和 Linux 学习的相关资源,包括 Unix 和 Linux 的历史渊源、相关工具等内容,适合 Unix 和 Linux 开发者参考。 + ## General Knowledge * The Open Group(Unix): diff --git "a/_posts/the-way-of-learning/2015-05-19-Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" index 59c416d..50d2e99 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Windows\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了 Windows 学习的相关资源,包括 Windows 的基本概念、命令行工具、PowerShell 等内容,适合 Windows 开发者参考。 + ## Dos * FreeDOS: diff --git "a/_posts/the-way-of-learning/2015-05-19-\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" index 1c0c88a..7c8d6dd 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了前端开发的学习资源,包括 JavaScript、TypeScript、Node.js、React、Vue.js 等技术的学习路径和参考资料,适合前端开发者参考。 + ## ECMACScript/JavaScript/TypeScript ECMAScript 是 JavaScript 的标准,JavaScript 是 ECMAScript 的实现。TypeScript 是 JavaScript 的超集,它增加了类型系统。 diff --git "a/_posts/the-way-of-learning/2015-05-19-\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" index bb81842..0aa2e59 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\345\244\247\346\225\260\346\215\256\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了大数据学习的相关资源,包括大数据的基本概念、安装配置、编程语言特性等内容,适合大数据开发者参考。 + ## Hadoop * diff --git "a/_posts/the-way-of-learning/2015-05-19-\346\225\260\346\215\256\346\214\226\346\216\230\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\346\225\260\346\215\256\346\214\226\346\216\230\345\255\246\344\271\240\344\271\213\350\267\257.md" index e4e1401..2c85f09 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\346\225\260\346\215\256\346\214\226\346\216\230\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\346\225\260\346\215\256\346\214\226\346\216\230\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了数据挖掘学习的相关资源,包括数据挖掘的基本概念、算法、工具等内容,适合数据挖掘开发者参考。 + ## 开源数据集 * Dataset Search: diff --git "a/_posts/the-way-of-learning/2015-05-19-\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225.md" "b/_posts/the-way-of-learning/2015-05-19-\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225.md" index 6a5bef6..a0fd706 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了数据结构与算法学习的相关资源,包括数据结构与算法的基本概念等内容。 + * 排序算法: * 算法可视化: * 十大经典排序算法动画,看我就够了! diff --git "a/_posts/the-way-of-learning/2015-05-19-\346\225\260\347\224\265\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\346\225\260\347\224\265\345\255\246\344\271\240\344\271\213\350\267\257.md" index 90aafe0..d26ed0d 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\346\225\260\347\224\265\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\346\225\260\347\224\265\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,5 +8,7 @@ tags: toc: true --- +本篇文章汇总了数电学习的相关资源,适合数电开发者参考。 + * 中国电子顶级开发网论坛(EETOP) 国内最顶级的电子论坛,最活跃的电子工程师交流社区: * Altera: \ No newline at end of file diff --git "a/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" index 31e38fc..240525c 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -9,6 +9,8 @@ tags: toc: true --- +本篇文章汇总了机器学习与人工智能学习的相关资源,包括机器学习、深度学习、自然语言处理、计算机视觉等内容,适合机器学习与人工智能开发者参考。 + ## 专业术语 * AIGC即AI Generated Content,是指利用人工智能技术来生成内容,AIGC也被认为是继UGC(User Generated Content)、PGC(Professional Generated Content)之后的新型内容生产方式,AI绘画、AI写作等都属于AIGC的分支。对AIGC来说,2022年被认为是其发展速度惊人的一年。 diff --git "a/_posts/the-way-of-learning/2015-05-19-\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\255\246\344\271\240\344\271\213\350\267\257.md" index 743bba2..45c4418 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了正则表达式学习的相关资源,适合正则表达式开发者参考。 + * 我爱正则表达式: * Regular Expression Library: * RegexBuddy/RegexMagic/PowerGREP: diff --git "a/_posts/the-way-of-learning/2015-05-19-\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" index 91fdba8..dea8f42 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\346\261\207\347\274\226\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了 汇编 学习的相关资源,包括 汇编 的基本概念、编程语言特性、编译器等内容,适合 汇编 开发者参考。 + * MASM: * ~~TASM: ~~ * flat assembler: diff --git "a/_posts/the-way-of-learning/2015-05-19-\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 63af3db..2976574 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\347\211\210\346\234\254\347\256\241\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了版本控制系统(VCS)的学习资源,包括 SVN、Git、GitHub 等工具的使用技巧和最佳实践,适合团队协作开发者参考。 + ## 代码托管网站 * (Git) diff --git "a/_posts/the-way-of-learning/2015-05-19-\347\274\226\350\257\221\345\216\237\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\347\274\226\350\257\221\345\216\237\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index eb1aacf..edf33eb 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\347\274\226\350\257\221\345\216\237\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\347\274\226\350\257\221\345\216\237\347\220\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,5 +8,7 @@ tags: toc: true --- +本篇文章汇总了编译原理学习的相关资源,包括编译原理的基本概念、编译器的实现、编译器优化等内容,适合编译原理开发者参考。 + * Win flex-bison: * Compilers: Principles, Techniques, and Tools: diff --git "a/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" index 20ece8a..1ab7f9f 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\350\256\276\350\256\241\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了设计学习的相关资源,适合设计开发者参考。 + ## 图像处理 * Photoshop: diff --git "a/_posts/the-way-of-learning/2025-01-05-\346\212\225\345\261\217\347\237\245\350\257\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2025-01-05-\346\212\225\345\261\217\347\237\245\350\257\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index f26b78e..4e4a741 100644 --- "a/_posts/the-way-of-learning/2025-01-05-\346\212\225\345\261\217\347\237\245\350\257\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2025-01-05-\346\212\225\345\261\217\347\237\245\350\257\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -8,6 +8,8 @@ tags: toc: true --- +本篇文章汇总了投屏知识学习的相关资源,包括投屏的基本概念、投屏协议、投屏应用等内容,适合投屏开发者参考。 + ## 投屏模式 首先了解投屏的模式。 diff --git "a/_posts/the-way-of-learning/2025-05-09-\346\236\266\346\236\204\345\270\210\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2025-05-09-\346\236\266\346\236\204\345\270\210\345\255\246\344\271\240\344\271\213\350\267\257.md" index 19a6b8a..2f6257d 100644 --- "a/_posts/the-way-of-learning/2025-05-09-\346\236\266\346\236\204\345\270\210\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2025-05-09-\346\236\266\346\236\204\345\270\210\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -7,4 +7,6 @@ tags: - 架构师 - 架构 toc: true ---- \ No newline at end of file +--- + +本篇文章汇总了架构师学习的相关资源,包括架构师的基本概念、架构设计、架构模式等内容,适合架构师开发者参考。 From 42a7f150daec789ec22ea317f85cf79a9c58d16d Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 11 May 2025 21:47:54 +0800 Subject: [PATCH 225/234] remove unnecessary content --- ...204\350\256\276\347\275\256\346\226\271\346\263\225.md" | 5 ----- ...\243\205sqlite3\347\232\204\346\226\271\346\263\225.md" | 5 ----- ...Read-only file system"\351\227\256\351\242\230.md" | 6 ------ ...DB2\345\270\270\347\224\250\350\257\255\345\217\245.md" | 6 ------ ...266\350\247\243\345\206\263\346\226\271\345\274\217.md" | 5 ----- ...230\350\256\244\346\225\260\346\215\256\345\272\223.md" | 5 ----- ...22\214processes\347\232\204\350\256\276\347\275\256.md" | 6 ------ ...SQL\350\257\255\345\217\245\346\224\266\351\233\206.md" | 5 ----- ...ver\345\270\270\347\224\250\350\257\255\345\217\245.md" | 5 ----- ...230\350\247\243\345\206\263\345\212\236\346\263\225.md" | 5 ----- ...\346\263\225(\350\275\254+\346\225\264\347\220\206).md" | 7 ------- ...223\357\274\237\357\274\210\350\275\254\357\274\211.md" | 5 ----- ...267\345\220\215\345\222\214\345\257\206\347\240\201.md" | 7 ------- ...223\347\233\270\345\205\263\346\200\273\347\273\223.md" | 5 ----- ...271\346\263\225\347\232\204\345\214\272\345\210\253.md" | 6 ------ ...203\351\227\256\351\242\230\345\210\206\346\236\220.md" | 6 ------ ...56\344\270\216\346\265\213\350\257\225 \350\275\254.md" | 6 ------ ...220\351\200\237\345\260\217\346\212\200\345\267\247.md" | 7 ------- ...pse\347\233\270\345\205\263\351\227\256\351\242\230.md" | 4 ---- ...204\350\247\243\345\206\263\346\226\271\346\241\210.md" | 5 ----- "_drafts/Java/FindBugs\350\257\246\350\247\243.md" | 6 ------ "_drafts/Java/HBase\344\273\213\347\273\215.md" | 7 ------- ...hod\350\247\243\345\206\263\346\226\271\346\263\225.md" | 6 ------ "_drafts/Java/Java\346\235\202\351\241\271.md" | 7 ------- ...264\351\227\256\351\242\230\346\261\207\346\200\273.md" | 5 ----- .../Peer Code Reviews Made Easy with Eclipse Plug-In.md | 6 ------ ...226\357\274\211\357\274\210\350\275\254\357\274\211.md" | 5 ----- ...206\346\236\220\357\274\210\350\275\254\357\274\211.md" | 6 ------ ...\254\346\233\264\346\226\260(web site) \350\275\254.md" | 5 ----- ...ts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.md" | 5 ----- ...ava\346\226\207\344\273\266\350\257\246\350\247\243.md" | 5 ----- ...204\347\261\273\345\206\205\345\256\271\343\200\202.md" | 5 ----- ...configuration\347\233\256\345\275\225[\350\275\254].md" | 6 ------ ...242\347\211\271\345\256\232\345\255\227\347\254\246.md" | 6 ------ ...345\217\260\347\232\204Java\344\273\243\347\240\201.md" | 6 ------ ...che Hadoop2.2.0\346\272\220\344\273\243\347\240\201.md" | 6 ------ ...\243\205\346\234\200\346\226\260\347\232\204Eclipse.md" | 6 ------ ...213\345\270\270\347\224\250\345\221\275\344\273\244.md" | 5 ----- .../Linux/Linux\345\277\253\346\215\267\351\224\256.md" | 5 ----- ...201\351\224\231\350\257\257\346\200\273\347\273\223.md" | 6 ------ ...277\350\217\234\345\213\230\350\257\257\350\241\250.md" | 4 ---- ...\344\270\216SAC\347\232\204\345\256\211\350\243\205.md" | 5 ----- ...71\346\233\264\346\226\260\344\274\230\345\214\226).md" | 5 ----- ...201\347\224\250\346\263\225\346\200\273\347\273\223.md" | 5 ----- ...263\351\227\256\351\242\230\346\200\273\347\273\223.md" | 7 ------- ...5\274\200\345\217\221Hadoop\345\272\224\347\224\250.md" | 6 ------ ...213\345\267\245\345\205\267\345\220\210\351\233\206.md" | 7 ------- ...214\347\273\210\346\255\242\350\277\220\347\256\227.md" | 7 ------- ...ump\346\215\225\346\215\211\346\240\267\344\276\213.md" | 6 ------ ...225\350\277\207\347\250\213\346\200\273\347\273\223.md" | 6 ------ ...226\346\210\221\347\232\204\345\267\245\344\275\234.md" | 5 ----- ...240\344\270\252\345\260\217\345\277\203\345\276\227.md" | 5 ----- ...224\350\276\203\357\274\210\350\275\254\357\274\211.md" | 3 --- ...204\350\277\207\347\250\213\350\256\260\345\275\225.md" | 5 ----- ...231\347\250\213\357\274\210\350\275\254\357\274\211.md" | 7 ------- ...207\345\210\260\347\232\204\351\227\256\351\242\230.md" | 5 ----- ...245\345\205\267\357\274\210\350\275\254\357\274\211.md" | 5 ----- ...5\244\215markdownlint MD034\350\255\246\345\221\212.md" | 5 ----- ...51\242\230(split-brain problem in HA)(\350\275\254).md" | 7 ------- ...206\345\255\246\344\271\240\344\271\213\350\267\257.md" | 0 _posts/others/2024-06-22-Aloys-Build-Manual.md | 7 ------- 61 files changed, 337 deletions(-) rename "_posts/the-way-of-learning/2025-01-05-\346\212\225\345\261\217\347\237\245\350\257\206\345\255\246\344\271\240\344\271\213\350\267\257.md" => "_posts/android/2025-01-05-\346\212\225\345\261\217\347\237\245\350\257\206\345\255\246\344\271\240\344\271\213\350\267\257.md" (100%) diff --git "a/_drafts/Android/Android Studio\347\247\273\345\212\250\351\274\240\346\240\207\346\230\276\347\244\272\346\202\254\346\265\256\346\217\220\347\244\272\347\232\204\350\256\276\347\275\256\346\226\271\346\263\225.md" "b/_drafts/Android/Android Studio\347\247\273\345\212\250\351\274\240\346\240\207\346\230\276\347\244\272\346\202\254\346\265\256\346\217\220\347\244\272\347\232\204\350\256\276\347\275\256\346\226\271\346\263\225.md" index fd343f8..337d823 100644 --- "a/_drafts/Android/Android Studio\347\247\273\345\212\250\351\274\240\346\240\207\346\230\276\347\244\272\346\202\254\346\265\256\346\217\220\347\244\272\347\232\204\350\256\276\347\275\256\346\226\271\346\263\225.md" +++ "b/_drafts/Android/Android Studio\347\247\273\345\212\250\351\274\240\346\240\207\346\230\276\347\244\272\346\202\254\346\265\256\346\217\220\347\244\272\347\232\204\350\256\276\347\275\256\346\226\271\346\263\225.md" @@ -1,8 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju 以Windows 10 + Android Studio 3.0.1为例 diff --git "a/_drafts/Android/Android\347\234\237\346\234\272\345\256\211\350\243\205sqlite3\347\232\204\346\226\271\346\263\225.md" "b/_drafts/Android/Android\347\234\237\346\234\272\345\256\211\350\243\205sqlite3\347\232\204\346\226\271\346\263\225.md" index 482227c..1a0516f 100644 --- "a/_drafts/Android/Android\347\234\237\346\234\272\345\256\211\350\243\205sqlite3\347\232\204\346\226\271\346\263\225.md" +++ "b/_drafts/Android/Android\347\234\237\346\234\272\345\256\211\350\243\205sqlite3\347\232\204\346\226\271\346\263\225.md" @@ -1,8 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju Android版本: 4.4.2 diff --git "a/_drafts/Android/\350\247\243\345\206\263adb push\346\227\266\345\207\272\347\216\260\347\232\204"Read-only file system"\351\227\256\351\242\230.md" "b/_drafts/Android/\350\247\243\345\206\263adb push\346\227\266\345\207\272\347\216\260\347\232\204"Read-only file system"\351\227\256\351\242\230.md" index 45e194e..b80fc5d 100644 --- "a/_drafts/Android/\350\247\243\345\206\263adb push\346\227\266\345\207\272\347\216\260\347\232\204"Read-only file system"\351\227\256\351\242\230.md" +++ "b/_drafts/Android/\350\247\243\345\206\263adb push\346\227\266\345\207\272\347\216\260\347\232\204"Read-only file system"\351\227\256\351\242\230.md" @@ -1,9 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - 出现`Read-only file system`问题,不是因为文件或者文件夹的权限不对,而是要push的目录对应的分区是以只读方式挂载的,网上给出的解决办法是重新以读写方式挂载对应分区,以`/system`分区为例,使用命令:`mount -o remount rw /system`,当然如果你想重新挂载系统分区需要有root权限。 diff --git "a/_drafts/Database/DB2\345\270\270\347\224\250\350\257\255\345\217\245.md" "b/_drafts/Database/DB2\345\270\270\347\224\250\350\257\255\345\217\245.md" index 3af4c9e..9831c0f 100644 --- "a/_drafts/Database/DB2\345\270\270\347\224\250\350\257\255\345\217\245.md" +++ "b/_drafts/Database/DB2\345\270\270\347\224\250\350\257\255\345\217\245.md" @@ -1,9 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - ```sql CREATE TABLE STAFF_BAK LIKE STAFF; diff --git "a/_drafts/Database/MYSQL\345\270\270\350\247\201\351\224\231\350\257\257\345\217\212\345\205\266\350\247\243\345\206\263\346\226\271\345\274\217.md" "b/_drafts/Database/MYSQL\345\270\270\350\247\201\351\224\231\350\257\257\345\217\212\345\205\266\350\247\243\345\206\263\346\226\271\345\274\217.md" index d09a4da..89cd1ad 100644 --- "a/_drafts/Database/MYSQL\345\270\270\350\247\201\351\224\231\350\257\257\345\217\212\345\205\266\350\247\243\345\206\263\346\226\271\345\274\217.md" +++ "b/_drafts/Database/MYSQL\345\270\270\350\247\201\351\224\231\350\257\257\345\217\212\345\205\266\350\247\243\345\206\263\346\226\271\345\274\217.md" @@ -1,8 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju # ERROR 1130: Host 10.0.0.1 is not allowed to connect to this MySQL server diff --git "a/_drafts/Database/MySQL\351\273\230\350\256\244\346\225\260\346\215\256\345\272\223.md" "b/_drafts/Database/MySQL\351\273\230\350\256\244\346\225\260\346\215\256\345\272\223.md" index 2afbf1c..6eff9dd 100644 --- "a/_drafts/Database/MySQL\351\273\230\350\256\244\346\225\260\346\215\256\345\272\223.md" +++ "b/_drafts/Database/MySQL\351\273\230\350\256\244\346\225\260\346\215\256\345\272\223.md" @@ -1,8 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju INFORMATION_SCHEMA:提供了访问数据库元数据的方式。 元数据是关于数据的数据,如数据库名、表名、列的数据类型或访问权限等。有些时候用于表述该信息的其他术语包括“数据词典”和“系统目录”。你可以讲INFORMATION_SCHEMA看成一个信息数据库,其中保存着关于MySQL服务器所维护的所有其他数据库的信息。在INFORMATION_SCHEMA中,有数个只读表。它们实际上是视图,而不是基本表,因此你将无法看到与之相关的任何文件。每位MySQL用户均有权访问这些表,但仅限于表中的特定行,在这类行中含有用户具有恰当访问权限的对象。 diff --git "a/_drafts/Database/Oracle\344\270\255session\345\222\214processes\347\232\204\350\256\276\347\275\256.md" "b/_drafts/Database/Oracle\344\270\255session\345\222\214processes\347\232\204\350\256\276\347\275\256.md" index 4466f7d..3eb9fe0 100644 --- "a/_drafts/Database/Oracle\344\270\255session\345\222\214processes\347\232\204\350\256\276\347\275\256.md" +++ "b/_drafts/Database/Oracle\344\270\255session\345\222\214processes\347\232\204\350\256\276\347\275\256.md" @@ -1,9 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - * PROCESSES: http://docs.oracle.com/cd/B28359_01/server.111/b28320/initparams188.htm#sthref560 * SESSIONS: http://docs.oracle.com/cd/B28359_01/server.111/b28320/initparams220.htm#sthref647 diff --git "a/_drafts/Database/Oracle\347\263\273\347\273\237\350\241\250\346\225\264\347\220\206+\345\270\270\347\224\250SQL\350\257\255\345\217\245\346\224\266\351\233\206.md" "b/_drafts/Database/Oracle\347\263\273\347\273\237\350\241\250\346\225\264\347\220\206+\345\270\270\347\224\250SQL\350\257\255\345\217\245\346\224\266\351\233\206.md" index a93fd57..8e39d61 100644 --- "a/_drafts/Database/Oracle\347\263\273\347\273\237\350\241\250\346\225\264\347\220\206+\345\270\270\347\224\250SQL\350\257\255\345\217\245\346\224\266\351\233\206.md" +++ "b/_drafts/Database/Oracle\347\263\273\347\273\237\350\241\250\346\225\264\347\220\206+\345\270\270\347\224\250SQL\350\257\255\345\217\245\346\224\266\351\233\206.md" @@ -1,8 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju ``` -- DBA/ALL/USER/V_$/GV_$/SESSION/INDEX开头的绝大部分都是视图 diff --git "a/_drafts/Database/SQL Server\345\270\270\347\224\250\350\257\255\345\217\245.md" "b/_drafts/Database/SQL Server\345\270\270\347\224\250\350\257\255\345\217\245.md" index b86d5ee..cefed39 100644 --- "a/_drafts/Database/SQL Server\345\270\270\347\224\250\350\257\255\345\217\245.md" +++ "b/_drafts/Database/SQL Server\345\270\270\347\224\250\350\257\255\345\217\245.md" @@ -1,8 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju ```SQL -- 身份证验证(SQLServer) diff --git "a/_drafts/Database/oracle\350\241\250\347\251\272\351\227\264\344\270\215\350\266\263\347\233\270\345\205\263\351\227\256\351\242\230\350\247\243\345\206\263\345\212\236\346\263\225.md" "b/_drafts/Database/oracle\350\241\250\347\251\272\351\227\264\344\270\215\350\266\263\347\233\270\345\205\263\351\227\256\351\242\230\350\247\243\345\206\263\345\212\236\346\263\225.md" index 0a4e354..7a23ccf 100644 --- "a/_drafts/Database/oracle\350\241\250\347\251\272\351\227\264\344\270\215\350\266\263\347\233\270\345\205\263\351\227\256\351\242\230\350\247\243\345\206\263\345\212\236\346\263\225.md" +++ "b/_drafts/Database/oracle\350\241\250\347\251\272\351\227\264\344\270\215\350\266\263\347\233\270\345\205\263\351\227\256\351\242\230\350\247\243\345\206\263\345\212\236\346\263\225.md" @@ -1,8 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju ## oracle 临时表空间和数据表空间 diff --git "a/_drafts/Database/oracle\350\241\250\347\251\272\351\227\264\350\241\250\345\210\206\345\214\272\350\257\246\350\247\243\345\217\212oracle\350\241\250\345\210\206\345\214\272\346\237\245\350\257\242\344\275\277\347\224\250\346\226\271\346\263\225(\350\275\254+\346\225\264\347\220\206).md" "b/_drafts/Database/oracle\350\241\250\347\251\272\351\227\264\350\241\250\345\210\206\345\214\272\350\257\246\350\247\243\345\217\212oracle\350\241\250\345\210\206\345\214\272\346\237\245\350\257\242\344\275\277\347\224\250\346\226\271\346\263\225(\350\275\254+\346\225\264\347\220\206).md" index 95166de..f763da8 100644 --- "a/_drafts/Database/oracle\350\241\250\347\251\272\351\227\264\350\241\250\345\210\206\345\214\272\350\257\246\350\247\243\345\217\212oracle\350\241\250\345\210\206\345\214\272\346\237\245\350\257\242\344\275\277\347\224\250\346\226\271\346\263\225(\350\275\254+\346\225\264\347\220\206).md" +++ "b/_drafts/Database/oracle\350\241\250\347\251\272\351\227\264\350\241\250\345\210\206\345\214\272\350\257\246\350\247\243\345\217\212oracle\350\241\250\345\210\206\345\214\272\346\237\245\350\257\242\344\275\277\347\224\250\346\226\271\346\263\225(\350\275\254+\346\225\264\347\220\206).md" @@ -1,10 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - - 此文从以下几个方面来整理关于分区表的概念及操作: diff --git "a/_drafts/Database/\345\246\202\344\275\225\345\273\272\347\253\213DB2\345\210\206\345\214\272\346\225\260\346\215\256\345\272\223\357\274\237\357\274\210\350\275\254\357\274\211.md" "b/_drafts/Database/\345\246\202\344\275\225\345\273\272\347\253\213DB2\345\210\206\345\214\272\346\225\260\346\215\256\345\272\223\357\274\237\357\274\210\350\275\254\357\274\211.md" index eeb7626..f60e55d 100644 --- "a/_drafts/Database/\345\246\202\344\275\225\345\273\272\347\253\213DB2\345\210\206\345\214\272\346\225\260\346\215\256\345\272\223\357\274\237\357\274\210\350\275\254\357\274\211.md" +++ "b/_drafts/Database/\345\246\202\344\275\225\345\273\272\347\253\213DB2\345\210\206\345\214\272\346\225\260\346\215\256\345\272\223\357\274\237\357\274\210\350\275\254\357\274\211.md" @@ -1,8 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju 原作:陈敏 2008-05-21 diff --git "a/_drafts/Database/\345\277\230\350\256\260oracle\347\232\204sys\347\224\250\346\210\267\345\257\206\347\240\201\346\200\216\344\271\210\344\277\256\346\224\271\344\273\245\345\217\212Oracle 11g \351\273\230\350\256\244\347\224\250\346\210\267\345\220\215\345\222\214\345\257\206\347\240\201.md" "b/_drafts/Database/\345\277\230\350\256\260oracle\347\232\204sys\347\224\250\346\210\267\345\257\206\347\240\201\346\200\216\344\271\210\344\277\256\346\224\271\344\273\245\345\217\212Oracle 11g \351\273\230\350\256\244\347\224\250\346\210\267\345\220\215\345\222\214\345\257\206\347\240\201.md" index 1b15f81..ad7db48 100644 --- "a/_drafts/Database/\345\277\230\350\256\260oracle\347\232\204sys\347\224\250\346\210\267\345\257\206\347\240\201\346\200\216\344\271\210\344\277\256\346\224\271\344\273\245\345\217\212Oracle 11g \351\273\230\350\256\244\347\224\250\346\210\267\345\220\215\345\222\214\345\257\206\347\240\201.md" +++ "b/_drafts/Database/\345\277\230\350\256\260oracle\347\232\204sys\347\224\250\346\210\267\345\257\206\347\240\201\346\200\216\344\271\210\344\277\256\346\224\271\344\273\245\345\217\212Oracle 11g \351\273\230\350\256\244\347\224\250\346\210\267\345\220\215\345\222\214\345\257\206\347\240\201.md" @@ -1,10 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - - ## 忘记除SYS、SYSTEM用户之外的用户的登录密码 diff --git "a/_drafts/Database/\346\225\260\346\215\256\345\272\223\347\233\270\345\205\263\346\200\273\347\273\223.md" "b/_drafts/Database/\346\225\260\346\215\256\345\272\223\347\233\270\345\205\263\346\200\273\347\273\223.md" index 59f3c37..04e0b98 100644 --- "a/_drafts/Database/\346\225\260\346\215\256\345\272\223\347\233\270\345\205\263\346\200\273\347\273\223.md" +++ "b/_drafts/Database/\346\225\260\346\215\256\345\272\223\347\233\270\345\205\263\346\200\273\347\273\223.md" @@ -1,8 +1,3 @@ -欢迎关注我的社交账号: - -博客园地址: http://www.cnblogs.com/jiangxinnju/p/4781259.html -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju # 通用: diff --git "a/_drafts/Java/Calendar\347\261\273\344\270\255add_set_roll\346\226\271\346\263\225\347\232\204\345\214\272\345\210\253.md" "b/_drafts/Java/Calendar\347\261\273\344\270\255add_set_roll\346\226\271\346\263\225\347\232\204\345\214\272\345\210\253.md" index 93789bb..79cfa55 100644 --- "a/_drafts/Java/Calendar\347\261\273\344\270\255add_set_roll\346\226\271\346\263\225\347\232\204\345\214\272\345\210\253.md" +++ "b/_drafts/Java/Calendar\347\261\273\344\270\255add_set_roll\346\226\271\346\263\225\347\232\204\345\214\272\345\210\253.md" @@ -1,9 +1,3 @@ -欢迎和大家交流技术相关问题: - -* 邮箱: jiangxinnju@163.com -* 博客园地址: http://www.cnblogs.com/jiangxinnju -* GitHub地址: https://github.com/jiangxincode -* 知乎地址: https://www.zhihu.com/people/jiangxinnju Calendar类中有三个方法更改日期的某个字段:set()、add() 和 roll()。 diff --git "a/_drafts/Java/Eclipse+Spark\346\220\255\345\273\272\346\272\220\347\240\201\345\210\206\346\236\220\347\216\257\345\242\203\351\227\256\351\242\230\345\210\206\346\236\220.md" "b/_drafts/Java/Eclipse+Spark\346\220\255\345\273\272\346\272\220\347\240\201\345\210\206\346\236\220\347\216\257\345\242\203\351\227\256\351\242\230\345\210\206\346\236\220.md" index 551689e..9fa6e1f 100644 --- "a/_drafts/Java/Eclipse+Spark\346\220\255\345\273\272\346\272\220\347\240\201\345\210\206\346\236\220\347\216\257\345\242\203\351\227\256\351\242\230\345\210\206\346\236\220.md" +++ "b/_drafts/Java/Eclipse+Spark\346\220\255\345\273\272\346\272\220\347\240\201\345\210\206\346\236\220\347\216\257\345\242\203\351\227\256\351\242\230\345\210\206\346\236\220.md" @@ -1,9 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - # Scala IDE complains about ‘... is cross-compiled with an incompatible version of Scala ...’ diff --git "a/_drafts/Java/Eclipse\344\270\255Ant\347\232\204\351\205\215\347\275\256\344\270\216\346\265\213\350\257\225 \350\275\254.md" "b/_drafts/Java/Eclipse\344\270\255Ant\347\232\204\351\205\215\347\275\256\344\270\216\346\265\213\350\257\225 \350\275\254.md" index 6fa5a53..1306fc1 100644 --- "a/_drafts/Java/Eclipse\344\270\255Ant\347\232\204\351\205\215\347\275\256\344\270\216\346\265\213\350\257\225 \350\275\254.md" +++ "b/_drafts/Java/Eclipse\344\270\255Ant\347\232\204\351\205\215\347\275\256\344\270\216\346\265\213\350\257\225 \350\275\254.md" @@ -1,9 +1,3 @@ -欢迎关注我的社交账号: - -博客园地址: http://www.cnblogs.com/jiangxinnju/p/4781259.html -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - Ant是Java平台下非常棒的批处理命令执行程序,能非常方便地自动完成编译,测试,打包,部署等等一系列任务,大大提高开发效率。如果你现在还没有开始使用Ant,那就要赶快开始学习使用,使自己的开发水平上一个新台阶。Eclipse中已经集成了Ant,我们可以直接在Eclipse中运行Ant。以前面建立的Hello工程为例,创建以下目录结构: diff --git "a/_drafts/Java/Eclipse\345\205\250\351\235\242\346\217\220\351\200\237\345\260\217\346\212\200\345\267\247.md" "b/_drafts/Java/Eclipse\345\205\250\351\235\242\346\217\220\351\200\237\345\260\217\346\212\200\345\267\247.md" index a11f620..d0efb2d 100644 --- "a/_drafts/Java/Eclipse\345\205\250\351\235\242\346\217\220\351\200\237\345\260\217\346\212\200\345\267\247.md" +++ "b/_drafts/Java/Eclipse\345\205\250\351\235\242\346\217\220\351\200\237\345\260\217\346\212\200\345\267\247.md" @@ -1,12 +1,5 @@ 转自:http://rongmayisheng.com/post/eclipse%E5%85%A8%E9%9D%A2%E6%8F%90%E9%80%9F -欢迎关注我的社交账号: - -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - - 你是否经常在等待eclipse的一些操作完成? 如果你看到这里,说明答案是yes。如果你苦于eclipse中响应很慢的功能,并且想给eclipse提速让开发更舒服些,就请看看下面的内容。 diff --git "a/_drafts/Java/Eclipse\347\233\270\345\205\263\351\227\256\351\242\230.md" "b/_drafts/Java/Eclipse\347\233\270\345\205\263\351\227\256\351\242\230.md" index 8a55e32..61eb505 100644 --- "a/_drafts/Java/Eclipse\347\233\270\345\205\263\351\227\256\351\242\230.md" +++ "b/_drafts/Java/Eclipse\347\233\270\345\205\263\351\227\256\351\242\230.md" @@ -1,7 +1,3 @@ -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - ## MANIFEST.MF文件 diff --git "a/_drafts/Java/Eclipse\350\277\234\347\250\213\350\260\203\350\257\225\345\207\272\347\216\260\342\200\234JDWP Transport dt_socket failed to initialize\342\200\235\347\232\204\350\247\243\345\206\263\346\226\271\346\241\210.md" "b/_drafts/Java/Eclipse\350\277\234\347\250\213\350\260\203\350\257\225\345\207\272\347\216\260\342\200\234JDWP Transport dt_socket failed to initialize\342\200\235\347\232\204\350\247\243\345\206\263\346\226\271\346\241\210.md" index c74e66b..1817f73 100644 --- "a/_drafts/Java/Eclipse\350\277\234\347\250\213\350\260\203\350\257\225\345\207\272\347\216\260\342\200\234JDWP Transport dt_socket failed to initialize\342\200\235\347\232\204\350\247\243\345\206\263\346\226\271\346\241\210.md" +++ "b/_drafts/Java/Eclipse\350\277\234\347\250\213\350\260\203\350\257\225\345\207\272\347\216\260\342\200\234JDWP Transport dt_socket failed to initialize\342\200\235\347\232\204\350\247\243\345\206\263\346\226\271\346\241\210.md" @@ -1,8 +1,3 @@ -欢迎关注我的社交账号: - -博客园地址: http://www.cnblogs.com/jiangxinnju/p/4781259.html -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju 工作中经常需要使用Eclipse远程连接Tomcat,调试Web应用程序,关于如何进行远程调试,本文不再赘述,可以参考下面的文章: diff --git "a/_drafts/Java/FindBugs\350\257\246\350\247\243.md" "b/_drafts/Java/FindBugs\350\257\246\350\247\243.md" index 44ea32f..a365c2f 100644 --- "a/_drafts/Java/FindBugs\350\257\246\350\247\243.md" +++ "b/_drafts/Java/FindBugs\350\257\246\350\247\243.md" @@ -1,9 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - ## Find bugs误报告警的消除方法 diff --git "a/_drafts/Java/HBase\344\273\213\347\273\215.md" "b/_drafts/Java/HBase\344\273\213\347\273\215.md" index fb16916..40e9600 100644 --- "a/_drafts/Java/HBase\344\273\213\347\273\215.md" +++ "b/_drafts/Java/HBase\344\273\213\347\273\215.md" @@ -1,10 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - - 转自:http://jiajun.iteye.com/blog/899632 diff --git "a/_drafts/Java/JUnit org.junit.runner.Request.classWithoutSuiteMethod\350\247\243\345\206\263\346\226\271\346\263\225.md" "b/_drafts/Java/JUnit org.junit.runner.Request.classWithoutSuiteMethod\350\247\243\345\206\263\346\226\271\346\263\225.md" index 132b6f0..d32f600 100644 --- "a/_drafts/Java/JUnit org.junit.runner.Request.classWithoutSuiteMethod\350\247\243\345\206\263\346\226\271\346\263\225.md" +++ "b/_drafts/Java/JUnit org.junit.runner.Request.classWithoutSuiteMethod\350\247\243\345\206\263\346\226\271\346\263\225.md" @@ -1,9 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - ```java java.lang.NoSuchMethodError: org.junit.runner.Request.classWithoutSuiteMethod(Ljava/lang/Class;)Lorg/junit/runner/Request; diff --git "a/_drafts/Java/Java\346\235\202\351\241\271.md" "b/_drafts/Java/Java\346\235\202\351\241\271.md" index 0bad7d1..b0a7486 100644 --- "a/_drafts/Java/Java\346\235\202\351\241\271.md" +++ "b/_drafts/Java/Java\346\235\202\351\241\271.md" @@ -1,10 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - - # JDK diff --git "a/_drafts/Java/Java\350\277\234\347\250\213\350\260\203\350\257\225\344\273\243\347\240\201\344\270\215\344\270\200\350\207\264\351\227\256\351\242\230\346\261\207\346\200\273.md" "b/_drafts/Java/Java\350\277\234\347\250\213\350\260\203\350\257\225\344\273\243\347\240\201\344\270\215\344\270\200\350\207\264\351\227\256\351\242\230\346\261\207\346\200\273.md" index 0068b75..5c93951 100644 --- "a/_drafts/Java/Java\350\277\234\347\250\213\350\260\203\350\257\225\344\273\243\347\240\201\344\270\215\344\270\200\350\207\264\351\227\256\351\242\230\346\261\207\346\200\273.md" +++ "b/_drafts/Java/Java\350\277\234\347\250\213\350\260\203\350\257\225\344\273\243\347\240\201\344\270\215\344\270\200\350\207\264\351\227\256\351\242\230\346\261\207\346\200\273.md" @@ -1,8 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju Java(Eclipse IDE)远程调试Tomcat容器中的代码,经常出现两端代码不一致的情况,下面针对之前出现过的问题进行汇总,作为以后快速排查的依据。 diff --git a/_drafts/Java/Peer Code Reviews Made Easy with Eclipse Plug-In.md b/_drafts/Java/Peer Code Reviews Made Easy with Eclipse Plug-In.md index 7cfdf14..b6e25e4 100644 --- a/_drafts/Java/Peer Code Reviews Made Easy with Eclipse Plug-In.md +++ b/_drafts/Java/Peer Code Reviews Made Easy with Eclipse Plug-In.md @@ -1,9 +1,3 @@ -欢迎关注我的社交账号: - -博客园地址: http://www.cnblogs.com/jiangxinnju/p/4781259.html -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - * Origin Article: Peer Code Reviews Made Easy with Eclipse Plug-In * Origin Author: John Ferguson Smart diff --git "a/_drafts/Java/ServletInputStream\347\232\204\351\207\215\345\244\215\350\257\273\345\217\226\357\274\210\345\244\232\346\254\241\350\257\273\345\217\226\357\274\211\357\274\210\350\275\254\357\274\211.md" "b/_drafts/Java/ServletInputStream\347\232\204\351\207\215\345\244\215\350\257\273\345\217\226\357\274\210\345\244\232\346\254\241\350\257\273\345\217\226\357\274\211\357\274\210\350\275\254\357\274\211.md" index 7ee2018..17d62a5 100644 --- "a/_drafts/Java/ServletInputStream\347\232\204\351\207\215\345\244\215\350\257\273\345\217\226\357\274\210\345\244\232\346\254\241\350\257\273\345\217\226\357\274\211\357\274\210\350\275\254\357\274\211.md" +++ "b/_drafts/Java/ServletInputStream\347\232\204\351\207\215\345\244\215\350\257\273\345\217\226\357\274\210\345\244\232\346\254\241\350\257\273\345\217\226\357\274\211\357\274\210\350\275\254\357\274\211.md" @@ -1,8 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju 在使用Servlet进行Web开发的时候,有时候为了增加必要的业务处理而又不想修改现有的程序,往往采用Filter。这样在各个Filter中可能都要读取ServletInputStream流的内容,而ServletInputStream却只能读一次,这时候必须备份HttpServleRequest。 diff --git "a/_drafts/Java/Spring\346\241\206\346\236\266\347\232\204\345\217\215\345\272\217\345\210\227\345\214\226\350\277\234\347\250\213\344\273\243\347\240\201\346\211\247\350\241\214\346\274\217\346\264\236\345\210\206\346\236\220\357\274\210\350\275\254\357\274\211.md" "b/_drafts/Java/Spring\346\241\206\346\236\266\347\232\204\345\217\215\345\272\217\345\210\227\345\214\226\350\277\234\347\250\213\344\273\243\347\240\201\346\211\247\350\241\214\346\274\217\346\264\236\345\210\206\346\236\220\357\274\210\350\275\254\357\274\211.md" index 73b746b..22d7c8f 100644 --- "a/_drafts/Java/Spring\346\241\206\346\236\266\347\232\204\345\217\215\345\272\217\345\210\227\345\214\226\350\277\234\347\250\213\344\273\243\347\240\201\346\211\247\350\241\214\346\274\217\346\264\236\345\210\206\346\236\220\357\274\210\350\275\254\357\274\211.md" +++ "b/_drafts/Java/Spring\346\241\206\346\236\266\347\232\204\345\217\215\345\272\217\345\210\227\345\214\226\350\277\234\347\250\213\344\273\243\347\240\201\346\211\247\350\241\214\346\274\217\346\264\236\345\210\206\346\236\220\357\274\210\350\275\254\357\274\211.md" @@ -1,9 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - ## 漏洞介绍 国外的研究人员zero thoughts发现了一个Spring框架的反序列化远程代码执行漏洞。 diff --git "a/_drafts/Java/eclipse\346\217\222\344\273\266\345\234\250\347\272\277\345\217\221\345\270\203\345\217\221\345\270\203\345\222\214\347\211\210\346\234\254\346\233\264\346\226\260(web site) \350\275\254.md" "b/_drafts/Java/eclipse\346\217\222\344\273\266\345\234\250\347\272\277\345\217\221\345\270\203\345\217\221\345\270\203\345\222\214\347\211\210\346\234\254\346\233\264\346\226\260(web site) \350\275\254.md" index 6a7b214..b1a185e 100644 --- "a/_drafts/Java/eclipse\346\217\222\344\273\266\345\234\250\347\272\277\345\217\221\345\270\203\345\217\221\345\270\203\345\222\214\347\211\210\346\234\254\346\233\264\346\226\260(web site) \350\275\254.md" +++ "b/_drafts/Java/eclipse\346\217\222\344\273\266\345\234\250\347\272\277\345\217\221\345\270\203\345\217\221\345\270\203\345\222\214\347\211\210\346\234\254\346\233\264\346\226\260(web site) \350\275\254.md" @@ -1,8 +1,3 @@ -欢迎关注我的社交账号: - -博客园地址: http://www.cnblogs.com/jiangxinnju/p/4781259.html -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju eclipse插件在线发布发布和版本更新(web site) diff --git "a/_drafts/Java/org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter\344\270\216org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.md" "b/_drafts/Java/org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter\344\270\216org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.md" index 1544447..fe963c5 100644 --- "a/_drafts/Java/org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter\344\270\216org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.md" +++ "b/_drafts/Java/org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter\344\270\216org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.md" @@ -1,8 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju 使用Eclipse启动Maven+Struts项目报错,报错日志如下: diff --git "a/_drafts/Java/package-info.java\346\226\207\344\273\266\350\257\246\350\247\243.md" "b/_drafts/Java/package-info.java\346\226\207\344\273\266\350\257\246\350\247\243.md" index 4e111c3..4af7d54 100644 --- "a/_drafts/Java/package-info.java\346\226\207\344\273\266\350\257\246\350\247\243.md" +++ "b/_drafts/Java/package-info.java\346\226\207\344\273\266\350\257\246\350\247\243.md" @@ -1,8 +1,3 @@ -欢迎关注我的社交账号: - -博客园地址: http://www.cnblogs.com/jiangxinnju/p/4781259.html -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju # pacakge-info.java介绍 diff --git "a/_drafts/Java/\345\210\251\347\224\250Spring\344\270\255\345\220\214\345\220\215Bean\347\233\270\344\272\222\350\246\206\347\233\226\347\232\204\347\211\271\346\200\247\357\274\214\345\256\232\345\210\266\345\271\263\345\217\260\347\232\204\347\261\273\345\206\205\345\256\271\343\200\202.md" "b/_drafts/Java/\345\210\251\347\224\250Spring\344\270\255\345\220\214\345\220\215Bean\347\233\270\344\272\222\350\246\206\347\233\226\347\232\204\347\211\271\346\200\247\357\274\214\345\256\232\345\210\266\345\271\263\345\217\260\347\232\204\347\261\273\345\206\205\345\256\271\343\200\202.md" index 8a43db9..ce95dcc 100644 --- "a/_drafts/Java/\345\210\251\347\224\250Spring\344\270\255\345\220\214\345\220\215Bean\347\233\270\344\272\222\350\246\206\347\233\226\347\232\204\347\211\271\346\200\247\357\274\214\345\256\232\345\210\266\345\271\263\345\217\260\347\232\204\347\261\273\345\206\205\345\256\271\343\200\202.md" +++ "b/_drafts/Java/\345\210\251\347\224\250Spring\344\270\255\345\220\214\345\220\215Bean\347\233\270\344\272\222\350\246\206\347\233\226\347\232\204\347\211\271\346\200\247\357\274\214\345\256\232\345\210\266\345\271\263\345\217\260\347\232\204\347\261\273\345\206\205\345\256\271\343\200\202.md" @@ -1,8 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju 今天处理了一个问题,J2EE项目依赖了底层平台的功能,平台JAR包中配置了一个Bean,对应的实现类也在该平台JAR包中,由于Bean的配置不是懒加载的,所以在Tomcat容器启动时就会调用该Bean对应实现类中的init方法,但是该方法会对我们的业务产生副作用。现在想屏蔽这种副作用,我们肯定不能要求底层平台去修改代码,去除该Bean。所以考虑采取hack的方法解决。 diff --git "a/_drafts/Java/\345\211\224\351\231\244eclipse\347\232\204configuration\347\233\256\345\275\225[\350\275\254].md" "b/_drafts/Java/\345\211\224\351\231\244eclipse\347\232\204configuration\347\233\256\345\275\225[\350\275\254].md" index 4a3757a..794cfe6 100644 --- "a/_drafts/Java/\345\211\224\351\231\244eclipse\347\232\204configuration\347\233\256\345\275\225[\350\275\254].md" +++ "b/_drafts/Java/\345\211\224\351\231\244eclipse\347\232\204configuration\347\233\256\345\275\225[\350\275\254].md" @@ -1,9 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - eclipse 3.4以前的版本,如果出现什么问题了,一般都会选择删除eclipse安装目录下configuration目录下除了config.ini之外的所有文件,同时在删除eclipse工作空间中的.metadata目录,这样就删除掉了eclipse的所有的配置信息,重新得到了一个类似全新安装的eclipse了,通常这种方法能够解决很多eclipse中遇到的错误。 但是,eclipse 3.4 情况就不一样了,一个全新的eclipse/configuration目录下不再是只有一个config.ini文件,另外多了三个目录: diff --git "a/_drafts/Java/\345\246\202\344\275\225\345\234\250\345\244\247\351\207\217jar\345\214\205\344\270\255\346\220\234\347\264\242\347\211\271\345\256\232\345\255\227\347\254\246.md" "b/_drafts/Java/\345\246\202\344\275\225\345\234\250\345\244\247\351\207\217jar\345\214\205\344\270\255\346\220\234\347\264\242\347\211\271\345\256\232\345\255\227\347\254\246.md" index d6d9278..d0326b4 100644 --- "a/_drafts/Java/\345\246\202\344\275\225\345\234\250\345\244\247\351\207\217jar\345\214\205\344\270\255\346\220\234\347\264\242\347\211\271\345\256\232\345\255\227\347\254\246.md" +++ "b/_drafts/Java/\345\246\202\344\275\225\345\234\250\345\244\247\351\207\217jar\345\214\205\344\270\255\346\220\234\347\264\242\347\211\271\345\256\232\345\255\227\347\254\246.md" @@ -1,9 +1,3 @@ -欢迎关注我的社交账号: - -博客园地址: http://www.cnblogs.com/jiangxinnju/p/4781259.html -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju -邮箱: jiangxinnju@163.com 工作中定位某些问题时需要在jar包中搜索某些特定的字符。如果jar包数量比较少可以直接使用JD-GUI等反编译软件导出源码,但是如果jar包数目庞大,这种方式工作量就太大了。 diff --git "a/_drafts/Java/\345\246\202\344\275\225\347\274\226\345\206\231\350\267\250\345\271\263\345\217\260\347\232\204Java\344\273\243\347\240\201.md" "b/_drafts/Java/\345\246\202\344\275\225\347\274\226\345\206\231\350\267\250\345\271\263\345\217\260\347\232\204Java\344\273\243\347\240\201.md" index db4880b..f4d278e 100644 --- "a/_drafts/Java/\345\246\202\344\275\225\347\274\226\345\206\231\350\267\250\345\271\263\345\217\260\347\232\204Java\344\273\243\347\240\201.md" +++ "b/_drafts/Java/\345\246\202\344\275\225\347\274\226\345\206\231\350\267\250\345\271\263\345\217\260\347\232\204Java\344\273\243\347\240\201.md" @@ -1,9 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - 使用Java语言编写应用程序最大的优点在于“一次编译,处处运行”,然而这并不是说所有的Java程序都具有跨平台的特性,事实上,相当一部分的Java程序是不能在别的操作系统上正确运行的,那么如何才能编写一个真正的跨平台的Java程序呢? 下面是在编写跨平台的Java程序是需要注意的一些事情: diff --git "a/_drafts/Java/\345\246\202\344\275\225\347\274\226\350\257\221Apache Hadoop2.2.0\346\272\220\344\273\243\347\240\201.md" "b/_drafts/Java/\345\246\202\344\275\225\347\274\226\350\257\221Apache Hadoop2.2.0\346\272\220\344\273\243\347\240\201.md" index 134a409..506f740 100644 --- "a/_drafts/Java/\345\246\202\344\275\225\347\274\226\350\257\221Apache Hadoop2.2.0\346\272\220\344\273\243\347\240\201.md" +++ "b/_drafts/Java/\345\246\202\344\275\225\347\274\226\350\257\221Apache Hadoop2.2.0\346\272\220\344\273\243\347\240\201.md" @@ -1,11 +1,5 @@ 转自(原文图片已丢失,本文修复图片,重新排版,并更正部分原文错误):http://www.superwu.cn/2013/12/26/913 -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - Hadoop2的学习资料很少,只有官网的少数文档。如果想更深入的研究hadoop2,除了仅看官网的文档外,还要学习如何看源码,通过不断的调试跟踪源码,学习hadoop的运行机制。 # 1.安装CentOS diff --git "a/_drafts/Linux/Linux\344\270\213\345\256\211\350\243\205\346\234\200\346\226\260\347\232\204Eclipse.md" "b/_drafts/Linux/Linux\344\270\213\345\256\211\350\243\205\346\234\200\346\226\260\347\232\204Eclipse.md" index 9319914..7a913d6 100644 --- "a/_drafts/Linux/Linux\344\270\213\345\256\211\350\243\205\346\234\200\346\226\260\347\232\204Eclipse.md" +++ "b/_drafts/Linux/Linux\344\270\213\345\256\211\350\243\205\346\234\200\346\226\260\347\232\204Eclipse.md" @@ -1,9 +1,3 @@ -欢迎关注我的社交账号: - -博客园地址: http://www.cnblogs.com/jiangxinnju/p/4781259.html -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - 测试环境: diff --git "a/_drafts/Linux/Linux\345\216\213\347\274\251\344\270\216\350\247\243\345\216\213\345\270\270\347\224\250\345\221\275\344\273\244.md" "b/_drafts/Linux/Linux\345\216\213\347\274\251\344\270\216\350\247\243\345\216\213\345\270\270\347\224\250\345\221\275\344\273\244.md" index 11ecdcf..df339e6 100644 --- "a/_drafts/Linux/Linux\345\216\213\347\274\251\344\270\216\350\247\243\345\216\213\345\270\270\347\224\250\345\221\275\344\273\244.md" +++ "b/_drafts/Linux/Linux\345\216\213\347\274\251\344\270\216\350\247\243\345\216\213\345\270\270\347\224\250\345\221\275\344\273\244.md" @@ -1,8 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju ```shell diff --git "a/_drafts/Linux/Linux\345\277\253\346\215\267\351\224\256.md" "b/_drafts/Linux/Linux\345\277\253\346\215\267\351\224\256.md" index 8d5a312..042bf68 100644 --- "a/_drafts/Linux/Linux\345\277\253\346\215\267\351\224\256.md" +++ "b/_drafts/Linux/Linux\345\277\253\346\215\267\351\224\256.md" @@ -1,8 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju ## Shell 快捷键 diff --git "a/_drafts/Linux/ssh\347\233\270\345\205\263\345\216\237\347\220\206\345\255\246\344\271\240\344\270\216\345\270\270\350\247\201\351\224\231\350\257\257\346\200\273\347\273\223.md" "b/_drafts/Linux/ssh\347\233\270\345\205\263\345\216\237\347\220\206\345\255\246\344\271\240\344\270\216\345\270\270\350\247\201\351\224\231\350\257\257\346\200\273\347\273\223.md" index 9e59308..c3e36ec 100644 --- "a/_drafts/Linux/ssh\347\233\270\345\205\263\345\216\237\347\220\206\345\255\246\344\271\240\344\270\216\345\270\270\350\247\201\351\224\231\350\257\257\346\200\273\347\273\223.md" +++ "b/_drafts/Linux/ssh\347\233\270\345\205\263\345\216\237\347\220\206\345\255\246\344\271\240\344\270\216\345\270\270\350\247\201\351\224\231\350\257\257\346\200\273\347\273\223.md" @@ -1,9 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - ## SSH基本原理与运用 diff --git "a/_drafts/Linux/\351\270\237\345\223\245\347\232\204linux\347\247\201\346\210\277\350\217\234\345\213\230\350\257\257\350\241\250.md" "b/_drafts/Linux/\351\270\237\345\223\245\347\232\204linux\347\247\201\346\210\277\350\217\234\345\213\230\350\257\257\350\241\250.md" index ccadf08..e9fe2b1 100644 --- "a/_drafts/Linux/\351\270\237\345\223\245\347\232\204linux\347\247\201\346\210\277\350\217\234\345\213\230\350\257\257\350\241\250.md" +++ "b/_drafts/Linux/\351\270\237\345\223\245\347\232\204linux\347\247\201\346\210\277\350\217\234\345\213\230\350\257\257\350\241\250.md" @@ -1,7 +1,3 @@ -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - 鸟哥的Linux私房菜基础学习篇(第三版)简体中文勘误表(人民邮电出版社) 简体中文版书籍资料: diff --git "a/_drafts/Others/Rdseed\344\270\216SAC\347\232\204\345\256\211\350\243\205.md" "b/_drafts/Others/Rdseed\344\270\216SAC\347\232\204\345\256\211\350\243\205.md" index 45067ee..872df55 100644 --- "a/_drafts/Others/Rdseed\344\270\216SAC\347\232\204\345\256\211\350\243\205.md" +++ "b/_drafts/Others/Rdseed\344\270\216SAC\347\232\204\345\256\211\350\243\205.md" @@ -1,8 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju ## Rdseed的安装 diff --git "a/_drafts/Others/SVN+Apache\345\237\237\347\224\250\346\210\267\350\256\244\350\257\201\351\205\215\347\275\256\346\226\271\346\263\225_Windows(\350\275\254\357\274\214\351\207\215\346\226\260\346\216\222\347\211\210\357\274\214\351\203\250\345\210\206\345\206\205\345\256\271\346\233\264\346\226\260\344\274\230\345\214\226).md" "b/_drafts/Others/SVN+Apache\345\237\237\347\224\250\346\210\267\350\256\244\350\257\201\351\205\215\347\275\256\346\226\271\346\263\225_Windows(\350\275\254\357\274\214\351\207\215\346\226\260\346\216\222\347\211\210\357\274\214\351\203\250\345\210\206\345\206\205\345\256\271\346\233\264\346\226\260\344\274\230\345\214\226).md" index 4d1b2a1..df51a06 100644 --- "a/_drafts/Others/SVN+Apache\345\237\237\347\224\250\346\210\267\350\256\244\350\257\201\351\205\215\347\275\256\346\226\271\346\263\225_Windows(\350\275\254\357\274\214\351\207\215\346\226\260\346\216\222\347\211\210\357\274\214\351\203\250\345\210\206\345\206\205\345\256\271\346\233\264\346\226\260\344\274\230\345\214\226).md" +++ "b/_drafts/Others/SVN+Apache\345\237\237\347\224\250\346\210\267\350\256\244\350\257\201\351\205\215\347\275\256\346\226\271\346\263\225_Windows(\350\275\254\357\274\214\351\207\215\346\226\260\346\216\222\347\211\210\357\274\214\351\203\250\345\210\206\345\206\205\345\256\271\346\233\264\346\226\260\344\274\230\345\214\226).md" @@ -1,8 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju # 背景说明 diff --git "a/_drafts/Others/VIM\345\270\270\350\247\201\347\224\250\346\263\225\346\200\273\347\273\223.md" "b/_drafts/Others/VIM\345\270\270\350\247\201\347\224\250\346\263\225\346\200\273\347\273\223.md" index dadba7f..fc33f0b 100644 --- "a/_drafts/Others/VIM\345\270\270\350\247\201\347\224\250\346\263\225\346\200\273\347\273\223.md" +++ "b/_drafts/Others/VIM\345\270\270\350\247\201\347\224\250\346\263\225\346\200\273\347\273\223.md" @@ -1,8 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju ## vim中光标如何回到上一次位置 diff --git "a/_drafts/Others/VirtualBox\347\233\270\345\205\263\351\227\256\351\242\230\346\200\273\347\273\223.md" "b/_drafts/Others/VirtualBox\347\233\270\345\205\263\351\227\256\351\242\230\346\200\273\347\273\223.md" index ec01b2a..3248873 100644 --- "a/_drafts/Others/VirtualBox\347\233\270\345\205\263\351\227\256\351\242\230\346\200\273\347\273\223.md" +++ "b/_drafts/Others/VirtualBox\347\233\270\345\205\263\351\227\256\351\242\230\346\200\273\347\273\223.md" @@ -1,10 +1,3 @@ -欢迎关注我的社交账号: - -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - * VirtualBox Images: http://www.osboxes.org/virtualbox-images * VirtualBoxes – Free VirtualBox® Images: https://virtualboxes.org/images diff --git "a/_drafts/Others/Windows\345\271\263\345\217\260\344\270\213\345\256\211\350\243\205Eclipse\346\217\222\344\273\266\357\274\214\345\274\200\345\217\221Hadoop\345\272\224\347\224\250.md" "b/_drafts/Others/Windows\345\271\263\345\217\260\344\270\213\345\256\211\350\243\205Eclipse\346\217\222\344\273\266\357\274\214\345\274\200\345\217\221Hadoop\345\272\224\347\224\250.md" index 895e0d8..e256789 100644 --- "a/_drafts/Others/Windows\345\271\263\345\217\260\344\270\213\345\256\211\350\243\205Eclipse\346\217\222\344\273\266\357\274\214\345\274\200\345\217\221Hadoop\345\272\224\347\224\250.md" +++ "b/_drafts/Others/Windows\345\271\263\345\217\260\344\270\213\345\256\211\350\243\205Eclipse\346\217\222\344\273\266\357\274\214\345\274\200\345\217\221Hadoop\345\272\224\347\224\250.md" @@ -1,9 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - # 安装插件 diff --git "a/_drafts/Others/Windows\346\227\245\345\277\227\346\237\245\347\234\213\345\267\245\345\205\267\345\220\210\351\233\206.md" "b/_drafts/Others/Windows\346\227\245\345\277\227\346\237\245\347\234\213\345\267\245\345\205\267\345\220\210\351\233\206.md" index e776637..431df56 100644 --- "a/_drafts/Others/Windows\346\227\245\345\277\227\346\237\245\347\234\213\345\267\245\345\205\267\345\220\210\351\233\206.md" +++ "b/_drafts/Others/Windows\346\227\245\345\277\227\346\237\245\347\234\213\345\267\245\345\205\267\345\220\210\351\233\206.md" @@ -1,10 +1,3 @@ -欢迎关注我的社交账号: - -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - -希望可以和大家多多交流。 平时在Linux下查看日志,使用tail、grep、find等命令还比较方便,后来需要在Windows中处理一些问题,发现缺少类似的功能,比如tailf实时输出,于是在网上收集了一些相关的小工具,希望能够帮助到大家。 diff --git "a/_drafts/Others/openmpi\345\207\272\347\216\260Segmentation Fault\350\200\214\347\273\210\346\255\242\350\277\220\347\256\227.md" "b/_drafts/Others/openmpi\345\207\272\347\216\260Segmentation Fault\350\200\214\347\273\210\346\255\242\350\277\220\347\256\227.md" index 9c74652..07f185a 100644 --- "a/_drafts/Others/openmpi\345\207\272\347\216\260Segmentation Fault\350\200\214\347\273\210\346\255\242\350\277\220\347\256\227.md" +++ "b/_drafts/Others/openmpi\345\207\272\347\216\260Segmentation Fault\350\200\214\347\273\210\346\255\242\350\277\220\347\256\227.md" @@ -1,10 +1,3 @@ -欢迎关注我的社交账号: - -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - ``` mpirun noticed that process rank 1 with PID 3716 on node localhost.localdomain exited on signal 11 (Segmentation fault). diff --git "a/_drafts/Others/tcpdump\346\215\225\346\215\211\346\240\267\344\276\213.md" "b/_drafts/Others/tcpdump\346\215\225\346\215\211\346\240\267\344\276\213.md" index 2b24dac..c3e0c17 100644 --- "a/_drafts/Others/tcpdump\346\215\225\346\215\211\346\240\267\344\276\213.md" +++ "b/_drafts/Others/tcpdump\346\215\225\346\215\211\346\240\267\344\276\213.md" @@ -1,9 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - ```shell diff --git "a/_drafts/Others/\344\270\200\344\270\252\347\224\261\344\272\216\347\275\221\347\273\234\351\227\256\351\242\230\345\257\274\350\207\264\347\232\204\346\234\215\345\212\241\346\227\240\346\263\225\344\275\277\347\224\250\342\200\224\342\200\224\350\260\203\350\257\225\350\277\207\347\250\213\346\200\273\347\273\223.md" "b/_drafts/Others/\344\270\200\344\270\252\347\224\261\344\272\216\347\275\221\347\273\234\351\227\256\351\242\230\345\257\274\350\207\264\347\232\204\346\234\215\345\212\241\346\227\240\346\263\225\344\275\277\347\224\250\342\200\224\342\200\224\350\260\203\350\257\225\350\277\207\347\250\213\346\200\273\347\273\223.md" index 5b93218..aea131b 100644 --- "a/_drafts/Others/\344\270\200\344\270\252\347\224\261\344\272\216\347\275\221\347\273\234\351\227\256\351\242\230\345\257\274\350\207\264\347\232\204\346\234\215\345\212\241\346\227\240\346\263\225\344\275\277\347\224\250\342\200\224\342\200\224\350\260\203\350\257\225\350\277\207\347\250\213\346\200\273\347\273\223.md" +++ "b/_drafts/Others/\344\270\200\344\270\252\347\224\261\344\272\216\347\275\221\347\273\234\351\227\256\351\242\230\345\257\274\350\207\264\347\232\204\346\234\215\345\212\241\346\227\240\346\263\225\344\275\277\347\224\250\342\200\224\342\200\224\350\260\203\350\257\225\350\277\207\347\250\213\346\200\273\347\273\223.md" @@ -1,9 +1,3 @@ -欢迎和大家交流技术相关问题: - -* 邮箱: jiangxinnju@163.com -* 博客园地址: http://www.cnblogs.com/jiangxinnju -* GitHub地址: https://github.com/jiangxincode -* 知乎地址: https://www.zhihu.com/people/jiangxinnju 最近测试经常让我处理一个问题,就是网站服务无法使用,通过Windows跳转机,使用Chrome浏览器访问服务首页,页面什么也没有展示,使用Chrome的F12调试窗口,发现并没有和服务端SLB的任何交互请求。查看后台门户的相关进程,均正常运行。查看后台日志,没有发现明显的错误。访问SLB的页面管理系统,发现所需服务均正常注册。定位无果后所以尝试重启,不定次数重启之后,清除浏览器缓存,继续登录,发现服务又能够正常访问。但是再次重启后,问题复现。 diff --git "a/_drafts/Others/\344\275\277\347\224\250PowerShell\347\256\200\345\214\226\346\210\221\347\232\204\345\267\245\344\275\234.md" "b/_drafts/Others/\344\275\277\347\224\250PowerShell\347\256\200\345\214\226\346\210\221\347\232\204\345\267\245\344\275\234.md" index 403e35a..1480846 100644 --- "a/_drafts/Others/\344\275\277\347\224\250PowerShell\347\256\200\345\214\226\346\210\221\347\232\204\345\267\245\344\275\234.md" +++ "b/_drafts/Others/\344\275\277\347\224\250PowerShell\347\256\200\345\214\226\346\210\221\347\232\204\345\267\245\344\275\234.md" @@ -1,8 +1,3 @@ -欢迎关注我的社交账号: - -博客园地址: http://www.cnblogs.com/jiangxinnju/p/4781259.html -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju 在这几年的编程学习和工作中,我积累的许多轻量级的小工具,比如Everything,BeyondCompare,BatchRename、HperSnap等等,这些软件都是绿色软件,无需安装,即使重装系统也可以很容易的迁移。但是由于工具比较多,不可能在桌面上为这些工具全部设置快捷方式,于是只能使用命令行进行调用。程序员们应该都知道,如果想要在cmd或者powershell中调用这些小工具,就要把这些工具的可执行文件的所在目录添加到系统环境变量Path之中。但是这样手工去添加太麻烦了,因为要添加的目录比较多,而且之后如果还想加入新的工具就必须继续设置环境变量,最重要的一点是每次重装系统还要重新设置一遍。作为一个程序员怎么去做这么笨的事情呢?于是我写了一个powershell配置脚本,让powershell每次启动时都去读该脚本,设置环境变量。 首先介绍一下我的工具集的结构: diff --git "a/_drafts/Others/\345\205\263\344\272\216\350\256\260\345\275\225\346\227\245\345\277\227\347\232\204\345\207\240\344\270\252\345\260\217\345\277\203\345\276\227.md" "b/_drafts/Others/\345\205\263\344\272\216\350\256\260\345\275\225\346\227\245\345\277\227\347\232\204\345\207\240\344\270\252\345\260\217\345\277\203\345\276\227.md" index 11a9fe5..e13459e 100644 --- "a/_drafts/Others/\345\205\263\344\272\216\350\256\260\345\275\225\346\227\245\345\277\227\347\232\204\345\207\240\344\270\252\345\260\217\345\277\203\345\276\227.md" +++ "b/_drafts/Others/\345\205\263\344\272\216\350\256\260\345\275\225\346\227\245\345\277\227\347\232\204\345\207\240\344\270\252\345\260\217\345\277\203\345\276\227.md" @@ -1,8 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju 如何记录好日志其实是个很值得探讨的事情,下面两篇文章介绍了一些基本的原则: diff --git "a/_drafts/Others/\345\210\206\350\257\215\345\267\245\345\205\267\346\257\224\350\276\203\357\274\210\350\275\254\357\274\211.md" "b/_drafts/Others/\345\210\206\350\257\215\345\267\245\345\205\267\346\257\224\350\276\203\357\274\210\350\275\254\357\274\211.md" index 01906f9..826d337 100644 --- "a/_drafts/Others/\345\210\206\350\257\215\345\267\245\345\205\267\346\257\224\350\276\203\357\274\210\350\275\254\357\274\211.md" +++ "b/_drafts/Others/\345\210\206\350\257\215\345\267\245\345\205\267\346\257\224\350\276\203\357\274\210\350\275\254\357\274\211.md" @@ -1,6 +1,3 @@ -* 博客园地址: http://www.cnblogs.com/jiangxinnju -* GitHub地址: https://github.com/jiangxincode -* 知乎地址: https://www.zhihu.com/people/jiangxinnju # IKAnalyzer diff --git "a/_drafts/Others/\345\210\266\344\275\234Aspose CHM\346\226\207\346\241\243\347\232\204\350\277\207\347\250\213\350\256\260\345\275\225.md" "b/_drafts/Others/\345\210\266\344\275\234Aspose CHM\346\226\207\346\241\243\347\232\204\350\277\207\347\250\213\350\256\260\345\275\225.md" index 328ebe1..d782c4e 100644 --- "a/_drafts/Others/\345\210\266\344\275\234Aspose CHM\346\226\207\346\241\243\347\232\204\350\277\207\347\250\213\350\256\260\345\275\225.md" +++ "b/_drafts/Others/\345\210\266\344\275\234Aspose CHM\346\226\207\346\241\243\347\232\204\350\277\207\347\250\213\350\256\260\345\275\225.md" @@ -1,8 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju 最近公司需要使用Aspose组件开发相关内容,但是网上找不到理想的参考文档,官网访问速度也慢的可以。所以打算自己做份CHM文档,做的过程中遇到很多困难,这里记录一下。 第一步是在Aspose官网上把javadoc文档爬取出来,我使用的工具是TeleportPro。爬取的网址是 diff --git "a/_drafts/Others/\345\234\250 Windows \344\270\212\345\256\211\350\243\205 Hadoop \346\225\231\347\250\213\357\274\210\350\275\254\357\274\211.md" "b/_drafts/Others/\345\234\250 Windows \344\270\212\345\256\211\350\243\205 Hadoop \346\225\231\347\250\213\357\274\210\350\275\254\357\274\211.md" index ee93430..4fd0587 100644 --- "a/_drafts/Others/\345\234\250 Windows \344\270\212\345\256\211\350\243\205 Hadoop \346\225\231\347\250\213\357\274\210\350\275\254\357\274\211.md" +++ "b/_drafts/Others/\345\234\250 Windows \344\270\212\345\256\211\350\243\205 Hadoop \346\225\231\347\250\213\357\274\210\350\275\254\357\274\211.md" @@ -1,10 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - - 在 Windows 上安装 Hadoop 教程 diff --git "a/_drafts/Others/\345\234\250\345\267\245\344\275\234\344\270\255\351\201\207\345\210\260\347\232\204\351\227\256\351\242\230.md" "b/_drafts/Others/\345\234\250\345\267\245\344\275\234\344\270\255\351\201\207\345\210\260\347\232\204\351\227\256\351\242\230.md" index b945806..babb72e 100644 --- "a/_drafts/Others/\345\234\250\345\267\245\344\275\234\344\270\255\351\201\207\345\210\260\347\232\204\351\227\256\351\242\230.md" +++ "b/_drafts/Others/\345\234\250\345\267\245\344\275\234\344\270\255\351\201\207\345\210\260\347\232\204\351\227\256\351\242\230.md" @@ -1,8 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju 最近我经常要更改应用中的一些功能,其实要做的事情比较简单,但是也很繁琐,这里记录一下。由于只是实现一些小的功能接口,不会更改网站的显示内容,所以不能或者很难通过网页直接查看,所以我一般是按照下面的步骤进行处理。 diff --git "a/_drafts/Others/\346\270\205\347\220\206\346\227\240\347\224\250\347\232\204CSS\346\240\267\345\274\217\347\232\204\345\207\240\344\270\252\345\267\245\345\205\267\357\274\210\350\275\254\357\274\211.md" "b/_drafts/Others/\346\270\205\347\220\206\346\227\240\347\224\250\347\232\204CSS\346\240\267\345\274\217\347\232\204\345\207\240\344\270\252\345\267\245\345\205\267\357\274\210\350\275\254\357\274\211.md" index 623587a..74124c3 100644 --- "a/_drafts/Others/\346\270\205\347\220\206\346\227\240\347\224\250\347\232\204CSS\346\240\267\345\274\217\347\232\204\345\207\240\344\270\252\345\267\245\345\205\267\357\274\210\350\275\254\357\274\211.md" +++ "b/_drafts/Others/\346\270\205\347\220\206\346\227\240\347\224\250\347\232\204CSS\346\240\267\345\274\217\347\232\204\345\207\240\344\270\252\345\267\245\345\205\267\357\274\210\350\275\254\357\274\211.md" @@ -1,8 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju 在我们写样式的时候,页面的CSS在经历几个版本的修改之后,可能有些样式已经用不到了,或许将某些样式更名了而原来的忘了删除,总之页面中可能存在着一些无用的样式。这些无用的浪费了一些服务器空间和带宽消耗,也会增大我们的维护成本。那么有没有一些办法来清理那些无用的样式呢?今天就让我们来了解一下几个比较有用的工具。 diff --git "a/_drafts/Others/\350\203\275\350\256\251\347\250\213\345\272\217\345\201\232\347\232\204\344\272\213\346\203\205\345\235\232\345\206\263\344\270\215\347\224\250\344\272\272\346\235\245\345\201\232\342\200\224\342\200\224\346\211\271\351\207\217\344\277\256\345\244\215markdownlint MD034\350\255\246\345\221\212.md" "b/_drafts/Others/\350\203\275\350\256\251\347\250\213\345\272\217\345\201\232\347\232\204\344\272\213\346\203\205\345\235\232\345\206\263\344\270\215\347\224\250\344\272\272\346\235\245\345\201\232\342\200\224\342\200\224\346\211\271\351\207\217\344\277\256\345\244\215markdownlint MD034\350\255\246\345\221\212.md" index c6ec4c6..391dc80 100644 --- "a/_drafts/Others/\350\203\275\350\256\251\347\250\213\345\272\217\345\201\232\347\232\204\344\272\213\346\203\205\345\235\232\345\206\263\344\270\215\347\224\250\344\272\272\346\235\245\345\201\232\342\200\224\342\200\224\346\211\271\351\207\217\344\277\256\345\244\215markdownlint MD034\350\255\246\345\221\212.md" +++ "b/_drafts/Others/\350\203\275\350\256\251\347\250\213\345\272\217\345\201\232\347\232\204\344\272\213\346\203\205\345\235\232\345\206\263\344\270\215\347\224\250\344\272\272\346\235\245\345\201\232\342\200\224\342\200\224\346\211\271\351\207\217\344\277\256\345\244\215markdownlint MD034\350\255\246\345\221\212.md" @@ -1,8 +1,3 @@ -欢迎和大家交流技术相关问题: -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju 现在各种编程语言都有自己的lint工具来做静态检查,防止一些低级错误并维持统一的风格。Markdown这样的样式标记语言也不例外,现在大家用的比较多的是markdownlint。该项目开源在github:,当前很多实用markdown语言的项目都使用该工具。 diff --git "a/_drafts/Others/\351\253\230\345\217\257\347\224\250\346\200\247\344\270\255\347\232\204\350\204\221\350\243\202\351\227\256\351\242\230(split-brain problem in HA)(\350\275\254).md" "b/_drafts/Others/\351\253\230\345\217\257\347\224\250\346\200\247\344\270\255\347\232\204\350\204\221\350\243\202\351\227\256\351\242\230(split-brain problem in HA)(\350\275\254).md" index 0277e2b..0149887 100644 --- "a/_drafts/Others/\351\253\230\345\217\257\347\224\250\346\200\247\344\270\255\347\232\204\350\204\221\350\243\202\351\227\256\351\242\230(split-brain problem in HA)(\350\275\254).md" +++ "b/_drafts/Others/\351\253\230\345\217\257\347\224\250\346\200\247\344\270\255\347\232\204\350\204\221\350\243\202\351\227\256\351\242\230(split-brain problem in HA)(\350\275\254).md" @@ -1,10 +1,3 @@ -欢迎关注我的社交账号: - -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - 运行于备用主机上的Heartbeat可以通过以太网连接检测主服务器的运行状态,一旦其无法检测到主服务器的“心跳”则自动接管主服务器的资源。通常情况下,主、备服务器间的心跳连接是一个独立的物理连接,这个连接可以是串行线缆、一个由“交叉线”实现的以太网连接。Heartbeat甚至可同时通过多个物理连接检测主服务器的工作状态,而其只要能通过其中一个连接收到主服务器处于活动状态的信息,就会认为主服务器处于正常状态。从实践经验的角度来说,建议为Heartbeat配置多条独立的物理连接,以避免Heartbeat通信线路本身存在单点故障。 diff --git "a/_posts/the-way-of-learning/2025-01-05-\346\212\225\345\261\217\347\237\245\350\257\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/android/2025-01-05-\346\212\225\345\261\217\347\237\245\350\257\206\345\255\246\344\271\240\344\271\213\350\267\257.md" similarity index 100% rename from "_posts/the-way-of-learning/2025-01-05-\346\212\225\345\261\217\347\237\245\350\257\206\345\255\246\344\271\240\344\271\213\350\267\257.md" rename to "_posts/android/2025-01-05-\346\212\225\345\261\217\347\237\245\350\257\206\345\255\246\344\271\240\344\271\213\350\267\257.md" diff --git a/_posts/others/2024-06-22-Aloys-Build-Manual.md b/_posts/others/2024-06-22-Aloys-Build-Manual.md index 3c94956..f90747d 100644 --- a/_posts/others/2024-06-22-Aloys-Build-Manual.md +++ b/_posts/others/2024-06-22-Aloys-Build-Manual.md @@ -3341,13 +3341,6 @@ Oracle基目录:$ORACLE_BASE ## 如何利用Oracle VM Templates 在几分钟内部署Oracle Real Application Clusters (RAC) -本文未经授权,禁止一切形式的转载。如果对本文有任何疑问可以通过以下方式和我交流: - -邮箱: jiangxinnju@163.com -博客园地址: http://www.cnblogs.com/jiangxinnju -GitHub地址: https://github.com/jiangxincode -知乎地址: https://www.zhihu.com/people/jiangxinnju - ### 阅读前准备 阅读本教程前首先需要访问如下地址: http://www.oracle.com/technetwork/server-storage/vm/downloads/hol-oraclevm-2368799.html From b89b583c173ba79d4bdee46eecf7746fe76cb766 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sat, 17 May 2025 21:03:24 +0800 Subject: [PATCH 226/234] update --- google39f08d3f2271d152.html | 1 + 1 file changed, 1 insertion(+) create mode 100644 google39f08d3f2271d152.html diff --git a/google39f08d3f2271d152.html b/google39f08d3f2271d152.html new file mode 100644 index 0000000..bb31b7c --- /dev/null +++ b/google39f08d3f2271d152.html @@ -0,0 +1 @@ +google-site-verification: google39f08d3f2271d152.html \ No newline at end of file From 6e143f38f9cb86ffc65ca581260f1e5d6f9df532 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 18 May 2025 23:00:39 +0800 Subject: [PATCH 227/234] update --- ...roid\345\255\246\344\271\240\344\271\213\350\267\257.md" | 6 ++++++ ...\275\345\255\246\344\271\240\344\271\213\350\267\257.md" | 4 ++++ 2 files changed, 10 insertions(+) diff --git "a/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 913dd7f..c12d666 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -50,6 +50,11 @@ toc: true * casa-android: * Now in Android App: +* 符合 Google Play 的目标 API 级别要求: +* MEMC功能详解: +* Android系统之仿sp智能指针实例(一百三十六): + + ## AOSP * AOSP项目官网中文: @@ -67,6 +72,7 @@ toc: true ### AOSP构建 * Codenames, Tags, and Build Numbers: +* 功能发布标志: * 将AOSP源码导入到Android Studio进行查看: * Android构建系统: * Android soong build系统介绍: diff --git "a/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" index 240525c..62390d8 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -18,6 +18,10 @@ toc: true * NLG: Natural Language Generation * LLM: Large Language Model +## 比较好的文章 + +* MCP协议入门指南,4个案例+2个实践全解析!: + ## 深度学习库 * Keras(基于 Python 的深度学习库): From 1ad365deb001430d871c47b7943fa23aa074eb09 Mon Sep 17 00:00:00 2001 From: Aloys Date: Wed, 21 May 2025 22:16:03 +0800 Subject: [PATCH 228/234] update --- ...57\344\273\266\345\244\207\345\277\230.md" | 4 +- ...15\347\211\251\346\216\242\346\265\213.md" | 11 + ...46\344\271\240\344\271\213\350\267\257.md" | 1 + ...46\344\271\240\344\271\213\350\267\257.md" | 9 +- sitemap.xml | 452 ++++++++++++++++++ 5 files changed, 475 insertions(+), 2 deletions(-) rename _drafts/Others/ChooseYourBest.md => "_drafts/Others/\345\267\245\345\205\267\350\275\257\344\273\266\345\244\207\345\277\230.md" (98%) create mode 100644 "_posts/others/2025-05-21-\346\231\272\350\203\275\351\251\276\351\251\266-\351\232\234\347\242\215\347\211\251\346\216\242\346\265\213.md" create mode 100644 sitemap.xml diff --git a/_drafts/Others/ChooseYourBest.md "b/_drafts/Others/\345\267\245\345\205\267\350\275\257\344\273\266\345\244\207\345\277\230.md" similarity index 98% rename from _drafts/Others/ChooseYourBest.md rename to "_drafts/Others/\345\267\245\345\205\267\350\275\257\344\273\266\345\244\207\345\277\230.md" index 2b72880..007f357 100644 --- a/_drafts/Others/ChooseYourBest.md +++ "b/_drafts/Others/\345\267\245\345\205\267\350\275\257\344\273\266\345\244\207\345\277\230.md" @@ -1,4 +1,4 @@ -# Choose Your Best +# 工具软件备忘 ## Note App @@ -201,6 +201,8 @@ * FastStone Capture: * OBS Studio: * ScreenToGif: +* screenity(开源免费): +* Awesome Screenshot(高级功能收费): * ClipMate: * Sothink SWF Decompiler: * Sothink Logo Maker: diff --git "a/_posts/others/2025-05-21-\346\231\272\350\203\275\351\251\276\351\251\266-\351\232\234\347\242\215\347\211\251\346\216\242\346\265\213.md" "b/_posts/others/2025-05-21-\346\231\272\350\203\275\351\251\276\351\251\266-\351\232\234\347\242\215\347\211\251\346\216\242\346\265\213.md" new file mode 100644 index 0000000..8a6c821 --- /dev/null +++ "b/_posts/others/2025-05-21-\346\231\272\350\203\275\351\251\276\351\251\266-\351\232\234\347\242\215\347\211\251\346\216\242\346\265\213.md" @@ -0,0 +1,11 @@ +--- +title: "智能驾驶-障碍物探测" +categories: + - 智能驾驶 +tags: + - 障碍物探测 + - 智能驾驶 +toc: true +--- + +* 自动驾驶的眼睛:激光、毫米波雷达&摄像头三种技术产品之比较: diff --git "a/_posts/the-way-of-learning/2015-05-19-\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" index 7c8d6dd..d188e23 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\345\211\215\347\253\257\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -97,6 +97,7 @@ toc: true * Hexo(快速、简洁且高效的博客框架,Node.js): * Hugo(The world’s fastest framework for building websites, Go): * WordPress: +* 让Google搜索到用Jekyll搭建在Github Pages上的博客: ## Tools diff --git "a/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" index 62390d8..bda49b8 100644 --- "a/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-\346\234\272\345\231\250\345\255\246\344\271\240\344\270\216\344\272\272\345\267\245\346\231\272\350\203\275\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -33,6 +33,7 @@ toc: true * ChatGPT(OpenAI): * DeepSeek(深度求索): * Kimi(月之暗面): +* 通义千问: * Claude(Anthropic): * Llama(Meta): * gemini(Google): @@ -88,11 +89,12 @@ toc: true * PDF解析: * BookAI(Chat with any book using AI): * regex.ai: +* DeepWiki(Github文档生成): ## AI编程辅助 * Cursor: -* Trae: +* Trae(字节跳动, AI IDE): * cline: * Roo-Code: * Copilot: @@ -113,6 +115,11 @@ toc: true * Bito: * ~~Kite(已停止运营): ~~ +## 多模态AI Agent + +* Agent TARS(字节跳动, 多模态AI Agent): +* Manus(通用AI Agent): + ## 其它 * Google's Wordcraft: diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..8472c1a --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,452 @@ + + + + + + + https://jiangxincode.github.io/cnblogs/ + 2025-05-18T15:01:24+00:00 + 1.00 + + + https://jiangxincode.github.io/cnblogs/posts/ + 2025-05-18T15:01:24+00:00 + 0.80 + + + https://jiangxincode.github.io/cnblogs/categories/ + 2025-05-18T15:01:24+00:00 + 0.80 + + + https://jiangxincode.github.io/cnblogs/tags/ + 2025-05-18T15:01:24+00:00 + 0.80 + + + https://jiangxincode.github.io/cnblogs/about/ + 2025-05-18T15:01:24+00:00 + 0.80 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/%E6%9E%B6%E6%9E%84%E5%B8%88%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.80 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/%E6%8A%95%E5%B1%8F%E7%9F%A5%E8%AF%86%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.80 + + + https://jiangxincode.github.io/cnblogs/others/Aloys-Build-Manual/ + 2025-05-18T15:01:24+00:00 + 0.80 + + + https://jiangxincode.github.io/cnblogs/others/Password-Recovery-Tools-Analysis/ + 2025-05-18T15:01:24+00:00 + 0.80 + + + https://jiangxincode.github.io/cnblogs/linux/Grep-Sed-Awk-Example/ + 2025-05-18T15:01:24+00:00 + 0.80 + + + https://jiangxincode.github.io/cnblogs/page2/ + 2025-05-18T15:01:24+00:00 + 0.80 + + + https://jiangxincode.github.io/cnblogs/page3/ + 2025-05-18T15:01:24+00:00 + 0.80 + + + https://jiangxincode.github.io/cnblogs/page14/ + 2025-05-18T15:01:24+00:00 + 0.80 + + + https://jiangxincode.github.io/cnblogs/android/Import-AOSP-To-AS/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/android/Android-Build-System/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/android/Repo-In-Action/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/vcs/TortoiseSVN_TortoiseGit_BeyondCompare/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/linux/Package-Manager-In-Ubuntu/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/others/Cpp-Code-Check/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/linux/Linux-Memory-Analysis/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/others/Java-Code-Check/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/others/Publish-to-Maven-Center/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/vcs/How_to_merge_two_git_repo/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/others/Groovy-Compiler-Analysis-02/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/others/Groovy-Compiler-Analysis-01/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/others/Gradle-GradleWrappe-AndroidPluginForGradle/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/others/j-lo-performance-analysissy-tools3/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/others/j-lo-performance-analysissy-tools2/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/others/j-lo-performance-analysissy-tools/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/%E8%AE%BE%E8%AE%A1%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/%E7%89%88%E6%9C%AC%E7%AE%A1%E7%90%86%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/%E6%B1%87%E7%BC%96%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E4%B8%8E%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/%E6%95%B0%E7%94%B5%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/%E5%A4%A7%E6%95%B0%E6%8D%AE%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/%E5%89%8D%E7%AB%AF%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/Windows%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/Unix%E4%B8%8ELinux%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/TeX%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/TCL%E4%B8%8ETK%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/Scala%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/R%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/Rust%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/Ruby%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/Python%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/Prolog%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/Perl%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/Pascal%E4%B8%8EDelphi%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/PHP%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/OpenGL%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/OJ%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/OCaml%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/Nginx%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/Matlab%E4%B8%8EOctave%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/Markdown%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/Lua%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/Lisp%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/Kotlin%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/J2EE%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/IO%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/Haskell%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/Groovy%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/Golang%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/Fortran%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/Excel%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/Erlang%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/EditorAndIDE%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/Docker%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/DB%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/C%E4%B8%8EC++%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/CSharp%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/Basic%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/the-way-of-learning/Android%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/others/how-to-learn-r-by-reading-books/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/page4/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/page5/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/page13/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/page12/ + 2025-05-18T15:01:24+00:00 + 0.64 + + + https://jiangxincode.github.io/cnblogs/page6/ + 2025-05-18T15:01:24+00:00 + 0.51 + + + https://jiangxincode.github.io/cnblogs/page7/ + 2025-05-18T15:01:24+00:00 + 0.51 + + + https://jiangxincode.github.io/cnblogs/page11/ + 2025-05-18T15:01:24+00:00 + 0.51 + + + https://jiangxincode.github.io/cnblogs/page10/ + 2025-05-18T15:01:24+00:00 + 0.51 + + + https://jiangxincode.github.io/cnblogs/page8/ + 2025-05-18T15:01:24+00:00 + 0.41 + + + https://jiangxincode.github.io/cnblogs/page9/ + 2025-05-18T15:01:24+00:00 + 0.41 + + + + \ No newline at end of file From 195d460e10d091d6e8b6327b7eed62b7be43b61e Mon Sep 17 00:00:00 2001 From: Aloys Date: Sat, 24 May 2025 13:05:37 +0800 Subject: [PATCH 229/234] update --- ...71\346\241\210\346\261\207\346\200\273.md" | 35 +++++++++++++++---- ...46\344\271\240\344\271\213\350\267\257.md" | 27 ++++++++++---- 2 files changed, 49 insertions(+), 13 deletions(-) rename "_drafts/Others/202301072208PDF\345\270\270\350\247\201\351\227\256\351\242\230\346\200\273\347\273\223.md" => "_posts/others/2023-01-07-PDF\345\270\270\350\247\201\351\227\256\351\242\230\350\247\243\345\206\263\346\226\271\346\241\210\346\261\207\346\200\273.md" (78%) diff --git "a/_drafts/Others/202301072208PDF\345\270\270\350\247\201\351\227\256\351\242\230\346\200\273\347\273\223.md" "b/_posts/others/2023-01-07-PDF\345\270\270\350\247\201\351\227\256\351\242\230\350\247\243\345\206\263\346\226\271\346\241\210\346\261\207\346\200\273.md" similarity index 78% rename from "_drafts/Others/202301072208PDF\345\270\270\350\247\201\351\227\256\351\242\230\346\200\273\347\273\223.md" rename to "_posts/others/2023-01-07-PDF\345\270\270\350\247\201\351\227\256\351\242\230\350\247\243\345\206\263\346\226\271\346\241\210\346\261\207\346\200\273.md" index c80f23f..6845c1d 100644 --- "a/_drafts/Others/202301072208PDF\345\270\270\350\247\201\351\227\256\351\242\230\346\200\273\347\273\223.md" +++ "b/_posts/others/2023-01-07-PDF\345\270\270\350\247\201\351\227\256\351\242\230\350\247\243\345\206\263\346\226\271\346\241\210\346\261\207\346\200\273.md" @@ -1,18 +1,30 @@ -# PDF常见问题解决方案汇总 +--- +title: "PDF常见问题解决方案汇总" +categories: + - others +tags: + - PDF + - Adobe Acrobat +toc: true +--- -## Adobe Acrobat修改PDF文档,保存的时候报错“读取本文档时出现问题(135)” +本文针对PDF文件的常见问题及其解决方案进行汇总,主要是Adobe Acrobat的使用问题。 + +## Adobe Acrobat + +### Adobe Acrobat修改PDF文档,保存的时候报错“读取本文档时出现问题(135)” * 导出图片,然后再合并成PDF了。这种方法是可行的,但是缺点是书签就都没了,文字也因为变成图片格式而无法复制为文本了。 * 直接导出PDF,但是试验了一下,此方法不可行。说缺少文件:`The file "PreflightLib.dll" is missing or corrupt` * 另存为其他——优化的PDF——标准设置,对新的文档进行之前的修改即可。 * 先随便找一个PDF文件(1.PDF)(可以先用一张图片转换成PDF,或者Word直接打印为PDF)。然后把需要保存的PDF文件和那个1.pdf一起选中,右键“在Acrobat中合并支持的文件...”。 然后保存为组合1.pdf。这个组合1已经能编辑自如了。把刚才的1.PDF的多余页面删除即可。此方法的优点是:保留了书签,而且保留了文本形式PDF上的文本的可复制性。 -## Adobe Acrobat修改PDF文档,保存的时候报错:“读取本文档时出现问题(110)” +### Adobe Acrobat修改PDF文档,保存的时候报错:“读取本文档时出现问题(110)” 1. 另存为其他——优化的PDF——标准设置,对新的文档进行之前的修改即可。 2. 下载PDF-Viewer,然后用这个软件把问题文件打开,再把问题文件另存为自己随便取个名字的pdf文件。保存好后用之前的文件阅读器打开看看,基本上问题就解决了。最后记得把转存好的文件名字改回需要的名字。把原来的问题文件删除就OK了。 -## 用Adobe Acrobat去除PDF文件的数字签名 +### 用Adobe Acrobat去除PDF文件的数字签名 今天遇到一个PDF,不但加了口令,还用了数字签名。口令很多工具都能对付,但是目前还真没什么工具能去除数字签名。我先把口令去了,现在可以复制内容,可以打印。但是由于数字签名还在,仍然无法进行修改、注释等操作。我尝试把这份文档再打印成PDF,这下数字签名倒是没有了,可原文件的书签也没了。又在网上看到有人说用“提取页面”也可以达到同样效果,但是也无法连书签一起提取。最后在网上找到一个解决方案: @@ -20,7 +32,7 @@ 2. 使用“文档->插入页面”,把有数字签名的文档插入到那一页后面。 3. 使用“文档->删除页面”,删除第一页,然后保存文档。 -## 用Adobe Acrobat批量删除PDF文件中各类水印、背景、文本等 +### 用Adobe Acrobat批量删除PDF文件中各类水印、背景、文本等 下载的 PDF 文件经常被加入许多广告性质的水印等,影响阅读。其删除办法如下: @@ -40,11 +52,11 @@ 注:标记密文前,最好设置密文属性为无填充、100%透明:`工具`-`保护`-`密文属性` -## 用Adobe Acrobat解决pdf页面大小不一致问题 +### 用Adobe Acrobat解决pdf页面大小不一致问题 `视图`-`工具`-`印刷制作`-`设置页面框`。在弹出的“设置页面框”视图里设置`固定大小:页面大小A4`(注:此处请按需设置)、`页面范围:所有页面`。然后点击“确定”。 -## 使用Adobe Acrobat将PDF所有书签批量修改为“适合宽度”显示 +### 使用Adobe Acrobat将PDF所有书签批量修改为“适合宽度”显示 注意:本文所述方法不能自动创建书签,仅仅是修改点击书签后的显示模式。 @@ -53,6 +65,15 @@ 3. 按组合键Shift+/折叠所有书签。注意:组合键中的‘/’必须是数字小键盘上的除号,这意味着:如果您使用的笔记本没有数字小键盘,您需要外接一个带数字小键盘的完整键盘。 4. 最后保存PDF文件的修改即可。 +### Adobe Acrobat防盗版弹框 + +`Adobe Acrobat Pro`打开PDF后,过一会就会弹出盗版保护窗口,提示:`This unlicensed Adobe app has been disabled`。解决方式如下: + +* `C:\Program Files\Adobe\Acrobat DC\Acrobat\AcroCEF\AcroCEF.exe`改名为`AcroCEF.exe.bak` +* `C:\Program Files\Adobe\Acrobat DC\Acrobat\acrocef_1\AcroCEF.exe`改名为`AcroCEF.exe.bak` + +然后重新打开`Adobe Acrobat Pro`,就不会弹出盗版保护窗口了。 + ## 其它问题 * PDF to Word Converter: diff --git "a/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index c12d666..6735ef1 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -10,11 +10,25 @@ toc: true 本篇文章汇总了 Android 学习的相关资源,包括开发者文档、系统架构、性能优化、工具使用等内容,适合 Android 开发者参考。 -* 开发者网站中文: -* 开发者网站英文: +## Android应用开发 + +站在Android应用开发者的角度,Android官方开发者网站是最权威的学习资料,包含了 Android 的所有 API 文档、开发者指南、设计规范等。 + +* Android开发者网站: +* Android开发者网站国内镜像(可以在国内不搭梯子直接访问): + +Android开发者网站包含了以下内容: + +* Essentials + * Platform: + * Release: + * Technology: +* Design & Plan +* Develop +* Google Play +* Community * 了解 Google Pixel 手机何时会收到软件更新: -* 获取 Android 16: * Developer guide: * Permissions: @@ -54,11 +68,12 @@ toc: true * MEMC功能详解: * Android系统之仿sp智能指针实例(一百三十六): +## AOSP定制 -## AOSP +站在手机、车机制造商的角度,需要在开源Android项目基础上做定制,AOSP官网是最权威的学习资料,包含了 Android 的所有源代码、系统架构、开发者指南等。 -* AOSP项目官网中文: -* AOSP项目官网英文: +* AOSP项目官网: +* AOSP项目官网国内镜像(可以在国内不搭梯子直接访问): ### AOSP源码在线查看 From 762bb306058195891b34e23f1407a23954457bbc Mon Sep 17 00:00:00 2001 From: Aloys Date: Wed, 28 May 2025 20:35:40 +0800 Subject: [PATCH 230/234] update --- ...20\347\240\201\350\247\243\346\236\220.md" | 8 - ...00\345\217\221\350\247\204\350\214\203.md" | 18 ++ ...57\344\273\266\345\244\207\345\277\230.md" | 2 + ...46\344\271\240\344\271\213\350\267\257.md" | 3 +- ...15\347\211\251\346\216\242\346\265\213.md" | 2 + ...46\344\271\240\344\271\213\350\267\257.md" | 191 ++++++++++++------ ...46\344\271\240\344\271\213\350\267\257.md" | 23 +-- 7 files changed, 166 insertions(+), 81 deletions(-) create mode 100644 "_drafts/Android/2025-05-25-AOSP\345\274\200\345\217\221\350\247\204\350\214\203.md" diff --git "a/_drafts/Android/202301072210Doze\346\250\241\345\274\217\346\272\220\347\240\201\350\247\243\346\236\220.md" "b/_drafts/Android/202301072210Doze\346\250\241\345\274\217\346\272\220\347\240\201\350\247\243\346\236\220.md" index 9ca9459..ab6f925 100644 --- "a/_drafts/Android/202301072210Doze\346\250\241\345\274\217\346\272\220\347\240\201\350\247\243\346\236\220.md" +++ "b/_drafts/Android/202301072210Doze\346\250\241\345\274\217\346\272\220\347\240\201\350\247\243\346\236\220.md" @@ -1,11 +1,3 @@ -## 同步发布平台 - -* 博客园: -* CSDN: -* 掘金: -* 知乎: - -**未经允许,谢绝转载** 请先阅读谷歌官网对Doze的基础性介绍: 。本文代码分析基于Android R版本。 diff --git "a/_drafts/Android/2025-05-25-AOSP\345\274\200\345\217\221\350\247\204\350\214\203.md" "b/_drafts/Android/2025-05-25-AOSP\345\274\200\345\217\221\350\247\204\350\214\203.md" new file mode 100644 index 0000000..c77a09d --- /dev/null +++ "b/_drafts/Android/2025-05-25-AOSP\345\274\200\345\217\221\350\247\204\350\214\203.md" @@ -0,0 +1,18 @@ +--- +title: "AOSP开发规范" +categories: + - Android +tags: + - AOSP + - 开发规范 + - Android +toc: true +--- + +* 在AOSP原生代码函数中增加侵入式修改,需要使用begin/end函数对其进行包裹,避免影响到原生代码的可读性和可维护性。 +* AOSP中尽量仅包含插装代码,避免包含业务逻辑代码。业务逻辑代码应该解耦到特定目录。 +* 禁止在AOSP原生AIDL中添加新的接口。 +* 新增加接口,注意是否需要进行权限控制。 +* 内部接口增加@hide注解,避免被外部反射调用。 +* 新增内容使用特性开关进行隔离。 +* 核心代码修改需要在特定评审会评审通过后才能进行代码提交。 diff --git "a/_drafts/Others/\345\267\245\345\205\267\350\275\257\344\273\266\345\244\207\345\277\230.md" "b/_drafts/Others/\345\267\245\345\205\267\350\275\257\344\273\266\345\244\207\345\277\230.md" index 007f357..f9fe56a 100644 --- "a/_drafts/Others/\345\267\245\345\205\267\350\275\257\344\273\266\345\244\207\345\277\230.md" +++ "b/_drafts/Others/\345\267\245\345\205\267\350\275\257\344\273\266\345\244\207\345\277\230.md" @@ -37,6 +37,7 @@ |[DiagramDesigner](https://github.com/meesoft/DiagramDesigner)|是|Windows|开源免费| | |[FreeMind](https://freemind.sourceforge.net/)|否|Windows/Mac/Linux|开源免费| | |[freemind-mmx](https://github.com/jiangxin/freemind-mmx)|否|Windows/Mac/Linux|开源免费| | +|[draw.io](https://www.drawio.com/)|是|Windows/Mac/Linux/Web|开源免费| | ## Office办公软件 @@ -185,6 +186,7 @@ * potplayer(新版本不支持swf格式): * QQ影音(播放WMV有时没有声音): * VLC media player: +* Avidemux: * 龙卷风收音机: * 腾讯视频: diff --git "a/_posts/android/2025-01-05-\346\212\225\345\261\217\347\237\245\350\257\206\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/android/2025-01-05-\346\212\225\345\261\217\347\237\245\350\257\206\345\255\246\344\271\240\344\271\213\350\267\257.md" index 4e4a741..98b5724 100644 --- "a/_posts/android/2025-01-05-\346\212\225\345\261\217\347\237\245\350\257\206\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/android/2025-01-05-\346\212\225\345\261\217\347\237\245\350\257\206\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -43,7 +43,8 @@ toc: true |[Chromecast](https://support.google.com/chromecast)|Android/iOS设备|插入Chromecast的显示设备|无线/有线|镜像|谷歌|NA| |[WiDi](https://www.intel.cn/content/www/cn/zh/support/articles/000014926/emerging-technologies.html)|Windows设备|支持协议的显示设备|无线/有线|镜像/拓展|Intel|[已停止支持](https://www.intel.cn/content/www/cn/zh/support/articles/000021693/emerging-technologies.html)| |[Windows手机连接](https://support.microsoft.com/zh-cn/topic/%E6%89%8B%E6%9C%BA%E8%BF%9E%E6%8E%A5%E8%A6%81%E6%B1%82%E5%92%8C%E8%AE%BE%E7%BD%AE-cd2a1ee7-75a7-66a6-9d4e-bf22e735f9e3)|Android/iOS|Windows|无线|推送|微软|NA| -|[scrcpy](https://github.com/Genymobile/scrcpy)|Android|Linux/Windows/macOS|有线+无线|镜像|开源|NA| +|[scrcpy](https://github.com/Genymobile/scrcpy)|Android|Windows|有线+无线|镜像|开源|NA| +|[AnLink](https://anl.ink/)|Android|Linux/Windows/macOS|有线+无线|镜像|AnLink|NA| |[Vysor](https://www.vysor.io/#)|Android/iOS|Linux/Windows/macOS|有线+无线|镜像|vysor|NA| ## 其它链接 diff --git "a/_posts/others/2025-05-21-\346\231\272\350\203\275\351\251\276\351\251\266-\351\232\234\347\242\215\347\211\251\346\216\242\346\265\213.md" "b/_posts/others/2025-05-21-\346\231\272\350\203\275\351\251\276\351\251\266-\351\232\234\347\242\215\347\211\251\346\216\242\346\265\213.md" index 8a6c821..45ef647 100644 --- "a/_posts/others/2025-05-21-\346\231\272\350\203\275\351\251\276\351\251\266-\351\232\234\347\242\215\347\211\251\346\216\242\346\265\213.md" +++ "b/_posts/others/2025-05-21-\346\231\272\350\203\275\351\251\276\351\251\266-\351\232\234\347\242\215\347\211\251\346\216\242\346\265\213.md" @@ -8,4 +8,6 @@ tags: toc: true --- +本文主要汇总了智能驾驶领域的一些技术和方案。 + * 自动驾驶的眼睛:激光、毫米波雷达&摄像头三种技术产品之比较: diff --git "a/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 6735ef1..751fb09 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -23,51 +23,26 @@ Android开发者网站包含了以下内容: * Platform: * Release: * Technology: -* Design & Plan + * Android Jetpack(AndroidX): * Develop + * Android Studio: + * Core Areas + * Data and file storage overview: + * Notifications overview: + * App Shortcuts: + * Support different screen sizes: + * NDK: + * Android API reference: * Google Play + * Meet Google Play's target API level requirement: * Community -* 了解 Google Pixel 手机何时会收到软件更新: - -* Developer guide: - * Permissions: - * Android 权限的一些细节: - * Data and file storage overview: - * Autofill framework: - -* Managing the System UI: -* Create and manage notification channels: -* Support different screen sizes: +* Control the system UI visibility: * Enhance graphics with wide color content: -* NDK: - -* Settings.Global: - -* Android开发者预览版: - -* Android Jetpack: -* AndroidX 概览: - -* App Shortcuts: -* SDK版本关系: -* 支持库: +* uses-sdk: * uses-library: -* Android Studio: -* Xamarin: -* Android Support Overview: - -* platform-samples: -* input-samples: -* casa-android: -* Now in Android App: - -* 符合 Google Play 的目标 API 级别要求: -* MEMC功能详解: -* Android系统之仿sp智能指针实例(一百三十六): - ## AOSP定制 站在手机、车机制造商的角度,需要在开源Android项目基础上做定制,AOSP官网是最权威的学习资料,包含了 Android 的所有源代码、系统架构、开发者指南等。 @@ -75,6 +50,9 @@ Android开发者网站包含了以下内容: * AOSP项目官网: * AOSP项目官网国内镜像(可以在国内不搭梯子直接访问): +* Core Topics + * Architecture overview: + ### AOSP源码在线查看 * Android Code Search: @@ -86,12 +64,14 @@ Android开发者网站包含了以下内容: ### AOSP构建 -* Codenames, Tags, and Build Numbers: -* 功能发布标志: +* Feature launch flag: +* Codenames, Tags, and Build Numbers: * 将AOSP源码导入到Android Studio进行查看: * Android构建系统: * Android soong build系统介绍: * Repo实践指南: +* 编译系统入门篇-Android10.0编译系统(一): +* bp-编译-注解-二次编译? * ~~使用 Jack 编译 (AOSP 6.0 - 8.1): ~~ * ~~Android 新一代编译 toolchain Jack & Jill 简介: ~~ @@ -99,11 +79,20 @@ Android开发者网站包含了以下内容: ### 系统架构 +* Here comes Treble: A modular base for Android: +* GRF: * 系统启动流程(init进程、Zygote进程、SystemServer): * android关机流程 安卓关机流程: * Android BOOTCLASSPATH详解: * Android 虚拟化框架 (AVF) : * Trusty TEE: +* Android OTA升级: +* Android系统架构-[Android取经之路]: +* Android Recovery升级原理: + +### AI与MCP + +* Android 16 的 Appfunctions API ,应用级 MCP 支持为 AI 场景打通最后一层壁垒: ### 网络 @@ -111,6 +100,9 @@ Android开发者网站包含了以下内容: ### WMS +* window insets: +* 支持多窗口模式: +* 使用画中画 (PIP) 功能添加视频: * WMS转屏流程: * Android WMS动画系统初探(一): * WindowManagerService理解与深入(Android Q): @@ -119,6 +111,24 @@ Android开发者网站包含了以下内容: * Window.setFlags 各种Flag笔记: * Activity的创建(从Activity的角度理解IWindowSession): * Android多点触控问题解决(windowEnableSplitTouch, splitMotionEvents): +* “一文读懂”系列:无处不在的WMS: + +### DMS + +* 【Android】VirtualDisplay创建流程及原理: + +### SurfaceFlinger + +* 图形架构: +* Winscope: +* Hardware acceleration: +* Android应用程序UI硬件加速渲染技术简要介绍和学习计划: +* Android 显示系统:SurfaceFlinger详解: +* 关于 UI 渲染,你需要了解什么? +* Android P 图形显示系统(一)硬件合成HWC2: +* Android P 图形显示系统(九) Android图形显示子系统概述: +* Android图形系统(十一)-Choreographer: +* Android 显示系统:SurfaceFlinger详解: ### Input相关 @@ -140,13 +150,16 @@ Android开发者网站包含了以下内容: * Linux/Android——Input系统之InputReader (七): * Android触摸事件的传递(四-1)--输入系统-InputReader: * Input源码解读——从"Show tabs"开始: +* Multi-Touch Input Parser: +* Android Input概念(getevent -ltr): ### 输入法与输入法框架 * Create an input method: * InputMethodManager: +* 处理输入法可见性: -### 手势导航相关 +### 手势导航 * Ensure compatibility with gesture navigation: @@ -163,12 +176,15 @@ Android开发者网站包含了以下内容: * 深入分析 Android 系统返回手势的实现原理: * 添加预测性返回动画: +* Ensure compatibility with gesture navigation: +* Add support for the predictive back gesture: * Android 13 返回导航大变更:返回键彻底废弃 + 可预见型返回手势: * Android 14 之返回界面升级:预览目标界面 + 全新返回箭头: ### Accessibility * Android AccessibilityService机制源码解析: +* ContentCaptureManager: ### 电源管理 @@ -181,6 +197,7 @@ Android开发者网站包含了以下内容: * Android 11(R) Power HAL AIDL简析 -- 基本接口: * AOD 息屏是什么?背后技术原理是什么? * AOD相关机制: +* 揭秘Android系统:掌握sys.powerctl,轻松提升设备续航与性能: ### 生物识别 @@ -224,19 +241,28 @@ Android开发者网站包含了以下内容: ### AMS +* 针对从后台启动 activity 的限制(BAL): * Intent: * PendingIntent: * android Application Component研究之Service: * PendingIntent重定向:一种针对安卓系统和流行App的通用提权方法——BlackHat EU 2021议题详解(上): * PendingIntent重定向:一种针对安卓系统和流行App的通用提权方法——BlackHat EU 2021议题详解 (下): * 对于android.intent.action.MAIN和android.intent.category.LAUNCHER的理解: +* Android DeepLink使用: + +### PMS + +* Android 权限的一些细节: + +### 多用户支持 + +* 多用户支持(HSUM): ### Binder * 架构概览: * 适用于 HAL 的 AIDL: * Android Binder设计与实现 - 设计篇: -* Here comes Treble: A modular base for Android: * Service/Binder/Messenger/AIDL: +《Android开发艺术探索》第2章、第9章 * 深入Android HAL binder: * HwBinder入门篇-Android10.0 HwBinder通信原理(一): @@ -247,6 +273,7 @@ Android开发者网站包含了以下内容: * HIDL 简单介绍: * 使用Android的HIDL+AIDL方式编写从HAL层到APP层的程序: * AIDL interface between Java and C++: +* 理解 Android Binder 机制(三):Java层: ### Service @@ -272,8 +299,9 @@ Android开发者网站包含了以下内容: * 理解Native Crash处理流程: * ANR Broadcast TimeOut 超时判断: * Android ANR:原理分析及解决办法: +* Android 系统中的 WatchDog 详解: -### 性能分析 +### 性能 * Overview of system tracing: * Inspect CPU activity with CPU Profiler: @@ -302,6 +330,7 @@ Android开发者网站包含了以下内容: * Android内存优化(使用SparseArray和ArrayMap取代HashMap): * Android-->iostat(显示CPU和IO系统负载情况): +* Android 15 适配之16K Page Size :为什么它会是最坑的一个适配点: ### 动效 @@ -320,9 +349,13 @@ Android开发者网站包含了以下内容: * Android矢量图(一)--VectorDrawable基础: * 在 Android 开发中使用 SVG: * 手把手教学, android 使用 SVG: +* Android RemoteAnimation简述: ### 控件 +* ListView中getView的原理与解决多轮重复调用的方法: +* Android控件--ProgressBar: +* 拖放框架: * Caching Bitmaps: * 不同版本上 Bitmap 内存分配与回收原理对比: * Android Drawable Resource学习(一)、Drawable Resource简介: @@ -331,6 +364,7 @@ Android开发者网站包含了以下内容: * 将Canvas转换为Drawable: * Carson带你学Android:自定义View Canvas类使用教程: * Android中Canvas绘图之PorterDuffXfermode使用及工作原理详解: +* HenCoder——给高级 Android 工程师的进阶手册: ### Statsd @@ -369,9 +403,48 @@ Android开发者网站包含了以下内容: ### Vibrator * 触感反馈: +* 在 Android 上实现触感反馈: + +### 媒体框架 + +* Media projection: +* 【Android】录屏功能实现——MediaProjection: +* HapticGenerator: + +### 蜂窝端距 + +* android 红外ConsumerIrService: +* 通过 RTT 确定 WLAN 位置信息: + +### 安全 + +* Permissions: +* Show a biometric authentication dialog: +* Autofill framework: +* Privacy Sandbox: +* SDK Runtime overview: +* Lockdown: +* Android FRP功能分析(Factory Reset Protection): + +### 硬件 + +* LTPS屏幕和LTPO屏幕有什么区别? + +## Demo + +* platform-samples: +* input-samples: +* casa-android: +* Now in Android App: ## Article +* Google is preparing to let you run Linux apps on Android, just like Chrome OS: +* Google is making your next phone trade-in experience faster by changing Android: + +* MEMC功能详解: +* Android系统之仿sp智能指针实例(一百三十六): + * I18n Translation Search: * androidcommunity: @@ -382,9 +455,8 @@ Android开发者网站包含了以下内容: * Graphics: * Supporting Multiple Users: * Android5.1--多用户模式: +* android11 DevicePolicyManager浅析: -* Android OTA升级: -* Android系统架构-[Android取经之路]: * Android R Framework流程分析: * Fragment相关源码解析一——FragmentManagerImpl和BackStackRecord: * Fragment相关源码解析二——生命周期: @@ -409,14 +481,6 @@ Android开发者网站包含了以下内容: * 为什么要用Fragment.setArguments(Bundle bundle)来传递参数: * IllegalStateException: Can not perform this action after onSaveInstanceState with ViewPager: -* Hardware acceleration: -* Android应用程序UI硬件加速渲染技术简要介绍和学习计划: -* Android 显示系统:SurfaceFlinger详解: -* 关于 UI 渲染,你需要了解什么? -* Android P 图形显示系统(一)硬件合成HWC2: -* Android图形系统(十一)-Choreographer: -* HenCoder——给高级 Android 工程师的进阶手册: - * Android | 打印堆栈: * 多屏幕多分辨率的支持: @@ -443,9 +507,6 @@ Android开发者网站包含了以下内容: * Mipmap drawables for icons: * Android “getActionBar()返回NullPointerException”问题分析: * setEnabled() vs setClickable(), what is the difference? -* ListView中getView的原理与解决多轮重复调用的方法: -* Android控件--ProgressBar: -* 拖放框架: * Android核心分析: * Android系统开篇: @@ -608,12 +669,11 @@ Android开发者网站包含了以下内容: * Flutter: * Flutter中文网: -## Android模拟器 +## Android实体机与模拟器 -* genymotion: -* genymotion个人免费版: -* genymotion-idea-plugin: -* 夜神模拟器: +* 了解 Google Pixel 手机何时会收到软件更新: +* Magisk(安卓获取 ROOT 的主流方式): +* Genymotion: ## ADB @@ -673,3 +733,14 @@ Android开发者网站包含了以下内容: * Vitamio 4.2.2版本之前的源码: * Vitamio 5.0.0版本之后的源码: * 使用Vitamio打造自己的Android万能播放器: + +## Android使用 + +* +* 查找设备: +* 防盗保护: + +## 那些被废弃的内容 + +* ~~Support Library: ~~ +* ~~Xamarin: ~~ diff --git "a/_posts/the-way-of-learning/2015-05-19-TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" index addf3ba..e8f4fdb 100644 --- "a/_posts/the-way-of-learning/2015-05-19-TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -12,23 +12,22 @@ toc: true * TeX Live: -* WinEdt: * LaTeX-Workshop: -* Texmaker - The universal LaTeX editor: -* TeXworks: +* WinEdt: +* Texmaker: +* TeXworks: * TeXstudio: -* TeXpen, a LaTeX editor for mankind: -* SciTE LaTeX IDE: -* LEd, is an environment for rapid TeX and LaTeX document development: -* Kile LaTeX Editor: -* Gummi: The simple LaTeX editor: -* TeXmacs: - +* ~~TeXpen: ~~ +* ~~SciTE LaTeX IDE: ~~ +* >~~Kile LaTeX Editor: >~~ +* ~~Gummi: The simple LaTeX editor: ~~ +* TeXmacs: +* LEd, is an environment for rapid TeX and LaTeX document development: * The easy to use, online, collaborative LaTeX editor: -* jaxedit: +* ~~jaxedit: ~~ * Typst: -* LyX: +* LyX: * BaKoMa TeX Word: * Word-to-LaTeX Converter: * MathType: From ef10ddb8588849d368dff024c42cbf45bfa7f96a Mon Sep 17 00:00:00 2001 From: Aloys Date: Wed, 28 May 2025 21:51:22 +0800 Subject: [PATCH 231/234] update --- ...46\344\271\240\344\271\213\350\267\257.md" | 113 ++++++++++++++++++ 1 file changed, 113 insertions(+) diff --git "a/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 751fb09..9f010c2 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -568,6 +568,119 @@ Android开发者网站包含了以下内容: * [Android] 为Android安装BusyBox —— 完整的bash shell: * MIUI ROM适配之旅第一天——认识Android手机: +* C++之std::forward(完美转发)-CSDN博客: +* 详解 C++ 左值、右值、左值引用以及右值引用 - 斗战胜佛美猴王 - 博客园: +* Android动态日志ProtoLog简介和使用-CSDN博客: +* 一种Android应用耗电定位方案 背景 通常来说,app耗电相比于其他的性能问题(Crash,Anr)等,会受到比较少 - 掘金: +* 不当暖宝宝,Android 耗电检测之路背景介绍 耗电问题可能在市面上并不多见,因为大部分APP的使用时间是非常短暂的, - 掘金: +* HuolalaTech/batteryfinder-android: A detection tool of Android App power consumption: +* Android Vitals  |  App quality  |  Android Developers: +* [AOSP][Build]: Android 编译/构建基础 -- 'Hello AOSP' - 知乎: +* ThreadPoolExecutor 的参数含义及源码执行流程_new threadpoolexecutor-CSDN博客: +* 西瓜视频稳定性治理体系建设二:Raphael 原理及实践摘要 Raphael 是西瓜视频基础技术团队开发的一款 nati - 掘金: +* KwaiAppTeam/KOOM: KOOM is an OOM killer on mobile platform by Kwai.: +* 西瓜视频稳定性治理体系建设一:Tailor 原理及实践-CSDN博客: +* Code Review:提升代码质量与团队能力的利器_cr-mentor ai codereview mentor-CSDN博客: +* Shallow Size和Retained Size详解 - 简书: +* 捕获堆转储  |  Android Studio  |  Android Developers: +* Restrictions on starting activities from the background  |  App architecture  |  Android Developers: +* ADB架构解析-CSDN博客: +* 添加系统属性  |  Android Open Source Project: +* The Ultimate List of Best Software Architecture Books (2025) 📗: +* 最佳软件架构书籍终极清单 (2024) - PetterLiu - 博客园: +* ndk-stack  |  Android NDK  |  Android Developers: +* Inspect traces  |  Android Studio  |  Android Developers: +* C++之std::forward(完美转发)-CSDN博客: +* (1条消息) Android Framework学习——view的创建(1)_咻比嘟哗丶的博客-CSDN博客: +* Android窗口系统第四篇---Activity动画的设置过程 - 简书: +* (9条消息) Android Framework 窗口子系统 (08)窗口动画之动画系统框架_wangdsh的博客-CSDN博客_android 窗口动画: +* (5条消息) android:screenOrientation属性_潇湘夜雨的专栏-CSDN博客: +* Android基础-获取网络上的图片并显示 - CSDN博客: +* Android 扩大view点击范围 - Snow〃冰激凌 - 博客园: +* Android4.4中拒绝发送Intent.ACTION_MEDIA_MOUNTED扫描SD卡的广播 - CSDN博客: +* android java.lang.IllegalStateException: trying to requery an already closed cursor - CSDN博客: +* BakingApp/MediaFocusManager.java at bebb9cb2e52545d24bcf46bb45dd099dbfba545d · josemgu91/BakingApp: +* android Cursor的自动管理方式 - CSDN博客: +* Android中的Audio播放:竞争Audio之Audio Focus的应用 - CSDN博客: +* android获取设备唯一标识完美解决方案 - CSDN博客: +* Android O行为变更--隐式广播限制 - CSDN博客: +* Android开发技巧——设置系统状态栏颜色 - CSDN博客: +* android:uiOptions="splitActionBarWhenNarrow" 的作用 - CSDN博客: +* 解决Android Studio “Error:found an invalid color.... - 简书: +* actionbarsherlock - How to import slidingmenu on Android Studio? - Stack Overflow: +* 【Android系统】Android M ZenMode(禅模式)分析(1)_Chris_新浪博客: +* ="1610032952">Android APK快速签名—优化打包时间 - 网易云捕的个人空间 - 开源中国: +* android - Hiding of the Toast for long press on actionBar item - Stack Overflow: +* Android 设置应用的底部导航栏(虚拟按键)背景颜色 - github_2011的博客 - CSDN博客: +* android.os.BadParcelableException readParcelabl... - 简书: +* What is the difference between a dialog being dismissed or canceled in Android? - Stack Overflow: +* Android 流媒体系列(一) - 奥特曼超人的博客专栏 - CSDN博客: +* 多媒体音量控制setVolumeControlStream(int streamType) - CSDN博客: +* Context.managedQuery()和context.getContentResolver()获取Cursor关闭注意事项 - 秋楓 - 博客园: +* java - Trying to requery an already closed cursor - how to find this already closed cursor? - Stack Overflow: +* Cursor获取的时候有异常的处理 java.lang.IllegalStateException: trying to requery an already closed cursor - CSDN博客: +* java.lang.SecurityException: No active admin owned by uid 10065 for policy&&锁屏功能的实现 - CSDN博客: +* 【原创】关于Adapter的The content of the adapter has changed问题分析 - 陌上幽人 - 博客园: +* onFileUriExposed - 简书: +* Andorid tint属性及如何使用tint实现Selector效果 - 阿里云: +* Android targetSdkVersion你真的了解吗? - Mr.SSY的博客 - CSDN博客: +* 利用 Android Keystore系统 加密存储和解密敏感信息-解决网: +* Android保存私密信息-强大的keyStore(译) - wutongke - 简书: +* Framework基础:Android N 公共so库怎么定义呢? - 简书: +* 深入了解android平台的jni---使用宏定义精简JNI接口函数名称_流星_新浪博客: +* 读懂 Android 中的代码混淆 - 知乎: +* android - Why KeyPair.getPrivate().getEncoded() is null? - Stack Overflow: +* ="1610032952">Could not open Selected VM debug port (8700) | 学步园: +* (11条消息)关于View的ScrollTo, getScrollX 和 getScrollY_移动开发_持剑-CSDN博客: +* (11条消息)android view的生命周期_移动开发_学无止境~-CSDN博客: +* Android类加载器ClassLoader - 简书: +* class与dex文件 - 简书: +* Tint和ColorFilter - 简书: +* Android 遮罩层效果_移动开发_DennisRuan(米粒橙)-CSDN博客: +* 使用PorterDuff解决clipPath无法抗锯齿问题 - 简书: +* [Android] Activity 和 SurfaceView 的生命周期 - 技术刘: +* android:textAlignment 参数解释_xgxmwang的专栏-CSDN博客: +* Android 各种默认字体样式设置_jianjunhuang's blog-CSDN博客: +* Path类的最全面详解 - 自定义View应用系列 - 简书: +* (11条消息)ScrollView滚动到指定位置 (平滑 慢速 动画)_移动开发_丿灬安之若死-CSDN博客: +* FontMetrics - 简书: +* 广色域照片闪亮登场 Android: 开发者需知两三事 - 知乎: +* ="1610032952">Color Space: +* 色域标准:sRGB Adobe RGB DCI P3 Display P3 - 简书: +* Android Library和Android APP、Java Library的区别 - 印说十二越 - 博客园: +* Shape Shifter: +* Android setSystemUiVisibility 动态更改状态栏 - 简书: +* Android 系统状态栏沉浸式/透明化完整解决方案 - 简书: +* android - What Is The Difference Between -anydpi And -nodpi? - Stack Overflow: +* Drawable图像资源抽象类 - 简书: +* 共享元素动画实现的酷炫音乐播放器效果 - 简书: +* android - FEATURE_ACTIVITY_TRANSITIONS vs. FEATURE_CONTENT_TRANSITIONS - Stack Overflow: +* (5条消息) Android上gdb+gdbserver调试初体验_beyond702的专栏-CSDN博客: +* 自上而下解读Android显示流程(上) - 知乎: +* (5条消息) Android9.0 Activity启动流程分析(一)_Cai Yu的博客-CSDN博客: +* zhaobozhen/LibChecker: An app to view libraries used in apps in your device.: +* (1条消息) Android 惯用工作命令mmm,mm,m,croot,cgrep,jgrep,resgrep,godir,快速查找 find grep合并使用_面向未来-CSDN博客_cgrep: +* android动画的ZAdjustment - 独钓寒江雪kq - 博客园: +* 为何大厂APP如微信、支付宝、淘宝、手Q等只适配了armeabi-v7a/armeabi?: +* (10条消息) android下运行时动态链接dlopen()和dlsym()的实现_犀牛划水-CSDN博客: +* (10条消息) [Andoid][踩坑]CTS 11_r3开始出现的testBootClassPathAndSystemServerClasspath_nonDuplicateClasses FAIL问题分析_Ryan ZHENG的专栏-CSDN博客: +* (10条消息) Android类加载之PathClassLoader和DexClassLoader_stven_king的专栏-CSDN博客: +* 通过jarjar.jar来替换jar包名的详细介绍 - Andye - 博客园: +* android 9指纹认证_Android指纹认证教程_danpincheng0204的博客-CSDN博客: +* Android自动化测试之Monkey命令使用及monkey脚本编写_Mango先生的博客-CSDN博客_monkey脚本: +* Android面试官装逼失败之:Activity的启动模式 - 简书: +* android 关机流程详细分析_xiongtiancheng的博客-CSDN博客_android 关机流程: +* android 静默重启 QUIESCENT REBOOT_archie_7的博客-CSDN博客: +* (7条消息) Android Q 色彩(颜色)模式解析(一)_夕月风-CSDN博客: +* 图解Android 系列 - 随笔分类 - 漫天尘沙 - 博客园: +* Android 触摸事件分发机制 - 齐欢的博客: +* AVRCP_百度百科: +* android bt蓝牙耳机AVRCP按键分析-CSDN博客: +* 使用 Logcat 查看日志  |  Android Studio  |  Android Developers: +* Android新增API之AudioEffect中文API与应用实例-CSDN博客: +* user-interface-samples/DragAndDrop at main · android/user-interface-samples: +* Dalvik 和 ART 有什么区别?深扒 Android 虚拟机发展史,真相却出乎意料! - 知乎: + ## Android相关的知识 * 从圆角到圆角: From 61e881763acf83d253102855b2870f13308528e1 Mon Sep 17 00:00:00 2001 From: Aloys Date: Thu, 29 May 2025 21:49:17 +0800 Subject: [PATCH 232/234] update --- ...ndroid\345\255\246\344\271\240\344\271\213\350\267\257.md" | 4 ++++ 1 file changed, 4 insertions(+) diff --git "a/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 9f010c2..466e1d4 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -299,6 +299,7 @@ Android开发者网站包含了以下内容: * 理解Native Crash处理流程: * ANR Broadcast TimeOut 超时判断: * Android ANR:原理分析及解决办法: +* Android ANR 系列 2 :ANR 分析套路和关键 Log 介绍: * Android 系统中的 WatchDog 详解: ### 性能 @@ -306,6 +307,7 @@ Android开发者网站包含了以下内容: * Overview of system tracing: * Inspect CPU activity with CPU Profiler: * Simpleperf: +* Simpleperf 理论与实践指南(总结篇): * Android Systrace 基础知识: * systrace.py环境配置: @@ -314,6 +316,7 @@ Android开发者网站包含了以下内容: * TraceView(已弃用): * Android性能优化—TraceView的使用: +* atrace(android)/ptrace(linux)/BPF/eBPF * PerfDog性能狗: @@ -425,6 +428,7 @@ Android开发者网站包含了以下内容: * SDK Runtime overview: * Lockdown: * Android FRP功能分析(Factory Reset Protection): +* Android 中的安全增强型 Linux: ### 硬件 From a66b0c9f8bc95b7486462c847ab7781a5f700a6d Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 8 Jun 2025 09:19:53 +0800 Subject: [PATCH 233/234] update --- ...45\255\246\344\271\240\344\271\213\350\267\257.md" | 1 + ...45\255\246\344\271\240\344\271\213\350\267\257.md" | 11 +++++------ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git "a/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 466e1d4..46f53dc 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -89,6 +89,7 @@ Android开发者网站包含了以下内容: * Android OTA升级: * Android系统架构-[Android取经之路]: * Android Recovery升级原理: +* [Android 基础] -- Android 属性系统简介: ### AI与MCP diff --git "a/_posts/the-way-of-learning/2015-05-19-TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" index e8f4fdb..1612c39 100644 --- "a/_posts/the-way-of-learning/2015-05-19-TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-TeX\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -17,19 +17,18 @@ toc: true * Texmaker: * TeXworks: * TeXstudio: +* TeXmacs: +* The easy to use, online, collaborative LaTeX editor: * ~~TeXpen: ~~ * ~~SciTE LaTeX IDE: ~~ -* >~~Kile LaTeX Editor: >~~ +* ~~Kile LaTeX Editor: >~~ * ~~Gummi: The simple LaTeX editor: ~~ -* TeXmacs: -* LEd, is an environment for rapid TeX and LaTeX document development: -* The easy to use, online, collaborative LaTeX editor: +* ~~LEd, is an environment for rapid TeX and LaTeX document development: ~~ * ~~jaxedit: ~~ * Typst: * LyX: -* BaKoMa TeX Word: -* Word-to-LaTeX Converter: +* ~~Word-to-LaTeX Converter: ~~ * MathType: * The Comprehensive TEX Archive Network(CTAN): From 0ac4eb7545e7c3a9872f16bf21a91287b988a722 Mon Sep 17 00:00:00 2001 From: Aloys Date: Sun, 8 Jun 2025 19:03:44 +0800 Subject: [PATCH 234/234] update --- ...Android\345\255\246\344\271\240\344\271\213\350\267\257.md" | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git "a/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" "b/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" index 46f53dc..8f3d7c6 100644 --- "a/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" +++ "b/_posts/the-way-of-learning/2015-05-19-Android\345\255\246\344\271\240\344\271\213\350\267\257.md" @@ -76,6 +76,8 @@ Android开发者网站包含了以下内容: * ~~使用 Jack 编译 (AOSP 6.0 - 8.1): ~~ * ~~Android 新一代编译 toolchain Jack & Jill 简介: ~~ * ~~Google 又弃坑了,Jack+Jill vs. javac+dx: ~~ +* Android CPU, Compilers, D8 & R8: +* ProGuard and R8: Comparing Optimizers: ### 系统架构 @@ -737,7 +739,6 @@ Android开发者网站包含了以下内容: * Android Studio移动鼠标显示悬浮提示的设置方法: * ANDROID STUDIO详细教程汇总: -* Android Studio 3.0+ 新Dex编译器D8 Desugar R8: * Android Studio系列教程一--下载与安装: * Android Studio系列教程二--基本设置与运行: * Android Studio系列教程三--快捷键: