Skip to content
14 changes: 14 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,18 @@
## 编程书籍思维导图
* [Java](program-book/java.md)

## 用好面试题
* [Java](program-interview/java-baidu-200.md)

## 用好教程
* Java
* [J2SE官方教程](program-blog/java-oracle-learn-path.md)

## 编程技术
* [微信小程序](program-tool/weixin-app.md)

## 技术词汇表
* [Java](program-vocabulary/java.md)

## 工具
* [搜索技巧](program-tool/search-skill.md)
48 changes: 48 additions & 0 deletions program-blog/java-oralce-learn-path.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Java学习路径

> [Java learning path(Oracle)](https://docs.oracle.com/javase/tutorial/tutorialLearningPaths.html)

此教程适用JDK8,所有例子均未用到后续版本的高级特性。

无论你是学习Java语言的新手,还是想要拓展技能的专业程序员,这里提供了Java平台的最新技术学习路径。

## Java新手
针对Java新手有以下推荐教程:

* [新手上路](https://docs.oracle.com/javase/tutorial/getStarted/index.html):Java技术介绍,开发软件安装,创建一个简单的程序
* [学习Java语言](https://docs.oracle.com/javase/tutorial/java/index.html):学习基本概念,类、对象、继承、数据类型、泛型和包
* [Java类基础](https://docs.oracle.com/javase/tutorial/essential/index.html):学习异常、基本输入输出、并发、正则表达式和平台开发环境

## 高级技术
打好了基础要深入?可以学习下列教程:

* [Collections](https://docs.oracle.com/javase/tutorial/collections/index.html):学习使用和扩展Java集合框架
* [Lambda表达式](https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html):了解为什么以及如何在应用中使用Lambda表达式
* [聚合操作](https://docs.oracle.com/javase/tutorial/collections/streams/index.html):探索如何使用聚合操作、流和Lambda表达式完成强大的过滤操作
* [打包程序到JAR文件](https://docs.oracle.com/javase/tutorial/collections/streams/index.html):学习创建JAR文件并签名
* [国际化](https://docs.oracle.com/javase/tutorial/i18n/index.html):介绍如何设计软件可以方便地本地化
* [反射](https://docs.oracle.com/javase/tutorial/reflect/index.html):对当前Java虚拟机中的类、接口、对象提供“反射”功能的API
* [安全](https://docs.oracle.com/javase/tutorial/security/index.html):Java平台的保护机制,免除恶意软件影响
* [JavaBeans](https://docs.oracle.com/javase/tutorial/javabeans/index.html):Java平台的组件技术
* [扩展机制](https://docs.oracle.com/javase/tutorial/ext/index.html):如何为所有运行Java平台的应用提供自定义API
* [泛型](https://docs.oracle.com/javase/tutorial/extra/generics/index.html):类型系统的一种增强技术,可以在确保编译时类型安全的前提下支持多种对象操作

## 偏爱客户端?
如果你希望开发基于Java的桌面解决方案和富Internet应用程序,可以学习下列教程:

* [JavaFX入门](http://www.oracle.com/pls/topic/lookup?ctx=javase80&id=JFXST804):一组精心设计的示例应用程序让你可以快速熟悉常用JavaFX任务
* [Scene Builder入门](http://www.oracle.com/pls/topic/lookup?ctx=javase80&id=JSBGS101):一步步指导如何使用JavaFX Scene Builder快速创建bug追踪应用程序
* [使用Swing开发GUI程序](https://docs.oracle.com/javase/tutorial/uiswing/index.html):一个完整的Java平台GUI案例
* [部署](https://docs.oracle.com/javase/tutorial/deployment/index.html):如何使用JAR文件打包应用和applet,使用Java Web Start和Java插件发布
* [2D图形](https://docs.oracle.com/javase/tutorial/2d/index.html):如何显示并打印2D图形
* [全屏幕独占模式API](https://docs.oracle.com/javase/tutorial/extra/fullscreen/index.html):如何编写完全利用图形设备的应用程序

## 大爱Server
如果你喜欢中间件、服务端应用或者web应用开发,可以学习下列教程:

* [JDBC数据库访问](https://docs.oracle.com/javase/tutorial/jdbc/index.html):介绍Java应用和数据库、数据源之间连接的API
* [JMX](https://docs.oracle.com/javase/tutorial/jmx/index.html):Java管理扩展,提供了一种对应用、设备和服务的资源管理标准方法
* [JNDI](https://docs.oracle.com/javase/tutorial/jndi/index.html):Java命名和目录接口,可以访问命名和目录服务,例如DNS和LDAP
* [JAXP](https://docs.oracle.com/javase/tutorial/jaxp/index.html):介绍了XML处理技术(JAXP) 1.4技术
* [RMI](https://docs.oracle.com/javase/tutorial/rmi/index.html):远程方法调用API,可以运行另一个Java虚拟上运行对象的方法
* [并发](https://docs.oracle.com/javase/tutorial/essential/concurrency/index.html):开发多线程用到的API
50 changes: 50 additions & 0 deletions program-blog/wexin-app/learn-weixin-app-day1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# X天小程序开发速度入门--第1天

* 小程序是什么? 微信的应用号
* 小程序怎么开发? 用微信开发工具
* 小程序用的什么语言? 分前台与后台,前台是微信风格的app,后台是业务接口,可以用多种后台语言开发
* 开发小程序的过程是怎样的? 从Hello World开始吧……

## 建立第一个小程序 Hello World
需求
* 登录小程序
* 显示用户信息
* 打印 "Hello小程序"

## 步骤
### 注册
1 注册微信小程序账号:https://mp.weixin.qq.com/
* 立即注册->小程序
* 填写注册信息,提交注册
2 注册好的账号登录小程序
3 下载开发者工具:[下载地址 ](https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html?t=1510576089)

### 准备步骤
1 打开 **微信web开发者工具**
* 注意:微信开发工具变更很快,可能与网络书籍教程无法一一对应,需要自己多摸索。
2 选择**小程序项目**
* 登录界面提供了 [微信开发者文档](https://mp.weixin.qq.com/debug/wxadoc/dev/index.html)
* [微信开发者社区](https://developers.weixin.qq.com/home?token=137700584&lang=zh_CN)
3 点击**管理项目**左边的"加号 +**
4 填写项目名称**Hello小程序**,选择好项目目录
5 AppID先选择无,待申请注册通过后,可以填写自己小程序的AppID
6 勾选“创建QuickStart项目**:会创建项目基本结构

### 理解微信项目文件
> 破坏是学习的一种很好方式

* 删除目录下所有文件,点**编译**
* 这时会看到报错"未找到入口 app.json 文件,或者文件读取失败,请检查后重新编译。"
* 微信启动时会查找app.json入口文件
* 添加app.json
* 继续报错"Expecting 'STRING','NUMBER','NULL','TRUE','FALSE','{','[', got EOF"
* app.json必须符合json格式
* 添加 `{}`
* 继续报错“未找到入口页面 app.json 中定义的 pages : []”
* 说明必须添加页面 `pages : []`
* 添加页面
* 目录导航上方"+"
* 增加目录pages
* 增加页面index
* 修改"index.wxml"内容为`<text>Hello小程序</text>`
* 小程序模拟器显示预览输出 `Hello小程序`
50 changes: 50 additions & 0 deletions program-blog/wexin-app/learn-weixin-app-day2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# X天小程序开发速度入门--第2天
> 11月14日很自觉地学习,感觉那种拖延症的感觉轻了很多

继续 Quick Start 学习,今天主要的收获有:
* 微信的IDE真难用
* 微信的API需要逐个学习理解:[小程序API](https://mp.weixin.qq.com/debug/wxadoc/dev/api/)
* JavaScript 需要从基础开始学起
* 调试工具学习

在**Quick Start** 模板代码的基础上,实现了登录后显示 "Hello 唐尤华"

## app.js
这里是微信小程序的主程序,理解为 **main()** 吧

```
App({
})
```

这里做了几件事:
* **onLaunch**:监听小程序初始化,只调用一次
* 定义了 `globalData`:各个页面调用的全局变量,`app.globalData`

**初始化 onLaunch**
这里通过小程序API实现了获取 logs 本地缓存,登录,获取用户信息
* wx.getStorageSync / wx.setStorageSync:获取设置本地缓存
* wx.login:**注意,在没有设置小程序AppID的情况下,这里是模拟返回**
* wx.getSetting :获取用户信息

所有的API详细说明可以在 [这里](https://mp.weixin.qq.com/debug/wxadoc/dev/api/) 查到

## 修改代码,让登录信息显示为"Hello 用户名"
在 `index.xml` 中,有显示 Hello World 的地方

```
<text class="user-motto">{{motto}}}</text>
改为
<text class="user-motto">Hello {{userInfo.nickName}}</text>
```

修改完成重新编译,点击登录,就可以看到结果啦

## 用到的调试工具
1 在调试工具下选择 Storage 可以看到记录登录日期的数组,保存了登录的时间
2 重新**编译**,登录,会增加一条当前登录时间
3 点**清缓存**,会把本地的缓存清掉,可以看到数组没有了

## 待学习的内容
* JavaScript基础
* 熟读[小程序API](https://mp.weixin.qq.com/debug/wxadoc/dev/api/)、[框架API](https://mp.weixin.qq.com/debug/wxadoc/dev/framework/MINA.html)
47 changes: 47 additions & 0 deletions program-blog/wexin-app/learn-weixin-app-day3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# X天小程序开发速度入门--第3天

> 继续昨天的学习,今天读了
> * [简易教程](https://mp.weixin.qq.com/debug/wxadoc/dev/)
> * [框架](https://mp.weixin.qq.com/debug/wxadoc/dev/framework/MINA.html)
> * [基础组件](https://mp.weixin.qq.com/debug/wxadoc/dev/component/)
> * [API](https://mp.weixin.qq.com/debug/wxadoc/dev/api/)
> * [工具](https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/devtools.html)
> * [Q&A](https://mp.weixin.qq.com/debug/wxadoc/dev/qa.html)
> * [开发者社区](https://developers.weixin.qq.com/)

虽然很着急马上动手写码,但以前的经验告诉我,冷静,先看好文档。

道理很简单,了解需要的资源在哪里,什么能读懂,什么看不懂,才能有针对性的实验和学习。

## [简易教程](https://mp.weixin.qq.com/debug/wxadoc/dev/)
与其在网上东找西凑,不如到官网花点时间好好读读,入门教程:
* 基础
* 起步
* 申请帐号
* 安装开发工具:官方的[工具文档](https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/devtools.html)必须好好读一下,然后操练
* 我的第一个小程序
* 编译预览
* 代码构成
* JSON 配置:[app.json配置](https://mp.weixin.qq.com/debug/wxadoc/dev/framework/config.html) *官网文档给的链接过期,看来bug不少*
* WXML 模板:[WXML标签语言](https://mp.weixin.qq.com/debug/wxadoc/dev/framework/view/wxml/) *微信自定义标签语言,运行在webview下,定制的 html*。微信提供了[一套组件](https://mp.weixin.qq.com/debug/wxadoc/dev/component/),熟练掌握组件,在处理需求时可以灵活运用
* WXSS 样式:[WXSS样式表](https://mp.weixin.qq.com/debug/wxadoc/dev/framework/view/wxss.html) *微信自定义样式语言,阉割版的 css,使用时有许多限制*。配合 [WXS脚本](https://mp.weixin.qq.com/debug/wxadoc/dev/framework/view/wxs/) 构建页面结构
* JS 逻辑交互:通过 [事件](https://mp.weixin.qq.com/debug/wxadoc/dev/framework/view/wxml/event.html) 响应用户行为。微信提供了一套 [API](https://mp.weixin.qq.com/debug/wxadoc/dev/api/),熟练掌握用法、限制以及各种坑,很关键
* 小程序能力
* 小程序的启动:需要了解小程序的生命周期,包括隐藏、唤醒、销毁、冷启动/热启动
* 程序与页面:需要了解页面的生命周期,页面跳转,页面栈在各种状态下的处理
* 组件
* API
* 发布前的准备
* 用户身份
* 预览
* 上传代码
* 小程序的版本:这里需要关注 [基础库](https://mp.weixin.qq.com/debug/wxadoc/dev/framework/client-lib.html)的版本,对于向下版本的兼容,是很大的一个坑
* 上线:看了 [开发者社区](https://developers.weixin.qq.com/) 未解决的问题,就知道微信的坑有多少
* 提交审核
* 发布
* 运营数据
* 体验小程序
* 更新日志

看起来似乎正在按照教程的路线在走,接下来应该是要想好第一个版本小程序的内容,解决文档和demo中遇到的不理解的问题。

39 changes: 39 additions & 0 deletions program-blog/wexin-app/learn-weixin-app-day4.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# X天小程序开发速度入门--第4天

感冒休息了1天,今天继续

> 熟悉[小程序开发工具](https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/devtools.html)

## 解决以下问题
* 项目常见操作:新建无AppID项目、删除项目、打开/切换项目、查看项目信息
* 导入:**目前没有提供导入项目功能,早期版本有过**,可采取暴力文件删除拷贝方式
* 查看项目信息:点“详情”
* **设置项目基础库**:点“详情”,工具基础库版本,用来调试低版本兼容
* 项目文件、目录操作
* 1.0.1171160版本解决了在目录下创建目录和文件问题,新增了**Component**
* 编辑文件:设置背景色、字体
* 自动提示:对微信API做了很好的提示,JavaScript、JSON、WXML都做了很好的提示,用`TAB`键补全
* 调试:这是很关键的一个功能
* 调试器 Console:输入和调试代码,比起在debug里面查看变量方便很多
* 调试器 Wxml:可以直接查看wxml 转化后的界面,与chrome里面查看html的DOM模型一样
* 调试器 Source:查看源码,下断点,调试
* 调试器 AppData:查看数据非常方便,比如定义的userInfo、motto等信息
* 调试器 Storage:查看本地存储,配合清缓存调试
* 调试器 Network:查看网络调用,与后台通信时用到
* 调试器 Sensor:模拟地理位置和重力感应,高级功能(不大常用:P)

## 其他重要功能
* 切后台:模拟小程序切换到后台的状态
* 预览:在手机上预览,需要AppID
* 上传、测试、腾讯云
* 点“详情”,域名信息:做设置

## 其他功能
* 点工具登录头像:可以查看版本更新信息,以及在社区文章中的回复

工具已OK,可以上路了。

## 注意事项
* 一些微信API必须在真机实验,参见[这里](https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/notsupport.html)
* 一些JavaScript API不支持,参见[这里](https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/details.html#客户端es6-api-支持情况)
* 工具要每天更新,切记
Loading