新来个技术总监,给公司项目引入了全新的业务架构,堪称最佳实践!

别再只调电位器了!用单片机PWM控制LM317输出电压,精度和玩法都多了 本文探讨了如何利用单片机PWM控制LM317输出电压,替代传统的电位器调节方案。通过PWM信号的有源滤波和运放处理,实现了更高精度(±5mV)、更好温度稳定性(0.01%/°C)的数控稳压电源设计,支持远程控制和可编程曲线输出,为经典电路注入数字化智能。 阅读详情

点击上方“芋道源码”,选择“设为星标”

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 10:33 更新文章,每天掉亿点点头发...

源码精品专栏

 

来源:后端技术漫谈

f8c4f8b3572c9bf0eac8facea48d4127.jpeg


本文开始前,问大家一个问题,你觉得一份业务代码,尤其是互联网业务代码,都有哪些特点?

我能想到的有这几点:

  • 互联网业务迭代快 ,工期紧,导致代码结构混乱,几乎没有代码注释和文档 。

  • 互联网人员变动频繁 ,很容易接手别人的老项目,新人根本没时间吃透代码结构 ,紧迫的工期又只能让屎山越堆越大。

  • 多人一起开发,每个人的编码习惯不同 ,工具类代码各用个的,业务命名也经常冲突,影响效率。

  • 大部分团队几乎没有时间做代码重构 ,任由代码腐烂。

每当我们新启动一个代码仓库,都是信心满满,结构整洁。但是时间越往后,代码就变得腐败不堪,技术债务越来越庞大。

这种情况有解决方案吗?也是有的:

  1. 小组内定期做代码重构,解决技术债务。

  2. 组内设计完善的应用架构,让代码的腐烂来得慢一些。(当然很难做到完全不腐烂)

  3. 设计尽量简单,让不同层级的开发都能快速看懂并上手开发 ,而不是在一堆复杂的没人看懂的代码上堆更多的屎山。

而COLA,我们今天的主角,就是为了提供一个可落地的业务代码结构规范 ,让你的代码腐烂的尽可能慢一些,让团队的开发效率尽可能快一些。

COLA是什么

COLA是由阿里大佬张建飞所提出的一种业务代码架构的最佳实践 ,并且已经在阿里云脚手架代码生成器中作为一个可选项,可见其已经拥有了一定影响力。

cc88166164a15c6485691813b4c02507.jpeg

COLA 是 Clean Object-Oriented and Layered Architecture的缩写,代表“整洁面向对象分层架构”。

在COLA 4.0,也就是目前最新的版本中,作者将COLA拆分为COLA架构(Archetype)和COLA组件(Components)两个部分:

  • COLA架构:COLA应用的代码模板。

  • COLA组件:提供一些非常有用的通用组件,这些组件可以帮助我们提升研发效率。

两者互不干扰,可以独立使用。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

COLA整体架构

首先主要谈谈COLA架构,COLA的官方博文中是这么介绍的:

在平时我们的业务开发中,大部分的系统都需要:

  • 接收request,响应response;

  • 做业务逻辑处理,像校验参数,状态流转,业务计算等等;

  • 和外部系统有联动,像数据库,微服务,搜索引擎等;

正是有这样的共性存在,才会有很多普适的架构思想出现,比如分层架构、六边形架构、洋葱圈架构、整洁架构(Clean Architecture)、DDD架构等等。

这些应用架构思想虽然很好,但我们很多同学还是“不讲Co德,明白了很多道理,可还是过不好这一生”。问题就在于缺乏实践和指导。COLA的意义就在于,他不仅是思想,还提供了可落地的实践。应该是为数不多的应用架构层面的开源软件。

COLA提供了一整套代码架构,拿来即用。 其中包含了很多架构设计思想,包括讨论度很高的领域驱动设计DDD等。

注意:每个人对于架构设计都有着自己的理解。所以对于COLA的架构,本篇文章也仅仅只是我自己对于COLA的粗浅理解,大家可以批判看待。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud

  • 视频教程:https://doc.iocoder.cn/video/

COLA分层架构

先来看两张官方介绍图

b98c8caf4919b7d04474ecdb9a304970.jpeg a496187980d5eb77d6d2c926dc54abf6.jpeg

其次,还有一个官方的表格,介绍了COLA中每个层的命名和含义:

层次包名功能必选
Adapter层web处理页面请求的Controller否
Adapter层wireless处理无线端的适配否
Adapter层wap处理wap端的适配否
App层executor处理request,包括command和query是
App层consumer处理外部message否
App层scheduler处理定时任务否
Domain层model领域模型否
Domain层ability领域能力,包括DomainService否
Domain层gateway领域网关,解耦利器是
Infra层gatewayimpl网关实现是
Infra层mapperibatis数据库映射否
Infra层config配置信息否
Client SDKapi服务对外透出的API是
Client SDKdto服务对外的DTO是

这两张图和一个表格已经把整个COLA架构的绝大部分内容展现给了大家,但是一下子这么多信息量可能很难消化。

既然整个示例架构项目是一个Maven父子结构,那我们就从父模块一个个好好过一遍。

首先父模块的pom.xml包含了如下子模块:

<modules>
  <module>demo-web-client</module>
  <module>demo-web-adapter</module>
  <module>demo-web-app</module>
  <module>demo-web-domain</module>
  <module>demo-web-infrastructure</module>
  <module>start</module>
</modules>

start层

该模块作为整个应用的启动模块(通常是一个SpringBoot应用),只承担启动项目和全局相关配置项的存放职责。代码目录如下:

187d1956b0964a40f4dce1d49fcc1919.jpeg

将启动独立出来,好处是清晰简洁,也能让新人一眼就看出如何运行项目,以及项目的一些基础依赖。

adapter层

接下来我们按照之前架构图从上到下的顺序,一个个看。

首先是demo-web-adapter模块,这名字是不是很新鲜?但其实,可以理解为平时我们用的controller层(对于Web应用来说),换汤不换药。

在COLA官方博客中,也能找到如下的描述:

Controller这个名字主要是来自于MVC,因为是MVC,所以自带了Web应用的烙印。然而,随着mobile的兴起,现在很少有应用仅仅只支持Web端,通常的标配是Web,Mobile,WAP三端都要支持。

396303e25dd8b37a3ed06cc7dca5b585.jpeg

cilent层

有了我们说的“controller”层,接下来有的小伙伴肯定就会想,是不是service层啦。

是,也不是。

传统的Web应用中,完全可以只有一个service层给controller层调用,但是作为一个业务应用,除非你真的只是个前端页面的无情吐数据机器,否则很大可能性你的应用会有很多其他上下游调用方,并且你需要提供接口给他们。

这时候你给他们的不应该是一个Web接口,应该是RPC调用的服务层接口,至于原因不是本文的重点,具体就不展开了。

所以在COLA中,你的adapter层,调用了client层,client层中就是你服务接口的定义。

4672ed0aba5d214c481c87d211b615f5.jpeg

从上图中可以看到,client包里有:

  • api文件夹:存放服务接口定义

  • dto文件夹:存放传输实体

注意,这里只是服务接口定义,而不是服务层的具体实现,所以在adapter层中,调用的其实是client层的接口:

@RestController
public class CustomerController {

    @Autowired
    private CustomerServiceI customerService;

    @GetMapping(value = "/customer")
    public MultiResponse<CustomerDTO> listCustomerByName(@RequestParam(required = false) String name){
        CustomerListByNameQry customerListByNameQry = new CustomerListByNameQry();
        customerListByNameQry.setName(name);
        return customerService.listByName(customerListByNameQry);
    }

}

而最终接口的具体实现逻辑放到了app层。

@Service
@CatchAndLog
public class CustomerServiceImpl implements CustomerServiceI {

    @Resource
    private CustomerListByNameQryExe customerListByNameQryExe;

    @Override
    public MultiResponse<CustomerDTO> listByName(CustomerListByNameQry customerListByNameQry) {
        return customerListByNameQryExe.execute(customerListByNameQry);
    }
}

app层

接着上面说的,我们的app模块作为服务的实现,存放了各个业务的实现类,并且严格按照业务分包 ,这里划重点,是先按照业务分包,再按照功能分包的 ,为何要这么做,文章后面还会多说两句,先看图:

9a1cc10545e7a78ff9434638f5caa8b0.jpeg

customer和order分别对应了消费着和订单两个业务子领域。里面是COLA定义app层下面三种功能:

App层executor处理request,包括command和query是
App层consumer处理外部message否
App层scheduler处理定时任务否

可以看到,消息队列的消费者和定时任务,这类平时我们业务开发经常会遇到的场景,也放在app层。

domain层

接下来便是domain,也就是领域层,先看一下领域层整体结构:

db680b86df51951a6a9f4715be98f52b.jpeg

可以看到,首先是按照不同的领域(customer和order)分包,里面则是三种主要的文件类型:

  1. 领域实体:实体模型可以是充血模型(请自行了解),例如官方示例里的Customer.java如下:

@Data
@Entity
public class Customer{

    private String customerId;
    private String memberId;
    private String globalId;
    private long registeredCapital;
    private String companyName;
    private SourceType sourceType;
    private CompanyType companyType;

    public Customer() {
    }

    public boolean isBigCompany() {
        return registeredCapital > 10000000; //注册资金大于1000万的是大企业
    }

    public boolean isSME() {
        return registeredCapital > 10000 && registeredCapital < 1000000; //注册资金大于10万小于100万的为中小企业
    }

    public void checkConfilict(){
        //Per different biz, the check policy could be different, if so, use ExtensionPoint
        if("ConflictCompanyName".equals(this.companyName)){
            throw new BizException(this.companyName+" has already existed, you can not add it");
        }

    }
}
  1. 领域能力:domainservice文件夹下,是领域对外暴露的服务能力,如上图中的CreditChecker

  2. 领域网关:gateway文件夹下的接口定义,这里的接口你可以粗略的理解成一种SPI,也就是交给infrastructure层去实现的接口。

例如CustomerGateway里定义了接口getByById,要求infrastructure的实现类必须定义如何通过消费者Id获取消费者实体信息,而infrastructure层可以实现任何数据源逻辑,比如,从MySQL获取,从Redis获取,还是从外部API获取等等。

public interface CustomerGateway {
    public Customer getByById(String customerId);
}

在示例代码的CustomerGatewayImpl(位于infrastructure层)中,CustomerDO(数据库实体)经过MyBatis的查询,转换为了Customer领域实体,进行返回。完成了依赖倒置。

@Component
public class CustomerGatewayImpl implements CustomerGateway {
    @Autowired
    private CustomerMapper customerMapper;

    public Customer getByById(String customerId){
      CustomerDO customerDO = customerMapper.getById(customerId);
      //Convert to Customer
      return null;
    }
}
3e346e934b5654e5905e33bdfff0b479.jpeg

infrastructure层

最后是我们的infrastructure也就是基础设施层,这层有我们刚才提到的gatewayimpl网关实现,也有MyBatis的mapper等数据源的映射和config配置文件。

Infra层gatewayimpl网关实现是
Infra层mapperibatis数据库映射否
Infra层config配置信息否
51e53a58ccffc8ddac981b3bca047ad7.jpeg

所有层讲完了,COLA4.0很简单明了,最后,在引用一段官方介绍博客原文来总结COLA的层级:

1)适配层(Adapter Layer):负责对前端展示(web,wireless,wap)的路由和适配,对于传统B/S系统而言,adapter就相当于MVC中的controller;

2)应用层(Application Layer):主要负责获取输入,组装上下文,参数校验,调用领域层做业务处理,如果需要的话,发送消息通知等。层次是开放的,应用层也可以绕过领域层,直接访问基础实施层;

3)领域层(Domain Layer):主要是封装了核心业务逻辑,并通过领域服务(Domain Service)和领域对象(Domain Entity)的方法对App层提供业务实体和业务逻辑计算。领域是应用的核心,不依赖任何其他层次;

4)基础实施层(Infrastructure Layer):主要负责技术细节问题的处理,比如数据库的CRUD、搜索引擎、文件系统、分布式服务的RPC等。此外,领域防腐的重任也落在这里,外部依赖需要通过gateway的转义处理,才能被上面的App层和Domain层使用。

COLA架构的特色

说完了分层架构,我们再来回顾下上面提到的COLA架构的几个特色的设计

领域与功能的分包策略

也就是下面这张图的意思,先按照领域分包,再按照功能分包,这样做的其中一点好处是能将腐烂控制在该业务域内。

比如消费者customer和订单order两个领域是两个后端开发并行开发,两个人对于dto,util这些文件夹的命名习惯都不同,那么只会腐烂在各自的业务包下面,而不会将dto,util,config等文件夹放在一起,极容易引发文件冲突。

4f037479896d048844cba65a35aa9e11.jpeg 900dcd6c02017fc1fce36e7d857b0036.jpeg

前面的包定义,都是功能维度的定义。为了兼顾领域维度的内聚性,我们有必要对包结构进行一下微调,即顶层包结构应该是按照领域划分,让领域内聚。

业务域和外部依赖解耦

前面提到的domain和infrastructure层的依赖倒置,是一个非常有用的设计,进一步解耦了取数逻辑的实现。

例如下图中,你的领域实体是商品item,通过gateway接口,你的商品的数据源可以是数据库,也可以是外部的服务API。

如果是外部的商品服务,你经过API调用后,商品域吐出的是一个大而全的DTO(可能包含几十个字段),而在下单这个阶段,订单所需要的可能只是其中几个字段而已。你拿到了外部领域DTO,转为自己领域的Item,只留下标题价格库存等必要的数据字段。

6b90bd2ab2da229ee0dd522b40918b2e.jpeg

COLA并不完美

诚然,COLA已经做的足够清晰简洁了,但是它仍然有不完美的地方,比如每个接口的出入参都会根据业务名做定义,导致了很多结构极为相似的DTO,DTO的爆炸增长是个问题。参考:ISSUE-271

但是总的来说,COLA只是给你提供了一种架构设计的思想,并不深入到强制你使用某种规范的层面,所以对于COLA中你觉得复杂,或者不理解的地方,很多时候需要你自己来做权衡,作取舍。取其精华,去其糟粕 的运用到你的项目中。

总结

COLA架构并不复杂,COLA已经从1.0版本经过逐次精简,发展到了如今的形态。在阿里云代码脚手架生成器中作为一个可选项,足见其已经趋于成熟。



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢:

967b8af5918af82b5289ceb29c0f5fe6.png

已在知识星球更新源码解析如下:

8db24b76c47d670246fb1055b46a8caa.jpeg

232ddc3899bcd3a3aaa9fe8d0dbf550b.jpeg

707e0c12335730db2b457bb1f9b5062f.jpeg

0e9f4a9b814a2b1b98d2793beb3cfb27.jpeg

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
Python爬虫实战:西瓜视频m3u8解析与FFmpeg下载合并 网络爬虫与流媒体解析是Python工程实践中的常见需求,其核心在于通过HTTP请求获取数据并解析特定格式。m3u8作为HLS协议索引文件,将视频切分为ts分片,便于流式传输。结合FFmpeg的多线程处理能力,可高效完成分片下载与合并,技术价值在于提升视频处理效率。典型应用场景包括视频下载、离线缓存等。本文以西瓜视频为例,详细讲解如何使用requests库提取m3u8地址,并调用FFmpeg批量下载ts分片合并为mp4,涵盖请求伪装、索引解析及常见问题排查。 阅读详情

相关推荐

使用逻辑分析仪处理IIC信号

逻辑分析仪

xc_123的博客 4484

阿里云在线脚手架生成器

访问地址

qq_22744093的博客 759

开放平台 - 互动玩法演进之路

随着直播业务和用户规模日益壮大,如何丰富直播间内容、增强直播间内用户互动效果,提升营收数据变得更加关键。

bilibili_TC的博客 1738

阿里云项目脚手架生成器!好东西

分享一个好东西,阿里云脚手架生成器,可选各种组件 https://start.aliyun.com/bootstrap.html/03b80dbc307c372e906ca42b96417b2c/#!type=maven-project&language=java&architecture=layered&platformVersion=2.3.0.RELEASE&packaging=jar&jvmVersion=1.8&groupId=com.exampl

qq_39234840的博客 1556

YOLOv8缺陷检测可视化界面实战:PyQt5布局设计与代码实现

本文详细介绍了如何利用PyQt5为YOLOv8缺陷检测模型构建一个专业、易用的可视化界面。通过实战讲解PyQt5的布局管理器设计、信号槽机制与YOLOv8核心的集成,帮助开发者快速将AI模型部署为直观的桌面应用,提升工业质检等场景的落地效率。

redis7keeper的博客 755

E-SMILES:化学信息学中的分子表示革命与应用

分子表示是化学信息学和计算化学的基础技术,其核心是将复杂的分子结构转化为计算机可处理的数字化形式。传统SMILES格式虽然广泛应用,但在处理复杂化学体系时存在局限性。Extended SMILES(E-SMILES)通过扩展语法规则,支持立体化学、配位键等特殊结构的精确描述,显著提升了分子表示的准确性和适用范围。在药物研发中,E-SMILES能准确描述蛋白质-配体相互作用和共价抑制剂;在材料科学领域,它支持纳米材料和超分子体系的多尺度建模。结合机器学习等前沿技术,E-SMILES正在推动化学信息处理效率的革

weixin_28683165的博客 279

阿里云之Java工程脚手架自动生成项目架构

网页地址:https://start.aliyun.com/ 选择的分层架构并且带有web工程的,这种结构是以MVC模式进行分层,另外外面常见的还有以模块来进行分层的,两种分层模式都值得推荐。api模块是接口模块; dao模块是实体模块; manager模块是管理dao模块,这个模块只引入了dao模块,感觉没啥意义,有不同意见的欢迎评论区留言; service模块是实现类模块; web是静态资源模块; pom.xml是父工程的pom文件; start模块是启动类模块,包含依赖以及数据库,mybatis

zouyang920的博客 2067

199、影像技术 roadmap 规划:未来移动影像的技术趋势与芯片算力展望

本文探讨了未来移动影像技术的发展趋势与芯片算力规划。作者从实际案例出发,指出影像技术演进需平衡传感器、ISP、算力和功耗。文章分为三部分:1)传感器将从堆像素转向提升信息密度,重点关注双层晶体管结构、混合快门和多光谱技术;2)ISP架构将向可编程计算单元转型,强调神经网络加速、硬件化多帧融合和语义处理;3)芯片算力瓶颈在于数据搬运,需优化存算一体架构、专用DMA和统一内存。最后给出五点建议:避免盲目追高像素、重视持续功耗、平衡ISP灵活性、预留算力余量、加强传感器与ISP协同设计。作者强调,影像技术的突破在

sundong_81的博客 57

阿里云新发布的项目生成器真香

脚手架是什么呢? 参考维基百科的定义,找到如下解释: 脚手架亦称为鹰架、棚架和排栅,是一种临时性的建筑工具,架设在正在组建或重建的楼房或建筑物,亦用于轮船等大型的移动式物品,供施工人员在墙壁等高处施工。通常是由金属导管组成的模块化工具,也有使用其他材料制成,比如在东方国家就有用竹子制成的支架。 为什么需要脚手架? 现在是一个推崇编程体验感的时代,不要把时间耗费在复杂的配置中(对新手来说,Spr...

SpringForAll的博客 281

RH850从0搭建Autosar开发环境【7】- Davinci Configurator之CanTp模块配置详解(上)

RH850从0搭建Autosar开发环境【7】- Davinci Configurator之CanTp模块配置详解(上)

weixin_42412049的博客 2297

LPDDR6来了!带你一文看懂它和LPDDR5/5X的差距 + 技术演进逻辑全解析

🧠从速率到架构,从总线宽度到协议设计,LPDDR6 每一个改动都不是拍脑袋做的,它针对的是AI / HPC / 云计算 / 下一代笔记本平台的真实需求。作为工程师的我们,不仅要“用得上”,更要“测得准”,因为没有测试验证,就没有量产落地!🎯LPDDR6不是未来,而是现在进行时!

weixin_43199439的博客 2168

讲真,我还没见过这么垃圾的IT软件公司!!

当他详细描述了团队面临的问题和改进建议时,技术总监的回复让他彻底死心:"你说的都对,但老板不会为这些看不见价值的事情买单。面试时,技术总监侃侃而谈:"我们采用最前沿的技术栈,坚持工程师文化,给团队充分的自主权。关于我:一个 IT 从业 20 年的互联网老兵,1 号店架构师/前饿了么/贝壳找房技术总监,我叫程军,百度可查,目前一人企业,自由职业者。团队这三个月的工作,全部付诸东流,哈哈,笑死人了。更可笑的是,公司引入了所谓的"敏捷开发",实际上就是每天站会汇报进度,晚下班证明工作努力。

chengjun_java的专栏 412

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

徕卡光学全新突破,小米13 Ultra开启移动影像光学时代

4月18日,小米集团在京召开新品发布会,正式发布全新的人文影像专业旗舰手机小米13 Ultra,以及小米电视大师 86" Mini LED、小米平板6、小米手环8、小米Sound Move便携智能音箱、米家皮皮灯等五款小米科技生态新品。小米13 Ultra定位人文影像专业旗舰,它搭载移动影像领域迄今最完美的徕卡Summicron镜头,配备全焦段徕卡光学四摄、一英寸可变光圈、2K 专业超色准屏幕,推...

趣味科技v 305

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

从腾讯测评题看团队管理:当项目泄密后如何用新方案逆袭(管理者实战指南)

本文通过腾讯测评题案例,深入探讨团队管理在项目泄密后的应对策略。从危机响应、团队动员到方案重构,提供实战指南帮助管理者在48小时内实现逆袭。重点介绍心理安全区构建、敏捷方法论应用及风险管控防火墙,助力团队化危机为转机。

u8v9w0x1y的博客 478

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

讲真的,我还没见过这么垃圾的IT软件公司!!!

当他详细描述了团队面临的问题和改进建议时,技术总监的回复让他彻底死心:"你说的都对,但老板不会为这些看不见价值的事情买单。面试时,技术总监侃侃而谈:"我们采用最前沿的技术栈,坚持工程师文化,给团队充分的自主权。关于我:一个 IT 从业 20 年的互联网老兵,1 号店架构师/前饿了么/贝壳找房技术总监,我叫程军,百度可查,目前一人企业,自由职业者。团队这三个月的工作,全部付诸东流,哈哈,笑死人了。更可笑的是,公司引入了所谓的"敏捷开发",实际上就是每天站会汇报进度,晚下班证明工作努力。

chengjun_java的专栏 308

互联网早报:吉利李书福布局手机业务:新公司落地武汉,定位高端智能手机

行业热点 1、吉利李书福布局手机业务:新公司落地武汉,定位高端智能手机; 2、百度网盘宣布上线企业版,目前已有三万客户; 3、阿里巴巴旗下多个App已接入微信支付,闲鱼、盒马等正申请接入; 4、快手宣布组织架构转型,将从职能型转向事业部制; 5、蜜雪冰城起诉蜜雪时光:商标名称、店铺装修恶意“搭便车”; 6、微信iOS版8.0.14更新:语音通话时,可展示好友三天内的动态; 7、支付宝推“国庆出行防疫包”:一键可查健康码、行程卡、出行政策; 8、乐刻旗下运动空间LOVEFITT推出全新自研课品牌与公开培训课.

lt3close的博客 9114

大众mib官方固件更新_20年的相伴 上汽大众历代帕萨特车型盘点

"Passat"源于德语中一股季风的名字,每年均匀而稳定地从大西洋南部吹向赤道方向,坚持而执着,恒久不变,大众集团用它来命名自己的车型寓意不言自明。自从1974年首次面市以来,在欧洲取得了巨大成功。B5那一代帕萨特可谓是开始风靡世界。2000年,上汽大众也第一次将叫作"帕萨特"的B5车型带到国内。帕萨特B51996年,帕萨特车型迎来了一次彻底革新,采用大众PL45平台的帕萨特B5正式面世。这一代帕...

weixin_39932611的博客 3784

【致命警报】74%企业大模型项目惨败!5大死亡陷阱正在吞噬你的AI投资

作为一名深度追踪AI落地的观察者,我亲眼目睹了太多企业在大模型浪潮中折戟沉沙。今天,我要带你揭开那些让千万投资打水漂的致命陷阱——从数据泄露到战略误判,从技术脱节到组织孤岛。本文将用真实案例和实战数据,为你绘制一份避坑地图,让你的AI转型之路不再踩雷。当你满怀信心地投入千万预算,组建豪华AI团队,准备用大模型掀起一场效率革命时,现实却可能给你一记重拳——系统上线三个月,业务部门抱怨“还不如原来的Excel表格好用”,技术团队天天加班改bug,而CEO已经开始质疑这笔投资的回报。

全世界的博客 3389

引入css报错this dependency was not found:_百度引入腾讯旧将赵强全面负责销售体系:向沈抖汇报...

雷帝网雷建平 11月7日报道百度公司MEG(移动生态事业群)日前引入新的高管人员赵强(Apple),全面负责销售体系,含销售运营管理部、大客户销售部、渠道销售发展部、直销体系,直接向百度集团执行副总裁、MEG业务负责人沈抖汇报。赵强有丰富的品效广告的商业化产品、运营、销售和渠道管理经验,曾在腾讯工作过5年。其中,赵强于2003至2018年就职于腾讯,历任无线产品部IVR项目总监 、区域门户部总经理...

weixin_39898733的博客 81

微盟宕机8天,赔偿1.5亿!电商技术专家,带你复盘整个事故,总结6条经验

点击“技术领导力”关注∆每天早上8:30推送作者|Mr.K 编辑| Emma来源|技术领导力(ID:jishulingdaoli)微盟经历了8天的至暗时刻,数据修复工作终于有...

技术领导力 1608

20天斩获5家互联网公司offer的求职闪电战策略

在竞争激烈的求职市场中,系统化的求职方法能显著提升成功率。本文通过实战案例,拆解了如何运用精细化运营思维和技术工具提升求职转化率。从建立模块化简历武器库、搭建智能面试题库,到设计个人故事矩阵,这些方法都体现了数据驱动的求职策略。特别在技术面试环节,采用降维打击术和业务场景延伸,能够有效展示专业深度。对于HR面试,价值锚定法通过业务、技术、个人三层次定位,建立强关联性。整个求职过程如同电商漏斗模型,每个环节都需要优化转化策略,这正是现代求职方法论的核心价值。

weixin_34095889的博客 571

NVIDIA发布新一代AI终端计算平台 其性能表现堪称完美

近日,NVIDIA在北京新办公室举办“Jetson TX2 Editor’s Day”活动,并邀请合作伙伴及开发者分享他们使用Jetson的案例和成果。Jenson TX2是NVIDIA3月初发布的最新嵌入式平台,其整体性能相较上一代平台有了翻倍的效果提升。NVIDIA希望有更多的开发者了解Jetson平台,并依靠该平台强大的计算能力开发出更多创新应用。NVIDIA中国区高级市场总监刘念宁表示,N...

yssycz的博客 848

嵌入式软件工程师的职业生涯:35岁不是瓶颈,而是技术黄金期?

嵌入式开发从来不是"青春饭",而是"经验饭"。从初级工程师到技术专家,从代码执行者到项目决策者,这条路上每个阶段都有新的可能性。35岁不是终点,而是从"熟练工"迈向"行业精英"的转折点——关键在于你是否愿意持续学习、突破舒适区。

宋一平工作室 1924

老黄9亿美元再投AI Infra,这次直接打包带走CEO和核心技术

是一家专注于解决I/O、内存及网络瓶颈的硅谷AI基础设施初创公司,其技术旨在使大规模GPU集群能作为单体计算机运行——该公司宣称其技术可实现超过10万个GPU的互联,可将数据中心GPU集群计算成本降低50%,内存扩展高达50倍。技术方面,公开资料显示,该公司推出的EMFASYS“弹性AI内存架构系统”,相较基于闪存的推理方案可降低50%的单token成本,比SSD层级延迟降低两个数量级。去年6月,亚马逊与Adept AI达成协议,雇佣这家初创公司的大部分员工,并支付约3.3亿美元以授权其技术。

量子位 185

诺奖级成果!国科大学者发文Nature,研究生的偶然发现颠覆百年传统

这就是这项研究的核心原理: 原位生成: 芳香胺(Ar-NH2)首先与硝酸(HNO3)在反应瓶中原位反应,生成关键的N-硝基胺(Ar-NHNO2)中间体。那么,一百多年来,化学家是怎么做的呢?他们想,既然 NH2 很难脱落,那我们给它装上强大的“拉力”,比如“双电子汲取基团”(如酰基、磺酰基),让它更容易被拉断。这个原理的革命性在于:它通过一个被忽视了130年的N-硝基胺中间体,利用 N2O 脱除这一全新途径,安全、高效地产生了那个高活性的芳基阳离子,从而完美地绕开了传统途径中那个爆炸性的重氮盐。

郑老师统计 215
上一篇: 多线程如何实现事务回滚?一招帮你搞定!
下一篇: CompletableFuture真香,可以替代CountDownLatch!
公众号-芋道源码
博客等级 码龄10年 1627粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值