Please Stay With Me

Coding Together


  • 首页

  • 归档13

  • 分类6

  • 标签11

  • 关于

  • 搜索

未命名

发表于 2018-05-01

前言

这里筑梦师,是一名正在努力学习的iOS开发工程师,目前致力于全栈方向的学习,希望可以和大家一起交流技术,共同进步,用简书记录下自己的学习历程.

个人学习方法分享
2017年计算机系书单分享

1
2
3
4
5
6
7
本文阅读建议
1.一定要辩证的看待本文.
2.本书单原本打算在后半年才放出,但是因为抄袭,我觉得还是立即放出来给大家分享比较好.
3.本书单所涉及书籍如有需要,可以简信私我,仅供学习交流使用,如有侵权请与我联系.
4.2018年书单均为我在学习过程中所阅读书籍,可能会与17年书籍有所重复.本文将在年底结束更新.
5.觉得哪里不妥请在评论留下建议~
6.觉得还行的话就点个小心心鼓励下我吧~

1
2
3
4
5
6
7
8
目录
1.实体书籍
2.学习方法相关书籍
3.程序员思想书籍
4.全栈必读书籍
5.全栈拓展书籍
6.写作书籍
7.其他书籍

提示

因为本人尚且还在搜集属于18年的新书籍,如果您有什么好书推荐,请不吝私信我,我将会添加到本书单~


实体书籍

因为当当网书香节和京东读书月,我入手了我的第一批实体书,当阅读完以后,我会挨个发表读书笔记~希望各位继续关注

本人挑选实体书两个准则:
1.近一年出版的书,网络上没有电子版.
2.有电子版的书,但是需要反复研读的,例如CSS世界.
3.工具书,需要随时可以进行翻看的.

网络信息化时代,实体书存在的意义,便是阅读之后知识的沉淀,其吸收知识的效率,要比看视频和直播快.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
基础类书籍
细说系列丛书:
1.细说网页制作
2.细说JavaScript
3.细说DOM
4.细说AJAX和JQuery
5.细说HTML5高级API
CSS实战手册
CSS权威指南
学习JavaScript数据结构与算法.
ES6标准入门
MySQL排错指南
Node.js设计模式

项目类&实践类
CSS世界
B/S项目实战开发
疯狂前端开发讲义jQuery+AngularJS+Bootstrap前端开发实战
全栈开发之道:MongoDB+Express+AngularJS+Node.js
前端系列丛书:
深入浅出WebPack
前端工程师必备技能Vue
前端工程化:体系设计与实践
高效前端:Web高效编程与优化实践

iOS开发类:
iOS开发实战:从入门到上架AppStore
iOS11开发指南
Sketch & Xcode 双剑合璧
动静之美Sketch移动UI与交互动效设计

励志类:
最怕你一生碌碌无为,还安慰自己平凡可贵
姑娘,脱贫比脱单更重要
好看的皮囊千篇一律,有趣的灵魂万里挑一
你要么出众,要么出局
你所谓的稳定,给不了你想过的生活

有很多人会说,买这么多实体书,你看的完吗,我笑笑:
脚踏实地,循序渐进

我的同事买的:

CSS世界
Node.js区块链开发
Laravel入门与实战:构建主流PHP应用开发
HTML5+CSS3+jQuery Mobile轻松构造App与移动网站
HTML5游戏开发技术–Egret Engine
锋利的jQuery(第二版)
HTML5移动开发

这些书的读书笔记可以关注一下我的同事.

学习方法相关书籍

1
2
如何高效学习(斯科特.杨)
我也能做CTO之程序员职业规划

程序员思想书籍

1
2
3
4
5
《人月神话》
《编译原理》
《事务处理》
《汇编语言程序设计》
《程序员的自我修养—链接、装载与库》

全栈必读书籍

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Head First HTML与CSS 第2版
Head First HTML5 Programming(中文版)
Head.First.PHP.&.MySQL
Head First JavaScript
图解HTTP
PHP和MySQL.Web开发(原书第4版)
Head First 设计模式(中文版)
Head First Web设计(中文版)
Head First Jquery(中文版)
HTML5与CSS3权威指南(完整版)
JavaScript_DOM编程艺术第二版(中文)
JavaScript高级程序设计第3版
JavaScript设计模式与开发实践
php精要版(高洛峰)
深入PHP面向对象模式与实践
细说php第二版扫描
HTTP权威指南.David.Gourle
图解TCP_IP_第5版
TCP-IP详解三卷
---------以上为AMP入门必读---------

项目开发必读书籍

1
2
3
4
5
App后台开发运维和架构实践
现代企业的Web架构、流程及组织
密码编码学与网络安全-原理与实践(原书第5版)
AliDouble11
阿里技术参考图册 研发篇&算法

全栈拓展书籍

1
2
3
4
5
6
CSS世界
SQL注入攻击与防御第2版
Head First Java 中文版(Java后台入门必读)
Head First Servlet and JSP(Java后台入门必读)
Head First SQL(中文版)(Java后台入门必读)
Head First Python(中文版)(Python后台入门必读)

写作书籍

1
2
3
文案创作完全手册/罗伯特·布莱
麦肯锡教我的写作武器/高杉尚孝
完全写作指南/劳拉·布朗

其他书籍

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
《活法》/稻盛和夫
《干法》/稻盛和夫
《成功的真谛》/稻盛和夫
《阿米巴经营》/稻盛和夫
《精益创业》/埃里克·莱斯
《从0到1》/彼得·蒂尔
《黑天鹅》/纳西姆·尼古拉斯·塔勒布
《金字塔原理》/芭芭拉·明托
《无为》/森舸澜
《格调》/保罗·福赛尔
《这才是心理学》/基思·斯坦诺维奇
《输赢心理学》/波·布朗森&阿什利·梅里曼
《社会性动物》/E·阿伦森
《人性的弱点》/戴尔·卡耐基
《时间简史》/斯蒂芬·霍金
《宇宙的尺度》/大卫·布拉特纳
《宇宙的琴弦》/布赖恩·格林

结束语

如果您对这篇文章有什么意见或者建议,请评论与我讨论.
如果您觉得还不错的话~可以点个喜欢鼓励我哦.
如果您想和我一起学习,请毫不吝啬的私信我吧~
介个是我的个人博客,欢迎参观哦~

浅谈iOS架构师的技能栈

发表于 2018-04-26 | 分类于 iOS开发

浅谈iOS架构师的技能栈

前言

这里筑梦师,是一名正在努力学习的iOS开发工程师,目前致力于全栈方向的学习,希望可以和大家一起交流技术,共同进步,用简书记录下自己的学习历程.

个人学习方法分享
iOS开发学习路线
浅谈iOS进阶路线

1
2
3
4
5
6
7
本文阅读建议
1.一定要辩证的看待本文.
2.本文仅代表个人片面观点,如有不同观点,还往及时指出.
3.本文只阐述学习路线和学习当中的重点问题.需要读者自己使用百度进行拓展学习.
4.本文所表达观点并不是最终观点,还会更新,因为本人还在学习过程中,有什么遗漏或错误还望各位指出.
5.觉得哪里不妥请在评论留下建议~
6.觉得还行的话就点个小心心鼓励下我吧~

1
2
3
4
5
目录
1.技能栈路线
2.iOS架构说
3.大、中、小公司的区别
4.架构师思想

为什么我又会开一篇文章,而且又是大致一样的标题,因为我觉得这是不同层面的问题,不同层面的文章,上一篇可以说是我掌握的一些知识的分享,而这篇章完全是在阅读了APP架构师实践指南这本书有感而发的.

上篇文章只是单纯自己想要提升自己的一个路线总结,而当我看到这本书以后,它彻底改变了我对iOS开发的看法,我突然发现有很多我本该掌握必备的技术栈,我并不会,甚至很是陌生,深感自己还有许多东西要进行学习.

这篇文章单纯的技术交流篇,本人深感自己水平尚且不够,还需长时间的努力学习,希望本文可以对各个iOS开发工程师有所帮助,迅速找到自己的定位和不足,及时提升自己.

推荐书籍

本文推荐书籍,均参考于APP架构师实践指南一文.

1
2
3
4
5
6
7
8
架构之美
人月神话
精益创业实战
架构师技能矩阵
软件架构设计
Swifter:100个Swift开发必备Tip
Java8新特性
Java动态代理机制分析及扩展

技能栈路线

语言语法

Objective-C
Swift

工具使用

IDE
编译调试
版本管理
产品设计
SDK使用

常用模块

基础组件
常用业务模块
编译打包
版本适配
第三方SDK
网络库加密

安全逆向

逆向分析
安全测试
安全建议

混淆签名
加固加壳
安全编码

性能优化

硬件性能
UI和CPU
内存性能
网络性能
包Size
启动速度
代码优化

架构和重构

组件化和模块化
UML基本功
设计模式
接口设计
架构模式选型
重构

质量和稳定

质量稳定性指标
CI和代码监控
Crash
测试

兼容性测试
自动化测试
性能安全测试
A/B Testing
代码覆盖率

上述架构路线从书上整理下来,方便各位查阅学习.

为了不对原书作者造成侵权,每个技能栈我都将以自己的理解进行描述,强烈建议各位读者购买这本APP架构师实践指南明确自己的定位,提升自己的思想,感受不一样的iOS开发观念.

自我定位

其实并不是因为看了APP架构师这本书以后,你就成为一个iOS架构师了,而是重点去学习它的观念,一个架构的观念.

本书第一章就可以确认自己定位,而仅仅只有7页.就可以让我受益匪浅,直接看清自己的不足,和所不会的技能栈.

基础语法

如果你只会一门编程语言,无论多么精通,仍然显得不够优秀

确实,即便你只精通一门编程语言,也要进行各种语言的了解,不能因为自己不从事相关的工作,就不进行了解学习,干坐井底之蛙.

例如Swift 和Java的区别和新特性,即便市面上普遍都是OC,但你至少要做到,和别人提及Swift语言,熟悉不陌生.

不同的语言虽然语法不同,但是其逻辑思想是通用的,也就是说,学会一门语言,再学习另一门语言就比较容易.从而快速提升自己.

关键词:编程范式,反射、注解、泛型

APP开发工具系列

  • 编译工具
  • 编译调试
  • 版本管理

    产品设计

  • 生命周期
  • UI设计
  • 存储和网络

    常用模块

    常用模块则是平常在快速搭建和开发App当中,会调用一些自己或别人历史的积累和经验总结而成的第三方库或者工具库.

关键词:图片库,网络库,启动引导模块,登录注册模块,运营统计模块, 编译打包,版本适配.

组件化、模块化、插件化

模块:强调职责,可实现的单元,其核心是内聚和分离

组件:也称构件,强调复用.其依赖性比较高.

可以百度进行学习iOS开发 组件化,iOS开发 模块化.

插件化则是另一种实现方式,其三种方式目的均是为了实现重用和解耦,而插件化则是更注重增量满足其目的.

设计模式、接口设计、架构模式

设计模式是指,在实现业务逻辑时,代码逻辑的目标和实现模式,例如:MVP,MVVM,MVC等.

接口设计的概念却是主要体现在封装的概念上,一个强大的库,其封装的接口越灵活,越成熟.

架构模式本人尚未参透,理解当中,还希望各位移步百度进行学习.

这三点,可谓是架构的重中之重,一个项目代码是否高效,是否成熟,都和这三个有着密不可分的关系.

推荐书籍:

1
2
3
设计模式精解-GOF23种设计模式机械
设计模式:可复用面向对象软件的基础
大话设计模式

重构

重构分为两种:代码重构和架构重构,大家可以参考重构:改善既有代码的设计进行学习.

代码质量、性能优化、安全逆向

目前个人还在学习当中,就不在此为各位同行们班门弄斧,推荐作者书中推荐的一些好的书籍给大家进行学习.

推荐书籍:

1
2
3
4
5
6
7
8
9
iOS测试指南
大话App测试2.0
FaceBook iOS启动时优化
25 iOS App Performance Tips & Tricks.
逆向工程核心原理
iOS应用安全工方实战
iOS应用逆向工程
iOS安全攻防(二十三):Objective-C代码混淆
iOS签名原理

iOS架构说

既然说到iOS开发架构,不得不再次提及Casa大的文章iOS架构谈.

这篇文章属实说,对我个人收益很大,他让我养成了良好的代码习惯,和架构目录,在不同阶段看都能在该文章学到不一样的知识.

iOS架构,说远不远,有些iOS开发工程师,包括外包,产品,可能每天的任务都是一样,经理提出需求->完成需求.但小型公司,要求不严,需要极速开发App的那种甚至根本不会注重什么开发细节.

即便你学习iOS架构,也在当前的工作没有用武之地,也正如大家经常说的“学他干嘛,工作中又用不到”.

架构是一个成熟的概念,是每一个开发工程师都可以进行学习,提升自己的一条路径,我不知道怎么说,怎么形容,会让那些觉得无所谓的同僚们进行学习.

我之前并没有怎么写过文章,总觉得怎么写都不能同时兼顾努力学习的程序员和程序员劝退师,总觉得和那些人格格不入,又无法改变他们的观点,索性,还是尽自己努力,帮一些努力学习的程序员,共同进步吧.

大、中、小型公司的区别

你会发现,随着你就业的公司规模变化,你进入的公司越大越知名,其公司内部的规范,要求,架构都会越来越成熟,逻辑性更明确,业务逻辑针对性更强.

其开发周期固定,效率和业务产出也都各不相同,但自己是否能够真正适应其本身的工作强度,值得令人深思.

大公司的开发模式,和其内部的代码文化都是能够让程序员快速成长不可或缺的一部分.

就比如说我,让我现在进入一家大公司就业,我可能完全是个小白,什么是工程化,什么是加密,分布式存储又是什么,异步处理高并发等等.

大型公司的架构模式,组件化,模块化,团队开发模式,迭代策略,一直都是我想学习的东西,所以我要努力学习,尽量让自己配的上可以在大公司工作的机会.

如果自己不努力,即便这个机会摆在你的面前,恰巧你又面试进了大公司,你都会因为实力不足失去这份工作.

不要安于现状,根本不会有上面的恰巧,每一个面试进BAT大公司的人都不是碰巧面试进去,而是精心准备的必然结果.

有机会,我一定要去大公司工作进行学习.

架构师思想

加入过一些群,交流过想法,很多人都调侃自己是码农,另一个便是架构师的角色,我个人觉得从码农转变为架构师,就是从用语言到理解语言、拓展语言的一个思想转变.

如果你只是单纯的使用语言完成业务需求,只思考自己的业务栈,那便是码农.但如果你去思考,怎么用,为什么用,怎么组合更好,那便是架构师思想了.以整个项目的开发观念去看待自己个人的业务逻辑如何实现,怎么实现更高效,那么你就正在向架构师转变.

很多人都说过我,想的真多,你这都是虚的.你终究是码农.我不予评论,我心里只想默默努力,提升自己的水平,完成自己的转换过程.

你是否有想过,你到底是在开发一款应用,还是在像一名流水线员工搬运代码,完成绩效?

总结

本文是读APP架构师一书有感而发,其本意希望各位同行的iOS开发工程师,一起学习共同进步.如果有什么错误,还请及时指出,我会及时修改.谢谢

结束语

如果您对这篇文章有什么意见或者建议,请评论与我讨论.
如果您觉得还不错的话~可以点个喜欢鼓励我哦.
如果您想和我一起学习,请毫不吝啬的私信我吧~
介个是我的个人博客,欢迎参观哦~

浅谈iOS进阶路线

发表于 2018-04-24 | 分类于 iOS开发

浅谈iOS进阶路线

前言

这里筑梦师,是一名正在努力学习的iOS开发工程师,目前致力于全栈方向的学习,希望可以和大家一起交流技术,共同进步,用简书记录下自己的学习历程.

个人学习方法分享
iOS开发学习路线

1
2
3
4
5
6
7
本文阅读建议
1.一定要辩证的看待本文.
2.本文仅代表个人片面观点,如有不同观点,还往及时指出.
3.本文只阐述学习路线和学习当中的重点问题.需要读者自己使用百度进行拓展学习.
4.本文所表达观点并不是最终观点,还会更新,因为本人还在学习过程中,有什么遗漏或错误还望各位指出.
5.觉得哪里不妥请在评论留下建议~
6.觉得还行的话就点个小心心鼓励下我吧~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
目录
1.苹果官方文档 & 新API
2.iOS第三方库源码 & 实现原理
3.iOS标配技能
4.iOS多线程
5.iOS架构 & 代码规范
6.iOS工程化管理
7.苹果官方Kit
8.Runtime & Runloop
9.iOS FFmpeg & Opencv原理
10.iOS底层原理
11.iOS App逆向
12.iOS Swift
13.本文没有提到的知识点
14.明确自己的定位和路线

推荐书籍 & 网站推荐

苹果官网API搜索

Head First iPhone/iPad开发
iOS应用安全权威指南
高性能iOS应用开发
高级核心动画技巧
2017蚂蚁金服AR框架
京东应用架构设计
王巍-Swift4.0
SwifterTips (第四版)
OS X与IOS内核编程
OpenGL着色语言
avfoundation秘籍
CFNetwork-编程指南
通过实现TableView来理解IOS编程
七牛云直播技术分享


阅读前须知

之前那篇iOS开发路线是去年9月份做好的,删除了底层部分和逆向部分,因为本人尚在学习之中,不方便对未知领域做片面总结,包括本文,其目的是为了向大家分享,如果是我在进行iOS进阶过程中会去学习的知识点.

多的不说,只说两点:
1.确实觉得自己水平实力低于平均水平,明显想提升自己实力的.
2.如果有”这些技能工作当中用不到,学来干嘛?”这种想法,请叉叉掉,我不欢迎,谢谢.

既然大家都是想提升实力,就不要老去思考工作当中用不用的到,每个人职能就那么点,为什么会分水平高低,还不是因为人家懂得多?心里没数?别心浮气躁的,踏踏实实的提高硬实力.

iOS基础

本文主要是为了补充iOS开发学习路线那篇文章,所以到达这一步,就暂定你已经会基本的操作,以及独立开发过项目了.

苹果官方文档 & 新API

苹果开发者官网有对每个API的解释,使用,介绍.

使用百度”iOS开发”+ 空格 +”各个知识点” 来搜索学习各种自己不擅长的知识.例如:iOS开发 Runtime原理.

iOS第三方库源码 & 实现原理

我们平常经常使用第三方库,例如:AFNetworking,MJRefresh,YYKit,SDWebimage,SDAutoLayout,Masonry.

那么你是否去查看其第三方库是如何封装的?

AFNetworking是如何实现异步访问网络请求,如何处理你传给他的数据字典,在AFN内部进行了几层封装?

MJRefresh的实现原理是什么?
SDWebImage的缓存原理?
YYKit针对于FPS是如何优化的?
SDAutoLayout和Masonry的布局库原理有着怎么样的区别,其原理是依据什么进行布局的?谁的效率更高一点.
还有很多的第三方库值得我们去学习.

iOS标配技能

交流

首先,在公司日常的交流,要稳重不失礼节,出问题的时候,要针对问题提出解决方案,而不要带情绪.

当有新的业务需求提出时,根据自己的实力,给出不同的业务方案.

购物车

购物车可以说是在各个客户端,最经典的案例了,这是一个业务需求,也是涉及到增删改查,异步处理等各种业务逻辑混杂于一身的业务需求.

一个健壮的购物车,可以说是必备的业务技能.和登录注册同理.

支付

有了购物车,就一定会有支付,熟悉支付宝,微信,银联,苹果支付IAP等各种支付平台的接入,接入流程.

你可以没做过,但你不能不知道,就比如支付宝当中的加密算法RSA是属于什么加密.他是如何验证的.公钥和私钥是如何在APP和服务端存储验证的?

蓝牙

蓝牙这个就不细说了,很简单,自己写个DEMO,不要觉得自己没做过就很难,写一个连接Demo,没那么难.

实际蓝牙项目中,你可以根据业务需求,选择较为健壮,易接入的蓝牙设备.最好可以提供接入手册的那种,接入其实很简单,调试费劲罢了.

摄像头

同理蓝牙,摄像头需要选择提供成型SDK的厂家,除非你公司实力非常强大,肯购买提供底层库让你自己做SDK的摄像头.愿意投入时间成本去开发SDK.

3DTouch

写一个Demo练习一下,很简单,必备技能,但一般不是每个应用都做.

直播

直播现在中小型公司普遍采用第三方直播平台,不管你是否做过,你可以先去 腾讯云,七牛云,阿里云 开发平台进行学习,技术文档是开放的.

你哪怕知识看一遍,也比不看的要强的多.可以接入Demo测试学习一下.

当然,有些公司不想接入第三方,也有开源的框架可以自己做直播平台,这就需要三端连调,一同处理需求了.

RTMP推流

例如IJKPlayer FFmpeg,包括直播原理,你要懂.

直播的视频是遵循什么协议一个个将视频包分发到客户端,RTMP协议的优缺点等.

视频处理

视频处理,例如转码啊,旋转,编码.

不同格式的处理,视频大小的处理,为什么QQ和微信的小视频可以做到超级压缩?

如何对视频进行滤镜处理,类似抖音那样.

图片渲染&滤镜

GPUIImage是一个集滤镜,图像处理的框架,可以学习一下,如何添加滤镜,处理图片.

Socket & XMPP

即时聊天,也是当下流行的技术,每个APP几乎都少不了要有一个聊天功能,即使没有,也会涉及到客服,反馈等功能.

那么即时聊天遵循什么协议,用什么来做的呢?可以了解一下iOS当中如何用Socket 实现简易聊天,或者使用XMPP协议实现聊天?

RN开发 & JavaScript

React Native开发,由Facebook开源,React Native使你能够在Javascript和React的基础上获得完全一致的开发体验,构建世界一流的原生APP。

这是一门新技术,本人没接触过,所以不赘述,大家自己了解一下,一些公司会用这个开发App.

Git & SVN 项目版本控制

公司当中一般都有后端开发工程师 或者DBA创建一个属于本公司局域网的Git本地管理仓库.

如果你是单人开发iOS,那就需要掌握最基本的版本控制,

如果你在公司是团队开发,还要掌握冲突处理的技能

优雅的开发

[如何优雅的使用Mac进行开发]稍后更新

iOS多线程

GCD、NSOperation、NSThread各种灵活运用和嵌套

iOS架构 & 代码规范

iOS应用架构谈-By.Casa大
可以仔细学习这篇文章,养成良好的代码规范.

苹果官方Kit

  • ARKit.
  • SiriKit
  • HealthKit
  • HomeKit
  • SearchKit
  • IOKit
  • PDFKit
  • CloudKit
  • GameplayKit
  • SpriteKit
  • SceneKit
  • MusicKit
  • ResearchKit
  • MapKit
  • StoreKit
  • AVKit

可以尝试了解一下上面的各种kit官方API,因为有可能新的业务需求就是官方API调用的事就解决了.

Runtime & Runloop

Runtime和Runloop的原理和机制,以及如何使用,大家可以深入了解一下,因为个人水平原因,目前只有整理好的笔记,暂时不方便对此进行总结.

iOS FFmpeg & Opencv原理

FFmpeg和Opencv底层原理是什么,是什么支撑了这个强大的视频处理库.

iOS底层原理

结合Runtime机制深入了解Objective-C对象的本质和消息机制,其方法和对象在编译和运行过程中分别是什么状态.

iOS App逆向

App逆向目前本人也没有深入理解,不知道在工作当中如何应用,确实让我了解到iOS开发项目中之外的东西.

例如,客户端和服务器概念,SSH登录,以及各大有名的APP是如何架构的(推理一下).

iOS Swift

Swift目前已经4.0了,个人感觉本人会在Swift5.0进行学习吧,虽然很多项目没有用到Swift,但Swift确实是一个趋势,可以了解一下.

本文没有提到的知识点

  • 崩溃日志分析
  • 移动端加解密
  • 数据结构 & 算法导论
  • 混合开发
  • 机器学习
  • ARKit
  • RAC
  • iOS 工程化
  • 模块化开发
  • 组件化开发
  • 单元测试
  • 技术经理
  • 产品经理
  • 架构师
  • 阿里技术前沿
  • 跟随巨人的脚步

iOS进阶概念 By.SindriLin

本人尚在学习阶段,但我一直想传达一个积极向上的想法,以及个人的学习思路.因为水平欠缺,在发表文章之余,我结识了SindriLin前辈,与前辈交流了本人的想法.

SindriLin博客
SindriLin简书

前辈告诉我,进阶不能仅仅局限于iOS开发,而是要从工程的角度来看待开发工程师进阶这个说法.

代码设计能力

代码设计能力主要体现在如何设计代码,设计模式的核心在于六大原则,而不是具体的某些设计模式。

工具设计能力

工具设计能力在于使用工具的过程中,了解工具的实现,尝试去设计更适合工程的工具,这部分需要大量的代码积累。另一方面由于工具是可复用的,对代码设计能力的要求是有的,所以属于更高.

工程规划能力

  • 抗风险
  • 成本
  • 回报

总结

确实,作为一个开发工程师,应该去纵观整个工程,而不是仅仅局限于自己的工作栈,否则不可能获得质的提升.

总之,希望大家制定自己的路线进行努力,只要不原地踏步.

明确自己的定位和路线

和阿振有一天聊起了开发水平如何分辨,初中高级开发工程师的区别大致就是:使用第三方库,改第三方库,创造第三方库.

推荐看一下阿里分享的技术图册,你就会发现,阿里研究的技术正在世界的前沿,学无止境.

努力吧,美好的生活在向你招手~

结束语

如果您对这篇文章有什么意见或者建议,请评论与我讨论.
如果您觉得还不错的话~可以点个喜欢鼓励我哦.
如果您想和我一起学习,请毫不吝啬的私信我吧~
介个是我的个人博客,欢迎参观哦~

iOS开发学习路线

发表于 2018-04-19 | 分类于 iOS开发

iOS开发学习路线

前言

这里筑梦师,是一名正在努力学习的iOS开发工程师,目前致力于全栈方向的学习,希望可以和大家一起交流技术,共同进步,用简书记录下自己的学习历程.

个人学习方法分享

1
2
3
4
5
6
7
8
本文阅读建议
1.一定要辩证的看待本文.
2.本文主要是本人对iOS开发经验中总结的知识点
3.本文所有观点仅代表本人.
4.本文只阐述学习路线和学习当中的重点问题.需要读者自己使用百度进行拓展学习.
5.本文所表达观点并不是最终观点,还会更新,因为本人还在学习过程中,有什么遗漏或错误还望各位指出.
6.觉得哪里不妥请在评论留下建议~
7.觉得还行的话就点个小心心鼓励下我吧~

1
2
3
4
5
6
7
8
9
目录
1.对本职业看法
2.学习方法
3.职业规划
4.iOS开发学习路线
5.iOS基础知识点
6.iOS中级知识点
7.iOS高级知识点
8.官方Kit

对本职业看法

16年我尝试加入各种iOS开发交流群,群里的气氛大致就是:学什么iOS,iOS完了,OC完了.群里大致三种人:谁有企业开发证书,马甲包了解一下,iOS某网课推广.至今,大部分iOS开发群还都是仅供吹水用,偶尔能碰见几个好心人解决一下问题.


个人观点

个人观点:iOS开发这个职业,不是别人说完就完的,那些说完了的人都是因为技术菜,没有权威性,不想想自己为什么菜,为什么没有和唐巧王巍在一个高度,因为菜.

还没有到达一个高度就轻易否定一个职业,注定被这个职业淘汰.

所以,无视掉这种人这么荒谬的观点,那些真正有技术,懂得学习的iOS高级开发工程师,现在正在各大企业(腾讯百度阿里等),一句话,不要有比上不足比下有余的态度.努力学习.

真正会学习的人,不会说iOS完了,而是想着如何提升自己,你想想,真正牛逼的人,真的只会iOS开发这一种吗?


学习方法

面对有难度的功能,不要忙着拒绝,而是挑战一下,学习更多知识.

尽量独立解决问题,而不是在遇到问题的第一想法是找人.

多学习别人开源的第三方库,能够开源的库一定有值得学习的地方,多去看别的大神的博客.

作为一个程序员,如果你停止了学习,你也必将会被这个团队淘汰.

要把学习的技能当做兴趣,而不是为了挣钱去学习,是为了学习技能而学习.

有给自己定制一个详细的职业规划和人生规划,大到5~10年,小到近3年(并且细化到月)的计划.

不要盲目的面试,要针对即将面试的工作,准备面试.

首先针对一个自己没有接触到的知识,先使用 百度\谷歌等网站搜索资料.然后进行学习

这是个好东西,我劝你多用用https://developer.apple.com/search/

尝试写一个demo,对新技术进行熟悉.

如果市面上有成熟的Demo或者第三方库,下载下来进行学习.

在熟悉的过程中,遇到了任何问题,再进行百度/谷歌,学习不同人的不同看法和解决方法.


职业规划

个人观点

首先是针对iOS这个行业,找不到工作要从自身找原因,为什么自己没有大公司的工作经历,为什么大公司会把自己毙掉,因为实力不够,因为你菜,你不够强.要从自身找原因,是,培训机构一阵子培训了一堆iOS开发工程师,但你不能从特么一堆菜鸟中杀出去,你就是菜鸟,不要怨天尤人了,好好努力学习.

不要只做到鹤立鸡群,而想着怎么离开这群鸡,重归鹤群.

针对程序员行业,这是一个需要努力奋斗的行业,也许他并不需要你有多高的文凭,好的文凭可以去大公司工作,没有好的文凭,但拥有丰富的工作经验,和开源库,也会是你本人实力的体现.所以,努力学习,路是自己走出来的,原地踏步谁也救不了你.

职业规划一般分为两种,横向和纵向,程序员行业横向走项目经理提成获得分红,纵向发展成为技术经理,必要时可以自行创业


iOS开发学习路线

iOS定位

  • iOS定位

    • 简介:这里的定位,仅仅代表我个人意见,仅符合本笔记如何学习从哪里开始学习,怎么去学习来说.
    • 尚未入门
      • 如何判断自己是否入门
        • 是否了解Mac
        • 是否了解Xcode
        • 是否了解Objective-C
        • 是否会使用UI控件.
        • 如果上面的都不了解,那说明你还没有入门,请从iOS学习路线开始学习.
    • 初级iOS开发
      • 说明:作为一名初级的iOS开发,你需要具备以下技能
      • 必备技能(全部都会的情况下查看下一项)
        • Xcode的使用
        • 第三方库的灵活使用
          • AFN
          • MJRefresh
        • 各种网站的使用
      • 如何判断是否可以升阶
        • 是否了解AFNetworking 的实现原理
        • 是否了解SDAutolayout/Masonry 一种布局库的原理
        • 是否能够处理基本的iOS崩溃原因/无法编译原因/无法上架原因?
        • 是否拥有了一定的工作效率,稳定的工作效率.(而不是说,上面派了一个活下来,忙都忙不完,天天加班,还一堆bug)
        • 是否能够处理第三方库引起的崩溃.
        • 是否可以很好的融入工作环境,完成每一阶段的工作指标,而不会让自己疲惫不堪.
      • 结论
        • iOS中级开发说白了,就是你学会了基本的UI界面搭建,上架,沉淀一段时间,你觉得自己还适合这门行业,还适合,还能接受 这个所谓的iOS开发工程师的行业.你就可以说是一名中级iOS开发.
        • 这个沉淀时间 大约在1年的实际工作中,就可以完成.
        • 如果你觉得这门行业不适合你,请仔细结合自身情况,是否转另一门计算机语言,还是彻底转行.
    • 中级iOS开发
      • 说明:作为一名中级的iOS开发,你需要具备以下技能
      • 必备技能(全部都会的情况下查看下一项)
        • 应用的内存处理
        • 应用的推送处理
        • 应用的模块化/单元测试
        • 应用的第三方集成/集中化管理/稳定迭代
        • 阅读强大的第三方源码/拥有快速上手新的第三方库的能力.
        • 能够接受各种新功能的开发(这里是指,即使你没有做过,但是你仍然可以凭借着学习,解决任何业务需求:例如:蓝牙.AR.摄像头.硬件交互.等)
        • 清楚明白数据的传递方式,应用与后台如何交换数据,交换数据的过程,结果,格式.
        • 多线程的灵活使用.
        • 各种并发事件的处理/以及界面的合理性/流畅度
        • 设计模式的灵活使用.
      • 如何判断是否可以升阶
      • 结论
    • 高级iOS开发
      • 说明:作为一名高级的iOS开发,你需要具备以下技能(我不是高级开发,所以这里只能给你们提供建议.)
      • 必备技能
        • 应用的组件化/架构分层
        • 数据结构,操作系统,计算机网络都有自己的了解和认知
        • Shell脚本/python/Ruby/JS 至少会一种.

    详细学习路线

  • 学习路线
    • 简介
      这里只简单阐述一些概念性的东西,以及学习路线规划,真正的知识请从iOS基础知识点往下开始看.
    • Objective-C
      • 介绍
      • 概念
      • 编译原理
    • 程序启动原理
      • App组成
        • Info.plist
        • .pch
      • 打开程序
      • 执行main函数
      • 执行UIApplicationMain函数
      • 初始化UIApplication(创建设置代理对象,开启事件循环)
      • 监听系统事件
      • 结束程序.
    • 语法.(此处定义可能略失严谨,口头教学为主)
      • 基础语法
      • 对象.
      • 属性
      • 数据类型
      • 方法
      • 继承
      • Frame/CGRect/CGPoint和CGSize
      • 内存(针对MRC下情况进行介绍)
      • ARC/MRC
      • 弱引用/强引用
      • Assign,retain,copy,strong
      • #import 和@class的区别
    • Xcode使用
      • 首先是针对Xcode菜单栏,希望自己可以去翻译一下每个菜单里每项功能的英文都是什么意思,有助于自己熟悉并加深印象的使用Xcode.
      • 熟悉Xcode的各个功能.
    • UIKit控件.
    • 界面分析(下载App进行学习).
      • 在这里推荐有兴趣的开发人员,下载并分析,AppStore中的每项分类的top50的应用,多学习大公司以及流行应用是如何开发应用的,其中流行的,新颖的开发界面的方式可以总结下来,猜想在大应用中,别的程序员是如何开发的.
      • 界面适配
    • 代码架构.
      • 代码架构文章推荐:https://casatwy.com/iosying-yong-jia-gou-tan-kai-pian.html
    • 各种工具、第三方的使用.
      • 其实每个项目的建立都大致分为:项目框架搭建,原生界面搭建,嵌入第三方库.有很多功能都会用到第三方库,大多数第三方库都是本着快速开发,完整功能实现的目的存在的.需要开发人员能够根据业务逻辑不同,选择最好最优质的第三方库进行使用.
    • 代码封装
      • 当使用较多第三方库后,要求开发人员学习其开发特点,以及其封装手法,运用在自己的项目上,封装自己的代码.灵活运用.
    • 完整项目.
    • 开发技巧
    • 个人心得

iOS基础知识点

  • iOS基础知识点
    • 如何学习iOS
      • 刚刚入门(如何学习)
        • 打好基础,学习OC中各种常用语法.
        • 学习如何上架,上架会因为什么被拒,了解App上架规则.
        • 多学习官方说明文档.
      • 刚刚入职1年(如何稳定)
        • 多看开源或者注明的第三方库.
        • 收藏并阅读各种大神的博客或者论坛.
        • 开始考虑项目中的细节优化,内存处理和耗电情况
      • 入职3年(如何进阶)
        • 开始涉猎不止于iOS领域中的知识,会去了解相关职位的基础知识,例如前端和后台或者服务器运维,或者项目相关知识,具体往自己的职业规划靠拢
    • 框架的学习
      • 苹果自带框架
      • 第三方框架
        • AFNetworking
        • SDAutoLayout
        • YYKit
        • SDWebImage
        • MJRefresh
        • MJExtension
        • Bugly
        • Qiniu
        • Masonry
        • TZImagePickerController
        • Hyphenate_CN
    • 基础UI控件
      • UILabel 标题栏
      • UIButton 按钮
      • UIImageView 图片视图
      • UITextField 文本输入框
      • UITextView 文本展示视图
      • UIProgressView 进度条
      • UISlider 滑动开关
      • UIGesture 手势
      • UIActivityIndicator 菊花控件
      • UIAlertView(iOS8废除) 警告框
      • UIActionSheet(iOS8废除) 操作表单
      • UIAlertController(iOS8出现) 警告视图控制器
      • UIScrollView 滚动视图
      • UIPageControl 页面控制器
      • UISearchBar 搜索框
      • UITableView 表视图
      • UICollectionView集合视图
      • UIWebView网页浏览器
      • UISwitch开关
      • UISegmentControl选择按钮
      • UIPickerView选择器
      • UIDatePicker日期选择器
      • UIToolbar工具栏
      • UINavigationBar通知栏
      • UINavigationController通知视图控制器
      • UITabbarController选择视图控制器
      • UIImagePickerController相册
      • UIImage图片
    • Xcode的使用
      • 基础操作 状态栏
      • 偏好设置
      • Xcode Source Control 源代码管理器
      • Xcode workSpace工作组
      • Xcode Scheme 计划
      • Xcode AutoLayout 约束
      • Xcode CoreData数据库
      • LLDB 断点调试
      • StoryBoard
      • 界面预览
      • 界面适配
      • 内存监测
      • 全局断点
      • 全局搜索替换
    • 数据存储
      • plist
      • NSKeyedArchiver
      • SQLite
      • FMDB
      • CoreData
      • NSUserDefault
      • 沙盒存储
      • NSDictionary归档
    • App生命周期
      • 应用生命周期
      • 控制器生命周期
        • alloc
        • init
        • 创建View
        • ViewDidLoad
        • ViewWillAppear
        • ViewDidAppear
        • ViewWillDisappear
          • 视图将要消失 (做一些视图将要消失时的UI的处理)
        • ViewDidDisappear
          • 视图已经消失 (做一些视图消失之后数据的处理)
          • viewDidDisappear销毁定时器
        • dealloc
        • didReceiveMemoryWarning
    • 开发者账号&上架流程
      • 文章推荐:
        • https://www.jianshu.com/p/6601a241da8e
        • https://www.jianshu.com/p/7c98651d3532
        • https://www.jianshu.com/p/9b994a019ee6
      • 个人
      • 公司
      • 企业
    • 常用知识
      • 通信
      • NS系列
      • 宏定义
      • 视图层次
      • 切换视图
      • 深浅拷贝
      • 对象序列化
      • 写入文件
      • 获取沙盒路径
      • 翻转视图
      • 延伸视图
      • 九大基本数据类型
      • 九宫格
      • 坐标比较
      • UIColor 、CIColor和CGColor 之间的关系
      • 画图
      • 静态变量
      • tag值
      • 延时执行方法
      • 界面旋转+状态栏隐藏
      • plist文件
      • KVC/KVO
      • 谓词NSPredicate
      • 帧动画
      • AutoLayout
      • isKindOfClass 与 isMemberOfClass
      • Return/Break/Continue
      • Core Animation
      • CALayer
      • Quartz2D
      • 真机调试
      • 静态库
      • 内存管理
      • iPad与iPhone的区别
      • 响应链
      • 异常捕捉
      • 国际化
      • 代码模块化
      • 类别/扩展

中级知识点

  • 设计模式
  • UIScrollView/UITableView/UICollectionView 的嵌套
  • 动态行高
  • 通知/代理/block
  • 程序启动原理
  • 触摸事件/手势
  • 图文混编
  • Runtime
  • NSRunLoop
  • GCD
  • ReactiveCocoa开发
  • 3DTouch
  • 界面渲染
  • Charles花瓶抓包
  • 区分模拟器/真机项目
  • 常用知识
    • 单例模式
    • 多线程
    • 网络请求
    • 定位
    • 源代码管理Git
    • 真机调试
    • 苹果内购/广告
    • 推送/远程推送
    • 音频/视频/二维码
    • Block
    • 蓝牙/传感器
    • 物理仿真器UIDynamic
    • 通讯录获取

iOS高级知识点

  • iOS高级知识点
    • Socket
    • XMPP
    • 加密
      • MD5详解
      • Base64加密解密
      • RSA非对称加密
      • AES对称加密
    • 音频
      • 基础
      • Core Audio
      • Audio Toolbox
      • OpenAL
      • AVFoundation
      • Speex语音聊天
      • AudioQueue/AudioSession
      • Speex简介
    • 视频
      • AAC视频.H264推流
      • P2P传输
    • 直播
      • 直播的技术分析与实现
      • RTMP协议
      • RTMP直播应用与延时分析
      • 如果做一款inke版的App
      • 推流发布和播放RTMP
      • FFmpeg
      • 基于FFmpeg的推流器
      • HLS流媒体传输协议(HTTP Live Streaming)
      • FFmpeg
      • ijkPlayer
    • 算法
      • 简介
      • 冒泡排序
      • 快速排序
      • 插入排序
      • 归并排序
      • 二分查找
      • 希尔排序
      • 动态规划
      • 堆排序

官方Kit

  • ARKit.
  • SiriKit
  • HealthKit
  • HomeKit
  • SearchKit
  • IOKit
  • PDFKit
  • CloudKit
  • GameplayKit
  • SpriteKit
  • SceneKit
  • MusicKit
  • ResearchKit
  • MapKit
  • StoreKit
  • AVKit

结束语

如果您对这篇文章有什么意见或者建议,请评论与我讨论.
如果您觉得还不错的话~可以点个喜欢鼓励我哦.
如果您想和我一起学习,请毫不吝啬的私信我吧~
介个是我的个人博客,欢迎参观哦~

2017年计算机系书单

发表于 2018-04-12 | 分类于 书单

前言

这里筑梦师,是一名正在努力学习的iOS开发工程师,目前致力于全栈方向的学习,希望可以和大家一起交流技术,共同进步,用简书记录下自己的学习历程.

个人学习方法分享
2018年计算机系书单分享

1
2
3
4
5
6
7
8
9
本文阅读建议
1.一定要辩证的看待本文.
2.本文不允许转载,因为...因为我要提供网盘给大家..
3.本书单所涉及书籍如有需要,可以评论私信我,**无偿提供网盘**,仅供学习交流使用,如有侵权请与我联系.
4.因为本人才学会Markdown语法,故将17年书单重新更新排版.
5.如果您有什么书籍想要推荐,请不吝私信给我,我将更新本文.
6.文中提到的为重点书籍,并不包含网盘中所有书籍.
7.觉得哪里不妥请在评论留下建议~
8.觉得还行的话就点个小心心鼓励下我吧~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
目录
1.读书方法
2.基础书单
3.清华大学计算机系书单
4.C语言
5.C++
6.Java
7.Python
8.GO
9.计算机网络
10.算法
11.数据结构
12.程序设计
13.Unix/Linux
14.UML和面向对象
15.计算机组成/体系结构
16.分布式/架构
17.大数据/HADOOP
18.数学系列
19.Git
20.安卓
21.iOS
22.其他
23.CS系列书单(很详细)

本文最后有:授人鱼不如授人以渔(找书方法)


个人想法

我想成为一名优秀的程序员,我虽然不是计算机系的学生,但我不能落后,我要努力成为优秀程序员的一员。我觉得每个人都有自己的想法和规划,一个理智的人会去分辨旁人的风言风语,把善意的话听进去,使自己成长。同时不受那些自己不上进也看不惯别人学习的人。时刻明确自己的目标,努力做好自己,在程序员这条路上,要谦虚要谨慎。话不多说。把我这几天准备的书单推荐给大家.


读书方法

读书方法仅供参考,如果你有好的建议,请不吝评论交流哦.


循序渐进

大家都知道,书籍方面,在各个分类中都有那么几本出名的书籍,但是学习成本和时间成本却很高,需要长时间去阅读吃透.

又或者说,我们总说数据结构要看,算法导论也要看,但往往看了50多页我们就放弃了.

如果你没有养成看书的习惯,以及自己的看书方法,建议不要一开始就阅读高难度的书籍,会直接破坏你对看书的兴趣.从而失去从书籍中获取知识的途径.

这么说吧,我之前看书也是不得其法,3个月看不了多少页,而且没有什么印象,喜欢咬文嚼字,后来发现,计算机系的书大多是理解为主,多次阅读进行深度体会,反而会更加得心应手.

而相对程序员思想这一类的书,则更加需要体会,拥有自己的理解.


思维拓展

在看书进行学习的时候,一定要边看边实践,实践的同时,一定要发散性思维,去思考相关的知识.

如果你是刚步入计算机应用,或者编程语言类书籍的学习,可能不会考虑到业务逻辑,以及架构思想等,因为知识面还不够宽广.就多想一些基础问题.不论这个问题多么的奇怪,一定要去寻找答案,并解决,这样会更加的印象深刻.

如果你想在学习时拥有成熟的思想,我推荐你从以下几个方面思考每一个书中遇到的知识点(针对编程语言类书籍)

工作层面:(可以直接百度 你所学的知识加上’开发’或者’工作中’等关键词进行学习)

业务逻辑实现:(生搬硬套不可取,而是如何灵活运用实现成熟的逻辑)

自我应用:(学习新的知识点以后,你可以自己思考应用在什么地方)

当你使用百度去搜索知识时,别人可能会提到一些你不懂的知识点,不用很深入的再去百度一下.拓宽自己的知识面,使得所有的知识都不再是死的,而是灵活组合的,程序当中都是各自联系,成为一个体系的.都是有联系的.


三维笔记

什么是三维笔记呢,也就是我个人的一个学习方法.

自学读书笔记+学习日志&视频学习+成型的输出笔记.

自学读书笔记:就是记录书中的知识点,用自己的理解整理知识点,而并非搬运书中的目录结构.并会记录每一个自己会思考到的问题,以及知识拓展.

学习日志&视频学习:这里并不是强制让你搜罗视频学习,而是书是出版的,有些知识可能会过时,所以一定要结合实时知识,辩证的去理解每一个知识.学习日志是为了记录自己每天干了什么,不要虚度光阴,使自己可控.

成型的输出笔记:结合前两个笔记以后,将自己的笔记整理成可以写成文章的笔记,输出倒逼输入学习法,在输出文章的同时,自己会自然而然想要完善文章,达到面面俱到,进行学习补充.


基础书单

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1.算法导论
2.计算机算法基础
3.编译原理
4.操作系统-精髓与设计原理
5.数据库系统原理
6.离散数学及其应用
7.计算机网络
8.计算机组成原理
9.Essential C++(注释版)
10.java程序设计教材
11.数据结构
12.线性代数
13.高等数学
14.大学物理学
15.概率论
16.数理统计
17.模拟电子技术
18.电路原理
19.Linux服务器操作系统
20.网络设备与网络技术

清华大学计算机系12门课程

1
2
3
4
5
6
7
8
9
10
11
12
1.数据结构 严蔚敏
2.编译原理 张素琴
3.内容中心网络体系架构
4.计算机系统结构
5.图论与代数结构
6.计算机组成与结构
7.80x86汇编语言程序设计
8.C语言程序设计
9.多媒体技术基础
10.数据库系统概论
11.C++语言程序设计
12.计算机局域网

知乎书单 by ZhiSheng

这份书单可以说是很详细的涉及到了各个语言的好书,是我在某个问题回答里看到的。

C语言

《C程序设计语言》
《C语言参考手册》

C++

《Essential C++》
《C++ Primer》
《深度探索C++对象模型》
《C++程序设计语言》
《Think in C++ C++编程思想》

Java

《Java语言规范》
《Java并发编程实战》
《Java核心技术 卷1》
《Java核心技术 卷2》
《 Java编程思想》
《Effective Java》
《深入分析Java Web技术内幕》修订版
《深入理解Java虚拟机:JVM高级特性与最佳实践》第二版

Python

《Python学习手册》
《Python核心编程》
《Python网络数据采集》
《Flask Web开发:基于Python的Web应用开》发实战

GO

《GO并发编程实践》

Network

《计算机网络自顶向下方法》
《计算机网络》
《计算机网络系统方法》
《TCP/IP详解卷1》
《TCP/IP详解卷2》
《TCP/IP详解卷3》

算法

《算法导论》
《算法》

数据结构

《数据结构与算法分析C语言描述》

程序设计

《程序设计实践》

Unix/Linux

《The Design Of The Unix Operating System》
《 Unix环境高级编程》
《Unix网络编程卷1》
《Unix网络编程卷2》
《Unix超级工具》
《Unix编程环境》
《Unix编程艺术》
《鸟哥私房菜——基础知识篇》
《鸟哥私房菜——服务器篇》
《Linux内核设计与实现》
《Linux系统编程》
《深入理解Linux内核》
《 Linux设备驱动》

UML和面向对象

《面向对象分析与设计》
《UML面向对象建模与设计》
《UML用户指南》
《设计模式》

计算机组成/体系结构

《深入理解计算机系统》
《计算机体系结构量化研究方法》
《计算机组成与设计:硬件/软件接口》
《计算机组成与嵌入式系统》
《MIPS体系结构透视》

分布式/架构

《分布式系统概念与设计》
《分布式系统原理与范型》
《大型网站技术架构:核心原理与案例分析》
《大型网站系统与Java中间件实践》

大数据/HADOOP

《Hadoop权威指南(中文第2版)》

数学系列

《数学分析新讲》
《数学之美》

Git

《Git 权威指南》

安卓

《第一行代码 android》
《Android 开发艺术探索》
《安卓群英传》

iOS

《Objective-C编程之道之IOS设计模式解析》
《Objective-C基础教程(第2版)》

其他

《人月神话》
《编译原理》
《事务处理》
《汇编语言程序设计》
《程序员的自我修养—链接、装载与库》
《代码揭秘—-从c/c++角度探索计算机系统》
《编程之美》
《剑指offer》


知乎书单 By 箴光司

这份书单主要是国外CMU大学课程表,是一份国外大学如何进行CS课程学习目录。从不同的学习方法以及角度,进行进一步的学习。

CMU的课程计算机核心课程

(合计 17学分, 学分已经转化为成国内的算法,略有出入)如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
15-128 Freshman Immigration Course (介绍类,时间很短)

15-122 命令式语言编程Principles of Imperative Computation (2.5学分,没有编程基础的同学)

15-150 函数式语言编程Principles of Functional Programming(2.5学分)

15-210 并行/串行数据结构 Parallel and Sequential Data Structures and Algorithms (3学分)

15-213 计算机系统基础Introduction to Computer Systems (3学分)

15-251 计算机理论基础Great Theoretical Ideas in Computer Science (3学分)

15-451 算法分析与设计 Algorithm Design and Analysis (3学分)

B: 一门技术交流课程One Communcations course:

1
15-221 计算机科学家技术交流Technical Communication for Computer Scientists(2学分,相当于我们的英文写作课程,也关注口头表达)

C: 从下面选择一门算法课程

1
2
3
4
5
6
7
8
9
15-354 计算离散数学Computational Discrete Mathematics (3学分)

15-355 现代计算机代数Modern Computer Algebra (2学分)

15-453 形式化语言与自动机Formal Languages, Automata, and Computability (2学分)

21-301 组合数学Combinatorics (2学分)

21-484 图理论Graph Theory (2学分)

D: 从下面选择一门应用类课程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
05-391 人机交互 Designing Human Centered Software (3学分)

05-431 用户界面Software Structures for User Interfaces (1.5学分)

10-601 机器学习 Machine Learning (3学分)

11-411 自然语言处理 Natural Language Processing (3学分)

15-313 软件工程 Foundations of Software Engineering (3学分)

15-322 计算机音乐 Introduction to Computer Music (2学分)

15-323 计算机音乐和信息处理 Computer Music Systems and Information Processing (2学分)

15-381 人工智能 Artificial Intelligence: Representation and Problem Solving (2学分)

15-384 机器操作Robotic Manipulation (3学分)

15-385 计算机视觉Computer Vision (2学分)

15-415 数据库应用Database Applications (3学分)

15-462 计算机图像Computer Graphics (3学分)

E:从下面选择一门理论类课程

1
2
3
4
5
6
7
8
9
15-312 计算机语言基础 Foundations of Programming Languages (3学分)

15-317 构造逻辑 Constructive Logic (2学分)

15-414 计算机自动化验证 Bug Catching: Automated Program Verification and Testing (2学分)

21-300 基本逻辑 Basic Logic (2学分)

80-311 复杂性 Computability and Incompleteness (2学分)

F:从下面选择一门软件系统类课程

1
2
3
4
5
6
7
8
9
15-410 操作系统 Operating System Design and Implementation (3学分)

15-411 编译器 Compiler Design (3学分)

15-418 并行体系结构与编程 Parallel Computer Architecture and Programming (3学分)

15-440 分布式系统 Distributed Systems (3学分)

15-441 计算机网络 Computer Networks (3学分)

授人鱼不如授人以渔(找书方法)

本人连续4天趴在知乎上,等各大网站上进行搜书。可以说我是一时兴起。很多人都说 我搜这么多书,不会看的。我笑笑,对,我可能真的看不完,但我不会不看。这三份书单的书pdf版相关的,不相关的我都找了,同时结合着百度,知乎,豆瓣等各网站找到各个科目相关知名书籍的pdf。抱歉原英文本没有几个,因为我自己英语水平还看不懂外著。

这些书的pdf版可能会涉及到版权问题吧。我三份书单大概找了有16G的pdf书,都找齐了,有需要的可以简信给我,免费传阅。

妙,16G的书包含了(三份书单各个知识点各个语言的好书)。但是,作为一个读者,我只对其中一本书感兴趣,我才不要你的16G,一点用都没,除了装能干吗?说的好!如果你想自己搜,没问题。鱼竿给你。


搜索利器

首先推荐无私奉献的脚本之家,这个站长呢唯一的要求可能就是,有的书需要你去关注公众号要百度盘密码,免费的。

脚本之家–搜索框直接搜索

第二个就是 会报有危险的网盘网站,虽然我也不知道有什么危险,你们如果知道告诉我,我把这个删了

搜索–点击资源–跳转百度盘

第三个就是 不知道在哪里淘的搜索网站 直接下载 用来下原英文本很不错哦

英文搜索网站

第四个就是 很有名的CSDN 资源搜索,我还买了个年会,为了下载舒服点。

CSDN下载页–右边搜索栏使用就好

在这里点名三本书:《自然语言简明教程》《深入理解机器学习 原理及算法》《数据库系统设计实现与管理》这三本书在网上的pdf资源我没有找到,尽管我动用了谷歌什么的,都只能找到加密的。然后。。然后我买了。如果有需要这三本书的话,你就别买了,我给你。

感谢这两位以及各位大牛在网络上提供的答案,使我找到了这些书。


结束语

如果您对这篇文章有什么意见或者建议,请评论与我讨论.
如果您觉得还不错的话~可以点个喜欢鼓励我哦.
如果您想和我一起学习,请毫不吝啬的私信我吧~
介个是我的个人博客,欢迎参观哦~

深入浅出学习前端开发(环境搭建篇)

发表于 2018-04-08 | 分类于 全栈开发

深入浅出学习前端开发(环境搭建篇)

前言

这里筑梦师,是一名正在努力学习的iOS开发工程师,目前致力于全栈方向的学习,希望可以和大家一起交流技术,共同进步,用简书记录下自己的学习历程.

个人学习方法分享
整体学习路线分享
上文:深入浅出学习前端开发(入门篇)

1
2
3
4
5
6
7
本文阅读建议
1.一定要辩证的看待本文.
2.准备进行基础的后台环境搭建学习.
3.本文是基于前端学习的后台环境搭建(AMP方向)
4.本文只阐述学习路线和学习当中的重点问题.需要读者自己使用百度进行拓展学习.
5.觉得哪里不妥请在评论留下建议~
6.觉得还行的话就点个小心心鼓励下我吧~

1
2
3
4
5
6
目录
1.概念
2.完整流程
3.Apache服务器
4.PHP脚本语言
5.MySQL数据库

推荐书籍 & 网站推荐

Head First PHP&MySQL

网站:在线文档API查询

概念

本篇文章阅读要求:
有一定的自学能力.
有一些HTML与CSS的基础.如果没有基础推荐先阅读我的这篇文章<>进行入门学习
有自己的看法,辩证进行阅读文章.

静态网页&动态网页

静态网页一般是指由纯HTML&CSS构建的网页,不涉及数据存储,不涉及JavaScript,只有一些基础的布局.
没有交互的网页是没有灵魂的,交互的网站一般都要存储数据,那么我们日常生活中经常浏览的网页,都是怎么开发的呢.

完整流程

一个网站的流程,由前端工程师 使用 HTML+CSS+JavaScript 进行开发静态页面+交互效果,由后端工程师 创建并维护 SQL数据库,然后进行本地联调,数据测试.测试完毕后由后端工程师使用Apache 发布网页,并配置相应站点以及域名.

其中根据前端工程师的水平不同,项目需求不同,会使用各种不同的JS库:VueJS,NodeJS,AngularJS,ReactJS,jQuery等,以及框架.

根据后端工程师的水平不同,项目需求不同,会使用MySQL,NoSQL,Oracle等.

服务器与网页交互也因水平不同,可以使用PHP,Java,Python等多种语言进行服务器脚本开发,进行传递数据,数据处理,增删改查.

角色具体分为 网页 服务器 数据库.
技能由浅到深分为各个知识点和技能,详细知识点可以看我的这篇文章<全栈开发学习路线>

服务器

服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。
上面是百度查的,下面说一下个人理解,服务器就是负责承载你网页和数据库以及发布网页发布数据的角色,本质是一台远程计算机.但是想要做到发布网页怎么办,需要用到服务器软件.

服务器软件简介

服务器软件概念请自行百度学习,目前知名的有Nginx、Apache、IIS,因为本人目前学习的事Apache所以暂时不讲其他两个,请自行学习.

Apache

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。

Windows安装

windows用户请自行百度官网下载以及安装教程.在此不赘述.
因为windows有用户图形界面,则下面指令均是在Mac环境下使用.

Mac安装

Mac用户是自带Apache的,打开终端,输入apachectl -v回车.确认版本.
然后终端运行

1
2
3
sudo apachectl start 
输入密码,然后访问localhost 显示It works!即为开启成功.
网页目录默认在/Library/WebServer/Documents中

httpd.conf配置

当安装Apache以后,怎么进行使用,httpd.conf就是重点了.
httpd.conf不仅是Apache的主配置文件,还是终端调用的指令.

1
open /private/etc/apache2/httpd.conf

可以使用编译器SublimeText3或者Vim编辑,我使用的是VSCode进行修改.

解注释以下代码 使apache可以解析php

1
2
3
LoadModule userdir_module libexec/apache2/mod_userdir.so 
LoadModule php5_module libexec/apache2/libphp5.so
Include /private/etc/apache2/extra/httpd-userdir.conf

自定义本地服务器目录

但是每次向默认文件夹拷贝都需要权限,那么可以进行自定义目录.

首先是前往/private/etc/apache2/extra/目录 修改 httpd-userdir.conf
解注释 Include /private/etc/apache2/users/*.conf
前往/private/etc/apache2/users/目录
添加以你的用户名命名的conf
文件内容如下:

<Directory “/Users/dream/Sites/“> // username需要修改
Options Indexes MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
然后就可以实现浏览器访问localhost/~yourname/这个地址访问/Users/dream/Sites/这个文件夹下的网页文件.

httpd_vhost.conf配置

这个文件是用来配置多站点虚拟主机的.
多站点虚拟主机是用来配置不同站点解析到不同IP地址,从而达到一台服务器多个网站,一般在工作中用来绑定子域名等.

首先前往/private/etc/apache2/目录下修改httpd.conf
解注释Include /private/etc/apache2/extra/httpd-vhosts.conf
然后前往/private/etc/apache2/extra/目录下打开httpd-vhosts.conf进行配置

1
2
3
4
5
6
7
8
9
10
11
12
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "/usr/docs/dummy-host2.example.com"
ServerName dummy-host2.example.com
ErrorLog "/private/var/log/apache2/dummy-host2.example.com-error_log"
CustomLog "/private/var/log/apache2/dummy-host2.example.com-access_log" common
<Directory "/路径/路径/路径">
Options indexes
order Deny,Allow
Allow From All.
</Directory>
</VirtualHost>

1.配置域名(服务器名)
ServerName ….com

2.配置站点实际路径

DocumentRoot “目录”

3.设置访问权限

1
2
3
4
5
<Directory "路径">
Options indexes
order Deny,Allow
Allow From All.
</Directory>

4.配置邮件地址.(可选)
ServerAdmin 设置一个邮件地址,如果服务器有任何问题将发信到这个地址, 这个地址会在服务器产生的某些页面中出现。

5.ErrorLog.(可选)
错误日志存储地址

6.CustomLog.(可选)
自定义日志存储地址

权限说明

Options:选项,Indexes用于设定当没有网页显示时,是否列出当前目录
AllowOverride:允许覆盖的特性,none表示不允许覆盖,All表示可以覆盖。
Order:表示权限控制顺序,只有两个:
allow, deny 先允许,后拒绝
deny, allow 先拒绝,后允许
Allow from: 允许谁(ip)访问
deny from : 拒绝谁(ip)访问

服务器脚本语言

服务器脚本语言,是运行在服务器环境下,对服务器以及数据库进行操作的语言,是一个网页环境中必不可少的角色.

其中有PHP,Java,Python,Node.js这里目前使用PHP.

PHP

PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。

目前正在进行PHP语言的学习中,在详细学习以后,我会更新并总结此处.

数据库

数据库,是网页应用以及移动端应用,俗称”后端”开发,是一个应用的灵魂,一个应用是否强大,和这个应用的后台开发工程师水平有关.后端开发工程师越强大,应用就越强大.

其中有NoSQL,MogoDB,Oracle,SQLServer,这里目前使用MySQL.

MySQL简介

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。

目前正在进行MySQL数据库的学习中,在详细学习以后,我会更新并总结此处.

结束语

如果您对这篇文章有什么意见或者建议,请评论与我讨论.
如果您觉得还不错的话~可以点个喜欢鼓励我哦.
如果您想和我一起学习,请毫不吝啬的私信我吧~
介个是我的个人博客,欢迎参观哦~

深入浅出学习前端开发(入门篇)

发表于 2018-04-08 | 分类于 全栈开发

深入浅出学习前端开发(入门篇)

前言

这里筑梦师,是一名正在努力学习的iOS开发工程师,目前致力于全栈方向的学习,希望可以和大家一起交流技术,共同进步,用简书记录下自己的学习历程.

个人学习方法分享
整体学习路线分享

1
2
3
4
5
6
7
本文阅读建议
1.一定要辩证的看待本文.
2.准备进行系统的前端学习.
3.本人学习前端的路线可能偏向全栈方向(不是纯前端)
4.本文只阐述学习路线和学习当中的重点问题.需要读者自己使用百度进行拓展学习.
5.觉得哪里不妥请在评论留下建议~
6.觉得还行的话就点个小心心鼓励下我吧~

1
2
3
4
5
目录
1.HTML & CSS
2.HTML5 & CSS3
3.JavaScript & jQuery
4.PHP & MySQL & Apache

推荐书籍 & 网站推荐

Head First HTML&CSS
Head First HTML5 Programming
Head First PHP&MySQL
Head First JavaScript
Head First jQuery
图解HTTP

选读书籍
CSS世界 (涉及知识点较深)

网站:张鑫旭个人博客(CSS世界作者)
网站:在线文档API查询

这里只列出本人已经读过的书籍,因为这些书籍我本人有体会,可以和大家交流意见,后期我会更新新的书籍.

为什么会推荐HeadFirst系列书籍,这些书真的适合零基础入门阅读,讲的通俗易懂,面面俱到.如果你真的会学习,那么你可以通过这些基础书籍延伸很多知识点.

如果你有心去查这些书评,会发现,一些人对Head First系列书籍褒贬不一,觉得这书很没有,太基础.没错,恰恰就是因为基础,过来人才会觉得这书没什么用,作为一个零基础开始学习的我,我可以保证,这是入门前端最好最快的书籍.

而CSS世界这本书是作者经过十年使用体会提炼而成,我经验目前并不充分,阅读至45页便止步不前,因为涉及深度之深,不是我目前可以驾驭的.

建议大家在看书时,不要一上来就去搜那些难懂的书籍,这样会失去读书的兴趣,从而导致自己看不进去书.

HTML & CSS

学习前端网页开发,第一个重点当然是HTML & CSS.
在这里首先说一下,前端涉及面之广,涉及知识之多最好先通过学习路线大致了解一下,做好准备.这是需要一定时间成本学习的.

HTML基础

HTML简史
HTML规范

CSS基础

什么是CSS?
为什么需要CSS?
CSS基本语法:

格式、选择器、属性

HTML应用

注释
meta标签
结构/格式
标签

结构标签
<html> <head> <body> <title> <h1~h6> <div> <span> <br> <hr> <p> <pre> <blockquote>
其中div、span标签在以后会重点使用.
文字标签
<i> <u> <sub> <sup> <s> <em> <strong> <b> <del> <font>
列表标签
<ul> <li>
<ol> <li>
<dl> <dt> /<dd>
表格标签
<table> <tr> <tr> <th> <caption> <thead> <tbody> <tfoot>
表单标签
<form> <input> <select> <option> <textarea> <button>
链接标签
<a> <link>
图像标签
<img>

特殊字符
“空格”,”<”,”>”,”&”,” " “,”'”,”©”,”®”

CSS应用

内联&外联
选择器

基础选择器

标签选择器、类选择器、id选择器、通配符选择器.

关系选择器

子代选择器S1>S2、后代选择器 S1 S2、相邻选择器 S1+S2、兄弟选择器 S1~S2.

属性选择器

给定[attr]、给定属性名&值[attr=”val”]、完全包含值[attr~=”val”]、部分包含值[attr*=”val”]、给定字符开头[attr^=”val”]、给定字符结尾[attr$=”val”]

伪类选择器

link、visited、hover、active.特定,有很多建议查文档.

伪元素选择器

after、before等 建议查文档.

选择器组合

行内样式
CSS特性

层叠性、继承性、优先性.

属性

颜色属性、文字属性、盒子属性、布局属性

盒子属性和布局属性为重点
我个人单独抽出时间对display、position、float、以及flex布局进行了嵌套对比,请自行使用抽样考察体会其不同情况下的效果.

列表和表格样式

总结

在阅读完第一本Head First HTML&CSS书以后,你会对HTML网页有一个大致了解,可以通过实践实现一个简单的静态网页.
请重点学习Div和Span 以及float、其display的不同属性和定位position不同情况下的嵌套,达到实现各种不同的静态页面布局.

HTML5 & CSS3

HTML5应用

结构变化
结构化标签(语义标签)
多媒体标签
input新增类型&属性

CSS3应用

盒子新特性

盒子阴影、圆角边框、图像边框、背景图高级特性、渐变背景

多栏布局
弹性布局
2D变换
3D变换
过渡效果
动画效果
光标设置
缩放
文本溢出
CSS初始化
CSS精灵技术
盒子模型

因为目前正在进行这方面的学习,所以在兼容性这方面目前并不会提及,在日后学习中,我会更新并总结,目前只提及其知识点.

总结

在进行了HTML5以及CSS3的学习完以后,你应该进行阶段总结,应该可以体会到,HTML5是用来给网页定型定框架,CSS3则是美化网页显示,但是如果你想实现绚丽的交互效果,就需要进行JavaScript的学习,在<<HeadFirst HTML5 Programming>>一书的后半部分,已经提及基础的JavaScript.
如果你暂时不想学习JavaScript交互,可以跟我一样先进行PHP和MySQL的学习.

JavaScript & jQuery

众所周知,HTML5与CSS3做的都是静态网页,而绚丽丰富交互效果是需要用到JavaScript.

JavaScript

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

目前没有进行系统的学习,日后更新所属知识点

jQuery

jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。

目前没有进行系统的学习,日后更新所属知识点

总结

在学习了JavaScript和jQuery以后,你已经可以做出拥有丰富的交互效果的网页了,那么如果想使网站发布以及数据存储功能还需要学到下面的知识.

PHP & MySQL & Apache

没有数据库的网站,就没有灵魂.又或者还有一句话:一个应用的核心就是后台.如果想使你的网站拥有灵魂,你就需要进行后端知识的学习.

准备一下,开始后端知识的学习.

如果你想要快速开发的话(纯前端学习),可以直接跳到最后的集成环境安装一栏进行学习.

这里只提及知识点,详细的环境搭建文章链接在本文最后.

PHP

PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。

PHP个人理解就是用来传递数据,修改数据的服务器脚本语言,我们使用PHP语言就是为了实现,网页与数据库的交互.

PHP语言是需要Apache驱动,才能运行.在Apache一栏中会详细解释他们之间的关系.

Apache

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。

不要上来就觉得Apache这个名字,就觉得又是一个知识点,肯定很难的样子,他其实就是一个用来发布网页的软件而已.需要操作的就是配置文件和指令

PHP文件和Apache之间的关系:

打个比方,有些软件可以在windows xp运行,但是在win10上面就不支持.

PHP文件可以使用文本编辑器编写,但是没有服务器环境就无法解析,计算机根本不知道PHP文件是什么,这时Apache就担当了这个角色,提供了对PHP文件的解析支持.

所以这就是对PHP是一门服务器脚本语言最好的理解.
只有在服务器环境下,才能运行PHP文件

MySQL

MySQL是什么,是数据库的一种,数据库有很多种,因为刚刚步入学习,所以暂时不讨论各个数据库之间的区别,后续学习到即会讨论.

MySQL和PHP以及Apache可谓是黄金搭档,因为Apache当中自带了PHP模块,而PHP语言中又有MySQL的预定义函数,可以直接进行MySQL数据库的增删改查操作.

数据库,很简单就是用来存储数据的,在此只作为知识点了解,后面会详细讲到.

MAMP & LAMP & WAMP & PHPStudy

那么如果你是一名纯前端开发者,或者不想要这些琐碎的后端环境配置,你可以百度这些关键词,下载安装集成环境.
其意思分别为

MAMP: Mac +Apache +MySQL +PHP;
LAMP: Linux +Apache +MySQL +PHP;
WAMP: Windows +Apache +MySQL +PHP;
PHPStudy: windows下一个集成环境软件.
每个软件都有安装教程,在此不赘述.

总结

windows下大多都有图形界面,但后端远程服务器,现在多数为Linux系统,因为要为公司减少开发成本,而且Linux系统下,环境配置与软件都较为方便,所以希望读者可以进行Linux系统的学习.

知识拓展

MySQL数据库操作 以及各种错误处理.
CMD & Shell 操作指令大全
Git操作指令
Navicat 数据库软件
Linux系统下的环境配置

这些知识以后逐一开文章说明,在此仅供各位拓展了解.

详细的前端环境配置请看这篇文章:
深入浅出学习前端开发(环境搭建篇);

结束语

如果您对这篇文章有什么意见或者建议,请评论与我讨论.
如果您觉得还不错的话~可以点个喜欢鼓励我哦.
如果您想和我一起学习,请毫不吝啬的私信我吧~
介个是我的个人博客,欢迎参观哦~

全栈开发学习路线

发表于 2018-04-04 | 分类于 全栈开发

学习路线

  • 学习路线
    • Web前端
      • 前端开发工具
      • SEO
    • HTML + CSS
      • HTML简介
      • HTML标签详解
      • 标签语义化
      • CSS概述
      • CSS属性
      • CSS样式的类型
      • CSS选择器
      • CSS背景
      • 元素的显示模式
      • CSS伪类
      • 字体相关属性
      • 盒子模型
      • margin
      • padding
      • 浮动
      • 定位
      • CSS相关案例
    • HTML5 + CSS3
      • HTML5新增标签
      • HTML5多媒体
      • HTML5音频播放
      • HTML5视频播放
      • HTML5DOM扩展
      • HTMl5自定义属性
      • 地理定位
      • 文件读取
      • 元素拖拽
      • 应用缓存
      • 历史管理
      • web存储
      • CSS3选择器
      • CSS3新属性
      • 2D转换与过渡
      • 3D转换
      • 动画
      • Web字体
      • Flex弹性布局
    • JavaScript + jQuery
      • JavaScript
        • JavaScript概述
        • 数据类型
        • 流程控制
        • 算法基础
        • 企业编程规范
        • JavaScript内置对象常用方法
        • 对象的创建方式
        • JavaScript中的对象
        • 面向对象
        • 原型
        • 作用域链
        • 函数的调用方式及this指向
        • 正则表达式
        • JavaScript高级
          • 递归与预解析
          • 数据类型
          • 函数
          • 词法分析
          • 作用域链
          • 事件编程
          • canvas绘图
          • 面向对象
          • JSON对象
          • 原型链
          • 设计模式
          • 正则表达式
        • JavaScript原理探究
          • 原型
          • 原型链
          • 继承
          • 闭包
          • ES5
          • ES6
      • jQuery
        • jQuery简介
        • jQuery的优势
        • jQuery选择器
        • jQuery中的动画
        • jQuery插件
        • jQueryUI
        • jQuery编程思想
        • 链式编程和隐式迭代
        • 编写jQuery插件
        • jQuery选择器
        • 属性操作
        • 事件编程
        • jQuery特效
        • 文档处理
        • 插件机制
        • jQuery中的Ajax
        • 开源jQuery项目实践
    • PHP +MySQL
      • 搭建环境
        • PHP简介
        • WEB程序的访问流程
        • 安装Apache
        • MySQL
        • PHP7
        • 配置虚拟主机
      • PHP7基础
        • 变量和常量
        • 数据类型
        • 运算符
        • 流程控制
        • 函数
        • 字符串
        • 数组
        • PSR规范
        • B/S结构
        • 参数传递GET/POST
        • 动态网站
        • 后台接口开发
        • 分支循环语句
      • MySQL数据库
        • MySQL简介
        • 基础SQL操作
        • 字符集
        • 列类型
        • 类属性
        • 表关系
        • 高级查询
        • 外键
        • 范式
        • 用户管理
        • 权限管理
        • 数据备份与还原
      • MySQL优化
        • MySQL优化概述
        • MySQL存储引擎
        • 列类型的选择
        • 数据库设计三范式与逆范式
        • MySQL中的执行计划
        • 数据库中索引的设计
        • MySQL中的其他功能
        • MySQL分表技术
        • Sphinx
        • 读写分离
      • 表单传值
        • 表单传值的方式
        • PHP接收数据的三种方式
        • PHP处理复选框数据
        • 文件上传
      • MySQLi扩展
        • 基本操作
        • 执行增删改操作
        • 执行查询操作
        • 与MySQLi相关的函数
        • MySQLi扩展应用案例
      • 文件编程
        • 文件操作的分类
        • 目录操作
        • 文件操作
        • 文件下载
      • 会话技术
        • 会话技术概述
        • Cookie与Session的区别
        • Cookie原理
        • Cookie操作
        • Session原理
        • Session操作
        • 垃圾回收机制
      • GD图像处理
        • GD库概述
        • GD画布实现
        • 验证码
        • 缩略图
        • 水印图
      • 面向对象
        • 面向对象概述
        • 面向对象实现
        • 封装
        • 继承
        • 多态
        • 对象遍历
        • 对象序列化
        • 反射机制
        • 命名空间
        • Trait新特性
      • PDO扩展
        • PDO简介
        • PDO类
        • PDOStatement类
        • PDO预处理
        • PDO事务处理
        • PDO异常处理
        • PDO属性
        • 封装PDO类
      • Smarty
        • Smarty概述
        • 模板设计
        • 程序设计
      • ThinkPHP5.0
        • ThinkPHP5框架概述
        • 基础
        • 架构
        • 路由
        • 控制器
        • 视图
        • 模型
        • 项目实用项
      • RESTful
        • RESTful概述
        • HTTP协议
        • RESTful API设计六要素
        • 编写API接口文档
        • 使用Lumen实现RESTful
      • MVC设计模式
        • MVC设计模式
        • 搭建自定义MVC框架
      • 博客项目
        • 项目开发流程
        • 数据表数据
        • 后台实现
        • 前台实现
        • 扩展功能
      • 数据表设计、后台设计、前台设计、会员设计、购物车设计、订单设计、接口设计(微信/支付宝、短信、QQ登录、邮件、地图、物流)、静态化
      • PHP+Swoole多进程爬虫
        • Swoole概述
        • Server
        • Client
        • Process
        • AsyncIO
        • Memory
        • HttpServer
        • WebSocket
        • Swoole综合案例:PHP+Swoole多进程爬虫
    • Web API
      • BOM操作
      • DOM操作
      • 事件处理
      • 浏览器兼容性处理
      • 页面动态效果
      • 动画
    • HTTP/HTTPS协议
      • HTTP协议概念
      • HTTP协议的特点
      • HTTP协议的分类
      • HTTP请求
      • HTTP响应
      • HTTP状态码
      • PHP模拟HTTP请求
      • 扩展:HTTPS协议
    • Ajax
      • Ajax概述
      • Ajax对象
      • GET与POST请求
      • 同步与异步概念
      • 缓存问题
      • Ajax与XML
      • Ajax与JSON
      • 封装Ajax框架
      • 跨域请求
      • 原生Ajax
      • jQuery的Ajax相关API使用
      • 低层原理分析
      • 缓存问题及处理方式
      • 跨域请求及解决方法
      • 实用案例
    • VueJS
      • Vue概述
      • Vue指令
      • Vue属性
      • 方法、事件、过滤器、事件处理、钩子函数
      • 组件、动画、路由、API请求
      • 常用系统指令
      • 数据绑定
      • 指令
      • 过滤器
      • 生命周期
      • 组件化
      • Vue组件
      • Vue过渡效果(动画)
      • 路由(vue-router库)
      • axios
    • WAMP & MAMP & LAMP
      • WEB程序的访问流程
      • Apache
      • MySQL
      • PHP
      • 配置虚拟主机
    • 设计模式
      • MVC
      • MVVM
    • Git开发
      • 命令行
      • git的基本使用
      • 对比文件差异、还原、合并 ,回滚操作
      • 远端仓库操作,使用github创建远端仓库,生成ssh key 并添加到github
    • Linux操作系统
      • Linux系统概述
      • VMware虚拟机的安装
      • CentOS系统安装
      • Shell指令
      • VI编辑器
      • Linux内核分析
      • 用户和组
      • 文件操作
      • 网络配置
      • FTP
      • LAMP部署
    • Nginx服务器集群
      • Nginx概述
      • LNMP的安装与配置
      • 缓存设置
      • 压缩设置
      • 负载均衡
    • Memcache缓存设计
      • 大型项目优化概述
      • Memcache软件的安装
      • Memcache指令详解
      • 使用PHP操作Memcache
      • Memcache应用场景
    • Redis 缓存\消息队列
      • Redis概述
      • Redis支持的数据类型
      • 持久化功能
      • Redis主从模式
      • PHP操作Redis
      • 消息队列
      • 商城系统缓存设计与秒杀实现
    • MongoDB (NoSQL数据库)
      • MongoDB概述
      • MongoDB进阶
      • MongoDB的权限机制
      • 使用PHP操作MongoDB
    • 网站优化(MySQL高级优化)
      • MySQL优化概述
      • MySQL存储引擎
      • 列类型的选择
      • 数据库设计三范式与逆范式
      • 执行计划
      • 索引
      • 分库分表技术
    • 网站优化(Sphinx,Xunsearch)
      • 主从服务器的讲解
      • 主从复制
      • 读写分离实战
    • 网站优化(主从复制,读写分离)
      • Sphinx概述
      • 安装Sphinx
      • 使用PHP+API接口连接Sphinx
      • Sphinx的匹配模式
      • Sphinx增量索引
    • 网站优化(页面静态化)
      • 页面静态化技术简介
      • 真静态
      • 伪静态
    • Laravel框架
      • Laravel概述
      • Laravel的安装
      • 目录分析
      • 控制器
      • 路由
      • 视图
      • HTTP请求与响应
      • 数据库
      • 模型
      • Laravel实用项
      • Redis数据库
      • 消息队列
    • Laravel +VueJS 在线直播平台
      • 前端界面开发
      • Laravel后台程序设计
      • Socket编程
      • Redis集群
      • ffmpeg转码
      • VOD点播
      • CDN加速
      • HLS技术
      • 在线教育平台实战
    • Canvas绘图
      • canvas概述
      • 绘图
      • echarts
      • svg
      • svg图标的使用
    • 移动Web开发(响应式设计)
      • 移动端屏幕介绍
      • 移动端浏览器介绍
      • 移动端操作系统介绍
      • Chrome模拟调试
      • 真机调试
      • Viewport
      • rem
      • 触屏touch事件
      • 手势封装
      • 媒体查询,设备尺寸划分
      • 主流响应式布局框架
      • 移动端框架
      • bootstrap
      • iScroll
      • swiper
      • fastclick
      • zepto
      • framework7
      • Canvas
      • Sass
      • vw
      • CSS预处理器LESS
    • 前端模块化
      • AMD
      • CMD
      • 模块化开发基本概念
      • 模块化演变过程分析
      • 设计规范
      • RequireJS
      • 淘宝的SeaJS
    • NodeJS详解
      • NodeJS历史
      • 发展
      • 特征与现状
      • ES6常用语法
      • 同步与异步
      • 环境安装
      • 文件操作
      • 网络操作
      • 模块化思想及操作
      • npm
      • 异步编程
      • Express
      • 工具模块
      • Web模块
      • 全局对象
    • Express框架
      • Express 简介
      • 安装
      • 请求与响应
      • 路由
      • 静态文件
      • 文件上传
      • Cookiet管理
    • AngularJS实战开发
      • 单页应用
      • MVC
      • 常用指令
      • 双向绑定和单向绑定
      • 模块
      • 控制器controller
      • $watch
      • 自定义指令
      • jqLite
      • 过滤器
      • 数据过滤
      • 服务$http $location
      • 前端路由
      • http拦截器
    • ReactJS实战开发
      • 快速入门
      • 虚拟DOM
      • 交互与动态UI
      • 数据渲染
      • JSX 语法
      • 组件开发
      • 组件复用
      • 生命周期
      • React操作dom元素
      • React绝对路由
      • webpack和gulp集成构建项目
      • flux
      • redux
      • state props context 等
      • 附加模块
      • 集成工具
      • 重定向组件
      • 代理方式进行跨域
      • 按需加载
    • 移动端项目 (全栈必备)
      • mui框架使用
      • 前端校验插件
      • echarts数据可视化
      • Ajax进度条组件
      • 模板引擎渲染
      • 图片上传插件
    • 后台项目 (全栈必备)
      • 后端渲染页面,使用会话技术实现登录,PHP操作MySQL数据库,开发接口,使用AJAX技术,模板引擎ArtTemplate完成页面功能的实现
    • vue项目 (全栈必备)
      • webpack
      • vue-cli
      • vuex
      • 打包发布
      • 组件开发
      • 权限管理
      • 外部接口调用
    • 微服务Docker (PHP进阶)
      • Docker概述
      • 为什么需要Docker
      • Docker环境开发流程
      • Docker安装与配置
      • Docker指令
      • DockerFile应用服务器
    • Swoole聊天室 (PHP进阶)
      • Swoole概述
      • Server
      • Client
      • Process
      • AsyncIO
      • Memory
      • HttpServer
      • WebSocket
      • PHP+Swoole聊天室
    • 微信开发(微擎/ EasyWechat)
      • 微信公众平台概述
      • 微信开发前期准备
      • 微信6大接收接口
      • 微信6大回复接口
      • 微信LBS接口开发
      • 微信机器人开发
      • 响应式设计
      • 微擎/EasyWechat
      • 微信综合案例
    • 微信小程序 (前端进阶)
      • 微信框架
      • 小程序界面设计
      • API接口设计
      • 小程序数据绑定
      • 小程序性能优化与实践
      • 小程序入门概念及演示
      • 小程序开发工具介绍与创建quick_start项目
      • 小程序文件结构
      • wxml
      • wxss
      • 常用组件(view,image,text,navigator,swiper等)
      • 小程序常用api
    • 微信公众号 (前端进阶)
      • 用JS-SDK技术做分享、拍照、支付、登录等功能。

知识点

  • 前后端分离
    • 目前市面上都是前后端分离
      前 主要目的是 解耦 分离架构.
    • 前后端使用JSON交流,后端架构语言如何选择将和前端没有关系
    • 听说 TDD (Test-driven development,测试驱动开发) 可以改善代码的质量,我们便实施了 TDD;接着,听说 BDD (Behavior-driven development,行为驱动开发) 可以交付符合业务需求的软件,我们便实施了 BDD;后来,听说 DDD (Domain-driven design,领域驱动设计) 可以分离业务代码与基础代码,我们便实施了 DDD。今天,听说了前后端分离很流行,于是我们就实施了前后端分离——这就是传说中的 HDD(Hype-driven Development,热闹驱动开发)
    • 前后端只通过 JSON 来交流,组件化、工程化不需要依赖后端去实现。
    • 前后端分离和微服务一样,渐渐地影响了新的大型系统的架构。微服务和前后端分离要解决是类似的问题,解耦——可以解耦复杂的业务逻辑,解耦架构。可要是说相像吧,消息队伍和前后端便相似一些,通过传递数据的形式来解耦组件。
  • TCP/IP 协议
    • TCP/IP协议簇是Internet的基础,也是当今最流行的组网形式。TCP/IP是一组协议的代名词,包括许多别的协议,组成了TCP/IP协议簇。其中比较重要的有SLIP协议、PPP协议、IP协议、ICMP协议、ARP协议、TCP协议、UDP协议、FTP协议、DNS协议、SMTP协议等。
  • HTTP协议
    • 阅读 图解HTTP
  • OSI参考模型
    • OSI(Open System Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型。该体系结构标准定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层和应用层),即ISO开放系统互连参考模型。在这一框架下进一步详细规定了每一层的功能,以实现开放系统环境中的互连性、互操作性和应用的可移植性。
  • web service 服务端应用

    • webService 三要素
      • SOAP、WSDL(WebServicesDescriptionLanguage)、UDDI(UniversalDescriptionDiscovery andIntegration)之一, soap用来描述传递信息的格式, WSDL 用来描述如何访问具体的接口, uddi用来管理,分发,查询webService 。具体实现可以搜索 Web Services简单实例 ; SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。SOAP使用基于XML的数据结构和超文本传输协议(HTTP)的组合定义了一个标准的方法来使用Internet上各种不同操作环境中的分布式对象。
      • SMTP 隶属于 TCP/IP协议
    • Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。 [1]
      Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。

    • web广泛用到的技术:
      . TCP/IP:通用网络协议,被各种设备使用

      . HTML(标准通用标记语言下的一个应用):通用用户界面,可以使用HTML标签显示数据

      . .NET: 不同应用程序间共享数据与数据交换

      . Java:写一次可以在任何系统运行的通用编程语言,因为java具有跨平台特性

      . XML(标准通用标记语言下的一个子集):通用数据表达语言,在web上传送结构化数据的容易方法

  • Apache Nginx IIS >服务器软件

    • Apache
      • Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。
      • Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名第一的Web服务器软件。
    • Nginx

      • Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
        其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
        Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
    • IIS

      • iis是Internet Information Services的缩写,意为互联网信息服务,是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。最初是Windows NT版本的可选包,随后内置在Windows 2000、Windows XP Professional和Windows Server 2003一起发行,但在Windows XP Home版本上并没有IIS。IIS是一种Web(网页)服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。 [1]
        IIS的安全脆弱性曾长时间被业内诟病,一旦IIS出现远程执行漏洞威胁将会非常严重。远程执行代码漏洞存在于 HTTP 协议堆栈 (HTTP.sys) 中,当 HTTP.sys 未正确分析经特殊设计的 HTTP 请求时会导致此漏洞。 成功利用此漏洞的攻击者可以在系统帐户的上下文中执行任意代码,可以导致IIS服务器所在机器蓝屏或读取其内存中的机密数据。
  • web server 网页端服务器

    • Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档, [1] 也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个Web服务器是Apache Nginx IIS。
  • Weblogic Tomcat Jboss > 应用服务器

    • weblogic

      • WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
        WebLogic是美商Oracle的主要产品之一,是并购BEA得来。是商业市场上主要的Java(J2EE)应用服务器软件(application server)之一,是世界上第一个成功商业化的J2EE应用服务器, 已推出到12c(12.2.1.3) 版。而此产品也延伸出WebLogic Portal,WebLogic Integration等企业用的中间件(但当下Oracle主要以Fusion Middleware融合中间件来取代这些WebLogic Server之外的企业包),以及OEPE(Oracle Enterprise Pack for Eclipse)开发工具。
    • Tomcat

      • Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
        Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
    • Jboss

      • 是一个基于J2EE的开放源代码的应用服务器。 JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。
  • RESTful API交互(如jQuery Ajax,Fetch API,ReactiveX)

    • Fetch API (新一代HTML请求方式)
    • ReactiveX (响应式编程)
      • ReactiveX 是一个基于一系列可观察的异步和基础事件编程组成的一个库。
        它继承观察者模式,支持序列数据或者事件。更高级的用法允许你将如下的一些抽象概念操作一起联合使用,比如低线程,同步,线程安全,数据并发,非阻塞I/O流。
        它通常被称为“函数响应式编程”,这是用词不当的。ReactiveX 可以是函数式的,可以是响应式的,但是和“函数响应式编程”是不同的概览。一个主要的不同点是“函数响应式编程”是对随着时间不停变化的值进行操作的,而ReactiveX是对超时提交产生的离散值上。
      • ReactiveX 简称 Rx,全称 Reactive Extensions,最初是LINQ的一个扩展,由微软的架构师Erik Meijer领导的团队开发,在2012年11月开源,Rx是一个编程模型,目标是提供一致的编程接口,帮助开发者更方便的处理异步数据流,Rx库支持.NET、JavaScript和C++,Java等几乎所有的编程语言。Rx扩展了观察者模式用于支持数据和事件序列,添加了一些操作符,它让你可以声明式的组合这些序列,而无需关注底层的实现:如线程、同步、线程安全、并发数据结构和非阻塞IO。
      • Reactive: 响应式
      • LINQ: Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性。已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰富的元数据,智能感知、 静态类型等强类型语言的好处。
        迭代器模式:核心思想是:通过定义遍历或查看对象中所有元素的方法的接口,并根据不同的类进行不同的方法实现相,已达到对类数据遍历的抽象以及对类内部如何获取数据的过程进行掩盖的目的。当于Java中的Iterator(迭代器)有它的继承接口如ListIterator和它的实现类等,我们在遍历Set、Map时,用到他们的Iterator,这样,他们具体怎么拿出数据的过程,我们不用知道。
      • 观察者模式:有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。【下面RxJava的使用过程就是观察者模式的体现】
      • Rx = Observables【用于表示异步数据流】 + LINQ【用它的操作符查询异步数据流】 + Schedules【参数化异步数据流的并发处理】
      • Rx用到的设计模式精华:观察者模式、迭代器模式
  • MVC & MVVM (设计模式)

    • 阅读 设计模式相关书籍
    • 针对不同语言有着不同定义.
    • 最典型的MVC就是JSP + servlet + javabean的模式
  • I/O (输入输出)
    • I/O(input/output),即输入/输出端口。每个设备都会有一个专用的I/O地址,用来处理自己的输入输出信息。CPU与外部设备、存储器的连接和数据交换都需要通过接口设备来实现,前者被称为I/O接口,而后者则被称为存储器接口。存储器通常在CPU的同步控制下工作,接口电路比较简单;而I/O设备品种繁多,其相应的接口电路也各不相同,因此,习惯上说到接口只是指I/O接口。
  • C/S & B/S
    • B/S
      • B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器(Browser英 [‘braʊzə]美 [‘braʊzɚ]),如Netscape Navigator或Internet Explorer,服务器安装SQL Server、Oracle、MYSQL等数据库。浏览器通过Web Server 同数据库进行数据交互。
    • C/S
      • Client/Server结构(C/S结构)是大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。
  • SOA 面向服务架构
    • 面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。
  • J2EE 架构
    • J2EE(Java 2 Platform, Enterprise Edition)是一个为大企业主机级的计算类型而设计的Java平台。Sun微系统(与其工业伙伴一起,例如IBM)设计了J2EE,以此来简化在受客户级环境下的应用开发。由于创造了标准的可重用模块组件以及由于构建出能自动处理编程中多方面问题的等级结构,J2EE简化了应用程序的开发,也降低了对编程和对受训的程序员的要求。
    • J2EE是一套全然不同于传统应用开发的技术架构,包含许多组件,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值。
      J2EE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共同的标准及规格,让各种依循J2EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,企业内部或外部难以互通的窘境。
      J2EE组件和“标准的” Java类的不同点在于:它被装配在一个J2EE应用中,具有固定的格式并遵守J2EE规范,由J2EE服务器对其进行管理。J2EE规范是这样定义J2EE组件的:客户端应用程序和applet是运行在客户端的组件;Java Servlet和Java Server Pages (JSP) 是运行在服务器端的Web组件;Enterprise Java Bean (EJB )组件是运行在服务器端的业务组件。
  • 路由概念 (网络层)
  • 微服务
    • 在介绍微服务时,首先得先理解什么是微服务,顾名思义,微服务得从两个方面去理解,什么是”微”、什么是”服务”, 微 狭义来讲就是体积小、著名的”2 pizza 团队”很好的诠释了这一解释(2 pizza 团队最早是亚马逊 CEO Bezos提出来的,意思是说单个服务的设计,所有参与人从设计、开发、测试、运维所有人加起来 只需要2个披萨就够了 )。 而所谓服务,一定要区别于系统,服务一个或者一组相对较小且独立的功能单元,是用户可以感知最小功能集。
    • 微服务可以在“自己的程序”中运行,并通过“轻量级设备与HTTP型API进行沟通”。关键在于该服务可以在自己的程序中运行。通过这一点我们就可以将服务公开与微服务架构(在现有系统中分布一个API)区分开来。在服务公开中,许多服务都可以被内部独立进程所限制。如果其中任何一个服务需要增加某种功能,那么就必须缩小进程范围。在微服务架构中,只需要在特定的某种服务中增加所需功能,而不影响整体进程。
    • 为什么需要微服务
      在传统的IT行业软件大多都是各种独立系统的堆砌,这些系统的问题总结来说就是扩展性差,可靠性不高,维护成本高。到后面引入了SOA服务化,但是,由于 SOA 早期均使用了总线模式,这种总线模式是与某种技术栈强绑定的,比如:J2EE。这导致很多企业的遗留系统很难对接,切换时间太长,成本太高,新系统稳定性的收敛也需要一些时间。最终 SOA 看起来很美,但却成为了企业级奢侈品,中小公司都望而生畏。
  • Spring (面向接口开源框架)
    • Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。
  • RESTful (软件架构风格)
    • 一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
  • 授权(如HTTP Basic、JWT等等)
    • JWT
      • Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。
    • HTTP Basic
      • Basic Auth是开放平台的两种认证方式,简单点说明就是每次请求API时都提供用户的username和password。
    • OAuth
      • OAuth为用户资源的授权提供了一个安全、开放的标准,将会是以后开发平台普遍遵守的,目前Twitter、Sina微博、豆瓣、Google等都提供对它的支持。
  • wget & curl Linux常用命令
    • curl
      • curl是利用URL语法在命令行方式下工作的开源文件传输工具。它被广泛应用在Unix、多种Linux发行版中,并且有DOS和Win32、Win64下的移植版本。
    • wget
      • wget 是一个从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三个最常见的 TCP/IP协议 下载,并可以使用 HTTP 代理。”wget” 这个名称来源于 “World Wide Web” 与 “get” 的结合。
  • php-fpm ∈ FastCGI (通用网关接口) (php处理进程的)

    • php-fpm

      • PHP-FPM(FastCGI Process Manager:FastCGI进程管理器)是一个PHPFastCGI管理器,对于PHP 5.3.3之前的php来说,是一个补丁包 [1] ,旨在将FastCGI进程管理整合进PHP包中。如果你使用的是PHP5.3.3之前的PHP的话,就必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。
        相对Spawn-FCGI,PHP-FPM在CPU和内存方面的控制都更胜一筹,而且前者很容易崩溃,必须用crontab进行监控,而PHP-FPM则没有这种烦恼。
    • FastCGI

      • CGI全称是“通用网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序一般运行在网络服务器上。 CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等。
      • FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。
        FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等。
  • Ruby 面向对象语言
    • Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada以及 Lisp 语言。由 Ruby 语言本身还发展出了JRuby(Java平台)、IronRuby(.NET平台)等其他平台的 Ruby 语言替代品。Ruby的作者于1993年2月24日开始编写Ruby,直至1995年12月才正式公开发布于fj(新闻组)。因为Perl发音与6月诞生石pearl(珍珠)相同,因此Ruby以7月诞生石ruby(红宝石)命名。
  • perl 一门脚本语言

    • Perl,一种功能丰富的计算机程序语言,运行在超过100种计算机平台上,适用广泛,从大型机到便携设备,从快速原型创建到大规模可扩展开发。 [1]
      Perl最初的设计者为拉里·沃尔(Larry Wall),于1987年12月18日发表。现在的版本为Perl 6,于2015年12月25日更新。
      Perl借取了C、sed、awk、shell 脚本语言以及很多其他程序语言的特性,其中最重要的特性是它内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN。简而言之,Perl像C一样强大,像awk、sed等脚本描述语言一样方便,被Perl语言爱好者称之为“一种拥有各种语言功能的梦幻脚本语言”、“Unix 中的王牌工具”。
      Perl 一般被称为“实用报表提取语言”(Practical Extraction and Report Language),你也可能看到“perl”,所有的字母都是小写的。一般,“Perl”,有大写的 P,是指语言本身,而“perl”,小写的 p,是指程序运行的解释器。
  • Java SE /EE /ME (java语言分类)

    • Java SE=Java Standard Edition
      Java EE=Java Enterprise Edition
      Java ME=Java Mobile Edition

      SE主要用于桌面程序,控制台开发(JFC)
      EE企业级开发(JSP,EJB)
      ME嵌入式开发(手机,小家电)

  • less & sass CSS扩展语言

    • less
      • Less 是一门 CSS 预处理语言,它扩充了 CSS 语言,增加了诸如变量、混合(mixin)、函数等功能,让 CSS 更易维护、方便制作主题、扩充。Less 可以运行在 Node 或浏览器端。
    • sass

      • Sass 扩展了 CSS3,增加了规则、变量、混入、选择器、继承等等特性。Sass 生成良好格式化的 CSS 代码,易于组织和维护。
        SASS是对CSS3(层叠样式表)的语法的一种扩充,它可以使用巢状、混入、选择子继承等功能,可以更有效有弹性的写出Stylesheet。Sass最后还是会编译出合法的CSS让浏览可以使用,也就是说它本身的语法并不太容易让浏览器识别(虽然它和CSS的语法非常的像,几乎一样),因为它不是标准的CSS格式,在它的语法内部可以使用动态变量等,所以它更像一种极简单的动态语言。

      • SASS是Ruby语言写的,但是两者的语法没有关系。不懂Ruby,照样使用。只是必须先安装Ruby,然后再安装SASS。
        假定你已经安装好了Ruby,接着在命令行输入下面的命令:
        gem install sass
        然后,就可以使用了。

  • JSP (java服务器页面)

    • JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它 [1] 是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
      它实现了Html语法中的java扩展(以 <%, %>形式)。JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。
      JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。
      Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。
  • ES6 / CoffeScript / TypeScript 转译语言

    • ES6
      • ES6是ECMAScript标准十余年来变动最大的一个版本,其中添加了许多新的语法特性,既有大家耳熟能详的Promise,也有闻所未闻的Proxy代理和Reflection反射;既有可以通过转译器(Transpiler)等方式在旧版本浏览器中实现兼容的let、const、不定参数、展开运算符等功能,亦有无论如何都无法实现向前兼容的尾调用优化。深入理解ES6的特性对于所有JavaScript开发者而言至关重要,在可预见的未来,ES6中引入的语言特性会成为JavaScript应用程序的主流特性
    • coffeScript
      • CoffeeScript是一套JavaScript的转译语言,创建者 Jeremy Ashkenas 戏称它是- JavaScript 的不那么铺张的小兄弟。因为 CoffeeScript 会将类似 Ruby 语法的代码编译成 JavaScript,而且大部分结构都相似,但不同的是 CoffeeScript 拥有更严格的语法。
    • TypeScript
      • 是一种由微软开发的自由和开源的编程语言。它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。安德斯·海尔斯伯格,C#的首席架构师,已工作于TypeScript的开发。2012年十月份,微软发布了首个公开版本的TypeScript,2013年6月19日,在经历了一个预览版之后微软正式发布了正式版TypeScript 0.9,向未来的TypeScript 1.0版迈进了很大一步。
  • YAML语言

    • YAML是“YAML不是一种记语言”的外语缩写 [1] (见前方参考资料原文内容);但为了强调这种语言以数据做为中心,而不是以置标语言为重点,而用返璞词重新命名。它是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高并且容易被人类阅读,容易和脚本语言交互,用来表达资料序列的编程语言。
      它是类似于标准通用标记语言的子集XML的数据描述语言,语法比XML简单很多。
    • 使用场景

      • 脚本语言
        由于实现简单,解析成本很低,YAML特别适合在脚本语言中使用。列一下现有的语言实现:Ruby,Java,Perl,Python,PHP,OCaml,JavaScript,Go 除了Java 和 Go,其他都是脚本语言。

      • 配置文件
        YAML做配置文件也不错。写YAML要比写XML快得多(无需关注标签或引号),并且比ini文档功能更强。
        比如Ruby on Rails的配置就选用的YAML。对ROR而言,这很自然,也很省事.
        由于兼容性问题,不同语言间的数据流转建议不要用YAML.

      • 序列化
        YAML比较适合做序列化。因为它是宿主语言数据类型直转的。

  • DOM (网页文档对象)
    • 文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口。在网页上,组织页面(或文档)的对象被组织在一个树形结构中,用来表示文档中对象的标准模型就称为DOM。Document Object Model的历史可以追溯至1990年代后期微软与Netscape的“浏览器大战”,双方为了在JavaScript与JScript一决生死,于是大规模的赋予浏览器强大的功能。微软在网页技术上加入了不少专属事物,既有VBScript、ActiveX、以及微软自家的DHTML格式等,使不少网页使用非微软平台及浏览器无法正常显示。DOM即是当时蕴酿出来的杰作。
  • ajax 前端处理方式

    • Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。
      Ajax = 异步 JavaScript 和 XML(标准通用标记语言的子集)。
      Ajax 是一种用于创建快速动态网页的技术。
      Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术
    • XMLHttpRequest 是 AJAX 的基础。
      XmlHttpRequest 术语缩写为XHR,中文可以解释为可扩展超文本传输请求。

      XMLHttpRequest 对象可以在不向服务器提交整个页面的情况下,实现局部更新网页。

    • 简单来说就是网络请求,然后响应以后使用JavaScript操作DOM
  • 数据格式(如JSON、XML)

    • JSON (轻量级的数据交换格式)
      • JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
    • XML (工作几乎不用)
      • 可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。
        在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。早在1998年,W3C就发布了XML1.0规范,使用它来简化Internet的文档信息传输。
  • 构建系统(gulp、grunt、webpack等等)

    • gulp & grunt (前端构建工具) & npm (NodeJS包管理和分发工具)
      • npm
        • NPM的全称是Node Package Manager ,是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。
          如果你熟悉ruby的gem,Python的pypi、setuptools,PHP的pear,那么你就知道NPM的作用是什么了。
          Nodejs自身提供了基本的模块,但是开发实际应用过程中仅仅依靠这些基本模块则还需要较多的工作。幸运的是,Nodejs库和框架为我们提供了帮助,让我们减少工作量。但是成百上千的库或者框架管理起来又很麻烦,有了NPM,可以很快的找到特定服务要使用的包,进行下载、安装以及管理已经安装的包。
      • gulp
        • Gulp基于Node.js的前端构建工具,通过Gulp的插件可以实现前端代码的编译(sass、less)、压缩、测试;图片的压缩;浏览器自动刷新,还有许多强大的插件可以在这里查找。比起Grunt不仅配置简单而且更容易阅读和维护
      • grunt
        • Grunt基于Node.js,安装之前要先安装Node.js。
        • 例如压缩、编译、单元测试、代码检查等,自动化工具可以减轻你的劳动,简化你的工作。
  • 代码质量(如JSLint / ESLint / TSLint / CSLint)
    • JSLint & CSSLint & TSLint (静态代码分析) &CodeClimate(代码质量分析) (工程化)
      • JSLint
        • JSLint定义了一组编码约定,这比ECMA定义的语言更为严格。这些编码约定汲取了多年来的丰富编码经验,并以一条年代久远的编程原则 作为宗旨:能做并不意味着应该做。JSLint会对它认为有的编码实践加标志,另外还会指出哪些是明显的错误,从而促使你养成好的 JavaScript编码习惯。
      • CSSLint
      • TSLint
  • 安全性(如跨域)
    • 跨域一词从字面意思看,就是跨域名嘛,但实际上跨域的范围绝对不止那么狭隘。具体概念如下:只要协议、域名、端口有任何一个不同,都被当作是不同的域。之所以会产生跨域这个问题呢,其实也很容易想明白,要是随便引用外部文件,不同标签下的页面引用类似的彼此的文件,浏览器很容易懵逼的,安全也得不到保障了就。什么事,都是安全第一嘛。但在安全限制的同时也给注入iframe或是ajax应用上带来了不少麻烦。所以我们要通过一些方法使本域的js能够操作其他域的页面对象或者使其他域的js能操作本域的页面对象(iframe之间)。
  • 网页设计
    • 切页面
    • Flexbox布局
    • 网格布局(Grid Layout)
    • 响应式设计
    • 线框图(Wireframe)
    • 矢量图形 / 矢量图形动画(如SVG)
      • 可缩放矢量图形是基于可扩展标记语言(标准通用标记语言的子集),用于描述二维矢量图形的一种图形格式。它由万维网联盟制定,是一个开放标准。
  • 常用前端三驾马车 react、vuejs、angularjs jQuery工具库

    • Node.js Javascript运行环境(runtime)
      • Node.js是一个Javascript运行环境(runtime),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。Node.js对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。
        V8引擎执行Javascript的速度非常快,性能非常好。 [1] Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。
    • jQuery JS框架

      • jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。
    • React (Facebook内部项目)

      • React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设Instagram 的网站。做出来以后,发现这套东西很好用,就在2013年5月开源了。
      • React主要用于构建UI。你可以在React里传递多种类型的参数,如声明代码,帮助你渲染出UI、也可以是静态的HTML DOM元素、也可以传递动态变量、甚至是可交互的应用组件。
    • AngularJS
      • AngularJS [1] 诞生于2009年,由Misko Hevery 等人创建,后为Google所收购。是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是:MVW(Model-View-Whatever)、模块化、自动化双向数据绑定、语义化标签、依赖注入等等。
        AngularJS 是一个 JavaScript框架。它是一个以 JavaScript 编写的库。它可通过 script 标签添加到HTML 页面。
        AngularJS 通过 指令 扩展了 HTML,且通过 表达式 绑定数据到 HTML。
        AngularJS 是以一个 JavaScript 文件形式发布的,可通过 script 标签添加到网页中。
  • bootstrap 前端框架

    • Bootstrap,来自 Twitter,是目前很受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JavaScript 的,它简洁灵活,使得 Web 开发更加快捷。 [1] 它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架。Bootstrap提供了优雅的HTML和CSS规范,它即是由动态CSS语言Less写成。Bootstrap一经推出后颇受欢迎,一直是GitHub上的热门开源项目,包括NASA的MSNBC(微软全国广播公司)的Breaking News都使用了该项目。 [2] 国内一些移动开发者较为熟悉的框架,如WeX5前端开源框架等,也是基于Bootstrap源码进行性能优化而来。
    • 在2017年8月下旬,Bootstrap四周岁之际,Bootstrap团队发布了Bootstrap 4 alpha版,4的最主要变化包括以下方面:

      从 Less 迁移到 Sass
      
      改进网格系统
      
      缺省弹性框支持
      
      Dropped wells, thumbnails, and panels for cards
      
      合并所有 HTML resets 到一个新的模块中:Reboot
      
      全新自定义选项
      
      不再支持 IE8
      
      重写所有的 JavaScript 插件
      
      改进工具提示和 popovers 的自动定位
      
      改进文档
      
      其他大量改进
      
  • WeX5 多端部署工具

    • WeX5遵循Apache开源协议,完全开源免费,上百个组件框架,全部开放,可视化的组件框架,开发者可自定义组件,集成第三方组件,采用MVC设计模式,数据和视图分离,页面描述和代码逻辑分离,支持浏览器调试、真机调试、原生调试,等多种调试模式,开发者可掌握每一行代码。
      WeX5一直坚持采用H5+CSS3+JS标准技术,一次开发,多端任意部署,确保开发者成果始终通用、不受限制。WeX5的混合应用开发模式能轻松调用手机设备,如相机、地图、通讯录等,让开发者轻松应对各类复杂数据应用,代码量减少80%。同时开发出的应用能够媲美原生的运行体验。
  • express & koa (nodeJS框架)

  • swig (nodejs前端模板引擎)
    -
  • 技能

    • CSS / CSS3 动画
    • 能封装业务组件和公用组件.
    • JavaScript 动画
    • Web字体嵌入
    • Icon 字体
    • 图形和图表
    • CSS / SVG Sprite(如glue)
    • DOM操作(如jQuery、React等等)
    • 模板引擎(如JSX、Handlebars、JSP、Mustache等等)

      • JSX

        • JSX是阵营的核心组成部分,它使用XML标记的方式去直接声明界面,界面组件之间可以互相嵌套。可以理解为在JS中编写与XML类似的语言,一种定义带属性树结构(DOM结构)的语法,它的目的不是要在浏览器或者引擎中实现,它的目的是通过各种编译器将这些标记编译成标准的JS语言。
      • JSP

        • JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。
      • Handlebars
        • Handlebars 是 JavaScript 一个语义模板库,通过对view和data的分离来快速构建Web模板。它采用”Logic-less template”(无逻辑模版)的思路,在加载时被预编译,而不是到了客户端执行到代码时再去编译, 这样可以保证模板加载和运行的速度。Handlebars兼容Mustache,你可以在Handlebars中导入Mustache模板。
    • 调试
      • 浏览器调试
      • Debug工具
      • Wireshark / Charles抓包
      • 远程设备调试(如Chrome Inspect Devices)
      • 单元测试
      • 服务测试
      • UI测试
      • 集成测试
    • 版本管理(如git、svn)
    • PHP页面跳转、端口监听
    • 依赖管理
    • 包管理(如npm、bower)
    • 模块化(如CommonJS、WebPack)

      • commonJS
        • CommonJS API定义很多普通应用程序(主要指非浏览器的应用)使用的API,从而填补了这个空白。它的终极目标是提供一个类似Python,Ruby和Java标 准库。这样的话,开发者可以使用CommonJS API编写应用程序,然后这些应用可以运行在不同的JavaScript解释器和不同的主机环境中。在兼容CommonJS的系统中,你可以使用 JavaScript程序开发
      • WebPack

        • WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其转换和打包为合适的格式供浏览器使用。
        • 其实Webpack和另外两个并没有太多的可比性,Gulp/Grunt是一种能够优化前端的开发流程的工具,而WebPack是一种模块化的解决方案,不过Webpack的优点使得Webpack在很多场景下可以替代Gulp/Grunt类的工具。
          Grunt和Gulp的工作方式是:在一个配置文件中,指明对某些文件进行类似编译,组合,压缩等任务的具体步骤,工具之后可以自动替你完成这些任务。

          Grunt和Gulp的工作流程
          Webpack的工作方式是:把你的项目当做一个整体,通过一个给定的主文件(如:index.js),Webpack将从这个文件开始找到你的项目的所有依赖文件,使用loaders处理它们,最后打包为一个(或多个)浏览器可识别的JavaScript文件。

        • Webpack的工作方式是:把你的项目当做一个整体,通过一个给定的主文件(如:index.js),Webpack将从这个文件开始找到你的项目的所有依赖文件,使用loaders处理它们,最后打包为一个(或多个)浏览器可识别的JavaScript文件。
    • 自动构建(脚本)

    • 前端工程化开发测试 打包 发布
    • 前端性能优化.
    • 在技术选型上,能给出你选择的方案是最优的数据说明
  • 兼容性
    • 跨浏览器测试 (Chrome,IE,Firefox,Safari等等)
    • 跨平台测试(Windows、GNU/Linux,Mac OS等等)
    • 跨设备测试(Desktop,Android,iOS,Windows Phone)
    • 跨版本测试(同一个浏览器的不同版本)
  • 正规表达式
    • 正规表达式由一个或多个字符型文字和/或元字符组成。在最简单的格式下,正规表达式仅由字符文字组成,如正规表达式 cat。它被读作字母 c,接着是字母 a 和 t,这种模式匹配 cat、location 和 catalog 之类的字符串。可以用它们验证数据、识别重复关键字的出现、检测不必要的空格、分析字符串、验证电话号码、邮政编码、电子邮件地址、社会安全号码、IP 地址、文件名和路径名等的格式,也可以查找如 HTML 标记、数字、日期之类的模式,或任意文本数据中符合任意模式的任何事物,并用其它的模式来替换它们。
  • 性能与优化
    • 可用性
    • 性能测试(特别是移动Web
    • 加载优化(如gzip压缩、缓存等等
    • PageSpeed / Yslow 优化
      • Page Speed最 初是Google内部使用的改进网页设计的工具——它整合在Firefox的著名插件Firebug中。当用户运行Page Speed,可以立即获得如何改进网页载入速度的建议。
    • 压缩(如Minify、Uglify、CleanCSS等等)
      • CleanCSS是一个免费的CSS精简压缩工具,通过这个在线工具,可以将你的CSS文件压缩、优化成更精简,这将大大提高你的网站的载入速度。
  • SEO
    • SEO
      • SEO(Search Engine Optimization):汉译为搜索引擎优化。搜索引擎优化是一种利用搜索引擎的搜索规则来提高目前网站在有关搜索引擎内的自然排名的方式。SEO的目的理解是:为网站提供生态式的自我营销解决方案,让网站在行业内占据领先地位,从而获得品牌收益;SEO包含站外SEO和站内SEO两方面;SEO是指为了从搜索引擎中获得更多的免费流量,从网站结构、内容建设方案、用户互动传播、页面等角度进行合理规划,使网站更适合搜索引擎的索引原则的行为;使网站更适合搜索引擎的索引原则又被称为对搜索引擎优化,对搜索引擎优化不仅能够提高SEO的效果,还会使搜索引擎中显示的网站相关信息对用户来说更具有吸引力。
    • Sitemap(站点地图)
      • Sitemap 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页。最简单的 Sitemap 形式,就是XML 文件,在其中列出网站中的网址以及关于每个网址的其他元数据(上次更新的时间、更改的频率以及相对于网站上其他网址的重要程度为何等),以便搜索引擎可以更加智能地抓取网站。
    • 页面静态内容生成
      • 静态页面,即静态网页,是实际存在的,无需经过服务器的编译,直接加载到客户浏览器上显示出来。静态页面需要占一定的服务器空间,且不能自主管理发布更新的页面,如果想更新网页内容,要通过FTP软件把文件DOWN下来用网页制作软件修改(通过fso等技术例外)。常见的静态页面举例:.html扩展名的、.htm扩展名的。
    • MicroData / MicroFormat
      • MicroData
        • Microdata 以自定义的词汇表(vocabulary)为中心,可以想象 HTML5 中所有的元素集合为一个词汇表,这个词汇表包含描述段落(section) 或文章(article)的元素,但是不包含描述事件(event) 或组织(organization)的元素。如果想在 Web 页面中表示一个事件或组织,则需要定义自己的词汇表,Microdata 允许你这么做,任何人都可以定义自己的词汇表,并且将其包含在自己的 Web 页面中。
      • MicroFormat
        • 微格式(Microformat),是通过语意相关让内容人机可读。网页上的允许的微格式数据包括事件、人物、地点等,它可以被其他的软件检测到,并提取出相应的信息,以及对信息进行索引、搜索、跨平台的参考,把这些信息以其他形式重复使用或组合。
    • 内部链接建设
  • 面向对象 & 面向过程
  • Laravel (PHP框架)
    • Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。
      在Laravel中已经具有了一套高级的PHP ActiveRecord实现 – Eloquent ORM。它能方便的将“约束(constraints)”应用到关系的双方,这样你就具有了对数据的完全控制,而且享受到ActiveRecord的所有便利。Eloquent原生支持Fluent中查询构造器(query-builder)的所有方法。
  • 个人博客 HEXO
  • Java后台
    • Java基础
      • 阅读 Head First Java
      • 掌握DOS系统常用基本命令
    • 面向对象
      • 匿名对象
      • 继承
      • 多态
      • 抽象类
      • 接口
      • 内部类
    • 异常
      • 异常概述
      • 异常分类
      • 异常处理方案
      • 自定义异常
    • 集合
      • Collection接口下的常用集合
      • Map接口下的常用集合
      • 泛型
      • Iterator接口
    • I/O
      • 文件
      • 字节流
      • 字节缓冲流
      • 转换流
      • 序列化流
    • 多线程
      • 多线程运行原理
      • 多线程的实现方案
      • 线程生命周期
      • 线程同步
      • 线程池
    • 网络编程
      • 网络编程三要素
      • Socket原理机制
      • UDP传输
      • TCP传输
    • 反射
      • 类加载机制原理
      • 反射构造方法、字段、方法
      • Properties配置文件
    • XML
      • XML基本语法
      • XML的约束
      • XML的解析
      • BeanUtils的使用
    • 注解及动态代理
      • 注解的使用
      • 自定义注解
      • 动态代理Proxy
      • 类加载器
    • Mysql及JDBC开发
      • MySQL数据库
      • JDBC开发
      • 连接池
      • DBUtils
      • JDBC事物管理
    • 前端技术
      • html
      • css
      • js
      • jQuery
      • BootStrap
    • javaWeb核心
      • Tomcat
      • Servlet
      • Request和Response
      • Cookie和Session
      • jsp , el , jstl
      • Filter
      • Listener
    • ajax应用
      • ajax
      • jQuery ajax
      • EasyUI
    • linux和redis
      • Linux
      • Redis
    • javaWeb应用
      • 通用BaseServlet抽取
      • 缓存技术
      • JavaMail
      • 在线支付
      • 文件上传
      • Linux项目部署
      • 能够完成B/S结构网站开发,具备了真实环境的项目部署能力,能够完成中小型企业管理系统等传统项目的开发。
    • 框架
      • Hibernate5
      • Struts2
      • Spring
      • CRM项目
      • oracle
      • maven
      • mybatis框架
      • springmvc框架
      • Lucene、solr框架
    • 综合项目技能
      • 掌握Apache poi实现数据导入导出;
      • 掌握图形报表的生成技术,如JfreeChart、HighChart、AmChart
      • 掌握Apache Shiro技术
      • 掌握BRAC认证模型,有效进行用户权限管理
      • SSH框架整合
      • 使用maven进行项目的分模块开发
      • 页面布局采用前端主流jQuery插件easyui
      • 采用Redis实现缓存机制
      • 采用Oracle数据库
      • 引入WebService的CXF开发方式,并与Spring结合
      • 采用了BRAC认证模型,有效进行用户权限管理,同时加入当前流行的Shiro安全框架,从而高效快捷保证系统安全可靠
      • 加入了Quartz与spring整合实现定时任务调度
      • 引入JavaMail邮件机制,并实现Spring与JavaMail整合开发
      • 使用PowerDesigner建立企业级PDM模型
      • SSM框架整合
      • jsp+easyui视图层展现
      • KindEditor富文本编辑器应用
      • Freemarker模板引擎实现页面静态化
      • Dubbo分布式调用技术
      • Nginx反向代理
      • Redis缓存
      • Lucene/Solr全文检索解决方案
      • FastDFS图片服务器
      • ActivieMQ消息队列
      • maven项目管理
      • svn/git实现项目代码和文档管理
      • zookeeper分布式协调服务
      • mycat中间件

思考问题

发表于 2018-04-04 | 分类于 学习日志

#思考问题
这里主要记录在学习过程中自己思考的各种问题

##3月

  • 查询如何建立本地服务器.
  • JQuery Boostrap
  • 开源网页项目
  • PHP如何入门
    • 阅读 head first PHP & MySQL
  • 后台API如何建立
  • 后台如何安全的和网页交互.
  • HTML5和后台交互 使用JSONP 那么后台岂不是暴露在万维网之中? 最关键的环节应该是登录注册
  • HTML5担任的是网页的角色 那么 Apache MySQL PHP各自担任着什么角色
  • 网站后台API 文件挂载/传输 分别由谁来完成.
  • 一个网站的具体流程 是什么呢
  • 首先进行HTML5 PHP MySQL的学习,因为市面上大部分都是LAMP WAMP环境. 学习完毕 搜索 PHP部署关键词 进行学习.
  • 关键词 CMS emlog建站. JQuery
  • Nginx & fastcgi & laravel
  • 尝试写一个自己的网站,放在本地服务器上
  • 搜索CSS效果 并进行构建
  • 遇到瓶颈 暂停 开始学习PHP& SQL
  • 已经熟悉整个网站的流程尝试构建本地服务器网页 并写入数据库
  • 数据传递是否安全,网页会不会被SQL注入,如何防止数据库被攻击.
  • 目的:写一个局域网网站共享的东西
  • 目前已经读完三本书,有一个问题 HTML+CSS布局网页 PHP负责后台数据写入,那么要JavaScript干什么

学习疑难知识点

发表于 2018-04-04 | 分类于 学习日志

学习疑难知识点

在学习过程中,会遇到各种各样问题和知识点,而不是应该避开他,而是迎面学习并解决他.这里记录日常中学习中会遇到的所有知识点.

##3月

  • 个人博客 HEXO
  • YAML语言
  • cURL
  • 路由
  • wget
  • HTTP协议
  • 前端安全
  • 常用前端三驾马车 react、vuejs、angularjs jQuery工具库
  • 跨域 es6新语法
  • nodejs 开发 express koa 常用框架
  • 数据库
  • 能封装业务组件和公用组件.
  • 在技术选型上,能给出你选择的方案是最优的数据说明
  • 前后端分离
  • 前端性能优化.
  • 前端工程化开发 测试 打包 发布
  • 自己实现前端架构代码
  • PHP页面跳转、端口监听
  • jQuery
  • Spring
  • JSP
  • DOM
  • MVC & MVVM
  • 面向对象 & 面向过程
  • RESTful
  • Ajax
  • JSON
  • Fetch API
  • ReactiveX
  • 工程化
  • C/S
  • I/O
  • Perl
  • IIS
  • Nginx
  • php-fpm
  • FastCGI
  • 基础
  • HTML / CSS
  • JavaScript
  • Node.js
  • 正规表达式
  • 数据格式( 如JSON、 XML)
  • RESTful API交互( 如jQuery Ajax, Fetch API, ReactiveX)
  • 命令行
  • ES6 / CoffeScript / TypeScript
  • SCSS / SASS
  • CSS3
  • HTML语义化
  • 面向对象编程
  • 函数式编程
  • MVC / MVVM / MV *
  • 矢量图形 / 矢量图形动画( 如SVG)
  • 单页面应用
  • 安全性( 如跨域)
  • 授权( 如HTTP Basic、 JWT等等)
  • 工程化
  • 代码质量( 如JSLint / ESLint / TSLint / CSLint)
  • 代码分析( 如Code Climate)
  • 测试覆盖率
  • 构建系统( gulp、 grunt、 webpack等等)
  • 自动构建( 脚本)
  • 兼容性
  • 跨浏览器测试( Chrome, IE, Firefox, Safari等等)
  • 跨平台测试( Windows、 GNU / Linux, Mac OS等等)
  • 跨设备测试( Desktop, Android, iOS, Windows Phone)
  • 跨版本测试( 同一个浏览器的不同版本)
  • CSS / CSS3 动画
  • JavaScript 动画
  • Web字体嵌入
  • Icon 字体
  • 图形和图表
  • CSS Sprite( 如glue)
  • DOM操作( 如jQuery、 React等等)
  • 模板引擎( 如JSX、 Handlebars、 JSP、 Mustache等等)
  • 软件工程
  • 版本管理( 如git、 svn)
  • 包管理( 如npm、 bower)
  • 依赖管理
  • 模块化( 如CommonJS、 WebPack)
  • 调试
  • 浏览器调试
  • Debug工具
  • Wireshark / Charles抓包
  • 远程设备调试( 如Chrome Inspect Devices)
  • 测试
  • 单元测试
  • 服务测试
  • UI测试
  • 集成测试
  • 性能与优化
  • PageSpeed / Yslow 优化
  • 加载优化( 如gzip压缩、 缓存等等)
  • 性能测试( 特别是移动Web)
  • 可用性
  • 压缩( 如Minify、 Uglify、 CleanCSS等等)
  • 设计
  • 切页面
  • 线框图( Wireframe)
  • 响应式设计
  • 网格布局( Grid Layout)
  • Flexbox布局
  • SEO
  • Sitemap( 站点地图)
  • 内部链接建设
  • MicroData / MicroFormat
  • 页面静态内容生成
12
筑梦师Winston

筑梦师Winston

13 日志
6 分类
11 标签
RSS
GitHub Twitter StackOverflow E-Mail CSDN 微博 简书 知乎
© 2018 筑梦师Winston
由 Hexo 强力驱动
|
主题 — NexT.Pisces v6.1.0