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

【iOS】知乎日报总结

知乎日报总结

  • 前言
  • 详情页
  • 评论区
    • tableView的自适应高度
    • 评论区的展开与收缩
  • 收藏中心
    • FMDB数据库
    • 数据库的使用
  • 总结

前言

前五个礼拜完成了知乎日报的仿写,新学习了几个第三方库以及解决了一些网络异步的问题,本篇博客是对这个仿写项目的一些总结。两周前进行过一次总结【iOS】知乎日报前三周总结,这次主要内容是这几周的仿写的总结。

详情页

这个页面在上次进行过一次的总结,这次主要讲一下前期还没有解决的问题,在左右滑动时进行一个多个页面的滑动。这里我的思路是在- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView这个函数中来进行判断申请新的一天的数据,同时进行一个提前的申请,从而防止出现滑动到一个新的页面但是还没有数据来进行网络申请获得webView的情况出现。

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {CGFloat endWidth = self.mainview.scroll.contentOffset.x;NSInteger count = endWidth / 393;NSLog(@"滚动结束后:%ld", count);NSInteger webAPICount = _strurl.count;_countright = webAPICount - count;if(_countright <= 4 && !_Right) {_Right = YES;[self gaindate];}//申请新的一天的数据_numFMDB = count;if(count < _strurl.count)[self gainextra:count];//加载下面工具栏中的数据NSString *urlString = _strurl[_numFMDB];if (![_exitURL containsObject:urlString]) {_webview = [[WKWebView alloc] initWithFrame:CGRectMake(endWidth, 0, 393, 719)];_webview.navigationDelegate = self;NSLog(@"URL String: %@", urlString);[self gainWebview:urlString];}//加载这一页的webView
}

评论区

评论区中主要的要点是tableView的自适应高度已经使用UITextView实现长评论的展开与收缩。

tableView的自适应高度

tableView的自适应高度主要使用第三方库Masorny来实现,通过控制每个空间之间的距离,让UILabel以及UITextView的文字自己撑开Cell的高度,从而让整个页面中的cell都实现自适应高度。
在这里插入图片描述
如上图所示,每个Cell中展示的文字多少不同,Cell的高度都不相同。

首先我们要设置tableView的这两个属性:

self.commentview.tableview.estimatedRowHeight = 50;
_commentview.tableview.rowHeight = UITableViewAutomaticDimension;

而后通过对于自定义Cell中的控件的位置设置从而让文字撑开cell,做到自适应高度。

[_profile mas_makeConstraints:^(MASConstraintMaker *make) {make.left.equalTo(self.contentView).offset(10);make.top.equalTo(self.contentView).offset(10);make.width.and.height.equalTo(@36);}];[_extra mas_makeConstraints:^(MASConstraintMaker *make) {make.top.equalTo(_profile.mas_top);make.right.equalTo(self.contentView).offset(-20);make.width.and.height.equalTo(@16);}];[_name mas_makeConstraints:^(MASConstraintMaker *make) {make.left.equalTo(self.contentView).offset(55);make.top.equalTo(self.contentView).offset(10);make.width.equalTo(@150);make.height.mas_offset(25);}];[_main_comment mas_makeConstraints:^(MASConstraintMaker *make) {make.left.equalTo(_name.mas_left);make.top.equalTo(_profile.mas_bottom).offset(-10);make.right.equalTo(self.contentView).offset(-20);}];[_time mas_makeConstraints:^(MASConstraintMaker *make) {make.left.equalTo(_name.mas_left);make.top.equalTo(_aux_comment.mas_bottom).offset(10);make.width.mas_offset(80);make.bottom.equalTo(self.contentView.mas_bottom).offset(-10);}];[_comment mas_makeConstraints:^(MASConstraintMaker *make) {make.top.equalTo(_aux_comment.mas_bottom);make.right.equalTo(self.contentView).offset(-20);make.width.and.height.equalTo(@18);}];[_good mas_makeConstraints:^(MASConstraintMaker *make) {make.top.equalTo(_aux_comment.mas_bottom);make.right.equalTo(self.contentView).offset(-100);make.width.mas_offset(50);make.height.mas_offset(18);}];[_aux_comment mas_makeConstraints:^(MASConstraintMaker *make) {make.left.equalTo(_main_comment.mas_left);make.top.equalTo(_main_comment.mas_bottom);make.right.equalTo(_main_comment.mas_right);}];

评论区的展开与收缩

关于评论区的长评论,这次我使用的是UITextView来实现,这里笔者借鉴了博客这里粘贴出来:iOS开发 多行文本的展开/全文和收起(UITextView),个人认为这篇博客讲的还算详细,这里笔者也简单概述一下自己的思路。

  1. 首先我们需要在Model中增加几个属性,即判断是否展开的isOpen、实际的文本高度以及文本的最大高度。
- (void)jisuan:(NSString *)content {NSLog(@"content = %@", content);_content = content;if (content == nil || [content isEqualToString:@""]) {self.titleActualH = 0;self.titleMaxH = 0;} else {NSUInteger numCount = 2; //这是cell收起状态下期望展示的最大行数NSString *str = @"这是一行用来计算高度的文本";//这行文本也可以为一个字,但不能太长CGFloat W =  318 - 30; //这里是文本展示的宽度self.titleActualH = [content boundingRectWithSize:CGSizeMake(W, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16]} context:nil].size.height;self.titleMaxH = [str boundingRectWithSize:CGSizeMake(W, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16]} context:nil].size.height*numCount;}
}
  1. 我们需要在cell中判断是否已经开展,以及通过添加给富文本事件来让实现展开与收缩。
- (void)setupCellData:(Modelcomment_reply_to *)model {NSString *suffixStr = @""; //添加的后缀按钮文本(收起或展开)NSString *contentStr = model.content;CGFloat H = model.titleActualH; //文本的高度,默认为实际高度if (model.titleActualH > model.titleMaxH) {//文本实际高度>最大高度,需要添加后缀if (model.isOpen) {//文本已经展开,此时后缀为“收起”按钮suffixStr = @"收起";contentStr = [NSString stringWithFormat:@"%@ %@", contentStr, suffixStr];H = model.titleActualH;} else {NSLog(@"就是NO");//文本已经收起,此时后缀为“展开/全文”按钮//需要对文本进行截取,将“...展开”添加到我们限制的展示文字的末尾NSUInteger numCount = 2; //这是cell收起状态下期望展示的最大行数CGFloat W = 318 - 30; //这里是文本展示的宽度NSString *tempStr = [self stringByTruncatingString:contentStr suffixStr:@"...展开" font:[UIFont systemFontOfSize:16] forLength:W*numCount];NSLog(@"tempStr = %@", tempStr);contentStr = tempStr;suffixStr = @"展开";H = model.titleMaxH;}}NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:contentStr attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16]}];self.aux_comment.linkTextAttributes = @{};//给富文本的后缀添加点击事件if (suffixStr != nil && suffixStr.length > 0){NSRange range3 = [contentStr rangeOfString:suffixStr];[attStr addAttribute:NSForegroundColorAttributeName value:[UIColor systemBlueColor]range:range3];//[UIColor colorWithHexString:@"#000000"]NSString *valueString3 = [[NSString stringWithFormat:@"didOpenClose://%@", suffixStr] stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet]];[attStr addAttribute:NSLinkAttributeName value:valueString3 range:range3];}self.aux_comment.attributedText = attStr;
}- (NSString *)stringByTruncatingString:(NSString *)str suffixStr:(NSString *)suffixStr font:(UIFont *)font forLength:(CGFloat)length {if (!str) return nil; // 如果 str 为 nil,返回 nilif (![str isKindOfClass:[NSString class]]) return nil; // 确保 str 是 NSString 类型// 从字符串的长度开始,逐步截断for (NSInteger i = str.length; i > 0; i--) {NSString *tempStr = [str substringToIndex:i];CGSize size = [tempStr sizeWithAttributes:@{NSFontAttributeName: font}];// 检查截断后的字符串宽度if (size.width < length) {// 添加 suffixStrNSString *resultStr = [tempStr stringByAppendingString:suffixStr];CGSize resultSize = [resultStr sizeWithAttributes:@{NSFontAttributeName: font}];// 如果加上后缀后的宽度也在限制内if (resultSize.width < length) {return resultStr; // 返回最终字符串}}}// 如果没有找到合适的截断位置,返回原字符串或处理为空的情况return suffixStr; // 如果所有情况都不满足,返回后缀
}//(这里笔者对于两行文本的判断还是有些问题,无法在第一行或者第二行空白时实现一个文本的展开和收缩,因为笔者这个方法中对于文字的截断判断存在一点问题)
  1. 最后在Controller中调用Cell中的方法,来实现即可
if([_arrLong[indexPath.row] objectForKey:@"reply_to"] != nil) {Modelcomment_reply_to* model = [Modelcomment_reply_to yy_modelWithDictionary:_arrLong[indexPath.row][@"reply_to"]];if([model isKindOfClass:[Modelcomment_reply_to class]]) {NSLog(@"true");} else {NSLog(@"model class = %@", [model class]);}NSMutableString *str = [NSMutableString stringWithString:@"//"]; // 使用 stringWithString 初始化[str appendFormat:@"%@", model.author]; // 追加作者[str appendFormat:@":"]; // 追加冒号[str appendFormat:@"%@", model.content];[model jisuan:str];NSLog(@"高度 = %f", model.titleActualH);NSLog(@"第%ld组,第%ld个", indexPath.section, indexPath.row);[cell setupCellData:model];[cell setOpenCloseBlock:^{NSMutableDictionary *replyTo = self->_arrLong[indexPath.row][@"reply_to"];// 获取当前的 isOpen 值NSNumber *currentValue = replyTo[@"isOpen"];BOOL isOpen = [currentValue boolValue]; // 转换为 BOOL// 反转 isOpen 的值并存储回字典replyTo[@"isOpen"] = @( !isOpen );[self->_commentview.tableview beginUpdates];[self->_commentview.tableview reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];[self->_commentview.tableview endUpdates];}];} 

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

收藏中心

收藏中心笔者这里使用了FMDB实现数据持久化来实现这个功能,这个功能主要就是将一些数据保存在自己的电脑中,在不同的控制器中实现一个数据的增删改查,具体来说就是在详情页中进行数据的保存和取消,在收藏中心中重新调用这些内容,让保存的数据进行网络申请展示保存的数据。
这里实现比较简单,故而笔者主要在这里介绍一下FMDB这个数据库。

FMDB 是一个用于 iOS 和 macOS 平台的 Objective-C/Swift 数据库框架,它对 SQLite 数据库进行了封装,提供了更加方便和安全的数据库操作方式。

FMDB数据库

  1. 数据库的创建
-(void) setupFMDB {//FMDB的创建NSString* doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];NSLog(@"doc = %@", doc);NSString* fileName = [doc stringByAppendingPathComponent:@"zhihuDaily.sqlite"];_dataBase = [FMDatabase databaseWithPath:fileName];if([self.dataBase open]) {if (result) {NSLog(@"创表成功");} else {NSLog(@"创表失败");}}
}
  • NSSearchPathForDirectoriesInDomains 是一个用于获取特定目录路径的函数。这里通过传入 NSDocumentDirectory(表示应用程序的文档目录)、NSUserDomainMask(表示搜索范围为当前用户)和 YES(表示展开路径中的波浪线,比如 ~/Documents 转换为实际路径)来获取应用程序文档目录的路径.
  • stringByAppendingPathComponent: 方法用于在一个路径字符串的末尾添加一个新的路径组件。这里在之前获取到的文档目录路径 doc 后面添加了 “zhihuDaily.sqlite”,构建出一个完整的数据库文件路径。这个路径表示要创建的 SQLite 数据库文件将存储在应用程序的文档目录下,文件名为 “zhihuDaily.sqlite”.

创表

BOOL result = [self.dataBase executeUpdate:@"CREATE TABLE IF NOT EXISTS collectionData (mainHeading text NOT NULL, webAPI text NOT NULL, imageURL text NOT NULL,newsID text NOT NULL);"];if (result) {NSLog(@"创表成功");} else {NSLog(@"创表失败");}

这里CREATE TABLE IF NOT EXISTS collectionData指的是如果collectionData这个表格不存在就创建一个名字为它的表格。后面括号中的内容是表格中所包含的数据名称,后期增删改查都需要使用到他们。

数据库的使用

这里我们主要涉及的就是数据库内容的增删改查,下面依次对这些内容进行一个说明解释。

  • 增加数据:
-(void) insertDate {if([_dateBase open]) {BOOL result = [_dateBase executeUpdate:@"INSERT INTO collectionData (mainHeading, webAPI, imageURL, newsID) VALUES(?, ?, ?, ?);", _strTitle[_numFMDB], _strurl[_numFMDB], _strImageURL[_numFMDB], _strid[_numFMDB]];if (!result) {NSLog(@"增加数据失败");}else{NSLog(@"增加数据成功");}[_dateBase close];}
}

这里使用的NSERT INTO collectionData 表示给collectionData这个表格中增加一行数据,后面的内容即为数据的一一对应的数据

  • 删除数据:
-(void) deleteData {if([_dateBase open]) {NSString *sql = @"delete from collectionData WHERE webAPI = ?";BOOL result = [_dateBase executeUpdate:sql, _strurl[_numFMDB]];if(result) {NSLog(@"删除成功");} else {NSLog(@"删除失败");}[_dateBase close];}
}

这里使用executeUpdate这个方法查找到所需要删除的那一行数据,从而对其进行一个删除的操作。上面字符串中的文字代表着要对这个表格执行的操作,即delete。

  • 查找数据:
-(BOOL) queryData {BOOL select = NO;if([_dateBase open]) {NSString* sql = @"SELECT * FROM collectionData WHERE webAPI = ?";FMResultSet *resultSet = [_dateBase executeQuery:sql, _strurl[_numFMDB]];if([resultSet next]) {select = YES;}[resultSet close];[_dateBase close];}return select;
}

这里字符串中的文字即是要给这个表格执行的操作SELECT 后面的这个WHERE webAPI则代表依据数据webAPI这一列来查找。

  • 更新数据:
// 更新数据
- (void)updateData {if ([self.collectionDatabase open]) {NSString *sql = @"UPDATE collectionData SET id = ? WHERE nameLabel = ?";BOOL result = [self.collectionDatabase executeUpdate:sql, @"1", @"hi world"];if (!result) {NSLog(@"数据修改失败");} else {NSLog(@"数据修改成功");}[self.collectionDatabase close];}
}

这里其实和上面的一样,先依据某一个数据找到这一行的数据,在对其进行一个更改的操作即可。

总结

上述即是笔者这两周进行知乎日报仿写中所遇的一些个人觉得比较重要的部分,其实我的项目中还是有一些地方需要改正,存在一些稍有不合理的地方需要继续改正,后期还会对项目进行一个完善,如果有觉得值得更改记录的地方再重新写博客进行一个记录。

相关文章:

【iOS】知乎日报总结

知乎日报总结 前言详情页评论区tableView的自适应高度评论区的展开与收缩 收藏中心FMDB数据库数据库的使用 总结 前言 前五个礼拜完成了知乎日报的仿写&#xff0c;新学习了几个第三方库以及解决了一些网络异步的问题&#xff0c;本篇博客是对这个仿写项目的一些总结。两周前进…...

Python 使用 OpenCV 将 MP4 转换为 GIF图

以下是使用 Python 和 OpenCV 将 MP4 转换为 GIF 的示例代码&#xff1a; python import cv2 import imageiodef mp4_to_gif(mp4_path, gif_path, fps10, start_timeNone, end_timeNone):"""将MP4视频转换为GIF动图。:param mp4_path: 输入MP4视频的路径。:pa…...

学习路之phpstudy--安装mysql5.7后在my.ini文件中无法修改sql_mode

windows环境下使用phpstudy安装mysql5.7后需要修改mysql中的sql_mode配置&#xff0c;但是在phpstudy中打开mysql配置文件my.ini后&#xff0c; 通过查找找不到sql_mode或sql-mode&#xff0c; 此时无法在my.ini文件中直接进行修改&#xff0c;可以使用mysql命令进行修改&#…...

MySQL-学习笔记

基础篇 sql字段 1. date 类型 date类型用于存储日期值&#xff0c;格式为’YYYY-MM-DD’&#xff0c;显示范围是从’1000-01-01’到’9999-12-31’。它只包含日期部分&#xff0c;不包含时间部分。 2.datetime 类型 datetime类型用于存储日期和时间值&#xff0c;格式为’Y…...

HarmonyOS4+NEXT星河版入门与项目实战(19)------状态管理 @Prop@Link@Provide@Consume

文章目录 1、@Prop@Link@Provide@Consume装饰器图解2、案例演示1、模块划分2、模块封装1、任务统计模块2、列表管理模块3、主界面4、完整代码3、父组件是对象@Prop可以是对象属性1、案例改造2、完整代码4、@Provide@Consume案例1、案例改造2、完整代码3、总结1、@Prop@Link@Pro…...

企业OA管理系统:Spring Boot技术实现与案例研究

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了企业OA管理系统的开发全过程。通过分析企业OA管理系统管理的不足&#xff0c;创建了一个计算机管理企业OA管理系统的方案。文章介绍了企业OA管理系统的系统分析部…...

react

proTable manualRequest:实现初次进入不查询调用接口,当点击搜索调价查询才调用接口 form{{ ignoreRules: false }} 在搜索条件上增加必选项 formItemProps: { rules: [{required: true,message: 请选择结束时间}] },需要在proTable中增加form{{ ignoreRules: false }}才生效…...

【VTK】MFC中使用VTK9.3

MFC中如果使用VTK 碎碎念一、vtk环境配置二、具体实现1、新建类2. 自定义控件3、跑个栗子 总结 碎碎念 如果不是老程序用的MFC&#xff0c;我才不想用MFC去使用VTK呢。 一、vtk环境配置 关于环境配置你可以看这篇文章&#xff0c;在这里不过多赘述。需要注意要选择支持MFC&a…...

mysql系列1—mysql架构和协议介绍

背景&#xff1a; 本文开始整理mysql相关的文章&#xff0c;用于收集数据库相关内容&#xff1b;包括mysql架构和存储方式、索引结构和查询优化、数据库锁等内容。思考如何根据具体的业务给出最优的分表规划和表设计、字段选择和索引设计、优化的SQL语句&#xff0c;以及数据库…...

美创科技入选2024数字政府解决方案提供商TOP100!

11月19日&#xff0c;国内专业咨询机构DBC德本咨询发布“2024数字政府解决方案提供商TOP100”榜单。美创科技凭借在政府数据安全领域多年的项目经验、技术优势与创新能力&#xff0c;入选收录。 作为专业数据安全产品与服务提供商&#xff0c;美创科技一直致力于为政府、金融、…...

Vue——响应式数据,v-on,v-bind,v-if,v-for(内含项目实战)

目录 响应式数据 ref reactive 事件绑定指令 v-on v-on 鼠标监听事件 v-on 键盘监听事件 v-on 简写形式 属性动态化指令 v-bind iuput标签动态属性绑定 img标签动态属性绑定 b标签动态属性绑定 v-bind 简写形式 条件渲染指令 v-if 遍历指令 v-for 遍历对象的值 遍历…...

Vue实训---1-创建Vue3项目

0-在VSCode中的终端中运行npm -v查看版本号 如果出现——“npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1&#xff0c;因为在此系统上禁止运行脚本。……”的错误&#xff0c;则需要在 vscode 终端执行 Set-ExecutionPolicy -Scope CurrentUser RemoteSigned 命令即可。…...

设计模式之观察者模式

背景 假如我们现在有这样一个场景&#xff1a;市场上的股票价格不定时变化&#xff0c;而后台监控者和广告想要实时获取股票信息&#xff0c;我们应该怎么做&#xff1f; 显然在这个场景里&#xff0c;我们有这样一个设计 一个股票类不时更新股票价格另外有两个类Monitor和Bi…...

Vue.js 学习总结(13)—— Vue3 version 计数介绍

前言 Vue3.5 提出了两个重要概念&#xff1a;version计数和双向链表&#xff0c;作为在内存和计算方面性能提升的最大功臣。既然都重要&#xff0c;那就单挑 version 计数来介绍&#xff0c;它在依赖追踪过程中&#xff0c;起到快速判断依赖项有没有更新的作用&#xff0c;所以…...

数据结构 ——— 直接选择排序算法的实现

目录 直接选择排序算法的思想 优化直接选择排序算法的思想 代码实现&#xff08;默认升序&#xff09; 直接选择排序算法的思想 直接选择排序算法的思想类似与直接插入排序 区别在于从大到小选择最小的元素或者最大的元素直接放在元素应该停留的位置每次从待排序的元素中选…...

初始Python篇(5)—— 集合

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; Python 目录 集合 相关概念 集合的创建与删除 集合的操作符 集合的相关操作方法 集合的遍历 集合生成式 列表、元组、字典、集合的…...

基于Qt/C++/Opencv实现的一个视频中二维码解析软件

本文详细讲解了如何利用 Qt 和 OpenCV 实现一个可从视频和图片中检测二维码的软件。代码实现了视频解码、多线程处理和界面更新等功能&#xff0c;是一个典型的跨线程图像处理项目。以下分模块对代码进行解析。 一、项目的整体结构 项目分为以下几部分&#xff1a; 主窗口 (M…...

图片生成视频-右进

右侧进入 ffmpeg -loop 1 -i image.jpg -f lavfi -i colorcblack:s1280x720:d20 -filter_complex "[1:v]formatrgba[bg];[0:v]formatrgba,scale1280:720[img];[bg][img]overlayxif(lt(t,3),W,if(lt(t,8),W-(t-3)*W/5,0)):y(H-h)/2:enablegte(t,3)" -c:v libx264 -t 2…...

Golang的语言特性与鸭子类型

Golang的语言特性与鸭子类型 前言 什么是鸭子类型&#xff1f; Suppose you see a bird walking around in a farm yard. This bird has no label that says ‘duck’. But the bird certainly looks like a duck. Also, he goes to the pond and you notice that he swims l…...

Spring Boot 3.x + OAuth 2.0:构建认证授权服务与资源服务器

Spring Boot 3.x OAuth 2.0&#xff1a;构建认证授权服务与资源服务器 前言 随着Spring Boot 3的发布&#xff0c;我们迎来了许多新特性和改进&#xff0c;其中包括对Spring Security和OAuth 2.0的更好支持。本文将详细介绍如何在Spring Boot 3.x版本中集成OAuth 2.0&#xf…...

Centos-stream 9,10 add repo

Centos-stream repo前言 Centos-stream 9,10更换在线阿里云创建一键更换repo 自动化脚本 华为centos-stream 源 , 阿里云centos-stream 源 华为epel 源 , 阿里云epel 源vim /centos9_10_repo.sh #!/bin/bash # -*- coding: utf-8 -*- # Author: make.h...

手机发展史介绍

手机&#xff0c;这个曾经在电影和科幻小说中出现的高科技产品&#xff0c;如今已经渗透进了我们生活的每个角落。从单纯的通讯工具到如今集成了通讯、娱乐、工作、社交等多种功能的智能终端&#xff0c;手机的发展史也是人类科技进步的缩影。本文将从手机的发展历程、技术革新…...

七天掌握SQL--->第五天:数据库安全与权限管理

1.1 用户权限管理 用户权限管理是指控制用户对数据库的访问和操作权限。在MySQL中&#xff0c;可以使用GRANT和REVOKE命令来管理用户权限。 GRANT命令用于授予用户权限。语法如下&#xff1a; GRANT privileges ON database.table TO userhost IDENTIFIED BY password;其中&…...

Oracle-表空间/用户的创建与使用

-- 对象 -- 需要create的都是对象 已学的对象&#xff1a;表 table -- 普通用户 只能查询user开头的数据字典 select tablespace_name from user_tablespaces; -- dba用户才能够查询 select tablespace_name from dba_tablespaces; -- 创建表空间&#xff08;需要管理员…...

生成对抗网络模拟缺失数据,辅助PAMAP2数据集仿真实验

PAMAP2数据集是一个包含丰富身体活动信息的数据集&#xff0c;它为我们提供了一个理想的平台来开发和测试HAR模型。本文将从数据集的基本介绍开始&#xff0c;逐步引导大家通过数据分割、预处理、模型训练&#xff0c;到最终的性能评估&#xff0c;在接下来的章节中&#xff0c…...

表格数据处理中大语言模型的微调优化策略研究

论文地址 Research on Fine-Tuning Optimization Strategies for Large Language Models in Tabular Data Processing 论文主要内容 这篇论文的主要内容是研究大型语言模型&#xff08;LLMs&#xff09;在处理表格数据时的微调优化策略。具体来说&#xff0c;论文探讨了以下…...

卡达掐发展史

自行车是一种简单而又伟大的交通工具。自从19世纪诞生以来&#xff0c;它不仅改变了人们的出行方式&#xff0c;也深刻地影响了我们的生活方式、城市布局以及健康观念。作为一种绿色、经济的出行工具&#xff0c;自行车至今仍在全球范围内被广泛使用。本文将从自行车的历史、结…...

初学 flutter 问题记录

windows搭建flutter运行环境 一、运行 flutter doctor遇到的问题 Xcmdline-tools component is missingRun path/to/sdkmanager --install "cmdline-tools;latest"See https://developer.android.com/studio/command-line for more details.1&#xff09;cmdline-to…...

大数据实验4-HBase

一、实验目的 阐述HBase在Hadoop体系结构中的角色&#xff1b;能够掌握HBase的安装和配置方法熟练使用HBase操作常用的Shell命令&#xff1b; 二、实验要求 学习HBase的安装步骤&#xff0c;并掌握HBase的基本操作命令的使用&#xff1b; 三、实验平台 操作系统&#xff1…...

CentOS:A服务器主动给B服务器推送(上传),B服务器下载A服务器文件(下载)

Linux:常识(bash: ip command not found )_bash: ip: command not found-CSDN博客 rsync 中断后先判断程序是否自动重连:ps aux | grep rsync 查看目录/文件是否被使用(查询线程占用):lsof /usr/local/bin/mongodump/.B_database1.6uRCTp 场景:MongoDB中集合非常大需要…...

如何选择服务器

如何选择服务器 选择服务器时应考虑以下几个关键因素&#xff1a; 性能需求。根据网站的预期流量和负载情况&#xff0c;选择合适的处理器、内存和存储容量。考虑网站是否需要处理大量动态内容或高分辨率媒体文件。 可扩展性。选择一个可以轻松扩展的服务器架构&#xff0c;以便…...

el-table最大高度无法滚动

解决el-table同时使用fixed和计算的最大高度时固定右边的列无法跟随滚动的问题 原因&#xff1a;el-table组件会根据传入的 max-height 计算表格内容部分 和 fixed部分的最大高度&#xff0c;以此来生成滚动条和产生滚动效果&#xff0c;当传入的 max-height 为一个计算的高度…...

YOLO-FaceV2: A Scale and Occlusion Aware Face Detector

《YOLO-FaceV2:一种尺度与遮挡感知的人脸检测器》 1.引言2.相关工作3.YOLO-FaceV23.1网络结构3.2尺度感知RFE模型3.3遮挡感知排斥损失3.4遮挡感知注意力网络3.5样本加权函数3.6Anchor设计策略3.7 归一化高斯Wasserstein距离 4.实验4.1 数据集4.2 训练4.3 消融实验4.3.1 SEAM块4…...

如何使用 Python 开发一个简单的文本数据转换为 Excel 工具

目录 一、准备工作 二、理解文本数据格式 三、开发文本数据转换为Excel工具 读取CSV文件 将DataFrame写入Excel文件 处理其他格式的文本数据 读取纯文本文件: 读取TSV文件: 四、完整代码与工具封装 五、使用工具 六、总结 在数据分析和处理的日常工作中,我们经常…...

全卷积网络(Fully Convolutional Networks, FCN)

全卷积网络&#xff08;Fully Convolutional Networks, FCN&#xff09; 什么是 FCN&#xff1f; 全卷积网络&#xff08;Fully Convolutional Networks, FCN&#xff09;是一种用于图像语义分割的深度学习模型。与传统的卷积神经网络&#xff08;CNN&#xff09;不同&#x…...

【计算机网络】HTTP协议

一、网址 1.URL URL就是我们平时说的网址 2.urlencode/urldecode 像 / ? : 等这样的字符&#xff0c;已经被url当做特殊意义理解了。因此这些字符不能随意出现 如果某个参数中需要带有这些特殊字符&#xff0c;就必须先对特殊字符进行转义 -> urlencode 服务器收到url…...

IT服务团队建设与管理

在 IT 服务团队中&#xff0c;需要明确各种角色。例如系统管理员负责服务器和网络设备的维护与管理&#xff1b;软件工程师专注于软件的开发、测试和维护&#xff1b;运维工程师则保障系统的稳定运行&#xff0c;包括监控、故障排除等。通过清晰地定义每个角色的职责&#xff0…...

STM32总体架构简单介绍

目录 一、引言 二、STM32的总体架构 1、三个被动单元 &#xff08;1&#xff09;内部SRAM &#xff08;2&#xff09;内部闪存存储器 &#xff08;3&#xff09;AHB到APB的桥&#xff08;AHB to APBx&#xff09; 2、四个主动&#xff08;驱动&#xff09;单元 &#x…...

C++自动化测试:GTest 与 GitLab CI/CD 的完美融合

在现代软件开发中&#xff0c;自动化测试是保证代码质量和稳定性的关键手段。对于C项目而言&#xff0c;自动化测试尤为重要&#xff0c;它能有效捕捉代码中的潜在缺陷&#xff0c;提高代码的可维护性和可靠性。本文将重点介绍如何在C项目中结合使用Google Test&#xff08;GTe…...

Python 虚拟环境使用指南

Python 虚拟环境使用指南 博客 一、创建虚拟环境 在开始使用Python虚拟环境之前&#xff0c;我们需要先创建一个新的虚拟环境。 1. 基础创建流程 首先&#xff0c;进入您的项目目录&#xff1a; cd path\to\your\project然后使用以下命令创建虚拟环境&#xff1a; pytho…...

MySQL面试-1

InnoDB中ACID的实现 先说一下原子性是怎么实现的。 事务要么失败&#xff0c;要么成功&#xff0c;不能做一半。聪明的InnoDB&#xff0c;在干活儿之前&#xff0c;先将要做的事情记录到一个叫undo log的日志文件中&#xff0c;如果失败了或者主动rollback&#xff0c;就可以通…...

Harbor2.11.1生成自签证和配置HTTPS访问

文章目录 HTTPS的工作流程部署Harbor可参考上一篇文章生成自签证书1.修改/etc/hosts文件2.生成证书a.创建存放证书路径b.创建ca.key密钥c.创建ca.crtd.创建给Harbor服务器使用密钥 yunzhidong.harbor.com.keye.创建给Harbor服务器使用证书签名请求文件 yunzhidong.harbor.com.c…...

鸿蒙开发Hvigor插件动态生成代码

Hvigor允许开发者实现自己的插件&#xff0c;开发者可以定义自己的构建逻辑&#xff0c;并与他人共享。Hvigor主要提供了两种方式来实现插件&#xff1a;基于hvigorfile脚本开发插件、基于typescript项目开发。下面以基于hvigorfile脚本开发插件进行介绍。 基于hvigorfile脚本…...

VSCode 新建 Python 包/模块 Pylance 无法解析

问题描述&#xff1a; 利用 VSCode 写代码&#xff0c;在项目里新建一个 Python 包或者模块&#xff0c;然后在其他文件里正常导入这个包或者模块时出现&#xff1a; Import “xxxx” could not be resolved Pylance (reportMissingImports) 也就是说 Pylance 此时无法解析我们…...

【论文笔记】Number it: Temporal Grounding Videos like Flipping Manga

&#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&#xff0c;为生民立命&#xff0c;为往圣继绝学&#xff0c;为万世开太平。 基本信息 标题: Number it: Temporal Grou…...

【C++】list模拟实现(详解)

本篇来详细说一下list的模拟实现&#xff0c;list的大体框架实现会比较简单&#xff0c;难的是list的iterator的实现。我们模拟实现的是带哨兵位头结点的list。 1.准备工作 为了不和C库里面的list冲突&#xff0c;我们在实现的时候用命名空间隔开。 //list.h #pragma once #…...

Java基础-组件及事件处理(下)

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 面板组件 说明 常见组件 JScrollPane常用构造方法 JScrollPane设置面板滚动策略的方法 JScrollPane滚…...

太通透了,Android 流程分析 蓝牙enable流程(应用层/Framework/Service层)

零. 前言 由于Bluedroid的介绍文档有限&#xff0c;以及对Android的一些基本的知识需要了(Android 四大组件/AIDL/Framework/Binder机制/JNI/HIDL等)&#xff0c;加上需要掌握的语言包括Java/C/C等&#xff0c;加上网络上其实没有一个完整的介绍Bluedroid系列的文档&#xff0…...

《硬件架构的艺术》笔记(五):低功耗设计

介绍 能量以热量形式消耗&#xff0c;温度升高芯片失效率也会增加&#xff0c;增加散热片或风扇会增加整体重量和成本&#xff0c;在SoC级别对功耗进行控制就可以减少甚至可能消除掉这些开支&#xff0c;产品也更小更便宜更可靠。本章描述了减少动态功耗和静态功耗的各种技术。…...

【Ubuntu24.04】服务部署(虚拟机)

目录 0 背景1 安装虚拟机1.1 下载虚拟机软件1.2 安装虚拟机软件1.2 安装虚拟电脑 2 配置虚拟机2.1 配置虚拟机网络及运行初始化脚本2.2 配置服务运行环境2.2.1 安装并配置JDK172.2.2 安装并配置MySQL8.42.2.3 安装并配置Redis 3 部署服务4 总结 0 背景 你的服务部署在了你的计算…...