首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

LiveData 的正确使用姿势以及反模式

比如我们实现收款到账提醒的功能,我们希望每次有新收到账的时候,发送一个到账通知的提醒,假设我们监听之前,已经有到账记录了,这时候如果我才开始监听,然后提醒我有新的到账(实际上是上一次的到账),这就有问题了...LiveData 常见的几种错误使用姿势 前文之所以花费这么大篇幅介绍 LiveData 的「粘性消息」特性,一是为了让大家对 LiveData 有更深一步的认识,了解其设计之初的目的才知道什么时候该用...小明是在之前付款了 100 元,而我是在之后才开始监听,此刻并不需要通知我之前发生的事情 这种情况下其实是不建议使用 LiveData 的,虽然使用各种 workaround 的方式(此处可参考我的另一篇文章...:LiveData 非粘性消息的探索和尝试 )可能可以满足需求,但是 LiveData 有自己特定的使用场景,如果非要突破限制去使用的话,会让 LiveData 变得更让人难以理解 此处引用另一篇博客的原文...使用 Architecture Component 实现 MVVM 的正确姿势 自定义生命周期以及实现生命周期感知能力

1.2K20

使用Repository模式支持产品的客户化

本篇博客简单描述了Repository模式在OEA中的应用。 不使用Repository时的问题     OEA框架中使用了DDD的思想,面向领域对象进行开发。...OEA是基于产品线的开发,如果采用前面的开发模式,当客户化版本扩展了主干版本中的实体类时,由于主干版本中的代码直接使用静态方法,所以无法获取到扩展后的新类型的对象。...基于以上的原因,团队决定使用Repository模式进行代码的重构。...小结     在OEA中使用Repository模式重构后,到目前为止已经使用了一个月左右,大家反应比起原来的调用模式好多了,同时还支持了客户化及其它实体框架引入的可能。...总体上来说,重构还是比较成功的。     在以前其它的系统的开发中,基本上也都使用到了Repository模式,这种模式在数据库应用程序的开发中,确实十分常用。

69150
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    正确使用 acme.sh, 让你的网站永久使用 ssl 证书,Its free!

    --nginx 注意, 无论是 apache 还是 nginx 模式, acme.sh在完成验证之后, 会恢复到之前的状态, 都不会私自更改你本身的配置....注意, 默认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的文件, 例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件....正确的使用方法是使用 --install-cert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置, 例如: Apache example: acme.sh --install-cert...并且可以指定 reloadcmd, 当证书更新以后, reloadcmd会被自动调用,让服务器生效....请确保 cronjob 正确安装, 看起来是类似这样的: crontab -l 56 * * * * "/root/.acme.sh"/acme.sh --cron --home "/root/

    9.6K11

    怎样正确使用函数式接口@FunctionalInterface,让你的代码更优雅!

    ,默认都继承了Object类,包含了来自java.lang.Object里对这些抽象方法的实现; 如下代码不会报错: JDK自带常用函数式接口 目前JDK自带的一些函数式接口已经够我们基础使用,当然你也可以自己定义使用...常用的函数式接口主要有四种类型,是通过其输入和输出的参数来进行区分的。定义了编码过程中主要的使用场景 Java8中对于接收两个参数的场景提供了相关的函数式接口。...如下: 开发案例分享 最近在开发一些分片规则的使用和一些附件应用的分片上传的功能,一下是一部分代码。 对于函数式接口的使用,其实这个东西有好有坏。一些人都习惯用申明接口,然后调用!...这样的逻辑去实现自己的业务,当然这样的方式没有问题。但是一些抽象逻辑只有内部方法里面使用到,但是自己又想抽离优化自己的代码解构体。这个时候可以考虑下函数式接口的使用。...如上面的注释逻辑,我完全可以将分片上传函数抽到执行逻辑上去,但是这样一来。整个执行逻辑和代码设计非常臃肿(个人观点) 小结 如果你要自己定义函数式接口要注意哪些?

    3.3K31

    使用装饰器模式让你的 fetch 更强大

    我的目的是采用一种不同的方法,从这两个方面都得到了最好的结果——使用装饰器模式来增加fetch() API的易用性和灵活性。...准备 Fetcher 接口 装饰器模式非常有用,因为它支持以灵活和松散耦合的方式在基本逻辑之上添加功能(换句话说——装饰)。 如果你不熟悉装饰模式,我建议您阅读它是如何工作的。...此外,由于新接口和新类的出现,事情变得更加复杂!稍等片刻,你会发现当装饰者模式被引入到行动中时所带来的巨大好处。 3. 给提取 JSON 数据的方法添加装饰器 装饰器模式的主要是装饰器类。...这就是为什么需要为网络请求设置一个超时,并在8秒后通知用户网络问题的原因。 装饰器模式的伟大之处在于,可以使用任意多的装饰器来装饰你的基本实现!...然而,使用像axios这样的第三方库会增加应用包的大小,同时你也会与之紧密结合。 另一种解决方案是在fetch()上面应用装饰器模式。您可以创建从请求中提取JSON、超时请求等等的装饰器。

    79830

    《上瘾:让用户养成使用习惯的四大产品逻辑》

    如果你想互联网创业,或者想了解互联网爆品背后的秘密,这四大产品逻辑会给你很多启发。 第一步:触发。 所谓触发,就是吸引用户,让他认识你的产品,有使用的欲望。...---- 第二步:行动 触发,是为了解决动机问题,让用户想用。但是,只有触发还不够,我们要的结果是用户真正使用这款产品,需要用户实实在在的行动。...如果触发做的很好,用户有了行动动机,但是行动的门槛太高太复杂,那么用户可能就一直停在心动这一步了。所以,当你开发一款产品,你不仅要让别人想用你的产品,还要降低使用的门槛,让一切简单化。...如果你的产品需要用户花大量时间、大笔金钱,耗费太多体力和脑力,那么用户想要拥有和使用你的产品,难度自然就很大。...想让用户上瘾,你的产品还需要满足用户的需求,从而激起他们更强烈的使用欲望。这就是酬赏。 酬赏可以分为三种。第一种是社交酬赏,用户使用产品之后可以用作社交分享。第二种酬赏是自我酬赏。

    83520

    使用 PostCSS 插件让你的网站支持暗黑模式

    最近公司需要给多个 webapp(大概 20+)加上多皮肤的功能,原先默认是白色皮肤,我们先从暗黑模式入手,从而逐渐实现多皮肤功能。本篇记录下实现思路。...换肤方案 css variables css variables 是 Web 标准实现了对深色模式的支持, 以下代码通过 CSS 媒体查询,最简单的实现。...使用新值调用时,将重新编译较少的文件,而无需重新加载。...小结 1、本篇总结了前端换肤的几种常用方式,通过最对比发现通过 PostCSS 生成皮肤样式在我们的项目中最为方便,也最容易让你的网站支持暗黑模式,我将 postcss-multiple-themes...最后 如果大家也在给 webapp 做换肤工作,被前端多皮肤的问题困扰,希望这篇文章对大家有所帮助,也可以参考我往期的文章或者在评论区交流你的想法和心得,欢迎一起探索前端。

    83720

    使用 PostCSS 插件让你的网站支持暗黑模式

    最近公司需要给多个 webapp(大概20+)加上多皮肤的功能,原先默认是白色皮肤,我们先从暗黑模式入手,从而逐渐实现多皮肤功能。本篇记录下实现思路。...换肤方案 css variables css variables 是 Web 标准实现了对深色模式的支持, 以下代码通过 CSS 媒体查询,最简单的实现。...使用新值调用时,将重新编译较少的文件,而无需重新加载。...目的 当前我有一份 less 样式和 2 份颜色变量,我需要生成如下样式: 这样我就可以在 html 跟节点 添加和删除 dark 这个样式来实现换肤了。...小结 1、本篇总结了前端换肤的几种常用方式,通过最对比发现通过 PostCSS 生成皮肤样式在我们的项目中最为方便,也最容易让你的网站支持暗黑模式,我将 postcss-multiple-themes

    85911

    使用Spring AI让你的Spring Boot应用快速拥有生成式AI能力

    之前分享了关于Spring新项目Spring AI的介绍视频: 视频里演示了关于使用Spring AI将Open AI的能力整合到Spring应用中的操作,但有不少读者提到是否有博客形式的学习内容。...所以,本文就将具体介绍如何使用 Spring AI 快速让您的Spring应用拥有生成式AI的强大能力。 动手试试 第一步:使用你最喜欢的IDE来生成一个基础的Spring Boot项目。...aiClient; public OpenAIController(AiClient aiClient) { this.aiClient = aiClient; } } 第四步:使用...PromptTemplate创建一个模版,然后根据用户输入使用模版来创建具体的Prompt生成结果。...下面是一个更复杂的使用方式: @GetMapping("/completion") public List completion(@RequestParam(value = "message

    47810

    产品小姐姐让我做一个登录模块、我赶紧打开了自己的这篇文章

    SpringBoot整合Shiro完成用户认证 前言 最近在做一个管理系统,神奇的是最后发现登录模块竟然没有安排人去做(不得不吐槽一下公司的开发流程emm),好在这个管理系统是内部使用的,目前基本没什么用户...于是产品小姐姐就把这块需求直接划分给了我。 ?...技术选型 第二天一大早我就开始考虑方案:脑海中的第一反应就是使用shiro来做权限认证,因为之前接触过shiro,但是不是自己开发的,而且开发完成后几乎没有过这方面的改动,因此自己对shiro也始终处于一知半解的程度...需求分析 由于时间紧迫、产品小姐姐对这块的要求也没那么严苛、跟我说只需要可以通过用户名+密码实现登录功能就完事了(其实是让我CV)。但是作为一条有梦想、有追求的程序员,怎么能甘心于此?...这样也不至于让后面接手的兄弟骂自己不是。于是我按照经典的五张表重新设计了这个需求。时间有限,准备先完成用户认证、动态菜单这两个功能。 表结构设计 趁着年轻还有头发、我赶紧设计出了如下的几张表。

    54120

    AlpineJS作者:不上班,一年站着赚10w刀

    大家好,我是卡颂。 今天为大家介绍一位坦诚的老哥。有多坦诚呢?他在推上实时公布自己赚了多少钱。 到去年6月,老哥的年收入是10w刀。关键是:老哥从19年1月就不上班了。...与Vue的渊源 不得不说Livewire的语法很类似Vue2。这也难怪,毕竟Laravel社区与Vue是有渊源的(Laravel创始人在推上的一波推广让当时名气还不大的Vue有了出圈的影响)。...虽然经常有用户表示希望他开通Patreon(一个打赏艺术家、创作者的网站),但这种「只有少数人每月打赏你5刀」的感觉,让「Caleb」觉得并不好。...Github Sponsors Github Sponsors是Github推出的一项开源项目投资计划,他的理念是: 向那些你日常业务使用的开源项目投资,使他们的团队有精力更好的维护项目,从而使你的业务从中受益...总结 凯文·凯利曾提出「1000粉丝」理论: 他认为,创作者,如艺术家、音乐家、摄影师、工匠、演员、动画师、设计师、视频制作者,或者作家,换言之,也就是任何创作艺术作品的人,只需要拥有1000名铁杆粉丝便能体面的生活

    1.5K30

    是什么让我节省了60%的编码时间?使用MBG

    它可以根据数据库的表自动为项目生产对应的实体类、Mapper、DAO,包括简单CRUD数据库操作(创建、查询、更新、删除)。解放了我们的双手,不必做重复性的机械工作。...节省下不少时间,不用再苦哈哈的加班了,还可以和妹纸去约会。...datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 创建一个SpringBoot项目 以使用...--defaultModelType用于指定生成对象的样式,flat表示每一张表只生成一个实体类,这个实体类包含表中的所有字段。...在Maven插件工具栏中,可以看到mybatis-generator插件,双击其中的generate选项即可,如下图: 构建成功以后,就可以看到生成的代码了,如下图: 验证自动生成的代码 验证之前还有一个步骤不要漏掉

    37330

    【JS】1797- 使用 File System Access API 让浏览器拥有操作本地文件的能力

    它提供了一种简单且安全的方法,让用户在不离开 Web 应用的情况下,从本地文件系统中操作文件。 这项 API 为 Web 应用程序提供了更多的灵活性和功能,使其更接近于本地应用程序的体验。...如果用户授权,则应用程序可以使用该 API 访问用户选择的文件和目录。...如何使用 File System Access API 我不是很喜欢概念性的东西,上面的内容是网上借鉴的(文化人),我更喜欢直接上代码,所以我们直接上代码。...下面是来自caniuse[2]的兼容性数据: 虽然Firefox还不支持,但是在一些实验性的项目上我们可以使用这些API,指定用户使用Chrome浏览器来访问。...可以发现我这次讲解的并不是很详细,因为这个API还在实验阶段,所以我只是简单的介绍了一下,如果大家想要了解更多的话,可以参考下面的参考资料。

    1.4K41

    使用了这个神器,让我的代码bug少了一半

    最近一段时间,我们团队在生产环境出现了几次线上问题,有部分比较严重,直接影响用户功能的使用,惹得领导不高兴了,让我想办法提升代码质量,这时候项目工程代码质量检测神器——SonarQube,出现在我们的视线当中...在典型的开发过程中: 开发人员在IDE中开发和合并代码(最好使用SonarLint在编辑器中接收即时反馈),然后将其代码签入ALM。...,我在这里就不过多介绍了,网上有很多教程。...除了免费和开源之外,PostgreSQL也是高度可扩展的。例如,您可以定义自己的数据类型,构建自定义函数,甚至可以使用不同的编程语言编写代码,而无需重新编译数据库。...此外,还有mybatis插件 gitee地址:https://gitee.com/mirrors/sonar-mybatis 我个人用过,觉得作用不大,不过可以基于这个代码扩展自己需要的功能。

    2.1K40

    推荐几个我常用的Chrome插件 —— 让你使用Github效率翻倍

    以下文章来源于code秘密花园 ,作者ConardLi 推荐几个我常用的Chrome插件 —— 让你使用Github效率翻倍 Chrome 可以说是全世界最受欢迎的浏览器了,其快速、稳定的性能...我个人安装了非常多的 Chrome 插件,这些插件可以在使用浏览器的各个方面帮助我提升效率,今天就推荐一些 Github 相关的 Chrome 插件。...点击按钮跳转到更清晰的 git 历史页面,展示该文件的历史变更情况。相比直接使用 git log ,这种方式更友好。...下载方式:Chrome 商店搜索 Octotree Sourcegraph 让你能在浏览 GitHub 时也能拥有智能提示、转到定义、查找参考,支持20多种语言和其他流行的代码宿主。...下载方式:Chrome 商店搜索 Enhanced GitHub OctoLinker 让你看代码的时候,可以进行更高效的代码连接跳转。

    1.2K10

    推荐几个我常用的Chrome插件 —— 让你使用Github效率翻倍

    推荐几个我常用的Chrome插件 —— 让你使用Github效率翻倍 Chrome 可以说是全世界最受欢迎的浏览器了,其快速、稳定的性能,简洁的设计以及多平台同步的功能都深受用户的推崇,然而很多人成为他的忠粉还是因为它强大的拓展性...我个人安装了非常多的 Chrome 插件,这些插件可以在使用浏览器的各个方面帮助我提升效率,今天就推荐一些 Github 相关的 Chrome 插件。...点击按钮跳转到更清晰的 git 历史页面,展示该文件的历史变更情况。相比直接使用 git log ,这种方式更友好。...下载方式:Chrome 商店搜索 Octotree Sourcegraph 让你能在浏览 GitHub 时也能拥有智能提示、转到定义、查找参考,支持20多种语言和其他流行的代码宿主。...下载方式:Chrome 商店搜索 Enhanced GitHub OctoLinker 让你看代码的时候,可以进行更高效的代码连接跳转。

    86220

    使用了这个神器,让我的代码bug少了一半

    最近一段时间,我们团队在生产环境出现了几次线上问题,有部分比较严重,直接影响用户功能的使用,惹得领导不高兴了,让我想办法提升代码质量,这时候项目工程代码质量检测神器——SonarQube,出现在我们的视线当中...刚开始我们为了省事,安装了 7.6的版本,因为mysql数据库我们已经在用了,无需额外安装其他数据库,并且JDK8也在使用,安装成本最小。...,我在这里就不过多介绍了,网上有很多教程。...除了免费和开源之外,PostgreSQL也是高度可扩展的。例如,您可以定义自己的数据类型,构建自定义函数,甚至可以使用不同的编程语言编写代码,而无需重新编译数据库。...此外,还有mybatis插件 gitee地址:https://gitee.com/mirrors/sonar-mybatis 我个人用过,觉得作用不大,不过可以基于这个代码扩展自己需要的功能。

    1.2K10

    《上瘾:让用户养成使用习惯的四大产品逻辑》读书笔记

    是否有一种潜在的模式能让技术将我们吸引,欲罢不能?” 01 如何让用户上瘾使用你的产品? 让用户习惯使用你的产品,将用户遇到的问题和设计者的解决方案频繁联系在一起,帮助用户形成一种习惯。...让产品进入用户的“习惯区间”,极其简明的上瘾模型(the Hook Model):触发——行动——多变的酬赏——投入。通过4步骤来养成用户的使用习惯。...(投入) 02 习惯的力量:如何让产品维生素变成止痛药 习惯养成类成产品改变用户习惯,按照产品设定好的行为模式对我们的一举一动产生巨大影响,无需在其他外部诱因就开始某项活动,让用户一而再,再而三的接近产品...行动阶段使用户即时获得满足,而投入阶段主要与用户对未来酬赏的期待有关,用户只有在享受了各种酬赏之后才会对产品进行投入。要想让用户产生心理联想并自动采取行动,首先必须让他们对产品有所投入。...,服务的存储价值越大 关注者:用户拥有的关注者越多,twitter提供的服务价值越高 信誉:一切通过信誉决定 技能:用户投入时间和精力学习使用一项产品是投资和存储价值,获得此项技能,变得不被轻易改变 加载下一个触发

    41530

    读书笔记——上瘾:让用户养成使用习惯的四大产品逻辑

    我的行动: 行动三要素 魔兽世界 写博客 动机(快乐和痛苦、希望和恐惧、社会接纳和排斥) 快乐与成就感、好奇心、社会接纳 成就感、社会接纳 能力(时间、金钱、体力、脑力、社会接受、常规) 大量时间投入,...产品中获取资源、信息、体验 游戏体验;为提升体验学习到游戏内的大量信息(打发、配装) 技术总结中获取大量信息;经过思考加工后的信息; 产品中获取的成就感、操控感、终结感 游戏中有大量反馈机制 文章被更多人看到...、认可、对问题的交流都带来成就感 保障自主选择权 让玩家感受到对角色的完全控制 完全自主 有限多变性使产品丧失神秘感、吸引力 持续更新 无 基本使用需求 投入游戏可以快速打发时间 技术总结是基础功能...最后 游戏产品往往在多变的酬劳这一部分做了大量设计,例如魔兽世界的天赋系统多次改革、橙装特效、套装等等。...在游戏中的思考、付出,会被自我认知放大很多倍,例如经过自己的思考改变输出手法结果DPS提升,可能只是解决了简单的2*2>3的问题,但在游戏中会得到很强的成就感和自我认同感(仿佛付出了很多时间脑力才得到别人得不到的结果

    36310
    领券