- 博客(540)
- 收藏
- 关注
原创 获取本地IP工具类
方式一:InetAddress工具类public static String getLocalIP() { try { return InetAddress.getLocalHost().getHostAddress(); } catch (UnknownHostException e) { throw new RuntimeException(e...
2018-12-26 22:54:40 278
原创 Flink ---窗口机制
背景 在流计算中,数据流是无限的,无法直接进行计算,因此Flink提出了window的概念(若干元素的集合)作为流计算的基本单元进行数据处理。窗口机制 窗口机制实质上是Flink的算子operator对数据流的处理过程:数据流如何被拆分成window,何时触发计算逻辑等,如下图所示。 处理过程: 当数据流中的元素到达算子operator后,首先由WindowAssigner决定将该元...
2018-12-22 10:12:38 841
原创 Flink---WaterMark机制
背景 使用Event time时间模型时,由于网络或传输等原因,事件被Flink处理的顺序不一定是事件产生的顺序(乱序),可能会存在两方面影响:当前窗口不知道何时停止,开始计算结果;影响窗口计算结果的准确性,见示例;WaterMark机制 WaterMark本质上是一个带有时间戳的特殊event,当Flink中的运算符接收到水印时,它明白(假设)它不会看到比该时间戳更早的消息。 ...
2018-12-20 09:53:39 969
原创 Flink---时间模型
时间模型 Flink提供了3种时间模型如下图所示,常用的为Processing time和Event time;Event time含义: 事件产生的时间, 反映了事件产生的先后顺序 ;注意:Event time是指产生事件的外部设备的时间,并非Flink机器上的时间;Event time需要从事件数据的特定字段获取;由于传输或网络的原因,Flink处理事件的顺序不一定与事件产...
2018-12-19 20:43:19 494
原创 Flink---基本概念
流分类Unbounded streams:有起点没终点的数据流,对应的处理操作称为流计算;Bounded streams:有始有终的数据流,对应的处理操作称为批处理;TimeEvent Time:事件产生的时间;Ingestion time:事件进入Flink的时间;Processing Time:Flink开始处理事件的时间;Windows窗口大小 窗...
2018-12-18 13:58:32 292
原创 Flink---基本介绍
Flink介绍 Flink是Apache开源的一款流式计算框架,具有高吞吐、低延时、容错性好(能保障Exactly Once语义),以及能同时支持流处理和批处理的特点;Flink not only provides real-time streaming with high throughput and exactly-once guarantees, but it’s also an e...
2018-12-17 23:15:04 207
原创 MAC使用教程
常用快捷键复制:command + C粘贴:command + V剪切:command + X撤销:command + Z全选:command + A保存:command + S删除:command + Delete切换应用:command + Tab关闭当前窗口:command + W(相当于点击左上角红色❌)参考:http://www.ctoutiao.com...
2018-12-17 13:59:26 703
原创 常用框架面试大纲
Hystrix 简介: Hystrix防雪崩利器,能够在依赖的第三方服务出现故障时,进行自我保护,避免级联故障。 原理: Hystrix核心思想是全链路形成闭环,出口处通过线程\信号量隔离策略进行自我保护,入口处基于熔断器实现Fail-Fast机制,如下图所示: ...
2018-12-17 13:59:12 263
原创 SpringMVC@NotEmpty等注解不生效
现象 表单数据对应的Java Bean属性上添加的诸多校验注解不生效,如下示例:@NotEmpty(message = "规则不能为空", groups = {AppConfigGroup.Add.class,AppConfigGroup.Update.class})@Size(max = 200,groups= {AppConfigGroup.Add.class,AppConfigGro...
2018-12-09 12:51:01 20363
原创 HIVE HA方案
HA方案 HiveServer2集群依赖ZK实现了高可用,客户端先连接到ZK获取HiveServer2的地址,然后再与该地址建立连接,流程如下:优点:高可用(解决单点问题);负载均衡(ZK集群随机选择HiveServer2);缺点:无法自动故障恢复(当某台HS2宕机时,与其相连的client的session会丢失,需要依赖client的自动断连重试机制);参考:http...
2018-12-03 11:27:25 1052
原创 destroy方法与钩子函数
结论 JVM关闭时,会触发钩子函数,Spring会在注册的钩子函数中回调bean的destroy方法销毁bean;注册过程 注册时机:Spring容器启动时,run() --> refreshContext(),如下图所示注册逻辑如下,AbstractApplicationContext.registerShutdownHook()public void registerShu...
2018-11-29 23:38:47 2387
原创 @Autowired注解使用及原理
使用说明数组或集合的注入 Spring容器中所有了类型匹配的bean都被注入进来,并且如果bean有@Order注解或者实现Order接口,按照Order的先后顺序注入;Map的注入key的类型必须为String,注入后值为bean的名称;value类型即为想要注入的bean类,所有类型匹配的bean会被注入进来;In case of a {@link java.util.Co...
2018-11-28 22:49:02 113855 5
原创 索引长度
长度限制 默认情况下,InnoDB 引擎单一字段索引的长度最大为 767 字节,启用服务器选项 innodb_large_prefix 后可以达到 3072 字节;对于 UTF-8 字符集,每个字符使用 3 字节来存储,VARCHAR 或者 TEXT 类型的字段的索引不能超过767/3= 255 个字符;对于 GBK 字符集,每个字符使用2字节来存储,VARCHAR 或者 TEXT 类型的字段的...
2018-11-27 22:40:20 794
原创 返回空List的方式
方式一:new ArrayList() JDK1.8已经优化了,默认构造函数创建的list内部共享空数组,首次插入数据时才会扩容到默认容量;private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};public ArrayList() { this.elementData = DEFAULTCAP...
2018-11-27 21:12:56 19465
原创 INSERT/UPDATE IGNORE
作用 insert/update数据时,忽略抛出的错误。比如,批量插入时,有部分数据主键重复或者类型不对等等,无效的数据被忽略,有效的数据被插入;语法INSERT IGNORE INTO table(column_list)VALUES( value_list), ( value_list), ...示例建表,email字段为为唯一索引CREATE T...
2018-11-27 19:28:53 5437 1
原创 INSERT ON DUPLICATE KEY UPDATE
作用 主键或唯一索引重复时,执行UPDATE操作;语法INSERT INTO table (column_list)VALUES (value_list)ON DUPLICATE KEY UPDATE c1 = v1, c2 = v2, ...;返回值说明If the new row is inserted, the number of affected-ro...
2018-11-27 19:05:58 390 1
原创 HIVE --- Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
现象 Hive启动命令可以正常执行,执行其它命令时报错,如下:原因 Hive元数据库没有初始化, 通过工具schematool初始化,如下: schematool -dbType mysql -initSchema元数据初始化成功后,数据库中会新增metastore_db数据库,如下:参考:https://blog.csdn.net/hhj724/article/deta...
2018-11-27 09:49:37 1008
原创 Hadoop启动及问题
启动方式//格式化namenodehdfs namenode -format//进入启动脚本目录cd $HADOOP_HOME/sbin//启动HDFS./start-dfs.sh//启动YARN./start-yarn.sh启动顺序 namenode --> datanode --> secondarynamenode --> resourcemanag...
2018-11-25 22:23:15 231
原创 Unable to load native-hadoop library for your platform
背景 Mac上安装Hadoop时,运行命令抛出错误:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable错误的意思是无法在当前平台上加载Hadoop相关的本地库。排查过程Step1:...
2018-11-23 10:01:11 632
原创 Excel打开csv文件乱码问题
现象 UTF-8编码的文件,记事本、Sublime等打开正常,excel打开乱码,如下如所示:原因 csv文件没有UTF8 BOM头部,excel需要BOM头来识别文件的编码方式,如果没有声明,则会出现乱码的问题;解决方案 在文件的最前面添加UTF8 BOM头,如下:byte [] bs = { (byte)0xEF, (byte)0xBB, (byte)0xBF}; //UTF-...
2018-11-20 22:13:19 331
原创 HIVE --- 视图
什么是视图? 视图是一张“虚表”(只存在表的定义,不存储数据,表中逻辑上的数据来源于对其其它表的查询),如下图所示:视图的作用不同类型的用户存在不同的视图,方便精确的权限控制;查询语句变得精简;视图DDL创建视图 从创建语句可以看出,视图创建时就已经绑定了查询语句(即指明数据源和获取方式);CREATE VIEW [IF NOT EXISTS] [db_name.]vie...
2018-11-14 23:04:21 636
原创 输入流的合并---SequenceInputStream
整体思路:将多个输入流InputStream在逻辑上拼接成一个大的输入流,依次读取每个流,如下图所示;关键代码分析初始化时,设置要合并的输入流集合e和当前要读取的输入流in;读取数据时,如果当前流结束,则读取下个输入流;public SequenceInputStream(Enumeration<? extends InputStream> e) { ...
2018-11-13 13:31:08 1664
原创 HIVE---DML操作
数据加载方式一:从文件加载数据LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]指定LOCAL:指HiveServer2实例上的本地路径;执行数据拷贝copy动作;不指定LOCAL:最终使用完整的U...
2018-11-09 10:37:47 224
原创 HIVE --- Client介绍
HiveServer2支持多种类型的客户端,有Beeline、JDBC 、Python和Rubyd等客户端,下面介绍目前工作中用到的两种:Beeline和JDBC客户端;Beeline Beeline是HiveServer2的命令行终端。下面介绍几个常用的命令:登录: beeline -u jdbc:hive2://&lt;host&gt;:&lt;port&gt;/&lt;db&g...
2018-11-08 23:01:19 2561
原创 HIVE --- 分区表
创建分区表 创建表时,添加partitioned by字段,如下:create table table_name ( id int, dtDontQuery string, name string)partitioned by (date string)注意:用于分区的字段不能在表字段中重复定义;查询分...
2018-11-06 23:17:53 286 1
原创 HIVE---UDF
UDF介绍 UDF,即用户自定义函数,本质就是插件。整体思路是:继承基类UDF,实现evaluate接口,指定类名即可。HIVE中UDF分为两类:临时函数和永久函数,函数类型的不同,具体操作过程略有差异。临时函数 函数的生命周期与客户端的会话强绑定,会话关闭时函数被注销;持久函数 函数的元信息被持久化到元数据,与客户端会话的生命相互独立;UDF添加过程Step1:编写Java实...
2018-11-06 22:21:33 522
原创 HIVE---数据库DDL
创建数据库CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_name=property_value, ...)];LOCATION:指定数据库在HDFS上的存储路径;...
2018-11-04 22:25:45 199
原创 Fastjson默认构造函数使用注意
注意点1: 低版本中,如果JavaBean中没有默认构造函数(显式或默认),运行时将直接抛出 “default constructor not found” 的异常信息,如下:测试时使用版本信息: &lt;dependency&gt; &lt;groupId&gt;com.alibaba&lt;/groupId&gt; &lt;artifactId&g
2018-11-04 10:25:47 5156
原创 HttpClient之Multipart上传文件
MultipartEntityBuilder Multipart的具体含义可参考博文,或者RFC2046,HttpClient提供的MultipartEntityBuilder类是对此规范的具体实现。如下图所示,最重要的属性有三个:contentType:即HTTP请求头CONTENT_TYPE的值,默认为multipart/form-data;boundary:分隔符边界,默认会自动...
2018-11-03 23:33:14 7373 1
原创 HTTP请求大小
URL大小HTTP协议规范 HTTP协议并没有限制URI的长度,如下:The HTTP protocol does not place any a priori limit on the length of a URI. Servers MUST be able to handle the URI of any resource they serve, and SHOULD be abl...
2018-11-03 11:43:58 4516
原创 Form表单编码格式
Form表单是HTML的标签,包含了很多组件,比如input、单选框和复选框等等;背景介绍 HTTP协议规定了POST提交的数据都必须在消息体Entity中,但是并没有明确规定Entity的编码格式,而是提供了一种灵活的方式:在请求头Content-Type中指定Entity的编码格式,接收方根据Content-Type解析消息体的内容;编码格式 Form表单提供了三种编码方式,用于对...
2018-11-02 23:20:38 6252
原创 HIVE---内外表
内外表的判断执行以下命令查看tableType的值,DESCRIBE EXTENDED table_name;示例:内外表的相互转化修改表的EXTERNAL属性,如下:alter table table_name set TBLPROPERTIES ('EXTERNAL'='TRUE'); //内部表转外部表 alter table table_name set TBLPROP...
2018-11-02 15:14:46 366
原创 HIVE---TBLPROPERTIES
介绍 TBLPROPERTIES是表的一些属性,HIVE内置了一部分属性,使用者也可以在创建表时进行自定义;HIVE内置的TBLPROPERTIESEXTERNAL:通过修改此属性可以实现内部表和外部表的转化,如下:alter table table_name set TBLPROPERTIES ('EXTERNAL'='TRUE'); //内部表转外部表 alter tabl...
2018-11-02 10:05:52 37152 1
原创 HIVE——Alter Table/Partition Location注意事项
语法:ALTER TABLE table_name [PARTITION partition_spec] SET LOCATION "new location";注意事项如果location不存在,Alter Table/Partition Location语句会自动创建该目录;location必须是带有scheme信息的完整URI,比如:hdfs://bigdata-nmg-premas...
2018-10-27 09:39:50 6229
原创 HDFS——数据移动API Rename说明
原子性Rename接口的原子性依赖于底层文件系统的实现,如下图所示:分布式文件系统DistributedFileSystem,保证了rename接口的原子性,即一次数据移动操作是原子性的;正则的支持从测试结果来看,rename的实现并没有支持正则。测试过程如下:移动前数据源目录和目的目录详情如下:执行测试代码,如下所示:查看执行结果,源目录和目的目录的数据保持不变,结果如...
2018-10-26 23:12:17 3930
原创 insert返回主键值
方式一:LAST_INSERT_ID()keyProperty:将查询到的主键值设置到parameterType指定对象的哪个属性。order: 标签内的sql语句相对于insert语句的执行顺序,AFTER表示select LAST_INSERT_ID() 这个语句将在insert语句之后执行。<insert id="insertUser" parameterType="com....
2018-10-12 16:01:40 715
原创 Maven Filtering和Profile
FilteringFiltering是resource插件的功能,作用是将资源文件中的占位符替换成对应的值,如下图所示:使用注意启用resource插件的filtering功能;设定资源文件的路径、过滤条件和编码等等;设定属性文件来源(POM定义属性和环境变量直接使用,外部属性文件通过标签指定);说明:maven-resources-plugin插件的copy-resource...
2018-10-12 15:30:29 879
原创 Mybatis批量操作
foreach作用: 对集合、数组及Map进行遍历;属性:使用示例:List<MigrateTaskDO> selectScheduleUuidByTaskCodes(@Param("taskCodes")Set<String> taskCodes);<select id="selectScheduleUuidByTaskCodes" resultMa...
2018-10-11 17:18:53 412
原创 Mybatis多参数传入
方式一:索引&amp;lt;select id=&quot;***&quot; resultType=&quot;***&quot;&amp;gt; select * from t1 where id = #{0} and name = #{1} &amp;lt;/select&amp;gt; 注意:索引从0开始,按照从左到右的顺序引用对应的参数;由于是多
2018-10-11 16:13:01 222
原创 SpringMVC注解
Controller参数@PathVariable:从URI的占位符中获取变量值;@GetMapping("/owners/{ownerId}/pets/{petId}")public Pet findPet(@PathVariable Long ownerId, @PathVariable Long petId) { // ...}@RequestParam:从Get的...
2018-10-02 21:18:58 137
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人