- 博客(20)
- 收藏
- 关注
原创 Json特殊字符处理
这几天处理存储于json字段中的html文本,碰到特殊字符导致数据与字段错位,很是烦躁。\t:tab,跳格(移至下一列)\r:回车\n:换行解决方法:1、修改表存储格式<失败>2、regexp_replace<替换>hive> select regexp_replace('\t abc \n def \r hij', '\n|\t|\r', '');在网上搜索到解决案例如下:...
2020-07-28 14:33:40
1462
原创 Hive/HBase/MySQL数据库比较
HIve: 属于大数据生态系统中一个技术框架、用于分析数据 数据仓库ETL工具(ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过萃取(extract)、转置(transform)、加载(load)至目的端的过程) 建立在Hadoop之上,为用户提供SQL语句分析海量数据,离线数据分析 底层MapReduce 类似于MYSQL数据库中database和table来组织数据 hive将元数据存储在MYSQL中。mysql: 属于RD
2020-07-08 14:13:36
702
原创 Hive函数总结(最全面的)
一、数学函数 返回类型 函数名/参数 描述 DOUBLE round(DOUBLE a) Returns the roundedBIGINTvalue ofa. 返回对a四舍五入的BIGINT值 DOUBLE round(DOUBLE a, INT d) Returnsarounded toddecimal...
2020-06-08 20:39:26
1144
原创 MYSQL:count(1)/count(*)/count(列名)区别
1. count(1) 和count(*)当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了!从执行计划来看,count(1)和count(*)的效果是一样的。 但是在表做过分析之后,count(1)会比count(*)的用时少些(1w以内数据量),不过差不了多少。如果count(1)是聚索引,id,那肯定是count(1)快。但是差的很小的。因为count(*),自动会优化指定到那一个字段。所以没必要去count(1),用count(*),...
2020-06-05 11:14:41
237
原创 Libevent库源码的剖析
Libevent是一个轻量级的开源高性能网络库,使用者众多,研究者更甚,它有几个显著的优点 : (1)事件驱动(event-driven),高性能;(2)轻量级,专注于网络,不如ACE那么臃肿庞大;(3)源代码相当精炼、易读;(4)跨平台,支持Windows、Linux、*BSD和Mac Os;(5)支持多种I/O多路复用技术, e...
2018-03-06 14:15:22
505
原创 服务器程序框架之4.两种高效的并发模式(2)
本篇主要介绍领导者/追随者模式 领导者/追随者模式是多个工作线程轮流获得事件源集合。轮流监听、分发并处理事件的一种模式。在任意时间点,程序都仅有一个领导者线程,它负责监听I/O事件。而其他线程则都是追随者,它们休眠在线程池中等待成为新的领导者。当前的领导者如果检测到I/O事件,首先要从线程池中推选出新的领导者线程,然后处理I/O事件。此时,新的领导者等待新的I/O事件,而原来的领导者则...
2018-03-02 14:56:55
385
转载 白话解析:一致性哈希函数
学习一致性哈希算法的时候,看了些许文章,觉得这篇文章通俗易懂,可以尝试继续找到一致性哈希算法的具体实现,想收藏分享。没有分享权力,这里直接给我找出来的网址吧:优快云转载地址:http://blog.youkuaiyun.com/justloveyou_/article/details/78313649原文地址:http://www.zsythink.net/archives/1182...
2018-03-01 11:36:31
810
原创 服务器程序框架之4.两种高效的并发模式(1)
新年快乐啊,2018我爱的人和爱我的人,一切顺利开心。服务器程序框架---终章 正文: 并发编程的目的是让程序“同时执行多个任务”。如果程序是计算密集型的,并发编程并没有优势,反而由于任务的切换使效率降低。但如果程序是I/O密集型的,比如经常读写文件,访问数据库等,情况就不同了。由于I/O操作的速度远没有CPU的计算速度快,所以让程序阻塞于I/O于I/O操作将浪费大量的CPU时间。如果...
2018-02-28 20:30:15
369
原创 服务器程序框架之3.两种高效的事件处理模式
服务器程序通常需要处理三类事件:I/O事件、信号及定时事件。本篇先从整体上介绍一下联众高效的事件处理模式:Reactor和Proactor。 随着网络设计模式的兴起,Reactor和Proactor事件处理模式应运而生。同步I/O模型经常用于实现Reactor模式,异步I/O模式可用于实现Proactor模式。后面会看到,如何使用同步I/O方式模拟出Proactor模式...
2018-02-09 17:10:31
315
原创 服务器程序框架之2. I/O模型
前面有讲到过,socket在创建的时候是默认阻塞的。我们可以给socket系统调用的第2个参数传递SOCK_NONBLOCK标志,或者通过fcntl系统调用的F_SETFL命令,将其设置为非阻塞的。阻塞和非阻塞的概念能应用于所有文件描述符,而不仅仅是socket。我们称阻塞的文件描述符为阻塞I/O,称非阻塞的文件描述符为非阻塞I/O。 针对阻塞I/O执行的系统调用可能因为无法立即完
2018-02-06 21:26:35
231
原创 服务器程序框架之1.服务器模型
期末的时候做完开题报告,用了半个寒假投了一篇英文论文出去。两本书籍已经阅读完毕,现总结高性能服务器程序框架内容,分四篇文章介绍服务器模型、I/O模型(四种I/O模型)、两种高效事件处理模式和两种高效的并发模式。正文开始:1.C/S模型 TCP/IP协议在设计和实现上并没有客户端和服务器的概念。在通信过程中所有机器都是对等的。但由于资源(视频、资源、软件等)都被数据提供者所垄断,所以几乎
2018-02-05 16:05:07
338
原创 Linux编程之pipe管道通信(2)
上一篇我们介绍过创建管道的pipe函数,下面在代码中我们来实现进程间的通信吧。 管道能在父、子进程间传递数据,利用的是fork调用之后两个管道文件描述符(fd[0],fd[1])都保持打开。一对这样的文件描述符只能保证父、子进程间一个方向的数据传输,父进程和子进程必须有一个关闭fd[0],另一个关闭fd[1]。比如,我们要使用管道实现从父进程向子进程写数据,可按照下图来操作:
2017-10-11 16:49:21
1459
原创 Linux编程之pipe管道通信(1)
管道是为了实现进程间相互通信的。可以形象的比喻它为一个管子,管子有两头,不过只能在一端进行读操作,另一端进行写操作。 管道分为两类(1)无名管道,仅适用父子进程间的通信,pipe(fd) fd[0]读 fd[1] 写 (2)有名管道:任意进程可进行通信。 pipe函数可用
2017-10-10 15:49:30
612
原创 Linux编程网络之TCP通信
TCP/IP通信会用到很多API函数,还有许多杂的知识点。 我们知道,TCP协议通信的双方必须先建立连接,然后才能开始数据的读写。双方都必须为该链接分配必要的内和资源,以管理连接的状态和连接上数据的传输。TCP连接是全双工的,完成数据交换后,通信双方必须断开连接以释放系统资源。
2017-08-29 15:46:46
621
原创 小心情:继续未来的路
去年一年忙着研究生一年级的生活,各种课程各种杂念,内心不平静像放羊一样,过程中自学了数据结构,算法,STL、网络编程,做了几个小项目等。但是我知道我没有挖得很深,我该反省,我没有抓住每一天,没有迫切的获取知识的心态,没有那种在黑暗中抓住光亮的孤注一掷。因为被导师分配一些杂活还有学校里的课程耽搁了自己的行程。一开始我的计划统统被打乱,然后六级也没有过,学校里的课程夜并没有觉得学到了什么东西,除了计算
2017-08-23 14:36:25
329
原创 可变参数列表的C语言实现举例
函数参数列表最常见的是 返回类型 函数名(参数列表) eg: int max(int a, int b)。这里还有两种不常见的参数列表形式,简单加以介绍。一、函数默认参:顾名思义,就是在参数列表中直接给每个参数赋初值。这样的好处是,此函数在调用的时候,可以不用完全给定参数。 例如: 这里有一个求平均值的函数,求四个数的平均值。
2016-09-06 13:14:38
351
原创 关于递归的若干问题
编程中,一个很重要的方法是递归。 递归:简单来说,自己调用自己。可以将一个较大的问题分解为同类较小规模的问题,有下到上一一求解。即:大规模---同类小规模---解决。 一、递归条件: 1.调用递归函数。一般都是在main函数中调用递归函数。 2.某些条件下,递归函数不再调用自己,结束当前函数的执行。 3.
2016-09-04 16:05:11
618
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人