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

C++类与对象学习笔记(一)

https://www.bilibili.com/video/BV1jm4y1w7pa?spm_id_from=333.788.player.switch&vd_source=e8984989cddeb3ef7b7e9fd89098dbe8&p=6
🚩​🚩🚩来自b站“码农论坛”的视频“类与对象”做的笔记🚩​🚩🚩

类与对象

    • 1-1 cpp结构体的成员函数
    • 1-2 对象和类-类的访问权限
    • 1-3 对象和类-简单使用类
    • 1-4 构造函数和析构函数

1-1 cpp结构体的成员函数

在 C 语言中,结构体不能包含函数。
C 语言的结构体只能用于存储数据,不能直接定义逻辑或操作。
尽管你可以将函数指针存储在结构体中,以间接实现某种形式的“行为”,但这不是将函数作为结构体的成员。

#include <stdio.h>  
// 定义一个结构体  
struct Point {  int x;  int y;  
};  // 定义一个函数  
void printPoint(struct Point p) {  printf("Point(%d, %d)\n", p.x, p.y);  
}  int main() {  struct Point p1 = {10, 20};  printPoint(p1); // 使用函数  return 0;  
}

在这个示例中,struct Point 只包含数据成员,其逻辑是通过外部函数来实现的。

//在 C++ 语言中,结构体(struct)可以包含成员函数。
//这使得结构体不仅可以存储数据,还可以对这些数据进行操作。
//C++ 的结构体和类(class)之间的主要区别只是默认的访问控制:结构体成员默认是公共的,而类成员默认是私有的。
#include <iostream>  
using namespace std;  // 定义一个结构体  
struct Point {  int x;  int y;  // 成员函数  void print() {  cout << "Point(" << x << ", " << y << ")" << endl;  }  
};  int main() {  Point p1 = {10, 20};  p1.print(); // 调用成员函数  return 0;  
}

在这个示例中,struct Point 包含一个成员函数 print(),该函数可以访问和操作结构体的成员 x 和 y。
结构体(struct)在C语言和C++中的其他差异
访问控制‌:C语言中的结构体没有访问控制的概念,所有成员默认都是公有的;而C++中的结构体可以有访问控制,默认情况下成员是公有的‌。

继承‌:C语言不支持继承,因此结构体不能作为其他结构体或类型的基类;而C++支持继承,结构体可以作为基类‌。

构造函数和析构函数‌:C语言中没有构造函数和析构函数的概念;而C++中的结构体可以有构造函数和析构函数‌。

类型兼容性‌:C语言中的结构体类型严格依赖于其声明,即使成员列表相同,两个不同的结构体类型也不兼容;而C++中的结构体支持类型兼容性,如果两个结构体具有相同的成员列表,则它们是兼容的‌。

命名空间‌:C语言没有命名空间的概念,所有的结构体定义都在全局作用域内;而C++支持命名空间,允许将结构体定义组织在不同的命名空间中,以避免命名冲突‌。

//在CPP中,结构体就是类,把定义结构体的关键字改成class
#include <iostream>  
using namespace std;  
// 结构体变类:1.将struct改成class 2.将class里面加上public:
class Point {
public:  int x;  int y;  // 成员函数  void print() {  cout << "Point(" << x << ", " << y << ")" << endl;  }  
};  int main() {  Point p1;p1 = {10, 20};  p1.print(); // 调用成员函数  return 0;  
}
//1.类的成员函数可以在类的外面,加类名和:: 2.在类里面只需要写函数的声明即可
class Point {
public:  int x;  int y;  // 成员函数  void print();
};  void Point::print() {  cout << "Point(" << x << ", " << y << ")" << endl;  
}  int main() {  Point p1;p1 = {10, 20};  p1.print(); // 调用成员函数  return 0;  
}

1-2 对象和类-类的访问权限

  1. 类的成员有三种访问权限:public、private和protected,分别表示公有的、私有的和受保护的。
  2. 在类的内部(类的成员函数中),无论成员被声明为public还是private,都是可以访问。
  3. 在类的内部(定义类的代码之外),只能访问public成员,不能访问private,protected成员。
  4. 在一个类体的定义中,private和public可以出现多次。
  5. 结构体的成员缺省为public,类的成员缺省为private。eg.: 对类来说,所有的成员都是私有的,在main函数中无法直接访问
  6. private的意义在于隐藏类的数据和实现,把需要向外暴露的成员声明为public。
#include <iostream>  
using namespace std;  class Point {
public:  int x;  int y;void print();// 成员函数  
};  void Point::print() {  cout << "Point(" << x << ", " << y << ", "<< z <<")" << endl;  
}  int main() {  Point p1;p1 = {10,20};  p1.print(); // 调用成员函数    return 0;  
}

1-3 对象和类-简单使用类

编程思想和方法的改变,披着C++外衣的C程序员

1.类的成员函数可以直接访问该类其它的成员函数(可以递归)。

2.类的成员函数可以重载,可以使用默认参数。

3.类指针的用法与结构体指针用法相同。

4.类的成员可以是任意数据类型(类中枚举)。

5.可以为类的成员指定缺省值(C++11标准)。

6.类可以创建对象数组,就像结构体数组一样。

7.对象可以作为实参传递给函数,一般传引用。

8.可以用new动态创建对象,用delete释放对象。

9.在类的外部,一般不直接访问(读和写)对象的成员,而是用成员函数。

10.对象一般不用memset()清空成员变量,可以写一个专用于清空成员变量的成员函数。

11.对类和对象用sizeof运算符意义不大,一般不用。

12.用结构体描述纯粹的数据,用类描述对象。

13.在类的声明中定义的函数都将自动成为内联函数;在类的声明之外定义的函数如果使用了inline限定符,也是内联函数。

14.为了区分类的成员变量和成员函数的形参,把成员变量名加m_前缀或_后缀,如m_name或name_

15.类的分文件编写和函数分文件编写的思路和方法是一样的,一般情况下,把声明类的代码放在头文件中,把成员函数定义的代码放在源文件中。

#include <stdio.h>  
#include <iostream> 
#include <string.h>
using namespace std;  class Point {
public:  int x;  int y;string name;enum{girl = 1, boy = 2};int sex;int times = 0;//记录递归的次数//9.在类的外部,一般不直接访问(读和写)对象的成员,而是用三个成员函数:清空,获取值,设置值void initdata()//专用于清空全部成员变量的成员函数{name.clear();x = 0;}int get_x(){return x;}void set_x(int x){}void Show() {if(times++ > 10) return;cout << x << " " <<  y << endl;if(sex == girl){;}}  void print();//这里要提前声明,不然会报错
};  inline void Point::print() 
{  cout << x <<  y << endl;
}  int main() 
{  Point p1;p1 = {10,20};  p1.Show(); // 调用成员函数p1.sex = p1.girl;  return 0;  
}

1-4 构造函数和析构函数

构造函数:在创建对象时,“自动”地进行初始化工作。
析构函数:在销毁对象前,“自动”地完成清理工作。

1.构造函数: 语法: 类名(){…} ·访问权限必须是public ·函数名必须与类名相同 ·没有返回值,也不写void ·可以有参数,可以重载,可以有默认参数 ·创建对象时会自动调用一次,不能手工调用。

2.析构函数:用于释放资源 语法:~类名(){…} ·访问权限必须是public。 ·函数名必须在类名前加~ ·没有返回值,不能重载 ·销毁对象前只会自动调用一次,但是可以手工调用,不过手工调用的场景非常少

demo程序

#include <stdio.h>  
#include <iostream> 
#include <string.h>
using namespace std;  class Point{
public:  string m_name; //姓名属性int m_age;//年龄属性char m_memo[301];//备注int* m_ptr;Point()//构造函数,对三个成员变量进行初始化{initdata();//m_ptr = nullptr;cout << "调用了Point()构造函数。\n" << endl;}Point(string name)//构造函数,对三个成员变量进行初始化{initdata();cout << "调用了Point(name)构造函数。 \n" << endl;}Point(string name, int age)//构造函数,对三个成员变量进行初始化{initdata();cout << "调用了Point(name,age)构造函数。 \n" << endl;}void initdata(){m_name.clear(); m_age = 0; memset(m_memo,0,sizeof(m_memo));}~Point(){//if(m_ptr != nullptr) delete m_ptr; //这里如果构造函数没有被调用,指针不会初始化为空cout << "调用了~Point()析构函数。\n" << endl;}void Show() {cout << "姓名:" << m_name << ",年龄:" << m_age <<",备注:" << m_memo << endl;}  
};  
int main() 
{  //Point p1;//创建对象并自动调用没有参数的构造函数//Point p1("小红");//调用有name参数的构造函数,多个构造函数不能同时调用哦Point p1("小红",50);//调用有name,age参数的构造函数p1.Show(); //调用成员函数p1.~Point();return 0;  
}

析构函数的细节:

注意:
1.如果没有提供构造/析构函数,编译器将提供空实现的构造/析构函数
2.如果提供了构造/析构函数,编译器将不提供空实现的构造/析构函数
//输入输出都没有的就是空实现的构造/析构函数,如果自己定义了有参数的构造函数,那么在主函数调用时就不能调用空输入参数的函数了。
3.创建对象时,如果重载了构造函数,编译器根据实参匹配相应的构造函数

4.创建对象时不要在对象名后面加空的圆括号,编译器误认为时声明函数(没有构造函数、构造函数没有参数、构造函数的参数都有默认参数)
5.在构造函数名后面加括号和参数不是调用构造函数,是创建匿名对象(!!!很重要!!!)
6.接受一个参数的构造函数允许使用赋值语法将对象初始化为一个值(可能会导致问题,不推荐使用)

7.以下两行代码有本质的区别: Point p1 = Point("cy"20);//显示创建对象 Point p1;//创建对象 p1 = Point("cy"20);//创建匿名对象,然后给现有的对象赋值;一共创建了两个对象
8.用new/delete创建/销毁对象时,也会调用构造/析构函数
9.不建议在构造/析构函数中写太多的代码,可以调用成员函数

10.除了初始化,不建议让构造做太多工作(只能成功不会失败),因为没有返回值
11.C++11支持使用统一初始化列表
12.如果类的成员也是类,创建对象的时候,先构造成员类;销毁对象的时候,先析构成员类

int main() 
{  //Point* p1 = new Point();Point* p1 = new Point("cy",20);p1->Show(); // 调用成员函数delete p1;return 0;  
}

相关文章:

C++类与对象学习笔记(一)

https://www.bilibili.com/video/BV1jm4y1w7pa?spm_id_from333.788.player.switch&vd_sourcee8984989cddeb3ef7b7e9fd89098dbe8&p6 &#x1f6a9;​&#x1f6a9;&#x1f6a9;来自b站“码农论坛”的视频“类与对象”做的笔记&#x1f6a9;​&#x1f6a9;&#x1f6a…...

wrk如何测试post请求

wrk git地址 https://github.com/wg/wrk wrk 默认是针对 GET 请求的&#xff0c;但它也可以通过添加自定义的 HTTP 请求体和 头部信息来进行 POST 请求的压测。以下是详细的步骤&#xff1a; wrk -t4 -c100 -d30s -s post.lua http://example.com-t4&#xff1a;使用 4 个线…...

rust使用log与env_logger两个crate实现同时向控制台和文件输出日志。并在隔日自动创建新日志文件。

还是老习惯,不用太多的废话。直接上代码。 不过我之说一句话,这块需要自定义一个输出的Target来实现这个功能。 log = { version="0.4.22", default-features = false } env_logger = "0.11.5"pub(crate) fn setup_log_env(log_level: LevelFilter) {...

异步将用户信息存入 Redis 缓存

主要是为了解决Redis的缓存问题&#xff0c;异步将用户信息存入Redis缓存 首先我们需要引入一部线性池 核心概念 异步执行&#xff1a; 异步执行是指任务提交后不会立即等待其完成&#xff0c;而是立即返回并继续执行其他任务。任务将在后台执行&#xff0c;执行结果可以通过…...

WebRTC服务质量(05)- 重传机制(02) NACK判断丢包

WebRTC服务质量&#xff08;01&#xff09;- Qos概述 WebRTC服务质量&#xff08;02&#xff09;- RTP协议 WebRTC服务质量&#xff08;03&#xff09;- RTCP协议 WebRTC服务质量&#xff08;04&#xff09;- 重传机制&#xff08;01) RTX NACK概述 WebRTC服务质量&#xff08;…...

MySQL 存储过程与函数:增强数据库功能

一、MySQL 存储过程与函数概述 &#xff08;一&#xff09;存储过程的定义与特点 存储过程是一组预编译的 SQL 语句集合&#xff0c;它们被存储在数据库中&#xff0c;可根据需要被重复调用。例如&#xff0c;在一个电商系统中&#xff0c;经常需要查询某个时间段内的订单数据…...

丹摩|丹摩助力selenium实现大麦网抢票

丹摩&#xff5c;丹摩助力selenium实现大麦网抢票 声明&#xff1a;非广告&#xff0c;为用户体验 1.引言 在人工智能飞速发展的今天&#xff0c;丹摩智算平台&#xff08;DAMODEL&#xff09;以其卓越的AI算力服务脱颖而出&#xff0c;为开发者提供了一个简化AI开发流程的强…...

springcloud-gateway获取应用响应信息乱码

客户端通过springcloud gateway跳转访问tongweb上的应用&#xff0c;接口响应信息乱码。使用postman直接访问tongweb上的应用&#xff0c;响应信息显示正常。 用户gateway中自定义了实现GlobalFilter的Filter类&#xff0c;在该类中获取了上游应用接口的响应信息&#xff0c;直…...

Scala项目(一)

1&#xff0c;创建dao&#xff0c;models&#xff0c;service&#xff0c;ui等软件包 2&#xff0c;在各软件包下创建scala类 软件包dao里的代码 package org.app package daoimport models.BookModelimport scala.collection.mutable.ListBuffer//图书&#xff0c;数据操作…...

node(2) - npm run 原理

1. npm run 执行原理 npm run 命令的原理是执行 package.json 文件中定义的脚本。当你在命令行中运行 npm run 时,npm 会查找 package.json 文件中的 scripts 字段,然后执行对应的脚本命令。 2. 示例 2.1 以 dev:weapp 为例 运行 npm run dev:weapp 命令;npm 会查找 packa…...

概率论得学习和整理24:EXCEL的各种图形,统计图形

目录 0 EXCEL的各种图形&#xff0c;统计图形 1 统计图形 / 直方图 / 其实叫 频度图 hist最合适(用原始数据直接作图) 1.1 什么是频度图 1.2 如何创建频度图&#xff0c;一般是只选中1列数据&#xff08;1个数组&#xff09; 1.3 如何修改频度图的宽度 1.4 hist图的一个特…...

【zlm】 webrtc源码讲解三(总结)

目录 setsdp onwrite ​编辑 play 参考 setsdp onwrite play 参考 【zlm】 webrtc源码讲解_zlm webrtc-CSDN博客 【zlm】 webrtc源码讲解&#xff08;二&#xff09;_webrtc 源码-CSDN博客...

YashanDB共享集群产品能力观测:细节足见功底

本文基于前泽塔数科研发总监-王若楠2024年11月在“2024年国产数据库创新生态大会”-“根”技术专场的演讲整理形成&#xff0c;主要对崖山共享集群YAC的架构、功能、高可用性、性能四大方面进行全面测试&#xff0c;并分享了测试环境和测试结论。 年初&#xff0c;基于某些商业…...

游戏引擎学习第50天

仓库: https://gitee.com/mrxiao_com/2d_game Minkowski 这个算法有点懵逼 回顾 基本上&#xff0c;现在我们所处的阶段是&#xff0c;回顾最初的代码&#xff0c;我们正在讨论我们希望在引擎中实现的所有功能。我们正在做的版本是初步的、粗略的版本&#xff0c;涵盖我们认…...

前端部署实战:从人工发布到全自动化流程

"又发错环境了&#xff01;"周四下午,测试同学小李急匆匆地找到我。原来是开发人员手动部署时,不小心把测试代码发布到了生产环境。这已经是本月第二次类似的事故了。 回想起每次发布时的场景&#xff1a;手动打包、手动上传、手动替换文件...每一步都战战兢兢,生怕…...

JVM系列之内存区域

每日禅语 有一位年轻和尚&#xff0c;一心求道&#xff0c;多年苦修参禅&#xff0c;但一直没有开悟。有一天&#xff0c;他打听到深山中有一古寺&#xff0c;住持和尚修炼圆通&#xff0c;是得道高僧。于是&#xff0c;年轻和尚打点行装&#xff0c;跋山涉水&#xff0c;千辛万…...

如何用3个月零基础入门网络安全?_网络安全零基础怎么学习

&#x1f91f; 基于入门网络安全/黑客打造的&#xff1a;&#x1f449;黑客&网络安全入门&进阶学习资源包 前 言 写这篇教程的初衷是很多朋友都想了解如何入门/转行网络安全&#xff0c;实现自己的“黑客梦”。文章的宗旨是&#xff1a; 1.指出一些自学的误区 2.提供…...

易语言OCR证件照文字识别

一.引言 文字识别&#xff0c;也称为光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09;&#xff0c;是一种将不同形式的文档&#xff08;如扫描的纸质文档、PDF文件或数字相机拍摄的图片&#xff09;中的文字转换成可编辑和可搜索的数据的技术。随着技…...

【人工智能】基于Python的自然语言处理:深入实现文本相似度计算

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 文本相似度计算是自然语言处理(NLP)中的核心任务,广泛应用于搜索引擎、推荐系统、问答系统等领域。本文全面解析文本相似度计算的核心技术,使用Python中的spaCy和sentence-transformers库实现多种方法,包括基…...

基于wifi的火焰报警系统设计(论文+源码)

1 总体方案设计 在本次基于wifi模板的火焰报警系统中&#xff0c;整个系统架构如图2.1所示&#xff0c;其采用STM32F103单片机作为控制器&#xff0c;并结合DS18B20温度传感器,火焰传感器&#xff0c;ESP8266 WiFi通信模块&#xff0c;蜂鸣器,OLED液晶构成整个系统&#xff0c;…...

【第三节】Git 基本操作指南

目录 前言 一、获取与创建项目 1.1 git init 1.2 git clone 二、基本快照操作 2.1 git add 2.2 git status 2.3 git diff 2.4 git commit 2.5 git reset HEAD 三、 文件管理 3.1 git rm 3.2 git mv 四、Git 文件状态 5.1 工作目录 5.2 暂存区 5.3 本地仓库 5…...

GaLore和Q-GaLore:一种记忆高效的预训练和微调策略,用于大型语言模型(LLMs)

GaLore和Q-GaLore&#xff1a;一种记忆高效的预训练和微调策略&#xff0c;用于大型语言模型&#xff08;LLMs&#xff09; GaLore和Q-GaLore的设计背景、工作原理及其优势 设计背景 随着大型语言模型&#xff08;LLMs&#xff09;的发展&#xff0c;模型的规模和复杂性不断…...

免费开源了一个图床工具 github-spring-boot-starter

文章目录 第一步&#xff0c;新建一个SpringBoot项目第二步&#xff0c;在pom文件里面引入jar包第三步&#xff0c;配置你的github信息github.authorization1、进入github官网&#xff0c;登录账号&#xff0c;点击头像&#xff0c;选择setting2、选择[Developer Settings](htt…...

Android显示系统(13)- 向SurfaceFlinger提交Buffer

Android显示系统&#xff08;01&#xff09;- 架构分析 Android显示系统&#xff08;02&#xff09;- OpenGL ES - 概述 Android显示系统&#xff08;03&#xff09;- OpenGL ES - GLSurfaceView的使用 Android显示系统&#xff08;04&#xff09;- OpenGL ES - Shader绘制三角…...

python小课堂(一)

基础语法 1 常量和表达式2 变量和类型2.1 变量是什么2.2 变量语法 3 变量的类型3.1 动态类型特性 4 注释4.1注释是什么 5 输入输出5.1 print的介绍5.2 input 6 运算符6.1 算术运算符在这里插入图片描述6.2 关系运算符6.3 逻辑运算符6.4赋值运算符 1 常量和表达式 在print()中可…...

【原创教程】西门子1500TCP_UDP通信说明大全(下篇)

2.3.3 TRCV故障说明 通讯无法正常连接时,ERROR引脚和STATUS引脚得状态有助于我们判断错误得原因,根据下表得提示,快速排除问题。 2.3.4 TRCV使用 点击TRCV指令得右上角蓝色图标,打开开始组态画面,按照控制要求填写 EN_R:用于激活接收的控制参数,及何时使用TRCV的接收功…...

【报错记录】Ubuntu22.04解决开机卡在 /dev/sda5 : clean , *files , *blocks

一个愿意伫立在巨人肩膀上的农民...... 一、错误现象 本人的电脑安装Windows10和Ubuntu22.04双系统&#xff0c;一次训练中电脑死机无法开机&#xff0c;重启之后便出现如下错误&#xff0c;在网上寻找过很多方法均无效&#xff0c;在root下禁用了samba服务&#xff0c;也无济…...

JumpServer开源堡垒机搭建及使用

目录 一,产品介绍 二,功能介绍 三,系统架构 3.1 应用架构 3.2 组件说明 3.3 逻辑架构 3.3 逻辑架构 四,linux单机部署及方式选择 4.1 操作系统要求(JumpServer-v3系列版本) 4.1.1 数据库 4.1.3创建数据库参考 4.2 在线安装 4.2.1 环境访问 4.3 基于docker容…...

libilibi项目总结(17)Elasticsearch 的使用

这段代码定义了一个 EsSearchComponent 类&#xff0c;主要用于与 Elasticsearch 进行交互&#xff0c;执行一些基本的操作&#xff0c;如创建索引、保存、更新和删除文档&#xff0c;及搜索操作。以下是对每部分代码的详细解释&#xff1a; 1. 类的依赖注入 Resource privat…...

C++ 模版函数 函数模版 区别

C中&#xff0c;函数模板&#xff08;Function Template&#xff09;和模板函数&#xff08;Template Function&#xff09;是同一个概念&#xff0c;通常没有区分&#xff0c;但为了避免混淆&#xff0c;有时我们可以从不同的角度来看待它们。 1. 函数模板 (Function Templat…...

SpringBoot 3.4.x踩坑记录及解决方案(持续更新)

废话 最近使用JDK17Spring Boot3.4.0 做新项目遇到的一些坑&#xff0c;记录并且给出一些实际的解决方案 一、集成Mybatis Plus 3.5.9的问题 第一&#xff1a;不能只引入mybatis-plus-spring-boot3-starter依赖了&#xff0c;需要配合mybatis-plus-jsqlparser <dependenc…...

Linux文件属性 --- 七种文件类型---文件.目录、软硬链接、字符设备文件

目录 七种文件类型 1、普通文件和目录 2、链接文件 2.1硬链接 2.2软链接 3、字符设备文件 一、七种文件类型 Linux的文件属性中一共有以下七种类型 &#xff1a; 符号类型含义解释-普通文件纯文本文件&#xff08;ASCII&#xff09;和二进制文件&#xff08;binary&#xff…...

C# 读取EXCEL的数据批量插入单个PDF里的多个位置

C# 读取EXCEL的数据批量插入单个PDF里的多个位置 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.Reflection; usin…...

ARM Linux 虚拟环境搭建

一、目标 在没有arm硬件的情况下&#xff0c;使用QEMU模拟器&#xff0c;在PC上模拟一块ARM开发板&#xff0c;对ARM Linux进行学习。 二、搭建步骤 首先先有一个Linux 开发环境&#xff0c;我目前使用的是Ubuntu20. 首先安装qemu&#xff0c;qemu的官网&#xff1a;https:…...

【功能安全】安全确认

目录 01 功能安全确认介绍 02 安全确认用例 03 安全确认模板 01 功能安全确认介绍 定义: 来源...

LruCache(本地cache)生产环境中遇到的问题及改进

问题&#xff1a;单机qps增加时请求摘要后端&#xff0c;耗时也会增加&#xff0c;因为超过了后端处理能力&#xff08;最大qps&#xff0c;存在任务堆积&#xff09;。 版本一 引入LruCache。为了避免数据失效&#xff0c;cache数据的时效性要小于摘要后端物料的更新时间&…...

【21天学习AI底层概念】day8 什么是类意识?

类意识&#xff08;Quasi-Consciousness&#xff09; 是一个用来描述人工智能或复杂系统表现出的类似意识的行为或特性的概念。虽然这种系统不具备真正的意识&#xff08;即主观体验、情感和自我觉知&#xff09;&#xff0c;但在外部表现上&#xff0c;它们可能表现出与有意识…...

PostgreSQL JSON/JSONB 查询与操作指南

PostgreSQL 提供了强大的 JSON 和 JSONB 数据类型及相关操作&#xff0c;适用于存储和查询半结构化数据。本文将详细介绍其常用操作。 1. 基础操作 1.1 JSON 属性访问 ->: 返回 JSON 对象中的值&#xff0c;结果为 JSON 格式。 SELECT {"a": {"b": 1…...

SamOutV2 0.18B模型发布

项目地址 SamOutV2 0.18B模型 采取 em参数共享在参数量减半的情况下将维度从1024 拉升到了1536sft 单论对话 loss 保持1.8如果未来匹配state 推理代码性能不变的同时推理任意长度使用资源空间保持不变 模型代码 import torchclass MaxState(torch.nn.Module):def __init__(…...

〔 MySQL 〕事务管理

事务代码目录 1. 设置事务隔离级别 2. 开启事务 3. CRUD操作 3.1 创建&#xff08;Create&#xff09; 3.2 读取&#xff08;Read&#xff09; 3.3 更新&#xff08;Update&#xff09; 3.4 删除&#xff08;Delete&#xff09; 4. 提交或回滚事务 5. 示例&#xff1a…...

centOS定时任务-cron服务

最近在训练模型的过程中&#xff0c;经常会因为内存爆炸而停止模型训练过程&#xff0c;而且因为内存占满停止的训练进程甚至都没有任何的报错提示。 1、需要减少num_worker的数量&#xff0c;降低需要占用内存的数据数量 2、可以通过free -h监控内存的占用情况 3、可以通过lin…...

ubuntu22.04.5本地apt源部署

很多情况下&#xff0c;内网服务器无法连接互联网&#xff0c;这样如果原始系统只是最基本的下载安装包&#xff0c;因为存在依赖包不全的情况&#xff0c;难以对其进行更新及通过apt安装包 所以为解决不能联网的问题&#xff0c;首先先通过可以联网的机器制造好源&#xff0c;…...

CSS 实现带tooltip的slider

现代 CSS 强大的令人难以置信 这次我们来用 CSS 实现一个全功能的滑动输入器&#xff0c;也就是各大组件库都有的slider&#xff0c;效果如下 还可以改变一下样式&#xff0c;像这样 特别是在拖动时&#xff0c;tooltip还能跟随拖动的方向和速度呈现不同的倾斜角度&#xff0c…...

【LeetCode每日一题】——220.存在重复元素 III

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时空频度】九【代码实现】十【提交结果】 一【题目类别】 数组 二【题目难度】 困难 三【题目编号】 220.存在重复元素 III 四【题目描述】 给你一个…...

Git命令

目录 一、创建版本库 二、pwd 命令是用于显示当前的目录 三、通过命令 git init 把这个目录变成git可以管理的仓库 四、ll 五、添加文件和修改提交文件 1.创建文件test.txt --- 此刻文件在工作区&#xff08;WorkSpace&#xff09; 2.使用命令 git add test.txt添加到暂…...

2024第十六届蓝桥杯模拟赛(第二期)-Python

# 2024第十六届蓝桥杯模拟赛&#xff08;第二期&#xff09;-Python题解 # 自己改注释# -----------------------1------------------------ # def prime(x): # if x < 2: # return 0 # for i in range(2, int(x ** 0.5) 1): # if x % i 0: # …...

数据结构:Win32 API详解

目录 一.Win32 API的介绍 二.控制台程序(Console)与COORD 1..控制台程序(Console): 2.控制台窗口坐标COORD&#xff1a; 3.GetStdHandle函数&#xff1a; &#xff08;1&#xff09;语法&#xff1a; &#xff08;2&#xff09;参数&#xff1a; 4.GetConsoleCursorInf…...

Hive-4.0.1数据库搭建(可选配置用户名密码远程连接,涵盖切换为tez引擎)

一、hive搭建&#xff08;所依赖的Hadoop集群参照文章&#xff1a;最新版hadoop-3.4.0集群安装和配置&#xff08;目前论坛的都是老古董了&#xff0c;看我的准没错&#xff01;&#xff01;&#xff01;&#xff09;这里以三台服务器为例_hadoop 3.4安装-CSDN博客&#xff09;…...

【从零开始入门unity游戏开发之——C#篇13】命名规范——驼峰命名法和帕斯卡命名法,函数(方法)的使用介绍

文章目录 一、命名规范1、**驼峰命名法&#xff08;Camel Case&#xff09;**用途&#xff1a; 2、**帕斯卡命名法&#xff08;Pascal Case&#xff09;**用途&#xff1a; 3、**C# 中命名约定的最佳实践**3.1 **类、结构体、接口、枚举、委托**3.2 **方法、属性、事件**3.3 **…...

Android 写排行榜,顶部前三

activity_step_rank.xml <?xml version"1.0" encoding"UTF-8"?> <FrameLayout android:layout_height"match_parent" android:layout_width"match_parent" android:id"id/fragment_parent" android:orientation…...