我用Ai学Android Jetpack Compose之Text
这篇开始学习各种UI元素,答案来自 通义千问,通义千问没法生成图片,图片是我补充的。 下述代码只要复制到第一个工程,做一些import操作,一般import androidx.compose包里的东西,即可看到预览效果。完整工程代码,见本文最后。
文章目录
- 1.我先学Text,麻烦你介绍一下
- 1. **基础用法**
- A. **简单文本显示**
- B. **使用资源文件中的字符串**
- 2. **常见属性**
- 3. **修饰符 (Modifiers)**
- 4. **进阶功能**
- A. **带样式的文本 (Styled Text)**
- B. **链接文本 (Clickable Links)**
- C. **文本输入框 (TextField)**
- 5. **最佳实践**
- 总结
- 2.如何自定义 `Text` 组件的样式?
- 1. **内联样式**
- 2. **使用 `TextStyle`**
- 3. **使用 `Typography`**
- 4. **创建可复用的 `Text` 组件**
- 5. **动态样式**
- 6. **使用 `AnnotatedString` 和 `SpanStyle`**
- 7. **最佳实践**
- 总结
1.我先学Text,麻烦你介绍一下
当然可以!Text
是 Jetpack Compose 中最常用的 Composable 函数之一,用于显示文本内容。它提供了丰富的配置选项来定制文本的外观和行为。下面将详细介绍 Text
的基本用法、常见属性以及一些高级特性。
1. 基础用法
A. 简单文本显示
最基本的用法是直接传递一个字符串给 Text
函数:
@Composable
fun SimpleText() {Text(text = "Hello, World!")
}
显示效果为:
B. 使用资源文件中的字符串
为了支持多语言和更好的维护性,通常推荐从资源文件中读取字符串:
@Composable
fun LocalizedText() {Text(text = stringResource(id = R.string.hello_world))
}
2. 常见属性
Text
提供了多种属性来控制文本的样式和布局。以下是一些常用的属性及其说明:
text
:要显示的文本内容,可以是普通字符串或通过AnnotatedString
来实现更复杂的文本格式。modifier
:用于添加修饰符(如点击事件、背景颜色等),详见下文。color
:设置文本的颜色,默认为黑色。fontSize
:指定字体大小,默认单位为sp
(scale-independent pixels)。fontWeight
:定义字体粗细,例如FontWeight.Bold
或FontWeight.Light
。fontFamily
:选择自定义字体系列。maxLines
:限制最大行数,超过部分会截断并显示省略号。overflow
:当文本超出指定区域时如何处理,可选值包括TextOverflow.Clip
和TextOverflow.Ellipsis
。textAlign
:对齐方式,如TextAlign.Center
、TextAlign.Start
等。style
:应用全局文本样式,可以通过Typography
类进行定义。
示例代码:
@Composable
fun StyledText() {Text(text = "Hello, World!",color = Color.Blue,fontSize = 24.sp,fontWeight = FontWeight.Bold,fontFamily = FontFamily.SansSerif,maxLines = 1,overflow = TextOverflow.Ellipsis,textAlign = TextAlign.Center,modifier = Modifier.padding(16.dp).background(Color.LightGray).clickable { /* Handle click */ })
}
上述代码显示效果如下:
3. 修饰符 (Modifiers)
修饰符是Jetpack Compose中用来调整UI组件外观和行为的强大工具。对于Text
组件来说,常见的修饰符包括但不限于:
Modifier.padding()
:为文本四周添加内边距。Modifier.background()
:设置文本背景颜色或绘制形状。Modifier.clickable()
:使文本可点击,并处理点击事件。Modifier.width()
和Modifier.height()
:固定宽度和高度。Modifier.wrapContentSize()
:让文本根据内容自动调整尺寸。
4. 进阶功能
A. 带样式的文本 (Styled Text)
通过 AnnotatedString
可以创建带有不同样式的复杂文本:
@Composable
fun StyledParagraph() {val annotatedString = buildAnnotatedString {withStyle(style = SpanStyle(color = Color.Red)) {append("Red ")}withStyle(style = SpanStyle(color = Color.Green)) {append("Green ")}withStyle(style = SpanStyle(color = Color.Blue)) {append("Blue")}}Text(text = annotatedString)
}
上述代码,效果如下:
B. 链接文本 (Clickable Links)
可以使用 ClickableText
来创建可点击的超链接或其他交互式文本元素:
@Composable
fun ClickableLinkText() {val uriHandler = LocalUriHandler.currentClickableText(text = AnnotatedString("Click here to visit the official website."),onClick = { offset ->if (offset >= 6 && offset <= 10) {uriHandler.openUri("https://developer.android.com")}})
}
效果如下:
C. 文本输入框 (TextField)
虽然这不是 Text
组件本身的功能,但了解 TextField
对于构建完整的表单界面非常重要。它可以与 Text
结合使用,提供用户输入的能力。
@Composable
fun TextInputField() {var text by remember { mutableStateOf("") }TextField(value = text,onValueChange = { newText -> text = newText },label = { Text("Enter your name") })
}
上述代码有错,通过 通义千问,可以解决,代码改为:
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun TextInputField() {var text by remember { mutableStateOf("") }TextField(value = text,onValueChange = { newText: String -> text = newText },label = { Text("Enter your name") })
}
还有一些import,代码效果如下:
5. 最佳实践
- 保持简洁:尽量减少每个
Text
组件的复杂度,避免在一个地方做太多事情。 - 复用样式:如果多个地方需要相同的文本样式,考虑创建一个可复用的样式对象。
- 国际化支持:始终优先使用资源文件中的字符串,以便更容易地进行多语言适配。
- 性能优化:注意不要过度使用复杂的文本格式化,以免影响性能。
总结
Text
是 Jetpack Compose 中不可或缺的一部分,掌握了它的基本用法和高级特性后,你可以轻松地构建出美观且功能丰富的文本UI。随着你对Compose框架理解的加深,你会发现更多有趣的应用场景和技术细节。希望这些信息对你有所帮助!
如果你有任何进一步的问题或需要更详细的解释,请随时提问!祝你在学习Compose的过程中一切顺利。
2.如何自定义 Text
组件的样式?
自定义 Text
组件的样式是 Jetpack Compose 中非常常见的需求,可以通过多种方式来实现。下面将详细介绍如何通过不同的方法来自定义 Text
的外观,包括使用内联样式、全局样式配置以及创建可复用的样式组件。
1. 内联样式
最直接的方法是在每个 Text
组件中直接指定样式属性。这种方式适合快速原型设计或临时调整,但对于大型项目来说不够灵活和易于维护。
@Composable
fun InlineStyledText() {Text(text = "Hello, World!",color = Color.Blue,fontSize = 24.sp,fontWeight = FontWeight.Bold,fontFamily = FontFamily.SansSerif,textAlign = TextAlign.Center,modifier = Modifier.padding(16.dp))
}
2. 使用 TextStyle
TextStyle
是一个数据类,用于封装文本的所有样式信息。你可以创建一个 TextStyle
对象,并将其传递给 Text
组件的 style
参数。这种方法使得样式可以被提取出来并集中管理,从而提高了代码的可读性和可维护性。
val customStyle = TextStyle(color = Color.Blue,fontSize = 24.sp,fontWeight = FontWeight.Bold,fontFamily = FontFamily.SansSerif,textAlign = TextAlign.Center
)@Composable
fun StyledWithTextStyle() {Text(text = "Hello, World!",style = customStyle,modifier = Modifier.padding(16.dp))
}
3. 使用 Typography
Typography
提供了一种更高级的方式来定义和组织多个 TextStyle
。它允许你为不同类型的文字(如标题、副标题、正文等)预设样式,并在整个应用程序中统一应用这些样式。
首先,在项目的 Theme.kt
文件中定义 Typography
:
private val LightColors = lightColors(primary = Color(0xFF6200EE),// ...其他颜色设置...
)private val Typography = Typography(h1 = TextStyle(fontFamily = FontFamily.SansSerif,fontWeight = FontWeight.W300,fontSize = 96.sp),h2 = TextStyle(fontFamily = FontFamily.SansSerif,fontWeight = FontWeight.Normal,fontSize = 60.sp),body1 = TextStyle(fontFamily = FontFamily.Default,fontWeight = FontWeight.Normal,fontSize = 16.sp),// ...其他样式定义...
)@Composable
fun MyAppTheme(content: @Composable () -> Unit) {MaterialTheme(colors = LightColors,typography = Typography,content = content)
}
然后在你的 Text
组件中引用这些预设样式:
@Composable
fun TypedText() {Text(text = "This is an H1 heading",style = MaterialTheme.typography.h1,modifier = Modifier.padding(16.dp))
}
上述代码不全,没有运行效果。
4. 创建可复用的 Text
组件
为了进一步提高代码的复用性和一致性,可以创建自己的 Text
组件,封装常用的样式和行为。这样可以在多个地方重复使用相同的组件,而不需要每次都重新定义样式。
@Composable
fun CustomText(text: String, modifier: Modifier = Modifier) {Text(text = text,style = MaterialTheme.typography.body1.copy(color = Color.Blue),modifier = modifier.padding(16.dp))
}// 使用自定义组件
@Composable
fun UseCustomText() {CustomText("Hello, World!")
}
上述代码效果如下:
5. 动态样式
有时你可能需要根据某些条件动态地改变文本样式。这可以通过结合状态变量和逻辑判断来实现。
@Composable
fun DynamicStyledText(isBold: Boolean) {val textStyle = if (isBold) {TextStyle(fontWeight = FontWeight.Bold)} else {TextStyle(fontWeight = FontWeight.Normal)}Text(text = "Dynamic Style",style = MaterialTheme.typography.body1.merge(textStyle),modifier = Modifier.padding(16.dp))
}
上述代码效果如下:
6. 使用 AnnotatedString
和 SpanStyle
如果你需要在同一段文本中应用多种样式(例如部分文本加粗、变色),可以使用 AnnotatedString
和 SpanStyle
来构建带有样式的文本。
@Composable
fun MultiStyledText() {val annotatedString = buildAnnotatedString {withStyle(style = SpanStyle(color = Color.Red)) {append("Red ")}withStyle(style = SpanStyle(color = Color.Green)) {append("Green ")}withStyle(style = SpanStyle(color = Color.Blue)) {append("Blue")}}Text(text = annotatedString, modifier = Modifier.padding(16.dp))
}
上述代码效果如下:
7. 最佳实践
- 保持样式一致:尽量在整个应用程序中保持一致的样式,避免不同页面或组件之间的视觉差异。
- 分离关注点:将样式定义与业务逻辑分开,使得代码更加清晰易懂。
- 利用主题:充分利用
MaterialTheme
和Typography
提供的主题功能,确保应用具有一致且专业的外观。 - 复用组件:创建可复用的文本组件,减少重复代码,提高开发效率。
总结
通过上述方法,你可以轻松地自定义 Text
组件的样式,从简单的内联样式到复杂的多样式组合。选择合适的方法取决于具体的应用场景和个人偏好。随着你对 Jetpack Compose 理解的加深,你会找到最适合自己的样式管理策略。
如果你有任何进一步的问题或需要更详细的解释,请随时提问!希望你能通过这些技巧更好地掌握 Jetpack Compose 的文本样式定制能力。
工程代码:Gitee
https://portrait.gitee.com/lwjobs/androidbook/tree/master/source/JetpackCompose/UI/TextTest
相关文章:
我用Ai学Android Jetpack Compose之Text
这篇开始学习各种UI元素,答案来自 通义千问,通义千问没法生成图片,图片是我补充的。 下述代码只要复制到第一个工程,做一些import操作,一般import androidx.compose包里的东西,即可看到预览效果。完整工程代…...
H5通过URL Scheme唤醒手机地图APP
1.高德地图 安卓URL Scheme:baidumap:// 官方文档:https://lbs.amap.com/api/amap-mobile/guide/android/navigation IOS URL Scheme:iosamap:// 官方文档:https://lbs.amap.com/api/amap-mobile/guide/ios/navi HarmonyOS NEXT U…...
【Java数据结构】二叉树
1.树型结构 1.1树的概念 树是一种非线性的数据结构,由n个结点组成的具有层次关系的集合。下面是它的特点: 根结点是没有前驱的结点(没有父结点的结点)子结点之间互不相交除了根结点外,其它结点都只有一个父结点n个结…...
Golang设计模式目录
go语言实现设计模式 1 文章目录: 1.1 创建型模式 1.Golang设计模式之工厂模式2.Golang设计模式之抽象工厂模式3.Golang设计模式之单例模式4.Golang设计模式之建造者模式5.Golang设计模式之原型模式 1.2 结构型模式 6.Golang设计模式之适配器模式7.Golang设计模式之桥…...
vue3+Echarts+ts实现甘特图
项目场景: vue3Echartsts实现甘特图;发布任务 代码实现 封装ganttEcharts.vue <template><!-- Echarts 甘特图 --><div ref"progressChart" class"w100 h100"></div> </template> <script lang"ts&qu…...
nginx-灰度发布策略(split_clients)
一. 简述: 基于客户端的灰度发布(也称为蓝绿部署或金丝雀发布)是一种逐步将新版本的服务或应用暴露给部分用户,以确保在出现问题时可以快速回滚并最小化影响的技术。对于 Nginx,可以通过配置和使用不同的模块来实现基于…...
SQL中聚类后字段数据串联字符串方法研究
在 SQL 中,使用 聚类(GROUP BY) 后将某个字段的数据串联为一个字符串,常见的方法包括以下几种,取决于数据库管理系统(DBMS)的具体支持功能: 1. 使用 GROUP_CONCAT (MySQL…...
vue3组件化开发优势劣势分析,及一个案例
Vue 3 组件化开发的优势和劣势 优势 可复用性: 组件可以重复使用,减少代码冗余,提高开发效率。 可以在不同的项目中复用组件,提升开发速度。 可维护性: 组件化开发使得代码结构清晰,易于维护。 每个…...
Springboot SAP Docker 镜像打包问题
问题类1,sapjco.jar 未识别到:Caused by: java.lang.NoClassDefFoundError: com/sap/conn/jco/ext/DestinationDataProvider 1./deploy/lib/ 文件下放sapjco3.jar、libsapjco3.so、sapjco3.dll 2.docker文件核心内容: COPY /deploy/lib/sap…...
nmap探测Web服务
HTTP服务 探测基本认证信息 nmap --script http-auth [目标]探测默认账户 nmap --scripthttp-default-accounts -p [端口] [目标]检查是否存在风险方法 nmap --script http-methods [目标]探测访问一个网页的时间 nmap --scripthttp-chrono -p 80 [目标]提取HTTP注释信息 nmap…...
【学习总结|DAY028】后端Web实战(部门管理)
在 Web 后端开发领域,构建高效、规范且功能完备的系统是核心目标。本文将围绕 Tlias 智能学习辅助系统的后端开发展开,详细阐述从开发准备工作到各部门管理功能实现,以及日志技术应用的全过程,为开发者提供全面的实践参考。 一、…...
Servlet 和 Spring MVC:区别与联系
前言 在 Java Web 开发中,Servlet 和 Spring MVC 是两个重要的技术。Servlet 是 Java Web 的基础组件,而 Spring MVC 是一个高级 Web 框架,建立在 Servlet 的基础之上,提供了强大的功能和易用性。这篇文章将从定义、原理、功能对…...
【君正T31开发记录】12.编译工具相关总结及介绍
移植交叉工具包的时候,发现这是很多工具的集合包;以及写makefile的时候,也需要了解下这些工具的作用及用法,这里总结记录一下常见的工具及相关用法。 g C编译器,用于编译C源代码文件,这个很常见࿰…...
Python 开发框架搭建简单博客系统:代码实践与应用
在当今数字化时代,博客作为一种流行的信息分享和交流平台,拥有广泛的受众。Python 以其强大的功能和丰富的库,为构建博客系统提供了理想的技术支持。本文将详细介绍如何利用 Python 开发框架搭建一个简单博客系统,包括功能实现、代…...
Java 正则表达式入门与应用(详细版)
正则表达式(Regular Expression,简称Regex)是一种文本模式匹配工具,在许多编程语言中都得到了广泛应用。Java 作为一种强大的编程语言,提供了对正则表达式的内建支持,使得在字符串处理、数据验证和文本解析…...
高效内存管理与调试技巧:深入解析 AddressSanitizer
在现代 C开发中,内存管理是一个至关重要但也容易出错的领域。即使使用了智能指针和其他高效工具,复杂的项目仍可能出现内存泄漏、非法访问等问题。为了解决这些问题,Google 开发了一个强大的工具——AddressSanitizer (ASan)。本文将详细介绍…...
力扣第137题:只出现一次的数字 II C语言解法
力扣第137题:只出现一次的数字 II C语言解法 题目描述 给定一个整数数组 nums,其中每个元素出现三次,除了一个元素出现一次。找出那个只出现一次的元素。 说明: 你的算法应该具有线性时间复杂度。你不可以使用额外的空间&…...
【Qt】控件概述和QWidget核心属性1(enabled、geometry、windowTitle、windowIcon、QRC机制)
一、控件概念 界面上各种元素、各种部分的统称(如按钮、输入框、下拉框、单选复选框...) Qt作为GUI开发框架,内置了各种的常用控件,并支持自定义控件。 二、控件体系发展 1.没有完全的控件,需要使用绘图API手动绘制…...
25年1月更新。Windows 上搭建 Python 开发环境:PyCharm 安装全攻略(文中有安装包不用官网下载)
python环境没有安装的可以点击这里先安装好python环境,python环境安装教程 安装 PyCharm IDE 获取 PyCharm PyCharm 提供两种主要版本——社区版(免费)和专业版(付费)。对于初学者和个人开发者而言,社区…...
软件工程大复习之(四)——面向对象与UML
4.1 面向对象概述 面向对象(OO)是一种编程范式,它将数据和处理数据的方法封装在对象中。面向对象的主要概念包括: 对象:实例化的数据和方法的集合。类:对象的蓝图或模板。封装:隐藏对象的内部…...
前端基础函数算法整理应用(sort+reduce+date+双重for循环)
文章目录 基础函数算法reduce 函数算法sort 函数算法时间排序1. 对日期字符串数组进行排序2. 对包含日期对象的数组进行排序3. 对包含时间戳的数组进行排序4. 对包含日期时间信息的对象数组进行排序 基础函数算法 一、排序算法 冒泡排序(Bubble Sort) …...
web系统漏洞攻击靶场
摘 要 互联网极速发展的同时,也会带来一些安全性的风险,一些不为人知的安全问题也逐渐暴露出来。近年来,媒体不断披露了许多网络安全事故,许多网络应用程序被黑客攻击,导致内部数据外泄,人们开始认识到网络…...
苍穹外卖-day07(Spring Cache 购物车业务逻辑)
内容 缓存菜品缓存套餐添加购物车查看购物车清空购物车 功能实现:缓存商品、购物车 效果图: 1. 缓存菜品 1.1 问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增…...
win10 VS2019上libtorch库配置过程
win10 VS2019上libtorch库配置过程 0 引言1 获取libtorch2 在VS上配置使用libtorch库3 结语 0 引言 💻💻AI一下💻💻 libtorch库是一个用于深度学习的C库,是PyTorch的官方C前端。它提供了用于构建和训练深度学习模…...
git 常用命令和本地合并解决冲突
目录 一、常用命令 二、本地可视化合并分支解决冲突 一、常用命令 最近,使用mac电脑,无法直接使用小乌龟进行可视化操作,现在记录一些常用命令。 拉取: git clone <git url> 仅拉起某个单独分支: git clo…...
Elasticsearch 创建索引 Mapping映射属性 索引库操作 增删改查
Mapping Type映射属性 mapping是对索引库中文档的约束,有以下类型。 text:用于分析和全文搜索,通常适用于长文本字段。keyword:用于精确匹配,不会进行分析,适用于标签、ID 等精确匹配场景。integer、long…...
Objective-C语言的数据结构
Objective-C语言中的数据结构 Objective-C是一种面向对象的编程语言,其在苹果公司的软件开发中得到了广泛应用。它主要用于开发macOS和iOS应用程序。虽然Objective-C有许多丰富的特性,但在程序设计中,数据结构仍然是构建任何应用程序的基础。…...
智能水文:ChatGPT等大语言模型如何提升水资源分析和模型优化的效率
大语言模型与水文水资源领域的融合具有多种具体应用,以下是一些主要的应用实例: 1、时间序列水文数据自动化处理及机器学习模型: ●自动分析流量或降雨量的异常值 ●参数估计,例如PIII型曲线的参数 ●自动分析降雨频率及重现期 ●…...
ETL的工作原理
ETL的工作原理 什么是ETL_云计算主题库-阿里云 ETL的工作原理可以分为三个主要的步骤:Extract(提取)、Transform(转换)、Load(加载)。 工作步骤 描述 Extract (提取)…...
黑马头条平台管理实战
黑马头条 08平台管理 1.开始准备和开发思路1.1.开发网关1.2编写admin-gateway 代码 2.开发登录微服务2.1编写登录微服务 3.频道管理4.敏感词管理5.用户认证审核6.自媒体文章人工审核99. 最后开发中碰到的问题汇总1.关于nacos 配置 问题2.在开发频道管理新增频道后端无法接收到前…...
电池管理系统(BMS)架构详细解析:原理与器件选型指南
BMS(电池管理系统)架构详细讲解 从你提供的BMS(Battery Management System)架构图来看,主要涉及到电池监控模块、通信模块、功率控制模块等部分。下面我将详细讲解该架构的各个功能模块及其工作原理。 1. 电池管理核…...
SpringBoot环境和Maven配置
SpringBoot环境和Maven配置 1. 环境准备2. Maven2.1 什么是Maven2.2 为什么要学 Maven2.3 创建一个 Maven项目2.4 Maven核心功能2.4.1 项目构建2.4.2 依赖管理2.4.3 Maven Help插件 2.5 Maven 仓库2.5.1本地仓库2.5.2 中央仓库2.5.3 私有服务器, 也称为私服 2.6 Maven设置国内源…...
lambda用法及其原理
目录 lambda形式lambda用法1.sort降序2.swap3.捕捉列表 习题解题 lambda形式 [capture-list](parameters)->return type{function boby}[capture-list]:[捕捉列表]用于捕捉函数外的参数,可以为空,但不能省略;(parameters) &am…...
Postgresql源码(139)vim直接修改postgresql表文件的简单实例
1 前言 PG可以用pageinspect方便的读取查看表文件。本篇介绍一种用vim查看、编辑的方法,案例比较简单,主要分享原理。 修改表文件和controlfile是非常危险的行为,请不要在生产尝试。 2 用例 简化问题,用简单编码的数据类型。 d…...
Lianwei 安全周报|2025.1.2
以下是本周「Lianwei周报」,我们总结推荐了本周的政策/标准/指南最新动态、热点资讯和安全事件,保证大家不错过本周的每一个重点! 政策/标准/指南最新动态 01 国家数据局等五部门印发《关于促进企业数据资源开发利用的意见》 为充分释放企业…...
Vue3-跨层组件通信Provide/Inject机制详解
Vue 3 中的 Provide 和 Inject 机制是专为跨层级传递数据而设计的,适用于祖先组件和后代组件之间的通信。与props 和 emits 不同,Provide/Inject 可以跨越多个层级进行数据传递,而不需要逐层传递。 1. Provide provide 是一个在祖先组件中提…...
springcloud 介绍
Spring Cloud是一个基于Spring Boot的微服务架构解决方案集合,它提供了一套完整的工具集,用于快速构建分布式系统。在Spring Cloud的架构中,服务被拆分为一系列小型、自治的微服务,每个服务运行在其独立的进程中,并通过…...
css预处理器sass
在前端开发的世界中,CSS 是构建网页样式的基础。然而,随着项目规模的增大,纯 CSS 的编写和维护往往会变得复杂而繁琐。为了解决这些痛点,Sass(Syntactically Awesome Style Sheets)应运而生。Sass 是一种 C…...
匠人天工Ai浮雕网站创新发布了ZBrush插件,提效500%,为AI+数字雕刻行业带来新的活力
2025年1月6日,杭州——杭州仓颉造梦数字科技公司旗下产品匠人天工近日宣布推出一款创新的ZBrush插件,旨在为AI数字雕刻行业带来前所未有的效率提升。该插件通过一系列智能化功能,大幅简化了数字雕刻的建模流程,使建模效率提高了50…...
解决 Pangolin 版本不兼容导致的编译错误
在使用 Pangolin 库时,有时候会遇到由于版本不兼容而导致的编译错误。本文将通过一个具体的错误案例,展示如何识别和解决这种问题。 问题描述 在编译时,遇到如下编译错误: /usr/local/include/pangolin/gl/glsl.hpp: In member…...
day01_ Java概述丶开发环境的搭建丶常用DOS命令
编程常识 什么是编程? 所谓编程,就是人们可以使用编程语言对计算机下达命令,让计算机完成人们需要的功能。 编程语言的发展历程 第一代:机器语言 ,机器语言由数字组成所有指令。计算器解析运行速度,最快…...
进程间通信——网络通信——UDP
进程间通信(分类):网络通信、无名管道、有名管道、信号、消息队列、共享内存、信号量集 OSI七层模型:(理论模型) 应用层 : 要传输的数据信息,如文件传输,电子邮件等 表示层 : 数…...
(六)vForm 动态表单(数据量大,下拉选卡顿问题)
系列文章目录 (一)vForm 动态表单设计器之使用 (二)vForm 动态表单设计器之下拉、选择 (三)vForm 动态表单解决下拉框无数据显示id问题 (四)vForm 动态表单自定义组件、属性 (五)vForm 动态表单文件上传、下载 文章目录 目录 前言 一、组件改造 1.添加分页所需参…...
asp.net core mvc的 ViewBag , ViewData , Module ,TempData
在 ASP.NET MVC 和 ASP.NET Core MVC 中,ViewBag 和 ViewData 是两种用于将数据从控制器传递到视图(View)的常用方法。它们都允许控制器将动态数据传递给视图,但它们的实现方式有所不同。关于 Module,它通常指的是某种…...
C#语言的软件开发工具
C#语言的软件开发工具 C#语言作为一种现代化的编程语言,凭借其强大的功能和丰富的生态系统,在软件开发领域得到了广泛的应用。随着C#语言的发展,越来越多的开发工具应运而生。本文将详细介绍C#语言常用的开发工具,包括集成开发环…...
iOS - AutoreleasePool
1. 基本数据结构 // AutoreleasePool 的基本结构 struct AutoreleasePoolPage {static pthread_key_t const key AUTORELEASE_POOL_KEY;magic_t const magic;id *next; // 指向下一个可存放对象的地址pthread_t const thread; // 所属线程AutoreleasePoolPage …...
数据仓库建设方案和经验总结
在做数据集成的过程中,往往第二步的需求就是建设数仓由于数据分散在不同的存储环境或数据库中,对于新业务需求的开发需要人工先从不同的数据库中同步、集中、合并等处理,造成资源和人力的浪费。同时,目前的系统架构,无…...
该单据从未生成交易分录
经常听到采购说,采购匹配明细表中没有xx料号的记录,没有xx供应商的记录。它们用这个报表来与供应商对账的。每每以此为借口拖延着货款不付。没有记录出来,原因各种。之前没有记录下来,想不起来。今天重新分析发现其中一个原因&…...
Flink DataSet API
文章目录 DataSet SourcesDataSet TransformationDataSet Sink序列化器样例一:读 csv 文件生成 csv 文件样例二:读 starrocks 写 starrocks样例三:DataSet、Table Sql 处理后写入 StarRocksDataSet<Row> 遍历遇到的坑 分类:…...
Bash Shell的操作环境
目录 1、路径与指令搜寻顺序 2、bash的进站(开机)与欢迎信息:/etc/issue,/etc/motd (1)/etc/issue (2)/etc/motd 3、bash的环境配置文件 (1)login与non-…...