linux服务器

高级必问:Linux 中的零拷贝技术是什么?

南笙酒味 提交于 2020-04-05 22:57:05
作者:卡巴拉的树 https://www.jianshu.com/p/fad3339e3448 正文 本文探讨Linux中 主要的几种零拷贝技术 以及零拷贝技术 适用的场景 。为了迅速建立起零拷贝的概念,我们拿一个常用的场景进行引入: 01 引文 在写一个服务端程序时(Web Server或者文件服务器),文件下载是一个基本功能。这时候服务端的任务是:将服务端主机磁盘中的文件不做修改地从已连接的socket发出去,我们通常用下面的代码完成: while((n = read(diskfd, buf, BUF_SIZE)) > 0) write(sockfd, buf , n); 基本操作就是循环的从磁盘读入文件内容到缓冲区,再将缓冲区的内容发送到socket。但是由于Linux的I/O操作默认是缓冲I/O。这里面主要使用的也就是read和write两个系统调用,我们并不知道操作系统在其中做了什么。实际上在以上I/O操作中,发生了多次的数据拷贝。 当应用程序访问某块数据时,操作系统首先会检查,是不是最近访问过此文件,文件内容是否缓存在内核缓冲区,如果是,操作系统则直接根据read系统调用提供的buf地址,将内核缓冲区的内容拷贝到buf所指定的用户空间缓冲区中去。如果不是,操作系统则首先将磁盘上的数据拷贝的内核缓冲区,这一步目前主要依靠DMA来传输

将SpringBoot项目部署到linux服务器供外网访问,很简单,瞅瞅

南楼画角 提交于 2020-04-05 18:48:33
1. 前言 →_→ Linux安装JDK并配置环境变量 →_→ Linux安装MySQL 当然了不用mysql也没关系,如果你的项目中用到了mysql数据库就弄一下吧,然后将自己的表创建,记得将3306端口号开启(防火墙端口)还有阿里的端口权限(我用的阿里的服务器) 注意:后面的话你项目的端口号也是要开启的,不然访问不了。 SpringBoot中已内置tomcat →_→ 配置阿里ECS端口权限 2. 将本地的springboot项目通过maven打包 1.clean: 清除编译后的目录(target) 2.compile: 重新编译项目(生成target) 2.package: 将项目打包放到target目录 3. 上将target目录下的打包好的jar上传到服务器 我这里使用的是SecureFX工具(工具在上面Linux安装Mysql的博客中有分享) 将jar包拖拽进来即可( 注意: 可能会问你选择什么方式上传,记得要选binary二进制方式,如果选择ASCll字符码方式上传,会导致jar包内容丢失,jar损坏无法使用 ) 4.然后我们使用SecureCRT工具访问linux服务器 (工具在上面Linux安装Mysql的博客中有分享) 4.1 开启项目端口号(防火墙) 使用如下命令: 示例: 我的项目端口号为10010 #打开10010端口号 --permanent表示永久生效

linux安装nginx、jdk、redis

孤街浪徒 提交于 2020-04-05 17:19:09
因项目需要申请了新服务器,故要重新配置环境。 nginx安装 : 一键安装四个依赖: yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 进入/usr/local/src目录,创建nginx文件夹 cd /usr/local/src mkdir nginx 进入刚创建的nginx目录,下载nginx的tar包 cd nginx wget https://nginx.org/download/nginx-1.17.9.tar.gz 很意外,我的提示【错误: 证书通用名 “*.nginx.com” 与所要求的主机名 “nginx.org” 不符。要以不安全的方式连接至 nginx.org,使用‘--no-check-certificate’。 修改下载命令 wget --no-check-certificate https://nginx.org/download/nginx-1.17.9.tar.gz 解压 tar -zxvf nginx-1.17.9.tar.gz 进入解压生成的目录,进行配置 cd nginx-1.17.9 ./configure 编译安装 make make install 查找安装路径 whereis nginx nginx.conf部分配置 #配置Nginx

Linux主机IP地址配置

时光总嘲笑我的痴心妄想 提交于 2020-04-05 17:18:05
1 简述osi七层模型和TCP/IP五层模型 osi七层模型有如下层次构成: (1) 物理层:二进制传输,为启动、维护以及关闭物理链路定义了电气规范、机械规范、过程规范和功能规范; (2) 数据链路层:定义如何格式化数据以便进行传输以及如何控制对网络的访问,支持数据帧校验; (3) 网络层:路由数据包,选择传递数据包的最佳路径,支持寻址和路径选择; (4) 传输层:确保数据传输的可靠性;建立、维护和终止虚拟电路;通过错误检测和恢复;信息流控制保障可靠性; (5) 会话层:建立、管理和终止在应用程序之间的会话; (6) 表示层:确保接受系统可以读出该数据;格式化数据;协商用于应用层的数据传输语法;提供加密; (7) 应用层:为应用程序进程(例如,电子邮件、文件传输和终端仿真)提供网络服务;提供用户身份验证; TCP/IP五层模型由物理层、数据链路层、网络层、传输层和应用层构成; 2 总结描述TCP三次握手四次挥手 TCP三次握手: (1) 客户端A发送一个初始化报文SYN=1,序列号seq=x,不携带数据;同时TCP客户进程变为SYN-SENT状态; (2) 服务B收到客户端A发送的初始化报文,将TCP进程变为SYN-RCVD状态;同时回应初始化报文SYN=1,确认ACK=1,序列号seq=y,确认已收到序号为x的报文了ack=x+1; (3)

linux下安装启动elasticsearch和可视化工具ElasticHD

♀尐吖头ヾ 提交于 2020-04-05 16:32:32
环境:linux 64位服务器 JDK8 1、下载elasticsearch压缩包 这里推荐一个国内下载站,下载比较快 https://thans.cn/mirror/elasticsearch.html 我下载的是 elasticsearch-7.1.0-linux-x86_64.tar.gz 版本 2、解压 tar -zxvf elasticsearch-7.1.0-linux-x86_64.tar.gz 3、修改配置 vim elasticsearch-7.1.0/config/elasticsearch.yml 4、修改 vm.max_map_count : sudo vim /etc/sysctl.conf 增加一行 vm.max_map_count=655360 执行生效 sudo sysctl -p 5、启动elasticsearch : nohup ./elasticsearch-7.1.0/bin/elasticsearch & 6、访问 ip:9200 7、下载elasticHD wget https://github.com/360EntSecGroup-Skylar/ElasticHD/releases/download/1.4/elasticHD_linux_amd64.zip 8、解压 unzip elasticHD_linux_amd64.zip 得到

linux服务器搭建svn服务器

梦想与她 提交于 2020-04-05 15:02:19
简介 Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库(repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。 SVN 的一些概念 repository(源代码库):源代码统一存放的地方 Checkout(提取):当你手上没有源代码的时候,你需要从repository checkout一份 Commit(提交):当你已经修改了代码,你就需要Commit到repository Update (更新):当你已经Checkout了一份源代码, Update一下你就可以和Repository 上的源代码同步,你手上的代码就会有最新的变更 日常开发过程其实就是这样的(假设你已经Checkout并且已经工作了几天):Update(获得最新的代码) —>作出自己的修改并调试成功 —> Commit(大家就可以看到你的修改了) 。 如果两个程序员同时修改了同一个文件呢, SVN可以合并这两个程序员的改动,实际上SVN管理源代码是以行为单位的,就是说两个程序员只要不是修改了同一行程序,SVN都会自动合并两种修改。 如果是同一行,SVN会提示文件Confict, 冲突,需要手动确认 1. yum

Linux 常见缩写命令英文全称

久未见 提交于 2020-04-04 21:18:34
linux 命令参考Linux 命令大全: https://man.linuxde.net/ awk = "Aho Weiberger and Kernighan" 三个作者的姓的第一个字母, awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。 bash = GNU Bourne-Again Shell 大多Linux的默认shell bc = Basic Calculator 基础计算器,是一种支持任意精度的交互执行的计算器语言。 bg = BackGround 用于将作业放到后台运行,使前台可以执行其他任务。 fg = ForeGround 用于将后台作业(在后台运行的或者在后台挂起的作业)放到前台终端运行。 cal = calendar 日历,后跟月份数、年份数可显示指定月日历 rpm = RedHat Package Manager RedHat软件包管理工具 tar = tape archive 可以把一大堆的文件和目录全部打包成一个文件 chgrp = Change group 改变文件归属用户组 chmod = Change mode 用来变更文件或目录的权限。 chown = Change owner 改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。 logname =

linux运维工具nc

为君一笑 提交于 2020-04-04 20:23:28
Netcat被称为tcp/ip最好用的工具,也是linux开发/运维人员的必备技巧; 1.安装nc yum install nc -y 2.常用功能 2.1 端口测试 查看服务器的某个端口是否开启 nc -vz ip port nc -vz 192.168.1.1 80 -v:显示多点信息 -z:不发送数据 例如: 端口范围扫描 nc -v -v -w3 -z 192.168.1.1 80-88 两次-v显示更详细的内容; -w3:设置扫描超时时间 3秒; 2.2 传输测试 192.168.1.1 nc -l -p 8080 # 监听8080端口 192.168.1.2 nc 192.168.1.1 8080 这样两边就可以会话了,可以理解为远程聊天了 UDP会话 192.168.1.1 nc -u -l -p 8080 # 监听8080端口 192.168.1.2 nc -u 192.168.1.1 8080 2.3 文件传输 主机A想往主机B传输文件怎么办? 192.168.1.1 nc -l -p 8080 > aa.zip # 监听8080端口 192.168.1.2 nc 192.168.1.1 8080 < aa.zip #将aa.zip发送到指定主机+端口 2.4 测试网速 192.168.1.1 nc -l -p 8080 | pv 192.168.1.2 nc

Linux安装Redis

痞子三分冷 提交于 2020-04-04 15:41:55
Redis数据库分为两个部分,一个服务端,一个客户端。 安装环境 1.服务器环境: 如下使用Kali系统。 uname -a #查看内核版本和信息 lsb_release -a #查看发行版信息 2.Redis版本 2.8.3 3.Kali系统必须预装gcc、tcl 安装Reids 先cd进到你想放redis的目录,我放在/opt/programfiles/下; root@kali:/opt/programfiles# wget http://download.redis.io/releases/redis-2.8.3.tar.gz root@kali:/opt/programfiles# tar xzf redis-2.8.3.tar.gz root@kali:/opt/programfiles# cd redis-2.8.3 root@kali:/opt/programfiles/redis-2.8.3# make 查看redis生成二进制执行文件: ll src/redis* resids-cli 指 客户端 redis-server 指 服务端 将二进制文件安装到/usr/local/bin目录下: make install # 如果不是root权限 命令前面加上 sudo 查看安装路径: wich redis-server 后面启动也是这个路径的执行文件。 到这里安装完成

linux Nginx部署

断了今生、忘了曾经 提交于 2020-04-04 09:22:35
一. Nginx的部署 tips:此文档适用于linux centos6或者centos7 1. Nginx介绍 Nginx(“engine x”)是⼀款是由俄罗斯的程序设计师Igor Sysoev所开发⾼性能的 Web和 反向代理 服务器,也是⼀个 IMAP/POP3/SMTP 代理服务器。 轻量级的web服务器 延伸版本tengine(淘宝)、openresrt(章亦春)等 http://nginx.org 官⽹ http://www.nginx.cn/doc/index.html 中⽂⽂档 2. 安装依赖工具 [root@localhost ~]# yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 3. 安装PCRE # PCRE 作用是让 Nginx 支持 Rewrite 功能。 [root@localhost ~]# cd /usr/local/src/ [root@localhost src]# wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz [root@localhost src]# tar zxvf pcre-8.35.tar.gz [root@localhost