- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
在互联网上,很多技术博客和文章引入代码段来帮助读者理解技术思路或记录对某个大型模块的原理分析和理解。然而,由于版本管理和技术变化,很多历史文章在读者读到精髓时,发现引入的代码块没有来源信息,导致不能对这个思路进行完整的了解,影响了读者的学习效果.
和ChatGpt 在关于这个问题上,做了一番详细的讨论,由此萌发了让我推动代码可溯源的动力.
在博客或文章中引入代码块但没有引入代码的来源可能导致以下问题:
为了解决这些问题,建议在博客或文章中引入代码块时,尽量提供代码的来源信息。这可以通过添加注释、链接到代码仓库或引用出处等方式来实现。这样可以提供更完整的信息,增加文章的可信度,同时尊重代码作者的权益.
传统的Markdown语法中,并没有内置的方式来指定代码块的高亮行数。通常,Markdown的代码块只是用于展示代码,而不支持精确指定高亮行数的功能。 然而,一些扩展的Markdown解析器或编辑器可能提供了自定义的语法或插件,以支持在代码块中指定高亮行数。这些扩展可以根据不同的工具和插件而有所不同。 以下是一些常见的Markdown扩展和工具,它们可能提供了在代码块中指定高亮行数的功能:
```java {highlight=[1,3-5,7]}
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, world!"); // 第1行、第3到第5行、第7行高亮
}
}
Github Markdown 有人对此有一些建议 Allow to highlight lines in a code block (github flavored markdown) #42489 。
Github permalink github提供一种可以支持高亮以及版本信息的永久链接,给这个项目提供了思路,通过 Shift 可以多选行数,然后右击选择 permalink(永久链接). 。
OomAdjuster.java#L3127-L3129 。
和 ChatGpt 讨论如何设计新的标准过程中,对于新的标准定义,它也持续为了输出了想法:
```java [链接名](链接地址)
// 代码内容
```
这样就可以在代码块中添加一个链接,链接名将显示为可点击的文本,点击后会跳转到指定的链接地址.
```java {起始行号}-{结束行号} {高亮行号1} {高亮行号2} ...
代码内容
例如,如果你想指定起始行为第3行,高亮第4行和第5行的Java代码块,可以使用以下格式:
```java {3-} {4 5}
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, world!"); // 第4行高亮
System.out.println("Welcome!"); // 第5行高亮
}
}
在上述示例中,起始行号为3,结束行号为空,表示从第3行到代码块结束的所有行。高亮行号1和高亮行号2分别表示第4行和第5行.
请注意,这只是一种示例设计,具体的实现方式可能因你使用的Markdown解析器或编辑器而有所不同。建议查阅你所使用的工具的文档,以了解是否支持在代码块中同时指定起始行和高亮行,并查找相应的语法或插件来实现你的需求.
```语言 {起始行-结束行} {高亮起始行-高亮结束行} (LINK)
// 代码内容
```java {3125-3131} {3126-3130} (https://github.com/10cl/fwkdev/blob/android-13.0.0_r52/dev/src/frameworks/base/services/core/java/com/android/server/am/OomAdjuster.java#L3125-L3131)
// Use current adjustment when freezing, set adjustment when unfreezing.
if (state.getCurAdj() >= ProcessList.CACHED_APP_MIN_ADJ && !opt.isFrozen()
&& !opt.shouldNotFreeze()) {
mCachedAppOptimizer.freezeAppAsyncLSP(app);
} else if (state.getSetAdj() < ProcessList.CACHED_APP_MIN_ADJ) {
mCachedAppOptimizer.unfreezeAppLSP(app, oomAdjReason);
}
}
```
通过点击 view raw 即可直达代码来源以及对于的版本信息.
页面效果见: source.toscl.com 。
考虑到很多 markdown 解析工具,对新的标准支持有一定的工作量以及兼容性问题,通过原有的 markdown 格式,也能实现代码块的可追溯, 这里也鼓励这种新的方式来写代码块.
```java
// Use current adjustment when freezing, set adjustment when unfreezing.
if (state.getCurAdj() >= ProcessList.CACHED_APP_MIN_ADJ && !opt.isFrozen()
&& !opt.shouldNotFreeze()) {
mCachedAppOptimizer.freezeAppAsyncLSP(app);
} else if (state.getSetAdj() < ProcessList.CACHED_APP_MIN_ADJ) {
mCachedAppOptimizer.unfreezeAppLSP(app, oomAdjReason);
}
}
```
[OomAdjuster.java#L3125-L3131](https://github.com/10cl/fwkdev/blob/android-13.0.0_r52/dev/src/frameworks/base/services/core/java/com/android/server/am/OomAdjuster.java#L3125-L3131)
// Use current adjustment when freezing, set adjustment when unfreezing.
if (state.getCurAdj() >= ProcessList.CACHED_APP_MIN_ADJ && !opt.isFrozen()
&& !opt.shouldNotFreeze()) {
mCachedAppOptimizer.freezeAppAsyncLSP(app);
} else if (state.getSetAdj() < ProcessList.CACHED_APP_MIN_ADJ) {
mCachedAppOptimizer.unfreezeAppLSP(app, oomAdjReason);
}
}
OomAdjuster.java#L3125-L3131 因为我个人长期在和 AOSP 这套大型源码打交道,用这个方式如果手动来写,难免有点困难,所以专门开发了一款插件用来一键复制指定代码块的 Markdown 样式
MarkdownQuote 是JetBrains插件,可以帮助你在IDE中高效地复制代码围栏,更多细节请参阅 SourceCodeTrace项目 .
目前这个插件已经上架到 Jetbrains IDE 市场,可以直接在 IDE中: File -> Settings -> Plugins -> 搜索 "MarkdownQuote" 安装体验.
因为是新的样式,还需要有解析的支持,我差不多使用了10年的 Sublime,比较热衷于使用这款轻量级的编辑器,管理了很多文字上的工作,所以准备在 Sublime 上尝试。 Sublime 上基于 pymdownx 有一款 MarkdownPreview 插件,我在这个上面改了一版解析的流程,但是作为网站的显示,中间还需要一些工作要做,暂时没法上线.
vuepress 是比较便捷的在线网站生成框架,基于 markdown-it 生成 markdown样式,因此,基于这个框架上,写了一款插件,并上架到了 NPM: markdown-it-quote 是一个用于 markdown-it 的插件,支持多种代码围栏功能.
目前所有开发的功能均是开源的形式,旨在推广代码的可溯源.
SourceCodeTrace(源代码追溯)这个组织名称可以传达以下含义:
描述SourceCodeTrace组织的可能的logo设计方案: Logo设计:
请注意,这只是一个示例设计描述,你可以根据自己的喜好和需求进行调整和修改。当设计Logo时,确保它与你的组织价值观和宣传目标相一致,并尽量保持简洁、易识别和具有独特性。最重要的是,确保Logo能够在不同尺寸和背景下保持清晰可见。如果需要进一步的设计或修改,可以咨询专业的图形设计师或使用在线Logo设计工具来实现你的想法.
要推广你的组织和传播组织的思想,你可以采取以下策略:
推动代码块来源的设计和传播相关的思想是有意义的。以下是一些原因:
最后此篇关于关于推动可追溯代码来源的计划的文章就讲到这里了,如果你想了解更多关于关于推动可追溯代码来源的计划的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我的程序有问题。 我有一个比较两个字符串的条件: (if (eq? (exp1) (exp2))) 当 exp1 给我一个字符串,exp2 给我一个字符串。可以肯定的是,当我更改“eq?”时到“=”,
我们有多种主要使用 GWT 开发的产品,目前由我们的最终客户使用。 想知道 GWT 的路线图。我得到了一些非官方的更新,谷歌正在将 GWT 中开发的产品转移到其他一些新技术。这是真的吗? GWT 的长
我希望每 15 分钟定期构建一次。我在网上看过,我正在使用这个时间表:*/15 * * * * Jenkins 告诉我使用 H/15 * * * * 来平均分配负载而不是 */15 * * * * 有
所以我正试图在 Scheme 中找出整个 call/cc 的东西。下面是我正在使用的代码: (+ 1 (call/cc (lambda (k) (if (number? k)
所以我正试图在 Scheme 中找出整个 call/cc 的东西。下面是我正在使用的代码: (+ 1 (call/cc (lambda (k) (if (number? k)
我们有一个 Azure WebJob,计划在 UTC 每天上午 8:00 运行(CRON - 0 00 08 * * *)。大多数时候它都会正确触发,但有时会触发两次(第二次运行)第一次运行后约 10
我是 Terraform 的新手。我正在尝试通过 azure 管道创建一个简单的存储帐户,但是当我运行我的管道时,我收到错误“太多命令行参数”。我很震惊,我不知道自己做错了什么。有人可以帮忙吗。 这是
我想在某些逻辑中间停止芭蕾舞 Actor 程序。如何使用代码停止 ballerina 中正在运行的程序?我正在寻找相当于 java 中的 System.exit(0) 的东西。 最佳答案 我相信您正在
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 8年前关闭。 Improve this qu
我们有一个 Azure WebJob,计划在 UTC 每天上午 8:00 运行(CRON - 0 00 08 * * *)。大多数时候它都会正确触发,但有时会触发两次(第二次运行)第一次运行后约 10
我是 Terraform 的新手。我正在尝试通过 azure 管道创建一个简单的存储帐户,但是当我运行我的管道时,我收到错误“太多命令行参数”。我很震惊,我不知道自己做错了什么。有人可以帮忙吗。 这是
我正在浏览 htdp 并在一开始的某个地方发现了这个:- Explain why the following sentences are illegal definitions: 1. (define
我正在使用 Laravel 开发成员(member)门户。 成员(member)资格有不同的类别,例如1) 单人2) 成人3) 家庭以及不同价格的所有类型。 我有一个 plans 表和 plans_s
我使用 DreamHost 作为我的网站的服务器,并且我尝试每天、每周和每月执行某个 MySQL 查询来更改我的网站的数据库。我开始在本地主机上使用事件调度程序,然后我发现我无法在 DreamHost
这周我的 crontab 作业发生了一个问题。 设置如下,每两周正常运行一次,直到现在。 10 06 * * 1 test $(($(date +\%W)\%2)) -eq 0 && echo 'te
编写了一个简单的脚本,它将在日志文件中写入日期时间戳,并且每次运行该脚本时,它都会附加到该日志文件中。 #!/bin/sh echo $(date) >> log.txt 当我尝试每 1 分钟安排一次
我对 PIPE 的了解是它用于单向通信,它有助于在两个相关进程之间进行通信。我从一本书中得到了下面的 PIPE 编程代码示例。我正在尝试使用 printf 理解代码并在代码的每一行之后打印出所有点。但
代码如下: (define make-simple-sv-num (lambda (delare) (let ((tal (random-from-to 100000 1000000)))
我目前正在使用“How To Design Programs”——使用 Scheme/Racket;我在 Scheme 的 R5RS 版本中遇到了一个非常奇特的功能。 在进行简单的减法时,尽管使用的是
我想确定时间表的详细信息。例如: 我有一个事件的时间表:event.schedule "Every 3 months on the 10th day of the month" 由哈希表示: {
我是一名优秀的程序员,十分优秀!