# 分布式链路追踪_skywalking_学习(2)

分布式链路追踪_skywalking_学习(2)

一、分布式链路追踪_skywalking :Rpc 调用监控

1、Skywalking(6.5.0) 支持的 Rpc 框架有以下几种:

  • Dubbo 2.5.4 -> 2.6.0
  • Dubbox 2.8.4
  • Apache Dubbo 2.7.0
  • Motan 0.2.x -> 1.1.0
  • gRPC 1.x
  • Apache ServiceComb Java Chassis 0.1 -> 0.5,1.0.x
  • SOFARPC 5.4.0

2、使用 Spring Boot 和 Dubbo 搭建一个简单的服务提供方和服务消费方来测试 Skywalking 对于 Rpc 调用的支持。新建两个工程(skywalking_dubbo_consumer 和skywalking_dubbo_provider),并打包 skywalking_dubbo_consumer.jar 和skywalking_dubbo_provider.jar 来进行测试。

2.1 打开 idea,创建 服务消费方 skywalking_dubbo_consumer 的 maven 工程。
	--> idea --> File --> New --> Project --> Maven Project SDK: ( 1.8(java version "1.8.0_131" ) --> Next --> Groupld : ( djh.it )Artifactld : ( skywalking_dubbo_consumer )Version : 1.0-SNAPSHOT--> Name: ( skywalking_dubbo_consumer )Location: ( \skywalking_dubbo_consumer\ )	--> Finish
2.2 在工程 skywalking_dubbo_consumer (模块)中的 pom.xml 中导入依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.10.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>djh.it</groupId><artifactId>skywalking_dubbo_consumer</artifactId><version>0.0.1-SNAPSHOT</version><name>skywalking_dubbo_consumer</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.alibaba.spring.boot</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.0.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
2.3 在工程 skywalking_dubbo_consumer (模块)中,创建配置文件 application.properties。
## 2024-5-21 创建配置文件 application.propertiesspring.application.name=skywalking_dubbo_consumer
server.port=8085
2.4 在工程 skywalking_dubbo_consumer (模块)中,创建 接口类 IHelloService.java。
/**
*  2024-5-21 创建 接口类 IHelloService.java
*
*  简化项目的开发,将 IHelloService接口在消费方和提供方都编写一份
*/
package djh.it.api;public interface IHelloService {public String hello();
}
2.5 在工程 skywalking_dubbo_consumer (模块)中,创建 启动类 SkywalkingDubboConsumerApplication.java。
/**
*  2024-5-21 创建 启动类 SkywalkingDubboConsumerApplication.java
*/
package djh.it.skywalking_dubbo_consumer;import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@EnableDubboConfiguration  //添加dubbo生效注解
public class SkywalkingDubboConsumerApplication {public static void main(String[] args) {SpringApplication.run(SkywalkingDubboConsumerApplication.class, args);}
}
2.6 在工程 skywalking_dubbo_consumer (模块)中,创建 Controller 类 TestController.java 进行测试。
/**
*  2024-5-21 创建 Controller 类 TestController.java
*/
package djh.it.skywalking_dubbo_consumer.controller;import com.alibaba.dubbo.config.annotation.Reference;
import djh.it.api.IHelloService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class TestController {//采用直连而非从注册中心获取服务地址的方式,在 @Reference 注解 中声明@Reference(url = "dubbo://127.0.0.1:20880")private IHelloService helloService;@GetMapping("/hello")public String hello(){return helloService.hello();}
}

3、创建 服务提供方 skywalking_dubbo_provider 的 maven 工程

3.1 打开 idea,创建 artifactId 名为 skywalking_dubbo_provider 的 maven 工程。
	--> idea --> File --> New --> Project --> Maven Project SDK: ( 1.8(java version "1.8.0_131" ) --> Next --> Groupld : ( djh.it )Artifactld : ( skywalking_dubbo_provider )Version : 1.0-SNAPSHOT--> Name: ( skywalking_dubbo_provider )Location: ( \skywalking_dubbo_provider\ )	--> Finish
3.2 在工程 skywalking_dubbo_provider (模块)中的 pom.xml 中导入依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.10.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>djh.it</groupId><artifactId>skywalking_dubbo_provider</artifactId><version>0.0.1-SNAPSHOT</version><name>skywalking_dubbo_provider</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--添加springboot和dubbo集成配置--><dependency><groupId>com.alibaba.spring.boot</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.0.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
3.3 在工程 skywalking_dubbo_provider (模块)中,创建配置文件 application.properties。
## 2024-5-21 创建配置文件 application.properties## 为了简化环境搭建,采用了本地直接调用的方式,所以将注册中心写成 N/A 表示不注册到注册中
心。spring.application.name=skywalking_dubbo_provider
spring.dubbo.server=true
spring.dubbo.registry=N/A
server.port=8086
3.4 在工程 skywalking_dubbo_provider (模块)中,创建 接口类 IHelloService.java。
/**
*  2024-5-21 创建 接口类 IHelloService.java
*
*  简化项目的开发,将 IHelloService接口在消费方和提供方都编写一份
*/
package djh.it.api;public interface IHelloService {public String hello();
}
3.5 在工程 skywalking_dubbo_provider (模块)中,创建 启动类 SkywalkingDubboProviderApplication.java。
/**
*  2024-5-21 创建 启动类 SkywalkingDubboProviderApplication.java
*/
package djh.it.skywalking_dubbo_provider;import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@EnableDubboConfiguration  //添加dubbo生效注解
public class SkywalkingDubboProviderApplication {public static void main(String[] args) {SpringApplication.run(SkywalkingDubboProviderApplication.class, args);}
}
3.6 在工程 skywalking_dubbo_provider (模块)中,创建 接口实现 类 HelloServiceImpl.java。
/**
*  2024-5-21 创建 接口实现 类 HelloServiceImpl.java
*/
package djh.it.skywalking_dubbo_provider.service;import com.alibaba.dubbo.config.annotation.Service;
import djh.it.api.IHelloService;
import org.springframework.stereotype.Component;@Service(interfaceClass = IHelloService.class)
@Component
public class HelloServiceImpl implements IHelloService {@Overridepublic String hello() {return "hello skywalking";}
}

4、打包 skywalking_dubbo_consumer.jar 和 skywalking_dubbo_provider.jar 上传

至 /usr/local/skywalking 目录下。

5、复制两份 agent,防止使用的冲突。

cd /usr/local/skywalking/apache-skywalking-apm-bin/
cp -r agent agent_dubbo_provider
cp -r agent agent_dubbo_consumer

6、修改 agent_dubbo_provider 配置中的应用名为:

vi agent_dubbo_provider/config/agent.config# The service name in UI
agent.service_name=${SW_AGENT_NAME:dubbo_provider}

7、接着修改 agent_dubbo_consumer:修改应用名:

vi agent_dubbo_consumer/config/agent.config# The service name in UI
agent.service_name=${SW_AGENT_NAME:dubbo_consumer}

8、先启动 provider,等待启动成功。

# 切换到目录下
cd /usr/local/skywalking# 启动 provider
java -javaagent:/usr/local/skywalking/apache-skywalking-apm-
bin/agent_dubbo_provider/skywalking-agent.jar  -jar
skywalking_dubbo_provider.jar &

9、启动 consumer,等待启动成功。

# 切换到目录下
cd /usr/local/skywalking# 启动 consumer
java -javaagent:/usr/local/skywalking/apache-skywalking-apm-
bin/agent_dubbo_sonsumer/skywalking-agent.jar  -jar
skywalking_dubbo_consumer.jar &

10、调用接口,接口地址为: http://虚拟机IP地址:8085/hello

此时如果页面显示:hello skywalking ,那么 dubbo 的调用就成功了。

11、可以打开 skywalking 查看 dubbo 调用的监控情况。

在这里插入图片描述

在这里插入图片描述

二、分布式链路追踪_skywalking : Mysql 调用监控

1、使用 docker 启动 Mysql – 安装 docker

引言:

Docker 是一种流行的容器化平台,用于在不同的环境中快速部署和运行应用程序。
它提供了一种轻量级和便捷的方式来封装、分发和管理应用程序及其依赖项。
所以使用 docker 启动 Mysql 比较简单便捷。

1.1 安装 docker:更新软件包索引:
sudo apt-get update
1.2 安装 docker:允许 APT 使用 HTTPS:
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
1.3 安装 docker:添加 Docker 官方 GPG 密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
1.4 安装 docker:添加 Docker 的稳定版本仓库:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
1.5 安装 docker:再次更新软件包索引:
sudo apt-get update
1.6 安装 docker:安装 Docker Community Edition(CE)(社区版):
sudo apt-get install docker-ce
1.7 安装 docker:验证 Docker 是否安装成功并运行(检查 Docker 服务的状态):
sudo systemctl status docker
sudo docker info

如果显示 active (running) 则表示 Docker 服务已成功启动。

1.8 安装 docker:或者验证安装(检查 Docker 版本),或者简单地运行:
# 检查 Docker 版本
sudo docker --version 
sudo docker -V # 简单地运行拉取镜像
sudo docker run hello-world

如果安装成功,你将看到 Docker 拉取 hello-world 镜像并运行容器的信息。

1.9 安装 docker:查看 docker 本地镜像,或拉取 mysql:
# 查看 docker 本地镜像
sudo docker images# 拉取 mysql
docker pull mysql

2、安装 mysql 或 运行 MySQL 容器

docker run --name mysql-server -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest# 例如:
docker run -di --name=skywalking_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 centos/mysql-57-centos7

参数说明:

–name :给你的容器设定了一个名字 mysql-server。
-e :MYSQL_ROOT_PASSWORD=my-secret-pw 设置了root用户的密码。
-d :表示以后台模式运行容器。
-di :后端守护式启动。
mysql:latest 指定了要运行的 MySQL 镜像版本。
33306:3306 :将 33306 端口映射到 3306 端口。
MYSQL_ROOT_PASSWORD :设置 root 用户初始化密码为 123456。

3、使用工具(SQLyong)连接 mysql,端口为 33306 密码为 123456。

在这里插入图片描述

4、创建数据库:

数据库名称:skywalking 
基字符集:utf8
数据库排序规则:utf8_unicode_ci

5、执行建表语句:

CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

6、向数据库中插入数据。

insert  into `t_user`(`name`) values ('张三'),('李四'),('王五');

7、创建一个 Spring Boot 工程 skywalking_mysql,集成 Spring Data JDBC。

7.1 打开 idea,创建 skywalking_mysql 的 maven 工程。
	--> idea --> File --> New --> Project --> Maven Project SDK: ( 1.8(java version "1.8.0_131" ) --> Next --> Groupld : ( djh.it )Artifactld : ( skywalking_mysql )Version : 1.0-SNAPSHOT--> Name: ( skywalking_mysql )Location: ( \skywalking_mysql\ )	--> Finish
7.2 在工程 skywalking_mysql (模块)中的 pom.xml 中导入依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.10.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>djh.it</groupId><artifactId>skywalking_mysql</artifactId><version>0.0.1-SNAPSHOT</version><name>skywalking_mysql</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.46</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
7.3 在工程 skywalking_mysql (模块)中,创建配置文件 application.properties。
## 2024-5-21 创建配置文件 application.propertiesspring.datasource.url=jdbc:mysql://localhost:33306/skywalking
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=123456
server.port=8087
7.4 在工程 skywalking_mysql (模块)中,创建 pojo 类 User.java。
/**
*  2024-5-21 创建 创建 pojo 类 User.java
*/
package djh.it.skywalking_mysql.pojo;import org.springframework.data.annotation.Id;
import org.springframework.data.relational.core.mapping.Table;@Table("t_user")
public class User {@Idprivate Integer id;private String name;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +'}';}
}
7.5 在工程 skywalking_mysql (模块)中,创建 dao 持久层 接口类 UserRepository。
/**
*  2024-5-21 创建 dao 持久层 接口类 UserRepository
*/
package djh.it.skywalking_mysql.dao;import djh.it.skywalking_mysql.pojo.User;
import org.springframework.data.repository.CrudRepository;public interface UserRepository extends CrudRepository<User, Integer> {
}
7.6 在工程 skywalking_mysql (模块)中,创建 Controller 类 MysqlController.java 进行测试。
/**
*  2024-5-21 创建 Controller 类 MysqlController.java
*/
package djh.it.skywalking_mysql.controller;import djh.it.skywalking_mysql.dao.UserRepository;
import djh.it.skywalking_mysql.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList;
import java.util.List;@RestController
public class MysqlController {@Autowiredprivate UserRepository userRepository;@GetMapping("/users")public List<User> findAll(){List<User> result = new ArrayList<>();userRepository.findAll().forEach((user) -> {result.add(user);});return result;}
}
7.7 在工程 skywalking_mysql (模块)中,创建 启动类 SkywalkingMysqlApplication.java。
/**
*  2024-5-21 创建 启动类 SkywalkingMysqlApplication.java
*/
package djh.it.skywalking_mysql;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class SkywalkingMysqlApplication {public static void main(String[] args) {SpringApplication.run(SkywalkingMysqlApplication.class, args);}}

8、将工程 skywalking_mysql 打包成 skywalking_mysql.jar 并上传至 /usr/local/skywalking 目录下。

9、复制 agent,更名为:agent_mysql,防止使用的冲突。

cd /usr/local/skywalking/apache-skywalking-apm-bin/
cp -r agent agent_mysql# 修改 agent_mysql 配置中的应用名为:
vi agent_mysql/config/agent.config# The service name in UI
agent.service_name=${SW_AGENT_NAME:skywalking_mysql}# 保存并退出编辑器。
:wq!

10、启动 skywalking_mysql 应用,等待启动成功。

#切换到目录下
cd /usr/local/skywalking#启动spring boot
java -javaagent:/usr/local/skywalking/apache-skywalking-apm-bin/agent_mysql/skywalking-agent.jar  -jar skywalking_mysql.jar &

11、调用接口,接口地址为: http://虚拟机IP地址:8087/users

12、此时如果页面显示 mysql 中数据。

[{“id”:1,“name”:“张三”},{“id”:2,“name”:“李四”},{“id”:3,“name”:“王五”}]

说明 mysql 的调用就成功了。

13、打开 skywalking 查看 mysql 调用的监控情况。

在这里插入图片描述

上一节关联链接请点击:

# 分布式链路追踪_skywalking_学习(1)

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

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

相关文章

excel数据导入到数据库的方法(二)

以前写了一篇excel导入数据到数据库的文章&#xff0c;是先将excel导入到datatable中在进行批量插入操作&#xff0c;实现数据的导入工作&#xff1b;最近在写一个上传数据服务时&#xff0c;发现有些许问题&#xff0c;在此予以更正&#xff0c;问题描述&#xff1a; 就会报异…

计算机网络基础 - 计算机网络和因特网(1)

计算机网络基础 计算机网络和因特网什么是 Internet?具体构造的的角度服务角度网络结构 网络边缘网络核心电路交换分组交换概述排队时延和分组丢失转发表和路由选择协议按照有无网络层的连接 分组交换 VS 电路交换 接入网DSL 因特网接入电缆因特网接入光纤到户 FTTH无线接入网…

MySQL数据源不停机迁移到AWS RDS MySQL

就在近期&#xff0c;谷歌云捅了个大篓子&#xff0c;误删除了一家投资公司&#xff08;Unisuper&#xff0c;管理着800亿美元基金&#xff09;在谷歌云所有地域的所有数据&#xff0c;删得相当彻底&#xff0c;连备份数据都没给人家留一个。 Unisuper 是一家澳大利亚退休金基…

C++-逻辑语句

if语句 基本格式&#xff1a; 只有判断结果为true&#xff0c;才会执行后续{}内的代码 if (要执行的判断&#xff0c;结果需是bool型) {判断结果true&#xff0c;才会执行的代码; }if (条件判断) { 如果判断结果为true&#xff0c;会执行的代码; }else{如果判断结果为false…

外卖小程序开发指南:从源码开始构建高效的外卖平台

今天&#xff0c;笔者将为您详细讲解如何从源码开始构建一个高效的外卖小程序&#xff0c;帮助您快速进入这一蓬勃发展的市场。 一、需求分析与设计 需求分析包括&#xff1a; 1.用户需求 2.市场需求 3.技术需求 二、前端开发 以下是开发步骤&#xff1a; -使用微信开发…

封装了一个iOS中间放大的collectionView layout

效果图如下所示 原理&#xff1a;就是首先确定一个放大和缩小系数和原大小对应的基准位置&#xff0c;然后根据距离每个布局属性到视图中心的距离和基准点到中心的距离的差距/基准点到中心的距离&#xff0c; 计算出每个布局属性的缩放系数 下面是代码 // // LBHorizontalCe…

英语学习笔记22——Give me/him/her/us/them a .... Which one?

Give me/him/her/us/them a … Which one? 给我/他/她/我们/他们一个…… 哪一个&#xff1f; 词汇 Vocabulary empty a. 空的&#xff0c;啥也没有的    v. 倒空 例句&#xff1a;这个盒子是空的。    This box is empty.    这是个空盒子。    This is an emp…

学习笔记——STM32F103V3版本——HC-05模块控制数码管

一.硬件 1.HC-05模块 2.数码管 3.连接硬件 二.在keil5中的代码 main.c代码&#xff1a; #include "stm32f10x.h" #include "buletooth.h" #include "led.h" #include "sys.h" #include "usart.h" #include "delay.…

HTTP content-type MIME 类型(IANA 媒体类型)

Content-Type(MediaType)&#xff0c;即是Internet Media Type&#xff0c;互联网媒体类型&#xff0c;也叫做MIME类型。在互联网中有成百上千中不同的数据类型&#xff0c;HTTP在传输数据对象时会为他们打上称为MIME的数据格式标签&#xff0c;用于区分数据类型。最初MIME是用…

数据与结构--AVL树

目录 AVL树的概念 AVL树的性质 AVL树结点的定义 AVL树的插入 AVL树的旋转 左单旋 右单旋 左右双旋 右左单旋 AVL树的验证 AVL树的查找 AVL树的修改 AVL树的删除 AVL树的概念 二叉搜索树虽然可以提高我们查找数据的效率&#xff0c;但如果插入二叉搜索树的数据是…

LFSR线性反馈移位寄存器及Verilog实现

一、LFSR LFSR线性反馈移位寄存器&#xff0c;通常由移位寄存器和异或门组成&#xff0c;主要用于产生伪随机序列等。 线性反馈的含义是各个寄存器的输出通过一个反馈函数连接到第一级触发器的输入&#xff1b;LFSR中的寄存器的个数被称为LFSR的级数。 LFSR分为两类&#xff…

开源的在线JSON数据可视化编辑器jsoncrack本地部署与远程访问

文章目录 1. 在Linux上使用Docker安装JSONCrack2. 安装Cpolar内网穿透工具3. 配置JSON Crack界面公网地址4. 远程访问 JSONCrack 界面5. 固定 JSONCrack公网地址 JSON Crack 是一款免费的开源数据可视化应用程序&#xff0c;能够将 JSON、YAML、XML、CSV 等数据格式可视化为交互…

Iphone自动化指令每隔固定天数打开闹钟关闭闹钟

1.业务需求&#xff1a;小z每隔五天有一个夜班&#xff0c;然后下午会有三个小时的休息时间&#xff0c;如果闹钟不响就会错过交班日期&#xff0c;但是如果设置闹钟&#xff0c;iPhone的闹钟只能设定固定循环日期闹钟&#xff0c;或者一次的闹钟&#xff0c;导致要么忘记设闹钟…

【C语言】指针运算

前言 前面在“走进指针世界”中我已经讲解过指针相关的很多前置知识&#xff0c;其实还有一个很重要的部分就是指针的运算。这篇博客&#xff0c;就让我们一起了解一下指针的运算吧&#xff01; 指针作为变量&#xff0c;是可以进行算术运算的&#xff0c;只不过情况会和整型…

LLM-Llama在 MAC M1上体验Llama.cpp和通义千问Qwen 1.5-7B

Llama.cpp的主要目标是在各种硬件上&#xff08;本地和云端&#xff09;实现LLM推断&#xff0c;同时保持最小的设置和最先进的性能。 纯C/C实现&#xff0c;没有任何依赖关系Apple芯片是一级的支持对象 - 通过ARM NEON、Accelerate和Metal框架进行优化对x86架构的AVX、AVX2和…

Go语言的命名规范是怎样的?

文章目录 Go语言的命名规范详解一、标识符命名规范示例代码 二、包名命名规范示例代码 三、变量命名规范示例代码 四、常量命名规范示例代码 五、函数命名规范示例代码 总结 Go语言的命名规范详解 在Go语言中&#xff0c;代码的命名规范对于项目的可读性、可维护性和可扩展性至…

前端菜鸡,对于35+程序员失业这个事有点麻了

“经常看到30岁程序员失业的新闻&#xff0c;说实话&#xff0c;有点麻。目前程序员供求关系并未失衡&#xff0c;哪怕是最基础的前端或者后台、甚至事务型的岗位也是足够的。 事实上&#xff0c;现在一个开出的岗位要找到一位尽职尽责能顺利完成工作的程序员并不是一件那么容…

C++_string简单源码剖析:模拟实现string

文章目录 &#x1f680;1.构造与析构函数&#x1f680;2.迭代器&#x1f680;3.获取&#x1f680; 4.内存修改&#x1f680;5. 插入&#x1f680;6. 删除&#x1f680;7. 查找&#x1f680;8. 交换swap&#x1f680;9. 截取substr&#x1f680;10. 比较符号重载&#x1f680;11…

副业树洞聊天项目/树洞倾诉/陪陪系统源码/树洞源码下载搭建

随着社会的发展和人们生活水平的提高&#xff0c;越来越多的人在面临心理压力、情感困扰或生活困境时&#xff0c;需要一个可以宣泄、倾诉和寻求支持的平台。而传统的人际交往方式往往会遇到难以排解的问题&#xff0c;比如担心被他人知晓自己的隐私等&#xff0c;这就导致了人…

package.json中peerDependencies的使用场景

文章目录 peerDependencies 的使用场景peerDependencies 的使用案例为什么使用 peerDependencies需要注意的事项主要作用 ✍创作者&#xff1a;全栈弄潮儿 &#x1f3e1; 个人主页&#xff1a; 全栈弄潮儿的个人主页 &#x1f3d9;️ 个人社区&#xff0c;欢迎你的加入&#xf…