FastDFS分布式文件系统(Linux安装详细教程)

2023-10-27


文章内容来源于百度(原文链接会放到章末),在下只是把零零散散的内容放在了一起(~ ̄▽ ̄)~

介绍

FastDFS 是一个由 C 语言实现的开源轻量级分布式文件系统,作者余庆(happyfish100),支持 Linux、FreeBSD、AID 等 Unix 系统,解决了大数据存储和读写负载均衡等问题,适合存储 4KB~500MB 之间的小文件,如图片网站、短视频网站、文档、app 下载站等,UC、京东、支付宝、迅雷、酷狗等都有使用。该软件作者是阿里巴巴大牛、chinaUnix版主余庆个人独立开发的。

技术论坛: http://bbs.chinaunix.net/forum-240-1.html

FAQ:http://bbs.chinaunix.net/thread-1920470-1-1.html

资源地址: https://sourceforge.net/projects/fastdfs/

源码资源: https://github.com/happyfish100

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。

跟踪器主要做调度工作,在访问上起负载均衡的作用。

存储节点存储文件,完成文件管理的所有功能:就是这样的存储、同步和提供存取接口,FastDFS同时对文件的metadata进行管理。

所谓文件的meta data就是文件的相关属性,以键值对(key value)方式表示,如:width=1024,其中的key为width,value为1024。文件metadata是文件属性列表,可以包含多个键值对。

跟踪器和存储节点都可以由一台或多台服务器构成。跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务。其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。

为了支持大容量,存储节点(服务器)采用了分卷(或分组) 的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。

在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。

当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。

FastDFS中的文件标识分为两个部分:卷名和文件名,二者缺一不可。

1、web项目架构

在这里插入图片描述

在这里插入图片描述

2、架构

tracker Server:

  • 主节点,跟踪服务器,主要做调度工作,在访问上起负载均衡的作用。

  • 记录storage server的状态,是连接Client和Storage server的枢纽。

  • FastDFS集群中的Tracker server可以有多台,Trackerserver之间是相互平等关系同时提供服务

  • Trackerserver不存在单点故障。客户端请求Trackerserver采用轮询方式,如果请求的tracker无法提供服务则换另一个tracker。

Storage Server:

  • 存储服务器,文件和meta data都保存到存储服务器上

  • storage集群由一个或多个组构成,集群存储总容量为集群中所有组的存储容量之和。

  • 一个组由一台或多台存储服务器组成,组内的Storage server之间是平等关系

  • 不同组的Storageserver之间不会相互通信,同组内的Storageserver之间会相互连接进行文件同步,从而保证同组内每个storage上的文件完全一致的。

  • 一个组的存储容量为该组内存储服务器容量最小的那个,由此可见组内存储服务器的软硬件配置最好是一致的。

  • Storage server会连接集群中所有的Tracker server,定时向他们报告自己的状态,包括磁盘剩余空间、文件同步状况、文件上传下载次数等统计信息

group: 组,也称为卷。同组内服务器上的文件是完全相同的

文件标识: 包括两部分:组名和文件名(包含路径)

meta data: 文件相关属性,键值对(Key Value Pair)方式,如:width=1024,heigth=768

3、上传流程

在这里插入图片描述

  • client询问tracker上传到的storage,不需要附加参数
  • tracker返回一台可用的storage
  • client直接和storage通讯完成文件上传

内部机制流程如下:
1、选择tracker server
当集群中不止一个tracker server时,由于tracker之间是完全对等的关系,客户端在upload文件时可以任意选择一个trakcer。选择存储的group
当tracker接收到upload file的请求时,会为该文件分配一个可以存储该文件的group,支持如下选择group的规则;

  • 1、Round robin,所有的group间轮询
  • 2、Specified group,指定某一个确定的group.
  • 3、Load balance,剩余存储空间多多group优先

2、选择storage server
当选定group后,tracker会在group内选择一个storage server给客户端,支持如下选择storage的规则:

  • 1、Round robin,在group内的所有storagei间轮询
  • 2、First server ordered by ip,按ip排序
  • 3、First server ordered by priority,按优先级排序(优先级在storage上配置)

3、选择storage path
当分配好storage server后,客户端将向storage发送写文件请求,storage将会为文件分配一个数据存储目录,支持如下规则:

  • 1、Round robin,多个存储目录间轮询
  • 2、剩余存储空间最多的优先

4、生成Fileid
选定存储目最之后,storage会为文件生一个Fileid,由storage sever ip、文件创建时间、文件大小、文件crc32和一个随机数拼接而成。然后将这个二进制串进行base64编码,转换为可打印的字符串。

选择两级目录
当选定存储目最之后,storage会为文件分配一个fied,每个存诸目最下有两级256*256的子目录,,storage会按文件fileid进行两次hash (队),路由到其中一个子目录,然后将文件t以filfed为文件名存储到该子目录下。

5、生成文件名
当文件存特到某个子目录后,即认为该文件存储成功,接下来会为该文件生成个文件名,文件名由group、存储目录、两级子目录。fileid、文件后缀名(由客户端指定,主要用于区分文件作类型)拼接而成

4、下载流程

在这里插入图片描述

  • client询问tracker下载文件的storage,参数为文件标识(组名和文件名)
  • tracker返回一台可用的storage
  • client直接和storage通讯完成文件下载

在这里插入图片描述

安装教程

我将会把软件安装在opt/fastdfs的目录下
在这里插入图片描述

1、安装libfastcommon

(1)、获取libfastcommon安装包:

wget https://github.com/happyfish100/libfastcommon/archive/V1.0.38.tar.gz

(2)、解压安装包:tar -zxvf V1.0.38.tar.gz

(3)、进入目录:cd libfastcommon-1.0.38

(4)、执行编译:./make.sh
在这里插入图片描述
(5)、安装:./make.sh install
在这里插入图片描述
可能遇到的问题:

-bash: make: command not found
-bash: gcc: command not found

解决方案:

debian通过apt-get install gcc make安装
centos通过yum -y install gcc make安装

2、安装FastDFS

(1)、获取fdfs安装包:

wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz

(2)、解压安装包:tar -zxvf V5.11.tar.gz

(3)、进入目录:cd fastdfs-5.11

(4)、执行编译:./make.sh
在这里插入图片描述
(5)、安装:./make.sh install
在这里插入图片描述
(6)、查看可执行命令:ls -la /usr/bin/fdfs*
在这里插入图片描述

3、配置Tracker服务

(1)、进入/etc/fdfs目录,有三个.sample后缀的文件(自动生成的fdfs模板配置文件),通过cp命令拷贝tracker.conf.sample,删除.sample后缀作为正式文件:
在这里插入图片描述
在这里插入图片描述

(2)、编辑tracker.conf:vi tracker.conf,修改相关参数

base_path=/home/yuqing/fastdfs  #tracker存储data和log的跟路径,必须提前创建好
port=22122 #tracker默认22122
http.server_port=80 #http端口,需要和nginx相同,只需和nginx端口对应就可以,我的是80

以上的内容其实只修改了http端口,其他都使用的是默认的。
注:记得自己去建好文件夹
在这里插入图片描述

(3)、启动tracker(支持start|stop|restart):

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start

(4)、查看端口情况:

netstat -apn|grep fdfs

在这里插入图片描述
可能遇到的报错:

/usr/bin/fdfs_trackerd: error while loading shared libraries: libfastcommon.so: cannot open shared object file: No such file or directory

解决方案:建立libfastcommon.so软链接

ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so

4、配置Storage服务

(1)、进入/etc/fdfs目录,有cp命令拷贝storage.conf.sample,删除.sample后缀作为正式文件
在这里插入图片描述
(2)、编辑storage.conf:vi storage.conf,修改相关参数:

base_path=/home/yuqing/fastdfs #storage存储data和log的跟路径,必须提前创建好
port=23000 #storge默认23000,同一个组的storage端口号必须一致
group_name=group1 #默认组名,根据实际情况修改
store_path_count=1 #存储路径个数,需要和store_path个数匹配
store_path0=/home/yuqing/fastdfs #如果为空,则使用base_path
tracker_server=自己的ip:22122 #配置该storage监听的tracker的ip和port

以上的配置,基本使用默认的,需要修改的是tracker_server,填写自己的虚拟机或服务器的ip。
注意:
假如是服务器,记得加安全组,开放端口23000、22122
(3)、启动storage(支持start|stop|restart):

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start

(4)、查看端口情况:netstat -apn|grep fdfs
在这里插入图片描述
(5)、通过monitor来查看storage是否成功绑定:

/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

在这里插入图片描述

5、安装Nginx和fastdfs-nginx-module模块

(1)、下载Nginx安装包

wget http://nginx.org/download/nginx-1.15.2.tar.gz

(2)、下载fastdfs-nginx-module安装包

wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz

(3)、解压nginx:tar -zxvf nginx-1.15.2.tar.gz

(4)、解压fastdfs-nginx-module:tar -xvf V1.20.tar.gz
在这里插入图片描述
(5)、进入nginx目录:cd nginx-1.10.1

(6)、安装依赖的库

apt-get update	  或    yum -y update
apt-get install libpcre3 libpcre3-dev openssl libssl-dev libperl-dev  或  yum -y  install libpcre3 libpcre3-dev openssl libssl-dev libperl-dev

可能出现的错误:
在这里插入图片描述
问题解决,更换yum源

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

倘若还是不行,第二个解决办法:

# 进入yum目录
cd /etc/yum.repos.d

# 删除目录下所有文件(注意完整复制,不要漏了那个点)
rm -rf ./*

# 安装正确的源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

# 生成缓存
yum makecache

(7)、配置,并加载fastdfs-nginx-module模块:

./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module-1.20/src/

可能会出现的问题:
在这里插入图片描述解决办法直接将fastdfs-nginx-module-1.20文件夹,放到/usr/local/src/下
在这里插入图片描述
(8)、编译安装:

make
make install

可能出现的问题1:
在这里插入图片描述
解决办法1
Nginx还需要安装其它依赖环境 pcre、zlib、openssl, 这些是解压包、ssl相关的依赖

yum -y install gcc-c++ 

yum -y install pcre pcre-devel
yum -y install zlib zlib-devel
yum -y install openssl openssl-devel  

解决的办法2:
1)、安装下面配置

yum -y install make zlib-devel gcc-c++ libtool openssl openssl-devel

2)、重新configure

./configure 

3)、编译

make && make install

假如yum -y install make zlib-devel gcc-c++ libtool openssl openssl-devel运行这个命令发生下列报错时:
在这里插入图片描述
解决办法:
需要修改软件源mirrors 地址,具体操作如下:

# 进入yum.repos.d 目录下
cd /etc/yum.repos.d/

# 修改源链接
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*

# 要将之前的mirror.centos.org 改成 vault.centos.org
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*

可能会出现的问题2:
在这里插入图片描述
解决办法:
在这里插入图片描述
在fastdfs-nginx-module-1.20/src/下的config文件更改如下配置
(9)、查看安装路径:

whereis nginx

在这里插入图片描述
(10)、启动、停止:

cd /usr/local/nginx/sbin/
./nginx
./nginx -s stop #此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程
./nginx -s quit #此方式停止步骤是待nginx进程处理任务完毕进行停止
./nginx -s reload

(11)、验证启动状态:

wget "http://127.0.0.1"

在这里插入图片描述

(12)、查看此时的nginx版本:发现fastdfs模块已经安装好了

/usr/local/nginx/sbin/nginx -V

在这里插入图片描述

6、配置Nginx和fastdfs-nginx-module模块

(1)、配置mod-fastdfs.conf,并拷贝到/etc/fdfs文件目录下

cd fastdfs-nginx-module-1.20/src/
cp mod_fastdfs.conf /etc/fdfs

在这里插入图片描述
(2)、进入/etc/fdfs修改mod-fastdfs.conf:

base_path=/opt/fastdfs
tracker_server=自己的ip:22122 #tracker的地址
url_have_group_name=true #url是否包含group名称
storage_server_port=23000 #需要和storage配置的相同
store_path_count=1  #存储路径个数,需要和store_path个数匹配
store_path0=/home/yuqing/fastdfs #文件存储的位置

(3)、配置nginx,80端口server增加location如图:

cd /usr/local/nginx/conf/
vi nginx.conf

location /group1/M00/ {
      ngx_fastdfs_module;
}

(4)、最后需要拷贝fastdfs解压目录中的http.conf和mime.types:

cd /opt/fastdfs/fastdfs-5.11/conf
cp mime.types http.conf /etc/fdfs/

在这里插入图片描述
至此FastDFS的安装与配置就完成啦,下面进行测试。

7、FastDFS常用命令测试

(1)、上传文件

1)、进入/etc/fdfs目录,有cp命令拷贝client.conf.sample,删除.sample后缀作为正式文件;
在这里插入图片描述
2)、修改client.conf相关配置:

base_path=/home/yuqing/fastdfs //tracker服务器文件路径
tracker_server=自己的ip:22122 //tracker服务器IP地址和端口号
http.tracker_server_port=80 # tracker服务器的http端口号,必须和tracker的设置对应起来

3)、新建一个测试文档test.txt,内容为: abcdefg

4)、
命令:

/usr/bin/fdfs_upload_file <config_file> <local_filename>

示例:

/usr/bin/fdfs_upload_file  /etc/fdfs/client.conf test.txt

5)、查看结果,进入storage的data目录:
在这里插入图片描述

组名:group1
磁盘:M00
目录:00/00
文件名称:group1/M00/00/00/rBF2SGJIgIKAdcsnAAAACS5AbJQ149.txt

注:记得重启nginx

systemctl restart nginx

6)、通过wget和浏览器方式访问成功:
wget http://自己的ip/group1/M00/00/00/rBF2SGJIgIKAdcsnAAAACS5AbJQ149.txt
在这里插入图片描述
在这里插入图片描述

(2)、下载文件

命令:

/usr/bin/fdfs_download_file <config_file> <file_id> [local_filename]

示例:

/usr/bin/fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/rBF2SGJIgIKAdcsnAAAACS5AbJQ149.txt

(3)、删除文件

命令:

/usr/bin/fdfs_delete_file <config_file> <file_id>

示例:

/usr/bin/fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/rBF2SGJIgIKAdcsnAAAACS5AbJQ149.txt

查看结果,进入/home/yuqing/fastdfs的data目录文件不存在,通过wget再次获取404:
在这里插入图片描述
至此安装的流程就走完了,可以拿到后台去愉快的玩耍了(σ゚∀゚)σ…:*☆哎哟不错哦,本人在虚拟机和服务器都搭了一次,踩了好多坑,希望这篇文章对你有帮助─=≡Σ(((つ•̀ω•́)つ

文章内容来源

主要来源
介绍的内容来源https://www.cnblogs.com/gqzdev/p/13436784.html
安装教程的来源https://www.cnblogs.com/handsomeye/p/9451568.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FastDFS分布式文件系统(Linux安装详细教程) 的相关文章

  • Linux C++ 错误:未定义对“dlopen”的引用

    我在 Linux 上使用 C Eclipse 工作 并且想要使用一个库 Eclipse 向我显示一个错误 undefined reference to dlopen 你知道解决办法吗 这是我的代码 include
  • 无法在 Linux 的 NetBeans 中编译 C++ 和 OpenGL (GLFW) 的简单源代码

    我开始学习 OpenGL glfw 我从教程中复制源代码并尝试编译它 但出现了错误 我想我已经正确安装了所有头文件 glm glfw 等 这是我的来源 我没有在头文件中使用这些字符 include iostream include stdi
  • 如果文件没有行尾字符,则 wc -l 不计算文件的最后一个

    我需要计算 unix 文件的所有行数 该文件有 3 行 但是wc l仅给出 2 个计数 我知道它不计算最后一行 因为它没有行尾字符 任何人都可以告诉我如何计算这一行吗 grep c返回匹配行的数量 只需使用一个空字符串 作为您的匹配表达式
  • Bash:检查是否给出了参数(例如是否有参数“-a”?)

    我有一个脚本 它应该接受 2 个参数 s 和 d 如果未给出 d 参数 我想删除我的调试文件 与 s 相同 如何检查 1 或 2 是否为 s 或 d 舒尔有两个参数 我可以做到 蛮力 if test 1 d test 2 d then rm
  • Pthreads - 高内存使用率

    我正在用 C 编写一些东西 在 256Mb 系统上的 Linux 中创建大量 Pthread 我通常有 200Mb 的免费空间 当我使用少量线程运行该程序时 它可以工作 但是一旦我让它创建大约 100 个线程 它就会出现错误 因为系统内存不
  • 何时用引号将 shell 变量括起来?

    我应该或不应该在 shell 脚本中用引号括住变量吗 例如 下列说法正确的是 xdg open URL eq 2 or xdg open URL eq 2 如果是这样 为什么 一般规则 如果它可以为空或包含空格 或实际上任何空格 或特殊字符
  • 如何在 Vim 中突出显示 Bash 脚本?

    我的 Vim 编辑器自动突出显示 PHP 文件 vim file php HTML 文件 vim file html 等等 但是当我输入 vim file在里面写一个Bash脚本 它不会突出显示它 我如何告诉 Vim 将其突出显示为 Bas
  • 对于任何真实数据集,数据压缩比的最小可能值是多少

    我在写信ZLIB类似于嵌入式硬件压缩器的 API 它使用 deflate 算法来压缩给定的输入流 在进一步讨论之前 我想解释一下数据压缩率 数据压缩率定义为未压缩大小与压缩大小之间的比率 压缩比通常大于一 这意味着压缩数据通常比未压缩数据小
  • 使用 shell 脚本发送 HTML 邮件

    如何使用 shell 脚本发送 HTML 电子邮件 首先 您需要撰写消息 最低限度由这两个标头组成 MIME Version 1 0 Content Type text html 以及适当的消息正文 p Hello world p 获得后
  • 更新Linux中的包含路径

    我的 my path to file 文件夹中有几个头文件 我知道如何将这些文件包含在新的 C 程序中 但每次我都需要在包含它之前输入头文件的完整路径 我可以在linux中设置一些路径变量 以便它自动查找头文件吗 您可以创建一个 makef
  • Python glob,操作系统,相对路径,将文件名放入列表中[重复]

    这个问题在这里已经有答案了 我正在尝试创建一个目录中所有文件的列表 其中文件名以 root 结尾 在阅读了论坛中的一些文章后 我尝试使用 glob 和 os listdir 的基本策略 但我都遇到了麻烦 首先 当我使用 import glo
  • Crontab 每 5 分钟一次 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我如何告诉 crontab 每 5 分钟运行一次 但从每小时的第二分钟开始 换句话说 我想在以下时间执行我的脚本minute 5 2 例如 我的脚本应
  • LINUX:如何锁定内存中进程的页面

    我有一个 LINUX 服务器 运行一个具有大量内存占用的进程 某种数据库引擎 该进程分配的内存太大 需要将其中一部分换出 换出 我想做的是将所有其他进程 或正在运行的进程的子集 的内存页面锁定在内存中 以便只有数据库进程的页面被换出 例如
  • 嵌入清单文件以要求具有 mingw32 的管理员执行级别

    我正在 ubuntu 下使用 i586 mingw32msvc 交叉编译应用程序 我很难理解如何嵌入清单文件以要求 mingw32 具有管理员执行级别 对于我的例子 我使用了这个hello c int main return 0 这个资源文
  • 如何在线程创建和退出时调用函数?

    include
  • 如何在不使用 IDE 的情况下在 Linux 上运行 Java 项目

    我是 Java 新手 基本上 我开发了一个java项目 其中包含Eclipse中的多个Java包 该项目在我安装了 redhat Linux 的桌面上运行正常 然而 我需要在一个更强大的没有安装X11的Linux服务器 redhat ent
  • Tomcat Intellij Idea:远程部署

    RackSpace 云服务器 Ubuntu 12 04 Intellij Idea 11 1 2 Windows 8 Tomcat 7 0 26 JDK 6 在 Intellij Idea 上 当我尝试在远程 Tomcat 7 服务器上运行
  • 批量删除文件名中包含 BASH 中特殊字符的子字符串

    我的目录中有一个文件列表 opencv calib3d so2410 so opencv contrib so2410 so opencv core so2410 so opencv features2d so2410 so opencv
  • 有没有一种快速方法可以从 Jar/war 中删除文件,而无需提取 jar 并重新创建它?

    所以我需要从 jar war 文件中删除一个文件 我希望有类似 jar d myjar jar file I donot need txt 的内容 但现在我能看到从 Linux 命令行执行此操作的唯一方法 不使用 WinRAR Winzip
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win

随机推荐

  • 【Linux驱动开发】DM9051NP的linux版本驱动

    对于没有内置EMAC的处理器 如全志F1C100S等 如果需要连接有线网 一般只有2种办法 SPI接口扩展 DM9051NP 和USB接口扩展 本文提供SPI接口的DM9051的驱动 以及官方的驱动问题修正 环境 处理器 F1C100S 软
  • 关于炸金花小游戏的代码组成

    分析 炸金花的主要流程 创建一副牌 打乱这副牌 发牌 比较 得出各玩家的最终点数 创建牌 通过两个数组创建一个混编数组 洗牌 利用Math random函数 打乱数组 加上sort函数进行打乱 sort function a b retur
  • 【已解决】戴尔笔记本电脑的卡顿问题.

    问题说明 戴尔笔记本电脑有个毛病 就是时不时的会卡一下 有的时候几天都不卡顿一次 有的时候几分钟就卡顿一次 这个问题让人很不舒服 也很困惑 怎么才能解决这个问题呢 本文给出了答案 查找原因 根据任务管理器详细信息选项卡 卡顿检测程序和录屏软
  • 手风琴效果

  • Java探针-Java Agent技术-阿里面试题 javaagent 动态字节码修改 skywalking -无侵入探针深入理解

    关注UAV MOF工作原理 同创和dynatrace探针如何重启preload注入的 Docker 动态修改容器中的环境变量 动态修改 java JAVA OPTS linux进程启动拦截判断 0 好像说明白了一些 Java Agent 一
  • 学习笔记:cpu的简易架构及MMU的工作原理

    1 cpu的简易架构及指令的执行流程 预取器将指令 二进制 取出交由译码器分析 译码器分析出指令所做的操作之后 将运算数据交由寄存器 通过算数逻辑单元 ALU 计算 再将计算结果保存于寄存器中 2 MMU的工作原理 MMU 它是一种负责处理
  • Java多线程异常抛出后的表现及捕获

    一 多线程抛出异常后并不影响主线程及其他子线程的正常执行 public static void main String args System out println Main Thread start Thread t1 new Thre
  • 【C++】类和对象-C++运算符重载

    运算符重载 1 加号运算符重载 代码 include
  • 数据结构习题及解析一

    来源 我是码农 转载请保留出处和链接 本文链接 数据结构习题解析一 一 选择题 1 顺序表是线性表的 A 链式存储结构 B 顺序存储结构 C 索引存储结构 D 散列存储结构 解析 本题考点是顺序表的基本特点 顺序表是在计算机内存中以数组的形
  • eclipse如何一步一步运行程序

    1 首先设置断点 断点 断点是调试器设置源程序在执行过程中自动进入中断模试的一个标记 当程序运行到断点时 程序中断执行 进入调试状态 设置断点方法如下 在你想要设置断点的代码对应的左侧蓝条处双击 出现一个蓝色小点视为设置成功 2 调试 法1
  • [工具

    在VSCode中 你可以使用 Developer Show Running Extensions 命令来查看当前运行的所有插件 以下是在VSCode中查看插件CPU占用的步骤 打开VSCode 确保你的编辑器正常运行 按下Ctrl Shif
  • Allegro布局走线对齐工具

    下载路径 验证码 4zv2 操作步骤 1 解压icons rar至目录 cadence SPB 16 6 share local pcb icons 2 解压skill rar至目录Cadence SPB 16 6 share local
  • 4.cmd中git reflog 对于中文乱码显示的解决

    cmd中git reflog 对于中文乱码显示的解决 cmd中 set LESSCHARSET utf 8 这样就解决了在cmd中出现中文乱码情况
  • 关于layui表单控件更新渲染失败问题的解决办法

    问题发现 这个问题困扰了我几天 由于是第一次用layui的表单控件 对其中的一些机制还不太清楚 有一次 我用js动态修改了表单控件input的title 发现运行后无法显示 查阅百度后还以为是html元素中 title属性是只允许设置一次的
  • windows_Docker_wsl2_修改镜像位置

    使用的是WSL2的版本 所以docker desktop在安装的时候创建两个wsl子系统 使用命令wsl l v all C Users liula gt wsl l all v NAME STATE VERSION docker desk
  • [自用]本人在Arch安装过程中遇到的问题与解决方法

    问题 grub2 多功能U盘引导Archlinux 2018 07 01 x86 64 iso 问题 解决 grub gt set isofile arch iso grub gt oopback loop hd0 1 isofile gr
  • 服务器安装m.2固态硬盘,安装M.2 SSD这些细节必须注意

    这一轮SSD价格调整不光让大家装机节省了不少钱 或者可以更便宜升级大容量了 还有个不错的消息 就是M 2 SSD的容量价格比越来越香了 一样的容量 有些2000MB s级别的中速M 2 SSD已经和540MB s的高速SATA SSD价格差
  • SpringBoot实现文件上传

    文章目录 系统页面 前端表单 后端代码 文件上传源码解析 系统页面 前端表单 想要实现多文件上传 输入框中使用multiple 后端代码 Slf4j Controller public class FormTestController 文件
  • Ubuntu 18.04.6字体大小调节(包含错误排除)

    1 安装 unity tweak tool sudo apt get isntall unity tweak tool 2 如果报错 源被锁定不可用 删除锁定源 sudo rm rf var lib dpkg lock frontend o
  • FastDFS分布式文件系统(Linux安装详细教程)

    文章目录 介绍 1 web项目架构 2 架构 3 上传流程 4 下载流程 安装教程 1 安装libfastcommon 2 安装FastDFS 3 配置Tracker服务 4 配置Storage服务 5 安装Nginx和fastdfs ng