1.以1开头的是常用旧地址
2.以3开头的有两种情况,一种是多签地址,一种是支持sw的地址(用这个地址转账手续费比1开头的低一半,但是有的交易所不支持)
1.以1开头的是常用旧地址
2.以3开头的有两种情况,一种是多签地址,一种是支持sw的地址(用这个地址转账手续费比1开头的低一半,但是有的交易所不支持)
insight is an open-source Bitcoin blockchain explorerwith complete REST and websocket APIs that can be used for writing web wallets and other apps that need more advanced blockchain queries than provided by bitcoind RPC. Check out the source code.
insight is still in development, so be sure to report any bugs and provide feedback for improvement at our github issue tracker.
原文链接: https://imququ.com/post/four-ways-to-post-data-in-http.html#toc-0HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式。
我们知道,HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。类似于下面这样:
BASH<method> <request-URL> <version>
<headers>
<entity-body>
协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式。实际上,开发者完全可以自己决定消息主体的格式,只要最后发送的 HTTP 请求满足上面的格式就可以。
但是,数据发送出去,还要服务端解析成功才有意义。一般服务端语言如 php、python 等,以及它们的 framework,都内置了自动解析常见数据格式的功能。服务端通常是根据请求头(headers)中的 Content-Type 字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。所以说到 POST 提交数据方案,包含了 Content-Type 和消息主体编码方式两部分。下面就正式开始介绍它们。
这应该是最常见的 POST 提交数据的方式了。浏览器的原生 <form> 表单,如果不设置 enctype
属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。请求类似于下面这样(无关的请求头在本文中都省略掉了):
BASHPOST http://www.example.com HTTP/1.1
Content-Type: application/x-www-form-urlencoded;charset=utf-8
title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3
首先,Content-Type 被指定为 application/x-www-form-urlencoded;其次,提交的数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码。大部分服务端语言都对这种方式有很好的支持。例如 PHP 中,$_POST[‘title’] 可以获取到 title 的值,$_POST[‘sub’] 可以得到 sub 数组。
很多时候,我们用 Ajax 提交数据时,也是使用这种方式。例如 JQuery 和 QWrap 的 Ajax,Content-Type 默认值都是「application/x-www-form-urlencoded;charset=utf-8」。
这又是一个常见的 POST 数据提交的方式。我们使用表单上传文件时,必须让 <form> 表单的 enctype
等于 multipart/form-data。直接来看一个请求示例:
BASHPOST http://www.example.com HTTP/1.1
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="text"
title
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="file"; filename="chrome.png"
Content-Type: image/png
PNG ... content of chrome.png ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--
这个例子稍微复杂点。首先生成了一个 boundary 用于分割不同的字段,为了避免与正文内容重复,boundary 很长很复杂。然后 Content-Type 里指明了数据是以 multipart/form-data 来编码,本次请求的 boundary 是什么内容。消息主体里按照字段个数又分为多个结构类似的部分,每部分都是以 --boundary
开始,紧接着是内容描述信息,然后是回车,最后是字段具体内容(文本或二进制)。如果传输的是文件,还要包含文件名和文件类型信息。消息主体最后以 --boundary--
标示结束。关于 multipart/form-data 的详细定义,请前往 rfc1867 查看。
这种方式一般用来上传文件,各大服务端语言对它也有着良好的支持。
上面提到的这两种 POST 数据的方式,都是浏览器原生支持的,而且现阶段标准中原生 <form> 表单也只支持这两种方式(通过 <form> 元素的 enctype
属性指定,默认为 application/x-www-form-urlencoded
。其实 enctype
还支持 text/plain
,不过用得非常少)。
随着越来越多的 Web 站点,尤其是 WebApp,全部使用 Ajax 进行数据交互之后,我们完全可以定义新的数据提交方式,给开发带来更多便利。
application/json 这个 Content-Type 作为响应头大家肯定不陌生。实际上,现在越来越多的人把它作为请求头,用来告诉服务端消息主体是序列化后的 JSON 字符串。由于 JSON 规范的流行,除了低版本 IE 之外的各大浏览器都原生支持 JSON.stringify,服务端语言也都有处理 JSON 的函数,使用 JSON 不会遇上什么麻烦。
JSON 格式支持比键值对复杂得多的结构化数据,这一点也很有用。记得我几年前做一个项目时,需要提交的数据层次非常深,我就是把数据 JSON 序列化之后来提交的。不过当时我是把 JSON 字符串作为 val,仍然放在键值对里,以 x-www-form-urlencoded 方式提交。
Google 的 AngularJS 中的 Ajax 功能,默认就是提交 JSON 字符串。例如下面这段代码:
JSvar data = {'title':'test', 'sub' : [1,2,3]};
$http.post(url, data).success(function(result) {
...
});
最终发送的请求是:
BASHPOST http://www.example.com HTTP/1.1
Content-Type: application/json;charset=utf-8
{"title":"test","sub":[1,2,3]}
这种方案,可以方便的提交复杂的结构化数据,特别适合 RESTful 的接口。各大抓包工具如 Chrome 自带的开发者工具、Firebug、Fiddler,都会以树形结构展示 JSON 数据,非常友好。但也有些服务端语言还没有支持这种方式,例如 php 就无法通过 $_POST 对象从上面的请求中获得内容。这时候,需要自己动手处理下:在请求头中 Content-Type 为 application/json 时,从 php://input
里获得原始输入流,再 json_decode
成对象。一些 php 框架已经开始这么做了。
当然 AngularJS 也可以配置为使用 x-www-form-urlencoded 方式提交数据。如有需要,可以参考这篇文章。
我的博客之前提到过 XML-RPC(XML Remote Procedure Call)。它是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范。典型的 XML-RPC 请求是这样的:
HTMLPOST http://www.example.com HTTP/1.1
Content-Type: text/xml
<?xml version="1.0"?>
<methodCall>
<methodName>examples.getStateName</methodName>
<params>
<param>
<value><i4>41</i4></value>
</param>
</params>
</methodCall>
XML-RPC 协议简单、功能够用,各种语言的实现都有。它的使用也很广泛,如 WordPress 的 XML-RPC Api,搜索引擎的 ping 服务等等。JavaScript 中,也有现成的库支持以这种方式进行数据交互,能很好的支持已有的 XML-RPC 服务。不过,我个人觉得 XML 结构还是过于臃肿,一般场景用 JSON 会更灵活方便。
1、镇江—-
4号中午到镇江站
午餐:镇江动车站对过万达广场就餐
2、镇江到扬州—–
万达对面车站,扬州的车是流水发车,每10分钟一班次
镇江到扬州西站:历时45分钟左右
3、到达扬州西站—–
可在扬州西站公交枢纽,坐13路 到达望月路站下 或直接打车 15分钟可到达
直接到达骏怡酒店(站台背后)
房间要求:TIPS:无烟,房间门朝北的,靠近万鸿小区那边,不吵的
4、开游扬州
办好入住以后,拿好必备物品(请在前台拿一张酒店的卡片(回来打车可以出示给出租车司机看)房卡,钱包,身份证,背包放前面)在站台等车 27路公交车 站点 望月路步行街-便益门 下车,往南走,
会路过渡口,这就是在扬州古运河边了。
简介:这条线路,会路过扬州的护城河,到穿过老城区,直接东关古渡。也就是当年鉴真下西洋的出发点。过条马路就是东关街的西门,也叫钞关,是我们扬州以前入城门运送钞票的老城门,东关街是一个综合体的街道,很多吃的。这次游览从西往东边走,也可以从站台下来直接看看古运河的夜景,有观光船游览。
————–走路路径:见下图:建议直接带爸妈走运河边走。
到达东关古渡,可以选择游船,或者先吃饭。不然就先吃饭,在东关街这边,穿过宋东门城楼,找吃的,然后可以再走到东关古渡这边来,或者直接穿过东关街。
建议路线:走到东关古渡以后,看完下面的浮雕长廊后,过马路,爬一下宋代东门城楼,历史文化成列馆,那边上楼,到城门顶上,运动以下,下来以后,直接边走遍吃吧,看看夜景。
从东关街回酒店———-
东关街从东走到西以后,见下图,如果是公交车方式
蒋家桥饺面店 在马路对过
沿着国庆路,一直往南走 到东圈门,公交站上车 见下图
如果是到了东圈门那边,在十字路口,那边打车会容易点。5公里吧,就到酒店,12块这样子吧。你自己看,爸妈情况。
走路路径
回到酒店–休息,洗澡,睡觉
第二天:早茶
建议:必香居 走路路径:走路10分钟不到
必点,饺面,分量很足
早茶点到瘦西湖西门 :此门相对人少一些
站台,就在必香居路边,不需要过马路。公交比较多,
站台信息:翠岗小区-瘦西湖西门(东方百合园)
出公交后,一直往北走,不行也就2-3分钟
瘦西湖建议一天,很大,里面有餐饮部
如果下雨,晚上春江花月夜演出,是不会上演的。所以可以另外做安排,或者直接回酒店,让爸妈休息下。
建议,从瘦西湖的西门入,然后晃悠逛着,从瘦西湖的南门出来。就是扬州大学瘦西湖校区,也可以走走。
还有百年历史名桥,大虹桥!
大虹桥对面有盆景园,是公开开放的小园林,都可以逛逛。
那边有地点:虹桥坊 ,解决吃饭问题。
见下图
晚上从虹桥坊到酒店——
NO3….第三天上午
早茶。在酒店对面的吴家粥铺、或者少林寺素食馆、或者来鹤台的富春茶楼吃早茶
富春是扬州三春之一,
如果到去富春,吃好早饭以后到双博馆
如果不去富春,从酒店到双博馆。就直接从酒店,沿着望月路往西走,过十字路口。
双博馆,是扬州活字印刷博物馆和美术馆两个馆,都可以看看的说。很大。
计算好时间。中午在估计京华城吃饭。
双博馆可以穿过,明月湖公园走路过来。我截图,看到没有,绿色的小路,从北往南走,就到京华城了!可以看看湖景!!!不穿公园的正常路线(绿色的路线)
从京华城到汽车西站
吃好饭,从京华城那边,打车到汽车西站,起步价8块,公交也很方便。或者自行车骑车过去也可以的说。
结束行程,去镇江-回上海。
1.安装electrum
https://www.electrum.org/#download
btccoin钱包:mycelium,electrum,copay
2.启动btc测试网络钱包:
cd /Applications/Electrum.app/Contents/MacOS
./Electrum –testnet
3.获取测试比特币地址:
https://testnet.coinfaucet.eu/en/
https://testnet.manu.backend.hamburg/faucet
4.在测试链浏览器上查看交易数据
blockchain explorer:
https://www.blocktrail.com/tBTC/
https://live.blockcypher.com/btc-testnet/
https://btc.com/
https://chainquery.com/bitcoin-api
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
btc正式网和测试网络的地址是不同的,而etc的正式网络和测试网络是相同的
etc的parity钱包可以选择正式网络和测试网络
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1.到parity.io上获取parity对应不同操作系统的钱包安装文件进行安装
2.安装完毕后,创建eth钱包地址,并打入0.007eth,用户账号的sms认证
3.认证通过后,可以去setting里面切换到kovan测试网络,获取测试eth,每天有数量限制
4.在测试eth浏览器上查看交易数据
https://kovan.etherscan.io/
[code]python manage.py startproject myproject #创建项目
cd myproject
python manage.py startapp myapp #创建app
cd myapp
vim models.py #模型里面定义表结构
~~~~~
from django.db import models
# Create your models here.
class Student(models.Model):
name = models.CharField('姓名', max_length=64)
~~~~~~
:wq
vim admin.py #添加进管理视图需要编辑这个文件
~~~~~~
from django.contrib import admin
# Register your models here.
from . import models
admin.site.register(models.Student)
~~~~~~
cd ../myproject
vim settings.py #生成Student表需要编辑这个文件
~~~~~~~
INSTALLED_APPS里加入'myapp'
~~~~~~
:wq
cd ..
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver
[/code]
访问localhost:8000/admin
登录后,点击user,对用户的权限进行配置,基础的crud都有了
如何自定义权限,请听下回分解
vim ~/.bash_profile
加入
alias python=”/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.6″
alias pip=”/Library/Frameworks/Python.framework/Versions/3.6/bin/pip3.6″:
:wq
保存
source ~/.bash_profile
搞定!
试试python 出来3.6
pip出来对应版本,yeap!
http://https://https://amyflash.com/p/
[code]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>price</title>
<script src="jquery.min.js">
</script>
<script>
$(document).ready(function(){
$.get("https://api.coinmarketcap.com/v1/ticker/bitcoin/?convert=CNY",function(data,status){
$("#btc").css("font-size",60);
$("#btc").html("<h1>比特币:"+Number(data[0].price_cny).toFixed(2)+"</h1>");
});
$.get("https://api.coinmarketcap.com/v1/ticker/EOS/?convert=CNY",function(data,status){
$("#eos").css("font-size",60);
$("#eos").html("<h1>EOS:"+Number(data[0].price_cny).toFixed(2)+"</h1>");
});
$.get("https://api.coinmarketcap.com/v1/ticker/ZCASH/?convert=CNY",function(data,status){
$("#zec").css("font-size",60);
$("#zec").html("<h1>ZEC:"+Number(data[0].price_cny).toFixed(2)+"</h1>");
});
$.get("https://api.coinmarketcap.com/v1/ticker/DASH/?convert=CNY",function(data,status){
$("#dash").css("font-size",60);
$("#dash").html("<h1>DASH:"+Number(data[0].price_cny).toFixed(2)+"</h1>");
});
$.get("https://api.coinmarketcap.com/v1/ticker/ethereum/?convert=CNY",function(data,status){
$("#eth").css("font-size",60);
$("#eth").html("<h1>以太坊:"+Number(data[0].price_cny).toFixed(2)+"</h1>");
});
});
</script>
</head>
<body>
<div id="btc">btc</div>
<div id="eos">eos</div>
<div id="eth">eth</div>
<div id="dash">dash</div>
<div id="zec">zec</div>
</body>
</html>
[/code]