elasticsearch SQL:在Elasticsearch中启用和使用SQL功能

❃博主首页 : 「码到三十五」 ,同名公众号 :「码到三十五」,wx号 : 「liwu0213」 ☠博主专栏 : <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 : 搬的每块砖,皆为峰峦之基;公众号搜索「码到三十五」关注这个爱发技术干货的coder,一起筑基 目录 一、基本概念二、主要功能和优势Elasticsearch SQL特点 三、启用和使用SQL功能四、Elasticsearch SQL的使用4.1 语法4.2 sql查询4.3 将SQL转换为DSL4.4 全文检索MATCH函数QUERY() 4.5 分组统计4.6 DESCRIBE4.7 SHOW TABLES4.8 查询支持的函数 五、适用场景及潜在限制 一、基本概念 Elasticsearch是一个基于Lucene的开源、分布式、RESTful搜索引擎。它提供了全文搜索、结构化搜索、分析以及分布式索引等功能。Elasticsearch SQL是Elasticsearch的扩展功能,允许用户使用SQL语法查询Elasticsearch数据。通过SQL接口,开发者可以利用熟悉的SQL语言,编写更直观、更易懂的查询,并且避免对大量复杂的原生REST请求的编写。 二、主要功能和优势 易用性:使用熟悉的SQL语法,降低了学习成本。灵活性:支持复杂的查询和聚合操作。性能:Elasticsearch本身的分布式架构和高效查询引擎保证了查询性能。集成性:通过JDBC驱动,可以与各种SQL工具和应用程序集成。 Elasticsearch SQL特点 1. 本地集成 Elasticsearch SQL是专门为Elasticsearch构建的。每个SQL查询都根据底层存储对相关节点有效执行。 2. 没有额外的要求 不依赖其他的硬件、进程、运行时库,Elasticsearch SQL可以直接运行在Elasticsearch集群上 3. 轻量且高效 像SQL那样简洁、高效地完成查询 三、启用和使用SQL功能 要在Elasticsearch中启用和使用SQL功能,你需要安装X-Pack插件。X-Pack插件包含了许多扩展功能,包括SQL接口。安装完成后,需要在Elasticsearch配置文件中启用X-Pack插件,并重启Elasticsearch服务。 # 安装X-Pack插件 ./bin/elasticsearch-plugin install x-pack # 启用X-Pack插件 # 在elasticsearch.yml配置文件中添加以下配置 xpack.sql.enabled: true 在启用SQL功能后,你可以通过REST API、命令行工具或JDBC驱动来执行SQL查询。Elasticsearch SQL的语法与标准的SQL语法非常相似,支持SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY等常见SQL语句。

数据挖掘——matplotlib

matplotlib概述 Mat指的是Matlab,plot指的是画图,lib即library,顾名思义,matplotlib是python专门用于开发2D图表的第三方库,使用之前需要下载该库,使用pip命令即可下载。 pip install matplotlib 1、matplotlib画图流程 matplotlib可分为三层结构,分别为:容器层(canvas),辅助显示层和显示层,而容器显示层又可以分为画板层,画布层和绘图区。辅助显示层主要是添加网格,图例等,增加可读性。而显示层则负责是将图像显现出来。 # 简单画图-折线图 import matplotlib.pyplot as plt plt.figure() # 容器层 plt.plot([1, 0, 9], [4, 5, 6]) # 三个点(1,4)(0,5)(9,6) 并连线 plt.show() # 显示图像 结果如下,依次将三点连线 2、常用操作 (a)是否添加网格 plt.grid(visible,linstyle,alpha) # visible传入布尔值,为True表示可见 # linestyle 表示线的形状 # alpha 表示透明系数 (b) 修改刻度 plt.xticks(ticks, [labels], **kwargs) # ticks:数组类型,用于设置X轴刻度间隔 # [labels]:数组类型,用于设置每个间隔的显示标签 # **kwargs:用于设置标签字体倾斜度和颜色等外观属性。 (c )设置x,y轴说明以及标题 plt.xlabel('name') # 设置x轴名称 plt.ylabel('name') # 设置y轴名称 plt.title('title') # 设置标题 (d)设置图例 plt.legend(loc='best') # loc指的为图例位置,还有其他取值,不过一般设为best即可 (e) 设置多个绘图区 如果想要在一幅图上显示多个图像,可以使用如下方法:

生成式人工智能:助攻开发者还是取代开发者?

引言 近年来,生成式人工智能(AIGC)在软件开发领域掀起了一场革命,为开发者带来了全新的工具和可能性。从代码生成、错误检测到自动化测试,AI正在以各种方式改变着开发者的工作方式。然而,这也引发了人们对开发者职业前景和技能需求变化的担忧:AI究竟是在帮助开发者还是取代他们? AIGC赋能开发者 AIGC技术为开发者提供了以下助力: 代码生成: AIGC模型可以自动生成代码,帮助开发者提高开发效率。例如,OpenAI的Codex模型可以根据自然语言描述生成代码,而谷歌的DeepMind AlphaCode则可以自动编写完整的计算机程序。错误检测: AIGC模型可以自动检测代码中的错误和缺陷,帮助开发者提高代码质量。例如,Facebook的Infer模型可以检测代码中的潜在安全漏洞,而微软的Visual Studio IntelliCode则可以提供代码建议和错误提示。自动化测试: AIGC模型可以自动生成测试用例,帮助开发者进行自动化测试。例如,谷歌的DeepFuzz模型可以自动生成模糊测试用例,而微软的Project Bonsai则可以自动生成端到端测试用例。 AI对开发者职业前景的影响 AIGC的兴起对开发者职业前景带来了以下影响: 提高生产力: AIGC工具可以帮助开发者提高生产力,减少重复性劳动,让他们可以专注于更具创造性和挑战性的工作。扩展技能: AIGC工具可以帮助开发者学习新技能,例如机器学习和自然语言处理,从而在竞争中获得优势。创造新机会: AIGC技术催生了许多新的开发岗位,例如AI工程师和AI开发人员,为开发者提供了新的职业发展机会。 AI对开发者技能需求的变化 AIGC的兴起对开发者技能需求带来了以下变化: 软技能: 开发者需要具备良好的沟通能力、团队合作能力和解决问题能力,以便更好地与AI工具合作。AI技能: 开发者需要了解AIGC技术的基本原理和应用,并能够使用AI工具进行开发。领域知识: 开发者需要对所开发的领域有深入的了解,才能有效地利用AI工具解决实际问题。 AIGC:助攻而非取代 总体而言,AIGC技术是开发者的一大利器,而非取代者。它可以帮助开发者提高生产力、扩展技能、创造新机会,并促进软件开发行业的整体发展。 以下是一些认为值得思考的问题: 如何更好地将AIGC技术与传统开发方法结合起来?如何确保AIGC技术被用于安全和负责任的开发?如何帮助开发者适应AIGC技术带来的技能需求变化? 相信,随着AIGC技术的不断发展,它将与开发者紧密合作,共同推动软件开发行业的进步,创造更美好的未来。 代码生成工具: 以下是各类助力开发者的生成式人工智能工具与模型的简要介绍: OpenAI Codex: 基于自然语言描述生成代码的工具,支持多种编程语言。 Google DeepMind AlphaCode: 可自动编写完整计算机程序的AI系统,涵盖算法、数据结构和复杂控制流等。 GitHub Copilot: VS Code扩展,根据开发人员工作上下文提供代码和整行代码建议。 TabNine: 利用AI的代码补全工具,提供上下文感知的建议和代码片段,帮助开发者更快、更高效地编写代码。 错误检测和预防工具: Facebook Infer: 静态程序分析工具,检测Java和C++代码中的潜在安全漏洞和编码错误。 Microsoft Visual Studio IntelliCode: 利用AI的代码补全和错误检测工具,在开发者编写代码时提供实时建议和警告。 Google AI CodeParrot: 利用机器学习检测和修复Java代码中的bug。 DeepSource: 利用AI的代码审查工具,识别各种编程语言中的潜在安全漏洞、编码错误和代码异味。 自动化测试工具: Google DeepFuzz: 自动生成模糊测试用例的fuzz测试工具,识别软件中的潜在漏洞和崩溃。 Microsoft Project Bonsai: 利用AI的工具,为软件系统生成端到端测试用例,减少手动测试所需的时间和精力。 Applitools Eyes: 利用计算机视觉比较网页和移动应用程序的截图,确保跨不同设备和浏览器的一致视觉外观。

SpringBoot实战:轻松实现接口数据脱敏

文章目录 引言一、接口数据脱敏概述1.1 接口数据脱敏的定义1.2 接口数据脱敏的重要性1.3 接口数据脱敏的实现方式 二、开发环境三、实现接口返回数据脱敏3.1 添加依赖3.2 创建自定义注解3.3 定义脱敏枚举类3.4 创建自定义序列化类 四、测试4.1 编写测试代码4.2 测试 五、总结 引言 在当今的信息化时代,数据安全尤为重要。接口返回数据脱敏是一种重要的数据保护手段,可以防止敏感信息通过接口返回给客户端,降低数据泄露的风险。本文旨在探讨如何在SpringBoot应用程序中实现接口返回数据脱敏。我们将介绍一种基于自定义注解结合Hutool脱敏工具类的方案,以实现SpringBoot中的接口返回数据脱敏。 一、接口数据脱敏概述 1.1 接口数据脱敏的定义 接口数据脱敏是指在Web应用程序的API接口返回数据时,对包含敏感信息的字段进行处理,使其部分或全部信息被隐藏或替换,以防止敏感信息的泄露。这个过程通常不会改变数据的原始格式,而是通过特定的算法或规则,将敏感部分替换为特定字符(如星号*)或者保留部分信息。 1.2 接口数据脱敏的重要性 数据脱敏的重要性主要体现在以下几个方面: 保护用户隐私: 对于姓名、身份证号、手机号等个人敏感信息进行脱敏,可以有效保护用户隐私,防止信息被滥用。遵守法律法规: 许多国家和地区都制定了严格的数据保护法规,如欧盟的GDPR和中国的《个人信息保护法》。实施数据脱敏有助于企业合规经营。降低安全风险: 通过脱敏处理,即使数据不慎泄露,也能最大限度地减少敏感信息被盗用的风险。支持数据共享: 在保护隐私的同时,脱敏数据仍然保留了一定的分析价值,有利于数据的安全共享和利用。 1.3 接口数据脱敏的实现方式 手动脱敏:在业务逻辑层直接对敏感数据进行处理。这种方式灵活但容易遗漏,且代码重复率高。 AOP(面向切面编程):通过切面拦截返回数据,统一处理敏感字段。这种方式可以集中管理脱敏逻辑,但可能影响性能。 自定义序列化器:利用JSON序列化框架(如Jackson)的自定义序列化器来处理敏感字段。这种方式性能较好,且与业务逻辑解耦。 注解+反射:通过自定义注解标记需要脱敏的字段,然后利用反射机制在运行时进行脱敏处理。这种方式使用简单,易于维护。 本文将重点介绍如何结合自定义注解和Hutool工具类来实现接口数据脱敏。 二、开发环境 JDK版本:JDK 17Spring Boot版本:Spring Boot 3.2.2构建工具:Maven 三、实现接口返回数据脱敏 3.1 添加依赖 首先在 pom.xml 文件中添加必要的依赖: <!-- Hutool工具包 --> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.25</version> </dependency> <!-- Jackson依赖 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.2</version> </dependency> 3.2 创建自定义注解 接下来,我们创建一个自定义注解 @Desensitize: /** * 用于标记字段需要进行脱敏处理的注解 * * @author shijun * @date 2024/07/09 */ @Retention(RetentionPolicy.

【Ty CLI】一个开箱即用的前端脚手架

目录 资源链接基础命令模板创建命令帮助选择模板开始创建开发模板 开发背景npm 发布流程问题记录模板创建超时 更新日志 资源链接 文档:https://ty.cli.vrteam.top/ 源码:https://github.com/bosombaby/ty-cli 基础命令 1. npm 全局安装 npm i ty-cli-market -g 2. 快捷键 ty/ty-cli 3. 帮助命令 ty -h Usage: ty-cli <command> [options] A simple CLI tool for string manipulation Options: -V, --version output the version number -h, --help display help for command Commands: create [options] <project-name> create a new project help [command] display help for command Run ty-cli <command> --help for detailed usage of given command.

HTML 学习指南:从入门到精通

什么是HTML HTML(HyperText Markup Language)是构建网页的框架。掌握HTML不仅能更好的理解网页的结构,还能为进一步学习CSS、JavaScript等前端技术打下坚实的基础。本篇文章将为你规划一条从HTML入门到精通的学习路线,并概述每个阶段的核心内容。 学习路线 1. 基础入门 目标:理解HTML的基本概念,能够编写简单的网页。 HTML简介:了解HTML的历史、作用及在Web开发中的地位。HTML文档结构:学习<!DOCTYPE html>, <html>, <head>, <body>等基本标签及其作用。文本格式化:掌握<h1>到<h6>, <p>, <br>, <strong>, <em>等标签用于文本排版和样式。链接与图片:学习<a>标签创建超链接,<img>标签插入图片。列表:理解无序列表<ul>, 有序列表<ol>及列表项<li>。表格:使用<table>, <tr>, <td>等标签创建表格。表单:掌握<form>, <input>, <textarea>, <button>等表单元素。 2. 进阶应用 目标:能够构建结构复杂、功能丰富的网页。 语义化标签:学习HTML5引入的语义化标签(如<article>, <section>, <header>, <footer>等),提高网页的可读性和SEO。媒体元素:使用<video>和<audio>标签嵌入视频和音频文件。响应式设计:学习使用媒体查询(Media Queries)等技术实现响应式网页设计。 3. 高级技巧与最佳实践 目标:掌握HTML高级技巧,提升网页性能和可维护性。 HTML5新特性:深入学习HTML5带来的新特性,如Web Sockets、离线存储等。Web Accessibility:了解如何使网页对所有用户友好,包括视觉障碍者。SEO优化:学习如何通过HTML结构优化提升网页在搜索引擎中的排名。性能优化:掌握减少HTTP请求、使用CDN、图片优化等技巧提高网页加载速度。模板引擎与框架:了解如何在大型项目中使用模板引擎(如Handlebars, EJS)和前端框架(如React, Vue)与HTML结合开发。 以上本人的学习路线,后期会持续更新相关内容!

MySQL篇五:基本查询

文章目录 前言1. Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更新1.4 替换 2. Retrieve2.1 SELECT 列2.1.1 全列查询2.1.2 指定列查询2.1.3 查询字段为表达式2.1.4 为查询结果指定别名2.1.5 结果去重 2.2 WHERE 条件2.2.1 练习 2.3 结果排序2.3.1 练习 2.4 筛选分页结果 3. Update3.1 练习 4. Delete4.1 练习4.2 截断表 5. 插入查询结果6. 聚合函数6.1 练习 7. group by子句的使用7.1 练习 前言 表的增删改查:CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除)。 1. Create 语法: INSERT [INTO] table_name [(column [, column] ...)] VALUES (value_list) [, (value_list)] ... value_list: value, [, value] ... 样例:

Jenkins安装、配置、部署springboot项目

文章目录 前言 一、环境 二、依赖 JDK安装 jdk下载 配置jdk环境变量 ​编辑 MAVEN安装 maven下载 配置环境变量 maven仓库配置 git安装 安装git 安装jenkins 下载jenkins 启动jenkins 登录jenkins 安装插件 在线安装插件 jenkins离线安装插件(plugin) 配置jenkins 全局工具配置 配置maven 配置settings.xml 配置maven安装 配置JDK 配置git 系统配置 配置Publish over SSH 配置发布代码的服务器 凭证管理 添加gitea登录账号 测试 git拉取代码 本地部署代码 java脚本启动 docker启动 远程服务器部署 总结 前言 本文通过例子,系统性地讲解jenkins的安装、部署和部署springboot项目。内容覆盖docker、gtiea\免登录,编写shell脚本。 一、环境 操作系统:windows 两台服务器:centos7 服务器A:安装jenkins 服务器B:部署代码 二、依赖 服务器A需安装JDK、MAVEN、git,另外还需可以代码版本托管服务器,用来提交代码。 JDK安装 我是下载jenkins官方的war安装。所以必须需预先安装好JDK。 jdk下载 在window系统下,进入官网:Java Downloads | Oracle 中国,下载jdk17linux版 上传安装包到服务器A 安装上传工具: yum install lszrz 上传jdk文件: #创建存放文件的目录 cd /opt mkdir java cd java #上传文件 rz 选择window系统刚下载的jdk包,然后自动上传。

C++:C++入门基础|命名空间|输入输出

欢迎来到Harper·Lee的学习笔记! 博主主页传送门: Harper·Lee的博客主页! 想要一起进步的uu来后台哦! 一、什么是C++? 在此之前,我们所学习的C语言是一种结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了面向对象思想(OOP,即object oriented programming),支持面向对象的程序设计语言应运而生。 1982年,本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。因此: C++是基于C语言而产生的,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。 二、C++的发展史 1979年,贝尔实验室的本贾尼等人试图分析unix内核的时候,试图将内核模块化,于是在C语言的基础上进行扩展,增加了类的机制,完成了一个可以运行的预处理程序,称之为 C with classes。C++的发展主要经历了以下几个阶段: 阶段发展内容C with classes类及派生类、公有和私有成员、类的构造和析构、友元、内联函数、赋值运算符重载等C++1.0添加虚函数概念,函数和运算符重载,引用、常量等C++2.0更加完善支持面向对象,新增保护成员、多重继承、对象的初始化、抽象类、静态成员以及const成员函数C++3.0进一步完善,引入模板,解决多重继承产生的二义性问题和相应构造和析构的处理C++98C++标准第一个版本,绝大多数编译器都支持,得到了国际标准化组织(ISO)和美国标准化协会认可,以模板方式重写C++标准库,引入了STL(标准模板库)C++03C++标准第二个版本,语言特性无大改变,主要:修订错误、减少多异性C++05C++标准委员会发布了一份计数报告(Technical Report,TR1),正式更名C++0x,即:计划在本世纪第一个10年的某个时间发布C++11增加了许多特性,使得C++更像一种新语言,比如:正则表达式、基于范围for循环、auto关键字、新容器、列表初始化、标准线程库等C++14对C++11的扩展,主要是修复C++11中漏洞以及改进,比如:泛型的lambda表达式,auto的返回值类型推导,二进制字面常量等C++17在C++11上做了一些小幅改进,增加了19个新特性,比如:static_assert()的文本信息可选,Fold表达式用于可变的模板,if和switch语句中的初始化器等C++20自C++11以来最大的发行版,引入了许多新的特性,比如:模块(Modules)、协程(Coroutines)、范围(Ranges)、概念(Constraints)等重大特性,还有对已有特性的更新:比如Lambda支持模板、范围for支持初始化等C++23制定ing(中间出现一些小插曲)C++26…… 时间轴如下: 虽然C++技术不断地在发展,但是目前大多数的公司使用的是C++98和C++11标准。 三、C++的就业方向(涉及领域) 根据上图最新的TIOBE调查结果可知,C++、C、python都是比较热门的编程语言,发展前景比较好,因此就业前景相对广阔,一些自然也相对卷一些。在未来我们至少需要学习两门以上的编程语言,因此,不要走马观花的学习,而是要精益求精,实质性的精通掌握一两门语言。这样,上手其他语言时也会比较的得心应手。 注意:排名不能说明哪个语言好,哪个不好,每门编程语言都有适应自己的应用场景。 C++的应用领域比较广阔,主要包括以下几个领域: 软件开发。包括大型系统软件开发,例如编译器、数据库、操作系统、浏览器等,还有小型软件开发,像CAD软件开发、SDK应用开发、军工类软件开发 、数据库开发等。服务器端开发。例如一个美团接单环节:商家是否开业是否接单、上架什么菜品、如何接单、如何分配骑手、对个别不合理的行为如何举报拉黑等。游戏开发。**游戏开发要掌握C++基础和数据结构,学习图形学知识,掌握游戏引擎和框架,了解引擎实现。**比如:魔兽世界、传奇、CS、跑跑卡丁车等。嵌入式和物联网领域。嵌入式把具有计算能力的主控板嵌⼊到机器装置或者电子装置的内部,通过软件能够控制这些装置。大致上,嵌⼊式开发主要分为嵌入式应⽤和嵌入式驱动开发。常见的岗位有:嵌入式开发工程师、驱动开发工程师、系统开发工程师、Linux开发工程师、固件开发工程师等。音视频与图形处理。**数字图像处理中涉及到大量数学矩阵方面的运算,对CPU算力要求比较高,主要的图像处理算法库和开源库等都是C/C++写的;⾳视频开发最主要的技术栈就是C++。**例如OpenCV、OpenGL、Photoshop等。人工智能。人工智能(机器学习)的核心是机器学习、算法,它们大多数都是C++实现的,不仅需要很强的数学能力,同时一般都要求高学历。测试开发/测试。 校招都是公司需要什么技能自己就学习什么技能的,因此要学会包装自己,有方向地调衡自己。 学习C++:![image.png](https://img-blog.csdnimg.cn/img_convert/fb93b6c50bfdc9ae273542c094146ff7.png 四、C++的关键字(C++98) asmdoifreturntrycontinueautodoubleinlineshorttypedefforbooldynamic_castintsignedtypeidpiblicbreakelselongsizeoftypenamethrowcaseenummutablestaticunionwchar_tcatchexplicitnamespacestatic_castunsigneddefaultcharexportnewstructusingfriendclassexternoperatorswitchvirtualregisterconstfalseprivatetemplatevoidtrueconst_castfloatprotectedthisvolatilewhiledeletegotoreinterpret_cast 五、C++的输入与输出 :Input Output Stream的缩写,是标准的输⼊输出流库,定义了标准的输⼊、输出对象。新版本的c++为了区分C语言,没有加入 .h 的后缀。std:是C++官方库内容定义的命名空间。cin(标准输入对象) :console in的缩写,是istream类型的对象,控制台输入,可自动识别类型,包含在头文件中;cout(标准输出对象):console ourt的缩写,是ostream类型的对象,控制台输出,可自动识别类型,包含在头文件中;根据前两条,C++的输入输出可以自动识别变量类型(本质是通过函数重载实现的),不用像C语言中的printf/scanf那样手动控制格式。endl:endline,是一个函数,相当于换行,包含在头文件中;<<:流插⼊运算符,>>:流提取运算符。它们都涉及到运算符重载的相关知识,而且不是只能输入输出在控制台。(C语言用这两个运算符做位运算左移/右移)cout/cin/endl等都属于C++标准库,C++标准库都放在⼀个叫std(standard)的命名空间中,所以要通过命名空间的使用方式去用他们。C语言中可以通过占位符控制浮点数的精度,但是C++比较复杂,可直接使用C语言的方式,C语言和C++相辅相成。这⾥我们没有包含<stdio.h>,也可以使用printf和scanf,在包含间接包含了。vs系列编译器是这样的,其他编译器可能会报错。 #include <iostream> #include <stdlib.h> using namespace std;//全部展开std标准库 int main() { int a = 0; double b = 3.0; char c = 'x'; cout << "Harper·Lee" << endl; //cout:标准输出对象(控制台) // << :流插入运算符;>>:流提取运算符 //endl:end line,相当于换行符 std::cout << a << endl;//因为上面已经展开了,就不需要指定了 cout << a << "

Android Studio Download Gradle 时慢问题解决

1.腾讯gradle 下载:后面拼接版本(gradle-8.0-bin.zip) https://mirrors.cloud.tencent.com/gradle/gradle-8.0-bin.zip 2.Android Studio 配置:setting-->gradle-->Use Gradle from 选择本地文件夹(解压后的bin路径)

前端如何让网页页面完美适配不同大小和分辨率屏幕

推荐使用postcss插件,它会自动将项目所有的px单位统一转换为vw等单位(包括npm安装的第三方组件),从而实现适配,具体配置规则可参考官网或npm网站介绍。 另外对于大屏的适配,需要缩放网页,可使用autojs,参考https://blog.csdn.net/m0_71231013/article/details/131650562 。但它只能放大或缩小页面(适合做大屏项目使用),不能让页面字体、div宽高等自动依据屏幕分辨率适配。 我的vue3项目使用postcss,首先在devDependencies安装了以下包: "postcss": "^8.4.38", "postcss-import": "^16.1.0", "postcss-loader": "^8.1.1", "postcss-px-to-viewport": "^1.1.1", "postcss-px-to-viewport-opt": "^0.0.4", 随后,参考官网和一些参考资料,在项目根目录(和package.json平级)新建配置文件postcss.config.js,内容如下: export default { plugins: { 'autoprefixer': { path: ['./src/*'] }, 'postcss-import': {}, 'postcss-px-to-viewport-opt': { 'viewportWidth': '1707', // 我的视窗宽度 'viewportHeight': '791', // 我的视窗高度 'unitPrecision': 5, // 指定`px`转换为视窗单位值的小数位数(很多时候无法整除) 'viewportUnit': 'vw', // 指定需要转换成的视窗单位,建议使用vw 'selectorBlackList': ['#nprogress'], // 指定不转换为视窗单位的类 'minPixelValue': 3, // 小于或等于`1px`不转换为视窗单位 'mediaQuery': false, // 允许在媒体查询中转换`px` // 'exclude': /(\/|\\)(node_modules)(\/|\\)/, // 可以自定义规则哪些文件不要转换,例如这句让包里的不会转换,但通常无需配置 } } } 最后,如果使用了element-plus的el-message组件,它不能被postcss自动转换,需要自己在项目根目录的index.html的head配置: <head> <meta charset="UTF-8" /> <!

配置管理新纪元:Eureka引领分布式服务配置潮流

配置管理新纪元:Eureka引领分布式服务配置潮流 引言 在微服务架构中,服务配置的管理是一项复杂而关键的任务。随着服务数量的增加,传统的集中式配置管理逐渐显得力不从心。Eureka,作为Netflix开源的服务发现框架,提供了一种分布式配置管理的解决方案。本文将深入探讨如何在Eureka中实现服务的分布式配置管理,包括配置中心的搭建、配置更新机制和配置管理的最佳实践。 分布式配置管理的挑战 配置一致性:确保所有服务实例使用一致的配置。动态更新:支持配置的动态更新,无需重启服务。安全性:保证配置信息的安全性和隔离性。可扩展性:支持大规模服务集群的配置需求。 前提条件 熟悉Eureka服务发现机制。拥有基于Spring Cloud的微服务架构。 步骤一:搭建配置中心 使用Spring Cloud Config搭建配置中心。 添加依赖到配置中心项目。 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> 配置application.yml,指定配置存储的源(如Git仓库)。 spring: cloud: config: server: git: uri: https://github.com/yourname/config-repo 启动配置中心。 @SpringBootApplication @EnableConfigServer public class ConfigServerApplication { public static void main(String[] args) { SpringApplication.run(ConfigServerApplication.class, args); } } 步骤二:服务配置获取 服务从配置中心获取配置。 在服务项目中添加Spring Cloud Config客户端依赖。 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> 配置bootstrap.yml,指定配置中心的地址。 spring: application: name: your-service-name cloud: config: uri: http://localhost:8888 profile: dev 启动服务,自动从配置中心获取配置。 步骤三:动态配置更新 使用Spring Cloud Bus实现配置的动态更新。 添加Spring Cloud Bus和消息中间件(如RabbitMQ)依赖。

【Mongodb-03】亿级数据从mysql迁移到mongodb辛酸历程

亿级数据从mysql迁移到mongodb辛酸历程 一,亿级数据从mysql迁移到mongodb辛酸历程1,核心业务和前期实现2,分库分表考虑3,nosql的选择4,mongodb服务器购买or自己搭建5,数据从mysq迁移到mongodb5.1,数据上报接口5.2,数据拉取5.3,手动同步数据 一,亿级数据从mysql迁移到mongodb辛酸历程 如需转载,请标明出处:https://zhenghuisheng.blog.csdn.net/article/details/140302930 1,核心业务和前期实现 在前面文章中测试了mongodb中单个文档存一亿条数据的性能测试,发现monhodb是完全符合我们业务的,因此需要将mysql中的数据迁移到mongodb中,数据迁移就是时间问题了。在数据迁移时,需要保证的是业务是不能停止的,我这边主要是保存吧用户游戏的数据,游戏一直处于投放状态,因此需要平滑的将用户的数据迁移到mongodb中。 我这边的业务是这样的,就是用户将数据存到mongodb中,比如在用户游戏过关,升级,用户信息,充值修改等等会触发一次数据上报,然后在用户登录或者充值时就会来数据库拉取一次数据,这样能保证游戏用户的数据不会丢失,即使用户将本地数据清理了,数据也能通过服务器找回。 根据上面的需求,为了是整个业务简化,这里大概使用两张模拟表搞定,一张是用户表,一张是用户数据表。 user 用户表的部分核心字段如下,在每个游戏每个用户会有一个唯一的openId,类似于抖音一样,每个用户会有一个唯一的openId,这里为了简化整个流程,后面不用该字段,直接用主键id作为唯一字段使用 CREATE TABLE `user` ( `id` bigint NOT NULL AUTO_INCREMENT, `username` varchar(64) DEFAULT NULL COMMENT '用户名', `avatar` varchar(255) DEFAULT NULL COMMENT '头像', `open_id` varchar(64) DEFAULT NULL COMMENT '用户唯一id', `created_time` datetime DEFAULT NULL COMMENT '创建时间', `updated_time` datetime DEFAULT NULL COMMENT '更新时间', `is_deleted` tinyint DEFAULT NULL COMMENT '是否删除 0:未删除 1:删除 ', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; 另一张表是 **user_data ** 数据表,部分核心字段如下,parentId指的是user表中用户的账户id,并给key字段和parentId字段添加一个唯一索引

apache:the requested operation has failed使用httpd -t

Apache24\bin cmd 回车 httpd -t 因为我重新压缩了,记住,重新压缩要使用原路径, 因为你安装的 时候使用的是原路径 还是不行就改个端口,切记修改配置文件httpd.conf先把Tomcat停了 Define SRVROOT "F:\Apache\Apache24" ServerRoot "${SRVROOT}" Listen 8886 ServerName localhost:8886

记录docker部署好golang web项目后浏览器访问不到的问题

部署好项目,docker ps -a查看没有任何问题 端口映射成功,但是浏览器就是访问不到,排查后发现犯了个错,注意,项目配置文件中的端口: 其实也就是你项目中监听的端口: 必须和容器端口一致: 而和你主机端口无关; 所以在执行docker run的时候一定要注意,如上图,8090:8000,这个8000才是你容器中的端口号,其要与项目中监听端口一致,因为你的项目是在容器上开起来的而不是你的主机; 问题解决,希望以后少犯这种低级错误

Python 文件操作:打开数据处理的大门

在 Python 的学习之旅中,文件操作是一个非常实用且必不可少的技能。不论是数据分析还是日常的数据处理,良好的文件操作技巧都能让你的编程之路更加顺畅。今天,我将带你走进 Python 文件操作的世界,不仅教你如何读写文件,还会分享一些小技巧,让你的代码更加高效、优雅。 1. 打开文件的艺术 在 Python 中,open() 函数是读写文件的入门钥匙。使用这个函数,你可以指定文件名和处理模式。模式有多种,包括: 'r':只读模式'w':写入模式,会覆盖原文件'a':追加模式,写入的数据会被添加到文件末尾'r+':读写模式 file = open('example.txt', 'r') content = file.read() file.close() 记得,每次 open() 之后,close() 都是必须的,以确保文件内容被正确处理。但是,有一种更加优雅的方式来处理文件——使用 with 语句,这样 Python 会在块执行完毕后,自动帮你关闭文件。 with open('example.txt', 'r') as file: content = file.read() 2. 读取文件的技巧 文件不只是一堆文本,了解如何高效地读取文件,可以大幅提升你的代码性能。 read():读取整个文件,如果文件太大,可能会消耗大量内存。readline():读取文件的一行,适用于逐行处理的情况。readlines():一次性读取所有行并返回列表,适合处理不太大的文件。 with open('example.txt', 'r') as file: lines = file.readlines() for line in lines: print(line.strip()) # 使用 strip() 去除每行的换行符 3. 写入文件的艺术 写文件几乎和读文件一样简单。最常用的两个方法是 write() 和 writelines(),这两种方法可以让你轻松将数据写入文件。 data = ['Hello World\n', 'Welcome to Python\n'] with open('output.

用LangGraph、 Ollama,构建个人的 AI Agent

如果你还记得今年的 Google I/O大会,你肯定注意到了他们今年发布的 Astra,一个人工智能体(AI Agent)。事实上,目前最新的 GPT-4o 也是个 AI Agent。 现在各大科技公司正在投入巨额资金来创建人工智能体(AI Agent),他们的研究工作可能会带给我们几十年以来一直追寻的那种实用且可以自由互动的人工智能。包括Sam Altman在内的许多专家都表示,AI Agent 已成为下一个大热门方向。 接下来,我们聊聊什么是 AI Agent,以及如何创建一个基本的人工智能体。我们将会用到LangGraph和Ollama这两个可以简化本地人工智能体构建的强大工具。听我们讲完,你将全面了解如何利用这些技术创建适合你特定需求的高效人工智能体。 什么是人工智能体(AI Agent)? 事实上,AI Agent 的研究还处于早期阶段,该领域还没有明确的定义。但是 Astra 和 GPT-4o 已经可以成为一个很好的早期示例了。NVIDIA 高级研究员、AI Agent 项目负责人 Jim Fan 表示,我们距离出现一个有实体的 AI Agent 或者说以 ChatGPT 作为内核的机器人,还有大约 3 年的时间。如果用他话来解释什么是 AI Agent,简单来说,AI Agent 就是能够在动态世界中自主决策的 AI 模型和算法。 严格意义上讲,人工智能体是感知环境并采取行动以实现特定目标或目的的软件或系统。这些AI Agent可以是简单的算法,也可以是能够进行复杂操作的复杂系统。以下是人工智能体的一些特点: 感知:人工智能体使用传感器或输入机制来感知环境。这可能涉及从摄像头、麦克风或其他传感器等各种来源收集数据。推理:人工智能体接收信息并使用算法和模型来处理和解释数据。这一步包括理解模式、做出预测或产生反应。决策:人工智能体会根据自己的感知和推理来决定行动或产出。这些决策旨在实现其程序或学习过程中确定的特定目标或目的。此外,人工智能体将更多地充当助手,而不是取代人类。行动:人工智能体根据自己的决定执行行动。这可能涉及现实世界中的物理行动(如移动机械臂)或数字环境中的虚拟行动(如在应用程序中进行推荐)。 医疗保健系统是人工智能体落地应用的一个很合适的领域,它可以分析来自不同病人的不同数据,如医疗记录、测试结果和实时监控设备。然后,这些人工智能体利用这些数据可以帮助做出判断和决策,例如预测病人患上某种特定疾病的可能性,或根据病人的病史和当前健康状况推荐个性化的治疗方案。例如,医疗保健领域的人工智能体可以通过分析医学影像数据中的细微信息帮助医生提早诊断疾病,或根据实时生理数据,建议调整药物剂量。 人工智能体不仅提高了医疗诊断的准确性,还能提供个性化的治疗方案,提高整体医疗质量。除了医疗系统以外,还有很多人工智能体适合的场景和行业,比如游戏。 Fan 所在的团队在热门游戏 Minecraft 中开发了一个名为MineDojo的 AI Agent。利用从互联网收集的大量数据,Fan 的 AI Agent 能够学习新技能和新任务,从而自由探索游戏世界,并完成一些复杂的任务,例如用栅栏围住动物或将熔岩倒入桶里。开放世界游戏可能是 AI Agent 步入现实世界的前一站,因为它给了 AI Agent 了解物理、推理和常识的训练场。 一篇普林斯顿大学的论文表示,人工智能代理往往具有三种不同的特征。如果人工智能系统能够在复杂环境中无需指令就能实现比较复杂的目标,那么它们就可以被视为具有“Agent”潜质的。第二个特征是,如果它们能够用自然语言接受指令,并在无人监督的情况下自主行动。最后,“Agent”一词还适用于能够使用工具(比如搜索或编程)或具有规划能力的系统。 人工智能体 AI Agent 还存在哪些局限? 事实上,我们距离拥有一个可以完全自主完成琐事的AI Agent 还差得很远,因为目前的系统总会出现一些偏差,不会总严格地遵循指令行事。例如,负责编码的 AI Agent 可以生成代码,但有时会出错,而且它不知道如何测试它正在创建的代码。所以,如果你去使用这样的 Agent,你仍然需要积极参与编码的过程,而且这还要求你必须具备编码的能力和知识,即你对 AI Agent 的要求一定要在你的“认知”范围内。

深入浅出:Scikit-Learn基础教程

引言 Scikit-Learn(简称sklearn)是Python中一个强大的机器学习库,提供了丰富的工具和模块,帮助我们轻松实现数据预处理、模型训练、评估和预测。本文将通过一个简单的教程,带您快速入门Scikit-Learn,掌握其基本使用方法。 安装Scikit-Learn 在开始使用Scikit-Learn之前,我们需要先安装它。可以通过以下命令进行安装: pip install scikit-learn 安装完成后,我们可以通过导入sklearn来确认安装是否成功: import sklearn print(sklearn.__version__) 数据准备 在机器学习中,数据是非常重要的基础。Scikit-Learn提供了许多常用的数据集,可以帮助我们快速上手。我们将使用鸢尾花(Iris)数据集作为示例。 from sklearn.datasets import load_iris import pandas as pd # 加载鸢尾花数据集 iris = load_iris() # 将数据转换为DataFrame格式 df = pd.DataFrame(data=iris.data, columns=iris.feature_names) df['target'] = iris.target # 查看数据集信息 print(df.head()) 数据预处理 在实际应用中,数据通常需要进行一定的预处理。常见的预处理步骤包括标准化、归一化、缺失值处理等。这里我们以标准化为例。 from sklearn.preprocessing import StandardScaler # 创建StandardScaler对象 scaler = StandardScaler() # 对特征进行标准化 X_scaled = scaler.fit_transform(iris.data) # 查看标准化后的数据 print(X_scaled[:5]) 划分数据集 为了评估模型的性能,我们通常将数据集划分为训练集和测试集。Scikit-Learn提供了方便的方法来完成这一任务。 from sklearn.model_selection import train_test_split # 划分数据集,80%用于训练,20%用于测试 X_train, X_test, y_train, y_test = train_test_split(X_scaled, iris.

《mysql篇》--索引事务

索引 索引的介绍 索引是帮助MySQL高效获取数据的数据结构,是一种特殊的文件,包含着对数据表里所有记录的引用指针,因为索引本身也比较大,所以索引一般是存储在磁盘上的,索引的种类有很多,不过如果没有特殊说明,我们一般认为索引是一个B+树的结构。 索引的作用 优势: 可以提高列检索的效率,降低搜索成本。对提高数据库的性能有很大的作用。通过索引对数据进行,排序也可以大大提高排序效率数据库中的表、数据、索引之间的关系,类似于书架上的图书、书籍内容和书籍目录的关系。 劣势: 会占用磁盘空间有时可能会比较危险,在创建索引时需要对现有的数据,进行大规模的从新整理(调整存储的数据结构),如果当前是一个空表,或者数据不多,创建索引一般没有什么问题,如果这个表本来就很大,此时创建索引就需要对所有数据进行重新调整结构,重新存储,就有可能把服务器给卡住,一般来说,创建索引都是在创建表时就规划好的。 索引的使用 查看索引 show index from 表名; 举例: create table demo( id int primary key, age int, name varchar(20)); show index from demo; 创建索引 create index 索引名字 on 表名(列名); 举例: create index index_id on demo(id); show index from demo; //这里的举例只是为了讲解 删除索引 drop index 索引名 on 表名; drop index index_id on demo; show index from demo; //主键,unique,外键都是会自动生成索引的 索引内部的原理和逻辑 如果没有特殊说明,我们一般认为索引是一个B+树的结构。 二叉搜索树 博主在之前的博客中有详细讲解过二叉搜索树,如果有兴趣可以去看看。 B树 在将B+树之前我们要先了解一些B树,B树又叫多路平衡查找树,他并不是一棵二叉树,而是一棵多叉树,每个结点有M个子节点,M称为B树的阶,

如何判断服务器是否被攻击

如何判断服务器是否被攻击 一、异常流量模式 一种判断服务器是否遭到攻击的方法是监控网络流量。异常的流量模式,例如流量突然剧增或减少,都可能是攻击的迹象。通常,大量的入站流量表明分布式拒绝服务(DDoS)攻击的可能性,因为攻击者会利用多个受控系统同时向目标服务器发送大量请求。 当出现以下情况时,应提高警惕: 网络带宽使用率突然飙升,导致正常服务访问缓慢或不响应。 来自某一特定地区或IP段的流量异常增多。 对无效页面或不存在的服务的请求异常频繁。 二、系统性能下降 服务器性能下降也是被攻击的一个迹象。如果服务器运行缓慢或频繁宕机,且这种情况无法通过常规的系统维护或优化来解释,则可能是系统安全受到威胁。 在系统性能下降时应注意: 正常计算资源如CPU及内存使用率突然高涨,未因正常业务负载增加。 硬盘读写操作频繁,非正常的磁盘I/O性能降低。 重要服务无预警的崩溃或停止响应。 三、未授权的登录和异常进程 对于未经授权的登录尝试及系统中出现的异常进程,应进行认真监测。这些迹象表明攻击者可能已经获得系统的部分控制权或在尝试进一步的入侵。 未授权的登录尝试可能包括: 系统安全日志中记录了大量失败的登录尝试。 来自非预期地理位置的成功登录。 管理员账户在非工作时间的活动记录。 而异常进程则可能表明有恶意软件或木马在系统内活动: 一些未知的、没有合法签名的进程在系统中运行。 已知的进程以异常的用户权限或方式运行。 系统中出现了大量隐秘的网络连接或后门活动。