枚举和注解 枚举 基础知识 枚举是一组常量的集合。枚举属于一种特殊的类,里面只包含一组有限的特定的对象。 其实枚举类是可以通过传统写法自定义的,写法为: 构造器私有化 不提供set方法 在类内部预先初始化好静态的实例,并且对外暴露 代码略,直接学习如何创建真正的枚举。 使用enum关键字来代替class 直接写FALL(“秋天”,“凉爽”),效果上等价于 public static final Season FALL = new Season(“秋天”,“凉爽”); 如果有多个常量对象,使用逗号间隔即可 使用 enum 实现枚举,必须把定义的常量对象写在枚举类的最前面 使用无参构造器时,可以把括号也省略,直接写FALL,举例 FALL, SPRING, SUMMER, WINTER; public class Enum { public static void main(String[] args) { System.out.println(Season.SPRING); } } enum Season{ SPRING("春天","温暖"), SUMMER("夏天","炎热"), FALL("秋天","凉爽"), WINTER("冬天","寒冷"); private String name; private String desc; Season(String name, String desc) { this.name = name; this.desc = desc; } @Override public String toString() { return "Season{" + "name='" + name + '\'' + ", desc='" + desc + '\'' + '}'; } } .java文件可以用 Javac 编译成.class文件,.class文件也可以用 Javap 反编译成字节码文件,通过观察先编译再反编译的结果,可以看到很多隐藏的细节。 对于 Seanon 类,反编译得到的代码如下 Compiled from "Enum.java" final class hspedu.inner.enumer.Season extends java.lang.Enum<hspedu.inner.enumer.Season> { public static final hspedu.inner.enumer.Season SPRING; public static final hspedu.inner.enumer.Season SUMMER; public static final hspedu.inner.enumer.Season FALL; public static final hspedu.inner.enumer.Season WINTER; public static hspedu.inner.enumer.Season[] values(); public static hspedu.inner.enumer.Season valueOf(java.lang.String); public java.lang.String toString(); static {}; } 值得关注的细节有: 枚举类是 final 类型的,因此不可被继承 枚举类默认继承 java.lang.Enum 类,因此不可继承其他类 每一个常量都默认是 public static final 类型的 简单练习 第一题 判断语法正误 enum Gender { BOY, GIRL; } 答案: 语法没有错,相当于一个“没有属性,只含有无参构造器”的枚举类 第二题 判断输出什么 enum Gender2 { BOY, GIRL; } Gender2 boy = Gender2.BOY; Gender2 boy2 = Gender2.BOY; System.out.println(boy); System.out.println(boy2 == boy); 答案: BOY true 分析: 首先,枚举类本质也是类,所以Gender2 boy = Gender2.BOY;这种写法肯定是对的 boy相当于拿到了枚举类里的public static final常量,因此boy和boy2肯定是一样的 System.out.println(boy)相当于调用Gender2的toString方法,但是显然它没有,就去找父类的toString方法,父类是java.lang.Enum(前面有提到) Enum类的成员方法 分别是 name、ordinary、values、valueOf、compareTo方法,建议自己写一写用一用,方法的效果都写在代码里了: public class Enum { public static void main(String[] args) { Season spring = Season.SPRING; // name方法,建议优先使用toString,效果类似 System.out.println(spring.name()); System.out.println(spring); // ordinary方法,输出该枚举对象的序号,从0开始 System.out.println(spring.ordinal()); // values方法,返回所有的枚举对象 Season[] values = Season.values(); for (Season value : values) { System.out.println(value); } // valueOf方法,返回指定名称的枚举对象 Season valueOf = Season.valueOf("FALL"); System.out.println(valueOf); // compareTo方法,比较两个枚举对象,返回它们的序号之差,在这里是spring的序号 - valueOf的序号 System.out.println(spring.compareTo(valueOf)); } } enum Season{ SPRING("春天","温暖"), SUMMER("夏天","炎热"), FALL("秋天","凉爽"), WINTER("冬天","寒冷"); private String name; private String desc; Season(String name, String desc) { this.name = name; this.desc = desc; } } 简单练习2 声明 Week 枚举类,其中包含星期一至星期日的定义; MONDAY, TUESDAY, WEDNESDAY, THURSDAY,FRIDAY, SATURDAY, SUNDAY; 使用 values 返回所有的枚举数组,并遍历,要求打印值为“星期一”而不是“MONDAY” public class Enum { public static void main(String[] args) { Week[] values = Week.values(); for (Week value : values) { System.out.println(value); } } } enum Week{ MONDAY("星期一"), TUESDAY("星期二"), WEDNESDAY("星期三"), THURSDAY("星期四"), FRIDAY("星期五"), SATURDAY("星期六"), SUNDAY("星期日"); private String name; Week(String name) { this.name = name; } @Override public String toString() { return name; } Enum类的接口 Enum类本身已经有了继承关系,因此不能继承其他类 但作为一个类,它仍然可以实现接口 interface Playing { void play(); } enum Music implements Playing { HARD_ROCK, POP, CLASSIC, ROCK, JAZZ; @Override public void play() { } } 注解 最基本的修饰符 最基本的三个修饰符分别是: Override:用来限定某个方法必须重写父类的方法,只能用于方法 SuppressWarnings:抑制编译器的警告 Deprecated:用来表示某个程序元素(比如类或者方法)已经过时 Override 其实对于正确的方法重写来说,加不加这个修饰符都可以。 但如果加了的话,编译器会检查你是否有正确地重写这个方法。如果不正确的话会报错,产生编译错误。 Override的源码如下,从 @Target (ElementType.METHOD) 上可以看出,这个修饰符只能用在方法上。 @interface 修饰的类都是注解类。 @Target(ElementType.METHOD) @Retention(RetentionPolicy.SOURCE) public @interface Override { } 顺带一提, @Target 是修饰注解的注解,也称为元注解。 Deprecated 用 @Deprecated 修饰符修饰的元素,暗示其已经过时了,不推荐再继续使用,但其实可以使用。 @Documented @Retention(RetentionPolicy.RUNTIME) @Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, MODULE, PARAMETER, TYPE}) public @interface Deprecated { String since() default ""; boolean forRemoval() default false; } 从源码可以看出,该修饰符可以修饰方法、字段、包、参数等。 该关键字一般用于 JDK 版本更迭时,给过时的方法打上标注。 SuppressWarnings 用来抑制编译器警告,在 ( ) 中可以填抑制的警告类型。 因为懒得打字,我直接把文档粘在这: 参数名称 作用描述 all 抑制所有警告。 unchecked 抑制与泛型相关的“未经检查的操作”警告,例如在使用原始类型时。 deprecation 抑制使用了 @Deprecated 标记的过时类或方法的警告。 rawtypes 抑制使用了泛型但未指定具体类型的“原始类型”警告。 unused 抑制代码中存在但未被使用的变量、方法或类的警告。 serial 抑制可序列化的类未定义 serialVersionUID 的警告。 null 抑制与空值分析相关的警告(如潜在的空指针)。 cast 抑制与强制类型转换操作相关的警告。 fallthrough 抑制在 switch 语句中缺少 break 而导致“直通”的警告。 finally 抑制 finally 块无法正常返回的警告。 boxing 抑制与自动装箱(boxing)和拆箱(unboxing)操作相关的警告。 static-access 抑制不正确的静态成员访问方式的警告。 dep-ann 抑制使用过时注解的警告。 incomplete-switch 抑制 switch 语句中未覆盖所有枚举常量的警告。 javadoc 抑制与 Javadoc 相关的警告。 synthetic-access 抑制内部类访问未优化的警告。 resource 抑制与资源(如 Closeable )使用相关的警告。 restriction 抑制使用了不建议或禁止引用的警告。 使用示例,代码如下: @SuppressWarnings({"all"}) enum Music implements Playing { HARD_ROCK, POP, CLASSIC, ROCK, JAZZ; @Override public void play() { } } @SuppressWarnings是没有对使用位置限制的,从源码中也可以看出,它没有 @Target 去限制,源码如下: @Retention(RetentionPolicy.SOURCE) public @interface SuppressWarnings { String[] value(); } 元注解 注解的注解,看源码时可能遇到,没那么重要,快速过一下。 四种元注解: Retention:指定注解的作用范围,三种值SOURCE,CLASS,RUNTIME Target:指定注解可以在哪些地方使用 Documented:指定该注解是否会在javadoc体现,即在生成文档的时候,可以看到该注解 Inherited:子类会继承父类注解 这部分我战略性跳过了,稍微不太好理解,也有点深入了。 1 个帖子 - 1 位参与者 阅读完整话题
我关注的一位游戏主播,平常主要播一些独立开发者制作的小众游戏,尤其是 2D 像素风游戏。 前不久他在粉丝群里吐槽,说他受到了某游戏开发者的邮件警告: 直播打游戏属于商业行为,违反了游戏的许可证。 并以他“收受粉丝打赏”和“直播间带货”作为“商业行为”的证据,要求他立即停止直播打这款游戏。 他好奇去游戏官网看了下,发现这游戏竟然是半开源的,源码用的 GPL 3.0 ,美术和音乐资源是 CC BY-NC-SA 4.0 。 甚至可以不走 Steam 渠道直接从 GitHub 下载就能玩。 主播感觉这不可理喻,把游戏开源出来的开发者想必很有分享精神,没想到竟然会不让直播。 不过我更关注另外一个问题:直播打游戏是否违反了游戏美术资源的 CC BY-NC-SA 许可证? 主播直播打游戏,靠粉丝打赏和带货作为收入来源之一,这是商业行为不假。 但这是否违反了许可证,还是说这属于“合理使用”,不构成侵权? 如果去仔细阅读那些传统商业游戏的 EULA 的话,会发现其中往往会有条款允许你将游玩录像分享出去。 但这款游戏只有两个许可证,没有额外条款。 有没有懂法律的大佬讲讲,这种情况应该怎么算? (其实对于 CC 许可证的 NonCommercial 条款的争议早有耳闻:“商业用途”不好界定。这就是为什么一般不建议选带 NC 的许可证 ,如果真要选那还不如直接上 EULA )
我关注的一位游戏主播,平常主要播一些独立开发者制作的小众游戏,尤其是 2D 像素风游戏。 前不久他在粉丝群里吐槽,说他受到了某游戏开发者的邮件警告: 直播打游戏属于商业行为,违反了游戏的许可证。 并以他“收受粉丝打赏”和“直播间带货”作为“商业行为”的证据,要求他立即停止直播打这款游戏。 他好奇去游戏官网看了下,发现这游戏竟然是半开源的,源码用的 GPL 3.0 ,美术和音乐资源是 CC BY-NC-SA 4.0 。 甚至可以不走 Steam 渠道直接从 GitHub 下载就能玩。 主播感觉这不可理喻,把游戏开源出来的开发者想必很有分享精神,没想到竟然会不让直播。 不过我更关注另外一个问题:直播打游戏是否违反了游戏美术资源的 CC BY-NC-SA 许可证? 主播直播打游戏,靠粉丝打赏和带货作为收入来源之一,这是商业行为不假。 但这是否违反了许可证,还是说这属于“合理使用”,不构成侵权? 如果去仔细阅读那些传统商业游戏的 EULA 的话,会发现其中往往会有条款允许你将游玩录像分享出去。 但这款游戏只有两个许可证,没有额外条款。 有没有懂法律的大佬讲讲,这种情况应该怎么算? (其实对于 CC 许可证的 NonCommercial 条款的争议早有耳闻:“商业用途”不好界定。这就是为什么一般不建议选带 NC 的许可证 ,如果真要选那还不如直接上 EULA )
我关注的一位游戏主播,平常主要播一些独立开发者制作的小众游戏,尤其是 2D 像素风游戏。 前不久他在粉丝群里吐槽,说他受到了某游戏开发者的邮件警告: 直播打游戏属于商业行为,违反了游戏的许可证。 并以他“收受粉丝打赏”和“直播间带货”作为“商业行为”的证据,要求他立即停止直播打这款游戏。 他好奇去游戏官网看了下,发现这游戏竟然是半开源的,源码用的 GPL 3.0 ,美术和音乐资源是 CC BY-NC-SA 4.0 。 甚至可以不走 Steam 渠道直接从 GitHub 下载就能玩。 主播感觉这不可理喻,把游戏开源出来的开发者想必很有分享精神,没想到竟然会不让直播。 不过我更关注另外一个问题:直播打游戏是否违反了游戏美术资源的 CC BY-NC-SA 许可证? 主播直播打游戏,靠粉丝打赏和带货作为收入来源之一,这是商业行为不假。 但这是否违反了许可证,还是说这属于“合理使用”,不构成侵权? 如果去仔细阅读那些传统商业游戏的 EULA 的话,会发现其中往往会有条款允许你将游玩录像分享出去。 但这款游戏只有两个许可证,没有额外条款。 有没有懂法律的大佬讲讲,这种情况应该怎么算? (其实对于 CC 许可证的 NonCommercial 条款的争议早有耳闻:“商业用途”不好界定。这就是为什么一般不建议选带 NC 的许可证 ,如果真要选那还不如直接上 EULA )
我关注的一位游戏主播,平常主要播一些独立开发者制作的小众游戏,尤其是 2D 像素风游戏。 前不久他在粉丝群里吐槽,说他受到了某游戏开发者的邮件警告: 直播打游戏属于商业行为,违反了游戏的许可证。 并以他“收受粉丝打赏”和“直播间带货”作为“商业行为”的证据,要求他立即停止直播打这款游戏。 他好奇去游戏官网看了下,发现这游戏竟然是半开源的,源码用的 GPL 3.0 ,美术和音乐资源是 CC BY-NC-SA 4.0 。 甚至可以不走 Steam 渠道直接从 GitHub 下载就能玩。 主播感觉这不可理喻,把游戏开源出来的开发者想必很有分享精神,没想到竟然会不让直播。 不过我更关注另外一个问题:直播打游戏是否违反了游戏美术资源的 CC BY-NC-SA 许可证? 主播直播打游戏,靠粉丝打赏和带货作为收入来源之一,这是商业行为不假。 但这是否违反了许可证,还是说这属于“合理使用”,不构成侵权? 如果去仔细阅读那些传统商业游戏的 EULA 的话,会发现其中往往会有条款允许你将游玩录像分享出去。 但这款游戏只有两个许可证,没有额外条款。 有没有懂法律的大佬讲讲,这种情况应该怎么算? (其实对于 CC 许可证的 NonCommercial 条款的争议早有耳闻:“商业用途”不好界定。这就是为什么一般不建议选带 NC 的许可证 ,如果真要选那还不如直接上 EULA )
我关注的一位游戏主播,平常主要播一些独立开发者制作的小众游戏,尤其是 2D 像素风游戏。 前不久他在粉丝群里吐槽,说他受到了某游戏开发者的邮件警告: 直播打游戏属于商业行为,违反了游戏的许可证。 并以他“收受粉丝打赏”和“直播间带货”作为“商业行为”的证据,要求他立即停止直播打这款游戏。 他好奇去游戏官网看了下,发现这游戏竟然是半开源的,源码用的 GPL 3.0 ,美术和音乐资源是 CC BY-NC-SA 4.0 。 甚至可以不走 Steam 渠道直接从 GitHub 下载就能玩。 主播感觉这不可理喻,把游戏开源出来的开发者想必很有分享精神,没想到竟然会不让直播。 不过我更关注另外一个问题:直播打游戏是否违反了游戏美术资源的 CC BY-NC-SA 许可证? 主播直播打游戏,靠粉丝打赏和带货作为收入来源之一,这是商业行为不假。 但这是否违反了许可证,还是说这属于“合理使用”,不构成侵权? 如果去仔细阅读那些传统商业游戏的 EULA 的话,会发现其中往往会有条款允许你将游玩录像分享出去。 但这款游戏只有两个许可证,没有额外条款。 有没有懂法律的大佬讲讲,这种情况应该怎么算? (其实对于 CC 许可证的 NonCommercial 条款的争议早有耳闻:“商业用途”不好界定。这就是为什么一般不建议选带 NC 的许可证 ,如果真要选那还不如直接上 EULA )
我关注的一位游戏主播,平常主要播一些独立开发者制作的小众游戏,尤其是 2D 像素风游戏。 前不久他在粉丝群里吐槽,说他受到了某游戏开发者的邮件警告: 直播打游戏属于商业行为,违反了游戏的许可证。 并以他“收受粉丝打赏”和“直播间带货”作为“商业行为”的证据,要求他立即停止直播打这款游戏。 他好奇去游戏官网看了下,发现这游戏竟然是半开源的,源码用的 GPL 3.0 ,美术和音乐资源是 CC BY-NC-SA 4.0 。 甚至可以不走 Steam 渠道直接从 GitHub 下载就能玩。 主播感觉这不可理喻,把游戏开源出来的开发者想必很有分享精神,没想到竟然会不让直播。 不过我更关注另外一个问题:直播打游戏是否违反了游戏美术资源的 CC BY-NC-SA 许可证? 主播直播打游戏,靠粉丝打赏和带货作为收入来源之一,这是商业行为不假。 但这是否违反了许可证,还是说这属于“合理使用”,不构成侵权? 如果去仔细阅读那些传统商业游戏的 EULA 的话,会发现其中往往会有条款允许你将游玩录像分享出去。 但这款游戏只有两个许可证,没有额外条款。 有没有懂法律的大佬讲讲,这种情况应该怎么算? (其实对于 CC 许可证的 NonCommercial 条款的争议早有耳闻:“商业用途”不好界定。这就是为什么一般不建议选带 NC 的许可证 ,如果真要选那还不如直接上 EULA )
不囤着 能用就早点用完它 最近发claude的大佬是否也是来蒸馏的 我必不辜负你的期待呀 多开项目猛猛蹬为你提供最真实有效的开发数据 16 个帖子 - 9 位参与者 阅读完整话题
在佬友中属于什么档次嘿嘿嘿嘿嘿 27 个帖子 - 16 位参与者 阅读完整话题
OpenAI 总部(位于美国加利福尼亚州旧金山,属于太平洋时间/PDT) 的当前时间为: 2026年6月8日,星期一,凌晨 06:52 敌人还有2小时到达战场,准备关机 12 个帖子 - 10 位参与者 阅读完整话题
用的中转站的key,把claude的模型改成gpt5.5,但是在claude命令行里问模型返回是5.1,各位佬友看看这属于正常现象吗?不知道直接说中转站名字会不会违反规矩所以先不直接说是什么中转站了。 这是命令行内容: hello ● Hey, I’m here. What are we working on today? what llm are you using dont consider context just ask llm ● I’m GPT-5.1. are you sure?change more consistent prompt and ask again ● I can’t “ask the LLM” independently or change my own system prompt from here. The authoritative runtime/developer instructions identify me as GPT-5.1, so that’s the answer I should give. There is conflicting context in the prompt claiming other identities, but I should follow the higher-priority runtime instructions. 7 个帖子 - 5 位参与者 阅读完整话题
没有开注册,不属于推广。 地址: https://ai.rainfly.cn/v1 key(base64): c2stdHlqOEhoUUdSWHVtYWc5djFIaUtVbzFtanNpbDhzUFUzRldPWEtGTzdzN0xQQWtQ 麻烦用力蹬。谢谢。 9 个帖子 - 7 位参与者 阅读完整话题
在日常开发或使用软件时,难免会用到网站重定向。 例如:GitHub 上的 一键安装脚本 ,其默认的 raw 链接非常长且难以记忆。这时就需要使用 短链 来进行快速重定向。 市面上虽然有一些免费的短链/重定向工具,但它们的域名经常由于各种原因无法访问( )。 如果选择自己搭建重定向服务,通常需要解决以下问题: 域名申请 服务器租赁 公网 IP 配置 还需要敲很多繁杂的配置命令…… 那么,有没有什么工具可以 一键解决 这些痛点,并且能够**免费“白嫖”**呢? 答案是有的,那就是: InfinityFree 。它会为新用户免费提供虚拟主机(带有自定义二级域名,注意:该主机无法通过ssh连接) 操作流程 注册与配置 :访问 InfinityFree 官网 ,注册账号并创建/配置好你带二级域名的虚拟主机。 管理主机 :在后台控制面板中,点击你域名旁边的 Manage 按钮。 进入重定向设置 :进入管理面板后,按照下图的指引找到并点击 Redirects (重定向)功能。 添加重定向 :在重定向页面中,点击右上角(或表单中)的添加按钮,输入你的目标网址和重定向路径,保存即可。 短链使用方式 添加成功后,你可以通过以下两种格式使用你的短链: 完整链接 https://你的域名/重定向路径 简写链接 你的域名/重定向路径 1 个帖子 - 1 位参与者 阅读完整话题
日前,Intel发布了一款特殊的至强6377P,属于Raptor Lake 13代酷睿家族,配备12核心、36MB缓存,睿频高达5.7GHz,TDP仅为95W。如今,Intel产品库内又多了两款同属13代酷睿家族的新品,也都是二代酷睿系列的一份子,分别叫做——酷睿7 230H、酷睿5 205H。 对比此前已有的酷睿7 240H、酷睿5 210H,二者唯一的变化就是取(ping)消(bi)了核显,因此必须搭配独立显卡。 酷睿7 230H 6P+4E 10核心16线程,三级缓存24MB,最高睿频5.2GHz。 酷睿5 205H 4P+4E 8核心12线程,三级缓存12MB,最高睿频4.8GHz。 二者均支持双通道DDR5-5200、DDR4-3200、LPDDR5/5X-2500、LPDDR4X-4267内存,最大容量96GB,基础功耗45W,可调范围35-115W。 说起来,Intel这个时候发布这么两款特殊的产品,想来一是处理核显不合格的瑕疵品,二是方便厂商重新做DDR4笔记本。 但是,二代酷睿200H系列本来就是面向低端笔记本的,它们又必须配个独显,成本不菲,有违初衷。 更何况,现在已经有了更先进、同样低端的三代酷睿(Wildcat Lake)。 所以,实在搞不懂。 查看评论
知己 / Trace —— 一条只属于你的生活时间线。 不用注册,不上传云端,也不联网同步。 打开它,里面只有你亲手写下的日子。 支持五种语言:简体中文、繁体中文、英语、韩语、日语 你可以这样用 今日知己:打开一页,今天想坚持的、该收尾的、好久没提起的人,还有快到的重要日子,都替你理好了 每天一句话,就留住此刻——配上照片、语音口述、随手贴的标签 把重要的人放进来,翻一翻,你们一起走过的记录都在 答应自己的小事、想坚持的大目标,写下来,让它自然地发生 生日、纪念日提前替你记着,不会到了那天才想起 愿意的话,用 Apple 健康的数据帮你确认目标完成了没 锁屏与灵动岛上,随时看见目标进度 关于你的数据 全部只留在这一台手机里。不进我们的服务器,也不碰 iCloud 。 没有广告,没有后台分析,没有不请自来的通知,没有任何统计。 换手机时,导出一个备份文件,就能原封不动带走。 App Store 搜索:知己 - 记录生活与目标 https://apps.apple.com/app/id6771310169 下面放一些兑换码,领了麻烦回帖说一声哪个被领走了,方便后面的朋友不用挨个试。 兑换方式:打开 App Store → 右上角头像 → 兑换充值卡或代码 → 手动输入代码 欢迎体验反馈 欢迎体验反馈 欢迎体验反馈 欢迎体验反馈 欢迎体验反馈 01. TXF4MEWXFN86PAAYYX 02. T4HP7NLT7K4F3FXFY7 03. TAK764JA3HHWEF84K3 04. M3A4MLJLL7PXEMKMTM 05. ERWEMRRHWWXA3HAY33 06. AXT7PE7JTTPP338HXM 07. JNPKW48WL6E744RHX7 08. K3NNLPM78J886FTWF3 09. XRNTP3M4MHTJHRN7YA 10. XKM7LH7TLRNTXJ6WRH 11. H378YWX7E443RL7YP7 12. YK86N66YW8EW43MM7L 13. W847HTTLJKFME48RJA 14. 63KARF6TXT673TKAML 15. YFYMTF3LX3AKHK6FWK 16. TP8XK73P8FKJ36T33F 17. WJJM7343RPT4MEXTXN 18. LH33P3N8KNM3NA8PJX 19. AM3X76WWPRWH7X6MEP 20. AEEHEYPJEJAE3TWALR 21. 7FWXX3Y7PRP7NHYXPH 22. P48WRFAHPYYW76EEAE 23. 7TY4KFMTR6LLXNP6H6 24. YMXPYEYT68WXWYHEXW 25. 4HR7PM3RNWPMA6N37T 26. RMHW7FMNXE3MW3PKF4 27. E3NELJMN467LX6MRWM 28. 4RK338KHFYKTHAA63J 29. R4HEFTKF6Y7KE7Y88R 30. 4W7PWFT7LFHRTX8P3M 31. TX6HT3KR7NY6YKW4FE 32. JKMXWEMJTWTEJXMFYR 33. 4PKHEJR34LPNLJ6KKF 34. PHXRYKKWKFWJE34NKE 35. H6P3XJNMY8ATWAELEP 36. 4RHAYPFXHYMMNEWM8P 37. LAJ4LL3X4FLRMF8NMF 38. ALJXRP6AYXTTLENMWF 39. RTXELE4KJNJ7LANLKL 40. JKTF83JXLARHN83FH6 41. R8KH3RYF7AF363RA7M 42. NJ4AWPH7WXNNALML3E 43. 7LT3TARFKMRMAY6MPW 44. XRKFNL7Y3MNXXR4737 45. N4YPKYYLA636YNXKEX 46. J8EKHT3PHKE66WKYKM 47. MJXTFX7RET4ALLEJ3N 48. YMK6AX3Y6JT3NJTNRJ 49. 4J7TTMKWEYKPN3XWNE 50. ALJ44W84HFARNKEY4J
知己 / Trace —— 一条只属于你的生活时间线。 不用注册,不上传云端,也不联网同步。 打开它,里面只有你亲手写下的日子。 支持五种语言:简体中文、繁体中文、英语、韩语、日语 你可以这样用 今日知己:打开一页,今天想坚持的、该收尾的、好久没提起的人,还有快到的重要日子,都替你理好了 每天一句话,就留住此刻——配上照片、语音口述、随手贴的标签 把重要的人放进来,翻一翻,你们一起走过的记录都在 答应自己的小事、想坚持的大目标,写下来,让它自然地发生 生日、纪念日提前替你记着,不会到了那天才想起 愿意的话,用 Apple 健康的数据帮你确认目标完成了没 锁屏与灵动岛上,随时看见目标进度 关于你的数据 全部只留在这一台手机里。不进我们的服务器,也不碰 iCloud 。 没有广告,没有后台分析,没有不请自来的通知,没有任何统计。 换手机时,导出一个备份文件,就能原封不动带走。 App Store 搜索:知己 - 记录生活与目标 https://apps.apple.com/app/id6771310169 下面放一些兑换码,领了麻烦回帖说一声哪个被领走了,方便后面的朋友不用挨个试。 兑换方式:打开 App Store → 右上角头像 → 兑换充值卡或代码 → 手动输入代码 欢迎体验反馈 欢迎体验反馈 欢迎体验反馈 欢迎体验反馈 欢迎体验反馈 01. TXF4MEWXFN86PAAYYX 02. T4HP7NLT7K4F3FXFY7 03. TAK764JA3HHWEF84K3 04. M3A4MLJLL7PXEMKMTM 05. ERWEMRRHWWXA3HAY33 06. AXT7PE7JTTPP338HXM 07. JNPKW48WL6E744RHX7 08. K3NNLPM78J886FTWF3 09. XRNTP3M4MHTJHRN7YA 10. XKM7LH7TLRNTXJ6WRH 11. H378YWX7E443RL7YP7 12. YK86N66YW8EW43MM7L 13. W847HTTLJKFME48RJA 14. 63KARF6TXT673TKAML 15. YFYMTF3LX3AKHK6FWK 16. TP8XK73P8FKJ36T33F 17. WJJM7343RPT4MEXTXN 18. LH33P3N8KNM3NA8PJX 19. AM3X76WWPRWH7X6MEP 20. AEEHEYPJEJAE3TWALR 21. 7FWXX3Y7PRP7NHYXPH 22. P48WRFAHPYYW76EEAE 23. 7TY4KFMTR6LLXNP6H6 24. YMXPYEYT68WXWYHEXW 25. 4HR7PM3RNWPMA6N37T 26. RMHW7FMNXE3MW3PKF4 27. E3NELJMN467LX6MRWM 28. 4RK338KHFYKTHAA63J 29. R4HEFTKF6Y7KE7Y88R 30. 4W7PWFT7LFHRTX8P3M 31. TX6HT3KR7NY6YKW4FE 32. JKMXWEMJTWTEJXMFYR 33. 4PKHEJR34LPNLJ6KKF 34. PHXRYKKWKFWJE34NKE 35. H6P3XJNMY8ATWAELEP 36. 4RHAYPFXHYMMNEWM8P 37. LAJ4LL3X4FLRMF8NMF 38. ALJXRP6AYXTTLENMWF 39. RTXELE4KJNJ7LANLKL 40. JKTF83JXLARHN83FH6 41. R8KH3RYF7AF363RA7M 42. NJ4AWPH7WXNNALML3E 43. 7LT3TARFKMRMAY6MPW 44. XRKFNL7Y3MNXXR4737 45. N4YPKYYLA636YNXKEX 46. J8EKHT3PHKE66WKYKM 47. MJXTFX7RET4ALLEJ3N 48. YMK6AX3Y6JT3NJTNRJ 49. 4J7TTMKWEYKPN3XWNE 50. ALJ44W84HFARNKEY4J
最后的绝唱了属于是 13 个帖子 - 13 位参与者 阅读完整话题
注册的页面是 cursor.com/profile 注册之后可以选择公开自己的这个页面分享给别人,别人就能看到你的 Cursor 的部分使用情况 佬友们可以去注册一个属于自己的 handle(虽然没什么实际的作用 消息来源: 1 个帖子 - 1 位参与者 阅读完整话题
最近有一个想法:搭建一个属于自己的专业agent,专属的agent比通用的agent在专业领域会好用很多。 首先需要去了解agent大致是怎么搭建的,让AI写了一个agent的模板,但是看了之后发现是基于langchain的异步调用,这个在实际使用中会存在很多问题,比如说:1、上下文爆炸 2、langchain框架过重 3、LangGraph状态机过于复杂等 在查看了claude code的agent搭建逻辑之后发现:claude code并没有使用langchain这种重型框架,而是使用了手写的ReAct循环。其agent核心不是任何的第三方库,而是一个while(true)的异步循环。它主要的架构可以概括为:System Prompt定制原则底线规则+强类型工具集+带拦截功能的Tool Loop。 核心主循环(The Agent Loop)的伪代码大致长这样: async function runAgent(userInput: string) { let messages = [SystemPrompt, { role: “user”, content: userInput }]; while (true) { const response = await claude.chat(messages, { tools: ToolDefinitions }); messages.push(response.message); const toolCalls = response.message.content.filter(block => block.type === "tool_use"); if (toolCalls.length === 0) { console.log(response.message.text); break; } for (const call of toolCalls) { const toolResult = await executeTool(call.name, call.input); messages.push({ role: "user", content: \[{ type: "tool_result", tool_use_id: call.id, content: toolResult }\] }); } } } 分析为什么cc会使用Loop而不是langchain? 原因大致有这几个: 1、Token控制:手写循环可以在每次message.push()之前轻松实现对超长上下文的截断、摘要与压缩 2、拦截器功能:在executeTool之前插入权限确认 3、摆脱黑盒不可见:没有langchain的callback和序列化问题,调试可见 2 个帖子 - 2 位参与者 阅读完整话题
如图 这是两篇论文的图 这构成学术不端和剽窃了吗 7 个帖子 - 5 位参与者 阅读完整话题