IT软件知识-技能图谱

2017-12-31 Renfei Yu 更多博文 » 博客 » GitHub »

原文链接 https://comsince.github.io/2017/12/31/tech-overview/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


主要说明不断更新的软件技术指引未来发展方向,此文持续更新。对于技术的共性给出必要的原理解释。 linux的基本技能,主要说明linux环境下c编程,shell;着重于基础概念,并不是作为进阶的工具,主要起到一个抛砖抛砖引玉的作用,能够通过对这些基本的技能的学习初步掌握解决问题的基本技能。此文章并不深入讨论各个技术点的细节,只是总结出技能之间的依赖关系,归纳出一般的学习步骤,希望对自己的思路有一个清晰的认识。

Linux 基础

linux C 编程基础

c 语言编程的基本语法这里不再赘述,基本大同小异,这里主要研究,在工程的条件下,如果快速的编译c代码,像一些面向对象的编程语言都有提供相应的工具入maven,gradle;c也有自己独特的方式。

C/C++ 基础

指针

对星号*的总结 在我们目前所学到的语法中,星号*主要有三种用途:

  • 表示乘法,例如int a = 3, b = 5, c; c = a * b;123456 ,这是最容易理解的。
  • 表示定义一个指针变量,以和普通变量区分开,例如int a = 100; int *p = &a;
  • 表示获取指针指向的数据,是一种间接操作,例如int a, b, *p = &a; *p = 100; b = *p;
  • 参考:

  • char* const args[] defintion [duplicate]

以下说明c编译的相关知识 由于c没有import自动关联编译的,需要Header File进行类型声明,接口暴露

宏定义

Makefile

C没有像gradle和maven的编译工具,需要使用makefile来组织编译,不过以后可以使用CMake

CMake

提供跨平台的编译工具,makefile自动生成,只需用cmake配置规则

Shell

之前我在ubuntu上跑代码时,当运行一个shell脚本的时候,出现了如下错误 ../runcmake: 行 2: $'\r': 未找到命令 ../runcmake: 行 3: 未预期的符号 `$'{\r'' 附近有语法错误

考虑到代码是从windows下一直过来的,脚本可能在格式上存在问题

  • 解决方案: ``` sudo apt-get install dos2unix

dos2unix **.sh


## Android NDK

### NDK Build Problem

* 问题

Android NDK: Your APP_BUILD_SCRIPT points to an unknown file:


* 解决办法

如果是一个android工程的话,执行如下命令:

ndk-build NDK_PROJECT_PATH=./main/cpp NDK_LOG=1

如果设置NDK工程目录,ndk默认会从该目录起寻找该目录下jni目录,如果没有找到就报如下错误:

Your APP_BUILD_SCRIPT points to an unknown file: ./main/cpp/jni/Android.mk

这是你可以指定android.mk的路径,如下`APP_BUILD_SCRIPT=./main/cpp/Android.mk`

## 参考资料

* [宏的基本概念](http://www.geeksforgeeks.org/interesting-facts-preprocessors-c/)

### 集成开发工具

* [What is the best C & C++ IDE?](https://www.quora.com/What-is-the-best-C-C++-IDE)
* [Clion License Server](http://www.sdbeta.com/mf/2017/0414/177253.html)
  弹出注册窗口选择Activate》License Server》输入`http://xidea.online`,然后点击`Activete`完成认证即可

### C/C++ Library

* [awesome-cpp](https://github.com/fffaraz/awesome-cpp)
* [A list of open source C++ libraries](http://en.cppreference.com/w/cpp/links/libs)


## SQL

* [W3CSQL](https://www.w3schools.com/sql/default.asp)

## Java 高级主题

### Java 日志框架

* [Java日志框架那些事儿](https://www.cnblogs.com/chanshuyi/p/something_about_java_log_framework.html)
* [Log4j ConsoleAppender Configuration Example](https://howtodoinjava.com/log4j/log4j-console-appender-example/)

### Java I/O

* [Java IO](http://ifeve.com/java-io/)
* [java I/O书籍](/download/JavaIO.pdf)
* [Java NIO Tutorial](http://tutorials.jenkov.com/java-nio/index.html)
* [java nio解决半包 粘包问题](https://blog.csdn.net/nongfuyumin/article/details/78343999)

### Java Networking

* [Java 网络编程]()
* [Essential Netty in Action 《Netty 实战(精髓)》](https://www.kancloud.cn/kancloud/essential-netty-in-action)
* [SSL/TLS协议运行机制的概述](http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html)
* [Java Secure Socket Extension (JSSE) Reference Guide](https://docs.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html)

### Java Connurency

* [Java并发编程实战](/download/Java-concurency-in-practice.pdf)
* [通俗解释java并发原理教程](http://tutorials.jenkov.com/java-concurrency/thread-signaling.html)
* [Java 并发编程的艺术](/download/Java_concurrency_artifact.pdf)

### Java Reflection

Java 动态代理机制实际是代理模式的实现,其局限性是其无法代码class只能代理接口,因此对于需要继承类但是父类需要反射,就会变得极其复杂
AOP模式实现切面编程中,利用职责链模式,建立一种拦截器模式,比如Servelet与filter机制,切面编程的advice拦截调用链
* [Java 动态代理机制分析及扩展](https://www.ibm.com/developerworks/cn/java/j-lo-proxy1/index.html)
* [深入理解Java:类加载机制及反射](https://yq.aliyun.com/articles/133181)

### Java web

* [Servelet规范](http://zhanjindong.com/assets/pdf/Servlet3.1-Specification.pdf)
* [Servelet规范-本地版](/download/Servlet3.1-Specification.pdf)

#### Spring 框架原理

* [深入解析Spring 内幕](/download/spring-tech-invoke_anayisis.pdf)
* [Spring的BeanFactoryPostProcessor和BeanPostProcessor](https://blog.csdn.net/caihaijiang/article/details/35552859)
* [Spring AOP aspect vs advisor 以及基于xml和annotation的两种配置](https://howtodoinjava.com/spring-aop/spring-aop-aspectj-xml-configuration-example/)
* [aop:aspect与aop:advisor的区别](https://blog.csdn.net/u011983531/article/details/70504281)
* [职责链模式(Chain of responsibility)以及servlet中filter的原理](http://dapple.iteye.com/blog/696008)

#### Spring 主要模块

* [Spring-Aop](https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#aop)
* Spring-context
* Spring-jdbc 
* Spring-tx 支持数据库事务
* spring-session

### Spring boot

* [Spring Boot 2.0 极简教程](https://www.jianshu.com/p/fc24de0c585d)
* [《Spring Boot极简教程》第1章 Spring Boot史前简述](https://www.jianshu.com/p/ef6214ad115a)
* [《Spring Boot极简教程》第2章 Spring Boot简史](https://www.jianshu.com/p/4475f1d079b9)
* [第5章 Spring Boot自动配置原理](https://www.jianshu.com/p/346cac67bfcc)

#### 分布式session

* [通过 Spring Session 实现新一代的 Session 管理](https://www.infoq.cn/article/Next-Generation-Session-Management-with-Spring-Session)
* [Spring Session+Spring Data Redis 解决分布式系统架构中 Session 共享问题](https://juejin.im/post/58957c3b61ff4b006b066b1c)

#### 分布式锁

* [分布式锁的几种实现方式](https://www.hollischuang.com/archives/1716)

#### 权限设计

* [Shiro权限设计](https://waylau.com/apache-shiro-1.2.x-reference/II.%20Core%20%E6%A0%B8%E5%BF%83/6.%20Authorization%20%E6%8E%88%E6%9D%83.html)
* [新的RBAC:基于资源的权限管理(Resource-Based Access Control)](https://waylau.com/new-rbac-resource-based-access-control/)
* [Tomcat中session的管理机制](https://blog.csdn.net/lantian0802/article/details/8914157)


#### ORM 框架

* [myBatis-core](http://www.mybatis.org/mybatis-3/zh/index.html)
* [myBatis-spring](http://www.mybatis.org/spring/zh/)
* [《深入理解mybatis原理》 MyBatis的架构设计以及实例分析](https://blog.csdn.net/luanlouis/article/details/40422941)

#### 权限框架

* [跟我学Shiro](/download/kaitao-shiro.pdf

### 设计模式

* [研磨设计模式]()
* [图说设计模式](https://design-patterns.readthedocs.io/zh_CN/latest/)



## 微服务架构系列文章

## 基础组件

### 消息队列

* [activemq](http://activemq.apache.org/getting-started.html)
* [为什么选择RocketMQ消息中间件](https://mp.weixin.qq.com/s/KfBruI-tOz-eJuM2fgqyew?)

**NOTE:** ActiveMQ 5.15.0 Release 支持java8以上版本

### 分布式数据库

#### 数据库基本技能
* [SQL Tutorial](https://www.w3schools.com/sql/sql_join_inner.asp)


为提升系统性能,实现高并发的需要有事需要实现数据库读写分离,需要使用数据库中间件
读写分离需要配置主从数据同步

* [MySQL5.6 数据库主从(Master/Slave)同步安装与配置详解](http://blog.csdn.net/xlgen157387/article/details/51331244/)
* [Sharing-JDBC](http://shardingjdbc.io/docs/00-overview)

### 分布式RPC框架

#### 服务治理

* 限流
* 熔断
* 降级

#### Dubbo官方说明文档

* [Dubbo user guide](https://dubbo.gitbooks.io/dubbo-user-book/)
* [Dubbo develop guide](https://dubbo.gitbooks.io/dubbo-dev-book/)

#### Dubbo 原理分析系列文章
* [Spring Schema扩展](https://gist.github.com/dchjmichael/07dfd189c4c29bab63ec)
* [Dubbo spi 扩展点机制](http://cxis.me/2017/02/18/Dubbo%E4%B8%ADSPI%E6%89%A9%E5%B1%95%E6%9C%BA%E5%88%B6%E8%AF%A6%E8%A7%A3/)
* [XML Schema Authoring](https://docs.spring.io/spring/docs/5.1.2.RELEASE/spring-framework-reference/core.html#xml-custom)


### Hystrix
* [Hystrix原理与实战](https://my.oschina.net/7001/blog/1619842)

### 负载均衡

* [OpenResty Nginx](https://moonbingbing.gitbooks.io/openresty-best-practices/ngx/nginx_brief.html)

### 配置中心
* 实现配置修改,自动下发

### 容器

* DevOps

### 调用链

* [Dapper,大规模分布式系统的跟踪系统](https://bigbully.github.io/Dapper-translation/)
* [美团分布式会话跟踪系统架构设计与实践](https://tech.meituan.com/mt-mtrace.html)
* [京东分布式服务跟踪系统-CallGraph](http://zhuanlan.51cto.com/art/201701/528304.htm)

### 微服务实战
* [微服务实战:从架构到发布(一)](https://segmentfault.com/a/1190000004634172)
* [微服务实战:从架构到发布(二)](https://segmentfault.com/a/1190000004655274)

### 书籍

* [亿级流量网站架构核心技术 跟开涛学搭建高可用高并发系统](/download/kaitao-distribute-system.pdf)

## 大数据

* [大数据生态及其技术栈](http://www.code123.cc/1455.html)
* [大数据技术学习路线](http://heminit.com/2017/06/23/my-post2/)

### Hadoop

#### Hadoop Yarn
* [Hadoop新MapReduce框架Yarn详解](https://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/)

#### 文档
* [Hadoop 官方中文文档](http://hadoop.apache.org/docs//r1.0.4/cn/index.html)
* [Hadoop安装教程_单机/伪分布式配置](http://www.powerxing.com/install-hadoop/) 
* [大数据、云计算系统高级架构师课程学习路线图](http://www.bijishequ.com/detail/435478?p=)
* [开源书籍:大数据实验手册](https://chu888chu888.gitbooks.io/hadoopstudy/content/)
* [大数据建设平台学习](https://github.com/Roc-J/Hadoop/blob/master/big%20data/%E5%A4%A7%E6%95%B0%E6%8D%AE%E5%BB%BA%E8%AE%BE%E5%B9%B3%E5%8F%B0%E5%AD%A6%E4%B9%A0.md)

#### 视频资料
* [Hadoop2.x 深入浅出企业级应用实战视频下载](https://www.iteblog.com/archives/1129.html)
* [Hadoop大数据跳槽课程(线上视频+直播答疑)](http://www.itsource.com.cn/thread-41-1-1.html) 视频码`11664-F6AF-8E8D-C8FC-99BC`

#### 书籍资料
* [Hadoop实战-陆嘉恒]()
* [Hadoop权威指南-第三版](/download/largfile-100M/Hadoop-overall.pdf)
* [Hadoop技术内幕:深入解析Hadoop Common和HDFS](/download/bigdata/Hadoop_Common_HDFS.pdf)
* [Hadoop技术内幕:深入解析YARN架构设计与实现原理](/download/bigdata/Hadoop_YARN_artitect.pdf)
* [Hadoop技术内幕:深入解析MapReduce架构设计与实现原理 (大数据技术丛书)](/download/bigdata/Hadoop_MapReduce_artitect.pdf)

### Python
* [Python教程](https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431608990315a01b575e2ab041168ff0df194698afac000)


## 技术博客
从技术博客中寻找解决问题的方案,下面列出较为出名的博客
* [美团技术博客](https://tech.meituan.com/)


## 搜索技术

### ElasticSearch
* [Elasticsearch 5.4 中文文档](http://cwiki.apachecn.org/pages/viewpage.action?pageId=4260360)
* [Elasticsearch 权威指南(中文版](https://es.xiaoleilu.com/index.html)


### Solr
* [SolrTutorial](http://www.solrtutorial.com/basic-solr-concepts.html)
* [Apache Solr Tutorial for Beginners](https://examples.javacodegeeks.com/enterprise-java/apache-solr/apache-solr-tutorial-beginners/)



## 机器学习

* [Python getstarted](https://anandology.com/python-practice-book/getting-started.html)

* [tensorflow-for-poets](https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/index.html#0)
* [tf-android](https://codelabs.developers.google.com/codelabs/tensorflow-for-poets-2-tflite/#0)
* [TensorFlow固化模型](https://www.jianshu.com/p/091415b114e2)


### 源码解析

* [纯源码解析博客](http://www.iocoder.cn/)