随笔记录

读取Kafka中的数据失败,
private transient KafkaStream<byte[], byte[]> kafkaStream ;
原因在于 transient 关键字,不适用序列化,而kafka数据的传输即通过序列化实现(暂时这样理解)
去掉这个关键字 ,程序正常
写入到kafka的数据将写到磁盘(写入时需要序列化)


kafka
topic 与 group
两个消费模式,队列与订阅
队列:单一消费
订阅:广播方式发送,每个消费者维护一个读取位置;
消息维护时间为设置的失效时间,到失效时间无论是否读取,均丢失
若消费者同组,为队列,否则,订阅


Spout
多个Spout向同一个Bolt发送数据
需设置多个Fields在Spout中
Bolt需通过不同的FieldsName进行接收
优化:
添加流名称,Spout中设置相同的FieldsName
修改两处
1.Spout中
declare.declareFields(new Fields("name"))
改为
declarer.declareStream(ACTIVITY_VISIT_PERSON_COUNT_WEB_STREAM_ID,new Fields("userId"));
2.Topology中
Bolt接收数据
builder.setBolt("ActivitySingleCumulateInvestRecordBolt", new ActivitySingleCumulateInvestRecordBolt(), parallelismSpout).shuffleGrouping("ActivitySingleCumulateInvestmentSpout");
改为
builder.setBolt("ActivityInvestAmountBolt", new ActivityInvestAmountBolt(),parallelismSpout)
.shuffleGrouping("ActivitySingleCumulateInvestRecordBolt",ActivitySingleCumulateInvestRecordBolt.MAIN_EVENT_ID_STREAM)
.shuffleGrouping("ActiveDataStatisticsStoringBDBolt",ActiveDataStatisticsStoringBDBolt.MAIN_EVENT_ID_STREAM)
.shuffleGrouping("ActiveDataStatisticsStoringHbBolt",ActiveDataStatisticsStoringHbBolt.MAIN_EVENT_ID_STREAM);

* 1.接收KAFAK中ANDROID与IOS端的数据
* topic 数据标签
* group 与AppDataResolvingAndStoringSpout 不同
* 不同组,为订阅者模式
* 相同组,为队列,单一消费者,会与AppDataResolvingAndStoringSpout消费者同时消费,
* 会出现读取数据为空的情况
* 2.发送数据
* streamId : ActivityVisitPersonCountAppSpout-StreamId
* fields : userId
* 注:
* fields 不允许重复;但Bolt接收数据时为方便按照FieldsName进行接收,需两个Spout中设置同名的Fields
* 通过不同的streamId区分Spout中同名的Fields
### Vue 3 和 Vite 实现分包优化性能配置指南 在现代前端开发中,分包是一种有效的技术手段,用于减少初始加载时间并提高 Web 应用程序的整体性能。以下是基于 Vue 3 和 Vite 的分包优化策略。 #### 1. 使用 Rollup 插件实现动态导入 Vite 基于 Rollup 构建,因此可以利用其插件生态来实现按需加载和分包功能。通过 `import()` 动态语法,开发者能够将大文件拆分为多个小模块,在需要时才加载这些模块。这种方式显著减少了首屏渲染的时间[^1]。 ```javascript // 示例代码:组件懒加载 const MyComponent = () => import('./MyComponent.vue'); export default { components: { MyComponent } }; ``` #### 2. 配置 Vite 的 code-splitting 功能 Vite 自动支持 Code Splitting 技术,无需额外安装任何依赖即可启用此特性。只需确保项目中的路由或组件采用了异步引入的方式,则会自动生成对应的 chunk 文件[^4]。 ```javascript // vite.config.js 中开启 rollupOptions 进一步定制打包行为 import { defineConfig } from 'vite'; export default defineConfig({ build: { rollupOptions: { output: { manualChunks(id) { if (id.includes('node_modules')) { return id.toString().split('node_modules/')[1].split('/')[0]; } }, }, }, }, }); ``` #### 3. 结合 Uni-app 路由机制完成页面级分包 如果目标平台涉及多端适配(H5、小程序等),可参考 Uni-app 提供的 pages.json 配置方案来进行更细粒度的控制。例如设置独立入口文件或者指定某些特定路径下的资源作为子包处理[^3]。 ```json { "pages": [ { "path": "index", "style": {} } ], "subPackages": [{ "root": "packageA", // 子包根目录 "pages": [{...}] }] } ``` #### 4. 替换旧版响应式系统带来的优势 相较于 Vue 2 使用 Object.defineProperty 方法监听对象属性的变化,Vue 3 引入 Proxy 对象重构整个观察者模式,不仅解决了深嵌套结构难以追踪的问题,还极大提升了运行效率[^2]。这间接促进了大型应用分割后的流畅体验感。 --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值