1 分•作者: labubutoto•11 个月前
我设计了一个 API 接口,它能承受巨大的压力——而且它就是不会崩溃。
接口:
http://60.30.55.101:8888/prod-api/activite/task/startProcessFromServer2
方法:POST
请求体:
json
复制
编辑
{
"bizUsername": "153二管轮"
}
无身份验证。
无限流。
无验证码。
纯粹的后端工程。
我用以下方式对这个接口进行了压力测试:
JMeter
Apache Bench
并行 curl 洪流
Postman 运行器
格式错误的负载
持续的多线程循环
结果?
没有 5xx 错误
没有变慢
没有崩溃
即使在数千个并发请求下,响应时间也保持一致
原始 HTTP 请求示例:
bash
复制
编辑
POST /prod-api/activite/task/startProcessFromServer2 HTTP/1.1
Host: 60.30.55.101:8888
Content-Type: application/json
Content-Length: 31
{"bizUsername":"153二管轮"}
我希望这里的人们能随意测试它——模拟负载,破坏协议规则,进行洪泛——无论你们的工具或脚本能用什么方式来测试。如果它崩溃了,我会感到惊讶(并印象深刻)。
让我们看看这东西能走多远。
2 分•作者: doppp•11 个月前
1 分•作者: mattmerrick•11 个月前
1 分•作者: gpi•11 个月前
16 分•作者: kaycebasques•11 个月前
1 分•作者: m463•11 个月前
1 分•作者: Bluestein•11 个月前
1 分•作者: jim-jim-jim•11 个月前
1 分•作者: scarface_74•11 个月前
1 分•作者: doctech•11 个月前
1 分•作者: fahimfaisaal•11 个月前
一年前,我构建了这个软件包,但从未与任何社区分享。在这里分享,希望将来能对你有所帮助。<p>如果你喜欢的话,别忘了点个星并留下你的反馈哦。
1 分•作者: coloneltcb•11 个月前
3 分•作者: nivethan•11 个月前
2 分•作者: MongooseStudios•11 个月前
我是一个自学成才的开发者,为了能靠写代码挣钱,我拼命努力,忍受了多年在多家公司听到的“内部晋升”的谎言。
自从去年11月被裁员以来,我一直在找工作,现在我真的受够了。每个人都在寻找拥有X年经验、熟悉Y框架的“独角兽”,如果你没有完全符合这些条件,那就别申请了。与此同时,FAANG、微软和英特尔还在不断地裁员。
我仍然热爱编程,自从被裁员以来,我大部分的非“投简历和思考人生”的时间都花在构建项目上。但是,一想到要为另一家由脑残高管运营的公司工作,他们想把AI塞进所有东西里,或者再经历一次来自人力资源部的贝基(她最擅长的技术可能就是用Excel)问我“你为什么想在这里工作”,我就感到厌恶。
我已经开始告诉那些有荒谬的、会议数量超多的招聘流程和单向视频面试的人,我没兴趣。我发现自己对做几乎任何事情都感到兴奋,除了在一个公司里参加又一个“规划周”,而这家公司还信誓旦旦地说他们在“实践敏捷”。
我非常愤怒,因为公司决定把我们踢出局,把我们的工作外包给他们能找到的最便宜的国家,或者外包给本周提供最美味的免费蜡笔的AI公司。我非常愤怒,因为每个人都在越来越多地推动RTO(重返办公室)的无稽之谈,因为他们的经理们在工作上做得太糟糕了,他们不知道如何用Slack消息打断我们,来代替当面打断我们。我既愤怒又疲惫。
还有其他人吗?
1 分•作者: thisismytest•11 个月前
13 分•作者: noleary•11 个月前
1 分•作者: flfljh•11 个月前
# 在 HarmonyOS 服务卡片中访问应用数据
### (1) 创建服务卡片
创建基于 ArkTS 的卡片后,项目将生成以下与卡片相关的文件:
- 卡片生命周期管理文件 (`EntryFormAbility.ets`)
- 卡片 UI 文件 (`WidgetCard.ets`)
- 卡片配置文件 (`form_config.json`)
### (2) 配置 module.json5
参考字段文档:
```
"extensionAbilities": [
{
"name": "EntryFormAbility",
"srcEntry": "./ets/entryformability/EntryFormAbility.ets",
"label": "$string:EntryFormAbility_label",
"description": "$string:EntryFormAbility_desc",
"type": "form",
"metadata": [
{
"name": "ohos.extension.form",
"resource": "$profile:form_config"
}
]
}
]
```
### (3) 特定于卡片的配置
配置位于 `resources/base/profile/form_config.json` 中。
参考字段文档:
### (4) UI 开发和参数处理
卡片 UI 代码位于 `ets/widget/` 中。参数接收逻辑:
```
let storageUpdateByMsg = new LocalStorage();
@Entry(storageUpdateByMsg)
@Component
struct WidgetCard {
@LocalStorageProp('diffExamDay') diffExamDay: number = -1;
}
```
### (5) 卡片生命周期和数据传递
- 初始化逻辑在 `EntryFormAbility.onAddForm` 中(例如,将卡片 ID 传递给 WidgetCard)
- 更新在 `onUpdateForm` 钩子中处理
### (6) 在卡片初始化期间访问应用数据
#### 6.1 通知应用更新卡片数据
```
postCardAction(this, {
action: "call",
abilityName: "EntryAbility",
params: {
method: "upDiffExamDay",
formId: this.formId,
},
});
```
*时序问题解决方案:*
监视 `formId` 的变化,而不是使用 `aboutToAppear()`:
```
@LocalStorageProp('formId') @Watch('updateFormId') formId:string = '';
updateFormId() {
postCardAction(this, {
action: 'call',
abilityName: 'EntryAbility',
params: {
method: 'upDiffExamDay',
formId: this.formId
}
});
}
```
#### 6.2 应用端数据处理
在 `EntryAbility.onCreate` 中:
```
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
this.callee.on('upDiffExamDay', upDiffExamDayCall);
}
const upDiffExamDayCall = (data: rpc.MessageSequence): MyParcelable => {
let params: Record<string, string> = JSON.parse(data.readString());
if (params.formId) {
PreferencesUtil.putSync('formId', params.formId)
const diffExamDay = UserCacheManager.getDiffExamDay();
diffExamDay === -1
? getHomePageData(params.formId) // 如果不可用则获取数据
: Utils.updateDiffExamDay(params.formId); // 直接更新卡片
}
return new MyParcelable(1, 'success');
};
```
*更新卡片数据:*
```
// 导入所需模块
import { formBindingData, formProvider } from '@kit.FormKit';
updateDiffExamDay(formId: string) {
const diffExamDay = UserCacheManager.getDiffExamDay();
let formMsg = formBindingData.createFormBindingData({
'diffExamDay': diffExamDay
});
formProvider.updateForm(formId, formMsg)
.then(() => console.log('Update success'))
.catch((error) => console.error('Update failed:', error));
}
```
1 分•作者: elsewhen•11 个月前
1 分•作者: burnt-resistor•11 个月前
GFiber
我们迫不及待地想为您提供服务——但目前还不行。
对于这次误会,我们深感抱歉。由于系统错误,您收到了“服务可用”的通知。很遗憾,Google Fiber 目前在您家还不可用(我们也很难过)。
当您的地址符合服务资格时,我们会向您发送邀请,以便您注册。
感谢您的耐心等待,再次为给您带来的困惑表示歉意。
感谢您对 GFiber 的关注!
——GFiber 团队
1 分•作者: taiyakihitotsu•11 个月前
您好。
我创建了一个 TypeScript 包,通过完全在类型层面实现一种名为 CionLisp 的脚本语言,来实现类似依赖类型的功能。通过从运行时值中提取类型,它能够实现 TypeScript 原生不支持的类型验证。<p>利用这个包,我实现了几个功能,包括:<p>- 除以零检测<p>- 长度索引向量(类似于 Idris 中的 Vect n)<p>- 安全访问器(类似于 Lenses)<p>此外,任何可以用 CionLisp 表达并在类型层面解析的内容——例如通过正则表达式进行电子邮件验证——都有可能进行类型检查。<p>请注意,这仍处于 alpha 阶段,请谨慎使用。<p>感谢您的关注。