C# 操作符
C# 操作符
- 一、操作符概览
- 二、优先级与运算顺序
- 三、各类操作符的实例
一、操作符概览
-
操作符(运算符)的本质是函数的简记法
-
操作符不能脱离与它关联的数据类型
int x = 5; int y = 4; int z = x / y; Console.WriteLine(z);//输出1double a = 5.0; double b = 4.0; double c = a / b; Console.WriteLine(c);//输出1.25
二、优先级与运算顺序
-
按表格顺序从上到下优先级依次降低
-
同优先级操作符从左到右
-
赋值操作符从右到左
int x = 100; int y = 200; int z = 300; x += y += z; Console.WriteLine(x);//600 Console.WriteLine(y);//500 Console.WriteLine(z);//300
三、各类操作符的实例
x.y
成员访问操作符
-
访问外层名称空间的子集名称空间
-
访问名称空间的类型
-
访问类型的静态成员
System.IO.File.Create("D:\\HelloWorld");
System.IO
:外层名称空间的子集名称空间IO.File
:名称空间的类型File.Create
:类型的静态成员
-
访问对象的成员
Form myForm = new Form(); myForm.Text = "Hello, World!"; myForm.ShowDialog();
-
f(x)
方法调用操作符 -
a[x]
元素访问操作符//访问数组 int[] myArray1 = new int[10]; int[] myArray2 = new int[] { 1,2,3,4,5}; int[] myArray3 = new int[5] { 1, 2, 3, 4, 5 }; Console.WriteLine(myArray2[0]);//访问字典 class Program {static void Main(string[] args){Dictionary<string, Student> stuDic = new Dictionary<string, Student>();for (int i = 0; i < 100; i++){Student student = new Student();student.Name = "s_" + i.ToString();student.Score = i;stuDic.Add(student.Name, student);}Student number6 = stuDic["s_6"];Console.WriteLine(number6.Score);//6}}class Student {public string Name;public int Score; }
-
x++
后置自增 ,x--
后置自减 。遇到赋值,先赋值,后自增/自减int x = 100;int y = x++;Console.WriteLine(x);//101Console.WriteLine(y);//100
-
new
:在内存中创造一个类的实例,(1)立即调用这个实例的构造器,(2)调用实例的初始化器Form myForm1 = new Form();Form myForm2 = new Form() { Text = "Hello" };
//匿名类型var person = new { Name = "Mr.Ok", Age = 34 };Console.WriteLine(person.Name);//Mr.OkConsole.WriteLine(person.Age);//34
-
typeof
操作符:查看一个类型的内部结构Type t = typeof(int);Console.WriteLine(t.Namespace);//SystemConsole.WriteLine(t.FullName);//System.Int32Console.WriteLine(t.Name);//Int32int c = t.GetMethods().Length;foreach (var mi in t.GetMethods()){Console.WriteLine(mi.Name);//CompareTo、 Equals、GetHashCode ......}Console.WriteLine(c);//53
-
default
:获取一个类型的默认值//结构体类型int x = default(int);Console.WriteLine(x);//0
//引用类型Form myForm = default(Form);Console.WriteLine(myForm == null);//true
class Program {static void Main(string[] args){//枚举类型Level1 level1 = default(Level1);Console.WriteLine(level1); //LowLevel2 level2 = default(Level2);Console.WriteLine(level2); //MediumLevel3 level3 = default(Level3);Console.WriteLine(level3); //逻辑出错,输出0}} enum Level1 {Low,Medium,High} enum Level2 {Low = 1,Medium = 0,High = 2}enum Level3 {Low = 2,Medium = 1,High = 3}
-
checked
/unchecked
:检查一个值是否有溢出//第一种用法uint x = uint.MaxValue;uint y = x+1;Console.WriteLine(x);//4294967295Console.WriteLine(y);//0try{uint z = checked(x + 1);Console.WriteLine(z);}catch (OverflowException ex){Console.WriteLine("There's overflow");//There's overflow}
//第二种用法uint x = uint.MaxValue;uint y = x + 1;Console.WriteLine(x);//4294967295Console.WriteLine(y);//0checked{try{uint z = x + 1;Console.WriteLine(z);}catch (OverflowException ex){Console.WriteLine("There's overflow");//There's overflow}}
-
sizeof
: 获取基本类型在内存中占的字节数int x = sizeof(int);Console.WriteLine(x);//4
class Program {static void Main(string[] args){unsafe {int y = sizeof(Student);Console.WriteLine(y);}} }class Student {int ID;long Score; }
-
->
:箭头操作符。会直接操作内存,因此需要放在不安全的上下文使用。只能操作结构体类型。class Program {static void Main(string[] args){unsafe{Student stu;stu.ID = 1;stu.Score = 60;Student* pStu = &stu;pStu->Score = 90;Console.WriteLine(stu.Score);//90}} }struct Student {public int ID;public long Score; }
-
*x
class Program {static void Main(string[] args){unsafe{Student stu;stu.ID = 1;stu.Score = 60;Student* pStu = &stu;pStu->Score = 90;(*pStu).Score = 1000;Console.WriteLine(stu.Score);//100}} }struct Student {public int ID;public long Score; }
-
-x
:相反数操作符,在二进制的基础上,按位取反,再加1int x = int.MinValue;int y = -x;Console.WriteLine(x)//-2147483648Console.WriteLine(y);//-2147483648string xStr = Convert.ToString(x,2).PadLeft(32,'0');//10000000000000000000000000000000string yStr = Convert.ToString(y, 2).PadLeft(32, '0');//10000000000000000000000000000000Console.WriteLine(xStr);Console.WriteLine(yStr);
-
(T)x
:强制类型转换操作符- 隐式类型转换
-
不丢失精度的转换
//短整型转换成长整型 int x = int.MaxValue; long y = x; Console.WriteLine(y);
源 目标 sbyte short、int、long、float、double 或 decimal byte short、ushort、int、uint、long、ulong、float、double 或 decimal short int、long、float、double 或 decimal ushort int、uint、long、ulong、float、double 或 decimal int long、float、double 或 decimal uint long、ulong、float、double 或 decimal long float、double 或 decimal char ushort、int、uint、long、ulong、float、double 或 decimal float double ulong float、double 或 decimal -
子类向父类的转换
-
装箱
-
- 显式类型转换
-
有可能丢失精度(甚至发生错误)的转换,即cast
int x = 100; short y = (short)x; Console.WriteLine(y);
源 目标 sbyte byte、ushort、uint、ulong 或 char byte Sbyte 或 char short sbyte、byte、ushort、uint、ulong 或 char ushort sbyte、byte、short 或 char int sbyte、byte、short、ushort、uint、ulong 或 char uint sbyte、byte、short、ushort、int 或 char long sbyte、byte、short、ushort、int、uint、ulong 或 char ulong sbyte、byte、short、ushort、int、uint、long 或 char char sbyte、byte 或 short float sbyte、byte、short、ushort、int、uint、long、ulong、char 或 decimal double sbyte、byte、short、ushort、int、uint、long、ulong、char、float 或 decimal decimal sbyte、byte、short、ushort、int、uint、long、ulong、char、float 或 double -
拆箱
-
使用Convert类
-
ToString方法与各数据类型的Parse/TryParse方法
-
- 自定义类型转换操作符
class Program {static void Main(string[] args){Stone stone = new Stone();stone.Age = 5000;Monkey wukong = (Monkey)stone;Console.WriteLine(wukong.Age);//10} }class Stone {public int Age;public static explicit operator Monkey(Stone stone){Monkey m = new Monkey();m.Age = stone.Age / 500;return m;} } class Monkey {public int Age; }
- 隐式类型转换
-
/
:除法操作符
int x1 = 5;int y1 = 4;Console.WriteLine(x1 / y1);//1double x2 = 5.0;double y2 = 4.0;Console.WriteLine(x2 / y2);//1.25
//被除数为0int x1 = 5;int y1 = 0;Console.WriteLine(x1 / y1);//报错double x2 = 5.0;double y2 = 0;Console.WriteLine(x2 / y2);//∞
is
:检验一个对象是不是某个类型的对象
class Program{static void Main(string[] args){Teacher t1 = new Teacher();Teacher t2 = null;var result1 = t1 is Teacher;var result2 = t1 is Hunam;var result3 = t2 is Teacher;Console.WriteLine(result1);//TrueConsole.WriteLine(result2);//TrueConsole.WriteLine(result3);//False}}class Animal {public void Eat() {Console.WriteLine("Eating...");}}class Hunam:Animal{public void Think(){Console.WriteLine("Thinking...");}}class Teacher : Hunam{public void Teach(){Console.WriteLine("Teaching...");}}
as
object obj = new Teacher();Teacher t = obj as Teacher;if (t != null){t.Teach();//Teaching...}
&&
和||
,注意短路效应
int x = 3;int y = 4;int a = 3;if (x > y && a++ > 3){Console.WriteLine("Hello");}Console.WriteLine(a);//3
int x = 5;int y = 4;int a = 3;if (x > y && a++ > 3){Console.WriteLine("Hello");}Console.WriteLine(a);//4
int x = 5;int y = 4;int a = 3;if (x > y || a++ > 3){Console.WriteLine("Hello");//Hello}Console.WriteLine(a);//3
int x = 3;int y = 4;int a = 3;if (x > y || ++a > 3){Console.WriteLine("Hello");//Hello}Console.WriteLine(a);//4
相关文章:
C# 操作符
C# 操作符 一、操作符概览二、优先级与运算顺序三、各类操作符的实例 一、操作符概览 操作符(运算符)的本质是函数的简记法 操作符不能脱离与它关联的数据类型 int x 5; int y 4; int z x / y; Console.WriteLine(z);//输出1double a 5.0; double b…...
python下载
一、下载python和IDIE 1.进入python官网 加载可能有点慢,因为是国外网站 下载 点击Downloads按钮,选择版本下载。 安装 勾选两个多选框,点击Install Now安装完成,进入开始菜单,多出一个Python xxx.xxx文件夹&…...
tp5 php获取农历年月日干支甲午
# 切换为国内镜像源 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/# 再次尝试安装 composer require overtrue/chinese-calendar核心写法一个农历转公历,一个公历转农历 农历闰月可能被错误标记(例如 闰四月 应表示…...
MySQL安装完全指南:从零开始到配置优化(附避坑指南)
🔥 前言:为什么你总是装不好MySQL? (实话实说)每次看到新手在MySQL安装环节疯狂踩坑,老司机都忍不住想摔键盘!明明官网下载的安装包,怎么就会报错呢?为什么别人的环境变…...
5.3刷题
P3370 【模板】字符串哈希 #include<bits/stdc.h> using namespace std; #define int long long typedef unsigned long long ull; int n; ull myhash(string s){ull code 0, x 131, y 140814840257324663;for(int i 0; i < s.size(); i){code (code * x (ull)…...
KeyPresser 一款自动化按键工具
1. 简介 KeyPresser 是一款自动化按键工具,它可以与窗口交互,并支持后台运行, 无需保持被控窗口在前台运行。用户可以选择要操作的目标窗口,并通过勾选复选框来控制要发送哪些按键消息。可以从组合框中选择所需的按键,并在编辑框中输入时间间隔以控制按键发送之间的延迟。程…...
# LeetCode 1007 行相等的最少多米诺旋转
LeetCode 1007 行相等的最少多米诺旋转 原题英文:Minimum Domino Rotations For Equal Row 难度:中等 | 标签:数组、贪心 1 题目重述 给定两行长度相同的多米诺骨牌: tops[i] 表示第 i 张骨牌上面的数字;bottoms[…...
【Agent搭建】利用coze平台搭建一个AI销售?
目录 一、关于coze 核心功能 二、搭建属于你自己智能体 备注:(以下说明比较需要调整的板块) 1、从Prompt工程开始 2、搭建工作流 3、添加知识 三、总结 一、关于coze Coze是字节跳动推出的AI应用开发平台,专注于帮助用户快速…...
Linux系统中安装GitLab
一、安装前准备:确认系统要求(新手必看!) 系统版本:推荐 Ubuntu 20.04 或更高(本文以 Ubuntu 22.04 为例)。内存要求: 最低:2GB RAM(仅建议测试环境…...
PowerShell安装Chocolatey
文章目录 环境背景安装参考 环境 Windows 11 专业版PowerShell 7.5.1.NET Framework 4.0Chocolatey v2.4.3 背景 Chocolatey是Windows上的包管理工具,有点类似于Linux的 yum 和 apt 命令。比如,PowerShell里默认没有 grep 命令,则可以通过…...
UDP / TCP 协议
目录 一、前言: 数据封装与分用: 二、网络协议分层模型: 三、UDP / TCP 协议 UDP 协议: 1、UDP 协议段格式: 2、UDP 的特点: TCP 协议: 1、TCP 协议段格式: 2、TCP 协议的十…...
Coding Practice,48天强训(28)
Topic 1:悠悠的重组数组 游游的重组偶数__牛客网 比较简单的一个题,因为前两天写了快速幂算法,一直想着用进位 &1之类的处理偶数,其实就正常用string装数字遍历%2就行了 #include <bits/stdc.h> using namespace std;…...
第一章 初识SpringMVC
一、什么是MVC MVC是一种软件架构模式(是一种软件架构设计思想,不止Java开发中用到,其它语言也需要用到),它将应用分为三块: M:Model(模型) V:View…...
虚幻引擎入门笔记
【虚幻5】UE5新手入门尝试 虚幻引擎的基础设置 1.验证-当文件误删的时候,对其进行验证,可以恢复。 2.虚幻引擎极其强大,可以实现多种复合技能,所在创建项目页面可以看见不只是创建游戏的项目 3.更改虚幻引擎默认的缓存地址。有些…...
Oracle 11g通过dg4odbc配置dblink连接神通数据库
1、安装unixodbc 2、安装神通数据库 3、 配置神通数据库odbc数据源,测试连通性 4、配置透明网关、监听文件以及对应编写的hsodbc的ora文件,我这里是initst.ora ##对应编写的hsodbc的ora文件 vim $ORACLE_HOME/hs/admin/initst.ora ##添加如下 HS_FDS_CO…...
2.2 矩阵
考点一:方阵的幂 1. 计算方法 (1) 找规律法 适用场景:低阶矩阵或具有周期性规律的矩阵。示例: 计算 A ( 0 1 1 0 ) n A \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix}^n A(0110)n: 当 n n n 为奇…...
Linux《进程概念(下)》
在之前我们已经了解了进程基本的概念、知道了如何去创建子进程;还了解了进程状态、进程切换、进程O(1)调度算法等,那么接下来在本篇当中我们就来学习环境变量和程序地址空间的相关知识,相信通过本篇的学习你会有很大的所获,一起加…...
MySQL 比较运算符详解
(1)符号类型运算符 运算符名称作用示例等于运算符判断两个值、字符串或表达式是否相等SELECT * FROM users WHERE age 25SELECT name FROM products WHERE category Electronics<>安全等于运算符安全地判断两个值、字符串或表达式是否相等&…...
No qualifying bean of type ‘XXX‘ available
没有某类型的bean可供使用 问题一解决方案错误问题配置类YuApiClientConfig依赖导入测试方法 问题二解决方法问题现场问题解决 问题一 Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type ‘com.transbit.yuapiclientsd…...
手搓一个 MCP Server 实现水质在线数据查询
随着人工智能技术的快速发展,如何将大语言模型(LLM)与实际业务场景结合,提供精准、可控的服务成为一个热门话题。MCP(Model Context Protocol)作为一种开放协议,为应用程序向 LLM 提供标准化的上下文接口,极大地简化了这一过程。本文将以构建一个水质在线查询 MCP 服务…...
neo4j初尝试
neo4j 下载并安装 这里以ubuntu 下载为例 打开neo4j官网,如下图所示,找到下载中心 选择 每个人可以根据自己的系统进行下载。然后解压tar -xf neo4j-community-2025.04.0-unix.tar.gz,如果不出意外的话,这里就可以直接输入命令启动了&#…...
数据分析业务拆解底层思维
业务拆解 分析前要有方法,从用户体验入手,将业务拆解,找到对象以及对象之间的关系。 电商平台卖的不是用户时间,不是流量,而是机会,而作为一个分析师就得分析机会在哪,帮助平台将机会更好的提…...
Linux运维——Vim技巧一
Vim技巧 一、优化重复操作1.1、 . 命令1.2、* 命令1.3、重复修改示例 二、删除单词(daw)三、对数字做算数运算四、操作符与动作五、插入模式5.1、插入模式下删除5.2、返回普通模式5.3、插入-普通模式5.4、不离开插入模式,粘贴寄存器中的文本5…...
第一节:OpenCV 基础入门-简介与环境搭建
一、OpenCV 是什么?为什么值得学习? OpenCV(Open Source Computer Vision Library) 是一个开源的计算机视觉和机器学习库,由英特尔实验室于1999年发起,现已成为全球计算机视觉领域最广泛使用的工具之一。它…...
前端面经-VUE3篇(二)--vue3组件知识(一)组件注册、props 与 emits、透传、插槽(Slot)
组件允许我们将 UI 划分为独立的、可重用的部分,并且可以对每个部分进行单独的思考。在实际应用中,组件常常被组织成一个层层嵌套的树状结构: 一、注册 Vue 组件本质上是一个可以复用的 自定义 HTML 元素,为了在其他组件中使用一…...
Python的简单练习
两数的最大公约数 def gcd(a, b):while b ! 0:a, b b, a % breturn a# 示例 a 36 b 60 print(f"{a} 和 {b} 的最大公约数是: {gcd(a, b)}") while b ! 0: while:是 Python 的 循环语句,意思是“当...的时候一直重复做某事”。 b ! 0&am…...
ipvsadm,是一个什么工具?
1. ipvsadm 是什么? ipvsadm(IP Virtual Server Administration)是 Linux 内核中 IPVS(IP Virtual Server) 模块的管理工具,用于配置和监控内核级的负载均衡规则。它是 Kubernetes 中 kube-proxy 在 IPVS …...
QT6 源(72):阅读与注释单选框这个类型的按钮 QRadioButton,及各种属性验证,
(1)按钮间的互斥: (2)源码来自于头文件 qradiobutton . h : #ifndef QRADIOBUTTON_H #define QRADIOBUTTON_H#include <QtWidgets/qtwidgetsglobal.h> #include <QtWidgets/qabstractbutton.h>…...
Qt 中实现观察者模式(Observer Pattern)
在 Qt 中实现**观察者模式(Observer Pattern)通常利用其内置的信号与槽(Signals & Slots)**机制,这是最符合 Qt 设计哲学的方式。以下是详细实现方法和关键点: —### 1. 观察者模式的核心思想- Subject(被观察者):维护一个观察者列表,在状态变化时通知观察者。- …...
Vue3源码学习5-不使用 `const enum` 的原因
文章目录 前言✅ 什么是 const enum❌ 为什么 Vue 3 不使用 const enum1. 📦 **影响构建工具兼容性**2. 🔁 **难以做模块间 tree-shaking**3. 🧪 **调试困难**4. 📦 **Vue 是库,不掌控用户配置** ✅ 官方推荐做法&…...
自己部署后端,浏览器显示久久未响应
CIDER地址写错了,应该要写成0.0.0.0/0 。。。。...
【RocketMQ NameServer】- NettyEventExecutor 处理 Netty 事件
文章目录 1. 前言2. NettyEventExecutor 线程3. NettyEvent 是怎么来的4. NettyEventExecutor 线程处理不同事件的逻辑4.1 IDLE\CLOSE\EXCEPTION - onChannelIdle4.2 CONNECT - onChannelConnect 5. 小结 本文章基于 RocketMQ 4.9.3 1. 前言 【RocketMQ】- 源码系列目录 上一…...
JAVA刷题记录: 递归,搜索与回溯
专题一 递归 面试题 08.06. 汉诺塔问题 - 力扣(LeetCode) class Solution {public void hanota(List<Integer> A, List<Integer> B, List<Integer> C) {dfs(A, B, C, A.size());}public void dfs(List<Integer> a, List<In…...
【进阶】C# 委托(Delegate)知识点总结归纳
1. 委托的基本概念 定义:委托是一种类型安全的函数指针,用于封装方法(静态方法或实例方法)。 核心作用:允许将方法作为参数传递,实现回调机制和事件处理。 类型安全:委托在编译时会检查方法签…...
推理能力:五一模型大放送
--->更多内容,请移步“鲁班秘笈”!!<--- 近日人工智能领域迎来了一波密集的模型发布潮,多家科技巨头和研究机构相继推出了具有突破性特点的AI模型。这些新模型在参数规模、计算效率、多模态能力以及推理能力等方面都展现出…...
数据库=====
创建数据库 1.直接创建数据库 语法:CREATE DATABASE [IF NOT EXISTS] 数据库名 ——[]表示内部内容可省略 2.指定字符集和排序规则方式创建数据库 语法:CREATE DATABASE[IF NOT EXISTS] 数据库名 CHARACTER SET 字符集 COLLATE 排序规则 示例:…...
VITA STANDARDS LIST,VITA 标准清单下载
VITA STANDARDS LIST,VITA 标准清单下载 DesignationTitleAbstractStatusVMEbus Handbook, 4th EditionA users guide to the VME, VME64 and VME64x bus specifications - features over 70 product photos and over 160 circuit diagrams, tables and graphs. The…...
npm pnpm yarn 设置国内镜像
国内镜像 常用的国内镜像: 淘宝镜像 https://registry.npmmirror.com 腾讯云镜像 https://mirrors.cloud.tencent.com/npm/ 华为云镜像 https://repo.huaweicloud.com/repository/npm/ CNPM(阿里系) https://r.cnpmjs.org/ 清华…...
互联网大厂Java面试:从Spring到微服务的技术探讨
场景:互联网大厂Java求职者面试 在一家知名的互联网大厂面试中,面试官王严肃正在面试一位名叫谢飞机的程序员。谢飞机以其独特的幽默感而闻名,但在技术面前,他的能力能否得到认可呢? 第一轮提问:核心技术…...
[machine learning] Transformer - Attention (二)
本文介绍带训练参数的self-attention,即在transformer中使用的self-attention。 首先引入三个可训练的参数矩阵Wq, Wk, Wv,这三个矩阵用来将词向量投射(project)到query, key, value三个向量上。下面我们再定义几个变量: import torch inpu…...
Java多语言DApp质押挖矿盗U源码(前端UniApp纯源码+后端Java)
内容: 这款Java多语言DApp质押挖矿盗U源码提供了完整的前端与后端开发框架,适用于区块链应用开发。系统包括: 前端源码(UniApp):采用UniApp开发,跨平台支持iOS、Android及H5。界面简洁…...
如何解决 403 错误:请求被拒绝,无法连接到服务器
解决 403 错误:请求被拒绝,无法连接到服务器 当您在浏览网站或应用时,遇到 403 错误,通常会显示类似的消息: The request could not be satisfied. Request blocked. We can’t connect to the server for this app o…...
CGI(Common Gateway Interface)协议详解
CGI(通用网关接口)是一种标准化的协议,定义了 Web服务器 与 外部程序(如脚本或可执行文件)之间的数据交互方式。它允许服务器动态生成网页内容,而不仅仅是返回静态文件。 1. CGI 的核心作用 动态内容生成&a…...
HybridCLR 详解:Unity 全平台原生 C# 热更新方案
HybridCLR(原 Huatuo)是 Unity 平台革命性的热更新解决方案,它通过扩展 Unity 的 IL2CPP 运行时,实现了基于原生 C# 的完整热更新能力。下面从原理到实践全面解析这一技术。 一、核心原理剖析 1. 技术架构 原始 IL2CPP 流程&am…...
电脑RGB888P转换为JPEG方案 ,K230的RGB888P转换为JPEG方案
K230开发板本身具备将RGB888P转换为JPEG的能力,但需要正确调用硬件或软件接口。以下是具体分析及解决方案: 一、K230原生支持性分析 1. 硬件支持 K230的NPU(神经网络处理器)和图像处理单元(ISP)理论上支持…...
基于SpringBoot+Vue实现的电影推荐平台功能三
一、前言介绍: 1.1 项目摘要 2023年全球流媒体用户突破15亿,用户面临海量内容选择困难,传统推荐方式存在信息过载、推荐精准度低等问题。传统推荐系统存在响应延迟高(平均>2s)。随着互联网的快速发展,…...
NHANES指标推荐:triglyceride levels
文章题目:Association between triglyceride levels and rheumatoid arthritis prevalence in women: a cross-sectional study of NHANES (1999-2018) DOI:10.1186/s12905-025-03645-y 中文标题:女性甘油三酯水平与类风湿性关节炎患病率之间…...
打印Activity的调用者
有时候我们会发现自己应用中的某个Activity被陌名奇妙的打开了,但是不知道是哪里的代码打开的,此时可以打印Activity的调用堆栈,在Activity的onCreate函数中添加如下代码: Arrays.stream(Thread.currentThread().getStackTrace()…...
深入解析 SqlSugar 与泛型封装:实现通用数据访问层
在现代软件开发中,ORM(对象关系映射)框架的使用已经成为不可或缺的部分,SqlSugar 是一款非常流行且强大的 ORM框架。它不仅提供了简单易用的数据库操作,还具备了高效的性能和灵活的配置方式。为了进一步提升数据库操作…...
普通 html 项目引入 tailwindcss
项目根目录安装依赖 npm install -D tailwindcss3 postcss autoprefixer 初始化生成tailwind.config.js npx tailwindcss init 修改tailwind.config.js /** type {import(tailwindcss).Config} */ module.exports {content: ["./index.html"], //根据自己的项目…...