Mryqu's Notes


  • 首页

  • 搜索
close

[Golang] 解决GoClipse安装问题

时间: 2017-10-14   |   分类: Golang     |   阅读: 35 字 ~1分钟
按照GoClipse安装文档安装Eclipse的GoClipse插件时,提示org.eclipse.platform.feature.group无法找到。 我的Eclipse还是Eclipse 4.4 (Luna),而GoClipse要求Eclipse 4.6 (Neon)及更高版本,看来不听话是没有好下场的。接着这个机会升级到Eclipse 4.7 (Oxygen)吧。 安装gocode、guru、godef gocode在安装LiteIDE时已经安装。GoClipse下载guru会执行go get -u golang.org/x/tools/cmd/guru ,其结果是网站不响应该请求。 go get -u github.com/nsf/gocode go get -u github.com/rogpeppe/godef mkdir %GOPATH%\src\golang.org\x\ cd %GOPATH%\src\golang.org\x\ git clone https://github.com/golang/tools.git go install golang.org/x/tools/cmd/guru 配置GoClipse 测试 齐活!

[Golang] 安装Go开发环境

时间: 2017-10-13   |   分类: Golang     |   阅读: 11 字 ~1分钟
项目上有几个Story涉及GoLang。Go语言是谷歌2009发布的第二款开源编程语言。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。 学习新语言从安装环境开始。到https://golang.org/ 下载一个Windows版的安装程序,就可以轻松搞定。 初次上手,习惯性地选了一个IDE。没下jetbrains家的GoLand ,而是拿LiteIDE 试试手。感觉有点卡顿,其他还好。 链接 https://golang.org/ LiteIDE GoClipse installation

[C++] 优化twitcurl项目中的HMAC_SHA1

时间: 2017-07-31   |   分类: C++     |   阅读: 155 字 ~1分钟
twitcurl开源项目中包含SHA1.cpp和HMAC_SHA1.cpp用于计算Twitter认证所需的HMAC-SHA1签名。 HMAC是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code),HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。HMAC_SHA1需要一个密钥,而SHA1不需要。HMAC_SHA1的公式为:SHA1(Key XOR opad, SHA1(Key XOR ipad, text)) 通过分析oauthlib.cpp和HMAC_SHA1.cpp可知: 对于HMAC_SHA1算法,请求URL及参数信息作为文本输入,ConsumerSecret和AccessTokenSecret组合作为密钥输入; 第一步:如果密钥输入大小超过64字节,则先做一次SHA1获取其摘要用于后继操作;否则直接使用密钥进行后继操作; 第二步:密钥输入(/密钥输入摘要)XOR ipad(即0x36); 第三步:将上一步的[Key XOR ipad]和文本输入并入缓存AppendBuf1; 第四步:使用上一步生成的缓存AppendBuf1一起进行SHA1以产生内部摘要; 第五步:密钥输入(/密钥输入摘要)XOR opad(即0x5C); 第六步:将上一步的[Key XOR opad]和第四步产生的内部摘要并入缓存AppendBuf2; 第七步:使用上一步生成的缓存AppendBuf2一起进行SHA1以产生外部摘要。 HMAC_SHA1.h中定义的AppendBuf1和AppendBuf2都有4K大小,合计8K。能不能省点空间呢? 下面我们可以看一个小示例: char srcTest[] = "abcdef"; int srcTestL = strlen(srcTest); char srcTest1[] = "abc"; int srcTestL1 = strlen(srcTest1); char srcTest2[] = "def"; int srcTestL2 = strlen(srcTest2); unsigned char dst1[20] = ""; unsigned char dst2[20] = ""; CSHA1 sha1A = CSHA1(); sha1A.Reset(); sha1A.Update((UINT_8 *)srcTest, srcTestL); sha1A.
阅读全文 »

试试swagger-codegen的invokerPackage和basePackage

时间: 2017-07-24   |   分类: Service+JavaEE   Swagger     |   阅读: 520 字 ~3分钟
环境 mryqu@mryqu MINGW64 /c/playground/helloSwaggerCodegen $ ls config.json swagger.json swagger.yaml swagger-codegen-cli-2.2.3.jar mryqu@mryqu MINGW64 /c/playground/helloSwaggerCodegen $ cat swagger.yaml swagger: '2.0' info: description: Just a SpringFox demo version: '2.0' title: mryqu's REST API Demo contact: name: mryqu license: name: Apache License Version 2.0 url: https://github.com/mryqu/ host: localhost:8080 basePath: "/hellospringfox" tags: - name: greeting-controller description: Greeting Controller paths: "/greeting{?name}": get: tags: - greeting-controller summary: Get greeting information operationId: greeting consumes: - application/json produces: - application/json - "*/*" parameters: - name: name in: query description: User Name required: true type: string default: World responses: '200': description: OK schema: "$ref": "#/definitions/Greeting" '204': description: No Content '401': description: Unauthorized '403': description: Forbidden definitions: Greeting: type: object properties: content: type: string links: type: array items: "$ref": "#/definitions/Link" Link: type: object properties: href: type: string rel: type: string templated: type: boolean mryqu@mryqu MINGW64 /c/playground/helloSwaggerCodegen $ cat config.
阅读全文 »

swagger-codegen 2.2.3与2.1.5区别

时间: 2017-07-23   |   分类: Service+JavaEE   Swagger     |   阅读: 747 字 ~4分钟
支持的语法 $ java -jar swagger-codegen-cli-2.1.6.jar langs Available languages: [android, aspnet5, async-scala, csharp, dart, flash, python-flask, go, java, jaxrs, jaxrs-cxf, jaxrs-resteasy, inflector, javascript, javascript-closure-angular, jmeter, nodejs-server, objc, perl, php, python, qt5cpp, ruby, scala, scalatra, silex-PHP, sinatra, slim, spring-mvc, dynamic-html, html, swagger, swagger-yaml, swift, tizen, typescript-angular, typescript-node, akka-scala, CsharpDotNet2, clojure, haskell-servant] $ java -jar swagger-codegen-cli-2.2.3.jar langs Available languages: [akka-scala, android, apache2, apex, aspnet5, aspnetcore, async-scala, bash, csharp, clojure, cwiki, cpprest, CsharpDotNet2, dart, elixir, eiffel, erlang-server, finch, flash, python-flask, go, go-server, groovy, haskell, jmeter, jaxrs-cxf-client, jaxrs-cxf, java, inflector, jaxrs-cxf-cdi, jaxrs-spec, jaxrs, msf4j, java-play-framework, jaxrs-resteasy-eap, jaxrs-resteasy, javascript, javascript-closure-angular, java-vertx, kotlin, lumen, nancyfx, nodejs-server, objc, perl, php, php-symfony, powershell, pistache-server, python, qt5cpp, rails5, restbed, ruby, scala, scalatra, silex-PHP, sinatra, slim, spring, dynamic-html, html2, html, swagger, swagger-yaml, swift4, swift3, swift, tizen, typescript-angular2, typescript-angular, typescript-fetch, typescript-jquery, typescript-node, undertow, ze-ph] swagger-codegen 2.
阅读全文 »

Ribbon和Spring Cloud Consul

时间: 2017-06-29   |   分类: Service+JavaEE   Spring     |   阅读: 377 字 ~2分钟
学习一下Client Side Load Balancing with Ribbon and Spring Cloud快速入门指南,这里的客户端负载平衡是借助Netflix Ribbon实现的。很魔性,除了application.yml里有Ribbon的配置以及代码包含@RibbonClient、@LoadBalanced注解,应用程序几乎没什么工作要做了。 @RibbonClient和@LoadBalanced的区别 Difference between @RibbonClient and @LoadBalanced讲解了@RibbonClient和@LoadBalanced的区别。 @LoadBalanced是个标记注解,指示被注解的RestTemplate应该使用RibbonLoadBalancerClient与服务进行交互。反过来,这允许在URL除了使用物理主机名+端口号组合外,还可以使用服务名的逻辑标识符。 restTemplate.getForObject("http://some-service-name/user/{id}", String.class, 1); @RibbonClient是用于配置Ribbon客户端的。它不是必须的,当使用服务发现且默认Ribbon设置就可以满足需求时,无需使用@RibbonClient注解。 在下列两种情况下需要使用@RibbonClient注解: 需要对特定Robbon客户端使用定制Ribbon设置 没有使用任何服务发现 定制Robbon设置: @Configuration @RibbonClient(name = "foo", configuration = FooConfiguration.class) public class TestConfiguration { } 注意FooConfiguration必须由@Configuration注解,但是它不能在主应用上下文@ComponentScan范围内,否则它将被所有@RibbonClient共享。如果使用@ComponentScan(或@SpringBootApplication),需要避免其被包含在内(例如放入独立不重叠的包内或显示指定@ComponentScan扫描的包)。 Spring Cloud Consul和Ribbon 在没用使用任何服务发现时,Ribbon从listOfServers配置里的服务器列表进行选择的。偶在项目中是用Consul的,它主业就是干服务发现的工作,而且还支持Netflix Ribbon。 网上有现成的Spring Cloud Consul和Ribbon示例spring-boot-consul-demo-tax和spring-boot-consul-demo-invoice。使用默认Ribbon设置,所以bootstrap.yml/application.yml里没有Ribbon设置,代码也没有使用@RibbonClient。 启动两个spring-boot-consul-demo-tax微服务实例和一个spring-boot-consul-demo-invoice微服务实例,在浏览器访问spring-boot-consul-demo-invoice微服务,就会发现spring-boot-consul-demo-invoice微服务实例以RoundRobin轮询方式调用两个spring-boot-consul-demo-tax微服务实例了。 Ribbon组件 通过BaseLoadBalancer可以看出Ribbon中的负载均衡器所包含的几个重要组件/属性,正是这几个组件为Ribbon的功能提供支持: 组件 描述 Rule 负载均衡策略,可以插件化地为Ribbon提供各种适用的负载均衡算法。 Ping 判断目标服务是否存活。对应不同的协议不同的方式去探测,得到后端服务是否存活。如有http的,还有对于微服务框架内的服务存活的NIWSDiscoveryPing是通过eureka client来获取的instanceinfo中的信息来获取。 ServerList 服务器列表,可以是静态的也可以是动态的。如果是(通过DynamicServerListLoadBalancer实现)动态的,会有后台线程以一定的间隔时间更新和过滤列表。 LoadBalancerStats 负载均衡器运行信息。记录负载均衡器的实时运行信息,这些运行信息可以被用来作为负载均衡器策略的输入。 负载均衡策略 IRule | 策略名 | 策略描述 | 实现说明 | | - | - | | BestAvailableRule | 选择一个最小并发请求的服务器 | 逐个考察服务器的LoadBalancerStats信息,如果服务器被断路器断了则忽略,在其中选择ActiveRequestsCount最小的服务器。 | | AvailabilityFilteringRule | 过滤掉那些因为一直连接失败的被断路器断了的服务器,并过滤掉那些高并发的服务器(活跃连接数超过配置的阈值) | 使用一个AvailabilityPredicate来包含过滤服务器的逻辑,其实就是检查LoadBalancerStats里记录各个服务器的断路器状态和ActiveRequestsCount状态。当尝试十次后还无法选出合适的服务器,则通关过轮训策略选出一个。 | | ZoneAvoidanceRule | 通过组合判断服务器所在zone的性能和服务器可用性来选择server | 使用ZoneAvoidancePredicate和AvailabilityPredicate来判断是否选择某个服务器,前一个判断判定一个zone的运行性能是否可用,剔除不可用的zone(的所有服务器),AvailabilityPredicate用于过滤掉连接数过多的服务器。 | | RoundRobinRule | roundRobin方式轮询选择服务器 | 维护一个AtomicInteger类型的轮询下标,尝试十次从allServers选择下标对应位置的可用服务器(服务器不可用,则下标原子加一取模)。
阅读全文 »

Spring Cloud Consul Config

时间: 2017-06-23   |   分类: Service+JavaEE   Spring     |   阅读: 268 字 ~2分钟
Spring Cloud是在Spring Boot的基础上构建的,用于简化分布式系统构建的工具集,为开发人员提供快速建立分布式系统中的一些常见的模式。例如:分布式版本可控配置(Distributed/versioned configuration),服务注册与发现(Service registration and discovery)、智能路由(intelligent routing)、服务间调用、负载均衡、断路器(circuit breakers)、微代理(micro-proxy)、控制总线(control bus)、一次性令牌(one-time tokens)、全局锁(global locks)、领导选举和集群状态(leadership election and cluster state)、分布式消息、分布式会话等。 Spring Cloud Config项目快速入门示例展示了用于分布式系统中由Git仓库支持的中央外部配置。但是偶在项目中是用Consul的,而Spring Cloud Consul项目的快速入门示例并没有展示如何使用Consul进行配置管理,所以还是自己攒一下吧。 Spring Cloud Consul简介 HashiCorp公司的Consul是用于基础架构中服务发现和配置的工具,支持服务发现、健康检查、用于不同用途的键值对存储、多数据中心支持。 Spring Cloud Consul通过自动配置及Spring环境和其他Spring编程模型进行绑定实现Cosul与Spring Boot应用的集成。通过一些简单的注释,即可激活应用内的通用模式,使用Hashicorp的Consul构建大型分布式系统。其功能如下: 服务发现: 实例可以向Consul agent注册,客户端可以使用Spring管理的bean发现这些实例 支持Ribbon: 通过Spring Cloud Netflix提供的客户端负载均衡 支持Zuul: 通过Spring Cloud Netflix提供的动态路由和过滤 分布式配置: 使用Consul键值对存储 控制总线: 使用Consul事件的分布式控制事件 安装并启动Consul 每个集群需要最少三台Consul server,以建立仲裁(quorum),每个机器上必须运行一个consul agent。 Consul Agent: 健康检查 转发查询 Consul Server: 存储数据 响应查询 领导选举 根据参考二Consul安装指南,可以很轻松地在本机安装Consul。用于开发环境启动本地单Consul实例的脚本可以使用参考一Spring Cloud Consul指南中所提到的src/main/bash/local_run_consul.sh。本文中采用如下命令: consul agent -dev -ui consul-config-demo build.gradle buildscript { repositories { mavenCentral() maven { url "http://repo.
阅读全文 »

OpenGrok使用感受

时间: 2017-06-12   |   分类: Tool     |   阅读: 23 字 ~1分钟
之前为了学习项目涉及的C/C++代码,试用过SourceInsight,后来改成Vim+Exuberant Ctags+Cscope。最近一个美国同事给了个链接,原来那边的兄弟是用OpenGrok搜项目代码的! OpenGrok是一个快速、便于使用的源码搜索引擎与对照引擎,它能够帮助我们快速地搜索、定位、对照代码树。它可以理解各种程序语言和文件格式,及Mercurial、Git、SCCS、RCS、CVS、Subversion、Teamware、ClearCase、Perforce、Monotone和Bazaar等版本控制历史记录。OpenGrok是OpenSolaris操作系统源文件浏览和搜索的工具。 OpenGrok由Java语言实现,需要Java 1.8、一个Servlet容器以及Exuberant Ctags。 用完就一个字:爽! 参考 OpenGrok主页 GitHub:OpenGrok/OpenGrok OpenGrok:Comparison with Similar Tools OpenGrok:Supported Languages and Formats OpenGrok:Supported Revision Control Systems Ubuntu环境下OpenGrok的安装及使用

ArcGIS REST API资费

时间: 2017-05-20   |   分类: DataBuilder     |   阅读: 93 字 ~1分钟
一个ArcGIS开发者订阅每月有免费的50点积分。 GeoEnrichment API资费 在Esri GeoEnrichment Service提到了资费列表: GeoEnrichment服务资费 Esri积分 美元 1 Stored GeoEnrichment Variable 0.01 积分 (Per Feature) $0.001 (Per Feature) 1,000 Stored GeoEnrichment Variables 10 积分 (Per Feature) $1.00 (Per Feature) 1 Non-Stored GeoEnrichment Request 0.01 积分 $0.001 1000 Non-Stored GeoEnrichment Requests 10 积分 $1.00 Generated Infographic View 0.01 积分 $0.001 1000 Generated Infographic Views 10 积分 $1.00 Generated Report 10 积分 $1.00 Geocoding API资费 在Esri World Geocoding Service提到了资费列表: Geocoding服务资费 Esri积分 美元 Geosearch, Individual Address - Not Stored n/a n/a Geocode, Batch or Stored 0.
阅读全文 »

玩玩ArcGIS REST API

时间: 2017-05-19   |   分类: DataBuilder     |   阅读: 140 字 ~1分钟
了解Esri和ArcGIS 美国环境系统研究所公司(Environmental Systems Research Institute, Inc. 简称Esri公司)成立于1969年,总部设在美国加利福利亚州雷德兰兹市,是世界最大的地理信息系统技术提供商。 ArcGIS是Esri公司集40余年地理信息系统(GIS)咨询和研发经验,奉献给用户的一套完整的GIS平台产品,具有强大的地图制作、空间数据管理、空间分析、空间信息整合、发布与共享的能力。 ArcGIS REST API ArcGIS REST API可用于包括ArcGIS Online在内的ArcGIS平台,包括: Maps—随时可用的底图、参考层等。可用于快速为您的本地或全球数据添加上下文或背景。一些ArcGIS Online地图有页面主题,可以提供出你的应用所需的全部信息。 World Geocoding Service—通过文本地址、商业名等查找位置,该服务也提供反向服务:通过地理坐标查找最近的地址。 Directions and Routing Service (Network Analysis Service)—解决各种路线规划问题,例如简单的点到点路由、复杂的船舶航线规划、及行驶时间分析。 GeoEnrichment Service—GeoEnrichment 服务借助本地化的人口、场所以及商业信息丰富了用户的地理数据。提交某个点、面、地址或地名后,可通过该服务了解该地区居民的生活习惯和生活方式、附近的商业类型以及区域邮政编码等信息。 Spatial Analysis Service—各种可用于执行通用GIS分析的任务。传统上,包括查找热点和对周边汇总在内的许多任务都需要深度学习和专业知识才能运行。而这些空间分析任务仅包含少量需要研究的参数,也能获得相当不错的结果。 Elevation Analysis service—高程分析服务允许您执行高程分析(轮廓,视角,总结高程)和水文分析(流域和跟踪下游)的各种操作。这些服务参考的数据由Esri托管和策划。 ArcGIS REST API有些是免费的,有些是付费。付费操作需要订阅ArcGIS Online,并减扣账户积分。 使用需付费API时,需要在请求中通过token参数指定访问令牌。获取ArcGIS REST API所需访问令牌的方法,请参见前一博文ArcGIS认证和登录。 响应数据格式 对于ArcGIS REST API,有些响应支持JSON、PJSON(个人理解就是完美打印版的JSON)、XML和BIN格式中的一种或多种。可在请求时通过f参数指定。 使用GeoEnrichment API GeoEnrichment服务能力、属性和限制可以通过下列请求获得: http://geoenrich.arcgis.com/arcgis/rest/services/World/geoenrichmentserver/GeoEnrichment/?f=pjson 由响应可知,GeoEnrichment端点支持Enrich、CreateReport、Reports、Countries、DataCollections、StandardGeographyLevels这几种操作。 Countries操作 首先试一下国家列表: http://geoenrich.arcgis.com/arcgis/rest/services/World/GeoenrichmentServer/Geoenrichment/Countries?f=pjson 当然Countries操作也可用于获取单个国家信息: StandardGeographyLevels操作 StandardGeographyLevels服务返回有效地理数据层列表。服务结果是BAIDNamePairs数组,包含数据层ID及相应名称。这些ID可被用于在其他分析中指定数据层。 下面的请求示例列举CN的有效地理数据层列表: http://geoenrich.arcgis.com/arcgis/rest/services/World/GeoenrichmentServer/Geoenrichment/StandardGeographyLevels/CN?f=pjson DataCollections操作 GeoEnrichment服务使用数据集合的概念定义服务返回的属性。更具体地说,数据集合是用于丰富输入特性的预先组合的属性列表。作为输入特性,集合属性可以描述所提交位置或区域的各种类型信息,例如人口特征和地理上下文。 http://geoenrich.arcgis.com/arcgis/rest/services/World/geoenrichmentserver/Geoenrichment/dataCollections?f=pjson Reports和CreateReport操作 创建报告操作可为描述输入区域的各种用例创建各种高质量报告。如果使用一个点作为研究区域,该服务将围绕该点创建1英里的环形缓冲区以收集和附加丰富数据。或者,您可以围绕该点创建环形缓冲区或特定驾驶时间可达区域,生成包含有关人口特征、消费者支出、业务或市场潜力等相关信息的PDF或Excel报告。 报告选项可用于描述和更好地了解市场,顾客/客户以及特定领域商业竞争。 下面的请求示例列举US数据集中有效报告列表: http://geoenrich.arcgis.com/arcgis/rest/services/World/geoenrichmentserver/Geoenrichment/Reports/US?f=pjson 下面的请求示例生成以坐标-117.1956、34.0572为中心一英里区域的人口和收入概况报告(report指定为dandi,从上一示例结果中可知为人口和收入概况报告): http://geoenrich.arcgis.com/arcgis/rest/services/World/geoenrichmentserver/GeoEnrichment/CreateReport?studyAreas=[{"geometry":{"x":-117.1956,"y":34.0572}}]&report=dandi&f=bin&format=PDF&token={YOUR_TOKEN} Enrich操作 提供地点或区域的事实数据。输入可为:
阅读全文 »
4 5 6 7 8 9 10 11 12

Programmer & Architect

662 日志
27 分类
1472 标签
RSS 订阅
GitHub Twitter FB Page
© 2009 - 2023 Mryqu's Notes
Powered by - Hugo v0.120.4
Theme by - NexT
0%