当前位置: 首页 > article >正文

个人项目复习-短链Day01

考点1注册功能要求功能需求使用手机号注册且已经注册的手机号不能重复注册密码不能使用简单的md5加密用户上传头像需要用到文件存储。安全需求高并发下账号的唯一性注册邮箱或手机号验证码不能被恶意调用。验证码唯一索引头像文件存储访问方便扩容和管理。阿里云OSS高并发处理异步池化思想。考点2压测工具对比LoadRunner性能稳定压测结果及细粒度大可以自定义脚本进行压测但是太过于重大功能比较繁多ApacheAB (单接口压测最方便)模拟多线程并发请求。ab 命令对发出负载的计算机要求很低既不会占用很多 CPU也不会占用太多的内存但却会给目标服务器造成巨大的负载简单 DDOS 攻击等Webbenchwebbench 首先 fork 出多个子进程每个子进程都循环做 web 访问测试。子进程把访问的结果通过 pipe 告诉父进程父进程做最终的统计结果。Jmeter开源免费功能强大在互联网公司普遍使用Jmeter的优点功能测试压力测试分布式压力测试纯 java 开发上手容易高性能提供测试数据分析各种报表数据图形展示考点3Async注解什么是异步任务异步调用时相对于同步调用而言的同步调用时指程序按预定顺序一步步执行每一步必须等到上一步执行完成后才能执行异步调用则无需等待上一步程序执行完成即可执行。异步任务适用在什么场景上处理log发送邮件短信等以及各种各样处理网络IO调用的操作上面。Async失效情况方法不是public放回值只能为void或者Future注解方法使用static修饰没加注解Async或者EnableAsync注解调用方与被调用方法不能在同一个类考点4为什么调用方法和被调用方法不能在同一个类Spring在扫描bean的时候会扫描方法上是否包含Async注解动态地生产一个子类即proxy代理类当这个有注解的方法被调用时实际上是由代理类来调用的代理类在调用时增加异步作用。如果这个有注解的方法是被同一个类中的其他方法调用的那么该方法的调用并没有通过代理类而是直接通过原来的那个bean使用就失败了。所以调用方和被调用方不能在用一个类主要是使用了动态代理同一个类的时候直接调用不是通过生成的动态代理类调用。一般将要异步执行的方法单独抽取成一个类。类中需要使用Autowired和Resource等注解自动注入不能自己动手new对象。在Async方法上标注Transactional是没有用的但在Async方法上调用的方法上标注Transactional是有效的。考点5自定义线程池为什么要自定义线程池当我们使用Async注解没有指定线程池的话即未设置TaskExecutor时默认使用Spring创建ThreadPoolTaskExecutor默认线程数为8最大线程数为:Integer。MAX_VALUE21亿多队列使用LinkedBlockingQueue容量是Inter.MAX_VALUE空闲线程保留时间是60s。线程池拒绝策略为AbortPolicy。线程池内部的阻塞队列里面。但是这样有一些弊端极其容易出现OOM或者消息丢失。ThreadPoolTaskExecutor和ThreadPoolExecutorThreadPoolExecutor这个是JDK里面的线程池类继承自Executor里面有一个execute方法用来执行线程线程池主要提供了一个线程队列队列中保存着所有等待状态的线程避免了创建与销毁的额外开销ThreadPoolTaskExecutor是spring包下的是spring为我们提供的线程池类其异步线程池的接口类是TaskExecutor本质还是java.util.concurrent.Executor。ThreadPoolTaskExecutor线程池有哪几个重要参数什么时候会创建线程池查看核心线程池是否满不满就创建一个线程池。满的话执行下一步。查看阻塞队列是否满不满创建阻塞队列。满的话执行下一步。查看线程池是否满即是否达到最大线程池数不满创建一个线程执行任务满则按照策略处理无法执行的任务。高并发下核心线程怎么设置首先我们需要知道是IO密集还是CPU密集CPU密集设置跟核心数一样大小。IO密集型设置为2倍的CPU核心数。但是这个是非固定的我们还是要根据实际压测结果调整。考点6自定义线程池出现的问题线程池参数往小了配置此方法qps小等待队列小线程池参数往大了配置此方法qps等待队列大瞬间很高但是容易发送OOM通过这两个方法我们会发现一些问题。当我们采用异步发送用户体验是变好了但是数据存在丢失的可能性阻塞队列存储内存中如果队列长度过多则重启容易出现丢失数据情况。当我们采用异步发送阻塞队列缓冲刚开始瞬间QPS高但是后续还是会降低很多。考点7RestTemplate里面存在的问题服务端向前端socket连接管道写返回数据时 链接pipe却断开了。从应用角度分析这是因为客户端等待返回超时了主动断开了与服务端连接。连接数设置太小并发量增加后造成大量请求排队等待。网络延迟是否丢包。内存是否足够多支持对应的并发量。重新认识RestTemplateRestTemplate是spring提供的用于访问Rest服务的客户端底层通过使用java.net包下创建HTTP请求通过使用ClientHttpRequestFactory指定不同的HTTP请求方式主要提供了两种实现方法。SimpleClientHttpRequestFactory默认底层使用j2se提供的方式即java.net包提供的方式创建底层Http请求连接主要createRequest方法端点调试每次都会创建连接会造成极大的资源浪费而且若连接不能及时释放会因为无法建立新的连接导致后面的请求阻塞。HttpComponentsClientHttpRequestFactory底层使用HttpClient访问远程的Http服务。问题解决客户端每次请求都要和服务端建立新的连接即三次握手将会非常耗时。通过http连接池可以减少连接建立与释放的时间提升http请求的性能Spring的restTemplate是对httpclient进行了封装而httpclient是支持池化机制对httpclient进⾏封装的有Apache的Fluent、es的 restHighLevelClient、spring的restTemplate等Configuration public class RestTemplateConfig { Bean public RestTemplate restTemplate(ClientHttpRequestFactory requestFactory){ return new RestTemplate(requestFactory); } Bean public ClientHttpRequestFactory httpRequestFactory(){ return new HttpComponentsClientHttpRequestFactory(httpClient()); } Bean public HttpClient httpClient(){ RegistryConnectionSocketFactory registry RegistryBuilder.ConnectionSocketFactorycreate() .register(http, PlainConnectionSocketFactory.getSocketFactory()) .register(https, SSLConnectionSocketFactory.getSocketFactory()) .build(); PoolingHttpClientConnectionManager connectionManagernew PoolingHttpClientConnectionManager(registry); //设置连接池最大是500个连接 connectionManager.setMaxTotal(500); //MaxPerRout是对maxTotal的细分,每个主机的并发最大是300,route指域名 connectionManager.setDefaultMaxPerRoute(300); /** * 只请求 该网站 , 最大并发量300 */ RequestConfig requestConfigRequestConfig.custom() //返回数据的超时时间 .setSocketTimeout(20000) //连接上服务器的超时时间 .setConnectTimeout(10000) //从连接池中获取连接的超时时间 .setConnectionRequestTimeout(1000) .build(); CloseableHttpClient closeableHttpClient HttpClientBuilder.create().setDefaultRequestConfig(requestConfig) .setConnectionManager(connectionManager) .build(); return closeableHttpClient; } }

相关文章:

个人项目复习-短链Day01

考点1:注册功能要求功能需求:使用手机号注册,且已经注册的手机号不能重复注册,密码不能使用简单的md5加密;用户上传头像需要用到文件存储。安全需求:高并发下账号的唯一性注册邮箱或手机号验证码不能被恶意…...

openclaw dashboard实现分析

OpenClaw Dashboard / Control UI 前端实现框架与原理 本文基于 openclaw 仓库源码与官方文档,对 Gateway Dashboard(Control UI) 的前端实现做一次整体梳理,方便在 MW4Agent 中对标实现类似的 Web 控制台。1. 整体架构概览 定位&…...

Day 42 通道注意力

浙大疏锦行 CNN 有很多卷积核,输出很多通道(特征图)有的通道很重要(比如边缘、纹理)有的通道没用通道注意力就是:自动给每个通道算一个权重,重要的通道权重变大,不重要的变小 SE 通…...

2026年亲测:企业健身房规划实战案例分享

在2026年的当下,我们团队在为企业客户规划员工健身空间时,普遍面临一个核心困境:方案设计与最终落地效果严重脱节。许多企业投入预算采购了高端健身器材,却因前期缺乏专业的空间规划,导致器械布局不合理、动线混乱、使…...

《探索升级!AI应用架构师助力企业数字化转型的策略探索升级》

探索升级!AI 应用架构师助力企业数字化转型的策略探索升级 引言 背景介绍 在当今数字化浪潮汹涌澎湃的时代,企业面临着前所未有的挑战与机遇。数字化转型已不再是一种选择,而是企业生存和发展的必由之路。随着人工智能(AI&#xf…...

视觉自动对焦(Z 轴运动 + 相机拍照 + 清晰度计算) 的核心程序

这是视觉自动对焦(Z 轴运动 + 相机拍照 + 清晰度计算) 的核心程序,基于ACS 运动控制器实现,用于精密视觉设备(显微镜 / 相机 / 激光设备)自动找到最清晰的画面位置。 我用通俗中文 + 分层拆解,让你完全看懂逻辑。 一、整体功能一句话总结 控制 Z 轴匀速扫动一段距离,…...

100页PPT2026数字孪生智慧化工园区解决方案

2026年推进5GAI大模型智慧工业园区建设实践路径?【智慧方案文库】汇总了一套《2026AI大模型智慧工业园区建设实践路径指南》,立足“十五五”数字经济与新质生产力发展导向,以AI大模型为核心引擎,融合数字孪生、5G、物联网等技术&a…...

Android 11--横竖屏旋转时背景色异常?

最近遇到一个问题:相册打开一张图片,横竖屏旋转时,有的图片旋转时四周背景色是白色,有的则是黑色的。Why? 难不成背景色与图片相关? -- 11.0的问题,10.0并无 对WMS模块了解一些的人应该都知道&#xff0…...

PowerLine

Powerline 是一款比较酷炫的状态栏工具,可以美化 终端 和 vim界面,由 python 开发,目前仅支持 python2.X,由于 python2 和 python3 互不兼容,安装前要了解清楚使用的Linux /Ubuntu /debian 的Python 版本信息: CentOS 7 : Kali / debian CentOS 系列安装比较简单: 字…...

Synergy服务端显示异常解决办法

第一个问题是服务端不能成功运行,一直显示正在启动: 错误代码: [2020-10-26T19:24:05] INFO: starting new process [2020-10-26T19:24:05] INFO: drag and drop enabled synergys.exe: no configuration available [2020-10-26T19:24:06] ER…...

车流量计数、不同车型统计算法

车流量计数统计算法是目前安防领域重要的应用方向,根据实时或历史视频流,实时统计不同类型的车流量 车流统计双向_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV14q4y1g7Tx/ 比如: 小客车,客货两用车,出租车&…...

Management By Objectives (MBO) - 目标管理

Management By Objectives {MBO} - 目标管理ReferencesManagement by objectives (MBO), also known as management by results (MBR), was first popularized by Peter Drucker in his 1954 book The Practice of Management. 目标管理 (MBO),也称为结果管理 (MBR)…...

博客必读事项

我是小懒猿,人狠话不多,直接上才艺。 本人编写文章来源于1.文档(面试总结-懂得都懂-嘿嘿嘿)2.博客(csdn,掘金,博客园,个人博客等等)3.公众号(持续关注各大优秀公众号)4.视频(B站,网课…...

CarPlay 有线连接流程

一、引言1.1 目的此文档记录CarPlay 开发中有线连接开发部分,详细介绍CarPlay有线连接的流程,希望可以给开发CarPlay小伙伴一些帮助,无线连接后续再梳理。二、架构设计2.1 架构图注:此图翻译自苹果官方的开发帮助文档身份认证 &am…...

java毕业设计——基于JSP+sqlserver的课程教学网站设计与实现(毕业论文+程序源码)——教学网站

基于JSPsqlserver的课程教学网站设计与实现(毕业论文程序源码) 大家好,今天给大家介绍基于JSPsqlserver的课程教学网站设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的…...

java毕业设计——基于JSP+sqlserver的科研处管理信息系统设计与实现(毕业论文+程序源码)——科研处管理信息系统

基于JSPsqlserver的科研处管理信息系统设计与实现(毕业论文程序源码) 大家好,今天给大家介绍基于JSPsqlserver的科研处管理信息系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩…...

使用slack-cleaner,打造清爽的Slack工作环境

使用slack-cleaner,打造清爽的Slack工作环境 【免费下载链接】slack-cleaner :speech_balloon: Bulk delete messages and files on Slack 项目地址: https://gitcode.com/gh_mirrors/sl/slack-cleaner 在现代企业中,Slack是团队协作的重要工具。…...

O3DE引擎全面解析:从基础到高级的开源3D创作平台完全指南

O3DE引擎全面解析:从基础到高级的开源3D创作平台完全指南 【免费下载链接】o3de Open 3D Engine (O3DE) is an Apache 2.0-licensed multi-platform 3D engine that enables developers and content creators to build AAA games, cinema-quality 3D worlds, and hi…...

U8g2常见问题解答:解决OLED/LCD显示开发中的痛点难题

U8g2常见问题解答:解决OLED/LCD显示开发中的痛点难题 【免费下载链接】u8g2 U8glib library for monochrome displays, version 2 项目地址: https://gitcode.com/gh_mirrors/u8/u8g2 U8g2是一款功能强大的单色显示器库,广泛应用于OLED和LCD显示…...

推荐一款开源利器:Linux Router

推荐一款开源利器:Linux Router 【免费下载链接】linux-router Set Linux as router in one command. Support Internet sharing, redsocks, Wifi hotspot, IPv6. Can also be used for routing VM/containers 🛰️ (也欢迎关注B站 https://space.bilibi…...

gRPC协议在TOMs中的应用:跨平台服务通信的高性能实现

gRPC协议在TOMs中的应用:跨平台服务通信的高性能实现 【免费下载链接】TOMs TOMs is a fully open-source, high-performance, systematic, plugin-oriented, and scenario-agnostic general-purpose development framework. 项目地址: https://gitcode.com/gh_m…...

代码截图的高级技巧:gh_mirrors/car/carbon的隐藏功能

代码截图的高级技巧:gh_mirrors/car/carbon的隐藏功能 【免费下载链接】carbon 项目地址: https://gitcode.com/gh_mirrors/car/carbon gh_mirrors/car/carbon是一款功能强大的代码截图工具,能够帮助开发者轻松创建美观、专业的代码图片。无论是…...

pydata-book bitly使用数据:用户行为数据的统计与分析

pydata-book bitly使用数据:用户行为数据的统计与分析 【免费下载链接】pydata-book wesm/pydata-book: 这是Wes McKinney编写的《Python for Data Analysis》一书的源代码仓库,书中涵盖了使用pandas、NumPy和其他相关库进行数据处理和分析的实践案例和技…...

Used-Trading-Platform2开源项目安装与使用指南

Used-Trading-Platform2开源项目安装与使用指南 【免费下载链接】Used-Trading-Platform2 基于Spring Boot的校园二手交易网站 项目地址: https://gitcode.com/gh_mirrors/us/Used-Trading-Platform2 1. 项目目录结构及介绍 Used-Trading-Platform2 是一个基于Spring Bo…...

Python-Fxxk-Spider 开源项目教程

Python-Fxxk-Spider 开源项目教程 【免费下载链接】python-fxxk-spider 收集各种免费的 Python 爬虫项目 项目地址: https://gitcode.com/gh_mirrors/py/python-fxxk-spider 项目介绍 Python-Fxxk-Spider 是一个收集了各种免费 Python 爬虫项目的开源仓库。该项目旨在为…...

Used-Trading-Platform2 开源项目教程

Used-Trading-Platform2 开源项目教程 【免费下载链接】Used-Trading-Platform2 基于Spring Boot的校园二手交易网站 项目地址: https://gitcode.com/gh_mirrors/us/Used-Trading-Platform2 项目介绍 Used-Trading-Platform2 是一个基于 Spring Boot 的校园二手交易网站…...

Bedrock插件开发终极指南:如何在现代化WordPress环境中创建自定义插件

Bedrock插件开发终极指南:如何在现代化WordPress环境中创建自定义插件 【免费下载链接】bedrock WordPress boilerplate with Composer, easier configuration, and an improved folder structure 项目地址: https://gitcode.com/gh_mirrors/be/bedrock Bedr…...

终极指南:如何快速集成Prisma与Astro、SolidStart前端框架

终极指南:如何快速集成Prisma与Astro、SolidStart前端框架 【免费下载链接】prisma-examples 🚀 Ready-to-run Prisma example projects 项目地址: https://gitcode.com/gh_mirrors/pr/prisma-examples Prisma是一个强大的ORM工具,能…...

Win-Debloat-Tools终极指南:快速打造精简高效的Windows系统

Win-Debloat-Tools终极指南:快速打造精简高效的Windows系统 【免费下载链接】Win-Debloat-Tools Re-imagining Windows like a minimal OS install, already debloated with minimal impact for most functionality. 项目地址: https://gitcode.com/gh_mirrors/wi…...

prompttools常见问题解答:从API密钥到实验调试

prompttools常见问题解答:从API密钥到实验调试 【免费下载链接】prompttools Open-source tools for prompt testing and experimentation, with support for both LLMs (e.g. OpenAI, LLaMA) and vector databases (e.g. Chroma, Weaviate, LanceDB). 项目地址: …...