Web后台开发的问题分析方法

学习搭建后台管理系统中遇到的问题和处理方法 学习梳理 前言 这两天在做毕业设计,需要自己写页面,由于之前只是简单的了解了一下html、css、js的标签和样式什么的,要拿来用的时候也忘得差不多了,而且只有这些也写不了一个好看点的页面,所以就去随便翻了一下,然后就去学vue,4h的视频教学,由于我要做的是管理员和商家后台部分内容,所以我找了vue-element-admin并下载了集成方案和基础模板。然后以下就是这段时间学习的梳理。 遇见的问... 阅读详情

 

Web后台开发中遇到的问题五花八门,分析问题涉及到的方方面面挺多的,不容易下手。本文分享工作中遇到的一些解决问题的方法仅供参考。如果您有好方法和案例,欢迎分享。

 

1一些系统知识

  • ulimit -a里的各种限制,特别是open files和core file size
  • 共享内存大小受/proc/sys/kernel/shmmax控制
  • 32位OS下默认写文件超过2G会coredump,可通过定义宏来解决
  • 32位OS下,受低端内存大小(800M,所有进程共享)的影响,单机socket大概超过9~10万会产生OOM(Out of Memory),系统会杀掉些进程,而且还没有coredump。可查阅slabinfo和slabtop。
  • 网卡收发数据包会产生软中断,一般会绑定到CPU0处理。这就决定了网卡收发包的性能有限。在KM上看到有提到过用多网卡提高网络吞吐量的做法。
  • 物理内存不够用时会使用到交换分区,很影响系统性能
  • socket有内核缓冲区,缓冲区的大小对网络收发包
  • 读写文件时系统可以合并磁盘IO操作,这个可以通过iostat -x看到。读写文件越分散,合并率越低。

linux内核、TCP/IP、DB这类知识了解越多,解决问题越顺手!

 

2常用工具

  • strace:查看进程的系统调用
  • ltrace:查看进程的库函数调用
  • lsof:查看系统已打开的文件句柄
  • netstat:查看网络信息
  • tcpdump:抓包工具
  • top:查看CPU和Load
  • uptime:查看系统运行时间和Load
  • iostat:磁盘IO统计
  • ulimit:查看进程的系统资源限制
  • free:查看内存和交换分区
  • mpstat:查看中断分布情况
  • gprof:性能分析工具
  • gdb:调试工具

3日志和信息

  • /proc:查看或修改系统信息和配置,上面的命令有不少就是读写/proc下的文件。不少网络参数都可以通过这里修改(本地端口范围、读写缓冲区大小、TIME_WAIT)
  • /proc/PID/:查看进程的相关信息
  • /var/log/messages:查看系统及内核日志
  • apache访问日志和错误日志
  • mysql的binlog

4查找规律

对业务产生的日志和统计数据,有时需要分析其中的规律,才好找到问题。可以从用户IP、来源IP、目标IP、时间、业务ID、号段特征这些方面来寻找。另外需要注意,没有规律也是一种规律。

 

JavaWeb阶段综合案例 文章目录综合案例1,功能介绍2,环境准备2.1 工程准备2.2 创建表3,查询所有功能3.1 后端实现3.1.1 dao方法实现3.1.2 service方法实现3.1.3 servlet实现3.1.4 测试后端程序3.2 前端实现4,添加功能4.1 后端实现4.1.1 dao方法实现4.1.2 service方法实现4.1.3 servlet实现4.2 前端实现5,servlet优化5.1 问题导入5.2 代码优化5.2.1 后端优化5.2.2 前端优化6,批量删除6.1. 阅读详情

相关推荐

文献计量分析方法与工具

当要研究某个领域时,需先对现有的相关研究进行调研。一般采用文献计量分析方法并进行可视化。 文献计量分析的主要思路有: 1.发表数量:文献年度发表数量、累计数量; 2.作者:作者发文数量、作者分布、作者合作网络; 3.研究机构,研究机构所属地域; 4.关键词词频、关键词共现网络、关键词变迁; 5.文献互引网络、共引、共被引; 6.期刊来源分布; 7.资源分布、基金分布、学科分布; 8.高频词...

weixin_37665090的博客 3万+

Java Web前后端分离项目—后端servlet实例

前后端分离,前端vue+axios。后端Tomcat服务器,mysql数据库。采用SpringMVC模式。servlet中用post方式接受前端传递的json数据并返回。完整解决方案,附带前端小姐姐方案链接

L1142456160的博客 5125

HarmonyOS 实战开发 —— 基于Web组件的H5页面切换类点击操作响应时延问题分析思路&案例

应用或元服务内点击操作响应时延应 ≤ X时间起点:点击离手;时间终点:界面发生变化。S标A标B标100ms150ms250ms自研应用、三方应用、底线S标(误差5%以内)响应起点:手指点击抬手离开屏幕响应终点:肉眼看到屏幕变化的第一帧响应时延:两处时间差值。

CTrup的博客 1135

0.Web 后端 开发

而且,如果设计用户量非常大,需要响应 百万级以上 的客户访问, 就需要精心的设计架构,做好多服务分布式、集群式的处理大量的用户请求。还有 其它种种特殊的考虑,比如 要熟悉目前日益流行的云存储技术,将有的数据,如图片,视频等 合理存储在云端。一部分特别消耗带宽的数据(比如视频、图片)会使用第三方的云服务厂商(比如阿里云的cdn和oss服务)。目前流行的是REST API 风格的接口,但是需要我们设计具体的API请求和响应消息的具体内容。通常一个比较大型的网站, 静态文件往往会使用单独的服务器专门提供服务。

快乐的大大大飞猪 1504

【鸿蒙实战开发】基于Web组件的H5页面切换类点击操作响应时延问题分析思路&案例

响应起点:手指点击抬手离开屏幕响应终点:肉眼看到屏幕变化的第一帧响应时延:两处时间差值3.问题定位流程3.1 通用前置流程3.1.1 查看操作录屏辅助定位处理三方应用问题时,可以优先查看操作录屏,查看操作场景,看能否发现一些有助于定位的信息,比如1、是否有转场动效,初始动效是否明显2、页面组件是否复杂3.1.2 Trace抓取trace抓取参考:【附录1:【Web组件的H5页面切换类点击操作】抓取trace】

MNXN666的博客 1260

java web 前后台 各种技术

java web 前后台 各种技术的tomcat7.0版本,需要的直接下载就行。

后台分析

后台分析 作者:巧仔 日期:2019年5月15日 这是我做的第一版后台,虽然做的不是很好,但是这是我经过思考而得出的结果。后来老师让我们去又浏览Ant Design,发现有很多缺点。 这个后台首页缺点就是页面单一。 下面是根据Ant Design里面的原则、视觉、模式和可视化分析出来的。 文案类对齐 如果页面的字段或段落较短、较散时,需要确定一个统一的视觉起点。 表单类对齐 冒号对齐(右对齐)...

weixin_44565536的博客 561

从模拟到实战:移远EC800M单片机MQTT接入OneNet全流程解析

本文详细解析了移远EC800M单片机通过MQTT协议接入OneNet平台的全流程,涵盖环境准备、模拟设备搭建、硬件迁移、数据交互调试及性能优化等关键步骤。针对常见问题如AT指令缓冲区溢出、心跳间隔设置等提供实战解决方案,帮助开发者高效实现物联网设备稳定接入。

weixin_29215815的博客 432

Web后台开发基本分析方法

Web后台开发中遇到的问题五花八门,分析问题涉及到的方方面面挺多的,不容易下手。本文分享工作中遇到的一些解决问题的方法仅供参考。如果您有好方法和案例,欢迎分享。 1一些系统知识 ulimit -a里的各种限制,特别是open files和core file size共享内存大小受/proc/sys/kernel/shmmax控制32位OS下默认写文件超过2G会coredump,可通过定

redsuntim的专栏 847

centos7下安装gcc-10.3.0

生成多个系统版本的代码,如果你的操作系统是32位,默认就已经设置为 disable,这时gcc仅能生成32位的可执行程序;这里只开启了c,c++ 和fortran,因为支持的语言越多,就需要安装越多的相应静态与动态库,还有五花八门的依赖库,这会让管理变得困难,体积也会变得庞大。启用posix标准的线程支持,这个设置取决于宿主或目标操作系统的类型,其它可用值有:aix,dec,solaris,win32等,如果你是其它的类UNIX系统,就需要设置相应的值。指定安装路径,这里没有指定,就直接放到文件夹里就好。

lxystar2003的博客 1189

抖音无水印视频爬虫实战:从抓包分析到批量下载指定用户作品

抖音作为当前最受欢迎的短视频平台,拥有海量的优质内容。很多用户希望备份自己或他人的作品,但抖音官方并未提供批量下载功能,且直接下载的视频带有平台水印。本文将带领大家从零开始,通过抓包分析、设备模拟、请求签名等核心技术,实现一个完整的抖音无水印视频爬虫系统。本文仅供技术学习和个人备份使用,请勿将爬取的内容用于商业用途或侵犯他人版权,爬取频率请控制合理范围内。目录一、前言二、技术栈概览三、准备工作3.1 环境搭建3.2 抓包分析步骤3.3 关键API发现四、核心技术解密4.1 X-Gorgon签名算法。

2201_76125261的博客 846

javaweb基础三

最早得javaweb,就是java程序中嵌入html 后来学习asp,html嵌入java代码=jsp 开发一层测试一层,成功以后再开发上层 表:将表转换为对象orm 以数据为中心 开发时,分析问题从前往后分析,代码实现时要从后往前开发 beanutils可以自动转换基础数据类型 [eg: 注册一个转换器 ConvertUtils.register() BeanuUtils.populate()] object做不了空串验证,要转为字符串 在开发中遇到问题是在前台解决还是后台解决考虑那个

qq_65449666的博客 207

2026年AI视频生成大模型全景指南:国内外主流工具深度对比与选型建议

AI视频生成技术在2025年至2026年间取得了突破性进展,从"能用"进化到"好用",商业化应用加速落地。中美双轨竞争格局基本成型,国内模型在技术追赶和本土化体验方面展现出强劲竞争力。对于用户而言,选择合适的AI视频生成工具需要综合考虑技术性能、使用门槛、成本预算和具体需求。零基础新手推荐海艺AI、通义万相等低门槛工具;进阶创作者可根据需求选择可灵AI、即梦AI、海艺AI等;专业开发者和企业用户可考虑智谱清影的开源能力或可灵AI的商业化服务。

nmdbbzcl的博客 2846

鸿蒙开发全栈笔记:Web加载优化实战

首先分析了Web加载流程,包括初始化、资源请求、解析渲染等关键阶段及各阶段对应的Trace点。然后介绍了两种性能分析工具:DevEco Profiler用于测量加载完成时延,DevTools用于深入分析性能瓶颈。文章重点阐述了性能分析方法,通过Profiler确定时延问题是否超过900ms标准,使用DevTools分析网络请求、DOM解析等关键环节的耗时问题。最后针对不同阶段提出了优化方案,如异步加载JS、压缩资源文件、使用CDN加速、懒加载等,

liudiaosi6的博客 1118

零差云控 ZeroErr eRob 电机 CAN、CANopen、EtherCAT、ROS2 机器人开发详细教程

TwinCAT 3(Windows 控制与自动化技术)是 Beckhoff 提供的开发平台,可将任何兼容 PC 转变为实时控制系统,用于管理各种类型的工业自动化系统,如 PLC(可编程逻辑控制器)、运动控制、机器人等。

机器人控制与仿真应用 1万+

基于 YOLOv26 的电路焊点虚焊检测系统:AI 质检实战

本文介绍了一种基于YOLOv26的电路焊点虚焊检测系统,利用深度学习技术实现自动化质检。系统能识别虚焊、桥接、少锡等8种常见焊点缺陷,具有高精度、实时性和强鲁棒性等特点。文章详细阐述了系统架构,包括数据采集、预处理、YOLOv26检测模型和后处理模块,并提供了代码实现的关键部分,如数据预处理增强和模型训练配置。该系统可显著提高电子制造业的质检效率和准确性。

一键难忘的博客 694

鸿蒙5.0开发【Web加载完成时延分析】性能

Web加载完成时延是从页面请求开始到页面视口内容加载完成的耗时,建议该时长控制在[900ms以内],较低的加载完成时延能让用户感知到页面加载响应及时不卡顿。本文主要介绍了Web页面的加载流程及关键Trace点、性能分析工具、加载完成时延分析方法、并总结了常见导致加载完成时延过高的原因与解决方案。

zhenggaoxiao232的博客 1333

动态视频目标追踪系统:基于YOLOv11+DeepSORT的从入门到实战全流程指南

仅保留车辆类别(假设车辆类别ID为2)if det.class_index == 2: # 车辆类别ID通过本指南,你已完成从环境搭建数据准备模型训练到追踪系统与UI界面的全流程,搭建了一套完整的动态视频目标追踪系统。该系统在安防监控、交通管理等场景中具有实用价值,可实现目标的实时稳定追踪。未来,你可尝试结合多模态特征(如目标外观+运动特征)提升追踪鲁棒性,或探索轻量化模型部署(如TensorRT加速),让系统在边缘设备上也能高效运行。

LXY_LOVE36的博客 142

MATLAB语言的Web开发

MATLAB(矩阵实验室)是一种高级编程语言和交互式环境,广泛应用于数学计算、算法开发、数据分析、可视化和数值仿真等领域。矩阵计算:MATLAB的基本数据结构是矩阵,几乎所有的计算都可以使用矩阵表示。广泛的工具箱:MATLAB拥有众多专门的工具箱,涵盖信号处理、图像处理、控制系统、机器学习等多个领域。强大的可视化功能:MATLAB提供了丰富的可视化选项,能够快速生成高质量的图形和图表。我们将创建一个简单的在线数据分析工具,用户可以上传数据文件,选择分析方法,系统将返回分析结果的可视化图表。

2501_90777168的博客 1107

可食用野生植物检测实战:基于YOLOv11的智能识别系统全流程指南

本文介绍了一种基于YOLOv11的可食用野生植物智能识别系统。该系统通过深度学习技术,能在0.2秒内精准识别植物是否可食用,准确率高达92%。文章详细阐述了从数据采集、标注到模型训练、验证的全流程,并开发了用户友好的Tkinter交互界面。该系统解决了户外探险和植物研究中植物识别的痛点,具有高精度、实时性和强泛化能力的特点,为户外安全提供了智能化解决方案。

FJN110的博客 164

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

秋招篇—某云厂商后台开发岗二面面经(问题+答案)版

正常模板,感觉再多几次面试,应该能背下来了(but整体面试表现的非常差吧,只能说是)。二面注重点还是在大后端的中间件多一些,Redis是一点不会┭┮﹏┭┮,真的需要复盘。

fantasticHQ的博客 1157

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

我的web框架分析方法

从学习php 开始 接触过一些php的开发框架,这些框架可以用来快速的开发网站或者 api服务等,主要是基于http的开发,当然也可以用这些框架做的别的开发例如我就做过爬虫。          实际开发用到的 php框架 主要有 ci ,thinkphp , laravel 等。当学习了这些框架之后,需要抽象出一种可以快速学习其他类似的MVC的开发框架,例如 golang 的 beego ,Py

Hani的 编程生活 755

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

鸿蒙OH实战开发:基于Web组件的H5页面切换类点击操作响应时延问题分析思路&案例

应用或元服务内点击操作响应时延应 ≤ X时间起点:点击离手;时间终点:界面发生变化。S标A标B标100ms150ms250ms自研应用、三方应用、底线S标(误差5%以内)响应起点:手指点击抬手离开屏幕响应终点:肉眼看到屏幕变化的第一帧响应时延:两处时间差值。

pengjiadashaoye的博客 1138

Java基础之Web开发

目录Web容器---TomcatJDBC数据池连接死锁原因分析ORM框架---MybatisSpringJDBC数据访问事务的管理 Web容器—Tomcat Tomcat是用于部署我们Web项目的一个容器。我们首先从官网下载一个Tomcat的安装包放到服务器解压,之后配置上环境变量就可以在服务器上使用了。 使用命令: export CATALINA_HOME=/usr/local/apache-tomcat-8.5.54 echo $CATALINA_HOME 这样我们就安装好了,然后输入命令启动一下

Prefito的博客 411
上一篇: 高性能动态Web服务器的一些探讨
下一篇: 主程的晋升攻略(1):重要的引言
thinkry
博客等级 码龄25年 35粉丝 23原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值