BCC源码下载

接前一篇文章:BCC介绍

1. GitHub地址

上一篇文章中已提到,BCC的github地址是:https://github.com/iovisor/bcc。

页面如下所示:

2. 源码下载

打开终端,创建好要存放BCC源码的目录,进入此目录。
然后,在终端下输入以下命令进行BCC源码下载:

git clone https://github.com/iovisor/bcc.git

实际命令及过程如下所示:

~/eBPF/BCC$ git clone https://github.com/iovisor/bcc.git
正克隆到 'bcc'...
remote: Enumerating objects: 28172, done.
remote: Counting objects: 100% (4480/4480), done.
remote: Compressing objects: 100% (565/565), done.
remote: Total 28172 (delta 4035), reused 3938 (delta 3914), pack-reused 23692
接收对象中: 100% (28172/28172), 19.11 MiB | 137.00 KiB/s, 完成.
处理 delta 中: 100% (18732/18732), 完成.

3. 查看源码结构

~/eBPF/BCC/bcc$ tree
.
├── cmake
│   ├── bump_version.cmake
│   ├── clang_libs.cmake
│   ├── CmakeUninstall.cmake.in
│   ├── FindCompilerFlag.cmake
│   ├── FindKernelHeaders.cmake
│   ├── FindLibBpf.cmake
│   ├── FindLibDebuginfod.cmake
│   ├── FindLibElf.cmake
│   ├── FindLibLzma.cmake
│   ├── FindLuaJIT.cmake
│   ├── GetGitRevisionDescription.cmake
│   ├── GetGitRevisionDescription.cmake.in
│   ├── static_libstdc++.cmake
│   └── version.cmake
├── CMakeLists.txt
├── CODEOWNERS
├── CONTRIBUTING-SCRIPTS.md
├── debian
│   ├── bcc-lua.install
│   ├── bcc-tools.install
│   ├── changelog
│   ├── compat
│   ├── control
│   ├── copyright
│   ├── docs
│   ├── libbcc-examples.install
│   ├── libbcc.install
│   ├── python3-bcc.install
│   ├── python-bcc.install
│   ├── rules
│   └── source
│       └── format
├── docker
│   ├── build
│   │   ├── Dockerfile.fedora
│   │   └── Dockerfile.ubuntu
│   ├── Dockerfile.debian
│   └── Dockerfile.ubuntu
├── docs
│   ├── kernel_config.md
│   ├── kernel-versions.md
│   ├── reference_guide.md
│   ├── special_filtering.md
│   ├── tutorial_bcc_python_developer.md
│   └── tutorial.md
├── examples
│   ├── cgroupid
│   │   ├── cgroupid.c
│   │   ├── Dockerfile
│   │   └── Makefile
│   ├── CMakeLists.txt
│   ├── cpp
│   │   ├── CGroupTest.cc
│   │   ├── CMakeLists.txt
│   │   ├── CPUDistribution.cc
│   │   ├── FollyRequestContextSwitch.cc
│   │   ├── HelloWorld.cc
│   │   ├── KFuncExample.cc
│   │   ├── KModRetExample.cc
│   │   ├── LLCStat.cc
│   │   ├── pyperf
│   │   │   ├── CMakeLists.txt
│   │   │   ├── Py36Offsets.cc
│   │   │   ├── PyPerfBPFProgram.cc
│   │   │   ├── PyPerf.cc
│   │   │   ├── PyPerfDefaultPrinter.cc
│   │   │   ├── PyPerfDefaultPrinter.h
│   │   │   ├── PyPerfLoggingHelper.cc
│   │   │   ├── PyPerfLoggingHelper.h
│   │   │   ├── PyPerfSampleProcessor.h
│   │   │   ├── PyPerfType.h
│   │   │   ├── PyPerfUtil.cc
│   │   │   └── PyPerfUtil.h
│   │   ├── RandomRead.cc
│   │   ├── RecordMySQLQuery.cc
│   │   ├── SkLocalStorageIterator.cc
│   │   ├── TaskIterator.cc
│   │   ├── TCPSendStack.cc
│   │   └── UseExternalMap.cc
│   ├── hello_world.py
│   ├── local_storage
│   │   ├── inode_storage.py
│   │   └── task_storage.py
│   ├── lua
│   │   ├── bashreadline.c
│   │   ├── bashreadline.lua
│   │   ├── CMakeLists.txt
│   │   ├── kprobe-latency.lua
│   │   ├── kprobe-write.lua
│   │   ├── memleak.lua
│   │   ├── offcputime.lua
│   │   ├── sock-parse-dns.lua
│   │   ├── sock-parse-http.lua
│   │   ├── sock-protolen.lua
│   │   ├── sock-proto.lua
│   │   ├── strlen_count.lua
│   │   ├── task_switch.lua
│   │   ├── tracepoint-offcputime.lua
│   │   ├── uprobe-readline.lua
│   │   ├── uprobe-readline-perf.lua
│   │   ├── uprobe-tailkt.lua
│   │   └── usdt_ruby.lua
│   ├── networking
│   │   ├── CMakeLists.txt
│   │   ├── distributed_bridge
│   │   │   ├── CMakeLists.txt
│   │   │   ├── main.py
│   │   │   ├── simulation.py -> ../simulation.py
│   │   │   ├── tunnel.c
│   │   │   ├── tunnel_mesh.c
│   │   │   ├── tunnel_mesh.py
│   │   │   └── tunnel.py
│   │   ├── dns_matching
│   │   │   ├── dns_matching.c
│   │   │   └── dns_matching.py
│   │   ├── http_filter
│   │   │   ├── CMakeLists.txt
│   │   │   ├── http-parse-complete.c
│   │   │   ├── http-parse-complete.py
│   │   │   ├── http-parse-simple.c
│   │   │   ├── http-parse-simple.py
│   │   │   └── README.md
│   │   ├── neighbor_sharing
│   │   │   ├── CMakeLists.txt
│   │   │   ├── README.txt
│   │   │   ├── simulation.py -> ../simulation.py
│   │   │   ├── tc_neighbor_sharing.c
│   │   │   └── tc_neighbor_sharing.py
│   │   ├── net_monitor.py
│   │   ├── simple_tc.py
│   │   ├── simulation.py
│   │   ├── sockmap.py
│   │   ├── tc_perf_event.py
│   │   ├── tcp_mon_block
│   │   │   ├── README.md
│   │   │   ├── screenshots
│   │   │   │   ├── 1.JPG
│   │   │   │   └── 2.JPG
│   │   │   └── src
│   │   │       ├── allow_list.json
│   │   │       ├── http_client.py
│   │   │       ├── tcp_mon_block.c
│   │   │       ├── tcp_mon_block.py
│   │   │       └── web_server.py
│   │   ├── tunnel_monitor
│   │   │   ├── chord.png
│   │   │   ├── CMakeLists.txt
│   │   │   ├── main.py
│   │   │   ├── monitor.c
│   │   │   ├── monitor.py
│   │   │   ├── README.md
│   │   │   ├── setup.sh
│   │   │   ├── simulation.py -> ../simulation.py
│   │   │   ├── traffic.sh
│   │   │   └── vxlan.jpg
│   │   ├── vlan_filter
│   │   │   ├── data-plane-tracing.c
│   │   │   ├── data-plane-tracing.py
│   │   │   ├── README.md
│   │   │   ├── scenario.jpg
│   │   │   ├── test_setup.sh
│   │   │   └── test_traffic.sh
│   │   ├── vlan_learning
│   │   │   ├── CMakeLists.txt
│   │   │   ├── README.txt
│   │   │   ├── simulation.py -> ../simulation.py
│   │   │   ├── vlan_learning.c
│   │   │   └── vlan_learning.py
│   │   └── xdp
│   │       ├── CMakeLists.txt
│   │       ├── xdp_drop_count.py
│   │       ├── xdp_macswap_count.py
│   │       ├── xdp_redirect_cpu.py
│   │       └── xdp_redirect_map.py
│   ├── perf
│   │   └── ipc.py
│   ├── ringbuf
│   │   ├── ringbuf_output.py
│   │   └── ringbuf_submit.py
│   ├── tracing
│   │   ├── biolatpcts_example.txt
│   │   ├── biolatpcts.py
│   │   ├── bitehist_example.txt
│   │   ├── bitehist.py
│   │   ├── CMakeLists.txt
│   │   ├── dddos_example.txt
│   │   ├── dddos.py
│   │   ├── disksnoop_example.txt
│   │   ├── disksnoop.py
│   │   ├── hello_fields.py
│   │   ├── hello_perf_output.py
│   │   ├── hello_perf_output_using_ns.py
│   │   ├── kvm_hypercall.py
│   │   ├── kvm_hypercall.txt
│   │   ├── mallocstacks.py
│   │   ├── mysqld_query_example.txt
│   │   ├── mysqld_query.py
│   │   ├── nflatency.py
│   │   ├── nodejs_http_server_example.txt
│   │   ├── nodejs_http_server.py
│   │   ├── stack_buildid_example.py
│   │   ├── stacksnoop_example.txt
│   │   ├── stacksnoop.py
│   │   ├── strlen_count.py
│   │   ├── strlen_hist_ifunc.py
│   │   ├── strlen_hist.py
│   │   ├── strlen_snoop.py
│   │   ├── sync_timing.py
│   │   ├── task_switch.c
│   │   ├── task_switch.py
│   │   ├── tcpv4connect_example.txt
│   │   ├── tcpv4connect.py
│   │   ├── trace_fields.py
│   │   ├── trace_perf_output.py
│   │   ├── undump_example.txt
│   │   ├── undump.py
│   │   ├── urandomread_example.txt
│   │   ├── urandomread-explicit.py
│   │   ├── urandomread.py
│   │   ├── vfsreadlat.c
│   │   ├── vfsreadlat_example.txt
│   │   └── vfsreadlat.py
│   └── usdt_sample
│       ├── CMakeLists.txt
│       ├── scripts
│       │   ├── bpf_text_shared.c
│       │   ├── lat_avg.py
│       │   ├── lat_dist.py
│       │   └── latency.py
│       ├── usdt_sample_app1
│       │   ├── CMakeLists.txt
│       │   └── main.cpp
│       ├── usdt_sample_lib1
│       │   ├── CMakeLists.txt
│       │   ├── include
│       │   │   └── usdt_sample_lib1
│       │   │       └── lib1.h
│       │   └── src
│       │       ├── lib1.cpp
│       │       ├── lib1_sdt.d
│       │       └── lib1_sdt.h
│       ├── usdt_sample.md
│       └── usdt_sample.sh
├── FAQ.txt
├── images
│   ├── bcc_tracing_tools_2016.png
│   ├── bcc_tracing_tools_2017.png
│   ├── bcc_tracing_tools_2019.png
│   ├── logo1.png
│   ├── logo1.svg
│   ├── logo2.png
│   └── logo2.svg
├── INSTALL.md
├── introspection
│   ├── bps.c
│   ├── bps_example.txt
│   └── CMakeLists.txt
├── libbpf-tools
│   ├── arm64
│   │   ├── vmlinux_608.h
│   │   └── vmlinux.h -> vmlinux_608.h
│   ├── bashreadline.bpf.c
│   ├── bashreadline.c
│   ├── bashreadline.h
│   ├── bindsnoop.bpf.c
│   ├── bindsnoop.c
│   ├── bindsnoop.h
│   ├── biolatency.bpf.c
│   ├── biolatency.c
│   ├── biolatency.h
│   ├── biopattern.bpf.c
│   ├── biopattern.c
│   ├── biopattern.h
│   ├── biosnoop.bpf.c
│   ├── biosnoop.c
│   ├── biosnoop.h
│   ├── biostacks.bpf.c
│   ├── biostacks.c
│   ├── biostacks.h
│   ├── biotop.bpf.c
│   ├── biotop.c
│   ├── biotop.h
│   ├── bitesize.bpf.c
│   ├── bitesize.c
│   ├── bitesize.h
│   ├── bits.bpf.h
│   ├── blazesym
│   ├── blk_types.h
│   ├── bpftool
│   ├── btf_helpers.c
│   ├── btf_helpers.h
│   ├── cachestat.bpf.c
│   ├── cachestat.c
│   ├── capable.bpf.c
│   ├── capable.c
│   ├── capable.h
│   ├── compat.bpf.h
│   ├── compat.c
│   ├── compat.h
│   ├── core_fixes.bpf.h
│   ├── cpudist.bpf.c
│   ├── cpudist.c
│   ├── cpudist.h
│   ├── cpufreq.bpf.c
│   ├── cpufreq.c
│   ├── cpufreq.h
│   ├── drsnoop.bpf.c
│   ├── drsnoop.c
│   ├── drsnoop_example.txt
│   ├── drsnoop.h
│   ├── errno_helpers.c
│   ├── errno_helpers.h
│   ├── execsnoop.bpf.c
│   ├── execsnoop.c
│   ├── execsnoop.h
│   ├── exitsnoop.bpf.c
│   ├── exitsnoop.c
│   ├── exitsnoop.h
│   ├── filelife.bpf.c
│   ├── filelife.c
│   ├── filelife.h
│   ├── filetop.bpf.c
│   ├── filetop.c
│   ├── filetop.h
│   ├── fsdist.bpf.c
│   ├── fsdist.c
│   ├── fsdist.h
│   ├── fsslower.bpf.c
│   ├── fsslower.c
│   ├── fsslower.h
│   ├── funclatency.bpf.c
│   ├── funclatency.c
│   ├── funclatency.h
│   ├── gethostlatency.bpf.c
│   ├── gethostlatency.c
│   ├── gethostlatency.h
│   ├── hardirqs.bpf.c
│   ├── hardirqs.c
│   ├── hardirqs.h
│   ├── javagc.bpf.c
│   ├── javagc.c
│   ├── javagc.h
│   ├── kernel.config
│   ├── klockstat.bpf.c
│   ├── klockstat.c
│   ├── klockstat.h
│   ├── ksnoop.bpf.c
│   ├── ksnoop.c
│   ├── ksnoop.h
│   ├── llcstat.bpf.c
│   ├── llcstat.c
│   ├── llcstat.h
│   ├── loongarch
│   │   ├── vmlinux_602.h
│   │   └── vmlinux.h -> vmlinux_602.h
│   ├── Makefile
│   ├── Makefile.btfgen
│   ├── map_helpers.c
│   ├── map_helpers.h
│   ├── maps.bpf.h
│   ├── mdflush.bpf.c
│   ├── mdflush.c
│   ├── mdflush.h
│   ├── memleak.bpf.c
│   ├── memleak.c
│   ├── memleak.h
│   ├── mountsnoop.bpf.c
│   ├── mountsnoop.c
│   ├── mountsnoop.h
│   ├── numamove.bpf.c
│   ├── numamove.c
│   ├── offcputime.bpf.c
│   ├── offcputime.c
│   ├── offcputime.h
│   ├── oomkill.bpf.c
│   ├── oomkill.c
│   ├── oomkill.h
│   ├── opensnoop.bpf.c
│   ├── opensnoop.c
│   ├── opensnoop.h
│   ├── powerpc
│   │   ├── vmlinux_600.h
│   │   └── vmlinux.h -> vmlinux_600.h
│   ├── readahead.bpf.c
│   ├── readahead.c
│   ├── readahead.h
│   ├── README.md
│   ├── riscv
│   │   ├── vmlinux_602.h
│   │   └── vmlinux.h -> vmlinux_602.h
│   ├── runqlat.bpf.c
│   ├── runqlat.c
│   ├── runqlat.h
│   ├── runqlen.bpf.c
│   ├── runqlen.c
│   ├── runqlen.h
│   ├── runqslower.bpf.c
│   ├── runqslower.c
│   ├── runqslower_example.txt
│   ├── runqslower.h
│   ├── sigsnoop.bpf.c
│   ├── sigsnoop.c
│   ├── sigsnoop_example.txt
│   ├── sigsnoop.h
│   ├── slabratetop.bpf.c
│   ├── slabratetop.c
│   ├── slabratetop.h
│   ├── softirqs.bpf.c
│   ├── softirqs.c
│   ├── softirqs.h
│   ├── solisten.bpf.c
│   ├── solisten.c
│   ├── solisten.h
│   ├── stat.h
│   ├── statsnoop.bpf.c
│   ├── statsnoop.c
│   ├── statsnoop.h
│   ├── syscall_helpers.c
│   ├── syscall_helpers.h
│   ├── syscount.bpf.c
│   ├── syscount.c
│   ├── syscount.h
│   ├── tcpconnect.bpf.c
│   ├── tcpconnect.c
│   ├── tcpconnect.h
│   ├── tcpconnlat.bpf.c
│   ├── tcpconnlat.c
│   ├── tcpconnlat.h
│   ├── tcplife.bpf.c
│   ├── tcplife.c
│   ├── tcplife.h
│   ├── tcppktlat.bpf.c
│   ├── tcppktlat.c
│   ├── tcppktlat_example.txt
│   ├── tcppktlat.h
│   ├── tcprtt.bpf.c
│   ├── tcprtt.c
│   ├── tcprtt.h
│   ├── tcpstates.bpf.c
│   ├── tcpstates.c
│   ├── tcpstates.h
│   ├── tcpsynbl.bpf.c
│   ├── tcpsynbl.c
│   ├── tcpsynbl.h
│   ├── tcptop.bpf.c
│   ├── tcptop.c
│   ├── tcptop.h
│   ├── tcptracer.bpf.c
│   ├── tcptracer.c
│   ├── tcptracer.h
│   ├── trace_helpers.c
│   ├── trace_helpers.h
│   ├── uprobe_helpers.c
│   ├── uprobe_helpers.h
│   ├── vfsstat.bpf.c
│   ├── vfsstat.c
│   ├── vfsstat.h
│   ├── wakeuptime.bpf.c
│   ├── wakeuptime.c
│   ├── wakeuptime.h
│   └── x86
│       ├── vmlinux_518.h
│       └── vmlinux.h -> vmlinux_518.h
├── LICENSE.txt
├── LINKS.md
├── man
│   ├── CMakeLists.txt
│   └── man8
│       ├── argdist.8
│       ├── bashreadline.8
│       ├── bindsnoop.8
│       ├── biolatency.8
│       ├── biolatpcts.8
│       ├── biopattern.8
│       ├── biosnoop.8
│       ├── biotop.8
│       ├── bitesize.8
│       ├── bpflist.8
│       ├── bps.8
│       ├── btrfsdist.8
│       ├── btrfsslower.8
│       ├── cachestat.8
│       ├── cachetop.8
│       ├── capable.8
│       ├── CMakeLists.txt
│       ├── cobjnew.8 -> uobjnew.8
│       ├── compactsnoop.8
│       ├── cpudist.8
│       ├── cpuunclaimed.8……│   ├── tcpsynbl.bpf.c
│   ├── tcpsynbl.c
│   ├── tcpsynbl.h
│   ├── tcptop.bpf.c
│   ├── tcptop.c
│   ├── tcptop.h
│   ├── tcptracer.bpf.c
│   ├── tcptracer.c
│   ├── tcptracer.h
│   ├── trace_helpers.c
│   ├── trace_helpers.h
│   ├── uprobe_helpers.c
│   ├── uprobe_helpers.h
│   ├── vfsstat.bpf.c
│   ├── vfsstat.c
│   ├── vfsstat.h   
│   ├── wakeuptime.bpf.c
│   ├── wakeuptime.c
│   ├── wakeuptime.h
│   └── x86
│       ├── vmlinux_518.h
│       └── vmlinux.h -> vmlinux_518.h
├── LICENSE.txt
├── LINKS.md
├── man
│   ├── CMakeLists.txt
│   └── man8
│       ├── argdist.8
│       ├── bashreadline.8
│       ├── bindsnoop.8
│       ├── biolatency.8
│       ├── biolatpcts.8
│       ├── biopattern.8
│       ├── biosnoop.8
│       ├── biotop.8
│       ├── bitesize.8
│       ├── bpflist.8
│       ├── bps.8
│       ├── btrfsdist.8
│       ├── btrfsslower.8
│       ├── cachestat.8
│       ├── cachetop.8
│       ├── capable.8
│       ├── CMakeLists.txt  
│       ├── cobjnew.8 -> uobjnew.8
│       ├── compactsnoop.8
│       ├── cpudist.8
│       ├── cpuunclaimed.8
82 directories, 1102 files

至此,BCC源码下载完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/84658.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

王江涛十天搞定考研词汇

学习目标: 考研词汇 学习内容: 2023-9-17 第一天考研词汇 学习时间: 开始:2023-9-17 结束:进行中 学习产出: 2023-9-17intellect智力;知识分子intellectual智力的;聪明的intellectualize使...理智化&a…

如何使用ArcGIS Pro自动矢量化道路

对于已经制作好的电子地图,我们可以通过像素识别的方式将其中的要素提取出来,比如本教程要讲到的道路数据,这里为大家介绍一下在ArcGIS Pro中如何自动矢量化道路,希望能对你有所帮助。 栅格计算 在工具箱中点击“Spatial Analys…

机器学习(18)---朴素贝叶斯

朴素贝叶斯 一、概述1.1 概率分类器1.2 贝叶斯工作原理1.3 贝叶斯的性质 二、sklearn中的朴素贝叶斯2.1 贝叶斯分类器2.2 高斯朴素贝叶斯GaussianNB2.3 探索贝叶斯:高斯朴素贝叶斯擅长的数据集2.4 探索贝叶斯:高斯朴素贝叶斯的拟合效果与运算速度 一、概…

Go编程规范

文章目录 注释转义符定义变量方法一:指定变量类型,声明后若不赋值,使用默认值方法二:根据值自行判定变量类型(类型推导)方法三:省略var, 注意:左侧的变量不应该是已经声明过的,否则会导致编译错误[推荐]全局…

【Redis】Redis 的学习教程(十一)之使用 Redis 实现分布式锁

1. 分布式锁概念 在多线程环境下,为了保证数据的线程安全,锁保证同一时刻,只有一个可以访问和更新共享数据。在单机系统我们可以使用 synchronized 锁、Lock 锁保证线程安全。 synchronized 锁是 Java 提供的一种内置锁,在单个 …

快速用Python进行数据分析技巧详解

概要 一些小提示和小技巧可能是非常有用的,特别是在编程领域。有时候使用一点点黑客技术,既可以节省时间,还可能挽救“生命”。 一个小小的快捷方式或附加组件有时真是天赐之物,并且可以成为真正的生产力助推器。所以&#xff0…

leetcode543 二叉树的直径

题目 给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 示例 输入:root [1,2,3,4,5] 输出&#xff1…

全国职业技能大赛云计算--高职组赛题卷⑤(容器云)

全国职业技能大赛云计算--高职组赛题卷⑤(容器云) 第二场次题目:容器云平台部署与运维任务2 基于容器的web应用系统部署任务(15分)任务3 基于容器的持续集成部署任务(15分)任务4 Kubernetes容器…

web:[HCTF 2018]WarmUp

题目 点进页面&#xff0c;页面只有一张滑稽脸&#xff0c;没有其他的提示信息 查看网页源代码&#xff0c;发现source.php&#xff0c;尝试访问一下 跳转至该页面&#xff0c;页面显示为一段php代码&#xff0c;需要进行代码审计 <?phphighlight_file(__FILE__);class emm…

【Flink】FlinkCDC获取mysql数据时间类型差8小时时区解决方案

1、背景: 在我们使用FlinkCDC采集mysql数据的时候,日期类型是我们很常见的类型,但是FlinkCDC读取出来会和数据库的日期时间不一致,情况如下 FlinkCDC获取的数据中create_time字段1694597238000转换为时间戳2023-09-13 17:27:18 而数据库中原始数据如下,并没有到下午5点…

flink集群与资源@k8s源码分析-回顾

本章是分析系列最后一章,作为回顾,以运行架构图串联起所有分析场景 1 启动集群,部署集群(提交k8s),新建作业管理器组件 2 构建和启动flink master组件 3 提交作业,N/A

多线程的学习上篇

座右铭: 天行健&#xff0c;君子以自强不息;地势坤&#xff0c;君子以厚德载物. 引入进程这个概念的目的 引入进程这个概念,最主要的目的,是为了解决“并发编程"这样的问题. 这是因为CPU进入了多核心的时代 要想进一步提高程序的执行速度,就需要充分的利用CPU 的多核资源…

滑动时间窗口的思想和实现,环形数组,golang

固定时间窗口 在开发限流组件的时候&#xff0c;我们需要统计一个时间区间内的请求数&#xff0c;比如以分钟为单位。所谓固定时间窗口&#xff0c;就是根据时间函数得到当前请求落在哪个分钟之内&#xff0c;我们在统计的时候只关注当前分钟之内的数量&#xff0c;即 [0s, 60…

【大数据之Kafka】十六、Kafka集成外部系统之集成Flume

Flume 是一个在大数据开发中非常常用的组件。可以用于 Kafka 的生产者&#xff0c;也可以用于 Kafka 的消费者。 Flume安装和部署&#xff1a;https://blog.csdn.net/qq_18625571/article/details/131678589?spm1001.2014.3001.5501 1 Flume生产者 &#xff08;1&#xff09…

帆软BI开发-Day2-趋势图的多种变形

前言&#xff1a; 在BI数据展示中&#xff0c;条形图、趋势图无疑是使用场景非常多的两种图形。与条形图不同的是&#xff0c;趋势图更能反馈出一定的客观规律和未来的趋势走向&#xff0c;因此用于作为预警和判异的业务场景&#xff0c;但实际业务场景的趋势图可没你想的那么简…

华为HCIA(三)

链路本地地址接口标识64bit 当STP端口到了Forwarding状态后&#xff0c;会转发流量&#xff0c;也处理报文 在TCP/IP模型中&#xff0c;会话层&#xff0c;表示层和应用层&#xff0c;都规划成了应用层 路由表包含目的地址和掩码&#xff0c;优先级&#xff0c;cost,下一跳和…

laravel框架 - 事件与监听器

一&#xff0c;绑定事件与监听器 在app\Providers下的EventServiceProvider.php中添加我们定义的事件与监听器 protected $listen [Registered::class > [SendEmailVerificationNotification::class,],App\ebvent\RegisterMessage>[//事件App\listeners\SendMessage//监…

高云FPGA系列教程(10):letter-shell移植

文章目录 letter-shell简介letter-shell源码获取letter-shell移植函数和变量应用示例 本文是高云FPGA系列教程的第10篇文章。 shell&#xff0c;中文是外壳的意思&#xff0c;就是操作系统的外壳。通过shell命令可以操作和控制操作系统&#xff0c;比如Linux中的Shell命令就包括…

QT--day5

注册 mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include<QPushButton> #include<QLineEdit> #include<QLabel> #include <QMessageBox> #include<QString> #include<QSqlDatabase> …

CAN总线物理层

本文的目的并不是为了介绍或普及CAN总线相关知识,而是为了了解CAN总线,进而为CAN通信一致性测试做知识储备。 CAN,控制器局域网,全称:Controller Area Network。1986年,由德国Bosch公司为汽车开发的网络技术,主要用于汽车的监测与控制,目的为适应汽车“减少线束的数量…