# 分布式链路追踪_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.properties

spring.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 {
    @Override
    public 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_consumer/skywalking-agent.jar -jar skywalking_dubbo_consumer.jar &

在这里插入图片描述
在这里插入图片描述

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

http://172.29.35.23:8085/hello

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

在这里插入图片描述

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

http://172.29.35.23:9010/

在这里插入图片描述

在这里插入图片描述

二、分布式链路追踪_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.properties

spring.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 {
    @Id
    private 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;
    }

    @Override
    public 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 {

    @Autowired
    private 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)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据分析必备:一步步教你如何用Pandas做数据分析(10)

1、Pandas 文本处理 Pandas 文本处理操作实例 在本章中&#xff0c;我们将使用基本的Series / Index讨论字符串操作。在随后的章节中&#xff0c;我们将学习如何在DataFrame上应用这些字符串函数。 Pandas提供了一组字符串函数&#xff0c;可以轻松地对字符串数据进行操作。最…

OpenHarmony 实战开发——内核对象队列之算法详解

前言 OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09; LiteOS-M 内核是面向 IoT 领域构建的轻量级物联网操作系统内核&#xff0c;具有小体积、低功耗、高性能的特点。在嵌入式领域的开发工作中&#xff0c;无论是自研还是移植系统&#xff0c;均绕不开…

超越中心化:Web3的去中心化应用探索

随着区块链技术的迅速发展&#xff0c;Web3作为其最前沿的应用之一&#xff0c;正引领着互联网进入了一个新的时代。Web3不仅仅是技术的进步&#xff0c;更是一种全新的思维方式和社会模式&#xff0c;其核心理念是去中心化、自治和透明&#xff0c;这与传统的中心化互联网模式…

视创云展「VR直播」是什么?有哪些功能和应用场景?

视创云展「VR直播」通过“3D沉浸式展厅直播高互动感”的创新玩法&#xff0c;使企业随时随地举办一场低成本、高互动、能获客的元宇宙直播活动成为可能。「VR直播」能实现3D展厅内VR场景漫游&#xff0c;更结合音视频交互、同屏互动等新功能&#xff0c;为用户带来更沉浸的虚拟…

.NET周刊【5月第4期 2024-05-26】

国内文章 开源低代码框架 ReZero API 正式版本发布 &#xff0c;界面操作直接生成API https://www.cnblogs.com/sunkaixuan/p/18201175 ReZero是一款.NET6的中间件&#xff0c;采用MIT许可证开源&#xff0c;目的是降低.NET Core开发的门槛。它提供界面操作生成API的功能&am…

nacos安装与使用

1.nacos简介与安装 什么是注册中心&#xff08;服务治理&#xff09; 服务注册&#xff1a;服务提供者provider&#xff0c;启动的时候向注册中心上报自己的网络信息 服务发现&#xff1a;服务消费者consumer&#xff0c;启动的时候向注册中心上报自己的网络信息&#xff0c;拉…

《C++ Primer Plus》第十二章复习题和编程练习

目录 一、复习题二、编程练习 一、复习题 1. 假设String类有如下私有成员&#xff1a; // String 类声明 class String { private: char* str;int len;// ... };a. 下述默认构造函数有什么问题&#xff1f; String::String() { } // 默认构造函数b. 下述构造函数有什么问题…

民国漫画杂志《时代漫画》第29期.PDF

时代漫画29.PDF: https://url03.ctfile.com/f/1779803-1248635405-bf3c87?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps: 资源来源网络!

分享之远程调试

1:在线上启动脚本添加如下的内容&#xff1a; #! /bin/sh# 设置启动的jar SERVICE_NAME"xxx.jar"PRJ_BIN_DIR$(dirname $(readlink -f "$0")) SERVICE_HOME$(dirname $PRJ_BIN_DIR)LOGS_DIR$SERVICE_HOME/logs # 控制台日志 STDOUT_FILE$SERVICE_HOME/log…

New Phytologist:杨树特有miRNA在调控杨树抗旱中的分子机制

2024年3月6日&#xff0c;林木遗传育种全国重点实验室、北京林业大学生物科学与技术学院尹伟伦与夏新莉教授课题组在New Phytologist&#xff08;中科院一区&#xff0c;影响因子9.4&#xff09;期刊发表了题为“The miR6445-NAC029 module regulates drought tolerance by reg…

Python3 笔记:Python的所有关键字

查看Python的关键字首先需要用import导入keyword模块 import keyword # 查看Python的所有关键字&#xff0c;先用import导入keyword模块 print(keyword.kwlist) 运行结果&#xff1a; [False, None, True, and, as, assert, async, await, break, class, continue, def, …

96.网络游戏逆向分析与漏洞攻防-ui界面的设计-角色管理功能的界面设计

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果&#xff0c;代码看不懂是正常的&#xff0c;只要会抄就行&#xff0c;抄着抄着就能懂了 内容…

QT使用gsoap获取手机归属地

1-环境变量 用的win32 E:\hes_scc\tools\gsoap_2.8.134\gsoap-2.8\gsoap\bin\win32 2-生成代码接口 自己建一个目录&#xff0c;在此打开cmd窗口&#xff0c;生成的文件都会在这个文件夹中。 这里用的手机归宿地。 wsdl2h -o GetPhoneInfo.h -s -n Phone -t ....\typemap.…

DES加密算法笔记

【DES加密算法&#xff5c;密码学&#xff5c;信息安全】https://www.bilibili.com/video/BV1KQ4y127AT?vd_source7ad69e0c2be65c96d9584e19b0202113 根据此视频学习 DES是对称密码中的分组加密算法 (分组加密对应流加密算法) 流加密算法就是一个字节一个字节加密 分组加…

SSL协议:网络安全通信的守护者

在网络通信迅猛发展的今天&#xff0c;数据安全和隐私保护变得尤为重要。安全套接层协议&#xff08;Secure Sockets Layer, SSL&#xff09;作为早期网络加密及身份验证的基石&#xff0c;为在线数据传输提供了安全保障。下面我们就来了解一下SSL协议。 SSL协议概述 SSL协议最…

NSSCTF | [SWPUCTF 2021 新生赛]no_wakeup

打开题目后&#xff0c;点击三个&#xff1f;&#xff0c;发现是一个php序列化脚本 <?phpheader("Content-type:text/html;charsetutf-8"); error_reporting(0); show_source("class.php");class HaHaHa{public $admin;public $passwd;public function…

System32文件夹千万不能删除,看完这篇你就知道为什么了

序言 C:\Windows\System32目录是Windows操作系统的关键部分,重要的系统文件存储在该目录中。网上的一些恶作剧者可能会告诉你删除它,但你不应该尝试去操作,如果你尝试的话,我们会告诉你会发生什么。 什么是System32文件夹 位于C:\Windows\System32的System32文件夹是所有…

OpenHarmony应用开启Service以及完成自启动和常驻

一.背景 由于有需求实现一个后台常驻服务,这里就是来实现在鸿蒙里面如何实现后台服务并且实现自启动和常驻 二.添加服务 如下来添加服务 然后此时直接运行这个hap是报错的,如下: 此处参考: 应用中添加ServiceExtensionAbility然后安装HAP时提示“code:9568344 error: inst…

计算机二级Access操作题总结——基本操作

基础操作题 设置主键 例&#xff1a;将“线路”表中的“线路ID”字段设置为主键 ①右键单击“线路”表&#xff1b; ②单击【设计视图】&#xff1b; ③鼠标指到表的第一行→“线路ID”处&#xff0c;右键单击&#xff1b; ④单击【主键】 设置有效性规则 例&#xff1a;设…

算法之背包问题

可分的背包问题是可以用贪心法来解决&#xff0c;而0-1背包问题通常使用动态规划方法来解决。 可分背包问题&#xff1a; 在可分背包问题中&#xff0c;物品可以被分割&#xff0c;您可以取走物品的一部分以适应背包的容量。这里的关键是物品的价值密度&#xff0c;即单…