- 博客(38)
- 收藏
- 关注
原创 Apache-Arrow是什么?
Arrow是一种数据存储格式,以及对这个格式的一系列API及多语言的SDK。当上层应用使用这个接口访问这些数据的时候,大家就不用在不同的私有格式之间转换。从而省去了大量的序列化和反序列化的计算资源。...
2022-07-17 23:52:12
1283
原创 你真的会用read()读【普通文件】吗?
原型如下:如果是读【普通文件】,可能的返回是:注意,-1出错的时候,errno会返回错误码。其中有一个errno需要引起我们注意,就是EINTR。手册里面是这么解释的:当任何数据没有读到的时候,如果调用被中断,返回-1且errno设置为EINTR。言外之意是如果读到了,会返回读了多少,这种有数据的不会返回-1。看起来这个异常情况需要处理,避免真的不凑巧刚调用,被信号中断了,那其不是被误认为出错了吗?可是真的是这种情况要处理吗?还真有人说需要处理(见https://blog.csdn.net/feit241
2022-07-12 22:29:31
375
原创 数据湖 Data Lake
# 企业的挑战1. 数据量增长迅速2. 数据源非常多样3. 数据获取的有效性4. 数据的可访问性5. 数据的质量和实效性6. 跨业务单元的数据分享7. 有效的决策
2022-07-11 22:51:21
252
原创 HDFS-Spark-Hudi环境的搭建及测试
由于需要进行Hudi的详细选型,本文从0开始搭建一个Spark+Hudi的环境,并进行简单使用。1)假设在Linux进行环境安装,操作系统选择Ubuntu 22.04 LTS版本。2)Ubuntu的源配置清华源。3)JDK安装完毕(当前是1.8版本,1.8.0_333)。2.2 localhost免密登录3. Hadoop安装Hadoop安装的是单节点伪分布式环境,版本选择和后继的Spark选择有关联。例如:Hadoop 3.2.3Hudi当前支持的是Spark3.2,对应的Spark也是3.2。1
2022-07-10 23:21:12
1161
原创 进程和线程ID
大家知道,在Linux下每个进程都有一个ID,叫做进程ID。而线程ID呢?我们平时使用的posix线程库所创建的每个线程的ID是谁生成的呢?是这个库自己生成的,所以它保证在一个进程内的ID保持不重复。而不同的进程间就没有这个保障了。其实,每个进程内的线程库生成的线程,应该算是用户态的线程,只有这些线程映射到操作系统内核所认识的线程,才能被调度。这个时候,映射到操作系统内核能识别的线程的时候,操作系统的对应线程也会有一个线程ID,这个ID在整个操作系统空间是唯一的。通常这个操作系统的内部ID我们都用不到。所以
2022-06-26 22:57:40
1225
原创 配置【文件】处理
配置[文件]处理 什么是配置或配置文件 配置文件就是程序的相对固定参数,让程序能够在一定程度上有运行的灵活性。文件只是配置一种形式,例如存在某个外部的地方,能在运行的时候加载的都算配置。所以我们关注的是配置,文件只是一种形式。 配置[文件]格式 文件文本格式常见:传统的properties文件、ini文件。相对较新的json文件、xml文件、Yaml文件、hocon(没用过)、TOML(其他同事用过,据他说是非常适合,网上也有人说可能是最好的配置格式)...
2021-05-04 20:37:18
280
原创 通过minikube部署kubernetes
通过minikube部署kubernetes需要本地验证部署一下knative,需要一个集群,所以先部署一个minikube。记录如下:0.环境准备安装一个VM VirtualBox 6.0.4版本。1.安装Docker自己的机器安装的是Linux Mint 18.3(ubuntu1604)。直接检查一下Docker等的安装情况。$ dock...
2019-04-09 18:36:11
1451
1
原创 跟踪大咖
跟踪大咖这些大咖都是业界的知名人物,经验丰富,且写了很多很好的博客,值得跟踪学习:1. Christian Posta微服务方面的专家,最近在搞Istio。关注他https://blog.christianposta.com/posts/2. Martin Kleppmann3. Martin Fowler关注他https://martin...
2019-04-09 09:14:12
307
原创 并发编程的模型
并发编程的模型并发是多核编程中非常困难的部分,主要原因是多个CPU,但是共享一个内存,所以必须有一套机制保证这些CPU不会冲突。理论上一个应用程序绑定一个CPU,然后从头执行到尾是最高效的方式,然而实际中的应用,总是会相互依赖,或者依赖某个低速的IO操作,这时候这些应用就会等待。等待的时候能高效的将CPU出让给别人是很重要的。为了并发且保护共享的数据结构,很多的方式被...
2019-04-09 00:31:50
200
原创 我的疑问清单
我的疑问这里是我的疑问列表,如果有结论则会链接到具体的结果Blog上,如果没有链接说明我还在思考中。1.操作系统的线程上下文的切换时间是多少?2.如何查看程序运行过程中的切换次数?3.我是如何理解并发编程模型的?4.如何使用客户端操作共有云上的云服务?5....
2019-04-09 00:11:25
291
原创 无密码ssh登录的配置
无密码ssh登录的配置Ssh无密码的原理是:rsa非对称密码中,私有密码加密的信息,只有公钥才能解密,所以,如果公钥能够解密,则一定是私钥加密的。因为私钥没有在网络上传递,所以,就肯定是私钥所在的机器进行的访问。这样,拥有公钥的机器就相信,只要我能解密信息,那对方一定是信任的私钥机器。这样就运行无密码登录了。A访问B无密码,需要在A上生成一对密码,将公钥传给B。操作步骤:1....
2019-04-08 16:27:03
409
原创 迁移Linode服务器
迁移Linode服务器从美国将Linode的一个服务器迁移到日本的机房:1. 首先为了保证数据的完整性,把两台VPS主机都关机2. 到新的VPS主机控制面板那样把Disk Image和Swap Image给删除了,否则在下面的迁移中会提示你硬盘空间不足3. 选择Clone中的Configuration Profile4. 选择...
2019-04-08 16:17:02
10821
原创 信息模型驱动的微服务拆分设计思考
信息模型驱动的微服务拆分设计思考微服务倾向于分离的数据库。我们将数据分离的时候一定会有这些疑问:如何将数据拆分开来;遵循什么原则; 拆分的数据如何组合组织起来进行访问;其实拆分数据本事也是微服务划分的一个影响因素。尼古拉斯·沃斯(Niklaus Wirth)曾经说过“算法+数据结构=程序”。狭义一点来说,很多公司的系统中,数据本身就是业务价值的载体,经年积累的业务价值都存储...
2019-04-08 16:00:03
396
原创 Confluo对比Kafka
Confluo对比Kafka 最近几天老是看到一篇“伯克利开源 Confluo:吞吐量比 Kafka 高 4 到 10 倍”的文章,到底什么是Confluo,看了一下它的论文和代码,简单分析了一下:初步分析完感觉这个东东为啥要和Kafka比呢?又没有啥可比性,就像Kafka从来不会和Redis比Pub-Sub时延一样。而且这一篇文章感觉比Kafka高大上好多似的,非常容...
2018-12-20 22:38:00
1864
原创 javascript时间处理函数
当前时间:var timestamp = Date.parse(new Date());timestamp = timestamp / 1000;返回的是毫秒,后三位为0var timestamp = (new Date()).valueOf();var timestamp=new Date().getTime();返回的是毫秒,精确到毫秒 时间转时间戳v...
2018-11-09 17:57:10
1339
原创 阿里云服务器上的Service文件句柄限制修改
有个服务程序,老是报文件无法打开,肯定是文件句柄打开太多了,需要修改一下文件打开句柄限制可以通过命令查看:ulimit -n6553565535看起来还不错,不至于这么少。所以我们看看我们的服务程序进程怎样。查看单独某个已经启动的进程,想查看它的文件打开句柄限制如下,(看起来有点少):cat /proc/9481/limitsLimit ...
2018-11-09 17:10:19
722
原创 systemd的日志存在哪里?
systemd的日志存在哪里? 为了手工安装一次kubernetes,其中etcd装了又删,删了又装好几遍。最后一次终于启不来了。单独运行etcd的程序都可以,就是放在systemd的服务目录下不行。systemd的日志看不出来问题:[root@k8slib]# journalctl -u etcd--Logs begin at Fri 2017-09-29 08:47:30 CS
2017-09-29 09:58:00
26899
1
原创 LevelDB源码阅读(2)
LevelDB源码阅读(2) C语言用的比较多一些,后面再阅读LevelDB源码的时候,同步做个C语言版本的如何?顺便看看和C++的版本性能比较。说干就干J 还有几个事情在思考:1. C语言版本和C++版本到底性能有没有区别,有多大?2. 复杂的一些数据库模式,例如ER风格的库,能用KV高效的模拟吗?3. 如果添加一个SQL的接口,是不是有
2017-01-01 15:51:05
648
原创 LevelDB源码阅读(1)
LevelDB源码阅读(1) 时间就是杀猪刀,不抓紧学习不行呀。2017年新年第一天,我们就来学习一下LevelDB吧。之所以选它,是因为代码还不算多(1.19版本): ... 51./util/testutil.cc 63./util/testutil.h 15805 total[root@localhost src]#我们先看看目
2017-01-01 15:40:23
2856
原创 C语言类型转换知多少?
C语言类型转换知多少? 学C的都知道类型转换,可是,到底哪些类型转换是安全的,那些是有危险的?虽然类型统一规划好是好的程序开发的基础。但是有些时候避免不了类型转换的时候,这时候我们需要:1. 了解哪些类型转换有危险(危险的都是显式类型转换?)。2. 了解那些转换会增加代码量。3. 如何通过显式的转换来减少转换次数,提高效率。 类型转换的方式
2016-12-11 00:58:47
603
原创 C语言各种数据类型的长度是个问题
C语言各种数据类型的长度是个问题 C语言中,32位平台,64位平台,各种数据类型的长度定义不同,如果不准备在32和64位(没准还需要和128位)之间移植程序,则没有什么大问题,如果要考虑到移植,这种定义的不同就非常麻烦。Java之类的语言就是好呀,不需要考虑这些问题,数据类型的长度都是确定的。 我们测试一下不同平台的区别吧:intmain(void){
2016-12-10 12:57:59
7590
原创 C函数隐式声明要注意检查
C函数隐式声明要注意检查 gcc编译代码的时候(其他编译器估计类似),会碰到这个提示: implicit declaration of function ‘xxx’; 这个提示的意思是找不到该函数的原型声明。那会产生什么问题呢?我们知道,C编译器在早期是没有原型声明的要求的(C99标准之前)。如果没有原型声明,那编译器是如何知道怎么处理这些函数的参数和返回值呢?有一些约定:
2016-12-10 11:47:48
2116
原创 微服务的IDL
微服务的IDL 微服务的消费者和提供者之间总要有个约定。不跨语言的话,这种语言本身的定义就可以在不同的组件之间直接共享。一旦支持多语言,用一种公共的接口定义语言来定义他们之间的接口能力就是有必要的了,当然这个IDL可以是自动生成出来的。对于这种IDL,需要如下特性:1. 人要易读2. 机器能校验IDL作为一种描述语言,很多RPC框架都提供自己的定义格式
2016-12-04 12:59:43
1092
原创 微服务的调用和接口
微服务的调用和接口 微服务的调用: 微服务也是服务,我们一般认为微服务都是不同的实例提供的。这些实例通常和调用者运行在不同的进程中(根据部署模式不同,多个微服务实例到是有可能在一个进程中部署)。 当然,服务的消费者和服务实例本身,也可能是运行在同一个进程中,出现这种情况的目的可能是因为性能的需要,在J2EE、CORBA等时代,这些也是要设计和考虑的,但是,作为架构模式
2016-12-04 12:09:07
30283
原创 excel打开java生成的文件中文乱码
excel打开java生成的文件中文乱码 java生成的csv文件数据,下载到本地后,使用excel打开,发现乱码:看了一下,csv文件是UTF-8格式的文件,excel默认不将这个文件当成UTF-8格式解析导致的。文件的本来的编码格式如下:将编码添加BOM(Byte-orderMark)之后,excel就识别了。添加BOM的方法和工具很多,例如note
2016-11-25 11:31:24
3331
原创 思考微服务
思考微服务微服务是热的要命,我也来凑凑热闹。仔细思考一下,作为一个软件架构模式,涉及的方面还是很多的,画了个草图,从如下方面逐一探索。...
2016-11-21 01:46:48
558
原创 Java取系统时间的调用速度如何?
Java取系统时间的调用速度如何? 测试了两个调用(应该取时间是系统调用):System.nanotimeSystem.currentTimeMillis 在840g上(840G1配置i54300u 1.9 -.2.5G 8G Windows 7 64bit),每秒大概在2250w/s,两个调用速度差不多。 所以其实应该速度还好啦,如果用的地方不多的话。 如
2016-11-20 01:23:02
578
原创 Java Thread到底有多快/慢?
Java Thread到底有多快/慢? 创建一个能占满CPU的任务,然后启动CPU个,看时间,然后启动更多,看平均每个任务的执行时间。计算Fibonacci数列的算法。启动n个线程,每个线程计算一个fib数列,看总的时间。单位计算资源占用效率的计算:CPU占用×时间/计算的数量10000fib 系统5%
2016-11-20 01:10:25
1097
原创 Docker基础概念与操作
Docker基础概念与操作 基础概念:o 镜像就像是一个可执行文件。o 镜像在仓库注册中心内被分门别类的存起来。o 镜像最终被放在每一个机器上,启动为一个个的容器。 镜像:因为镜像就像是一个可执行程序,所以,就会有一种约定的打包方式。Docker的守护程序就能按照这种格式,将程序启动起来,变成一个个的容器。既然镜像是运行前的程序,它存在的地方和形式
2016-11-18 09:53:39
550
原创 etcd的单节点手工安装
etcd的单节点手工安装 etcd就两个可执行文件(截至到3.0.15前)。下载地址:https://github.com/coreos/etcd/releases 注:etcd可以集群安装,在这里只想做一个单机测试,所以只是启动一个节点就可以。 1. 解压,并将文件放入系统路径中:tar zxvf etcd-v3.0.15-linux-amd64.tar.gz
2016-11-17 09:08:38
10876
1
原创 Docker引擎的手工安装
Docker引擎的手工安装 1.10之前,docker编译出来只是一个可执行文件,而到1.10之后,工程按照功能,被分为多个文件了,安装的步骤差别不大,如下: 下载包地址:https://get.docker.com/builds/Linux/x86_64/docker-latest.tgz 1. 解压目录,并将解压后的文件放入系统路径中tar zxvf docker-
2016-11-16 10:58:00
575
原创 Pid文件和路径
Pid文件和路径/var/run通常是存放pid文件的位置。/var/run是tmpfs文件系统,每次重启的时候都会清空。其中/var/run是/run的链接;由于每次都清空,所以,如果想在/var/run下面的子目录创建pid文件的话,子目录一定要记着创建一次。另外,pid文件通常还需要加锁,用于判断是否有同样的进程已经启动。Linux/Unix文件系
2016-11-14 00:02:53
9024
原创 资料与知识
资料与知识网上随便一下就是十几G的各类书籍,baidu网盘上到处都是海量的资料。在这个互联网发达的时代里面,资料永远都不是瓶颈。这些资料静静的躺在磁盘里面,只是资料而已。如何将这些资料变为知识,才是最重要的。记得看过某人的blog,他说自己坚持看书来学习,因为写书不易,所以肯定会思考的透,且系统的多。我很同意。整天在网络的帖子上看来看去,更多的还是初级入门的重复...
2016-11-13 18:59:55
375
原创 Internet地址结构
Internet的地址结构 对Internet地址结构的大致认识是类似对象设计,各个不同的协议簇共享一个通用的地址类型,但是每一种具体的协议都有自己的解释。今天由于要做一个地址的提取和映射,所以仔细看一下细节,记录如下: struct sockaddr是通用的地址,适应不同协议的地址类型。struct sockaddr_in是互联网域的地址。 这两个结构是对等的
2016-11-12 22:10:00
567
原创 计划做一个字符编码和转换方面的专题(2014-1-27)
字符编码是一个容易困扰的问题,只要发生数据的存储和交换就需要考虑这个问题。经常出现的是数据库和客户端之间,服务器和浏览器之间,编辑器和编译器之间,源代码与目标代码之间等等等等。这里还是做个专题,将各类关系给梳理一下,希望所有与字符编码和转换方面的问题都能在这个专题中找到答案。
2014-01-27 22:18:40
510
原创 入手便携DC(2014-1-26)
翻翻以前的照片,发现越来越懒了,可能是单反太重吧,仔细想想还真是一般不太想背着大大的一个包出门,特别是偶尔去一下玉渊潭啥的,就懒得拿了。可是生活需要记录呀,前几天就说起搞个小DC随便拍拍事。G大侠建议弄个LX7,推荐说是综合素质还不错。上网搜了一下,评价还可以哈,加上大侠建议,就弄了一个,今天一早快递就打电话说到了。开箱看了一下,原封盒子。昨晚定的,今天早上就送到了,赞一下。试机照,初步感
2014-01-27 22:05:29
757
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人