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

oceanbase的日志量太大,撑爆磁盘,修改下日志级别

oceanbase的日志量太大,撑爆磁盘,修改下日志级别:

[admin@lnpg ~]$ obclient -h127.0.0.1 -uroot -P2881 -plinux123
Welcome to the OceanBase.  Commands end with ; or \g.
Your OceanBase connection id is 3221561020
Server version: OceanBase 3.2.4.1 (r101000052023010822-346aa35c32e99d1b82d713f75f0072c45bdf7aab) (Built Jan  8 2023 22:52:43)

Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

obclient [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| oceanbase          |
| information_schema |
| mysql              |
| SYS                |
| LBACSYS            |
| ORAAUDITOR         |
| test               |
+--------------------+
7 rows in set (0.081 sec)

obclient [(none)]> use oceanbase;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
obclient [oceanbase]> ALTER SYSTEM SET syslog_level=OFF;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'OFF' at line 1
obclient [oceanbase]> SHOW PARAMETERS LIKE '%syslog_level%';
+-------+----------+-----------------+----------+---------------------+-----------+-------+----------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
| zone  | svr_type | svr_ip          | svr_port | name                | data_type | value | info                                                                                                                                   | section  | scope   | source  | edit_level        |
+-------+----------+-----------------+----------+---------------------+-----------+-------+----------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
| zone1 | observer | 192.168.207.143 |     2882 | ob_esi_syslog_level | NULL      | WDIAG | specifies the current level of logging for obesi. There are DEBUG, TRACE, WDIAG, EDIAG, INFO, WARN, ERROR, seven different log levels. | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE |
| zone1 | observer | 192.168.207.143 |     2882 | syslog_level        | NULL      | WDIAG | specifies the current level of logging. There are DEBUG, TRACE, WDIAG, EDIAG, INFO, WARN, ERROR, seven different log levels.           | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE |
+-------+----------+-----------------+----------+---------------------+-----------+-------+----------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
2 rows in set (0.013 sec)

obclient [oceanbase]> ALTER SYSTEM SET syslog_level='sql.*:error, common.*:error';
Query OK, 0 rows affected (0.027 sec)

obclient [oceanbase]> ALTER SYSTEM SET ob_esi_syslog_level='sql.*:error, common.*:error';
Query OK, 0 rows affected (0.028 sec)

obclient [oceanbase]> SHOW PARAMETERS LIKE '%syslog_level%';
+-------+----------+-----------------+----------+---------------------+-----------+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
| zone  | svr_type | svr_ip          | svr_port | name                | data_type | value                       | info                                                                                                                                   | section  | scope   | source  | edit_level        |
+-------+----------+-----------------+----------+---------------------+-----------+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
| zone1 | observer | 192.168.207.143 |     2882 | ob_esi_syslog_level | NULL      | sql.*:error, common.*:error | specifies the current level of logging for obesi. There are DEBUG, TRACE, WDIAG, EDIAG, INFO, WARN, ERROR, seven different log levels. | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE |
| zone1 | observer | 192.168.207.143 |     2882 | syslog_level        | NULL      | sql.*:error, common.*:error | specifies the current level of logging. There are DEBUG, TRACE, WDIAG, EDIAG, INFO, WARN, ERROR, seven different log levels.           | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE |
+-------+----------+-----------------+----------+---------------------+-----------+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
2 rows in set (0.002 sec)

[admin@lnpg log]$ pwd
/home/admin/oceanbase/log
[admin@lnpg log]$ ls -lt
total 362364
-rw-r--r-- 1 admin admin  41844056 Oct 14 14:46 observer.log
-rw-r--r-- 1 admin admin  33424227 Oct 14 14:46 rootservice.log
-rw-r--r-- 1 admin admin   1506607 Oct 14 14:46 obesi-daemon.log
-rw-r--r-- 1 admin admin     21754 Oct 14 14:46 election.log
-rw-r--r-- 1 admin admin       295 Oct 14 14:42 observer.log.wf
-rw-r--r-- 1 admin admin 268462084 Oct 14 14:42 observer.log.20241014144215329

上述修改还是打印出了很多INFO信息 

需要这样改才有效:

obclient [(none)]> ALTER SYSTEM SET syslog_level='ERROR';
Query OK, 0 rows affected (0.026 sec)

obclient [(none)]> ALTER SYSTEM SET ob_esi_syslog_level='ERROR';
Query OK, 0 rows affected (0.025 sec)

obclient [(none)]> SHOW PARAMETERS LIKE '%syslog_level%';
+-------+----------+-----------------+----------+---------------------+-----------+-------+----------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
| zone  | svr_type | svr_ip          | svr_port | name                | data_type | value | info                                                                                                                                   | section  | scope   | source  | edit_level        |
+-------+----------+-----------------+----------+---------------------+-----------+-------+----------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
| zone1 | observer | 192.168.207.143 |     2882 | ob_esi_syslog_level | NULL      | ERROR | specifies the current level of logging for obesi. There are DEBUG, TRACE, WDIAG, EDIAG, INFO, WARN, ERROR, seven different log levels. | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE |
| zone1 | observer | 192.168.207.143 |     2882 | syslog_level        | NULL      | ERROR | specifies the current level of logging. There are DEBUG, TRACE, WDIAG, EDIAG, INFO, WARN, ERROR, seven different log levels.           | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE |
+-------+----------+-----------------+----------+---------------------+-----------+-------+----------------------------------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+
2 rows in set (0.002 sec)

停止observer服务:

[admin@lnpg log]$ pgrep observer
32239
[admin@lnpg log]$ kill -9 `pgrep observer`


[admin@lnpg log]$ obclient -h127.0.0.1 -uroot -P2881 -plinux123
ERROR 2002 (HY000): Can't connect to MySQL server on '127.0.0.1' (115)
[admin@lnpg log]$ /home/admin/oceanbase/bin/observer
/home/admin/oceanbase/bin/observer
[admin@lnpg log]$ 
[admin@lnpg log]$ obclient -h127.0.0.1 -uroot -P2881 -plinux123
ERROR 2002 (HY000): Can't connect to MySQL server on '127.0.0.1' (115)
[admin@lnpg log]$ obclient -h127.0.0.1 -uroot -P2881 -plinux123
ERROR 2002 (HY000): Can't connect to MySQL server on '127.0.0.1' (115)
[admin@lnpg log]$ obclient -h127.0.0.1 -uroot -P2881 -plinux123
ERROR 2002 (HY000): Can't connect to MySQL server on '127.0.0.1' (115)
[admin@lnpg log]$ pgrep observer
[admin@lnpg log]$ pgrep observer
[admin@lnpg log]$ pgrep observer
[admin@lnpg log]$ obclient -h127.0.0.1 -uroot -P2881 -plinux123
ERROR 2002 (HY000): Can't connect to MySQL server on '127.0.0.1' (115)
[admin@lnpg log]$ ps -ef|grep observer
admin    15555 10446  0 14:48 pts/2    00:00:00 grep --color=auto observer

必须这种方式启动,不能用绝对路径:
[admin@lnpg log]$ cd /home/admin/oceanbase/
[admin@lnpg oceanbase]$ ./bin/observer

./bin/observer
[admin@lnpg oceanbase]$ ps -ef|grep observer
admin    15609     1 99 14:48 ?        00:00:04 ./bin/observer
admin    16597 10446  0 14:48 pts/2    00:00:00 grep --color=auto observer
[admin@lnpg oceanbase]$ obclient -h127.0.0.1 -uroot -P2881 -plinux123
ERROR 1045 (42000): Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: YES)
[admin@lnpg oceanbase]$ obclient -h127.0.0.1 -uroot -P2881 -plinux123
ERROR 1045 (42000): Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: YES)
[admin@lnpg oceanbase]$ ps -ef|grep observer
admin    15609     1 99 14:48 ?        00:00:36 ./bin/observer
admin    16695 10446  0 14:48 pts/2    00:00:00 grep --color=auto observer
[admin@lnpg oceanbase]$ ps -ef|grep observer
admin    15609     1 99 14:48 ?        00:01:10 ./bin/observer
admin    16896 10446  0 14:48 pts/2    00:00:00 grep --color=auto observer
[admin@lnpg oceanbase]$ pgrep observer
15609
[admin@lnpg oceanbase]$ ps -ef|grep 15609
admin    15609     1 99 14:48 ?        00:01:58 ./bin/observer
admin    15672 15609  1 14:48 ?        00:00:00 /home/admin/oceanbase/bin/obesi -d -p 2882 -c 10001
admin    16909 10446  0 14:49 pts/2    00:00:00 grep --color=auto 15609
[admin@lnpg oceanbase]$ netstat -tunlp|grep 288
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 0.0.0.0:2881            0.0.0.0:*               LISTEN      15609/./bin/observe 
tcp        0      0 0.0.0.0:2882            0.0.0.0:*               LISTEN      15609/./bin/observe 
[admin@lnpg oceanbase]$ obclient -h127.0.0.1 -uroot -P2881 -plinux123
ERROR 1045 (42000): Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: YES)
[admin@lnpg oceanbase]$ obclient -h127.0.0.1 -uroot -P2881 -plinux123
ERROR 1045 (42000): Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: YES)
[admin@lnpg oceanbase]$ pwd
/home/admin/oceanbase
[admin@lnpg oceanbase]$ cd log/
[admin@lnpg log]$ ls -lt|head
total 1140008
-rw-r--r-- 1 admin admin 198392336 Oct 14 14:49 observer.log
-rw-r--r-- 1 admin admin  58051631 Oct 14 14:49 rootservice.log
-rw-r--r-- 1 admin admin   1066049 Oct 14 14:49 election.log
-rw-r--r-- 1 admin admin   1632648 Oct 14 14:49 obesi-daemon.log
-rw-r--r-- 1 admin admin       295 Oct 14 14:48 observer.log.wf
-rw-r--r-- 1 admin admin 268465971 Oct 14 14:48 observer.log.20241014144855728
-rw-r--r-- 1 admin admin       586 Oct 14 14:48 observer.log.wf.20241014144855728
drwxrwxr-x 2 admin admin         6 Oct 14 14:47 run
drwxrwxr-x 2 admin admin        50 Oct 14 14:47 audit
[admin@lnpg log]$ date
Mon Oct 14 14:50:02 CST 2024
[admin@lnpg log]$ tail -f observer.log

[admin@lnpg log]$ obclient -h127.0.0.1 -uroot -P2881 -plinux123
Welcome to the OceanBase.  Commands end with ; or \g.
Your OceanBase connection id is 3221487644
Server version: OceanBase 3.2.4.1 (r101000052023010822-346aa35c32e99d1b82d713f75f0072c45bdf7aab) (Built Jan  8 2023 22:52:43)

Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

obclient [(none)]> exit
Bye
[admin@lnpg log]$ 

[admin@lnpg oceanbase]$ find ./ -name *config*
./etc/observer.config.bin.history
./etc/observer.config.bin
[admin@lnpg oceanbase]$ more ./etc/observer.config.bin
_enable_oracle_priv_check=True
major_compact_trigger=100
all_server_list=192.168.207.143:2882
__min_full_resource_pool_memory=268435456
min_observer_version=3.2.4.1
syslog_level=sql.*:error, common.*:error
cluster_id=10001
cluster=obdemo
rootservice_list=192.168.207.143:2882:2881
_partition_balance_strategy=standard
enable_one_phase_commit=False
system_memory=1G
memory_limit=20G
zone=zone1
devname=ens192
mysql_port=2881
rpc_port=2882
config_additional_dir=/db/ob/admin/1/obdemo/etc3;/db/ob/admin/log1/obdemo/etc2
datafile_size=10G
data_dir=/home/admin/oceanbase/store/obdemo

 
 
   [admin@lnpg oceanbase]$ pwd
/home/admin/oceanbase

相关文章:

oceanbase的日志量太大,撑爆磁盘,修改下日志级别

oceanbase的日志量太大,撑爆磁盘,修改下日志级别: [adminlnpg ~]$ obclient -h127.0.0.1 -uroot -P2881 -plinux123 Welcome to the OceanBase. Commands end with ; or \g. Your OceanBase connection id is 3221561020 Server version: O…...

【C++11】lambda表达式

前言: 随着 C11 的发布,C 标准引入了许多新特性,使语言更加现代化,开发者编写的代码也变得更加简洁和易于维护。Lambda 表达式是其中一个重要的特性,它提供了一种方便的方式来定义匿名函数,这在函数式编程范…...

前端学习-css的背景(十六)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 背景颜色 语法格式 背景图片 语法格式 背景平铺 语法格式 背景图片位置 语法格式 参数代表的意思 参数是方位名词 参数是精确单位 参数是混合单位 背…...

使用Postman搞定各种接口token实战

现在许多项目都使用jwt来实现用户登录和数据权限,校验过用户的用户名和密码后,会向用户响应一段经过加密的token,在这段token中可能储存了数据权限等,在后期的访问中,需要携带这段token,后台解析这段token才…...

ssh连接慢的问题或远程连接服务超时

问题原因: 在SSH登录过程中,服务器会通过反向DNS查找客户端的主机名,然后与登录的IP地址进行匹配,以验证登录的合法性。如果客户端的IP没有域名或DNS服务器响应缓慢,这可能导致SSH登录过慢。为了解决这个问题&#xf…...

基于卷积神经网络的蔬菜识别系统,resnet50,mobilenet模型【pytorch框架+python源码】

更多目标检测和图像分类识别项目可看我主页其他文章 功能演示: 基于卷积神经网络的蔬菜识别系统,resnet50,mobilenet【pytorch框架,python,tkinter】_哔哩哔哩_bilibili (一)简介 基于卷积神…...

数据结构与算法:栈与队列的高级应用

目录 3.1 栈的高级用法 3.2 队列的深度应用 3.3 栈与队列的综合应用 总结 数据结构与算法:栈与队列的高级应用 栈和队列是两种重要的线性数据结构,它们在计算机科学和工程的许多领域都有广泛的应用。从函数调用到表达式求值,再到任务调度…...

macos php开发环境之macport安装的php扩展安装,php常用扩展安装,port中可用的所有php扩展列表

macos中,我们使用了port 安装了php后,默认只带有php基本的核心扩展的, 如果需要使用其他的扩展,如 redis, https, xdebug等扩展就需要我们手动来安装对应的扩展。 macos php开发环境 macport安装的php的方法见macos 中…...

使用Pytorch+Numpy+Matplotlib实现手写字体分类和图像显示

文章目录 1.引用2.内置图片数据集加载3.处理为batch类型4.设置运行设备5.查看数据6.绘图查看数据图片(1)不显示图片标签(2)打印图片标签(3)图片显示标签 7.定义卷积函数8.卷积实例化、损失函数、优化器9.训练和测试损失、正确率(1)训练(2)测试(3)循环(4)损失和正确率曲线(5)输出…...

kimi帮我解决ubuntu下软链接文件夹权限不够的问题

我的操作如下 ubuntuubuntu-QiTianM420-N000:~$ ln -s /media/ubuntu/4701aea3-f883-40a9-b12f-61e832117414 code ubuntuubuntu-QiTianM420-N000:~$ ls -l 总用量 636 drwxrwxr-x 2 ubuntu ubuntu 4096 5月 7 17:16 bin drwxrwxrwx 2 ubuntu ubuntu 4096 5月 8 13…...

如何去除背景音乐保留人声?保留人声,消除杂音

在日常生活和工作中,我们经常遇到需要处理音频的情况,尤其是当我们想要去除背景音乐,仅保留人声时。这种需求在处理电影片段、制作音乐MV、或者提取演讲内容等场景中尤为常见。本文将为您详细介绍如何去除背景音乐并保留人声,帮助…...

2.4.ReactOS系统提升IRQL级别KfRaiseIrql 函数

2.4.ReactOS系统提升IRQL级别KfRaiseIrql 函数 2.4.ReactOS系统提升IRQL级别KfRaiseIrql 函数 文章目录 2.4.ReactOS系统提升IRQL级别KfRaiseIrql 函数KfRaiseIrql 函数 KfRaiseIrql 函数 /*********************************************************************** NAME …...

【新书】使用 OpenAI API 构建 AI 应用:利用 ChatGPT等构建 10 个 AI 项目(第二版),404页pdf

通过构建 ChatGPT 克隆、代码错误修复器、测验生成器、翻译应用、自动回复邮件生成器、PowerPoint 生成器等项目,提升您的应用开发技能。 关键特性 通过掌握 ChatGPT 概念(包括微调和集成),转变为 AI 开发专家 通过涵盖广泛 AI …...

修改PostgreSQL表中的字段排列顺序

二、通过修改系统表(pg_attribute)达到字段重新排序的目的有关系统表的概述及用途可以查看官网:http://www.pgsqldb.org/pgsqldoc-cvs/catalogs.html 表名字表用途pg_class表,索引,序列,视图(”关系”)pg_…...

canvas实现手写功能

1.从接口获取手写内容&#xff0c;处理成由单个字组成的数组&#xff08;包括符号&#xff09; 2.合成所有图的时候&#xff0c;会闪现outputCanvas合成的图&#xff0c;注意隐藏 3.可以进行多个手写内容切换 4.基于uniapp的 <template><view class"content&quo…...

Python知识点:基于Python技术,如何使用TensorFlow进行目标检测

开篇&#xff0c;先说一个好消息&#xff0c;截止到2025年1月1日前&#xff0c;翻到文末找到我&#xff0c;赠送定制版的开题报告和任务书&#xff0c;先到先得&#xff01;过期不候&#xff01; 使用TensorFlow进行目标检测的完整指南 目标检测是计算机视觉领域中的一项重要任…...

初始爬虫13(js逆向)

为了解决网页端的动态加载&#xff0c;加密设置等&#xff0c;所以需要js逆向操作。 JavaScript逆向可以分为三大部分&#xff1a;寻找入口&#xff0c;调试分析和模拟执行。 1.chrome在爬虫中的作用 1.1preserve log的使用 默认情况下&#xff0c;页面发生跳转之后&#xf…...

前端发送了请求头的参数,经debug发现后端请求对象请求头中没有该参数

debug测试&#xff0c;发现前端发来请求头中确实没有找到添加的请求头参数&#xff0c;但是 Network 中却显示请求头中有该参数信息。 原因是RequestHeaders中设置的请求参数含有下划线&#xff0c;NGINX将静默地丢弃带有下划线的HTTP标头&#xff0c;这样做是为了防止在将头映…...

雷池社区版如何使用静态资源的方式建立站点

介绍&#xff1a; SafeLine&#xff0c;中文名 “雷池”&#xff0c;是一款简单好用, 效果突出的 Web 应用防火墙(WAF)&#xff0c;可以保护 Web 服务不受黑客攻击。 雷池通过过滤和监控 Web 应用与互联网之间的 HTTP 流量来保护 Web 服务。可以保护 Web 服务免受 SQL 注入、X…...

车载电源OBC+DC/DC

文章目录 1. 车载DC/DC应用场景2. PFC2.1 简介2.2 专业名词2.3 常见拓扑结构2.3.1 传统桥式PFC2.3.2 普通无桥型PFC2.3.3 双Boost无桥PFC2.3.4 图腾柱PFC2.3.5 参考资料 2.4 功率因数2.4.1 简介2.4.2 计算 3. DC/DC3.1 Boost升压电路3.1.1 简介3.1.2 电路框图3.1.3 工作原理3.1…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发&#xff0c;其初衷是为了满足他自己的一个项目需求&#xff0c;即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源&#xff0c;Redis凭借其简单易用、…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...

react-pdf(pdfjs-dist)如何兼容老浏览器(chrome 49)

之前都是使用react-pdf来渲染pdf文件&#xff0c;这次有个需求是要兼容xp环境&#xff0c;xp上chrome最高支持到49&#xff0c;虽然说iframe或者embed都可以实现预览pdf&#xff0c;但为了后续的定制化需求&#xff0c;还是需要使用js库来渲染。 chrome 49测试环境 能用的测试…...

Spring是如何实现无代理对象的循环依赖

无代理对象的循环依赖 什么是循环依赖解决方案实现方式测试验证 引入代理对象的影响创建代理对象问题分析 源码见&#xff1a;mini-spring 什么是循环依赖 循环依赖是指在对象创建过程中&#xff0c;两个或多个对象相互依赖&#xff0c;导致创建过程陷入死循环。以下通过一个简…...