- 浏览: 9423 次
- 性别:
- 来自: 杭州
最新评论
作为一个程序员,长期的从事基础性的代码开发也是不现实的一件事,如果不能有所提高,长期做最基础的开发,对于个人的职业技能发展也是不好的。我们都知道程序员 的发展有两个主要方向一个是管理方向,另外一个就是技术方向。技术方向就要考虑往架构这块发展了,要想成为一个合格的后端架构师,就要掌握后端架构师的知识体系,为了让更多的朋友了解后端架构师的知识体系,新霸哥从后端架构中总结了一些经验供大家参考学习,下面从基础组件开始介绍。后期会持续更新。
多线程
多线程:指的是这个程序(一个进程)运行时产生了不止一个线程。
并行与并发:
并行:多个CPU实例或者多台机器同时执行一段处理逻辑,是真正的同时。
并发:通过CPU调度算法,让用户看上去同时执行,实际上从CPU操作层面不是真正的同时。并发往往在场景中有公用的资源,那么针对这个公用的资源往往产生瓶颈,我们会用TPS或者QPS来反应这个系统的处理能力。
同步:Java中的同步指的是通过人为的控制和调度,保证共享资源的多线程访问成为线程安全,来保证结果的准确。如代码简单加入@synchronized关键字。在保证结果准确的同时,提高性能,才是优秀的程序。线程安全的优先级高于性能。
线程安全:经常用来描绘一段代码。指在并发的情况之下,该代码经过多线程使用,线程的调度顺序不影响任何结果。这个时候使用多线程,我们只需要关注系统的内存,CPU是不是够用即可。反过来,线程不安全就意味着线程的调度顺序会影响最终结果。
在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口。在java中,每次程序运行至少启动2个线程。一个是main线程,一个是垃圾收集线程。因为每当使用java命令执行一个类的时候,实际上都会启动一个JVM,每一个jVM在操作系统中启动了一个进程。
多线程编程,模型复杂,容易发生冲突,必须用锁加以隔离,同时,又要小心死锁的发生。
加密
用户登入、交易、信息通讯、oauth 等等,不同的应用场景也会需要使用到不同的签名加密算法,或者需要搭配不一样的 签名加密算法 来达到业务目标。
反射
反射的核心是 JVM 在运行时才动态加载类或调用方法/访问属性,它不需要事先(写代码的时候或编译期)知道运行对象是谁。通过反射,我们可以在运行时获得程序或程序集中每一个类型的成员和成员的信息。程序中一般的对象的类型都是在编译期就确定下来的,而 Java 反射机制可以动态地创建对象并调用其属性,这样的对象的类型在编译期是未知的。所以我们可以通过反射机制直接创建对象,即使这个对象的类型在编译期是未知的。
反射最重要的用途就是开发各种通用框架。很多框架(比如 Spring)都是配置化的(比如通过 XML 文件配置 Bean),为了保证框架的通用性,它们可能需要根据配置文件加载不同的对象或类,调用不同的方法,这个时候就必须用到反射,运行时动态加载需要加载的对象。
调度
分配工作所需资源的方法。进行调度工作的程序叫做调度器。调度器通常的实现使得所有计算资源都处于忙碌状态(在负载均衡中),允许多位用户有效地同时共享系统资源,或达到指定的服务质量。调度是计算自身的基础,同时也是编程语言计算模型固有的部分。调度器使得在单处理器上通过多任务处理,从而让执行多个进程成为可能。
队列
先进先出(FIFO, First-In-First-Out)的线性表。在具体应用中通常用链表或者数组来实现。队列只允许在后端(称为rear)进行插入操作,在前端(称为front)进行删除操作。
队列的操作方式和堆栈类似,唯一的区别在于队列只允许新数据在后端进行添加。
高性能网络层
对网络、操作系统协议栈、进程与线程、常见的网络组件等知识点,需要有丰富的项目开发经验,能够权衡服务器运行效率与项目开发效率。
插件
透过和应用程序(例如网页浏览器,邮箱客户端)的互动,用来替应用程序增加一些所需要的特定的功能。最常见的有游戏、网页浏览器的插件和媒体播放器的插件。
压缩
通过特定的算法来减小计算机文件大小的机制。为了减少数据大小以节省保存空间和传输的时间。为了数据的传输,压缩能够作用于单独的数据内容或者所有的传输单元(包括数据头),这取决于一些特定的因素。
扩展方法
扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。 对于用 C#、F# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法没有明显区别。
表达式树
表达式树是将我们原来可以直接由代码编写的逻辑以表达式的方式存储在树状的结构里,从而可以在运行时去解析这个树,然后执行,实现动态的编辑和执行代码。
今天就先简单的介绍到这里,下一次介绍基础监控,业务监控,软件系统监控,硬件监控,用户的行为等等,更多信息关注新霸哥。后端架构师的知识体系之一基础组件
多线程
多线程:指的是这个程序(一个进程)运行时产生了不止一个线程。
并行与并发:
并行:多个CPU实例或者多台机器同时执行一段处理逻辑,是真正的同时。
并发:通过CPU调度算法,让用户看上去同时执行,实际上从CPU操作层面不是真正的同时。并发往往在场景中有公用的资源,那么针对这个公用的资源往往产生瓶颈,我们会用TPS或者QPS来反应这个系统的处理能力。
同步:Java中的同步指的是通过人为的控制和调度,保证共享资源的多线程访问成为线程安全,来保证结果的准确。如代码简单加入@synchronized关键字。在保证结果准确的同时,提高性能,才是优秀的程序。线程安全的优先级高于性能。
线程安全:经常用来描绘一段代码。指在并发的情况之下,该代码经过多线程使用,线程的调度顺序不影响任何结果。这个时候使用多线程,我们只需要关注系统的内存,CPU是不是够用即可。反过来,线程不安全就意味着线程的调度顺序会影响最终结果。
在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口。在java中,每次程序运行至少启动2个线程。一个是main线程,一个是垃圾收集线程。因为每当使用java命令执行一个类的时候,实际上都会启动一个JVM,每一个jVM在操作系统中启动了一个进程。
多线程编程,模型复杂,容易发生冲突,必须用锁加以隔离,同时,又要小心死锁的发生。
加密
用户登入、交易、信息通讯、oauth 等等,不同的应用场景也会需要使用到不同的签名加密算法,或者需要搭配不一样的 签名加密算法 来达到业务目标。
反射
反射的核心是 JVM 在运行时才动态加载类或调用方法/访问属性,它不需要事先(写代码的时候或编译期)知道运行对象是谁。通过反射,我们可以在运行时获得程序或程序集中每一个类型的成员和成员的信息。程序中一般的对象的类型都是在编译期就确定下来的,而 Java 反射机制可以动态地创建对象并调用其属性,这样的对象的类型在编译期是未知的。所以我们可以通过反射机制直接创建对象,即使这个对象的类型在编译期是未知的。
反射最重要的用途就是开发各种通用框架。很多框架(比如 Spring)都是配置化的(比如通过 XML 文件配置 Bean),为了保证框架的通用性,它们可能需要根据配置文件加载不同的对象或类,调用不同的方法,这个时候就必须用到反射,运行时动态加载需要加载的对象。
调度
分配工作所需资源的方法。进行调度工作的程序叫做调度器。调度器通常的实现使得所有计算资源都处于忙碌状态(在负载均衡中),允许多位用户有效地同时共享系统资源,或达到指定的服务质量。调度是计算自身的基础,同时也是编程语言计算模型固有的部分。调度器使得在单处理器上通过多任务处理,从而让执行多个进程成为可能。
队列
先进先出(FIFO, First-In-First-Out)的线性表。在具体应用中通常用链表或者数组来实现。队列只允许在后端(称为rear)进行插入操作,在前端(称为front)进行删除操作。
队列的操作方式和堆栈类似,唯一的区别在于队列只允许新数据在后端进行添加。
高性能网络层
对网络、操作系统协议栈、进程与线程、常见的网络组件等知识点,需要有丰富的项目开发经验,能够权衡服务器运行效率与项目开发效率。
插件
透过和应用程序(例如网页浏览器,邮箱客户端)的互动,用来替应用程序增加一些所需要的特定的功能。最常见的有游戏、网页浏览器的插件和媒体播放器的插件。
压缩
通过特定的算法来减小计算机文件大小的机制。为了减少数据大小以节省保存空间和传输的时间。为了数据的传输,压缩能够作用于单独的数据内容或者所有的传输单元(包括数据头),这取决于一些特定的因素。
扩展方法
扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。 对于用 C#、F# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法没有明显区别。
表达式树
表达式树是将我们原来可以直接由代码编写的逻辑以表达式的方式存储在树状的结构里,从而可以在运行时去解析这个树,然后执行,实现动态的编辑和执行代码。
今天就先简单的介绍到这里,下一次介绍基础监控,业务监控,软件系统监控,硬件监控,用户的行为等等,更多信息关注新霸哥。后端架构师的知识体系之一基础组件
发表评论
-
2016年末程序员应该知道的基本架构思想
2016-11-14 07:38 375说到系统的架构,初学者可能没有意识到,对于已经从事多年的开 ... -
2016年末程序员突破自我的绝密方法分享
2016-11-07 07:43 337新霸哥一直致力于了软件开发行业,从事软件开发快五年了,时间 ... -
2016程序员自学能力的培养方法有哪些?
2016-10-25 21:28 335近期新霸哥发现有 ... -
2016杭州云栖大会新亮点在这里
2016-10-17 07:27 320云栖大会已经圆满落幕,新霸哥近期一直在关注大会的一些情况, ... -
2016年学哪个编程语言最有前途?
2016-10-10 07:22 522说起哪个编程语言 ... -
准备加入软件开发行业的朋友可以看看
2016-09-26 07:33 283最近新霸哥注意到有一些的朋友想加入到IT行业中,因为现在这 ... -
为什么现在UML很少用了
2016-09-19 07:37 336新霸哥发现UML在面 ... -
软件开发中oracle查询常用方法总结
2016-09-12 07:37 262上次新霸哥和大家讲解了一些关于oracle的知识发现大家对 ... -
新霸哥带你轻松玩转Oracle数据库
2016-09-06 23:28 417接触过软件开发的 ... -
敏捷开发是一个什么样的开发模式
2016-08-29 07:39 267在信息技术高速发 ... -
这些云计算技术你了解过哪几种
2016-08-15 07:40 341新霸哥发现目前信息量高速增长的今天,IT行业正在面临着空间 ... -
Java与云计算有什么关系呢
2016-08-08 07:37 502在如今这个信息技术高速发展的今天,云计算已经不是一个陌生的 ... -
新霸哥带你进入java的世界
2016-08-01 07:46 309新霸哥从近期大家的留言中注意到了大家对基础知识比较重视,很 ... -
分布式数据库hbase详解
2016-07-25 07:47 358新霸哥注意到了在人类随着计算机技术的发展,数据的存储量发生 ... -
SQL和NOSQL有区别吗?
2016-07-18 07:44 418在大数据高速发展的今天,数据量在不断的增加,传统的数据库可 ... -
怎么充分利用大数据寻找商机?
2016-07-11 07:33 636在大数据时代,数据量日益增加,所以展现在我们面前的就有两个 ... -
mapreduce编程模型你知道多少?
2016-07-04 07:40 317上次新霸哥给大家介绍了一些hadoop的相关知识,发现大家 ... -
hadoop是什么?
2016-06-27 23:23 281在如今这个信息高 ... -
程序员入门有年龄限制吗?
2016-06-19 23:06 848年轻的我们很幸运 ... -
云计算的发展路径和落地形态分别有几种?
2016-06-12 22:26 668说到云计算可能很 ...
相关推荐
《后端架构师技术图谱》是针对Java开发者的一份全面指南,旨在帮助他们提升到后端...通过深入学习和实践这些内容,开发者可以逐步构建自己的技术体系,提升解决问题的能力,为成为一名优秀的后端架构师打下坚实基础。
【架构师图谱】是IT行业中对于架构师所需掌握的知识体系的一种综合展现,它涵盖了从基础组件到高级架构设计的多个关键领域。架构师在软件开发中扮演着至关重要的角色,他们负责设计和规划系统的整体结构,确保其稳定...
本套高级Java软件架构师实战培训视频教程是私塾在线推出的...通过这套视频教程,学员不仅能掌握高级Java编程技巧,还能深入理解软件架构设计原则,具备解决复杂问题的能力,为成为专业的Java软件架构师打下坚实的基础。
- Java架构师不仅需要关注产品的前端和后端开发,还需要确保所有组件能够有效协同工作。这包括但不限于API设计、微服务架构等。 3. **参与项目的设计、开发工作,核心模块设计与代码编写** - 架构师需要深入参与到...
作为一本针对Java平台的高级教程,它涵盖了从基础概念到高级设计原则的广泛内容,为读者提供了全面的J2EE知识体系。 1. **J2EE概述**:J2EE(Java 2 Platform, Enterprise Edition)是Oracle公司推出的用于构建企业...
涵盖了OOP、IOC、AOP、J2EE框架、SOA、ROA、JVM、Java通讯、软件架构、服务器、中间件、WEB服务器、权限分派、负载平衡、数据库设计、项目管理、团队建设等领域,旨在为Java系统架构师提供一个全面的知识体系。...
### Java高级架构必备知识点 #### 一、高可用与负载均衡 **1.1 负载均衡(负载均衡算法)** ...以上知识点涵盖了Java高级架构师所需掌握的核心技术和实践技能,旨在帮助读者全面了解如何构建和维护大型分布式系统。
以上知识体系反映了ThoughtWorks在架构设计上的全面思考,对于希望提升自身技能的架构师和后端开发者来说,这份白皮书无疑是一份宝贵的参考资料。通过深入理解和实践这些概念,可以更好地构建适应现代商业需求的软件...
作为一位高级业务解决方案和架构师,理解并掌握Parseh的核心理念和技术栈至关重要。 1. **项目编程基础**: - **编程语言选择**:Parseh 解决方案可能涉及多种编程语言,如Java、Python或C#,用于后端服务开发,...
Dan Farino,作为MySpace的首席系统架构师,面对着庞大的用户群体和海量的数据处理需求,构建了一套独特的架构体系,以应对大规模网站运营中的各种挑战。本文将基于Dan Farino的分享,深入探讨MySpace架构的关键知识...
- **个体架构师**:随着项目复杂度的提高,出现了专门的架构师角色。 - **架构组**:随着团队规模的扩大,成立了专门的架构小组来协调各方面的设计。 - **多架构组**:面对更复杂的应用场景和需求,形成了多个架构...
在大规模分布式系统中,如何设计和实现一个高效的软负载体系,是系统架构师必须考虑的问题。 文档中提到了多个关键组件和概念,包括但不限于: 1. **Nacos(动态服务发现、配置和服务管理平台)**:Nacos是阿里...
2. 软件体系结构设计:软件设计师必须具备设计软件体系结构的能力,包括选择合适的架构风格(如分层架构、微服务架构等),决定组件之间的交互方式,以及如何保持系统的可扩展性和可维护性。 3. 软件设计模式:设计...
数据库系统体系结构是数据库设计和管理的基础,它包括数据库的三级模式结构、...无论是开发人员、数据库管理员还是系统架构师,都需要深入掌握这些知识,以便在实际工作中优化数据管理和访问,确保系统的稳定性和性能。
总体技术架构通常包括客户终端、前台中间层、后台服务器、数据仓库、应用服务器、安全服务器等多个组成部分,它们通过智能卡、公钥基础设施(PKI)、私有网络和公共网络相互连接,形成一个企业级的体系架构蓝图。...
从初级程序员到高级系统架构师,每一步都伴随着技能的深化和技术视野的拓宽。 #### 初级阶段:Java软件工程师 在这个阶段,重点在于掌握Java语言的基础语法和核心编程技术。这包括理解类、抽象类、接口、最终类、...
### 软考系统架构设计师2015年真题题目1知识点解析 #### 一、项目背景与目标 - **项目背景**:随着互联网的迅速发展,网络安全问题日益严峻,各类网络攻击事件频发,如网络蠕虫病毒、主机被控制、数据库非法访问等...
总之,这门课程旨在通过深度讲解OpenStack的核心组件和服务,帮助学员建立起全面的OpenStack知识体系,提升其在实际工作中部署、管理和优化OpenStack云环境的能力。同时,课程还将分享业界最佳实践和真实案例,使...