当前位置: 首页 > news >正文

Linux云计算 |【第一阶段】SERVICES-DAY3

主要内容:

分离解析介绍、NTP时间服务、基础邮件服务(MX记录)、部署postfix邮件服务器、自定义YUM仓库

实操提前准备:

① 设置SELinux、关闭防火墙服务(两台主机)

[root@svr7 ~]# getenforce
Permissive
[root@svr7 ~]# systemctl stop firewalld
[root@svr7 ~]# systemctl disable firewalld

 ② 主机1:安装软件包,配置主配置文件及地址库文件,重启服务并验证服务

[root@svr7 ~]# yum -y install bind bind-chroot.x86_64   //安装软件包
[root@svr7 ~]# cp /etc/named.conf /root/     //备份主配置文件
[root@svr7 ~]# vim /etc/named.conf      //修改主配置文件
options {                        //全局配置directory "/var/named";
};
zone "lol.com" IN {               //区域配置type master;file "lol.com.zone";
};
[root@svr7 ~]# cd /var/named/
[root@svr7 named]# cp -p named.localhost lol.com.zone   //复制模板建立地址库
[root@svr7 named]# vim lol.com.zone
...
lol.com. NS svr7
svr7 A 192.168.4.7
www A 1.1.1.1
vip A 2.2.2.2
[root@svr7 named]# named-checkconf /etc/named.conf
[root@svr7 named]# named-checkzone lol.com /var/named/lol.com.zone
zone lol.com/IN: loaded serial 0
OK
[root@svr7 named]# systemctl restart named     //重启服务
[root@svr7 named]# nslookup www.lol.com
;; connection timed out; no servers could be reached
[root@svr7 named]# vim /etc/resolv.conf       //指定解析主机
nameserver 192.168.4.7
[root@svr7 named]# nslookup www.lol.com
Server: 192.168.4.7
Address: 192.168.4.7#53
Name: www.lol.com
Address: 1.1.1.1

③ 主机2:安装软件包,指定解析主机,验证服务

[root@pc207 ~]# yum -y install bind bind-chroot.x86_64
[root@pc207 ~]# vim /etc/resolv.conf        //指定解析主机
nameserver 192.168.4.7
[root@pc207 ~]# nslookup www.lol.com     //验证服务
Server: 192.168.4.7
Address: 192.168.4.7#53
Name: www.lol.com
Address: 1.1.1.1

一、分离解析概述(了解)

1)分离解析

当收到客户端的DNS查询请求的时候

  1. 能够区分客户端的来源地址;
  2. 为不同类别的客户端提供不同的解析结果(IP地址)

结论:不同客户的DNS查询请求,提供不同的解析结果,例如12306的访问,根据服务器就近原则,提供相应的解析结果。

2)典型适用场景

访问压力大的网站、购买CDN阿里云提供的内容分发服务

  • 在全国各地/不同网络内部署大量镜像服务节点;
  • 针对不同的客户端就近提供服务器;

二、NTP网络时间协议(Network Time Protocol)

作用:网络时间协议(NTP)用来同步网络上不同主机的系统时钟。所有受管理的主机可以与一台名为NTP服务器的指定时间服务器同步时间。

由于制造方面的差异,有些时钟走块走慢导致“时钟漂移”或“时间漂移”。为了尽量减小时钟漂移影响,使用NTP的主机定期可以与指定的NTP服务器进行联系,保持时钟同步。

国家授时中心服务器IP地址:210.72.145.39

NTP时钟以分层层次结构来加以组织。该层次结构中的每一层被称为层(stratum)。层这个概念描述了某机器距离权威时间源有多少个NTP跳,Stratum 0含有几乎没有时间漂移的时钟,比如原子钟。这些时钟无法通过网络直接使用。Stratum N服务器对照Stratum N-1服务器同步其时间。Stratum N时钟可以通过网络彼此连接。

(NTP最多可支持层次结构中的15层。Stratum 16被认为不同步、无法使用)

1)NTP服务端&客户端

所需软件包:ntp、chrony(提供标准时间服务)

主配置文件:/etc/chrony.conf

字段解析:

  • [server 0.centos.pool.ntp.org iburst]    //server用户客户端指向上层NTP服务器
  • [allow 192.168.4.0/24(all)]       //允许哪个IP或网络访问NTP
  • [Deny 192.168.4.1]     //拒绝哪个IP或网络访问NTP
  • [local stratum 10]     //设置NTP服务器的层数量,第10层
  • [iburst]      //快速同步时间

- 手动同步工具:ntpdata


主机1:

步骤1:检查并安装chrony软件包

[root@svr7 ~]# yum -y install chrony     //安装软件包
[root@svr7 ~]# rpm -q chrony
chrony-3.2-2.el7.x86_64

步骤2:修改配置文件

[root@svr7 ~]# vim /etc/chrony.conf      //修改主配置文件3 #server 0.centos.pool.ntp.org iburst    //注释原配置的上层NTP服务器4 #server 1.centos.pool.ntp.org iburst5 #server 2.centos.pool.ntp.org iburst6 #server 3.centos.pool.ntp.org iburst26 allow all      //允许所有客户端29 local stratum 10    //设置本机为第10层的时间服务器
...

步骤3:重启服务

[root@svr7 ~]# systemctl restart chronyd.service

主机2:

步骤1:安装软件包

[root@pc207 ~]# yum -y install chrony
[root@pc207 ~]# rpm -q chrony
chrony-3.2-2.el7.x86_64

 步骤2:修改主配置文件

[root@pc207 ~]# vim /etc/chrony.conf      //修改配置文件
server 192.168.4.7 iburst    //设置指定的服务器同步时间(iburst快速同步)
...

步骤3:重启时间服务

[root@pc207 ~]# systemctl restart chronyd

步骤4:验证时间服务(客户端将时间修改错误)

[root@pc207 ~]# date -s '2001-9-3'     //修改日期
2001年 09月 03日 星期一 00:00:00 CST
[root@pc207 ~]# date
2001年 09月 03日 星期一 00:00:02 CST
[root@pc207 ~]# systemctl restart chronyd    //重启服务,再查看是否同步
[root@pc207 ~]# date
2021年 03月 18日 星期四 15:44:25 CST[root@pc207 ~]# date -s '5:20'     //修改时间
2021年 03月 18日 星期四 05:20:00 CST
[root@pc207 ~]# date
2021年 03月 18日 星期四 05:20:03 CST
[root@pc207 ~]# systemctl restart chronyd    //重启服务,再查看是否同步
[root@pc207 ~]# date
2021年 03月 18日 星期四 15:45:37 CST

三、基础邮件服务

邮件服务(Email Service)是一种用于发送、接收和管理电子邮件的系统。电子邮件是一种通过计算机网络进行信息交换的通信方式,它允许用户发送和接收文本消息、文件、图片和其他类型的数据。

邮件服务通常包括以下几个主要组件:

  1. 邮件用户代理(MUA):也称为电子邮件客户端,是用户用来撰写、发送、接收和管理电子邮件的软件。常见的MUA包括Microsoft Outlook、Mozilla Thunderbird、Apple Mail和基于Web的电子邮件服务如Gmail、Yahoo Mail等。

  2. 邮件传输代理(MTA):负责在邮件服务器之间传输电子邮件。MTA使用简单邮件传输协议(SMTP)来发送邮件。常见的MTA软件包括Postfix、Sendmail和Exim。

  3. 邮件投递代理(MDA):负责将邮件从MTA传递到用户的邮箱中。MDA通常在接收邮件的服务器上运行,并使用本地邮件传输协议(LMTP)或邮局协议(POP)/互联网消息访问协议(IMAP)将邮件投递到用户的邮箱。

  4. 邮件交换记录(MX记录):在域名系统(DNS)中,MX记录指定了一个域名的邮件服务器。当一封邮件发送到某个域名时,发送方的MTA会查询接收方域名的MX记录,以确定邮件应该发送到哪个邮件服务器。

  5. 邮件存储:用户的电子邮件通常存储在邮件服务器上,用户可以通过MUA使用POP或IMAP协议访问这些邮件。

邮件服务的工作流程大致如下:

  • 用户使用MUA撰写邮件,并通过SMTP协议将邮件发送到发送方的邮件服务器。
  • 发送方的邮件服务器(MTA)根据邮件的收件人地址查询接收方域名的MX记录,确定接收方的邮件服务器。
  • 发送方的MTA通过SMTP协议将邮件传输到接收方的邮件服务器。
  • 接收方的邮件服务器(MTA/MDA)将邮件投递到收件人的邮箱中。
  • 收件人使用MUA通过POP或IMAP协议从邮件服务器上获取邮件。

1)基本功能

  • 为用户提供电子邮箱存储空间(用户名@邮件域名)
  • 处理用户发出的邮件,传递给收件服务器
  • 处理用户收到的邮件,投递到邮箱

2)邮件通信的寻址

根据收件人地址找到目标邮件服务器;

  • 邮件相关的DNS设置(本域和外域,例如qq.com、sina.com)
  • 添加相应的MX记录、A记录(MX,Mali eXchange邮件交换)
  • SMTP简单邮件传输协议,默认端口25
  • POP3点对点协议版本3,默认端口110

案例:准备邮件案例环境(为lol.com域提供邮件相关解析)

[root@svr7 ~]# vim /etc/named.conf      //修改主配置文件
options {directory "/var/named";
};
zone "qq.com" IN {           //定义解析区域qq.comtype master;file "qq.com.zone";
};[root@svr7 ~]# cd /var/named/
[root@svr7 named]# cp -p named.localhost qq.com.zone
[root@svr7 named]# vim qq.com.zone      //建立地址库文件
...
qq.com. NS svr7.qq.com.
qq.com. MX 10 mail.qq.com.      //数字10为优先级,越小越优先
svr7.qq.com. A 192.168.4.7
mail.qq.com. A 192.168.4.7
www.qq.com. A 1.1.1.1[root@svr7 named]# systemctl restart named   //重启服务
[root@svr7 named]# cat /etc/resolv.conf
nameserver 192.168.4.7
[root@svr7 named]# nslookup mail.qq.com     //解析测试
Server: 192.168.4.7
Address: 192.168.4.7#53Name: mail.qq.com
Address: 192.168.4.7[root@svr7 named]# host -t MX qq.com    //测试qq.com区域邮件交换记录
qq.com mail is handled by 10 mail.qq.com.[root@svr7 named]# host mail.qq.com    //测试域名完整解析
www.qq.com has address 192.168.4.7

四、邮件服务基础

1)快速部署postfix邮件服务器

默认的标准配置即可为本机提供收/发邮件服务(若有必要,可扩大服务范围(邮件域))

配置文件:/etc/postfix/main.cf

- 字段解析:

  • [myorigin = $mydomain]    //默认补全的域名后缀
  • [inet_interfaces = localhost]     //只为本机使用邮件服务
  • [mydestination = $myhostname, localhost.$mydomain, localhost]   //判断目标是否为本域邮件

参考: https://blog.csdn.net/mycms5/article/details/78773308


步骤1:检查并安装postfix软件包

[root@svr7 ~]# yum -y install postfix
[root@svr7 ~]# rpm -q postfix
postfix-2.10.1-6.el7.x86_64

步骤2:修改配置文件

[root@svr7 ~]# vim /etc/postfix/main.cf
...99 myorigin = qq.com      //默认补全的域名后缀(比如anjian@域名后缀)
116 inet_interfaces = all     //设置允许本机所有接口均提供邮件收发功能
164 mydestination = qq.com     //判断是否为本域邮件的依据
...

步骤3:重启postfix服务

[root@svr7 ~]# systemctl restart postfix.service
[root@svr7 ~]# netstat -anptu | grep :25
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      6098/master         
tcp6       0      0 :::25                   :::*                    LISTEN      6098/master    

2)使用mail命令收发邮件

Mail发信操作

- 格式:mail -s ‘邮件标题’ [-r 发件人] 收件人[@收件域]...

- 选项:[-r] 指定发件人 //默认为root

Mail收信操作

- 格式:mail [-u 用户名]    //不加用户名,则显示root用户的邮件

补充:postfix自带功能,当配置文件误操作或有报错时,服务将发邮件反馈通知root,查看命令:# mail -u root


例如1:

[root@svr7 ~]# useradd yg    //添加用户yg和aj [root@svr7 ~]# useradd aj [root@svr7 ~]# mail -s 'test01' -r aj yg    //mail发信操作 hello world .      //一行只有一个点表示提交 EOT [root@svr7 ~]# mail -u yg     //mail收信操作 Heirloom Mail version 12.5 7/5/10.  Type ? for help. "/var/mail/yg": 1 message 1 new        //存放在目录/var/mail/yg >N  1 aj@qq.com             Thu Mar 18 14:34  18/500   "test01" & 1      //输入邮件编号,读取邮件内容 Message  1: From aj@qq.com  Thu Mar 18 14:34:24 2021 Return-Path: <aj@qq.com> X-Original-To: yg Delivered-To: yg@qq.com Date: Thu, 18 Mar 2021 14:34:24 +0800 From: aj@qq.com To: yg@qq.com Subject: test01      //标题“test01” User-Agent: Heirloom mailx 12.5 7/5/10 Content-Type: text/plain; charset=us-ascii Status: R   hello world          //邮件内容   & quit     //退出mail工具 Held 1 message in /var/mail/yg

例如2:利用管道非交互式发信操作

[root@svr7 ~]# useradd yg    //添加用户yg和aj
[root@svr7 ~]# useradd aj
[root@svr7 ~]# mail -s 'test01' -r aj yg    //mail发信操作
hello world
.      //一行只有一个点表示提交
EOT[root@svr7 ~]# mail -u yg     //mail收信操作
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/mail/yg": 1 message 1 new        //存放在目录/var/mail/yg
>N  1 aj@qq.com             Thu Mar 18 14:34  18/500   "test01"
& 1      //输入邮件编号,读取邮件内容
Message  1:
From aj@qq.com  Thu Mar 18 14:34:24 2021
Return-Path: <aj@qq.com>
X-Original-To: yg
Delivered-To: yg@qq.com
Date: Thu, 18 Mar 2021 14:34:24 +0800
From: aj@qq.com
To: yg@qq.com
Subject: test01      //标题“test01”
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
Status: Rhello world          //邮件内容& quit     //退出mail工具
Held 1 message in /var/mail/yg

五、自定义YUM仓库

1.作为Yum源需要准备内容:

  • 大量的RPM(.rpm)软件安装包文件
  • 针对这些软件包的repodata仓库档案(仓库数据文件)

2.repodata仓库档案数据

  • Filelists.xml.gz   //软件包的文件安装清单
  • Primary.xml.gz   //软件包的基本/主要信息
  • Other.xml.gz    //软件包的其他信息
  • Repomd.xml    //提供.xml.gz下载和检验信息

示例:构建及配置自定义YUM仓库

步骤1:搜集.rpm包文件集中到指定目录

1)将真机准备的tools.tar.gz压缩包传递到虚拟机-主机1(互联网下载软件包)

[root@localhost 桌面]# ls /linux-soft/1     //达内真机每阶段软件包存放目录
cobbler.zip  podman  tools.tar.gz
[root@localhost 桌面]# scp /linux-soft/1/tools.tar.gz root@192.168.4.7:/root
root@192.168.4.7's password:
tools.tar.gz                                  100%  766KB  34.8MB/s   00:00  

2)查看虚拟机-主机1,检查tools.tar.gz压缩包

[root@svr7 ~]# ls /root/
anaconda-ks.cfg       named.conf    公共  视频  文档  音乐
initial-setup-ks.cfg  tools.tar.gz  模板  图片  下载  桌面
[root@svr7 ~]# tar -tf /root/tools.tar.gz    //查看tools.tar.gz压缩包内容
tools/
tools/other/
tools/other/ntfs-3g-2014.2.15-6.el6.x86_64.rpm
tools/other/boxes-1.1.1-4.el7.x86_64.rpm
tools/other/sl-5.02-1.el7.x86_64.rpm
tools/other/oneko-1.2-19.fc24.x86_64.rpm
tools/other/cmatrix-1.2a-1.i386.rpm
tools/inotify-tools-3.13.tar.gz

步骤2:释放压缩包并找到/tools/other目录作为仓库档案目录

[root@svr7 ~]# tar -xf /root/tools.tar.gz -C /     //释放压缩包到根目录(或其他目录)
[root@svr7 ~]# ls /
1.txt  boot  etc   lib    media  mydvd  proc  run   srv  tmp    usr
bin    dev   home  lib64  mnt    opt    root  sbin  sys  tools  var
[root@svr7 ~]# ls /tools/
inotify-tools-3.13.tar.gz  other
[root@svr7 ~]# ls /tools/other/
boxes-1.1.1-4.el7.x86_64.rpm        oneko-1.2-19.fc24.x86_64.rpm
cmatrix-1.2a-1.i386.rpm             sl-5.02-1.el7.x86_64.rpm
ntfs-3g-2014.2.15-6.el6.x86_64.rpm

步骤3:使用createrepo工具创建仓库档案(仓库数据文件)

[root@svr7 ~]# createrepo /tools/other/     //生成仓库数据文件
Spawning worker 0 with 3 pkgs
Spawning worker 1 with 2 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete[root@svr7 ~]# ls /tools/other/
boxes-1.1.1-4.el7.x86_64.rpm        oneko-1.2-19.fc24.x86_64.rpm
cmatrix-1.2a-1.i386.rpm             repodata
ntfs-3g-2014.2.15-6.el6.x86_64.rpm  sl-5.02-1.el7.x86_64.rpm[root@svr7 ~]# ls /tools/other/repodata/
4510d89472a46087687deedb43b44038238c057d85b0acd4d792dd276752ec31-other.sqlite.bz2
5c773aae466acfbcb92fc88af147ae313998ef4afe649c1e8f9a4442fe382420-primary.xml.gz
679b3de7d30fe5d9d49fd83a847234b13e78704cc85d9e3023db5eae6ef4ff90-filelists.xml.gz
c7a3c785ad26f0c2aa64a252f0a16b5c1822fee51d133203c453686eddca898a-filelists.sqlite.bz2
d9ce0aa24483f8411915398b66e2c8000ec3c5e6f11a83f48efb6885cea57329-other.xml.gz
fe925dbab22913101e0c90af0af2a7ed5d10e202322a729cd222e2895753ef87-primary.sqlite.bz2
repomd.xml

步骤4:修改仓库配置文件

[root@svr7 ~]# vim /etc/yum.repos.d/mydvd.repo   //新建repo或修改原repo
[mydvd]
name=mydvd
baseurl=file:///mydvd
enable=1
gpgcheck=0[myrpm]      //修改唯一标识
name=myrpm
baseurl=file:///tools/other      //指定Yum仓库的路径
enable=1
gpgcheck=0
[root@svr7 ~]# yum clean all
[root@svr7 ~]# yum repolist
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
mydvd                                                    | 3.6 kB     00:00     
myrpm                                                    | 2.9 kB     00:00     
myrpm/primary_db                                           | 4.8 kB   00:00     
源标识                                源名称                             状态
mydvd                                 mydvd                            9,911
myrpm                                 myrpm                               5
repolist: 9,916

测试YUM仓库:

[root@svr7 ~]# yum -y install sl cmatrix
[root@svr7 ~]# sl     //小火车程序

趣味示例如图:

 [root@svr7 ~]# cmatrix [-C red]  //黑客帝国程序(该程序需要/dev/cdromd的依赖)

趣味示例如图:

扩展:createrepo 命令详解

链接:https://www.jianshu.com/p/59ca879584a1 

createrepo 命令,用于创建yum源(软件仓库),即为存放于本地特定位置的众多rpm包建立索引,描述各包所需依赖信息,并形成元数据;

- 格式:createrepo [option]

参数选项说明:

  • -u --baseurl  指定Base URL的地址
  • -o --outputdir  指定元数据的输出位置
  • -x --excludes  指定在形成元数据时需要排除的包
  • -i --pkglist  指定一个文件,该文件内的包信息将被包含在即将生成的元数据中,格式为每个包信息独占一行,不含通配符、正则,以及范围表达式。
  • -n --includepkg 通过命令行指定要纳入本地库中的包信息,需要提供URL或本地路径。
  • -q --quiet  安静模式执行操作,不输出任何信息。
  • -g --groupfile  指定本地软件仓库的组划分,范例如下:createrepo -g comps.xml /path/to/rpms
  • 注意:组文件需要和rpm包放置于同一路径下。
  • -v --verbose  输出详细信息。
  • -c --cachedir  指定一个目录,用作存放软件仓库中软件包的校验和信息。当createrepo在未发生明显改变的相同仓库文件上持续多次运行时,指定cachedir会明显提高其性能。
  • --update  如果元数据已经存在,且软件仓库中只有部分软件发生了改变或增减,则可用update参数直接对原有元数据进行升级,效率比重新分析rpm包依赖并生成新的元数据要高很多。
  • -p --pretty  以整洁的格式输出xml文件。
  • -d --database  该选项指定使用SQLite来存储生成的元数据,默认项。

 

小结:

本篇章节为 【第一阶段】SERVICES-DAY3 的学习笔记,可以初步了解到 分离解析介绍、NTP时间服务、基础邮件服务(MX记录)、部署postfix邮件服务器、自定义YUM仓库。除此之外推荐参考相关学习网址:

  • linux mail命令用法_mail -s-CSDN博客
  • Centos7配置国内yum源和epel源-阿里云开发者社区
  • 怎样修改linux时区-linux运维-PHP中文网

Tip:毕竟两个人的智慧大于一个人的智慧,如果你不理解本章节的内容或需要相关笔记、视频,可私信小安,请不要害羞和回避,可以向他人请教,花点时间直到你真正的理解

相关文章:

Linux云计算 |【第一阶段】SERVICES-DAY3

主要内容&#xff1a; 分离解析介绍、NTP时间服务、基础邮件服务&#xff08;MX记录&#xff09;、部署postfix邮件服务器、自定义YUM仓库 实操提前准备&#xff1a; ① 设置SELinux、关闭防火墙服务&#xff08;两台主机&#xff09; [rootsvr7 ~]# getenforce Permissive …...

Java面试八股之Spring-boot-starter-parent的作用是什么

Spring-boot-starter-parent的作用是什么 spring-boot-starter-parent 是Spring Boot项目中的一个特殊POM&#xff08;Project Object Model&#xff09;&#xff0c;它主要的作用是提供一系列默认的配置和依赖管理&#xff0c;以便简化项目的构建过程。以下是spring-boot-sta…...

Python 和 Boto3 生成 Amazon S3 对象的 HTTPS URL

在使用 Amazon S3 存储服务时,我们经常需要获取存储桶中对象的 HTTPS URL。这篇博文将详细介绍如何使用 Python 和 Boto3 库来实现这一功能。 背景 Amazon S3(Simple Storage Service)是一种广泛使用的云存储服务。在许多场景中,我们需要获取 S3 存储桶中对象的公开访问 …...

V-bind动态绑定style的案例集合

目录 绑定对象 绑定数组 绑定函数 V-bind 动态绑定 Class 的案例集合-CSDN博客 绑定对象 示例代码如下: <!--html--> <p :style="{width:widthVal,height:heightVal,border:borderVal}">段落</p> <!--js--> data(){ ret…...

深度学习守护夜行安全:夜视行人检测系统详解

基于深度学习的夜视行人检测系统&#xff08;UI界面YOLOv8/v7/v6/v5代码训练数据集&#xff09; 引言 夜视行人检测在自动驾驶和智能监控中至关重要。然而&#xff0c;由于光线不足&#xff0c;夜间行人检测面临巨大挑战。深度学习技术&#xff0c;特别是YOLO&#xff08;You…...

亚信安慧AntDB亮相PostgreSQL中国技术大会,获“数据库最佳应用奖”并分享数据库应用实践

7月12日&#xff0c;第13届PostgreSQL中国技术大会在杭州顺利举办&#xff0c;亚信安慧AntDB数据库荣获“数据库最佳应用奖”。大会上&#xff0c;亚信安慧AntDB数据库同事带来《基于AntDB的CRM系统全域数据库替换实践》和《亚信安慧AntDB数据库运维之路》两场精彩演讲&#xf…...

如何减少白屏的时间

前端性能优化是前端开发中一个重要环节&#xff0c;它包括很多内容&#xff0c;其中页面的白屏时间是用户最初接触到的部分&#xff0c;白屏时间过长会显著影响用户的留存率和转换率。 我们以一个 APP 内嵌 Webview 打开页面作为例子&#xff0c;来分析页面打开过程以及可优化…...

科研成果 | 高精尖中心取得高性能区块链交易调度技术突破

近日&#xff0c;未来区块链与隐私计算高精尖创新中心研究团队在区块链交易效率方面取得突破性进展&#xff0c;最新成果“高性能区块链交易调度引擎”首次为长安链带来高并行度的交易调度&#xff0c;充分利用现有计算资源&#xff0c;显著提升长安链交易处理速度。 随着区块…...

go语言学习文档精简版

Go语言是一门开源的编程语言&#xff0c;目的在于降低构建简单、可靠、高效软件的门槛。Go平衡了底层系统语言的能力&#xff0c;以及在现代语言中所见到的高级特性。 你好&#xff0c;Go package main // 程序组织成包import "fmt" // fmt包用于格式化输出数据// …...

立元科技-Java面经

面试时间&#xff1a;2024年2月13日 面试地点&#xff1a;线下 面试流程&#xff1a;一轮面试 首先写了点笔试题&#xff0c;但是人家根本不看&#xff08;这个也就一面&#xff09; &#xff08;聊的还行&#xff0c;但是公司环境不是特别的好&#xff0c;一次面试&#x…...

OpenGL入门第六步:材质

目录 结果显示 材质介绍 函数解析 具体代码 结果显示 材质介绍 当描述一个表面时,我们可以分别为三个光照分量定义一个材质颜色(Material Color):环境光照(Ambient Lighting)、漫反射光照(Diffuse Lighting)和镜面光照(Specular Lighting)。通过为每个分量指定一个颜色,…...

新版SpringSecurity5.x使用与配置

目录 一、了解SpringSecurity 1.1 什么是Spring Security&#xff1f; 1.2 Spring Security功能 1.3 Spring Security原理 1.4 RABC (Role-Based Access Control) 二、SpringSecurity简单案例 2.1 引入SpringSecurity依赖 2.2 创建一个简单的Controller 三、SpringSecu…...

JavaScript实战 - JavaScript 中实现线程锁

作者&#xff1a;逍遥Sean 简介&#xff1a;一个主修Java的Web网站\游戏服务器后端开发者 主页&#xff1a;https://blog.csdn.net/Ureliable 觉得博主文章不错的话&#xff0c;可以三连支持一下~ 如有需要我的支持&#xff0c;请私信或评论留言&#xff01; 前言&#xff1a; …...

基于PaddleClas的人物年龄分类项目

目录 一、任务概述 二、算法研发 2.1 下载数据集 2.2 数据集预处理 2.3 安装PaddleClas套件 2.4 算法训练 2.5 静态图导出 2.6 静态图推理 三、小结 一、任务概述 最近遇到个需求&#xff0c;需要将图像中的人物区分为成人和小孩&#xff0c;这是一个典型的二分类问题…...

20240725java的Controller、DAO、DO、Mapper、Service层、反射、AOP注解等内容的学习

在Java开发中&#xff0c;‌controller、‌dao、‌do、‌mapper等概念通常与MVC&#xff08;‌Model-View-Controller&#xff09;‌架构和分层设计相关。‌这些概念各自承担着不同的职责&#xff0c;‌共同协作以构建和运行一个应用程序。‌以下是这些概念的解释&#xff1a;‌…...

dynslam的安装

1. 安装opencv 2.4.9 下载opencv2.4.9 apt-get install build-essential apt-get install libgtk2.0-dev libavcodec-dev libavformat-dev libtiff4-dev libswscale-dev libjasper-dev apt-get install cmake apt-get install pkg-config 进入安装包文件&#xff1a; m…...

stats 监控 macOS 系统

Stats 监控 macOS 系统 CPU 利用率GPU 利用率内存使用情况磁盘利用率网络使用情况电池电量 brew install stats参考 stats github...

后端面试题日常练-day05 【Java基础】

题目 希望这些选择题能够帮助您进行后端面试的准备&#xff0c;答案在文末 在Java中&#xff0c;以下哪个关键字用于表示方法重写&#xff08;Override&#xff09;&#xff1f; a) override b) overrule c) overwrite d) supercede Java中的HashMap和Hashtable有什么区别&am…...

mac|安装PostgreSQL

1、官网下载&#xff1a;EDB: Open-Source, Enterprise Postgres Database Management 选择需要的版本&#xff1a; 双击得到的.dmg文件 双击&#xff0c;弹窗选择打开&#xff0c;一路next&#xff0c;然后输入你要设置的密码&#xff0c;默认账号名字为&#xff1a;postgres…...

内网对抗-隧道技术篇防火墙组策略FRPNPSChiselSocks代理端口映射C2上线

知识点&#xff1a; 1、隧道技术篇-传输层-工具项目-Frp&Nps&Chisel 2、隧道技术篇-传输层-端口转发&Socks建立&C2上线Frp Frp是专注于内网穿透的高性能的反向代理应用&#xff0c;支持TCP、UDP、HTTP、HTTPS等多种协议。可以将内网服务以安全、便捷的方式通过…...

arinc664总线协议

AFDX总线协议简介 &#xff08;1&#xff09;AFDX的传输速率高&#xff1a;带宽100MHZ&#xff0c;远远高于其他的类型的航空总线。&#xff08;2&#xff09;AFDX网络的鲁棒性高&#xff1a;AFDX的双冗余备份网络可以在某一个网络出现故障时&#xff0c;仍能正常通讯。 其中…...

UNIX 域协议

1. UNIX域协议 利用socket编程接口实现本地进程间通信 UNIX域协议套接字&#xff1a;可以使用TCP&#xff0c;也可以使用UDP SOCK_STREAM -----> TCP 面向字节流 SOCK_DGRAM -----> UDP 面向数据报 UNIX域协议并不是一个实际的协议族&#xff0c;而是在单个主机上执…...

昇思25天学习打卡营第17天|LLM-基于MindSpore的GPT2文本摘要

打卡 目录 打卡 环境准备 准备阶段 数据加载与预处理 BertTokenizer 部分输出 模型构建 gpt2模型结构输出 训练流程 部分输出 部分输出2&#xff08;减少训练数据&#xff09; 推理流程 环境准备 pip install -i https://pypi.mirrors.ustc.edu.cn/simple mindspo…...

Clion开发STM32——移植FreeModbus

STM32型号 &#xff1a;STM32H743VIT6 FreeModbus版本 &#xff1a;1.6 使用工具&#xff1a;stm32cubeMX&#xff0c;Clion 使用STM32作从机&#xff0c;模式&#xff1a;RTU 网上用keil的比较多&#xff0c;用Clion的比较少&#xff0c;如果你也用Clion&#xff0c;那么希望…...

c++栈笔记

一种常见的数据结构&#xff0c;遵循后进先出&#xff0c;先进后出的原则。地址不连续&#xff0c;栈顶&#xff08;top&#xff09; 1.常见函数 stack<int> s;定义一个参数类型为int 的栈 名为ss.push()向栈中插入元素s.emplace()压栈&#xff0c;无返回值s.pop()删除…...

Oracle配置TCPS加密协议测试

文章目录 一、环境信息二、配置过程1.创建证书2.监听配置2.1.配置sqlnet.ora2.2.配置listener.ora文件2.3.配置tnsnames.ora文件2.4.重载监听 3.数据库本地测试3.1. tcps登录测试3.2.日志监控 一、环境信息 操作系统&#xff1a;Linux 版本信息&#xff1a;Oracle 19c 参考文档…...

Jetpack Compose 通过 OkHttp 发送 HTTP 请求的示例

下面是一个使用 Kotlin 和 Jetpack Compose 来演示通过 OkHttp 发送 HTTP 请求的示例。这个示例包括在 Jetpack Compose 中发送一个 GET 请求和一个 POST 请求&#xff0c;并显示结果。 添加okhttp依赖 首先&#xff0c;在你的 build.gradle.kts 文件中添加必要的依赖&#xf…...

Pytorch使用教学3-特殊张量的创建与类型转化

1 特殊张量的创建 与numpy类似&#xff0c;PyTorch中的张量也有很多特殊创建的形式。 zeros:全0张量 # 形状为2行3列 torch.zeros([2, 3]) # tensor([[0., 0., 0.], # [0., 0., 0.]])ones:全1张量 # 形状为2行3列 torch.ones([2, 3]) # tensor([[1., 1., 1.], # …...

【日记】办个护照不至于有这种刑事罪犯一样的待遇吧……(737 字)

正文 暴晒&#xff0c;中午出去骑共享单车&#xff0c;座垫都不敢坐。 至于为什么&#xff0c;中午觉都不睡跑出去&#xff0c;是因为今天他们办承兑汇票的业务&#xff0c;搞了一天&#xff0c;中午不休息&#xff0c;说可能还会用到我的指纹&#xff0c;让我 on call。我心想…...

【矩阵微分】在不涉及张量的前提下计算矩阵对向量的导数并写出二阶泰勒展开

本篇内容摘自CMU 16-745最优控制的第10讲 “Nonlinear Trajectory Optimization”。 如何在不涉及张量运算的前提下&#xff0c;计算矩阵对向量的导数并写出二阶泰勒展开 在多维微积分中&#xff0c;计算矩阵对向量的导数和二阶泰勒展开是一项重要的任务。本文将介绍如何在不涉…...

数据结构之判断平衡二叉树详解与示例(C,C++)

文章目录 AVL树定义节点定义计算高度获取平衡因子判断是否为平衡二叉树完整示例代码结论 在计算机科学中&#xff0c;二叉树是一种非常重要的数据结构。它们被广泛用于多种算法中&#xff0c;如排序、查找等。然而&#xff0c;普通的二叉树在极端情况下可能退化成链表&#xff…...

深入解析仓颉编程语言:函数式编程的核心特性

摘要 仓颉编程语言以其独特的语法和功能&#xff0c;为开发者提供了强大的编程工具。本文将深入探讨仓颉语言中的嵌套函数、Lambda 表达式和闭包等函数式编程的核心特性&#xff0c;帮助开发者更好地理解和利用这些工具。 引言 在现代编程语言中&#xff0c;函数式编程范式越…...

springboot惠农服务平台-计算机毕业设计源码50601

目录 1 绪论 1.1 研究背景 1.2研究意义 1.3论文结构与章节安排 2 惠农服务平台app 系统分析 2.1 可行性分析 2.2 系统功能分析 2.3 系统用例分析 2.4 系统流程分析 2.5本章小结 3 惠农服务平台app 总体设计 3.1 系统功能模块设计 3.2 数据库设计 表access_token (…...

Lua脚本简单理解

目录 1.安装 2.语法 2.1Lua数据类型 2.2变量 2.3lua循环 2.4流程控制 2.5函数 2.6运算符 2.7关系运算符 3.lua脚本在redis中的使用 3.1lua脚本再redis简单编写 3.2普通锁Lua脚本 3.3可重入锁lua脚本 1.安装 centos安装 安装指令&#xff1a; yum -y update yum i…...

AutoSAR自适应平台架构总览--AP的初认识

AutoSAR自适应平台架构总览:AP 基础设施层&#xff08;Foundation Layer&#xff09;核心操作系统&#xff08;Core OS&#xff09;通信管理&#xff08;Communication Management&#xff09; 服务层&#xff08;Services Layer&#xff09;诊断服务&#xff08;Diagnostics S…...

GPT-4o Mini:探索最具成本效益的小模型在软件开发中的应用

随着人工智能技术的迅猛发展&#xff0c;自然语言处理&#xff08;NLP&#xff09;领域也取得了显著的进步。OpenAI 最新发布的 GPT-4o Mini 模型&#xff0c;以其卓越的性能和极具竞争力的价格&#xff0c;成为了广大开发者关注的焦点。作为一名长期关注人工智能及其在软件开发…...

{Spring Boot 原理篇} Spring Boot自动装配原理

SpringBootApplication 1&#xff0c;Spring Boot 应用启动&#xff0c;SpringBootApplication标注的类就是启动类&#xff0c;它去实现配置类中的Bean的自动装配 SpringBootApplication public class SpringbootRedis01Application {public static void main(String[] args)…...

QEMU源码全解析 —— CPU虚拟化(10)

接前一篇文章: 本文内容参考: 《趣谈Linux操作系统》 —— 刘超,极客时间 《QEMU/KVM》源码解析与应用 —— 李强,机械工业出版社 《深度探索Linux系统虚拟化原理与实现》—— 王柏生 谢广军, 机械工业出版社 特此致谢! 二、x86架构CPU虚拟化 3. VMX 上一回讲解了支…...

46、PHP实现矩阵中的路径

题目&#xff1a; PHP实现矩阵中的路径 描述&#xff1a; 请设计一个函数&#xff0c;用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。 路径可以从矩阵中的任意一个格子开始&#xff0c;每一步可以在矩阵中向左&#xff0c;向右&#xff0c;向上&#xff0c;向…...

c++笔记2

目录 2.2 栈底&#xff08;bottom&#xff09; } 大数乘大数 节点&#xff1a;包含一个数据元素及若干指向子树分支的信息 。 节点的度&#xff1a;一个节点拥有子树的数目称为节点的度 。 叶子节点&#xff1a;也称为终端节点&#xff0c;没有子树的节点或者度为零的节点…...

通过Lua脚本手写redis分布式锁

1、手写 Redis 分布式锁&#xff0c;包括上锁、解锁、自动续期。 此功能实现采用 Lua脚本实现&#xff0c;Lua脚本可以保证原子性。 setnx可以实现分布式锁&#xff0c;但是无法实现可重入锁&#xff0c;所以用hset来代替setnx实现可重入的分布式锁。 -- lock if redis.call…...

解析银行个人征信系统

银行个人征信系统&#xff0c;也被称为个人信用信息基础数据库或金融信用信息基础数据库&#xff0c;是我国社会信用体系的重要基础设施。该系统由中国人民银行组织国内相关金融机构建立&#xff0c;旨在依法采集、整理、保存、加工自然人&#xff08;法人&#xff09;及其他组…...

AttributeError: ‘list‘ object has no attribute ‘text‘

AttributeError: ‘list‘ object has no attribute ‘text‘ 目录 AttributeError: ‘list‘ object has no attribute ‘text‘ 【常见模块错误】 【解决方案】 示例代码 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英…...

Codeforces Round 874 (Div. 3)(A~D题)

A. Musical Puzzle 思路: 用最少的长度为2的字符串按一定规则拼出s。规则是&#xff1a;前一个字符串的尾与后一个字符串的首相同。统计s中长度为2的不同字符串数量。 代码: #include<bits/stdc.h> #include <unordered_map> using namespace std; #define N 20…...

[Python][基础语法]详细讲解

目录 1.顺序语句2.条件语句3.缩进和代码块4.空语句 pass5.循环语句1.while2.for3.continue4.break ∞.积累 1.顺序语句 默认情况下&#xff0c;Python的代码执行顺序是按照从上到下的顺序&#xff0c;依次执行# 输出结果&#xff1a;"123" print("1") pri…...

Layui---输入事件

输入实时监听 //监听表单单选框复选框选择 form.on(radio, function (data) {console.log(data.value); //得到被选中的值 });//监听表单下拉菜单选择form.on(select, function (data) //监听表单下拉菜单选择form.on(select, function (data) ​ //监听表单复选框选择form.…...

甄选范文“论软件测试中缺陷管理及其应用”软考高级论文,系统架构设计师论文

论文真题 软件缺陷指的是计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。缺陷的存在会导致软件产品在某种程度上不能满足用户的需要。在目前的软件开发过程中,缺陷是不可避免的。软件测试是发现缺陷的主要手段,其核心目标就是尽可能多地找…...

spring框架实现滑动验证码功能

spring框架实现滑动验证码功能 1. 整体描述2. 具体实现2.1 滑动验证码实体类2.2 滑动验证码登录VO2.3 滑动验证码接口返回类2.4 滑动验证码工具类2.5 滑动验证码Service2.6 滑动验证码Controller 3 工程源码4 总结 1. 整体描述 之前项目需要在验证码模块&#xff0c;增加滑动验…...

Pytorch使用教学8-张量的科学运算

在介绍完PyTorch中的广播运算后&#xff0c;继续为大家介绍PyTorch的内置数学运算&#xff1a; 首先对内置函数有一个功能印象&#xff0c;知道它的存在&#xff0c;使用时再查具体怎么用其次&#xff0c;我还会介绍PyTorch科学运算的注意事项与一些实用小技巧 1 基本数学运算…...

[Spring Boot]登录密码三种加密方式

简述 介绍其三种密码加密方法 1.SM2加密与验签 2.随机密码盐加密 3.MD5加密 推荐使用方法1&#xff0c;其次使用方法2&#xff0c;最不推荐的是方法3。方法3极其容易被密码字典破解&#xff0c;如果项目进行安全测试&#xff0c;通常是不允许的加密方式。 SM2加密与验签 引入…...