arm平台常用工具和动态库编译
目录
- perf 交叉编译
- 交叉编译zlib
- 交叉编译 elfutils
- 交叉编译 perf
- perf 使用
- libconfig 交叉编译
- openssl 交叉编译
- libpcap 交叉编译
- 统信、龙芯等平台编译
- QT交叉编译
- 编译QT源码
- 编译QtCreator
- 编译ssl
- 编译libsrtp(2.3.0版本)
- 编译libyuv
- libopus编译
- libopenh264编译
- libusrsctp编译
- libsioclient编译
- 编译gdb
- x264编译
- ffmpeg编译
perf 交叉编译
perf 源码在linux内核源码里面,目录: /linux-4.19.232/tools/perf ,下载对应linux内核源码即可找到perf源码,使用源码交叉编译。
uname -r #查询arm内核版本
4.19.232
官网下载对应版本内核源码
https://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/
https://mirror.bjtu.edu.cn/kernel/linux/kernel/
交叉编译工具链配置参考:
export CXX=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-g++
export CC=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc
export AR=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc-ar
export LD=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-ld
export AS=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-as
export RANLIB=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-ranlib
export ARCH=arm
perf交叉编译
perf基本特性依赖zlib和elfutils,elfutils编译生成的动态库用于符号解析,没有的话perf只能看到热点函数地址。
交叉编译zlib
下载zlib-1.2.3.tar.gz
http://www.zlib.net/
tar xvf zlib-1.2.3.tar.gz
cd zlib-1.2.3/
export CC=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc
mkdir build
./configure --prefix=/home/tom/perf/zlib-1.2.3/build
make -j4
make install
交叉编译 elfutils
下载 elfutils-0.170.tar.bz2
https://www.linuxfromscratch.org/blfs/view/8.1/general/elfutils.html
tar xvf elfutils-0.170.tar.bz2
cd elfutils-0.170/
mkdir build
export CC=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc
export LDFLAGS=-L/home/tom/perf/zlib-1.2.3/build/lib
export CPPFLAGS=-I/home/tom/perf/zlib-1.2.3/build/include
export LIBS=-lz
./configure --host=arm-linux --prefix=/home/tom/perf/elfutils-0.170/build
make
报错解决:
报错: [-Werror=missing-attributes]
查找报错.c文件所在文件夹里的Makefile文件,删除里面的 -Werror ,例如:
$(if $($(*F)_no_Werror),,-Werror) \
# 修改为
$(if $($(*F)_no_Werror),,) \
报错: WARNING: TEXTREL found in ‘libdw.so’
找到对应文件夹里的Makefile文件
textrel_found = $(textrel_msg); exit 1
# 修改为
textrel_found = $(textrel_msg)
make install
生成动态库: libasm.so 、libdw.so、 libelf.so。
将build/lib目录生成的相关动态库拷贝到交叉编译工具链的libc下,将build/include目录下头文件拷贝到交叉编译工具链libc同级的include目录下。
交叉编译 perf
tar xvf linux-4.19.232.tar.gz
cd linux-4.19.232/tools/perf/
vim Makefile
# 文件最前面加入
export CXX=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-g++
export CC=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc
export AR=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc-ar
export LD=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-ld
export AS=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-as
export RANLIB=/home/tom/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-ranlib
# 该命令可能无效
export EXTLIBS =--static -lelf -lebl -L/home/tom/perf/zlib-1.2.3/build/lib -L/home/tom/perf/elfutils-0.170/build/lib
export ARCH=arm
export CROSS_COMPILE=arm-linux-
make
在当前目录生成可执行文件 perf ,拷贝到arm板子上运行, elfutils 编译生成的3个动态库也拷贝过去,使用export设置环境变量。
报错处理:
如果有把告警当成错误的情况,找到Makefile文件里的-Werror并注释掉。
Makefile.config,注释掉 CFLAGS += -Werror 和 CXXFLAGS += -Werror
multiple definition of runtime'; multiple definition of end’;
multiple definition of `start
报错,查看源码发现有两个.c文件(futex-hash.c,futex-lock-pi.c)定义了同名的结构体,把其中一个文件里的名字修改一下即可,比如runtime修改为runtime1.
undefined reference to arm_spe_pmu_default_config undefined reference to arm_spe_recording_init
明明有定义还是报这个错误,不是重要的函数,找到调用的地方注释掉。
arch/arm/tests/regs_load.S:58: Error: operand 1 must be an integer register – mov pc,lr
这个报错涉及到汇编,看不懂不要紧,修改构建文件不编译这个文件。
/linux-4.19.232/tools/perf/arch/arm/tests/Build,注释掉 libperf-y += regs_load.o
/linux-4.19.232/tools/perf/arch/arm64/tests/Build,注释掉 libperf-y += regs_load.o
还会报找不到 perf_regs_load ,在源码里把调用的地方注释掉。
perf看不到函数符号
make时会检测特性: Auto-detecting system features
符号解析由 libelf 功能完成,如果内核检出该功能为off状态,则perf看不到函数符号,只有地址。
上面编译 elfutils 成功后把库文件和头文件拷贝到工具链相应目录,如果检测不到,可能是没有拷贝正确。
内核检测特性是使用test测试文件,查看内核源码perf同级目录的build/feature文件夹,里面有大量测试文件,找到 test-libelf.make.output 文件,这里保存了检测 libelf 功能的日志,根据报错日志排查问题。
perf 使用
# 查看指定进程的热点函数,加选项-g生成热点函数调用栈
./perf top -p 3593
# 生成火焰图
./perf record -F 180 -p 3593 -g -- sleep 120
# 当前目录生成 perf.data 文件
libconfig 交叉编译
cd libconfig-1.7.3/
export CC=/opt/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-gcc
export CXX=/opt/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-g++
export AR=/opt/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-ar
export LD=/opt/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-ld
export AS=/opt/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-as
export RANLIB=/opt/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-ranlib
./configure --host=arm-linux-gnueabi --prefix=/opt/libconfig
make -j
sudo make install
openssl 交叉编译
下载
https://www.openssl.org/source/old/1.0.2/index.html
openssl-1.0.2k.tar.gz
tar xvf openssl-1.0.2k.tar.gz
cd openssl-1.0.2k
mkdir install
sudo ./config no-asm shared no-async --prefix=$(pwd)/install --cross-compile-prefix=/opt/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-
make -j
make install
报错:libncurses.so.5: cannot open shared object file
sudo apt install libncurses5
libpcap 交叉编译
libpcap-1.10.1.tar.gz
tar xvf libpcap-1.10.1.tar.gz
cd libpcap-1.10.1
export CC=/home/tom/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-gcc
export CXX=/home/tom/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-g++
export AR=/home/tom/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-ar
export LD=/home/tom/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-ld
export AS=/home/tom/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-as
export RANLIB=/home/tom/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-ranlib
./configure --host=arm-linux-gnueabi --prefix=/opt/libpcap
报错:configure: error: Neither flex nor lex was found
sudo apt-get install flex
报错:configure: error: Neither bison, byacc, nor yacc was found
sudo apt-get update
sudo apt-get install bison
统信、龙芯等平台编译
QT交叉编译
编译QT源码
下载源码包:https://download.qt.io/archive/qt/
qt-everywhere-src-5.12.8.tar.xz
tar xvf qt-everywhere-src-5.12.8.tar.xz
cd /home/tom/work/src/qt-everywhere-src-5.12.8
#配置
./configure -prefix /home/tom/work/qt5.12.8 \
-confirm-license \
-release \
-opensource \
-v
#编译
make -j4
make install
cd /home/tom/work/qt5.12.8/bin
./qmake --version
编译QtCreator
下载源码包:https://download.qt.io/archive/qtcreator/4.11/4.11.2/
qt-creator-opensource-src-4.11.2.tar.gz
tar xvf qt-creator-opensource-src-4.11.2.tar.gzcd /home/tom/work/src/qt-creator-opensource-src-4.11.2/
export PATH=/home/tom/work/qt5.12.8/bin:$PATH
qmake -version
qmake
make -j4
cd bin
./qtcreator
报错解决
error: alsa/asoundlib.h: No such file or directory #include <alsa/asoundlib.h>
sudo apt-get install libasound2-devcast from ‘QTJSC::JSCell*’ to ‘int32_t’ {aka ‘int’} loses precision [-fpermissive]
qtscript/src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSValue.h
把int32_t改为int64_t就可以了target architecture was not detected as supported by double-conversion
报错的文件为qtbase/src/3rdparty/double-conversion/include/double-conversion/utils.h
在defined(__mips__) ||后添加宏defined(__loongarch__)
编译ssl
git clone https://github.com/openssl/openssl.git
./config --prefix=/home/admin/tom/deplib/openssl/build
make -j4
make install
编译libsrtp(2.3.0版本)
git clone https://github.com/cisco/libsrtp.git
error: cannot guess build type; you must specify one
./configure --build=loongarch64-unknown-linux
make -j4
srtp_create创建失败,不支持部分加密选项,重新编译
./configure --build=loongarch64-unknown-linux --enable-openssl --with-openssl-dir=/home/admin/tom/deplib/openssl/build --prefix=/home/admin/tom/deplib/libsrtp-2.3.0/build
编译libyuv
git clone https://github.com/lemenkov/libyuv.git
cd libyuv/
sudo apt-get install cmake
mkdir arm_libyuv
mkdir build
cd build
cmake ../ -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/home/admin/tom/deplib/libyuv/arm_libyuv
make -j4
make install
libopus编译
http://www.opus-codec.org/
下载:opus-1.4.tar.gz
mkdir build
/configure --build=loongarch64-unknown-linux --prefix=/home/admin/tom/deplib/opus-1.4/build
make -j4
make install
libopenh264编译
git clone https://github.com/cisco/openh264.git
make OS=linux
libusrsctp编译
git clone https://github.com/sctplab/usrsctp.git
./bootstrap
mkdir build
./configure --build=loongarch64-unknown-linux --prefix=/home/admin/tom/deplib/usrsctp/build
make -j4
make install
Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR
apt-get install libssl-dev
libsioclient编译
下载:
https://www.cnblogs.com/kn-zheng/p/17749207.html
https://github.com/socketio/socket.io-client-cpp/releases
socket.io-client-cpp-3.0.0.tar.gz
cd socket.io-client-cpp-3.0.0/lib
https://github.com/chriskohlhoff/asio/tags?after=asio-1-18-2
asio-asio-1-18-1.tar.gz
git clone https://github.com/Tencent/rapidjson.git
git clone https://github.com/zaphoyd/websocketpp.git
https://github.com/catchorg/Catch2/tags?after=v2.13.8
Catch2-2.13.4.tar.gz
cd ..
mkdir build
cd build
cmake ..
make -j4
编译gdb
sudo apt install gdb #如果能直接安装,不需要自己编译
wget http://ftp.gnu.org/gnu/gdb/gdb-12.1.tar.gz
cd gdb-12.1
mkdir build
cd build
../configure --prefix=/usr --target=loongarch64-unknown-linux-gnu
make -j4
sudo make install
WARNING: ‘makeinfo’ is missing on your system
sudo apt-get install texinfo
error: GMP is missing or unusable
sudo apt-get install libgmp-dev
x264编译
mkdir build
./configure --enable-static --enable-shared --prefix=/home/admin/tom/deplib_so/x264-snapshot-20191024-2245-stable/build --enable-pic
configure: error: cannot guess build type; you must specify one
修改config.guess,在mips:Linux:: | mips64:Linux::)前添加
loongarch*:Linux:*:*)echo ${UNAME_MACHINE}-unknown-linux-gnuexit ;;
ffmpeg编译
x264和ffmpeg编译过程参考:Qt+ubuntu+ffmpeg环境搭建,ffmpeg库的编译与调用
./configure --build=loongarch64-unknown-linux --enable-shared --enable-nonfree --enable-gpl --enable-pthreads --enable-libx264 --prefix=/home/admin/tom/ffmpeg_so/ffmpeg-4.0.6/build –extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib相关文章:
arm平台常用工具和动态库编译
目录 perf 交叉编译交叉编译zlib交叉编译 elfutils交叉编译 perfperf 使用 libconfig 交叉编译openssl 交叉编译libpcap 交叉编译统信、龙芯等平台编译QT交叉编译编译QT源码编译QtCreator 编译ssl编译libsrtp(2.3.0版本)编译libyuvlibopus编译libopenh264编译libusrsctp编译lib…...
代码随想录训练营day45|115.不同的子序列,583. 两个字符串的删除操作,72. 编辑距离
115.不同的子序列 题目 dp[i][j]表示的是在以是s[j]为结尾的字符串中最多可以找到几种组成以t[i]为结尾的字符串的方式。 如果s[i]t[j], 1.利用第i个和第j个匹配,在j-1中寻找i-1. 2.不适用这两个进行匹配,在j-1中寻找i 如果s[i]!…...
椋鸟C++笔记#7:标准模板库STL初识
文章目录 标准模板库(Standard Template Library)STL的版本P.J.版RW版SGI版 STL的组成部分 萌新的学习笔记,写错了恳请斧正。 标准模板库(Standard Template Library) 标准模板库STL,是C标准库的一个非常重…...
滴滴嘀嗒,出行行业响起Robotaxi“倒计时”
文:互联网江湖 作者:刘致呈 前几天,各大出行平台的半年报陆续披露完毕,有的还在亏损,但也有人开始盈利。 如祺出行上市后的首份半年报营收10.37亿,同比增长13.6%。上半年运营亏损为2.56亿元,同…...
【MATLAB源码-第264期】基于matlab的跳频通信系统仿真,采用MSK调制方式,差分解调;输出误码率曲线和各节点波形图。
操作环境: MATLAB 2022a 1、算法描述 跳频通信系统是一种能够提高通信抗干扰能力的技术,它通过在传输过程中不断地改变载波频率来避开干扰或者窃听。在这套跳频通信系统中,我们采用了最小频移键控(MSK)作为调制方式…...
如何在多台电脑上同步 VSCode配置和插件
上一篇文章最新前端开发VSCode高效实用插件推荐清单总结了前端开发实用的插件,换电脑的时候怎么同步这些配置与插件呢,难道又要重新安装一遍吗😱 现在就来聊聊要在多台电脑上同步 VSCode配置和插件的几种方法: 方法一࿱…...
深度优先算法,广度优先算法,hill climbing,贪心搜索,A*算法,启发式搜索算法是什么,比起一般搜索法算法有什么区别
深度优先算法(Depth-First Search, DFS) 深度优先搜索是一种用于遍历或搜索树或图的算法。它沿着树的深度遍历树的节点,尽可能深地搜索树的分支。当节点v的所在边都已被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程…...
《python语言程序设计》2018版第8章第14题金融:信用卡号合法性 利用6.29题
一、之前6.29题我做的代码 这是用数字来进行分辨的 is_txt 4383576018402626 #合法def split_the_data_even(vis_n):current_a1 vis_n // 10000a_t1 vis_n % 10000# print("1th", a_t1)a_t2 current_a1 % 10000# print("2th", a_t2)current_a3 curre…...
QT 基础学习
1> 使用绘制事件完成钟表的绘制 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPainter> #include <QDebug> #include <QTime> #include <QTimer> #include <QDateTime> //#include <string> #includ…...
【Gephi】可视化教程
此教程专供欣欣向荣及其舍友使用 文章目录 导入数据上色改变布局设置节点大小统计拓扑结构输出图形保存文件 导入数据 点击【文件】-【导入电子表格】 先选择csv格式的network 直接下一步 点击完成 【图的类型】改为“有向的” 点击确认 会弹出报错,直接clos…...
演化式原型开发-系统架构师(六十五)
1快速迭代式的原型开发能够有效控制成本,()是指开发过程中逐步改进和细化原型直到产生目标系统。 A可视化原型开发 B抛弃式原型开发 C演化式原型开发 D增量式原型开发 解析: 原型开发分为两大类:快速原型开发(抛弃…...
初识爬虫4
1.理解代理ip,正向代理和反向代理 2.代理ip分类,根据匿名度分类:透明,匿名,高匿 3.防止频繁向同一个域名发送请求被封ip,需使用代理ip # -*- coding: utf-8 -*- import requestsurl https://www.baidu.comproxies {…...
Golang | Leetcode Golang题解之第387题字符串中的第一个唯一字符
题目: 题解: type pair struct {ch bytepos int }func firstUniqChar(s string) int {n : len(s)pos : [26]int{}for i : range pos[:] {pos[i] n}q : []pair{}for i : range s {ch : s[i] - aif pos[ch] n {pos[ch] iq append(q, pair{ch, i})} e…...
【CanMV K230 AI视觉】 人体检测
【CanMV K230 AI视觉】 人体检测 人体检测 动态测试效果可以去下面网站自己看。 B站视频链接:已做成合集 抖音链接:已做成合集 人体检测 人体检测是判断摄像头画面中有无出现人体,常用于人体数量检测,人流量监控以及安防监控等。…...
解决浏览器自动将http网址转https
删除浏览器自动使用https的方式 在浏览器地址栏输入:chrome://net-internals/#hsts PS:如果是edge浏览器可输入:edge://net-internals/#hsts 在Delete domain security policies搜索框下,输入要删除的域名,然后点击delete 解决方法&#…...
linux邮件配置
1. 非加密邮件配置 cat <<EOF > smtp.sh #!/bin/bash providerqq account3282941991 passwordzqdtygmmndsgb22i3ee echo "Waiting For A Moment..." rpm -qa sendmail &> /dev/null|| yum install sendmail -y >/dev/null echo " set from$…...
基于springboot+vue乒乓球预约管理系统
基于springbootvuemysql实现的乒乓球预约管理系统(源码数据库部署视频) ### 主要技术 SpringBoot、LayUI、Vue、MySQL ### 系统角色 用户、管理员 ### 系统功能 前台: 首页、乒乓球场、公告信息、留言反馈、个人中心 后台: …...
Linux 基础命令-文件权限与所有权
1. 文件权限概述 在Linux中,每个文件和目录都有与之关联的权限和所有权,来控制谁可以访问、修改或执行文件。文件权限与所有权可以防止未经授权的用户对文件进行访问或修改。 1.1 文件权限的组成 每个文件在Linux系统中都有三种类型的权限:…...
气压测试实验(用IIC)
I2C: 如果没有I2c这类总线,连接方法可能会如下图: 单片机所有的通讯协议,无非是建立在引脚(高低电平的变换高低电平持续的时间)这二者的组合上,i2c 多了一个clock线,负责为数据传输打节拍。 (i2…...
C++ lambda闭包消除类成员变量
原文链接:https://blog.csdn.net/qq_51470638/article/details/142151502 一、背景 在面向对象编程时,常常要添加类成员变量。 然而类成员一旦多了之后,也会带来干扰。 拿到一个类,一看成员变量好几十个,就问你怕不…...
告别插件!保姆级教程:用Nginx反向代理搞定海康威视Web无插件视频预览
海康威视Web无插件视频预览的Nginx反向代理实战指南 引言 在现代安防监控系统集成中,海康威视设备因其稳定性和广泛兼容性成为行业首选。然而,传统Web集成方案往往依赖浏览器插件,这不仅增加了部署复杂度,也带来了安全风险。随着H…...
0基础SEO优化的关键点有哪些
0基础SEO优化的关键点有哪些 在互联网时代,SEO(搜索引擎优化)已经成为了每一个网站运营者必须掌握的一项技能。特别是对于0基础的SEO优化者来说,这是一条充满挑战但也充满机遇的道路。0基础SEO优化的关键点有哪些呢?本…...
Graphormer开源模型部署教程:3.7GB小模型+RTX4090一键启动分子建模服务
Graphormer开源模型部署教程:3.7GB小模型RTX4090一键启动分子建模服务 1. 项目介绍 Graphormer是一种基于纯Transformer架构的图神经网络模型,专门为分子图(原子-键结构)的全局结构建模与属性预测而设计。这个3.7GB的小模型在OG…...
告别图形界面!用DM数据库的dlsql命令行工具,5分钟搞定日常数据库运维
命令行利器dlsql:DM数据库高效运维实战指南 在数据库运维的世界里,图形化界面固然直观,但真正的高手往往更青睐命令行工具带来的高效与灵活。DM数据库的dlsql命令行客户端,就是这样一把被许多DBA私藏的"瑞士军刀"。 1. …...
新手福音:基于预置镜像,在快马平台零配置开启Python Web开发之旅
作为一个刚接触Python Web开发的新手,我最近在InsCode(快马)平台上体验了一把零配置搭建个人博客的过程。不得不说,这种基于预置镜像的开发方式,简直是为我们这些初学者量身定制的福音。下面我就来分享一下这次的学习心得。 为什么选择预置镜…...
springboot+vue基于web的校园电动车短租系统的设计系统
目录同行可拿货,招校园代理 ,本人源头供货商系统功能分析用户管理模块车辆管理模块租赁业务模块安全与风控模块统计与报表模块技术实现要点项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作同行可拿货,招校园代理 ,本人源头供货商…...
实时行情系统设计:从协议选择到高可用架构,再到数据源选型
一、核心问题及解决方案(按踩坑频率排序) 问题 1:误删他人持有锁——最基础也最易犯的漏洞 成因:释放锁时未做身份校验,直接执行 DEL 命令删除键。典型场景:服务 A 持有锁后,业务逻辑耗时超过锁…...
seo公司招聘的实习机会有哪些
SEO公司招聘的实习机会有哪些? 在当今数字化时代,SEO(搜索引擎优化)已经成为企业在网络上获得高流量和高曝光度的关键手段。随着越来越多的企业意识到SEO的重要性,SEO公司也在不断扩展,吸引大量优秀的实习…...
【独家首发】基于eBPF+Java Agent+Istio Telemetry V2的零侵入式调试框架(已落地金融级生产环境,QPS>50K场景验证)
第一章:零侵入式调试框架的演进逻辑与金融级落地价值传统调试方式依赖代码埋点、日志增强或代理注入,不仅增加系统耦合度,更在高敏感、强一致性的金融核心系统中引入不可控风险。零侵入式调试框架应运而生——它不修改业务字节码、不依赖特定…...
DanKoe 视频笔记:个人成长:如何变得更加“不同意”(创造一个现实扭曲场)
在本节课中,我们将学习如何通过有意识地坚持自我、明确目标并有效沟通,来构建一个强大的“现实扭曲场”,从而更坚定地追求自己想要的生活,而非被动地迎合他人。 我们常常被教导要友善、随和,避免冲突。然而,…...
