Java知识点总结(二)

ID生成策略

主键自增id

主键自动增长,不用手工设值、数字型,占用空间小、检索非常有利、有顺序,不会重复,但在迁移旧数据是会出现id冲突

UUID

基于时间,计数器和地址生成32位的id

redis生成id

原子性自增,并发性能高,id格式可以自定义

雪花算法

64位long型的id,按时间递增

UidGenerator

基于Snowflake算法的唯一ID生成器,适用于高并发

美团leaf算法

全局唯一,绝对不会出现重复的ID,且ID整体趋势递增

BIO,NIO,AIO,IO多路复用

BIO

我们最常见的io模型,例如serversocket,一个客户端对应一个服务端,但在处理高并发场景下大量客户端同时请求时会造成阻塞,虽然可以通过多线程或线程池来进行优化,但是还是会有性能问题

NIO

非阻塞型IO,不再是一个连接对应一个处理线程,而是一个有数据传输的连接对应一个处理线程,没有数据传输的则不需要工作线程来处理,这个操作是通过多路复用器完成的(selector),当有读写操作时,selector会获取相对应的selectionKey,并且通过他找到对应的channel

AIO

读写操作是异步进行的,当有流可读取时,操作系统会将可读的流传入read方法的缓冲区,并通知应用程序;对于写操作而言,当操作系统将write方法传递的流写入完毕时,操作系统主动通知应用程序。

select,poll,epoll

  1. select函数:进程通过调用select函数,监测多个fd文件,只要有数据状态准备就绪了就视为可返回状态,调用函数返回(数组实现)

  2. poll:poll解决了select连接数有上限的问题,但仍有大量遍历造成性能消耗的问题(链表实现)

  3. epoll:采用事件驱动来完成,epoll 先通过 epoll_ctl()来注册一个 fd,一旦基于某个 fd 就绪时,内核会采用回调机制,迅速激活这个 fd,当进程调用 epoll_wait()时便得到通知。(红黑树和双链表实现)

布隆过滤器

作用:判断某个东西可能存在或者一定不存在,可以解决redis缓存击穿的问题

底层:bitmap+映射函数,通过k个映射函数将字段对应的映射位置置为1,当查询时如果全为1,则该元素可能存在(会有误判可能)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/512860.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:组件标识)

id为组件的唯一标识,在整个应用内唯一。本模块提供组件标识相关接口,可以获取指定id组件的属性,也提供向指定id组件发送事件的功能。 说明: 从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容…

android开发教程百度网盘,高并发系统基础篇

展望未来 操作系统 移动操作系统的演变过程,从按键交互的塞班功能机到触摸屏交互的Android/IOS智能机,从小屏幕手机到全面屏、刘海屏、水滴屏。任何系统无非干两件事:输入和输出,接收到外部输入信号后经过操作系统处理后输出信息…

嵌入式工程师函数变量,常用的命名规则(参考学习)

很多工程师不注重平时编码习惯,比如命名规则,一会大写、一会小写,一会中文拼音,一会下划线等,导致自己写的代码自己都看不懂了。 今天就来分享一点关于软件代码常见的几种命名规则。 匈牙利命名法 匈牙利命名法广泛应…

关于我使用numpy.random.choice()遇到坑这件事

做仿真时经常使用到随机数,下面是一个场景:使用np.random.choice([0,1],p[0.5,0.5],size1)去进行随机的二选一,假设需要随机选择1000次,为了保证结果的稳健性,对前述过程重复50次,为了保证可复现性&#xf…

Nexus Repository的搭建

一、前言 Nexus Repository用于管理maven的jar包。java开发程序员每天都在使用,但是自己搭建或者管理的就很少。除非你是系统架构师。因为这一套东西,基本是搭建一次就不需要人来搭建了,日后打开界面维护的机会也很少,我们只需要…

嵌入式驱动学习第一周——阻塞IO,进程的休眠与唤醒

前言 本文介绍进程的休眠与唤醒。 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程,未来预计四个月将高强度更新本专栏,喜欢的可以关注本博主并订阅本专栏,一起讨论一起学习。现在关注就是老粉啦! 行文目录 前言1. 阻塞和非阻…

鸿蒙全栈开发必学!码牛课堂《HarmonyOS NEXT星河版零基础入门到实战教程》,学到就是赚到!

众所周知,码牛发布的免费教程不仅质量高,而且更新快,帮助无数大学生成功踏入IT行业,被同学们亲切的称为“IT启蒙导师”。 今年被称为鸿蒙元年,各行业急缺鸿蒙相关人才,从招聘情况来看,鸿蒙人才…

巨控GRM561/562/563Y系列标准OPCUA客户端协议访问西门子1200PLC

驱动名称: 标准OPCUA客户端协议 描述: 本机作主机,读写其他外部设备数据 ◆寄存器类型: UA寄存器 地址范围: 可用数据类型:[BIT] [INT8] [INT16] [INT32] [INT64] [UINT8] [UINT16] [UINT32] [UINT64] [FLOAT32] [FLOAT64] ◆寄存器类型: 设备特殊寄存器 地址…

Transforms

数据并不总是以训练机器学习算法所需的最终处理形式出现。我们使用变换来对数据进行一些处理,使其适合训练。 所有的 TorchVision 数据集都有两个参数: transform 用于修改特征和 target_transform 用于修改标签,它们接受包含转换逻辑的 callables。tor…

表达式和语句

本文参考C Primer Plus进行C语言学习 文章目录 表达式语句 副作用和序列点复合语句(块)类型转换 1.表达式 表达式由运算符和运算对象组成。下面是一些表达式: 4 -6 421 a*(bc/d)/20 q5*2 xq%3 q>3 每个表达式都有一…

【Lattice FPGA 开发】IP核的调用

本文介绍Diamond开发软件进行IP核调用与对应官方文档查找方法。 文章目录 1. IP核的调用1.1 IPexpress调用IP核1.2 Clarity Designer调用IP核 2. IP核相关文档查找2.1 方法一2.2 方法二2.3 方法三 3 问题 1. IP核的调用 Diamond软件中,根据所选目标FPGA器件型号的…

rabbitmq4

独占队列:我们的队列只能被当前通道所绑定,不能被其他的连接所绑定,如果有其他的通道或连接再使用此队列的话,会直接报错,一般设置为false: autoDelete:消费者在消费完队列,并且彻底…