投资网站建设方案/微信营销的10种方法技巧
Apache SkyWalking
SkyWalking是一个开源可观测平台,用于收集、分析、聚合和可视化来自服务和云原生基础设施的数据。SkyWalking 提供了一种简单的方法来保持分布式系统的清晰视图,甚至跨云。它是一种现代APM,专为云原生、基于容器的分布式系统而设计。
文档版本8.9.1,当前最新版本9.10
介绍
SkyWalking 是一个应用性能监控系统(APM)
为微服务、云原生和基于容器(Docker, Kubernetes, Mesos)体系结构而设计,主要实现功能包括分布式追踪,性能指标分析和服务依赖分析等
相似产品与对比
类似功能的组件还有:Zipkin、Pinpoint 、CAT、Dapper等
- Zipkin是Twitter开源的调用链路分析工具,目前基于Spingcloud sleuth得到了广泛的应用,特点是轻量,部署简单。
- 一个韩国团队开源的产品,运用了字节码增强技术,只需要在启动时添加启动参数即可,对代码无侵入,目前支持Java和PHP语言,底层采用HBase来存储数据,探针收集的数据- 粒度非常细,但性能损耗大,因其出现的时间较长,完成度也很高,应用的公司较多
- Skywalking是本土开源的基于字节码注入的调用链路分析以及应用监控分析工具,特点是支持多种插件,UI功能较强,接入端无代码侵入。
- CAT是由国内美团点评开源的,基于Java语言开发,目前提供Java、C/C++、Node.js、Python、Go等语言的客户端,监控数据会全量统计,国内很多公司在用,例如美团点评、携程、拼多多等,CAT跟下边要介绍的Zipkin都需要在应用程序中埋点,对代码侵入性强。
Cat | Zipkin | Pinpoint | skywalking | |
---|---|---|---|---|
依赖 | Java 6,7,8 Maven 3.2.3+ mysql5.6 Linux 2.6以及之上(2.6内核才可以支持epoll) | Java 6,7,8 Maven3.2+ rabbitMQ | Java 6,7,8 maven3+ Hbase0.94+ | Java 6,7,8 maven3.0+ nodejs zookeeper elasticsearch |
实现方式 | 代码埋点(拦截器,注解,过滤器等) | 拦截请求,发送(http,mq)数据至zipkin服务 | java探针,字节码增强 | java探针,字节码增强 |
颗粒度 | 代码级 | 接口级 | 方法级 | 方法级 |
页面UI | ***** | ** | ***** | **** |
存储选择 | Mysql,hdfs | In-memory,mysql,cassandra,elasticsearch | Hbase | Elasticsearch,h2 |
通信方式 | - | http,mq | Thrift | GRPC |
MQ监控 | 不支持 | 不支持 | 不支持 | RocketMq,kafka |
全局调用 统计 | 支持 | 不支持 | 支持 | 支持 |
Trace查询 | 不持支 | 支持 | 不支持 | 支持 |
报警 | 支持 | 不支持 | 支持 | 支持 |
Jvm监控 | 不支持 | 不支持 | 支持 | 支持 |
优点 | 功能完善 | spring-cloud-sleuth可以很好的集成zipkin , 代码无侵入,集成非常简单 , 社区更加活跃。对外提供有query接口,更加容易二次开发 | 完全无侵入, 仅需修改启动方式,界面完善,功能细致。 | 完全无侵入,界面完善,支持应用拓扑图及单个调用链查询。功能比较完善(zipkin + pinpoint) |
缺点 | 代码侵入性较强,需要埋点文档比较混乱,文档与发布版本的符合性较低,需要依赖点评私服 (或者需要把他私服上的jar手动下载下来,然后上传到我们的私服上去)。 | 默认使用的是http请求向zipkin上报信息,耗性能。跟sleuth结合可以使用rabbitMQ的方式异步来做,增加了复杂度,需要引入rabbitMQ 。数据分析比较简单。 | 不支持查询单个调用链, 对外表现的是整个应用的调用生态。二次开发难度较高 | 3.2版本之前BUG较多 ,网上反映兼容性较差 . 3.2新版本的反映情况较少依赖较多。 |
文档 | 网上资料较少,仅官网提供的文档,比较乱 | 文档完善 | 文档完善 | 文档完善 |
开发者 | 大众点评 | Twiter | Naver | 吴晟(华为开发者) ,目前已经加入Apache孵化器 |
使用公司 | 大众点评,携程,陆金所,同程旅游,猎聘网,拼多多 | Twiter | Naver | 华为,alibaba cloud,天源迪科,当当网,京东金融 |
功能
开源监控平台,用于从服务和云原生基础设施收集、分析、聚合和可视化数据。SkyWalking提供了一种简单的方法来维护分布式系统的清晰视图,甚至可以跨云查看。它是一种现代APM,专门为云原生、基于容器的分布式系统设计
监测对象包括:service(服务), service instance(实例), endpoint(端点)
功能描述:
- 多种监控手段,可以通过语言探针和service mesh获得监控的数据
- 支持多重语言的自动探针,包括JAVA, .NET Core和NodeJS
- 轻量高效,无需大数据平台和大量的服务器资源
- 模块化,UI ,存储,集群管理都有多种机制可选
- 支持告警
- 优秀的可视化解决方案
架构
SkyWalking 在逻辑上分为四个部分:Probes、Platform backend、Storage 和 UI。
探针Probe
采集tracing(调用链数据)和metric(指标)信息并上报,上报通过HTTP或者gRPC方式按要求重新格式化数据发送数据到Skywalking Collector
- 自动探针:Java支持的中间件、框架与类库列表
- 手动探针:OpenTrackingApi、@Trace注解、trackId集成到日志中。
后端Platform backend
支持数据聚合、分析和流式处理,包括跟踪、度量和日志。
基于gRpc、Http 链路数据收集器,对agent传过来的tracing和metric数据进行整合分析通过Analysis Core模块处理并落入相关的数据存储中,同时会通过Query Core模块进行二次统计和监控告警
数据存储Storage
通过开放/可插入接口存储 SkyWalking 数据,支持多种方式存储数据 H2,ElasticSearch,MySQL, TiDB, InfluxDB或自定义
可视化平台UI
基于GraphQL Http 高度可定制的基于 Web 的界面的可视化平台,允许 SkyWalking 最终用户可视化和管理。
下载安装
下载
官方下载地址:https://skywalking.apache.org/downloads/
历史版本下载:https://archive.apache.org/dist/skywalking/
Rocketbot-UI 8.x:https://github.com/apache/skywalking-rocketbot-ui
Booster UI 9.x:https://github.com/apache/skywalking-booster-ui
注:APM已经集成UI,不需要单独下载与部署
Window安装
-
安装APM (8.9.1,h2)
-
- 下载apache-skywalking-apm-bin
- 解压执行命名 ~/bin/startup.bat
- 访问http://localhost:8080
Docker安装
- 安装OAP
下载镜像
docker pull apache/skywalking-oap-server:8.9.1
启动容器
docker run --name oap -p 12800:12800 -p 11800:11800 -p 1234:1234 --restart always -d apache/skywalking-oap-server:8.9.1
- 安装UI
下载镜像
docker pull apache/skywalking-ui
启动容器
docker run --name oap-ui -p 18080:8080 --restart always -d -e SW_OAP_ADDRESS=http://localhost:12800 apache/skywalking-ui
访问
http://localhost:18080
系统集成
- 探针
负责进行数据的收集,包含了Tracing和Metrics的数据,agent会被安装到服务所在的服务器上,以方便数据的获取。探针使用gRPC协议与OAP平台通信并上报数据。
- 可观测性分析平台 OAP
接收探针发送的数据,并在内存中使用分析引擎(Analysis Core)进行数据的整合运算,然后将数据存储到对应的存储介质上,比如 Elasticsearch、MySQL等存储服务。同时OAP还使用查询引擎(Query Core)提供HTTP查询接口。OAP默认监听两个端口gRPC协议端口11800、HTTP端口12800,gRPC用于探针上报数据,HTTP端口用于UI连接OAP平台获取数据。
- UI
Skywalking 提供单独的UI进行数据的查看,UI调用OAP提供的接口,获取对应的数据根据UI模板的配置进行展示。Skywalking UI与OAP之间使用Http协议进行通信。Skywalking UI默认监听8080端口提供Web服务。
Java Agent
-
下载:Java Agent v8.11.0
-
目录结构
-
- activations # 工具包,默认加载。
- bootstrap-plugins # 启动插件,默认加载。
- config # 配置文件
- logs # 日志
- optional-plugins # 可选扩展插件,启动不加载,如需加载将其移到到plugins目录下。
- optional-reporter-plugins # 可选统计类插件,启动不加载。
- plugins # 服务类插件
- skywalking-agent.jar # 客户端主程序,需要被服务启动是引用。
-
使用:
项目启动命令添加-javaagent:/path/skywalking-agent/skywalking-agent.jar
-
示例:
java -javaagent:/path/skywalking-agent/skywalking-agent.jar -jar your-app.jar
-
配置:
-
- 系统属性:-Dskywalking.[config]=[value]
- 代理参数: -javaagent:skywalking-agent.jar=[config]=[value],…
- 系统环境变量:agent.service_name=${SW_AGENT_NAME:Your_ApplicationName},如果SW_AGENT_NAME 您的操作系统中存在环境变量,并且其值为skywalking-agent-demo,则agent.service_name此处的值将被覆盖为skywalking-agent-demo,否则将被设置为Your_ApplicationName。
- 修改目录/path/skywalking-agent/config/agent.config文件
// todo
//服务名称
agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}
// OAP服务地址
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}
代理选项 > System.Properties(-D) > 系统环境变量 > 配置文件
- 官方文档
Client JavaScript
- 安装
npm install skywalking-client-js --save
- 注册
import ClientMonitor from 'skywalking-client-js';// Report collected data to `http:// + window.location.host + /browser/perfData` in defaultClientMonitor.register({collector: 'http://127.0.0.1:8080',service: 'test-ui',pagePath: '/current/page/name',serviceVersion: 'v1.0.0',});// options{// 参考方法文档}
-
手动收集指标
页面加载时或任何其他有意义的时刻的指标,PV
-
- register时设置autoTracePerf:false
- 调用setPerformance
import ClientMonitor from 'skywalking-client-js';ClientMonitor.setPerformance({collector: 'http://127.0.0.1:8080',service: 'browser-app',serviceVersion: '1.0.0',pagePath: location.href,useFmp: true});
-
SPA
-
- register时设置enableSPA:true,开启单页面应用基于hashchange event触发指标采集行为
- 或者通过以下方法手动处理,在上报数据时手动更新页面名称,当调用该方法时,默认情况下将重新报告页面PV
app.on('routeChange', function (next) {ClientMonitor.setPerformance({collector: 'http://127.0.0.1:8080',service: 'browser-app',serviceVersion: '1.0.0',pagePath: location.href,useFmp: true});});
-
跟踪请求数据
支持跟踪这些(XMLHttpRequest和Fetch API)两种模式的数据请求。同时,支持基于XMLHttpRequest和fetch的跟踪库和工具,如Axios、SuperAgent、OpenApi等
// Angularimport { ErrorHandler } from '@angular/core';import ClientMonitor from 'skywalking-client-js';export class AppGlobalErrorhandler implements ErrorHandler {handleError(error) {ClientMonitor.reportFrameErrors({collector: 'http://127.0.0.1',service: 'angular-demo',pagePath: '/app',serviceVersion: 'v1.0.0',}, error);}}@NgModule({...providers: [{provide: ErrorHandler, useClass: AppGlobalErrorhandler}]})class AppModule {}
// React class ErrorBoundary extends React.Component { constructor(props) {super(props);this.state = { hasError: false }; } static getDerivedStateFromError(error) {// Update state so the next render will show the fallback UI.return { hasError: true }; } componentDidCatch(error, errorInfo) {// You can also log the error to an error reporting serviceClientMonitor.reportFrameErrors({collector: 'http://127.0.0.1',service: 'react-demo',pagePath: '/app',serviceVersion: 'v1.0.0',}, error); } render() {if (this.state.hasError) {// You can render any custom fallback UIreturn <h1>Something went wrong.</h1>;}return this.props.children; } } <ErrorBoundary> <MyWidget /> </ErrorBoundary>
// Vue Vue.config.errorHandler = (error) => { ClientMonitor.reportFrameErrors({collector: 'http://127.0.0.1',service: 'vue-demo',pagePath: '/app',serviceVersion: 'v1.0.0', }, error); }
-
官方文档
skywalking-client-js
监测对象
- 服务(Service)
对请求提供端点的单个应用或负载,在使用埋点、代理或 SDK 的时候,你可以定义服务的名字。如果不定义的话,SkyWalking 会使用在agent.conf中配置的默认服务名称。
- 服务实例(Instance)
服务组中的每个单独的工作负载都称为一个实例。就像pods在 Kubernetes 中一样,它不需要是单个操作系统进程,但是,如果您使用仪器代理,则实例实际上是一个真正的操作系统进程。
- 端点(Endpoint)
用于传入请求的服务中的路径,例如 HTTP URI 路径或 gRPC 服务类 + 方法签名。
UI指标
通过配置文件定义需要关注的指标 通过特定的分析语言计算指标
UI包括以下几个部分:
- 仪表盘
- 拓扑图
- 追踪
- 性能剖析
- 日志
- 告警
- 事件
- 调试
仪表盘
APM
-
Global
-
- Services Load(CPM / PPM):服务每分钟请求数
- Slow Services(ms):慢响应服务(按照响应时间排序)
- Un-Health Services (Apdex):Apdex分数(1为满分)
- Slow Endpoints (ms):慢Endpoint的平均响应时间
- Global Response Latency(percentile in ms):响应时间百分比
- Global Heatmap:服务响应时间热力分布图,根据时间段内不同响应时间的数量显示颜色深度颜色越深,请求越多。
-
Service
-
- Service Apdex 数字:当前服务的Apdex分数;
- Successful Rate(%):当前服务的请求成功率;
- Service Load (CPM / PPM)数字:每分钟调用次数(CPM),如果是TCP,表示每分钟的数据包数(PPM);
- Service Avg Response Time(ms):当前服务平均响应时间;
- Service Apdex 折线图:当前服务一段时间内的Apdex分数;
- Service Response Time Percentile(ms):当前服务的百分比响应延时;
- Successful Rate(%)折线图:当前服务一段时间内的请求成功率;
- Service Load (CPM / PPM)折线图:当前服务一段时间内的每分钟调用次数;
- Service Throughput(Bytes):服务吞吐量,只适用于TCP服务;
- Message Queue Consuming Count:消息队列消费数;
- Message Queue Avg Consuming Latency(ms):消息队列平均延迟时间;
- Service Instances Load(CPM / PPM):每个实例每分钟请求数;
- Slow Service Instance(ms):每个服务实例平均延时;
- Service Instance Successful Rate(%):服务实例的请求成功率。
-
Instance
-
- instance_jvm_memory_heap(堆内存使用)
- instance_jvm_memory_heap_max(最大堆内存)
- instance_jvm_memory_noheap(直接内存使用)
- instance_jvm_memory_noheap_max(最大直接内存)
- Service Instance Load(CPM / PPM):当前实例每分钟调用数;
- Service Instance Throughput(Bytes):当前实例的吞吐流量;
- Service Instance Successful Rate(%):当前实例调用成功比率;
- Service Instance Latency(ms):当前实例响应延时;
- JVM CPU(Java Service)%:当前实例JVM的CPU占用百分比(相对于主机);
- JVM Memory (Java Service)(MB):当前实例的内存占用大小;
- JVM GC Time(ms):JVM 垃圾回收时间,包含young gc和old gc;
- JVM GC Count:JVM垃圾回收次数,包含young gc count和old gc count;
- JVM Thread Count(java service):当前实例的线程数;
- JVM Thread State Count (Java Service):当前实例的各状态线程数;
- JVM Class Count (Java Service):当前实例类的计数。
-
Endpoint
-
- Endpoint Load in Current Service(CPM / PPM):当前服务每个端点的每分钟请求数;
- Slow Endpoints in Current Service(ms):当前服务每个端点的平均响应时间;
- Successful Rate in Current Service(%):当前服务每个端点的请求成功率;
- Endpoint Load:当前端点每个时间段的请求量;
- Endpoint Avg Response Time(ms):当前端点每个时间段的平均请求响应时间;
- Endpoint Response Time Percentile(ms):当前端点每个时间段的响应时间占比;
- Endpoint Successful Rate(%):当前端点每个时间段的请求成功率;
Database
- Database Avg Response Time(ms):当前数据库平均响应时间;
- Database Access Successful Rate(%):当前数据库访问成功率;
- Database Traffic(CPM: Calls Per Minute):当前数据库每分钟请求数;
- Database Access Latency Percentile(ms):当前数据库响应延迟时间的百分比;
- Slow Statements(ms):慢查询,按照执行时间排序;
- All Database Loads(CPM: Calls Per Minute):所有数据库的请求次数排序;
- Un-Health Databases (Successful Rate):所有数据库请求成功率排序。
SelfObservability
自监控,OAP服务端的各项指标
- 修改配置config/application.yml
# 将-修改为defaultprometheus-fetcher:selector: ${SW_PROMETHEUS_FETCHER:default}#default:# active: ${SW_PROMETHEUS_FETCHER_ACTIVE:true}# 改none为prometheustelemetry:selector: ${SW_TELEMETRY:prometheus} prometheus:host: ${SW_TELEMETRY_PROMETHEUS_HOST:0.0.0.0}port: ${SW_TELEMETRY_PROMETHEUS_PORT:1234}
- 如果telemetry有调整,则对应修改修改config/fetcher-prom-rules/self.yaml
fetcherInterval: PT15SfetcherTimeout: PT10SmetricsPath: /metricsstaticConfig:# 改为上步中telemetry配置的iptargets:- url: http://localhost:1234 sslCaFilePath:labels:service: oap-server
- 检查:curl http://localhost:1234/metrics
Event
Istio、K8s
VM
Web Browser
对前端也有一定的监控,通过Skywalking-Client-js组件来操作,包括Web App、Pages两个指标。
拓扑图
- 服务选择器 支持显示直接关系,包括上游和下游;
- 自定义组 提供服务组的任意子拓扑功能,但是分组的信息是保存在浏览器内的;
- 服务菜单 当您单击任何服务时打开。该图形可以对所选择的服务进行度量、跟踪和告警查询;
- 服务指标的关系 提供服务RPC交互的度量以及这两个服务的实例。
追踪
看每个接口的调用链,每个链路耗时、状态。如果为失败展示错误信息,如果是数据库,会展示查询语句。另外可以根据追踪tid(trace id)和标记(tag)进行筛选。
性能剖析
日志
告警
事件
调试
日志集成
支持logback、log4j、log4j2日志框架集成,基于gRpc通信协议实现日志采集。
以logback为例:
- 引入依赖
<dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-logback-1.x</artifactId><version>8.9.0</version></dependency>
- 修改logback.xml配置
<!-- ... --><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} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n</Pattern></layout></encoder></appender><root level="INFO"><!-- ... --><appender-ref ref="grpc-log"/></root>
- 修改agent配置 ~/config/agent.config
plugin.toolkit.log.grpc.reporter.server_host=${SW_GRPC_LOG_SERVER_HOST:0.0.0.0}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}
- 官方示例
https://skywalking.apache.org/docs/skywalking-java/v8.11.0/en/setup/service-agent/java-agent/application-toolkit-logback-1.x/
监控方法
通过@Trace注解标记需要追踪的方法调用情况
- 引入依赖
<dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-trace</artifactId><version>8.9.0</version></dependency>
- 修改代码
@Trace@GetMapping("/printLog")public String printLog() {Logger.info("traceId:{}",TraceContext.traceId())return "ok";}
告警接入
- 规则
修改配置config/alarm-settings.yml - 钩子
支持WebHook、GRPCHook、SlackHook、WechatHook、DingtalkHook、FeishuHook实现告警信息推送
场景
指标性统计
一个服务的 TBS 的正确率、成功率、流量等,这是我们常见的针对单个指标或者某一个数据库的,这就是 Metrics 单指标分析
Tracing 分布式追踪
一次请求的范围,也就是我们从浏览器或者手机端发起任何的一次调用,甚至我们可以再推广一点,是一次业务交易,比如说一次订购的过程,从浏览商品到最后下定单、支付、物流、最后交到我们的手上。这是一个流程化的东西,我们需要轨迹,需要去追踪。
Logging 日志记录
我们程序在执行的过程中间发生了一些日志,会一帧一帧地跳出来给大家去记录这个东西,这是日志记录。
关键词
- Topology:拓扑
- Trace:追踪
- Metrics:度量
- Span:
- Apdex:是根据设定的阈值和响应时间结合考虑的衡量标准。它是满意响应时间和不满意响应时间相对于总响应时间的比率。它衡量的是用户对你的服务的满意程度,因为传统的指标(如平均响应时间)可能很快就会容易形成偏差。
- percentile:标签含义(p50、p75、p90、p95、p99):例如p99为1000ms, 这意味着 99% 的请求应该比1000ms更快
结束语
ackHook、WechatHook、DingtalkHook、FeishuHook实现告警信息推送
场景
指标性统计
一个服务的 TBS 的正确率、成功率、流量等,这是我们常见的针对单个指标或者某一个数据库的,这就是 Metrics 单指标分析
Tracing 分布式追踪
一次请求的范围,也就是我们从浏览器或者手机端发起任何的一次调用,甚至我们可以再推广一点,是一次业务交易,比如说一次订购的过程,从浏览商品到最后下定单、支付、物流、最后交到我们的手上。这是一个流程化的东西,我们需要轨迹,需要去追踪。
Logging 日志记录
我们程序在执行的过程中间发生了一些日志,会一帧一帧地跳出来给大家去记录这个东西,这是日志记录。
关键词
- Topology:拓扑
- Trace:追踪
- Metrics:度量
- Span:
- Apdex:是根据设定的阈值和响应时间结合考虑的衡量标准。它是满意响应时间和不满意响应时间相对于总响应时间的比率。它衡量的是用户对你的服务的满意程度,因为传统的指标(如平均响应时间)可能很快就会容易形成偏差。
- percentile:标签含义(p50、p75、p90、p95、p99):例如p99为1000ms, 这意味着 99% 的请求应该比1000ms更快
结束语
Apache SkyWalking是一款功能强大的APM系统,可以帮助开发人员和运维人员更好地了解分布式系统的性能状况。通过使用SkyWalking,可以提高应用程序的稳定性和性能,降低运维成本。
相关文章:

一文掌握 Apache SkyWalking
Apache SkyWalking SkyWalking是一个开源可观测平台,用于收集、分析、聚合和可视化来自服务和云原生基础设施的数据。SkyWalking 提供了一种简单的方法来保持分布式系统的清晰视图,甚至跨云。它是一种现代APM,专为云原生、基于容器的分布式系…...

外贸网站优化常用流程和一些常识
外贸网站google排名,总以为是单个网页标签的优化过程。 显然,这些观点都是错误的,九凌网络是做谷歌优化服务,九凌网络跟大家分享外贸网站Google优化常用流程和一些常识需要做以下几个步骤: 第一步:网站诊断࿰…...

Hive的时间操作函数
目录 前言函数使用介绍实际使用判断该天是星期几判断该天对应的周(包含一周开始和结束) 前言 hive 里面的时间函数有很多,今天单讲dayofweek函数,背景:有时候不仅要出日报,还要出周报,需要很多…...

【Web安全】CORS跨域资源共享漏洞
文章目录 前言一、漏洞概述二、漏洞原理三、CORS响应头类型四、漏洞挖掘五、修复建议前言 本篇文章主要介绍CORS跨域漏洞产生的原理,漏洞复现过程,挖掘手段以及如何进行修复,文章难免会有失误,烦请留下宝贵建议,谢谢! 一、漏洞概述 跨域资源共享(CORS)是一种浏览器机制…...

IntelliJ IDEA 如何修改默认Maven仓库地址
在使用idea过程中,每次新建项目或者打开项目时,maven仓库地址都会变为默认地址。如何修改默认地址,让其保持不变,如下这种方式可以简单快捷的设置。 1.打开idea,取消项目自动加载 2.点击 Customize,然后再点击 All se…...

Vue3 <script setup>是什么?作用?
结论先行: <script setup> 是 Vue3 的语法糖,简化了组合式 API 的写法,实现了 “顶层的绑定”。例如: ① 声明的属性和方法无需 return,就可以直接在模板使用; ② 引入组件的时候,会自…...

2.9 CSS 响应式布局
1.媒体:media 媒体类型: all:检测所有设备。screen:检测电子屏幕,包括:电脑屏幕、平板屏幕、手机屏幕等。print:检测打印机 媒体特性: width:检测视口宽度。max-width:…...

vue使用websocket与springboot通信
WebSocket是HTML5下一种新的协议,它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的 在很多项目中,都要用到websocket,使得前端页面与后端页进行实时通信,例如,实时查询…...

ChatGPT 实际上是如何工作的?
添加图片注释,不超过 140 字(可选) ChatGPT 操作的两个主要阶段 我们再用谷歌来打个比方。当你要求谷歌查找某些内容时,你可能知道它不会——在你提出要求的那一刻——出去搜索整个网络来寻找答案。相反,谷歌会在其数…...

【SSD1306 OLED屏幕测试程序 (开源)orangepi zero2 全志H616 】.md updata: 23/11/07
orangepi zero2 H616 SSD1306 OLED屏幕测试程序 orangepi zero2 配置wiringpi 库后,突发奇想构建一个测试oled屏幕的程序,放一个蜗牛每次移动一个像素点,实时显示蜗牛的步数,后面要显示其他内容在此代码上修改即可,如…...

【python VS vba】(5) 在python中使用xlwt操作Excel(待完善ing)
目录 1 什么是xlwt 2 导入xlwt 3 相关语法 3.1 创建新的workbook 3.2 创建新的sheet 3.3 保存workbook 4 python里表格的形式 4.1 矩阵 4.2 EXCEL的数据形式 完全等于矩阵的数字结构 4.3 python里矩阵 5 具体代码 5.1 代码 5.2 结果 5.3 要注意的问题 5.3.1 不能…...

【Redis】Redis整合SSMRedis注解式缓存Redis中的缓存穿透、雪崩、击穿的原因以及解决方案(详解)
目录: 目录 一,SSM整合redis 二,redis注解式缓存 三,Redis中的缓存穿透、雪崩、击穿的原因以及解决方案(附图) 一,SSM整合redis 1.原因: 整合SSM和Redis可以提升系统的性能、可…...

Linux文件系统的功能规划
对于运行的进程来说,内存就像一个纸箱子,仅仅是一个暂存数据的地方,而且空间有限。如果我们想要进程结束之后,数据依然能够保存下来,就不能只保存在内存里,而是应该保存在外部存储中。就像图书馆这种地方&a…...

入门 SpringCloudStream 之 RocketMq 实践全集
本文概览: 组件介绍工作流程文本消息自定义信道多主题文本消息自定义信道标签过滤获取头信息定向的异常处理与全局异常处理顺序消息 全局顺序消息局部顺序消息 事务消息 当在选取队列组件的时候,通常要结合实际情况,大数据场景Kafka可能是理…...

论文阅读:Ensemble Knowledge Transfer for Semantic Segmentation
论文地址:https://ieeexplore.ieee.org/document/8354272 项目及数据地址:https://github.com/ishann/aeroscapes 发表时间:2018年5月7日 语义分割网络通常以严格监督的方式学习,即它们在相似的数据分布上进行训练和测试。在域转…...

定义函数(简单介绍)-def
定义 函数使用关键字 def,后跟函数名与括号内的形参列表。 函数语句从下一行开始,并且必须缩进。 # 定义一个函数,不包含任何操作或返回值 通常用于占位或作为将来扩展用 def do_nothing():pass def greet(name):#定义一个打招呼的函数retu…...

Mac VsCode g++编译报错:不支持C++11语法解决
编译运行时报错: [Running] cd “/Users/yiran/Documents/vs_projects/c/” && g 1116.cpp -o 1116 && "/Users/yiran/Documents/vs_projects/c/"1116 1116.cpp:28:22: warning: range-based for loop is a C11 extension [-Wc11-extensi…...

react_12
在异步操作里为状态属性赋值,需要放在 runInAction 里,否则会有警告错误 使用 store,所有使用 store 的组件,为了感知状态数据的变化,需要用 observer 包装,对应着图中 reactions import { Input } from …...

Android Mvp案例解析
目录 后端数据接口数据格式 App客户端布局逻辑主界面布局 M(Model)V(View)P(Presenter)OkhttpRetrofitRxJava网络http请求 Mvp架构-初学者MVP架构的契约者 后端数据接口 接口地址:https://apis.…...

vue的双向绑定的原理,和angular的对比
目录 前言 Vue的双向绑定用法 代码 Vue的双向绑定原理 Angular的双向绑定用法 代码 Angular的双向绑定原理 理解 效率: 虽然Vue和Angular的双向绑定原理不同,但它们都致力于提供高效的数据更新机制。但是,由于Vue使用的是数据劫持,其…...

平衡树相关笔记
引入 二叉查找树 二叉查找树(Binary Search Tree),又名二叉搜索树。满足以下性质: 对于非空的左子树,左子树点权值小于根节点。对于非空的右子树,左子树点权值大于根节点。二叉查找树的左右子树均是二叉…...

ASP.net C# 用Aspose.pdf实现pdf合并
直接上代码,供参考,备忘! using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Data.SqlClient; using System.Xml; using System…...

C语言实现原码一位除
具体代码如下,直接运行即可。 #include <stdio.h> int main() {int i, a 0, b 0, c 0, flag 3; // flag相当于指针来指明Q的位置char x[6], y[6];int R[6], Q[6], yb[6], y1[6]; // yb是-y的补码,y1为绝对值yprintf("请输入X(带一位符号位四位数值位…...

three.js点滴yan(整理后)
场景、相机和渲染器 Three.js整个系统主要包含场景Scene、相机Camera和WebGL渲染器WebGLRenderer三大块,其中场景又包含模型和光源。WebGL渲染器的主要作用就是把相机对应场景渲染出来,显示在网页Cnavas画布上。 Three.js源码 Three.js各个构造函数对应…...

VMware安装CentOS最小化开发环境导引
目录 一、概要 二、介绍 三、下载 四、安装 4.1 创建虚拟机 4.2 安装CentOS 五、配置网卡 六、配置本地安装源 七、安装软件 7.1 gcc/g 7.2 C的atomic库 7.3 java 7.4 Cmake 7.5 MariaDB客户端(兼容mysql) 八、用户配置文件.bash_profile…...

服务器端编程/数据库驱动程序/RESTful API:介绍
目录 服务器端编程数据库驱动程序RESTful API 👍 点赞,你的认可是我创作的动力! ⭐️ 收藏,你的青睐是我努力的方向! ✏️ 评论,你的意见是我进步的财富! 服务器端编程 服务器端编程是一种计…...

Qwt QwtThermo绘制温度计
1.简介 QwtThermo 是一个基于 Qt 框架的类库,用于创建温度计控件。它提供了一些方便的功能来展示和处理温度计相关的数据。 QwtThermo 添加了特定于温度计的功能。 使用 QwtThermo,可以实现以下功能: 设置温度范围:可以通过设置…...

U_boot介绍
系统移植之前的了解的: 首先需要移植一个 bootloader 代码,这个 bootloader 代码用于启动 Linux 内核,bootloader 有很多,常用的就是 U-Boot;移植好 U-Boot 以后再移植 Linux 内核,移植完 Linux 内核以后 Linux 还不能…...

Flink -- window(窗口)
1、窗口主要分成三大种: 1、Time Window (时间窗口):固定时间触发一次窗口 a、SlidingEventTimeWindows: 滑动的事件时间窗口 public class Demo1TImeWindow {public static void main(String[] args) throws Exception {/*** 时…...

原语:串并转换器
串并转换器OSERDESE2 可被Select IO IP核调用。 OSERDESE2允许DDR功能 参考: FPGA原语学习与整理第二弹,OSERDESE2串并转换器 - 知乎 (zhihu.com) 正点原子。 ISERDESE2原语和OSERDESE2原语是串并转换器,他的的功能都是实现串行数据和并行…...