Matlab写的第一个GUI程序(程序设计,界面设计)

article/2025/10/6 17:49:30

写在前面:博主用的Matlab版本是2016b,属于旧版本,大概在2019版本开始属于新版本叭,新版本写程序在APP菜单有设计APP这个选项,旧版本的则是在主页的新建选项下有GUI选项

目录

1.新建项目

1.1找到入口

 1.2项目模板选择

2.界面设计

2.1初识整体

2.2控件拖入

 2.3修改控件属性

3.打开编辑器,生成相应模板代码

4.认识代码模板

5.编译程序(写代码)

5.1给input1Edit写Callback回调的函数内容

5.2给input2Edit写Callback回调的函数内容

5.3answerTxt不需要单独写代码是写在ADD里面的,直接赋值给了它

5.4addPushbutton的Callback回调函数内容

6.运行代码+完整代码展示

6.1运行程序

 6.2完整代码show


1.新建项目

1.1找到入口

新版本界面设计入口,APP->设计APP

在这里插入图片描述

 旧版本界面设计入口,主页->新建->app->GUIDE

 1.2项目模板选择

可以选择如图所示的默认模板,选择新建GUI中的第一个default模板

 另一个选项打开现有GUI的使用情况是:01.不小心把没有编辑完成的界面关闭了,在这里找到之前没完成的界面打开,继续编辑;02.调试程序时发现界面设计被关掉了,也在此处打开,重新编辑;03.打开别人的开源程序

界面的文件后缀是flg,它要搭配源代码.m才是一个有功能性的完整程序,记得把两个文件都保存在同一个全是英文路径的文件夹下哦

将新图形另存为是针对后期稍微复杂一点的有图形输出的程序,把生成的图形保存到一个路径下,我们的第一个代码不涉及图形,纯数字,所以不用勾选此选项

2.界面设计

2.1初识整体

点击确定之后,进入到一个新建好的界面

大致如下(新旧版本之间此界面有细微差异,但不影响)

 左边是控件区域,待会儿我们会通过拖入控件,调整并且赋予相应控件以代码

中间是画布(也可以叫布局区),拖动右下角可以调整显示区域大小(鼠标放到这里会呈现双向箭头)放大画布后如下

 

 上方灰色字部分是菜单栏,可以实现界面文件GUI的.flg文件的保存和另存等

紧挨着菜单栏的下方就是工具栏,待会儿我们需要用到这里面的一个工具实现生成相应程序代码模板

2.2控件拖入

我们需要用到的控件是可编辑文本,静态文本以及按钮(从左到右依次对应名称图标)

写着EDIT,TXT,OK

看下目标文件界面,MY FIRST GUIAPP是静态文本,13是可编辑文本,14是可编辑文本,+号是静态文本,=号是静态文本,27是运算结果由代码赋予结果也是静态文本,下方的Add!是按钮。

 控件拖入完成之后,如下图所示,2个可编辑文本,4个静态文本,1个按钮

 2.3修改控件属性

接下来就开始修改控件属性了,改成我们需要呈现出来的样子,双击控件会在左边弹出一个属性编辑器,比如我们双击一个可编辑文本,就点左上角的那个叭,弹出的界面如下,我们主要用到的是第一个Background(修改控件背景颜色),FontAngle(修改字体大小,此处用的是30磅)

FontWeight(字重,加粗blod)

ForegroundC...(文本颜色,字体颜色,可以任意选择)

HorizontalAli...(文本对齐方式,left居左,center居中,right居右)

Style是控件类型(比如edit是可编辑文本)

String(界面控件上要显示的文字,这个控件是可编辑文本,我们待会儿需要用户输入数字,初始显示给它一个0)

Tag(此时它默认的是edit1,我们可以把它改成input1Edit,寓意为用户输入的第一个数字,且类型是edit可编辑文本,待会儿写相应函数代码也方便找到,待会儿各个控件之间会有互相调用关联,记得改一个自己容易识别的名称)

 你还在一个个地拖入控件一个个地改背景,字号,对齐方式....这些么,其实,可以ctrl+C&Ctrl+V大法,比如我想在界面上显示的两个可编辑文本都是橙色底,15号,加粗,string都是0,那么我复制粘贴一下,还不用担心按钮方框大小不一致,拖动到合适的位置

PS:复制好的控件Tag名称并不会跟被复制的控件一样,而是回到默认(n,第几个edit就是第几个),所以我们需要动动小手指重新修改一下Tag,第二个就改成input2Edit叭

划重点:改完每一个属性都不要敲回车键,而是应该点击空白的地方来确定你的修改,因为敲回车会重新生成一个函数,到时候太多冗余控件模板了会降低代码的美观性(应该叫可读性叭)

我们只改即将会有变化或者要赋予某样功能的控件,此处只有两个可编辑文本input1Edit和input2Edit,以及最后的输出结果=号后面的静态文本Tag:answerTxt(同理意思是结果,类型txt静态文本,至于为什么要用静态文本,是因为防止用户篡改,哦不修改),button按钮的Tag:addPushbutton

出现这种字号太大又显示不完全内容的,选中控件四周有四个黑点,可以任意拉宽拉长

 

改好,排列完成之后大致如下(等于的结果底色之所以用灰色,是因为防止与可编辑文本的两个inputEdit混淆)

 到此为止,控件编辑的工作就完成啦

3.打开编辑器,生成相应模板代码

在界面工具栏的右数第四个

 单击,就会让我们选择一个路径保存并且命名(建议全英文,路径,文件名)我的桌面是desktop不是中文路径哦

 

 会自动生成一个flg文件和一个.m文件

4.认识代码模板

 

% --- Executes just before myGUIAPP is made visible.
function myGUIAPP_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to myGUIAPP (see VARARGIN)% Choose default command line output for myGUIAPP
handles.output = hObject;% Update handles structure
guidata(hObject, handles);% UIWAIT makes myGUIAPP wait for user response (see UIRESUME)
% uiwait(handles.figure1);

function myGUIAPP_OpeningFcn(hObject, eventdata, handles, varargin)

这一整块是我们以后深入开发学习会用到的,相当于读取文件

% --- Outputs from this function are returned to the command line.
function varargout = myGUIAPP_OutputFcn(hObject, eventdata, handles) 
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)% Get default command line output from handles structure
varargout{1} = handles.output;

function varargout = myGUIAPP_OutputFcn(hObject, eventdata, handles) 

这一整块儿是整体输出,也是我们以后会用到的,现在这里用不到,因为只有像读写文件夹,输出执行结果数据等等才会用到OpeningFcn和OutputFcn

之后的就是我们添加的各种控件的相应模板了,比如

function input1Edit_Callback(hObject, eventdata, handles)%我们的第一个可编辑文本,用户需要输入的第一个文字
% hObject    handle to input1Edit (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of input1Edit as text
%        str2double(get(hObject,'String')) returns contents of input1Edit as a double
%从这里开始写我们的代码


% --- Executes during object creation, after setting all properties.
function input1Edit_CreateFcn(hObject, eventdata, handles)%这个是自动生成的,不用管
% hObject    handle to input1Edit (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end

 这个就是我们在Tag里面命名的input1Edit而它的事件是Callback回调

CreateFcn事件目前用不着

5.编译程序(写代码)

5.1给input1Edit写Callback回调的函数内容

function input1Edit_Callback(hObject, eventdata, handles)%我们的第一个可编辑文本,用户需要输入的第一个文字
% hObject    handle to input1Edit (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of input1Edit as text
%        str2double(get(hObject,'String')) returns contents of input1Edit as a double
%从这里开始写我们的代码

input = str2num(get(hObject,'String'));%把用户输入的字符串转换为可以进行运算的数字
if(isempty(input))%如果用户没有输入,那么就是0
    set(hObject,'String','0')%把控件的string属性设为0
end%If...end

%这个控件的代码只用一个执行目的,就是管用户的输入

 写好之后是完整的这样的,后面还包含了一个自动生成的CreateFcn事件,暂且不用我们打理这部分,

function input1Edit_Callback(hObject, eventdata, handles)%我们的第一个可编辑文本,用户需要输入的第一个文字
% hObject    handle to input1Edit (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of input1Edit as text
%        str2double(get(hObject,'String')) returns contents of input1Edit as a double
%从这里开始写我们的代码

input = str2num(get(hObject,'String'));
if(isempty(input))
    set(hObject,'String','0')
end

% --- Executes during object creation, after setting all properties.
function input1Edit_CreateFcn(hObject, eventdata, handles)%这个是自动生成的,不用管
% hObject    handle to input1Edit (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end

 

如果是复制这里的代码的话,set左边会有红色虚线,只需要往往左边退格到上一行,再直接回车就行了 

5.2给input2Edit写Callback回调的函数内容

 其实跟input1Edit是一样的,具体原理可以看5.1的代码注释

function input2Edit_Callback(hObject, eventdata, handles)%我们的第二个可编辑文本
% hObject    handle to input2Edit (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of input2Edit as text
%        str2double(get(hObject,'String')) returns contents of input2Edit as a double

input = str2num(get(hObject,'String'));
if(isempty(input))
    set(hObject,'String','0')
end

% --- Executes during object creation, after setting all properties.
function input2Edit_CreateFcn(hObject, eventdata, handles)%这个也是自动生成的
% hObject    handle to input2Edit (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end

5.3answerTxt不需要单独写代码是写在ADD里面的,直接赋值给了它

5.4addPushbutton的Callback回调函数内容

直接在相应的块儿后边输入会自动被编译器识别他们是一起的,不用花括号等...

 注释

a = get(handles.input1Edit,'String');%获取input1Edit的文本,并且赋值给变量a
b = get(handles.input2Edit,'String');%获取input2Edit的文本,并且赋值给变量b
total = str2num(a)+str2num(b);%和total为a+b的结果终值,用matlab自带的str2num字符串转数字函数转成数字进行加法运算
c = num2str(total);%用MATLAB自带的函数num2str把计算结果数字转换成string字符串,便于后续对string属性值的更改
set(handles.answerTxt,'String',c);%把转换成功的字符串,handles.answerTxt,调用我们的answerTxt控件的'string'属性,把c的结果填入

 至此,所有代码都写完了

6.运行代码+完整代码展示

6.1运行程序

我个人更偏向于使用界面上的那个绿色播放器运行,工具栏右起第一个

 弹出如下弹窗的话,添加到路径就好了

运行结果,可以修改数字(PS发现了一个问题,=号的string+没改过来)

如果不能add执行加法运算的话,那肯定就是等号后面的Tag没改过来,answerTxt,如果是报错一大长串红字的话,那就是代码敲错了,或者直接复制的代码,没有按照我的控件名字来,把有控件名字的地方改成你自己命名的Tag就好了

 

 6.2完整代码show

function varargout = myGUIAPP(varargin)
% MYGUIAPP MATLAB code for myGUIAPP.fig
%      MYGUIAPP, by itself, creates a new MYGUIAPP or raises the existing
%      singleton*.
%
%      H = MYGUIAPP returns the handle to a new MYGUIAPP or the handle to
%      the existing singleton*.
%
%      MYGUIAPP('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in MYGUIAPP.M with the given input arguments.
%
%      MYGUIAPP('Property','Value',...) creates a new MYGUIAPP or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before myGUIAPP_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to myGUIAPP_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help myGUIAPP% Last Modified by GUIDE v2.5 01-Nov-2022 14:42:21% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...'gui_Singleton',  gui_Singleton, ...'gui_OpeningFcn', @myGUIAPP_OpeningFcn, ...'gui_OutputFcn',  @myGUIAPP_OutputFcn, ...'gui_LayoutFcn',  [] , ...'gui_Callback',   []);
if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});
endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
elsegui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT% --- Executes just before myGUIAPP is made visible.
function myGUIAPP_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to myGUIAPP (see VARARGIN)% Choose default command line output for myGUIAPP
handles.output = hObject;% Update handles structure
guidata(hObject, handles);% UIWAIT makes myGUIAPP wait for user response (see UIRESUME)
% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line.
function varargout = myGUIAPP_OutputFcn(hObject, eventdata, handles) 
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)% Get default command line output from handles structure
varargout{1} = handles.output;function input1Edit_Callback(hObject, eventdata, handles)%我们的第一个可编辑文本,用户需要输入的第一个文字
% hObject    handle to input1Edit (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of input1Edit as text
%        str2double(get(hObject,'String')) returns contents of input1Edit as a double
%从这里开始写我们的代码
input = str2num(get(hObject,'String'));%把用户输入的字符串转换为可以进行运算的数字,matlab自带的函数str2num
if(isempty(input))%如果用户没有输入,那么就是0set(hObject,'String','0');%把控件的string属性设为0
end%If...end%这个控件的代码只用一个执行目的,就是管用户的输入% --- Executes during object creation, after setting all properties.
function input1Edit_CreateFcn(hObject, eventdata, handles)%这个是自动生成的,不用管
% hObject    handle to input1Edit (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end% --- Executes on button press in addPushbutton.
function addPushbutton_Callback(hObject, eventdata, handles)%执行加法的按钮
% hObject    handle to addPushbutton (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
a = get(handles.input1Edit,'String');%获取input1Edit的文本,并且赋值给变量a
b = get(handles.input2Edit,'String');%获取input2Edit的文本,并且赋值给变量b
total = str2num(a)+str2num(b);%和total为a+b的结果终值,用matlab自带的str2num字符串转数字函数转成数字进行加法运算
c = num2str(total);%用MATLAB自带的函数num2str把计算结果数字转换成string字符串,便于后续对string属性值的更改
set(handles.answerTxt,'String',c);%把转换成功的字符串,handles.answerTxt,调用我们的answerTxt控件的'string'属性,把c的结果填入function input2Edit_Callback(hObject, eventdata, handles)%我们的第二个可编辑文本
% hObject    handle to input2Edit (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of input2Edit as text
%        str2double(get(hObject,'String')) returns contents of input2Edit as a double
input = str2num(get(hObject,'String'));
if(isempty(input))set(hObject,'String','0')
end% --- Executes during object creation, after setting all properties.
function input2Edit_CreateFcn(hObject, eventdata, handles)%这个也是自动生成的
% hObject    handle to input2Edit (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end

看在博主肝得那么详细的份上就点个赞再走呗~


http://chatgpt.dhexx.cn/article/R9au4by9.shtml

相关文章

Matlab GUI界面设计

摘要:本篇博文基于MATLAB2014a进行GUI设计。 1.启动GUI设计 命令行输入guide,回车。 即可得到下面的对话框,进行相关的选择和设置 点击确定,得到两个文件,一个是.m文件,另一个是.fig文件,需要…

MATLAB(6)GUI应用介绍

目录 GUI编辑器控件属性回调函数 MATLAB常见的控件普通按钮切换按钮可编辑文本字符获取字符显示 复选框单选按钮弹出式菜单滑动条列表框表坐标区 附录各文件共享数据保存获取 GUI编辑器 MATLAB的GUI编辑器在命令行窗口输入“guide”启动,选择模板并点击确定后创建对…

matlab设计GUI可视化界面全方位解析

如何使用matlab设计GUI及导出 一、GUI的基础知识开始生成GUI界面回调函数Handles结构体GUI中的参数传递 二、控件介绍一、普通按钮二、可编辑文本(edit)和静态文本(text)三、单选框(radiobutton)和复选框&a…

matlabGUI入门

matlabGUI入门 前言1 基础知识1.1 函数1.2 数据类型1.3 绘图1.4 其它 2 GUIDE2.1 创建GUI界面2.2 模板选择2.3 控件2.4 对象浏览器2.5 回调函数2.6 属性检查器2.7 数据传输 前言 由窗口、菜单、图标、光标、按键、对话框和文本等各种图形对象组成的用户界面叫作图形用户界面&a…

matlab gui编程教程,matlab如何使用gui

如何在Matlab中打开GUI工具 两种方法1、输入guide回车。2、在工具栏里点击带笔形的gui。 为Matlab的GUI添加启动画面:添加启动画面,启动画面中可以添加想要添加的图像……VisualC可以实现这个功能,Matlab也可以实现,具体如下&am…

Matlab系列之GUI设计基础

Matlab系列之GUI设计基础 简介编辑界面菜单设计控件设计控件描述个人理解Matlab转译 控件属性【1】外观与行为【2】控件对象的信息【3】回调函数【4】状态信息 结束更多精彩,等你发现~ 简介 GUI即图形用户界面(Graphical User Interface),人…

BERT的get_sequence_output与get_pooled_output方法

BERT的get_sequence_output方法获取token向量是如何得到的? 通过如下方法得到,实际上获取的是encoder端最后一层编码层的特征向量。 BERT的get_pooled_output方法获取的句子向量是如何得到的? 通过如下方法得到,实际上获取的是[…

mybatis 连接池POOLED分析

mybatis提供了三种连接池的配置方式: 配置的位置:主配置文件SqlMapConfig.xml中的dataSource标签,type属性就是表示采用何种连接池方式。 type属性的取值: POOLED 采用传统的javax.sql.DataSource规范中的连接池,…

读论文:Pooled Contextualized Embeddings for Named Entity Recognition

最近在看命名实体识别方向的最新的paper。在这个方向&#xff0c;18年年底有一篇<contextual string embedding for sequence labeling>&#xff0c;在CoNLL03 数据集的F1值超过BERT达到了93.09。做法是弄了个预训练的character_embedding&#xff0c;用character_embedd…

pooled-jms_Hibernate隐藏的宝石:pooled-lo优化器

pooled-jms 介绍 在这篇文章中&#xff0c;我们将揭示一个序列标识符生成器&#xff0c;​​它结合了标识符分配效率和与其他外部系统的互操作性&#xff08;同时访问底层数据库系统&#xff09;。 传统上&#xff0c;有两种序列标识符策略可供选择。 序列标识符&#xff0c;…

idea__MyBatis框架08——连接池(POOLED 跟 UNPOOLED )

一、继续上一节&#xff0c;把一些不用的注释给清理掉&#xff0c;看一下我们的mybatis主配置文件&#xff0c;重点看type。 二、Type详细介绍&#xff1a; mybatis连接池提供了3种方式的配置&#xff1a; type属性就是表示采用何种连接池方式。type属性的取值&#xff1a;POOL…

PODNet: Pooled Outputs Distillation for Small-Tasks Incremental Learning论文详解ECCV2020

ECCV2020 论文地址&#xff1a;https://doi.org/10.1007/978-3-030-58565_6 代码地址&#xff1a;https://github.com/arthurdouillard/incremental learning.pytorch 目录 1.贡献点 2.方法 2.1 pool类型 2.2 POD&#xff08;Pooled Outputs Distillation&#xff09;方…

mybatis数据源(JNDI、POOLED、UNPOOLED)源码详解

一、概述 二、创建 mybatis数据源的创建过程稍微有些曲折。 1. 数据源的创建过程&#xff1b; 2. mybatis支持哪些数据源&#xff0c;也就是dataSource标签的type属性可以写哪些合法的参数&#xff1f; 弄清楚这些问题&#xff0c;对mybatis的整个解析流程就清楚了&#xff0c;…

XAConnectionFactory: failed to create pooled connection - DBMS down or unreachable 的解决方法

问题描述 项目启动出现报错&#xff1a;XAConnectionFactory: failed to create pooled connection - DBMS down or unreachable? 原因分析&#xff1a; Druid连接池问题&#xff0c;当Druid与Atomikos搭配时&#xff0c;如果MySQL版本高于8.0.11则不被支持 查看数据库使用…

没有手动提交事务,Mybatis 的 POOLED 连接池炸了

错误原因&#xff1a; 事务不关&#xff0c;并且非事务交替进行 总的来说&#xff0c;就是先开启了事务连接&#xff0c;未提交或关闭&#xff0c;导致连接池连接全部占满。 此时进行一次非事务连接操作&#xff0c;但是因为此时已经没有可以空闲的连接&#xff0c;并且创建的连…

【Flink】报错 No pooled slot available and request to ResourceManager for new slot failed

文章目录 1.场景11.1 概述1.2 问题1.场景1 1.1 概述 改报错请参考:【Flink】Flink 1.9 升级 到 flink 1.12.4 报错 shaded netty4 AbstractChannel AnnotatedConnectException 错误描述 报错信息: java.util.concurrent.CompletionException:

Oracle 关于Pooled connection request timed out

发生场景&#xff1a; 系统异常卡死&#xff0c;报错&#xff1a; 通过查找日志和业务接口定位&#xff0c;是因为数据库连接池溢出导致链接不上&#xff0c;系统卡死 异常测试代码如下格式&#xff1a; 测试了一个1000次的链接&#xff0c;每次连接都持续30秒&#xff0c;链…

MyBatis POOLED连接池深入了解

往期内容&#xff0c;如下 一、MyBatis简介 二、MyBatis环境搭建 三、MyBatis入门案例 四、MyBatis自定义 五、MyBatis CRUD操作 六、Mybatis中参数和返回值的深入了解 七、MyBatis 配置文件标签 我们在实际开发中都会使用连接池&#xff0c;因为它可以减少我们获取连接所消耗的…

unpooled与pooled

unpooled每次都是重新获取一个连接&#xff0c;底层源码如下 pooled去判断有没有&#xff0c;有就拿出来用&#xff0c;没有就创建新的&#xff0c;每次用完再还回去 mybatis poolde连接池原理 先去看空闲的有没&#xff0c;有就直接用&#xff0c;没有就去活动连接池里把最老…

.NET性能优化-推荐使用Collections.Pooled

简介 性能优化就是如何在保证处理相同数量的请求情况下占用更少的资源&#xff0c;而这个资源一般就是CPU或者内存&#xff0c;当然还有操作系统IO句柄、网络流量、磁盘占用等等。但是绝大多数时候&#xff0c;我们就是在降低CPU和内存的占用率。 之前分享的内容都有一些局限性…