架构师面试
文章平均质量分 80
以实战疑问为线索,深入拆解面试各个环节的问题,打造核心的程序优化思路,完整的面试知识体系
不要迷恋发哥
永远不要“用战术上的勤奋,掩饰战略上的懒惰”~~~~~~一名爱好古筝的IT宅男
展开
-
【架构师面试】-提纲目录-10万字全方位JAVA面试题汇总-不断更新中...
1:引言 涨薪路上,你是否遇到以下问题? 面试工作中 1:源码原理生搬硬套,层层拷问信心全无 2:工作中追求效率,面试中被深挖细节 网上资料里 1:乌龙混杂,质量不高,验证成本高 2:越找越多,不知重点,学习成本高 3:零散分散,不成体系,关联成网难2:概述最近学习开课吧课程中,现在对课程的笔记做整理,也是自己对学习成果的一个 小节。希望可以...原创 2021-10-26 16:44:11 · 336 阅读 · 0 评论 -
【架构师面试-JUC并发编程-12】-基于源码分析-线程池合适的线程数量是多少
本章主要讨论线程池合适的线程数量是多少,以及 CPU 核心数和线程数的关系。我们调整线程池中的线程数量的最主要的目的是为了充分并合理地使用 CPU 和内存等资源,从而最大限度地提高程序的性能。在实际工作中,我们需要根据任务类型的不同选择对应的策略。1:CPU密集型1:定义CPU密集型也是指计算密集型,大部分时间用来做计算逻辑判断等CPU动作的程序称为CPU密集型任务。该类型的任务需要进行大量的计算,主要消耗CPU资源。2:场景加密、解密、压缩、计算等一系列需要大量耗费 CPU 资源的任.原创 2021-12-26 23:49:09 · 371 阅读 · 0 评论 -
【架构师面试-大厂内部面试题-4】-MySQL 运维基础知识面试题汇总50题
吃透这50道题,再也不用担心sql运维了,废话不多说,咱们直接上干货!!!1. 请解释关系型数据库概念及主要特点?概念:关系型数据库是支持采用了关系模型的数据库,简单来说,关系模型就是指二维表模型,而一个关系数据库就是由二维表及其之间的联系所组成的一个数据组织。特点:最大的特点就是事务的一致性。优点:容易理解、使用方便、易于维护、支持 SQL。缺点:1. 高并发读写需求:网站的用户并发非常高,往往达到每秒上万次读写请求,对于传统关系型数据库来说,硬盘 I/O 是一个很原创 2021-12-25 10:00:00 · 2220 阅读 · 0 评论 -
【架构师面试-大厂内部面试题-3】-MySQL基础命令面试大全40题
做完这40道题,再也不用担心MySQL命令了,废话不多说,咱们直接上干货!!!1. 开启 MySQL 服务service mysqld start/init.d/mysqld startsafe_mysql &2.关闭 MySQL 服务service mysqld stop/etc/init.d/mysqld stopmysqladmin -uroot -p123456 shutdown3. 检测端口是否运行lsof -i:3306netstat -tun原创 2021-12-24 10:00:00 · 775 阅读 · 0 评论 -
【架构师面试-大厂内部面试题-2】-MySQL笔试题33道|附答案和表结构
做完这33道题,再也不用担心sql笔试,废话不多说,咱们直接上干货!!!1:题目1、 查询Student表中的所有记录的Sname、Ssex和Class列。2、 查询教师所有的单位即不重复的Depart列。3、 查询Score表中成绩在60到80之间的所有记录。4、 查询Score表中成绩为85,86或88的记录。5、 查询Student表中“95031”班或性别为“女”的同学记录。6、 以Class降序查询Student表的所有记录。7、 以Cno升序、Degree降序查询原创 2021-12-23 10:00:00 · 760 阅读 · 0 评论 -
【架构师面试-分布式-2】-解决共识问题方案-Raft 算法
1 什么是Raft算法Raft算法是一种非常易于理解的分布式共识算法。Raft算法可以保障分布式系统数据的一致性,解决分 布式容错系统的共识问题。在容错性与性能表现方面等同于老牌的复杂的Paxos共识算法。Raft 算法:是一个最终一致性的算法,不是强一致性算法。2 角色、任期及角色转变主节点有写入数据的权限。对系统的所有更改,都需要经过Leader节点。从节点没有权限,从节点只有读取权限!在 Raft 中,节点有三种角色:Leader【主】:唯一负责处理客户端写请求的节点;也可原创 2021-12-22 10:00:00 · 545 阅读 · 0 评论 -
【架构师面试-分布式-1】-分布式CAP和BASE原则
1:分布式分布式系统是多个处理机通过通信线路互联而构成的松散耦合的系统。从系统中某台处理机来看,其余的处理机和相应的资源都是远程的,只有它自己的资源才是本地的。至今,对分布式系统的定义尚未形成统一的见解。一般认为,分布式系统应具有以下四个特征:分布性分布式系统由多台计算机组成,它们在地域上是分散的,可以散布在一个单位、一个城市、一个国家,甚至全球范围内。整个系统的功能是分散在各个节点上实现的,因而分布式系统具有数据处理的分布性。自治性分布式系统中的各个节点都包含自己的处理机和内存,各原创 2021-12-21 10:00:00 · 962 阅读 · 0 评论 -
【架构师面试-搜索-4】-ElasticSearch集群Master选举机制
1 Master选举核心设计思想Discovery模块:负责发现集群中的节点,以及选择主节点。ES支持多种不同Discovery类型选择,内置的实现称为Zen Discovery。Zen Discovery封装了节点发现(Ping)、选主等实现过程。Master选举核心设计思想:所有分布式系统都需要以某种方式处理数据一致性问题。一般情况下,可以将策略分为两种:1. 避免数据不一致【ES】2. 事后处理不一致数据【事后补偿】,适用场景下非常强大,但对数据模型有比较严格的限。Elasti原创 2021-12-20 10:00:00 · 698 阅读 · 0 评论 -
【架构师面试-搜索-3】-ElasticSearch集群启动过程
理解原理对于解决或避免集群维护过程中可能遇到的脑裂、无主、恢复慢、丢数据等问题很有帮助。1 集群启动主要流程1. Elect-master选出临时Master【参选人数过半】确定Master【得票过半】检测集群节点数【离开节点】2. GatewayMaster 索取MetaState选举元信息,发布元信息参与元信息选举的节点数过半3. Allocation向所有节点询问shard信息磁盘且in-sync列表存在为主分片磁盘存在选为副本否则延迟...原创 2021-12-19 10:00:00 · 357 阅读 · 0 评论 -
【架构师面试-搜索-2】-ElasticSearch集群shard与replicas机制
1 为什么分片在分布式系统中,单机无法存储规模巨大的数据,要依靠大规模集群处理和存储这些数据,一般通过增加机器数量来提高系统水平扩展能力。因此,需要将数据分成若干小块分配到各个机器上。然后通过某种路由策略找到某个数据块所在的位置。2 为什么做副本Redis主从复制,MySQL主从复制1TB -> 2TB除了将数据分片以提高水平扩展能力,分布式存储中还会把数据复制成多个副本,放置到不同的机器中,这样一来可以增加系统可用性,同时数据副本还可以使读操作并发执行,分担集群压力。.原创 2021-12-18 22:00:00 · 398 阅读 · 0 评论 -
【架构师面试-搜索-1】-全文检索和倒排索引
什么是全文检索全文检索是利用倒排索引技术对需要搜索的数据进行处理,然后提供快速匹配的技术。其实全文检索还有另外一种专业定义,先创建索引然后对索引进行搜索的过程,就是全文检索。1:倒排索引倒排索引是一种存储数据的方式,与传统查找有很大区别:传统查找:采用数据按行存储,查找时逐行扫描,或者根据索引查找,然后匹配搜索条件,效率较差。概括来讲是先找到文档,然后看是否匹配。查找一个10MB的word文档,大概需要3秒倒排索引:首先对数据按列拆分存储,然后对文档中的数据分词,对词条进行索引,并记录词原创 2021-12-18 10:00:00 · 446 阅读 · 0 评论 -
【架构师面试-云原生-2】-云原生面试之Kubernetes(k8s)面试题大全100题
1 答疑1 Docker在发布微服务项⽬实例时候通常是怎么做?服务打镜像发布到镜像仓库⾥⾯去在Kubernetes运⾏我们的镜像2 Docker运⾏起来后,关于⼀些动态的ip地址配置项(⽐如 eureka集群加了⼀个服务节点怎么通知项⽬)通过Kubernetes中的Service的对象去解决。3 K8S是否能帮我们做到启动容器时添加相对环境变量参数可以添加新的变量参数。4 在实际项⽬应⽤的过程,我们⼀般把哪些类型的应⽤K8S来做管理(应⽤实例?数据库?第三⽅中间件)⽆原创 2021-12-17 22:00:00 · 2739 阅读 · 0 评论 -
【架构师面试-云原生-1】-云原生面试之Docker面试题大全30题
1:总体1 Docker 和虚拟机有啥不同?Docker是轻量级的沙盒,在Docker当中有操作系统的⽂件⽬录,但是没有操作系统的内核。虚拟机⾥⾯运⾏着操作系统的。2 Docker 安全么?Docker的安全性不如虚拟机,主要原因在于:Docker是操作系统上被限制的进程。虚拟机⾥⾯是独⽴的操作系统。但是,⼤量的⽣产环境证明,Docker的安全性还是很⾼的。Docker的安全性主要是通过隔离技术,Namespace。3 如何清理后台停⽌的容器?单独删除:docke原创 2021-12-17 10:00:00 · 1416 阅读 · 0 评论 -
【架构师面试-缓存与搜索-2】-基于布隆过滤器解决缓存穿透
1:什么是缓存穿透一个常见的缓存使用方式:读请求来了,先查下缓存,缓存有值命中,就直接返回;缓存没命中,就去查数据库,然后把数据库的值更新到缓存,再返回。缓存穿透:指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,进而给数据库带来压力。大量数据判断是否存在这个中间层,是不是用HashMap就好了呢?听起来不错嘛,HashMap时间复杂度可以达到O(1),但是呢因为HashMap数据是在内存里面的原创 2021-12-16 22:00:00 · 1509 阅读 · 0 评论 -
【架构师面试-缓存与搜索-1】-缓存与缓存置换策略源码实现
1:什么是缓存缓存:加速数据访问的存储,降低延迟(latency),提升吞吐量(Throughput)的利器。1:缓存演进历史1. 查库2. ConcurrentHashMap3. LRU4. Guava Cache5. 分布式缓存(redis,MemCache)6. 多级缓存2:在什么地方加缓存缓存对于每个开发者来说是相当熟悉了,为了提高程序的性能我们会去加缓存,但是在什么地方加缓存,如何加缓存呢?举个栗子:假设一个网站,需要提高性能,缓存可以放在浏览器,可以放原创 2021-12-16 10:00:00 · 2169 阅读 · 0 评论 -
【架构师面试-存储-6】-MySQL分库分表的拆分规则
1:单节点MySQL的瓶颈在哪你是个天才,你浑身是铁,碾的了多少钉子MySQL单机的存储能力、连接数是有限的,它自身就很容易会成为系统的瓶颈。当单表数据量在百万以里时,我们还可以通过添加从库、优化索引提升性能。数据量朝着千万以上趋势增长,再怎么优化数据库,很多操作性能仍下降严重。为了减少数据库的负担,提升数据库响应速度,缩短查询时间,这时候就需要进行 分库分表 。2:什么是分库分表分库分表就是要将大量数据分散到多个数据库中,使每个数据库中数据量小响应速度快,以此来提升数据库整体性能。原创 2021-12-15 10:00:00 · 208 阅读 · 0 评论 -
【架构师面试-存储-5】-MySQL索引-二叉查找树-红黑树-B树-B+树
索引是什么索引是高效获取数据的数据结构。作用加速查询。一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往是存储在磁盘上的文件中的。我们通常所说的索引,包括聚集索引、覆盖索引、组合索引、前缀索引、唯一索引等,没有特别说明,默认都是使用B+树结构组织的索引。优势检索效率:可以提高数据检索的效率,降低数据库的IO成本,类似于书的目录。快速排序:通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗。被索引的列会自动进行排序,包括【单列索引】和【组合索引】,只原创 2021-12-14 22:00:00 · 1572 阅读 · 0 评论 -
【架构师面试-存储-4】-MySQL基于MVCC解决丢失更新
1:什么是MVCC概念MVCC(多版本的并发控制,英文全称:Multi Version Concurrency Control)机制主要用来解决事务中的丢失更新问题。MVCC是用于数据库提供并发访问控制的并发控制技术。与MVCC相对的是基于锁的并发控制, Lock-Based Concurrency Control (LBCC)。MVCC最大的好处相信也是耳熟能详:读不加锁,读写不冲突。在读多写少的OLTP应用中,读写不冲突是非常重要的,极大的增加了系统的并发性能,这也是为什么现阶段,几原创 2021-12-14 10:00:00 · 1163 阅读 · 0 评论 -
【架构师面试-存储-3】-MySQL全局锁|表级锁|行锁
数据库为多用户共享的,当出现并发访问的时候,需要使用锁来控制资源的访问。根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类。全局锁全局锁就是对整个MySQL数据库加锁,MySQL中的命令是 Flush tables with read lock (FTWRL)。在执行这个命令之后,MySQL进入全局锁的状态,这个数据库处于只读状态,整个数据库会拒绝掉增删改这些请求,包括数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句。Flush t原创 2021-12-13 22:00:00 · 768 阅读 · 0 评论 -
【架构师面试-存储-2】-数据库事务与事务隔离
事务概述事务指的是逻辑上的一组操作,组成这组操作的各个单元要么全都成功,要么全都失败。事务作用:保证在一个事务中多次SQL操作要么全都成功,要么全都失败。事务基本特性(ACID,是针对单个事务的一个完美状态)原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发,要么都不发生。一致性(Consistency)事务前后数据的完整性必须保持一致。保证一致性的工具:锁。隔离性(Isolation)事务的隔离性是指多个用户并发访问数据库.原创 2021-12-13 10:00:00 · 344 阅读 · 0 评论 -
【架构师面试-存储-1】-行式存储与列式存储
1:OLTP与OLAP当今的数据处理大致可分为两大类1:联机事务处理 OLTP (on-line transaction processing)OLTP 是传统关系型数据库的主要应用,用来执行一些基本的、日常的事务处理, 比如数据库记录的增、删、改、查等等不适合海量数据处理ACID串行化【单线程】:事务之间相互影响,要么锁住,(写锁)2:联机分析处理 OLAP (On-Line Analytical Processing)OLAP 是分布式数据库的主要应用,它对实时性要求不高原创 2021-12-12 10:00:00 · 1170 阅读 · 0 评论 -
【架构师面试-Java编程基本功-21】-Spring Boot微服务与安全性
Spring Boot 应用有哪些方法?在生产中使用 HTTPS使用 Snyk 检查你的依赖关系升级到最新版本启用 CSRF 保护使用内容安全策略防止 XSS 攻击如何实现 Spring Boot 应用程序的安全性?为了实现 Spring Boot 的安全性,我们使用 spring-boot-starter-security 依赖项,并且必须添加安全配置。它只需要很少的代码。配置类将必须扩展WebSecurityConfigurerAdapter 并覆盖其方法。比较一下 Sp原创 2021-12-11 22:00:00 · 404 阅读 · 0 评论 -
【架构师面试-Java编程基本功-20】-Spring Boot配置与事务
Spring Boot 有哪几种读取配置的方式?Spring Boot 可以通过 @PropertySource,@Value,@Environment, ConfigurationPropertie 注解来绑定变量什么是 JavaConfigSpring JavaConfig 是 Spring 社区的产品,Spring 3.0 引入了他,它提供了配置 Spring IOC 容器的纯 Java 方法。因此它有助于避免使用XML 配置。使用 JavaConfig 的优点在于:面向对象的配置原创 2021-12-11 10:00:00 · 156 阅读 · 0 评论 -
【架构师面试-Java编程基本功-19】-Spring Boot工作原理与优点
什么是 Spring BootSpring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,使开发者能快速上手。为什么要用 SpringBoot快速开发,快速整合,配置简化、内嵌服务容器SpringBoot 与 SpringCloud 区别SpringBoot 是快速开发的 Spring 框架,SpringCloud 是完整的微服务框架,SpringCloud依赖于 Spri原创 2021-12-10 22:00:00 · 223 阅读 · 0 评论 -
【架构师面试-Java编程基本功-18】-Spring AOP面向切面编程
什么是 AOPOOP(Object-Oriented Programming)面向对象编程,允许开发者定义纵向的关系,但并适用于定义横向的关系,导致了大量代码的重复,而不利于各个模块的重用。AOP(Aspect-Oriented Programming),一般称为面向切面编程,作为面向对象的一种补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性原创 2021-12-10 10:00:00 · 262 阅读 · 0 评论 -
【架构师面试-Java编程基本功-17】-Spring数据访问与事务管理
解释对象/关系映射集成模块Spring 通过提供 ORM 模块,支持我们在直接 JDBC 之上使用一个对象/关系映射映射(ORM)工具,Spring 支持集成主流的 ORM 框架,如 Hiberate,JDO 和 MyBatis,JPA,TopLink,JDO,OJB 等待 。Spring 的事务管理同样支持以上所有 ORM 框架及 JDBC。在 Spring 框架中如何更有效地使用 JDBC使用 Spring JDBC 框架,资源管理和错误处理的代价都会被减轻。所以开发者只需写statemen原创 2021-12-09 22:00:00 · 317 阅读 · 0 评论 -
【架构师面试-Java编程基本功-16】-Spring 注解
基于Java的Spring注解配置基于 Java 的配置,允许你在少量的 Java 注解的帮助下,进行你的大部分Spring 配置而非通过 XML 文件。以@Configuration 注解为例,它用来标记类可以当做一个 bean 的定义,被 Spring IOC 容器使用。另一个例子是@Bean 注解,它表示此方法将要返回一个对象,作为一个bean 注册进 Spring 应用上下文。怎样开启注解装配注解装配在默认情况下是不开启的,为了使用注解装配,我们必须在 Spring 配置文件原创 2021-12-09 10:00:00 · 106 阅读 · 0 评论 -
【架构师面试-Java编程基本功-15】-bean的装配与自动装配
1:什么是 bean 装配装配,或 bean 装配是指在 Spring 容器中把 bean 组装到一起,前提是容器需要知道bean 的依赖关系,如何通过依赖注入来把它们装配到一起。2:什么是 bean 的自动装配在 Spring 框架中,在配置文件中设定 bean 的依赖关系是一个很好的机制,Spring 容器能够自动装配相互合作的 bean,这意味着容器不需要和配置,能通过 Bean 工厂自动处理 bean 之间的协作。这意味着 Spring 可以通过向 Bean Factory 中注入的方式原创 2021-12-08 22:00:00 · 304 阅读 · 0 评论 -
【架构师面试-Java编程基本功-14】-Spring beans作用域与生命周期
1:什么是 Spring beansSpring beans 是那些形成 Spring 应用的主干的 java 对象。它们被 Spring IOC 容器初始化,装配,和管理。这些 beans 通过容器中配置的元数据创建。比如,以 XML 文件中 的形式定义。2:一个 Spring Bean 定义 包含什么?一个 Spring Bean 的定义包含容器必知的所有配置元数据,包括如何创建一个 bean,它的生命周期详情及它的依赖。3:如何给 Spring 容器提供配置元数据?Spring 有几种原创 2021-12-08 10:00:00 · 191 阅读 · 0 评论 -
【架构师面试-大厂内部面试题-1】-JAVA开发工程师精选面试100题-三万字面经
Dubbo1.服务调用超时问题怎么解决?消费者调用服务超时会引起服务降级的发生,即从发出调用请求到获取到提供者的响应结果这个时间超出了设定的时限。默认服务调用超时时限为 1 秒。可以 在消费者端与提供者端设置超时时限来解决。总的来说还是要设计好业务代码来减少调用时长,设置准确RPC调用的超时时间才能更好的解决这个问题。2.Dubbo支持哪些序列化方式?默认使用Hessian序列化,还有Duddo、FastJson、Java自带序列化。3.Dubbo和SpringCloud的关...原创 2021-12-06 00:59:38 · 1277 阅读 · 0 评论 -
【架构师面试-Java编程基本功-13】-Spring 之依赖注入
1:什么是 Spring 的依赖注入控制反转 IOC 是一个很大的概念,可以用不同的方式来实现。其主要实现方式有两种:依赖注入和依赖查找依赖注入:相对于 IOC 而言,依赖注入(DI)更加准确地描述了 IOC 的设计理念。所谓依赖注入(Dependency Injection),即组件之间的依赖关系由容器在应用系统运行期来决定,也就是由容器动态地将某种依赖关系的目标对象实例注入到应用系统中的各个关联的组件之中。组件不做定位查询,只提供普通的Java 方法让容器去决定依赖关系。2:依赖注入的基本原则原创 2021-12-07 10:00:00 · 307 阅读 · 0 评论 -
【架构师面试-Java编程基本功-12】-Spring之IOC与容器
1:控制反转(IOC)有什么作用管理对象的创建和依赖关系的维护。对象的创建并不是一件简单的事,在对象关系比较复杂时,如果依赖关系需要程序猿来维护的话,那是相当头疼的解耦,由容器去维护具体的对象托管了类的产生过程,比如我们需要在类的产生过程中做一些处理,最直接的例子就是代理,如果有容器程序可以把这部分处理交给容器,应用程序则无需去关心类是如何完成代理的2:IOC 的优点是什么IOC 或 依赖注入把应用的代码量降到最低。它使应用容易测试,单元测试不再需要单例和 JNDI 查找机制。最原创 2021-12-06 22:00:00 · 142 阅读 · 0 评论 -
【架构师面试-Java编程基本功-11】-Spring之模块与应用上下文
1:Spring 由哪些模块组成Spring 总共大约有 20 个模块, 由 1300 多个不同的文件构成。 而这些组件被分别整合在核心容器(Core Container)、AOP(Aspect Oriented Programming)和设备支持(Instrmentation) 、数据访问与集成(Data Access/Integeration) 、 Web、 消息(Messaging) 、 Test 等 6 个 模块中。 以下是 Spring 5 的模块结构图:①spring core:提供原创 2021-12-05 22:00:00 · 751 阅读 · 0 评论 -
【架构师面试-Java编程基本功-10】-Spring 核心概念
1:什么是 SpringSpring 是一个轻量级 Java 开发框架,最早有 Rod Johnson 创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的 JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发 Java 应用程序提供全面的基础架构支持。Spring 负责基础架构,因此 Java 开发者可以专注于应用程序的开发。Spring 最根本的使命是解决企业级应用开发的复杂性,即简化 Java 开发。Spring 可以做很多事情,它原创 2021-12-05 10:00:00 · 557 阅读 · 0 评论 -
【架构师面试-Java编程基本功-9】-Linux基本命令
cd (change directory:英文释义是改变目录)切换目录cd ../ ;跳到上级目录cd /opt ;不管现在到那直接跳到指定的 opt 文件夹中cd ~ ;切换当前用户的家目录。root 用户的家目录就是 root 目录。pwd (print working directory:显示当前工作目录的绝对路径)pwd显示当前的绝对路劲ls (ls:list 的缩写,查看列表)查看当前目录下的所有文件夹(ls 只列出文件名或目录名)ls -a ;显示所有文件原创 2021-12-04 10:00:00 · 716 阅读 · 0 评论 -
【架构师面试-Java编程基本功-8】-Linux内核与文件系统
1:什么是 Linux 内核Linux 系统的核心是内核。内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。①系统内存管理②应用程序管理③硬件设备管理④文件系统管理2:Linux 的基本组件是什么就像任何其他典型的操作系统一样,Linux 拥有所有这些组件:内核,shell 和 GUI,系统实用程序和应用程序。Linux 比其他操作系统更具优势的是每个方面都附带其他功能,所有代码都可以免费下载。3:Linux 的体系结构从大的方面讲,Linux原创 2021-12-03 22:00:00 · 169 阅读 · 0 评论 -
【架构师面试-Java编程基本功-7】-基于NIO实现网络通信源码
1:引言1:线程池解决多线程BIO编程会出现的问题线程池固然可以解决这个问题,万一需求量还不够还要扩大线程池。当是这是我们自己靠着自己的思想完成的 IO 操作,Socket 上来了就去创建线程去抢夺CPU 资源,MD,线程都 TM 做IO 去了,CPU 也不舒服呀。这时呢:Jdk 官方坐不住了,兄弟 BIO 的问题交给我,我来给你解决:NIO 的诞生使用 NIO 实现网络通信。2:NIO实现网络通信NIO 是 JDK1.4 提供的操作,他的流还是流,没有改变,服务器实现的还是一个连接原创 2021-11-29 14:00:00 · 257 阅读 · 0 评论 -
【架构师面试-Java编程基本功-6】-基于源码实现IO基本操作
这里的基本操作就是普通的读取操作,如果想要跟深入的了解不同的 IO开发场景必须先了解 IO 的基本操作。1:按字符流读取文件1:按字符流的·节点流方式读取如果我们要取的数据基本单位是字符,那么用(字符流)这种方法读取文件就比较适合。比如:读取 test.txt 文件注释:字符流:以字符为单位,每次次读入或读出是 16 位数据。其只能读取字符类型数据。 (Java 代码接收数据为一般为 char 数组,也可以是别的)字节流:以字节为单位,每次次读入或读出是 8 位数据。可以读任何类原创 2021-11-28 22:00:00 · 109 阅读 · 0 评论 -
【架构师面试-Java编程基本功-4】-IO的区别与分类
1:什么是 IOJava 中 I/O 是以流为基础进行数据的输入输出的,所有数据被串行化(所谓串行化就是数据要按顺序进行输入输出)写入输出流。简单来说就是java 通过 io 流方式和外部设备进行交互。在 Java 类库中,IO 部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据传输流,字符串流,对象流等等等。比如程序从服务器上下载图片,就是通过流的方式从网络上以流的方式到程序中,在到硬盘中2:同步与异步,阻塞与非阻塞的区别同步,一个任务的完成之前不能做原创 2021-11-27 23:00:00 · 532 阅读 · 0 评论 -
【架构师面试-Java编程基本功-5】-五种IO模型
注意:我这里的用户空间就是应用程序空间1:阻塞 BIO(blocking I/O)A 拿着一支鱼竿在河边钓鱼,并且一直在鱼竿前等,在等的时候不做其他的事情,十分专心。只有鱼上钩的时,才结束掉等的动作,把鱼钓上来。在内核将数据准备好之前,系统调用会一直等待所有的套接字,默认的是阻塞方式。2:非阻塞 NIO(noblocking I/O)B 也在河边钓鱼,但是 B 不想将自己的所有时间都花费在钓鱼上,在等鱼上钩这个时间段中,B 也在做其他的事情(一会看看书,一会读读报纸,一会又去看其他人的.原创 2021-11-28 10:00:00 · 199 阅读 · 0 评论