Java web一些常用的知识点

版权声明:所有原创,转载请在开头注明出处 https://blog.csdn.net/SELECT_BIN/article/details/81866520

POST和GET有什么区别?

  1. GET是从服务器上获取数据,POST是向服务器传送数据

  2. GET是通过发送HTTP协议通过URl参数传递进行接收,而POST是实体数据,通过表单提交

  3. GET传送的数据量较小,不能大于2KB。POST传送的数据量较大,一般被默认为不受限制

  4. GET安全性非常低,POST安全性较高

session与cookie的区别

  1. session存储在服务器上的指定目录中的位置

  2. cookie存储在客户端

数据库中的事务是什么?

指作为一个单元的一组有序的数据库操作,如果组中的所有操作都成功,则认为事务成功,即使有一个操作失败。事务也不成功,如果所有操作完成,事务提交,其修改将作用于所有其他数据库进程,如果有一个操作失败,则事务回滚,该事务影响到的操作都会取消。

MYSQL优化方案有哪些?

  1. 选用适合的字段类型,避免数据库增加不必要的空间,字段尽量设定为NOTNULL,类似性别,省份尽量使用枚举类型ENUM

  2. 使用JOIN查询代替子查询

  3. 使用UNION代替临时表

  4. 尽量不使用外键、除非必须保持数据表与表之间的一致性、完整性

  5. 尽量不使用视图

  6. 分表分库,读写分离

  7. 合理设置主键及索引

    • 索引分为:普通索引、唯一索引、全文索引、主键(也是一种唯一索引)

  8. 后期演变的数据表优化

    • 垂直拆分:表数据拆分到不同表中,按照业务拆分

    • 水平拆分:行数据拆分到不同表中,按照时间、类型、身份等因素拆分表

    • 水平垂直联合拆分 9.索引建立原则

    • 最左前缀匹配原则

    • 索引列尽量不参与计算

    • 尽量扩展索引不要新建索引

NOSQL

Redis、Memecached 这两者有什么区别?

  1. Redis 支持更加丰富的数据存储类型,String、Hash、List、Set 和 Sorted Set。Memcached 仅支持简单的 key-value 结构

  2. Memcached key-value存储比 Redis 采用 hash 结构来做 key-value 存储的内存利用率更高

  3. Redis 提供了事务的功能,可以保证一系列命令的原子性

  4. Redis 支持数据的持久化,可以将内存中的数据保持在磁盘中

  5. Redis 只使用单核,而 Memcached 可以使用多核,所以平均每一个核上 Redis 在存储小数据时比 Memcached 性能更高

Redis 如何实现持久化?

RDB 持久化

将 redis 在内存中的的状态保存到硬盘中,相当于备份数据库状态。

AOF 持久化(Append-Only-File)

AOF 持久化是通过保存 Redis 服务器锁执行的写状态来记录数据库的。相当于备份数据库接收到的命令,所有被写入 AOF 的命令都是以 redis 的协议格式来保存的。

Laravel 设计原理

服务提供者是什么?

服务提供者是所有Laravel应用程序引导启动的中心,Laravel的核心服务器、注册服务、绑定服务、监听器、中间件、路由注册以及我们应用程序都是由服务提供者引导启动的。

IOC容器是什么?

IOC就是控制反转,也被叫做依赖注入(DI),对象A可以依赖对象B,但是控制权在对象A中,所以叫做控制反转,依赖注入则是在IOC容器运行时动态将某种依赖关系注入到对象中。

作用:解决代码难易度,实现低耦合、高扩展。

Facades 是什么?

提供了一个"static"(静态)接口去访问注册到 IoC 容器中的类。提供了简单、易记的语法,而无需记住必须手动注入或配置的长长的类名。此外,由于对 PHP 动态方法的独特用法,也使测试起来非常容易。

Contract 是什么?

Contract(契约)是 Laravel 定义框架提供的核心服务的接口。Contract 和 Facades 并没有本质意义上的区别,其作用就是使接口低耦合、更简单。

架构

Thrift 实现的基本原理及作用

通过使用RPC通信协议,实现多语言开发场景下无感知的互相调用。

优点:

  • 数据包呈二进制发送,流量消耗小

  • 传输效率高

  • 语言之间无障碍

如何解决优化网站App大数据大流量高并发

  • 硬件方面

  • 软件方面

  • 禁止外部盗链

  • 控制大文件的下载

  • 负载均衡

  • 分布式

  • 集群

  • 主从数据库

  • 分布式数据库

  • 分布式缓存

TCP 三次握手

三次握手就是客户端与服务器端建立TCP连接时需要发送3个包进行连接的确认,在三次握手完成后即可建立连接。

第一次握手

客户端发送请求报文,标志位SYN设置为1,随机产生seq值为x,客户端进入SYN_SENT状态,等待服务器端的回应。

第二次握手

服务器端接收到请求报文,将SYN和ACK都设置为1,ack为x+1,随机产生seq值为y,然后将数据包发送给客户端进行确认,服务器端进入SYN_RCVD状态。

第三次握手

客户端收到回应的数据包后,确认ack是否为x+1,以及ACK是否为1,若正确,则将ACK设置为1,ack为y+1,然后将数据发送给服务器端。服务器端在接受到数据后检查ack是否为y+1,ACK是否为1,若正确则正确建立连接,双方均进入ESTAB-LISHED状态,完成三次握手。

TCP 与 UDP 的区别

除了TCP之外,我们还常听到的是UDP,那么他俩有啥区别呢?

TCP对应的是可靠性要求高的应用,从上面的解释可以看出来,在真正通信之前要三次握手,是面向连接的;并且TCP利用序列号保证消息的有序性。而UDP对应的则是可靠性要求低,但是流量大、速度快的应用;和TCP相比,UDP是无连接的并且可能是无序的。

TCP更重量,UDP更轻量,没有高低之分,只是应用的场景不同。

猜你喜欢

转载自blog.csdn.net/SELECT_BIN/article/details/81866520