新一代分布式链路追踪skywalking编码实战教程(下)

🚀 作者 :“二当家-小D”
🚀 博主简介:⭐前荔枝FM架构师、阿里资深工程师||曾任职于阿里巴巴担任多个项目负责人,8年开发架构经验,精通java,擅长分布式高并发架构,自动化压力测试,微服务容器化k8s等
🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬
🍅文末获取源码联系 配套笔记打包🍅

🔗往期文章传送门:

快速入门SpringCloudAlibaba实战篇【SpringBoot3.x + JDK17】!

高并发解决方案:Sentinel的流量控制、熔断与OpenFeign整合实战 !
构建微服务网关:SpringCloud Gateway快速入门!
AlibabaCloud微服务下的链路追踪系统实战详解!

新一代分布式链路追踪skywalking实战(上)

目录

    • 一、 Springboot整合分布式链路追踪SkyWalking
      • 1. 链路追踪-Springboot项目环境搭建
      • 2. SpringBoot+MybaitsPlus+Mysql开发测试接口
      • 3. 分布式链路追踪的卧底 Skywalking Agent 探针介绍
      • 4. IDEA编辑器配置Skywalking-Agent链路采集实战
    • 二、分布式链路追踪SkyWalking进阶实战
      • 1. 自定义SkyWalking链路追踪配置实战
      • 2. SkyWalking-RocketBot性能剖析讲解
      • 3. SkyWalking链路追踪-日志和RPC上报实战
      • 4. 源码部署 Apache SkyWalking实战
      • 5. SkyWalking链路追踪-告警模块和WebHook通知《上》
      • 6. SkyWalking链路追踪-告警模块和WebHook通知《下》
      • 7. Jar包和微服务方式打包运行整合Skywalking实战

一、 Springboot整合分布式链路追踪SkyWalking

1. 链路追踪-Springboot项目环境搭建

简介:链路追踪-框架Springboot项目搭建

  • Springboot介绍
    • GitHub地址:https://github.com/spring-projects/spring-boot
    • 官方文档:https://spring.io/guides/gs/spring-boot/
    • 视频地址:https://item.taobao.com/item.htm?id=618384570391
    • 在线创建:https://start.spring.io/
  • 相关的软件环境
    • jdk11+maven3.5+ Mysql8.0
    • 编辑器IDEA
  • 创建一个Springboot项目

image-20220513181248421

  • 创建数据库导入数据 (自己安装Mysql8)
    • 库名xdclass_sky_shop
CREATE TABLE `product` (`id` bigint NOT NULL,`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '商品标题',`detail` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '详情',`img` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '图片',`amount` decimal(16,0) DEFAULT NULL COMMENT '现价',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;INSERT INTO `xdclass_sky_shop`.`product` (`id`, `title`, `detail`, `img`, `amount`) VALUES (1, '商用短链平台-海量数据项目大课', '打造最佳简历项目的,短链平台大课项目', 'https://file.xdclass.net/video/2022/71-HLSJCL/05.jpeg', 66);INSERT INTO `xdclass_sky_shop`.`product` (`id`, `title`, `detail`, `img`, `amount`) VALUES (2, '新一代AlibabaCloud全家桶实战', '高并发分布式项目', 'https://file.xdclass.net/video/2022/71-HLSJCL/05.jpeg', 88);INSERT INTO `xdclass_sky_shop`.`product` (`id`, `title`, `detail`, `img`, `amount`) VALUES (3, '小滴课堂永久会员', '观看全部IT专题视频,永久有效', 'https://file.xdclass.net/video/2022/banner/03.jpeg', 999);INSERT INTO `xdclass_sky_shop`.`product` (`id`, `title`, `detail`, `img`, `amount`) VALUES (4, '架构大课训练营', '全方位提升综合能力,存储、网络、架构、解决方案', 'https://file.xdclass.net/video/2022/72-ShardingJDBC/banner.jpeg', 79);

2. SpringBoot+MybaitsPlus+Mysql开发测试接口

简介:SpringBoot+MybaitsPlus+Mysql开发测试接口

  • 添加依赖配置
        <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.26</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.1</version></dependency>
  • 添加配置
server.port=8081
#==============================数据库相关配置========================================
spring.datasource.driver-class-name =com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://112.74.107.230:3307/xdclass_sky_shop?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username =root
spring.datasource.password =xdclass.net168#配置mybatis plus打印sql日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
  • 开发接口
    • 商品列表接口
    • 商品详情接口
  • 代码
@SpringBootApplication
@MapperScan("net.xdclass.xdclassskydemo.mapper")
public class XdclassSkyDemoApplication {public static void main(String[] args) {SpringApplication.run(XdclassSkyDemoApplication.class, args);}}@RestController
@RequestMapping("/api/product/v1")
public class ProductController {@Autowiredprivate ProductService productService;/*** 查看商品列表接口** @return*/@GetMapping("list")public JsonData list() {List<ProductDO> list = productService.list();return JsonData.buildSuccess(list);}/*** 查看商品详情** @param productId* @return*/@GetMapping("/detail/{product_id}")public JsonData detail(@PathVariable("product_id") long productId) {ProductDO productDO = productService.findDetailById(productId);return JsonData.buildSuccess(productDO);}
}@Service
public class ProductOrderServiceImpl implements ProductService {@Autowiredprivate ProductMapper productMapper;@Overridepublic List<ProductDO> list() {return productMapper.selectList(new QueryWrapper<>());}@Overridepublic ProductDO findDetailById(long productId) {return productMapper.selectOne(new QueryWrapper<ProductDO>().eq("id", productId));}
}public interface ProductMapper extends BaseMapper<ProductDO> {}@TableName("product")
public class ProductDO {private Long id;/*** 商品标题*/private String title;/*** 详情*/private String detail;/*** 图片*/private String img;/*** 现价*/private BigDecimal amount;// set、get方法
}

3. 分布式链路追踪的卧底 Skywalking Agent 探针介绍

简介:分布式链路追踪的卧底 Skywalking Agent 探针介绍

  • 什么SkyWalking探针
    • 探针表示集成到目标系统中的代理或 SDK 库,即收集并格式化数据, 并发送到后端 包括链路追踪和性能指标
  • Skywalking-Agent的安装和使用
    • 下载skywalking
      • 地址:https://skywalking.apache.org/downloads/

image-20220511134627972

  • skywalking-agen目录文件的介绍

    • logs:skywalking agent的相关运行日志
    • bootstrap-plugins:插件包
    • optional-plugins:插件包(可供选择的插件包,如果需要生效则需要拷贝到plugins包下)
    • plugins:插件包(生效的插件包,支持多个框架链路追踪)
    • optional-reporter-plugins:插件包
    • activations:插件包
    • config: 配置文件
    • skywalking-agent.jar:agent代理的jar包(主要是这个!)
  • skywalking-agent的使用方式

    • 优先级:探针-> JVM配置-> 环境变量配置 -> agent.config(优先级低)
    • 第一种-javaagent:/path/to/skywalking-agent.jar={config1}={value1},{config2}={value2}
    -javaagent:../skywalking-agent.jar=agent.service_name=XdclassApp,collector.backend_service=127.0.0.1:11800
    
    • 第二种:-Dskywalking.[option1]=[value2]
    -javaagent: ../skywalking-agent.jar -Dskywalking.agent.service_name=XdclassApp -Dskywalking.collector.backend_service=127.0.0.1:11800
    
    • agent.service_name:客户端服务名,在apm系统中显示的服务名称
    • collector.backend_service:SW上传的服务地址

4. IDEA编辑器配置Skywalking-Agent链路采集实战

简介:IDEA编辑器配置Skywalking-Agent链路采集实战

  • IDEA编辑器里面配置Skywalking-Agent

    • agent.service_name:客户端服务名,在apm系统中显示的服务名称
    • collector.backend_service:SW上传的服务地址
    -javaagent:/Users/xdclass/Desktop/agent/skywalking-agent.jar -Dskywalking.agent.service_name=XdclassShop -Dskywalking.collector.backend_service=120.79.150.146:11800
    

image-20220513211348208

  • 请求接口(多几次)

    • 商品列表接口
    • 商品详情接口
  • 查看RocketBot界面数据

    • 注意:如果没数据,分析数据链路,端口、程序日志分析

二、分布式链路追踪SkyWalking进阶实战

1. 自定义SkyWalking链路追踪配置实战

简介:自定义 SkyWalking链路追踪配置实战

  • 什么是TraceId

    • 用来标识一条请求链路,一条请求链路中包含一个Trace ID,多个Span ID
  • 背景

    • 对业务代码进行链路追踪,方便排查问题
    • 比如,某个接口请求耗时慢,想对业务接口方法进行追踪
    • controller->service 方法,记录业务方法加入到链路中,记录入参、返回值等
  • 编码

    • 添加依赖
    <dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-trace</artifactId><version>8.5.0</version>
    </dependency>
    
    • 业务方法添加注解
    @Trace
    
    • 记录入参和返回值
      • POJO记得重写toString方法
    @Tags({@Tag(key = "方法名-input", value = "arg[0]"), @Tag(key = "方法名-output", value = "returnedObj")}
    )
    
  • 缺点

    • 代码有侵入性

2. SkyWalking-RocketBot性能剖析讲解

简介:SkyWalking-RocketBot性能剖析讲解

  • 性能剖析
    • 新建任务:新建需要分析的端点
    • 左侧列表:对任务进行采样
    • 右侧:每个端点的链路信息
    • 性能分析:可以查看对应方法的调用栈,找出问题点
      • 直接定位到代码方法和代码行
    • 注意:一个服务在监控持续时间内只能设置一个端点监控任务

image-20220513152406769

image-20220513152755553

image-20220515180807195

3. SkyWalking链路追踪-日志和RPC上报实战

简介: SkyWalking链路追踪-日志和RPC上报实战

  • 背景

    • 用户请求接口,怎么在我们日志中找到traceId来跟踪系统调用链路

    • 需要在系统日志打印出traceId

    • 注意(重要)

      • 由于阿里云选择的的服务器和带宽不高,安装了多个组件 oap、ui、es7等
      • 所以测试的时候有时数据有延迟、或者服务器压力过高,有时数据出不来,刷新页面几次才出来数据
      • 如果本地有docker环境和机器配置高,也可以本地进行安装skywalking相关组件
      • 后续也有源码安装
  • 实战

    • 添加依赖
    <dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-logback-1.x</artifactId><version>8.5.0</version>
    </dependency>
    
    • 配置logback打印日志(SpringBoot默认使用Logback),配置文件名 logback.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>  <!-- 控制台输出 --><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"><layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout"><Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n</Pattern></layout></encoder></appender><!--系统操作日志--><root level="INFO">  <appender-ref ref="console"/> </root>
    </configuration>
    
    • 代码打印日志
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;Logger logger = LoggerFactory.getLogger(ProductController.class);//代码中 logger.info 打印日志
    
    • 将日志上传到skywalking oap中,查看更方便
    <!-- skywalking grpc 日志收集上报服务端 8.4.0版本后支持 -->
    <appender name="grpc-log" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender"><encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"><layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout"><Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n</Pattern></layout></encoder></appender><!--系统操作日志--><root level="INFO">  <appender-ref ref="console"/> <appender-ref ref="grpc-log"/></root>
    
  • 注意

    • skywaling agent 默认是上传到本地的oap,如果oap server地址不是本地,则需要单独配置oap server地址
    • agent文件夹里面config配置
    #日志数据的grpc服务器的主机
    plugin.toolkit.log.grpc.reporter.server_host=${SW_GRPC_LOG_SERVER_HOST:120.79.150.146} 
    #日志数据的grpc服务器的端口
    plugin.toolkit.log.grpc.reporter.server_port=${SW_GRPC_LOG_SERVER_PORT:11800}
    #日志数据的最大大小
    plugin.toolkit.log.grpc.reporter.max_message_size=${SW_GRPC_LOG_MAX_MESSAGE_SIZE:10485760}
    #发送数据时将超时多长时间。单位是秒
    plugin.toolkit.log.grpc.reporter.upstream_timeout=${SW_GRPC_LOG_GRPC_UPSTREAM_TIMEOUT:30}#下面是正式:不加中文注释plugin.toolkit.log.grpc.reporter.server_host=${SW_GRPC_LOG_SERVER_HOST:120.79.150.146}
    plugin.toolkit.log.grpc.reporter.server_port=${SW_GRPC_LOG_SERVER_PORT:11800}
    plugin.toolkit.log.grpc.reporter.max_message_size=${SW_GRPC_LOG_MAX_MESSAGE_SIZE:10485760}
    plugin.toolkit.log.grpc.reporter.upstream_timeout=${SW_GRPC_LOG_GRPC_UPSTREAM_TIMEOUT:30}
    

    image-20220515232102295

4. 源码部署 Apache SkyWalking实战

简介: 本地源码部署 Apache SkyWalking实战

  • 基础环境(win和linux都在支持,但是推荐Linux系统进行操作,win存在坑)

    • 安装jdk8或者jdk11(资料包里有)

    • SkyWalking源码(资料里有)

    • 实战是Mac苹果系统,底层和Linux CentOS是一样,常规操作命令一致

    • 注意:SkyWalking的路径里面不要有中文,最好空格也不要有,导致启动失败

      image-20220516100038206

  • config配置文件 application.yml

    • 存储
      • H2(默认)
      • ElasticSearch 6, 7
      • MySQL
      • TiDB
      • InfluxDB

image-20220516101726739

  • 本地部署SkyWalking

    • 方式一命令
    bin/startup.sh
    
    • 方式二:分别依次启动
    #端口 11800
    bin/oapService.sh#端口8080
    bin/webappService.sh
    
    • 查看日志
    #oap日志
    skywalking-oap-server.log
    #ui界面日志
    webapp.log
    
  • 如果本地部署,则访问

    • localhost:8080

5. SkyWalking链路追踪-告警模块和WebHook通知《上》

简介: SkyWalking链路追踪-告警模块和WebHook《上》

  • 需求
    • 监控业务相关接口性能,超过阈值则触发告警功能
    • 通过调用webhook接口进行触发,具体的webhook接口地址可以自行定义路径
      • 注意:要OAP Server的网络可以触发的webhook接口
    • 开发人员可以在webhook接口中编写告警方式,比如邮件、短信等,就是一个http接口

image-20220516105015870

  • Apache Skywalking默认的告警规则配置

    • 安装目录下的config文件夹下 alarm-settings.yml文件

    • 默认内置多个规则

      • 最近3分钟内服务的平均响应时间超过1秒
      • 最近2分钟服务成功率低于80%
      • 最近3分钟90%服务响应时间超过1秒
      • 最近2分钟内服务实例的平均响应时间超过1秒
    • 配置讲解

      • metrics-name 脚本中的度量名称
      • threshold 阈值
      • op 比较操作符,可以设定>,<,=
      • period 多久检查一次当前的指标数据是否符合告警规则,单位分钟
      • count 达到多少次后,触发告警消息
      • silence-period 在多久时间之内,忽略相同的告警消息,在时间T触发了某告警,那么在(T+10)这个时间段,不会再次触发相同告警
      • message 告警消息内容
      • webhooks 配置告警产生时的触发的调用地址

6. SkyWalking链路追踪-告警模块和WebHook通知《下》

简介: SkyWalking链路追踪-告警模块和WebHook《下》

  • 编码实战

    //实体类
    public class AlarmMessage  {private int scopeId;private String scope;private String name;private String id0;private String id1;private String ruleName;private String alarmMessage;private long startTime;private transient int period;private transient boolean onlyAsCondition;//set get方法
    }@RestController
    public class CallbackController {private List<AlarmMessage> messageList = new ArrayList<>();@PostMapping("/webhook")public void  webhook(@RequestBody List<AlarmMessage> alarmMessageList){System.out.println("收到消息:" +alarmMessageList);messageList = alarmMessageList;}@GetMapping("/show")public List<AlarmMessage> show(){return messageList;}
    }
  • 配置webhook接口,POST方式推送

    • 注意:要重启oap server!!!
    webhooks:- http://127.0.0.1:8081/webhook/
    
  • 测试请求路径

    • 修改睡眠时间为2秒,模拟接口响应慢
  • 结果

    [AlarmMessage{scopeId=2, scope='SERVICE_INSTANCE', name='abecc615d94a48bea4bf95b3c510d398@192.168.0.107 of XdclassShop', id0='WGRjbGFzc1Nob3A=.1_YWJlY2M2MTVkOTRhNDhiZWE0YmY5NWIzYzUxMGQzOThAMTkyLjE2OC4wLjEwNw==', id1='', ruleName='service_instance_resp_time_rule', alarmMessage='Response time of service instance abecc615d94a48bea4bf95b3c510d398@192.168.0.107 of XdclassShop is more than 1000ms in 2 minutes of last 10 minutes', startTime=1652693421403, period=0, onlyAsCondition=false}]
    

7. Jar包和微服务方式打包运行整合Skywalking实战

简介: 微服务和Jar方式打包运行整合Skywalking实战

  • 项目打包

    • springboot项目和springcloud项目都一样,jar方式运行

    • 通过java -jar 加入参数

    • 项目打包

      mvn install
      
  • 例子

    java -jar -javaagent:/Users/xdclass/Desktop/agent/skywalking-agent.jar -Dskywalking.agent.service_name=XdclassShop -Dskywalking.collector.backend_service=127.0.0.1:11800 xdclass-sky-0.0.1-SNAPSHOT.jar
    

今天的文章就分享到这了,希望对你有帮助,关注D哥,下期分享更多干货内容!

资料获取📚
完整代码和笔记已经准备好,如果有问题,可以在评论区留言讨论💬
原创不易,别忘了点赞👍+收藏⭐哦!
点击下方链接即可获取完整资料压缩包🎁,快来领取吧!↓↓↓↓

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

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

相关文章

PostgresSQL开启归档模式

文章目录 一、查询数据库归档是否开启1、查看数据目录(找出conf文件位置)2、查看归档是否开启 二、开启归档模式&#xff08;开启后有一定的性能损耗&#xff09;1、创建归档目录2、修改postgresql.conf配置文件3、重启pg 三、验证归档情况1、查看归档是否开启2、检查点 , 刷新…

利用远控工具横向

一.横向移动介绍和方式 1.介绍 内网渗透的横向移动是指攻击者在成功进入内网后&#xff0c;通过利用内部系统的漏洞或者获取的合法访问权限&#xff0c;从一个受感染的系统向其他系统扩散或移动。这种横向移动的目的通常是为了获取更多的敏感信息、提升权限、扩大攻击面或者更…

【蓝桥杯】

题目列表 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include<bits/stdc.h> using llunsigned long long; #define int ll const int N2e510; int k0; std::string s; int a,b,c,d; void solve() {char op;std::cin>>op;if(opA){std::string s;for(int i1;i&l…

文心一言指令解析

1、介绍 文心一言是一款灵感启发类的产品&#xff0c;它以简洁而深刻的文字表达来激发读者的思考和感悟。该产品通过每天提供一句精选的短语&#xff0c;让用户在繁忙的生活中停下脚步&#xff0c;思考人生和内心的真实需求。 每一句文心一言都经过精心挑选&#xff0c;它们通…

小程序-滚动触底-页面列表数据无限加载

// index/index.vue <template> <!-- 自定义导航栏 --> <CustomNavbar /> <scroll-view scrolltolower"onScrolltolower" scroll-y class"scroll-view"> <!-- 猜你喜欢 --> <Guess ref"guessRef" /> </s…

恶劣天气下的车辆探测:多方关注 多模态融合方法

摘要 在自动驾驶汽车技术领域&#xff0c;多模式车辆检测网络(MVDNet)代表了一个重大的飞跃&#xff0c;特别是在具有挑战性的天气条件下。本文主要通过集成多头关注层对MVDNet进行增强&#xff0c;旨在改进其性能。MVDNet模型中集成的多头关注层是一个关键的改进&#xff0c;…

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

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

java+ vue.js+uniapp一款基于云计算技术的企业级生产管理系统,云MES源码 MES系统如何与ERP系统集成?

java vue.jsuniapp一款基于云计算技术的企业级生产管理系统&#xff0c;云MES源码&#xff0c;MES系统如何与ERP系统集成&#xff1f; MES系统&#xff08;制造执行系统&#xff09;与ERP系统&#xff08;企业资源规划系统&#xff09;的集成可以通过多种方式实现&#xff0c;这…

探索亚马逊云科技技术课程:大模型平台与提示工程的应用与优化

上方图片源自亚马逊云科技【生成式 AI 精英速成计划】技术开发技能课程 前言 学习了亚马逊云科技–技术开发技能课程 本课程分为三个部分&#xff0c;了解如何使用大模型平台、如何训练与部署大模型及生成式AI产品应用与开发&#xff0c;了解各类服务的优势、功能、典型使用案…

苹果MacOS系统使用微软远程桌面连接Windows电脑桌面详细步骤

文章目录 前言1. 测试本地局域网内远程控制1.1 Windows打开远程桌面1.2 局域网远程控制windows 2. 测试Mac公网远程控制windows2.1 在windows电脑上安装cpolar2.2 Mac公网远程windows 3. 配置公网固定TCP地址 前言 日常工作生活中&#xff0c;有时候会涉及到不同设备不同操作系…

Vue3实战笔记(38)—粒子特效终章

文章目录 前言一、怎样使用官方提供的特效二、海葵特效总结 前言 官方还有很多漂亮的特效&#xff0c;但是vue3只有一个demo&#xff0c;例如我前面实现的两个页面就耗费了一些时间&#xff0c;今天记录一下tsparticles官方内置的几个特效的使用方法&#xff0c;一般这几个就足…

微信小程序---小程序文档配置(2)

一、小程序文档配置 1、小程序的目录结构 1.1、目录结构 小程序包含一个描述整体程序的 app 和多个描述各自页面的 page 一个小程序主体部分由三个文件组成&#xff0c;必须放在项目的根目录 比如当前我们的《第一个小程序》项目根目录下就存在这三个文件&#xff1a; 1…

新媒体运营十大能力,让品牌闻达天下!

" 现在新媒体蓬勃发展&#xff0c;很多品牌都有新媒体运营这个岗位。新媒体运营好的话&#xff0c;可以提高公司品牌曝光、影响力。那新媒体运营具备什么能力&#xff0c;才能让品牌知名度如虎添翼呢&#xff1f;" 信息收集能力 在移动互联网时代&#xff0c;信息的…

单细胞分析(Signac): PBMC scATAC-seq 聚类

引言 在本教学指南中&#xff0c;我们将探讨由10x Genomics公司提供的人类外周血单核细胞&#xff08;PBMCs&#xff09;的单细胞ATAC-seq数据集。 加载包 首先加载 Signac、Seurat 和我们将用于分析人类数据的其他一些包。 if (!requireNamespace("EnsDb.Hsapiens.v75&qu…

JVM严镇涛版笔记【B站面试题】

前言 2023-06-19 18:49:33 出自B站 灰灰的Java面试 枫叶云链接&#xff1a;http://cloud.fynote.com/s/4976 JVM面试题大全 Lecturer &#xff1a;严镇涛 1.为什么需要JVM&#xff0c;不要JVM可以吗&#xff1f; 1.JVM可以帮助我们屏蔽底层的操作系统 一次编译&#xff0c…

C语言 数组——计算最大值的函数实现

目录 计算最大值 计算最大值的函数实现 应用实例&#xff1a;计算班级最高分​编辑​编辑 返回最大值所在的下标位置 返回最大值下标位置的函数实现​编辑 一个综合应用实例——青歌赛选手评分​编辑​编辑​编辑​编辑​编辑 计算最大值 计算最大值的函数实现 应用实例&…

音视频开发4-补充 FFmpeg 开发环境搭建 -- 在windows 上重新build ffmpeg

本节的目的是在windows 上 编译 ffmpeg 源码&#xff0c;这样做的目的是&#xff1a;在工作中可以根据工作的实际内容裁剪 ffmpeg&#xff0c;或者改动 ffmpeg 的源码。 第一步 &#xff1a;下载&#xff0c; 安装&#xff0c;配置 &#xff0c;运行 msys64 下载 下载地址&…

【paper】基于分布式采样的多机器人编队导航信念传播模型预测控制

Distributed Sampling-Based Model Predictive Control via Belief Propagation for Multi-Robot Formation NavigationRAL 2024.4Chao Jiang 美国 University of Wyoming 预备知识 马尔可夫随机场&#xff08;Markov Random Field, MRF&#xff09; 马尔可夫随机场&#xff…

域内 dcsync 权限维持

一、原理 DCSync 是域渗透中经常会用到的技术&#xff0c;其被整合在了 Mimikatz 中。在 DCSync 功能出现之前&#xff0c;要想获得域用户的哈希&#xff0c;需要登录域控制器&#xff0c;在域控制器上执行代码才能获得域用户的哈希。 Mimikatz的DCSync 功能&#xff1a; 该…

java8总结

java8总结 java8新特性总结1. 行为参数化2. lambda表达式2.1 函数式接口2.2 函数描述符 3. Stream API3.1 付诸实践 java8新特性总结 行为参数化lambda表达式Stream Api 1. 行为参数化 定义&#xff1a;行为参数化&#xff0c;就是一个方法接受多个不同的行为作为参数&#x…