tag 标签: 11章

相关资源
  • 所需E币: 0
    时间: 2024-5-21 11:04
    大小: 2.9KB
    上传者: 开心就很好了
    一、nextjs基本介绍Next.js是一个基于React的轻量级框架,用于构建React应用程序。它在React的基础上提供了一些增强功能,包括服务器渲染(SSR)、静态生成(SSG)、路由等。Next.js的目标是简化React应用程序的开发流程,并提供更好的性能和开发体验。Nextjs是一个使用react作为前端框架底层的支持SSR(请求时渲染)、SSG(构建时渲染)等技术的全栈框架,在2022年的服务端框架中排名第一。它的优点非常明显,既支持react的虚拟dom形式快捷完成开发,又支持访问即可看到完整内容,友好的SEO/浏览器直出形式。结合了静态分离和服务器渲染的双重优势。同时在服务端也非常容易做缓存相关的处理,甚至是做一些中间件的开发,简直是前端开发的神兵利器。当前缺点也有一些,包括跳转的时候会重复下载内容,开发的时候需要一些服务端开发能力,甚至是部署的时候没点本事都部署不明白。以上这些都是Nextjs的内容,作为一个合格的开发者,研究未来趋势的开发能力,使用更有成长潜力的技术,都是我辈需要实践的真理。二、RedwoodJS和NextJS的相似之处这两个框架的设计都使开发人员能够轻松创建快速、安全和可扩展的web应用程序。这两个框架都使用ReactJS库来构建用户界面(UI)。这意味着熟悉ReactJS库的开发人员会发现使用这两种框架中的任何一种构建应用程序都很容易。这两个框架都支持服务器端渲染,允许开发人员在服务器而不是浏览器上渲染网页,从而提高web应用程序的性能。此外,RedwoodJS和NextJS支持自动代码分割,允许开发人员将他们的web应用程序分割成更小的块,可以根据需要加载。三、Next.js主要解决了以下问题:SEO和首屏加载性能:传统的客户端渲染的React应用可能不利于搜索引擎爬虫的抓取,且首次加载时间较长。Next.js提供服务端渲染作为默认行为,这意味着页面在服务器上被渲染为HTML,然后发送给客户端。这样做可以显著提升首屏加载速度,并对搜索引擎优化友好。开发效率:在使用React开发大型应用时,开发者通常需要配置路由、代码拆分、构建优化等。Next.js通过约定大于配置的方式,减少了这些常见任务的手动设置,提供了简易的文件系统路由、自动的代码拆分和热加载,提高了开发效率。构建和部署:Next.js提供现成的构建系统和对持续集成的优化,使得将应用从开发阶段迁移到生产变得简单。此外,与Vercel平台的无缝集成也让部署变得异常轻松。灵活的数据获取策略:Next.js提供了灵活的数据获取方法,如getStaticProps和getServerSideProps,使得开发者可以根据页面的需求选择不同的数据预渲染策略,例如静态生成或服务器端渲染。无需额外设置的TypeScript支持:Next.js从一开始就考虑了对TypeScript的支持,让开发者能够享受到强类型语言带来的好处,而无需复杂的配置。API路由:Next.js允许开发者在同一个项目中构建前端页面和API接口,简化了全栈应用的开发过程。生态系统和社区支持:Next.js随着时间的推移建立起了一个健康的插件生态系统,并且得到了强大的社区支持,这为开发者提供了各种资源和第三方库的集成。总之,Next.js的出现是为了简化和优化基于React的应用开发流程,同时提供了高性能和SEO友好的解决方案,它代表了当代Web应用开发的一个重要趋势。四、主要功能:路由:基于文件系统的路由器构建在服务器组件之上,支持布局、嵌套路由、加载状态、错误处理等。渲染:使用客户端和服务器组件进行客户端和服务器端渲染。使用Next.js在服务器上进一步优化静态和动态渲染。在Edge和Node.js运行时上进行流式传输。数据获取:通过服务器组件中的async/await简化数据获取,以及用于请求记忆、数据缓存和重新验证的扩展获取API。样式:支持您首选的样式方法,包括CSS模块、TailwindCSS和CSS-in-JS优化:图像、字体和脚本优化,以改善应用程序的核心网络生命和用户体验。TypeScript:改进了对TypeScript的支持,具有更好的类型检查和更高效的编译,以及自定义TypeScript插件和类型检查器。五、Next.js可以带给我们什么?Next.js是一个Reactweb应用框架,这是官方对自己的定义,然后它主要做的事情有以下几点:1、完善的工程化机制2、良好的开发和构建性能3、智能文件路由系统4、多种渲染模式来保证页面性能体验5、可扩展配置6、提供其他多方面性能优化方案7、提供性能数据,让开发者更好的分析性能。8、提供的其他常用功能或者扩展,比如使用mdx来编写页面的功能等等
  • 所需E币: 0
    时间: 2023-11-29 14:22
    大小: 4.78KB
    大家好,今天我将给大家分享关于如何开发一个数据库系统的知识,将从0到1手把手带着一步步去开发这个项目,希望我的分享对大家的学习和工作有所帮助,如果有不足的地方还请大家多多指正。一、什么是数据库系统数据库系统一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成 二、数据库管理系统的主要功能包括数据定义功能:DBMS提供数据定义语言(DataDefinitionLanguage,DDL),用户通过它可以方便地对数据库中的对象进行定义数据组织、存储和管理:DBMS要分类组织、存储和管理各种数据,包括数据字典、用户数据、数据的存取路径等。数据操纵功能:DBMS提-供数据操纵语言(DataManipulationLanguage,DML),用户可以使用DML操纵数据,实现对数据库的基本操作,如查询、插入、删除和修改等数据库的事务管理和运行管理:数据库在建立、运用和维护时由数据管理系统统一管理、统一控制,以保证数据的安全性、完整性、多用户对数据的并发使用以及发生故障后的系统恢复数据库建立和维护功能:数据库初始数据的输入、转换功能,数据库的转储、恢复功能,数据库的重组织功能和性能监视、分析功能等。三、数据库系统结构1.1模式(概念模式或逻辑模式)定义:数据库中全体数据的逻辑结构特征的描述,是所有用户的公用数据库结构。特性:一个数据库只有一个模式模式与应用程序无关,只是数据的一个框架1.2子模式(外模式或用户模式)定义:数据库用户所见和使用的局部数据的逻辑结构和特征的描述,是用户所用的数据库结构特性:子模式是模式的子集一个数据库有多个子模式,每个用户至少使用一个子模式同一个用户可以使用不同的子模式,每个子模式可为不同的用户所用1.3内模式(存储模式)定义:是数据物理结构和存储方法的描述。它是整个数据库的最低层结构的表示。特性:一个数据库只有一个内模式,内模式对用户透明一个数据库由多种文件组成,如用户数据文件,索引文件及系统文件内模式设计直接影响数据库的性能以下是开发流程:在idea中构建如下几个子模块工程:@PostMapping("/doLogin")@ApiOperation(value="一键注册登录接口",notes="一键注册登录接口",httpMethod="POST")publicGraceJSONResultdoLogin(HttpServletRequestrequest,                HttpServletResponseresponse,                @RequestBody@ValidRegisterLoginBOregisterLoginBO,                BindingResultresult);验证的字段上方可以写一些相关的注解,系统识别后会自动检查RegisterLoginBO.javapublicclassRegisterLoginBO{  @NotBlank(message="手机号不能为空")  privateStringmobile;  @NotBlank(message="短信验证码不能为空")  privateStringsmsCode;  publicStringgetMobile(){    returnmobile;  }  publicvoidsetMobile(Stringmobile){    this.mobile=mobile;  }  publicStringgetSmsCode(){    returnsmsCode;  }  publicvoidsetSmsCode(StringsmsCode){    this.smsCode=smsCode;  }  @Override  publicStringtoString(){    return"RegisterLoginBO{"+        "mobile='"+mobile+'\''+        ",smsCode='"+smsCode+'\''+        '}';  }}如果校验有问题,那么可以直接获得并且放回给前端即可。BaseController.java/** *验证beanBO中的字段错误信息 *@paramresult *@return */publicMap<String,String>getErrors(BindingResultresult){  Map<String,String>map=newHashMap<>();  List<FieldError>errorList=result.getFieldErrors();  for(FieldErrorerror:errorList){    //发生验证错误所对应的某一个属性    StringerrorField=error.getField();    //验证错误的信息    StringerrorMsg=error.getDefaultMessage();    map.put(errorField,errorMsg);  }  returnmap;}一般来说,admin系统不会有主动注册功能,账号都是分配的,那么默认就会存在一个基本账户,这也是预先通过代码生成用户名和密码的。直接手动生成即可:<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>同理,查询操作也是类似JPA的操作,再继承Repository后直接使用其内置api即可:FriendLinkMngControllerApi.java@PostMapping("getFriendLinkList")@ApiOperation(value="查询友情链接列表",notes="查询友情链接列表",httpMethod="POST")publicGraceJSONResultgetFriendLinkList();首先可以在数据库通过写sql脚本实现查询SELECTc.idascommentId,c.father_idasfatherId,c.article_idasarticleId,c.comment_user_idascommentUserId,c.comment_user_nicknameascommentUserNickname,c.contentascontent,c.create_timeascreateTime,f.comment_user_nicknameasquoteUserNickname,f.contentasquoteContentFROMcommentscLEFTJOINcommentsfonc.father_id=f.idWHEREc.article_id='2006117B57WRZGHH'orderbyc.create_timedesc目前我们所搭建的eureka是单机单实例的注册中心,如果挂了,那么整个微服务体系完全不可以,这是不应该的,所以为了实现eureka的高可用,我们可以搭建集群。在进行集群构建之前,大家先参照目前的eureka再去构建一个一模一样的工程,可以取名为springcloud-eureka-cluster。为集群中各个eureka节点配置hosteureka: instance:  hostname:eureka-cluster-${port:7001}  #集群中每个eureka的名字都要唯一 #自定义eureka集群中另外的两个端口号 other-node-port2:${p2:7002} other-node-port3:${p3:7003} client:#  register-with-eureka:false#  fetch-registry:false  service-url:   #集群中的每个eureka单实例,都需要相互注册到其他的节点,在此填入集群中其他eureka的地址进行相互注册   defaultZone:http://eureka-cluster-${eureka.other-node-port2}:${eureka.other-node-port2}/eureka/,http://eureka-cluster-${eureka.other-node-port3}:${eureka.other-node-port3}/eureka/我们自己测试的时候时间可以设置为10秒内有10次,我认定非法请求,直接限制这个ip访问15秒,15秒后释放。(像有的网站会出现二维码让你扫描通过,或者手机验证码或者人机交互判断你当前是否是人还是机器,因为有可能是爬虫请求)开发步骤:首先在yml中设置基本参数:@OverridepublicObjectrun()throwsZuulException{  System.out.println("执行【IP黑名单】Zuul过滤器...");  //获得上下文对象requestContext  RequestContextrequestContext=RequestContext.getCurrentContext();  HttpServletRequestrequest=requestContext.getRequest();  //获得ip  Stringip=IPUtil.getRequestIp(request);  /**   *需求:   *判断ip在10秒内请求的次数是否超过10次,   *如果超过,则限制访问15秒,15秒过后再放行   */  finalStringipRedisKey="zuul-ip:"+ip;  finalStringipRedisLimitKey="zuul-ip-limit:"+ip;  //获得剩余的限制时间  longlimitLeftTime=redis.ttl(ipRedisLimitKey);  //如果剩余时间还存在,说明这个ip不能访问,继续等待  if(limitLeftTime>0){    stopRequest(requestContext);    returnnull;  }  //在redis中累加ip的请求访问次数  longrequestCounts=redis.increment(ipRedisKey,1);  //从0开始计算请求次数,初期访问为1,则设置过期时间,也就是连续请求的间隔时间  if(requestCounts==1){    redis.expire(ipRedisKey,timeInterval);  }  //如果还能取得到请求次数,说明用户连续请求的次数落在10秒内  //一旦请求次数超过了连续访问的次数,则需要限制这个ip了  if(requestCounts>continueCounts){    //限制ip访问一段时间    redis.set(ipRedisLimitKey,ipRedisLimitKey,limitTimes);    stopRequest(requestContext);  }  returnnull;}privatevoidstopRequest(RequestContextrequestContext){  //停止继续向下路由,禁止请求通信  requestContext.setSendZuulResponse(false);  requestContext.setResponseStatusCode(200);  Stringresult=JsonUtils.objectToJson(      GraceJSONResult.errorCustom(          ResponseStatusEnum.SYSTEM_ERROR_BLACK_IP));  requestContext.setResponseBody(result);  requestContext.getResponse().setCharacterEncoding("utf-8");  requestContext.getResponse().setContentType(MediaType.APPLICATION_JSON_VALUE);}上面这些都是通过不同key要执行多次才能得到结果,一般来说我们会使用es的aggs功能做聚合统计,会更好。通过一个脚本来统计男女数量:POSThttp://192.168.1.203:9200/fans/_doc/_search{  "size":0,  "query":{    "match":{      "writerId":"201116760SMSZT2W"    }  },  "aggs":{    "counts":{      "terms":{        "field":"sex"      }    }  }}以下就是数据库系统开发的整个流程讲解,感谢大家的阅读
  • 所需E币: 0
    时间: 2023-11-15 15:02
    大小: 2.91KB
    从0到1训练自己的大模型,揭密Chat背后的技能与应用,完结11章,源码+PPT下载!那么,什么是大模型呢?大模型是指具有大规模参数和复杂计算结构的机器学习模型。本文从大模型的基本概念出发,对大模型领域容易混淆的相关概念进行区分,并就大模型的发展历程、特点和分类、泛化与微调进行了详细解读,供大家在了解大模型基本知识的过程中起到一定参考作用。那么,大模型和小模型有什么区别?小模型通常指参数较少、层数较浅的模型,它们具有轻量级、高效率、易于部署等优点,适用于数据量较小、计算资源有限的场景,例如移动端应用、嵌入式设备、物联网等。而当模型的训练数据和参数不断扩大,直到达到一定的临界规模后,其表现出了一些未能预测的、更复杂的能力和特性,模型能够从原始训练数据中自动学习并发现新的、更高层次的特征和模式,这种能力被称为“涌现能力”。而具备涌现能力的机器学习模型就被认为是独立意义上的大模型,这也是其和小模型最大意义上的区别。相比小模型,大模型通常参数较多、层数较深,具有更强的表达能力和更高的准确度,但也需要更多的计算资源和时间来训练和推理,适用于数据量较大、计算资源充足的场景,例如云端计算、高性能计算、人工智能等。基于负采样的softmax计算现在随着GPU计算性能的增加,几万个类别已经不算太大所以现在LM一般不使用这个技巧了。几万类别ok,但几百万、几千万类别呢?人脸识别。为什么现在很难基于人脸去直接识别顾客的基本信息,非得先录入。现在基本都是人脸匹配,只是基于已经有图片进行查找,而不是直接去分类。就是因为真正去分类类别数量太大,如果是全国范围,就是14亿的类别。树型结构的本质是二叉树,在计算机(无论算法还是工程)领域,应用案例随处可见。结构体也是开发中使用频率极高的一种数据类型,本节我们就来看看结构的一些重要知识点。我们先看下面的例子:packagemainimport("log""unsafe")typeStstruct{f1int8f2int16f3int64}typeSt1struct{f1int8f3int64f2int16}funcinit(){log.SetFlags(log.Lshortfile)}funcmain(){st:=St{}st1:=St1{}log.Println(unsafe.Sizeof(st))log.Println(unsafe.Sizeof(st1))log.Println(unsafe.Sizeof(int8(1)))log.Println(unsafe.Sizeof(int16(1)))log.Println(unsafe.Sizeof(int64(1)))}我们可以理解为切片数据的一个快捷方式,其地址跟原始切片是一致的,所以在函数内对切片进行修改会影响到原始切片的值。但是需要注意的是,我们在函数内对切片进行重新赋值会改变函数内实参的数据地址的指向:我们可以通过下面的代码来理解:packagemainimport("log""reflect")funcinit(){log.SetFlags(log.Lshortfile)}funcmain(){//s:=[]int{1,2,3}s:=make([]int,0,6)s=append(s,1,2,3)log.Printf("s:%p",s)assignSlice(s)chageSliceItem(s)log.Println("s:",s)appendSliceItem(s)log.Println("s:",s)//通过反射改变切片的长度reflect.ValueOf(&s).Elem().SetLen(4)log.Println("s:",s)}funcassignSlice(param[]int){log.Printf("assignSliceparam:%p",param)s1:=[]int{1,2,3}//param与函数外的切片s解除引用关系,同时param将指向s1的数据地址param=s1log.Printf("assignSliceparam:%p",param)param[0]=5}//会影响到函数外切片的值funcchageSliceItem(param[]int){param[0]=4}funcappendSliceItem(param[]int){log.Printf("appendSliceItemparamaddr:%pcap:%d",param,cap(param))//发生扩容,指向的数据地址发生了变化(发生了copy),所以不会影响到函数的切片param=append(param,5)log.Printf("appendSliceItemparamaddr:%pcap:%d",param,cap(param))}Jackson开发方法Jackson开发方法是一种面向对象的软件开发方法,它的核心是通过对问题域的分析和描述来构建类图和类之间的关系图。Jackson开发方法强调在开发过程中使用类图和流程图来描述软件系统的结构和行为,并通过使用设计模式和框架来提高代码的可重用性和可维护性。与CMM模型、结构化开发方法和面向对象开发方法相比,Jackson开发方法更注重软件系统的分析和设计,能够更好地描述软件系统的结构和行为。但是,它对需求的分析和描述可能不够全面和详细,需要结合其他方法进行补充和完善。综上所述,CMM模型、结构化开发方法和面向对象开发方法各有其优缺点,需要根据具体的项目需求和情况进行选择。UML是标准的建模语言,可以用于各种软件开发方法的建模。Jackson开发方法是面向对象的软件开发方法的一种,与其他方法可以相互补充和完善。大模型开发工具与开源社区,Colossal-AI再次迭代,提供开箱即用的8到512卡LLaMA2训练、微调、推理方案,对700亿参数训练加速195%,并提供一站式云平台解决方案,极大降低大模型开发和落地应用成本。
  • 所需E币: 0
    时间: 2023-10-26 10:01
    大小: 1.67KB
    无论你是数据库内核研发、DBA、还是后端研发,能够手写一套自己的数据库系统,都是你突破技术发展瓶颈的有效途径。[11章]技术大牛成长课,从0到1带你手写一个数据库系统课程将带你从架构设计,原理剖析,再到源码的实现,手把手带你构建一套完整的数据库系统,让你深度掌握数据库底层,及更多数据库高端技术,具备解决大量生产级数据库问题的能力,助力成为高端技术人才!从数据库架构设计到功能实现,吃透底层原理,解决大量生产级问题具备从0到1数据库系统的架构设计能力从需求分析,系统分析,到系统架构设计,以及面向未知故障场景防御式编程,灵活运用设计模式,全面深入理解数据库系统架构深度掌握数据库底层原理及系统性方法论掌握SQL语法解析、语义解析原理,数据库如何生成执行计划,数据库底层存储机制、事务管理机制,C/S架构网络服务,综合性提升数据库运维、调优能力提升大量生产级数据库问题高效解决能力深入掌握数据库索引调优思路、瓶颈点,如何快速定位线上问题,深入挖掘针对数据库的面试题,知其然更知其所以然,有效突破你的疑难杂症问题解决能力理论结合实际场景综合性落地,轻松吃透核心技术底层原理应用场景复用到日常开发场景中,如何运用高级数据结构、算法和设计模式,如何正确面对高并发进行编程,如何进行数据库的优化,如何理解数据库的执行计划分析慢SQL的原因等。原理剖析深度剖析数据库系统原理,将数据库几十年发展精髓拆解并呈现,端到端解析数据库系统中的各种工程trick,结合具体实现案例(MySQL/PostgreSQL/SQLite)展现系统级实现方案源码实战手把手实现每一行代码,掌握每行代码的原理,实现代码规模巨大的数据库系统原型,开发、debug过程演示真实传授解bug的核心方法论,探讨各种工程技巧、可优化的空间,引发深层思考多场景数据库解决方案,灵活解决大量生产级问题数据库性能及扩展评估数据库性能、扩展数据库功能特性、数据库扩展的方法和机制数据库优化分析数据库性能瓶颈、配置数据库索引、执行计划分析、分析系统硬件瓶颈大数据量存储如何进行数据存储、设计端到端大数据量存储方案、评估大数据量对数据库的影响数据库高可用数据库高可用的挑战、数据库WAL机制、WAL机制在数据库高可用中的应用数据库网络规划OS的网络模型、高效实现网络编程、数据库如何面对高并发挑战数据库故障定位定位数据库中故障的来源、如何对故障进行响应、进行数据库系统的高效运维
  • 所需E币: 0
    时间: 2023-9-18 10:23
    大小: 1.23KB
    上传者: huangyasir1990
    SpringBoot3.0+RocketMq构建企业级数据中台,RocketMq是一个队列模型的消息中间件,具有高性能、高可靠、高实时、分布式特点;Producer、Consumer、队列都可以分布式;Producer向一些队列轮流发送消息,队列集合称为Topic,Consumer如果做广播消费,则一个consumer实例消费这个Topic对应的所有队列,如果做集群消费,则多个Consumer实例平均消费这个topic对应的队列集合;能够保证严格的消息顺序;提供丰富的消息拉取模式;高效的订阅者水平扩展能力;实时的消息订阅机制;亿级消息堆积能力;较少的依赖。SpringBoot是所有基于Spring开发项目的起点。SpringBoot集成了绝大部分目前流行的开发框架,就像Maven集成了所有的JAR包一样,SpringBoot集成了几乎所有的框架,使得开发者能快速搭建Spring项目。SpringBoot的核心设计思想是“约定优于配置”。基于这一设计原则,SpringBoot极大地简化了项目和框架的配置。比如在使用Spring开发Web项目时,我们需要配置web.xml、Spring和MyBatis等,还需要将它们集成在一起。而使用SpringBoot一切将变得极其简单,它采用了大量的默认配置来简化这些文件的配置过程,只需引入对应的Starters(启动器)。数据中台是在政企数字化转型过程中,对各业务单元业务与数据的沉淀,构建包括数据技术、数据治理、数据运营等数据建设、管理、使用体系,实现数据赋能。数据中台,是新型信息化应用框架体系中的核心。
  • 所需E币: 0
    时间: 2023-9-18 10:16
    大小: 1.53KB
    SpringBoot3.0+RocketMq构建企业级数据中台,所谓数据中台,即实现数据的分层与水平解耦,沉淀公共的数据能力,笔者认为可分为三层,数据模型、数据服务与数据开发,通过数据建模实现跨域数据整合和知识沉淀,通过数据服务实现对于数据的封装和开放,快速、灵活满足上层应用的要求,通过数据开发工具满足个性化数据和应用的需要。过去三十年,企业数据管理都以传统的IT架构为基础。每当技术部门为业务部门解决问题时,需要从业务需求的探查、技术壁垒的打通等从上到下各个方面来建设新系统。每个系统的建成都自成一体,各自满足业务部门的需求。这种情况不仅耗费各部门大量的精力也使得各个系统难以打通管理,无法形成更强大的数据能力。SpringBoot3.0+RocketMq构建企业级数据中台,数据中台是能力共享平台。如今,很多产品应用研发初始都在强调功能性,各个功能存在或多或少的重复性。然而企业对这些产品功能的定义并不相同。当客户产生某些需求时,由于定义的不同,产品功能和功能间的数据很难打通,也无法实现能力共享。在数据中台基础上的应用开发并不强调功能性,更注重能力的共享。这种能力就像水电煤一样可以直接向外输出使用,从而满足业务部门和用户的不同需求。数据中台如何建设?SpringBoot3.0+RocketMq构建企业级数据中台,数据中台的建设包括三个阶段,分别是基础架构、技术体系和应用系统。基础架构主要由数据标准、数据质量、元数据等组成。在建设过程中,需要根据企业的实际情况进行合理布局。技术体系是数据中台的技术支撑,主要包括业务应用系统、ETL工具等。通过建立技术体系,可以提升企业在大数据处理上的效率和质量,同时也可以降低企业在大数据平台搭建过程中的成本。应用系统主要包含数据资产管理系统、数据运营管理系统、智能分析系统等。通过建立应用系统,可以有效地提高数据分析的效率。通过建立应用系统,企业可以对各种数据进行统计和分析,进而对业务起到指导作用。以上三个阶段是基础架构阶段,是建设数据中台的重要组成部分。通过基础架构阶段,企业可以更好地了解自身的业务情况以及现有的数据情况,在此基础上进行技术体系建设和应用系统建设。
  • 所需E币: 0
    时间: 2023-8-29 09:03
    大小: 1.17KB
    React是用于构建用户界面的JavaScript库,起源于Facebook的内部项目,该公司对市场上所有JavaScriptMVC框架都不满意,决定自行开发一套,用于架设Instagram的网站。React有两个主要的特点:简单简单的表述任意时间点你的应用应该是什么样子的,React将会自动的管理UI界面更新当数据发生变化的时候。声明式在数据发生变化的时候,React从概念上讲与点击了F5一样,实际上它仅仅是更新了变化的一部分而已。为什么使用React?传统方法频繁操作DOM,性能无法达到要求;React使用VDOM,性能高传统JS代码维护成本高,React基于组件开发需要支持移动端开发[11章]2023React18系统入门进阶实战《欢乐购》带你系统构建React18技术体系,并结合“欢乐购”项目,快速积累企业级前端项目实战经验,落地React18与TypeScript结合的实用开发技巧。react里是通过tag来区分vdom类型的,比如HostComponent就是元素,HostText就是文本,FunctionComponent、ClassComponent就分别是函数组件和类组件。react是通过setState的api触发状态更新的,更新以后就重新渲染整个vdom。而vue是通过对状态做代理,get的时候收集以来,然后修改状态的时候就可以触发对应组件的render了。
  • 所需E币: 0
    时间: 2022-1-13 17:47
    大小: 956.54KB
    上传者: samewell
    数字电子电路学习教程-第11章数字系统设计.rar
  • 所需E币: 0
    时间: 2021-4-24 22:30
    大小: 1.18MB
    上传者: Argent
    电子产品日新月异,不管是硬件工程师还是软件工程师,基本的模电、数电知识也是必备的条件,从二极管到三极管,从单片机到多核MCU,3G网络到5G产品的普及,不管电子产品的集成度怎么高,其产品还是少不了电阻电容电感,每个元器件在电路中必然有其作用,有兴趣了解的网友,下载学习学习吧。
  • 所需E币: 0
    时间: 2021-3-24 21:56
    大小: 579.09KB
    上传者: stanleylo2001
    ARM9嵌入式系统设计基础教程电子课件_第11章Linux操作系统基础
  • 所需E币: 0
    时间: 2021-3-20 17:38
    大小: 3.19MB
    上传者: Argent
    这些都是各大名校的电路分析专业课之最大法宝,把这些题目悉心研究几遍,定会考出高分。无论对于即将考研的你,还是即将走向电子工程师岗位的你,都会获益匪浅。希望大家利用好这些历年真题,对于你今后的电子电路设计有所帮助。
  • 所需E币: 0
    时间: 2021-3-20 20:32
    大小: 579.09KB
    上传者: samewell
    ARM9嵌入式系统设计基础教程电子课件第11章Linux操作系统基础
  • 所需E币: 0
    时间: 2021-3-21 19:00
    大小: 571.27KB
    上传者: Goodluck2020
    ARM9嵌入式系统设计基础教程电子课件第11章Linux操作系统基础.rar
  • 所需E币: 0
    时间: 2021-3-22 17:20
    大小: 579.05KB
    上传者: Goodluck2020
    ARM9嵌入式系统设计基础教程-第11章Linux操作系统基础.zip
  • 所需E币: 0
    时间: 2021-3-22 18:31
    大小: 578.92KB
    上传者: Goodluck2020
    第11章Linux操作系统基础.zip
  • 所需E币: 1
    时间: 2020-12-30 15:28
    大小: 289.9KB
    上传者: Argent
    电子产品日新月异,不管是硬件工程师还是软件工程师,基本的模电、数电知识也是必备的条件,从二极管到三极管,从单片机到多核MCU,3G网络到5G产品的普及,不管电子产品的集成度怎么高,其产品还是少不了电阻电容电感,每个元器件在电路中必然有其作用,有兴趣了解的网友,下载学习学习吧。
  • 所需E币: 0
    时间: 2020-12-27 21:56
    大小: 8.95KB
    上传者: stanleylo2001
    MATLAB培训资料_第11章解线性方程组的直接法
  • 所需E币: 0
    时间: 2020-9-21 10:49
    大小: 571.18KB
    上传者: LGWU1995
    ARM9嵌入式系统设计基础教程电子课件-第11章Linux操作系统基础
  • 所需E币: 0
    时间: 2020-9-17 22:07
    大小: 155.87KB
    上传者: kaidi2003
    典型题解——第11章 三相电路
  • 所需E币: 0
    时间: 2020-9-16 18:29
    大小: 2.24MB
    上传者: kaidi2003
    要点、考点与例题——第11章三相电路