- 死磕以太坊源码分析之p2p节点发现
mindcarver
死磕以太坊源码分析之p2p节点发现在阅读节点发现源码之前必须要理解kadmilia算法,可以参考:KAD算法详解。节点发现概述节点发现,使本地节点得知其他节点的信息,进而加入到p2p网络中。以太坊的节点发现基于类似的kademlia算法,源码中有两个版本,v4和v5。v4适用于全节点,通过discover.ListenUDP使用,v5适用于轻节点通过discv5.ListenUDP使用,本文介绍的
- 以太坊源码分析:共识(3)Ethash
大彬_一起学Golang
前言Ethash实现了PoW,PoW的精妙在于通过一个随机数确定,矿工确实做了大量的工作,并且是没有办法作弊的。接下来将介绍:Ethash的挖矿本质。Ethash是如何挖矿的。如何验证Ethash的随机数。Ethash的挖矿本质挖矿的本质是找到一个随机数,证明自己做了很多工作(计算)。在Ethash中,该随机数称为Nonce,它需要满足一个公式:Rand(hash,nonce)≤MaxValue/
- 死磕以太坊源码分析之Kademlia算法
mindcarver
死磕以太坊源码分析之Kademlia算法KAD算法概述Kademlia是一种点对点分布式哈希表(DHT),它在容易出错的环境中也具有可证明的一致性和性能。使用一种基于异或指标的拓扑结构来路由查询和定位节点,这简化了算法并有助于证明。该拓扑结构有一个特点:每次消息交换都能够传递或强化有效信息。系统利用这些信息进行并发的异步查询,可以容忍节点故障,并且故障不会导致用户超时。KAD算法要处理的问题如何分
- 死磕以太坊源码分析之MPT树-上
mindcarver
死磕以太坊源码分析之MPT树-上前缀树Trie前缀树(又称字典树),通常来说,一个前缀树是用来存储字符串的。前缀树的每一个节点代表一个字符串(前缀)。每一个节点会有多个子节点,通往不同子节点的路径上有着不同的字符。子节点代表的字符串是由节点本身的原始字符串,以及通往该子节点路径上所有的字符组成的。如下图所示:image-20201231160000592Trie的结点看上去是这样子的:[[Ia,I
- 以太坊源码分析之 P2P网络(二、节点发现流程)
还是要学会仰望
区块链区块链p2p节点发现
区块链特辑:https://blog.csdn.net/fusan2004/article/details/80879343,欢迎查阅,原创作品,转载请标明!上一篇文章简单介绍了下一些基础的类型定义,从这一篇开始我们将描述p2p网络的更多细节。从关于节点的定义来看,其实不同定义是有不同含义的,Node代表的是一个孤立的节点,这个节点不代表我们和他会建立连接,而Peer是肯定会去连接的,但是不代表一
- 死磕以太坊源码分析之Ethash共识算法
mindcarver
死磕以太坊源码分析之Ethash共识算法代码分支:https://github.com/ethereum/go-ethereum/tree/v1.9.9引言目前以太坊中有两个共识算法的实现:clique和ethash。而ethash是目前以太坊主网(Homestead版本)的POW共识算法。目录结构ethash模块位于以太坊项目目录下的consensus/ethash目录下。algorithm.g
- 以太坊源码分析(五 协议栈)
edolovee
简介在以太坊上P2P网络上使用了多种数据要交互,这就会涉及的很多种协议,所以以太坊使用了RPLx协议,它是一个加密的点对点的协议套件,它为在P2P网络上交互的应用提供了一套统一的传输接口,它设计的初衷便是满足去中心化应用。结构图image.png概述RLPx协议建立在tcp以及udp之上,它包含四个组件,分别为NodeDisvovery、Handshake、Framing、FlowControl,
- 以太坊源码分析:共识(1)矿工
大彬_一起学Golang
前言矿工在PoW中负责了产生区块的工作,把一大堆交易交给它,它生成一个证明自己做了很多工作的区块,然后将这个区块加入到本地区块链并且广播给其他节点。接下来我们将从以下角度介绍矿工:角色。矿工不是一个人,而是一类人,可以把这一类人分成若干角色。通过了解一个区块产生的主要流程,掌握矿工的工作流。通过了解矿工的主要函数介绍,掌握矿工的主要挖矿机制。介绍矿工由哪些部分组成,会和哪些其他模块进行交互,这些部
- [后羿聊以太坊]从以太坊源码分析geth中 full和fast之间的关系
后羿区块链笔记
软件环境go:1.9.2ethereum&GETH:v1.8.11-unstable名词解释:以太坊有三种同步的模式,full,fast,lightfull模式从开始到结束,获取区块的header,获取区块的body,从创始块开始校验每一个元素,需要下载所有区块数据信息。速度最慢,但是能获取到所有的历史数据。//命令:geth–syncmodefullfast模式获取区块的header,获取区块的
- 以太坊源码分析(3)txpool交易池源码分析
琴生1996
交易池:txpool源码分析交易池的源码位于:core/tx_pool.go文件txpool交易池由两部分构成分别是pending和queued组成。主要适用于存放当前提交等待被区块确认提交的交易,本地交易和网络远程交易都有1、pending:等待执行的交易会被放在pending队列中2、queued:提交但是不能够执行的交易,放在queue中等待执行通过阅读tx_pool_test.go这个tx
- 以太坊源码分析(3)Accounts源码分析与逻辑结构之交易源码
琴生1996
Accounts源码分析与逻辑结构2listAccounts源码分析位于internal/ethapi/api.go中的ListAccounts方法//ListAccountswillreturnalistofaddressesforaccountsthisnodemanages.func(s*PrivateAccountAPI)ListAccounts()[]common.Address{add
- 以太坊源码分析(一 简介)
edolovee
ethereum-buildunstoppableapplications简介以太坊作为目前区块链技术2.0的代表作品,无论是它独创的智能合约以及它本身交易的速度都优于bitcoin,通过看它的白皮书以及一些文章也略微了解了它的一些原理,但是总体还是对它的实现半知半解。因此就想分析下它的实现源码,再结合白皮书也许可以深入的理解它的实现。准备工作源码下载gitclonehttps://github.
- 以太坊源码分析(三 智能合约执行)
edolovee
ethereum-buildunstoppableapplications智能合约以太坊的智能合约具有动态脚本一样,它可以动态的执行,当我们在以太坊上发布了智能合约时,我们会知道发布的智能合约的地址,根据这个地址以及它定义的调用规范我们就可以调用这个合约,非常方便。同样的我们也是通过几个问题来分析下智能合约的实现,智能合约在什么时候执行的?智能合约如何执行的?智能合约在什么时候执行的智能合约的执行
- 以太坊源码分析之七智能合约
fpcc
blockchainblockchain
以太坊源码分析之七智能合约这个以太坊之所以较之于比特币看上去更高大上一些,主要原因是提供了智能合约,以太坊的智能合约确实提供了一个更方便、更开放区块链的接口。首先说明一下,要想看懂以太坊的智能合约部分,首先要对智能合约有所了解,回头会专门写一个智能合约编写的系列。扯回来。先看智能合约的入口,不管智能合约还是交易,创建的时候儿都是有Transaction来实现的。不同的是创建的目标是一样的,在前面的
- [以太坊源码分析][p2p网络04]:基于UDP的节点发现
jea的笔记本
为什么要进行节点发现呢?因为要加入一个p2p网络,并且与网络中的节点交互,需要知道这个p2p网络中的一些节点信息。节点发现,使本地节点得知其他节点的信息,进而加入到p2p网络中。节点发现就是一个寻找邻居节点的过程。这里有一点跟去中心化违背的地方,就是节点第一次启动的时候,节点会与硬编码在以太坊源码中的bootnode进行连接,这个bootnode有一种中心化服务器的感觉,因为所有的节点加入几乎都先
- [以太坊源码分析][p2p网络06]:交易广播和区块广播
jea的笔记本
eth/handle.go中的ProtocolManager管理节点之间通信。节点与节点之间的通信,也就是区块和交易的广播或同步。这里先介绍广播。提及广播,要先说一个有趣的协议:gossip,对,就是流言蜚语。如果有关于明星的八卦或是负面新闻,不用多长时间,可能满大街的人们就都知道了。广播就类似于流言蜚语的传播,一传十,十传百的扩散出去,最后整个网络都知晓了。以下是ProtocolManager实
- [以太坊源码分析][p2p网络03]:发起TCP连接请求
jea的笔记本
上一节介绍的是底层p2p网络开启后,监听别的远程节点发送来的TCP连接请求。这一节是个续集,要介绍的是本地节点如何向远程节点发起TCP连接请求。这一次,是我们打电话call别人。但是这一次有点不同,我们是以做任务的形式向别人发起拨号,而且每次做很多个任务。每一个任务里都包含了连接类型和远程节点信息。究竟是怎么回事,请往下看。0.索引01.从Server服务开始02.初始化拨号状态,以及创建任务03
- [以太坊源码分析][p2p网络01]:什么是以太坊p2p网络
jea的笔记本
近期在学习以太坊的源码,先是看p2p网络,因此开个大坑,来介绍一下学习所得。若是有什么问题,欢迎提出交流与指导。0.索引01.什么是p2p网络02.以太坊的p2p网络结构03.以太坊p2p网络的函数入口1.什么是p2p网络p2p,peertopeer,对等网络。即网络中的每个节点都是相同的。C/S模式vsP2PC/S模式先来看一下非p2p的网络,即传统的C/S模式,也就是客户端发送请求与使用服务,
- 以太坊源码分析(2)Accounts源码分析与逻辑结构之基本概述与新建账户源码
琴生1996
Accounts源码分析与逻辑结构1总所周知以太坊在比特币的基础上加以引用与改进,比特币使用UTXO来表示状态的转移,而以太坊使用账来表示状态的转移。accounts包实现了以太坊客户端的钱包和账户管理在以太坊网络中存在两种账户:外部账户EOA:一般是属于个人或者用户的账户,被私钥控制没有任何代码与之相关内部账户CA:给智能合约分配的账户,被合约代码控制,且与合约关联在源码core/state/s
- 以太坊源码分析(四 节点发现)
edolovee
ethereum-buildunstoppableapplications节点发现以太坊的节点发现协议使用的是KAD算法(kademlia)数据存储结构它在一个数组里维护了256个bucket,每个bucket的数据下标即为其深度,每个bucket最多存储16个节点,所以一个节点可存储的节点数为256*16个节点这是在NodeTable中定义的image.png距离算法每个节点都有一个nodeId
- [以太坊源码分析][p2p网络05]:底层节点如何与上层节点联系
jea的笔记本
对于以太坊的p2p网络,我觉得,分为底层p2p网络的构建,以及上层eth服务的实现。在介绍以太坊上层服务之前,需要先来看一下底层网络是怎么跟上层网络联系在一起的。0.索引01.ProtocolManager协议管理02.新建一个ProtocolManager03.建立联系04.使用Run方法05.底层的peer结构06.总结1.ProtocolManager协议管理ProtocolManager是
- 以太坊源码分析--RLP编码
区块链以太坊
RLP(RecursiveLengthPrefix),递归长度前缀编码,它是以太坊序列化所采用的序列化和反序列化的主要方式。区块、交易等数据结构在网络传输和持久化时会先经过RLP编码后再存储到数据库中。rlp适用于任意的二进制数据数组的编码,在以太坊中,rpl接受的数据分为两类:1.字节数组2.类list数据结构。以太坊中rlp的具体定义和规则我们可以在黄皮书中找到(AppendixB.Recur
- 以太坊源码分析--MPT树
区块链以太坊
MPT(MerklePatriciaTries)是以太坊中存储区块数据的核心数据结构,它MerkleTree和PatriciaTree融合一个树形结构,理解MPT结构对之后学习以太坊区块header以及智能合约状态存储结构的模块源码很有帮助。首先来看下Merkle树:它的叶子是数据块的hash,从图中可以看出非叶子节点是其子节点串联字符串的hash,底层数据的任何变动都会影响父节点,这棵树的Mer
- 死磕以太坊源码分析之downloader同步
mindcarver
区块链以太坊同步块比特币
死磕以太坊源码分析之downloader同步需要配合注释代码看:https://github.com/blockchain...这篇文章篇幅较长,能看下去的是条汉子,建议收藏希望读者在阅读过程中,指出问题,给个关注,一起探讨。概览downloader模块的代码位于eth/downloader目录下。主要的功能代码分别是:downloader.go:实现了区块同步逻辑peer.go:对区块各个阶段的
- 死磕以太坊源码分析之挖矿流程分析
mindcarver
区块链以太坊
死磕以太坊源码分析之挖矿流程分析代码分支:https://github.com/ethereum/g...基本架构以太坊挖矿的主要流程是由miner包负责的,下面是基本的一个架构:首先外部是通过miner对象进行了操作,miner里面则是实用worker对象来实现挖矿的整体功能。miner决定着是否停止挖矿或者是否可以开始挖矿,同时还可以设置矿工的地址来获取奖励。真正调度处理挖矿相关细节的则是在w
- 死磕以太坊源码分析之Kademlia算法
mindcarver
区块链以太坊dht
死磕以太坊源码分析之Kademlia算法KAD算法概述Kademlia是一种点对点分布式哈希表(DHT),它在容易出错的环境中也具有可证明的一致性和性能。使用一种基于异或指标的拓扑结构来路由查询和定位节点,这简化了算法并有助于证明。该拓扑结构有一个特点:每次消息交换都能够传递或强化有效信息。系统利用这些信息进行并发的异步查询,可以容忍节点故障,并且故障不会导致用户超时。KAD算法要处理的问题如何分
- 死磕以太坊源码分析之p2p网络启动
mindcarver
区块链以太坊p2p网络
死磕以太坊源码分析之p2p网络启动p2p源码目录discover/基于UDP的节点发现V4协议discv5/节点发现V5协议enode/节点信息enr/以太坊节点记录(ethereumnoderecords)nat/网络地址转换,用于内网穿透netutil/protocol/simulations/本地p2p网络的模拟器dial.go建立连接请求,以任务的形式message.go定义了读写的接口m
- 死磕以太坊源码分析之挖矿流程分析
mindcarver
区块链以太坊
死磕以太坊源码分析之挖矿流程分析代码分支:https://github.com/ethereum/g...基本架构以太坊挖矿的主要流程是由miner包负责的,下面是基本的一个架构:首先外部是通过miner对象进行了操作,miner里面则是实用worker对象来实现挖矿的整体功能。miner决定着是否停止挖矿或者是否可以开始挖矿,同时还可以设置矿工的地址来获取奖励。真正调度处理挖矿相关细节的则是在w
- 死磕以太坊源码分析之Kademlia算法
mindcarver
区块链以太坊dht
死磕以太坊源码分析之Kademlia算法KAD算法概述Kademlia是一种点对点分布式哈希表(DHT),它在容易出错的环境中也具有可证明的一致性和性能。使用一种基于异或指标的拓扑结构来路由查询和定位节点,这简化了算法并有助于证明。该拓扑结构有一个特点:每次消息交换都能够传递或强化有效信息。系统利用这些信息进行并发的异步查询,可以容忍节点故障,并且故障不会导致用户超时。KAD算法要处理的问题如何分
- 死磕以太坊源码分析之p2p网络启动
mindcarver
区块链以太坊p2p网络
死磕以太坊源码分析之p2p网络启动p2p源码目录discover/基于UDP的节点发现V4协议discv5/节点发现V5协议enode/节点信息enr/以太坊节点记录(ethereumnoderecords)nat/网络地址转换,用于内网穿透netutil/protocol/simulations/本地p2p网络的模拟器dial.go建立连接请求,以任务的形式message.go定义了读写的接口m
- java杨辉三角
3213213333332132
java基础
package com.algorithm;
/**
* @Description 杨辉三角
* @author FuJianyong
* 2015-1-22上午10:10:59
*/
public class YangHui {
public static void main(String[] args) {
//初始化二维数组长度
int[][] y
- 《大话重构》之大布局的辛酸历史
白糖_
重构
《大话重构》中提到“大布局你伤不起”,如果企图重构一个陈旧的大型系统是有非常大的风险,重构不是想象中那么简单。我目前所在公司正好对产品做了一次“大布局重构”,下面我就分享这个“大布局”项目经验给大家。
背景
公司专注于企业级管理产品软件,企业有大中小之分,在2000年初公司用JSP/Servlet开发了一套针对中
- 电驴链接在线视频播放源码
dubinwei
源码电驴播放器视频ed2k
本项目是个搜索电驴(ed2k)链接的应用,借助于磁力视频播放器(官网:
http://loveandroid.duapp.com/ 开放平台),可以实现在线播放视频,也可以用迅雷或者其他下载工具下载。
项目源码:
http://git.oschina.net/svo/Emule,动态更新。也可从附件中下载。
项目源码依赖于两个库项目,库项目一链接:
http://git.oschina.
- Javascript中函数的toString()方法
周凡杨
JavaScriptjstoStringfunctionobject
简述
The toString() method returns a string representing the source code of the function.
简译之,Javascript的toString()方法返回一个代表函数源代码的字符串。
句法
function.
- struts处理自定义异常
g21121
struts
很多时候我们会用到自定义异常来表示特定的错误情况,自定义异常比较简单,只要分清是运行时异常还是非运行时异常即可,运行时异常不需要捕获,继承自RuntimeException,是由容器自己抛出,例如空指针异常。
非运行时异常继承自Exception,在抛出后需要捕获,例如文件未找到异常。
此处我们用的是非运行时异常,首先定义一个异常LoginException:
/**
* 类描述:登录相
- Linux中find常见用法示例
510888780
linux
Linux中find常见用法示例
·find path -option [ -print ] [ -exec -ok command ] {} \;
find命令的参数;
- SpringMVC的各种参数绑定方式
Harry642
springMVC绑定表单
1. 基本数据类型(以int为例,其他类似):
Controller代码:
@RequestMapping("saysth.do")
public void test(int count) {
}
表单代码:
<form action="saysth.do" method="post&q
- Java 获取Oracle ROWID
aijuans
javaoracle
A ROWID is an identification tag unique for each row of an Oracle Database table. The ROWID can be thought of as a virtual column, containing the ID for each row.
The oracle.sql.ROWID class i
- java获取方法的参数名
antlove
javajdkparametermethodreflect
reflect.ClassInformationUtil.java
package reflect;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.Modifier;
import javassist.bytecode.CodeAtt
- JAVA正则表达式匹配 查找 替换 提取操作
百合不是茶
java正则表达式替换提取查找
正则表达式的查找;主要是用到String类中的split();
String str;
str.split();方法中传入按照什么规则截取,返回一个String数组
常见的截取规则:
str.split("\\.")按照.来截取
str.
- Java中equals()与hashCode()方法详解
bijian1013
javasetequals()hashCode()
一.equals()方法详解
equals()方法在object类中定义如下:
public boolean equals(Object obj) {
return (this == obj);
}
很明显是对两个对象的地址值进行的比较(即比较引用是否相同)。但是我们知道,String 、Math、I
- 精通Oracle10编程SQL(4)使用SQL语句
bijian1013
oracle数据库plsql
--工资级别表
create table SALGRADE
(
GRADE NUMBER(10),
LOSAL NUMBER(10,2),
HISAL NUMBER(10,2)
)
insert into SALGRADE values(1,0,100);
insert into SALGRADE values(2,100,200);
inser
- 【Nginx二】Nginx作为静态文件HTTP服务器
bit1129
HTTP服务器
Nginx作为静态文件HTTP服务器
在本地系统中创建/data/www目录,存放html文件(包括index.html)
创建/data/images目录,存放imags图片
在主配置文件中添加http指令
http {
server {
listen 80;
server_name
- kafka获得最新partition offset
blackproof
kafkapartitionoffset最新
kafka获得partition下标,需要用到kafka的simpleconsumer
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.
- centos 7安装docker两种方式
ronin47
第一种是采用yum 方式
yum install -y docker
 
- java-60-在O(1)时间删除链表结点
bylijinnan
java
public class DeleteNode_O1_Time {
/**
* Q 60 在O(1)时间删除链表结点
* 给定链表的头指针和一个结点指针(!!),在O(1)时间删除该结点
*
* Assume the list is:
* head->...->nodeToDelete->mNode->nNode->..
- nginx利用proxy_cache来缓存文件
cfyme
cache
user zhangy users;
worker_processes 10;
error_log /var/vlogs/nginx_error.log crit;
pid /var/vlogs/nginx.pid;
#Specifies the value for ma
- [JWFD开源工作流]JWFD嵌入式语法分析器负号的使用问题
comsci
嵌入式
假如我们需要用JWFD的语法分析模块定义一个带负号的方程式,直接在方程式之前添加负号是不正确的,而必须这样做:
string str01 = "a=3.14;b=2.71;c=0;c-((a*a)+(b*b))"
定义一个0整数c,然后用这个整数c去
- 如何集成支付宝官方文档
dai_lm
android
官方文档下载地址
https://b.alipay.com/order/productDetail.htm?productId=2012120700377310&tabId=4#ps-tabinfo-hash
集成的必要条件
1. 需要有自己的Server接收支付宝的消息
2. 需要先制作app,然后提交支付宝审核,通过后才能集成
调试的时候估计会真的扣款,请注意
- 应该在什么时候使用Hadoop
datamachine
hadoop
原帖地址:http://blog.chinaunix.net/uid-301743-id-3925358.html
存档,某些观点与我不谋而合,过度技术化不可取,且hadoop并非万能。
--------------------------------------------万能的分割线--------------------------------
有人问我,“你在大数据和Hado
- 在GridView中对于有外键的字段使用关联模型进行搜索和排序
dcj3sjt126com
yii
在GridView中使用关联模型进行搜索和排序
首先我们有两个模型它们直接有关联:
class Author extends CActiveRecord {
...
}
class Post extends CActiveRecord {
...
function relations() {
return array(
'
- 使用NSString 的格式化大全
dcj3sjt126com
Objective-C
格式定义The format specifiers supported by the NSString formatting methods and CFString formatting functions follow the IEEE printf specification; the specifiers are summarized in Table 1. Note that you c
- 使用activeX插件对象object滚动有重影
蕃薯耀
activeX插件滚动有重影
使用activeX插件对象object滚动有重影 <object style="width:0;" id="abc" classid="CLSID:D3E3970F-2927-9680-BBB4-5D0889909DF6" codebase="activex/OAX339.CAB#
- SpringMVC4零配置
hanqunfeng
springmvc4
基于Servlet3.0规范和SpringMVC4注解式配置方式,实现零xml配置,弄了个小demo,供交流讨论。
项目说明如下:
1.db.sql是项目中用到的表,数据库使用的是oracle11g
2.该项目使用mvn进行管理,私服为自搭建nexus,项目只用到一个第三方 jar,就是oracle的驱动;
3.默认项目为零配置启动,如果需要更改启动方式,请
- 《开源框架那点事儿16》:缓存相关代码的演变
j2eetop
开源框架
问题引入
上次我参与某个大型项目的优化工作,由于系统要求有比较高的TPS,因此就免不了要使用缓冲。
该项目中用的缓冲比较多,有MemCache,有Redis,有的还需要提供二级缓冲,也就是说应用服务器这层也可以设置一些缓冲。
当然去看相关实现代代码的时候,大致是下面的样子。
[java]
view plain
copy
print
?
public vo
- AngularJS浅析
kvhur
JavaScript
概念
AngularJS is a structural framework for dynamic web apps.
了解更多详情请见原文链接:http://www.gbtags.com/gb/share/5726.htm
Directive
扩展html,给html添加声明语句,以便实现自己的需求。对于页面中html元素以ng为前缀的属性名称,ng是angular的命名空间
- 架构师之jdk的bug排查(一)---------------split的点号陷阱
nannan408
split
1.前言.
jdk1.6的lang包的split方法是有bug的,它不能有效识别A.b.c这种类型,导致截取长度始终是0.而对于其他字符,则无此问题.不知道官方有没有修复这个bug.
2.代码
String[] paths = "object.object2.prop11".split("'");
System.ou
- 如何对10亿数据量级的mongoDB作高效的全表扫描
quentinXXZ
mongodb
本文链接:
http://quentinXXZ.iteye.com/blog/2149440
一、正常情况下,不应该有这种需求
首先,大家应该有个概念,标题中的这个问题,在大多情况下是一个伪命题,不应该被提出来。要知道,对于一般较大数据量的数据库,全表查询,这种操作一般情况下是不应该出现的,在做正常查询的时候,如果是范围查询,你至少应该要加上limit。
说一下,
- C语言算法之水仙花数
qiufeihu
c算法
/**
* 水仙花数
*/
#include <stdio.h>
#define N 10
int main()
{
int x,y,z;
for(x=1;x<=N;x++)
for(y=0;y<=N;y++)
for(z=0;z<=N;z++)
if(x*100+y*10+z == x*x*x
- JSP指令
wyzuomumu
jsp
jsp指令的一般语法格式: <%@ 指令名 属性 =”值 ” %>
常用的三种指令: page,include,taglib
page指令语法形式: <%@ page 属性 1=”值 1” 属性 2=”值 2”%>
include指令语法形式: <%@include file=”relative url”%> (jsp可以通过 include