ElasticStack简介及应用

文章目录

    • 1.Elastic Stack 技术栈
    • 2.ES 安装
      • 2.1 准备
      • 2.2 yum单机部署
      • 2.3 集群部署
    • 3.Kibana
      • 3.1 安装配置
      • 3.2 web访问
    • 4.Filebeat
      • 4.1 安装
      • 4.2 配置 inputs
      • 4.3 配置 output
      • 4.4 索引
      • 4.5 分片和副本
    • 5.收集nginx日志
      • 5.1 原生日志
      • 5.2 nginx日志格式
      • 5.3 filebeat 配置
    • 6.logstash
      • 6.1 安装
      • 6.2 启动
      • 6.3 logstash 对接 es
      • 6.3 logstash 对接 filebeat

1.Elastic Stack 技术栈

官网:https://www.elastic.co/cn/

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.ES 安装

2.1 准备

三台主机

在这里插入图片描述

关闭防火墙、selinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
#临时关闭SELinux
setenforce 0
#关闭防火墙
systemctl stop firewalld.service
#永久关闭防火墙
systemctl disable firewalld.service

三台主机分别修改主机名

hostnamectl set-hostname elk1
hostnamectl set-hostname elk2
hostnamectl set-hostname elk3

三台主机分别修改hosts,可以通过主机名访问 ip

cat >> /etc/hosts << EOF
192.168.9.3 elk1
192.168.9.4 elk2
192.168.9.5 elk3
EOF

三台主机分别修改sshd服务优化

sed -ri 's/^#UseDNS yes/UseDNS no/g' /etc/ssh/sshd_config
sed -ri 's/^GSSAPIAuthentication yes/GSSAPIAuthentication no/g' /etc/ssh/sshd_configgrep '^UseDNS' /etc/ssh/sshd_config
grep '^GSSAPIAuthentication' /etc/ssh/sshd_config

在 elk1 主机生成密钥对,免密访问主机(可忽略)

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa -qssh-copy-id elk1
ssh-copy-id elk2
ssh-copy-id elk3ssh elk1
ssh elk2
ssh elk3

三台主机分别安装同步工具:rsync(可忽略)

yum -y install rsync

在 elk1 主机编写同步脚本

  • 目的是在elk1 配置了 es脚本后,同步到其他主机用的
  • 如果不做也可以,用scp网络拷贝或其他方式
vim /usr/local/sbin/data_rsync.sh
############################################################################!/bin/bash# 判断是否输入了一个参数
if [ $# -ne 1 ] ; thenecho "usage:$0 /path/file" exit
fi# 判断参数对应的文件或目录是否存在
if [ ! -e $1 ] ; thenecho "$1 not found"exit
fi# 获取父路径
parentpath=`dirname $1`# 获取子路径
basename=`basename $1`# 本机的文件循环同步到其他主机
for ((i=2;i<=3;i++))
doecho "rsync to elk$i : $basename"rsync -az $1 `whoami`@elk$i:$parentpathif [ $? -eq 0 ] ; thenecho "rsync success"fi
done###########################################################################

在 elk1 主机给脚本授予执行权限,并测试,执行脚本后查看其他主机

注:也可以测试同步目录

chmod +x /usr/local/sbin/data_rsync.shcd
echo "hello" > a.txt
/usr/local/sbin/data_rsync.sh /root/a.txt

三台主机分别进行时间同步服务(防止日志不准确)

# 安装工具和服务
yum -y install ntpdate chrony# 修改时间同步服务中的时间服务器为阿里云的服务器
vim /etc/chrony.conf
...
# 注释掉原来的时间服务器,换成国内的阿里云时间服务器
server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
server ntp3.aliyun.com iburst
server ntp4.aliyun.com iburst
server ntp5.aliyun.com iburst
...# 开启启动时间同步服务、重启以让其工作
systemctl enable --now chronyd
systemctl restart chronyd
# 查看服务状态
systemctl status chronyd

2.2 yum单机部署

支持一览表:

https://www.elastic.co/cn/support/matrix

下载地址:

https://www.elastic.co/downloads/past-releases#elasticsearch

注意

  • 根据支持一览表,某些版本需要先安装对应版本的 jdk,如 jdk1.8 或更高版本
  • 如果用 yum 安装 es,某些版本中已经集成了 jdk,如本文档安装的 7.17.3 就集成了 openjdk18

yum 方式安装,需要先下载 rpm 安装包

# yum 安装
yum -y localinstall elasticsearch-7.17.3-x86_64.rpm# 查看服务文件:vim /usr/lib/systemd/system/elasticsearch.service
# 发现1:安装时会自动创建用户elasticsearch,启动方式见下图
# 发现2:安装目录 /usr/share/elasticsearch/ 中安装了 18 版本的 openjdk,见下图

在这里插入图片描述

在这里插入图片描述

启动服务

systemctl start elasticsearch.service

在这里插入图片描述

在这里插入图片描述

配置文件,位置:/etc/elasticsearch

在这里插入图片描述

#切换目录
cd /etc/elasticsearch
#备份
cp elasticsearch.yml elasticsearch.yml.bak
#打开配置文件
vim elasticsearch.yml
#yml配置文件中必须要有空格
###################################################################
# 17 集群名 (默认是elasticsearch)
cluster.name: my-application
# 23 当前节点名(默认是主机名)需要修改成自己当前的主机名
node.name: es1
# 33 数据保存位置
#path.data: /var/lib/elasticsearch
# 37 日志保存位置
#path.logs: /var/log/elasticsearch
# 56 默认是127.0.0.1,只能本机访问
network.host: 0.0.0.0
# 70 在启动此节点时传递一个原始的主机列表以执行发现,可以写主机名或ip
discovery.seed_hosts: ["192.168.9.3"]
#discovery.seed_hosts: ["elk1"]
#################################################################### 保存配置文件后,重启服务
systemctl restart elasticsearch.service

重启服务后,从windows或其他同网段其他主机访问

在这里插入图片描述

2.3 集群部署

在其他两个主机(elk2、elk3)上安装 es

# yum 安装
yum -y localinstall elasticsearch-7.17.3-x86_64.rpm

修改 elk1 的 es 配置

vim /etc/elasticsearch/elasticsearch.yml# 70 集群中的所有节点,用主机名或ip表示
discovery.seed_hosts: ["192.168.9.3","192.168.9.4","192.168.9.5"]
#discovery.seed_hosts: ["elk1","elk2","elk3"]# 74 设置集群中要初始化的主节点
cluster.initial_master_nodes: ["192.168.9.3","192.168.9.4","192.168.9.5"]

发送配置文件到其他两个主机(elk2、elk3)

# 传送文件,也可以用scp传送
data_rsync.sh /etc/elasticsearch/elasticsearch.ymlscp elasticsearch.yml elk2:/etc/elasticsearch

在这里插入图片描述

分别修改其他两个主机(elk2、elk3)的配置

vim /etc/elasticsearch/elasticsearch.yml#23 修改节点名即可
node.name: es2
#node.name: es3

停止所有节点的es服务(如果开了),删除临时文件、数据文件、日志文件

systemctl stop elasticsearch.servicerm -rf /tmp/*
rm -rf /var/lib/elasticsearch/*
rm -rf /var/log/elasticsearch/*

启动所有节点的 es

systemctl start elasticsearch.service

可以观察日志,查看选举情况

tail -f /var/log/elasticsearch/my-es-cluster.log# 显示基于 TCP 和 UDP 的网络连接的详细列表,如下图
ss -ntl

在这里插入图片描述

当个节点的服务都正常后,可以查看 http 9200 端口的数据

在这里插入图片描述

3.Kibana

3.1 安装配置

下载 kibana 要注意版本号与 es保持一致

yum 安装,安装到任意一台或同网络的主机上即可(本测试安装到了elk1上)

yum -y localinstall kibana-7.17.3-x86_64.rpm

配置

vim /etc/kibana/kibana.yml#################################################################### 7 允许所有ip访问kibana
server.host: "0.0.0.0"# 29 也可以不修改
#server.name: "your-hostname"# 32 es主机对应的ip地址
elasticsearch.hosts: ["http://192.168.9.3:9200","http://192.168.9.4:9200","http://192.168.9.5:9200"]# 115 国际化语言
i18n.locale: "zh-CN"
#################################################################### 启动服务,日志:/var/log/kibana/kibana.log
systemctl start kibana.servicess -ntl

端口号不显示的话 建议启动新的虚拟机进行安装kibana

3.2 web访问

http://192.168.9.3:5601

在这里插入图片描述

堆栈监测

在这里插入图片描述

在这里插入图片描述

4.Filebeat

EFK 环境

在这里插入图片描述

4.1 安装

下载 filebeat 也要注意版本号与 es保持一致

yum安装,安装到要采集数据的主机上,如 tomcat、nginx服务器上,本测试安装到了elk2上

yum -y localinstall filebeat-7.17.3-x86_64.rpm# 查看用法
filebeat -h

4.2 配置 inputs

在这里插入图片描述

配置参考网站:

https://www.elastic.co/guide/en/beats/filebeat/7.17/filebeat-overview.html

如:configure-inputs-log

https://www.elastic.co/guide/en/beats/filebeat/7.17/filebeat-input-log.html

测试1.监听标准输入

cd /etc/filebeat/
cp filebeat.yml filebeat.bak
vim filebeat.yml###################################################################
# 清空配置文件,写入以下内容测试
filebeat.inputs:
- type: stdinoutput.console:pretty: true
#################################################################### 删除之前的监听记录,再启动  
rm -rf /var/lib/filebeat/* 
# 启动
filebeat -e -c /etc/filebeat/filebeat.yml# 随便输入信息,会被 filebeat 的 stdin 捕获,并显示到 console

测试2.监听日志文件

需要重新建配置文件

#复制原来的配置文件
cp filebeat.yml filebeat02.yml
# 删除之前的监听记录,再启动  
rm -rf /var/lib/filebeat/* 
# 启动
filebeat -e -c /etc/filebeat/filebeat02.yml

/tmp/test.log:监控单个文件

filebeat.inputs:
- type: logpaths:- /tmp/test.logoutput.console:pretty: true

测试3.监听多个文件

#复制原来的配置文件
cp filebeat.yml filebeat03.yml
#复制原来的配置文件
cp filebeat.yml filebeat03.yml
# 删除之前的监听记录,再启动  
rm -rf /var/lib/filebeat/* 
# 启动
filebeat -e -c /etc/filebeat/filebeat03.yml

监听test.log的日记和后缀是txt的文件

  • /tmp/test.log:监控单个文件。
  • /tmp/*.txt:监控 /tmp 目录下所有以 .txt 结尾的文件。
filebeat.inputs:
- type: logpaths:- /tmp/test.log- /tmp/*.txtoutput.console:pretty: true

测试4.路径通配符吃的

#复制原来的配置文件
cp filebeat.yml filebeat04.yml
#复制原来的配置文件
cp filebeat.yml filebeat04.yml
# 删除之前的监听记录,再启动  
rm -rf /var/lib/filebeat/* 
# 启动
filebeat -e -c /etc/filebeat/filebeat04.yml
  • /tmp/test.log:监控单个文件。
  • /tmp/*.txt:监控 /tmp 目录下所有以 .txt 结尾的文件。
  • /tmp/docker/*/*.log:监控 /tmp/docker 目录及其子目录下所有以 .log 结尾的文件。
filebeat.inputs:
- type: logpaths:- /tmp/test.log- /tmp/*.txt- type: logpaths:- /tmp/docker/*/*.log    output.console:pretty: true

测试5.其他

  1. 第一个输入配置
    • type: log:指定输入类型为日志文件。
    • enabled: false:此输入配置被禁用,Filebeat 不会监控这些路径。
    • paths:指定要监控的日志文件路径。
      • /tmp/test.log:监控单个文件。
      • /tmp/*.txt:监控 /tmp 目录下所有以 .txt 结尾的文件。
    • tags: [“mytag-test”]:为这些日志文件添加标签 mytag-test
  2. 第二个输入配置
    • type: log:指定输入类型为日志文件。
    • enabled: true:此输入配置被启用,Filebeat 会监控这些路径。
    • paths:指定要监控的日志文件路径。
      • /tmp/docker/*/*.log:监控 /tmp/docker 目录及其子目录下所有以 .log 结尾的文件。
    • tags: [“mytag-docker”,“容器日志”]:为这些日志文件添加标签 mytag-docker容器日志
    • fields:添加自定义字段。
      • key1: "value1":添加字段 key1,值为 value1
      • key2: "value2":添加字段 key2,值为 value2
    • fields_under_root: true:将自定义字段添加到日志事件的根目录下,而不是默认的 fields 对象下。
filebeat.inputs:
- type: logenabled: falsepaths:- /tmp/test.log- /tmp/*.txttags: ["mytag-test"]- type: logenabled: truepaths:- /tmp/docker/*/*.log    tags: ["mytag-docker","容器日志"]fields:key1: "value1"key2: "value2"fields_under_root: trueoutput.console:pretty: true# enabled:是否可用,默认是 true
# tags:标记,以后在es中容易查找
# fields:自定义字段,包含键值对
# fields_under_root:是放置于根节点下,默认是 false

4.3 配置 output

输出到 es

filebeat.inputs:
- type: logenabled: falsepaths:- /tmp/test.log- /tmp/*.txttags: ["mytag-test"]- type: logenabled: truepaths:- /tmp/docker/*/*.logtags: ["mytag-docker","容器日志"]fields:key1: "value1"key2: "value2"fields_under_root: trueoutput.elasticsearch:hosts: ["http://192.168.9.3:9200","http://192.168.9.4:9200","http://192.168.9.5:9200"]

清空上次的结果,并且在filebeat重启后,在 kibana 中查看索引管理

menu -> stack managerment -> 索引管理

在这里插入图片描述

管理 -> 索引模式 -> 创建索引模式

在这里插入图片描述

menu -> discover -> 选择要展示的字段

在这里插入图片描述

注:实时日志也会在kibana中刷新展示

4.4 索引

官网参考:https://www.elastic.co/guide/en/beats/filebeat/7.17/configuration-template.html

在 output 中指定索引(在 es 中方便查询)

# 前面省略...... # 输出时用 index 指定索引
output.elasticsearch:hosts: ["http://192.168.9.3:9200","http://192.168.9.4:9200","http://192.168.9.5:9200"]index: "my-%{+yyyy.MM.dd}"# 禁用索引生命周期管理(如果启用的话,自定义索引将被忽略)
setup.ilm.enabled: false
# 设置索引模板名称
setup.template.name: "my"
# 设置索引模板的匹配模式
setup.template.pattern: "my*"

清空上次的结果,并且在filebeat重启后,在 kibana 中查看索引管理中的索引模板

默认是下面5个,重启后会有新定义的显示出来(截图中没有刷新页面)

可以删除之前索引模式,再重新创建索引模式时匹配新定义的索引名称(略)

在这里插入图片描述

匹配多个索引

# 前面省略...... # 输出时用 indices 指定多个索引
# 用 when.contains 根据 tag 或 message 等属性进行筛选
output.elasticsearch:hosts: ["http://192.168.9.3:9200","http://192.168.9.4:9200","http://192.168.9.5:9200"]indices:- index: "my-docker-%{+yyyy.MM.dd}"when.contains:tags: "mytag-docker"- index: "my-test-%{+yyyy.MM.dd}"when.contains:tags: "mytag-test"# 禁用索引生命周期管理(index lifecycle managerment,如果启用的话,自定义索引将被忽略)
setup.ilm.enabled: false
# 设置索引模板名称
setup.template.name: "my"
# 设置索引模板的匹配模式
setup.template.pattern: "my*"

清空上次的结果,并且在filebeat重启后,在 kibana 中查看索引管理中的索引模板

重新创建索引模式,重新 discover,可以根据索引分类查看日志了

4.5 分片和副本

在这里插入图片描述

# 前面省略...... # 禁用索引生命周期管理(index lifecycle managerment,如果启用的话,自定义索引将被忽略)
setup.ilm.enabled: false
# 设置索引模板名称
setup.template.name: "my"
# 设置索引模板的匹配模式
setup.template.pattern: "my*"
# 是否覆盖已有的索引模板
setup.template.overwrite: false
# 配置索引模板(3分片1副本)
setup.template.settings:index.number_of_shards: 3index.number_of_replicas: 1

删除索引模板、在索引管理中删除原来的索引,在 linux 清空上次的结果,把filebeat重启

(menu -> stack management -> 索引管理)

注:如果3分片3副本,则会变为黄色状态(可以测试)

5.收集nginx日志

5.1 原生日志

测试时,用 yum 安装 nginx,用 filebeat 收集其访问日志

filebeat 配置参考如下:

在这里插入图片描述

#可以对复制之前的配置文件
cp filebeat06.yml filebeat.yml#############################################################
filebeat.inputs:
- type: logenabled: truepaths:- /var/log/nginx/access.log*tags: ["mytag-nginx"]output.elasticsearch:hosts: ["http://192.168.9.3:9200","http://192.168.9.4:9200","http://192.168.9.5:9200"]indices:- index: "my-nginx-%{+yyyy.MM.dd}"when.contains:tags: "mytag-nginx"setup.ilm.enabled: false
setup.template.name: "my"
setup.template.pattern: "my*"
setup.template.overwrite: falsesetup.template.settings:index.number_of_shards: 3index.number_of_replicas: 1
#############################################################

kibana 中的日志如下:

在这里插入图片描述

nginx 的原生日志不太容易看懂,需要对其格式化

5.2 nginx日志格式

修改nginx 配置文件

vim /etc/nginx/nginx.conf############################################################## json日志格式log_format log_json '{"@timestamp": "$time_local", ''"remote_addr": "$remote_addr", ''"referer": "$http_referer", ''"request": "$request", ''"status": $status, ''"bytes": $body_bytes_sent, ''"agent": "$http_user_agent", ''"x_forwarded": "$http_x_forwarded_for", ''"up_addr": "$upstream_addr",''"up_host": "$upstream_http_host",''"up_resp_time": "$upstream_response_time",''"request_time": "$request_time"'' }';# 引用日志格式名称
access_log  /var/log/nginx/access.log log_json;#这一段配置文件中就有  但名字不一样 原本叫main  需要直接手动修改#access_log  /var/log/nginx/access.log main;
############################################################## 语法检查 
nginx -t 
# 重启nginx(在重启nginx之前最好先删除es中原来的索引:menu->stack management -> 索引管理)
systemctl restart nginx
# 清空原来的日志(以免两种日志格式混在一起)
> /var/log/nginx/access.log

从网页再次请求ngxin后,观察 kibana中的日志格式:

在这里插入图片描述

数据变为json格式了,但还需要优化

5.3 filebeat 配置

  • json.keys_under_root: true 让json格式的数据在在根节点下展示
  • 顺便i修改了索引名为:my-nginx-access-… 让语义性更明显
filebeat.inputs:
- type: log enabled: truepaths:- /var/log/nginx/access.log*tags: ["nginx"]json.keys_under_root: true  output.elasticsearch:hosts: ["http://192.168.9.3:9200","http://192.168.9.4:9200","http://192.168.9.5:9200"]index: "my-nginx-access-%{+yyyy.MM.dd}"setup.ilm.enabled: false
setup.template.name: "my"
setup.template.pattern: "my*"
setup.template.overwrite: false
setup.template.settings:index.number_of_shards: 3index.number_of_replicas: 0

此时可以方便的查看信息了

在这里插入图片描述

6.logstash

6.1 安装

下载 logstash 要注意版本号与 es保持一致

yum 安装,安装到任意一台或同网络的主机上即可(本测试安装到了elk3上)

# 安装
yum -y localinstall logstash-7.17.3-x86_64.rpm# 软连接
ln -sv /usr/share/logstash/bin/logstash /usr/local/bin/

6.2 启动

简单配置,测试是否可以正常启动

配置文件路径可以自定义,启动时用 -f 指定即可

在这里插入图片描述

# 新建配置文件
vim /etc/logstash/conf.d/logstash1.conf###################################################input {stdin {}
}output{stdout{}
}#################################################### 检查语法
logstash -tf /etc/logstash/conf.d/logstash1.conf
# 启动
logstash -f /etc/logstash/conf.d/logstash1.conf

6.3 logstash 对接 es

vim /etc/logstash/conf.d/logstash2.conf###################################################input {stdin {}
}output{elasticsearch {hosts => ["192.168.9.3:9200","192.168.9.4:9200","192.168.9.5:9200"]}
}
#################################################### 检查语法
logstash -tf /etc/logstash/conf.d/logstash2.conf
# 启动
logstash -f /etc/logstash/conf.d/logstash2.conf

启动后,随意输入一些信息

在这里插入图片描述

在kibana中查看到了 es中的信息

访问浏览器的地址还是kibana主机的地址

在这里插入图片描述

创建索引模式后查看信息

在这里插入图片描述

6.3 logstash 对接 filebeat

修改 filebeat 配置,让其 output 到 logstash

filebeat.inputs:
- type: logenabled: truepaths:- /var/log/nginx/access.log*tags: ["nginx"]json.keys_under_root: trueoutput.logstash:hosts: ["192.168.9.5:5044"]#hosts:ip地址是安装logstash主机的地址

修改 logstash 配置,让其 input 来自 beats

vim /etc/logstash/conf.d/logstash3.conf###################################################input {beats {port => 5044}
}output{elasticsearch {hosts => ["192.168.9.3:9200","192.168.9.4:9200","192.168.9.5:9200"]}
}#################################################### 检查语法
logstash -tf /etc/logstash/conf.d/logstash3.conf
# 启动
logstash -f /etc/logstash/conf.d/logstash3.conf

清空es中原来测试的索引等

启动 logstash,启动 filebeat,访问 niginx生成日志,在kibana查看es

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/70072.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决Mac安装软件的“已损坏,无法打开。 您应该将它移到废纸篓”问题

mac安装软件时&#xff0c;如果出现这个问题&#xff0c;其实很简单 首先打开终端&#xff0c;输入下面的命令 sudo xattr -r -d com.apple.quarantine 输入完成后&#xff0c;先不要回车&#xff0c;点击访达--应用程序--找到你无法打开的app图标&#xff0c;拖到终端窗口中…

pytorch实现长短期记忆网络 (LSTM)

人工智能例子汇总&#xff1a;AI常见的算法和例子-CSDN博客 LSTM 通过 记忆单元&#xff08;cell&#xff09; 和 三个门控机制&#xff08;遗忘门、输入门、输出门&#xff09;来控制信息流&#xff1a; 记忆单元&#xff08;Cell State&#xff09; 负责存储长期信息&…

后盾人JS--继承

继承是原型的继承 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </hea…

实际操作 检测缺陷刀片

号he 找到目标图像的缺陷位置&#xff0c;首先思路为对图像进行预处理&#xff0c;灰度-二值化-针对图像进行轮廓分析 //定义结构元素 Mat se getStructuringElement(MORPH_RECT, Size(3, 3), Point(-1, -1)); morphologyEx(thre, tc, MORPH_OPEN, se, Point(-1, -1), 1); …

从实数与复数在交流电路正弦量表示中的对比分析

引言 在交流电路领域&#xff0c;深入理解电压和电流等正弦量的表示方式对电路分析至关重要。其中&#xff0c;只用实数表示正弦量存在诸多局限性&#xff0c;而复数的引入则为正弦量的描述与分析带来了极大的便利。下面将从瞬时值角度&#xff0c;详细剖析只用实数的局限性&a…

Python3 OS模块中的文件/目录方法说明十四

一. 简介 前面文章简单学习了 Python3 中 OS模块中的文件/目录的部分函数。 本文继续来学习 OS 模块中文件、目录的操作方法&#xff1a;os.statvfs() 方法&#xff0c;os.symlink() 方法。 二. Python3 OS模块中的文件/目录方法 1. os.statvfs() 方法 os.statvfs() 方法用…

知识蒸馏教程 Knowledge Distillation Tutorial

来自于&#xff1a;Knowledge Distillation Tutorial 将大模型蒸馏为小模型&#xff0c;可以节省计算资源&#xff0c;加快推理过程&#xff0c;更高效的运行。 使用CIFAR-10数据集 import torch import torch.nn as nn import torch.optim as optim import torchvision.tran…

Turing Complete-1位开关

要求如下&#xff1a; 我的思考&#xff1a; 把输入1当作控制信号&#xff0c;把输入2当作输出信号。 通过非门和开关使输入2形成双通道输出&#xff0c; 通道一为输出输入2取反。 通道二为输出输入2本身。 通过输入1来控制两个通道的开闭。

从Transformer到世界模型:AGI核心架构演进

文章目录 引言:架构革命推动AGI进化一、Transformer:重新定义序列建模1.1 注意力机制的革命性突破1.2 从NLP到跨模态演进1.3 规模扩展的黄金定律二、通向世界模型的关键跃迁2.1 从语言模型到认知架构2.2 世界模型的核心特征2.3 混合架构的突破三、构建世界模型的技术路径3.1 …

深度求索DeepSeek横空出世

真正的强者从来不是无所不能&#xff0c;而是尽我所能。多少有关输赢胜负的缠斗&#xff0c;都是直面本心的搏击。所有令人骄傲振奋的突破和成就&#xff0c;看似云淡风轻寥寥数语&#xff0c;背后都是数不尽的焚膏继晷、汗流浃背。每一次何去何从的困惑&#xff0c;都可能通向…

性能优化中的数据过滤优化

目录 以下是一些关于数据过滤优化的策略和方法 索引使用 避免全表扫描 使用分区 数据预处理 合理设计查询 利用缓存机制 数据库层面优化 系统中通常会有一些统计和分析的功能&#xff0c;以前我们主要针对结构化数据&#xff08;关系型数据库存储&#xff09;进行分析&a…

与本地Deepseek R1:14b的第一次交流

本地部署DS的方法&#xff0c;见&#xff1a;本地快速部署DeepSeek-R1模型——2025新年贺岁-CSDN博客 只有16GB内存且没有强大GPU的个人电脑&#xff0c;部署和运行14b参数的DS大模型已是天花板了。 运行模型 ollama run deepseek-r1:14b C:\Users\Administrator>ollama r…

Python 梯度下降法(六):Nadam Optimize

文章目录 Python 梯度下降法&#xff08;六&#xff09;&#xff1a;Nadam Optimize一、数学原理1.1 介绍1.2 符号定义1.3 实现流程 二、代码实现2.1 函数代码2.2 总代码 三、优缺点3.1 优点3.2 缺点 四、相关链接 Python 梯度下降法&#xff08;六&#xff09;&#xff1a;Nad…

【狂热算法篇】探秘图论之Dijkstra 算法:穿越图的迷宫的最短路径力量(通俗易懂版)

羑悻的小杀马特.-CSDN博客羑悻的小杀马特.擅长C/C题海汇总,AI学习,c的不归之路,等方面的知识,羑悻的小杀马特.关注算法,c,c语言,青少年编程领域.https://blog.csdn.net/2401_82648291?typebbshttps://blog.csdn.net/2401_82648291?typebbshttps://blog.csdn.net/2401_8264829…

MySQL(Undo日志)

后面也会持续更新&#xff0c;学到新东西会在其中补充。 建议按顺序食用&#xff0c;欢迎批评或者交流&#xff01; 缺什么东西欢迎评论&#xff01;我都会及时修改的&#xff01; 大部分截图和文章采用该书&#xff0c;谢谢这位大佬的文章&#xff0c;在这里真的很感谢让迷茫的…

全面剖析 XXE 漏洞:从原理到修复

目录 前言 XXE 漏洞概念 漏洞原理 XML 介绍 XML 结构语言以及语法 XML 结构 XML 语法规则 XML 实体引用 漏洞存在原因 产生条件 经典案例介绍分析 XXE 漏洞修复方案 结语 前言 网络安全领域暗藏危机&#xff0c;各类漏洞威胁着系统与数据安全。XXE 漏洞虽不常见&a…

初级数据结构:栈和队列

目录 一、栈 (一)、栈的定义 (二)、栈的功能 (三)、栈的实现 1.栈的初始化 2.动态扩容 3.压栈操作 4.出栈操作 5.获取栈顶元素 6.获取栈顶元素的有效个数 7.检查栈是否为空 8.栈的销毁 9.完整代码 二、队列 (一)、队列的定义 (二)、队列的功能 (三&#xff09…

登录认证(5):过滤器:Filter

统一拦截 上文我们提到&#xff08;登录认证&#xff08;4&#xff09;&#xff1a;令牌技术&#xff09;&#xff0c;现在大部分项目都使用JWT令牌来进行会话跟踪&#xff0c;来完成登录功能。有了JWT令牌可以标识用户的登录状态&#xff0c;但是完整的登录逻辑如图所示&…

Python 网络爬虫实战:从基础到高级爬取技术

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 1. 引言 网络爬虫&#xff08;Web Scraping&#xff09;是一种自动化技术&#xff0c;利用程序从网页中提取数据&#xff0c;广泛…

MySQL锁类型(详解)

锁的分类图&#xff0c;如下&#xff1a; 锁操作类型划分 读锁 : 也称为共享锁 、英文用S表示。针对同一份数据&#xff0c;多个事务的读操作可以同时进行而不会互相影响&#xff0c;相互不阻塞的。 写锁 : 也称为排他锁 、英文用X表示。当前写操作没有完成前&#xff0c;它会…