当前位置: 首页 > news >正文

php怎么做网站快/社区推广

php怎么做网站快,社区推广,论坛程序做导航网站,甘肃省人民政府任命公告Java之SpringCloud Alibaba【一】【Nacos一篇文章精通系列】跳转Java之SpringCloud Alibaba【二】【微服务调用组件Feign】跳转Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】跳转Java之SpringCloud Alibaba【四】【微服务 Sentinel服务熔断】跳转Java之Sprin…
Java之SpringCloud Alibaba【一】【Nacos一篇文章精通系列】跳转
Java之SpringCloud Alibaba【二】【微服务调用组件Feign】跳转
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】跳转
Java之SpringCloud Alibaba【四】【微服务 Sentinel服务熔断】跳转
Java之SpringCloud Alibaba【五】【微服务 Sentinel整合openfeign进行降级】跳转
Java之SpringCloud Alibaba【六】【Alibaba微服务分布式事务组件—Seata】跳转
Java之SpringCloud Alibaba【七】【Spring Cloud微服务网关Gateway组件】跳转
Java之SpringCloud Alibaba【八】【Spring Cloud微服务Gateway整合sentinel限流】跳转
Java之SpringCloud Alibaba【九】【Spring Cloud微服务Skywalking】跳转

Java之SpringCloud Alibaba【九】【Spring Cloud微服务Skywalking】

    • 一、简介
      • 1、skywalking是什么
      • 2、链路追踪框架对比
      • 3、性能对比
      • 4、skywalking主要功能特性
    • 二、Skywalking环境搭建部署
      • 1、下载skywalking
      • 2、搭建skywalking OAP服务
    • 三、skywalking跨多个微服务跟踪(Windows环境在IDEA中使用skywalking)
    • 四、skywalking设置集成gateway(第三方内容)
    • 五、Linux环境通过jar的方式接入
    • 六、skywalking持久化跟踪数据
      • 1、默认使用的H2数据库存储(内存)
      • 2、基于mysql持久化
    • 七、自定义skywalking链路追踪【设置业务方法记录到skywalking】
      • 1、引入依赖
      • 2、@Trace将方法加入追踪链路
      • 3、加入@Tags或@Tag 设置记录返回值和参数
    • 八、skywalking性能剖析
    • 九、skywalking告警功能

一、简介

1、skywalking是什么

skywalking是一个国产开源框架, 2015年由吴晟开源,2017年加入Apache孵化器。

skywalking是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、 K8s、 Mesos) 架构而设计。

它是一款优秀的APM (Application Performance Management)工具,包括了分布式追踪、性能.
指标分析、应用和服务依赖分析等。

官网: http://skywalking.apache.org
在这里插入图片描述

下载: http://skywalking.apache.org/downloads/
Github: https://github.com/apache/skywalking
文档: https://skywalking.apache.org/docs/main/v8.4.0/readme/
中文文档: https://skyapm.github io/document-cn-translation-of-skywalking/

2、链路追踪框架对比

  1. Zipkin是Twitter开源的调用链分析工具,目前基于springcloud sleuth得到了广泛的使用,特点是轻量,使用部署简单。

  2. Pinpoint是韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件, UI功能强大,接入端无代码侵入。

  3. SkyWalking是本士开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件, UI功能较强,接入端无代码侵入。目前已加入Apache孵化器。

  4. CAT是大众点评开源的基于编码和配置的调用链分析,应用监控分析,日志采集,监控报警等-系列的监控平台工具。

在这里插入图片描述

3、性能对比

模拟了三种并发用户: 500, 750, 1000。使用jmeter测试, 每个线程发送30个请求,设置思考时间为10ms。使用的采样率为1,即100% ,这边与生产可能有差别。pinpoint默认的采样率为20,即50%,通过设置agent的配置文件改为100%。zipkin默认也是1。组合起来, -共有12种。

下面看下汇总表:
在这里插入图片描述
从上表可以看出,在三种链路监控组件中,skywalking的探针对吞吐量的影响最小,zipkin的吞吐量居中。pinpoint的探针对吞吐量的影响较为明显,在500并发用户时,测试服务的吞吐量从1385降低到774,影响很大。然后再看下CPU和memory的影响,在内部服务器进行的压测,对CPU和memory的影响都差不多在10%之内。

4、skywalking主要功能特性

1、多种监控手段,可以通过语言探针和service mesh获得监控的数据;
2、支持多种语言自动探针,包括Java, .NET Core和Node.JS;
3、轻量高效,无需大数据平台和大量的服务器资源;
4、模块化,UI、存储、集群管理都有多种机制可选;
5、支持告警;
6、优秀的可视化解决方案;

二、Skywalking环境搭建部署

在这里插入图片描述

  • skywalking agent和业务系统绑定在一起, 负责收集各种监控数据
  • Skywalking oapservice是 负责处理监控数据的,比如接受skywalking agent的监控数据,并存储在数据库中;接受skywalking webapp的前端请求,从数据库查询数据,并返回数据给前端。Skywalking oapservice通常以集群的形式存在。
  • skywalking webapp,前端界面,用于展示数据。
  • 用于存储监控数据的数据库,比如mysql、elasticsearch等。

1、下载skywalking

下载:http://skywalking.apache.org/downloads/

在这里插入图片描述
这里只能下载最新版本
我们在在这里下载旧版本:https://archive.apache.org/dist/skywalking/

在这里插入图片描述

在这里插入图片描述
解压
在这里插入图片描述
在这里插入图片描述
修改端口号
在这里插入图片描述
在这里插入图片描述

2、搭建skywalking OAP服务

启动
双击
在这里插入图片描述
启动成功后会启动两个服务,一个是skywalking-oap-server, 一个是skywalking-web-ui : 8868

skywalking-oap-server服务启动后会暴露11800和12800两个端口,分别为收集监控数据的端口11800和接受前端请求的端口12800,修改端口可以修改config/applicaiton.yml

访问:http://localhost:8868/
在这里插入图片描述

三、skywalking跨多个微服务跟踪(Windows环境在IDEA中使用skywalking)

在这里插入图片描述

# skywalking-agent.jar 的本地磁盘路径
-javaagent:D:\ProgramTool\apache-skywalking-apm-es7-8.5.0\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar
# 在skywalking上显示的服务名
-DSW_AGENT_NAME=api-gateway
# 在skywalking的controller的服务的IP以及端口
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800

DSW_AGENT_COLLECTOR_BACKEND_SERVICES可以指定远程地址,但是-javaagent必须绑定你本机物理路径的skywalking-agent.jar
Skywalking跨多个微服务跟踪,只需要每个微服务启动时添加javaagent参数即可。
上述当中的jar路径
在这里插入图片描述

测试:
启动微服务mall-gateway, mall-order, mall-user ,配置skywalking的jvm参数

http://localhost:8888/user/findOrderByUserld/1

四、skywalking设置集成gateway(第三方内容)

在这里插入图片描述

        - id: order_route #路由的唯一标识,路由到orderuri: lb://alibaba-order-seata # 需要转发的地址  lb指的是从nacos中按照名称获取微服务,并遵循负载均衡策略 order-service服务名

修改一下OrderController
在这里插入图片描述

配置项目启动参数
在这里插入图片描述
在这里插入图片描述

-javaagent:D:\ProgramTool\apache-skywalking-apm-es7-8.5.0\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar
-DSW_AGENT_NAME=api-gateway
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800

在这里插入图片描述

-javaagent:D:\ProgramTool\apache-skywalking-apm-es7-8.5.0\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar
-DSW_AGENT_NAME=order-service
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800

在这里插入图片描述

-javaagent:D:\ProgramTool\apache-skywalking-apm-es7-8.5.0\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar
-DSW_AGENT_NAME=stock-service
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800

分别启动上述设置的内容
在这里插入图片描述
访问:http://localhost:8088/order/add

在这里插入图片描述

访问:http://localhost:8868/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修改OrderController
在这里插入图片描述
在这里插入图片描述
http://localhost:8088/order/add
在这里插入图片描述
可以监控到那个节点抛出异常
在这里插入图片描述
集成gateway
D:\ProgramTool\apache-skywalking-apm-es7-8.5.0\apache-skywalking-apm-bin-es7\agent\optional-plugins当中的有gateway的jar
在这里插入图片描述

需要进入到复制到D:\ProgramTool\apache-skywalking-apm-es7-8.5.0\apache-skywalking-apm-bin-es7\agent\plugins当中
在这里插入图片描述
重新启动运行Skywalking
重新启动项目并访问
在这里插入图片描述
http://localhost:8088/order/add
在这里插入图片描述
访问:http://localhost:8868/topology
出现了gateway的节点
在这里插入图片描述

五、Linux环境通过jar的方式接入

准备一个springboot程序,打成可执行jar包,写一个shelI脚本,在启动项目的Shel脚本上,通过-javaagent参数进行配置SkyWalking Agent来跟踪微服务;

startup.sh脚本:

#!/bin/sh 
# SkyWalking Agent配置
export SW_AGENT_NAME=springboot-skywalking-demo #Agent名字,一般 使用spring.application.name
export SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 #配置collector地址。
export SW_AGENT_SPAN_LIMIT=2000 #配置链路的最大Span数量,默认为300。
export JAVA_AGENT=-javaagent:/usr/local/soft/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar
java $JAVA_AGENT -jar springboot-skywalking-demo-0.0.1-SNAPSHOT.jar #jar启动

等同于

java -javaagent:/usr/local/soft/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800
-DSW_AGENT_NAME = springboot-skywalking-demo -jar springboot-skywalking-demo-0.0.1-SNAPSHOT.jar

参数名对应agentconfig/agent.config配置文件中的属性。
属性对应的源码: org.apache.skywalking.apm.agent.core.conf.Config.java

# The service name in UI
agent.service_name=${SW_AGENT_NAME:Your_ApplicationName }
# Backend service addresses.
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}

我们也可以使用skywalking.+配置文件中的配置名作为系统配置项来进行覆盖。javaagent参数配置方式优先级更高

六、skywalking持久化跟踪数据

1、默认使用的H2数据库存储(内存)

confia/application.yml

在这里插入图片描述

2、基于mysql持久化

1)修改config目录下的application.yml,使用mysql作为持久化存储的仓库
在这里插入图片描述

2)修改mysql连接配置
在这里插入图片描述
在mysql当中创建swtest即可,Skywalking会自动创建对应的表结构

在这里插入图片描述
我们本次使用的是mysql8,Skywalking默认没有对应的驱动,需要设置对应的驱动

拷贝MySQL连接驱动到oap-libs文件夹下,可以用:mysql-connector-java-8.0.25.jar这个版本的数据库连接驱动
在这里插入图片描述

重新启动Skywalking
在这里插入图片描述
自动创建好对应的表结构
在这里插入图片描述

在这里插入图片描述

访问:http://localhost:8088/order/add
在这里插入图片描述

访问:http://localhost:8868/
在这里插入图片描述

现在重新启动对应的服务旧的数据依旧是存在的。

七、自定义skywalking链路追踪【设置业务方法记录到skywalking】

1、引入依赖

如果我们希望对项目中的业务方法,实现链路追踪,方便我们排查问题,可以使用如下的代码

引入依赖
在这里插入图片描述

	    <!-- SkyWalking工具类--><dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-trace</artifactId><version>8.5.0</version></dependency>

2、@Trace将方法加入追踪链路

在这里插入图片描述

	@RequestMapping("/all")public List<Order> getAll() throws InterruptedException {return All();}@Tracepublic List<Order> All() throws InterruptedException {return orderService.all();}

重新启动alibaba-order-seata

访问:http://localhost:8088/order/all
在这里插入图片描述

3、加入@Tags或@Tag 设置记录返回值和参数

@Tag注解中 key =方法名 value = returnedObj 返回值 arg[0] 参数I

在这里插入图片描述

// 获取单个订单信息@RequestMapping("/get/{id}")public Order get(@PathVariable Integer id){return getById(id);}@RequestMapping("/all")public List<Order> getAll() throws InterruptedException {return All();}@Trace@Tag(key = "list",value = "returnedObj")public List<Order> All() throws InterruptedException {return orderService.all();}@Trace@Tags({@Tag(key = "param",value = "arg[0]"),@Tag(key = "user",value = "arg[0]"),})public Order getById(Integer id) {return orderService.get(id);}

重新启动alibaba-order-seata
访问:http://localhost:8088/order/all
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
这里返回了对象的内存地址,我们需要将对应的对象toString
在这里插入图片描述
重新运行并查看

在这里插入图片描述

访问:http://localhost:8088/order/get/1

在这里插入图片描述

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

八、skywalking性能剖析

在这里插入图片描述
在这里插入图片描述
设置接口延迟响应
在这里插入图片描述

我们连续请求:http://localhost:8088/order/all 6次
在这里插入图片描述
http://localhost:8868/profile

在这里插入图片描述
上述可以看到对应业务的响应时间
再次修改一下延迟时间
在这里插入图片描述
我们连续请求:http://localhost:8088/order/all 6次

在这里插入图片描述
http://localhost:8868/profile
在这里插入图片描述

九、skywalking告警功能

在这里插入图片描述

SkyWalking告警功能是在6.x版本新增的,其核心由一组规则驱动,这些规则定义在config/alarm-settings. yml文件中。告警规则的定 义分为两部分:

1.告警规则:它们定义了应该如何触发度量警报,应该考虑什么条件。
2.Webhook (网络钩子) :定义当警告触发时,哪些服务终端需要被告知


告警规则
SkyWalking的发行版都会默认提供config/alarmrsettings. yml文件,里面预先定义了一-些常用的告警规则。 如下:
1.过去3分钟内服务平均响应时间超过1秒。
2.过去2分钟服务成功率低于80%。
3.过去3分钟内服务响应时间超过1s的百分比。
4.服务实例在过去2分钟内平均响应时间超过1s,并且实例名称与正则表达式匹配。
5.过去2分钟内端点平均响应时间超过1秒。
6.过去2分钟内数据库访问平均响应时间超过1秒。
7.过去2分钟内端点关系平均响应时间超过1秒。

这些预定义的告警规则,打开config/alarm-settings. yml文件即可看到。

告警规则配置项的说明:

  • Rule name:规则名称,也是在告警信息中显示的唯一名称。 必须以rule结尾,前缀可自定义
  • Metrics name:度量名称,取值为oal脚本中的度量名,目前只支持1ong、 double和int类型。 详见official OAL script
  • Include names:该规则作用于哪些实体名称,比如服务名,终端名(可选, 默认为全部)
  • Exclude names:该规则作不用于哪些实体名称,比如服务名,终端名(可选,默认为空)
  • Threshold:阈值
  • P: 操作符,目前支持>、< =
  • Period:多久告警规则需要被核实-下。 这是一个时间窗口, 与后端部署环境时间相匹配
  • Count:在- -个Period窗口中, 如果values超过Threshold值 (按op) ,达到Count值, 需要发送警报
  • Silence period:在时间N中触发报警后,在TN -> TN + period这个阶段不告警。默认情况下, 它和- Period-样,这意味着相同的告警(在同一个Metrics name拥有相同的Id)在同一个Period内只会触发一次

Webhook可以简单理解为是一种Web层面的回调机制, 通常由一些事件触发, 与代码中的事件回调类似,只不过是Web层面的。由于是Web层面的,所以当事件发生时,回调的不再是代码中的方法或函数,而是服务接口。

例如,在告警这个场景,告警就是一个事件。 当该事件发生时,SkyWalking就会 主动去调用一个配置好的接口, 该接口就是所谓的Webhook。
SkyWalking的告警消息会通过HTTP请求进行发送,请求方法为POST, Content-Type 为application/json,其JSON数据实基于List<org. apache. skywalking. oap. server. core. alarm AlarmMessage进行序列化的。

JSON数据
示例:

[{”scopeId”: 1,”scope":SERVICE,”name”:”serviceA”,”id0”: 12,”id1”: 0,”ruleName” :”service_ resp_ time_ rule”,”alarmMessage”:”alarmMessage xxxx",”startTime”: 1560524171000
}{”scopeId”: 1,”scope":SERVICE,”name”: ”serviceB”,”id0": 23,”id1”: 0,”ruleName”:”service_ resp_ _time_ rule”,”alarmMessage”: ”alarmMessage yyy”,”startTime" : 1560524171000
}]

字段说明:

  • scopeld, scope:
    所有可用的Scope详见org.apache.skywalking.oap.server.core.source.DefaultScopeDefine
  • name:目标Scope的实体名称
  • id0: Scope 实体的ID
  • id1:保留字段,目前暂未使用
  • ruleName: 告警规则名称
  • alarmMessage:告警消息内容
  • startTime:告警时间,格式为时间戳

邮件告警功能实践
根据以上两个小节的介绍,可以得知: SkyWalking是不支持直接向邮箱、 短信等服务发送告警信息的,SkyWalking只会在发生告警时将告警信息发送至配 好的Webhook接口。

但我们总不能人工盯着该接口的日志信息来得知服务是否发生了告警,因此我们需要在该接口里实现发送邮件或短信等功能,从而达到个性化的告警通知。
在这里插入图片描述

接下来开始动手实践,这里基于Spring Boot进行实现。首先是添加依赖:
在这里插入图片描述

	<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.18</version><scope>compile</scope></dependency>

SwAlarmDTO
在这里插入图片描述

package com.itbluebox.dto;import lombok.Data;import java.util.List;
import java.util.Map;/****/
@Data
public class SwAlarmDTO {/** "scopeId": 1,"scope": "SERVICE","name": "serviceB","id0": "23","id1": "","ruleName": "service_resp_time_rule","alarmMessage": "alarmMessage yyy","startTime": 1560524171000,"tags": [{"key": "level","value": "CRITICAL"*/private int scopeId;private String scope;private String name;private String id0;private String id1;private String ruleName;private String alarmMessage;private List<Tag> tags;private long startTime;private transient int period;private transient boolean onlyAsCondition;@Datapublic static class Tag{private String key;private String value;}
}

SwAlarmController

package com.itbluebox.controller;import com.itbluebox.dto.SwAlarmDTO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;/****/
@Slf4j
@RestController
@RequiredArgsConstructor
@RequestMapping("/alarm")
public class SwAlarmController {/*** 接收skywalking服务的告警通知并发送至邮箱** 必须是post*/@PostMapping("/receive")public void receive(@RequestBody List<SwAlarmDTO> alarmList) {/* SimpleMailMessage message = new SimpleMailMessage();// 发送者邮箱message.setFrom(from);// 接收者邮箱message.setTo(from);// 主题message.setSubject("告警邮件");String content = getContent(alarmList);// 邮件内容message.setText(content);sender.send(message);*/String content = getContent(alarmList);log.info("告警邮件已发送..."+content);}private String getContent(List<SwAlarmDTO> alarmList) {StringBuilder sb = new StringBuilder();for (SwAlarmDTO dto : alarmList) {sb.append("scopeId: ").append(dto.getScopeId()).append("\nscope: ").append(dto.getScope()).append("\n目标 Scope 的实体名称: ").append(dto.getName()).append("\nScope 实体的 ID: ").append(dto.getId0()).append("\nid1: ").append(dto.getId1()).append("\n告警规则名称: ").append(dto.getRuleName()).append("\n告警消息内容: ").append(dto.getAlarmMessage()).append("\n告警时间: ").append(dto.getStartTime()).append("\n标签: ").append(dto.getTags()).append("\n\n---------------\n\n");}return sb.toString();}
}

在这里插入图片描述

在这里插入图片描述
访问:http://localhost:8088/order/all
在这里插入图片描述
http://localhost:8868/alarm
在这里插入图片描述

Java之SpringCloud Alibaba【一】【Nacos一篇文章精通系列】跳转
Java之SpringCloud Alibaba【二】【微服务调用组件Feign】跳转
Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】跳转
Java之SpringCloud Alibaba【四】【微服务 Sentinel服务熔断】跳转
Java之SpringCloud Alibaba【五】【微服务 Sentinel整合openfeign进行降级】跳转
Java之SpringCloud Alibaba【六】【Alibaba微服务分布式事务组件—Seata】跳转
Java之SpringCloud Alibaba【七】【Spring Cloud微服务网关Gateway组件】跳转
Java之SpringCloud Alibaba【八】【Spring Cloud微服务Gateway整合sentinel限流】跳转
Java之SpringCloud Alibaba【九】【Spring Cloud微服务Skywalking】跳转

相关文章:

Java之SpringCloud Alibaba【九】【Spring Cloud微服务Skywalking】

Java之SpringCloud Alibaba【一】【Nacos一篇文章精通系列】跳转Java之SpringCloud Alibaba【二】【微服务调用组件Feign】跳转Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】跳转Java之SpringCloud Alibaba【四】【微服务 Sentinel服务熔断】跳转Java之Sprin…...

wpf devexpress设置行和编辑器

如下教程示范如何计算行布局&#xff0c;特定的表格单元编辑器&#xff0c;和格式化显示值。这个教程基于前一个文章 选择行显示 GridControl为所有字段生成行和绑定数据源&#xff0c;如果AutoGenerateColumns 属性选择AddNew。添加行到GridControl精确显示为特别的几行设置。…...

AdaBoost 算法:理解、实现和掌握 AdaBoost

一、介绍 Boosting 是一种集成建模技术&#xff0c;由 Freund 和 Schapire 于 1997 年首次提出。从那时起&#xff0c;Boosting 就成为解决二元分类问题的流行技术。这些算法通过将大量弱学习器转换为强学习器来提高预测能力 。 Boosting 算法背后的原理是&#xff0c;我们首先…...

基于ssm+vue设备配件检修管理系统

摘要 随着工业设备的日益复杂和多样化&#xff0c;设备配件的检修管理成为保障生产运行和设备寿命的关键环节。本研究基于SSM框架&#xff08;Spring Spring MVC MyBatis&#xff09;&#xff0c;致力于设计和实现一套全面、高效的设备配件检修管理系统。该系统不仅能够提高设…...

Reids集群

目录 一、集群的概念 1.为什么要搭建集群&#xff1f; 2.Redis搭建集群是否需要考虑状态同步的问题&#xff1f; 二、Redis集群的模式 1.redis集群--主从模式 1.1什么是Redis的主从模式&#xff1f; 1.2.主从模式它们之间的数据是怎么实现一个同步的&#xff1f; 1.3.主…...

自定义指令基础

除了 Vue 内置的一系列指令 (比如 v-model 或 v-show) 之外&#xff0c;Vue 还允许你注册自定义的指令 (Custom Directives) 选项式API_自定义指令 <template><h3>自定义指令</h3><p v-author>文本信息</p> </template> <script> e…...

​软考-高级-系统架构设计师教程(清华第2版)【第5章 软件工程基础知识(190~233)-思维导图】​

软考-高级-系统架构设计师教程&#xff08;清华第2版&#xff09;【第5章 软件工程基础知识&#xff08;190~233&#xff09;-思维导图】 课本里章节里所有蓝色字体的思维导图...

Oneid方案

一、前文 用户画像的前提是标识出用户&#xff0c;存在以下场景&#xff1a;不同业务系统对同一个人的标识&#xff0c;匿名用户行为的行为归因&#xff1b;本文提供多种解决方案&#xff0c;提供大家思考。 二、方案矩阵 三、其他 相关连接&#xff1a; 如何通过图算法能力获…...

【超好用的工具库】hutool-all工具库的基本使用

简介&#xff08;可不看&#xff09;&#xff1a; hutool-all是一个Java工具库&#xff0c;提供了许多实用的工具类和方法&#xff0c;用于简化Java开发过程中的常见任务。它包含了各种模块&#xff0c;涵盖了字符串操作、日期时间处理、加密解密、文件操作、网络通信、图片处…...

趣学python编程 (一、计算机基础知识科普)

未来是高度科技化和智能化的时代。过去不识字的叫“文盲”&#xff0c;如今不懂点计算机知识&#xff0c;则可能是新时代的“文盲”。不论从事什么行业&#xff0c;了解下计算机和编程都是有益的。Python 连续多年占据最受欢迎的编程语言榜首&#xff0c;未来Python有机会成为像…...

亚马逊云科技云存储服务指南

文章作者&#xff1a;Libai 高效的云存储服务对于现代软件开发中的数据管理至关重要。亚马逊云科技云存储服务提供了强大的工具&#xff0c;可以简化工作流程并增强数据管理能力。 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏…...

随机链表的复制

文章目录 &#x1f349;前言&#x1f349;题目&#x1f349;分析&#x1f349;思路一&#xff1a;暴力解法&#x1f349;思路二&#xff1a;很绝的办法 &#x1f349;前言 果然&#xff0c;力扣的简单题不一定简单&#xff0c;但是中等和较难的题一定很麻烦。 这道题相当综合&…...

树莓派4b编译FFmpeg支持硬件编解码

ffmpeg h264_omx解码器充分发挥树莓派gpu性能 准备 树莓派4b ,64位系统 修改树莓派的启动设置文件(/boot/config.txt)进行如下的调整: gpu_mem=256 framebuffer_depth=16安装依赖 常规依赖: sudo apt update sudo apt upgrade sudo apt -y install autoconf automake …...

开启CentOS/Debian自带的TCP BBR加速

BBR 是什么我就不多做介绍了。如果系统自带内核高于4.9 则默认已包含 BBR。 操作方法&#xff1a; 1、使用 root 权限运行下面代码 uname -r //内核版本高于 4.9 就行。2、开启BBR echo "net.core.default_qdiscfq" >> /etc/sysctl.conf echo "net.ip…...

视频推拉流EasyDSS直播点播平台获取指定时间快照的实现方法

视频推拉流直播点播系统EasyDSS平台&#xff0c;可提供流畅的视频直播、点播、视频推拉流、转码、管理、分发、录像、检索、时移回看等功能&#xff0c;可兼容多操作系统&#xff0c;在直播点播领域具有广泛的场景应用。为了便于用户集成、调用与二次开发。 今天我们来介绍下在…...

CSS---关于font文本属性设置样式总结

目录 1、color属性 2、font-size属性 3、font-weight属性 4、font-family属性 5、text-align属性 6、line-height属性 7、text-indent属性 8、letter-spacing属性 9、word-spacing属性 10、word-break属性 11、white-space属性 12、text-transform 12、writing-mo…...

7、使用真机调试鸿蒙项目

此处以华为手机为例&#xff0c;版本为鸿蒙4.0. 一、打开手机调试功能 1、打开开发者模式 打开“设置”—“关于手机”&#xff0c;连续点击“软件版本”可打开开发者模式 2、开启USB调试功能 打开“设置”—“系统更新”—“开发者选项”&#xff0c;下拉找到“USB调试”…...

GPT实战系列-P-Tuning本地化训练ChatGLM2等LLM模型,到底做了什么?(一)

GPT实战系列-如何使用P-Tuning本地化训练ChatGLM2等LLM模型&#xff1f; 文章目录 GPT实战系列-如何使用P-Tuning本地化训练ChatGLM2等LLM模型&#xff1f;P-Tuning微调训练概述1、预训练模型或者是torch模型2、训练器的超参数3、数据预处理工具4、加载数据5、分词处理6、数据预…...

【Python】爬虫代理IP的使用+建立代理IP池

目录 前言 一、代理IP 1. 代理IP的获取 2. 代理IP的验证 3. 代理IP的使用 二、建立代理IP池 1. 代理IP池的建立 2. 动态维护代理IP池 三、完整代码 总结 前言 在进行网络爬虫开发时&#xff0c;我们很容易遭遇反爬虫机制的阻碍。为了规避反爬虫机制&#xff0c;我们…...

JS-项目实战-新增水果库存功能实现

1、fruit.js function $(name) {if (name) {//假设name是 #fruit_tblif (name.startsWith("#")) {name name.substring(1); //fruit_tblreturn document.getElementById(name);} else {return document.getElementsByName(name); //返回的是NodeList类型}} }//当…...

mysql 常见操作指令

use k_order – 查看版本 select version(); – 查看所有数据库 show databases; – 查看所有执行引擎 show engines; – 查看当前数据库 select database(); – 查看所有table show tables; – 查看默认存储引擎 SHOW VARIABLES LIKE ‘default_storage_engine’; – 系…...

Vue3 生命周期

如下是Vue3的生命周期函数图&#xff1a; 一、Vue2生命周期和Vue3声明周期的区别 1. Vue2 中&#xff0c;只要创建Vue实例对象而不需要挂载就可以实现beforeCreate 和 created 生命周期函数。 Vue3中必须要将Vue实例对象挂载完成&#xff0c;所有的准备工作做完&#xff0c;…...

rocketmq 安装dashboard1.0.0 mq消息控制台安装 rocketmq控制台安装 rocketmq-dashboard-1.0.0编译安装

1. 官网&#xff1a; 下载 | RocketMQ 2. dashboard安装包位置&#xff1a; 在连接最下面&#xff0c;点击download.zip即可 3. 需要安装maven, 编译命令&#xff1a; mvn clean install -U -Dmaven.test.skiptrue4. 启动jar: java -jar rocketmq-dashboard-1.0.0.jar &…...

常见的数据结构有哪些?

数据结构分为逻辑结构和物理结构。 逻辑结构&#xff1a;指数据元素之间逻辑关系的数据结构&#xff0c;这里的逻辑关系是指数据元素之间的前后间关系&#xff0c;与数据在计算机中的存储位置无关。物理结构&#xff1a;指数据的逻辑结构在计算机存储空间中的存放形式称为数据…...

Spring中有哪几种方法获取HttpSession对象

Spring MVC 可以直接作为Controller的参数传入&#xff1a; RequestMapping(value "/test", method RequestMethod.POST, produces "application/json;charsetUTF-8")ResponseBodypublic Map test(HttpSession session, String otherParam) {//TODOre…...

springboot开启Redis缓存支持

开启缓存支持&#xff0c;只需要继承CachingConfigurerSupport 即可。代码如下&#xff1a; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; impo…...

2.4 矩阵的运算法则

矩阵是数字或 “元素” 的矩形阵列。当矩阵 A A A 有 m m m 行 n n n 列&#xff0c;则是一个 m n m\times n mn 的矩阵。如果矩阵的形状相同&#xff0c;则它们可以相加。矩阵也可以乘上任意常数 c c c。以下是 A B AB AB 和 2 A 2A 2A 的例子&#xff0c;它们都是 …...

让文字在盒子中水平居中与垂直居中

简单方法&#xff1a; 1.先用text-align: center;将文字垂直居中。 2.再用line-height: Xpx;将元素的行高设置为与父元素同样的高度。&#xff08;这里的X代表父元素的高度&#xff09; 举例&#xff1a; 对于该网页的代码如下&#xff1a; <!DOCTYPE html> <html&…...

聊一聊前端面临的安全威胁与解决对策

前端是用户在使用您的网站或Web应用程序时首先体验到的东西。如果您的Web应用程序的前端受到侵害&#xff0c;它可能会影响整个布局&#xff0c;并造成糟糕的用户体验&#xff0c;可能难以恢复。集成前端安全变得越来越重要&#xff0c;本文将指导您通过可以应用于保护您的Web应…...

【matlab学习】现代控制

文章目录 (1) SISO Modeling(2) MIMO Modeling(3) 状态空间模型(4) 状态空间模型->传递函数(5) 传递函数->状态空间模型(6) 状态空间模型变换(7) 特征值和特征向量(8) 广义特征向量(9) 状态空间模型->约旦型 (1) SISO Modeling y ( k 2 ) 5 y ( k 1 ) 6 y ( k ) …...