翻译自 Waqas Anwar 2021年3月28日的文章 《Communication between Blazor Components using EventCallback》
Blazor 应用程序是相互交互的多个 Blazor 组件的集合,我们可以在其他父组件中使用子组件。在实际的应用程序中,将数据或事件信息从一个组件传递到另一组件是一种十分常见的场景。您可能会有一个页面,其中一个组件中发生的用户操作需要更新其他组件中的某些 UI。通常使用 EventCallback 委托来处理这种类型的通信。在本教程中,我将介绍如何使用 EventCallback 在父组件和子组件之间进行通信。
下面是使用 EventCallback 从子组件到父组件进行通信所涉及的通用步骤。
在子组件中声明一个 EventCallback
或 EventCallback
委托
在父组件中附加一个到子组件的 EventCallback
或 EventCallback
的回调方法
当子组件想要与父组件通信时,可以使用以下方法之一调用父组件的回调方法。
InvokeAsync(Object) – 如果使用的是 EventCallback
InvokeAsync(T) – 如果使用的是 EventCallback
为了理解上述步骤,让我们创建一个简单的待办事项列表(To Do List)示例。首先,在 Data 文件夹中创建以下 ToDo.cs 类。这是一个简单类,用于存储每个待办事项的 Title 和 Minutes 属性。Minutes 属性指定完成特定待办事项所需的时间。
ToDo.cs
public class ToDo
{
public string Title { get ; set ; }
public int Minutes { get ; set ; }
}
在项目中添加以下 ToDoList.razor 组件,并在其中编写以下代码:
ToDoList.razor
@page "/todos"
@using BlazorEventHandlingDemo.Data
< div class = " row" >
< div class = " col" > < h3> To Do List h3> div>
< div class = " col" > < h5 class = " float-right" > Total Minutes: @TotalMinutes h5> div>
div>
< br />
< table class = " table" >
< tr>
< th> Title th>
< th> Minutes th>
< th> th>
tr>
@foreach (var todo in ToDos)
{
< ToDoItem Item = " todo" />
}
table>
@code {
public List< ToDo> ToDos { get; set; }
public int TotalMinutes { get; set; }
protected override void OnInitialized()
{
ToDos = new List< ToDo> ()
{
new ToDo() { Title = "Analysis", Minutes = 40 },
new ToDo() { Title = "Design", Minutes = 30 },
new ToDo() { Title = "Implementation", Minutes = 75 },
new ToDo() { Title = "Testing", Minutes = 40 }
};
UpdateTotalMinutes();
}
public void UpdateTotalMinutes()
{
TotalMinutes = ToDos.Sum(x => x.Minutes);
}
}
在上面的 @code 代码块中,我们声明了两个属性 ToDos 和 TotalMinutes 。 其中 ToDos 属性存储待办事项的列表,TotalMinutes 存储所有待办事项花费分钟数的总和。
public List< ToDo> ToDos { get ; set ; }
public int TotalMinutes { get ; set ; }
接下来,我们在 Blazor 组件生命周期方法之一的名为 OnInitialized 的方法中使用一些待办事项对象来初始化我们的 ToDos 列表。我们还调用了 UpdateTotalMinutes 方法,该方法简单地计算 ToDos 列表中所有 ToDo 对象的 Minutes 属性的总和。
protected override void OnInitialized ( )
{
ToDos = new List< ToDo> ( )
{
new ToDo ( ) { Title = "Analysis" , Minutes = 40 } ,
new ToDo ( ) { Title = "Design" , Minutes = 30 } ,
new ToDo ( ) { Title = "Implementation" , Minutes = 75 } ,
new ToDo ( ) { Title = "Testing" , Minutes = 40 }
} ;
UpdateTotalMinutes ( ) ;
}
HTML 代码也非常简单,我们将 TotalMinutes 属性显示在带有页面标题的页面顶部。
< h5 class = " float-right" > Total Minutes: @TotalMinutes h5>
我们还在页面上生成了一个 HTML 表格,接下来的 foreach 循环遍历 ToDos 列表并渲染一个名为 ToDoItem 的子组件,我们还使用其 Item 属性将每个 ToDo 对象传入子组件中。
@foreach ( var todo in ToDos)
{
< ToDoItem Item= "todo" / >
}
让我们在 Shared 文件夹中创建一个子组件 ToDoItem.razor 并在其中添加以下代码。该子组件有一个 Item 属性(我们在父组件的 foreach 循环中设置了此属性)。该子组件简单地使用 元素生成一个表格行,并在表格单元格中显示 Title 和 Minutes 属性。
ToDoItem.razor
@using BlazorEventHandlingDemo.Data
< tr>
< td> @Item.Title td>
< td> @Item.Minutes td>
< td>
< button type = " button" class = " btn btn-success btn-sm float-right" >
+ Add Minutes
button>
td>
tr>
@code {
[Parameter]
public ToDo Item { get; set; }
}
运行该应用程序,您会看到一个类似于如下内容的页面:
如果此时您点击子组件中的 Add Minutes 按钮,则不会有任何反应,因为我们还没有将 click 事件与 Add Minutes 按钮关联起来。让我们更新一下 Add Minutes 按钮的代码,添加调用 AddMinute 方法的 @onclick 特性。
< button type = " button" class = " btn btn-success btn-sm float-right" @onclick = " AddMinute" >
+ Add Minutes
button>
当用户每次点击 Add Minutes 按钮时,事件处理方法 AddMinute 简单地将 Minutes 属性加 1。
public async Task AddMinute ( MouseEventArgs e)
{
Item. Minutes += 1 ;
}
再次运行应用程序并尝试点击每个待办事项的 Add Minutes 按钮。您将注意到每个待办事项显示的分钟数会增加,但是顶部的总分钟数属性将保持不变。这是由于 TotalMinutes 属性是在父组件中计算的,而父组件并不知道子组件中的 Minutes 属性增加了。
让我们使用上面提到的步骤在我们的示例中改进一下子组件到父组件的通信,以便每次增加子组件中的 Minutes 时,能够相应地更新父组件的 UI。
步骤1:在子组件中声明一个 EventCallback
或 EventCallback
委托
第一步是在我们的子组件中声明 EventCallback
委托。我们声明一个委托 OnMinutesAdded ,并使用 MouseEventArgs 作为 T
,因为它可以为我们提供有关按钮点击事件的额外信息。
[ Parameter ]
public EventCallback< MouseEventArgs> OnMinutesAdded { get ; set ; }
步骤2:在父组件中附加一个到子组件的 EventCallback
或 EventCallback
的回调方法
在这一步中,我们需要向在前面的步骤 1 中声明的子组件的 EventCallback
委托 OnMinutesAdded 附加一个回调方法。
< ToDoItem Item= "todo" OnMinutesAdded= "OnMinutesAddedHandler" / >
在本例中我们使用的回调方法是 OnMinutesAddedHandler ,该方法简单地调用同一个 UpdateTotalMinutes 方法,更新 TotalMinutes 属性。
public void OnMinutesAddedHandler ( MouseEventArgs e)
{
UpdateTotalMinutes ( ) ;
}
步骤3:当子组件需要与父组件通信时,使用 InvokeAsync(Object)
或 InvokeAsync(T)
方法调用父组件的回调方法。
在这一步中,我们需要调用父组件中的回调方法,因为我们希望每次用户点击 Add Minute 按钮时都会更新父组件 UI,所以最好的调用位置是在 AddMinute 方法中。
public async Task AddMinute ( MouseEventArgs e)
{
Item. Minutes += 1 ;
await OnMinutesAdded. InvokeAsync ( e) ;
}
这就是在 Blazor 中实现从子组件到父组件通信我们所要做的所有事情。以下是子组件 ToDoItem.razor 的完整代码:
ToDoItem.razor
@using BlazorEventHandlingDemo.Data
< tr>
< td> @Item.Title td>
< td> @Item.Minutes td>
< td>
< button type = " button" class = " btn btn-success btn-sm float-right" @onclick = " AddMinute" >
+ Add Minutes
button>
td>
tr>
@code {
[Parameter]
public ToDo Item { get; set; }
[Parameter]
public EventCallback< MouseEventArgs> OnMinutesAdded { get; set; }
public async Task AddMinute(MouseEventArgs e)
{
Item.Minutes += 1;
await OnMinutesAdded.InvokeAsync(e);
}
}
以下是父组件 ToDoList.razor 的完整代码:
ToDoList.razor
@page "/todos"
@using BlazorEventHandlingDemo.Data
< div class = " row" >
< div class = " col" > < h3> To Do List h3> div>
< div class = " col" > < h5 class = " float-right" > Total Minutes: @TotalCount h5> div>
div>
< br />
< table class = " table" >
< tr>
< th> Title th>
< th> Minutes th>
< th> th>
tr>
@foreach (var todo in ToDos)
{
< ToDoItem Item = " todo" OnMinutesAdded = " OnMinutesAddedHandler" />
}
table>
@code {
public List< ToDo> ToDos { get; set; }
public int TotalCount { get; set; }
protected override void OnInitialized()
{
ToDos = new List< ToDo> ()
{
new ToDo() { Title = "Analysis", Minutes = 40 },
new ToDo() { Title = "Design", Minutes = 30 },
new ToDo() { Title = "Implementation", Minutes = 75 },
new ToDo() { Title = "Testing", Minutes = 40 }
};
UpdateTotalMinutes();
}
public void UpdateTotalMinutes()
{
TotalCount = ToDos.Sum(x => x.Minutes);
}
public void OnMinutesAddedHandler(MouseEventArgs e)
{
UpdateTotalMinutes();
}
}
在浏览器中运行应用程序,并尝试增加任一待办事项的分钟数,您会注意到父组件将自动地实时更新总分钟数。
相关阅读:
Blazor Server 和 WebAssembly 应用程序入门指南
Blazor 组件入门指南
Blazor 数据绑定开发指南
Blazor 事件处理开发指南
Blazor 组件之间使用 EventCallback 进行通信
Blazor 路由及导航开发指南
作者 : Waqas Anwar 翻译 : 技术译站 链接 : 英文原文
你可能感兴趣的:(Blazor,DotNet,CSharp,Blazor,.net)
FluentCMS:基于 ASP.NET Core 和 Blazor 技术构建的开源CMS内容管理系统
编程乐趣
asp.net 开源 后端
推荐一个基于ASP.NETCore和Blazor技术构建的、功能完善的开源CMS内容管理系统。01项目简介FluentCMS是一个基于强大的ASP.NETCore和创新的Blazor技术构建的现代内容管理系统(CMS)。FluentCMS设计为快速、灵活且用户友好,它不仅是一个传统的基于内容的CMS,还是一个无头(Headless)CMS,使其非常适合各种应用场景。此项目还在开发中,还有部分问题,
Kubectl常用命令操作
_Eden_
linux 运维 服务器
kubectl命令格式:kubectlcommandtypenamecommand:表示子命令,用于操作kubernetes的集群资源对象,如:createdeletedescribegetapplytype:资源对象的类型name:资源对象的名称1.创建资源对象kubectlcreate-fmy-service.yaml表示根据yaml配置文件创建service2.查看资源对象kubectlge
vue组件学习三(插槽)
@爱学习的小姜
vue.js
目录1、匿名插槽2、渲染作用域3、默认内容4、具名插槽5、条件插槽6、作用域插槽7、具名作用域插槽最后1、匿名插槽父组件调用Mycomponet1组件clickme子组件为最后结果为clickme2、渲染作用域因为插槽的内容是在父组件中定义的,所以能访问到父组件中的数据作用域,无法访问到子组件的数据。3、默认内容在我们没有从父组件中提供插槽内容时,可以提供一个默认值例如:默认内容在这个例子中,父组
华为防火墙做单臂路由_华为单臂路由配置详解
mizore
华为防火墙做单臂路由
利用华为路由器单臂路由的配置原理,可以使同一交换机上不同VLAN之间实现通信。需要掌握以下基本概念:链路类型-交换机连接主机的端口为access链路;-交换机连接路由器的端口为trunk链路子接口-路由器的物理接口可以被划分为多个子接口;-每个子接口对应一个VLAN的网关配置拓扑图如下所示:在交换机上配置如下:[SW]vlanbatch1020[SW]interfaceEthernet0/0/2[
在K8S中,如何使用EFK实现日志的统一管理?
Dusk_橙子
K8S kubernetes 容器 云原生
在Kubernetes中,EFK是一种常见的日志统一管理方案。EFK堆栈允许你收集、存储、搜素、分析和可视化容器应用程序的日志。下面是如何在Kubernetes中使用EFK实现日志统一管理的详细步骤:部署Elasticsearchelasticsearch是一个分布式、RESTful风格的搜索和分析引擎,能够解决越来越多用例的查询语言,它通常用于日志和事件数据分析。首先,你需要再kubernete
VLAN间路由配置实战
wespten
网络协议栈 网络设备 5G 物联网 网络工具开发 网络
一、VLAN间路由1、VLAN隔离技术1.传统网络类型传统网络有三种类型:LAN–LocalAreaNetwork局域网;MAN–城域网;WAN–WideAreaNetwork广域网-internet;2.VLAN技术随着网络中计算机的数量越来越多,传统的以太网络开始面临广播泛滥以及安全性无法保障等各种问题。VLAN(VirtualLocalAreaNetwork)即虚拟局域网,是将一个物理的局域
在WSL 2 (Ubuntu 22.04)安装Docker Ce 启动错误解决
梦想画家
云原生 工具软件 ubuntu docker linux wsl2
查看WSL版本在Windows命令提示符(CMD)或PowerShell中,你可以使用以下命令来查看已安装的WSL发行版及其版本信息:wsl-l-v(base)PSC:\Users\Lenovo>wsl-l-vNAMESTATEVERSION*Ubuntu-22.04Running2docker启动报错failedtostartdaemon:Errorinitializingnetworkcont
1088 Rational Arithmetic
魔猴烧酒
c++ 算法 开发语言
Fortworationalnumbers,yourtaskistoimplementthebasicarithmetics,thatis,tocalculatetheirsum,difference,productandquotient.InputSpecification:Eachinputfilecontainsonetestcase,whichgivesinonelinethetworat
配置管理工具和k8s功能重叠部分的优势比较
大囚长
容器技术 运维人生 容器 云原生 运维 kubernetes
通过自动化配置管理工具(如Ansible、Puppet、Chef)和应用内管理机制,也可以实现自动部署、扩缩容、负载均衡和故障恢复等功能。Kubernetes(K8s)在这些方面具有哪些独特的优势呢,尤其是在云原生环境和大规模分布式系统中。以下是对比分析:1.自动化配置管理工具的局限性自动化配置管理工具(如Ansible、Puppet、Chef)主要用于基础设施的配置管理和应用部署,但它们在某些方
在K8S中,如果后端NFS存储的IP发送变化如何解决?
Dusk_橙子
K8S kubernetes tcp/ip 容器
在Kubernetes中,如果后端NFS存储的IP地址发生了变化,您需要更新与之相关的PeristentVolume(PV)或PersistentVolumeClaim(PVC)以及StorageClass中关于NFS服务器IP的配置信息,确保K8S集群内的Pod能够正确连接到新的NFS存储位置。解决方案如下:更新PersistentVolume(PV):如果你直接在PV中指定了NFS服务器的IP
c#分页_《Dotnet9》系列-开源C# WPF控件库3《HandyControl》强力推荐
weixin_39654058
c#分页 c#给按钮添加链接 wpf mysql
大家好,我是Dotnet9小编,一个从事dotnet开发8年+的程序员。我最近开始写dotnet分享文章,希望能让更多人看到dotnet的发展,了解更多dotnet技术,帮助dotnet程序员应用dotnet技术更好的运用于工作和学习中去。历经3个白天2个黑夜(至凌晨2点),Dotnet9小编经过反复修改、润色,终于完成此文编写(本文略长,手机党请考虑流量),只能说小编我不容易呀不容易。完成此文编
Java入门笔记(1)
王磊鑫
java 笔记 开发语言
引言在计算机编程的广袤宇宙中,Java无疑是一颗格外耀眼的恒星。那么,Java究竟是什么呢?Java是美国Sun公司(StanfordUniversityNetwork)在1995年推出的一门计算机高级编程语言。曾经辉煌的Sun公司在2009年被Oracle(甲骨文)公司收购,但Java的影响力并未因此而衰减。普遍认同Java的联合创始人之一詹姆斯·高斯林(JamesGosling)为“Java之
Linux 运维
Li huichao
linux 运维 服务器
Linux运维tarnetstatfirewall-cmd(防火墙)yumnpmtar解压.tar:tar-xvf文件.tar解压.tar.gz、.tgz:tar-xvzf文件.tar.gz解压.tar.bz2:tar-xvjf文件.tar.bz2解压.tar.xz:tar-xvJf文件.tar.xz解压并指定解压目录:tar-xvJf文件.tar.xz-C目标目录netstat获取所有应用程序监
在docker中安装FastDFS容器,并且阿里云服务器配置
童小纯
项目部署(阿里云版) 中间件大全---全面详解 docker 阿里云 容器
1、拉取FastDFS镜像dockerpulldelron/fastdfs2、创建tracker容器dockerrun-dti--network=host--nametracker--privileged=true-v/var/fdfs/tracker:/var/fdfs-v/etc/localtime:/etc/localtimedelron/fastdfstracker3、创建storage容
物联网导论复习材料
物腐虫生
物联网 学习
简答题Q1:物联网的概述,特点,模型,应用,重点是应用层,云计算,数据集成。物联网的概述物联网(IoT,InternetofThings)是指通过各种传感器、设备和网络技术,将物理世界中的物体连接到互联网,实现数据的采集、传输、处理和应用的智能化系统。物联网的特点全面感知:通过传感器实时采集数据。可靠传输:通过互联网和无线网络传输数据。智能处理:利用云计算和大数据技术对数据进行分析和处理,实现智能
docker pull 镜像失败 Error response from daemon: Get “https://registry-1.docker.io/v2/“: net/http: reque
jjw_zyfx
docker/k8s Java docker http 容器
解决方法:多加几个docker的镜像源,步骤如下:使用vim打开/etc/docker/daemon.json这个文件vim/etc/docker/daemon.json填写内容如下:{"registry-mirrors":["https://docker.211678.top","https://docker.1panel.live","https://hub.rat.dev","https:/
Blazor Web App 项目模板( .NET 9.0 )身份验证 Account 使用备忘03:获取登录用户信息
cqths
Blazor # Blazor Web App web app .net c# bootstrap
一、通过SignInManager获取@injectSignInManagerSignInManager......varuser=SignInManager.Context.User;二、通过authenticationState获取注:在Program.cs中默认添加了服务builder.Services.AddCascadingAuthenticationState();[Cascading
【Python百日进阶-Web开发-Feffery】Day604 - 趣味dash_04:Excel转Pdf文件
岳涛@泰山医院
Dash python excel 前端 dash
文章目录一、环境准备1.1初始化基础`Python+Dash`环境1.2本例中使用的第三方包二、本项目B站视频讲解三、页面效果四、项目源码一、环境准备1.1初始化基础Python+Dash环境CSDN文档参见:https://blog.csdn.net/yuetaope/article/details/129795264Bilibili视频参见:https://www.bilibili.com/v
tensorflow-迁移学习使用Resnet残差网络实现猫狗分类问题
浮 夸
tensorflow python
遇到的bug都放在之前的文章里了importosimportpandasaspdimportwarningsimporttensorflowastffromtensorflow.pythonimportkerasfromkeras.preprocessing.imageimportImageDataGeneratorimportkeras.optimizersasopfromtensorflow.
爬取电影天堂
越哥的女人
爬取每部电影的详细信息分析每页的url,可以得到规律是:第t页的url为:http://dytt8.net/html/gndy/dyzz/list_23_t.html于是可以先分析第一页,然后对页数进循环,就可得到所有最新电影的详细信息。fromlxmlimportetreeheaders={"User-Agent":"Mozilla/5.0(WindowsNT6.1;Win64;x64)Appl
【2025 ODA teigha .NET系列开发教程 第四章】带你读写DWG、DXF文件内的所有标注,包括源码
三好学生~张旺
ODA Teigha .NET开发教程 .net 数据库 c#
文章目录例如:第四章带你读写DWG、DXF文件内的所标注2025ODAteigha.NET系列开发教程文章目录1.概述2.基础设置️2.1创建数据库和事务2.2创建线型〰️3.创建标注✨3.1对齐标注示例3.2常用标注属性设置⚙️4.标注类型详解4.1旋转标注4.2角度标注4.3半径标注↔️5.最佳实践6.注意事项⚠️7.进阶技巧所有代码下载TeighaSDK21.6.NET1.概述这段代码展示了
python爬取电影天堂beautiful_Python爬虫 -- 抓取电影天堂8分以上电影
carafqy
看了几天的python语法,还是应该写个东西练练手。刚好假期里面看电影,找不到很好的影片,于是有个想法,何不搞个爬虫把电影天堂里面8分以上的电影爬出来。做完花了两三个小时,撸了这么一个程序。反正蛮简单的,思路和之前用nodejs写爬虫一样。爬虫的入口从分页的列表开始,比如美剧的列表第一页地址这样:http://www.ygdy8.net/html/gndy/oumei/list_7_1.html,
Mathtype使用记录
白粥行
软件工具 Mathtype
1、把大括号中的公式左对齐https://jingyan.baidu.com/article/86fae346d436053c48121a50.html2、加粗字符https://www.mathtype.cn/jiqiao/mathtype-wjsjc.html3、修改公式编号todo4、插入省略号https://office.tqzw.net.cn/office/mathtype/21827.
【2025 ODA teigha .NET系列开发教程 第五章】给CAD实体添加附属数据XDATA,包括源码
三好学生~张旺
ODA Teigha .NET开发教程 .net
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章Python机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档2025ODAteigha.NET系列开发教程系列文章目录AutoCADXData扩展数据开发指南什么是XData?XData的两种存储方式1.全局字典存储(XRecord)2.实体附加存储步骤1:注册应
java fx如何安装,JavaFX环境配置详细步骤
运营小巴
为了运行JavaFX应用程序,我们必须在系统上设置JavaFX环境。JDK1.8之后的所有Java版本都支持JavaFX,因此我们必须在系统上安装JDK1.8或更高版本。有各种IDE,例如Net-beans或Eclipse,也支持JavaFX库。在本章中,我们将讨论执行JavaFX应用程序的各种方法。安装Java步骤1:验证是否已安装检查系统上是否已经安装了Java。就我而言,它尚未安装,因此我需
K8S中ingress详解
元气满满的热码式
kubernetes 容器 云原生
Ingress介绍Kubernetes集群中,服务(Service)是一种抽象,它定义了一种访问Pod的方式,无论这些Pod如何变化,服务都保持不变。服务可以被映射到一个静态的IP地址(ClusterIP)、一个NodePort(在集群的每个节点上的特定端口)、一个LoadBalancer(通过云服务提供商的负载均衡器)或一个外部IP。Service的两种服务暴露方式,NodePort和LoadB
web端广告飘窗
努力搬砖的程序媛儿
前端 javascript html
漂浮广告varx=50,y=60varxin=true,yin=truevarstep=1vardelay=10varobj=document.getElementById("codefans_net")functionfloat(){varL=T=0varR=document.body.clientWidth-obj.offsetWidthvarB=document.body.clientHei
Swin-Unet多分类:图像分割领域的强大工具
甄亚凌
Swin-Unet多分类:图像分割领域的强大工具【下载地址】Swin-Unet多分类资源文件介绍本仓库提供了一个名为“Swin-Unet多分类”的资源文件,该文件主要用于图像分割任务中的多分类问题。资源文件中包含了一个基于Swin-Unet模型的实现,旨在对图像进行多分类分割项目地址:https://gitcode.com/open-source-toolkit/32588项目介绍在图像处理和计算
2025年SSL证书申请攻略
Gworg
ssl https 网络协议
都知道SSL是一种加密技术,可在Web服务器和Internet浏览器之间建立加密连接。此外,SSL证书可验证网站的身份并启用加密连接。在地址栏中,如果您看到挂锁图标,则表示SSL保护了您正在访问的网站。那么2025年应该怎么申请SSL证书才可以闭坑?想必大家都了解过,SSL证书不像别的东西可以替代,原因是这种SSL证书要被浏览器信任可不简单,首先公司成立的早,另外就是根证书早早的就加到了某年发布的
Linux 时间同步服务
不想起昵称929
linux
时间同步:多主机协作工作时,各个主机的时间同步很重要,时间不一致会造成很多重要应用的故障,如:加密协议,日志,集群等,利用NTP(NetworkTimeProtocol)协议使网络中的各个计算机时间达到同步。目前NTP协议属于运维基础架构中必备的基本服务之一时间同步实现:ntp,chrony//关闭系统同步时间服务timedatectlstopchronyd.servicentp:将系统时钟和世界
ASM系列四 利用Method 组件动态注入方法逻辑
lijingyao8206
字节码技术 jvm AOP 动态代理 ASM
这篇继续结合例子来深入了解下Method组件动态变更方法字节码的实现。通过前面一篇,知道ClassVisitor 的visitMethod()方法可以返回一个MethodVisitor的实例。那么我们也基本可以知道,同ClassVisitor改变类成员一样,MethodVIsistor如果需要改变方法成员,注入逻辑,也可以
java编程思想 --内部类
百合不是茶
java 内部类 匿名内部类
内部类;了解外部类 并能与之通信 内部类写出来的代码更加整洁与优雅
1,内部类的创建 内部类是创建在类中的
package com.wj.InsideClass;
/*
* 内部类的创建
*/
public class CreateInsideClass {
public CreateInsideClass(
web.xml报错
crabdave
web.xml
web.xml报错
The content of element type "web-app" must match "(icon?,display-
name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,s
泛型类的自定义
麦田的设计者
java android 泛型
为什么要定义泛型类,当类中要操作的引用数据类型不确定的时候。
采用泛型类,完成扩展。
例如有一个学生类
Student{
Student(){
System.out.println("I'm a student.....");
}
}
有一个老师类
CSS清除浮动的4中方法
IT独行者
JavaScript UI css
清除浮动这个问题,做前端的应该再熟悉不过了,咱是个新人,所以还是记个笔记,做个积累,努力学习向大神靠近。CSS清除浮动的方法网上一搜,大概有N多种,用过几种,说下个人感受。
1、结尾处加空div标签 clear:both 1 2 3 4
.div
1
{
background
:
#000080
;
border
:
1px
s
Cygwin使用windows的jdk 配置方法
_wy_
jdk windows cygwin
1.[vim /etc/profile]
JAVA_HOME="/cgydrive/d/Java/jdk1.6.0_43" (windows下jdk路径为D:\Java\jdk1.6.0_43)
PATH="$JAVA_HOME/bin:${PATH}"
CLAS
linux下安装maven
无量
maven linux 安装
Linux下安装maven(转) 1.首先到Maven官网
下载安装文件,目前最新版本为3.0.3,下载文件为
apache-maven-3.0.3-bin.tar.gz,下载可以使用wget命令;
2.进入下载文件夹,找到下载的文件,运行如下命令解压
tar -xvf apache-maven-2.2.1-bin.tar.gz
解压后的文件夹
tomcat的https 配置,syslog-ng配置
aichenglong
tomcat http跳转到https syslong-ng配置 syslog配置
1) tomcat配置https,以及http自动跳转到https的配置
1)TOMCAT_HOME目录下生成密钥(keytool是jdk中的命令)
keytool -genkey -alias tomcat -keyalg RSA -keypass changeit -storepass changeit
关于领号活动总结
alafqq
活动
关于某彩票活动的总结
具体需求,每个用户进活动页面,领取一个号码,1000中的一个;
活动要求
1,随机性,一定要有随机性;
2,最少中奖概率,如果注数为3200注,则最多中4注
3,效率问题,(不能每个人来都产生一个随机数,这样效率不高);
4,支持断电(仍然从下一个开始),重启服务;(存数据库有点大材小用,因此不能存放在数据库)
解决方案
1,事先产生随机数1000个,并打
java数据结构 冒泡排序的遍历与排序
百合不是茶
java
java的冒泡排序是一种简单的排序规则
冒泡排序的原理:
比较两个相邻的数,首先将最大的排在第一个,第二次比较第二个 ,此后一样;
针对所有的元素重复以上的步骤,除了最后一个
例题;将int array[]
JS检查输入框输入的是否是数字的一种校验方法
bijian1013
js
如下是JS检查输入框输入的是否是数字的一种校验方法:
<form method=post target="_blank">
数字:<input type="text" name=num onkeypress="checkNum(this.form)"><br>
</form>
Test注解的两个属性:expected和timeout
bijian1013
java JUnit expected timeout
JUnit4:Test文档中的解释:
The Test annotation supports two optional parameters.
The first, expected, declares that a test method should throw an exception.
If it doesn't throw an exception or if it
[Gson二]继承关系的POJO的反序列化
bit1129
POJO
父类
package inheritance.test2;
import java.util.Map;
public class Model {
private String field1;
private String field2;
private Map<String, String> infoMap
【Spark八十四】Spark零碎知识点记录
bit1129
spark
1. ShuffleMapTask的shuffle数据在什么地方记录到MapOutputTracker中的
ShuffleMapTask的runTask方法负责写数据到shuffle map文件中。当任务执行完成成功,DAGScheduler会收到通知,在DAGScheduler的handleTaskCompletion方法中完成记录到MapOutputTracker中
WAS各种脚本作用大全
ronin47
WAS 脚本
http://www.ibm.com/developerworks/cn/websphere/library/samples/SampleScripts.html
无意中,在WAS官网上发现的各种脚本作用,感觉很有作用,先与各位分享一下
获取下载
这些示例 jacl 和 Jython 脚本可用于在 WebSphere Application Server 的不同版本中自
java-12.求 1+2+3+..n不能使用乘除法、 for 、 while 、 if 、 else 、 switch 、 case 等关键字以及条件判断语句
bylijinnan
switch
借鉴网上的思路,用java实现:
public class NoIfWhile {
/**
* @param args
*
* find x=1+2+3+....n
*/
public static void main(String[] args) {
int n=10;
int re=find(n);
System.o
Netty源码学习-ObjectEncoder和ObjectDecoder
bylijinnan
java netty
Netty中传递对象的思路很直观:
Netty中数据的传递是基于ChannelBuffer(也就是byte[]);
那把对象序列化为字节流,就可以在Netty中传递对象了
相应的从ChannelBuffer恢复对象,就是反序列化的过程
Netty已经封装好ObjectEncoder和ObjectDecoder
先看ObjectEncoder
ObjectEncoder是往外发送
spring 定时任务中cronExpression表达式含义
chicony
cronExpression
一个cron表达式有6个必选的元素和一个可选的元素,各个元素之间是以空格分隔的,从左至右,这些元素的含义如下表所示:
代表含义 是否必须 允许的取值范围 &nb
Nutz配置Jndi
ctrain
JNDI
1、使用JNDI获取指定资源:
var ioc = {
dao : {
type :"org.nutz.dao.impl.NutDao",
args : [ {jndi :"jdbc/dataSource"} ]
}
}
以上方法,仅需要在容器中配置好数据源,注入到NutDao即可.
解决 /bin/sh^M: bad interpreter: No such file or directory
daizj
shell
在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory。
分析:这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。
解决:
1)在windows下转换:
利用一些编辑器如UltraEdit或EditPlus等工具
[转]for 循环为何可恨?
dcj3sjt126com
程序员 读书
Java的闭包(Closure)特征最近成为了一个热门话题。 一些精英正在起草一份议案,要在Java将来的版本中加入闭包特征。 然而,提议中的闭包语法以及语言上的这种扩充受到了众多Java程序员的猛烈抨击。
不久前,出版过数十本编程书籍的大作家Elliotte Rusty Harold发表了对Java中闭包的价值的质疑。 尤其是他问道“for 循环为何可恨?”[http://ju
Android实用小技巧
dcj3sjt126com
android
1、去掉所有Activity界面的标题栏
修改AndroidManifest.xml 在application 标签中添加android:theme="@android:style/Theme.NoTitleBar"
2、去掉所有Activity界面的TitleBar 和StatusBar
修改AndroidManifes
Oracle 复习笔记之序列
eksliang
Oracle 序列 sequence Oracle sequence
转载请出自出处:http://eksliang.iteye.com/blog/2098859
1.序列的作用
序列是用于生成唯一、连续序号的对象
一般用序列来充当数据库表的主键值
2.创建序列语法如下:
create sequence s_emp
start with 1 --开始值
increment by 1 --増长值
maxval
有“品”的程序员
gongmeitao
工作
完美程序员的10种品质
完美程序员的每种品质都有一个范围,这个范围取决于具体的问题和背景。没有能解决所有问题的
完美程序员(至少在我们这个星球上),并且对于特定问题,完美程序员应该具有以下品质:
1. 才智非凡- 能够理解问题、能够用清晰可读的代码翻译并表达想法、善于分析并且逻辑思维能力强
(范围:用简单方式解决复杂问题)
使用KeleyiSQLHelper类进行分页查询
hvt
sql .net C# asp.net hovertree
本文适用于sql server单主键表或者视图进行分页查询,支持多字段排序。KeleyiSQLHelper类的最新代码请到http://hovertree.codeplex.com/SourceControl/latest下载整个解决方案源代码查看。或者直接在线查看类的代码:http://hovertree.codeplex.com/SourceControl/latest#HoverTree.D
SVG 教程 (三)圆形,椭圆,直线
天梯梦
svg
SVG <circle> SVG 圆形 - <circle>
<circle> 标签可用来创建一个圆:
下面是SVG代码:
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<circle cx="100" c
链表栈
luyulong
java 数据结构
public class Node {
private Object object;
private Node next;
public Node() {
this.next = null;
this.object = null;
}
public Object getObject() {
return object;
}
public
基础数据结构和算法十:2-3 search tree
sunwinner
Algorithm 2-3 search tree
Binary search tree works well for a wide variety of applications, but they have poor worst-case performance. Now we introduce a type of binary search tree where costs are guaranteed to be loga
spring配置定时任务
stunizhengjia
spring timer
最近因工作的需要,用到了spring的定时任务的功能,觉得spring还是很智能化的,只需要配置一下配置文件就可以了,在此记录一下,以便以后用到:
//------------------------定时任务调用的方法------------------------------
/**
* 存储过程定时器
*/
publi
ITeye 8月技术图书有奖试读获奖名单公布
ITeye管理员
活动
ITeye携手博文视点举办的8月技术图书有奖试读活动已圆满结束,非常感谢广大用户对本次活动的关注与参与。
8月试读活动回顾:
http://webmaster.iteye.com/blog/2102830
本次技术图书试读活动的优秀奖获奖名单及相应作品如下(优秀文章有很多,但名额有限,没获奖并不代表不优秀):
《跨终端Web》
gleams:http