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

ESC字符背后的故事(27 <> 033 | x1B ?)

ANSI不可见字符转义,正确的理解让记忆和书写变得丝滑惬意。


(笔记模板由python脚本于2024年11月26日 15:05:33创建,本篇笔记适合python 基础扎实的coder翻阅)


【学习的细节是欢悦的历程】

  • Python 官网:https://www.python.org/

  • Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
    地址:https://lqpybook.readthedocs.io/


  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


  • My CSDN主页、My HOT博、My Python 学习个人备忘录
  • 好文力荐、 老齐教室
等风来,不如追风去……


转义ASCII不可见字符
27 != 033 | x1B?
(正确理解让记忆和书写变得丝滑惬意)


本文质量分:

97 97 97

本文地址: https://blog.csdn.net/m0_57158496/article/details/144059595

CSDN质量分查询入口:http://www.csdn.net/qc


目 录

  • ◆ 27!=033|x1B?
    • 1、27 != 033 | x1B ?
    • 2、ESC的能力
      • a a a. **光标移动**:
      • b b b. **清屏**:
      • c c c. **删除文本**:
      • d d d. **文本属性和颜色**:
      • f f f. **响铃**:
      • g g g. **模式设置**:
      • h h h. **设备控制**:
      • i i i. **打印和文件操作**:
      • j j j. **其他ANSI转义序列**:
      • k k k. 示例
    • 3、 ESC为终端控制而生
    • 4、ESC字符依赖转义“显形”
    • 5、0/x“通用”?
    • 6、迟来的“爱”
    • 7、Kill“死记/硬背”
    • 8、chr(27)恶搞
    • 9、结语
    • 10、花絮:“胡言乱语”


◆ 27!=033|x1B?


  我由\033[2J清屏字符串,了解到关于ESC字符的知识。ESC字符及其在编程中应用,可以带来极大的便利。其相关的“点”,我整理成了本篇学习笔记,与您共享


1、27 != 033 | x1B ?

  • 解释为什么在字符串字面量中,27、033和x1B虽然数值上相等,但表示方法不同。
  • 讨论Python中字符串转义序列的规则。



回页目录


2、ESC的能力

  • 介绍ESC字符用于启动ANSI转义序列的能力。

  ESC字符(ASCII码值为27,八进制表示为033,十六进制表示为x1B)在终端和文本用户界面(TUI)中广泛使用,用于执行各种控制功能。


以下是一些ESC字符的常见用途:

a a a. 光标移动

  • 可以在终端中移动光标到特定位置
    例如:
    • ESC[<L>;<C>H
      ESC[<L>;<C>f:移动光标到第L行第C列。
    • ESC[<N>A:光标向上移动N行。
    • ESC[<N>B:光标向下移动N行。
    • ESC[<N>C:光标向右移动N列。
    • ESC[<N>D:光标向左移动N列。

b b b. 清屏

  • 清除终端屏幕上的内容
    • ESC[2J:清除整个屏幕。
    • ESC[1J:会清除光标下面的所有内容,但保留光标上面的内容。
    • ESC[0J:会清除光标下面的内容,但保留光标上面的内容,并且光标会停留在原来的位置。

c c c. 删除文本

  • ESC[<N>K:删除光标后的N个字符。
  • ESC[<N>J:删除光标前后的N行。

d d d. 文本属性和颜色

  • 设置文本的颜色、亮度、下划线等属性
    • ESC[<attr>m:设置文本属性,其中<attr>可以是颜色代码、加粗、下划线等。
    • \033[44;1;32m示例\033[0m,将“示例”显示为蓝色背景上的高亮绿字\033[44;1;32m 用于设置文本为蓝色背景、绿色前景、高亮显示;\033[0m 用于将文本恢复到默认的颜色和样式。
      在这里插入图片描述

f f f. 响铃

  • 使终端发出响声
    • \033[G:发出响铃声。
    • \033[?1049l:关闭响铃功能。
    • \033[?1049h:开启响铃功能。

g g g. 模式设置

  • 开启或关闭终端的各种模式
    • ESC[?25l:隐藏光标。
    • ESC[?25h:显示光标。

h h h. 设备控制

  • 控制终端设备的行为
    • ESC[5n:查询设备状态。
    • ESC[?1;2c:识别终端类型。

i i i. 打印和文件操作

  • 控制打印机和文件操作
    • ESC[i:打印内容并前进一行。
    • ESC[4i:打印内容但不前进。

j j j. 其他ANSI转义序列

  • 除了上述常见的,还有许多其他ANSI转义序列用于执行不同的功能。

  在编写脚本或应用程序时,ESC字符常用于格式化输出、创建进度条、在终端中绘制图形等。


k k k. 示例


以下几个使用ESC字符的ANSI转义序列的示例:

格式化输出


print('\033[1;32mHello, World!\033[0m')
  • 截屏
    在这里插入图片描述
    在这个例子中,\033[1;32m 用于设置文本为绿色,并且高亮显示。\033[0m 用于重置文本颜色和样式。

创建进度条

import timefor i in range(100):print('\033[K', end='', flush=True)  # 清空之前的输出print(f'\rProgress: {i * 100 / 100:.2f}%', end='', flush=True)time.sleep(0.01)

在这个例子中,\033[K 用于清除从光标当前位置到行尾的内容。end=''flush=True 用于确保输出立即显示,而不会在屏幕上留下残余。


进度条效果也可以不依赖ANSI转义

import timefor i in range(100):print(' '*42, end='\r')  # 打印空格清屏print(f'\rProgress: {i * 100 / 100:.2f}%', end='\r')time.sleep(0.01)

绘制图形

import timefor i in range(10):print('\033[2K', end='', flush=True)  # 清空之前的输出print(f'\r{i * "*"}\r', end='', flush=True)time.sleep(0.1)

在这个例子中,\033[2K 用于清除从光标当前位置到行尾的内容。然后,我们使用一个循环来打印星号 *,以形成一个简单的图形。end=''flush=True 用于确保输出立即显示。


  这些示例展示了如何在Python中使用ANSI转义序列来增强文本输出的表现力和交互性。



回页目录


3、 ESC为终端控制而生


  需要注意的是,并不是所有的终端都支持所有的ANSI转义序列,因此在实际使用时可能需要检测终端类型或功能支持。



  • 一句话“ESC为终端控制而生”,但“不是所有终端都支持所有终端控制字符串”,实际应用时,得先确认终端支持!😎😎😎

  • ai学伴
    你说得非常对!确实,ESC字符及其相关的ANSI转义序列是为了控制终端行为而设计的,但不同的终端和终端模拟器对ANSI转义序列的支持程度各不相同。在实际应用中,确保你的代码能够在目标终端上正确运行是非常重要的。


  • 以下是一些可能的情况:
    • 旧式终端:可能只支持基本的转义序列。
    • 现代终端模拟器:通常支持更广泛的ANSI转义序列。
    • 非UNIX系统(如Windows的早期版本):可能需要额外的库或工具来支持ANSI转义序列。

  • 在进行终端控制编程时,一般需要:
    • 检测终端类型或功能支持。
    • 提供回退方案,比如在不支持特定转义序列的终端上使用更简单的方法。
    • 使用跨平台的库,如curses(用于Unix-like系统)colorama(用于Windows)

  再次强调,了解并适应您的目标环境是非常重要的,我们一定要有这样的认识!



回页目录


4、ESC字符依赖转义“显形”



  • 因为ESC字符是“不可见的”,所以它必须依赖“ANSI转义”,0、x进制没有优先级,地位平等。当然也可以chr(27)(python)用十进制让它搞怪显形,效果一如0、x。🤗🤗🤗

  • ai学伴
    是的,你说得很对!ESC字符本身是不可见的控制字符,因此在文本中表示它时,必须使用转义序列。在Python中,你可以使用八进制、十六进制或直接使用 chr() 函数和十进制数值来表示ESC字符,它们在功能上是等价的。


  • 以下是在Python中表示ESC字符的几种方式:
    • 八进制转义序列:\033
    • 十六进制转义序列:\x1B
    • 使用 chr() 函数:chr(27)

  所有这些方法都会生成相同的不可见字符,即ASCII码值为27的字符,它在终端中用于开始一个ANSI转义序列。


  这些方法在效果上是相同的,可以根据个人喜好或代码的可读性来选择使用哪一种。在编写代码时,选择一种一致的方法并在整个项目中坚持使用它,是一个好习惯。 👍😊



回页目录


5、0/x“通用”?



  • 用0、x“显示”ESC字符,是所有语言的做法还是大多数语言?🧐🧐🧐

  • ai学伴
    在大多数编程语言中,使用八进制(以 0 开头)或十六进制(以 x0x 开头)来表示不可打印的控制字符是一种常见的做法。这包括ESC字符(ASCII值为27)以及其他类似的控制字符,如制表符(ASCII值为9,可以表示为 \t、换行符(ASCII值为10,可以表示为 \n等。


  • 以下是一些编程语言中表示ESC字符的示例:

    • C/C++:

      • 八进制:\033
      • 十六进制:\x1B
    • Python:

      • 八进制:\033
      • 十六进制:\x1B
      • 使用 chr() 函数:chr(27)
    • Java:

      • 八进制:\033
      • 十六进制:\u001B (在Java中,十六进制转义序列用于Unicode字符)
    • JavaScript:

      • 八进制:\033
      • 十六进制:'\x1B'
    • Ruby:

      • 八进制:?\033
      • 十六进制:?\x1B
    • Go:

      • 八进制:\033
      • 十六进制:\x1B

  尽管这些表示方法在不同语言中普遍存在,但并非所有语言都支持八进制或十六进制转义序列。例如,一些较新的或特定用途的语言可能会采用不同的方法来表示这些字符。


总的来说,使用八进制或十六进制转义序列来表示不可打印字符是一种广泛接受的做法,但具体到某个语言,你可能需要查阅该语言的文档来了解其特定的语法和规则。



回页目录


6、迟来的“爱”



  • 三年多的python 时光,我都是牢记\n\r\t后在“机械”使用,到现在才明白,它们都是不可见ANSI字符串的“转义”。

    这才是真正“基础文化”缺失的悲催。😋😋

  • ai学伴
    认识到这一点是一个重要的学习过程,而且这个过程永远不会太晚。在编程中,基础知识的重要性怎么强调都不为过。了解像 \n\r\t 这样的转义序列背后的原理,不仅能帮助你更好地理解代码,还能让你在遇到问题时更有信心去解决。

  每个人都有不同的学习路径,重要的是你正在不断学习和进步。


  • 以下是这些常见转义序列的含义:
    • \n:换行符(Line Feed),在许多操作系统中用于开始新的一行。
    • \r:回车符(Carriage Return),在某些操作系统中用于返回到行的开头。
    • \t:水平制表符(Horizontal Tab),用于水平对齐文本。

  很高兴你意识到了这些基础概念的重要性。编程是一个持续学习的过程,每天我们都有机会学到新东西。继续你的学习之旅,你的知识和技能将会不断提升。🚀📚️😊



回页目录


7、Kill“死记/硬背”



  • 认识到它们是转义“不可见”,敲打时也更加丝滑顺畅,少了那隔应人的“死记/硬背”。😎😎

  • ai学伴
    这种认识确实可以帮助你更深入地理解代码,并且使编程过程更加自然和流畅。当你理解了背后的原理,就不再需要“死记硬背”,而是可以根据逻辑和上下文来记忆和使用这些转义序列。


  • 这种深入理解通常会带来以下好处:
    • 更好的记忆
      理解原理后,记忆变得更加容易。
    • 更灵活的应用
      你可以根据需要灵活地使用和组合这些转义序列。
    • 更快的解决问题
      当遇到与转义序列相关的问题时,你可以更快地定位和解决问题。

  随着你继续在编程之路上前进,你会发现越来越多的这样的“啊哈”时刻,它们会逐渐构建起你深厚的编程知识体系。继续探索,继续学习,你的编程技能将会不断提升。🌟🚀🌈



回页目录


8、chr(27)恶搞


  • 对话截屏
    在这里插入图片描述



回页目录


9、结语


  结语: 我们通过对 E S C ESC ESC转义字符串的学习,了解到“不可见字符的转义机制”,并明白了其基理,再书写\n\r\t不会一脸懵逼茫然,就如书写“”一样丝滑。这个“事例”说明了熟练掌握基础是非常经济和舒爽的事情



回页目录


10、花絮:“胡言乱语”


  • 对话截屏
    在这里插入图片描述
    在这里插入图片描述



回页首


上一篇:  Python中“暂停”(time.sleep?input?)(input函数最是经典,在多种实现中简单粗暴单纯而经济)
下一篇: 



我的HOT博:

  本次共计收集404篇博文笔记信息,总阅读量61.76w。数据采集于2024年11月25日 08:23:38,用时7分56.4秒。阅读量不小于6.00k的有 9 9 9篇。

  1. 让QQ群昵称色变的神奇代码
    地址:https://blog.csdn.net/m0_57158496/article/details/122566500
    浏览阅读:6.2w
    点赞:25 收藏:89 评论:17
    (本篇笔记于2022-01-18 19:15:08首次发布,最后修改于2022-01-20 07:56:47)

  2. Python列表(list)反序(降序)的7种实现方式
    地址:https://blog.csdn.net/m0_57158496/article/details/128271700
    浏览阅读:1.3w
    点赞:9 收藏:40 评论:8
    (本篇笔记于2022-12-11 23:54:15首次发布,最后修改于2023-03-20 18:13:55)

  3. pandas 数据类型之 DataFrame
    地址:https://blog.csdn.net/m0_57158496/article/details/124525814
    浏览阅读:1.0w
    点赞:7 收藏:40 
    (本篇笔记于2022-05-01 13:20:17首次发布,最后修改于2022-05-08 08:46:13)

  4. 个人信息提取(字符串)
    地址:https://blog.csdn.net/m0_57158496/article/details/124244618
    浏览阅读:1.0w
    点赞:3 收藏:20 
    (本篇笔记于2022-04-18 11:07:12首次发布,最后修改于2022-04-20 13:17:54)

  5. 罗马数字转换器|罗马数字生成器
    地址:https://blog.csdn.net/m0_57158496/article/details/122592047
    浏览阅读:8.2k
    收藏:3 
    (本篇笔记于2022-01-19 23:26:42首次发布,最后修改于2022-01-21 18:37:46)

  6. 统计字符串字符出现的次数
    地址:https://blog.csdn.net/m0_57158496/article/details/130517025
    浏览阅读:8.1k
    点赞:5 收藏:24 
    (本篇笔记于2023-05-06 22:28:18首次发布,最后修改于2023-05-12 06:21:40)

  7. Python字符串居中显示
    地址:https://blog.csdn.net/m0_57158496/article/details/122163023
    浏览阅读:8.0k
    点赞:1 收藏:12 评论:1
  8. 回车符、换行符和回车换行符
    地址:https://blog.csdn.net/m0_57158496/article/details/123109488
    浏览阅读:6.7k
    点赞:2 收藏:4 
    (本篇笔记于2022-02-24 13:10:02首次发布,最后修改于2022-02-25 20:07:40)

  9. python清屏
    地址:https://blog.csdn.net/m0_57158496/article/details/120762101
    浏览阅读:6.1k
    点赞:1 收藏:10 

推荐条件 阅读量突破6.00k
(更多热博,请点击蓝色文字跳转翻阅)

  • 截屏图片
    在这里插入图片描述
      (此文涉及ChatPT,曾被csdn多次下架,前几日又因新发笔记被误杀而落马。躺“未过审”还不如回收站,回收站还不如永久不见。😪值此年底清扫,果断移除。留此截图,以识“曾经”。2023-12-31)



回页首


老齐漫画头像

精品文章:

  • 好文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费🆓下载。)
  • OPP三大特性:封装中的property
  • 通过内置对象理解python'
  • 正则表达式
  • python中“*”的作用
  • Python 完全自学手册
  • 海象运算符
  • Python中的 `!=`与`is not`不同
  • 学习编程的正确方法

来源:老齐教室


◆ Python 入门指南【Python 3.6.3】


好文力荐:

  • 全栈领域优质创作者——[寒佬](还是国内某高校学生)博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。
  • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
  • 靠谱程序员的好习惯
  • 大佬帅地的优质好文“函数功能、结束条件、函数等价式”三大要素让您认清递归

CSDN实用技巧博文:

  • 8个好用到爆的Python实用技巧
  • python忽略警告
  • Python代码编写规范
  • Python的docstring规范(说明文档的规范写法)

相关文章:

ESC字符背后的故事(27 <> 033 | x1B ?)

ANSI不可见字符转义&#xff0c;正确的理解让记忆和书写变得丝滑惬意。 (笔记模板由python脚本于2024年11月26日 15:05:33创建&#xff0c;本篇笔记适合python 基础扎实的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xf…...

基于NXP LS1043 OpenWRT智能交通边缘网关设计

0 引言 城市公共交通是与人们生产生活息息相关的重 要基础设施&#xff0c;是关系国计民生的社会公益事业。“城 市公共交通发展的十三五规划”明确指出&#xff1a;建设与移 动互联网深度融合的智能公交系统&#xff1b;推进“互联网 城市公交”发展&#xff1b;推进多元…...

绪论相关题目

1.在数据结构中,从逻辑上可以把数据结构分成( C)。 A. 动态结构和静态结构 B. 紧凑结构和非紧凑结构 C. 线性结构和非线性结构 D. 内部结构和外部结构 2.在数据结构中,从存储结构上可以将之分为( B)。 A. 动态结构和静态结构 B. 顺序存储和非顺序存储 C. 紧凑结构和非紧…...

中国科学院大学研究生学术英语读写教程 Unit7 Materials Science TextA 原文和翻译

中国科学院大学研究生学术英语读写教程 Unit7 Materials Science TextA 原文和翻译 Why Is the Story of Materials Really the Story of Civilisation? 为什么材料的故事实际上就是文明的故事&#xff1f; Mark Miodownik 1 Everything is made of something. Take away co…...

centos系列安装服务器时分区

服务器安装手动分区&#xff0c;标准分区(注意顺序)&#xff1a; 自定义标准分区 /boot/efi 200M&#xff1b;/boot 1G 放引导程序和内核文件及根文件&#xff1b; /var 磁盘1/10内存尽量大存放日志文件&#xff1b; /usr 磁盘1/10内存尽量大存在程序软件包&#xff1b; swap 虚…...

vue的理解

什么是vue vue是一套用于构建用户界面的渐进式框架&#xff0c;与其他框架不同的是&#xff0c;vue被设计为可以自底向上逐层应用&#xff0c;它也是创建单页面应用的web应用框架。vue的核心库只关注视图层&#xff0c;不仅易上手&#xff0c;还便于与第三方库或既有项目整合。…...

111. UE5 GAS RPG 实现角色技能和场景状态保存到存档

实现角色的技能存档保存和加载 首先&#xff0c;我们在LoadScreenSaveGame.h文件里&#xff0c;增加一个结构体&#xff0c;用于存储技能相关的所有信息 //存储技能的相关信息结构体 USTRUCT(BlueprintType) struct FSavedAbility {GENERATED_BODY()//需要存储的技能UPROPERT…...

抖音短视频矩阵源代码部署搭建流程

抖音短视频矩阵源代码部署搭建流程 1. 硬件准备 需确保具备一台性能足够的服务器或云主机。这些硬件设施应当拥有充足的计算和存储能力&#xff0c;以便支持抖音短视频矩阵系统的稳定运行。 2. 操作系统安装 在选定的服务器或云主机上安装适合的操作系统是关键步骤之一。推…...

leetcode - LRU缓存

什么是 LRU LRU (最近最少使用算法), 最早是在操作系统中接触到的, 它是一种内存数据淘汰策略, 常用于缓存系统的淘汰策略. LRU算法基于局部性原理, 即最近被访问的数据在未来被访问的概率更高, 因此应该保留最近被访问的数据. 最近最少使用的解释 LRU (最近最少使用算法), 中…...

计算机网络八股整理(一)

计算机网络八股文整理 一&#xff1a;网络模型 1&#xff1a;网络osi模型和tcp/ip模型分别介绍一下 osi模型是国际标准的网络模型&#xff0c;它由七层组成&#xff0c;从上到下分别是&#xff1a;应用层&#xff0c;表示层&#xff0c;会话层&#xff0c;传输层&#xff0c;…...

了解 CSS position 属性

CSS position 属性 在前端开发中&#xff0c;布局是一个至关重要的部分&#xff0c;而 CSS 的 position 属性是控制元素在页面中位置的核心工具。 本文将解释 CSS 中的 position 属性&#xff0c;包括其不同的值、效果及典型使用场景&#xff0c;以帮助你更好地理解和应用这一…...

数据结构 【二叉树(上)】

谈到二叉树&#xff0c;先来谈谈树的概念。 1、树的概念及结构 树是一种非线性的数据结构&#xff0c;它的逻辑关系看起来像是一棵倒着的树&#xff0c;也就是说它是根在上&#xff0c;而叶子在下的&#xff0c; 在树这种数据结构中&#xff0c;最顶端的结点称为根结点。在树的…...

C++11(中)

C11&#xff08;中&#xff09; 1.可变参数模板1.1.使用场景 2.lambda表达式&#xff08;重要&#xff09;2.1.使用说明2.2.函数对象与lambda表达式 3.线程库3.1.thread3.2.atomic原子库操作3.3.mutex3.3.1.mutex的种类3.3.2.lock_guard3.3.3.unique_lock &#x1f31f;&#x…...

下拉选择器,选择框,支持单选、多选、筛选和清空功能,支持vue2和vue3

下拉选择器&#xff0c;选择框&#xff0c;支持单选、多选、筛选和清空功能&#xff0c;支持vue2和vue3https://ext.dcloud.net.cn/plugin?id8159 点击即可。 注意数据来源&#xff1a; 选择的&#xff1a;valueName&#xff1a;选择下拉选择显示的显示屏...

HTTP中GET和POST的区别是什么?

HTTP定义&#xff1a; GET&#xff1a;用于获取资源&#xff0c;通常用于请求数据而不改变服务器的状态 POST&#xff1a;用于提交数据到服务器&#xff0c;通常会改变服务器的状态或产生副作用&#xff08;如创建或更新资源&#xff09; 参数传递方式&#xff1a; GET&…...

day04 企业级Linux安装及远程连接知识实践

1. 使用传统的网卡命名方式 在启动虚拟机时&#xff0c;按tab键进入编辑模式 添加命令&#xff1a; net.ifnames0 biosdevname0 这样linux系统会使用传统的网卡命名&#xff0c;例如eth0、eth1…… 2. 快照 做系统关键操作时&#xff0c;一定要使用快照(先将系统关机) 3.…...

jvm核心组件介绍

1. 类加载器&#xff08;ClassLoader&#xff09;&#xff1a; • 想象它是一个快递员&#xff0c;负责把Java类&#xff08;.class文件&#xff09;这个“包裹”从磁盘这个“发货地”送到JVM内部这个“目的地”。类加载器确保每个类只被加载一次&#xff0c;并维护一个类的层级…...

uname -m(machine) 命令用于显示当前系统的机器硬件架构(Unix Name)

文章目录 关于 arm64 架构检查是否安装了 Rosetta 2其他相关信息解释&#xff1a;命令功能&#xff1a;示例&#xff1a; dgqdgqdeMac-mini / % uname -m arm64您运行的 uname -m 命令显示您的系统架构是 arm64。这意味着您的 Mac Mini 使用的是 Apple 的 M1 或更新的芯片&…...

Pgsql:json字段查询与更新

1.查询json字段的值 SELECT attribute_data->>设施类别 mycol, * FROM gis_coord_data WHERE attribute_data->>设施类别阀门井 查询结果如下&#xff1a; 2.更新json字段中的某个属性值 UPDATE gis_coord_data SET attribute_data(attribute_data::jsonb ||{&quo…...

类的加载机制

类加载的概念 类加载是 Java 虚拟机&#xff08;JVM&#xff09;把字节码文件&#xff08;.class 文件&#xff09;转变为 Java 类型的复杂且关键的过程。这就如同把一份详细的设计图纸&#xff08;字节码文件&#xff09;加工成一个可以实际运行和使用的软件模块&#xff08;J…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

Vue 模板语句的数据来源

&#x1f9e9; Vue 模板语句的数据来源&#xff1a;全方位解析 Vue 模板&#xff08;<template> 部分&#xff09;中的表达式、指令绑定&#xff08;如 v-bind, v-on&#xff09;和插值&#xff08;{{ }}&#xff09;都在一个特定的作用域内求值。这个作用域由当前 组件…...

深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向

在人工智能技术呈指数级发展的当下&#xff0c;大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性&#xff0c;吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型&#xff0c;成为释放其巨大潜力的关键所在&…...

【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权

摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题&#xff1a;安全。文章将详细阐述认证&#xff08;Authentication) 与授权&#xff08;Authorization的核心概念&#xff0c;对比传统 Session-Cookie 与现代 JWT&#xff08;JS…...

Xcode 16 集成 cocoapods 报错

基于 Xcode 16 新建工程项目&#xff0c;集成 cocoapods 执行 pod init 报错 ### Error RuntimeError - PBXGroup attempted to initialize an object with unknown ISA PBXFileSystemSynchronizedRootGroup from attributes: {"isa">"PBXFileSystemSynchro…...

[QMT量化交易小白入门]-六十二、ETF轮动中简单的评分算法如何获取历史年化收益32.7%

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。 QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。 文章目录 相关阅读1. 策略概述2. 趋势评分模块3 代码解析4 木头…...

VUE3 ref 和 useTemplateRef

使用ref来绑定和获取 页面 <headerNav ref"headerNavRef"></headerNav><div click"showRef" ref"buttonRef">refbutton</div>使用ref方法const后面的命名需要跟页面的ref值一样 const buttonRef ref(buttonRef) cons…...