模型可解释性:基于博弈论的SHAP值计算与特征贡献度分析(附PyTorch/TensorFlow实现)
燃灯工作室
Aipytorchtensorflow人工智能
一、技术原理与数学推导(含典型案例)1.1Shapley值基础公式SHAP值基于合作博弈论中的Shapley值,计算公式为:ϕi=∑S⊆F∖{i}∣S∣!(∣F∣−∣S∣−1)!∣F∣![f(S∪{i})−f(S)]\phi_i=\sum_{S\subseteqF\setminus\{i\}}\frac{|S|!(|F|-|S|-1)!}{|F|!}[f(S\cup\{i\})-f(S)]ϕi=S
模型可解释性:基于因果推理的反事实生成与决策可视化
燃灯工作室
Ai人工智能数学建模学习机器学习
1.技术原理与数学公式1.1因果推理基础结构方程模型(SEM):X=fX(PaX,UX)X=f_X(Pa_X,U_X)X=fX(PaX,UX)其中PaXPa_XPaX为父节点集合,UXU_XUX为外生变量反事实定义:YX=x(u)=Ydo(X=x)(u)Y_{X=x}(u)=Y_{do(X=x)}(u)YX=x(u)=Ydo(X=x)(u)表示在相同背景条件uuu下,强制变量XXX取xxx时的结果
自动化特征选择:基于模型重要性的递归消除原理与实战指南
燃灯工作室
Ai自动化运维
一、技术原理与数学公式1.1递归特征消除(RFE)核心思想J(S)=∑i=1n∣wi∣(特征重要性评分)J(S)=\sum_{i=1}^n|w_i|\quad(特征重要性评分)J(S)=i=1∑n∣wi∣(特征重要性评分)Sk+1=Sk−argminfJ(Sk∖{f})(迭代消除策略)S_{k+1}=S_k-\arg\min_{f}J(S_k\setminus\{f\})\quad(迭代消除策
推理流水线DAG调度:多模型组合执行优化方案
燃灯工作室
Ai人工智能数学建模学习机器学习计算机视觉
一、技术原理与数学模型1.1DAG调度核心公式设推理流水线由n个模型节点组成,定义:V={v1,v2,...,vn}V=\{v_1,v_2,...,v_n\}V={v1,v2,...,vn}为节点集合E={(vi,vj)∣vi→vj}E=\{(v_i,v_j)|v_i\rightarrowv_j\}E={(vi,vj)∣vi→vj}为边集合C(vi)C(v_i)C(vi)为节点viv_ivi的计算
边缘设备模型量化部署:TFLite INT8校准实现细节深度解析
燃灯工作室
Ai人工智能机器学习
一、技术原理与数学公式INT8量化的核心是通过线性映射将浮点数值范围([-max,max])映射到8位整数范围([-128,127])。校准过程通过分析真实数据分布确定最优缩放因子(scale)和零点(zeropoint):量化公式:Q=round(float_valuescale)+zero_pointQ=round(\frac{float\_value}{scale})+zero\_point
基于时间序列预测的推理服务弹性扩缩容实战指南:(行业案例+数学推导+源码解析)
燃灯工作室
Ai计算机视觉语音识别目标检测机器学习人工智能
技术原理(数学公式)整体架构请求量预测→扩缩容决策→资源配置动态调整三阶段闭环,周期为5-30分钟核心预测模型(时间序列预测)LSTM预测公式(CSDN兼容格式):$$h_t=\text{LSTM}(x_t,h_{t-1})\\\hat{y}_{t+1}=W_h\cdoth_t+b_h$$其中Wh∈Rd×1W_h\in\mathbb{R}^{d\times1}Wh∈Rd×1为权重矩阵,ddd为隐藏
深度解析A/B测试中的哈希分桶策略:从原理到实战的流量分层方案
燃灯工作室
Python哈希算法算法
一、技术原理与数学基础1.1哈希分桶的核心机制核心公式:桶编号=Hash(用户ID+实验层种子)modN基于**双重哈希(DoubleHashing)**实现流量的完全正交切割:{∀u∈U,Layerij(u)=H(H(u∣∣seedj)∣∣seedi)mod N∀i≠k,H(⋅)满足P(Layeri(u)=m∩Layerk(u)=n)=1/(N2)\begin{cases}\forallu\i
linux常用基础命令_最新
脚大江山稳
linux运维服务器
常用命令查看当前目录下个各个文件大小查看当前系统储存使用情况查看当前路径删除当前目录下所有包含".log"的文件linux开机启动jar更改自动配置文件后操作关闭自启动linux静默启动java服务查询端口被占用查看软件版本重启关机开机启动取别名清空当前行创建文件touch创建文件夹查找文件/文件名/大小查找查看文件内容cat/more删除文件或文件夹管道符|过滤grep命令echo命令输出内容重
干货:Farrow设计实现详解
jz_ddk
算法机器学习人工智能python
Farrow结构的系数设计是其实现可变分数延迟或动态群时延调整的关键步骤。其核心思想是将每个滤波器抽头的系数表示为多项式函数(通常以参数uuu为变量),通过优化多项式系数实现不同延迟下的滤波特性。以下是Farrow系数设计的主要方法及步骤:1.设计目标与基本模型Farrow结构的一般形式为:H(z,μ)=∑m=0Mμm⋅(∑k=0Nck,mz−k)H(z,\mu)=\sum_{m=0}^{M}\m
使用SetupTools 管理你的项目打包工作
魔王阿卡纳兹
开源项目观察Python学习札记pythonsetuptools代码分发
Setuptools是一个用于Python的包管理工具,主要用于构建、打包和分发Python软件包。它是distutils的增强版,提供了更多的功能和灵活性,是Python包管理的核心模块之一。功能与特点依赖管理:Setuptools提供了强大的依赖管理功能,可以自动解析和安装软件包所需的依赖项。自动生成入口点:它能够自动发现并生成命令行脚本的入口点,例如将Python脚本转换为可执行文件。模块发
AUTOSAR从入门到精通-汽车电子电气架构(EEA)
格图素书
汽车
目录前言算法原理EEA发展历程->分布式架构(distributed):->基于域的集中式架构(DCUbasedcentralized):->基于域融合的带状架构(DCUfusionbasedzonal):什么是电子电气架构?EEA的特点EEA发展的三大阶段特征第一阶段:分布式架构第二阶段:基于域的集中式架构(转型中)第三阶段:基于域融合的带状架构(未来趋势)车载电子电气架构作用EEA开发工作内容
【图像处理】ISP(Image Signal Processor) 图像处理器的用途和工作原理?
AndrewHZ
图像处理基石图像处理智能手机影像系统算法深度学习人工智能ISP
ISP(图像信号处理器)是数字影像设备的“视觉大脑”,负责将传感器捕获的原始电信号转化为我们看到的高清图像。以下从用途和工作原理两方面通俗解析:一、ISP的核心用途:让照片“更像眼睛看到的”提升画质:降噪:去除暗光下的噪点(如手机夜景模式,通过多帧合成+算法抑制噪点)。色彩还原:校正传感器偏色(例如索尼传感器常偏黄,ISP通过白平衡算法还原真实色彩)。动态范围优化:保留高光和暗部细节(类似HDR,
优化 Java 数据结构选择与使用,提升程序性能与可维护性
草药味儿の岁月
java数据结构开发语言
引言在软件开发中,数据结构的选择是影响程序性能、内存使用以及代码可维护性的关键因素之一。Java作为一门广泛使用的编程语言,提供了丰富的内置数据结构,如数组、链表、栈、队列、树、图以及集合框架中的各种接口实现(如List,Set,Map等)。然而,面对不同的应用场景,如何合理地选择和优化数据结构,成为了一个值得深入探讨的话题。本文将介绍几种常见的Java数据结构,并探讨如何根据实际需求进行优化选择
springBoot 项目GET请求包含[]报400错误解决方法。
lynn-66
tomcatGETY请求包特殊字符javahttpshttptomcatspring
网上好多方法试了都不行,最后解决了。tomcat下配置文件server.xml添加relaxedQueryChars="[,]"
C#接口(Interface)必须掌握的核心概念
ByteGeek
C#基础从入门到精通c#开发语言.netWinformVS
文章目录前言接口的定义接口的实现接口的继承接口的用途注意事项前言在C#编程语言中,接口(Interface)是一个至关重要的概念,它属于引用类型,主要用于指定一组方法,但不提供这些方法的实际实现。接口充当了一种契约或规范,类或其他类型可以通过实现这些接口来遵循这一契约。以下是对C#接口的详细阐述:接口的定义接口通过interface关键字进行定义,并且可以包含方法、属性、事件和索引器。然而,与
鸿蒙初学者学习手册(HarmonyOSNext_API12)_学习资源推荐和介绍
余多多_zZ
应用开发鸿蒙harmonyos学习华为
鸿蒙初学者学习手册_学习资源推荐和介绍今天简单介绍一下一些鸿蒙的学习途径和学习的资源的地址途径一:鸿蒙的官方文档:官方文档首先说说鸿蒙开发者官网的指南。这个指南就像是你在鸿蒙开发世界里的一本“说明书”或者“导航图”。它详细地告诉了你从入门到精通的每一步,怎么下载开发工具,怎么创建项目,怎么配置环境,怎么运行应用程序,这些都有详细的步骤和截图,让你一看就懂,一学就会。这个指南还特别贴心,考虑到你可能
《侯捷 C++ 系列精品课学习之旅:知识盛宴与成长感悟》
一朵忧伤的蔷薇
c++学习jvm
一、初遇C++:基础与语法的探索课程伊始,侯捷老师以深入浅出的方式,为我们讲解了C++的基础语法。从变量、数据类型到控制结构,每一个知识点都被剖析得细致入微。我印象尤为深刻的是老师对指针的讲解。指针作为C++的核心概念之一,向来以其抽象和复杂而让初学者望而却步。然而,侯老师通过生动形象的比喻和丰富的示例,将指针的原理和应用讲解得通俗易懂。他将指针比作地址,就像现实生活中的门牌号,通过它我们可以准确
NAT 和 IP 直接通信的区别
曹天骄
tcp/ip服务器网络协议
1.NAT的工作原理NAT(NetworkAddressTranslation,网络地址转换)是一种网络技术,用于将私有网络中的IP地址映射到公共网络中的IP地址,或者在不同的网络之间转换IP地址。NAT的主要目的是解决IPv4地址不足的问题,同时提供一定程度的安全性和灵活性。NAT设备(如路由器或防火墙)会在数据包经过时修改其源IP地址或目标IP地址。常见的NAT类型包括:静态NAT:将私有IP
java list遍历添加元素_Java List集合方法及遍历过程代码解析
清净平常心
javalist遍历添加元素
集合元素框架publicclassListDemo02{publicstaticvoidmain(String[]args){//创建集合对象Listlist=newArrayList();//添加元素list.add("hello");list.add("world");list.add("java");//输出集合对象System.out.println(list);//[hello,worl
Linux中断机制详解:从原理到实践
AllenBright
#Linuxlinux运维服务器
想象一下医院的急诊科:当有危重病人到达时,护士会立即按下紧急呼叫按钮,打断医生当前的常规工作,优先处理最紧急的情况。这种中断响应机制正是计算机系统中中断(Interrupt)的核心思想。在Linux内核中,中断是硬件与软件交互的核心机制,直接关系到系统的响应速度、吞吐量和稳定性。本文将深入剖析Linux中断的工作原理,并演示如何在实际操作中管理和优化中断。1.中断的本质与分类1.1什么是中断?中断
VIM使用小技巧
ka__ka__
工具技巧vim
VIM的优势如果做LinuxC/C++开发,经常ssh到Linux服务器编辑各种文件,那么熟练使用VIM绝对可以提高工作效率。VIM的高效体现在多模式,可以很方便快速的对文件进行各种编辑修改,而这恰恰是在软件开发中经常遇到的场景。VIM流行这么多年,很多操作都是经过多年沉淀下来的高效操作,熟练的VIM操作可以让编辑与思维尽可能同步,快速的反复修改,把代码写成想要的样子。并且,在Linux上很多的操
Python数据可视化 Pyecharts 制作 Grid 组合组件
Mr数据杨
Python数据可视化数据可视化python数据分析pyecharts组合组件
在数据可视化中,常常需要将多个不同类型的图表放置在同一个页面中,以便综合展示多个维度的数据。pyecharts库中的Grid类正是为此设计的,它允许用户将多个图表组合在一起,实现复杂的数据展示需求。通过灵活的布局配置,Grid类不仅能够帮助用户创建具有多图组合的复杂布局,还能通过精细的网格和坐标轴设置,提升图表的整体视觉效果和交互体验。本文将介绍如何使用Grid类创建并行多图,并通过多种图表组合的
Kotlin作用域函数it和with的使用场景
micro9981
kotlin
在Kotlin中,apply、run、with使用this,而let和also使用it,这背后的原因是为了提供灵活性和代码清晰度。不同的作用域函数有不同的设计目的,选择使用this或it是为了适应不同的使用场景。以下是详细解释:使用this的作用域函数apply设计目的:主要用于配置对象。使用this的原因:使用this可以直接访问和修改对象的属性和方法,而无需显式地引用对象名称。适用于在对象初始
STM32入门教程——CAN驱动经验文档
单片机的码农
STM32入门教程stm32单片机嵌入式硬件
##1.引言-简述STM32F407微控制器及其在工业和汽车应用中的CAN通讯重要性。-阐明文档的目标,即分享STM32F407CAN驱动的开发经验和最佳实践。##2.STM32F407CAN硬件特性-详细介绍STM32F407的CAN硬件特性,包括消息RAM、工作模式、消息过滤等。-讨论STM32F407的CAN外设时钟配置和中断管理。##3.开发环境搭建-推荐并指导安装必要的软件工具,如STM
jQuery 键盘事件keydown ,keypress ,keyup介绍
107x
jsjquerykeydownkeypresskeyup
本文章总结了下些关于jQuery 键盘事件keydown ,keypress ,keyup介绍,有需要了解的朋友可参考。
一、首先需要知道的是: 1、keydown() keydown事件会在键盘按下时触发. 2、keyup() 代码如下 复制代码
$('input').keyup(funciton(){  
AngularJS中的Promise
bijian1013
JavaScriptAngularJSPromise
一.Promise
Promise是一个接口,它用来处理的对象具有这样的特点:在未来某一时刻(主要是异步调用)会从服务端返回或者被填充属性。其核心是,promise是一个带有then()函数的对象。
为了展示它的优点,下面来看一个例子,其中需要获取用户当前的配置文件:
var cu
c++ 用数组实现栈类
CrazyMizzz
数据结构C++
#include<iostream>
#include<cassert>
using namespace std;
template<class T, int SIZE = 50>
class Stack{
private:
T list[SIZE];//数组存放栈的元素
int top;//栈顶位置
public:
Stack(
java和c语言的雷同
麦田的设计者
java递归scaner
软件启动时的初始化代码,加载用户信息2015年5月27号
从头学java二
1、语言的三种基本结构:顺序、选择、循环。废话不多说,需要指出一下几点:
a、return语句的功能除了作为函数返回值以外,还起到结束本函数的功能,return后的语句
不会再继续执行。
b、for循环相比于whi
LINUX环境并发服务器的三种实现模型
被触发
linux
服务器设计技术有很多,按使用的协议来分有TCP服务器和UDP服务器。按处理方式来分有循环服务器和并发服务器。
1 循环服务器与并发服务器模型
在网络程序里面,一般来说都是许多客户对应一个服务器,为了处理客户的请求,对服务端的程序就提出了特殊的要求。
目前最常用的服务器模型有:
·循环服务器:服务器在同一时刻只能响应一个客户端的请求
·并发服务器:服
Oracle数据库查询指令
肆无忌惮_
oracle数据库
20140920
单表查询
-- 查询************************************************************************************************************
-- 使用scott用户登录
-- 查看emp表
desc emp
ext右下角浮动窗口
知了ing
JavaScriptext
第一种
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/
浅谈REDIS数据库的键值设计
矮蛋蛋
redis
http://www.cnblogs.com/aidandan/
原文地址:http://www.hoterran.info/redis_kv_design
丰富的数据结构使得redis的设计非常的有趣。不像关系型数据库那样,DEV和DBA需要深度沟通,review每行sql语句,也不像memcached那样,不需要DBA的参与。redis的DBA需要熟悉数据结构,并能了解使用场景。
maven编译可执行jar包
alleni123
maven
http://stackoverflow.com/questions/574594/how-can-i-create-an-executable-jar-with-dependencies-using-maven
<build>
<plugins>
<plugin>
<artifactId>maven-asse
人力资源在现代企业中的作用
百合不是茶
HR 企业管理
//人力资源在在企业中的作用人力资源为什么会存在,人力资源究竟是干什么的 人力资源管理是对管理模式一次大的创新,人力资源兴起的原因有以下点: 工业时代的国际化竞争,现代市场的风险管控等等。所以人力资源 在现代经济竞争中的优势明显的存在,人力资源在集团类公司中存在着 明显的优势(鸿海集团),有一次笔者亲自去体验过红海集团的招聘,只 知道人力资源是管理企业招聘的 当时我被招聘上了,当时给我们培训 的人
Linux自启动设置详解
bijian1013
linux
linux有自己一套完整的启动体系,抓住了linux启动的脉络,linux的启动过程将不再神秘。
阅读之前建议先看一下附图。
本文中假设inittab中设置的init tree为:
/etc/rc.d/rc0.d
/etc/rc.d/rc1.d
/etc/rc.d/rc2.d
/etc/rc.d/rc3.d
/etc/rc.d/rc4.d
/etc/rc.d/rc5.d
/etc
Spring Aop Schema实现
bijian1013
javaspringAOP
本例使用的是Spring2.5
1.Aop配置文件spring-aop.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmln
【Gson七】Gson预定义类型适配器
bit1129
gson
Gson提供了丰富的预定义类型适配器,在对象和JSON串之间进行序列化和反序列化时,指定对象和字符串之间的转换方式,
DateTypeAdapter
public final class DateTypeAdapter extends TypeAdapter<Date> {
public static final TypeAdapterFacto
【Spark八十八】Spark Streaming累加器操作(updateStateByKey)
bit1129
update
在实时计算的实际应用中,有时除了需要关心一个时间间隔内的数据,有时还可能会对整个实时计算的所有时间间隔内产生的相关数据进行统计。
比如: 对Nginx的access.log实时监控请求404时,有时除了需要统计某个时间间隔内出现的次数,有时还需要统计一整天出现了多少次404,也就是说404监控横跨多个时间间隔。
Spark Streaming的解决方案是累加器,工作原理是,定义
linux系统下通过shell脚本快速找到哪个进程在写文件
ronin47
一个文件正在被进程写 我想查看这个进程 文件一直在增大 找不到谁在写 使用lsof也没找到
这个问题挺有普遍性的,解决方法应该很多,这里我给大家提个比较直观的方法。
linux下每个文件都会在某个块设备上存放,当然也都有相应的inode, 那么透过vfs.write我们就可以知道谁在不停的写入特定的设备上的inode。
幸运的是systemtap的安装包里带了inodewatch.stp,位
java-两种方法求第一个最长的可重复子串
bylijinnan
java算法
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class MaxPrefix {
public static void main(String[] args) {
String str="abbdabcdabcx";
Netty源码学习-ServerBootstrap启动及事件处理过程
bylijinnan
javanetty
Netty是采用了Reactor模式的多线程版本,建议先看下面这篇文章了解一下Reactor模式:
http://bylijinnan.iteye.com/blog/1992325
Netty的启动及事件处理的流程,基本上是按照上面这篇文章来走的
文章里面提到的操作,每一步都能在Netty里面找到对应的代码
其中Reactor里面的Acceptor就对应Netty的ServerBo
servelt filter listener 的生命周期
cngolon
filterlistenerservelt生命周期
1. servlet 当第一次请求一个servlet资源时,servlet容器创建这个servlet实例,并调用他的 init(ServletConfig config)做一些初始化的工作,然后调用它的service方法处理请求。当第二次请求这个servlet资源时,servlet容器就不在创建实例,而是直接调用它的service方法处理请求,也就是说
jmpopups获取input元素值
ctrain
JavaScript
jmpopups 获取弹出层form表单
首先,我有一个div,里面包含了一个表单,默认是隐藏的,使用jmpopups时,会弹出这个隐藏的div,其实jmpopups是将我们的代码生成一份拷贝。
当我直接获取这个form表单中的文本框时,使用方法:$('#form input[name=test1]').val();这样是获取不到的。
我们必须到jmpopups生成的代码中去查找这个值,$(
vi查找替换命令详解
daizj
linux正则表达式替换查找vim
一、查找
查找命令
/pattern<Enter> :向下查找pattern匹配字符串
?pattern<Enter>:向上查找pattern匹配字符串
使用了查找命令之后,使用如下两个键快速查找:
n:按照同一方向继续查找
N:按照反方向查找
字符串匹配
pattern是需要匹配的字符串,例如:
1: /abc<En
对网站中的js,css文件进行打包
dcj3sjt126com
PHP打包
一,为什么要用smarty进行打包
apache中也有给js,css这样的静态文件进行打包压缩的模块,但是本文所说的不是以这种方式进行的打包,而是和smarty结合的方式来把网站中的js,css文件进行打包。
为什么要进行打包呢,主要目的是为了合理的管理自己的代码 。现在有好多网站,你查看一下网站的源码的话,你会发现网站的头部有大量的JS文件和CSS文件,网站的尾部也有可能有大量的J
php Yii: 出现undefined offset 或者 undefined index解决方案
dcj3sjt126com
undefined
在开发Yii 时,在程序中定义了如下方式:
if($this->menuoption[2] === 'test'),那么在运行程序时会报:undefined offset:2,这样的错误主要是由于php.ini 里的错误等级太高了,在windows下错误等级
linux 文件格式(1) sed工具
eksliang
linuxlinux sed工具sed工具linux sed详解
转载请出自出处:
http://eksliang.iteye.com/blog/2106082
简介
sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾
Android应用程序获取系统权限
gqdy365
android
引用
如何使Android应用程序获取系统权限
第一个方法简单点,不过需要在Android系统源码的环境下用make来编译:
1. 在应用程序的AndroidManifest.xml中的manifest节点
HoverTree开发日志之验证码
hvt
.netC#asp.nethovertreewebform
HoverTree是一个ASP.NET的开源CMS,目前包含文章系统,图库和留言板功能。代码完全开放,文章内容页生成了静态的HTM页面,留言板提供留言审核功能,文章可以发布HTML源代码,图片上传同时生成高品质缩略图。推出之后得到许多网友的支持,再此表示感谢!留言板不断收到许多有益留言,但同时也有不少广告,因此决定在提交留言页面增加验证码功能。ASP.NET验证码在网上找,如果不是很多,就是特别多
JSON API:用 JSON 构建 API 的标准指南中文版
justjavac
json
译文地址:https://github.com/justjavac/json-api-zh_CN
如果你和你的团队曾经争论过使用什么方式构建合理 JSON 响应格式, 那么 JSON API 就是你的 anti-bikeshedding 武器。
通过遵循共同的约定,可以提高开发效率,利用更普遍的工具,可以是你更加专注于开发重点:你的程序。
基于 JSON API 的客户端还能够充分利用缓存,
数据结构随记_2
lx.asymmetric
数据结构笔记
第三章 栈与队列
一.简答题
1. 在一个循环队列中,队首指针指向队首元素的 前一个 位置。
2.在具有n个单元的循环队列中,队满时共有 n-1 个元素。
3. 向栈中压入元素的操作是先 移动栈顶指针&n
Linux下的监控工具dstat
网络接口
linux
1) 工具说明dstat是一个用来替换 vmstat,iostat netstat,nfsstat和ifstat这些命令的工具, 是一个全能系统信息统计工具. 与sysstat相比, dstat拥有一个彩色的界面, 在手动观察性能状况时, 数据比较显眼容易观察; 而且dstat支持即时刷新, 譬如输入dstat 3, 即每三秒收集一次, 但最新的数据都会每秒刷新显示. 和sysstat相同的是,
C 语言初级入门--二维数组和指针
1140566087
二维数组c/c++指针
/*
二维数组的定义和二维数组元素的引用
二维数组的定义:
当数组中的每个元素带有两个下标时,称这样的数组为二维数组;
(逻辑上把数组看成一个具有行和列的表格或一个矩阵);
语法:
类型名 数组名[常量表达式1][常量表达式2]
二维数组的引用:
引用二维数组元素时必须带有两个下标,引用形式如下:
例如:
int a[3][4]; 引用:
10点睛Spring4.1-Application Event
wiselyman
application
10.1 Application Event
Spring使用Application Event给bean之间的消息通讯提供了手段
应按照如下部分实现bean之间的消息通讯
继承ApplicationEvent类实现自己的事件
实现继承ApplicationListener接口实现监听事件
使用ApplicationContext发布消息