2018年中总结(一)一些基础概念之类的

时光荏苒,很快就到了年中了,这半年接触了很多东西,也有一定的收获。平时我比较喜欢记笔记,做总结,今天就对之前的部分笔记做一个总结。

一些基础概念

我们在编程的路上总是少不了接触很多名词,如果不知道这些名词的含义,和其他人进行交流的时候就会产生分歧,或者尴尬。比如LGTM,就是Look good to me的缩写,这个在git提交的时候尤为常用;再比如前两天见到的LTS,Long Term Support的缩写,诸如此类的关键词,就比较影响交流,不过也可能是区分圈内及圈外人的一种手段?

当然,接下来提到的一些概念,和上面这种交流又有不同,可能是一些软件名词,或者行业常用名词,或者业界标准等等。我就把我之前搜罗到的简单写写,不大幅展开,不是本篇文章的目的。

1.MQ,全称MessageQueue;常见的RabbitMQ,RocketMQ,ActiveMQ等。或许也可以把Kafka加进来?

2.Zookeeper,它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。

3.dubbo,rpc框架,一般是用来解决分布式问题,与Zookeeper有一定的联系。

4.EJB,Enterprise JavaBean。企业级JavaEE组件模型,不太了解,不多评价。

5.ElasticSearch,一个搜索服务器,用处很多,比如常见的日志管理系统ELK之类的,在云计算中也大展拳脚。

6.W3C标准,World Wide Web Consortium,万维网联盟,主要规定:

  • 结构标准语言:XML(可扩展标记语言),XHTML(可扩展超文本标记语言);
  • 表现标准语言:CSS(层叠样式表)
  • 行为标准:DOM(文档对象模型),ECMAScript

7.ORM,对象-关系映射(Object/Relation Mapping)。对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。

8.Thymeleaf模板,是现代化服务器端的Java模板引擎,不同与JSP和FreeMarker,Thymeleaf的语法更加接近HTML,并且也有不错的扩展性。目前,spring boot主推。

9.B/S架构,即浏览器(Browser)和服务器(Server)结构。C/S架构,即客户端(Client)/服务器(Server)架构。

10.SaaS是Software-as-a-service(软件即服务)。Paas是Platform-as-a-Service(平台即服务)。IaaS是Infrastructure as a Service(基础设施即服务)。具体查相关资料,这块是近几年大火的概念,应该会持续相当一段时间的热度。

11.大数据的一些名词,不是很了解,可以混个脸熟:Storm;Hadoop;Spark 。

12.UML,统一建模语言(Unified Modeling Language,UML)又称标准建模语言,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。UML是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。

13.JPA全称Java Persistence API。JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。hibernate,spring boot都有相关结合。

14.OOA,Object-OrientedAnalysis(面向对象分析方法)是确定需求或者业务的角度,按照面向对象的思想来分析业务。OOD(英文全称:Object-OrientedDesign,中文名:面向对象设计),方法是OO方法中一个环节。上面这俩都和面向对象设计模式有关系。

15.Jenkins,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,包括:

  • 持续的软件版本发布/测试项目。
  • 监控外部调用执行的工作。

16.HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。这个和负载均衡有关,做网络的肯定对它很熟悉。

17.protobuf,Google开发,和xml,json等都是一种储存数据结构信息的工具。在golang中比较火热。

18.Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。也就是说,Netty是一个基于NIO的客户,服务器端编程框架,使用Netty可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户,服务端应用。Netty相当简化和流线化了网络应用的编程开发过程,例如,TCP和UDP的socket服务开发。Java网络是绕不开Netty的,不过我现在也还没了解过,但是经常能听到!

19.vpn (Virtual Private Network),虚拟专用网络的功能:在公用网络上建立专用网络,进行加密通讯。VPN属于远程访问技术,简单地说就是利用公用网络架设专用网络。例如某公司员工出差到外地,他想访问企业内网的服务器资源,这种访问就属于远程访问。

20.metadata,元数据,Data that describes other data;用来描述数据的数据。阮一峰的讲解

21.沙盒,Sandboxie,一个虚拟系统程序,允许你在沙盘环境运行浏览器或其他程序,因此运行所产生的变化可以随后删除。它创造了一个类似沙盒的独立作业环境,在其内部运行的程序并不能对硬盘产生永久性的影响。其为一个独立的虚拟环境,可以用测试不受信任的应用程序或上网行为。

22.语法糖,Syntactic sugar,也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。知乎回答

23.路由,是指路由器从一个接口上收到数据包,根据数据包的目的地址进行定向并转发到另一个接口的过程。

路由工作在OSI参考模型第三层——网络层的数据包转发设备。路由器通过转发数据包来实现网络互连。虽然路由器可以支持多种协议(如TCP/IP、IPX/SPX、AppleTalk等协议),但是在我国绝大多数路由器运行TCP/IP协议。路由器通常连接两个或多个由IP子网或点到点协议标识的逻辑端口,至少拥有1个物理端口。路由器根据收到数据包中的网络层地址以及路由器内部维护的路由表决定输出端口以及下一跳地址,并且重写链路层数据包头实现转发数据包。路由器通过动态维护路由表来反映当前的网络拓扑,并通过网络上其他路由器交换路由和链路信息来维护路由表。

简而言之,维护一个路由表,并进行网络跳转就是路由器的作用。而这个网络跳转的过程就是路由。

24.KISS原则,Keep It Simple and Stupid,是用户体验的高层境界,简单地理解这句话,就是要把一个产品做得连白痴都会用,因而也被称为“懒人原则”。换句话说来,”简单就是美“。

25.DRY,Don’t Repeat Yourself,特指在程序设计以及计算中避免重复代码,因为这样会降低灵活性、简洁性,并且可能导致代码之间的矛盾。

26.LOC,软件规模代码行(Line Of Code)是软件规模的一种量度,表示源码行数。

27.关于代码中特殊的注释技术:

  • TODO:如果代码中有该标识,说明在标识处有功能代码待编写,待实现的功能在说明中会简略说明。
  • FIXME:如果代码中有该标识,说明标识处代码需要修正,甚至代码是错误的,不能工作,需要修复,如何修正会在说明中简略说明。
  • XXX:如果代码中有该标识,说明标识处代码虽然实现了功能,但是实现的方法有待商榷,希望将来能改进,要改进的地方会在说明中简略说明。

可参考这里

28.sql注入,就是通过给sql语句中的值设置为会引起歧义的某些值,来达到对数据库的非正常操作。
防止sql注入的方法:sql语句预编译。所谓预编译,就是把sql语句的格式字符串先定义好,然后往里面填数据,语言会自动帮我们检验输入数据是否正规。

29.docker,Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。作为sandbox大概是container的最基本想法了 - 轻量级的隔离机制, 快速重建和销毁, 占用资源少。用docker在开发者的单机环境下模拟分布式软件部署和调试,可谓又快又好。

网上的学习资料众多,这里给一篇阮一峰的docker概念介绍

30.VCS : version control system , 版本控制系统;常用就是熟悉的git和svn

31.ACL,访问控制列表,是路由器和交换机接口的指令列表,用来控制端口进出的数据包。配置ACL后,可以限制网络流量,允许特定设备访问,指定转发特定端口数据包等。如可以配置ACL,禁止局域网内的设备访问外部公共网络,或者只能使用FTP服务。ACL既可以在路由器上配置,也可以在具有ACL功能的业务软件上进行配置。

暂时记到这里。

猜你喜欢

转载自blog.csdn.net/ybt_c_index/article/details/80825651