1024程序员节特辑 | ELK+ 用户画像构建个性化推荐引擎,智能实现“千人千面”

news2024/11/18 21:35:08

专栏集锦,赶紧收藏以备不时之需

Spring Cloud实战专栏:https://blog.csdn.net/superdangbo/category_9270827.html

Python 实战专栏:https://blog.csdn.net/superdangbo/category_9271194.html

Logback 详解专栏:https://blog.csdn.net/superdangbo/category_9271502.html

tensorflow专栏:https://blog.csdn.net/superdangbo/category_8691332.html

Redis专栏:https://blog.csdn.net/superdangbo/category_9950790.html

1024程序员节特辑文章:

1024程序员节特辑 | OKR VS KPI谁更合适?

1024程序员节特辑 | Spring Boot实战 之 MongoDB分片或复制集操作

Spring实战系列文章:

Spring实战 | Spring AOP核心秘笈之葵花宝典

Spring实战 | Spring IOC不能说的秘密?

国庆中秋特辑系列文章:

国庆中秋特辑(八)Spring Boot项目如何使用JPA

国庆中秋特辑(七)Java软件工程师常见20道编程面试题

国庆中秋特辑(六)大学生常见30道宝藏编程面试题

国庆中秋特辑(五)MySQL如何性能调优?下篇

国庆中秋特辑(四)MySQL如何性能调优?上篇

国庆中秋特辑(三)使用生成对抗网络(GAN)生成具有节日氛围的画作,深度学习框架 TensorFlow 和 Keras 来实现

国庆中秋特辑(二)浪漫祝福方式 使用生成对抗网络(GAN)生成具有节日氛围的画作

国庆中秋特辑(一)浪漫祝福方式 用循环神经网络(RNN)或长短时记忆网络(LSTM)生成祝福诗词

目录

  • 一、ELK介绍
  • 二、ELK安装部署
  • 三、ELK跟不同技术结合,实现“千人千面”
  • 四、ELK + 用户画像,用Java实现“千人千面”
  • 五、ELK + 用户画像,用Python实现“千人千面”

在这里插入图片描述

一、ELK介绍

ELK,全称 Elasticsearch、Logstash、Kibana,是一种流行的开源日志管理和分析平台。ELK Stack 的三个主要组件分别为 Elasticsearch(分布式搜索和分析引擎)、Logstash(数据收集和处理工具)以及 Kibana(数据可视化工具)。
在这里插入图片描述

1、发展历史
ELK 的历史可以追溯到 2012 年,当时 Elasticsearch 项目创始人 Shay Banon 发布了 Elasticsearch 的首个版本。随着项目的发展,Logstash 和 Kibana 相继诞生,并与 Elasticsearch 共同构成了 ELK Stack。
2、组件详细介绍

  1. Elasticsearch
    Elasticsearch 是一个高度可扩展的开源全文搜索和分析引擎,它基于 Apache Lucene 项目开发。Elasticsearch 提供了分布式、多台机器上的搜索和分析功能,能够快速存储、检索和分析大量数据。在 ELK Stack 中,Elasticsearch 负责存储和查询日志数据。
  2. Logstash
    Logstash 是一个数据收集和处理的强大工具,它可以从各种数据源(如日志文件、数据库和消息队列)收集数据,并对数据进行过滤、分析和格式化。Logstash 基于事件驱动架构,能够高并发地处理大量数据。在 ELK Stack 中,Logstash 负责从各种数据源收集日志数据,并将其发送到 Elasticsearch 进行存储和分析。
  3. Kibana
    Kibana 是一个用户友好的日志分析和可视化工具,它可以帮助用户通过图表、表格和仪表盘等直观的方式查看和分析日志数据。Kibana 基于 Web 界面,支持多种数据分析功能,如聚合、过滤和可视化。在 ELK Stack 中,Kibana 负责展示和分析 Elasticsearch 存储的日志数据。
    3、案例
  4. 日志收集和分析
    某公司有多个服务器,需要对各服务器的日志进行统一收集和分析。使用 ELK Stack,可以在各个服务器上安装 Filebeat,将日志收集到 Logstash,然后通过 Logstash 发送到 Elasticsearch 进行存储和分析。最后,通过 Kibana 进行可视化展示。
  5. 实时数据监控
    某公司在生产环境中需要实时监控各项关键指标,以确保系统的稳定运行。使用 ELK Stack,可以实时收集和分析各项指标数据,并通过 Kibana 进行可视化展示,以便实时了解系统运行状况。
  6. 安全事件分析
    某公司需要对安全事件进行实时监控和分析,以便及时发现并应对潜在的安全威胁。使用 ELK Stack,可以收集和分析安全事件数据,并通过 Kibana 进行可视化展示,以便快速识别异常并采取措施。
    4、总结
    ELK Stack 是一种强大的日志管理和分析工具,它可以帮助用户高效地收集、存储、分析和可视化大量日志数据。ELK Stack 的三个主要组件分别为 Elasticsearch(分布式搜索和分析引擎)、Logstash(数据收集和处理工具)以及 Kibana(数据可视化工具)。ELK Stack 在多个领域都有广泛的应用,如日志收集和分析、实时数据监控以及安全事件分析等。通过使用 ELK Stack,用户可以更加方便地管理和分析日志数据,从而提高运维效率。

二、ELK安装部署

ELK 是指 Elasticsearch、Logstash 和 Kibana 三个开源工具的组合,通常用于大规模日志数据处理和可视化。以下是 ELK 的安装和部署步骤:

  1. 准备环境
    确保你的服务器满足以下要求:
  • 操作系统:Ubuntu 18.04 LTS
  • 内存:至少 4GB
  • 硬盘:至少 20GB
  1. 安装 Java
    在 Ubuntu 服务器上安装 Java,运行以下命令:
sudo apt-get update  
sudo apt-get install openjdk-11-jdk  

检查 Java 版本:

java -version  
  1. 下载并安装 Elasticsearch
    访问 Elasticsearch 官方网站下载合适版本的 Elasticsearch:https://www.elastic.co/downloads/elasticsearch
    下载完成后,将 Elasticsearch 压缩包上传到服务器,然后解压:
sudo mkdir -p /usr/share/elasticsearch  
sudo tar -xzf elasticsearch-7.10.2.tar.gz -C /usr/share/elasticsearch --strip-components=1  

设置 Elasticsearch 的环境变量:

export ES_HOME=/usr/share/elasticsearch  
export PATH=$PATH:$ES_HOME/bin  

创建 Elasticsearch 配置文件:

sudo tee /etc/elasticsearch/elasticsearch.yml << EOL  
cluster.name: my-cluster  
node.name: my-node  
network.host: 0.0.0.0  
http.port: 9200  
discovery.seed_hosts: ["host1", "host2"]  
cluster.initial_master_nodes: ["node-1", "node-2"]  
EOL  

启动 Elasticsearch:

sudo systemctl start elasticsearch  

检查 Elasticsearch 是否运行正常:

curl -X GET "localhost:9200/"  
  1. 下载并安装 Logstash
    访问 Logstash 官方网站下载合适版本的 Logstash:https://www.elastic.co/downloads/logstash
    在这里插入图片描述

下载完成后,将 Logstash 压缩包上传到服务器,然后解压:

sudo mkdir -p /usr/share/logstash  
sudo tar -xzf logstash-7.10.2.tar.gz -C /usr/share/logstash --strip-components=1  

创建 Logstash 配置文件:

sudo tee /etc/logstash/logstash.conf << EOL  
input {  
 beats {  
   port => 5044  
 }  
}
filter {  
 if "apache" in [$log][app] {  
   grok {  
     match => { "message" => "%{GREEDYDATA:apache_message}" }  
   }  
 } else if "nginx" in [$log][app] {  
   grok {  
     match => { "message" => "%{GREEDYDATA:nginx_message}" }  
   }  
 }  
}
output {  
 if "apache" in [$log][app] {  
   elasticsearch {  
     hosts => ["http://localhost:9200"]  
     index => "my-index-%{+YYYY.MM.dd}"  
   }  
 } else if "nginx" in [$log][app] {  
   elasticsearch {  
     hosts => ["http://localhost:9200"]  
     index => "my-index-%{+YYYY.MM.dd}"  
   }  
 }  
}
EOL  

启动 Logstash:

sudo systemctl start logstash  
  1. 下载并安装 Kibana
    访问 Kibana 官方网站下载合适版本的 Kibana:https://www.elastic.co/downloads/kibana
    在这里插入图片描述

下载完成后,将 Kibana 压缩包上传到服务器,然后解压:

sudo mkdir -p /usr/share/kibana  
sudo tar -xzf kibana-7.10.2.tar.gz -C /usr/share/kibana --strip-components=1  

创建 Kibana 配置文件:

sudo tee /etc/kibana/kibana.yml << EOL  
server.port: 5601  
server.host: "0.0.0.0"  
elasticsearch.hosts: ["http://localhost:9200"]  
EOL  

启动 Kibana:

sudo systemctl start kibana  

在这里插入图片描述

检查 Kibana 是否运行正常,访问 http://your_server_ip:5601,如果看到 Kibana 的欢迎页面,则说明安装成功。

  1. 配置 Elasticsearch、Logstash 和 Kibana 的集成
    在 Elasticsearch 的配置文件中,添加以下内容:
http.port: 9200  
discovery.seed_hosts: ["host1", "host2"]  
cluster.initial_master_nodes: ["node-1", "node-2"]  

在 Logstash 的配置文件中,添加以下内容:

output {  
 elasticsearch {  
   hosts => ["http://localhost:9200"]  
   index => "my-index-%{+YYYY.MM.dd}"  
 }  
}

在 Kibana 的配置文件中,添加以下内容:

server.port: 5601  
server.host: "0.0.0.0"  
elasticsearch.hosts: ["http://localhost:9200"]  
  1. 启动 Elasticsearch、Logstash 和 Kibana
    在命令行中,分别启动 Elasticsearch、Logstash 和 Kibana:
sudo systemctl start elasticsearch  
sudo systemctl start logstash  
sudo systemctl start kibana  

现在,你已经成功安装并部署了 ELK。

三、ELK跟不同技术结合,实现“千人千面”

ELK 技术可以与多种技术结合,实现千人千面的需求。以下是一些建议,并结合具体案例和代码进行说明:

  1. ELK + 用户画像:
    用户画像是对用户的基本信息、兴趣爱好、消费习惯等进行建模。可以通过收集用户的行为数据,结合机器学习和大数据技术,分析用户的兴趣和需求。将分析结果存储在用户画像系统中,为用户提供个性化推荐。
    案列:
  • 收集用户行为数据,如搜索记录、浏览记录、购买记录等。
  • 使用机器学习算法(如决策树、SVM、聚类等)分析用户行为数据,构建用户画像。
  • 将用户画像与 ELK 结合,实现基于用户画像的个性化推荐。
  1. ELK + 协同过滤:
    协同过滤是一种基于用户历史行为数据的推荐算法,可以挖掘用户之间的相似性以及物品之间的相似性。通过协同过滤算法,可以为用户提供个性化推荐。
    案列:
  • 收集用户的历史行为数据,如评分、购买记录等。
  • 使用协同过滤算法(如基于用户的协同过滤、基于物品的协同过滤等)挖掘用户和物品之间的相似性。
  • 将协同过滤的结果与 ELK 结合,实现基于协同过滤的个性化推荐。
  1. ELK + 深度学习:
    深度学习可以在大规模数据上学习用户的兴趣和需求,为用户提供个性化推荐。可以通过神经网络、卷积神经网络、循环神经网络等算法进行深度学习。
    案列:
  • 收集用户行为数据,如点击记录、浏览记录等,并将其转化为适合深度学习模型输入的数据格式。
  • 使用深度学习模型(如神经网络、卷积神经网络、循环神经网络等)训练模型。
  • 将深度学习模型的输出与 ELK 结合,实现基于深度学习的个性化推荐。
    以上仅为示例,实际应用中可以根据业务需求和场景进行调整。在实际项目中,ELK 通常作为整个推荐系统的基础设施,与其他技术(如用户画像、协同过滤、深度学习等)相结合,实现千人千面的个性化推荐。

四、ELK + 用户画像,用Java实现“千人千面”

ELK(Elasticsearch、Logstash、Kibana)是一个大数据处理和可视化平台,而用户画像则是根据用户的行为、兴趣、喜好等信息构建的用户模型。实现千人千面,即为目标用户提供个性化的内容和服务。
要实现 ELK + 用户画像的千人千面,你需要完成以下步骤:

  1. 收集用户数据:收集用户的行为数据、兴趣数据、喜好数据等。这些数据可以从用户的浏览记录、购买记录、搜索记录等渠道获取。
  2. 构建用户画像:根据收集到的用户数据,使用机器学习算法(例如决策树、支持向量机等)构建用户画像。用户画像包括用户的年龄、性别、职业、地域、消费水平等信息。
  3. 存储用户画像:将构建好的用户画像存储在 Elasticsearch 中,以便后续的查询和推荐。
  4. 实现推荐算法:使用 Logstash 处理用户行为数据,然后结合用户画像,实现个性化推荐。推荐算法可以使用基于内容的推荐、协同过滤、矩阵分解等。
  5. 输出推荐结果:将推荐结果可视化在 Kibana 中,提供给用户。
    以下是一个简化的 Java 代码示例,用于实现 ELK + 用户画像的千人千面:
    要安装所需的库,您需要执行以下步骤:
  6. 添加 Maven 依赖项
    在您的 Maven 项目的 pom.xml 文件中,添加以下依赖项:
<dependencies>  
 <dependency>  
   <groupId>org.elasticsearch</groupId>  
   <artifactId>elasticsearch</artifactId>  
   <version>7.9.3</version>  
 </dependency>  
 <dependency>  
   <groupId>com.fasterxml.jackson.core</groupId>  
   <artifactId>jackson-databind</artifactId>  
   <version>2.12.3</version>  
 </dependency>  
</dependencies>  
  1. 创建 UserProfile 类
    创建一个表示用户画像的类,包括用户 ID、年龄、性别、兴趣等属性。
public class UserProfile {  
   private String userId;  
   private int age;  
   private String gender;  
   private List<String> interests;
   // 构造函数、getter 和 setter 方法  
}
  1. 创建 UserProfileService
    创建一个 UserProfileService 类,用于处理用户画像的相关操作,如创建、更新、查询等。
import com.fasterxml.jackson.databind.ObjectMapper;  
import org.elasticsearch.action.search.SearchRequest;  
import org.elasticsearch.action.search.SearchResponse;  
import org.elasticsearch.client.RestHighLevelClient;  
import org.elasticsearch.index.query.QueryBuilders;  
import org.elasticsearch.search.builder.SearchSourceBuilder;  
import org.elasticsearch.search.fetch.FetchSourceContext;  
import org.elasticsearch.search.fetch.SearchHit;  
import org.elasticsearch.search.fetch.SearchHits;  
import org.elasticsearch.search.highlight.HighlightBuilder;  
import org.elasticsearch.search.highlight.HighlightField;
import java.io.IOException;  
import java.util.List;  
import java.util.stream.Collectors;
public class UserProfileService {  
   private RestHighLevelClient client;  
   private ObjectMapper objectMapper;
   public UserProfileService(RestHighLevelClient client) {  
       this.client = client;  
       this.objectMapper = new ObjectMapper();  
   }
   public UserProfile createOrUpdateUserProfile(UserProfile userProfile) throws IOException {  
       // 保存用户画像到 Elasticsearch  
       // ...  
   }
   public UserProfile getUserProfileById(String userId) throws IOException {  
       // 从 Elasticsearch 查询用户画像  
       // ...  
   }
   public List<UserProfile> getSimilarUserProfiles(String userId, int topN) throws IOException {  
       // 查询与目标用户相似的用户画像  
       // ...  
   }  
}
  1. 实现基于用户画像的推荐
    在 UserProfileService 中添加一个推荐方法,根据用户画像推荐相关商品。
public List<String> recommendItems(String userId, int topN) throws IOException {  
   // 分析用户行为数据,提取特征  
   SearchRequest searchRequest = new SearchRequest(INDEX_NAME);  
   SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();  
   searchSourceBuilder.query(QueryBuilders.matchQuery("user_id", userId));  
   // 设置分页和排序  
   searchSourceBuilder.from(0);  
   searchSourceBuilder.size(topN);  
   // 获取用户行为数据  
   SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT, searchSourceBuilder);  
   SearchHits<UserBehavior> searchHits = searchResponse.getHits(UserBehavior.class);  
   // 计算相似度  
   List<String> recommendedItems = searchHits.getSearchHits().stream()  
           .map(hit -> hit.getSourceAsString("item_name"))  
           .collect(Collectors.toList());  
   return recommendedItems;  
}
  1. 创建 UserBehavior 类
    创建一个表示用户行为的类,包括用户 ID、商品 ID、购买时间
import java.util.Date;
public class UserBehavior {  
   private String userId;  
   private String productId;  
   private Date purchaseTime;
   public UserBehavior(String userId, String productId, Date purchaseTime) {  
       this.userId = userId;  
       this.productId = productId;  
       this.purchaseTime = purchaseTime;  
   }
   // getter and setter methods
   @Override  
   public String toString() {  
       return "UserBehavior{" +  
               "userId='" + userId + '\'' +  
               ", productId='" + productId + '\'' +  
               ", purchaseTime=" + purchaseTime +  
               '}';  
   }  
}

五、ELK + 用户画像,用Python实现“千人千面”

以下是一个简单的基于 ELK 和 Python 实现用户画像的示例:

  1. 安装所需库:
pip install elasticsearch  
pip install logstash  
pip install kibana  
pip install pandas  
pip install scikit-learn  
  1. 编写 Python 脚本,实现用户画像分析和推荐:
import pandas as pd  
import numpy as np  
from sklearn.feature_extraction.text import TfidfVectorizer  
from sklearn.metrics.pairwise import cosine_similarity  
from elasticsearch import Elasticsearch
# 连接 Elasticsearch  
es = Elasticsearch([{'host': 'localhost', 'port': 9200}])
# 设置索引和类型  
index_name = 'user_behavior'  
type_name = 'log'
# 分析用户行为数据,提取特征  
def analyze_user_behavior(user_id):  
   query = {  
       'query': {  
           'match': {'user_id': user_id}  
       }  
   }  
   user_behavior = es.search(index=index_name, type=type_name, body=query)  
   user_behavior_df = pd.DataFrame(user_behavior['hits']['hits'])  
   user_behavior_df.drop(['_source'], axis=1, inplace=True)  
   return user_behavior_df
# 计算用户画像之间的相似度  
def calculate_similarity(user1, user2):  
   user1_behavior = analyze_user_behavior(user1)  
   user2_behavior = analyze_user_behavior(user2)  
     
   # 使用 TF-IDF 计算特征向量  
   vectorizer = TfidfVectorizer()  
   user1_features = vectorizer.fit_transform(user1_behavior['item_name'])  
   user2_features = vectorizer.fit_transform(user2_behavior['item_name'])  
     
   # 计算相似度  
   similarity = cosine_similarity(user1_features, user2_features)  
   return similarity
# 推荐物品  
def recommend_items(user_id, top_n):  
   # 获取所有用户的行为数据  
   all_user_behavior = analyze_user_behavior('all')  
     
   # 计算所有用户与当前用户的相似度  
   all_user_similarity = calculate_similarity(user_id, 'all')  
     
   # 获取相似度最高的前 top_n 个用户  
   top_n_users = all_user_similarity.argsort()[-top_n:][::-1]  
     
   # 获取 top_n 个用户的行为数据  
   top_n_user_behavior = [analyze_user_behavior(user) for user in top_n_users]  
     
   # 计算 top_n 个用户购买的物品  
   top_n_items = pd.concat([top_n_user_behavior[i]['item_name'] for i in range(top_n)], axis=1)  
     
   # 返回 top_n 个推荐物品  
   return top_n_items.reset_index(drop=True)
# 示例  
user_id = 'user1'  
top_n = 3  
recommended_items = recommend_items(user_id, top_n)  
print(f"给用户 {user_id} 推荐的前 {top_n} 个物品:{recommended_items}")  

这个示例仅用于说明如何结合 ELK 和 Python 实现基于用户画像的个性化推荐。实际应用中需要根据具体需求和场景进行调整。另外,推荐算法也可以根据业务需求选择其他更复杂的算法,如基于内容的推荐、协同过滤、深度学习等。

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

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

相关文章

Mac苹果电脑开不了机怎么办,该怎么修复

台式机Mac或MacBook无法打开&#xff0c;或者可能无法通过Apple图标启动&#xff1f;不用担心&#xff0c;虽然会让人烦躁不安&#xff0c;但通常是可以修复的。 以下就是重新启动Mac所需的所有步骤。只需按顺序进行操作即可&#xff0c;除非操作系统更新失败后Mac无法启动。在…

[1024]程序员节 一晃6年过去了

加入开发者大军&#xff0c;一晃已是6年有余&#xff0c;从最初的Andoird开发如火如荼&#xff0c;到现在的秋风萧瑟&#xff0c;宛如被秋风吹得只剩躯干的树木&#xff0c;等待来年的焕发新芽。 我本不是一个科班出身的开发者&#xff0c;但是为了生活&#xff0c;说白了为了钱…

macos平台好用的FTP客户端 Transmit 5最新中文

Transmit 5是一款Mac平台上的FTP(文件传输协议)客户端软件&#xff0c;它可以让用户方便地在不同的计算机之间传输文件&#xff0c;例如从本地计算机上传或下载文件到远程服务器。以下是Transmit 5的一些主要功能和特点&#xff1a; 用户友好的界面&#xff1a;Transmit 5具有…

英语——分享篇——每日200词——1401-1600

1401——willing——[wɪlɪŋ]——adj.乐意的&#xff0c;自愿的——willing——will意志(熟词)ing鹰(谐音)——这只意志力强的鹰乐意帮助别人——Im perfectly willing to discuss the problem.——我十分乐意讨论这个问题。 1402——otherwise——[ʌəwaɪz]——conj.否则&…

KT6368A的封装怎么画 原理图怎么画 资料怎么看 怎么下载呢

一、简介 KT6368A的封装怎么画 原理图怎么画 资料怎么看 怎么下载呢 也有好几个客户问我们这样的问题&#xff0c;实在是太难了 但是没办法&#xff0c;客户就是上帝&#xff0c;也只能选择认真的回答&#xff0c; 这里对这类型的问题进行统一精细化回复&#xff0c;高手请…

一个三年女软件测试的成长之路

如果你恰好刚刚进入一家新公司&#xff0c;领导一上来就让你开展自动化测试&#xff0c;作为一名初出茅庐的测试新人&#xff0c;除了手足无措&#xff0c;你只能默默慨叹自己能力尚欠&#xff0c;眼前只会出现一个又一个无从下手的问题&#xff1a; 作为手工测试&#xff0c;…

悟空crm“您提供的密钥不是有效的百度LBS开放平台密钥,或此密钥未对本应用的百度地图JavaScriptAPI授权“问题处理办法

点击悟空crm&#xff0c;创建客户的时候系统提示&#xff1a; 悟空crm 您提供的密钥不是有效的百度LBS开放平台密钥&#xff0c;或此密钥未对本应用的百度地图JavaScriptAPI授权。您可以访问如下网址了解如何获取有效的密钥&#xff1a;http://lbsyun.baidu.com/apiconsole/…

通过内网穿透技术实现USB设备共享(USB Redirector)逆向共享

文章目录 前言1. 安装下载软件1.1 内网安装使用USB Redirector1.2 下载安装cpolar内网穿透 2. 完成USB Redirector服务端和客户端映射连接3. 设置固定的公网地址 前言 USB Redirector是一款方便易用的USB设备共享服务应用程序&#xff0c;它提供了共享和访问本地或互联网上的U…

扩展技巧 绕过waf

文件上传 绕过waf qikachu靶场 js代码 删除判断 绕过 脏数据绕过 xss绕过 为了ssrf编写防御脚本

Pycharm安装第三方库的详细教程

**常用方法一&#xff1a;**内部安装 这种安装方法是我们经常使用的一种&#xff0c;进入到pycharm界面中&#xff0c;点击菜单栏上的file选项&#xff0c;选择settings&#xff0c; 找到界面中的Project Interpreter 或者 Python interpreter&#xff0c;点击““号&#xf…

做客户成功岗位有必要考PMP吗?

作为客户成功岗位的从业者&#xff0c;我们需要具备一定的项目管理知识和技能&#xff0c;以便更好地为客户提供服务。而PMP认证是全球最具权威性的项目管理认证之一&#xff0c;它能够帮助从业者提升项目管理能力&#xff0c;提高客户成功率。那么&#xff0c;做客户成功岗位有…

面向对象设计原则之依赖倒置原则

目录 定义原始定义进一步的理解 作用实现方法代码示例 定义 依赖倒置原则&#xff08;Dependence Inversion Principle&#xff09;&#xff0c;缩写为DIP。 原始定义 High level modules should not depend upon low level modules. Both should depend upon abstractions.…

docker图形胡界面管理工具--Portainer可视化面板安装

1.安装运行Portainer docker run -d -p 8088:9000 \ > --restartalways -v /var/run/docker.sock:/var/run/docker.sock --privilegedtrue portainer/portainer--restartalways&#xff1a;Docker启动后容器自动启动 -p&#xff1a;端口映射 -v&#xff1a;路径映射2.通过…

RIAC-V架构开发——CSR指令访问控制与状态寄存器的两种方式(寄存器名字、寄存器编号)

1、CSR指令介绍 &#xff08;1&#xff09;CSR&#xff0c;即Control and Status Register&#xff0c;控制与状态寄存器&#xff0c;属于CPU自带的一类寄存器&#xff0c;csr寄存器采用12bit编码&#xff0c;共支持4096个csr寄存器&#xff0c;其中RISC-V架构规定占用了部分地…

坚果N1 Air、极米Z7X和NEW Z6X怎么选,这篇选购指南必看

许多朋友曾表示&#xff0c;一直想入手一款家用投影仪&#xff0c;来打造家庭影院的观影氛围&#xff0c;但市面上的产品太多了&#xff0c;看了一个礼拜的选购教程都没有想好到底买哪款&#xff0c;为了帮助消费者更“懂行”地挑选产品&#xff0c;我们今天就以2K价位段的投影…

使用Lychee搭建个人图片存储系统并进行远程访问设置实现公网访问本地私人图床

文章目录 1.前言2. Lychee网站搭建2.1. Lychee下载和安装2.2 Lychee网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 图床作为图片集中存放的服务网站&#xff0c;可以看做是云存储的一部分&#xff0c;既可…

2023 年程序员必读的 27 本软件开发书籍

不断发展的软件开发领域需要不断学习和改进。现代开发实践要求软件工程师具备全面的知识&#xff0c;包括各个领域的理论见解和实践技术&#xff0c;从编程语言和数据库管理到质量保证、网页设计和 DevOps 实践。 这就是编程书籍可以提供帮助的地方。通过及时了解此类书籍并应…

2023年中国婚恋交友服务行业发展趋势分析:数字化、智能化将成必然趋势[图]

婚恋交友服务提供商是指围绕适婚人群的婚恋或亲密关系需求&#xff0c;提供恋爱交友、相亲匹配及情感咨询等服务的企业。常见的模式主要分为两种&#xff1a;第一&#xff0c;由人脸识别、身份验证、属性分析公有云及大数据分析等信息技术为驱动的线上平台。第二&#xff0c;由…

功能超全的微信小程序制作源码 含15大主流功能小程序 源码开源可二开 持续更新升级

给大家分享介绍一款功能超全的微信小程序制作源码&#xff0c;它包含了15大主流功能小程序&#xff0c;像微同城、电商类、在线报名、社区团购、外卖点餐、AI智能名片等小程序都有&#xff0c;根据需求可任意调用&#xff0c;自由DIY&#xff0c;开发属于你自己的小程序&#x…

C语言笔记之指针(二)

前言 本文主要介绍指针与内存和地址的关系,指针与内存关系深入解析&#xff0c;包括占用大小、动态分配&#xff0c;提醒使用sizeof()注意点。仅供大家参考学习,若有错换之处,欢迎交流指导~ 指针在不同位数电脑中的内存占用 在上图左边可以看出,不同位数的电脑中,指针本身所占…