首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何检测Linux内核中的安全增强选项

如何检测Linux内核中的安全增强选项

作者头像
FB客服
发布于 2021-07-30 08:44:13
发布于 2021-07-30 08:44:13
2.4K00
代码可运行
举报
文章被收录于专栏:FreeBufFreeBuf
运行总次数:0
代码可运行

关于kconfig-hardened-check

kconfig-hardened-check是一款功能强大的安全检测工具,可以帮助广大研究人员检测Linux内核中的安全增强选项。

Linux内核中提供了很多安全增强选项,其中有很多选项在主要的Linux发行版系统中都默认不会开启。因此,我们如果想要让自己的系统变得更加安全的话,我们则需要手动开启这些安全增强选项。

但是,谁都不想手动去检查这些配置选项,因此kconfig-hardened-check便应运而生,它可以自动帮我们检查自己Linux系统内核中的相关安全增强选项。在检查的过程中,kconfig-hardened-check.py 将根据下列参考配置来进行检查:

1、KSPP推荐设置;

2、CLIP操作系统内核配置;

3、最新公开的grsecurity修复方案;

4、SECURITY_LOCKDOWN_LSM修复方案;

5、Linux内核维护团队的直接反馈;

除此之外,我们还创建了一份Linux内核防御图,它是安全强化特性和相应漏洞类或攻击技术之间关系的图形表示。

支持的操作系统架构

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
X86_64
X86_32
ARM64
ARM

工具安装

由于本项目基于Python开发,因此我们首先需要在本地系统中安装并配置好Python环境。接下来,我们就可以直接使用下列pip命令完成工具包的下载和安装了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install git+https://github.com/a13xp0p0v/kconfig-hardened-check

或者,我们也可以使用下列命令将该项目源码克隆至本地之后,运行安装脚本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://github.com/a13xp0p0v/kconfig-hardened-check.git

./bin/kconfig-hardened-check

工具使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
usage: kconfig-hardened-check [-h] [--version] [-p {X86_64,X86_32,ARM64,ARM}]

                              [-c CONFIG]

                              [-m {verbose,json,show_ok,show_fail}]



A tool for checking the security hardening options of the Linux kernel



optional arguments:

  -h, --help            show this help message and exit

  --version             show program's version number and exit

  -p {X86_64,X86_32,ARM64,ARM}, --print {X86_64,X86_32,ARM64,ARM}

                        print security hardening preferences for the selected architecture

  -c CONFIG, --config CONFIG

                        check the kernel config file against these preferences

  -m {verbose,json,show_ok,show_fail}, --mode {verbose,json,show_ok,show_fail}

                        choose the report mode

针对Ubuntu 20.04 LTS (Focal Fossa)内核配置的输出样例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ ./bin/kconfig-hardened-check -c kconfig_hardened_check/config_files/distros/ubuntu-focal.config

[+] Config file to check: kconfig_hardened_check/config_files/distros/ubuntu-focal.config

[+] Detected architecture: X86_64

[+] Detected kernel version: 5.4

=========================================================================================================================

                 option name                 | desired val | decision |       reason       |   check result

=========================================================================================================================

CONFIG_BUG                                   |      y      |defconfig |  self_protection   |   OK

CONFIG_SLUB_DEBUG                            |      y      |defconfig |  self_protection   |   OK

CONFIG_GCC_PLUGINS                           |      y      |defconfig |  self_protection   |   FAIL: not found

CONFIG_STACKPROTECTOR_STRONG                 |      y      |defconfig |  self_protection   |   OK

CONFIG_STRICT_KERNEL_RWX                     |      y      |defconfig |  self_protection   |   OK

CONFIG_STRICT_MODULE_RWX                     |      y      |defconfig |  self_protection   |   OK

CONFIG_REFCOUNT_FULL                         |      y      |defconfig |  self_protection   |   FAIL: "is not set"

CONFIG_IOMMU_SUPPORT                         |      y      |defconfig |  self_protection   |   OK

CONFIG_RANDOMIZE_BASE                        |      y      |defconfig |  self_protection   |   OK

CONFIG_THREAD_INFO_IN_TASK                   |      y      |defconfig |  self_protection   |   OK

CONFIG_VMAP_STACK                            |      y      |defconfig |  self_protection   |   OK

CONFIG_MICROCODE                             |      y      |defconfig |  self_protection   |   OK

CONFIG_RETPOLINE                             |      y      |defconfig |  self_protection   |   OK

CONFIG_X86_SMAP                              |      y      |defconfig |  self_protection   |   OK

CONFIG_SYN_COOKIES                           |      y      |defconfig |  self_protection   |   OK

CONFIG_X86_UMIP                              |      y      |defconfig |  self_protection   |   OK: CONFIG_X86_INTEL_UMIP "y"

CONFIG_PAGE_TABLE_ISOLATION                  |      y      |defconfig |  self_protection   |   OK

CONFIG_RANDOMIZE_MEMORY                      |      y      |defconfig |  self_protection   |   OK

CONFIG_INTEL_IOMMU                           |      y      |defconfig |  self_protection   |   OK

CONFIG_AMD_IOMMU                             |      y      |defconfig |  self_protection   |   OK

CONFIG_SECURITY_DMESG_RESTRICT               |      y      |   kspp   |  self_protection   |   FAIL: "is not set"

CONFIG_BUG_ON_DATA_CORRUPTION                |      y      |   kspp   |  self_protection   |   FAIL: "is not set"

CONFIG_DEBUG_WX                              |      y      |   kspp   |  self_protection   |   OK

CONFIG_SCHED_STACK_END_CHECK                 |      y      |   kspp   |  self_protection   |   OK

CONFIG_SLAB_FREELIST_HARDENED                |      y      |   kspp   |  self_protection   |   OK

CONFIG_SLAB_FREELIST_RANDOM                  |      y      |   kspp   |  self_protection   |   OK

CONFIG_SHUFFLE_PAGE_ALLOCATOR                |      y      |   kspp   |  self_protection   |   OK

CONFIG_FORTIFY_SOURCE                        |      y      |   kspp   |  self_protection   |   OK

CONFIG_DEBUG_LIST                            |      y      |   kspp   |  self_protection   |   FAIL: "is not set"

CONFIG_DEBUG_SG                              |      y      |   kspp   |  self_protection   |   FAIL: "is not set"

CONFIG_DEBUG_CREDENTIALS                     |      y      |   kspp   |  self_protection   |   FAIL: "is not set"

CONFIG_DEBUG_NOTIFIERS                       |      y      |   kspp   |  self_protection   |   FAIL: "is not set"

CONFIG_INIT_ON_ALLOC_DEFAULT_ON              |      y      |   kspp   |  self_protection   |   OK

CONFIG_GCC_PLUGIN_LATENT_ENTROPY             |      y      |   kspp   |  self_protection   |   FAIL: not found

CONFIG_GCC_PLUGIN_RANDSTRUCT                 |      y      |   kspp   |  self_protection   |   FAIL: not found

CONFIG_HARDENED_USERCOPY                     |      y      |   kspp   |  self_protection   |   OK

CONFIG_HARDENED_USERCOPY_FALLBACK            | is not set  |   kspp   |  self_protection   |   FAIL: "y"

CONFIG_MODULE_SIG                            |      y      |   kspp   |  self_protection   |   OK

CONFIG_MODULE_SIG_ALL                        |      y      |   kspp   |  self_protection   |   OK

CONFIG_MODULE_SIG_SHA512                     |      y      |   kspp   |  self_protection   |   OK

CONFIG_MODULE_SIG_FORCE                      |      y      |   kspp   |  self_protection   |   FAIL: "is not set"

CONFIG_INIT_STACK_ALL_ZERO                   |      y      |   kspp   |  self_protection   |   FAIL: not found

CONFIG_INIT_ON_FREE_DEFAULT_ON               |      y      |   kspp   |  self_protection   |   OK: CONFIG_PAGE_POISONING_ZERO "y"

CONFIG_GCC_PLUGIN_STACKLEAK                  |      y      |   kspp   |  self_protection   |   FAIL: not found

CONFIG_DEFAULT_MMAP_MIN_ADDR                 |    65536    |   kspp   |  self_protection   |   OK

CONFIG_DEBUG_VIRTUAL                         |      y      |  clipos  |  self_protection   |   FAIL: "is not set"

CONFIG_STATIC_USERMODEHELPER                 |      y      |  clipos  |  self_protection   |   FAIL: "is not set"

CONFIG_EFI_DISABLE_PCI_DMA                   |      y      |  clipos  |  self_protection   |   FAIL: not found

CONFIG_SLAB_MERGE_DEFAULT                    | is not set  |  clipos  |  self_protection   |   FAIL: "y"

CONFIG_RANDOM_TRUST_BOOTLOADER               | is not set  |  clipos  |  self_protection   |   FAIL: "y"

CONFIG_RANDOM_TRUST_CPU                      | is not set  |  clipos  |  self_protection   |   FAIL: "y"

CONFIG_GCC_PLUGIN_RANDSTRUCT_PERFORMANCE     | is not set  |  clipos  |  self_protection   |   FAIL: CONFIG_GCC_PLUGIN_RANDSTRUCT not "y"

CONFIG_STACKLEAK_METRICS                     | is not set  |  clipos  |  self_protection   |   FAIL: CONFIG_GCC_PLUGIN_STACKLEAK not "y"

CONFIG_STACKLEAK_RUNTIME_DISABLE             | is not set  |  clipos  |  self_protection   |   FAIL: CONFIG_GCC_PLUGIN_STACKLEAK not "y"

CONFIG_INTEL_IOMMU_DEFAULT_ON                |      y      |  clipos  |  self_protection   |   FAIL: "is not set"

CONFIG_INTEL_IOMMU_SVM                       |      y      |  clipos  |  self_protection   |   OK

CONFIG_UBSAN_BOUNDS                          |      y      |    my    |  self_protection   |   FAIL: CONFIG_UBSAN_TRAP not "y"

CONFIG_RESET_ATTACK_MITIGATION               |      y      |    my    |  self_protection   |   OK

CONFIG_AMD_IOMMU_V2                          |      y      |    my    |  self_protection   |   FAIL: "m"

CONFIG_SECURITY                              |      y      |defconfig |  security_policy   |   OK

CONFIG_SECURITY_YAMA                         |      y      |   kspp   |  security_policy   |   OK

CONFIG_SECURITY_WRITABLE_HOOKS               | is not set  |    my    |  security_policy   |   OK: not found

CONFIG_SECURITY_LOCKDOWN_LSM                 |      y      |  clipos  |  security_policy   |   OK

CONFIG_SECURITY_LOCKDOWN_LSM_EARLY           |      y      |  clipos  |  security_policy   |   OK

CONFIG_LOCK_DOWN_KERNEL_FORCE_CONFIDENTIALITY|      y      |  clipos  |  security_policy   |   FAIL: "is not set"

CONFIG_SECURITY_SAFESETID                    |      y      |    my    |  security_policy   |   OK

CONFIG_SECURITY_LOADPIN                      |      y      |    my    |  security_policy   |   FAIL: "is not set"

CONFIG_SECURITY_LOADPIN_ENFORCE              |      y      |    my    |  security_policy   |   FAIL: CONFIG_SECURITY_LOADPIN not "y"

CONFIG_SECCOMP                               |      y      |defconfig | cut_attack_surface |   OK

CONFIG_SECCOMP_FILTER                        |      y      |defconfig | cut_attack_surface |   OK

CONFIG_STRICT_DEVMEM                         |      y      |defconfig | cut_attack_surface |   OK

CONFIG_ACPI_CUSTOM_METHOD                    | is not set  |   kspp   | cut_attack_surface |   OK

CONFIG_COMPAT_BRK                            | is not set  |   kspp   | cut_attack_surface |   OK

CONFIG_DEVKMEM                               | is not set  |   kspp   | cut_attack_surface |   OK

CONFIG_COMPAT_VDSO                           | is not set  |   kspp   | cut_attack_surface |   OK

CONFIG_BINFMT_MISC                           | is not set  |   kspp   | cut_attack_surface |   FAIL: "m"

CONFIG_INET_DIAG                             | is not set  |   kspp   | cut_attack_surface |   FAIL: "m"

CONFIG_KEXEC                                 | is not set  |   kspp   | cut_attack_surface |   FAIL: "y"

CONFIG_PROC_KCORE                            | is not set  |   kspp   | cut_attack_surface |   FAIL: "y"

CONFIG_LEGACY_PTYS                           | is not set  |   kspp   | cut_attack_surface |   FAIL: "y"

CONFIG_HIBERNATION                           | is not set  |   kspp   | cut_attack_surface |   FAIL: "y"

CONFIG_IA32_EMULATION                        | is not set  |   kspp   | cut_attack_surface |   FAIL: "y"

CONFIG_X86_X32                               | is not set  |   kspp   | cut_attack_surface |   FAIL: "y"

CONFIG_MODIFY_LDT_SYSCALL                    | is not set  |   kspp   | cut_attack_surface |   FAIL: "y"

CONFIG_OABI_COMPAT                           | is not set  |   kspp   | cut_attack_surface |   OK: not found

CONFIG_MODULES                               | is not set  |   kspp   | cut_attack_surface |   FAIL: "y"

CONFIG_DEVMEM                                | is not set  |   kspp   | cut_attack_surface |   FAIL: "y"

CONFIG_IO_STRICT_DEVMEM                      |      y      |   kspp   | cut_attack_surface |   FAIL: "is not set"

CONFIG_LEGACY_VSYSCALL_NONE                  |      y      |   kspp   | cut_attack_surface |   FAIL: "is not set"

CONFIG_ZSMALLOC_STAT                         | is not set  |grsecurity| cut_attack_surface |   OK

CONFIG_PAGE_OWNER                            | is not set  |grsecurity| cut_attack_surface |   OK

CONFIG_DEBUG_KMEMLEAK                        | is not set  |grsecurity| cut_attack_surface |   OK

CONFIG_BINFMT_AOUT                           | is not set  |grsecurity| cut_attack_surface |   OK: not found

CONFIG_KPROBES                               | is not set  |grsecurity| cut_attack_surface |   FAIL: "y"

CONFIG_UPROBES                               | is not set  |grsecurity| cut_attack_surface |   FAIL: "y"

CONFIG_GENERIC_TRACER                        | is not set  |grsecurity| cut_attack_surface |   FAIL: "y"

CONFIG_PROC_VMCORE                           | is not set  |grsecurity| cut_attack_surface |   FAIL: "y"

CONFIG_PROC_PAGE_MONITOR                     | is not set  |grsecurity| cut_attack_surface |   FAIL: "y"

CONFIG_USELIB                                | is not set  |grsecurity| cut_attack_surface |   FAIL: "y"

CONFIG_CHECKPOINT_RESTORE                    | is not set  |grsecurity| cut_attack_surface |   FAIL: "y"

CONFIG_USERFAULTFD                           | is not set  |grsecurity| cut_attack_surface |   FAIL: "y"

CONFIG_HWPOISON_INJECT                       | is not set  |grsecurity| cut_attack_surface |   FAIL: "m"

CONFIG_MEM_SOFT_DIRTY                        | is not set  |grsecurity| cut_attack_surface |   FAIL: "y"

CONFIG_DEVPORT                               | is not set  |grsecurity| cut_attack_surface |   FAIL: "y"

CONFIG_DEBUG_FS                              | is not set  |grsecurity| cut_attack_surface |   FAIL: "y"

CONFIG_NOTIFIER_ERROR_INJECTION              | is not set  |grsecurity| cut_attack_surface |   FAIL: "m"

CONFIG_X86_PTDUMP                            | is not set  |grsecurity| cut_attack_surface |   OK

CONFIG_DRM_LEGACY                            | is not set  |maintainer| cut_attack_surface |   OK

CONFIG_FB                                    | is not set  |maintainer| cut_attack_surface |   FAIL: "y"

CONFIG_VT                                    | is not set  |maintainer| cut_attack_surface |   FAIL: "y"

CONFIG_AIO                                   | is not set  |grapheneos| cut_attack_surface |   FAIL: "y"

CONFIG_STAGING                               | is not set  |  clipos  | cut_attack_surface |   FAIL: "y"

CONFIG_KSM                                   | is not set  |  clipos  | cut_attack_surface |   FAIL: "y"

CONFIG_KALLSYMS                              | is not set  |  clipos  | cut_attack_surface |   FAIL: "y"

CONFIG_X86_VSYSCALL_EMULATION                | is not set  |  clipos  | cut_attack_surface |   FAIL: "y"

CONFIG_MAGIC_SYSRQ                           | is not set  |  clipos  | cut_attack_surface |   FAIL: "y"

CONFIG_KEXEC_FILE                            | is not set  |  clipos  | cut_attack_surface |   FAIL: "y"

CONFIG_USER_NS                               | is not set  |  clipos  | cut_attack_surface |   FAIL: "y"

CONFIG_X86_MSR                               | is not set  |  clipos  | cut_attack_surface |   FAIL: "m"

CONFIG_X86_CPUID                             | is not set  |  clipos  | cut_attack_surface |   FAIL: "m"

CONFIG_IO_URING                              | is not set  |  clipos  | cut_attack_surface |   FAIL: "y"

CONFIG_X86_IOPL_IOPERM                       | is not set  |  clipos  | cut_attack_surface |   OK: not found

CONFIG_ACPI_TABLE_UPGRADE                    | is not set  |  clipos  | cut_attack_surface |   FAIL: "y"

CONFIG_EFI_CUSTOM_SSDT_OVERLAYS              | is not set  |  clipos  | cut_attack_surface |   OK: not found

CONFIG_LDISC_AUTOLOAD                        | is not set  |  clipos  | cut_attack_surface |   FAIL: "y"

CONFIG_X86_INTEL_TSX_MODE_OFF                |      y      |  clipos  | cut_attack_surface |   OK

CONFIG_EFI_TEST                              | is not set  | lockdown | cut_attack_surface |   FAIL: "m"

CONFIG_BPF_SYSCALL                           | is not set  | lockdown | cut_attack_surface |   FAIL: "y"

CONFIG_MMIOTRACE_TEST                        | is not set  | lockdown | cut_attack_surface |   OK

CONFIG_TRIM_UNUSED_KSYMS                     |      y      |    my    | cut_attack_surface |   FAIL: not found

CONFIG_MMIOTRACE                             | is not set  |    my    | cut_attack_surface |   FAIL: "y"

CONFIG_LIVEPATCH                             | is not set  |    my    | cut_attack_surface |   FAIL: "y"

CONFIG_IP_DCCP                               | is not set  |    my    | cut_attack_surface |   FAIL: "m"

CONFIG_IP_SCTP                               | is not set  |    my    | cut_attack_surface |   FAIL: "m"

CONFIG_FTRACE                                | is not set  |    my    | cut_attack_surface |   FAIL: "y"

CONFIG_VIDEO_VIVID                           | is not set  |    my    | cut_attack_surface |   FAIL: "m"

CONFIG_INPUT_EVBUG                           | is not set  |    my    | cut_attack_surface |   FAIL: "m"

CONFIG_INTEGRITY                             |      y      |defconfig |userspace_hardening |   OK

CONFIG_ARCH_MMAP_RND_BITS                    |     32      |  clipos  |userspace_hardening |   FAIL: "28"



[+] Config check is finished: 'OK' - 58 / 'FAIL' - 81

项目地址:点击底部【阅读原文】获取

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
升级Oracle导致Java程序日期截断的场景
同事碰到个问题,他们的数据库从Oracle 11g升级到Oracle 19c,对应Java代码要将jdbc驱动从ojdbc14.jar升级到ojdbc7.jar,发现一个date参数的问题。
bisal
2025/07/24
990
升级Oracle导致Java程序日期截断的场景
如何给Apache Pig自定义UDF函数?
近日由于工作所需,需要使用到Pig来分析线上的搜索日志数据,散仙本打算使用hive来分析的,但由于种种原因,没有用成,而Pig(pig0.12-cdh)散仙一直没有接触过,所以只能临阵磨枪了,花了两天时间,大致看完了pig官网的文档,在看文档期间,也是边实战边学习,这样以来,对pig的学习,会更加容易,当然本篇不是介绍如何快速学好一门框架或语言的文章,正如标题所示,散仙打算介绍下如何在Pig中,使用用户自定义的UDF函数,关于学习经验,散仙会在后面的文章里介绍。 一旦你学会了UDF的使用,就意味着,
我是攻城师
2018/05/11
1.2K0
如何给Apache Pig自定义UDF函数?
近日由于工作所需,需要使用到Pig来分析线上的搜索日志数据,本人本打算使用hive来分析的,但由于种种原因,没有用成,而Pig(pig0.12-cdh)本人一直没有接触过,所以只能临阵磨枪了,花了两天时间,大致看完了pig官网的文档,在看文档期间,也是边实战边学习,这样以来,对pig的学习,会更加容易,当然本篇不是介绍如何快速学好一门框架或语言的文章,正如标题所示,本人打算介绍下如何在Pig中,使用用户自定义的UDF函数,关于学习经验,本人会在后面的文章里介绍。
星哥玩云
2022/07/03
5320
如何给Apache Pig自定义UDF函数?
图数据库与传统数仓实现联邦查询
•一、MySQL得到研报实体在Oracle中的唯一ID•二、Oracle中过滤时间序列数据•三、CYPHER实现MySQL和Oracle查询语句串联•四、通过apoc.case实现布尔值的判断•五、将查询封装为函数•六、将函数运用在数据过滤查询中•七、总结
马超的博客
2022/09/02
7330
图数据库与传统数仓实现联邦查询
玩转大数据系列之Apache Pig高级技能之函数编程(六)
已总结Pig系列的学习文档,点击末尾处,阅读原文即可查看所有,希望对大家有用,感谢关注! 在Hadoop的生态系统中,如果我们要离线的分析海量的数据,大多数人都会选择Apache Hive或Apache Pig,在国内总体来说,Hive使用的人群占比比较高, 而Pig使用的人相对来说,则少的多,这并不是因为Pig不成熟,不稳定,而是因为Hive提供了类数据库SQL的查询语句,使得大多人上手Hive非常容易,相反而Pig则提供了类Linux shell的脚本语法,这使得大多数人不喜欢使用。 如果在编程界
我是攻城师
2018/05/11
8840
【Oracle数据库】手滑删错数据,一步步教你如何挽救?
今天有客户联系说误更新数据表,导致数据错乱了,希望将这张表恢复到 一周前 的指定时间点。
Lucifer三思而后行
2021/12/30
9120
【Oracle数据库】手滑删错数据,一步步教你如何挽救?
【Oracle数据库】手滑删错数据,一步步教你如何挽救?
注意:为了模拟客户环境,假设无法通过UNDO快照找回,当前删除时间点为:<2021/06/17 18:10:00>。
Lucifer三思而后行
2021/08/17
4390
【Oracle数据库】手滑删错数据,一步步教你如何挽救?
一次慢查询暴露的隐蔽的问题
最近解决了一个生产 SQL 慢查询的问题,排查问题之后发现一些比较隐匿且容易忽略的问题。
andyxh
2019/09/10
5950
一次慢查询暴露的隐蔽的问题
用户自定义函数UDF
Hive支持的函数除了内置函数,允许编写用户自定义函数(User Define Function)来扩充函数的功能。
十里桃花舞丶
2021/09/10
3K0
Apache Pig学习笔记(二)
主要整理了一下,pig里面的一些关键词的含义和用法,pig虽然是一种以数据流处理为核心的框架,但数据库的大部分关键词和操作,在pig里面基本上都能找到对应的函数,非常灵活与简洁,春节前的最后一篇文章了,祝大家春节快乐! 1,pig里所有的保留关键字: -- A assert, and, any, all, arrange, as, asc, AVG -- B bag, BinStorage, by, bytearray, BIGINTEGER, BIGDECIMAL -- C cache, CAS
我是攻城师
2018/05/11
1.2K0
Apache Pig入门学习文档(一)
1,Pig的安装 (一)软件要求 (二)下载Pig (三)编译Pig 2,运行Pig (一)Pig的所有执行模式 (二)pig的交互式模式 (三)使用pig脚本执行模式 3,Pig Latin语句的声明 (一)加载数据 (二)使用和处理数据 (三)存储中间数据 (四)存储最终数据 (五)调试Pig Latin语言 4,Pig的属性值管理 5,Pig一些注意事项 1,Pig的安装 (一)软件安装 必须配置:
我是攻城师
2018/05/11
1.4K0
MySQL使用笔记
本文最后更新于 685 天前,其中的信息可能已经有所发展或是发生改变。 CREATE VIEW <视图名> AS <SELECT语句> 存储过程 mysql> delimiter $$  #将语句的结束符号从分号;临时改为两个$$(可以是自定义) mysql> CREATE PROCEDURE delete_matches(IN p_playerno INTEGER) -> BEGIN ->   DELETE FROM MATCHES -> WHERE playerno
Yuyy
2022/06/28
3480
【Apache Doris】自定义函数之C++ UDF详解
导读 本文主要分享 Apache Doris 1.2版本之前如何构建 C++ UDF。
一臻数据
2024/12/24
2210
【Apache Doris】自定义函数之C++ UDF详解
Hive自定义函数UDF、UDTF、UDAF入门
详细讲解Hive自定义函数UDF、UDTF、UDAF基础知识,带你快速入门,首先在Hive中新建表”apache_log”
星哥玩云
2022/08/16
3.2K0
Hive自定义函数UDF、UDTF、UDAF入门
进阶数据库系列(二十四):PostgreSQL 数据库日志与日常巡检
参考文章:https://blog.csdn.net/qq_33445829/article/ details/126578647 https://blog.csdn.net/qq_33445829 /article/details/126638945
民工哥
2023/08/22
1.6K0
进阶数据库系列(二十四):PostgreSQL 数据库日志与日常巡检
Apache Phoenix系列 | 真 · 从入门到精通
文章简介:Phoenix是一个开源的HBASE SQL层。它不仅可以使用标准的JDBC API替代HBASE client API创建表,插入和查询HBASE,也支持二级索引、事物以及多种SQL层优化。
王知无-import_bigdata
2019/09/03
6.3K0
Apache Phoenix系列 | 真 · 从入门到精通
java 保留小数与四舍五入以及时间日期的转换和excel读入与数据库写入
之前进行开发了一段小程序,开发过程中发现短短白来行的代码需要用到很多的知识现在进行总结
粲然
2023/10/12
3690
Oracle知识集锦:对Oracle数据库进行监控检查
execute dbbms_workload_repository.create_snapshot();
星哥玩云
2022/08/16
1.2K0
MySQL数据库结构设计
在编码过程中,如果MySQL数据结构设计不好的话,会大大影响开发人员编码效率。比如说MySQL数据库表设计不规范,创建时间字段设计成cjsj,创建者字段设计成cjr或者cjz。这样的数据库表可读性和表意性相当差。下面我们就来讲讲如何规范设计数据库结构。
用户2032165
2018/12/06
2.1K0
MySQL数据库结构设计
mybatis 批量插入「建议收藏」
开发项目中,总是与数据打交道,有的时候将数据放入到一个集合中,然后在遍历集合一条一条的插入,感觉效率超不好,最近又碰到这个问题,插入50条数据用了将近1s,完全满足不了系统的需求.效率必须加快,然后网上查询资料,历经千万bug,终于搞定,这里指提供mybatis中的配置,至于dao层的调用mybatis就自己上网查询下资料吧
全栈程序员站长
2022/07/25
1K0
相关推荐
升级Oracle导致Java程序日期截断的场景
更多 >
交个朋友
加入HAI高性能应用服务器交流群
探索HAI应用新境界 共享实践心得
加入架构与运维学习入门群
系统架构设计入门 运维体系构建指南
加入架构与运维工作实战群
高并发系统设计 运维自动化实践
换一批
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档