首页 文章 精选 留言 我的

精选列表

搜索[计算机组成原理],共10002篇文章
优秀的个人博客,低调大师

FDE落地实战 08|Claude、Codex与多智能体,怎样组成AI交付流水线?

导语:当AI Coding进入项目现场,最先变快的往往是代码产量,最先失控的也可能是代码产量。一个Agent十分钟生成实现,另一个Agent补测试,第三个Agent给出“没有严重问题”的评审;如果它们共享了同一组错误假设、都没有看到真实验收标准,团队只是更快地把偏差写进仓库。AI原生交付不是把Claude叫“架构师”、把Codex叫“程序员”,再派几个子Agent并行干活,而是把现场材料、研究证据、架构规格、测试、实现、评审、UAT和复盘连接成一条可追溯流水线。每一段都有明确输入、输出、权限、证据和停止条件;规格约束测试,测试约束实现,独立评审挑战共同盲区,人类在范围、风险、合并与上线处负责。本文给出完整工作流、多智能体任务契约和质量Gate,并讨论中国企业最现实的源代码保密、内外网隔离、本地部署、供应商监督与数据跨境问题。

优秀的个人博客,低调大师

Spring MVC原理

摘要: Spring MVC工作流程图 springMVC工作流程图 图一 图二 开发工具 1.Eclipse IDE:采用Maven项目管理,模块化。 2.代码生成:通过界面方式简单配置,自动生成相应代码,目前包括三种生成方式(增删改查):单表、一对多、树结构。生成后的代码如果不需要注意美观程度,生成后即可用。 技术选型(只列了一部分技术) 1、后端 服务框架:Dubbo、zookeeper、Rest服务 缓存:Redis、ehcache 消息中间件:ActiveMQ 负载均衡:Nginx 分布式文件:FastDFS 数据库连接池:Alibaba Druid 1.0 核心框架:Spring framework 安全框架:Apache Shiro 1.2 视图框架:Spring MVC 4.0 服务端验证:hibernateValidator 5.1 布局框架:SiteMesh 2.4 工作流引擎:Activiti 5.15 任务调度:quartz 1.8.5 持久层框架:MyBatis 3.2 日志管理:SLF4J 1.7、Log4j 工具类:Apache Commons、Jackson 2.2、Xstream 1.4、Dozer 5.3、POI 2、前端 js框架:jQuery1.9。 CSS框架: Bootstrap 4 metronic 客户端验证:jqueryValidation Plugin。 富文本:CKEcitor 文件管理:CKFinder 动态页签:Jerichotab 数据表格:jqGrid 对话框:jQuery jBox 树结构控件:jQuery zTree 其他组件:Bootstrap 4 metronic 3、支持 服务器中间件:Tomcat 6、7、Jboss 7、WebLogic 10、WebSphere 8 数据库支持:目前仅提供MySQL数据库的支持,但不限于数据库,下个版本升级多数据源切换和数据库读写分离: 如:Oracle、SqlServer、H2等 支持开发环境:Eclipse、MyEclipse、Ras、Idea等 经典介绍: 源码结构 Spring工作流程描述 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获; DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回; DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter。(附注:如果成功获得HandlerAdapter后,此时将开始执行拦截器的preHandler(...)方法) 提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)。 在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作: HttpMessageConveter: 将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息 数据转换:对请求消息进行数据转换。如String转换成Integer、Double等 数据根式化:对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等 数据验证: 验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中 Handler执行完成后,向DispatcherServlet 返回一个ModelAndView对象; 根据返回的ModelAndView,选择一个适合的ViewResolver(必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet ; ViewResolver 结合Model和View,来渲染视图 将渲染结果返回给客户端。 Spring工作流程描述 为什么Spring只使用一个Servlet(DispatcherServlet)来处理所有请求? 详细见J2EE设计模式-前端控制模式 Spring为什么要结合使用HandlerMapping以及HandlerAdapter来处理Handler? 符合面向对象中的单一职责原则,代码架构清晰,便于维护,最重要的是代码可复用性高。如HandlerAdapter可能会被用于处理多种Handler。

优秀的个人博客,低调大师

CAS原理分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34173549/article/details/79917850 一、锁机制 常用的锁机制有两种: 1、悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。悲观锁的实现,往往依靠底层提供的锁机制;悲观锁会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁。 2、乐观锁:假设不会发生并发冲突,每次不加锁而是假设没有冲突而去完成某项操作,只在提交操作时检查是否违反数据完整性。如果因为冲突失败就重试,直到成功为止。乐观锁大多是基于数据版本记录机制实现。为数据增加一个版本标识,比如在基于数据库表的版本解决方案中,一般是通过为数据库表增加一个 “version” 字段来实现。读取出数据时,将此版本号一同读出,之后更新时,对此版本号加一。此时,将提交数据的版本数据与数据库表对应记录的当前版本信息进行比对,如果提交的数据版本号大于数据库表当前版本号,则予以更新,否则认为是过期数据。 乐观锁的缺点是不能解决脏读的问题。 在实际生产环境里边,如果并发量不大且不允许脏读,可以使用悲观锁解决并发问题;但如果系统的并发非常大的话,悲观锁定会带来非常大的性能问题,所以我们就要选择乐观锁定的方法. 锁机制存在以下问题: (1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。 (2)一个线程持有锁会导致其它所有需要此锁的线程挂起。 (3)如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险。 二、CAS 操作 JDK 5之前Java语言是靠synchronized关键字保证同步的,这是一种独占锁,也是是悲观锁。java.util.concurrent(J.U.C)种提供的atomic包中的类,使用的是乐观锁,用到的机制就是CAS,CAS(Compare and Swap)有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。 现代的CPU提供了特殊的指令,允许算法执行读-修改-写操作,而无需害怕其他线程同时修改变量,因为如果其他线程修改变量,那么CAS会检测它(并失败),算法可以对该操作重新计算。而 compareAndSet() 就用这些代替了锁定。 以AtomicInteger为例,研究在没有锁的情况下是如何做到数据正确性的。 [java] view plain copy publicclassAtomicIntegerextendsNumberimplementsjava.io.Serializable{ privatevolatileintvalue; publicfinalintget(){ returnvalue; } publicfinalintgetAndIncrement(){ for(;;){ intcurrent=get(); intnext=current+1; if(compareAndSet(current,next)) returncurrent; } } publicfinalbooleancompareAndSet(intexpect,intupdate){ returnunsafe.compareAndSwapInt(this,valueOffset,expect,update); } 字段value需要借助volatile原语,保证线程间的数据是可见的(共享的)。这样在获取变量的值的时候才能直接读取。然后来看看++i是怎么做到的。getAndIncrement采用了CAS操作,每次从内存中读取数据然后将此数据和+1后的结果进行CAS操作,如果成功就返回结果,否则重试直到成功为止。而compareAndSet利用JNI来完成CPU指令的操作。 [java] view plain copy publicfinalbooleancompareAndSet(intexpect,intupdate){ returnunsafe.compareAndSwapInt(this,valueOffset,expect,update); } 整体的过程就是这样子的,利用CPU的CAS指令,同时借助JNI来完成Java的非阻塞算法。其它原子操作都是利用类似的特性完成的。 而整个J.U.C都是建立在CAS之上的,因此对于synchronized阻塞算法,J.U.C在性能上有了很大的提升。 CAS第一个问题是会导致“ABA问题”。aba实际上是乐观锁无法解决脏数据读取的一种体现。CAS算法实现一个重要前提需要取出内存中某时刻的数据,而在下时刻比较并替换,那么在这个时间差类会导致数据的变化。比如说一个线程one从内存位置V中取出A,这时候另一个线程two也从内存中取出A,并且two进行了一些操作变成了B,然后two又将V位置的数据变成A,这时候线程one进行CAS操作发现内存中仍然是A,然后one操作成功。尽管线程one的CAS操作成功,但是不代表这个过程就是没有问题的。如果链表的头在变化了两次后恢复了原值,但是不代表链表就没有变化。因此AtomicStampedReference/AtomicMarkableReference就很有用了。 AtomicMarkableReference 类描述的一个<Object,Boolean>的对,可以原子的修改Object或者Boolean的值,这种数据结构在一些缓存或者状态描述中比较有用。这种结构在单个或者同时修改Object/Boolean的时候能够有效的提高吞吐量。AtomicStampedReference 类维护带有整数“标志”的对象引用,可以用原子方式对其进行更新。对比AtomicMarkableReference 类的<Object,Boolean>,AtomicStampedReference 维护的是一种类似<Object,int>的数据结构,其实就是对对象(引用)的一个并发计数(标记版本戳stamp)。但是与AtomicInteger 不同的是,此数据结构可以携带一个对象引用(Object),并且能够对此对象和计数同时进行原子操作。 [java] view plain copy

优秀的个人博客,低调大师

springmvc工作原理

1.Spring web mvc介绍 Spring web mvc和Struts2都属于表现层的框架,它是Spring框架的一部分,我们可以从Spring的整体结构中看得出来: 2.Web mvc 1、用户发起request请求至控制器(Controller) 控制接收用户请求的数据,委托给模型进行处理 2、控制器通过模型(Model)处理数据并得到处理结果 模型通常是指业务逻辑 3、控制器将模型数据在视图(View)中展示 web中模型无法将数据直接在视图上显示,需要通过控制器完成。如果在C/S应用中模型是可以将数据在视图中展示的。 4、控制器将视图response响应给用户 通过视图展示给用户要的数据或处理结果。 3.Spring web mvc架构 架构图 流程 1、用户发送请求至前端控制器DispatcherServlet 2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。 4、DispatcherServlet调用HandlerAdapter处理器适配器 5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。 6、Controller执行完成返回ModelAndView 7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet 8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器 9、ViewReslover解析后返回具体View 10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。 11、DispatcherServlet响应用户 组件说明: 以下组件通常使用框架提供实现: DispatcherServlet:作为前端控制器,整个流程控制的中心,控制其它组件执行,统一调度,降低组件之间的耦合性,提高每个组件的扩展性。 HandlerMapping:通过扩展处理器映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。 HandlAdapter:通过扩展处理器适配器,支持更多类型的处理器。 ViewResolver:通过扩展视图解析器,支持更多类型的视图解析,例如:jsp、freemarker、pdf、excel等。 下边两个组件通常情况下需要开发: Handler:处理器,即后端控制器用controller表示。 View:视图,即展示给用户的界面,视图中通常需要标签语言展示模型数据。 本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/5985197.html,如需转载请自行联系原作者

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册