- 博客(99)
- 资源 (6)
- 收藏
- 关注
原创 C++中智能指针的使用
在上面的例子中,我们定义了一个名为Stack的类,它包含一个vector类型的成员变量data,用于存储栈中的元素。push()方法用于将元素压入栈中,pop()方法用于弹出栈顶元素,peek()方法用于查看栈顶元素,empty()方法用于判断栈是否为空。在pop()方法中,我们首先检查栈是否为空,如果不为空,则返回栈顶元素,并将栈顶元素弹出。在peek()方法中,我们同样检查栈是否为空,如果不为空,则返回栈顶元素。需要注意的是,智能指针的使用需要谨慎,因为它可以导致内存泄漏和其他问题。
2023-04-04 21:46:30
170
原创 分布式存储概述
Google、Amazon、Alibaba等互联网公司的成功催生了云计算和大数据两大热门的领域。无论是云计算、大数据还是互联网公司的各种应用,它的后台的基础设施都的主要目标就是构建低成本、高性能、可扩展和易用的分布式存储系统。 虽然分布式系统研究了很多年,但是,直到近年来,互联网的数据应用的兴起才使得它可以大规模的应用到工程实践当中。相比传统的分布式系统,互联网公司的分布式系统具有两个特点:一个...
2018-06-13 22:01:22
932
原创 Hbase的存储模式
行存储和列存储什么是行式存储和列式存储数据按照行进行存储,每行的数据聚合在一起进行存储,对事务的处理能力比较强什么是列式存储数据按照列进行存储,把每列数据聚合在一起,可以把相似的列进行压缩,提升数据的压缩效率行式存储和列式存储的应用环境考虑数据压缩,那么主要考虑用列式存储;对关系比较强,那么主要用行式存储。Hbase 的列族式存储Table = RowKey...
2018-06-03 09:03:24
979
原创 冒泡排序
/************************************************************************* > File Name: bubble_sort.cpp > Author: > Mail: > Created Time: 六 5/ 5 07:54:07 2018 *********...
2018-05-05 08:04:54
260
原创 链表顺序查找
import java.util.ArrayList;public class Search<Key, Value> { private Node first; //链表的节点 private class Node { Key k; Value v; Node next; public No...
2018-05-04 20:24:36
3690
原创 软中断和硬中断
硬中断硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)。处理中断的驱动是需要运行在CPU上的,因此,当中断产生的时候,CPU会中断当前正在运行的任务,来处理中断。在有多核心的系统上,一个中断通常只能中断一颗CPU(也有...
2018-05-03 13:56:16
559
转载 CPU实时监控mpstat
简介mpstat是Multiprocessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。mpstat最大的特点是:可以查看多核心cpu中每个计算核心的统计数据;而类似工具vmstat只能查看系统整体cpu情况语法...
2018-05-03 13:52:43
1062
转载 【转】存储系统的分类
存储系统的分类之前收集了一些存储产品,最近又重新整理了一下,对他们进行了简单的分类。每个对存储的分类可能不仅相同,我的分类完全按照自己的喜好来分,如和您的分类不同,仅供参考。只是做了搜集和分类,少量产品加了写介绍,希望以后有时间,加更多更详细的介绍。1.存储引擎 1.1 Hash Table 1.1.1 dbm (database manager) https://en....
2018-04-26 09:09:42
1292
原创 简单的python socket编程
服务端# coding=utf-8import socketserver = socket.socket(socket.AF_INET, socket.SOCK_STREAM)server.bind(('', 8888))server.listen(5)#等待客户端连接while True: (client, address) = server.accept()...
2018-04-19 08:55:37
825
原创 std::thread “terminate called without an active exception”
在运行下面的代码后,就会报错: terminate called without an active exception#include <iostream> #include <thread> using namespace std; class background_task { public: void operator() () ...
2018-04-19 08:33:50
13715
1
原创 文件IO (一)
文件描述符对于内核而言,所有打开的文件都能通过文件描述符进行引用。文件描述符是一个非负整数。当打开现有的文件或者创建一个文件的时候,操作系统内核会向应用进程返回一个文件描述符。当要进行文件的读写的时候,使用open或者create函数返回的文件描述符表示该文件,将其作为函数的参数传给read或者write进行文件的读写。 以下的几个文件描述符在UNIX操作系统里面是被定义和分配了的:0...
2018-04-12 09:00:19
202
原创 struct timeval结构体
struct timevalstruct timeval是在linux中的一个关于时间的定义,在time.h中进行定义,原型是:struct timeval { __time_t tv_sec; /* Seconds. */ __suseconds_t tv_usec; /* Microseconds. */ }; 其中,tv_sec为Epoch到创建struct t
2017-11-12 14:23:13
4459
原创 Spring Bean的scope
scope 描述的是spring容器如何新建Bean实例的。Spring的Scope有以下的几种Scope注解的实现:Singleton:一个Spring容器中只有一个Bean实例,此为Spring的默认配置Prototype:每次调用,创建一个新的实例Request: 在web项目中,给每一个http request 新建一个bean实例Session: 在web项目中,给每一个http
2017-04-10 08:30:24
411
原创 NIO使用方法
NIO进行服务端开发的一般步骤:创建一个ServerSocketChannel,并配置它为非阻塞模式;绑定监听,配置相关的TCP参数,比如backlog大小;创建一个独立的I/O进程,用于轮询多路复用器Selector创建Selector,将之前创建的ServerSocketChannel注册到Selector上,监听SelectionKey.ACCEPT事件启动I/O线程,在一个循环体中
2017-03-03 09:32:31
610
原创 数据存储引擎
存储引擎是数据存储系统的发动机,直接决定了数据存储系统能够对外提供的性能和功能。存储系统的基本功能包括:增、删、改、读,其中数据的读取,又可以分为随机读取和顺序扫描。哈希存储引擎是哈希表的持久化实现,支持增、删、改、查和随机读取操作,但是不能支持顺序扫描,对应的存储系统为键值存储系统;B树存储系统是B树的持久化实现,不仅支持数据的增、删、改、读,还支持数据的顺序扫描。LSM树存储引擎和B树一样,不仅
2017-02-26 15:03:09
478
原创 分布式存储系统的分类
分布式存储系统面临的需求比较复杂,大致可以分为三类:非结构化数据:包括所有格式的办公文档、文本、图片、图像、音频、视频信息等。结构化数据:一般会存储在关系型数据库中,可用二位关系的表结构来对数据进行描述,数据的模式需要预先进行定义。半结构化数据:介于结构化数据和半结构化数据直接,HTML文档就属于半结构化数据。它一般是自描述的,与结构化数据的最大区别之处在于,半结构化的数据模式和内容混在一起,
2017-02-26 14:45:18
10506
1
原创 分布式存储的概念
大规模分布式存储系统的传统定义:“分布式存储系统是大量PC服务器通过Internet互联,对外提供一个整体的服务”。 分布式存储系统具有以下的几个特性:可扩展 。分布式存储系统可以扩展到几百台甚至几千台这样的一个集群规模,系统的整体性能线性增长。低成本。分布式存储系统的自动容错、自动负载均衡的特性,允许分布式存储系统可以构建在低成本的服务器上。另外,线性的扩展能力也使得增加、减少服务器的成本低
2017-02-26 14:19:00
5516
原创 设计一个有getMin功能的栈
设计一个有getMin功能的栈【题目】实现一个特殊的栈,在实现基本的栈功能的基础上,再实现返回栈中最小元素的操作【要求】pop、push、getMin的操作时间复杂度都是O(1)设计的栈类型可以使用现成的栈结构【解决思路】在设计上,我们使用两个栈来解决问题,使用空间换取时间复杂度上的最优解。一个栈用来存储我们当前栈中最小的元素;另外的一个栈用来实现我们的基本栈的操作,存储基本数据。数据压栈规
2017-02-26 11:43:03
344
原创 go语言编程-json数据处理
本文介绍如何使用Go语言自带的库把对象转换为JSON格式,以及如何将JSON格式的数据转换为对象将一个对象转换为json格式的数据go语言自带了一个包,可以用来处理json格式的数据 包导入:encoding/json 函数原型:func Marshal(v interface{}) ([]byte, error) 在go语言中,要把数据转换为json格式,可以使用encoding/json包
2016-10-07 17:32:23
1499
原创 go web编程-使用Mux控制路由访问
package mainimport ( "io" "log" "net/http")func main() { mux := http.NewServeMux() mux.Handle("/", &myHandler{}) err := http.ListenAndServe(":8080", mux) if err != nil {
2016-10-05 09:35:08
2262
原创 go web编程-原生库实现
package mainimport ( "io" "log" "net/http")func main(){ //设置路由规则,并把请求转发到相应的请求处理器 http.HandleFunc("/", sayHello) //启动端口的监听 err := http.ListenAndServe(":8080", nil) //异常处
2016-10-05 09:22:24
1685
原创 Redis入门-Redis介绍
简介Redis是一个开源的、高性能的、基于键值对的缓冲与存储系统,通过提供多种键值类型来适应不同场景下的存储需求。同时Redis的诸多高级的功能使其可以胜任消息队列、任务队列等不同的角色。特性存储结构Redis是以字典的形式存储数据,并允许其他应用可以通过TCP协议来访问字典当中的内容。redis字典中的键值处理是字符串以外,还可以使其他的内容,到目前为止,Redis支持的键值数据类型如下:字符串
2016-10-03 17:39:27
727
原创 unix体系结构
Unix体系结构从下到上可以分为以下几层:内核:是unix体系结构的核心,相对较小 系统调用:内核对外提供的接口shell :提供对linux操作的接口库函数:库函数建立在系统调用上,也可以称为一种系统调用应用软件:这些软件是赋予操作系统特定功能的程序从严格意义上讲,可以将操作系统定义为一种计算机软件,它控制着计算机的应用资源,提供程序运行环境。
2016-01-17 20:53:07
498
原创 Ubuntu安装docker
通过Docker源安装最新版本要安装最新的 Docker 版本,首先需要安装 apt-transport-https 支持,之后通过添加源来安装。$ sudo apt-get install apt-transport-https$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245
2016-01-16 18:47:06
336
原创 VMware下安装rhci-5.8-1
所需要的软件下载VMware :http://dwz.cn/2xCkY8rhci-5.8-1.iso镜像: http://rhel.ieesee.net/uingei/rhel-server-5.8-i386-dvd.iso软件安装安装VMware:安装VMware的过程比较简单,这里就不再叙述了创建虚拟机 单击创建虚拟机 这这里可以选择两种类型的配置: (1)典型:使用默认的
2016-01-12 16:39:37
4520
原创 更换Ubuntu 14.04的apt-get
备份源的配置文件sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup编辑源的配置文件vim /etc/apt/sources.list把所有内容都删除,只保留最上面的注释就行了(因为怕有格式的问题而不可用,所以就想保留格式。)##deb cdrom `````````#deb cdrom把如下的内容复制进文件deb http://a
2016-01-07 14:21:20
386
原创 Spring 整合redis
pom.xml配置<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven
2016-01-03 15:52:25
352
原创 CentOS安装Jenkins
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.reposudo rpm –import https://jenkins-ci.org/redhat/jenkins-ci.org.keysudo yum install jenkinssudo yum install java
2015-12-31 22:50:13
367
原创 我常用的pom.xml配置文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.
2015-12-31 21:50:23
1713
原创 maven常用插件
maven-antrun-plugin http://maven.apache.org/plugins/maven-antrun-plugin/maven-antrun-plugin能让用户在Maven项目中运行Ant任务。用户可以直接在该插件的配置以Ant的方式编写Target, 然后交给该插件的run目标去执行。在一些由Ant往Maven迁移的项目中,该插件尤其有用。此外当你发现需要编写一些自
2015-12-31 20:03:04
506
原创 HTML5获取位置信息
<!DOCTYPE html><html> <head> <meta charset="utf-8"/> <title>HTML定位特性学习</title> <script> if(navigator.geolocation){ /*document.getElementById('su
2015-12-31 13:54:35
643
原创 css过度效果
语法transition:[,]* = [ none | ] || || || 默认值:看每个独立属性 适用于:所有元素,包含伪对象:after和:before 继承性:无 动画性:否 计算值:看每个独立属性 媒体:交互取值<’ transition-property ‘>: 检索或设置对象中的参与过渡的属性 <’ transition-duration ‘>: 检索或
2015-12-30 23:19:05
1662
原创 css媒体查询之device-width
几个典型的应用例子@media screen and (device-width:1024px){ … }@import url(example.css) screen and (min-device-width:800px);<link media="screen and (min-device-width:300px) and (max-device-width:900px)" rel="s
2015-12-30 22:40:53
1952
原创 css媒体查询之height
几个典型的应用方式@media (min-height:400px){ … }@media screen and (height:600px){ … }@import url(example.css) screen and (height:800px);应用例子!doctype html><html> <head> <title>Test media query of
2015-12-30 22:31:56
706
原创 css媒体查询之width
语法width:<length>接受min/max前缀:是取值length:用长度值来定义宽度。不允许负值用法说明定义输出设备中的页面可见区域宽度。与盒模型width不同,媒体特性width的取值只能是。本特性接受min和max前缀,因此可以派生出min-width和max-width两个媒体特性。示例<!doctype html><html> <head> <ti
2015-12-30 22:21:36
829
原创 Ant之build.xml详解
关键字: ant build.xml Ant的概念 可能有些读者并不连接什么是Ant以及入可使用它,但只要使用通过Linux系统得读者,应该知道make这个命令。当编译Linux内核及一些软件的源程序时,经常要用这个命令。Make命令其实就是一个项目管理工具,而Ant所实现功能与此类似。像make,gnumake和nmake这些编译工具都有一定的缺陷,但是Ant却克服了这些工具的缺陷。最初An
2015-12-27 23:26:33
340
原创 Linux下配置Mysql允许远程访问详解
操作非常简单,就5步骤,如下:1.进入 mysql:/usr/local/mysql/bin/mysql -u root -p2.使用 mysql库 :use mysql;3.查看用户表 :SELECT `Host`,`User` FROM user;4.更新用户表 :UPDATE user SET `Host` = '%' WHERE `User` = 'root' LIMIT 1;5.强制刷新权
2015-12-27 14:44:13
364
原创 linux(centos)搭建SVN服务器
安装步骤如下: 1、yum install subversion2、输入rpm -ql subversion查看安装位置,如下图: 我们知道svn在bin目录下生成了几个二进制文件。 输入 svn –help可以查看svn的使用方法,如下图。 3、创建svn版本库目录 mkdir -p /var/svn/svnrepos4、创建版本库 svnadmin create /var/svn/s
2015-12-27 12:33:32
350
转载 使用Spring MVC统一异常处理实战
1 描述 在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的、不可预知的异常需要处理。每个过程都单独处理异常,系统的代码耦合度高,工作量大且不好统一,维护的工作量也很大。 那么,能不能将所有类型的异常处理从各处理过程解耦出来,这样既保证了相关处理过程的功能较单一,也实现了异常信息的统一处理和维护?答案是肯定的。下面将
2015-12-26 16:58:51
797
转载 详解当当网的分布式作业框架elastic-job
作业的必要性以及存在的问题为什么需要作业?作业即定时任务。一般来说,系统可使用消息传递代替部分使用作业的场景。两者确有相似之处。可互相替换的场景,如队列表。将待处理的数据放入队列表,然后使用频率极短的定时任务拉取队列表的数据并处理。这种情况使用消息中间件的推送模式可更好的处理实时性数据。而且基于数据库的消息存储吞吐量远远小于基于文件的顺序追加消息存储。但在某些场景下则不能互换:a) 时间驱动 O
2015-12-26 16:44:54
6031
1
bootstrap中文手册
2015-03-22
正则表达式测试工具
2014-11-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人