- 博客(21)
- 资源 (1)
- 收藏
- 关注
原创 select, poll 和 epoll
本文中文件描述符是对内核中的 fd 的称呼相同点:这三个 I/O模型都是为了实现同一个目标——同时检查多个文件描述符,看它们是否准备好了执行 I/O。不同点:1. 关于水平触发和边缘触发select和poll只支持水平触发,水平触发是说文件描述符已经就绪,也就是说在这个文件描述符上是否可以非阻塞地调用 I/O函数.epoll 既支持水平触发,又支持边缘触发。边缘触发是说自...
2019-09-08 16:06:12 200
原创 C++有没有智能指针的区别的一个例子
一个类用的是智能指针指向的vector,一个类的用的是裸的vector. 在拷贝对象的时候出现不一样.智能指针版:#include <string>#include <iostream>#include <vector>#include <memory>#include <initializer_list> u...
2019-08-08 11:19:26 213
原创 同步,异步,阻塞,非阻塞是什么意思?
首先,本文讨论的单线程的问题,多CPU多线程的情况不在考虑范围,不过思想都是一样的。同步和异步同步是说当前代码不执行完,后面的代码,或者严谨点说,后面的指令将不执行。例如[1],下列,select 函数不返回,下面的代码将不会执行。异步,只是简单地向操作系统注册完一个函数,操作系统在IO操作完成后,用信号通知该进程。例如[2],第一行,signal不必等到 on_...
2019-05-28 23:35:54 2227
原创 软连接和硬连接的区别
1. 硬连接文件系统以Inode号为标识,而同时也提供可读性强的字符串作为文件的标识。对应关系如下面这样: 当我们在利用名字操作文件时,文件系统会转换为Inode进行操作。那么硬连接就是有不止一个名字对应于Inode。底层文件系统看来还是一个文件实体和一个Inode。如下图所示: 示例:图中,一开始创建了一个orgin文件,写入字...
2019-05-05 00:02:49 3051
原创 图解链表倒置
链表倒置是一个经常遇到的问题,下面将用图示的方式讲述链表倒置的过程。假设链表的长度为4,头指针head指向第一个节点。另外还有两个非常重要的指针,prev:带领head指针往下走,是个领航员,worker:位于head之后,为指针变换服务。最后返回的结果是一个head指针,指向的是一个已经倒置的链表。1. 初始化:Node *prev = null;Node *worker = n...
2019-05-01 11:52:33 1340
原创 javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure的一个解决方案
当我使用 jdk 1.8_181 版本运行Java文件(Win10平台)时候,控制台出现如标题所示错误。其中一个解决思路是替换jdk版本当从 jdk 1.8_181 改为 jdk 1.8_161版本的时候,问题解决。jdk 1.8_161版本下载链接jdk 1.8_161,密码:53di另外的一个解决思路见:https://blog.csdn.net/gege87417376/...
2019-03-26 14:31:50 2675
原创 C语言函数调用的底层实现
最近在阅读大名鼎鼎的《深入理解计算机系统》,读到第三章,介绍了函数的底层实现。对底层的实现有了一些了解。为了理解,我就用书上的例子,如果在中途有出现的术语,我会就近解释。1. 背景全文将会围绕下面两个函数来介绍所有的实现机制,这两个函数是:第一个,主调用函数(它去调用另外一个函数 proc)long call_proc(){ long x1 = 1; in...
2019-02-24 10:50:08 6044
原创 win10 任务栏出现 FastPicEx DeskBand
解决办法:在任务栏空白位置上右击,然后选择工具栏,勾去FastPicEx。如下图所示
2019-02-19 15:15:32 17956 1
原创 Ceph通过本地源离线安装
环境:Ubuntu 16.04, Ceph 12.2.8第一步:下载相关的包首先,准备一台刚装好的Ubuntu系统。1.1 先替换成国内的源:sudo vim /etc/apt/sources.listdeb http://cn.archive.ubuntu.com/ubuntu/ bionic main restricteddeb http://cn.archive.u...
2019-01-14 11:19:56 2987 2
原创 Java中的对象复制是怎么回事?
在看《Java 2实用教程》中GUI中的源码时候,出现了一点疑惑,源码如下:import java.awt.*;import javax.swing.*;import java.awt.event.*;public class JavaGUI { public static void main(String[] args) { WindowActionEvent win = n...
2019-01-06 13:10:55 376
原创 怎么使用Maven打包普通java项目(两步走)
第一步:增加plugin,修改mainClass标签找到pom.xml文件,再找到<build>标签下面的<pluginManagement>下面的<plugins>标签,在这里:找到之后,请插入这样一个标签内容: <plugin> <groupId>org.apache.maven.plugins<...
2018-12-20 21:42:06 2425
原创 Ubuntu本地源apt-get update出错:Hash Sum mismatch(hash校验错误)
在apt-mirror制作本地源的时候,当等待了一天一夜,下载完成之后。兴高采烈地apt-get update时候,报错了:E: Failed to fetch http://127.0.0.1/ubuntu/dists/xenial-updates/main/dep11/icons-64x64.tar.gz Hash Sum mismatchE: Some index files fa...
2018-12-04 18:42:48 1030
原创 Linux下GDB中的 attach pid 如何使用?
linux下使用gdb可以很好的跟踪代码。当然,让我觉得神奇的是它竟然能跟踪正在运行的进程。下面,我将用我的例子演示一下怎么使用的。第一步:获得正在运行的进程的进程号ps -ef | grep <进程名>我的就是:找到该进程的进程id,我的就是2486400, 下面根据这个进程号,attach到这个进程上去。第二步: gdb attach <pi...
2018-11-14 18:01:59 15112
原创 pip 安装 uwsgi 出现错误
错误提示:Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-1a5m19e6/uwsgi/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');...
2018-11-02 11:56:12 885
原创 文件系统中目录和文件的理解
在最开始的开始,让我们了解一下两个事实:1、目录文件和普通文件都是文件2、操作系统想要管理这些文件,就需要得到两个东西,目录项(有时候也叫FCB)和文件内容其中目录项存放三个主要的内容:文件的名字,ID号,文件内容在物理设备的存储地址。那操作系统里的文件系统是怎么处理这些事务的。以Unix操作系统为例:不管是读文件,写文件,还是删除文件,重命名文件。最开始都需要查找到这个文...
2018-10-22 20:45:40 2972
原创 对C++ 虚函数的理解
今天下午看一个开源项目的源码时候,碰到了虚函数。为此,就去查资料了解一下C++虚函数实现机制。先上代码,对着代码讲。#include <iostream>#include <stdio.h>using namespace std;class Animal{public: virtual void eat(); // eat 指定为虚函数 v...
2018-10-16 20:30:50 307
原创 建立一个Ceph S3网关服务器
写作背景是这样的,公司有个项目,需要通过Ceph对象存储网关写1亿张图片到Ceph集群中,由于一个网关写入的速度比较慢,为了缩短写入时间,需要增加一些服务器作为网关,来将数据写入到集群中。 背景说完了,任务是增加一台集群外的服务器作为网关,如下图示意: 首先在服务器上安...
2018-09-14 11:03:24 1646
原创 Navicat 连接远程Mysql
在远程主机上1.修改mysql的配置文件,将绑定主机这一项注释掉:root@zjt:/# sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 2.进入mysql交互模式,执行以下命令,记得修改成自己的密码:mysql> grant all on *.* to root@'%' identified by '你的密码' wi...
2018-09-08 11:09:05 231
转载 Ceph集群增加Mon时出错:admin_socket: exception getting command descriptions: [Errno 2] No such file or direc
遇到这种错误,有两种可能:1. 配置项需要修改: 见下文解决方法2. hostname 需要修改: 见网址正文如下:当我用ceph-deploy工具为集群增加Mon时,即执行root@zjt-admin:/ceph/cluster# ceph-deploy --overwrite-conf mon add zjt-02出现以下错误:由下面这条警告知道,在ce...
2018-08-30 15:49:39 13868
原创 Ubuntu16.04如何挂载一块裸盘(分区,格式化和挂载三步走)
在给电脑加入一块硬盘,或者给云主机加一块硬盘后,需要经过:分区 ->格式化 -> 挂载 这三个步骤,才能最终使用上这块硬盘。 首先,使用命令,列出想要使用的硬盘的情况。root@zjt-03:/# fdisk -l 这里,我想要挂载的是 /dev/vdb这块硬盘。 使用下面的命令管理这块硬盘, 执行这条...
2018-08-27 12:44:29 5349
原创 如何调试ceph-fuse
先说一下环境,本文采用的是Ubuntu16.04操作系统,Ceph版本12.2.7。创建一个开发者集群1.把Ceph源码git clone下来,git clone https://github.com/ceph/ceph.git2.这时候当前文件夹下面会有ceph子文件夹,进入ceph子文件夹,cd ceph3.切换到稳定版12.2.7, git checkout v12.2.7...
2018-08-23 17:23:15 776 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人