MATLAB第十章_图像处理算法

news2024/11/16 7:49:32

目录

图像处理算法

图像处理基础

图像处理函数

默认显示方式

添加颜色条

显示多帧图像

显示动画

三维材质图像

图像的直方图

灰度变换

均衡直方图

图像处理应用

图像增强

图像重建

图像变换

图像压缩

图像分割

图像边缘检测

图像识别


图像处理算法


图像处理基础


        数字图像处理技术主要包括:图像增强、图像重建、图像变换、图像压缩、图像分割、图像边缘监测和图像识别等。

(1)图像增强

①空域法:在图像所在的像素空间进行处理

②频域法:通过对图像进行傅里叶变换后再频域上间接进行的

(2)图像重建

(3)图像变换

        把图像从空域转换到频域,对原图像函数寻找一个合适变换的数学问题。可分为可分离变换和统计变换两大类。

(4)图像压缩

(5)图像分割

        图像分割的方法主要有两种:一种是假设图像各个成分的强度值是均匀的,并利用这个特性,这种方法的技术有直方图分割;另外一种方法是寻找图像成分之间的边界,利用的是图像的不均匀性,基于这种方法的有梯度法分割

(6)图像边缘检测

        监测图像中的线状局部结构

(7)图像识别

        图像识别是指利用计算机对图像进行处理、分析和理解,以识别各种不同模式的目标和对象的技术


图像处理函数


默认显示方式

 imshow - 显示图像
在图窗中显示灰度图像 I。imshow 使用图像数据类型的默认显示范围,并优化图窗、坐标区和图像对象属性以便显示图像。

imshow(I) 在图窗中显示灰度图像 Iimshow 使用图像数据类型的默认显示范围,并优化图窗、坐标区和图像对象属性以便显示图像。

imshow(I,[low high]) 显示灰度图像 I,以二元素向量 [low high] 形式指定显示范围。

imshow(RGB) 在图窗中显示真彩色图像 RGB

imshow(BW) 在图窗中显示二值图像 BW。对于二值图像,imshow 将值为 0(零)的像素显示为黑色,将值为 1 的像素显示为白色。


添加颜色条

        GUI 可以给图像添加颜色条控件,从而通过颜色条来判断图像中的数据数值。

imshow WIN7.png
colorbar


显示多帧图像

两种显示方式:

①在一个窗体中显示所有帧

②显示其中单独的某帧

创建多帧图像

montage - Display multiple image frames as rectangular montage. This MATLAB function displays all frames of a multiframe image array I.

 load mri
montage(D,map)

 单独显示第20帧

load mri
imshow(D(:,:,:,20))


显示动画

        movie命令从多帧图像中创建动画,但是这个命令只能处理索引图。

load mri
mov = immovie(D,map);
colormap(map), movie(mov)

immovie - 基于多帧图像制作影片
此 MATLAB 函数 从使用颜色图 cmap 的多帧索引图像 X 中的图像返回影片结构体数组 mov。


三维材质图像

        这种三维图像是指在三维图的表面显示二维图像。warp函数的功能是显示材质图像,所使用的技术是线性插值。

[x,y,z]=sphere;
A=imread('win7.png');
warp(x,y,z,A)
title(' win7.png')

warp(X,map)在一个简单的矩形表面上将带有颜色地图的索引图像X显示为纹理地图。

warp(I,n) 在一个简单的矩形表面上将具有n个层次的强度图像I作为纹理图显示出来。

warp(BW)将二值图像BW作为纹理图显示在一个简单的矩形表面上。

warp(RGB)将真彩色图像RGB作为纹理图显示在一个简单的矩形表面上。
warp(Z,___) 在Z面上显示图像。
warp(X,Y,Z,____)将图像显示在表面(X,Y,Z)上。

h = warp(___) 返回一个到纹理映射表面的句柄。 


图像的直方图

        可以对RGB图、灰度图和二值图进行灰度转换,其中,灰度图和二值图的直方图表示不同。imhist

[counts,binLocations] = imhist(I) 计算灰度图像 I 的直方图。imhist 函数在 counts 中返回直方图计数,在 binLocations 中返回 bin 位置。直方图中 bin 的数量由图像类型确定。

[counts,binLocations] = imhist(I,n) 指定用于计算直方图的 bin 的数量 n

[counts,binLocations] = imhist(X,map) 计算具有颜色图 map 的索引图像 X 的直方图。对于颜色图中的每个条目,直方图中都有一个对应的 bin。

imhist(___) 显示绘制的直方图。如果输入图像是索引图像,则直方图在颜色图 map 的颜色条上方显示像素值分布。

I = imread('pout.tif');
clear all
clc
I = imread('pout.tif');
subplot(2,1,1),
imshow(I),
title('pout ');
subplot(2,1,2),
imhist(I),
title('直方图');


灰度变换

        灰度变换的主要功能是改变图像的对比度imadjust

imadjust:调整图像强度值或颜色图

J = imadjust(I) 将灰度图像 I 中的强度值映射到 J 中的新值。默认情况下,imadjust 对所有像素值中最低的 1% 和最高的 1% 进行饱和处理。此运算可提高输出图像 J 的对比度。

J = imadjust(I,[low_in high_in]) 将 I 中的强度值映射到 J 中的新值,以使 low_in 和 high_in 之间的值映射到 0 到 1 之间的值。

J = imadjust(I,[low_in high_in],[low_out high_out]) 将 I 中的强度值映射到 J 中的新值,以使 low_in 和 high_in 之间的值映射到 low_out 到 high_out 之间的值。

J = imadjust(I,[low_in high_in],[low_out high_out],gamma) 将 I 中的强度值映射到 J 中的新值,其中 gamma 指定描述 I 和 J 中的值之间关系的曲线形状。

J = imadjust(RGB,[low_in high_in],___) 将真彩色图像 RGB 中的值映射到 J 中的新值。您可以为每个颜色通道应用相同的映射或互不相同的映射。

newmap = imadjust(cmap,[low_in high_in],___) 将颜色图 cmap 中的值映射到 newmap 中的新值。您可以为每个颜色通道应用相同的映射或互不相同的映射。

I = imread('pout.tif');
J = imadjust(I, [0.3,0.7], []);
subplot(2,2,1),imshow(I),title('灰度图pout');
subplot(2,2,2),imhist(I), title('调整前的直方图');
subplot(2,2,3),imshow(J),title('调整后的灰度图pout');
subplot(2,2,4),imhist(J), title('调整后的直方图');


均衡直方图

        根据图像直方图自动给出灰度变换函数,使得调整后的图像的直方图能尽可能接近预定定义的直方图,利用histeq对灰度图和索引图做直方图均衡。

J = histeq(I,hgram) 变换灰度图像 I,以使输出灰度图像 J 具有 length(hgram) 个 bin 的直方图近似匹配目标直方图 hgram

J = histeq(I,n) 变换灰度图像 I,以使输出灰度图像 J 具有 n 个 bin 的直方图大致平坦。当 n 远小于 I 中的离散灰度级数时,J 的直方图更平坦。

J = histeq(I) 变换灰度图像 I,以使输出灰度图像 J 的直方图具有 64 个 bin 且大致平坦。

newmap = histeq(X,map) 变换颜色图中的值,以使索引图像 X 的灰度分量的直方图大致平坦。变换后的颜色图是 newmap

newmap = histeq(X,map,hgram) 变换与索引图像 X 相关联的颜色图,以使索引图像 (Xnewmap) 的灰度分量直方图近似匹配目标直方图 hgramhisteq 函数返回变换后的颜色图 newmaplength(hgram) 必须与 size(map,1) 相同。

[___,T] = histeq(___) 还返回变换 T,该变换将输入灰度图像或颜色图的灰度分量映射到输出灰度图像或颜色图的灰度分量。

I= imread('pout.tif');
J = histeq(I);
 figure(1),
subplot(1,2,1),
imshow(I),
title('调整前');
subplot(1,2,2),
imshow(J),
title('调整后');


图像处理应用


图像增强

        图像增强技术主要包括直方图修改处理、图像平滑化处理、图像尖锐化处理和彩色处理技术等。

%利用直方图统计算法对灰度图像进行增强
clear all 
clc
I=imread('cameraman.tif');
subplot(2,2,[1,2])
imshow(I);
title('原始图像');
subplot(2,2,3)
imhist(I,64)  %绘制图像的直方图,n为灰度图像灰度级;     
title('灰度级64的直方图');
subplot(2,2,4)
imhist(I,256)  %绘制图像的直方图,n为灰度图像灰度级;     
title('灰度级256的直方图');


图像重建

        利用phantom函数产生的大脑图,对于不同投影角度,重建图像。

 phantom - Create head phantom image
    This MATLAB function generates an image of a head phantom that can be used to test the numerical accuracy of radon and iradon or other two-dimensional reconstruction algorithms.

P = phantom(def,n)  

P是一个灰度图像,由一个大椭圆(代表大脑)组成,包含几个小椭圆(代表大脑中的特征)。 def指定要生成的头部幻影的类型,n指定幻影图像中的行和列的数量。

R = radon(I) 返回二维灰度图像 I 的 Radon 变换 R,角度范围为 [0, 179] 度。Radon 变换是图像强度沿特定角度的径向线的投影。

R = radon(I,theta) 返回基于 theta 所指定角度的 Radon 变换。

[R,xp] = radon(___) 返回向量 xp,其中包含与图像的每行对应的径向坐标。

iradon - 反radon变换

I = iradon(R,theta) 从R中以投影角theta捕获的投影数据重建图像I。

I = iradon(R,theta,interp,filter,frequency_scaling,output_size) 指定用于反Radon变换的参数。可以指定后四个参数的任何组合。对于你省略的参数,iradon使用默认值。

[I,H] = iradon(___) 还返回滤波器的频率响应,H。

imagesc - 使用缩放颜色显示图像

imagesc(C) 将数组 C 中的数据显示为一个图像,该图像使用颜色图中的全部颜色。C 的每个元素指定图像的一个像素的颜色。生成的图像是一个 m×n 像素网格,其中 m 和 n 分别是 C 中的行数和列数。这些元素的行索引和列索引确定了对应像素的中心。

示例

imagesc(x,y,C) 指定图像位置。使用 x 和 y 可指定与 C(1,1) 和 C(m,n) 对应的边角的位置。要同时指定两个边角,请将 x 和 y 设置为二元素向量。要指定第一个边角并让 imagesc 确定另一个,请将 x 和 y 设为标量值。图像将根据需要进行拉伸和定向。

clear all
clc 
%用phantom函数产生Sheep-Logan的大脑图
P=phantom('Modified Shepp-Logan',200);
imshow(P)
title('原始图像')
%以下为三种不同角度的投影模式
theta1=0:10:190;
[R1,xp]=radon(P,theta1);   %存在20个角度投影
theta2=0:5:195;
[R2,xp]=radon(P,theta2);    %存在40个角度投影
theta3=0:2:178;
[R3,xp]=radon(P,theta3);    %存在90个角度投影
figure(1)
subplot(2,3,[1,2,3]);
imagesc(theta3,xp,R3);
colormap(hot);
colorbar;
%显示图像Sheep-Logan的radon变换
title('经radon变换后的图像')
xlabel('\theta');
ylabel('x\prime');     %定义坐标轴
%用三种情况的逆radon变换来重建图像
I1=iradon(R1,8);
I2=iradon(R2,8);
I3=iradon(R3,8);
subplot(2,3,4);
imshow(I1)
title('投影角度20个')
subplot(2,3,5);
imshow(I2)
title('投影角度40个')
subplot(2,3,6);
imshow(I3)
title('投影角度90个')


图像变换

        为了用正交函数或正交矩阵表示图像而对原图像进行二维线性可逆变换时,一般称原始图像为空间域图像,称变换后的图像为转换域图像,转换域图像可反变换为空间域图像。图像处理过程中用的变换都是酉变换即变换和满足正交条件的变换,更有利于特征抽取,增强,压缩和图像编码。

clear all 
clc
%%%%%%%%%%分辨率为100%%%%%%%%%
figure(1)                 %创建窗口的图形对象,句柄为1
subplot(2,2,1)
N=100;                    %分辨率
f=zeros(50,50);           %产生一个50*50的全0数组
f(15:35,23:28)=1;       
%定义图像数组,从15行到35行,23列到28列附值为1,为白色,其他区域为黑色
imshow(f)                %显示图像
title('原始图像(分辨率100)');
F=fft2(f,N,N);           %在二维傅立叶变换前把f截断或者添加0,使其成为N*N的数组
subplot(2,2,2)
imshow(F,[-1,5]);
title('二维快速傅立叶变换后的图像');
subplot(2,2,[3,4])
F2=fftshift(abs(F));     %把傅立叶变换的零频率部分移到频谱的中间
x=1:N;
y=1:N;            %定义x和y的范围
mesh(x,y,F2(x,y));%绘制立体网状图,将图形对象的色度改为灰度图像
title('傅里叶变换后零频率部分移到频谱中间');
colormap(gray);
colorbar 

图像压缩

①DCT压缩

        DCT不能直接对图像产生压缩作用,但是对图像的能量有很好的集中效果,为压缩打下了基础。

clear all
clc
I=imread('cameraman.tif');
figure(1)
subplot(1,2,1)
imshow(I);
title('原始图像')
disp('原始图像大小:')
whos('I')
I=im2double(I);
%图像类型存储转换,将图像矩阵转换成双精度类型
T=dctmtx(8);
%离散余弦变换矩阵
B=blkproc(I,[8 8],'P1*x*P2',T,T');
mask=[1 1 1 1 0 0 0 0
          1 1 1 0 0 0 0 0
          1 1 0 0 0 0 0 0
          1 0 0 0 0 0 0 0
          0 0 0 0 0 0 0 0
          0 0 0 0 0 0 0 0
          0 0 0 0 0 0 0 0
          0 0 0 0 0 0 0 0];
B2=blkproc(B,[8 8],'P1.*x',mask);
I2=blkproc(B2,[8 8],'P1*x*P2',T',T);
subplot(1,2,2)
imshow(I2);
title('压缩后的图像')
disp('压缩图像的大小:')
whos('I2')

②小波变换


图像分割

        把一个阵列划分成若干不交叠区域。遗传算法/贝叶斯算法。


图像边缘检测

        Sobel算子主要用于获得数字图像的一节梯度,常见应用是边缘检测。

edge - 查找图像强度的边缘

BW = edge(I) 返回二值图像 BW,其中的值 1 对应于灰度或二值图像 I 中函数找到边缘的位置,值 0 对应于其他位置。默认情况下,edge 使用 Sobel 边缘检测方法。

BW = edge(I,method) 使用 method 指定的边缘检测算法检测图像 I 中的边缘。

BW = edge(I,method,threshold) 返回强度高于 threshold 的所有边缘。

BW = edge(I,method,threshold,direction) 指定要检测的边缘的方向。Sobel 和 Prewitt 方法可以检测垂直方向和/或水平方向的边缘。Roberts 方法可以检测与水平方向成 45 度角和/或 135 度角的边缘。仅当 method 是 'Sobel''Prewitt' 或 'Roberts' 时,此语法才有效。

clear all 
clc 
I=imread('cameraman.tif');
figure(1)
subplot(2,3,1)
imshow(I)
title('原始图像')
BW=edge(I,'sobel');  
%以自动域值选择法对图像进行Sobel算子边缘检测
subplot(2,3,2)
imshow(BW);
title('边缘检测')
[BW,thresh]=edge(I,'sobel');  
%返回当前Sobel算子边缘检测的域值
disp('sobel算子自动选择的域值为:')
disp(thresh)
BW1=edge(I,'sobel',0.02,'horizontal');  
%以域值为0.02水平方向对图像进行Sobel算子边缘检测
subplot(2,3,3)
imshow(BW1)
title('水平方向域值0.02')
BW2=edge(I,'sobel',0.02,'vertical');
%以域值为0.02垂直方向对图像进行Sobel算子边缘检测
subplot(2,3,4)
imshow(BW2)
title('垂直方向域值0.02')
BW3=edge(I,'sobel',0.05,'horizontal');
%以域值为0.05水平方向对图像进行Sobel算子边缘检测
subplot(2,3,5)
imshow(BW3)
title('水平方向域值0.05')
BW4=edge(I,'sobel',0.05,'vertical');
%以域值为0.05垂直方向对图像进行Sobel算子边缘检测
subplot(2,3,6)
imshow(BW4)
title('垂直方向域值0.05') 

% sobel算子自动选择的阈值为:0.1433


图像识别

        模板匹配模型

人脸识别算法

clear all
clc 
%获取RGB图片
i=imread('face.jpg');
I=rgb2gray(i);
BW=im2bw(I);
figure(1)
imshow(BW)
%最小化背景
[n1 n2]=size(BW);
r=floor(n1/10);
c=floor(n2/10);
x1=1;x2=r;
s=r*c;

for i=1:10
    y1=1;y2=c;
    for j=1:10
        if (y2<=c | y2>=9*c) | (x1==1 | x2==r*10)
            loc=find(BW(x1:x2, y1:y2)==0);
            [o p]=size(loc);
            pr=o*100/s;
            if pr<=100
                BW(x1:x2, y1:y2)=0;
                r1=x1;r2=x2;s1=y1;s2=y2;
                pr1=0;
            end
            imshow(BW);
        end
            y1=y1+c;
            y2=y2+c;
    end
    
 x1=x1+r;
 x2=x2+r;
end
figure(2)
subplot(1,2,1);
imshow(BW)
title('图像处理')
%人脸识别
L = bwlabel(BW,8);
BB  = regionprops(L, 'BoundingBox');
BB1=struct2cell(BB);
BB2=cell2mat(BB1);

[s1 s2]=size(BB2);
mx=0;
for k=3:4:s2-1
    p=BB2(1,k)*BB2(1,k+1);
    if p>mx & (BB2(1,k)/BB2(1,k+1))<1.8
        mx=p;
        j=k;
    end
end
subplot(1,2,2);
title('人脸识别')
imshow(I);
hold on;
rectangle('Position',[BB2(1,j-2),BB2(1,j-1),BB2(1,j),BB2(1,j+1)],'EdgeColor','r' )

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

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

相关文章

化繁为简,在线表单工具值得一试!

在办公职场中&#xff0c;经常听到不少人抱怨&#xff1a;表单制作效率低、数据整理麻烦等&#xff0c;这个时候不少办公职员是多么希望能有一整套完善的表单制作工具来满足办公需求&#xff0c;快速提升办公协作效率。不要着急&#xff0c;如今是产业分工新时代&#xff0c;在…

Linux终端环境下的浏览器Lynx和Carbonyl 的基本使用方法

一、Carbonyl 是基于Chromium开发的运行于终端下的现代版浏览器&#xff0c;比Lynx的功能更好&#xff0c;目前尚在滚动开发过程中&#xff0c;但也基本可以用了。 1. 2安装非常简单&#xff0c;下载Binaries&#xff0c;Docker&#xff0c;nmp install, 都可以。 注意&#…

智能电表怎么实现远程抄表

智能电表是一种新型的电表&#xff0c;它可以实现远程抄表的功能。智能电表的远程抄表是通过无线网络或有线网络来实现的&#xff0c;这使得抄表变得更加方便和快捷。本文将介绍智能电表如何实现远程抄表的技术原理和实现方法。 一、技术原理 智能电表的远程抄表是通过将电表与…

定了 香港新政6月1日生效 散户交易加密货币正式合法化!

如今&#xff0c;香港虚拟资产交易的各项准备工作已准备就绪。5月23日&#xff0c;香港证监会&#xff08;SFC&#xff09;详细介绍了各界参与虚拟资产交易的咨询总结文件&#xff0c;宣布《适用于虚拟资产交易平台营运者的指引》将于2023年6月1日生效。 SFC行政总裁梁凤仪表示…

2023 最全 Java 面试八股(涵盖所有 Java 核心面试知识点),立刻收藏

2022 已成为过去式&#xff0c;不论这一年好与坏&#xff0c;我们都需要抓住新一年的机会&#xff0c;跳槽涨薪&#xff0c;还是学习提升&#xff01;先给自己定一个小目标&#xff0c;然后再朝着目标去努力就完事儿了&#xff01;为了帮大家节约时间&#xff0c;给大家搞来了 …

2023 华为 Datacom-HCIE 题库 02--含解析

单选题 1.[试题编号&#xff1a;189785] &#xff08;单选题&#xff09;如图所示&#xff0c;VTEP1上在BD20域内开启了ARP广播抑制功能&#xff0c;并且VTEP1通过 BGP EVPN路由学习到了PC2的ARP信息&#xff0c;则PC1发送的针对PC2的ARP请求&#xff0c;VIEP1在转发给VIEP2时…

SpringCloud(23):Sentinel对Spring Cloud Gateway的支持

代码地址&#xff1a;https://download.csdn.net/download/u013938578/87767363 从 1.6.0 版本开始&#xff0c;Sentinel 提供了 Spring Cloud Gateway 的适配模块&#xff0c;可以提供两种资源维度的限流&#xff1a; route 维度&#xff1a;即在 Spring 配置文件中配置的路…

ChatGPT 入门教程||ChatGPT 应用场景1:让AI回答问题||ChatGPT应用场景2:基于已有的示例回答

ChatGPT 应用场景1&#xff1a;让AI回答问题 这个场景应该是使用 AI 产品最常见的方法。以 ChatGPT 为例&#xff0c;一般就是你提一个问题&#xff0c;ChatGPT 会给你答案&#xff0c;比如像这样&#xff1a; 在这个场景下&#xff0c;prompt 只要满足前面提到的基本原则&am…

通过opencv与神经网络对滑动验证码的一次深入学习

好久没写博客了&#xff0c;人到中年&#xff0c;有点儿犯懒。 从信息安全行业&#xff0c;又去了IT合规领域&#xff0c;与信息安全结合还是两手抓&#xff0c;两手都不硬。 由于工作原因&#xff0c;需要获取一个token来请求接口&#xff0c;奈何没有现成的接口&#xff0c…

记一次Android页面卡顿排查总结

背景&#xff1a;更新完gosdk&#xff08;端上的主要逻辑在go层完成&#xff09;后&#xff0c;冷启动时首页明显会卡一下 问题排查&#xff1a; 1、通过在application onCreate()中设置getMainLooper().setMessageLogging(new LxLogPainter());来查看耗时的日志&#xff0c;…

cfssl使用方法重新整理说明

下载安装&#xff1a; #下载cfssl、cfssl-json、cfssl-certinfo文件 wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -O /usr/bin/cfssl wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -O /usr/bin/cfssljson wget https://pkg.cfssl.org/R1.2/cfssl-certinfo…

低代码开发:构建企业数字化生态系统的秘密武器!

目前&#xff0c;我们正处于数字化时代&#xff0c;而企业数字化早已是大势所趋&#xff0c;也是因为企业数字化转型是提高企业效率与竞争力的必经之路。 发展背景 近年来&#xff0c;伴随着人工智能、大数据分析技术、云计算等领域的迅速发展&#xff0c;不少企业开始正视数字…

【How to Design Translation Prompts for ChatGPT: An Empirical Study 论文略读】

How to Design Translation Prompts for ChatGPT: An Empirical Study 论文略读 INFORMATIONAbstract1 Introduction2 Background3 Experiments3.1 Prompt Design3.2 Experimental Setup3.2.1 Datasets3.2.2 Baselines and Evaluation Metrics 3.3 Multilingual Translation3.4…

接入支付宝沙箱环境

1、这里有几个重要数据要拿到&#xff0c;一个是支付宝的公钥和私钥&#xff0c;一个是支付的网关&#xff0c;和支付的APPID。这几个数据是要写到代码中的 官方手册&#xff1a;文档地址 1.1 配置沙箱应用环境 https://openhome.alipay.com/develop/sandbox/app 1.2 配置接口…

Git忽略文件的几种方法,以及.gitignore文件的忽略规则

Git忽略文件的几种方法&#xff0c;以及.gitignore文件的忽略规则 .gitignore文件定义Git全局的.gitignore文件Git 忽略规则Git忽略规则的优先级.gitignore文件忽略规则常用匹配示例&#xff1a; 关于.gitignore规则不生效的问题 不忽略没有后缀名的文件搜索电脑里没有后缀的文…

请问你如何理解以下的歌词“unravel - TK from 凛冽时雨 (TK from 凛として時雨)为什么很多人说崖山海战以后无中国

目录 请问你如何理解以下的歌词“unravel - TK from 凛冽时雨 (TK from 凛として時雨) 为什么很多人说崖山海战以后无中国 请问你如何理解以下的歌词“unravel - TK from 凛冽时雨 (TK from 凛として時雨) 以下是我对《unravel - TK from 凛冽时雨》这首歌词的理解&#xff1…

Hadoop部署伪分布式

伪分布式模式也是只需要一台机器&#xff0c;但是与本地模式的不同&#xff0c;伪分布式使用的是分布式的思想&#xff0c;具有完整的分布式文件存储和分布式计算的思想。只不过在进行存储和计算的时候涉及到的相关的守护进程都运行在同一台机器上&#xff0c;都是独立的Java进…

《LKD3粗读笔记》(15)进程地址空间

进程地址空间&#xff1a;内核除了管理本身的内存外&#xff0c;还必须管理用户空间中进程的内存&#xff0c;这个内存就是进程地址空间&#xff0c;即系统中每个用户空间进程所看到的内存。Linux操作系统采用虚拟内存技术&#xff0c;系统中的所有进程之间以虚拟方式共享内存。…

面试都不会造火箭,还想拿20k,过于离谱

前段时间公司缺人&#xff0c;也面了许多测试&#xff0c;一开始瞄准的就是中级水准&#xff0c;当然也没指望能来大牛&#xff0c;提供的薪资在15-20k这个范围&#xff0c;来面试的人有很多&#xff0c;但是平均水平真的让人很失望。看了简历很多上面都是写有4年工作经验&…

iOS App外包开发的内存泄露解决

在iOS应用开发中&#xff0c;内存泄露是一个常见的问题。内存泄露会导致应用程序占用越来越多的内存&#xff0c;最终可能导致应用程序崩溃。为了解决这个问题&#xff0c;可以使用以下工具和方法来查找和修复内存泄露。今天和大家分享这方面的知识&#xff0c;希望对大家有所帮…