Scala函数式编程-读书笔记 Scala函数式编程-读书笔记 用递归的方式编写裴波那契数 使用尾递归调用的方式编写裴波那契函数。 def fib(x:Int):Int = { def go(x:Int, acc:Int):Int = { if (x == 1) acc e...
C++和JAVA下的内存资源管理 1.引言不管在哪种系统平台/编程语言下,内存资源管理是非常重要的问题,稍不留意就会导致内存泄漏,更有甚者访问非法空间,导致错误。说到底,没有在合适的时机释放对象,或者访问了已经释放的资源。在有垃圾回收的语言中,由平台环境负责资源的及时回收;在C++中则需要程序员自己把握,在一些多线程状态下,...
ubnutu下安装.NetCore出现的问题解决 我在ubnutu on win10 subsystem下安装.NetCore,做一个尝鲜。但是在安装的过程中却出现了问题,不能安装成功。我记录下我的完整安装过程,并说明解决办法。其实非常简单。ubnutu版本 14.04sudo sh -c 'echo "deb [arch=amd64] ...
Ceph集群缩容及相关故障处理 引言由于目前机器比较紧张,需要将我集群中的一批机器提供给其他业务使用,这时问题来了,集群机器的退出意味着数据要重新分布,数据迁移的过程中比较容易出故障。处理过程处理测试POOL对应的机器集群中有很多POOL, 有些POOL是客户数据,这非常重要;有些POOL是我测试用,这些POOL对应...
Ceph集群搬迁后的恢复过程 引言由于机房搬迁,我的Ceph集群也要迁走。按照关闭rgw, osd, mon的顺序依次关闭ceph进程后关机即可。但是在恢复的过程中确实花费了一些精力,主要有如下问题。机器重启后硬盘没有自动挂载,需要将硬盘挂载到对应目录;整个集群IP修改,如果让集群适应新IP本文主要以解决这两个...
Visual C++ on linux的使用 1.引言在知乎看到别人说微软提供了一个插件,可以支持在visual C++下进行LINUX程序的开发调试。对于我这样不爱用VIM,EMACS编辑器的人,都是在WINDOWS基于sublime开发,然后在linux server上用gdb调试运行。调试时设置断点、查看函数调用栈、变量值的时候...
C++ Primer读书笔记3-面向对象基础 引言面向对象的支持是C++较C的一大区别。面向对象的几个特点是封装、继承、多态。1. 封装封装的目的是为了让接口和实现分离,这种是逻辑上的分离,而不是在实现时一定要分开定义interface和class。通过封装,让类的使用者直接根据需要调用相应接口即可,无需关注接口的实现细节,可以理解...
C++原子类实现 引言在系统实现的过程中,经常需要用到计数功能,为了多线程下的安全使用,我自己定义了一个原子类。基于Mutex的实现我基于Mutex实现了一个简单的原子类,代码如下/* * 说明:自定义整数操作的原子类,减少代码中的各种锁 */#ifndef _ATOMIC_INT64_H_#...
C++连接MySQL 在之前的项目中,发现工程是基于C++的,但是代码中数据库的连接却基于C api接口,主要接口如下:mysql_initmysql_real_connectmysql_querymysql_close包括初始化,建立连接,执行查询操作以及关闭等等,可以看出,这其实是纯C接口,更适合C...
Ceph硬件选型 Ceph对计算机硬件的需求引言我阅读了Ceph的官方文档,其中提及了Ceph对硬件资源的需求,在《Learning Ceph》一书中也同样提及。我在此处做一个简要概括。Ceph主要包含如下几个组件:MONOSDMDSRGW讨论的重点也是各组件对CPU以及内存的依赖程度。M...
一致性HASH算法 一致性HASH算法研究1.引言在研究Ceph CRUSH算法时,看到有文章说它是一种特殊的一致性HASH算法,于是我便开始研究一致性HASH算法做先期准备,发现理念确实接近,区别在于虚拟节点和物理节点的映射办法不同,这是Ceph的核心算法,非常关键,此处不表,下文分解。2.一致性HASH...
Ceph RGW中各Pool的作用 Ceph RGW中各Pool的作用1.引言在使用Ceph的radosgw服务时,会通过create pool命令创建一系列的pool,服务于radosgw.我想在本文中分析出各个pool的作用。2.pool信息罗列POOLS:NAME ...
使用log4cplus作为C++应用程序的日志功能 简介我在写一个小工具时,出于一些调试目的,会使用一些cout输出一些关键变量和相关DEBUG信息,但是多线程的情况下,输出无序混杂,并且影响代码整体结构,后续还是需要删除,我受够了cout,于是决定使用一个正规的日志库作为我的调试观察之用。以前在JAVA项目中,我一直使用log4j作为我的...
Linux参数调整 #Linux系统修改主机名在Linux系统下,会出现修改系统主机名的场景,我修改主机名称的动机时,因为主机名称导致ceph-deploy不能正确部署,所以才修改机器名称。编辑/etc/hosts文件将IP以及对应的主机名输入的hosts文件中58.*.60 ceph0编辑/e...
Go学习笔记三:网络通信 Go学习笔记三-网络通信1. 引言网络通信是IT系统的必备功能,如果是做一些简单的工具类或者小软件,我们可以直接采用原生的SOCKET进行编程开发;如果项目规模比较大,则是基于一些网络通信库,比如zeromq, libevent, netty等;进一步的,使用网络通信中间件,直接利用其提供...
Go学习笔记二: 函数,文件操作及网络通信 Go学习笔记二: 函数,文件操作及网络通信1.引言在《Go学习笔记一》中,我对Go语言中的基础数据类型、控制结构做了总结,该篇笔记的动机来源于我实际工作中利用Go解决一些小问题。问题本身并不复杂,用Python或者Shell同样可以解决。纯粹是为了体验及学习Golang.另外,我在这边文...
Go学习笔记一:go基础 Go学习笔记一:go语言基础这是我学习go语言的第一篇读书笔记,主要学习go语言中的基础数据类型以及控制结构。基本内置类型,比如整数,浮点数,布尔类型,字符串等。容器结构,数组,切片,mapif/else, for控制结构基本内置类型bool类型func bool_test(...
Linux下静态库二次合成 #1.引言我在对某个开源包进行二次开发后,希望将我自己的代码和原有的代码合并为一个代码库,减少发布时的文件数量,故有此操作。#2.实验过程2.1 基本命令准备在linux中,打包静态库的基本命令是:ar cr mystaticlib.a hello1.o hello2.o.......
C++ Primer 读书笔记-ch02 #1. 引言数据类型是程序的基础,决定了编译器以及运行时的各项操作解释。在编译时不同的变量应该分配多大的空间?在运行时对指针进行+1操作,指针应该跳几个字节?在类型明确的情况下,上述操作都有据可循,不会有歧义。C / C++ / JAVA / C#等语言都明确定义了数据类型。我个人也是比较偏...
C++ Primer读书笔记-ch01 Chapter 1. Getting Started1.1 Writing a simple C++ Program对于main函数而言,return 0表示一切正常,非0值表示有情况,具体含义由系统定义。Exercise 1.1: Review the documentation fo...