0%

前阵子组装了一个主机,然后在主机上搭建了一个Linux的服务器,这里主要记录其流程和碰到的问题。

1. 安装Ubuntu Server 20.04

制作U盘启动盘并安装

注意Ubuntu Server版本并没有图形界面,因此后续的安装都需要键盘配合完成。

阅读全文 »

年中的时候因为换工作的缘故,陆续参加了华为、蚂蚁、字节跳动、PDD、百度、Paypal的社招面试,除了字节跳动流程较长,我主动结束面试以外,其他的都顺利拿到了Offer。

最近时间稍微宽裕点了,写个面经,希望对大家找工作有所帮助。

面试体验

下面以时间先后顺序,分享下我在不同公司面试的体验。

阅读全文 »

distributed_system

1. 集群与分布式

根据业务划分的情况,主要有三种模式,分别是单机结构、集群结构、分布式结构,下面这张图给出了集群和分布式的区别。

最普通的就是单机结构,一个系统业务量很小的时候所有的代码都放在一个项目中就好了,然后这个项目部署在一台服务器上就好了。整个项目所有的服务都由这台服务器提供。这就是单机结构。

阅读全文 »

Spring.png

8. Spring MVC 流程

8.1 Spring MVC 介绍

Spring MVC 是目前主流的MVC框架之一。两个核心点:

  • 处理器映射:选择使用哪个控制器来处理请求
  • 视图解析器:选择结果应该如何渲染

运行原理可以用下图表示:

160870009-5aae79b0723bb_articlex.png

阅读全文 »

Spring.png

7. IOC初始化流程

IoC容器的初始化就是含有BeanDefinition信息的Resource的定位、载入、解析、注册四个过程,最终我们配置的bean,以beanDefinition的数据结构存在于IoC容器即内存中。这里并不涉及bean的依赖注入,只是bean定义的载入。但有例外,在使用Ioc容器时有一个预实例化的配置,即bean定义中的设置了lazyinit属性,那么这个bean在Ioc容器初始化时就预先加载,不需要等到Ioc整个初始化后,第一次getBean时才会触发。其中refresh()启动对Ioc容器的初始化。

阅读全文 »

Spring.png

6 声明式事务

6.1 Spring中事务的使用

在进行数据操作事,通常会将多条SQL语句作为整体进行操作,这一条或者多条SQL语句就称为数据库事务。数据库事务可以确保该事务范围内的所有操作都可以全部成功或者全部失败。如果事务失败,那么效果就和没有执行这些SQL一样,不会对数据库数据有任何改动。

事务是恢复和并发控制的基本单位。

事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。

  • 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。
  • 一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
  • 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
  • 持久性(durability)。持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
阅读全文 »

Spring.png

5 AOP

5.1 什么是AOP

AOP(Aspect-Oriented Programming,面向切面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。

OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。对于其他类型的代码,如安全性、异常处理和透明的持续性也是如此。这种散布在各处的无关的代码被称为横切(cross-cutting)代码,在OOP设计中,它导致了大量代码的重复,而不利于各个模块的重用。

阅读全文 »

Spring.png

4. Bean的生命周期

4.1 Bean的生命周期

Spring中bean的生命周期是指bean创建,初始化,销毁的过程,整个过程是由容器进行管理的。

具体过程如下图所示:

Screen Shot 2020-02-05 at 8.08.12 PM.png

阅读全文 »