对技术的认识及思考

一、技术认知

如果一项技术,在开发中经常会用到,那么就要加深对技术原理的认识,能够讲出具体的原理和技术细节,最好能讲一两个小时,而不是一两句话就带过。

另外,一项技术,就算自己工作不需要,不懂得具体的技术细节,也可以尝试着去认识这项技术的应用范围、优势、思想。

作为一名开发者,一定要不断地拓宽自己的技术视野。

技术的本质是用来解决问题。

0.语言用途:

(注:Windows桌面软件开发的工作已经很少了,JavaME被淘汰了)

1.大数据

应用:

分布式系统,处理海量数据,进行运算和存储

技术要点:

Storm、Spark、Hadoop(框架),MapReduce(负责计算),Hdfs(文件系统),Hive(数据仓库),Hbase(数据库),Zookeeper(中间件),Ambri(可视化,配置集群)

2.安卓开发

目前还出现了RxAndroid(响应式编程)、webFlux

技术要点:

开源框架,网络编程,json和xml解析,绘图原理,动画,事件机制,自定义View,数据存储,开源框架,
四大组件原理,UI控件(RecycleView,TabLayout等),Material Designs

3.web前端

前端追求的是:页面表现,速度流畅,兼容性,用户体验等等。

前端基础:js,html,css,jquery,bootstrap,node.js。

jquery有点过时了。现在比较流行的前端三大框架: vue,angular,react

4.web后端

后端追求的是:三高(高并发,高可用,高性能),安全,存储,业务等等。

python,java都可以做后端。也有少数公司用c/c++。

大后端,目前很流行分布式、微服务、容器。

python后端,一般用flask、django。

5.PHP

一般小公司刚起步,都会采用LAMP架构。也就是 Linux+Apache+Mysql/MariaDB+Perl/PHP/Python

PHP适合产品刚起步,快速开发,做出产品雏形,看能否适应市场。

PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。

6.云计算

7.区块链

8.人工智能

9.游戏开发

一般用c++。引擎有cocos2d,工具unity3d、openGL。

三、Web技术及概念:

1.Web Services  :可以将应用程序转换为网络应用程序

2.Soa : 面向服务的架构

3.工作流: 在现实中好多公司、政府、军工单位中审批业务流程是频繁变更的。
工作流是为解决现实中繁杂多变的业务审批流程,应运而生的一种技术。
常用的工作流:Jbpm、osworkflow、activiti

4.RPC:远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。

5. MVVM框架:主要包括三个部分Model、View和ViewModel,Model指的是数据部分,对应到前端就是一些Javascript对象,View指的视图部分,对应到前端就是DOM,ViewModel就是连接数据和视图的中间件,在MVVM的框架下视图和数据是不能直接通信的,它们通过ViewModel来通信,ViewModel通常要实现一个observer观察者,当数据发生变化,ViewModel能够监听到数据的这种变化,然后通知到对应的视图做自动更新,而当用户操作视图,ViewModel也能监听到视图的变化,然后通知数据做改动,这实际上就实现了数据的双向绑定。以上便是MVVM的一些基本概念。
MVVM框架,如Angular、React、Vue

三、疑惑:

1.如何统计和处理百万、千万级别的数据?包括计算、排序、分组等操作。

2.处理海量数据,如何提高性能,包括运行速度,准确率等等?

3.内存泄露,是怎么产生的?如何处理?

4.网络是怎么连接的?

 5.RxJava是什么?

6.DDos攻击。具体是什么?

就是成百上千台计算台,同时发起攻击。

7.Sql注入,是如何做到的?

8.Tcp三次握手、Udp五次握手的具体细节。

原文地址:https://www.cnblogs.com/expiator/p/8507520.html