在默认的情况下,不论是对于编辑模式还是显示模式,一个布尔类型的属性值总是以一个CheckBox的形式呈现出来。我们创建如下一个表示员工的类型Employee,它具有一个布尔类型的属性IsPartTime表示该员工是否为兼职。
现在我们希望的是将所有布尔类型对象显示为两个RadioButton,具体的显示效果如下图所示。那么我们就可以通过创建一个Model类型为Boolean的View来创建一个模板,使之改变所有布尔类型对象的默认呈现效果。
由于我们需要改变的是布尔类型对象在编辑模式下的呈现形式,所以我们需要将作为模板的分布View定义在EditorTemplates目录下,这个目录可以存在于Views/ Shared下,也可以存在于Views/{ControllerName}下。由于ASP.NET MVC是采用数据类型作为匹配条件来寻找对应的模板的,所以我们需要将分部模板View命名为Boolean。下面的代码片断体现了这个分部试图的整个定义,我们通过调用HtmlHelper的RadioButton方法将两个布尔值(True/False)映射为对应的RadioButton,并且采用
来布局。
@model bool
@Html.RadioButton("",true,Model)是
@Html.RadioButton("",false,!Model)否
值得一提的是,我们没有指定RadioButton的名称,而是指定一个空字符串,Html本身会对其进行命名,而命名的依据就是本章介绍的核心:Model元数据。Employee的IspartTime属性呈现在界面上对应的HTML如下所示,我们可以看到两个类型为radio的 元素的name被自动赋上了对应的属性名称。美中不足的是它们具有相同的ID,如果希望让ID具有唯一性,可以对模板进行更加细致的定制。
二、预定义模板
上面我们介绍如何通过View的方式创建模板进而控制某种数据类型或者某个目标元素最终在UI界面上的HTML呈现方式,实际上在ASP.NET MVC的内部还定义了一系列的预定义模板。当我们调用HtmlHelper/HtmlHelper的模板方法对Model或者Model的某个成员进行呈现的时候,系统会根据当前的呈现模式(显示模式和编辑模式)和Model元数据获取一个具体的模板(自定义模版或者预定义模版)。由于Model具有显示和编辑两种呈现模式,所以定义在ASP.NET MVC内部的默认模版分为这两种基本的类型。接下来我们就逐个介绍这些预定义模版以及最终的HTML呈现方式。
EmailAddress 该模板专门针对用于表示Email地址的字符串类型的数据成员,它将目标元素呈现为一个href属性具有“mailto:”前缀的链接( )。由于该模板仅仅用于Email地址的显示,所以只在显示模式下有效,或者说ASP.NET MVC仅仅定义了基于显示模式的EmailAddress模板。为了演示数据在不同模板下的呈现方式,我们定义了如下一个简单的数据类型Model,我们通过在属性Foo上应用UIHintAttribute特性将模板名称设置为“EmailAddress”。
public class Model
{
[UIHint("EmailAddress")]
public string Foo { get; set; }
}
然后在一个基于Model类型的强类型View中,我们通过调用HtmlHelper的DisplayFor方法将一个具体的Model对象的Foo属性以显示模式呈现出来。
@model Model
@Html.DisplayFor(m=>m.Foo)
如下的代码片断表示Model的Foo属性对应的HTML,我们可以看到它就是一个针对Email地址的连接。当我们点击该链接的时候,相应的Email编辑软件(比如Outlook)会被开启用于针对目标Email地址的邮件编辑。
HiddenInput 关于默认模板HiddenInput我们不应该感到模式,前面介绍的HiddenInputAttribute特性就是将表示Model元数据的ModelMetadata对象的TemplateHint属性设置为HiddenInput。如果目标元素采用HiddenInput模板,在显示模式下内容会以文本的形式显示;编辑模式下不仅会以文本的方式显示其内容,还会生成一个对应的type属性为“hidden”的 元素。如果表示Model元数据的ModelMetadata对象的HideSurroundingHtml属性为True(将应用在目标元素上的特性HiddenInputAttribute的DisplayValue属性设置为False),不论是显示模式还是编辑模式下显示的文本都将消失。
同样以上面定义的数据类型Model为例,我们通过在Foo属性上应用UIHintAttribute特性将模板名称设置为“HiddenInput”。
public class Model
{
[UIHint("HiddenInput")]
public string Foo { get; set; }
public bool Bar { get; set; }
public decimal Baz { get; set; }
}
然后在一个基于Model类型的强类型View中分别调用HtmlHelper的DisplayFor和EditFor方法将一个具体的Model对象的Foo属性以显示和编辑模式呈现出来。
@model Model
@Html.DisplayFor(m=>m.Foo)
@Html.EditorFor(m=>m.Foo)
分别以两种模式呈现出来的Foo属性对应的HTML如下(包含在花括号中的GUID表示属性值)。第一行是针对显示模式的,可以看出最终呈现出来仅限于表示属性值得文本;而编辑模式对应的HTML中不仅包含属性值文本,还具有一个对应的类型为“hidden”的 元素。
{42A1E9B7-2AED-4C8E-AB55-78813FC8C233}
{42A1E9B7-2AED-4C8E-AB55-78813FC8C233}
现在我们对数据类型Model做一下简单修改,将应用在属性Foo上的UIHintAttribute特性替换成HiddenInputAttribute特性,并将其DisplayValue属性设置成False。
public class Model
{
[HiddenInput(DisplayValue = false)]
public string Foo { get; set; }
public bool Bar { get; set; }
public decimal Baz { get; set; }
}
由于应用在目标元素上的HiddenInputAttribute特新的DisplayValue属性会最终控制对应ModelMetadata的HideSurroundingHtml属性,而后者控制是否需要生成用于显示目标内容的HTML。所以针对针对的Model定义,最终会生成如下一段HTML。
Html
如果目标对象的内容包含一些HTML,并需要在UI界面中原样呈现出来,我们可以采用Html模板。和EmailAddress模板一样,该模板仅限于显示模式 。为了演示Html模板对目标内容的呈现方法与默认呈现方式之间的差异,我们定义了如下一个数据类型Model。该数据类型具有两个字符串类型的属性Foo和Bar,其中Foo上面应用UIHintAttribute特性将模板名称设置为“Html”。
public class Model
{
[UIHint("Html")]
public string Foo { get; set; }
public string Bar { get; set; }
}
现在我们创建一个具体的Model对象,并将Foo和Bar设置为一段表示链接的文本(google.com ),最终在一个基于Model类型的强类型View中通过调用HtmlHelper的DisplayFor方法将这两个属性以显示模式呈现出来。
@model Model
@Html.DisplayFor(m=>m.Foo)
@Html.DisplayFor(m => m.Bar)
从如下所示的表示Foo和Bar两属性的HTML中我们不难看出:采用Html模板的Foo属性的内容原样输出,而包含在属性Bar中的HTML都进行了相应的编码。
Text与String
不论是在显示模式还是编辑模式,Text和String模板具有相同的HTML呈现方式(实际上在ASP.NET MVC内部,两种模版最终生成的HTML是通过相同的方法产生的)。对于这两种模版来说,目标内容在显示模式下直接以文本的形式输出;而在编辑模式下则对应着一个单行的文本框。
为了演示两种模版的同一性,我们对上面定义数据类型Model略作修改,在属性Foo和Bar上应用UIHintAttribute特性并将模版名称分别设置为String和Text。
public class Model
{
[UIHint("String")]
public string Foo { get; set; }
[UIHint("Text")]
public string Bar { get; set; }
}
然后我们创建一个具体的Model对象,并在一个基于该Model类型的强类型View中通过调用HtmlHelper的DisplayFor和EditorFor将两个属性分别以显示和编辑模式呈现出来。
@model Model
@Html.DisplayFor(m=>m.Foo)
@Html.DisplayFor(m => m.Bar)
@Html.EditorFor(m=>m.Foo)
@Html.EditorFor(m => m.Bar)
如下所示的代码片断体现了上述四个元素对应的HTML(“Dummy text …”是Foo和Bar的属性值),可以看到采用了Text和String模板的两个属性在显示和编辑模式下具有相同的呈现方式。编辑模式下输出的类型为“text”的 元素表示CSS特性类型的class属性被设置为“text-box single-line”,意味着这是一个基于单行的文本框。
值得一提的是,ASP.NET MVC内部采用基于类型的模板匹配机制,对于字符串类型的数据成员,如果没有显式设置采用的模板名称,默认情况下会采用String模板。
Url
与EmailAddress和Html一样,模板Url也仅限于显示模式。对于某个表示为Url的字符串,如果我们希望它最终以一个连接的方式呈现在最终生成的HTML中,我们采用该模板。如下面的代码片断所示,我们通过应用UIHintAttribute特性将模板Url应用到属性Foo中。
public class Model
{
[UIHint("Url")]
public string Foo { get; set; }
}
我们创建一个具体的Model对象,并将Foo属性设置为一个表示Url的字符串“http://www.asp.net”,最后通过如下的方式将该属性以显示模式呈现出来。
@model Model
@Html.DisplayFor(m=>m.Foo)
如下面的代码片断所示,该属性最终呈现为一个href属性和文本内容均属性值得连接( )。
MultilineText 一般的字符串在编辑模式下会呈现为一个单行的文本框(类型为“text”的 元素),而MultilineText模板会将表示目标内容的字符串通过一个
public class Model
{
[UIHint("MultilineText")]
public string Foo { get; set; }
}
现在我们创建一个具体的Model对象并通过如下的形式将Foo属性以编辑模式呈现在某个基于Model类型的强类型View中。
@model Model
@Html.EditorFor(m=>m.Foo)
如下所示的代码片断表示Model的Foo属性呈现在UI界面中的HTML(“dummy text …”是是Foo的属性值),我们可以看到这是一个< textarea >元素。表示CSS样式类型的class属性被设置为“text-box multi-line”,意味着它是以多行的效果呈现。
Password
对于表示密码字符串来说,在编辑模式下应该呈现为一个类型为“password”的 元素,使我们输入的内容以掩码的形式显示出来以保护密码的安全性。在这种情况下我们可以采用Password模板,该模板和MultilineText一样也仅限于编辑模式。如下面的代码片断所示,我们在Model的Foo属性上应用UIHintAttribute特性将模式名称设置为“Password”。
public class Model
{
[UIHint("Password")]
public string Foo { get; set; }
}
我们创建一个具体的Model对象,并通过如下的形式将Foo属性以编辑模式呈现在某个基于Model的强类型View中。
@model Model
@Html.EditorFor(m=>m.Foo)
该Foo属性最终会以如下的形式通过一个类型为“Password”的 元素呈现出来,表示CSS样式类型的class属性被设置为“text-box single-line password”,意味着呈现效果为一个单行的文本框。
Decimal
如果采用Decimal模板,代表目标元素的数字不论其小数位数是多少,都会最终被格式化为两位小数。在显示模式下,被格式化的数字直接以文本的形式呈现出来;在编辑模式下则对应着一个单行的文本框架。如下面的代码片断所示,我们在数据类型Model中定义了两个对象类型属性Foo和Bar,上面应用了UIHintAttribute特性并将模板名称指定为“Decimal”。
public class Model
{
[UIHint("Decimal")]
public object Foo { get; set; }
[UIHint("Decimal")]
public object Bar { get; set; }
}
我们创建一个具体的Model对象,将它的Foo和属性分别设置为整数123和浮点数3.1415(4位小数),最终通过如下的形式将它们以显示和编辑的模式呈现在一个基于Model类型的强类型View中。
@model Model
@Html.DisplayFor(m=>m.Foo)
@Html.DisplayFor(m=>m.Bar)
@Html.EditorFor(m=>m.Foo)
@Html.EditorFor(m =>m.Bar)
上述四个元素在最终呈现的UI界面中对应着如下的HTML,我们可以看到最终显示的都是具有两位小数的数字。
Boolean
通过本章最开始的实例演示我们知道一个布尔类型的对象在编辑模式下会以一个类型为“checkbox”的 元素的形式呈现,实际上在显示模式下它依然对应着这么一个元素,只是其disabled属性会被设置为True使之处于只读状态。布尔类型的这种默认呈现方式源自“Boolean”模板默认被使用。
当布尔类的目标元素以编辑模式进行呈现的时候,除了生成一个一个类型为“checkbox”的 元素之外还会附加产生一个类型为“hidden”的 元素。如下面的代码片断所示,这个hidden元素具有与CheckBox相同的名称,但是值为False,它存在的目的在于当CheckBox没有被勾选的情况下通过对应的hidden元素向服务区提交相应的值(False),因为没有被勾选的CheckBox的值是不会包含在请求中的。
Boolean和String、Decimal以及后面我们介绍的Object一样属于是基于CLR类型的模板。由于ASP.NET在内部采用基于类型的模板匹配策略,如果没有显示设置采用的模板类型,相应类型的元素会默认采用与之匹配的模板。
Collection
顾名思义,Collection模板用于集合类型的目标元素的显示与编辑。对应采用该模板的类型为集合(实现了IEnumerable接口)的目标元素,在调用HtmlHelper或者HtmlHelper以显示或者编辑模式对其进行呈现的时候,会遍历其中的每个元素,并根据基于集合元素的Model元数据决定对其的呈现方法。同样一我们定义的数据类型Model为例,我们按照如下的方式将它的Foo属性类型改为对象数组,上面应用了UIHintAttribute特性并将模板名称 设置为“Collection”。
public class Model
{
[UIHint("Collection")]
public object[] Foo { get; set; }
}
然后按照下面的方式创建一个包含三个对象的数组,作为数据元素的三个对象类型为别是数字、字符串和布尔,然后将该数组作为Foo属性创建一个具体的Model对象。
object[] foo = new object[]
{
123.00,
"dummy text ...",
true
};
Model model = new Model { Foo = foo };
在一个基于Model类型的强类型View中,我们分别调用HtmlHelper的DisplayFor和EditorFor方法将上面创建的Model对象的Foo属性以显示和编辑模式呈现出来。
@model Model
@Html.DisplayFor(m=>m.Foo)
@Html.EditorFor(m=>m.Foo)
Model对象的Foo属性最终呈现出来的HTML如下所示,我们可以看到不论是显示模式还是编辑模式,基本上就是对集合元素呈现的HTML的组合而已。
我们说过,ASP.NET 内部采用基于类型的模板匹配策略,如果通过ModelMetadata对象表示的Model元数据不能找到一个具体的模板,最终都会落到Object模板上。Object模板对目标对象的呈现方式很简单,它通过ModelMetadata的Proeprties属性得到所有基于属性的Model元数据。针对每个表示属性Model元数据的ModelMetadata,它会根据DisplayName或者属性名称生成一个标签(实际上是一个内部文本为显示名称的
元素),然后根据元数据将属性值以显示或者编辑的模式呈现出来。
public class Address
{
[DisplayName("省")]
public string Province { get; set; }
[DisplayName("市")]
public string City { get; set; }
[DisplayName("区")]
public string District { get; set; }
[DisplayName("街道")]
public string Street { get; set; }
}
针对上面定义得这个表示地址的Address。现在我们创建一个具体的Address对象并通过如下的方式调用HtmlHelper的DisplayForModel方法将它呈现在以此作为Model的View中。
@model Address
@Html.DisplayForModel()
从如下所示的HTML中我们可以看出作为Model的Address对象的所有属性都以显示模式呈现出来,而在前面还具有相应的标签。
省
江苏省
市
苏州市
区
工业园区
街道
星湖街328号
值得一提的是,Object模板在对属性进行遍历的过程中,不论是显示模式还是编辑模式,只会处理非复杂类型。也就是如果属性成员是一个复杂类型(不能支持从字符串类型的转换),它不会出现在最终生成的HTML中。
public class Contact
{
[DisplayName("姓名")]
public string Name { get; set; }
[DisplayName("电话")]
public string PhoneNo { get; set; }
[DisplayName("Email地址")]
public string EmailAddress { get; set; }
[DisplayName("联系地址")]
public Address Address { get; set; }
}
通过上面的代码片断,我们定义了一个表示联系人的数据类型Contact,它具有一个类型的Address的同名属性。现在我们创建一个具体的Contact对象,并 对包括Address 属性在内的所有属性进行初始化,然后通过如下的方式通过调用HtmlHelper的DisplayForModel方法将它呈现在以此作为Model的View中。
@model Contact
@Html.DisplayForModel()
从如下所示的HTML可以看出,Contact的数据成员Address由于是复杂类型,其内容并不会呈现出来。
姓名
张三
电话
1234567890
Email地址
我们可以有两种方式解决这个问题,其实就是通过为Address类型定义各类专门的模板用于地址信息的显示和编辑,通过UIHintAttribute特性将此模板名称应用到Contact的Address属性上,然后调用DisplayFor/EditorFor将该属性呈现出来。另一种就是按照类似如如下的方式手工将负责类型属性成员呈现出来。
@model Contact
@Html.DisplayForModel()
@Html.DisplayName("Address")
@(Model.Address.Province + Model.Address.City + Model.Address.District+ Model.Address.Street)
以上就是关于ASP.NET预定义模板介绍,希望对大家的学习有所帮助。
你可能感兴趣的:(ASP.NET预定义模板介绍)
Agora-Uniapp-SDK 使用指南
章瑗笛
Agora-Uniapp-SDK使用指南Agora-Uniapp-SDK项目地址:https://gitcode.com/gh_mirrors/ag/Agora-Uniapp-SDK1.项目目录结构及介绍Agora-Uniapp-SDK是一个基于Uni-app与AgoraAndroid和iOS视频SDK实现的集成库,它专门设计用于简化在uni-app项目中集成Agora音视频功能的过程。以下是其主
推荐开源项目:Free Templates for AWS CloudFormation
褚知茉Jade
推荐开源项目:FreeTemplatesforAWSCloudFormationaws-cf-templateswiddix/aws-cf-templates:是一个包含各种AWSCloudFormation模板的存储库。适合查找和学习AWSCloudFormation模板的示例,以及用于构建自己的基础设施。特点是包含了许多AWS服务和功能的模板示例,可以快速地了解如何使用CloudFormati
探索AWS CloudFormation样本模板:构建云环境的新起点
劳泉文Luna
探索AWSCloudFormation样本模板:构建云环境的新起点aws-cloudformation-templatesawslabs/aws-cloudformation-templates:是一个包含各种AWSCloudFormation模板的存储库。适合查找和学习AWSCloudFormation模板的示例,以及用于构建自己的基础设施。特点是包含了许多AWS服务和功能的模板示例,可以快速地
Next.js博客项目-快速起步
Ktovoz
nextjs javascript 开发语言 react 前端
作者:KTO原文:Next.js博客项目-快速起步简介:从nextjs博客模板开始,快速配置搭建自己的博客项目。部署出来的网站样式可以参考原文的网站。Next.js博客项目-快速起步使用的模板我们使用的模板是:tailwind-nextjs-starter-blog该模板有1.0版本和2.0版本。本文以1.0版本为例进行介绍。1.环境配置安装Node.js首先,确保你的机器上已安装Node.js。
【DevOps】Backstage介绍及如何在Azure Kubernetes Service上进行部署
小涵
Azure云企业实践分享 devops azure kubernetes 容器 docker backstage
【DevOps】Backstage介绍及如何在AzureKubernetesService上进行部署推荐超级课程:本地离线DeepSeekAI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战目录【DevOps】Backstage介绍及如何在AzureKubernetesService上进行部署Backstage介绍在AKS上部署Bac
python读取excel数字数据是object类型_Python使用反射实现Excel与对象之间的转换
weixin_39638859
Python使用反射实现Excel与对象之间的转换代码在最下方,伸手党直接滚动到最后场景需要从Excel中加载到内存中,转换为class对象执行操作环境Python3.8openpyxl==3.0.5前置知识反射(仅介绍这个帮助类用到的几个反射方法)setattr、getattrclassPerson():name=Nonedef__init__(self,name):self.name=name
python语言对代码的块结构不敏感_浅谈python(二)--python代码规范
初夏之菡
对于每一门语言来说,都有自己的编码规则,编程时是不可以违背这些准则的,一旦不遵守这个准则,程序就会报错无法执行,本节将介绍下python的一些编码规则。1、代码缩进与冒号首先介绍下代码缩进有什么用处,代码缩进是指通过在一行代码的前输入若干空格或者制表符来表示行与行之间的层次关系,每一种编程语言一般都需要代码缩进进行规范程序代码的层次结构,让代码清晰易于解读。对于其它的语言来说,代码缩进作为一种良好
lua C语言api学习3 lua中调用C语言函数
刘阿去
lua lua c语言 学习
本文介绍如何在lua中如何调用自定义C语言函数1C函数要求Lua可以调用C语言函数,但这并不意味着Lua可以调用所有的C函数。当Lua调用C函数时,这个C函数必须遵循某种规则来获取参数和返回结果。此外,当Lua调用C函数时,我们必须注册该函数,即必须以一种恰当的方式为Lua提供该C函数的地址。所有在lua中注册的函数必须遵循下面原型。typedefint(*lua_CFunction)(lua_S
autohotkey应用3-剪贴板的使用
刘阿去
autohotkey 经验分享
在autohotkey的使用剪贴板非常方便,有专门的变量%Clipboard%和监测事件,再搭配热键使用很简单,下面介绍使用(下面例子均为纯文本复制粘贴):文章目录1-显示剪贴板内容.ahk2-热键显示剪贴板内容.ahk3-将剪贴板内容保存为文本文件.ahk4-热键保存剪贴板内容.ahk5-剪贴板内容监视.ahk6-剪贴板监视保存文本.ahk1-显示剪贴板内容.ahk;显示当前剪贴板内容Msgbo
C++ Primer Plus:第八章 - 函数探幽
我是一片小树叶
C++ 基础构建 函数探幽
0、本章内容:内联函数。引用变量。如何按引用传递函数参数。默认参数。函数重载。函数模板。函数模板具体化。1、C++内联函数:为提高程序运行速度所做的一项改进。在函数声明前加上关键字inline,在函数定义前加上关键字inline。不能使用递归。2、引用变量:2.1创建引用变量指向相同的值和内存单元,会一起变换。引用在声明的时候必须初始化。使用指针也不能修改引用的指向。2.2将引用作为函数参数2.3
Python入门实战:Python的代码重构
AI智能涌现深度研究
DeepSeek R1 & 大数据AI人工智能 大数据 人工智能 语言模型 AI LLM Java Python 架构设计
1.背景介绍Python是一种基于社区发展、易用性、生态系统完善、可扩展性强、性能卓越等特点的高级编程语言。作为一门解释型语言,它具有高效率、简洁语法、丰富的库函数、跨平台能力和多种开发范式等优点。但随着项目不断迭代更新,代码量逐渐增加,导致代码结构混乱、缺乏模块化设计、重复逻辑过多、命名不规范等问题。如何有效地组织、管理和维护代码、提升代码质量、更好地实现功能,是一个技术人的日常工作。如何进行代
python提取excel数据批量生成固定格式的word文件的问题
鱼弦
【HOT】技术热谈 excel word
鱼弦:公众号【红尘灯塔】,CSDN博客专家、内容合伙人、新星导师、全栈领域优质创作者、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen)使用Python从Excel中提取数据并生成固定格式的Word文档1.介绍本项目旨在介绍如何使用Python从Excel中提取数据并生成固定格式的Word文档
优化 Java 数据结构选择与使用,提升程序性能与可维护性
chenOnlyOne
学习 java 数据结构 开发语言
优化Java数据结构选择与使用,提升程序性能与可维护性引言在软件开发中,数据结构的选择是影响程序性能、内存使用以及代码可维护性的关键因素之一。Java作为一门广泛使用的编程语言,提供了丰富的内置数据结构,如数组、链表、栈、队列、树、图以及集合框架中的各种接口实现(如List,Set,Map等)。然而,面对不同的应用场景,如何合理地选择和优化数据结构,成为了一个值得深入探讨的话题。本文将介绍几种常见
安装openai环境 步骤及问题解决
leap_ruo
算法 人工智能 nlp 算法
1按照官网安装官网介绍很简单,使用pip即可安装成功pipinstallopenai但是,按照官方demo调用时,importopenaiopenai.api_key="your_api_key"#已申请的apikeyresponse=openai.Chatcompletion.create(model="gpt-3.5-turbo",messages=[{"rol
100.HarmonyOS NEXT跑马灯组件教程:实际应用与场景示例
harmonyos-next
温馨提示:本篇博客的详细代码已发布到git:https://gitcode.com/nutpi/HarmonyosNext可以下载运行哦!HarmonyOSNEXT跑马灯组件教程:实际应用与场景示例1.跑马灯组件应用概述跑马灯组件在HarmonyOSNEXT应用中有着广泛的应用场景,特别是在需要在有限空间内展示较长文本内容的情况下。本文将介绍跑马灯组件的实际应用场景和使用方法,帮助开发者更好地理解
从零开始大模型开发与微调:PyCharm的下载与安装
AI天才研究院
AI大模型企业级应用开发实战 AI大模型应用入门实战与进阶 DeepSeek R1 & 大数据AI人工智能大模型 计算科学 神经计算 深度学习 神经网络 大数据 人工智能 大型语言模型 AI AGI LLM Java Python 架构设计 Agent RPA
从零开始大模型开发与微调:PyCharm的下载与安装1.背景介绍随着人工智能和深度学习技术的不断发展,大型语言模型(LargeLanguageModels,LLMs)已经成为当前最引人注目的研究热点之一。LLMs能够在各种自然语言处理任务上展现出惊人的性能,例如机器翻译、文本生成、问答系统等。PyTorch和TensorFlow等深度学习框架为训练和微调大型语言模型提供了强大的支持。PyCharm
FreeModbus V1.6 主机使用说明(二)
七七知享
Modbus stm32 嵌入式硬件 单片机 mcu 物联网 开发语言 算法
二、移植对于协议栈的移植主要包括两个方面,硬件及软件。用户需要根据自己的需求进行自行选择。注:以下所有说明都主要针对Modbus主机模式进行介绍。2.1、软件软件方面支持基于裸机及实时操作系统的移植;支持单个主机与单个从机同时独立运行。另外用户也可以修改协议栈的事件回调接口,使主机请求的接口采用阻塞及非阻塞模式;主机资源等待方面,用户也可以设置等待超时时间等等,诸多功能将会一一介绍。2.1.1、操
A survey on instance segmentation: state of the art——论文笔记
栀子清茶
1024程序员节 论文阅读 计算机视觉 人工智能 笔记 学习
摘要这篇论文综述了实例分割的研究进展,定义其为同时解决对象检测和语义分割的问题。论文讨论了实例分割的背景、面临的挑战、技术演变、常用数据集,并总结了相关领域的最新成果和未来研究方向。实例分割的发展从粗略的对象分类逐步演变为更精细的像素级别推理,广泛应用于自动驾驶、机器人等领域。论文为研究人员提供了对实例分割领域的全面了解和有价值的参考。一、简介第一部分“简介”主要介绍了实例分割的背景、定义和挑战。
金融时间序列分析(Yahoo Finance API实战)
闲人编程
Python数据分析实战精要 金融 yfinance 时间序列 波动率 数据归一化 数据分析 Dash
这里写目录标题金融时间序列分析(YahooFinanceAPI实战)1.引言2.项目背景与意义3.数据集介绍4.GPU加速在数据处理中的应用5.交互式GUI设计与加速处理6.系统整体架构7.数学公式与指标计算8.完整代码实现9.代码自查与BUG排查10.总结与展望金融时间序列分析(YahooFinanceAPI实战)1.引言在当今金融市场中,时间序列数据分析是理解股票、指数以及其他金融产品走势的重
区块链架构、跨链和演进
Omni-Space
区块链 (Block Chain) 区块链 架构 跨链 演进
本文是基于作者近几年来对各种区块链平台理念和技术的研究,结合作者过去十多年的IT经验,审慎思考的结果,文章仅代表作者个人观点。作者会假设读者对各种区块链平台有一定的认知,不会对具体的区块链平台再做详细的介绍。为了从根本上说清楚区块链的架构内涵,作者先概括出区块链的本质,从区块链的本质出发,以发展的眼光给出一个区块链的详见附件架构,并对高阶的各个模块进行详细的说明。还会从区块链跨链的本质出发,说明区
【从零开始学习计算机科学】设计模式(四)责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、空对象模式、策略模式、模板模式、访问者模式
贫苦游商
学习 设计模式 责任链模式 迭代器模式 访问者模式 命令模式 解释器模式
【从零开始学习计算机科学】设计模式(四)责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、空对象模式、策略模式、模板模式、访问者模式责任链模式主要特点工作原理适用场景优点缺点命令模式主要特点工作原理适用场景优点缺点解释器模式主要特点工作原理:适用场景优点缺点迭代器模式主要特点工作原理适用场景优点缺点中介者模式主要特点工作原理适用场景优点缺点备忘录模式主要特
c#中将数据库数据导出到EXCEL中
lujunql
技术 excel 数据库 c# microsoft library string
我分以下几步进行介绍:1,新建一个C#应用程序,在对话框上放置一个按钮,Name=buttonOutput,Text=Output,用这个按钮激发导出程序;2,添加对“MicrosoftExcel9.0ObjectLibrary”的引用,根据自己计算机上安装Office版本的来确定Library的版本;3,在代码中加入引用:usingExcel;usingSystem.Reflection;4,在
使用Dapper和FastExcel在.NET中将SQL Server数据导出到Excel
Tnp____
.net excel oracle .NET
在许多应用程序中,将数据库中的数据导出到Excel是一项常见的需求。在.NET开发中,使用Dapper和FastExcel库可以方便地实现这一目标。Dapper是一个轻量级的ORM(对象关系映射)工具,可以简化数据库访问。而FastExcel是一个高性能的Excel读写库,可以快速地生成Excel文件。本文将介绍如何使用Dapper和FastExcel库从SQLServer数据库中检索数据,并将其
python记录运行时间_计算python程序运行时间
weixin_39668408
python记录运行时间
本文介绍三种方法用来计算python程序的运行时间,考虑多现在计算机都是多进程执行环境,本文介绍的方法,前两种统计了其它进程的时间,实际上是python程序执行开始和结束的时间,只有最后一个方法,是计算的python程序的独自占用的CPU时间,但是python官方已经不再推荐。各位同学可以根据自己的应用情况选择考虑。1,用datatime模块,秒级精度>>>importdatetime>>>dat
时间同步装置(卫星时钟同步)工作原理介绍
北京华人开创公司
卫星同步时钟 NTP时间同步 大数据 自动驾驶 神经网络
时间同步装置(卫星时钟同步)工作原理介绍时间同步装置(卫星时钟同步)工作原理介绍微软从Windows2000开始,系统就支持使用NTP同步的方式获取时间,Windows系统默认的时间源都来自time.windows.com。为了用户使用的方便,time.windows.com以及大多数公网NTP时间服务器没有使用NTP加密方案传输时间,而是使用明文传输。这种公网时间同步方案是非常不可靠的,容易被黑
DeepSeek掘金——IDEA 接入 DeepSeek 写代码的效率翻倍
不二人生
大模型 DeepSeek掘金指南 intellij-idea 大模型 deepseek
IDEA接入DeepSeek写代码的效率翻倍给大家简单介绍一下如何在常用的IDE中接入DeepSeek,这里以Java开发最常用的IDEA为例。目前,IDEA中接入DeepSeek,可以借助CodeGPT和Continue这两个插件。CodeGPT目前用的人最多,稳定性有保障,Continue接入最简单。这两个插件对IDEA版本有要求,IDEA版本太低的话,无法使用。⚠️注意:由于一些特殊原因,目
2、3ds Max的界面(3DMAX基础自学系列)
weixin_34409703
一、3dsMax2012中文版的操作界面二、各功能区的介绍1、菜单栏菜单栏位于软件界面顶部,共13个,分别是文件、编辑(E)、工具(T)、组(G)、视图(V)、创建(C)、修改器、动画、图标编译器、渲染(R)、自定义(U)、MAXScript(M)、帮助(H)。可以使用ALT+菜单的字母来打开菜单。①文件左上角的Max图标为文件操作入口,旁边为文件操作的快捷按钮,包含用于管理文件的命令,包括创建、
Java实战:Spring Boot application.yml配置文件详解
web_13233421436
面试 学习路线 阿里巴巴 java spring boot 网络
本文将详细介绍SpringBootapplication.yml配置文件的使用和配置项。我们将探讨application.yml文件的基本概念,以及如何使用它来配置SpringBoot应用程序的各个方面。此外,我们将通过具体的示例来展示如何配置不同的SpringBoot组件,如数据源、数据库、缓存、邮件服务等。本文适合希望深入了解SpringBoot配置文件的开发者阅读。一、引言在SpringBo
腾讯 IEG 游戏前沿技术 一面复盘
andrew_1219
面试经验 面试 java sql redis
前言投了个实习内推后台开发,本来要电话先交流的那天直接走流程下午面试了,对面两人,面了有一个小时,游戏本的构思续航忘记插电了最后还掉线了一下,趁着还记得面试内容复盘一下自我介绍一下答:您好,我是深大26届xxx的xxx,对贵公司后台开发的岗位很感兴趣。现在在xxx做后台开发实习生,负责项目的开发和运维相关,还有一部分系统设计相关的的工作,之前在学校中也做过web开发相关的项目。了解到贵公司正在招聘
java 对象和变量的区别_JAVA中的类/对象/变量/方法/参数含义及区别和联系...
抱玉于浮光
java 对象和变量的区别
JAVA学习了半月有余,最开始对这些东西的定义还是很清晰的,但越往后面,前面的东西没那么清晰了,返回来在看这些定义,为了以后方便查阅,现在摘录一下,放在这儿。类:类是组成java程序的基本要素。类封装了一类对象的属性和方法。类是用来定义产生对象的模板。类的实现包括两部分:类声明和类体。类体分为两部分:成员变量和局部变量。1、成员变量和局部变更的类型可以是java中的任何一种数据类型.变量定义部分所
java线程Thread和Runnable区别和联系
zx_code
java jvm thread 多线程 Runnable
我们都晓得java实现线程2种方式,一个是继承Thread,另一个是实现Runnable。
模拟窗口买票,第一例子继承thread,代码如下
package thread;
public class ThreadTest {
public static void main(String[] args) {
Thread1 t1 = new Thread1(
【转】JSON与XML的区别比较
丁_新
json xml
1.定义介绍
(1).XML定义
扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。
XML是标
c++ 实现五种基础的排序算法
CrazyMizzz
C++ c 算法
#include<iostream>
using namespace std;
//辅助函数,交换两数之值
template<class T>
void mySwap(T &x, T &y){
T temp = x;
x = y;
y = temp;
}
const int size = 10;
//一、用直接插入排
我的软件
麦田的设计者
我的软件 音乐类 娱乐 放松
这是我写的一款app软件,耗时三个月,是一个根据央视节目开门大吉改变的,提供音调,猜歌曲名。1、手机拥有者在android手机市场下载本APP,同意权限,安装到手机上。2、游客初次进入时会有引导页面提醒用户注册。(同时软件自动播放背景音乐)。3、用户登录到主页后,会有五个模块。a、点击不胫而走,用户得到开门大吉首页部分新闻,点击进入有新闻详情。b、
linux awk命令详解
被触发
linux awk
awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息
awk处理过程: 依次对每一行进行处理,然后输出
awk命令形式:
awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file
[-F|-f|-v]大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=val
各种语言比较
_wy_
编程语言
Java Ruby PHP 擅长领域
oracle 中数据类型为clob的编辑
知了ing
oracle clob
public void updateKpiStatus(String kpiStatus,String taskId){
Connection dbc=null;
Statement stmt=null;
PreparedStatement ps=null;
try {
dbc = new DBConn().getNewConnection();
//stmt = db
分布式服务框架 Zookeeper -- 管理分布式环境中的数据
矮蛋蛋
zookeeper
原文地址:
http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/
安装和配置详解
本文介绍的 Zookeeper 是以 3.2.2 这个稳定版本为基础,最新的版本可以通过官网 http://hadoop.apache.org/zookeeper/来获取,Zookeeper 的安装非常简单,下面将从单机模式和集群模式两
tomcat数据源
alafqq
tomcat
数据库
JNDI(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。
没有使用JNDI时我用要这样连接数据库:
03. Class.forName("com.mysql.jdbc.Driver");
04. conn
遍历的方法
百合不是茶
遍历
遍历
在java的泛
linux查看硬件信息的命令
bijian1013
linux
linux查看硬件信息的命令
一.查看CPU:
cat /proc/cpuinfo
二.查看内存:
free
三.查看硬盘:
df
linux下查看硬件信息
1、lspci 列出所有PCI 设备;
lspci - list all PCI devices:列出机器中的PCI设备(声卡、显卡、Modem、网卡、USB、主板集成设备也能
java常见的ClassNotFoundException
bijian1013
java
1.java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory 添加包common-logging.jar2.java.lang.ClassNotFoundException: javax.transaction.Synchronization
【Gson五】日期对象的序列化和反序列化
bit1129
反序列化
对日期类型的数据进行序列化和反序列化时,需要考虑如下问题:
1. 序列化时,Date对象序列化的字符串日期格式如何
2. 反序列化时,把日期字符串序列化为Date对象,也需要考虑日期格式问题
3. Date A -> str -> Date B,A和B对象是否equals
默认序列化和反序列化
import com
【Spark八十六】Spark Streaming之DStream vs. InputDStream
bit1129
Stream
1. DStream的类说明文档:
/**
* A Discretized Stream (DStream), the basic abstraction in Spark Streaming, is a continuous
* sequence of RDDs (of the same type) representing a continuous st
通过nginx获取header信息
ronin47
nginx header
1. 提取整个的Cookies内容到一个变量,然后可以在需要时引用,比如记录到日志里面,
if ( $http_cookie ~* "(.*)$") {
set $all_cookie $1;
}
变量$all_cookie就获得了cookie的值,可以用于运算了
java-65.输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999
bylijinnan
java
参考了网上的http://blog.csdn.net/peasking_dd/article/details/6342984
写了个java版的:
public class Print_1_To_NDigit {
/**
* Q65.输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999
* 1.使用字符串
Netty源码学习-ReplayingDecoder
bylijinnan
java netty
ReplayingDecoder是FrameDecoder的子类,不熟悉FrameDecoder的,可以先看看
http://bylijinnan.iteye.com/blog/1982618
API说,ReplayingDecoder简化了操作,比如:
FrameDecoder在decode时,需要判断数据是否接收完全:
public class IntegerH
js特殊字符过滤
cngolon
js特殊字符 js特殊字符过滤
1.js中用正则表达式 过滤特殊字符, 校验所有输入域是否含有特殊符号function stripscript(s) { var pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]"
hibernate使用sql查询
ctrain
Hibernate
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.hibernate.Hibernate;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transa
linux shell脚本中切换用户执行命令方法
daizj
linux shell 命令 切换用户
经常在写shell脚本时,会碰到要以另外一个用户来执行相关命令,其方法简单记下:
1、执行单个命令:su - user -c "command"
如:下面命令是以test用户在/data目录下创建test123目录
[root@slave19 /data]# su - test -c "mkdir /data/test123" 
好的代码里只要一个 return 语句
dcj3sjt126com
return
别再这样写了:public boolean foo() { if (true) { return true; } else { return false;
Android动画效果学习
dcj3sjt126com
android
1、透明动画效果
方法一:代码实现
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View rootView = inflater.inflate(R.layout.fragment_main, container, fals
linux复习笔记之bash shell (4)管道命令
eksliang
linux管道命令汇总 linux管道命令 linux常用管道命令
转载请出自出处:
http://eksliang.iteye.com/blog/2105461
bash命令执行的完毕以后,通常这个命令都会有返回结果,怎么对这个返回的结果做一些操作呢?那就得用管道命令‘|’。
上面那段话,简单说了下管道命令的作用,那什么事管道命令呢?
答:非常的经典的一句话,记住了,何为管
Android系统中自定义按键的短按、双击、长按事件
gqdy365
android
在项目中碰到这样的问题:
由于系统中的按键在底层做了重新定义或者新增了按键,此时需要在APP层对按键事件(keyevent)做分解处理,模拟Android系统做法,把keyevent分解成:
1、单击事件:就是普通key的单击;
2、双击事件:500ms内同一按键单击两次;
3、长按事件:同一按键长按超过1000ms(系统中长按事件为500ms);
4、组合按键:两个以上按键同时按住;
asp.net获取站点根目录下子目录的名称
hvt
.net C# asp.net hovertree Web Forms
使用Visual Studio建立一个.aspx文件(Web Forms),例如hovertree.aspx,在页面上加入一个ListBox代码如下:
<asp:ListBox runat="server" ID="lbKeleyiFolder" />
那么在页面上显示根目录子文件夹的代码如下:
string[] m_sub
Eclipse程序员要掌握的常用快捷键
justjavac
java eclipse 快捷键 ide
判断一个人的编程水平,就看他用键盘多,还是鼠标多。用键盘一是为了输入代码(当然了,也包括注释),再有就是熟练使用快捷键。 曾有人在豆瓣评
《卓有成效的程序员》:“人有多大懒,才有多大闲”。之前我整理了一个
程序员图书列表,目的也就是通过读书,让程序员变懒。 写道 程序员作为特殊的群体,有的人可以这么懒,懒到事情都交给机器去做,而有的人又可
c++编程随记
lx.asymmetric
C++ 笔记
为了字体更好看,改变了格式……
&&运算符:
#include<iostream>
using namespace std;
int main(){
int a=-1,b=4,k;
k=(++a<0)&&!(b--
linux标准IO缓冲机制研究
音频数据
linux
一、什么是缓存I/O(Buffered I/O)缓存I/O又被称作标准I/O,大多数文件系统默认I/O操作都是缓存I/O。在Linux的缓存I/O机制中,操作系统会将I/O的数据缓存在文件系统的页缓存(page cache)中,也就是说,数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。1.缓存I/O有以下优点:A.缓存I/O使用了操作系统内核缓冲区,
随想 生活
暗黑小菠萝
生活
其实账户之前就申请了,但是决定要自己更新一些东西看也是最近。从毕业到现在已经一年了。没有进步是假的,但是有多大的进步可能只有我自己知道。
毕业的时候班里12个女生,真正最后做到软件开发的只要两个包括我,PS:我不是说测试不好。当时因为考研完全放弃找工作,考研失败,我想这只是我的借口。那个时候才想到为什么大学的时候不能好好的学习技术,增强自己的实战能力,以至于后来找工作比较费劲。我
我认为POJO是一个错误的概念
windshome
java POJO 编程 J2EE 设计
这篇内容其实没有经过太多的深思熟虑,只是个人一时的感觉。从个人风格上来讲,我倾向简单质朴的设计开发理念;从方法论上,我更加倾向自顶向下的设计;从做事情的目标上来看,我追求质量优先,更愿意使用较为保守和稳妥的理念和方法。
&