登录社区云,与社区用户共同成长
邀请您加入社区
从第 1 课在屏幕上打出第一行你好,仓颉,到今天把一份真实的 GeoJSON 读进来、容错解析、统计计算、写出 CSV——你已经走完了一门语言入门阶段最完整的闭环:语法、类型系统、集合、错误处理、面向对象、泛型、工程化、并发,最后落成两个能天天用的小程序。把身边的小麻烦写成程序——批量改文件名、整理导出的数据、定时跑的检查脚本,第 29、30 课的两个骨架(交互式工具、数据处理流水线)足以装下大多
【仓颉语言入门 · 第29课】实战一:带文件持久化的命令行小工具项目实战模块开张。前 29 课学的零件一直散在小例子里:类在第 15、16 课,集合在第 8 课,读键盘在第 3 课,文件读写在第 22 课,异常在第 10 课,多文件工程在第 21 课。今天第一次把它们——命令行待办清单:启动时自动读文件,敲键盘增、查、勾、删,。本文。
worker 是。
本文通过将Mac终端移植到Windows的真实案例,揭示了跨平台开发的真相:移植绝不仅仅是代码翻译。核心难点在于填补原系统在底层默默代劳的“隐形工作”,以及识破自动化测试工具在新环境下的“假绿”骗局。文章提炼了七条实战经验:选对接缝层、优先验证最大未知数、按真实功能估算、警惕零代码陷阱、分层确认运行状态、理清平台惯例,以及用错误样本校准测试工具。助开发者精准避开跨平台移植的隐蔽陷阱。
假期无聊,猫哥重拾「爱影家」影视App项目,用仓颉版Tauri(cj-tauri)打造跨平台桌面观影客户端。通过实战掌握cj-tauri框架:以仓颉为后端、Web技术为前端,实现窗口管理、IPC通信与权限控制。文章详解环境配置、工程创建、命令注册及网络坑点,强调“在玩中学”的学习理念,适合想快速上手仓颉开发的开发者。
上节课结尾的CounterBox惨案还悬着:10 个线程各加 10000 次,期望 100000,实际只有 33017、33874……每次跑数字还都不一样。本课就来算账:用 Mutex把"读—加—写"三步合成一步,用 Atomic让自增本身不可分割,再用 Condition解决"线程之间你等我、我等你"的通信问题。另外,本课会先实测一个上节课预告里提到、很多资料也在讲的东西——,并如实告诉你仓颉
main从第一行执行到最后一行,一件事做完才能做下一件。但真实世界的程序经常要"同时"干几件事——下载文件的同时刷新进度条、算一批数据的同时响应用户点击。本课认识仓颉的:用spawn一句话分出一个新的执行体,用Future和get()等它跑完、取回结果。学完你会写第一个"多线程"程序,并且亲眼看到仓颉在就拦下了一类最经典的并发 Bug。本文。
第 24 课的待办 API 是"人肉验证"的——跑一次、看输出、凭眼睛判断对不对。功能一多,这种方式既不靠谱也没法回归:今天改了 A 函数,怎么知道没把 B 函数碰坏?本课介绍仓颉标准库自带的@Test圈出测试套件、@TestCase标记用例、@Assert断言结果、cjpm test一键跑全套。学完你就能给函数写一份"自动化的考卷",每改一行代码立刻知道有没有闯祸。本文。
第 23 课结尾说过:JSON 最常见的出场位置不是文件,而是网络——浏览器向服务器要数据,服务器把结果以 JSON 返回。那"网络"这一层到底长什么样?本课从最底层的 TCP/UDP socket 讲起,亲手写一个回显服务;再上到应用层的 HTTP,用 stdx 扩展库发请求、搭服务;最后把第 23 课的 JSON 接上来,做一个真正的"待办清单 API":客户端 POST 一条 JSON,服务
NO.1001|1250|已支付字段一多就数不清——要是订单再带"买家、商品列表、收货地址",光看a|b|c|d|e谁知道每个位置是什么;没法表达层级和列表——"一个订单含多个商品"这种嵌套关系,纯文本只能再发明一套约定;只在本程序内有效——把它发给网页前端或别的语言写的服务,对方根本不懂。JSON 用对象{}、数组[]"items": [{ "name": "仓颉教程", "qty": 1 },
前 21 课的数据都活在内存里,程序一关就没了。本课带你掌握:读写文本文件、遍历目录、处理路径拼接,最后把第 21 课的订单数据保存到文件,重启程序还能读出来。本文。
GeoLibre 是一个 MIT 开源的轻量级云原生 GIS 平台,把地图可视化、空间 SQL、浏览器端分析、3D Tiles、插件和 Jupyter 工作流放进同一个跨端工作区。
前 20 课的代码都活在一个单独的里,靠使用标准库。但真实项目必然要拆文件、分包、复用别人写的库。本课带你掌握:一个工程的目录结构、多文件如何协作、如何把自己的代码打成库包、如何通过本地路径引用第三方包,以及cjpm.toml的完整配置项。本文。
仓颉语言以“中庸、有容、破执”三重哲学为设计核心,回应编程语言“安全、性能、简洁”不可能三角。通过智能类型推断与可控标注平衡开发效率与安全性,借助编译期逃逸分析实现栈上分配,显著降低内存占用与GC压力,空载仅2.08MB;采用用户态线程模型消除函数染色,线程创建耗时低至700ns,兼顾并发性能与编程友好性。其设计不走极端,既非纯静态亦非全动态,而是基于上下文的动态权衡,体现中华智慧在软件工程中的创
需要跨包使用时,在前面加public(下节实测)。
本课详解仓颉语言泛型编程:通过类型参数<T>实现逻辑复用,使函数、结构体可适配任意类型。示例包括泛型函数echo<T>、getLast<T>及多参数泛型makePair<K,V>,展示类型推断与显式指定。重点说明无约束T的限制(如不能运算或打印),并通过where T <: 接口添加约束(如ToString、Comparable),实现安全操作。结合ArrayList<T>、Iterator<T>
WhatIf 的鸿蒙适配不是把 Kotlin 条件判断翻译成 ArkTS,而是让同一份共享代码→ ArkUI 工作台。
→ C ABI→ ArkTS 页面。
→ N-API 参数检查→ JSON→ ArkUI 结果卡片。
→ ArkUI 鸿蒙 PC 页面。
KMP 公共 API↓↓↓C ABI 字符串契约↓C++ N-API 参数和内存管理↓ArkTS 客户端与 ArkUI 页面↓签名 HAP 和设备日志验收。
ArkUI 输入→ JSON 结果→ ArkUI 状态。
→ C ABI→ ArkUI 页面。
用 类型名.构造器创建一个枚举值;case Spring => "春"case Summer => "夏"case Autumn => "秋"case Winter => "冬"let s1 = Season.Summer // 完整写法,最稳妥let s2: Season = Summer // 简写:类型明确且无歧义时,可省略类型名println(describe(s1)) // 夏print
本次适配真正需要处理的不是一个uuid4()→ C ABI→ JSON→ ArkUI 真机页面。
接口里的成员函数默认就是抽象(abstract)的——只有签名,没有函数体。也不能写abstract修饰符,接口成员天生抽象。
第 15 课我们把 struct/class 的骨架搭好了,知道了值类型和引用类型的根本差异。但这还不够——写真实项目时,每个类型都要回答这些问题:构造函数有几种?字段的默认值怎么给?属性有没有 getter/setter?方法要不要被外部调用?静态成员怎么共享?本课把第 15 课埋下的所有伏笔一次性讲透。本文。⚠️:第 15 课说"struct 的方法不能修改this,仓颉没有mutating关
this.x = xthis.y = y:定义一个名为Point的结构体;:两个字段(field),存储数据;构造函数,创建实例时调用,用this.x = x把参数赋给字段;this:当前实例的引用,类似 Java/Kotlin 的this、Python 的self。语法和 struct 几乎一模一样,只是关键字换成class。
Haiwenna ClipFlow 是一款基于 Tauri 2 + Rust 的轻量级跨端剪贴板工具,解决 Windows 原生 Win+V 卡顿、位置偏移与隐私泄露问题。支持光标吸附弹出、全键盘极速操作、端到端加密(E2EE)图文同步,具备密码管理器避让与“幽灵模式”,安卓版仅 27.1MB。开源免费,可在线体验沙盒,提升效率与安全。
Counter那种"自己就是游标"的对象适合一次性遍历。但更多时候我们有的是容器(书架、成绩表、传感器一周的数据)——容器希望能被反复遍历,每次遍历都从头开始。这时用另一个接口返回一个迭代器。这是一个"工厂方法"——每调用一次,就生产出一个游标在起点的全新迭代器。// 游标:持有容器引用和当前下标current++// 容器:每次被遍历都 new 一个新游标println()return 01 2
第 12 课讲了forEach里的return场景return的效果普通函数里从该函数返回forwhile循环里从外层函数返回(带值)Lambda 里、无值return只结束当次 Lambda 调用(类似 continue)Lambda 里、带值return❌ 编译报错Lambda 带值returnreturn 0📌 想在遍历中"找到就返回",用for循环配合return;Lambda 适合"对
如果你也在用 Codex 或其他 AI IDE,不妨按上面的步骤试一次,把默认模型换成国产模型,再体验一把统一网关的“一站式切换”。省下的钱,攒一顿好的不香吗?
ARTEMIS 是 Google 开源的 Android 自动化框架,把自然语言指令转化为可靠的移动端自动化操作。提供 Flash(快速反应式)和 Pro(多智能体规划验证)两种执行模式,通过 MCP 协议与 Claude Code、Antigravity、Codex 等 AI IDE 原生集成,在 AndroidWorld 基准测试中达到 99%+ 任务完成率
在内容生产链路中,配音环节的效率直接影响发布节奏。过去一年我断断续续测试了多款配音软件和AI配音工具,发现一个容易被忽略的问题:多数用户纠结“哪个好用”,却很少先理清工具的能力边界。所谓能力边界,包括免费额度上限、音色覆盖范围、长文本稳定性、是否支持声音克隆、是否提供API或跨端能力。这篇内容不搞排行榜,只从功能边界角度做一次客观梳理,帮你在2026年选择配音工具时减少试错成本。
仓颉用func从左到右依次是:关键字func、函数名add、括号里的参数列表参数名: 类型)、冒号后的返回类型、花括号里的函数体。调用就是熟悉的add(2, 3),值为5。func sayHello() { // 无参数;无返回值(返回类型可省略)println("你好")和 if、match 一样,函数体也走"最后一个表达式即值a + b // 没有写 return,最后一个表达式就是返回值(S
标准异常表达不了业务语义时(比如"余额不足"“年龄越界”“库存为负”),就自己定义一个。写法和官方库完全同款——定义一个Exceptionsuper(msg)需要的话也可以提供无参构造器(与官方库super()try {throw AgeException("年龄非法")try {println("无参构造:[${e}],message 为空串?Exception: 年龄非法无参构造:[Excep
?
上节课结尾留了个悬念:数组的长度——想往里追加一件商品、删掉一个联系人,Array都做不到。这节课请出仓颉标准库的。学会它们,“不断添加的购物车”“姓名→电话的通讯录”"自动去重的名单"就都手到擒来了。本文是系列:系统学习三个最常用集合的创建、增删改查、遍历,实测这个反直觉点,澄清旧教程里appendput的写法陷阱,最后用"购物车 + 通讯录 + 抽奖去重"综合实战收尾。
量化交易已占A股成交额近四成,散户需要自己的回测工具。本文从免费可用性、编程门槛、数据覆盖、回测能力、模拟交易、生态资源六维度横评财搭子、聚宽、米筐、BigQuant、PTrade五款平台,附完整对比表与选型建议,帮不同技术背景的散户快速定位。
散户和专业机构之间隔着"回测"这道墙:机构实盘前先在历史行情里模拟考试,散户只能凭感觉试错。这篇零代码教程用类比讲透回测与年化收益、最大回撤、胜率、夏普四个核心指标,并附财搭子四步实操、均线策略真实案例与技术链路解析,帮你跑通第一个策略。
SmartCall v1.0.5重磅升级,实现智能体技能与工具的全页面可视化配置,无需代码、无需重启,运营人员即可快速定义AI客服的对话规则与业务能力。技能(如话术、知识库)与工具(如订单查询、工单创建)分离设计,分别对应AI的“懂业务”与“办事情”能力。通过插件化架构支撑,支持端到端实时语音对话中自然调用,真正实现AI自助办业务。大幅降低落地成本,助力企业快速部署多场景AI客服,从“只会聊天”进