李成笔记网

专注域名、站长SEO知识分享与实战技巧

「应用中间件」使用NGINX作为WebSocket代理

WebSocket协议提供了一种创建支持客户端和服务器之间实时双向通信的web应用程序的方法。作为HTML5的一部分,WebSocket使开发这些类型的应用程序比以前可用的方法容易得多。大多数现代浏览器都支持WebSocket,包括Chrome、Firefox、Internet Explorer、Opera和Safari,现在越来越多的服务器应用程序框架也支持WebSocket。

对于需要多个WebSocket服务器来实现性能和高可用性的企业生产使用,需要一个理解WebSocket协议的负载均衡层,NGINX从1.3版开始就支持WebSocket,可以作为反向代理,对WebSocket应用程序进行负载均衡。(NGINX Plus的所有版本都支持WebSocket。)

微信小程序与Spring Boot的离线缓存:提高应用性能与用户体验

随着移动互联网的不断发展,用户对应用性能和体验的要求也越来越高。离线缓存技术在此背景下应运而生,它通过在本地存储数据,减少对服务器的请求,提高应用的响应速度和用户体验。本文将深入探讨如何在微信小程序与Spring Boot应用中实现离线缓存,以提高应用性能和用户体验。

Go 每日一库之 Uber 开源的优秀日志库 zap

以下文章来源于GoUpUp ,作者dj


简介

在很早之前的文章中,我们介绍过 Go 标准日志库log和结构化的日志库logrus。在热点函数中记录日志对日志库的执行性能有较高的要求,不能影响正常逻辑的执行时间。uber开源的日志库zap,对性能和内存分配做了极致的优化。

基于centos8 jdk21 构建jenkins镜像,及运行和使用

脚本和包准备

  • 你可能用到这些脚本
  • 下载war包

如下图,下载war包(从图中知道,有docker镜像,但是docker.io202406dns污染等不可抗拒因素无法访问;以及为了学习docker和jenkins,便有了此文章)

ES2022 有什么新特性? es2020特性

新版本的 ECMA Script 将在今年六月成为标准。让我们来看看 ES2022 有什么新特性?

新功能

1. error.cause

这是一个关于错误捕获的特性,下文代码列举了过去我们常使用的三种捕获错误的方式。

机器学习入门(1):Ubuntu16.04环境搭建安装Python3.7 | 100%实战

1.Ubuntu软件升级命令(按顺序执行)

sudo apt-get update

apt list --upgradable

sudo apt-get upgrade

sudo apt autoremove

我遇到的问题:

(1)sudo: vim: command not found

解决方法:

sudo apt-get install vim

apt install 安装软件常见的问题 apt安装包位置

一 Ubuntu apt install 下载软件很慢的解决办法

1.打开/etc/apt/sources.list 将内容替换为以下内容(注意把sources.list文件备份一下)

deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse

Nuxt.js静态生成与动态路由策略 静态路由是手工添加的,而动态路由是自动生成路径

Nuxt.js 是一个基于 Vue.js 的通用应用框架,用于构建服务器端渲染(SSR)和静态生成(SPA)的 Web 应用。在 Nuxt.js 中,静态生成(Static Generation)和动态路由(Dynamic Routing)是两个关键概念。

静态生成(Static Generation)

  • 原理:静态生成是指在构建时预渲染页面,将服务器端渲染的内容转化为静态 HTML 文件。这样,用户在访问网站时,无需服务器参与,可以直接从 CDN 加载页面,提高首屏加载速度。

PHP模拟登录时跳过HTTPS验证的方法

在PHP中,要跳过HTTPS的验证,可以使用cURL库的CURLOPT_SSL_VERIFYPEER

通过api获取sonar覆盖率集成devops中

1.应用场景

a. 通过调用sonar 检测获取代码的覆盖率以及质量检测集成到devops流程的cicd中,完成自动识别代码质量检测标准

使用python脚本实现(通过sonar的api调用获取)

   import requests
import sys

appname = sys.argv[1]
# appname = "besp-scsg-app"

# SonarQube 服务器的基本 URL
sonar_url = "http://10.41.13.12:32428"

# 项目的 Key,可以在 SonarQube 界面上找到
project_key = appname

# 登录 SonarQube 的用户名和密码
username = "admin"
password = "123456"

# SonarQube API 端点
api_endpoint = "/api/measures/component"

# 要获取的度量指标(例如覆盖率)
metric_key = "coverage"

# 构建 API 请求 URL
api_url = f"{sonar_url}{api_endpoint}?component={project_key}&metricKeys={metric_key}"

# 使用 requests 库发送 API 请求,并使用用户名和密码进行身份验证
response = requests.get(api_url, auth=(username, password))

# 检查响应状态码
if response.status_code == 200:
    # 解析 JSON 响应
    data = response.json()

    # 提取覆盖率信息
    coverage = None

    # 在 SonarQube 6.0 版本中,覆盖率信息的提取方式可能需要根据实际返回的 JSON 结构进行调整
    for measure in data["component"]["measures"]:
        if measure["metric"] == metric_key:
            coverage = measure["value"]
            break

    if coverage is not None:
        # print(f"Coverage: {coverage}%")
        if float(coverage) >= 80:
            # results = {"code": 200, "message": "sonar覆盖率通过", "data": "%s"%float(result)}
            results = "ok"
        else:
            # results test= {"code": 500, "message": "sonar覆盖率检查未达到80%", "data": "%s"%float(result)}
            results = "not ok"
    else:
        results = "not ok"
        # print(f"Coverage metric not found in the response.")
else:
    results = "not ok"
    # print(f"Failed to fetch coverage. Status code: {response.status_code}")

print(results)
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言