当前位置: 首页 > news >正文

仓颉笔记——写一个简易的web服务并用浏览器打开

创建一个web服务端,同时创建一个客户端去读取这个服务端。
也满足浏览器打开web的需求。

直接上代码。

在这里插入图片描述

import net.http.*
import std.time.*
import std.sync.*
import std.log.LogLevel// 1. 构建 Server 实例
let server = ServerBuilder().addr("127.0.0.1").port(7788).build()func startServer(): Unit {// 2. 注册请求处理逻辑server.distributor.register("/hello", {httpContext =>httpContext.responseBuilder.body("Hello Cangjie!")})server.logger.level = OFF// 3. 启动服务server.serve()
}func startClient(): Unit {// 1. 构建 client 实例let client = ClientBuilder().build()// 2. 发送 requestlet response = client.get("http://127.0.0.1:${server.port}/hello")// 3. 读取response bodylet buffer = Array<Byte>(32, item: 0)let length = response.body.read(buffer)println(String.fromUtf8(buffer[..length]))// 4. 关闭连接client.close()
}main () {// 启动服务端let server: Future<Unit> = spawn {startServer()}// 阻塞当前运行的线程后再让客户端访问服务端,如无需要可去掉sleep(Duration.second)startClient()// 服务端运行中server.get()// 如果只想实现客户端访问服务端,一次性的,那么如下即可/*spawn {startServer()}sleep(Duration.second)startClient()*/
}

此后执行编译cjc server.cj o server.exe,然后运行server.exe

能看到窗体:
在这里插入图片描述

打开浏览器,输入 http://127.0.0.1:7788/hello

在这里插入图片描述
如果还不会安装,或者遇到什么问题,那么请看文章:

《仓颉笔记——windows11安装启用cangjie语言,并使用vscode编写“你好,世界”》
《从 0 开始安装和运行 Cangjie (仓颉)》

相关文章:

仓颉笔记——写一个简易的web服务并用浏览器打开

创建一个web服务端&#xff0c;同时创建一个客户端去读取这个服务端。 也满足浏览器打开web的需求。 直接上代码。 import net.http.* import std.time.* import std.sync.* import std.log.LogLevel// 1. 构建 Server 实例 let server ServerBuilder().addr("127.0.0.1&…...

DolphinScheduler自身容错导致的服务器持续崩溃重大问题的排查与解决

01 问题复现 在DolphinScheduler中有如下一个Shell任务&#xff1a; current_timestamp() { date "%Y-%m-%d %H:%M:%S" }TIMESTAMP$(current_timestamp) echo $TIMESTAMP sleep 60 在DolphinScheduler将工作流执行策略设置为并行&#xff1a; 定时周期调度设置…...

ecmascript 标准+ 严格模式与常规模式 + flat-flatMap 应用

文章目录 ecmascript 历程严格模式与常规模式下的区别及注意事项严格模式下的属性删除Array.prototype.flat()和Array.prototype.flatMap() 实例应用 ecmascript 历程 变量声明要求 常规模式&#xff1a; 在常规模式下&#xff0c;使用var关键字声明变量时会出现变量提升现象。…...

基于ILI9341液晶屏+STM32U5单片的显示试验

试验要求&#xff1a; 1、通过串口&#xff0c;下发两个命令 STR和PIC&#xff1b; 2、STR模式&#xff1a; &#xff08;1&#xff09;串口输入什么&#xff0c;屏幕上显示什么 &#xff08;2&#xff09;如果屏幕满&#xff0c;自动下滚 &#xff08;3&#xff09;输入回车&a…...

最短路径算法

关注&#xff1a;算法思路&#xff0c;时间复杂度&#xff0c;适用情况&#xff08;单源/多源&#xff0c;负边权/负边权回路&#xff09; 复习弗雷德算法--基于动态规划--多源--负边权--时间复杂度O(v^3) int的最大值是0x7fffffff #include <iostream> using namesp…...

如何用 ESP32-CAM 做一个实时视频流服务器

文章目录 ESP32-CAM 概述ESP32-S 处理器内存Camera 模块MicroSD 卡槽天线板载 LED 和闪光灯其他数据手册和原理图ESP32-CAM 功耗 ESP32-CAM 引脚参考引脚排列GPIO 引脚哪些 GPIO 可以安全使用&#xff1f;GPIO 0 引脚MicroSD 卡引脚 ESP32-CAM 的烧录方式使用 ESP32-CAM-MB 编程…...

Centos7 解决Maven scope=system依赖jar包没有打包到启动jar包中的问题(OpenCV-4.10)

最近项目中遇到问题,OpenCV的Jar包在程序打包后,找不到相关的类,比如MAT,这个时候怀疑OpenCV_4.10的Jar没有和应用程序一起打包,后面排查到确实是没有打包进去,特此记录,便于日后查阅。 <!-- 加载lib目录下的opencv包 --> <dependency><groupId>org…...

iOS实际开发中使用Alamofire实现多文件上传(以个人相册为例)

引言 在移动应用中&#xff0c;图片上传是一个常见的功能&#xff0c;尤其是在个人中心或社交平台场景中&#xff0c;用户经常需要上传图片到服务器&#xff0c;用以展示个人风采或记录美好瞬间。然而&#xff0c;实现多图片上传的过程中&#xff0c;如何设计高效的上传逻辑并…...

如何将分割的mask转为为分割标签

将分割的mask转换为分割标签通常涉及将每个像素的类别标识&#xff08;在mask中以不同的灰度值或颜色表示&#xff09;转换为整数标签。这些标签通常用于机器学习或深度学习模型的训练、验证和测试阶段。 使用方式&#xff0c;控制台或者命令行使用以下命令&#xff1a; pyth…...

【动手学电机驱动】STM32-MBD(5)Simulink 模型开发之 PWM 输出

STM32-MBD&#xff08;1&#xff09;安装 Simulink STM32 硬件支持包 STM32-MBD&#xff08;2&#xff09;Simulink 模型部署入门 STM32-MBD&#xff08;3&#xff09;Simulink 状态机模型的部署 STM32-MBD&#xff08;4&#xff09;Simulink 状态机实现按键控制 STM32-MBD&…...

MySQL进阶突击系列(05)突击MVCC核心原理 | 左右护法ReadView视图和undoLog版本链强强联合

2024小结&#xff1a;在写作分享上&#xff0c;这里特别感谢CSDN社区提供平台&#xff0c;支持大家持续学习分享交流&#xff0c;共同进步。社区诚意满满的干货&#xff0c;让大家收获满满。 对我而言&#xff0c;珍惜每一篇投稿分享&#xff0c;每一篇内容字数大概6000字左右&…...

vue2日历组件

这个代码可以直接运行&#xff0c;未防止有组件库没安装&#xff0c;将组件库的代码&#xff0c;转成文字了 vue页面 <template><div class"about"><div style"height: 450px; width: 400px"><div style"height: 100%; overflo…...

【PyQt】多行纯文本框

[toc]qt多行纯文本框 QPlainTextEdit QPlainTextEdit 是可以多行的纯文本编辑框 文本浏览框 内置了一个** QTextDocument **类型的对象 &#xff0c;存放文档。 1.信号&#xff1a;文本被修改 当文本框中的内容被键盘编辑&#xff0c;被点击就会发出 textChanged 信号&…...

workerman5.0篇〡异步非阻塞协程HTTP客户端

概述 workerman/http-client 是一个异步http客户端组件。所有请求响应异步非阻塞&#xff0c;内置连接池&#xff0c;消息请求和响应符合PSR7规范。 Workerman 5.0 版本中的异步HTTP协程客户端组件是一个基于PHP协程的高性能HTTP客户端&#xff0c;它能够充分利用PHP的异步特…...

JavaScript 延迟加载的方法( 7种 )

JavaScript脚本的延迟加载&#xff08;也称为懒加载&#xff09;是指在网页的主要内容已经加载并显示给用户之后&#xff0c;再加载或执行额外的JavaScript代码。这样做可以加快页面的初始加载速度&#xff0c;改善用户体验&#xff0c;并减少服务器的压力。 以下是几种常见的延…...

python+pymysql

python操作mysql 一、python操作数据库 1、下载pymysql 库&#xff0c; 方法一&#xff1a;pip3 install pymysql 或pip install pymysql 方法二&#xff1a;在pycharm中setting下载pymysql 2、打开虚拟机上的数据库 3、pymysql连接 dbpymysql.Connection(host&qu…...

基于 Selenium 实现上海大学校园网自动登录

基于 Selenium 实现上海大学校园网自动登录 一、技术方案 核心工具&#xff1a; Selenium&#xff1a;一个用于自动化测试的工具&#xff0c;能够模拟用户在浏览器上的操作。Edge WebDriver&#xff1a;用于控制 Edge 浏览器的驱动程序。 功能设计&#xff1a; 检测网络状…...

啥!GitHub Copilot也免费使用了

文章目录 前言免费版直接修复代码多文件上下文Agent模式总结 前言 最近&#xff0c;GitHub 给开发者们带来了一个好消息&#xff1a;他们的 AI 编程助手 GitHub Copilot 现在可以免费使用了&#xff01;以前&#xff0c;每个月要花 10 美元才能享受的服务&#xff0c;现在对所…...

Spring配置文件中:密码明文改为密文处理方式(通用方法)

目录 一、背景 二、思路 A) 普通方式 B) 适合bootstrap.properties方式 三、示例 A) 普通方式&#xff08;连接Redis集群&#xff09; A) 普通方式&#xff08;连接RocketMQ&#xff09; B) 适合bootstrap.properties方式 四、总结 一、背景 SpringBoot和Sprin…...

Linux下ext2文件系统

文章目录 一 :penguin:基本概述二 :star: ext2文件系统:star:​ 1. :star:​Boot Block&#xff08;引导块&#xff09;位置与作用 三 Block Group(块组):star:​1.:star:​ Super Block(超级块):star:​2.:star:​ Group Descriptor&#xff08;块组描述符&#xff09;:star:​…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

算法打卡第18天

从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7…...