跳转到内容
彼岸论坛

小天管理

管理员
  • 内容数

    15864
  • 注册日期

  • 最后上线

  • 得奖次数

    1

小天管理 发表的所有内容

  1. 各位 v 友大家好,今天我们团队正式上线了一款 web-based 的 AI 视频动画编辑器 Chillin。web 端带来了专业的视频编辑功能。Chillin 的最大特点是无缝的结合了非线性视频编辑和矢量动画编辑如钢笔工具,属性关键帧等,帮助用户在视频创建过程中直接编辑矢量动画。我们团队的目标是创建一个能把专业视频创作,AE-level 的动画,AI 融合在一起的视频创作工具。 Chillin 官网 产品特点 非 AI 编辑功能全部免费 无水印导出 移动端桌面端同时支持 支持 Lottie ,SVG 完整的视频编辑功能:转场,滤镜,字幕,多条视频轨道,Lut AI 编辑功能:AI 抠图,字幕生成,图片生成,文本转语音(暂未开放),一键生成带配音的视频(暂未开放) 流畅快速的编辑体验,导出速度也快于同类在线编辑器 经过长时间的优化,我们有信心 Chillin 是目前最好的在线视频编辑器,体验能够媲美原生 App 。我们今天也在 ProductHunt 上线,ProductHunt 链接,希望大家能够试用一下,觉得好用的话给我们一个 upvote ,也欢迎各位 v 友给出建议和反馈 送码 各位 v 友可以在回复中留下邮箱,我们会为每位 v 友送出一个月的基础会员码,如果有需要多要几个,也可以在留言中说明,我们会尽量满足。谢谢大家支持!
  2. 为什么最近这段时间,翻下一页,总有上一页好几条帖子呢,个例么?(首页-最热,页面下滑点击更多新主题,感觉之前偶尔只有一条两条的重复,难道是现在帖子右侧回复数更新不及时么(⊙o⊙)…)
  3. 不是专业 hr,勿喷,需要熟悉 php 的 laravel8 框架,最好有五年经验,远程工作,薪资支付宝或微信发放,零售行业,不是灰产. 联系方式:base64 微信:SnVzdExpa2VDbG93bg==
  4. 复现方法:等待几秒,三指横向或者斜 45° 很短的拖移,光标位置不变 MBP M3Pro ,macos18 beta2 不确定是测试版系统原因还是什么软件影响的 亦或者本来就这样以前一直没注意?
  5. 本文记录一下我在 Spring 自带的事件监听类添加 @RefreshScope 注解时遇到的坑,原本这两个东西单独使用是各自安好,但当大家将它们组合在一起时,会发现我们的事件监听代码被重复执行。希望大家引以为鉴,避免重复踩坑。耐心看完,你一定会有所收获! 前置描述 最近有一个用户拉新的需求,需要在新用户注册时判断用户是否有对应的邀请关系,如果有则需要给新用户赠送系统资源。 原有的用户注册逻辑里使用了 Spring 自带的事件监听工具,也就是 applicationEventPublisher (事件发布类)以及 ApplicationListener (事件监听类),在用户注册完毕写入用户记录并生成 token 后,会触发 RegisterEvent (注册事件)的发布。伪代码如下, // 1. 用户注册,写入数据库 RegisterResponseVO registerResponseVO = memberRegisterService.register(new RegisterRequestVO(request); // 2. 生成 token String token = getToken(memberEntity.getId(), request.getSource()); log.info("login mobile {} login token {}", request.getMobile(), token); // 3. 发布注册事件,会触发登录日志监听、优惠券赠送监听等 applicationEventPublisher.publishEvent(new RegisterEvent(request, memberEntity, token)); 由于之前代码已经使用事件监听逻辑,所以这里我们的新用户注册判断邀请关系的逻辑就直接新建一个 NewUserInvitedListener 监听类即可。伪代码如下, @Slf4j @RefreshScope @AllArgsConstructor @Component public class NewUserInvitedListener implements ApplicationListener<RegisterEvent> { @Async("asyncServiceExecutor") @Override public void onApplicationEvent(RegisterEvent registerEvent) { UserLoginRequestVO requestVO = registerEvent.getRequestVO(); MemberEntity memberEntity = registerEvent.getMemberEntity(); log.info("================ NewUserInvitedListener =============== registerEvent is {}", registerEvent); // 1. 校验逻辑 validateUser(memberEntity); // 2. 判断用户是否有邀请关系 // 3. 如果有则赠送系统资源 ... } } OK ,代码逻辑也不复杂,写完提测交给测试下班(周五下午写完)。 发现问题 周一一来,测试就在群里 @ 后端人员说是新用户赠送的系统资源送了两次,说实话我一开始是不太信的,直到我去查了日志,发现 NewUserInvitedListener 监听类的日志确实被打印了两次,也就是说我们的 NewUserInvitedListener 监听类被触发了两次。 OK ,到这里我们的问题就确确实实产生了,接下来就是解决问题。 解决思路 问题产生通常都有很多种解决方法,我们如何选择一个最适合我们当前场景的方法才能体现出我们对业务、技术的理解。 在这个监听类重复触发的场景里,就有多种解决方式,我简单列举几个, 添加幂等处理,防止重复执行 加锁,防止重复执行 解决下为什么监听类会重复触发 这三个解决方案各有优劣,通过对监听类的业务逻辑添加幂等逻辑或者加锁逻辑都是可以解决的,但是这不是问题根源,问题根源是在于监听类为什么会被重复触发。 在本文中,我也将带着大家一步一步探索并解决这个问题。 检查下之前的事件监听类是否也有重复触发的问题 因为这个代码是照着之前的逻辑写的,新加的 NewUserInvitedListener 被发现重复触发,那以前的 MemberLoginLogListener 是否也有重复触发的问题。伪代码如下, @Slf4j @Component @AllArgsConstructor public class MemberLoginLogListener implements ApplicationListener<RegisterEvent> { private MemberLoginLogService memberLoginLogService; @Async("asyncServiceExecutor") @Override public void onApplicationEvent(RegisterEvent event) { MemberEntity memberEntity = event.getMemberEntity(); log.info("================ MemberLoginLogListener ===============, mobile is {}", memberEntity.getMobile()); MemberLoginLogEntity memberLoginLogEntity = MemberLoginLogConvertor.buildLoginLogEntity(event.getRequestVO(), event.getMemberEntity()); memberLoginLogEntity.setToken(event.getToken()); memberLoginLogService.save(memberLoginLogEntity); } } 查询 MemberLoginLogListener 监听类的日志,发现只有一次打印,说明之前写的 MemberLoginLogListener 监听类没有重复触发的问题,那这里就很奇怪了。对比一下 NewUserInvitedListener 监听类与 MemberLoginLogListener 监听类的差别,很明显我们发现 NewUserInvitedListener 监听类上多了一个 @RefreshScope 注解。 OK ,问题有可能就是 @RefreshScope 注解导致,我们去掉 @RefreshScope 注解在看看日志打印。 去掉 @RefreshScope 注解 当我们去掉 @RefreshScope 注解后,神奇的事情发生了,NewUserInvitedListener 监听类的日志打印正常了,只触发了一次! OK ,到这里我们也就发现了问题出在 @RefreshScope 注解上。 如何搜索问题 虽然我们知道了问题出在 @RefreshScope 注解上,但是我们怎么向搜索引擎描述这个问题嘞? 很多人发现了问题,但是不知道如何描述问题,怎么描述问题才能让别人一听就懂,从而能给你提供帮助。你需要把问题的重点描述出来,搜索引擎才能给予精准帮助。 在我们这个新用户注册判断邀请关系的场景里,很显然我们的搜索词可以是 “spring 事件监听重复触发 @RefreshScope”可以看到我的搜索关键词有 3 个,分别是 spring 、事件监听重复触发以及 @RefreshScope 。让我们来看看搜索结果。 前 5 个搜索结果中,只有第五个的标题可能符合我们的搜索内容,我们点进去看一看。 很遗憾,跟我们的问题场景并不相符,我们并没有搜索到我们想要的东西。在这里我们的搜索关键词“spring 事件监听重复触发 @RefreshScope”并没有给予我们帮助。 回到问题本身 既然我们的问题已经定位到了,在于 @RefreshScope 会导致监听类的重复触发,可是这个关键词并没有相关搜索结果,那么我们只能换个角度。 为什么会重复触发? 在 NewUserInvitedListener 监听类中,我们使用 @Component 注解,默认注册了一个单例 bean ,这个 bean 用于接收用户注册事件。既然 bean 是单一的,那就是说 Spring 发送了 2 次 RegisterEvent 事件吗?结合上文提到的 MemberLoginLogListener 监听类只触发一次的日志,很显然,Spring 只会发送了 1 次 RegisterEvent 事件。 难道说问题在于 Spring 里出现了两个 NewUserInvitedListener 类型的 bean ? 那么到这里恭喜我们终于定位到了重复触发问题的根源。 如果大家了解 @RefreshScope 的原理相信大家已经猜出来了。 @RefreshScope 原理 Spring 中 @scope 注解的原理就是在创建 Scope=singleton 的 Bean 时,IOC 会保存实例在一个 Map 中,保证这个 Bean 在一个 IOC 上下文有且仅有一个实例。 SpringCloud 新增了一个自定义的作用域:refresh (可以理解为“动态刷新”),同样用了一种独特的方式改变了 Bean 的管理方式,使得其可以通过外部化配置(.properties )的刷新,在应用不需要重启的情况下热加载新的外部化配置的值。 这个 scope 是如何做到热加载的呢? RefreshScope 主要做了以下动作: 单独管理 Bean 生命周期 创建 Bean 的时候如果是 RefreshScope 就缓存在一个专门管理的 ScopeMap 中,这样就可以管理 Scope 是 Refresh 的 Bean 的生命周期了(所以含 RefreshScope 的其实一共创建了两个 bean )。 重新创建 Bean 外部化配置刷新之后,会触发一个动作,这个动作将上面的 ScopeMap 中的 Bean 清空,这样这些 Bean 就会重新被 IOC 容器创建一次,使用最新的外部化配置的值注入类中,达到热加载新值的效果。 看完 @RefreshScope 的原理相信大家已经知道了出现两个 NewUserInvitedListener 类型 bean 的原因是在于 @RefreshScope 导致。这是由于 @RefreshScope 注解的内部实现创建了另外一个相同类型的 NewUserInvitedListener bean ,导致我们的新用户监听逻辑被重复执行。 回到搜索关键词 假如我是说假如,假如我们不知道 @RefreshScope 的原理,自然不知道项目中出现了两个 NewUserInvitedListener 类型的 bean 是 @RefreshScope 导致。 那么我们怎么通过搜索关键词来找到这个问题嘞? 到这里也就是本文的重点所在,怎么通过搜索关键词来解决我们的问题。 先定义问题 在这个场景里我们使用的是 Spring 项目,问题本质是 @RefreshScope 在 Spring 自带的事件监听类搭配使用时,会导致 bean 重复进而导致监听类逻辑被重复执行,当我们去掉 @RefreshScope 后,也就没有这种情况。 也就是说这句话我们换个说话:“@RefreshScope 在 Spring 自带的事件监听类搭配使用时,会生成另外一个相同的 bean 导致监听类被重复触发” 总结关键词 在上面的先定义问题中,我们提炼一下关键词, Spring:这个关键词在 Spring 项目中必带,大家应该没有意见把 @RefreshScope:我们的问题根源,搜索也得带上 生成同一个 bean:这是一个描述语句,简要描述一下我们发现的问题 看一看搜索结果, 点进第一个结果, OK ,大功告成,看到我们框选中的地方了吗,上文的 @RefreshScope 原理解释,就是复制与这里。 贴一下原文地址: https://blog.csdn.net/m0_71777195/article/details/127223544 一些思考 实话实说,我在测试给我上报问题,到发现这个问题来自于 @RefreshScope 注解只用了 10 分钟,如上文所说,我通过对比以前写的 MemberLoginLogListener 监听类,早早的定位到问题来自于 @RefreshScope 注解。可是到我完整修复这个问题,提交到测试环境,却花了 2 个半小时,原因是因为我在研究这个问题的根源,这也是这篇文章的由来。 假如说这个问题发生在线上,那么我根本不可能花这么多时间来研究,我需要的就是迅速解决这个问题并修复上线,避免影响更多用户。 一样的,大家在遇到这种相似问题时,如果境况紧急出现在生产环境,大家本着对工作负责的态度,应该迅速解决并做故障复盘。如果是出现在测试环境我们可以本着对技术执着可以认真专研下这个问题。 其实我还想说的是在这个问题里,我能 10 分钟定位到问题来自于 @RefreshScope 注解,可能也有运气成分。但是很多情况下当我们照驴子画马写代码,发现出了问题时,这种情况大部分还是我们“画蛇添足”导致。大家可以通过对比以前代码迅速找出问题原因。 找出了问题后是如何解决问题。这篇文章里,我给大家讲了讲我的搜索关键词心得。第一是讲重点、第二是找到问题本质,这样才能从搜索引擎嘴里找出我们想要的答案。 最后如果觉得这篇文章写的不错的话,可以关注我的工宗浩 [程序员 wayn ] ,谢谢。
  6. 说明 使用阿里 CDN 的 xdm 可以观察一下 20-23 点流量是否异常 我这从 6 月开始一直持续到现在,固定区间时间流量异常 处理 昨天账户已经欠费,处理完欠费后。购买流量包,静态次数。 把域名解析回源 IP ,不使用阿里 CDN, 准备观察一周的( CDN 的日志要收费) 问题 今天阿里 CDN 控制台一看,,,TMD 还是有流量产生,,, 无凭据猜测 自己刷绩效 2.其他公司恶意攻击
  7. 想法是在群晖 docker 安装服务端,电脑安装客户端,通过域名的方式访问,实现“群晖<->电脑”双向同步。目前只了解一个 ownCloud ,还有其他更好的云同步方案吗
  8. 难道公司业务产出停滞通过降低大家的收入就能促进产出提升了?难道逼大家卷工时,卷绩效,就能让公司利润提升? 有没有可能只是业务发展到了上限,市场本身的发展规模进入瓶颈,这时候再加更多的人力投入也只是边际效用极低的一种做法? 缩编的话我还能稍稍理解,当然如何缩、以及怎么处理释放出来的这部分人力那这是另一个问题了。 ——有感于各种降本增效政策。
  9. 北方 985 工科博士,上周博士录取通知书刚到,本校连读。 大前年突然神经性耳聋,连续打了 3 周前列地尔救了回来,目前感觉不出差别,但听力测试有明显差距。 前年检查出前列腺钙化斑,回学校复查后发现有前列腺炎,陆陆续续吃了很久的药,现在医生说痊愈了但是明显感觉不得劲。 没有女朋友,也不知道性生活是什么概念,听到朋友谈对象后心里特别难受,感觉自己手里的东西随风飘走回不来了。 也提不起兴趣找女朋友,自我感觉条件还行吧,但是每次都是软件上聊两句就没兴趣了。 前两天忙碌了很久的基金也被告知挂了,上头是好几个老师工作的压力,下面是几个不顶用的学生,感觉压力真的很大。 公路车骑了一年,最近刚升级了一些装备,本想趁着 8 月份好好骑骑,结果膝盖不舒服,遂去医院做核磁,查有膝盖积液,虽然不严重但是要吃药,静养不运动。 昨天又生了热疹,后背刺痒到难以忍受,又害怕抗过敏药跟膝盖的药冲突也不敢吃。 我并不是一个悲观的人,但是一连串的事情真把我搞破防了。 看到以前爬山、跑马拉松和踢球的照片就很怀念,无比怀念那个年轻健康的自己。 我不是一个悲观内向的人,但是我不由得发问,我真的老了吗?
  10. 现在用的 iPhone13 平均每天大概冲 3~4 次吧,然后就松动用不了了,插上去充不了电,可能接触不良,试过用牙签裹个纸巾去清灰啥的,效果不大。有时候插对了就能冲上。 可以理解每个零部件都有使用寿命,但是为啥苹果手机充电口这么不经插,不止 iPhone13 这样,之前用过的 iPhone7 iPhonexr 大概也是两年多就出现这个现象。 是这个频次太高了么?
  11. 分享一下各位大神的训练计划,比如你三分化、四分化怎么安排,动作,组数或容量 休息怎么安排,短间歇还是长涧西,心率需要保持很高吗 小白求指教。
  12. 卖家说是终身的账户发邀请,这是什么来源?
  13. 这是一个基于《子弹笔记》理念的 App 。 主要就是对书里的内容就行了高度还原。 包括: 任务,事件和笔记 Daily Log ,Monthly Log 和 Future Log 集子与标签. 子弹关联等... App 主体为 ios 端,同时也对 ipad 和 mac 版本进行了一定程度的适配。 App 对于做子弹笔记的人来说,是个不错的补充,欢迎下载体验和反馈! 详细介绍: https://bujo.railway.cool 下载地址: https://apps.apple.com/us/app/bujoflow-bullet-journal/id6499578629
  14. 下面是简化的代码,描述的是解密的过程,我想知道对应加密的过程是怎么样的,没看懂这种逻辑的还原原理是什么 uint32_t descrypt(byte[] block, byte[] key) { // table_s5678 都是长度为 256 的四字节数组 unsigned long table_s5[] = {0x21aa8423, 0x2fa1892a, 0x3dbc9e31, 0x33b79338,...}; unsigned long table_s6[] = {0x5ee7493, 0xce07f9e, 0x17f26289, 0x1efc6984,...}; unsigned long table_s7[] = {0xb33a6e73, 0xbe336078, 0xa9287265, 0xa4217c6e,...}; unsigned long table_s8[] = {0xb4469bf0, 0xbf4b92fe, 0xa25c89ec, 0xa95180e2, ...} uint32_t ptr1 = 0; uint32_t ptr2 = 0; uint32_t ptr3 = 0; uint32_t ptr4 = 0; uint32_t ab; // 注意这是解密的逻辑 // block 是明文,key 是密钥,两者各个字节先异或,然后在查表转换为四个字节的值 ptr1 = table_s5[block[3] ^ key0[3]]; ptr2 = table_s6[block[2] ^ key0[2]]; ptr3 = table_s8[block[0] ^ key0[0]]; ptr4 = table_s7[block[1] ^ key0[1]]; // 面就是我不懂的地方:ab 是四个 long 的异或,怎么还原回四个 ptr ,如果不还原,对应加密又是怎么处理的 ab = ptr1 ^ ptr2 ^ ptr3 ^ ptr4; return ab; 我对比了 AES 、DES 等算法里面关于 S 盒的实现,没有发现这么复杂的,主要就是一个自己转四个字节,四个字节转异或,怎么也没弄懂原理是什么。如果有知道的请指教。 更多:这个代码其实是苹果 FairPlay 的一部分,完整代码可以看这里( cycle 方法): https://github.com/FDH2/UxPlay/blob/c4fb40ee31b61b1b3b5ae406900af72edac2ca47/lib/playfair/omg_hax.c
  15. 有没有好用的 Mac 流量使用统计软件,最好能实现以下功能 1 )统计不同的 App 使用流量 2 )按日周月年等不同周期的流量使用报表
  16. 最近家里换了北京移动宽带,在折腾 ipv6 相关的设置,我有个疑问,我是装宽带的时候让师傅给我设置的桥接,光猫桥接以后是不是防火墙就不起作用了?我家里的 wifi 能获取到 24 开头的 ipv6 地址,但是从外面死活 ping 不通
  17. 原来的想法是买个平板二合一的笔记本,之前发贴,参考了各位 V 友的建议,发现适合自己的还是平板加远程方案。 目前预算 1500 元以下,买个平板,远程公司的 win11 主机,求 V 友推荐个好用的。远程主要是开 IDE 写代码。 预算不足,不打算上 mac 和其它笔记本了。 新品、二手平板都可以。
  18. 考虑到监管的原因,不打算在国内上线,目标是上线海外的苹果商店; 考虑到付费意愿,不打算做安卓版本,只做 ios; 这几天我一直在想,基于 chatgpt api 做的社交 app ,应该考虑哪些方面,我觉得有以下几点: ( 1 )定位为陌生人、年轻人社交平台; ( 2 )所有的陌生人社交 app ,无论套了多少层,核心都是“男生想认识美女,女生想认识帅哥”,但是这很难,因为往往一小部分猥琐男会对大批量的女生发起骚扰,导致女性用户会逃离 app ,最终 app 只剩下大量男性用户,无法持续下去;为了解决这个问题,可以采取如下措施:1.用户的聊天记录,传给 chatgpt ,让 chatgpt 定期生成一份关于该用户的评估报告(不泄露隐私),该份报告对本人隐藏,但是对他人可见,他人可根据报告决定是否发起聊天;
  19. 大家好! 我们团队搭建了一个 API 批量出图的网站,专门用来处理图片。无论是文生图还是图生图,图片相关的功能都能在我们的网站找到合适的 api 。 使用方法 我们网站的地址:www.aithriving.com 在接口文档中我们有完善的接口文档和示例代码。 额外服务 我们是一个团队,如果您不会开发,但是有一些好的想法可以联系我们,我们可以帮您搭建你的出图网站。 联系我们 有任何问题可以在网站上给我们发邮件,或者直接在帖子下面留言。我们都会及时回复
  20. PopupWord 弹词 这一次,我还是从自己的需求点出发,我有时候在想,我为什么要专门打开一款英语学习软件学习,我想让英语单词能时不时的出现在我面前让我去记忆,于是我的理念形成了,就是这一款插件--PopupWord 弹词,通过日常浏览网页,在网页加载完毕时,会有一个浮窗,输入正确单词即可关闭。还有一个念想是,你标记或者收藏的生词也许真的永远在收藏夹里吃灰,那么使用弹词会不断通过弹窗形式让你反复输入直到你肌肉记忆单词拼写为止。 功能介绍 基础的弹窗:输入正确即可关闭,也可以按 ESC 强制关闭,也可以在 popup 窗口设置不对当前网页打开。 词库:目前有初高、四六级这些基础词库。 划词翻译:英转中翻译 划词翻译的收藏功能:收藏的单词将会随机推送到窗口。 主要功能就这些,当你对单词很熟了就标记已会,生词不断减少,它将永远不会出现在浮窗里了。目前有弹窗样式受网页干扰的而变形的问题,将慢慢优化。 chrome 商店地址: https://chromewebstore.google.com/detail/popupword-web-%E5%BC%B9%E8%AF%8D/ajbpdbkffogndhmicjcdmdheejpfpkkf 技术以人为本,希望工具能对你学英语带来帮助。 最后,我得介绍下 Android 端弹词,我最早是先开发 Android 端的,但是自由度不是很高,安装这块对用户来说有点门槛。但是理念是一样的,就是在切出桌面弹词,输入正确即走。 目前 Android 已开源: https://github.com/LisPig/PopupWord 个人独立站:www.solooxy.com PopupWord 弹词官网(没完善):www.poupword.com
  21. 目前用的电脑没有管理员权限,翻了一下官方文档在 tun 那一节有提到说 tun 在非特权模式下需要手动配置 MTU 和接口名,但是我的理解是 tun 需要注册一个虚拟网卡,这难道不需要管理员权限吗
  22. 还记得我才入论坛的时候,有人发工作难找,评论都是:散播焦虑,传播负能量。 现在没有了,那么现在是真的工作难找吗?
  23. 这两天学习双机热备并且实际操作,但是没研究出来到底什么是比较适合的方案,网上搜出来的方案又太杂. 想请教一下到底哪个方案最好?目前使用的是 keepalived ,有更好的方案选择吗? 服务器上跑的服务中 mysql&redis 只有这两个需要使用 vip 做 ip 漂移!
  24. 为了 https 访问,他给域名装了 SSL 证书 浏览器访问正常,但 ChatGPT Action 调用时却老是报错 更奇怪的是,终端 Curl 访问也不行 大家猜猜为啥....
  25. 周末和我女朋友的朋友们出去露营,其中她的一个朋友的男朋友和我闲暇时刻聊起来了,因为我早就听说他一直不工作,我就好奇的问他是在干什么自己的事情吗?然后了解到他以前是干外贸销售的,后来受不了上班自己出来干了,已经好几年了,他自己一直在干外贸这块,由于我对这个领域不太懂就没有深问,我转而问为什么上班让他受不了。他说受不了职场里的傻 X ,受不了上班的模式,这让我突然想到我大学的一个和我关系最好的舍友,他也是这样的,而且基本上描述的理由一模一样,聊下来最终得出他们都有的理由: 家里就不是上班的,基本上都是做生意的。 受不了被人管,喜欢研究赚钱的门路。 不追求稳定和高收入,追求的是自由和过程。 其实想想我一直为什么想着自己干,但是还是没有实行,重要的一个原因就是害怕失去稳定的收入,每天也没有在研究赚钱的门路。 所以有些人真的是天生的创业者,而大部分人都不适合创业。
×
×
  • 创建新的...