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

matlab数值计算

第一节    多项式运算

一、多项式的表示、求值、求根    

1. 表示: matlab中把多项式表达成一个行向量,该向量中的元素是按多项式降幂排列的。      

p=[2,3,-1,4,5]表示多项式:

显示多项式的数学形式: p1=poly2str(p,'x') 如:p=[1,2,3,4]         p1=poly2str(p,'x') 结果:p1 = x^3 + 2 x^2 + 3 x + 4

2.  求多项式在某点的值的函数:polyval(p,x)         p:多项式对应的行向量,   x:待求值的点

   在x=1,2,-3,5点的值

  p=[2,3,-1,4,5]   x=[1,2,-3,5]   y=polyval(p,x) 

3 .  求多项式p的的根 m=roots(p) 

如:p=[-1,2,3,1]        x=roots(p)

二、多项式的运算  

1.    四则运算        

加减法:p1+p2 ; p1-p2        

乘法:用卷积函数conv来实现         如:p1=[1,0,-2,-5];                p2=[2,3,1];                conv(p1,p2)

除法:用deconv来实现 对于任意两个多项式p1, p2, deconv(p1,p2)的值为两个行向量, 即[q,r]=deconv(p1,p2), 其中q是p1除以p2的商, r是余, 它们满足p1=conv(p2,q)+r.  

如:p1=[1,0,-2,-5];         p2=[2,1];         [q,r]=deconv(p1,p2)

2.   求导、积分运算                

求多项式p的导数:polyder(p)          

求多项式p的不定积分:polyint(p)  polyint(p,a,b) 非定积分            

polyder(a,b): 求多项式a,b乘积的导数          

 polyint(a,b): 求多项式a,b乘积的积分

3.  特征多项式运算            

(1)当x为行向量时,poly(x) 构造以x为根的多项式  如:x=[-1,2,3]        q=poly(x)

(2)当A为方阵时, poly(A) 构造以A的特征多项式。

第二节    多项式拟合

一、数据拟合:

问题的提法:已知曲线上n个点(xi,yi), (i=1,2,…,n), xi互不相同,寻求一个函数y=F(x),  使y=F(x)在某种准则下与所有数据点最为接近,即曲线拟合得最好。

基本思路:对n个点构成的数据集{(xi,yi), i=1,2,…,n}, m为小于n的整数,设是m+1个线性无关的连续函数(称为基本拟合函数),取按准则  确定常数(最小二乘法)

按此方法得到的函数称为数据集(xi,yi), i=1,2,…,n的最小二乘拟合函数。

衡量拟合情况优劣的指标有:

(1)SSE(误差平方和)The sum of squares due to error 该统计参数计算的是拟合数据和原始数据对应点的误差的平方和:

SSE越接近于0,说明模型选择和拟合效果好,数据预测也成功。下面的指标MSE和RMSE与指标SSE有关联,它们的校验效果是一样的。

(2)MSE(方差)Mean squared error

(3)RMSE(剩余标准差)Root mean squared error 该统计参数,也叫回归系统的拟合标准差,是MSE的平方根

(4)R-square(判断系数,拟合优度)Coefficient of determination,判断系数是由两个参数SSR和SST决定的,对总平方和进行分解有SST =SSE +SSR,其中SSE 是误差平方和,反映随机误差对 y 的影响,  SSR 称为回归平方和,反映自变量对y 的影响。判断系数定义为若它接近1,表示F(x)能较好的拟合该数据集。

(5)调整的判断系数         统计学家主张在回归建模时,应采用尽可能少的自变量,不要盲目地追求判定系数 R2 的提高。       其实,当变量增加时,残差项的自由度就会减少。而自由度越小,数据的统计趋势就越不容易显现。 为此,又定义一个调整判定系数:

当 n 很大、 m 很少时,两者之间的差别不是很大;但是,当 n 较少,而m 又较大时,就会远小于

二、多项式拟合

若基本拟合函数为:

即用m次多项式拟合给定数据,称多项式拟合。

Matlab中的多项式拟合函数:polyfit

格式:a=polyfit(x,y,n) x:横坐标 y:纵坐标

功能:对一组点(x,y)进行n次多项式拟合。

x,y为要拟合的数据, n为拟合多项式的次数,

a为拟合多项式    系数

拟合多项式在x处的值可用polyval(a,x)计算

可进入拟合工具箱cftool(x,y)处理数据拟合问题。 例1 对x=0:0.1:1;  y=[-0.447,1.978,3.11,5.25,5.02,4.66,4.01,4.58,3.45,5,35,9.22]       求三次拟合多项式。

解   x=0:0.1:1;y=[-0.447,1.978,3.11,5.25,5.02,4.66,4.01,4.58,3.45,5.35,9.22];p=polyfit(x,y,3)xx=0:0.01:1;yy=polyval(p,xx);plot(xx,yy,'-b',x,y,'.r','markersize',20)  
t=0:1:15;  
y=[30.0 29.1 28.8 28.1 28.0 27.7 27.5 27.2 27.0 26.8 26.5 26.3 26.1 25.7 25.3 24.8];plot(t,y,'r*')A=polyfit(t,y,3) tt=0:0.5:15;
z=polyval(A,tt); 
plot(t,y,'r*',tt,z,'b')

对数据求出合适次数的拟合多项式p(x),由弧长公式:得对河底光缆长度的估计s, 所需光缆为s+y(0)+y(20)  6次多项式拟合较为合适。光缆总长:46.28m

x=0:1:20;
y=[-9.2,-8.91,-8.02,-7.95,-8.11,-9.05,-10.12,-11.08,-12.25,-13.26,-13.45,-12.62,-11.28,-10.23,-9.25,-7.91,-8.05,-8.86,-9.85,-10.81,-10.96]; 
polytool(x,y,3)
n=input('拟合次数n=')
format long
p=polyfit(x,y,n)
dp=polyder(p)
x1=0:0.01:20;
y1=sqrt(1+polyval(dp,x1).^2);
s=trapz(x1,y1)-y(1)-y(end)

第三节   非线性拟合

问题的提法:设非线性函数其中是未知参数由实验获得该函数数据点        ,确定参数    

方法:最小二乘法

1. 非线性拟合函数:lsqcurvefit

格式:[x, resnorm,r,flag]=lsqcurvefit(fun, x0,xdata,ydata) x0为初始解向量;xdata,ydata为满足关系ydata=F(x, xdata)的数据; fun为待拟合函数, resnorm=sum ((fun(x,xdata)-ydata).^2),即在x处残差的平方和; r=fun(x,xdata)-ydata,即在x处的残差; flag为终止迭代的条件

例1  确定模型   中的参数, 已知数据点:

xdata = [3.6,7.7,9.3,4.1,8.6,2.8,1.3,7.9,10.0,5.4];

ydata = [16,150.5,260.1,22.5,206.5,9.9,2.7,165.5,325.0,54.5];

解法:定义函数 f=@(a,x) a(1)*x.^2 + a(2)*x.*sin(x) + a(3)*x.^3;

由 [a, resnorm,r]=lsqcurvefit(f, a0,xdata,ydata)确定参数,画图观察拟合效果

2. 用fittype函数做曲线拟合

使用fittype函数可以自定义拟合函数,可以满足线性拟合和非线性拟合。fittype函数具有很灵活的配置,基本满足各种复杂场景。 使用方法:

(1)做多项式拟合        

 p=fittype('poly2')          

f=fit(x,y,p)          

plot(f,x,y)

如:对下列数据做多项式拟合 x=[1;1.5;2;2.5;3];                                                 y=[0.9;1.7;2.2;2.6;3];

x=[1;1.5;2;2.5;3];        
y=[0.9;1.7;2.2;2.6;3];
p=fittype('poly2')
f=fit(x,y,p)
plot(f,x,y) 

(2)做非线性拟合      

方法1:(线性化方式)        

如: ex= {'x.^2', ‘sin(x)','1'};                 f=fittype(ex)                      

实验:x=[0.2,0.5,0.8,1.1,1.2,1.5,1.8,2];                 y=[2.35,1.38,0.81,0.62,0.78,1.43,2.25,3.18];

方法2:(非线性化方式)         如:p=fittype(‘a*x.^2+b*sin(x)+c’,‘independent’,‘x’)

由物理背景知:

 clc,clear
x=[0,0.4,1.2,2,2.8,3.6,4.4,5.2,6,7.2,8,9.2,10.4,11.6,12.4,13.6,14.4,15]';
y=[1,0.85,0.29,-0.27,-0.53,-0.4,-0.12,0.17,0.28,0.15,-0.03,-0.15,-0.07,0.059,0.08,0.032,-0.015,-0.02]';
f=fittype('a*cos(k*x)*exp(w*x)','independent','x');
cfun=fit(x,y,f)
xi=0:0.1:20;
yi=cfun(xi);
plot(x,y,'r*',xi,yi,'b-')

第四节   插值问题

一、一元函数插值

(1)已知两个节点时,得线性插值多项式:

(2)已知三个节点时,得抛物插值多项式:

已知n+1个节点时,可得n次拉格朗日插值多项式。

若F(x)为分段函数,称为分段插值; 插值中使用较多的是分段线性插值和三次样条插值。

分段线性插值        

设函数y=f(x)的插值节点为(xi,yi), (i=0,1,2, …,n) 将每两个相邻的节点用直线连起来,如此形成的一条 折线就是分段线性插值函数记为:In(x), 它满足In(xi)=yi ,且在每个小区间上是一次函数。

分段线性插值具有收敛性:但在节点处In(x)不可导,光滑性较差。

Matlab中的一维插值函数interp1

格式1:yi=interp1(x,y,xi) 功能:已知函数y=f(x)的一组插值节点(x,y),求出其插值函数F(x)在点xi处的函数值yi。

格式2:yi=interp1(y,xi) 默认x=1:n,n为向量y的元素个数。

格式3:yi=interp1(x,y,xi,’method’)

Method:

(1)nearest 线性最近项插值                

(2)linear   线性插值                

(3)spline  三次样条插值                

(4)cubic   立方插值                  

缺省时默认为为分段线性插值

例1  通过实验测得某函数的一组数据如下:  x: 0,3,5,7,9,11,12,13,14,15  y: 0,1.2,1.65,2.1,2.15,2.0,      1.85,1.65,1.55,1.25 试作出其插值函数的图形

 x=[0,3,5,7,9,11,12,13,14,15];  

y=[0,1.2,1.65,2.1,2.15,2.0,1.85,1.65,1.55,1.25];

 xi=0:0.1:15;

 yi=interp1(x,y,xi,'spline');

 yi1=interp1(x,y,xi,'linear');

 yi2=interp1(x,y,xi,'cubic');

 plot(x,y,'*',xi,yi,'r-',xi,yi1,‘b-',xi,yi2,‘g-')

 legend('节点','三次样条插值','线性插值','立方插值')

 

三次样条插值是解决一维插值问题最常用的方法, Matlab中实现三次样条插值的方法有:

(1)yi=interp1(x,y,xi,’spline’)

(2)使用spline函数:          

用法1:yi=spline(x,y,xi)(缺点:找不到方程表达式)         效果同(1)          

用法2:pp=spline(x,y)                        

获得三次样条插值的分段多项式pp, 可使用ppval计算插值。  

(3)使用csape函数:            

用法:  pp=csape(x,y)            可以添加参数选择边界条件。

例2  通过实验测得某函数的一组数据如下:  x: 0,3,5,7,9,11,12,13,14,15  y: 0,1.2,1.65,2.1,2.15,2.0,1.85,1.65,1.55,1.25 试作出其插值函数的图形。

x=[0,3,5,7,9,11,12,13,14,15];  

y=[0,1.2,1.65,2.1,2.15,2.0,1.85,1.65,1.55,1.25];  

xi=0:0.1:15;

 yi=interp1(x,y,xi,'spline');

 yi1=interp1(x,y,xi,'linear');

 yi2=interp1(x,y,xi,'cubic');  

plot(x,y,'*',xi,yi,'r-',xi,yi1,‘b-',xi,yi2,‘g-')  legend('节点','三次样条插值','线性插值','立方插值')

//

 clear,clc  

x=[0,3,5,7,9,11,12,13,14,15];

 y=[0,1.2,1.65,2.1,2.15,2.0,1.85,1.65,1.55,1.25];

 xi=0:0.1:15;  

S=csape(x,y)

 %Sa=spline(x,y)

 P=S.coefs

% Pa=Sa.coefs(系数信息)  

yi=ppval(S,xi);

 plot(x,y,'o',xi,yi,'r');

二、 二元函数插值

1. 网格节点数据插值函数:interp2

格式:z=interp2(x0,y0,z0,x,y,’method’)

x0,y0,z0(横纵竖):插值节点坐标,要求x0,y0单调;

x,y是被插值点的横坐标与纵坐标( x,y不能超过x0,y0的范围),z是被插值点的函数值。

Method:(1)nearest 最邻近插值                  (2)linear  双线性插值                  (3)cubic双三次插值 默认为双线性插值。

4800

1350

1370

1390

1400

1410

960

940

880

800

690

570

430

290

210

150

4400

1370

1390

1410

1430

1440

1140

1110

1050

950

820

690

540

380

300

210

4000

1380

1410

1430

1450

1470

1320

1280

1200

1080

940

780

620

450

370

350

3600

1420

1430

1450

1480

1500

1550

1510

1430

1300

1200

980

850

750

550

500

3200

1430

1450

1460

1500

1550

1600

1550

1600

1600

1600

1550

1500

1500

1550

1500

2800

950

1190

1370

1500

1200

1100

1550

1600

1550

1380

1070

900

1050

1150

1200

2400

910

1090

1270

1500

1200

1100

1350

1450

1200

1150

1010

880

1000

1050

1100

2000

880

1060

1230

1390

1500

1500

1400

900

1100

1060

950

870

900

930

950

1600

830

980

1180

1320

1450

1420

1400

1300

700

900

850

840

380

780

750

1200

740

880

1080

1130

1250

1280

1230

1040

900

500

700

780

750

650

550

800

650

760

880

970

1020

1050

1200

830

800

700

300

500

550

480

350

400

510

620

730

800

850

870

850

780

720

650

500

200

300

350

320

0

370

470

550

600

670

690

670

620

580

450

400

300

100

150

250

y/x

0

400

800

1200

1600

2000

2400

2800

3200

3600

4000

4400

4800

5200

5600

 

clear,clcload data404x=0:400:5600;  y=4800:-400:0; [X,Y]=meshgrid(x,y);surf(X,Y,Z)(原始数据的图形)pausefigure(2)xi=linspace(0,5600,80);(取80个节点)yi=linspace(0,4800,80); [Xi,Yi]=meshgrid(xi,yi);Zi=interp2(X,Y,Z,Xi,Yi); surf(Xi,Yi,Zi)pause 
figure(3)t=0:100:1600; (画等高线)[c,h]=contourf(Xi,Yi,Zi,t);clabel(c,h)(标上等高线)colormap cool(加色调)colorbar(加色标)

2. 散点数据插值函数:griddata 已知n个插值节点(xi,yi,zi), (i=1,2,…,n), 求在点(x,y)处的插值z, matlab提供函数griddata。     

 格式:cz=griddata(x,y,z,cx,cy,’method’)

其中x,y,z 均为n 维向量,指明所给数据点(插值节点)的横坐标、纵坐标和竖坐标。 cx,cy是给定被插值点的横坐标和纵坐标,cz为相应点的竖坐标。

若cx,cy是向量,则给定以它们所确定网格点的横坐标和纵坐标,这时要求cx,cy一个为行向量一个为列向量。 编程时也可先用meshgrid将cx,cy定义成网格矩阵。

clear ,clc
x=[129,140,103.5,88,185.5,195,105,157.5,107.5,77,81,162,162,117.5]; y=[7.5,141.5,23,147,22.5,137.5,85.5,-6.5,-81,3,56.5,-66.5,84,-33.5];z=-[4,8,6,8,6,8,8,9,9,8,8,9,4,9];[x1,y1]=meshgrid(75:5:200,-50:5:150); z1=griddata(x,y,z,x1,y1,’v4’);surf(x1,y1,z1)figure(2)[c,h]=contourf(x1,y1,z1);clabel(c,h)

第五节   数值积分

一、数值积分的常用方法  

(1)用梯形法计算积分, 适用于被积函数为离散数据时, 求函数的定积分。 该函数调用格式:I=trapz(x,y)(分点越密效果越好)

求积分:

clc,clear
format long
ac=@(x)sin(x)./x
x1=pi/4:pi/50:pi/2;
y1=ac(x1);
s1=trapz(x1,y1)
x2=pi/4:pi/100:pi/2;
y2=ac(x2);
s2=trapz(x2,y2)

(2) 基于变步长辛普森法计算积分(了解)      quad或quadtx,    

 调用格式:    [I,n]=quad(‘fname’,a,b,Tol,trace)    

 其中:‘fname’是被积函数名。      

a,b是积分上下限。      

Tol是精度控制值,省却时取0.001      

Trace:控制是否显示展现积分过程,取0不展现    

  I:积分值(返回量)    

  n:被积函数调用次数

如:求积分:   ac=@(x)sin(x)./x      s=quad(ac,pi/4,pi/2)

如:求积分:   ac=@(x)sin(x)./x    s=quad(ac, realmin(最小正实数),pi/2)

做出函数的图形:

x=1:0.05:20;
n=length(x);
f=@(t)sin(t)./t;
for i=1:ny(i)=quad(f,0,x(i));
end
plot(x,y)

(3) 高精度Lobatto积分法,      格式:z = quadl(Fun,a,b)

(4) 自适应Gauss-Kronrod数值积分法        z = quadgk(Fun,a,b)

如:求积分:

f=@(x)exp(-x.^2)y1=quadl(f,-1,1)y2=quadgk(f,-1,1)

(5) 积分法矢量化自适应simpson数值积分      格式:z = quadv(Fun,a,b)       一次可以计算多个积分

如:求积分:  F=@(x,n)1./((1:n)+x.^2);       quadv(@(x)F(x,6),0,1)

含参变量的积分:做出函数

clc,clear
f=@(x,t)sin((x-t).^2);
t=-5:0.05:5;
n=length(t);
for i=1:n
s(i)=quad(f,0,pi,[],[],t(i));
end
plot(t,s)

 

相关文章:

matlab图形功能

//...

python实现键盘输入多个值

Python 2里面读取输入的函数是raw_input(), Python 3的是input(),读入一个值后回车读取输入就退出了,想要一次读取多个输入,可以像下面这样: a, b raw_input().split()1 2a Out[224]: 1b Out[225]: 2 上面保存的是字…...

VS2019在win10下配置boost库

第一步:官网下下载:https://www.boost.org/users/history/version_1_73_0.html win10选择boost_1_73_0.zip 第二步:解压 第三步:编译 打开VS命令行 选择 已压缩好的boost_1_73_0文件夹 运行 bootstrap.bat 成功之后运行 刚…...

pthread_cond_wait()

int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex); 该函数第一个参数为条件变量指针,第二个为互斥量指针。该函数调用前,需本线程加锁互斥量,加锁状态的时间内函数完成线程加入等待队列操作 ,线程进入等待前…...

pthread多线程学习

基于pthread学习 多线程编程...

线程私有数据

线程私有数据实现的主要思想是:在分配线程私有数据之前,创建与该数据相关联的健,这个键可以被进程中的所有线程使用,但每个线程把这个键与不同的线程私有数据地址进行关联,需要说明的是每个系统支持有限数量的线程特定…...

创建线程的几种方式

class A {int x; public:void f(int x, char c) { };int operator()(int N) { return 0; } }; void foo(int x){} int main() {A a;thread t1(a, 6); // 传递a的拷贝给子线程thread t2(ref(a), 6); //传递a的引用给子线程thread t3(move(a), 6); //a在主线程中将不再有效threa…...

c++11多线程学习

一.join和detach C中的thread对象通常来说表达了执行的线程(thread of execution),这是一个操作系统或者平台的概念。 当thread::join()函数被调用后,调用它的线程会被block,直到线程的执行被完成。基本上&#xff0…...

Socket编程

C Socket 编程:https://blog.csdn.net/sinat_35866463/article/details/81019778 windows环境下用c实现socket编程:https://blog.csdn.net/xiaoquantouer/article/details/58001960 win7系统两台电脑之间利用Socket实现文件传输---C实现:ht…...

inet_pton()和inet_ntop()函数

https://blog.csdn.net/zyy617532750/article/details/58595700 1.把ip地址转化为用于网络传输的二进制数值 int inet_aton(const char *cp, struct in_addr *inp); inet_aton() 转换网络主机地址ip(如192.168.1.10)为二进制数值,并存储在struct in_addr结构中&a…...

C/C++内存泄漏及检测

“该死系统存在内存泄漏问题”,项目中由于各方面因素,总是有人抱怨存在内存泄漏,系统长时间运行之后,可用内存越来越少,甚至导致了某些服务失败。内存泄漏是最难发现的常见错误之一,因为除非用完内存或调用…...

八大设计模式原则

1.依赖倒置原则 高层模块不依赖底层模块,二者都应该依赖抽象 抽象不依赖实现细节,实现细节应该依赖于抽象 这一原则与下面的针对接口编程而不是针对实现编程是一个道理,我们设计一个程序,我们应该先想好我们想要抽象什么&#x…...

C++设计模式

管理变化, 提高复用 两种手段:分解 抽象 八大原则:https://blog.csdn.net/mmk27_word/article/details/108521903 重构技法: 静态 -> 动态 早绑定 -> 晚绑定 继承 -> 组合 编译时依赖 -> 运行时依赖 紧耦合 ->…...

LRU算法

#include <iostream> #include <list> #include <map> using namespace std; class LRU {struct node {int key, val;node(int k_ 0, int v_ 0) {key k_;val v_;}};public:int cap; // 大小map<int, list<node>::iterator> mp;list<node&…...

数据库事务四个特性

ACID特性 数据库管理系统中事务(transaction)的四个特性&#xff08;分析时根据首字母缩写依次解释&#xff09;&#xff1a;原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consistency&#xff09;、隔离性&#xff08;Isolation&#xff09;、持久性&#xf…...

Git入门简介

本文简单介绍一下Git的使用&#xff0c;主要内容有下&#xff1a; Git基本介绍Git相较于SVN的优势Git使用流程及常用命令 Git基本介绍 Git是一款免费、开源的分布式版本控制系统&#xff0c;用于敏捷高效地处理任何或小或大的项目 —— [ 百度百科 ] GitHub&#xff1a;https…...

《移动App测试实战》读书笔记

总的来讲&#xff0c;这本书基本涵盖了移动App测试的方方面面&#xff0c;并结合各个专题做了简单讲解&#xff0c;对于扩展无线端测试的知识面有极大的好处&#xff0c;缺点是知识点点到为止&#xff0c;毕竟全书300多页的篇幅也不可能对知识点进行专题讲解。书中作者提到的一…...

http load介绍

前几天工作中要对项目的接口做简单压测&#xff0c;就使用了http load做了简单测试&#xff0c;下面介绍一下这款工具的使用说明。简介&#xff1a;http_load是基于linux平台的性能测试工具&#xff0c;它体积非常小&#xff0c;仅100KB。它以并行复用的方式运行&#xff0c;可…...

工具介绍:ITerm 2

今天介绍一款终端工具ITerm2&#xff0c;有了它&#xff0c;大大提供了我们的工作效率&#xff1b;官方地址&#xff1a;http://www.iterm2.com/ 颜控首选&#xff0c;不多说&#xff0c;上图&#xff1a; bg图片、字体、颜色等都可以在Preferences里设置&#xff0c;强大&…...

shell编写图片抓取器

最近在看《Linux Shell脚本攻略》一书&#xff0c;书中有个图片抓取器的script&#xff0c;抓取出来记录一下。适用范围&#xff1a;适合抓取html里符合img标签正则规则的图片。 #!/bin/bash if [ $# -ne 3 ] thenecho "Usage: $0 URL -d DIRECTORY"exit -1 fi for …...

SSH免密码登录

公司服务器很多的话&#xff0c;如果每次连接都需要输入密码&#xff0c;那就太麻烦了。So&#xff0c;免密登录就可以大大提高我们的工作效率了。 下面介绍ssh免密登录的方法&#xff1a; 实现步骤&#xff1a; 1.在你的自己的机器下面使用ssh-keygen命令来实现创建公钥 使…...

Jmeter访问HTTPS请求

公司最近在搞全站HTTPS改造&#xff0c;进一步提高网站的安全性&#xff0c;防止运营商劫持。那么&#xff0c;改造完成后&#xff0c;所有前后端的URL将全部为https。 So &#xff0c;研究下怎么用Jmeter访问https请求呢。 其实很简单&#xff0c; 第一步在jmeter中创建HTT…...

《Maven实战》读书笔记

之前对Maven有些认识&#xff0c;通过这本书《Maven实战》一起系统的回顾一下&#xff0c;总结的东西不会很全面&#xff0c;但都是日常工作中最常用的。 简介&#xff1a; maven翻译为“知识的积累”&#xff0c;基于项目对象模型&#xff08;Project Object Model&#xff0…...

github/gitlab 管理多个ssh key

以前只使用一个 ssh key 在github上提交代码&#xff0c;由于工作原因&#xff0c;需要再添加一个ssh key在公司的 gitlab上提交代码&#xff0c;下面记录下配置过程&#xff0c;防止遗忘。 生成并添加第一个ssh key 第一次使用ssh生成key&#xff0c;默认会在用户~&#xff…...

解决部分国产机连不上adb shell的办法

手里头认领了公司的部分测试机&#xff0c;但是工作中发现部分手机连上usb后&#xff0c;adb devices识别不出设备。下面总结一下解决办法&#xff1a; 魅蓝Note2&#xff1a; 1.在命令行输入 system_profiler SPUSBDataType,查看连接的usb设备的信息&#xff0c;如下图&…...

流式断言器AssertJ入门介绍

之前一直使用Junit自带的Assert类进行断言&#xff0c;尽管这能满足一些我们最基础的需要&#xff0c;但从功能上来讲还是不够强大的。 今天介绍一款功能强大的流式断言器AssertJ&#xff0c;所谓的流式断言就是相较于Assert的单个校验点断言&#xff0c;支持一条断言语句对实…...

单元测试框架-Junit介绍

在工作中编写接口脚本中经常用到junit作为测试框架&#xff0c;下面总结一下junit的用法和编写规范&#xff0c;供大家参考。 junit简介&#xff1a; 基于Java语言的单元测试框架&#xff0c;在日常工作中被广泛运用于单元测试和接口测试。 junit官网&#xff1a;http://jun…...

TestNG使用总结

TestNG简介&#xff1a; TestNG是一个测试框架&#xff0c;其灵感来自JUnit和NUnit&#xff0c;但同时引入了一些新的功能&#xff0c;使其功能更强大&#xff0c;使用更方便。 TestNG相较于Junit的优点&#xff1a; 可指定执行顺序&#xff0c; dependsOnMethods 属性来应对…...

基于数据驱动的接口自动化测试解决方案

总结一下我么项目中使用的基于数据驱动的接口自动化测试解决方案&#xff0c;仅供大家参考。1.接口框架设计结构 2.接口测试脚本设计原则 3.持续集成 这块用jenkins就可以了&#xff0c;就不介绍了&#xff0c;目前我们项目的集成规则介绍一下&#xff1a; 1.脚本job与应用对…...

python数据类型

重温python数据类型&#xff0c;重点掌握str&#xff0c;list&#xff0c;tuple及dict类型。...

Python高级特性

Python高级特性 切片迭代及迭代器列表生成式生成器 这些高级特性的作用都是一样的&#xff0c;为了代码的简洁、高效运行。 切片 切片让取一个list或tuple的部分元素变得相当简单&#xff0c; e.g: L[‘jack’,’mike’,’jerry’] 那么第一个位置&#xff0c;索引为0&a…...

ADB学习笔记

简介&#xff1a; ADB的全称为Android Debug Bridge&#xff08;调试桥&#xff09;&#xff0c; 它是一个客户端-服务器端程序&#xff0c;其中客户端是你用来操作的电脑, 服务器端是android设备。作用显而易见&#xff0c;能方便我们在PC上对手机进行调试的一些工作。 原理…...

Appium简介

Appium简介 Appium is an open source, cross-platform test automation tool for native, hybrid and mobile web apps, tested on simulators (iOS), emulators (Android), and real devices (iOS, Android, Windows). 优缺点 优点显而易见&#xff0c;支持webview、hybri…...

Appium-java API详解

目前appium-java最新版本是5.0.0-BETA3&#xff0c;因此就拿最新的说明&#xff0c;以Java为例&#xff0c;首先引入java client的依赖&#xff1a;<dependency><groupId>io.appium</groupId><artifactId>java-client</artifactId><version&g…...

Appium学习遇到的坑

安装篇 Q1&#xff1a;安装时要求java运行环境为最低1.8&#xff0c;我原先的jdk1.7无法运行。 A1&#xff1a;升级jdk后解决。附appium安装教程 配置篇 Q2&#xff1a;运行提示error&#xff1a;Error: Android bootstrap socket crashed: Error: getaddrinfo ENOTFOUND lo…...

每天一个adb命令:pm 命令详解

介绍adb shell中一个很重要的命令——pm&#xff08;Package Manager&#xff09;&#xff0c;这个命令主要用于获取和安装在 Android 设备上的应用信息。 关于pm命令的用法解析。命令行下输入adb shell pm即可获得关于pm的用法帮助&#xff0c;如下所示&#xff1a; usage: …...

每天一个adb命令:am 命令详解

am 这个命令可以帮助我们直接启动activity、service及广播。 adb shell am 可以查看命令的详细说明。 usage: am [subcommand] [options] usage: am start [-D] [-W] [-P <FILE>] [--start-profiler <FILE>][--sampling INTERVAL] [-R COUNT] [-S] [--opengl-tra…...

每天一个adb命令:input 命令详解

input命令可以用于向键盘发送一些指令&#xff0c;先看看input的官方说明&#xff1a; Usage: input [<source>] <command> [<arg>...]The sources are:mousekeyboardjoysticktouchnavigationtouchpadtrackballstylusdpadtouchscreengamepadThe commands an…...

每天一个adb命令:screen 命令详解

screen命令分为截屏screencap命令及录制视频screenrecord命令。 screencap命令&#xff1a; sage: screencap [-hp] [-d display-id] [FILENAME]-h: this message-p: save the file as a png.-d: specify the display id to capture, default 0. If FILENAME ends with .png …...

每天一个adb命令:wm命令详解

wm命令可以用于获取屏幕分辨率、像素密度等。 前提&#xff1a;Android4.3及以上 usage: wm [subcommand] [options]wm size [reset|WxH]wm density [reset|DENSITY]wm overscan [reset|LEFT,TOP,RIGHT,BOTTOM]wm size: return or override display size.wm density: overrid…...

每天一个adb命令:dumpsys命令详解

dumpsys是一个能帮助我们对手机进行性能分析的命令&#xff0c;它可以帮助我们获取电池、内存、cpu、磁盘、wifi等等信息&#xff0c;具体能查询的信息可以通过命令&#xff1a; adb shell dumpsys | grep DUMP OF SERVICE DUMP OF SERVICE DockObserver: DUMP OF SERVICE Sm…...

每天一个adb命令:monkey命令详解

国际惯例&#xff0c;先用adb shell monkey 看看具体用法。 具体用法 usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...][-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...][--ignore-crashes] [--ignore-timeouts][--ignore-security-exceptions][--monitor-native-cra…...

JSON相关知识点

JSON是工作中经常会遇到的一种数据结构&#xff0c;下面来讲讲与他相关的一些知识点。 JSON简介&#xff1a; JSON: JavaScript Object Notation(JavaScript 对象表示法) JSON 是存储和交换文本信息的语法,类似 XML。 JSON 比 XML 更小、更快&#xff0c;更易解析。 JSONObj…...

markdown编写入门

什么是markdown&#xff1f; Markdown 是一种轻量级的「标记语言」&#xff0c;通过简单的标记符号来格式化排版&#xff0c;是文本展现的更加优美&#xff0c;形象。 markdown优点&#xff1a; 1.不像office&#xff0c;存在版本兼容问题&#xff0c;markdown无此问题&#…...

log4j学习demo

log4j简介 Log4j是Apache的一个开放源代码项目&#xff0c;是项目中比较常用的日志记录组件。 引入log4j <dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.14</version></dependency> log4…...

idea常用技巧收集

idea相比eclipse的优点我在这里就不赘述了&#xff0c;更多参考&#xff1a;idea官网,本文重点讲下自己在idea使用过程中常用的一些技巧&#xff0c;以后随时更新…… 主要分成三大块&#xff1a; 1. 系统设置 2. 快捷键 3. 其他设置 系统设置 主题风格设置&#xff1a;默…...

浅谈spring

这个话题感觉是老生常谈了&#xff0c;但是作为基础&#xff0c;我还是要沉淀一下&#xff0c;深刻认识。 spring核心思想 简洁的讲spring的核心思想就是两个特性&#xff1a;控制反转(IOC)和面向切面(AOP) 。 但是这两个概念却不太容易理解&#xff0c;我一开始也不太理解&…...

spring装配bean

最近在看《spring实战》一书&#xff0c;记录下spring装配bean这一章中自己学到的一些知识点。下面简单说明下bean和装配这两个概念的意思。 bean&#xff1a;在spring中代表组件&#xff0c;通过bean将不同的组件联系在一起。装配&#xff1a;是指创建应用对象之间协作关系的行…...

初识spring RestTemplate

《spring实战》读书笔记之初识spring RestTemplate。首先需要先了解下什么是REST。 REST&#xff1a;官方解释&#xff0c;表述性状态转移。 感觉还是不知所云&#xff0c;参考下怎样用通俗的语言解释REST&#xff0c;以及RESTful&#xff1f; 即URL定位资源&#xff0c;用H…...

记一次爬虫实践(一):思路及模拟登录

需求背景 因为我们的应用通常运行在h5上&#xff0c;因此图片格式选择了加载较快的webp格式&#xff0c;但是运营提起有在pc上批量下载图片&#xff08;要求图片格式&#xff09;的需求&#xff0c;目前比较麻烦&#xff0c;需要登录h5-找到接口中对应图片资源-一张张另存为到…...