分隔符

【转】Netty之解决TCP粘包拆包(自定义协议)

匿名 (未验证) 提交于 2019-12-03 00:27:02
1、什么是粘包/拆包 2、解决办法 消息定长 ,报文大小固定长度,不够空格补全,发送和接收方遵循相同的约定,这样即使粘包了通过接收方编程实现获取定长报文也能区分。 包尾添加特殊分隔符 ,例如每条报文结束都添加回车换行符(例如FTP协议)或者指定特殊字符作为报文分隔符,接收方通过特殊分隔符切分报文区分。 将消息分为消息头和消息体 ,消息头中包含表示信息的总长度(或者消息体长度)的字段 3、自定义协议,来实现TCP的粘包/拆包问题 4、协议相关的实现 [java] view plain copy print ? [java] view plain copy print ? [java] view plain copy print ? 5、服务端的实现 [java] view plain copy print ? 6、服务端Handler的实现 [java] view plain copy print ? 7、客户端的实现 [java] view plain copy print ? class) true) 8、客户端Handler的实现 [java] view plain copy print ? 9、参考的博客地址 [java] view plain copy print ? http: // www.cnblogs.com/whthomas/p/netty-custom

Hadoop学习之常用输入输出格式总结

匿名 (未验证) 提交于 2019-12-03 00:14:01
目的 总结一下常用的输入输出格式。 输入格式 Hadoop可以处理很多不同种类的输入格式,从一般的文本文件到数据库。 开局一张UML类图,涵盖常用InputFormat类的继承关系与各自的重要方法(已省略部分重载)。 DBInputFormat DBInputFormat,用来处理数据库输入的一种输入格式。KEY为LongWritable格式,表示包含的记录数;VALUE为DBWritable格式,需要根据自己的表结构继承、实现DBWritable。 使用需通过其setInput方法指定输入类、表名、字段集合、查询条件集合和排序条件,或者使用setInput的另一个重载方法直接指定输入类、SQL查询语句、统计数据条数的SQL查询语句。 其createDBRecordReader方法会根据Configuration中的数据库类型,返回对应的RecordReader,如OracleDBRecordReader、MySQLDBRecordReader。 其分片逻辑为,若已指定mapper数量,则按指定的mapper数等分查询出的数据量(最后一片统收余出的部分),若未指定mapper数,则默认一个分片。 由其派生出的DataDrivenDBInputFormat,顾名思义是一种数据驱动的数据库输入格式,与DBInputFormat的区别在于

正则表达式(sed、awk)

匿名 (未验证) 提交于 2019-12-03 00:11:01
二、sed 使用sed主要是使用它的查找和提换功能 命令格式 sed -n '//' p filename 单引号内 创建目录,把passwd文件拷贝进来 只显示我们需要查找的行 -n 指定一个区间打印 实现多个,-e 查找一个文件,不区分大小写都列出来 -I 删除某些行,把剩下的行列出来 d sed删除选择的行 -i 全局指定替换1,10行 s s代表替换,加上g代表全局,不加g只会替换本行出现的第一个 调整字符串位置 -r 第一段和最后一段调整位置 给文档前面统一添加一个字符,比如aaa 三、awk -F选项的作用是指定分隔符,如果不加分隔符,以空格或者tab为分隔符 print为打印动作,$1为第一段 $2为第二段 $3第三段 $0表示所有 打印所有内容 匹配字符或者字符串 打印第一行包含oo的行 多次打印或者多次匹配 条件操作符 、 >=、 < 如果和数字进行比较时,把数字用双括号括起来,那么就不会被认为是数字 而会认为是字符,如果不加双括号则认为是数字 精确匹配 列出第三段大于500的行并打印 !=表示不等于,第七段不等于/sbin/nologin有哪些 可以使用&&和||,分别表示并且和或者 awk内置变量 OFS和-F选项类似,也是定义分割符号,但是它是在输出的时候定义 NR表示行号 NF表示用分隔符分割后一共有多少段 OFS用法: NF用法:表示多少段,把段号列出来

Hive表与内部数据的映射关系

匿名 (未验证) 提交于 2019-12-03 00:08:02
Hive表与内部数据的映射关系 1. 在练习Hive之前,先创建一个文件夹来存放Hive的练习数据。 命令: cd /export/data/ ,然后创建对应文件夹: mkdir hivedata 2. 进入hivedata文件夹,创建一个名为1.txt 的文件,将如下数据复制进去。 1 , allen , 18 2 , jack , 28 3 , rose , 20 4 , lucy , 10 3. 然后将文件上传值HDFS 现在HDFS上创建一个文件夹来保存数据,命令: hadoop fs -mkdir /hivedata 然后将1.txt上传至刚刚创建的文件夹,命令: hadoop fs -put 1.txt /hivedata 4. 使用node-3远程连接上Hive 这里不多说。 5. 查看当前数据库 命令: show databases; 6. 创建一个练习用的数据库:pttest 命令: create database pttest; 7. 选择我们刚刚创建的数据库,创建一张test1表 命令: use pttest; ,创建表: create table test1(id int,name string,age int); 8. 此时去查询这个表会发现没有任何数据,因为文件还没有映射过来。 Hive在HDFS上有特定的映射的地方: /user/hive

SAS学习笔记(一):数据导入

匿名 (未验证) 提交于 2019-12-03 00:05:01
参考书籍:《The Little SAS book》 1 导入内部数据 DATA后接数据集名称;INPUT后为变量名称,变量与变量间用空格隔开,如果变量是字符型,名称后要用空格和$,所以图中President和Party为字符型数据,Number为数值型数据;DATALINES表示下面直到用分号结尾的是数据,命令CARD与DATALINES有一样的作用;RUN表示数据步结束。 2 导入外部数据 用 INFILE ‘数据文件地址’ 导入数据。对于内容如下的数据文件President.dat: 将其导入SAS的代码: INFILE函数的选项: 当需导入的数据过长时(长度超过256),在INFILE语句后用LRECL指定长度。 INFILE 'c:\Myrawdata\data.dat' LRECL=2000; 当数据分隔符不为空格时(空格为默认的分隔符),在INFILE语句后用DLM修改分隔符。如分隔符为逗号: INFILE 'c:\Myrawdata\data.dat' DLM=','; 当数据的缺失值用两个分隔符表示时(默认是用’.‘表示),在INFILE语句后用DSD修改。如分隔符为逗号,缺失值用两个逗号表示时: INFILE 'c:\Myrawdata\data.dat' DLM=',' DSD; 当需要指定从文件某一行开始读取数据时

bulk load关于分隔符的问题

匿名 (未验证) 提交于 2019-12-03 00:03:02
在查看bulk load的源码了解到,其默认的分隔符为\t,也就是说如果数据是tab键分割的,就不需要指定分隔符了,如果需要换成其它分割符,在执行时加上-Dimporttsv.separator=",",则变成了以","分割。 前两天,无意间使用bulk load导入数据,导入的数据是以“\t”分割的,我在命令中指定了-Dimporttsv.separator="\t",怪事就出现了,报出异常: java.lang.IllegalArgumentException: TsvParser only supports single-byte separators at com.google.common.base.Preconditions.checkArgument(Preconditions.java:88) at org.apache.hadoop.hbase.mapreduce.ImportTsv$TsvParser.<init>(ImportTsv.java:88) at org.apache.hadoop.hbase.mapreduce.ImportTsv$TsvImporter.setup(ImportTsv.java:218) at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:142) at org.apache

IO流File

匿名 (未验证) 提交于 2019-12-03 00:02:01
与系统有关的名称分隔符: Windows系统下用反斜杠"\",也可用斜杠"/",因为大部分windows处理文件的系统调用都会将斜杠解释成文件分隔符号。但是,并不推荐使用,因为windows系统函数的行为会与时俱进的发生变化。因此,对于可移植的程序来说,应该使用平台所使用的文件分隔符,我们可以通过常量字符串java.io.File.separator获得他。 Linux系统分隔符用斜杠"/", 获取不同系统下的路径分隔符号用File.separator或者System.getProperty("file.separator") 在java中路径一般用"/" windows中的路径一般用"\" linux、unix中的路径一般用"/" 最好用“/” 因为java是跨平台的。“\”(在java代码里应该是\\)是windows环境下的路径分隔符,Linux和Unix下都是用“/”。而在windows下也能识别“/”。所以最好用“/” 常见的三种构造方法: File file=new File("d:\\eclipse"); System.out.println(file); } File parent = new File("d:"); File file=new File(parent,"eclipse"); System.out.println(file); }

AWK

匿名 (未验证) 提交于 2019-12-02 23:55:01
AWK 内置变量表 1、常用操作 [chengmo@localhost ~]$ awk '/^root/{print $0}' /etc/passwd root:x:0:0:root:/root:/bin/bash /^root/ 为选择表达式,$0代表是逐行 2、设置字段分隔符号(FS使用方法) [chengmo@localhost ~]$ awk 'BEGIN{FS=":"}/^root/{print $1,$NF}' /etc/passwd root /bin/bash FS为字段分隔符,可以自己设置,默认是空格,因为passwd里面是”:”分隔,所以需要修改默认分隔符。NF是字段总数,$0代表当前行记录,$1-$n是当前行,各个字段对应值。 3、记录条数(NR,FNR使用方法) [chengmo@localhost ~]$ awk 'BEGIN{FS=":"}{print NR,$1,$NF}' /etc/passwd 1 root /bin/bash 2 bin /sbin/nologin 3 daemon /sbin/nologin 4 adm /sbin/nologin 5 lp /sbin/nologin 6 sync /bin/sync 7 shutdown /sbin/shutdown …… NR得到当前记录所在行 4、设置输出字段分隔符(OFS使用方法)

生物信息之独孤九剑――awk

匿名 (未验证) 提交于 2019-12-02 23:52:01
编者按: 在金庸武学体系的众多武功之中,独孤九剑并不是最强劲的武功,它与其他武林绝学有很大的不同,可以说是鹤立鸡群。比如乔峰的降龙十八掌,段誉的六脉神剑,张无忌的九阳神功,石破天的罗汉伏魔神功,这些神功都需要强大的内力支撑,而独孤九剑则不同,不需要内力,这点其实可以从华山派气宗与剑宗的分歧就可以看出来。独孤九剑传人风清扬属于剑宗,更注重招式,而不是像剑宗注重练气。独孤九剑分为总诀式,破剑式,破刀式,破枪式,破鞭式,破索式,破箭式,破掌式,破气式,遇到不同的场景使用关不同的招式,因此,独孤九剑更加注重问题的解决,本质上就是就是通过工具来解决问题。只要学会这九剑,就可以处理很多的问题。学习生物信息也是同样的道理,当然练好内功,掌握很好的基础是非常必要的,但是也可以学习一些小工具,解决一些实际问题。那么从这次内容开始,我们就来给大家介绍生物信息之独孤九剑。 awk是Linux系统中最强大的文本处理工具,很多需要编程才能完成的工作,其实通过awk工具就可以轻松解决。awk可以完成cut,grep,sed,join,uniq,wc等工具的一些功能,是非常强大的工具。相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切分,切开的部分再进行各种分析处理。 为什么awk功能这么强大呢