1.EasyLogger源码学习笔记(1)
2.TA学习笔记(幕布版)
3.5 款适用于 Linux 的有没有好用的源码有没有好用的源码笔记应用 | Linux 中国
4.EasyLogger源码学习笔记(5)
5.EasyLogger源码学习笔记(3)
6.电脑上最好用的速记工具
EasyLogger源码学习笔记(1)
在编程中,预处理器通过宏定义执行特定的笔记笔记逻辑。使用`#ifdef`和`#else`可以实现条件编译。软件当`#ifdef _XXXX`中的有没有好用的源码有没有好用的源码标识符_XXXX被`#define`命令定义时,编译器将执行`#ifdef`后的笔记笔记程序段1,否则执行`#else`后的软件QQ页面源码程序段2。`#ifndef _XXXX`则表示如果标识符未被定义,有没有好用的源码有没有好用的源码则执行程序段1,笔记笔记反之执行程序段2。软件
ANSI C宏提供了多种实用信息,有没有好用的源码有没有好用的源码如`__DATE__`返回当前日期,笔记笔记`__TIME__`返回当前时间,软件`__FILE__`包含当前文件名,有没有好用的源码有没有好用的源码`__LINE__`包含当前行号。笔记笔记`__STDC__`常量用于判断程序是软件否遵循ANSI C标准。`__FUNCTION__`宏在预编译时返回所在函数的名称。
宏参数的处理可以通过`#`将参数变为字符串,使用`##`将两个宏参数连接起来。`__VA_ARGS__`是一个可变参数宏,需配合`define`使用,将宏左侧的`..`内容原样复制到右侧。
`#if defined`和`#if !defined`在功能上相似,都用于判断宏是否定义。`#error`指令在编译时生成错误消息并停止编译,用于警告开发者。
`extern`关键字用于引用其他文件中的git源码理解函数或全局变量。例如`extern ElogErrCode elog_port_init(void);`声明了一个名为`elog_port_init`的外部函数,调用时需要指明返回值类型和参数。
在多线程编程中,使用`sched_param`结构来管理线程调度参数。`sem_t`表示信号量,用于实现互斥和同步。`pthread_attr_setschedpolicy(&thread_attr, SCHED_RR);`设置进程调度策略为实时轮转调度。
`SCHED_OTHER`默认分时调度策略,`SCHED_FIFO`采用先进先出策略,而`SCHED_RR`是`SCHED_FIFO`的增强版,提供实时轮转功能。使用`sched_get_priority_max(int policy);`和`sched_get_priority_min(int policy);`函数可以获取线程可设置的最高和最低优先级,其中策略参数即上述三种调度策略的宏定义。
`pthread_attr_setschedparam(&thread_attr, &thread_sched_param);`用于设置线程的优先级。通过这些函数,开发者可以精细地控制线程调度,提高程序性能。
TA学习笔记(幕布版)
学习笔记,记录个人成长路径,非教程 好记性不如记录,本文分享学习笔记,旨在辅助理解,非专业教程。包含基础理论(如Games和Games)、软件学习(Houdini、kibana源码重启Substance Designer、World Creator)、引擎学习(Unreal)、实践项目(TA百人计划)和语言学习(C++、OpenGL、Python和C#部分)。Games: 快速过后的作业补充笔记,部分未完成部分后续补上
Games: 高质量实时渲染部分笔记
Houdini: 初级教程学习笔记,建议结合视频,特别是英文教程
Substance Designer: 官方入门教程笔记
World Creator: 基础教程笔记
Unreal: 以实践为主,重点在空山新雨后教程,后期练习内容
TA百人计划: 霜狼大佬分享中收获良多,评论区作业和拓展资源丰富
C++: 黑马教程至P,源码学习
OpenGL: 相关链接
Python: 教程前后质量不一
C#: 进展待续
5 款适用于 Linux 的笔记应用 | Linux 中国
使用这些开源工具来记笔记。
在寻找适用于 Linux 的笔记应用时,您可能会发现众多选择。本篇文章旨在提供一份精选列表,介绍五款我推荐的笔记应用。无论是 Joplin、Xournal、Trillium、Gnote 还是 CherryTree,它们各具特色,满足不同用户的需求。
首先是班级群源码 Joplin,一个跨平台的笔记应用,支持 Linux、Windows、macOS、Android 和 iOS 系统。它以其自动保存功能而受到喜爱,笔记可上传至 NextCloud、OwnCloud、Joplin Cloud、OneDrive、Dropbox 等服务,甚至支持 WebDAV。Joplin 还提供加密功能,确保用户数据安全。多种格式导出笔记,丰富主题选择,以及 MIT 许可证的保障,使得 Joplin 成为一款功能全面的笔记应用。
接下来是 Xournal,一款设计用于创建包含多种媒体类型笔记的工具。支持手写笔和绘图板,适合创作涂鸦笔记,同时也允许在其中输入文本、绘制矢量、导入图形并录制音频。深入vue源码Xournal 的主要用途之一是注释 PDF 文件。它以 GPLv2 许可证发布,提供多种格式的笔记导出功能。
Trillium 是一款专注于知识构建库的层级笔记应用。它具备丰富的所见即所得编辑功能,支持表格、图像和 Markdown 格式,同时允许在源代码注释中使用语法高亮。Trillium 可作为桌面应用在 Linux 和 Windows 系统上使用,也支持在用户自己的 Linux 服务器上托管的 Web 应用。使用 AGPL 许可证发布,Trillium 提供了灵活且功能丰富的笔记解决方案。
Gnote 是一款专为 Linux 开发的开源笔记应用,源自 Tomboy 项目。Gnote 采用类似 Wiki 的链接系统,允许用户通过笔记之间的链接构建知识库。其源代码在 GitLab 上提供,遵循 GPLv3 许可证。Gnote 为用户提供了一个简洁且功能强大的笔记管理工具。
最后是 CherryTree,一个支持层级笔记的应用。在 CherryTree 中,所有内容都被组织为节点,可以包含纯文本、富文本、各种编程语言的语法高亮。每个节点可以有子节点,每个子节点可以具有不同的格式。CherryTree 提供了富文本编辑和语法高亮功能,并允许用户将数据存储在 XML 或 SQLite 文件中。它支持从多种格式导入数据,并可以导出为 PDF、HTML、纯文本或其自定义格式。CherryTree 以 GPLv3 许可证发布,兼容 Linux、Windows 和 macOS 系统。
这五款笔记应用各有千秋,无论是跨平台兼容性、功能丰富性还是安全性,都能满足不同用户的需求。选择适合您工作流程和偏好的应用,开启高效笔记之旅。
EasyLogger源码学习笔记(5)
在EasyLogger源码的学习中,我们了解到日志对象使用了互斥锁以确保同一时刻只有一个线程能进行操作,保证了日志管理的安全性与高效性。
对于异步输出,EasyLogger通过信号量实现了优化。当需要等待执行时,某个线程会被阻塞,以减少CPU的占用。这一特性允许用户单独设置异步输出的日志等级,提高系统的灵活性与可控性。
在文件输出时,使用了信号量集合,其中仅包含一个信号量。这一设计确保了同时只有一个线程能向文件中写入日志,避免了多线程并发写入导致的文件混乱。
日志输出的多样选择体现了EasyLogger的灵活性,无论是输出到文件还是串口,都可以根据需要配置是否采用异步输出,以适应不同的应用场景与性能需求。
此外,sem_post函数用于解锁由semby指定的信号量,执行对特定信号量的解锁操作。而semop函数则用于执行一组预先定义的信号量操作,适用于对多个信号量进行原子性操作。
在信号量集合仅包含一个信号量的情况下,使用sem_post函数进行操作可能直接替代使用semop函数。这一设计简化了信号量管理,提高了代码的可读性和效率。
EasyLogger源码学习笔记(3)
在EasyLogger源码学习中,枚举变量的使用十分直观。定义枚举类型后,可以直接在代码中操作,提升可读性和代码清晰度。
va_list是一个字符指针,用于在可变参数表中导航和取值。首先,你需要定义一个va_list类型的变量ap,然后通过va_start函数初始化,ap指向变参表的第一个参数,后续的参数获取通过va_arg完成,它会根据指定类型从ap中提取并返回值,同时更新ap的位置。使用完毕后,记得调用va_end来释放ap,以确保程序的健壮性。
对于字符串处理,vsnprintf提供了格式化输出功能,它能在指定长度内限制输出,避免溢出。例如,snprintf函数可以格式化字符串并存储在给定的缓冲区中,确保字符数不超过预设的大小。
在查找字符串时,strstr函数用于在haystack中查找needle首次出现的位置,但不包括结束符。在函数定义中,诸如va_start(args, format)这样的语句用于处理可变参数。
在elog_output函数中,tag_sapce的初始化出现疑问,原因在于需要保证标签对齐,通过memset函数在前面填充空格。这里,用'ELOG_FILTER_TAG_MAX_LEN / 2 - tag_len'的长度来确保足够的空间,而不是'ELOG_FILTER_TAG_MAX_LEN + 1',因为这样可以避免不必要的填充。
在elog_find_tag函数中,返回值的问题在于它实际返回了日志的tag及其后续信息,而不是仅限于tag本身。因此,需要检查并修正这个逻辑,以确保返回正确的内容。
电脑上最好用的速记工具
葫芦笔记的uTools插件,一款适用于Mac、Windows、Linux的速记插件,其源码地址为:github.com/fishyer/utools-plugin-flomo。之所以选择葫芦笔记而非Flomo,主要基于两个原因。 通过访问我的葫芦笔记邀请链接进行注册,您和我都将获得个积分,相当于按专业版价格计算的约6元价值。 如果您对编程感兴趣,想要学习并自行开发插件、云服务、脚本、网站或app,可参考以下资源:我最近创建了一个针对零基础学习者的编程入门群,每周更新一期视频教程。 使用葫芦笔记uTools插件的方法包括:设置葫芦笔记API。
利用uTools,选择"发送文字到葫芦笔记"功能,即可将任意复制的文字记录到每日笔记中。
弹出快速编辑框,输入文字后按回车键,实现快速记录。
此外,为了更好地利用葫芦笔记uTools插件,可参考以下技巧和安装指南。 在使用过程中,如需进一步信息或支持,可查阅相关参考资料。