大家好,我卡颂。虽然React官网用大量篇幅介绍最佳实践,但因JSX语法的灵活性,所以总是会出现奇奇怪怪的React写法。本文介绍2种奇怪(但在某些场景下有意义)的React写法。ref的奇怪用法这是一段初看让人很困惑的代码:functionApp(){const[dom,setDOM]=useState(null);returndivref={setDOM}>div>;}让我们来分析下它的作用。首先,ref有两种形式(曾经有3种):形如{current:T}的数据结构回调函数形式,会在ref更新、销毁时触发例子中的setDOM是useState的dispatch方法,也有两种调用形式:直接传
距离ChatGPT的最初发布,过去差不多四个月的时间了。在这期间,ChatGPT的惊艳表现,让人直呼AIGC是不是要提前实现了。不过众所周知的一个秘密是,ChatGPT不大可能开源,加上巨大的算力投入以及海量的训练数据等,都为研究界复制其实现过程设下重重关卡。面对ChatGPT的来势汹汹,开源平替是一个不错的选择,它们在实现相似功能的同时,还能让你通过替代品了解ChatGPT的运行机理。随着技术的进步,现在已经出现了许多其他类似于ChatGPT的新AI模型。本文我们将为大家盘点一下ChatGPT的开源平替项目。内容将分为两部分,一部分为类ChatGPT开源项目汇总,另一部分是对该项目汇总的补充
距离ChatGPT的最初发布,过去差不多四个月的时间了。在这期间,ChatGPT的惊艳表现,让人直呼AIGC是不是要提前实现了。不过众所周知的一个秘密是,ChatGPT不大可能开源,加上巨大的算力投入以及海量的训练数据等,都为研究界复制其实现过程设下重重关卡。面对ChatGPT的来势汹汹,开源平替是一个不错的选择,它们在实现相似功能的同时,还能让你通过替代品了解ChatGPT的运行机理。随着技术的进步,现在已经出现了许多其他类似于ChatGPT的新AI模型。本文我们将为大家盘点一下ChatGPT的开源平替项目。内容将分为两部分,一部分为类ChatGPT开源项目汇总,另一部分是对该项目汇总的补充
还记得2007年那个可怕的"熊猫"吗?作者李俊几乎是以一己之力唤醒了人们的安全意识。"熊猫烧香"为李俊赢得了天才的名誉,同时也让他锒铛入狱。处狱以后,李俊似乎销声匿迹了,可是就是这样一个天才,却再次走上了违法的道路,二次进宫,而让他犯法的就是我们今天要说的"小电影"行业。暂时不讨论李俊的熊猫烧香病毒,后续会专门分析。本篇文章不涉及舆论道德、身体健康、法律法律等因素。概述面对一些美女快播、美女视频、宅男电影等应用程序,你是否想安装?但可得小心点,这些应用程序不仅涉嫌传播淫秽色情内容,很多程序还被内置恶意代码,通过恶意推广以及诱骗用户支付,导致用户资费损失。此类APP大多来源于管理不规范的应用市场
还记得2007年那个可怕的"熊猫"吗?作者李俊几乎是以一己之力唤醒了人们的安全意识。"熊猫烧香"为李俊赢得了天才的名誉,同时也让他锒铛入狱。处狱以后,李俊似乎销声匿迹了,可是就是这样一个天才,却再次走上了违法的道路,二次进宫,而让他犯法的就是我们今天要说的"小电影"行业。暂时不讨论李俊的熊猫烧香病毒,后续会专门分析。本篇文章不涉及舆论道德、身体健康、法律法律等因素。概述面对一些美女快播、美女视频、宅男电影等应用程序,你是否想安装?但可得小心点,这些应用程序不仅涉嫌传播淫秽色情内容,很多程序还被内置恶意代码,通过恶意推广以及诱骗用户支付,导致用户资费损失。此类APP大多来源于管理不规范的应用市场
那么如果这种布局如此低效和笨拙,为什么我们今天还在使用它呢?QWERTY布局在过去的一个世纪里一直伴随着我们,原因有两个:它是第一个被每个人都习惯和接受的既定布局;当计算机开始成为主流时,计算机键盘行业的领导者选择在他们制造的键盘上保留QWERTY布局,而这样有效地将几代打字员与低效的布局联系在一起。当IBM和其他主要制造商选择坚持使用QWERTY时,其他所有人都效仿。因此,他们建立了未来几十年的布局设计标准:无论多么低效和过时。
那么如果这种布局如此低效和笨拙,为什么我们今天还在使用它呢?QWERTY布局在过去的一个世纪里一直伴随着我们,原因有两个:它是第一个被每个人都习惯和接受的既定布局;当计算机开始成为主流时,计算机键盘行业的领导者选择在他们制造的键盘上保留QWERTY布局,而这样有效地将几代打字员与低效的布局联系在一起。当IBM和其他主要制造商选择坚持使用QWERTY时,其他所有人都效仿。因此,他们建立了未来几十年的布局设计标准:无论多么低效和过时。
缘起序列化已经是Android司空见惯的东西了,场景太多了。就拿Intent来说吧,extra能放的数据,除了基本类型外,就是序列化的数据了,有两种:Serializable:Java世界自带的序列化工具,大道至简,是一个无方法接口Parcelable:Android的官配序列化工具这二者在性能、用法乃至适用场景上均有不同,网上的讨论已经很多了,这里不再赘述。下面来看看官配正品怎么用的。Android的Parcelable首先看看官方示例:publicclassMyParcelableimplementsParcelable{privateintmData;publicintdescribeC
缘起序列化已经是Android司空见惯的东西了,场景太多了。就拿Intent来说吧,extra能放的数据,除了基本类型外,就是序列化的数据了,有两种:Serializable:Java世界自带的序列化工具,大道至简,是一个无方法接口Parcelable:Android的官配序列化工具这二者在性能、用法乃至适用场景上均有不同,网上的讨论已经很多了,这里不再赘述。下面来看看官配正品怎么用的。Android的Parcelable首先看看官方示例:publicclassMyParcelableimplementsParcelable{privateintmData;publicintdescribeC