- 博客(25)
- 收藏
- 关注
原创 异步调用的理解
1.分清异步/同步,阻塞/非阻塞。首先讲下个人对异步和同步,阻塞和非阻塞的概念的理解。关于这个概念看了许多解释,都是似是而非,并不能完全get到点。个人认为从进程间通信的角度理解比较好,在《操作系统》中关于的部分是这样解释的:进程间的通信时通过 send() 和 receive() 两种基本操作完成的。具体如何实现这两种基础操作,存在着不同的设计。 消息的传递有可能是阻塞的或非阻塞的...
2018-10-16 22:06:05
10047
原创 hadoop streaming内存超限解决方案
场景:我运行的一个streaming的mapper-reducer任务需要读入一个2g大小的词表作为辅助分析数据,然后不出意外的,内存超限。解决方案: 1.提高内存上限: 增加配置,将上限调高到8000M,这样就解决了,如下: -D stream.memory.limit=80002.将读入词表的操作转到reducer阶段完成: 这样需要点思路转换,我需要对比的key是地理位置,词表的key
2017-12-24 13:55:28
5876
2
原创 在C++类中使用pthread实现多线程
现在pthread的api已经相当完善,使用其实现多线程难度不大,但是值得注意的一点是当想在类中使用pthread,调用pthread_create函数时,传入的运行函数,也就是下面这个原型的第三个参数void * ( * start_routine) (void *),如果是类的成员函数,必须是静态函数,否则将编译不通过,编译器会出一个这种错误。因为类的this指针在多线程下操作的问题,非静态的成
2017-07-28 21:11:06
9225
1
原创 c++分割字符串,strtok与strtok_r的使用记录
strtok的使用写在最开头,strtok是线程不安全的,在使用时一定要考虑到这点。strtok函数使用一个静态变量存储中间值,不要在多线程编程下使用这个函数,不然一定出错。这个函数头文件是 string.h,定义为:char * strtok(char *s, const char *delim)char* s为源字符串,即要被切分的字符串,char * delim为分隔符集合,意味着可以放入多个
2017-07-26 22:01:34
2401
原创 基于UDP的用于视频应用的几个协议
TCP由于其协议为保证可靠性,如三次握手,导致其比较慢,不能支持交互视频,会议等实时服务。UDP虽然是一个不可靠协议,不支持丢包重传,但是UDP可以根据端口号对应用程序进行多路复用,并能利用校验和检查数据完整性,对实时服务很有利的。故在许多实时服务上使并不是用TCP,而是使用如RUDP,RTP,UDT。 RUDP(Reliable User Datagram Protocol)是一种基
2016-11-09 21:41:06
6198
翻译 Hadoop Hive UDF 教程
关于编写HIVE的UDF,有两个不同的接口可以实现。一个非常简单,另一个则并不容易。只要你的函数能够读取原始类型数据并返回原始类型数据就能使用简单的API(org.apache.hadoop.hive.ql.exec.UDF),这个原始类型数据是指Hadoop和Hive的可写类型-Text, IntWritable, LongWritable, DoubleWritable等。无论如何
2016-08-10 15:47:45
5184
翻译 Hadoop Hive UDTF教程
本文是一个系列,第一篇打不开了,所以先翻第二篇。 在第一篇讨论了原始类型和嵌入式数据结构,但UDF限制于只有单条输出。 在本篇文章中,我们将关注UDTF,这个函数类型更加复杂,但是支持单个输入输出多行和多列的信息!(继承自org.apache.hadoop.hive.ql.udf.generic.GenericUDTF)code本篇文章中所有的代码和数据放在这里: https://github
2016-08-08 14:43:24
1689
原创 Hive的分组排序方法-row_number
这个方法总而言之就是帮助用户减少工作量比如,如下结构:CREATE TABLE user_order(user_id int COMMENT '用户ID'pro_id int COMMENT '产品ID',value STRING COMMENT '价格' )查出每个用户买的价值最高的两个用品,如果不用row_number费点时间也是可以写出来的,但是用row_number就比较快捷:
2016-07-14 11:34:34
9632
1
原创 Hive中生成随机唯一标识ID的方法
HIVE中处理的数据往往比较多,在处理数据的时候希望给处理得到的数据一个ID标识,这时候可以用到UUID。UUID的算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成UUID。从理论上讲,如果一台机器每秒产生10000000个UUID,则可以保证(概率意义上)3240年不重复。UUID 的目的,是让分布式系统中的所有元素,都能有唯一的标识,而不需要透过中央控制端来做标识。如此一来,每个人都可
2016-07-13 14:35:30
31358
5
原创 HIVE的一个情景实现
在学习Hive中的一个关于Hive的应用场景场景:公司有两张业务表:1. 用户基本信息表; 2. 用户手机信息表 用户基本信息表有以下字段:user_id,gender,birthdate, create_time, address。每个用户一条记录 用户手机信息表字段:user_id, mobile, carrier, belong_to。每个用户可能有多条记录。部分手机号是错的,比如只有10
2016-07-11 19:01:49
446
原创 Hive加载数据时遇到NULL数据错误的解决方法
仅是个人遇到的问题,以下是具体情境。 创建表单:create table if not exists user_info(user_id int,gender int,birthdate string,create_time string,address string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' stored
2016-07-11 18:57:11
4566
转载 JAVA多线程的一些注意点
(整理自网上的各种博客,仅供个人学习)1.多线程的作用: (1)发挥cpu的优势,多核cpu (2)防止阻塞,在单核cpu上使用多线程会造成资源的浪费,但是仍然需要使用,以备单个线程阻塞后不影响其他任务的执行 方便建模,将大的任务分解为多个小的任务。2.创建线程的方式: 一般就是两种: (1)继承Thread类 (2)实现Runnable接口 至于哪个好,不用说肯定是后者好,因
2016-07-11 18:49:27
749
原创 解决win10下安装mysql到最后一步无法安装的问题
重装是为了修改编码为utf-8,但是问题来了,每次安装都卡在了最后一步,然后就开始了各种百度谷歌。 问题应该很明确,就是由于卸载时有残余文件导致mysql安装失败。 首先,卸载mysql,然后删除安装目录。 接着,打开regidet,删除以下注册表:HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/Eventlog/Applications/My
2016-06-11 19:39:03
19977
原创 JAVA 中文字符转为拼音字符串
项目上偶尔要用到关于中文字符串转换为拼音字符串的功能,pinyin4j.jar这个包可以提供相关的功能,非常方便,首先要在maven中pom.xml添加依赖项,如果不用maven,那直接下载对应的jar包添加到项目中即可。<dependency> <groupId>com.belerweb</groupId> <artifactId>pinyin4j</artifactId>
2016-06-03 12:26:20
9580
原创 PageRank的初步理解和实践
关于PageRank,先看看百度百科上的说明:PageRank,网页排名,又称网页级别、Google左侧排名或佩奇排名,是一种由[1] 根据网页之间相互的超链接计算的技术,而作为网页排名的要素之一,以Google公司创办人拉里·佩奇(Larry Page)之姓来命名。Google用它来体现网页的相关性和重要性,在搜索引擎优化操作中是经常被用来评估网页优化的成效因素之一。Google的创始人
2016-05-27 17:35:09
4700
原创 解决struts配置 报http status 404 错误的方案
当感觉自己基本没写错,无从下手的时候,先查看下导入的包是否完整,一般需要以下几个jar包:commons-fileupload-x.y.z.jarcommons-io-x.y.z.jarcommons-logging-x.y.jarfreemarker-x.y.z.jarognl-x.y.z.jarstruts2-core-x.y.z.jarxwork-x.y.z.jar确认完发现该有的
2016-05-13 11:24:39
4762
原创 关于Tomcat被占用(8080,8009,8005,)无法启动的解决方案
首先查看是哪个进程占用了(8080,8009,8005,)这三个端口。 打开命令终端,输入: nestata -ano //查看所有端口情况。 然后我们找8080端口的占用者,输入: netstat -ano|findstr “8080” 发现是PID为7748的进程占用了端口,然后输入: tasklist|findstr “7748” 找到是ja
2016-05-11 18:02:36
2787
原创 用JAVA实现一个爬虫,爬取知乎的上的内容(代码已无法使用)
在学习JAVA的过程中写的一个程序,处理上还是有许多问题,爬简单的页面还行,复杂的就要跪. 爬取内容主要使用URLConnection请求获得页面内容,使用正则匹配页面内容获得所需的信息存入文件,使用正则寻找这个页面中可访问的URL,使用队列存储未访问的URL和已访问的URL。另外,由于没有用到第三方包,所以不需要去下载新的jar包,如果遇到报错,可能是快捷导入的包错了,改过来就好了。还是直接上代
2016-05-09 22:55:16
5345
5
原创 基于HttpClient的一个POST通信用法例子
在码代码实现之前要先去apache网站上下载httpclient的包,并导入项目中才能正常使用。 然后直接上代码,边看注释边理解吧:import java.util.ArrayList;import java.util.List;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.a
2016-05-07 23:24:35
603
原创 Reverse String JAVA
在JAVA中如何翻转字符。以leetcode的344题为例: https://leetcode.com/problems/reverse-string/首先,最简单的就是用for循环将首尾字符串对调,即可完成:public class Solution { public String reverseString(String s) { int len=s.length();
2016-05-05 23:58:24
845
原创 关于java.awt.list与java.util.list的一些区别
在调用List的容器自动补全时出现的两个选项,稍微查了下资料,谈谈个人的理解。 首先关于java.util.* 与java.awt*这两类都是java的标准库包。区别在于,util内是一些工具类,如List,Map,Set这类的工具类库。而java.util.* 是有关图形组件的。 了解了这两块的区别,再关注下细分的两类下的.list。在util下,这个list就是数据结构中相关的list,当然
2016-05-04 22:35:16
3589
原创 复化simpson求积算法 c++实现
考虑到浮点数,采用double类型。double f(double x){ //公式}double count(double n,double a,double b){ double sum_in=0; double h=(b-a)/n; for(double i=0;i<n;i++) { if((int)i%2==0)
2016-05-03 12:38:30
2847
原创 配置git时出现permission denied的一个解决方法
在Ubuntu下开始配置git 前面很简单,一路输入以下指令://安装git sudo apt-get install gitgit config –global user.name “Your name” git config –global user.emali “Your email”//查看输入的用户名邮箱 git config –list//生成密匙 ssh-keygen -t
2016-04-07 20:50:52
20716
原创 使用php原生代码上传图片至SAE的STORAGE
由于觉得看文档耗费时,想试试用PHP原先的上传文件方法能否行的通,结果实践证明是行的通的。 codes的值是由我自己定义的,各位可以修改成自己需要的值。代码编写比较粗略,用了好多if判断。应该可以进一步优化。首先要在storage里自己生成一个domain。在下面代码中$domain,请填写自己的domain的名字`
2015-11-03 20:01:27
1664
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人