基础知识集合

news2025/1/13 7:44:32

https://blog.csdn.net/sheng_q/category_10901984.html?spm=1001.2014.3001.5482

epoll

   事件驱动的I/O模型,同时处理大量的文件描述符

    内核与用户空间共享一个事件表:监控的文件描述符以它们的状态,当状态变化,内核将事件通知给用户空间,用户空间根事件类型进行相应的处理

epoll_create(内核空间)创建文件描述符epfd

   ep_alloc建初始化eventpoll

       eventpoll:被监听socket列表rbr(epitem)/等待队列wq/就绪socket列表rdllist(wait方法从其取)

       epitem:红黑树rbn/rdllink就绪列表/ffd引用描述符/pwqlist等待队列/eq含当前的eventpoll对象指针/event感兴趣的事件和源fd

   anon_inode_getfd把wventpoll映射到文件描述符

epoll_ctl:添加或删除要监听的socket(到epfd)

epoll_wait等待数据

bean实例化与依赖注入

属性注入:javaBean中存在默认构造函数 设置方法

Spring系列-3 Bean实例化与依赖注入_实例化包括属性注入嘛-CSDN博客

循环依赖:提前暴露引用

/**创建好的对象 实例化 属性设置 初始化Cache of singleton objects: bean name to bean instance*/
private final Map<String, Object> singletonObjects = new ConcurrentHashMap<>(256);

/**半成品对象Cache of early singleton objects: bean name to bean instance. */
private final Map<String, Object> earlySingletonObjects = new HashMap<>(16);

/**构造bean对象的lambda表达式,bean对象创建工厂Cache of singleton factories: bean name to ObjectFactory.(被代理的)对象 */
private final Map<String, ObjectFactory<?>> singletonFactories = new HashMap<>(16);

三级缓存作用

   如果需要代理 初始化阶段的aop提前至属性设置阶段,引入this.earlyProxyReferences标志(map)

   lambda表达式并执行获取代理对象

二级缓存作用

  第一次通过lambda表达式得到代理对象,将代理对象存入二级缓存并删除三级缓存

  第二次直接从二级缓存中查询,而不需要再次执行lambda表达式

inject:

  根据beanName等信息获取待注入的值; 通过反射完成属性注入

国际化

  Locale类国际化类型,包含国家和地区

 准备国际化文件:资源名_语言_国家/地区.properties(只能含ASCII字符)

refresh()的步骤中存在initMessageSource()

springboot 通过spi spring.factories中MessageSourceAutoConfiguration @ConditionalOnMissingBean

JsonDeserializer 自定义 

高并发优化:

高并发扣减库存:

   提交订单-库存,支付时效,超过自动取消订单 还原库存

   token校验/防多次刷单 拉黑/ redis先操作 扣减库存 支付的时候再实际扣减库存

      扣减明细 流水 /  缓存扣减 / 扣减库  +MQ

   定期检查redis/数据库 一致性; 异步更新缓存canal

https://blog.csdn.net/sheng_q/category_10901984.html?spm=1001.2014.3001.5482

线程池:

corePoolSize:核心

maximumPoolSize 核心+非核心

threadFactory工厂:释放守护/优先级 

blockingQueue:

  • LinkedBlockingQueue链式阻塞队列Integer.MAX_VALUE,无限创建队列
  • ArrayBlockingQueue数组阻塞队列,需要指定队列的⼤⼩
  • SynchronousQueue同步队列,内部容量为0,每个put操作必须等待⼀个take操作
  • DelayQueue延迟队列,当其指定的延迟时间到了,才能够从队列中获取到该元素

rejectedExecutionHandler拒绝策略:

  • AbortPolicy丢弃任务并抛RejectedExecutionException异常
  • DiscardPolicy丢弃新来的任务
  • DiscardOldestPolicy丢弃队列头部(最旧)任务 重新尝试执⾏程序(如果失败,重复此过程)
  • CallerRunsPolicy调⽤线程来处理该任务

newCachedThreadPool 很多短时间的任务时,线程复⽤率⽐较⾼,非核心线程 先入队

    0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS,new SynchronousQueue<Runnable>()

newFixedThreadPool只创建核⼼线程

    nThreads, nThreads, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()

newSingleThreadExecutor

   1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()

newScheduledThreadPool定⻓线程池,⽀持定时及周期性任务执⾏

    corePoolSize, Integer.MAX_VALUE, DEFAULT_KEEPALIVE_MILLIS, MILLISECONDS, new DelayedWorkQueue()

【多线程】线程池里边都有些什么东西呢_当队列满了,核 线程空闲、扩展线程也空闲,谁从队列 获取?-CSDN博客百度安全验证

ArrayList和LinkedList:

 arraylist动态数组,随机访问get/set,指定位置插入 arraycopy耗时

 linkedList双向链表,for循环获取元素,index<size/2,左边查 否右边查

    数据量大 插入数据 arraylist优势大 特别是后面位置查入

java集合框架05——ArrayList和LinkedList的区别-CSDN博客

Kunbernetes(k8s)的基本概念详解+部署_kuburnetes-CSDN博客

安全验证 - 知乎

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【分治】Leetcode 库存管理 III

题目讲解 LCR 159. 库存管理 III 本题的含义就是让求出最小的k个数 算法讲解 class Solution { public:void my_qsort(vector<int>& nums, int l, int r){if(l > r) return ;int i l, left l-1, right r1;int key nums[rand() % (r - l 1) l];//完成分三…

大数据真题讲解系列——拼多多数据分析面试题

拼多多数据分析面试题&#xff1a;连续3次为球队得分的球员名单 问题&#xff1a; 两支篮球队进行了激烈的比赛&#xff0c;比分交替上升。比赛结束后&#xff0c;你有一个两队分数的明细表&#xff08;名称为“分数表”&#xff09;。表中记录了球队、球员号码、球员姓名、得…

hv第一坑:定时器

错误代码 重试策略&#xff1a;一次延迟1s,最长30s直至事件成功。 int try_count 0;//do something if(not success)m_loop->setTimerInLoop((try_count > 30 ? 30: try_count) *1000 , cb, INFINITE, 0x100);表现现象 cpu 爆了内存爆了 总结原因 hv内部代码bug&…

Maven通过flatten-maven-plugin插件实现多模块版本统一管理

正文 起因是公司开始推代码版本管理的相关制度&#xff0c;而开发过程中经常使用多模块构建项目&#xff0c;每次做版本管理时都需要对每个模块及子模块下的pom文件中parent.version和模块下依赖中的version进行修改&#xff0c;改的地方非常多&#xff0c;且非常容易漏。为此…

如何用Python构建一个生产级别的电影推荐系统 - 机器学习手册

构建项目是彻底学习概念并发展必要技能的最有效方式之一。 项目使您沉浸在现实世界的问题解决中&#xff0c;巩固您的知识&#xff0c;并培养批判性思维、适应能力和项目管理专业知识。 本指南将带您逐步构建一个根据用户喜好量身定制的电影推荐系统。我们将利用一个庞大的包…

20240419,继承,多态

土豆的老家陕西安康&#xff01;怪舒服的咯&#xff0c;广西一眼望去全是房子啦&#xff0c;小时候一眼开敞水田再也回不来啦 目录 五&#xff0c;继承 5.1 基本语法 5.2 继承方式 5.3 继承中的对象模型 5.4 构造和析构顺序 5.5 同名成员处理 5.6 同名静态成员处理 5.…

c#+unity基础

序列化&#xff1a; [SerializeField]&#xff0c;点不出来&#xff0c;只能在面板上显示绑定游戏物体 //公有隐藏 特有函数 特有函数&#xff1a;不需要调用&#xff0c;自动执行 Awake最先执行->OnEable 面向对象思想 面向对象思想&#xff1a;分为具体对象和抽象对…

从预训练损失的角度,理解语言模型的涌现能力

原文&#xff1a;Understanding Emergent Abilities of Language Models from the Loss Perspective 摘要 本文从预训练损失的角度重新审视语言模型的涌现能力&#xff0c;挑战了以往以模型大小或训练计算量为标准的观念。通过实验&#xff0c;作者发现预训练损失是预测下游任…

【算法】合并两个有序链表

本题来源---《合并两个有序链表》 题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4] /*** Definition for singl…

JavaSE——常用API进阶二(6/8)-ZoneId、ZoneDateTime、Instant(常见方法、用法示例)

目录 ZoneId 常见方法 用法示例 ZoneDateTime 常见方法 用法示例 Instant 常见方法 用法示例 如果在开发中我们有这样的需求&#xff1a;我们的系统需要获取美国现在的时间&#xff0c;或者其他地区的时间给用户观看&#xff0c;或者进行一些处理&#xff0c;那应该怎…

循环开关定时器(Smart PLC梯形图代码)

很多设备不需要复杂的逻辑时序控制,只需要实现简单的循环定时开关功能,对于这样的控制我们可以利用定时器组合去实现,但是如果系统里需要循环定时控制的设备比较多,那我们建议大家编写一个这样的循环定时开关功能块,SMART PLC循环开关定时器还可以参考下面文章链接 1、周…

短视频批量采集提取软件|视频关键词下载工具

短视频批量采集软件&#xff1a;快速抓取、高效下载 一、开发背景 随着短视频平台的兴起&#xff0c;获取并分析相关视频内容已成为许多业务的必要步骤。然而&#xff0c;传统的手动方式无法满足快速、批量获取的需求&#xff0c;因此我们开发了一款专业的短视频批量采集软件。…

FreeRTOS时间管理

FreeRTOS时间管理 主要要了解延时函数&#xff1a; 相对延时&#xff1a;指每次延时都是从执行函数vTaskDelay()开始&#xff0c;直到延时指定的时间结束。 绝对延时&#xff1a;指将整个任务的运行周期看成一个整体&#xff0c;适用于需要按照一定频率运行的任务。 函数 vTa…

springcloud第4季 springcloud-alibaba之sentinel

一 sentinel介绍 1.1 sentinel作用 sentinel是面向分布式、多语言异构化服务架构的流量治理组件&#xff0c;主要以流量为切入点&#xff0c;从流量路由、流量控制、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障服务的稳定性。 1.2 组成部分 sen…

A Geolocation Databases Study(2011年)第五部分:Evalution Model

下载地址:A Geolocation Databases Study | IEEE Journals & Magazine | IEEE Xplore 被引次数:195 Shavitt Y, Zilberman N. A geolocation databases study[J]. IEEE Journal on Selected Areas in Communications, 2011, 29(10): 2044-2056. 5. Discussion 在我们讨…

Jenkins的安装和部署

文章目录 概述Jenkins部署项目的流程jenkins的安装启动创建容器进入容器浏览器访问8085端口 Jenkins创建项目创建example项目 概述 Jenkins&#xff1a;是一个开源的、提供友好操作界面的持续集成&#xff08;CLI&#xff09;工具&#xff0c;主要用于持续、自动构建的一些定时…

什么是知乎知+广告推广?

知乎作为中国领先的知识分享社区和高质量用户群体汇聚地&#xff0c;其广告价值日益凸显&#xff0c;其中&#xff0c;“知”作为知乎官方推出的创新广告形式&#xff0c;正逐渐成为品牌与消费者深度连接的重要桥梁。知广告推广不仅局限于传统意义上的硬性推广&#xff0c;更强…

C语言中与内存操作有关的一些函数

前提 最近在使用C语言在开发项目时&#xff0c;要对内存进行操作。刚开始写的时候有一点迷糊&#xff0c;看了一些东西后才发现为什么说指针是C语言的灵魂&#xff0c;因为它可以对内存直接进行操作&#xff0c;多么帅的事情&#xff0c;真的是太帅了。 malloc 声明在头文件…

混合现实(MR)开发框架

混合现实&#xff08;MR&#xff09;开发框架为开发者提供了构建MR应用程序所需的基本工具和功能。它们通常包括3D引擎、场景图、输入系统、音频系统、网络功能以及支持同时处理现实世界和虚拟世界信息的功能。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&…

【C语言】深入解析选择排序算法

一、算法原理二、算法性能分析三、C语言实现示例四、总结 一、算法原理 选择排序&#xff08;Selection Sort&#xff09;是一种简单直观的排序算法。它的工作原理是不断地选择剩余元素中的最小&#xff08;或最大&#xff09;元素&#xff0c;放到已排序的序列的末尾&#xff…