导言
在前面的教程里我们学习了DataList提供了一些风格样式的属性.而且我们还学习了如何定义HeadStyle, ItemStyle, AlternatingItemStyle, 和SelectedItemStyle等属性的默认CSS.除了这四个属性外,DataList还提供了其它属性,比如Font, ForeColor, BackColor, 和BorderWidth.而Repeater没有提供任何这样的属性.如果你需要用Reperter来实现这些效果,你就需要在templates里直接写标记语言.
通常,数据需要怎样的格式取决于数据本身.比如,我们可能使用灰色的字体列出那些被停止使用的product,或者在UnitsInStock等于0的时候显示高亮.前面的教程里我们已经学习了GridView, DetailsView, 和FormView 都提供了两种截然不同的格式化数据的方法.
DataBound 事件― 为DataBound 事件创建一个合适的event handler, 它在数据绑定到item的时候激发(对GridView来说是RowDataBound 事件; 对 DataList 和Repeater来说是 ItemDataBound 事件). 在这些事件里, 刚刚绑定的数据可以被格式化. 参见《基于数据的自定义格式化》 这章.
Templates 的格式化功能― 在DetailsView 或GridView 里使用TemplateFields , 或 在FormView 里使用template , 我们可以在ASP.NET page的code-behind class里或者BLL里,或者任何其它web程序里可以调用的类库里加格式化信息. 这种格式化功能可以接收任意的输入参数, 但是在template里比如返回HTML . 格式化功能最早在在GridView控件中使用TemplateField 这章里谈到过. 这两种方法都可以在DataList和Repeater里使用.在本章里我们将一步步用这两种方法在这两个控件里做示例.
使用 ItemDataBound Event Handler
当数据绑定到 DataList时, 无论是使用数据源控件或者 直接在代码里使用DataSource 和 DataBind() , DataList的DataBinding 事件都会被激发. DataList 为数据源的每条记录创建一个 DataListItem 对象,然后绑定到当前记录. 在这个过程中DataList 激发两个事件:
ItemCreated ― 在创建DataListItem 后激发 ItemDataBound ― 当前记录绑定到DataListItem 后激发
下面列出了DataList数据绑定过程的大概步骤
DataList的DataBinding event 被激发 DataList 对数据源的每条记录... For each record in the data source… 创建一个DataListItem 对象 激发ItemCreated event 绑定记录到DataListItem 激发ItemDataBound event 将DataListItem 添加到Items collection
当数据绑定到Repeater时,和上面所说的情况一样.唯一的区别在于,DataListItem换成了RepeaterItem.
注意:细心的读者可能注意到了DataList和Repeater绑定到数据时的步骤顺序和GridView有些许差别.在数据绑定过程的后期,GridView会激发DataBound事件,而DataList和Repeater则都没有这个事件.
和GridView一样,可以为ItemDataBound事件创建一个event handler 来格式化数据.这个event handler 可以处理刚刚绑定到DataListItem或RepeaterItem的数据,来按照需要进行格式化.
对DataList来说,可以使用风格样式相关的属性,如Font, ForeColor, BackColor, CssClass等,来格式化item.而如果你想格式化Datalist里的template里的web控件,你需要编程去获取这些控件,然后来控制.我们在《Custom Formatting Based Upon Data》里已经看过怎样做.和Repeater控件一样,RepeaterItem类也没有风格样式相关的属性,因此,你需要在ItemDataBound event handler里编程去实现.
由于在DataList和Repeater里使用ItemDataBound格式化技术从本质上来说是由于的,因此我们的示例主要讲DataList.
第一步: 在DataList显示Product 信息
在学习格式化之前,我们首先创建一个使用DataList显示product信息的页面.在前面一章里,我们创建了一个ItemTemplate显示product 的name,category, supplier, quantity和price的DataList.我们在本章来重复做一次.你可以重新创建DataList和它的ObjectDataSource ,或者直接把前面一章里的Basics.aspx里的控件复制到本章的页面(Formatting.aspx)里.当你完成了Formatting.aspx后,将DataList的ID从DataList1改为ItemDataBoundFormattingExample.下面,在浏览器里看看DataList.如图1所示,唯一的格式在于每个product的交替的背景色.
图 1: 在DataList 里列出product信息
在本章教程里,我们来将价格小于 $20.00 的product的名字和单价用黄色 高亮来显示.
第二步: 在 ItemDataBound Event Handler里编程判断数据的值
由于只有价格低于$20.00 的product会被格式化,因此我们首先要判断每个product的价格.在绑定数据到DataList时,DataList 为每条数据源的记录创建一个DataListItem实例,并绑定数据.当记录绑定到DataListItem对象后,ItemDataBound事件被激发.我们可以为这个事件创建一个event handler来判断当前DataListItem的值,再根据这个值来格式化数据. 添加以下代码为DataList创建ItemDataBound事件
protected void ItemDataBoundFormattingExample_ItemDataBound
(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType == ListItemType.AlternatingItem)
{
// Programmatically reference the ProductsRow instance bound
// to this DataListItem
Northwind.ProductsRow product =
(Northwind.ProductsRow)((System.Data.DataRowView)e.Item.DataItem).Row;
// See if the UnitPrice is not NULL and less than $20.00
if (!product.IsUnitPriceNull() && product.UnitPrice < 20)
{
// TODO: Highlight the product's name and price
}
}
}
DataList的ItemDataBound event handler在概念和语义上来说,和GridView的RowDataBound event handler一样(见基于数据的自定义格式化),语法上有一点差别.当ItemDataBound事件激发时,刚刚绑定数据的DataListItem通过e.Item(在GridView里是e.Row和RowDataBound)传递给相关的event handler.DataList的ItemDataBound event handler影响到每一行,包括 header , footer 和separator.但是product信息只绑定到data行.因此,在处理ItemDataBound事件前,我们首先要判断处理的是否是data行.这个可以通过检查DataListItem的ItemType 属性来完成,它可以有以下八个值:
AlternatingItem EditItem Footer Header Item Pager SelectedItem Separator
Item和AlternatingItem都表示DataList的data item.假设我们在处理Item或AlternatingItem,我们可以获取绑定到当前DataListItem的ProductsRow的实例.DataListItem的DataItem属性包含了DataRowView对象的引用,通过它的Row属性可以获取ProductsRow对象.
下面我们来检查ProductsRow实例的单价属性.由于Product表的UnitPrice字段允许空值,所以在获取UnitPrice属性前我们应该先用IsUnitPriceNull()方法检查这个值是否为空.如果不是,我们再检查看它是否低于$20.00.如果是,我们就进行格式化处理.
第三步: 是Product的 Name 和Price高亮显示
一旦我们发现Product的price低于$20.00,我们将使它的name和price显示高亮.首先我们要编程获得ItemTemplate里显示Product的name和price的Label控件.然后我们将它的背景色显示为黄色.这个可以直接通过修改Label空间的BackColor属性(LabelID.BackColor = Color.Yellow).当然最理想的做法是所有的显示相关的行为都通过CSS来实现.实际上我们在基于数据的自定义格式化一章里创建的Styles.css - AffordablePriceEmphasis已经提供了这个功能.
使用以下代码设置两个Label控件的CssClass 属性为AffordablePriceEmphasis来完成格式化:
// Highlight the product name and unit price Labels
// First, get a reference to the two Label Web controls
Label ProductNameLabel = (Label)e.Item.FindControl("ProductNameLabel");
Label UnitPriceLabel = (Label)e.Item.FindControl("UnitPriceLabel");
// Next, set their CssClass properties
if (ProductNameLabel != null)
ProductNameLabel.CssClass = "AffordablePriceEmphasis";
if (UnitPriceLabel != null)
UnitPriceLabel.CssClass = "AffordablePriceEmphasis";
ItemDataBound 事件完成后,在浏览器里浏览Formatting.aspx页.如图2所示,价格低于 $20.00 的product的name和prict都高亮显示了.
图2: 价格低于$20.00 的product都被高亮显示
注意:由于DataList使用 HTML , DataListItem实例有可以设置整个item风格的属性.比如,如果我们想在price低于$20.00时将所有的item都用黄色来高亮显示,我们可以用e.Item.CssClass = "AffordablePriceEmphasis"来代替上面的代码(见图3).
而组成Repeater的RepeaterItem并没有提供这样的属性.因此,在Repeater里自定义格式需要设置templates里的控件的格式,象在图2里所做的那样.
图 3: The Entire Product Item is Highlighted for Products Under $20.00
使用 Template的格式化功能
在在GridView控件中使用TemplateField 一章里,我们学习了如何使用GridView TemplateField的格式化功能来格式化GridView的数据.格式化功能是一种可以从template里调用并返回HTML显示的方法.格式化功能可以写在ASP.NET page的 code-behind class 或App_Code 文件夹里的类文件里或单独的类库项目里.如果你想在其它ASP.NET web程序或多个ASP.NET 页用到同样的功能,那么不要把它下在ASP.NET page的 code-behind class 里.
为了演示这个功能,我们将修改product信息.如果product被停用,我们在product的name后面增加一个“[DISCONTINUED]”的text.同样的,如果price低于 $20.00 我们将会用黄色来高亮显示(如我们在ItemDataBound event handler例子里做的那样).如果price等于或高于 $20.00,我们将不显示实际的价格,而是在text里显示“Please call for a price quote”. 图4是完成以上功能的页面截图.
图 4: 将比较贵的Products 的价格用文本“Please call for a price quote”来代替.
第一步: 创建格式化功能
这个例子里我们需要两个格式化功能,其一是在被停用的product name后面加上“[DISCONTINUED]”, 其二是对价格低于$20.00的product高亮显示,其它则显示“Please call for a price quote”.我们将在ASP.NET page的code-behind class 里创建这些功能,并给它们取名为DisplayProductNameAndDiscontinuedStatus 和DisplayPrice.这两个方法都需要返回HTML,而且为了在ASP.NET page的声明语法里调用,都需要标记为Protected (or Public).下面是这两个方法的代码:
protected string DisplayProductNameAndDiscontinuedStatus
(string productName, bool discontinued)
{
// Return just the productName if discontinued is false
if (!discontinued)
return productName;
else
// otherwise, return the productName appended with the text "[DISCONTINUED]"
return string.Concat(productName, " [DISCONTINUED]");
}
protected string DisplayPrice(Northwind.ProductsRow product)
{
// If price is less than $20.00, return the price, highlighted
if (!product.IsUnitPriceNull() && product.UnitPrice < 20)
return string.Concat("",
product.UnitPrice.ToString("C"), " ");
else
// Otherwise return the text, "Please call for a price quote"
return "Please call for a price quote ";
}
注意到DisplayProductNameAndDiscontinuedStatus 方法接收productName 和discontinued 的值.而DisplayPrice 方法接收ProductsRow (而不是UnitPrice).如果格式化功能处理可能包含数据库空值(比如UnitPrice,而ProductName和Discontinued都不允许空)的量值,要特别小心处理.
输入的值可能是一个DBNull而不是你期望的数据类型,因此输入参数的类型必须为Object.而且比如检查传进来的值是否为database NULL.也就是说,如果我们想让DisplayPrice 方法以价格为参数,我们需要以下代码:
protected string DisplayPrice(object unitPrice)
{
// If price is less than $20.00, return the price, highlighted
if (!Convert.IsDBNull(unitPrice) && ((decimal) unitPrice) < 20)
return string.Concat("",
((decimal) unitPrice).ToString("C"), " ");
else
// Otherwise return the text, "Please call for a price quote"
return "Please call for a price quote ";
}
注意输入参数UnitPrice的类型为Object,条件判断语句被修改为判断unitPrice 是否为DBNull.而且,由于UnitPrice是作为Object传进来的,所以必须要类型转换为decimal.
第二步: 在DataList 的ItemTemplate调用格式化方法
在完成以上代码后,剩下的工作就是在DataList的ItemTemplate里调用这些格式化功能.我们需要使用以下代码:
<%# MethodName(inputParameter1, inputParameter2, ...) %>
在DataList的ItemTemplate里,ProductNameLabel Label通过指定text属性为<%# Eval("ProductName") %>显示的product的name.为了在需要的情况下加上“[DISCONTINUED]” ,修改代码,使用DisplayProductNameAndDiscontinuedStatus 方法来指定text属性.我们需要使用Eval("columnName") 语法来将product的name和discontinued的值传进去.Eval 返回的值为Object类型,而DisplayProductNameAndDiscontinuedStatus 的参数为String 和Boolean.因此,我们需要将Eval 方法返回的值转换为需要的参数类型,代码如下:
和显示product的name和“[DISCONTINUED]” 文本一样,我们设置UnitPriceLabel label的属性为DisplayPrice 的返回值来显示价格.我们将ProductsRow作为参数,而不是UnitPrice:
完成以上代码后,在浏览器里看一下页面.你的页面应该和图5看起来差不多.
图 5: 将比较贵的Products 的价格用文本“Please call for a price quote”来代替
总结
基于数据格式化DataList或Repeater有两种方法.一种是为ItemDataBound 创建event handler .ItemDataBound 在数据源的每条记录绑定到DataListItem 或RepeaterItem时被激发.在ItemDataBound event handler里,可以判断当前item的数据并格式化,而对DataListItem可以格式化整个item.
另一种是通过格式化功能来完成自定义格式化.格式化功能是一种可以从template里调用并返回HTML显示的方法.通常,通过判断绑定到当前item的值来决定返回什么样的HTML.这些值或者绑定到item的对象可以传递到格式化功能里.祝编程快乐!
作者简介
Scott Mitchell,著有六本ASP/ASP.NET方面的书,是4GuysFromRolla.com的创始人,自1998年以来一直应用 微软Web技术。Scott是个独立的技术咨询顾问,培训师,作家,最近完成了将由Sams出版社出版的新作,24小时内精通ASP.NET 2.0。他的联系电邮为[email protected] ,也可以通过他的博客http://scottonwriting.net/与他联系。
你可能感兴趣的:(在ASP.NET 2.0中操作数据之三十:格式化DataList和Repeater的数据)
【CodeMirror】系列(一)官网文档学习(一)系统指南
一棵开花的树,枝芽无限靠近你
CodeMirror 学习 CodeMirror 前端 编辑器
这个系列来学习一下CodeMirror编辑器。这篇文章主要是记录一下官方文档的学习,先把官方文档大致浏览一遍。CodeMirror是一个Web端的代码编辑器,和前面学习的MonacoEditor一样。应该比MonacoEditor轻便一些,而且有Vue版本,对Vue用户友好。另外可以将代码显示成DOM元素,对于代码和DOM元素的转换这块比较简单,在MonacoEditor中就没有这么方便,Mona
pmap 命令详解:使用场景、参数解析与实际应用实例
weixin_42587823
linux云计算 服务器 linux 运维
pmap命令详解:使用场景、参数解析与实际应用实例在Linux系统中,了解进程的内存使用情况对系统调优、故障排查和内存泄漏分析至关重要。pmap命令就是一个非常实用的工具,它可以显示指定进程的内存映射信息,帮助我们直观地了解内存分配情况、共享库的加载情况以及各个内存段的占用详情。本文将详细介绍pmap命令的使用场景、各参数的功能及实际应用实例,包括具体的输入命令和输出解释。一、pmap命令的基本概
6、片元着色器之gamma校正
不收藏找不到我
着色器 着色器
1、什么是gamma校正?显示器显示片元着色器输出的颜色值是会进行如下换算:Colorscreen=Colorgamma(1)Color_{screen}=Color^{gamma}\quad(1)Colorscreen=Colorgamma(1)其中:Color是片元着色器输出的颜色值,Colorscreen是显示器实际显示的颜色值,gamma为显示器的gamma值,不同的显示器的gamma值可
8、基于osg引擎实现读取vtk数据通过着色器实现简单体渲染(2)
不收藏找不到我
着色器 着色器 c++ 开发语言
#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeconststd::stringDATA_PATH=R"(..\
往adobe illustrator中添加latex字体
npupengsir
adobe illustrator ui
找到如下字体所在路径/path/to/miktex/type1\public\amsfonts\cm然后copy相应的字体文件cmmi10.pfb将相应的pfb文件复制到Adobeillustrator字体文件夹:/path/to/illustrator/SupportFiles/Required/Fonts然后重启即可。
区块链和大模型的结合
hanyongyi 1531
区块链
大模型@区块链(4个应用)_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1mu4y1W7bY/?spm_id_from=333.337.search-card.all.click&vd_source=8d683f22b43d55b6630d3bec03cfdb6d通过使用自然语言询问有关Aptos区块链生态系统的任何问题,使用户能够无缝地进入web3
Adobe Firefly 技术浅析(三):GANs 的改进
爱研究的小牛
AIGC——图像 AIGC—生成对抗网络 AIGC 机器学习 深度学习
生成式对抗网络(GANs)在图像生成领域取得了显著的进展,但原始的GANs在训练稳定性、生成质量以及多样性方面存在一些挑战。AdobeFirefly在其图像生成技术中采用了多种改进的GANs方法,以提高生成图像的质量和多样性。1.条件生成式对抗网络(cGANs)1.1基本原理条件生成式对抗网络(cGANs)通过引入额外的条件信息(如类别标签、文本描述等),使得生成器能够根据这些条件生成特定类型的图
第5篇:从入门到精通:深入详解Python模块与包管理的应用
猿享天开
python 开发语言
第5篇:模块与包管理目录模块概述什么是模块导入模块标准库简介创建与使用自定义模块创建模块导入自定义模块模块搜索路径包(Packages)什么是包创建包导入包中的模块常用内置模块介绍math模块datetime模块os模块sys模块模块与包的最佳实践命名规范组织结构避免循环导入示例代码常见问题及解决方法总结模块概述什么是模块模块是Python中组织代码的一种方式。一个模块就是一个包含Python定义
SpringBoot实战系列之发送短信验证码
m0_67401660
面试 学习路线 阿里巴巴 android 前端 后端
大家好,我是??大二在读作业侠系列最新文章??Java实现聊天程序SpringBoot实战系列??SpringBoot实战系列之发送短信验证码一起刷算法与数据结构最新文章??一起刷算法与数据结构-树篇1环境搭建大集合环境搭建大集合(持续更新)内容速览:1.短信验证码平台选择考虑点2.短信平台3.实战发送短信验证码1.短信验证码平台选择考虑点各个类型短信价格短信到达率、到达时间短信内容变量灵活,便持
Java对接DeepSeek全攻略:从0到1小白无忧
古龙飞扬
java 开发语言 ai
本文将带你从零开始,详细讲解如何在Java中对接DeepSeekAPI,适合小白用户。我们将从环境搭建、API调用、数据处理等方面逐步展开,并提供完整的代码示例。目录准备工作获取DeepSeekAPI密钥创建Java项目添加依赖使用Maven引入HTTP和JSON库编写代码创建请求和响应类发送HTTP请求处理API响应完整代码示例运行与测试常见问题与解决方案1.准备工作1.1获取DeepSeekA
Windows安装nvm【超详细图解】
古龙飞扬
windows
在Windows系统上安装nvm(NodeVersionManager,即Node.js版本管理器)的详细步骤如下:一、下载nvm安装包方式一:官网下载地址:https://nvm.uihtm.com/注意此种方式可能会打不开,看运气,如果打不开还有第二种方式。方式二:GitHub下载1.访问nvm的GitHub页面:前往nvm的GitHub页面下载适用于Windows的安装包。2.选择安装包:通
豆包AI的详细介绍
古龙飞扬
人工智能
一、平台访问与登录网页版:在浏览器中输入豆包官网地址,登录账号后,点击首页导航栏中的“AI作画”或相关图片生成入口,即可进入图片生成页面。APP版:在安卓应用市场或iOS的AppStore中搜索“豆包”,下载安装后打开并登录,在首页或功能区找到“AI作画”等类似入口,点击进入图片生成界面。二、主要功能及示例智能对话功能描述:豆包AI能够理解和解析自然语言,用户可以通过语音或者文字的方式输入问题,它
Spring Security 6.4登录全览:机制、特性、实战与优化
古龙飞扬
java 前端 数据库
一、登录机制SpringSecurity的登录机制是其安全框架的核心部分,它提供了一种灵活且强大的方式来保护应用程序的资源。在SpringSecurity6.4中,登录机制主要包括以下几个方面:认证流程:用户通过登录表单提交用户名和密码。SpringSecurity的UsernamePasswordAuthenticationFilter拦截该请求,并从中提取用户名和密码。创建一个Username
jsp中嵌套java代码,js中嵌套java代码
loveking6
嵌套 jsp js java代码
首先根据三目运算中,来判断如果等于add,就是新增,否则就是编辑。在js中想要判断是true还是false,所以需要把java代码拿过来,在js中写java代码,得加上,在里面写java代码根据jsp中的java代码,取到user,在js中调用user
js隐藏td
loveking6
js隐藏
通过if条件判断td的显示情况window.οnlοad=function(){//获取td的唯一标识,经过判断使其不显示(不占位隐藏)document.getElementById("admin2").style.display="none";$("#admin2").hide();$("#admin2").attr("style","display:none");//获取td的唯一标识,使其显
鸿蒙开发:权限管理之权限声明
前言本文基于Api13。为什么要有权限管理?最大原因是提高用户对隐私和数据安全的控制权,防止恶意软件滥用权限,试想一下,如果没有权限管理,肯定会有一些恶意软件利用这些默认授权权限,获取用户的敏感信息,对用户隐私构成威胁,这是其一,其二就是用户的体验,因为用户无法根据自己的需求授权权限,可能导致不必要的权限被授予,于公于私,于情于理,权限管理都是必须且坚决要执行的。鸿蒙生态中,可以说,权限管理从始
如何选择测试管理工具
测试工具
选择测试管理工具的关键在于需求匹配、功能全面、易用高效。其中,需求匹配强调企业应明确自身测试流程和目标,选择工具时要确保其功能与实际需求高度契合;功能全面要求测试管理工具具备需求管理、缺陷跟踪、自动化测试集成、报告生成等多项核心功能;易用高效则要求工具操作简单、界面友好,并能与其他系统无缝对接,从而提升整体测试效率和团队协同能力。在软件开发和互联网项目中,测试管理工具扮演着关键角色。随着项目复杂度
用Python打造智能姓名生成器:从数据分离到AI赋能
灏瀚星空
python 人工智能 开发语言 经验分享 笔记
用Python打造智能姓名生成器:从数据分离到AI赋能目录项目概述与功能清单环境准备与工具选择项目架构设计核心代码实现AI古文解析模块交互界面开发使用示例与效果展示扩展思路与优化建议1.项目概述与功能清单核心功能数据管理CSV文件存储姓氏/名字库支持用户导入/导出数据交互界面姓名生成与实时预览已选名单管理(增删改查)排除词输入框(黑名单过滤)AI赋能从古文中提取字词及注解自动生成姓名寓意解析扩展功
HarmonyOS NEXT 开发环境搭建与金融理财类APP开发指南
harmonyos
引言随着华为鸿蒙操作系统HarmonyOSNEXT的推出,越来越多的开发者开始关注并投入到这一新生态系统的开发中。本文将详细介绍如何在HarmonyOSNEXT上搭建开发环境,并通过一个金融理财类财务记账APP的示例,展示如何进行应用程序的技术开发。开发环境搭建首先,开发者需要准备一台运行Windows或macOS的计算机,并确保安装了最新版本的JavaDevelopmentKit(JDK)。接下
IMX6ULL学习整理篇——UBoot的一些基础知识(1.编译流程)
charlie114514191
从0开始的学习ARMv7a IMX6ULL芯片 学习 UBoot 嵌入式软件 编译
前言笔者整理了最近刷IMX6ULL的一些学习笔记,这里打算稍微整理一下东西发上来作为作为一个补充正文大部分而言,当我们拿到源码的时候,一般都是——先使用make来生成一份针对我们目标开发板的配置。举个例子,正点原子针对他们的开发板(EMMC作为类似于我们电脑的硬盘,DDR类似我们电脑的内存),使用的就是他们自己配置的mx6ull_14x14_ddr512_emmc_defconfig文件。也就是说
Python常用10个模块详解:提升开发效率的利器
Python_trys
python microsoft 数据库 开发语言 Python入门 Python基础 Python教程
包含编程籽料、学习路线图、爬虫代码、安装包等!【点击领取!】Python作为一门功能强大且易于学习的编程语言,拥有丰富的标准库和第三方模块,能够帮助开发者快速实现各种功能。本文将详细介绍Python中常用的10个模块,帮助你在开发中更高效地完成任务。1.os模块:操作系统交互os模块提供了与操作系统交互的功能,包括文件操作、目录管理、环境变量等。常用功能:文件与目录操作:importos#获取当前
使用Node.js对接StockTV全球金融市场数据API
数据分析爬虫
使用Node.js对接StockTV全球金融市场数据API摘要:本文详细介绍了如何通过Node.js客户端库快速接入StockTV全球金融市场数据API,涵盖股票、外汇、期货和加密货币的实时行情获取与历史数据查询。通过本文,开发者可掌握RESTAPI调用、WebSocket实时订阅等核心功能。一、项目概述StockTVAPINode.js客户端是一个轻量级SDK,提供对全球四大金融市场的标准化访问
Linux文件描述符
linuxvim
Linux文件描述符Linux系统中,把一切都看做是文件,当进程打开现有文件或创建新文件时,内核向进程返回一个文件描述符(filedescriptor,fd)[1,4],在windows下面,这玩意儿叫filehandle,句柄。文件描述符(filedescriptor)就是内核为了高效管理这些已经被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作
CSS文本样式
css前端
文本text属性写在前面:上午我在做计组实验就没有去写博客,现在赶紧补上,还有五门期末考试要复习,加油。注意区分text和font,text是是对文本的整体结构排版的调整,而font的对文字本身的一个效果。属性说明text-indent首行缩进text-align水平对齐text-decoration文本修饰text-transform大小写转换line-height行高letter-spacin
云端书签:在iCloud中存储Safari书签的终极指南
2401_85702623
icloud safari 前端
云端书签:在iCloud中存储Safari书签的终极指南在数字化时代,互联网成为了我们获取信息的海洋,而书签则是我们在这海洋中导航的灯塔。Safari浏览器的书签功能帮助我们保存喜爱的网站,但当书签数量日益增多,如何在不同设备间同步它们成了一个挑战。iCloud作为苹果公司提供的云服务,为我们提供了一个完美的解决方案。本文将详细介绍如何在iCloud中存储和同步Safari书签,确保你的灯塔始终照
掌握Conda的艺术:精通channels管理
2401_85702623
conda
掌握Conda的艺术:精通channels管理Conda作为Python和其他科学计算包的包管理器,其强大的包管理能力很大程度上依赖于channels。channels是Conda用来查找和安装包的源。默认情况下,Conda会从Anaconda的官方源安装包,但有时我们需要添加额外的channels来获取更多的包或者特定版本的包。本文将详细介绍如何在Conda中使用condaconfig--add
AcWing-差分矩阵
门左有棵树
AcWing 算法 c++
题目:差分矩阵(二维差分)输入一个n行m列的整数矩阵,再输入q个操作,每个操作包含五个整数x1,y1,x2,y2,c,其中(x1,y1)和(x2,y2)表示一个子矩阵的左上角坐标和右下角坐标。每个操作都要将选中的子矩阵中的每个元素的值加上c。请你将进行完所有操作后的矩阵输出。输入格式第一行包含三个整数n,m,q。接下来n行,每行包含m个整数,表示整数矩阵。接下来q行,每行包含五个整数x1,y1,x
区间合并问题
六七_Shmily
数据结构与算法分析 算法 区间合并
在算法中遇到区间合并问题时,可以从以下角度进行分析和解决:一、核心思路:排序与贪心策略排序预处理将区间按照起始端点升序排序,确保后续处理时相邻区间可能重叠。这是解决区间合并问题的关键预处理步骤[。排序后,重叠或相邻的区间会连续排列,便于合并(例如,区间[1,3]和[2,6]会相邻)。贪心合并逻辑遍历排序后的区间,逐个判断是否与结果集中的最后一个区间重叠:重叠条件:当前区间的起始点≤结果集最后一个区
3月16日星期日早报简报微语报早读
微语早读
生活
3月16日星期日,农历二月十七,早报#微语早读。1、多地探索将DeepSeek嵌入纪检监察工作,有的已甄别出可疑数据;2、再次超越!《哪吒2》票房进入全球票房榜前5名;3、北京修订小客车数量调控细则:增加亲属间车辆转让范围;4、市场监管总局:全面加大包括直播带货在内的网售产品抽查力度;5、西安交通大学通报“副教授权威期刊论文全文抄袭”:解除聘用关系;6、涉多个知名品牌!卫生巾、纸尿裤残次料,竟被翻
VMware中linux系统与主机win系统设置共享文件夹、安装VMware tools
鲁鲁在川
linux 运维 服务器
1.设置.虚拟机==》设置==硬件/选项==》共享文件夹==》总是启用总是启用为灰色,在虚拟机未开启其设置2.添加共享文件夹3..否存在/mnt/hgfs文件夹没有创建,有则提示sudomkdir/mnt/hgfs4.挂载共享文件夹!!挂载共享文件夹!!挂载共享文件夹!!下次启动虚拟机,还需要再填一次!!每次启用,每次挂载!!!!!!!!sudovmhgfs-fuse.host://mnt/hgf
HQL之投影查询
归来朝歌
HQL Hibernate 查询语句 投影查询
在HQL查询中,常常面临这样一个场景,对于多表查询,是要将一个表的对象查出来还是要只需要每个表中的几个字段,最后放在一起显示?
针对上面的场景,如果需要将一个对象查出来:
HQL语句写“from 对象”即可
Session session = HibernateUtil.openSession();
Spring整合redis
bylijinnan
redis
pom.xml
<dependencies>
<!-- Spring Data - Redis Library -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redi
org.hibernate.NonUniqueResultException: query did not return a unique result: 2
0624chenhong
Hibernate
参考:http://blog.csdn.net/qingfeilee/article/details/7052736
org.hibernate.NonUniqueResultException: query did not return a unique result: 2
在项目中出现了org.hiber
android动画效果
不懂事的小屁孩
android动画
前几天弄alertdialog和popupwindow的时候,用到了android的动画效果,今天专门研究了一下关于android的动画效果,列出来,方便以后使用。
Android 平台提供了两类动画。 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转、平移、放缩和渐变)。
第二类就是 Frame动画,即顺序的播放事先做好的图像,与gif图片原理类似。
js delete 删除机理以及它的内存泄露问题的解决方案
换个号韩国红果果
JavaScript
delete删除属性时只是解除了属性与对象的绑定,故当属性值为一个对象时,删除时会造成内存泄露 (其实还未删除)
举例:
var person={name:{firstname:'bob'}}
var p=person.name
delete person.name
p.firstname -->'bob'
// 依然可以访问p.firstname,存在内存泄露
Oracle将零干预分析加入网络即服务计划
蓝儿唯美
oracle
由Oracle通信技术部门主导的演示项目并没有在本月较早前法国南斯举行的行业集团TM论坛大会中获得嘉奖。但是,Oracle通信官员解雇致力于打造一个支持零干预分配和编制功能的网络即服务(NaaS)平台,帮助企业以更灵活和更适合云的方式实现通信服务提供商(CSP)的连接产品。这个Oracle主导的项目属于TM Forum Live!活动上展示的Catalyst计划的19个项目之一。Catalyst计
spring学习——springmvc(二)
a-john
springMVC
Spring MVC提供了非常方便的文件上传功能。
1,配置Spring支持文件上传:
DispatcherServlet本身并不知道如何处理multipart的表单数据,需要一个multipart解析器把POST请求的multipart数据中抽取出来,这样DispatcherServlet就能将其传递给我们的控制器了。为了在Spring中注册multipart解析器,需要声明一个实现了Mul
POJ-2828-Buy Tickets
aijuans
ACM_POJ
POJ-2828-Buy Tickets
http://poj.org/problem?id=2828
线段树,逆序插入
#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>using namespace std;#define N 200010struct
Java Ant build.xml详解
asia007
build.xml
1,什么是antant是构建工具2,什么是构建概念到处可查到,形象来说,你要把代码从某个地方拿来,编译,再拷贝到某个地方去等等操作,当然不仅与此,但是主要用来干这个3,ant的好处跨平台 --因为ant是使用java实现的,所以它跨平台使用简单--与ant的兄弟make比起来语法清晰--同样是和make相比功能强大--ant能做的事情很多,可能你用了很久,你仍然不知道它能有
android按钮监听器的四种技术
百合不是茶
android xml配置 监听器 实现接口
android开发中经常会用到各种各样的监听器,android监听器的写法与java又有不同的地方;
1,activity中使用内部类实现接口 ,创建内部类实例 使用add方法 与java类似
创建监听器的实例
myLis lis = new myLis();
使用add方法给按钮添加监听器
软件架构师不等同于资深程序员
bijian1013
程序员 架构师 架构设计
本文的作者Armel Nene是ETAPIX Global公司的首席架构师,他居住在伦敦,他参与过的开源项目包括 Apache Lucene,,Apache Nutch, Liferay 和 Pentaho等。
如今很多的公司
TeamForge Wiki Syntax & CollabNet User Information Center
sunjing
TeamForge How do Attachement Anchor Wiki Syntax
the CollabNet user information center http://help.collab.net/
How do I create a new Wiki page?
A CollabNet TeamForge project can have any number of Wiki pages. All Wiki pages are linked, and
【Redis四】Redis数据类型
bit1129
redis
概述
Redis是一个高性能的数据结构服务器,称之为数据结构服务器的原因是,它提供了丰富的数据类型以满足不同的应用场景,本文对Redis的数据类型以及对这些类型可能的操作进行总结。
Redis常用的数据类型包括string、set、list、hash以及sorted set.Redis本身是K/V系统,这里的数据类型指的是value的类型,而不是key的类型,key的类型只有一种即string
SSH2整合-附源码
白糖_
eclipse spring tomcat Hibernate Google
今天用eclipse终于整合出了struts2+hibernate+spring框架。
我创建的是tomcat项目,需要有tomcat插件。导入项目以后,鼠标右键选择属性,然后再找到“tomcat”项,勾选一下“Is a tomcat project”即可。具体方法见源码里的jsp图片,sql也在源码里。
补充1:项目中部分jar包不是最新版的,可能导
[转]开源项目代码的学习方法
braveCS
学习方法
转自:
http://blog.sina.com.cn/s/blog_693458530100lk5m.html
http://www.cnblogs.com/west-link/archive/2011/06/07/2074466.html
1)阅读features。以此来搞清楚该项目有哪些特性2)思考。想想如果自己来做有这些features的项目该如何构架3)下载并安装d
编程之美-子数组的最大和(二维)
bylijinnan
编程之美
package beautyOfCoding;
import java.util.Arrays;
import java.util.Random;
public class MaxSubArraySum2 {
/**
* 编程之美 子数组之和的最大值(二维)
*/
private static final int ROW = 5;
private stat
读书笔记-3
chengxuyuancsdn
jquery笔记 resultMap配置 ibatis一对多配置
1、resultMap配置
2、ibatis一对多配置
3、jquery笔记
1、resultMap配置
当<select resultMap="topic_data">
<resultMap id="topic_data">必须一一对应。
(1)<resultMap class="tblTopic&q
[物理与天文]物理学新进展
comsci
如果我们必须获得某种地球上没有的矿石,才能够进行某些能量输出装置的设计和建造,而要获得这种矿石,又必须首先进行深空探测,而要进行深空探测,又必须获得这种能量输出装置,这个矛盾的循环,会导致地球联盟在与宇宙文明建立关系的时候,陷入困境
怎么办呢?
 
Oracle 11g新特性:Automatic Diagnostic Repository
daizj
oracle ADR
Oracle Database 11g的FDI(Fault Diagnosability Infrastructure)是自动化诊断方面的又一增强。
FDI的一个关键组件是自动诊断库(Automatic Diagnostic Repository-ADR)。
在oracle 11g中,alert文件的信息是以xml的文件格式存在的,另外提供了普通文本格式的alert文件。
这两份log文
简单排序:选择排序
dieslrae
选择排序
public void selectSort(int[] array){
int select;
for(int i=0;i<array.length;i++){
select = i;
for(int k=i+1;k<array.leng
C语言学习六指针的经典程序,互换两个数字
dcj3sjt126com
c
示例程序,swap_1和swap_2都是错误的,推理从1开始推到2,2没完成,推到3就完成了
# include <stdio.h>
void swap_1(int, int);
void swap_2(int *, int *);
void swap_3(int *, int *);
int main(void)
{
int a = 3;
int b =
php 5.4中php-fpm 的重启、终止操作命令
dcj3sjt126com
PHP
php 5.4中php-fpm 的重启、终止操作命令:
查看php运行目录命令:which php/usr/bin/php
查看php-fpm进程数:ps aux | grep -c php-fpm
查看运行内存/usr/bin/php -i|grep mem
重启php-fpm/etc/init.d/php-fpm restart
在phpinfo()输出内容可以看到php
线程同步工具类
shuizhaosi888
同步工具类
同步工具类包括信号量(Semaphore)、栅栏(barrier)、闭锁(CountDownLatch)
闭锁(CountDownLatch)
public class RunMain {
public long timeTasks(int nThreads, final Runnable task) throws InterruptedException {
fin
bleeding edge是什么意思
haojinghua
DI
不止一次,看到很多讲技术的文章里面出现过这个词语。今天终于弄懂了——通过朋友给的浏览软件,上了wiki。
我再一次感到,没有辞典能像WiKi一样,给出这样体贴人心、一清二楚的解释了。为了表达我对WiKi的喜爱,只好在此一一中英对照,给大家上次课。
In computer science, bleeding edge is a term that
c中实现utf8和gbk的互转
jimmee
c iconv utf8&gbk编码
#include <iconv.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <sys/stat.h>
int code_c
大型分布式网站架构设计与实践
lilin530
应用服务器 搜索引擎
1.大型网站软件系统的特点?
a.高并发,大流量。
b.高可用。
c.海量数据。
d.用户分布广泛,网络情况复杂。
e.安全环境恶劣。
f.需求快速变更,发布频繁。
g.渐进式发展。
2.大型网站架构演化发展历程?
a.初始阶段的网站架构。
应用程序,数据库,文件等所有的资源都在一台服务器上。
b.应用服务器和数据服务器分离。
c.使用缓存改善网站性能。
d.使用应用
在代码中获取Android theme中的attr属性值
OliveExcel
android theme
Android的Theme是由各种attr组合而成, 每个attr对应了这个属性的一个引用, 这个引用又可以是各种东西.
在某些情况下, 我们需要获取非自定义的主题下某个属性的内容 (比如拿到系统默认的配色colorAccent), 操作方式举例一则:
int defaultColor = 0xFF000000;
int[] attrsArray = { andorid.r.
基于Zookeeper的分布式共享锁
roadrunners
zookeeper 分布式 共享锁
首先,说说我们的场景,订单服务是做成集群的,当两个以上结点同时收到一个相同订单的创建指令,这时并发就产生了,系统就会重复创建订单。等等......场景。这时,分布式共享锁就闪亮登场了。
共享锁在同一个进程中是很容易实现的,但在跨进程或者在不同Server之间就不好实现了。Zookeeper就很容易实现。具体的实现原理官网和其它网站也有翻译,这里就不在赘述了。
官
两个容易被忽略的MySQL知识
tomcat_oracle
mysql
1、varchar(5)可以存储多少个汉字,多少个字母数字? 相信有好多人应该跟我一样,对这个已经很熟悉了,根据经验我们能很快的做出决定,比如说用varchar(200)去存储url等等,但是,即使你用了很多次也很熟悉了,也有可能对上面的问题做出错误的回答。 这个问题我查了好多资料,有的人说是可以存储5个字符,2.5个汉字(每个汉字占用两个字节的话),有的人说这个要区分版本,5.0
zoj 3827 Information Entropy(水题)
阿尔萨斯
format
题目链接:zoj 3827 Information Entropy
题目大意:三种底,计算和。
解题思路:调用库函数就可以直接算了,不过要注意Pi = 0的时候,不过它题目里居然也讲了。。。limp→0+plogb(p)=0,因为p是logp的高阶。
#include <cstdio>
#include <cstring>
#include <cmath&