iOS开发Swift-11-正向传值,搜索,反向传值,城市id获取天气,光标聚焦,拦截空白/空格字符-和风天气App次页代码

news2024/12/23 10:25:59

1.创建次页的controller class
在这里插入图片描述在这里插入图片描述

在Main中选择次界面,点击左上方黄色的圈圈,将它的Custom Class中的class修改为QueryViewController.
在这里插入图片描述

将QueryViewController中自动生成的首页传值方法复制到ViewController中去.去掉注释符号.
在这里插入图片描述

2.在Main中给1页向2页传值的箭头命名为QueryViewControllerSegue.
在这里插入图片描述

3.编码进行从首页到次页的城市正向传值.

ViewController:

import UIKit
import CoreLocation
import Alamofire   //引入和风API包
import SwiftyJSON   //引入解析JSON数据的包

class ViewController: UIViewController, CLLocationManagerDelegate {    //遵循CLLocationManagerDelegate协议
    @IBOutlet weak var tempLable: UILabel!
    
    @IBOutlet weak var iconImageView: UIImageView!
    
    @IBOutlet weak var cityLable: UILabel!
    
    //位置管理器
    let locationManager = CLLocationManager()
    //Weather.swift实例化
    let weather = Weather()

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        locationManager.requestWhenInUseAuthorization()    //请求当用户正在使用app的时候允许后台得到用户位置.只会弹出来一次
        locationManager.delegate = self    //位置管理器代理人是view controller对象.希望view controller能通过实现CLLocationManagerDelegate协议中的方法,获取到当前用户位置信息
        locationManager.desiredAccuracy = kCLLocationAccuracyThreeKilometers    //设置需要的位置精度(三公里误差精度)
        locationManager.requestLocation()    //请求用户位置
    }
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {  //requesLocation请求到了的话会执行这个方法
        let lon = locations[0].coordinate.longitude   //精度.因为location可能实时变化(地图app),所以是一个数组.我们只需要使用第一个获取到的位置.
        let lat = locations[0].coordinate.latitude    //纬度
        //print(lon)
        //print(lat)
        AF.request("https://devapi.qweather.com/v7/weather/now?location=\(lon),\(lat)&key=a91848aaab484a3599a703b139dfe87b").responseJSON { response in
            if let data = response.value{
                let weatherJSON = JSON(data)
                //print(weatherJSON["now"]["temp"])    //或weatherJSON["now", "temp"]
                //print(weatherJSON["refer"]["sources"][0])     //weatherJSON["refer", "sources", 0]
                
                //MVC结构
                self.weather.temp = "\(weatherJSON["now"]["temp"].stringValue)˚"
                self.weather.icon = weatherJSON["now"]["icon"].stringValue
                
                self.tempLable.text = self.weather.temp
                self.iconImageView.image = UIImage(named: self.weather.icon)
            }
        }      //请求和风API的网址,得到当前位置的天气
        
        AF.request("https://geoapi.qweather.com/v2/city/lookup?location=\(lon),\(lat)&key=a91848aaab484a3599a703b139dfe87b").responseJSON { response in
            if let data = response.value{
                let cityJSON = JSON(data)
                //处理数据
                self.weather.city = cityJSON["location", 0, "name"].stringValue
                //处理AI
                self.cityLable.text = self.weather.city
            }
        }
    }
    func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {    //requesLocation请求失败的话会执行这个方法
        cityLable.text = "获取用户城市失败"
    }
    
    // Navigation跳转
    // 跳转前到准备工作,从当前页面经过的所有跳转都会经过这个方法
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// 方法1.
        //if segue.identifier == "QueryViewControllerSegue"{
        //    let viewController = segue.destination as! QueryViewController
        //    viewController.currentCity = weather.city
        //}
// 方法2.

        if let viewController = segue.destination as? QueryViewController{

            ViewController.currentCity = weather.city

    }

}

QueryViewController:

import UIKit

class QueryViewController: UIViewController {
    
    var currentCity = "双流"

    @IBOutlet weak var currentCityLable: UILabel!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        //从首页将城市名字传到次页(正向传值)
        currentCityLable.text = currentCity    
    }
    
}

4.启动测试,正向传值成功.
在这里插入图片描述在这里插入图片描述

5.反向传值,将次页输入框中拿到的值传给首页的天气.制作返回按钮与搜索按钮.

QueryViewController:

import UIKit

protocol QueryViewControllerDelegate {
    func didChangeCity(city: String)
}

class QueryViewController: UIViewController {
    
    var currentCity = ""
    var delegate: QueryViewControllerDelegate?

    @IBOutlet weak var currentCityLable: UILabel!
    @IBOutlet weak var cityTextfield: UITextField!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        //从首页将城市名字传到次页(正向传值)
        currentCityLable.text = currentCity
    }
    //返回按钮
    @IBAction func back(_ sender: Any) {
        dismiss(animated: true)
    }
    //查询按钮
    @IBAction func query(_ sender: Any) {
        dismiss(animated: true)
        
        delegate?.didChangeCity(city: cityTextfield.text!)
    }
}

ViewController:

import UIKit
import CoreLocation
import Alamofire   //引入和风API包
import SwiftyJSON   //引入解析JSON数据的包

class ViewController: UIViewController, CLLocationManagerDelegate, QueryViewControllerDelegate {    //遵循CLLocationManagerDelegate协议
    @IBOutlet weak var tempLable: UILabel!
    
    @IBOutlet weak var iconImageView: UIImageView!
    
    @IBOutlet weak var cityLable: UILabel!
    
    //位置管理器
    let locationManager = CLLocationManager()
    //Weather.swift实例化
    let weather = Weather()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        locationManager.requestWhenInUseAuthorization()    //请求当用户正在使用app的时候允许后台得到用户位置.只会弹出来一次
        locationManager.delegate = self    //位置管理器代理人是view controller对象.希望view controller能通过实现CLLocationManagerDelegate协议中的方法,获取到当前用户位置信息
        locationManager.desiredAccuracy = kCLLocationAccuracyThreeKilometers    //设置需要的位置精度(三公里误差精度)
        locationManager.requestLocation()    //请求用户位置
        
        
    }
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {  //requesLocation请求到了的话会执行这个方法
        let lon = locations[0].coordinate.longitude   //精度.因为location可能实时变化(地图app),所以是一个数组.我们只需要使用第一个获取到的位置.
        let lat = locations[0].coordinate.latitude    //纬度
        //print(lon)
        //print(lat)
        AF.request("https://devapi.qweather.com/v7/weather/now?location=\(lon),\(lat)&key=a91848aaab484a3599a703b139dfe87b").responseJSON { response in
            if let data = response.value{
                let weatherJSON = JSON(data)
                //print(weatherJSON["now"]["temp"])    //或weatherJSON["now", "temp"]
                //print(weatherJSON["refer"]["sources"][0])     //weatherJSON["refer", "sources", 0]
                
                //MVC结构
                self.weather.temp = "\(weatherJSON["now"]["temp"].stringValue)˚"
                self.weather.icon = weatherJSON["now"]["icon"].stringValue
                
                self.tempLable.text = self.weather.temp
                self.iconImageView.image = UIImage(named: self.weather.icon)
                
                
            }
        }      //请求和风API的网址,得到当前位置的天气
        
        AF.request("https://geoapi.qweather.com/v2/city/lookup?location=\(lon),\(lat)&key=a91848aaab484a3599a703b139dfe87b").responseJSON { response in
            if let data = response.value{
                let cityJSON = JSON(data)
                //处理数据
                self.weather.city = cityJSON["location", 0, "name"].stringValue
                //处理AI
                self.cityLable.text = self.weather.city
            }
        }
    }
    func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {    //requesLocation请求失败的话会执行这个方法
        cityLable.text = "获取用户城市失败"
    }
    
    // Navigation跳转
    
    // 跳转前到准备工作,从当前页面经过的所有跳转都会经过这个方法
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        
        //        if segue.identifier == "QueryViewControllerSegue"{
        //            let viewController = segue.destination as! QueryViewController
        //            viewController.currentCity = weather.city
        //        }
        
        if let viewController = segue.destination as? QueryViewController{
            viewController.currentCity = weather.city
            viewController.delegate = self
        }
        
        
    }
    func didChangeCity(city: String) {
        print(city)
    }
}

6.通过搜索获取用户想查询的城市名

ViewController:

import UIKit
import CoreLocation
import Alamofire   //引入和风API包
import SwiftyJSON   //引入解析JSON数据的包

class ViewController: UIViewController, CLLocationManagerDelegate, QueryViewControllerDelegate {    //遵循CLLocationManagerDelegate协议
    @IBOutlet weak var tempLable: UILabel!
    
    @IBOutlet weak var iconImageView: UIImageView!
    
    @IBOutlet weak var cityLable: UILabel!
    
    //位置管理器
    let locationManager = CLLocationManager()
    //Weather.swift实例化
    let weather = Weather()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        locationManager.requestWhenInUseAuthorization()    //请求当用户正在使用app的时候允许后台得到用户位置.只会弹出来一次
        locationManager.delegate = self    //位置管理器代理人是view controller对象.希望view controller能通过实现CLLocationManagerDelegate协议中的方法,获取到当前用户位置信息
        locationManager.desiredAccuracy = kCLLocationAccuracyThreeKilometers    //设置需要的位置精度(三公里误差精度)
        locationManager.requestLocation()    //请求用户位置
        
        
    }
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {  //requesLocation请求到了的话会执行这个方法
        let lon = locations[0].coordinate.longitude   //精度.因为location可能实时变化(地图app),所以是一个数组.我们只需要使用第一个获取到的位置.
        let lat = locations[0].coordinate.latitude    //纬度
        //print(lon)
        //print(lat)
        AF.request("https://devapi.qweather.com/v7/weather/now?location=\(lon),\(lat)&key=a91848aaab484a3599a703b139dfe87b").responseJSON { response in
            if let data = response.value{
                let weatherJSON = JSON(data)
                //print(weatherJSON["now"]["temp"])    //或weatherJSON["now", "temp"]
                //print(weatherJSON["refer"]["sources"][0])     //weatherJSON["refer", "sources", 0]
                
                //MVC结构
                self.weather.temp = "\(weatherJSON["now"]["temp"].stringValue)˚"
                self.weather.icon = weatherJSON["now"]["icon"].stringValue
                
                self.tempLable.text = self.weather.temp
                self.iconImageView.image = UIImage(named: self.weather.icon)
                
                
            }
        }      //请求和风API的网址,得到当前位置的天气
        
        AF.request("https://geoapi.qweather.com/v2/city/lookup?location=\(lon),\(lat)&key=a91848aaab484a3599a703b139dfe87b").responseJSON { response in
            if let data = response.value{
                let cityJSON = JSON(data)
                //处理数据
                self.weather.city = cityJSON["location", 0, "name"].stringValue
                //处理AI
                self.cityLable.text = self.weather.city
            }
        }
    }
    func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {    //requesLocation请求失败的话会执行这个方法
        cityLable.text = "获取用户城市失败"
    }
    
    // Navigation跳转
    
    // 跳转前到准备工作,从当前页面经过的所有跳转都会经过这个方法
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        
        //        if segue.identifier == "QueryViewControllerSegue"{
        //            let viewController = segue.destination as! QueryViewController
        //            viewController.currentCity = weather.city
        //        }
        
        if let viewController = segue.destination as? QueryViewController{
            viewController.currentCity = weather.city
            viewController.delegate = self
        }
        
        
    }
    func didChangeCity(city: String) {
        //print(city)
        let parameters = ["location": city, "key": "a91848aaab484a3599a703b139dfe87b"]
        AF.request("https://geoapi.qweather.com/v2/city/lookup", parameters: parameters).responseJSON { response in
            if let data = response.value{
                let cityJSON = JSON(data)
                //处理数据
                self.weather.city = cityJSON["location", 0, "name"].stringValue
                //处理AI
                self.cityLable.text = self.weather.city
            }
        }
        
    }
}

7.优化,直接通过城市id获取当时天气,避免受到重名城市困扰.

ViewController:

import UIKit
import CoreLocation
import Alamofire   //引入和风API包
import SwiftyJSON   //引入解析JSON数据的包

class ViewController: UIViewController, CLLocationManagerDelegate, QueryViewControllerDelegate {    //遵循CLLocationManagerDelegate协议
    @IBOutlet weak var tempLable: UILabel!
    
    @IBOutlet weak var iconImageView: UIImageView!
    
    @IBOutlet weak var cityLable: UILabel!
    
    //位置管理器
    let locationManager = CLLocationManager()
    //Weather.swift实例化
    let weather = Weather()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        locationManager.requestWhenInUseAuthorization()    //请求当用户正在使用app的时候允许后台得到用户位置.只会弹出来一次
        locationManager.delegate = self    //位置管理器代理人是view controller对象.希望view controller能通过实现CLLocationManagerDelegate协议中的方法,获取到当前用户位置信息
        locationManager.desiredAccuracy = kCLLocationAccuracyThreeKilometers    //设置需要的位置精度(三公里误差精度)
        locationManager.requestLocation()    //请求用户位置
        
        
    }
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {  //requesLocation请求到了的话会执行这个方法
        let lon = locations[0].coordinate.longitude   //精度.因为location可能实时变化(地图app),所以是一个数组.我们只需要使用第一个获取到的位置.
        let lat = locations[0].coordinate.latitude    //纬度
        //print(lon)
        //print(lat)
        AF.request("https://devapi.qweather.com/v7/weather/now?location=\(lon),\(lat)&key=a91848aaab484a3599a703b139dfe87b").responseJSON { response in
            if let data = response.value{
                let weatherJSON = JSON(data)
                //print(weatherJSON["now"]["temp"])    //或weatherJSON["now", "temp"]
                //print(weatherJSON["refer"]["sources"][0])     //weatherJSON["refer", "sources", 0]
                
                //MVC结构
                self.weather.temp = "\(weatherJSON["now"]["temp"].stringValue)˚"
                self.weather.icon = weatherJSON["now"]["icon"].stringValue
                
                self.tempLable.text = self.weather.temp
                self.iconImageView.image = UIImage(named: self.weather.icon)
                
                
            }
        }      //请求和风API的网址,得到当前位置的天气
        
        AF.request("https://geoapi.qweather.com/v2/city/lookup?location=\(lon),\(lat)&key=a91848aaab484a3599a703b139dfe87b").responseJSON { response in
            if let data = response.value{
                let cityJSON = JSON(data)
                //处理数据
                self.weather.city = cityJSON["location", 0, "name"].stringValue
                //处理AI
                self.cityLable.text = self.weather.city
            }
        }
    }
    func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {    //requesLocation请求失败的话会执行这个方法
        cityLable.text = "获取用户城市失败"
    }
    
    // Navigation跳转
    
    // 跳转前到准备工作,从当前页面经过的所有跳转都会经过这个方法
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        
        //        if segue.identifier == "QueryViewControllerSegue"{
        //            let viewController = segue.destination as! QueryViewController
        //            viewController.currentCity = weather.city
        //        }
        
        if let viewController = segue.destination as? QueryViewController{
            viewController.currentCity = weather.city
            viewController.delegate = self
        }
        
        
    }
    func didChangeCity(city: String) {
        //print(city)
        let parameters = ["location": city, "key": "a91848aaab484a3599a703b139dfe87b"]
        AF.request("https://geoapi.qweather.com/v2/city/lookup", parameters: parameters).responseJSON { response in
            if let data = response.value{
                let cityJSON = JSON(data)
                //处理数据
                self.weather.city = cityJSON["location", 0, "name"].stringValue
                //处理AI
                self.cityLable.text = self.weather.city

                //通过城市id查询当前城市天气

                let parameters = ["location": cityJSON["location", 0, "id"].stringValue, "key": "a91848aaab484a3599a703b139dfe87b"]

                AF.request("https://devapi.qweather.com/v7/weather/now", parameters: parameters).responseJSON { response in

                    if let data = response.value{

                        let weatherJSON = JSON(data)

                        //处理数据

                        self.weather.temp = "\(weatherJSON["now","temp"].stringValue)°"

                        self.weather.icon = weatherJSON["now","icon"].stringValue

                        //处理UI

                        self.tempLable.text = self.weather.temp

                        self.iconImageView.image = UIImage(named: self.weather.icon)

                    }

                }

           }

        }
        
    }
}

8.优化,在次页直接将光标聚焦到搜索栏处,减少用户的点击操作.

QueryViewController:

import UIKit

protocol QueryViewControllerDelegate {
    func didChangeCity(city: String)
}

class QueryViewController: UIViewController {
    
    var currentCity = ""
    var delegate: QueryViewControllerDelegate?

    @IBOutlet weak var currentCityLable: UILabel!
    @IBOutlet weak var cityTextfield: UITextField!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //将光标聚焦到搜索栏处
        cityTextfield.becomeFirstResponder()  //收起键盘:cityTextfield.resignFirstResponder()
        
        //从首页将城市名字传到次页(正向传值)
        currentCityLable.text = currentCity
    }
    //返回按钮
    @IBAction func back(_ sender: Any) {
        dismiss(animated: true)
    }
    //查询按钮
    @IBAction func query(_ sender: Any) {
        dismiss(animated: true)
        
        delegate?.didChangeCity(city: cityTextfield.text!)
    }
 
}

9.拦截用户的空白搜索,减少资源消耗.

QueryViewController:

import UIKit

protocol QueryViewControllerDelegate {
    func didChangeCity(city: String)
}

class QueryViewController: UIViewController {
    
    var currentCity = ""
    var delegate: QueryViewControllerDelegate?

    @IBOutlet weak var currentCityLable: UILabel!
    @IBOutlet weak var cityTextfield: UITextField!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //将光标聚焦到搜索栏处
        cityTextfield.becomeFirstResponder()  //收起键盘:cityTextfield.resignFirstResponder()
        
        //从首页将城市名字传到次页(正向传值)
        currentCityLable.text = currentCity
    }
    //返回按钮
    @IBAction func back(_ sender: Any) {
        dismiss(animated: true)
    }
    //查询按钮
    @IBAction func query(_ sender: Any) {
        dismiss(animated: true)
        if !cityTextfield.text!.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty{//修剪掉用户输入的空格和回车,如果修剪掉之后字符串 不(!) 为空,则进行搜索
            delegate?.didChangeCity(city: cityTextfield.text!)
        }
    }
 
} 

10.启动测试:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这里插入图片描述

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

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

相关文章

怎么在树莓派上搭建WordPress博客网站,并发布到外网可访问?

文章目录 序幕概述1. 安装 PHP2. 安装MySQL数据库3. 安装 Wordpress4. 设置您的 WordPress 数据库设置 MySQL/MariaDB创建 WordPress 数据库 5. WordPress configuration6. 将WordPress站点发布到公网安装相对URL插件修改config.php配置 7. 支持好友链接样式8. 定制主题 序幕 …

msvcp100.dll缺失的处理方法,4个修复msvcp100.dll的技巧

其实只要是经常使用电脑的人,那么迟早会遇到一个问题,那就是dll文件的丢失,它会提示你的电脑缺失了某某dll文件,如msvcp100.dll找不到,msvcp100.dll缺失等等,今天我们主要来讲一下,万一你的电脑…

车间作业分析重点分析的内容是哪些?

我们通常所说的车间作业分析,就是为提高作业效率和消除浪费而充分了解作业内容的构成因素和区分作业,并了解其组合是否有浪费现象,为提高分析要素作业的方法。 经过作业分析,可以查漏补缺,能发现平时正常作业时不易觉察…

工商银行潍坊分行党建RPA机器人项目解析

01 案例背景:银行业掀起引入RPA加速实现数字化转型的浪潮 近年来,金融科技的蓬勃发展极大促进了银行的业务创新,新技术、新业态层出不穷。随着银行业务和科技的融合逐步落实,银行业务正朝着线上化、智能化转变。科技赋能的转型范…

关于运行franka_ros包中的franka_gazebo报错VMware: vmw_ioctl_command error 无效的参数.

参考的博文,感谢,解决Vmware下虚拟机下打开gazebo报错 ,VMware: vmw_ioctl_command error 无效的参数. 首先第一个VMware: vmw_ioctl_command error 无效的参数的问题。这应该是虚拟机的bug,毕竟使用虚拟机和真实的物理机上是有差…

Mysql数据库基础总结:

什么是数据库: 数据库(DataBase):存储和管理数据的一个仓库。 数据库类型分为:关系型数据库和非关系型数据库。 关系型数据库(SQL):存储的数据以行和列为格式,类似于e…

二.RocketMQ基础概念及名词说明

RocketMQ基础概念及名词说明 一:RocketMQ基本概念1.消息(Message)2.生产者(Producer)3.消费者(Consumer)4.分组(Group):4.主题(Topic)5.标签(Tag)6.队列(Queue&#xff0…

Springboot 实践(15)spring config 配置与运用—自动刷新

目前,网络上讲解spring config的自动刷新,都是通过git服务站的webhook功能执行“actuator/bus-refresh”服务实现的自动刷新。我们的前文讲解的配置中心,配置中心仓库使用的时本地地址,如下图所示: 那么,配…

JVM 虚拟机 ---> JVM 基础概念

文章目录 JVM 虚拟机 ---> JVM 基础概念一、Java 跨平台主要原因 二、JVM 的组成结构三、Java 代码执行流程四、JVM 的生命周期 JVM 虚拟机 —> JVM 基础概念 一、Java 跨平台 Java是一种可跨平台的编程语言,我们通常把CPU处理器与操作系统构成的计算机系统…

记录vxe-table show-overflow失效问题

后来发现,在使用的过程中发现vxe-table的show-overflow在普通的界面是生效的,但是在el-dialog对话框始终不出现 超出的文本鼠标移上去没有显示全部 排查后发现和tooltip的z-index有关,modal的z-index比tooltip的z-index大, 方法…

行业报告 | 智慧三角:长三角掀起AI产业热潮

原创 | 文 BFT机器人 产业集群是指在特定地理区域内,一群相关产业相互依存、相互关联、相互支持,形成密集的产业网络和价值链条的现象,这些相关产业可能涵盖整个产业链的不同环节,从原材料供应到产品研发、生产、销售和服务等多个…

回显服务器

写一个应用程序,让这个程序可以使用网络通信,这里就需要调用传输层提供的api,传输层提供协议,主要是两个: UDP,TCP,它们分别提供了一套不同的api,socket api. UDP和TCP UDP:无连接,不可靠传输,面向数据报,全双工 TCP:有连接,可靠传输,面向字节流,全双工 一个客户端可以连接多…

【计算机组成原理】读书笔记第一期:对程序员来说CPU是什么

目录 写在开头 CPU的结构 功能的角度 程序员的角度 寄存器与程序的执行流程 程序计数器 条件分支与循环 函数的调用流程 通过地址和索引实现数组 CPU的处理过程 结尾 写在开头 近期经他人推荐,正在阅读《程序是怎样跑起来的》这本书(作者&…

为虚拟化环境带来更强I/O性能!SR-IOV技术简介

在 ICT 行业,不断提高硬件资源的使用效率是技术发展路线中亘古不变的主旋律。虚拟化作为其中最为主要的解决方式之一,其带来的影响早已不言而喻。而今天我们要说的,正是虚拟化中一项非常重要的技术 —— SR-IOV,也是下一代高端企业…

每日一练 | 网络工程师软考真题Day32

阅读以下说明,答复以下【问题1】至【问题5】 【说明】 某公司内部效劳器S1部署了重要的应用,该应用只允许特权终端PC1访问,如图4-1所示。为保证通信平安,需要在S1上配置相应的IPSec策略。综合考虑后,确定该IPSec策略如…

龙迅LT86204UX HDMI二进四出 支持高达4K60HZ的分辨率

龙迅LT86204UX 1.描述: LT86204UX HDMI2.0/1.4交换机具有2:4的开关,符合HDMI2.0/1.4规格,最大6Gbps高速数据速率,自适应均衡RX输入和预先强调的TX输出。LT86204UX HDMI2.0/1.4交换机自动检测电缆损耗,并自…

上位机的社会工作发展前景

在元宇宙发展的趋势下,上位机已经融合了虚拟现实(VR)和增强现实(AR)技术。我们不能局限于传统的电脑上的上位机开发,作为工控领域的从业者,我们应该打通PLC与各种先进外设的互通和互信。无论是i…

【C-C++源码】仓库管理系统 期末课设必备源码

文章目录 介绍 介绍 有两个版本,一个是C语言,一个是C,自行选择,VC、VS、devc等各编译器均可运行。代码注释齐全,容易理解,代码量850行。 printf("需要源码,可以百度:学长敲代码")&…

risc-v dv源代码分析

地址为 GitHub - chipsalliance/riscv-dv: Random instruction generator for RISC-V processor verificationRandom instruction generator for RISC-V processor verification - GitHub - chipsalliance/riscv-dv: Random instruction generator for RISC-V processor verif…

论文于祥读及复现——《VDO-SLAM: A Visual Dynamic Object-aware SLAM System》

论文详读之------《一个视觉动态对象感知SLAM系统》 0. 出发点(暨摘要)1.引言2. 相关工作2.1 探索针对动态环境的健壮SLAM2.2 分别执行SLAM和运动对象跟踪(MOT),作为传统SLAM的扩展,用于动态场景理解。2.3 对象SLAM(通…