前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AI 真的提高了我的工作效率

AI 真的提高了我的工作效率

作者头像
Jasonangel
发布2024-04-22 10:25:09
890
发布2024-04-22 10:25:09
举报
文章被收录于专栏:嵌入式Linux系统开发

未来是 AI 的时代,博主最近写代码都喜欢用 AI 写个草稿,修修改改就能用,大幅提高了工作效率。举个例子:

指令:写一个使用 kfifo 的内核模块

代码语言:javascript
复制
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/kfifo.h>
#include <linux/slab.h>

#define FIFO_SIZE 1024

static DEFINE_KFIFO(my_fifo, char, FIFO_SIZE);

static int __init kfifo_example_init(void)
{
    int ret;
    char data[] = "Hello, kfifo!";
    char buf[FIFO_SIZE];

    // 初始化 kfifo
    ret = kfifo_in(&my_fifo, data, sizeof(data));
    if (ret != sizeof(data)) {
        printk(KERN_ERR "Failed to initialize kfifo\n");
        return -ENOSPC;
    }

    // 从 kfifo 中读取数据
    ret = kfifo_out(&my_fifo, buf, sizeof(data));
    if (ret != sizeof(data)) {
        printk(KERN_ERR "Failed to read from kfifo\n");
        return -EFAULT;
    }

    buf[sizeof(data)] = '\0'; // 添加字符串结束符

    printk(KERN_INFO "Read from kfifo: %s\n", buf);

    return 0;
}

static void __exit kfifo_example_exit(void)
{
    kfifo_free(&my_fifo); // 释放 kfifo 的空间
    printk(KERN_INFO "kfifo example module unloaded\n");
}

module_init(kfifo_example_init);
module_exit(kfifo_example_exit);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Your Name");
MODULE_DESCRIPTION("A simple kernel module demonstrating the use of kfifo");

指令:使用内核 list 写一个内核模块

代码语言:javascript
复制
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/list.h>
#include <linux/slab.h>

struct student {
    int id;
    char name[20];
    struct list_head list;
};

static LIST_HEAD(student_list);

static int __init list_example_init(void)
{
    struct student *s1, *s2, *s;
    
    // 为两个学生分配内存
    s1 = kmalloc(sizeof(struct student), GFP_KERNEL);
    s2 = kmalloc(sizeof(struct student), GFP_KERNEL);
    
    if (!s1 || !s2) {
        printk(KERN_ERR "Memory allocation failed\n");
        return -ENOMEM;
    }
    
    s1->id = 1;
    strncpy(s1->name, "Alice", sizeof(s1->name));
    INIT_LIST_HEAD(&s1->list);
    
    s2->id = 2;
    strncpy(s2->name, "Bob", sizeof(s2->name));
    INIT_LIST_HEAD(&s2->list);
    
    // 将学生添加到链表中
    list_add_tail(&s1->list, &student_list);
    list_add_tail(&s2->list, &student_list);
    
    // 遍历链表并打印学生信息
    printk(KERN_INFO "Student list:\n");
    list_for_each_entry(s, &student_list, list) {
        printk(KERN_INFO "ID: %d, Name: %s\n", s->id, s->name);
    }

    return 0;
}

static void __exit list_example_exit(void)
{
    struct student *s, *tmp;
    
    // 释放链表中学生的内存
    list_for_each_entry_safe(s, tmp, &student_list, list) {
        list_del(&s->list);
        kfree(s);
    }
    
    printk(KERN_INFO "List example module unloaded\n");
}

module_init(list_example_init);
module_exit(list_example_exit);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Your Name");
MODULE_DESCRIPTION("A simple kernel module demonstrating the use of linked list in the kernel");

Makefile

代码语言:javascript
复制
# Makefile 4.0

obj-m := xxxx.o

CURRENT_PATH := $(shell pwd)
LINUX_KERNEL := $(shell uname -r)
LINUX_KERNEL_PATH := /usr/src/linux-headers-$(LINUX_KERNEL)

all:
 make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules
 
clean:
 make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) clean

chatGPT 输出的 demo code,直接编译就能用:

如果大家想体验,这里有一个 AI 导航,收集了很多网站:

https://wz.aidaohang.com.cn/

其中,chatGPT 官网目前是免费使用 3.5 版本:

https://openai.com/chatgpt

国内的大模型,推荐文心一言、通义千问、讯飞星火,基本都能用,不过在输出长篇内容时可能会断掉。

至于 chatGPT4.0,官网是 20 美金一个月,比较贵,如果不是刚需没必要。其他 4.0 渠道还有很多,这里就不推荐了,没渠道的可以后台加博主微信。

博主也用 AI 画了几幅图片,大家可以看一下,本篇文章封面就是 AI 画的,用的是 MJ 绘画:

文生视频的 Sora 模型目前普通用户无法使用,但我们能看到 AI 能做的事情越来越多,大家还是要意识到 AI 对工作和日常生活产生的影响,我们要把 AI 用起来,避免自己落后于时代。

博主日常工作中也会接触到一些 shell 脚本、python 脚本、汇编语言,当看不懂的时候,直接贴给 chatGPT,他给出的解释一般都很合理,这种特殊性的东西百度是搜不到的,但是 chatGPT 可以给出很好的解释,甚至对代码逐行解释,真的很方便很好用。

因为 chatGPT 对 python 非常精通,而 .py 文件可以打包成 .exe 可执行文件,所以我的同事喜欢用 AI 写工具,如下是 AI 用 5s 写出来的简易文本阅读器:

甚至可以把 AI 训练帮助自己解 bug,使用逻辑是:先告诉 AI 一些关键 log 分别代表什么意思,然后把一大段 log 输入给 AI,AI 会解析这些 log,并判断这些 log 与正常相比是否缺失了一些东西,或者 log 出现的前后顺序是否异常,然后给出判断。这样即便无法直接分析出 root cause,也可以协助你进行初步分析,节约时间。

更多的 AI 玩法,靠大家去发现。

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

本文分享自 嵌入式Linux系统开发 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档