9.14学习记录

线程池和threadlocal一起用会有什么问题?

  1. 内存泄露
  2. 数据不一致

介绍一下redis

Redis是远程字典服务器,使用ANSIC语言编写的完全开源的键值型数据库,提供了丰富的数据类型,数据保存在内存中,支持事务、持久化、发布订阅、lua脚本等多种特性,提供了主从、哨兵、集群等多种架构

redis单线程模型有什么局限性?

大key删除问题

为什么会产生大key?

一种是体量大,比如说明星的粉丝

一种是累加,比如说汇总统计

Redis怎么设置过期时间,底层是怎么实现的?过期删除策略?

Expire命令或是pexpire命令

定时器+惰性删除+内存回收机制

https的握手过程

基于TSL的握手......

arraylist了解吗,插入过程?

底层实现是动态数组,

末尾插入o1,指定位置插入on,因为要向后移动

array list的哪一步会导致线程不安全

添加删除遍历都会导致

布隆过滤器的底层数据结构

一个位数组+几个哈希函数

redis有哪些限流方式?

  1. 最简单的就是用redis来计数
  2. setnx命令来实现
  3. 基于redis的令牌桶算法
  4. Redis中的zset可以实现滑动窗口限流
  5. Lua脚本

Nginx代理的作用

隐藏后端服务器,提高安全性

提供一个统一的入口,便于分发请求

负载均衡。反向代理。安全性。终止SSL。缓存。日志和监控。静态文件服务。

URL重写和重定向。站点分离

Nginx的负载均衡策略有哪些?

  1. 轮询
  2. 加权轮询
  3. 最少链接
  4. IP哈希
  5. URL哈希
  6. 健康检查
  7. 地理位置
  8. 自定义

https解析过程

  1. 建立TCP连接
  2. TSL握手
  3. HTTP请求和响应

介绍下了解的存储引擎

  1. InnoDB
    1. 支持事务
    2. 支持外键
    3. 支持行级锁
    4. 支持故障恢复
  2. Myisam
    1. 不支持事务
    2. 支持表级锁
    3. 支持全文索引
    4. 支持压缩
  3. Memory
    1. 存储在内存中快速访问
  4. Archive
    1. 支持压缩存储,适合大量数据的归档存储

单例有几种实现方式?

  1. 懒汉式:需要时才创建
  2. 饿汉式:类加载时就创建
  3. 双重检查锁定:优化的懒汉,线程安全
  4. 枚举:天然线程安全
  5. 静态内部类

sleep和wait的区别

  1. 是否会释放锁
  2. 是否需要等待唤醒
  3. 是哪个类的方法

线程的生命周期

  1. 创建
  2. 就绪
  3. 运行
  4. 阻塞
  5. 等待
  6. 终止

线程进程的区别

  1. 进程是操作系统资源分配和调度的基本单位,线程是进程中的执行单元
  2. 进程有独立的地址空间,多个线程共享同一个进程的地址空间
  3. 进程创建需要额外分配资源,线程不需要
  4. 线程切换开销小于进程
  5. 进程之间的隔离性比线程好

哪些可以作为GC ROOT?

  1. 被同步锁持有的对象
  2. 本地方法栈引用的对象
  3. 虚拟机栈引用的对象
  4. 方法区类静态变量引用的对象
  5. 方法区中常量引用的对象
  6. JNI引用的对象

http常见状态码

200:请求被成功处理

201:成功处理并且创建一个或多个资源

204:成功处理但是没有返回任何内容

301:永久重定向

302:临时重定向

403:拒绝请求

404:请求资源找不到

500:服务端出问题了

502:网关转发给服务器收到错误响应

为什么数据库翻页查询,越往后查询越来越慢?

对于limit,mysql并不是跳过offset条,而是拆线呢offset+n条,放弃offset条,返回n条,所以当limit特别大的时候就会特别慢

优化:

  1. 如果ID是连续的,直接根据ID分页
  2. 子查询
  3. 延迟关联

对于插入和更新操作,如何不用两个语句去分别判断,用一条语句实现存在就更新,不存在插入?

MySQL 在版本 5.7 和更高版本中引入了 ON DUPLICATE KEY UPDATE 语法来处理这种情况。

线程池是如何保证核心线程的存活的?

当一个线程被创建并启动后,它会进入一个无限循环(除非显式地中断或完成),在这个循环中,线程不断地从任务队列中获取任务并执行。

核心线程与非核心线程的区别 对于核心线程而言,这个循环会一直持续下去,直到线程池本身被关闭或者线程被显式地中断。核心线程不会因为任务队列暂时为空而被销毁。

对于非核心线程(也称为临时线程),当没有任务可供执行时,非核心线程会在等待一定的时间(由 keepAliveTime 参数指定)之后自动销毁。

除非 allowCoreThreadTimeOut 被设置为 true,在这种情况下,核心线程也会遵循相同的超时机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值