Mryqu's Notes


  • 首页

  • 搜索
close

[OpenUI5] 自定义控件属性支持的数据类型

时间: 2015-08-08   |   分类: FrontEnd     |   阅读: 252 字 ~2分钟
创建一个OpenUI5控件时免不了声明几个属性,例如: metadata: { properties: { "msg" : {type : "string", defaultValue : "kx123"}, "byProxy" : {type : "boolean", defaultValue : true} }, publicMethods: [ ], events: { complete : {enablePreventDefault : true} } } 可是属性都支持那些数据类型呢?搜了一下OpenUI5 开发指南,并没有找到什么有用的信息。还是得从代码里面寻觅,结果发现答案就在sap.ui.base.DataType里。 var mTypes = { "any" : createType("any", { defaultValue : null, isValid : function(vValue) { return true; } }), "boolean" : createType("boolean", { defaultValue : false, isValid : function(vValue) { return typeof vValue === "boolean"; } }), "int" : createType("int", { defaultValue : 0, isValid : function(vValue) { return typeof vValue === "number" && Math.
阅读全文 »

[JavaScript] 判断jQuery版本

时间: 2015-08-06   |   分类: FrontEnd     |   阅读: 7 字 ~1分钟
学习了一下如何判断jQuery版本: if (window.jQuery) { jQuery().jquery; } 测试:

在jQuery AJAX中使用statusCode

时间: 2015-08-05   |   分类: FrontEnd     |   阅读: 151 字 ~1分钟
jQuery.ajax中提供了statusCode设置,以便根据响应状态值进行相应处理。 var data = JSON.stringify({ name: "mryqu", count: 123 }); $.ajax({ //cache: false, url: "/test", type: "post", contentType: "application/json", dataType: "json", data: data, beforeSend: function (xhr) { console.log("beforeSend called"); }, statusCode: { 401: function() { console.log("statusCode 401 called"); }, 449: function() { console.log("statusCode 449 called"); } }, error: function (oResult, textStatus, errorThrown) { if (oResult.status !==401 && oResult.status !==449) { console.log("error called"); } }, success: function (oResult) { console.log("success called"); } }); 有时候发现statusCode不被调用,所以我更喜欢用下面这种更保险的方式。
阅读全文 »

Consul服务设置实践

时间: 2015-08-04   |   分类: Tool   Consul     |   阅读: 37 字 ~1分钟
在向Consul注册/注销外部服务节点中,我实践对Consul节点注册和注销,本帖我实践一些对Consul服务的查看和注销。 查看当前数据中心所有注册的服务: curl http://localhost:8500/v1/catalog/services 查看当前数据中心注册的服务foo的信息: curl http://localhost:8500/v1/catalog/service/foo 注销服务节点foo上关联的检查service:foo-192-168-0-123: curl -X PUT -H 'application/json' -d '{"Node": "kexiao", "CheckID": "service:foo-192-168-0-123"}' http://localhost:8500/v1/catalog/deregister 注销服务节点foo上关联的服务foo-192-168-0-123: curl -X PUT -H 'application/json' -d '{"Node": "kexiao", "ServiceID": "foo-192-168-0-123"}' http://localhost:8500/v1/catalog/deregister 参考 Consul - Catalog HTTP Endpoint

[Spring Boot] 创建超媒体驱动的Mail服务

时间: 2015-08-03   |   分类: Service+JavaEE   Spring     |   阅读: 1396 字 ~7分钟
Spring与Mail的集成 Spring框架为邮件发送提供了一个有用的工具库,可为用户屏蔽底层邮件系统细节,并负责代表客户端负责低层资源处理。 org.springframework.mail包是Spring框架邮件支持的根级包。发送邮件的核心接口是MailSender 接口;封装了简单邮件_from_和_to_等属性的简单对象类是 SimpleMailMessage 。该包也包含对底层邮件系统进行更高级抽象的分层检查异常,其根异常为MailException。 org.springframework.mail.javamail.JavaMailSender 接口MailSender为添加了专业的_JavaMail_ 功能,例如MIME消息支持。JavaMailSender 也为JavaMailMIME消息提供了回调接口org.springframework.mail.javamail.MimeMessagePreparator。 Spring HATEOAS HATEOAS (Hypermedia as the Engine of ApplicationState,超媒体即应用状态引擎)是REST应用架构的一个约束。Spring HATEOAS是一个用于支持实现超媒体驱动的RESTWeb服务的开发库。它提供一些API用于同Spring特别是SpringMVC一起使用时轻松创建遵循HATEOAS原则的REST表述,其试图解决的核心问题是链接创建和表述装配。功能: 用于链接、资源表述模型的模型类 用于指向Spring MVC控制器方法的链接建造者API 对HAL之类的多媒体格式的支持 示例 Application.java package com.yqu.mail; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } MailServerVO.java package com.yqu.mail; import org.springframework.hateoas.ResourceSupport; import java.io.Serializable; import java.util.Properties; public class MailServerVO extends ResourceSupport implements Serializable { private String host; private Integer port; private String userName; private String password; private String defaultEncoding; private Properties properties; public MailServerVO() {} public MailServerVO( String host, Integer port, String userName, String password, String defaultEncoding, Properties properties) { this.
阅读全文 »

Java Mail

时间: 2015-08-02   |   分类: Java     |   阅读: 109 字 ~1分钟
JavaMail API JavaMail最新版本为1.5.4。 支持的邮件协议有: SMTP:简单邮件传输协议(Simple Mail Transfer Protocol),由RFC 821 定义,定义了发送电子邮件的机制。在JavaMailAPI环境中,基于JavaMail的程序将和公司或因特网服务供应商的SMTP服务器通信。SMTP 服务器会中转消息给接收方 SMTP服务器以便最终让用户经由 POP 或 IMAP 获得。这不是要求SMTP服务器成为开放的中继,尽管SMTP服务器支持身份验证,不过还是得确保它的配置正确。JavaMailAPI不支持像配置服务器来中继消息或添加/删除邮件账号这类任务的实现。 POP:邮局协议(Post Office Protocol)。目前用的是版本 3,也称POP3,由RFC 1939定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。POP协议支持“离线”邮件处理。其具体过程是:邮件发送到服务器上,电子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮件。使用POP时,用户熟悉的许多性能并不是由POP协议支持的,如查看有几封新邮件消息这一性能。这些性能内建于如Eudora或Microsoft Outlook之类的程序中,它们能记住一些事,诸如最近一次收到的邮件,还能计算出有多少是新的。所以当使用JavaMailAPI时,如果您想要这类信息,您就必须自己算。 IMAP: 因特网消息访问协议(Internet Message Access Protocol)。目前用的是版本 4,也称IMAP4。由RFC 2060定义,是更高级的用于接收消息的协议。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。IMAP4改进了POP3的不足,用户可以通过浏览信件头来决定是否收取、删除和检索邮件的特定部分,还可以在服务器上创建或更改文件夹或邮箱。它除了支持POP3协议的脱机操作模式外,还支持联机操作和断连接操作。它为用户提供了有选择的从邮件服务器接收邮件的功能、基于服务器的信息处理功能和共享信箱功能。IMAP4的脱机模式不同于POP3,它不会自动删除在邮件服务器上已取出的邮件,其联机模式和断连接模式也是将邮件服务器作为“远程文件服务器”进行访问,更加灵活方便。IMAP4支持多个邮箱。 MIME:多用途因特网邮件扩展标准(Multipurpose Internet MailExtensions)。它不是邮件传输协议。但对传输内容的消息、附件及其它的内容定义了格式。这里有很多不同的有效文档:RFC 822、RFC 2045、RFC 2046 和 RFC 2047。作为一个 JavaMailAPI的用户,您通常不必对这些格式操心。无论如何,一定存在这些格式而且程序会用到它。 JavaMail API不在Java JDK中,javax.mail.jar包含了JavaMailAPI及Sun的参考设计,其中包括SMTP、IMAP和POP3协议提供者。 JavaMail API 类包: javax.mail: The JavaMailTM API提供为邮件系统建模的类。 javax.mail.event: 用于JavaMail API的监听器和事件。 javax.mail.internet:特定互联网邮件系统的类。 javax.mail.search:用于JavaMail API的消息搜索术语。 javax.mail.util: JavaMail API工具类。Sun参考设计的类包: com.sun.mail.dsn:支持创建和解析传递状态通知。 com.sun.mail.gimap: 支持Gmail特定IMAP协议扩展的实验性IMAP协议提供者。 com.sun.mail.imap:用于访问IMAP消息存储的IMAP协议提供者。 com.sun.mail.pop3:用于访问POP3消息存储的POP3协议提供者。 com.sun.mail.smtp:用于访问SMTP服务器的SMTP协议提供者。 com.sun.mail.util: 用于JavaMail API的工具类。 com.sun.mail.util.logging: 包含用于JavaTM平台核心日志功能的JavaMailTM扩展。 Apache Commons Email Apache Commons Email是构建在JavaMail API之上的工具库,旨在简化设计,当前版本1.
阅读全文 »

向Consul注册/注销外部服务节点

时间: 2015-08-01   |   分类: Tool   Consul     |   阅读: 70 字 ~1分钟
已有一个docker上的微服务节点foo,但是有可能需要使用系统外部的foo服务集群。 切换到系统外部的foo服务集群的操作过程如下: docker-compose stop foo docker-compose rm foo curl -X PUT -H 'application/json' -d '{"Node": "foo", "Address": "foo.cluster.yqu.com", "Service": {"Service":"foo", "tags": ["controller"], "port": 12221}}' http://localhost:8500/v1/catalog/register docker-compose restart consul 切换回系统内部过程的foo服务节点操作过程如下: curl -X PUT -H 'application/json' -d '{"Node": "foo"}' http://localhost:8500/v1/catalog/deregister docker-compose up -d foo docker-compose restart consul 注销foo服务节点操作过程如下: curl -X PUT -H 'application/json' -d '{"Node": "foo"}' http://localhost:8500/v1/catalog/deregister docker-compose stop foo docker-compose rm foo docker-compose restart consul 参考 Consul Guide:Registering An External Service

[Hive] Hive JDBC实践

时间: 2015-07-30   |   分类: BigData     |   阅读: 322 字 ~2分钟
HiveJdbcClient.java 使用参考一中的示例代码: import java.sql.SQLException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.sql.DriverManager; public class HiveJdbcClient { private static String driverName = "org.apache.hive.jdbc.HiveDriver"; public static void main(String[] args) throws SQLException { try { Class.forName(driverName); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); System.exit(1); } //"hadoop" is the name of the user the queries should run as in my cluster. Connection con = DriverManager.getConnection( "jdbc:hive2://localhost:10000/default", "hadoop", "{PASSWORD_OF_USER_HADOOP}"); Statement stmt = con.
阅读全文 »

[Hive] HCatalog和WebHCat学习

时间: 2015-07-29   |   分类: BigData     |   阅读: 41 字 ~1分钟
HCatalog 访问数据的常见方法之一是通过表抽象,该方法通常用于访问关系型数据库,并且为许多开发者所熟知(和广泛采用)。一些流行的Hadoop系统,例如Hive和Pig,也采用了这种方法。这种抽象解除了数据如何存储(HDFS文件、HBase表)与应用程序如何处理数据(表格式)之间的耦合。此外,它允许从较大的数据语料库中"过滤"感兴趣的数据。 Hadoop的元数据服务HCatalog扩展了Hive的元存储,同时保留了HiveDDL中用于表定义的组件。其结果是,Hive的表抽象(当使用了HCatalog时)可以用于Pig和MapReduce应用程序,这带来了以下一些主要优势: 它使得数据消费者不必知道其数据存储的位置和方式。 它允许数据生产者修改物理数据存储和数据模型,同时仍然支持以旧格式存储的现有数据,从而数据消费者不需要修改他们的处理流程。 它为Pig、Hive和MapReduce提供了共享的结构和数据模型。 HCatalog支持读写任何SerDe支持的文件格式。默认情况下,HCatalog支持RCFile、CSV、JSON、SequenceFile和ORC文件格式。如果使用订制格式,必须提供InputFormat、OutputFormat和SerDe。 WebHCat WebHCat是WebHCat的REST API。这样应用无需使用Hadoop API就可以通过HTTP请求访问HadoopMapReduce (或YARN)、Pig、Hive及HCatalog DDL。WebHCat所使用的代码和数据必须存放在HDFS中。HCatalogDDL命令在请求后即直接执行,MapReduce、Pig和Hive作业则放置在WebHCat(Templeton)服务器的队列中,并监控进展过程或按需停止。程序员指定Pig、Hive和MapReduce结果存放的HDFS位置。 使用 HCatalog和WebHCat都已随Hive安装,所以可以直接使用 使用HCatalog HCatalog CLI与Hive CLI功能大致一样: cd $HIVE_HOME ./hcatalog/bin/hcat 使用WebHCat 在.bashrc中添加PYTHON_CMD: export PYTHON_CMD=/usr/bin/python 启动WebHCat服务器: cd $HIVE_HOME ./hcatalog/sbin/webhcat_server.sh start 参考 HCatalog HCatalog CLI WebHCat GitHub: apache/hcatalog GitHub: apache/hive/hcatalog apache/hive/hcatalog/webhcat

[Hive] Hive CLI和Beeline学习

时间: 2015-07-28   |   分类: BigData     |   阅读: 70 字 ~1分钟
Hive CLI学习 Hive CLI使用手册很简单,但是看完了对有些参数还是不太理解,所以就翻翻Hive CLI源码对照学习吧。 -f和-i选项的区别 Hive CLI使用手册说-i指定的是初始化SQL文件,-f指定的是SQL脚本文件。 通过阅读源码可知,所谓的初始化SQL文件就是你期望每次执行HiveCLI都要在其他操作之前运行的一些SQL命令。执行完初始化SQL,可以接着执行-e选项中的SQL命令、-f选项中的SQL脚本文件或交互输入的命令;而-f选项和-e选项二者只能存在其一,执行完-f选项后退出CLI。 hiverc文件 当没有指定-i参数时,CLI会尝试加载$HIVE_HOME/bin/.hiverc、$HIVE_CONF_DIR/.hiverc和$HOME/.hiverc作为初始化文件。只要存在,这些.hiverc都会被加载执行。 通过CliDriver类的processInitFiles方法可知,执行初始化SQL时始终采用静默模式,即不显示执行进度信息,只显示最后结果;执行-f选项中SQL脚本时是否采用静默模式由-S选项控制。 Hive CLI如何处理shell命令、Hive命令和SQL的? HiveCLI既可以处理一个SQL脚本文件、也可以处理多个SQL命令。它通过处理多行命令,以";“为分隔符,获取单个命令列表。一个单个命令,即可能是–开头的注释行,也可能是!开头的shell命令,此外SQL命令和Hive自身支持的命令。 对于shell命令,Hive CLI是通过ShellCmdExecutor执行的; 对于SQL命令,Hive CLI是通过org.apache.hadoop.hive.ql.Driver执行的; 对于Hive命令,HiveCLI通过SetProcessor、ResetProcessor、DfsProcessor、AddResourceProcessor、ListResourceProcessor、DeleteResourceProcessor、CompileProcessor、ReloadProcessor、CryptoProcessor这些处理进行执行。 –hiveconf、–define (-d)、–hivevar之间的关系 首先我们看一下OptionsProcessor类,它通过Apache Commons CLI解析Hive CLI命令参数: 其process_stage1方法将–hiveconf参数置入系统属性中,将–define和–hivevar参数置入CliSessionState对象的hiveVariables字段 其process_stage2方法将–hiveconf参数置入CliSessionState对象的cmdProperties字段 接下来看一下CliSessionState对象的hiveVariables字段和cmdProperties字段使用情况: CliDriver.run方法将CliSessionState对象的cmdProperties字段中的键值对覆盖HiveConf对象,然后置入CliSessionState对象的overriddenConfigurations字段 CliSessionState对象的hiveVariables字段主要用于变量替换,包括替换提示符(CliDriver.run)、替换source命令所跟文件路径及shell命令(CliDriver.processCmd)、替换SQL(Driver.compile)、替换Hive命令(DfsProcessor.run、……) 总之: –hiveconf参数在命令行中设置Hive的运行时配置参数,优先级高于hive-site.xml,但低于Hive交互Shell中使用Set命令设置。 –define (-d)和–hivevar没有区别,都是用于变量替换的。 hivehistory文件 Hive CLI会创建$HOME/.hivehistory文件,并在其中记录命令历史记录。 -v参数打印出的SQL语句是变量替换后的吗? 不是,打印的是原始SQL语句。 看了Hive CLI源码后的疑惑 CliDriver类主函数实例化一个CliDriver对象,而在executeDriver方法中不用自身实例,偏偏又实例化一个CliDriver对象cli来,为啥? –hiveconf参数会被放入CliSessionState对象的cmdProperties字段和overriddenConfigurations字段,难道不能合并成一份么? Hive Beeline学习 BeeLine类的dispatch负责将特定命令行分发给适合的CommandHandler。 其中以!起始的SQLLine命令由execCommandWithPrefix方法处理,具体实现见Commands类的同名方法。 其他命令则由Commands类的sql方法处理 参考 Hive LanguageManual CLI Hive LanguageManual VariableSubstitution Hive CLI source code Beeline – Command Line Shell Hive Beeline CLI source code
21 22 23 24 25 26 27 28 29

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%