学习

本文介绍了Dubbo的开发背景及其实现原理,包括其在分布式系统中的角色、关键组件Zookeeper的作用,以及与Spring Cloud的关系。同时,文章还涵盖了Spring框架常用注解、Spring Boot的优势、Token的安全机制等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

17、Dubbo是在什么背景下被开发的?

Dubbo就是一种RPC框架

传统项目中,所有的功能模块都部署在一台服务器上,如果某一个模块出现了问题,都影响整个项目的运行;所以要根据功能模块将项目分开,这就是分布式的来源。每个系统可能还有配置多台服务器Tomcat;那么各个系统如何联系和调用呢?就需要微服务实现服务的自动发现,而dubbo是微服务的一种最佳实现;其中最关键的就是zookeeper;

Dubbo是微服务的一种框架,基于RPC进行远程传输数ti据,传输的是对象(先序列化);微服务其实就是服务的自动发现,实现对资源的控制,使人参与的事情越来越少,最终实现的是服务器全部的自动发现;

Dubbo 整合了SOA(面向服务的架构)思想、微服务和RPC,是SOA思想的一种最佳实现,也是微服务中的一种,另一种springCloud;

所以要讲Dubbo,就要先说微服务,最关键的是zookeeper,即注册中心;

18、spring中哪些常用的注解?

    @Controller、@RequestMapping、@Autowired、@ResponseBody、 @PathVariable、@Service、@Override

    @Table、@Id

19、springBoot有哪些优势?

不用生成xml配置文件,不用部署Tomcat、不用写web.xml,需要写yml文件

20、Token是基于什么算法生成的?如果token存于Cookie中,别人可以模仿Cookie去获取token?如何解决?

存于session

21、项目中在哪里用到了反射?

框架中用到反射比较多点,项目中代理模式的使用需要用到反射;

22、Redis会有主从分离吗?

有,“从”负责备份,“主”负责查询,当主机宕机又恢复后会从从机里恢复数据;

23、Redis 如何实现高可用?

Redis 高可用技术是为了解决 redis 宕机后影响整个服务的一种架构方式.主要采用主从结构来实现高可用.(主从挂载)

高可用实现的方式有哨兵和集群 2 种方式.主要思想都是监听主节点的信息. 我们把这种监听方式称之为心跳机制.

当在规定的时间内主节点没有响应,则判断主节点死亡.则会启动从节点代替主节点为用户提供服务.

Redis 分片机制是将多 reids 看做一个整体,每个 redis 只负责一个固定的区域.进行数据的更新和维护.这种方式的实现主要是基于 hash 一致性算法.根据 key 值计算出 hash 的位置,最终将数据保存.并且这个 key 值指向管理该区域的点

四、数据库相关(mysql)

1、有没有msyql优化经验?(苏宁)

2、mysql的索引分类?

     索引的建立一般在where上

3、唯一索引、主键索引的区别?(苏宁)

      唯一索引列的值必须唯一,但允许有空值。

      主键索引是一种特殊的唯一索引,不允许有空值

4、聚簇索引和非聚簇索引的区别?(携程)

     在访问速度上,聚簇索引比非聚簇索引

5、mysql的存储引擎有哪些,区别是什么;

      Innodb

6、说说事务的特性和隔离级别(MySQL默认的隔离级别是?)(饿了么)

事务的特性:ACID

默认隔离级别:可重复读Repeatable  read

隔离级别

脏读

不可重复读

幻读

读未提交  Read  Uncommitted

读已提交 Read  Committed

可重复读Repeatable  read

可串行化 Serialiable

7、你们的项目中,是怎么控制事务的?

      利用AOP

8、左外连接、右外连接、全连接;自然连接、内连接等概念?(饿了么)

      内连接:  a   inner   join   b     on 条件

      左外连接: a   left   join   b     on  条件

      右外连接: a   right   join   b    on 条件

      全连接: a   full   join   b     on  条件 

9、如何确定SQL是否走了索引?

       explain 显示了MySQL如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。简单讲,它的作用就是分析查询性能。

  explain 关键字的使用方法很简单,就是把它放在select查询语句的前面。

  mysql查看是否使用索引,简单的看type类型就可以。如果它是all,那说明这条查询语句遍历了所有的行,并没有使用到索引。比如:explain select * from company_info where cname like '%小%';

10、不走索引的情况有哪些,索引失效。(苏宁、饿了么)

       1.如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)

       2.对于多列索引,不是使用的第一部分(第一个),则不会使用索引

       3.like查询是以%开头

       4.如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引

       5.如果mysql估计使用全表扫描要比使用索引快,则不使用索引

11、动手写几个简单的sql语句(涉及到分组、排序、聚集函数等)

12、MySQL使用自增ID主键和UUID主键的比较?

    (1)单实例或者单节点组:

经过500W、1000W的单机表测试,自增ID相对UUID来说,自增ID主键性能高于UUID,磁盘存储费用比UUID节省一半的钱。所以在单实例上或者单节点组上,使用自增ID作为首选主键。

    (2)分布式架构场景:

         20个节点组下的小型规模的分布式场景,为了快速实现部署,可以采用多花存储费用、牺牲部分性能而使用UUID主键快速部署;

         20到200个节点组的中等规模的分布式场景,可以采用自增ID+步长的较快速方案。

         200以上节点组的大数据下的分布式场景,可以借鉴类似twitter雪花算法构造的全局自增ID作为主键。

13、数据库连接池你们用的哪种,为什么采用该连接池?

       开源数据连接池:dbcp、c3p0、proxool

       商业中间件连接池:weblogic、websphere

14、查出表中有重复的id的记录,并计算相同id的数量 

select id,count(id) from table group by id having(count(id)>1); //having  对多段函数进行筛选

六、介绍项目

1、你在项目中踩过的坑有哪些,举例说明。

2、你刚才介绍的项目里是用什么手段解决高并发?(网易)

3、你们数据库数据量是什么量级的?

4、你刚才介绍的这个项目部署在几台机器上?

5、你们的项目中如何记录错误日志?

6、你刚才的项目说到了反射,反射的优缺点你知道吗?

     优点:反射提高了Java程序的灵活性和扩展性,降低耦合性,提高自适应能力。

     缺点是性能问题:使用反射基本上是一种解释操作,影响代码的执行效率。用于字段和方法接入时要远慢于直接代码。因此Java反射机制只要应用在对灵活性和扩展性要求很高的系统框架上,普通程序不建议使用。

使用反射会模糊程序内部逻辑:程序员希望在代码中看到程序的逻辑,反射等绕过了源代码的技术,因而会带来维护问题。反射代码比相应的直接代码更复杂。

7、你们项目中的定时任务是怎么做的?(答:定时任务不是我做的)

8、你们的redis数据库占多大磁盘空间?

9、有没有解决过一些线上的bug?

10、如何实现一个账号不得同时登陆?

当用户在A端登录时,先生成一个状态值,和UserDB一起存入数据库,当用户在另B端登录时,先做一个判断,true or false,判断那个状态码,然后再进行操作;比如说,当状态码为true时可以让A端下线,或者让B端提示已登录;

七、其他方面

1、servlet的两种主要的跳转方式forward和redirect区别?

     重定向(redirect)相当于直接在地址栏输入一个新的网址,这个网址自然会显示在地址栏上,当然是 

     可见的。

     转发(forward)就是从其他页面跳转过来,跳转后显示在眼前页面的地址并不是当前页面的地址,而

     是上一个页面的地址(或servlet处理上一个页面请求的地址),因此,当前页面的地址当然是不可见的。

2、画一画tcp三次握手,四次挥手示意图。

     

注:为什么建立连接是三次握手,关闭连接确是四次挥手呢?

建立连接的时候, 服务器在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK(acknowledge)和SYN放在一个报文里发送给客户端。

而关闭连接时,服务器收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,而自己也未必全部数据都发送给对方了,所以己方可以立即关闭,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送,从而导致多了一次。

3、计网里常见简写含义?

SMTP:简单邮件传输协议,应用层

ICMP:互联网控制消息协议,是TCP/IP协议族的一个子协议

TCP:传输控制协议

UDP:用户数据报协议

ARP:地址解析协议

FTP:文件传送协议

DNS:域名解析协议

HTTP:超文本传输协议

    

在当今计算机视觉领域,深度学习模型在图像分割任务中发挥着关键作用,其中 UNet 是一种在医学影像分析、遥感图像处理等领域广泛应用的经典架构。然而,面对复杂结构和多尺度特征的图像,UNet 的性能存在局限性。因此,Nested UNet(也称 UNet++)应运而生,它通过改进 UNet 的结构,增强了特征融合能力,提升了复杂图像的分割效果。 UNet 是 Ronneberger 等人在 2015 年提出的一种卷积神经网络,主要用于生物医学图像分割。它采用对称的编码器 - 解码器结构,编码器负责提取图像特征,解码器则将特征映射回原始空间,生成像素级预测结果。其跳跃连接设计能够有效传递低层次的细节信息,从而提高分割精度。 尽管 UNet 在许多场景中表现出色,但在处理复杂结构和多尺度特征的图像时,性能会有所下降。Nested UNet 通过引入更深层次的特征融合来解决这一问题。它在不同尺度上建立了密集的连接路径,增强了特征的传递与融合。这种“嵌套”结构不仅保持了较高分辨率,还增加了特征学习的深度,使模型能够更好地捕获不同层次的特征,从而显著提升了复杂结构的分割效果。 模型结构:在 PyTorch 中,可以使用 nn.Module 构建 Nested UNet 的网络结构。编码器部分包含多个卷积层和池化层,并通过跳跃连接传递信息;解码器部分则包含上采样层和卷积层,并与编码器的跳跃连接融合。每个阶段的连接路径需要精心设计,以确保不同尺度信息的有效融合。 编码器 - 解码器连接:Nested UNet 的核心在于多层次的连接。通过在解码器中引入“skip connection blocks”,将编码器的输出与解码器的输入相结合,形成一个密集的连接网络,从而实现特征的深度融合。 训练与优化:训练 Nested UNet 时,需要选择合适的损失函数和优化器。对于图像分割任务,常用的损失
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值