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

【iOS】UI学习(一)

UI学习(一)

  • UILabel
  • UIButton
    • UIButton事件
  • UIView
    • UIView对象的隐藏
    • UIView的层级关系
  • UIWindow
  • UIViewController
    • 定时器与视图对象
  • UISwitch

UILabel

UILabel是一种可以显示在屏幕上,显示文字的一种UI。
下面使用代码来演示UILabel的功能

@implementation ViewController- (void)createUI
{UILabel* label = [[UILabel alloc] init];//显示的文字label.text = @"燕子,没有你我怎么活啊";//label显示的位置label.frame = CGRectMake(10, 300, 350, 200);//label的背景颜色label.backgroundColor = [UIColor greenColor];//整个屏幕的背景颜色self.view.backgroundColor = [UIColor redColor];//将label显示在屏幕上[self.view addSubview:label];//label中文字的大小,标准大小34label.font = [UIFont systemFontOfSize:34];//label中文字阴影的颜色label.shadowColor = [UIColor grayColor];//阴影的偏移位置label.shadowOffset = CGSizeMake(3, 0);//label中文字显示的行数,当等于0时,系统自行判断显示多少行合适label.numberOfLines = 0;//label中文字的颜色label.textColor = [UIColor whiteColor];//默认文字在label中靠左显示,这里将文字改为在label中间显示label.textAlignment = NSTextAlignmentCenter;}- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view.[self createUI];
}@end

CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height):返回了一个结构体CGRect,GRect结构在屏幕上定义了一个矩形,它包含和大小。
它是用来定义一个矩形的,CGFloat x是对应屏幕的横向(x坐标), CGFloat y对应就是纵向(y坐标)。这里注意一点,描点是从屏幕的左上方开始的。
NSTextAlignmentLeft/Center/Right :文字靠左、居中、靠右。

效果图
在这里插入图片描述

UIButton

@implementation ViewController-(void) createUIRectButton
{UIButton* btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];btn.frame = CGRectMake(20, 300, 300, 50);btn.backgroundColor = [UIColor greenColor];//向按钮普通状态添加文字[btn setTitle:@"按钮01" forState:UIControlStateNormal];//向按钮高亮状态提供文字[btn setTitle:@"按钮01已按下" forState:UIControlStateHighlighted];//设置按钮文字普通状态的颜色[btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];//设置按钮高亮状态文字的颜色[btn setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];//设置文字的字体大小btn.titleLabel.font = [UIFont systemFontOfSize:24];//下面又定义了一个按钮UIButton* btn2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];btn2.frame = CGRectMake(50, 150, 300, 50);btn2.backgroundColor = [UIColor brownColor];[btn2 setTitle:@"按钮02" forState:UIControlStateNormal];[btn2 setTitle:@"按钮02已按下" forState:UIControlStateHighlighted];[btn2 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];[btn2 setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];btn2.titleLabel.font = [UIFont systemFontOfSize:24];btn.tag = 123;btn2.tag = 321;//UIButton事件[btn addTarget:self action:@selector(action01:) forControlEvents:UIControlEventTouchUpInside];[btn2 addTarget:self action:@selector(action01:) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:btn];[self.view addSubview:btn2]
}-(void)action01:(UIButton*) btn
{if(btn.tag == 123){NSLog(@"玛卡巴卡");} else if(btn.tag == 321){NSLog(@"汤姆布利波");}
}-(void)creatBtn
{UIButton* btnp = [UIButton buttonWithType:UIButtonTypeCustom];//UIButton* btno1 = [UIButton buttonWithType:UIButtonTypeCustom];btnp.frame = CGRectMake(20, 400, 400, 400);//加载两张图片,imageNamed后是图片名,要加图片类型UIImage* ima1 = [UIImage imageNamed:@"im1.jpg"];UIImage* ima2 = [UIImage imageNamed:@"im2.jpg"];//为图片按钮设置当状态不同呈现的图片[btnp setImage:ima1 forState:UIControlStateNormal];[btnp setImage:ima2 forState:UIControlStateHighlighted];[self.view addSubview:btnp];//UIButton事件[btn addTarget:self action:@selector(action01:) forControlEvents:UIControlEventTouchUpInside];}-(void) action02
{NSLog(@"Don't fukin touch it");
}- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view.[self createUIRectButton];[self creatBtn];
}@end

效果图
在这里插入图片描述

UIButton事件结果:
在这里插入图片描述

UIButton事件

  • addTarget:selfaction:@selector(action02)forControlEvents:UIControlEventTouchUpInside]:向按钮添加事件的函数,当函数满足第三处要求时,执行第二处的方法。
  • UIControlEventTouchUplnside:当目标在控件内部结束触摸屏幕并松开时(在按钮范围内),会触发该事件。
  • UIControlEventTouchUpOutside:当目标在控件内部结束触摸屏幕并松开时(在按钮范围外结束),会触发该事件。
  • UIControlEventTouchDown:当目标在控件内部开始触摸屏幕(按钮)时,触发该事件。
  • 可以一个事件控制几个按钮,例如程序中的玛卡巴卡和汤姆布利波,这里为了区分两个按钮,使用btn.tag区分两个按钮,也可以一个按钮触发多个事件。

UIView

UIView

  • 是iOS的视图对象
  • 是所有显示在屏幕上的基础类。
  • 所有显示在屏幕上的对象,都继承于UIView
  • UIView有背景颜色,矩形对象,有层级关系

示例程序

@implementation ViewController-(void) create
{//创建一个UIView对象UIView* view = [[UIView alloc] init];view.frame = CGRectMake(80, 200, 100, 100);view.backgroundColor = [UIColor redColor];//将视图做为父视图的子视图管理起来[self.view addSubview:view];//view1.backgroundColor = [UIColor greenColor];//[self.view addSubview:view1];
}- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view.[self create];
}@end

效果图
在这里插入图片描述

UIView对象的隐藏

    view.hidden = NO;//YES即为隐藏视图,NO反之view1.alpha = .5;//透明度,1为完全不透明,0为完全透明view.opaque = NO;//设置是否显示不透明[view1 removeFromSuperview];//

上面是四种隐藏UIView对象的方法:

  • hidden:YES时即为隐藏视图,NO反之(默认为NO)。
  • alpha: 设置透明度,1为完全不透明,0为完全透明,半透明时会显示父类对象的底色。
  • removeSuperview:将自己从父类视图的管理中删除掉,也就不会显示在屏幕上

UIView的层级关系

示范程序

@implementation ViewController-(void) create
{UIView* view = [[UIView alloc] init];view.frame = CGRectMake(100, 100, 100, 100);view.backgroundColor = [UIColor redColor];UIView* view1 = [[UIView alloc] init];view1.frame = CGRectMake(125, 125, 100, 100);view1.backgroundColor = [UIColor greenColor];UIView* view2 = [[UIView alloc] init];view2.frame = CGRectMake(150, 150, 100, 100);view2.backgroundColor = [UIColor blueColor];//谁先被添加谁先绘制[self.view addSubview:view];[self.view addSubview:view1];[self.view addSubview:view2];//将某一个视图调整到最前面来[self.view bringSubviewToFront:view];//把某一个调整到最后[self.view sendSubviewToBack:view];//subviews是管理self.view的子视图的数组UIView* viewfront = self.view.subviews[2];UIView* viewback = self.view.subviews[0];if(viewfront == view2) {NSLog(@"相等");}
}- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view.[self create];
}
  • 当层级重叠时,谁先被添加就先绘制谁
  • bringSubviewToFront:把某个层级移动最上层。
  • sendSubviewToBack把某个层级移到最下层。
  • subviews管理self.view的子视图的数组。

运行结果在这里插入图片描述
在这里插入图片描述

UIWindow

注意:
老版本UIWindow的代码是写在“AppDelegate.m”中的。但是现在都不在这里写了,现在写到SceneDelegate.m里面,而且UIWindow对象不需要你手动创建了。

一个UIWindow对象为应用程序的用户界面提供了背景以及重要的事件处理行为。
UIWindow继承自UIView,每一个view,想要出现在屏幕上都依赖于window,但是程序中的window之间是相互独立的。应用程序收到事件之后会先转发给适当的window对象,从而又将事件转发给view对象。

具体来说,UIWindow有以下几个主要功能:

  • 视图层次结构视图:
    UIWindow是应用程序的层次结构视图,其整体视图是附属于UIWindow子视图。
    当应用程序启动时,系统会自动创建一个UIWindow实例并将其设置为应用程序的主窗口。
  • 接收和分发事件:
    UIWindow负责接收来自用户的输入事件,例如触摸事件、按键事件等。
    UIWindow会根据视图层次结构将这些事件分配给合适的视图进行处理。
  • 管理视图控制器:
    UIWindow可以持有一个根基健全的模型,特别是一个UIViewController实例。
  • 多窗口支持:
    特定特殊场景下,例如iPad的分屏,应用程序可以创建多个UIWindow实例。
    每个UIWindow都有自己的视点层次结构,相互独立。
  • 状态栏管理:
    UIWindow负责管理应用程序的状态栏,例如电池电量、网络信号等图标的显示。

示例代码

- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {//创建一个视图跟踪器作为UIWindow的根视控制器self.window.rootViewController = [[UIViewController alloc] init];//设置window的颜色self.window.backgroundColor = [UIColor blueColor];//将window有效的显示在屏幕上[self.window makeKeyAndVisible];//直接给UIWindow上添加视图UIView* view = [[UIView alloc] initWithFrame:CGRectMake(100, 200, 50, 50)];view.backgroundColor = [UIColor greenColor];UIView* backview = [[UIView alloc] initWithFrame:CGRectMake(50, 200, 300, 300)];backview.backgroundColor = [UIColor redColor];[self.window addSubview:backview];//子视图的坐标会随着父视图的坐标改变而改变[backview addSubview:view];//打印不同对象的window属性,可以看出他们是同一个windowNSLog(@"%@", view.window);NSLog(@"%@", backview.window);NSLog(@"%@", self.window);
}

打印结果
在这里插入图片描述
效果图
在这里插入图片描述

UIViewController

UIViewController是一个视图控制器,在整个UIKit中只有一个根视图控制器,属于window的属性。视图控制器用来管理界面和处理界面的逻辑类对象,程序启动前必须对根视图控制器赋值。

先新建一个View02类

#import "View02.h"@interface View02 ()@end@implementation View02- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view.//给视图控制器设置背景颜色self.view.backgroundColor = [UIColor greenColor];
}- (void) touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {//使当前的控制器消失掉,传入两个参数//第一个参数指是否有动画效果//第二个参数指结束后是否调用block块操作,不需要为nil[self dismissViewControllerAnimated: YES completion: nil];
}/*
#pragma mark - Navigation// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {// Get the new view controller using [segue destinationViewController].// Pass the selected object to the new view controller.
}
*/@end
#import "ViewController.h"
#import "View02.h"@interface ViewController ()@end@implementation ViewController-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{//创建视图控制器二View02* vc= [[View02 alloc] init];//显示一个新的视图控制器界面到屏幕上来//第一个参数:新的视图控制器//第二个参数:是否是用动画切换效果//第三个参数:切换后是否使用block块,不使用为nil[self presentViewController:vc animated:YES completion:nil];
}//当视图控制器第一次被加载视图时,调用此函数。
//当布局初始化视图来使用。
- (void)viewDidLoad {//默认情况下调用父类的加载视图函数[super viewDidLoad];// Do any additional setup after loading the view.UIView* view = [[UIView alloc] init];view.backgroundColor = [UIColor greenColor];view.frame = CGRectMake(100, 100, 100, 200);self.view.backgroundColor = [UIColor redColor];[self.view addSubview:view];
}
//视图即将显示,调用此函数
//参数:表示是否用动画切换后消失
//当前的状态:视图还没有显示
-(void) viewWillAppear:(BOOL)animated
{NSLog(@"即将显示");
}//视图即将消失,调用此函数
//参数:表示是否用动画切换后消失
//当前的状态:视图还是在屏幕上
-(void) viewWillDisappear:(BOOL)animated
{NSLog(@"即将消失");
}-(void) viewDidAppear:(BOOL)animated
{NSLog(@"已经显示");
}-(void) viewDidDisappear:(BOOL)animated
{NSLog(@"已经消失");
}@end

效果图
在这里插入图片描述

点击后效果图
在这里插入图片描述

定时器与视图对象

定时器对象

  • 可以在每个固定时间发送一个消息
  • 通过此函数可在固定时间段来完成一个根据时间间隔的任务
  • 通过此消息来调用相应的时间函数

接口部分

#import <UIKit/UIKit.h>@interface ViewController : UIViewController {//定义一个定时器对象//可以在每个固定时间发送一个消息//通过此消息来调用相应的时间函数//通过此函数可在固定时间段来完成一个根据时间间隔的任务NSTimer* _timerView;
}@property (retain, nonatomic) NSTimer* timerView;
@end

实现部分

#import "ViewController.h"@interface ViewController ()@end@implementation ViewController
//属性和成员变量的同步
@synthesize timerView = _timerView;- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view.//启动定时器按钮UIButton* btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];btn.frame = CGRectMake(100, 100, 80, 40);[btn setTitle:@"启动定时器" forState:UIControlStateNormal];[btn addTarget:self action:@selector(pressStart) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:btn];//停止定时器按钮UIButton* btnstop = [UIButton buttonWithType:UIButtonTypeRoundedRect];btnstop.frame = CGRectMake(100, 200, 80, 40);[btnstop setTitle:@"停止定时器" forState:UIControlStateNormal];[btnstop addTarget:self action:@selector(pressStop) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:btnstop];UIView* view = [[UIView alloc] init];view.backgroundColor = [UIColor greenColor];view.frame = CGRectMake(0, 0, 80, 80);[self.view addSubview:view];//设置view的标签值//通过父亲视图对象以及view的标签值可以获得相应的视图对象view.tag = 111;}
-(void) pressStart
{//NSTtimer类方法创建一个定时器并且启动这个定时器//P1:每隔多久调用定时器函数,以秒数为单位的整数(调用第三个参数)//P2:表示实现定时器函数的对象指针//P3:定时器函数对象//P4:可以传入定时器函数中一个参数,无参数可以传nil//P5:定时器是否重复操作;YES为重复;NO为只完成一次函数调用//返回值为一个新建好的定时器对象_timerView = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateTimer:) userInfo:@"美羊羊" repeats:YES];}//定时器函数
//可以将定时器本身做为参数传入
-(void) updateTimer:(NSTimer*) timer
{NSLog(@"开始啦,%@", timer.userInfo);UIView* view = [self.view viewWithTag:111];view.frame = CGRectMake(view.frame.origin.x + 1, view.frame.origin.y + 1, 80, 80);
}-(void) pressStop
{if(_timerView != nil) {[_timerView invalidate];}//[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(stop) userInfo:nil repeats:NO];//NSLog(@"停止啦");
}-(void) stop
{NSLog(@"停止啦");
}@end

效果图
在这里插入图片描述

UISwitch

  • UISwitch是一个开关控件,有开、关两种状态可以切换,是定义在UIKit库中的一个控件
  • 苹果官方的控件都定义在UIKit框架中,且UIKit框架中的所有控件都以UI开头
@interface ViewController : UIViewController {//定义一个开关控件//可以进行状态的改变//开:关:两种状态可以进行切换//所有UIKit框架库中的控件均以UI开头//苹果官方的控件都定义在UIKit框架中UISwitch* _myswitch;
}@property (retain, nonatomic) UISwitch* myswitch;@end
@implementation ViewController
//同步属性和成员变量
@synthesize myswitch = _myswitch;
- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view.//创建一个开关对象//继承与UIView_myswitch = [[UISwitch alloc] init];//苹果官方的控件的位置设置//位置X,Y的值可以改变,宽度和高度无法改变_myswitch.frame = CGRectMake(100, 200, 80, 40);//_myswitch.backgroundColor = [UIColor blueColor];//开关状态设置属性//YES:开启状态;NO:关闭状态_myswitch.on = YES;//也可以使用set函数//[_myswitch setOn:YES];//设置开关状态//P1:状态设置//P2:是否开启动画效果[_myswitch setOn:YES animated:YES];[self.view addSubview:_myswitch];//设置开启状态的风格颜色[_myswitch setOnTintColor:[UIColor redColor] ];//改变开关按钮的颜色[_myswitch setThumbTintColor:[UIColor blueColor]];//设置整体风格颜色//[_myswitch setTintColor:[UIColor purpleColor]];//向开关控件添加事件函数//每次改变的时候都会调用swChange函数[_myswitch addTarget:self action:@selector(swChange:) forControlEvents:UIControlEventValueChanged];//self.view.backgroundColor = [UIColor blueColor];
}-(void) swChange:(UISwitch*) sw
{if(sw.on == YES)NSLog(@"开关被打开");elseNSLog(@"开关被关上");
}@end

效果图
在这里插入图片描述
在这里插入图片描述

相关文章:

【iOS】UI学习(一)

UI学习&#xff08;一&#xff09; UILabelUIButtonUIButton事件 UIViewUIView对象的隐藏UIView的层级关系 UIWindowUIViewController定时器与视图对象 UISwitch UILabel UILabel是一种可以显示在屏幕上&#xff0c;显示文字的一种UI。 下面使用代码来演示UILabel的功能&#…...

如何使用Vue和Markdown实现博客功能

创建Vue项目和安装依赖 npm install -g @vue/cli vue create vue-blog cd vue-blog npm install vue-markdown-loader --save-dev配置Vue项目以解析Markdown 在 vue.config.js 文件中添加以下配置: module.exports = {chainWebpack: config => {config...

1初识C#

1、Console安慰 Console.WriteLine("Hello, world!"); // 输出 "Hello, world!" 并换行 Console.WriteLine(123.45); // 输出数字 123.45 并换行 Console.WriteLine("Name: " name); // 输出 "Name: [变量name的值]" 并换行 2、 C…...

查询指定会话免打扰

查询指定用户&#xff08;requestId) 为指定会话&#xff08;targetId&#xff09;的设置的免打扰状态。 提示 该设置为用户级别设置。对应的设置接口详见设置指定会话免打扰。 请求方法 POST&#xff1a; https://数据中心域名/conversation/notification/get.json 频率限…...

Linux-命令

添加权限方法及注意事项: 字母权限法很灵活,无论目录还是文件都可以随意添加删除超级权限 chmod us ... 添加SUID chmod gs ... 添加SGID chmod s ...同时添加SUID和SGID chmod -s ...同时删除SUID和SGID chmod ot ...添加Sticky chmod t ...同上 数字权限表示法添加/删除…...

STM32读写内部FLASH读取芯片id

文章目录 读写内部Flash接线程序编写测试效果补充 读取芯片id代码编写 读写内部Flash 接线 程序编写 首先使用ThisFlash.c来写入flash的基本操作&#xff0c;写入、读取、擦除&#xff0c;然后使用Store.c配合数组来进行主存与flash的交互 ThisFlash.c #include "stm32…...

前端npm打包及报错解决

前端npm install 安装node 下载地址 https://nodejs.org/en/download/prebuilt-binaries 配置环境变量 wget https://nodejs.org/dist/v14.21.3/node-v14.21.3-linux-x64.tar.xz tar xf node-v14.21.3-linux-x64.tar.xz -C /data/ vim /etc/profile export NODE_HOME/data/n…...

vbs执行报错vbs没有文件拓展,双击无法打开

如果看不到文件扩展名需要设置&#xff1a; 无法双击打开vbs 一般为注册表问题 解决办法 将下方代码保存为xxx.reg Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\.VBS] "VBSFile" [HKEY_CLASSES_ROOT.VBS\PersistentHandler] "{5e941d80-bf96-…...

超详细的前后端实战项目(Spring系列加上vue3)前端篇(二)(一步步实现+源码)

好了&#xff0c;兄弟们&#xff0c;继昨天的项目之后&#xff0c;开始继续敲前端代码&#xff0c;完成前端部分 昨天完成了全局页面的代码&#xff0c;和登录页面的代码&#xff0c;不过昨天的代码还有一些需要补充的&#xff0c;这里添加一下 内容补充&#xff1a;在调用登…...

【国产中颖】SH79F9202U单片机驱动LCD段码液晶学习笔记

1. 引言 因新公司之前液晶数显表产品单片机一直用的是 C51单片机(SH79F9202U9)&#xff0c;本人之前没有接触过这款单片机&#xff0c;为了维护老产品不得不重新研究研究这款单片机。 10位ADC LCD的增强型8051微控制器 SH79F9202是一种高速高效率8051可兼容单片机。在同样振…...

人工智能初识

&#x1f31e;欢迎来到人工智能基础的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由卿云阁原创&#xff01; &#x1f4c6;首发时间&#xff1a;&#x1f339;2024年5月1…...

【算法刷题day60】Leetcode:84. 柱状图中最大的矩形

文章目录 Leetcode 84. 柱状图中最大的矩形解题思路代码总结 草稿图网站 java的Deque Leetcode 84. 柱状图中最大的矩形 题目&#xff1a;84. 柱状图中最大的矩形 解析&#xff1a;代码随想录解析 解题思路 反方向接雨水。见上一篇文章 代码 class Solution {public int la…...

ThingsBoard物联网网关在智慧城市数据采集中的应用

智慧城市由监控中心、采集网关、前端采集设备、前端感应执行器组成。 为何选用ThingsBoard作为平台 监控中心为物联网平台&#xff0c;该平台包含云计算、大数据、人工智能、物联网、GIS、云安全等主要模块&#xff0c;具备数据采集、数据交换、超大规模计算、数据分析、数据应…...

Java中的打印流PrintStream 和 PrintWriter

PrintStream和PrintWriter在Java中都是用于打印输出的类&#xff0c;但它们之间存在一些明显的区别。以下是关于这两个类的详细解释和比较&#xff1a; PrintStream 基本特性 PrintStream是一个字节打印流&#xff0c;它继承自FilterOutputStream。 主要操作byte流&#xff0…...

【MATLAB源码-第217期】基于matlab的16QAM系统相位偏移估计HOS算法仿真,对比补偿前后的星座图误码率。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 高阶统计量&#xff08;HOS&#xff09;频偏估计算法 高阶统计量&#xff08;Higher Order Statistics, HOS&#xff09;频偏估计算法是一种先进的信号处理技术&#xff0c;广泛应用于现代数字通信系统中&#xff0c;以应对…...

C# CryptoStream流的详解与示例

在当今数字时代&#xff0c;数据安全变得越来越重要。保护敏感信息免受未授权访问是每个开发者的责任。在C#中&#xff0c;使用CryptoStream流可以方便地对数据进行加密和解密。本文将详细介绍C# CryptoStream库的用法、功能以及它如何对数据进行加密和解密。 一、CryptoStrea…...

Kubernetes 之 ReplicaSet

Kubernetes 之 ReplicaSet ReplicaSet 定义 ReplicaSet 是 Kubernetes 中的一种副本控制器&#xff0c;其主要作用是控制其管理的 Pod 的预设副本数量。它会持续监听这些 Pod 的运行状态&#xff0c;在Pod发生故障时执行重启策略&#xff0c;当 Pod 数量减少时会重新启动新的…...

转发和重定向

目录 是什么 转发&#xff08;Forwarding&#xff09; 概念 特点 实现方式 重定向&#xff08;Redirecting&#xff09; 概念 特点 实现方式 转发和重定向区别整理 转发和重定向的适用场景 转发&#xff08;Forwarding&#xff09; 重定向&#xff08;Redirect&am…...

源码部署ELK

目录 资源列表 基础环境 关闭防护墙 关闭内核安全机制 修改主机名 添加hosts映射 一、部署elasticsearch 修改limit限制 部署elasticsearch 修改配置文件 单节点 集群(3台节点集群为例) 启动 二、部署logstash 部署logstash 添加配置文件 启动 三、部署kiban…...

构造+模拟,CF1148C. Crazy Diamond

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1148C - Codeforces 二、解题报告 1、思路分析 题目提示O(5n)的解法了&#xff0c;事实上我们O(3n)就能解决&#xff0c;关键在于1&#xff0c;n的处理 我们读入数据a[]&#xff0c;代表初始数组…...

CAD二次开发(2)-将直线对象添加到CAD图形文件

1. 准备工作 创建一个类库项目&#xff0c;如下&#xff1a; 2. 分析Line对象 Line类的初始化方法和参数 using Autodesk.AutoCAD.DatabaseServices; Line line new Line();Line 继承Curve 继承Entity 继承DBObject 继承Drawable 继承RXObject 初始化方法有两个&#xf…...

代码随想录二刷 Day05 | 242.有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和,454.四数相加II,383. 赎金信

题目与题解 参考资料&#xff1a;哈希表理论基础 Tips&#xff1a; 一般哈希表都是用来快速判断一个元素是否出现集合里哈希表生成原理&#xff1a;先通过哈希函数将变量映射为hashcode&#xff0c;如果二者hashcode相同&#xff0c;再通过哈希碰撞方法&#xff08;拉链法&…...

2024年四川省三支一扶报名流程图解✅

2024年四川省三支一扶报名流程图解✅ &#x1f534;时间安排 1、报名时间&#xff1a;5月31日—6月4日17:00 2、资格初审时间&#xff1a;5月31日—6月5日17:00 3、准考证打印时间&#xff1a;6月25日—6月29日 4、笔试时间&#xff1a;6月30日 5、笔试成绩&#xff1a;7…...

js Dom基础

获取元素 1、getElementById() 通过id属性获取一个元素节点对象 <div id"div1"></div> <script> var div1 document.getElementById(div1) </script> 2、 getElementsByTagName()可以根据标签名来获取一组元素节点对象 这个方法会给我们返…...

pytest识别测试用例的机制以及和unittest的区别

pytest识别测试用例的机制 文件 以test_开头或以_test结尾的python文件&#xff0c;即test_xxx.py或xxx_test.py类&#xff0c;在第一点识别到的文件中的类&#xff0c;且满足一下任一条件&#xff1a; 1&#xff09;以Test_开头&#xff0c;且没有__init__()初始化函数的类&a…...

民国漫画杂志《时代漫画》第17期.PDF

时代漫画17.PDF: https://url03.ctfile.com/f/1779803-1248612629-85326d?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps:资源来源网络&#xff01;...

[AIGC] Spring Boot 2 自定义 Starter 指南

Spring Boot 包含一系列的 “Starter POMs”&#xff0c;它们都是一些方便的依赖描述符&#xff0c;你可以在你的应用中导入。在一些情况下&#xff0c;你可能想创建自己的自定义 starter。以下是创建自己的 Spring Boot Starter 的步骤。 文章目录 1. 创建基本的 Maven 项目2.…...

HCIP综合实验命令

目录 一、配置IP地址 二、配置DHCP 三、配置静态路由&#xff08;内网通&#xff09; 四、配置缺省路由 &#xff08;外网通&#xff09; 五、配置缺省 &#xff08;全网通&#xff09; 六、防环配置 七、配置远程登录 八、修改优先级 九、配置MP-GROUP 十、配置ppp进…...

JS移动端设置mouseover,mouseleave有效么

在移动设备的浏览器环境中&#xff0c;mouseover 和 mouseleave 事件的行为与桌面浏览器有所不同&#xff0c;主要是因为移动设备的交互方式主要是基于触摸的&#xff0c;而不是基于鼠标的。 在移动设备上&#xff0c;当用户触摸屏幕时&#xff0c;通常会触发 touchstart 事件…...

IAR9.30安装和注册相关

下载解压licpatcher64工具&#xff0c;把licpatcher64.exe拷贝到IAR的安装目录中双击运行。 示例IAR9.30.1默认安装如下如下&#xff0c;一共三个分别拷贝运行&#xff0c;不要遗漏。 C:\Program Files\IAR Systems\Embedded Workbench 9.1\arm\bin C:\Program Files\IAR Syst…...