首页 文章 精选 留言 我的

精选列表

搜索[禅道],共6167篇文章
优秀的个人博客,低调大师

阿里最新38道Java面试题解析(MyBatis+消息队列+Redis)

一、谈谈你对 MyBatis 的理解? Mybatis是一个半ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建 Statement 等繁杂的过程。程序员直接编写原生态 SQL,可以严格控制 SQL 执行性能,灵活度高。 MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO 映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。3. 通过 XML 文件或注解的方式将要执行的各种 Statement 配置起来,并通过 Java 对象和 Statement 中 SQL 的动态参数进行映射生成最终执行的 SQL 语句,最后由 MyBatis 框架执行 SQL并将结果映射为 Java 对象并返回。(从执行 SQL到返回 Result 的过程)。 二、MyBaits 的优缺点有哪些? § 优点: 基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL 写在 XML 里,解除 SQL 与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态 SQL 语句,并可重用; 与 JDBC 相比,减少了代码量,消除了 JDBC 大量冗余的代码,不需要手动开关连接; 很好的与各种数据库兼容(因为 MyBatis 使用 JDBC 来连接数据库,所以只要 JDBC 支持的数据库 MyBatis 都支持); 提供映射标签,支持对象与数据库的 ORM 字段关系映射;提供对象关系映射标签,支持对象关系组件维护。§ 缺点: SQL 语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写 SQL 语句的功底有一定要求; SQL 语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。 三、MyBatis 与 Hibernate 有哪些不同? MyBatis 和 Hibernate不同,它不完全是一个 ORM 框架,因为 MyBatis 需要程序员自己编写 SQL 语句;Hibernate 对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件,如果用 Hibernate 开发可以节省很多代码,提高效率; MyBatis 直接编写原生态 SQL,可以严格控制 SQL 执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,因为这类软件需求变化频繁,一但需求变化要求迅速输出成果。但是灵活的前提是 MyBatis 无法做到数据库无关性,如果需要实现支持多种数据库的软件,则需要自定义多套 SQL 映射文件,工作量大。 四、MyBatis 中 #{} 和 ${}的区别是什么? § #{} 是预编译处理,${} 是字符串替换 Mybatis 在处理 #{} 时,会将 SQL 中的 #{} 替换为 ? 号,调用 PreparedStatement 的 set 方法来赋值;使用 #{} 可以有效的防止 SQL 注入,提高系统安全性;2. MyBatis 在处理 ${} 时,就是把 ${} 替换成变量的值。 五、MyBatis 是如何进行分页的?分页插件的原理是什么? MyBatis 使用 RowBounds 对象进行分页,它是针对 ResultSet 结果集执行的内存分页,而非物理分页。可以在 SQL 内直接书写带有物理分页的参数来完成物理分页功能,也可以使用分页插件来完成物理分页。分页插件的基本原理是使用 MyBatis 提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的 SQL,然后重写 SQL,根据 dialect 方言,添加对应的物理分页语句和物理分页参数。 六、MyBatis 有几种分页方式? 数组分页 SQL 分页 拦截器分页 RowBounds 分页 七、MyBatis 逻辑分页和物理分页的区别是什么? 物理分页速度上并不一定快于逻辑分页,逻辑分页速度上也并不一定快于物理分页。 物理分页总是优于逻辑分页:没有必要将属于数据库端的压力加到应用端来,就算速度上存在优势,然而其它性能上的优点足以弥补这个缺点。 八、MyBatis 是否支持延迟加载?如果支持,它的实现原理是什么? Mybatis 仅支持 association 关联对象和 collection 关联集合对象的延迟加载,association 指的就是一对一,collection 指的就是一对多查询。在MyBatis配置文件中,可以配置是否启用延迟加载lazyLoadingEnabled=true|false。它的原理是,使用 CGLIB 创建目标对象的代理对象,当调用目标方法时,进入拦截器方法,比如调用 a.getB().getName(),拦截器 invoke() 方法发现 a.getB() 是 null 值,那么就会单独发送事先保存好的查询关联 B 对象的 SQL,把 B 查询上来,然后调用 a.setB(b),于是 a 的对象 b 属性就有值了,接着完成 a.getB().getName() 方法的调用。这就是延迟加载的基本原理。 九、说一下 MyBatis 的一级缓存和二级缓存? 一级缓存:基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该 Session 中的所有 Cache 就将清空,默认打开一级缓存;二级缓存:与一级缓存其机制相同,默认也是采用 PerpetualCache,HashMap 存储,不同在于其存储作用域为 Mapper(Namespace),并且可自定义存储源,如 Ehcache。默认不打开二级缓存,要开启二级缓存,使用二级缓存属性类需要实现 Serializable 序列化接口(可用来保存对象的状态),可在它的映射文件中配置 ;对于缓存数据更新机制,当某一个作用域(一级缓存 Session / 二级缓存 Namespaces)的进行了 C/U/D 操作后,默认该作用域下所有 select 中的缓存将被 clear。 十、Mybatis 有哪些执行器(Executor)? Mybatis 有 3 种基本的执行器(Executor): SimpleExecutor:每执行一次 update 或 select,就开启一个 Statement 对象,用完立刻关闭 Statement 对象; ReuseExecutor:执行 update 或 select,以 SQL 作为 key 查找 Statement 对象,存在就使用,不存在就创建,用完后,不关闭 Statement 对象,而是放置于 Map 内,供下一次使用。简言之,就是重复使用 Statement 对象; BatchExecutor:执行 update(没有 select,JDBC 批处理不支持select),将所有 SQL 都添加到批处理中(addBatch()),等待统一执行(executeBatch()),它缓存了多个 Statement 对象,每个 Statement对 象都是 addBatch() 完毕后,等待逐一执行 executeBatch() 批处理。与 JDBC 批处理相同。 十一、MyBatis 动态 SQL 是做什么的?都有哪些动态 SQL?能简述一下动态 SQL的执行原理不? MyBatis 动态 SQL 可以让我们在 XML 映射文件内,以标签的形式编写动态 SQL,完成逻辑判断和动态拼接 SQL 的功能; MyBatis 提供了 9 种动态 SQL 标签:trim、where、set、foreach、if、choose、when、otherwise、bind; 执行原理:使用 OGNL 从 SQL 参数对象中计算表达式的值,根据表达式的值动态拼接 SQL,以此来完成动态 SQL 的功能。 消息队列面试题 1、消息队列的基本作用?2、消息队列的优缺点有哪些?3、如何保证消息队列的高可用?4、如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性?5、如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题?6、如何保证消息的顺序性?7、大量消息在 MQ 里长时间积压,该如何解决?8、MQ 中的消息过期失效了怎么办?9、RabbitMQ 有哪些重要的角色?10、RabbitMQ 有哪些重要的组件?11、RabbitMQ 有几种广播类型?12、Kafka 可以脱离 zookeeper 单独使用吗?为什么?13、Kafka 有几种数据保留的策略?14、Kafka 的分区策略有哪些?欢迎大家关注我的公种浩【程序员追风】,文章都会在里面更新,整理的资料也会放在里面。 Redis面试题 1、谈下你对 Redis 的了解?2、Redis 一般都有哪些使用场景?3、Redis 有哪些常见的功能?4、Redis 支持的数据类型有哪些?5、Redis 为什么是单线程的?6、Redis 为什么这么快?7、什么是缓存穿透?怎么解决?8、什么是缓存雪崩?该如何解决?9、 怎么保证缓存和数据库数据的一致性?10、Redis 持久化有几种方式?11、Redis 怎么实现分布式锁?12、Redis 淘汰策略有哪些?13、Redis 常见性能问题和解决方案? 最后欢迎大家一起交流,喜欢文章记得点个赞哟,感谢支持!

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

阿里云ACP认证考试3000道题库全真模拟考试练习

阿里云ACP认证(Alibaba Cloud Certified Professional,ACP)是面向使用阿里云产品的架构、开发、运维类人员的专业技术认证。获得了阿里云ACP认证后,表示你已经掌握了阿里云的大部分产品知识,诸如ECS、SLB、OSS、RDS、ESS等知识,许多使用阿里云产品的企业和公司,将需要你这样的专业人士,去帮他们解决云计算方面的问题,比如日常运维、防黑、优化等工作。所以说阿里云ACP认证还是很有含金量的,它将让你在职场拥有了很大的竞争力,找工作也容易很多。 那么怎么样才能顺利通过阿里云ACP认证考试,拿到这个证书呢?除了平时的阿里云产品知识学习积累外,最重要的就是阿里云ACP认证考试历年来的试题练习了。如果有一个全真的模拟考试练习,那对于顺利通关考试拿到证书无疑帮助巨大。尊托云数为广大准备参加阿里云ACP认证考试的朋友们准备了一个全真模拟考试,试题库共收集阿里云最新考试题及往年试题精选3000多题,基本涵盖了阿里云ACP认证方方面面的知识,并且试题库还在不断完善和增加中,是准备参加阿里云ACP认证考试不可多得的一个学习练习场所。全真模拟考试地址:https://www.9i0i.com/exam2.html 全真模拟考试题库共3000多题,且还在更新增加中,每刷新一次页面更换一批试题,试题内容知识构成主要分为以下几个方面: 试卷内容范围●云服务器ECS 考试内容: 熟悉云服务器 ECS 相关的概念,主要包括地域及可用区、实例、磁盘、快照、镜像、网络、安全组 了解云服务器 ECS 的优势、计费、应用场景、API 及 SDK 能够基于云服务器 ECS 产品进行应用的部署 掌握云服务器 ECS 实例、磁盘、安全组、快照、镜像和标签的使用和操作 能够发现并解决云服务器 ECS 实例的操作系统、服务器登录及其他产品使用中常见的问题 能够基于云服务器 ECS 与负载均衡 SLB、专有网络 VPC、对象存储 OSS、内容分发网络 CDN、云数据库 RDS、弹性伸缩(Auto Scaling)、云盾和云监控产品实现应用的解决方案● 弹性伸缩(Auto Scaling)考试内容: 熟悉弹性伸缩 Auto Scaling 相关的基本概念,包括伸缩组、伸缩配置、伸缩规则、伸缩活动、伸缩触发任务、伸缩模式以及冷冻时间 熟悉弹性伸缩 Auto Scaling 的功能、产品优势及常用应用场景 掌握弹性伸缩 Auto Scaling 的具体配置和操作,包括伸缩组的创建和维护、规则和任务的配置、报警任务的配置等 了解弹性伸缩 Auto Scaling 使用中的注意事项,能够发现并解决使用过程中的常见问题 能够基于弹性伸缩 Auto Scaling 与云服务器 ECS、负载均衡SLB 产品实现应用的解决方案● 负载均衡 SLB 考试内容: 熟悉负载均衡 SLB 相关的基本概念和功能,包括负载均衡的定义、实现原理、支持的协议、会话保持、健康检查、后端服务器权重、证书、转发策略 熟悉负载均衡 SLB 的产品优势以及适用场景 掌握负载均衡 SLB 的使用、操作以及维护,包括负载均衡SLB 的配置、维护、注意事项以及问题识别和处理 能够基于负载均衡 SLB 与云服务器 ECS、弹性伸缩 AutoScaling 产品实现应用的解决方案● 专有网络 VPC 考试内容: 熟悉专有网络 VPC 产品的相关概念,包括专有网络、路由器、交换机、路由表及路由条目 了解专有网络 VPC 产品的优势及应用场景 掌握专有网络、交换机、EIP、路由器及路由表的使用和操作 了解专有网络 VPC 的安全与配置、使用限制 能够进行专有网络 VPC 的监控运维阿里云培训与认证 阿里云云计算专业认证(ACP 级)-考试大纲 了解通过高速通道实现专有网络 VPC 之间的互联方案 能够在专有网络 VPC 内进行云服务器 ECS、负载均衡 SLB和对象存储 OSS 产品的使用,并实现应用的解决方案● 对象存储 OSS 考试内容: 熟悉对象存储 OSS 的产品相关的概念,包括地域、Bucket、Object、防盗链、Object 生命周期管理 了解对象存储 OSS 产品的优势、应用场景及计费模式 掌握对象存储 OSS 的存储空间和对象的管理、使用和操作 了解对象存储 OSS 提供的图片处理能力 了解对象存储 OSS 产品使用中的常见问题 能够基于对象存储 OSS 与云服务器 ECS、内容分发网络CDN 和媒体转码服务 MTS 实现应用的解决方案● 内容分发网络 CDN 考试内容: 熟悉内容分发网络 CDN 产品的基本概念,包括 DNS 解析、智能 DNS、CNAME、缓存、边缘节点、加速域名、回源等 了解内容分发网络 CDN 产品的优势及应用场景及计费模式 能够进行内容分发网络 CDN 的基础配置和优化,能解决基本的常见问题 能够基于内容分发网络 CDN 与云服务器 ECS、对象存储OSS 产品实现应用的解决方案● 云安全、云盾及云监控考试内容: 具备使用云服务的基本安全意识及安全基础知识 了解阿里云云盾系列产品,包括 DDoS 基础防护、DDoS 高防 IP、安骑士、态势感知、绿网、云监控、服务器安全托管 了解 DDoS 基础防护、安骑士、态势感知、绿网和云监控产品的基本操作 能够通过阿里云提供的安全报警发现 DDoS 攻击防护、密码暴力破解,SQL 注入常见安全风险,并使用云盾产品进行防护● 云计算通用知识考试内容: 具备云计算领域从业人员需要具备的相关的概念、技术及云计算优势方面的基础知识,包括云计算的定义、特点、优势、服务类型、实现技术及部署方式等

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

精心整理了15道面试官喜欢问的MyBatis面试题

1、什么是 MyBatis?答:MyBatis 是一个可以自定义 SQL、存储过程和高级映射的持久层框架。2、讲下 MyBatis 的缓存答:MyBatis 的缓存分为一级缓存和二级缓存,一级缓存放在 session 里面,默认就有,二级缓存放在它的命名空间里,默认是不打开的,使用二级缓存属性类需要实现 Serializable 序列化接口(可用来保存对象的状态),可在它的映射文件中配置3、Mybatis 是如何进行分页的?分页插件的原理是什么?答:1)Mybatis 使用 RowBounds 对象进行分页,也可以直接编写 sql 实现分页,也可以使用Mybatis 的分页插件。2)分页插件的原理:实现 Mybatis 提供的接口,实现自定义插件,在插件的拦截方法内拦截待执行的 sql,然后重写 sql。举例:select from student,拦截 sql 后重写为:select t. from (select * from student)tlimit 0,104、简述 Mybatis 的插件运行原理,以及如何编写一个插件?答:1)Mybatis 仅可以编写针对 ParameterHandler、ResultSetHandler、StatementHandler、Executor 这 4 种接口的插件,Mybatis 通过动态代理,为需要拦截的接口生成代理对象以实现接口方法拦截功能,每当执行这 4 种接口对象的方法时,就会进入拦截方法,具体就是InvocationHandler 的 invoke()方法,当然,只会拦截那些你指定需要拦截的方法。2)实现 Mybatis 的 Interceptor 接口并复写 intercept()方法,然后在给插件编写注解,指定要拦截哪一个接口的哪些方法即可,记住,别忘了在配置文件中配置你编写的插件。5、Mybatis 动态 sql 是做什么的?都有哪些动态 sql?能简述一下动态 sql 的执行原理不?答:1)Mybatis 动态 sql 可以让我们在 Xml 映射文件内,以标签的形式编写动态 sql,完成逻辑判断和动态拼接 sql 的功能。2)Mybatis 提供了 9 种动态 sql 标签:trim|where|set|foreach|if|choose|when|otherwise|bind。3)其执行原理为,使用 OGNL 从 sql 参数对象中计算表达式的值,根据表达式的值动态拼接 sql,以此来完成动态 sql 的功能。6、#{}和${}的区别是什么?答:1)#{}是预编译处理,${}是字符串替换。2)Mybatis 在处理#{}时,会将 sql 中的#{}替换为?号,调用 PreparedStatement 的 set 方法来赋值;3)Mybatis 在处理${}时,就是把${}替换成变量的值。4)使用#{}可以有效的防止 SQL 注入,提高系统安全性。7、为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?答:Hibernate 属于全自动 ORM 映射工具,使用 Hibernate 查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取,所以它是全自动的。而 Mybatis 在查询关联对象或关联集合对象时,需要手动编写 sql 来完成,所以,称之为半自动 ORM 映射工具。8、Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?答:1)Mybatis 仅支持 association 关联对象和 collection 关联集合对象的延迟加载,association指的就是一对一,collection 指的就是一对多查询。在 Mybatis 配置文件中,可以配置是否启用延迟加载 lazyLoadingEnabled=true|false。2)它的原理是,使用 CGLIB 创建目标对象的代理对象,当调用目标方法时,进入拦截器方法,比如调用 a.getB().getName(),拦截器 invoke()方法发现 a.getB()是 null 值,那么就会单独发送事先保存好的查询关联 B 对象的 sql,把 B 查询上来,然后调用 a.setB(b),于是 a 的对象 b 属性就有值了,接着完成 a.getB().getName()方法的调用。这就是延迟加载的基本原理。9、MyBatis 与 Hibernate 有哪些不同?答:1)Mybatis 和 hibernate 不同,它不完全是一个 ORM 框架,因为 MyBatis 需要程序员自己编写 Sql 语句,不过 mybatis 可以通过 XML 或注解方式灵活配置要运行的 sql 语句,并将java 对象和 sql 语句映射生成最终执行的 sql,最后将 sql 执行的结果再映射生成 java 对象。2)Mybatis 学习门槛低,简单易学,程序员直接编写原生态 sql,可严格控制 sql 执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,例如互联网软件、企业运营类软件等,因为这类软件需求变化频繁,一但需求变化要求成果输出迅速。但是灵活的前提是 mybatis 无法做到数据库无关性,如果需要实现支持多种数据库的软件则需要自定义多套 sql 映射文件,工作量大。3)Hibernate 对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件(例如需求固定的定制化软件)如果用 hibernate 开发可以节省很多代码,提高效率。但是Hibernate 的缺点是学习门槛高,要精通门槛更高,而且怎么设计 O/R 映射,在性能和对象模型之间如何权衡,以及怎样用好 Hibernate 需要具有很强的经验和能力才行。总之,按照用户的需求在有限的资源环境下只要能做出维护性、扩展性良好的软件架构都是好架构,所以框架只有适合才是最好。10、MyBatis 的好处是什么?答:1)MyBatis 把 sql 语句从 Java 源程序中独立出来,放在单独的 XML 文件中编写,给程序的维护带来了很大便利。2)MyBatis 封装了底层 JDBC API 的调用细节,并能自动将结果集转换成 Java Bean 对象,大大简化了 Java 数据库编程的重复工作。3)因为 MyBatis 需要程序员自己去编写 sql 语句,程序员可以结合数据库自身的特点灵活控制 sql 语句,因此能够实现比 Hibernate 等全自动 orm 框架更高的查询效率,能够完成复杂查询。11、简述 Mybatis 的 Xml 映射文件和 Mybatis 内部数据结构之间的映射关系?答:Mybatis 将所有 Xml 配置信息都封装到 All-In-One 重量级对象 Configuration 内部。在Xml 映射文件中,标签会被解析为 ParameterMap 对象,其每个子元素会被解析为 ParameterMapping 对象。标签会被解析为 ResultMap 对象,其每个子元素会被解析为 ResultMapping 对象。每一个、、、标签均会被解析为 MappedStatement 对象,标签内的 sql 会被解析为 BoundSql 对象。12、什么是 MyBatis 的接口绑定,有什么好处?答:接口映射就是在 MyBatis 中任意定义接口,然后把接口里面的方法和 SQL 语句绑定,我们直接调用接口方法就可以,这样比起原来了 SqlSession 提供的方法我们可以有更加灵活的选择和设置.13、接口绑定有几种实现方式,分别是怎么实现的?答:接口绑定有两种实现方式,一种是通过注解绑定,就是在接口的方法上面加上@Select@Update 等注解里面包含 Sql 语句来绑定,另外一种就是通过 xml 里面写 SQL 来绑定,在这种情况下,要指定 xml 映射文件里面的 namespace 必须为接口的全路径名.14、什么情况下用注解绑定,什么情况下用 xml 绑定?答:当 Sql 语句比较简单时候,用注解绑定;当 SQL 语句比较复杂时候,用 xml 绑定,一般用xml 绑定的比较多15、MyBatis 实现一对一有几种方式?具体怎么操作的?答:有联合查询和嵌套查询,联合查询是几个表联合查询,只查询一次,通过在 resultMap 里面配置 association 节点配置一对一的类就可以完成;嵌套查询是先查一个表,根据这个表里面的结果的外键 id,去再另外一个表里面查询数据,也是通过 association 配置,但另外一个表的查询通过 select 属性配置。 喜欢文章记得点个赞,感谢支持!

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

11道高频Java面试题解析(Spring+Spring MVC+MyBatis)

前言最近一直都在面试,整理了几家公司常问的三大框架面试题,现在把它带答案整理好在这里分享给大家,希望对大家有所帮助。 以下为 Spring 常见面试问题 1 、什么是 Spring 框架?Spring 框架有哪些主要模块?Spring 框架是一个为 Java 应用程序的开发提供了综合、广泛的基础性支持的 Java 平台。Spring 帮助开发者解决了开发中基础性的问题,使得开发人员可以专注于应用程序的开发。Spring 框架本身亦是按照设计模式精心打造,这使得我们可以在开发环境中安心的集成 Spring 框架,不必担心 Spring 是如何在后台进行工作的。Spring 框架至今已集成了 20 多个模块。这些模块主要被分如下图所示的核心容器、数据访问/集成,、Web、AOP(面向切面编程)、工具、消息和测试模块。 2 、使用 Spring 框架能带来哪些好处?下面列举了一些使用 Spring 框架带来的主要好处:Dependency Injection(DI) 方法使得构造器和 JavaBean properties 文件中的依赖关系一目了然。 与 EJB 容器相比较,IoC 容器更加趋向于轻量级。这样一来 IoC 容器在有限的内存和 CPU 资源的情况下进行应用程序的开发和发布就变得十分有利。Spring 并没有闭门造车,Spring 利用了已有的技术比如 ORM 框架、logging 框架、J2EE、Quartz 和 JDK Timer,以及其他视图技术。Spring 框架是按照模块的形式来组织的。由包和类的编号就可以看出其所属的模块,开发者仅仅需要选用他们需要的模块即可。 要测试一项用 Spring 开发的应用程序十分简单,因为测试相关的环境代码都已经囊括在框架中了。更加简单的是,利用 JavaBean 形式的 POJO 类,可以很方便的利用依赖注入来写入测试数据。Spring 的 Web 框架亦是一个精心设计的 Web MVC 框架,为开发者们在 web 框架的选择上提供了一个除了主流框架比如 Struts、过度设计的、不流行 web 框架的以外的有力选项。Spring 提供了一个便捷的事务管理接口,适用于小型的本地事物处理(比如在单 DB 的环境下)和复杂的共同事物处理(比如利用 JTA 的复杂 DB 环境)。 3 、什么是控制反转(IOC) ?什么是依赖注入?控制反转是应用于软件工程领域中的,在运行时被装配器对象来绑定耦合对象的一种编程技巧,对象之间耦合关系在编译时通常是未知的。在传统的编程方式中,业 务逻辑的流程是由应用程序中的早已被设定好关联关系的对象来决定的。在使用控制反转的情况下,业务逻辑的流程是由对象关系图来决定的,该对象关系图由装配 器负责实例化,这种实现方式还可以将对象之间的关联关系的定义抽象化。而绑定的过程是通过“依赖注入”实现的。控制反转是一种以给予应用程序中目标组件更多控制为目的设计范式,并在我们的实际工作中起到了有效的作用。依赖注入是在编译阶段尚未知所需的功能是来自哪个的类的情况下,将其他对象所依赖的功能对象实例化的模式。这就需要一种机制用来激活相应的组件以提供特定的功能,所以依赖注入是控制反转的基础。否则如果在组件不受框架控制的情况下,框架又怎么知道要创建哪个组件?在 Java 中依然注入有以下三种实现方式: 构造器注入 Setter 方法注入 接口注入 4 、请解释下 Spring 框架中的 IoC ?Spring 中的 org.springframework.beans 包和 org.springframework.context 包构成了 Spring 框架 IoC 容器的基础。BeanFactory 接口提供了一个先进的配置机制,使得任何类型的对象的配置成为可能。ApplicationContex 接口对 BeanFactory (是一个子接口)进行了扩展,在 BeanFactory的基础上添加了其他功能,比如与 Spring 的 AOP 更容易集成,也提供了处理 message resource的机制(用于国际化)、事件传播以及应用层的特别配置,比如针对 Web 应用的WebApplicationContext。org.springframework.beans.factory.BeanFactory 是 Spring IoC 容器的具体实现,用来包装和管理前面提到的各种 bean。BeanFactory 接口是 Spring IoC 容器的核心接口。IOC:把对象的创建、初始化、销毁交给 spring 来管理,而不是由开发者控制,实现控制反转。 以下为 Spring MVC常见面试问题 1、什么是 Spring MVC?答:SpringMvc 是 spring 的一个模块,基于 MVC 的一个框架,无需中间整合层来整合。 2、Spring MVC 的优点:答:1)它是基于组件技术的.全部的应用对象,无论控制器和视图,还是业务对象之类的都是 java组件.并且和 Spring 提供的其他基础结构紧密集成.2)不依赖于 Servlet API(目标虽是如此,但是在实现的时候确实是依赖于 Servlet 的)3)可以任意使用各种视图技术,而不仅仅局限于 JSP4)支持各种请求资源的映射策略5)它应是易于扩展的 3、SpringMVC 工作原理?答:1)客户端发送请求到 DispatcherServlet2)DispatcherServlet 查询 handlerMapping 找到处理请求的 Controller3)Controller 调用业务逻辑后,返回 ModelAndView4)DispatcherServlet 查询 ModelAndView,找到指定视图5)视图将结果返回到客户端 以下为 MyBatis 常见面试问题 1、什么是 MyBatis?答:MyBatis 是一个可以自定义 SQL、存储过程和高级映射的持久层框架。 2、讲下 MyBatis 的缓存答:MyBatis 的缓存分为一级缓存和二级缓存,一级缓存放在 session 里面,默认就有,二级缓存放在它的命名空间里,默认是不打开的,使用二级缓存属性类需要实现 Serializable 序列化接口(可用来保存对象的状态),可在它的映射文件中配置 3、Mybatis 是如何进行分页的?分页插件的原理是什么?答:1)Mybatis 使用 RowBounds 对象进行分页,也可以直接编写 sql 实现分页,也可以使用Mybatis 的分页插件。2)分页插件的原理:实现 Mybatis 提供的接口,实现自定义插件,在插件的拦截方法内拦截待执行的 sql,然后重写 sql。举例:select from student,拦截 sql 后重写为:select t. from (select * from student)tlimit 0,10 4、简述 Mybatis 的插件运行原理,以及如何编写一个插件?答:1)Mybatis 仅可以编写针对 ParameterHandler、ResultSetHandler、StatementHandler、Executor 这 4 种接口的插件,Mybatis 通过动态代理,为需要拦截的接口生成代理对象以实现接口方法拦截功能,每当执行这 4 种接口对象的方法时,就会进入拦截方法,具体就是InvocationHandler 的 invoke()方法,当然,只会拦截那些你指定需要拦截的方法。2)实现 Mybatis 的 Interceptor 接口并复写 intercept()方法,然后在给插件编写注解,指定要拦截哪一个接口的哪些方法即可,记住,别忘了在配置文件中配置你编写的插件。

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

30道题测一测云原生这门课你能得几分?

Linux 基金会和招聘网站 Dice 通过调研全球 750 名招聘经理和超过 6500 名开源专业人士,调研结果显示:目前,全球市场上 57% 的招聘经理都在寻找具备云原生技能的专家,这个数字在 2016 年仅有 27%。 云原生是 IT 基础技术以及应用的新趋势,它是基于一种对目标的思考,从而衍生出的技术、解决方案与_方法论_的集合。当你还在疑惑云原生到底是什么的时候,越来越多的云原生架构师、云原生技术开发工程师的岗位在招聘网站涌现。在中国,有越来越多的企业正在积极向云原生之路迈进,云原生人才的需求量在势必进一步扩大。 挑战技术实力,赢取多重大奖 在今年4月,阿里云联合云原生计算基金会,发布了云原生技术学习路线图https://edu.aliyun.com/roadmap/cloudnative,并发布了一套系统的公开课来满足开发者

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

紧急整理了 20 道 Spring Boot 面试题,我经常拿来面试别人!

面试了一些人,简历上都说自己熟悉 Spring Boot, 或者说正在学习 Spring Boot,一问他们时,都只停留在简单的使用阶段,很多东西都不清楚,也让我对面试者大失所望。 下面,我给大家总结下有哪些 Spring Boot 的面试题,这是我经常拿来问面试者的,希望对你有帮助。 1、什么是 Spring Boot? Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。 更多 Spring Boot 详细介绍请看这篇文章《什么是Spring Boot?》。 2、为什么要用 Spring Boot? Spring Boot 优点非常多,如: ● 独立运行 ● 简化配置 ● 自动配置 ● 无代码生成和XML配置 ● 应用监控 ● 上手容易 ● … Spring Boot 集这么多优点于一身,还有理由不使用它呢? 3、Spring Boot 的核心配置文件有哪几个?它们的区别是什么? Spring Boot 的核心配置文件是 application 和 bootstrap 配置文件。 application 配置文件这个容易理解,主要用于 Spring Boot 项目的自动化配置。 bootstrap 配置文件有以下几个应用场景。 ● 使用 Spring Cloud Config 配置中心时,这时需要在 bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息; ● 一些固定的不能被覆盖的属性; ● 一些加密/解密的场景; 具体请看这篇文章《Spring Boot 核心配置文件详解》。 4、Spring Boot 的配置文件有哪几种格式?它们有什么区别? .properties 和 .yml,它们的区别主要是书写格式不同。 1).properties app.user.name=javastack 2).yml app: user: name:javastack 另外,.yml 格式不支持@PropertySource注解导入配置。 5、Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的? 启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,主要组合包含了以下 3 个注解: @SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。 @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。 @ComponentScan:Spring组件扫描。 6、开启 Spring Boot 特性有哪几种方式? 1)继承spring-boot-starter-parent项目 2)导入spring-boot-dependencies项目依赖 具体请参考这篇文章《Spring Boot开启的2种方式》。 7、Spring Boot 需要独立的容器运行吗? 可以不需要,内置了 Tomcat/ Jetty 等容器。 8、运行 Spring Boot 有哪几种方式? 1)打包用命令或者放到容器中运行 2)用 Maven/ Gradle 插件运行 3)直接执行 main 方法运行 9、Spring Boot 自动配置原理是什么? 注解 @EnableAutoConfiguration, @Configuration, @ConditionalOnClass 就是自动配置的核心,首先它得是一个配置文件,其次根据类路径下是否有这个类去自动配置。 具体看这篇文章《Spring Boot自动配置原理、实战》。 10、Spring Boot 的目录结构是怎样的? cn +-javastack +-MyApplication.java | +-customer |+-Customer.java |+-CustomerController.java |+-CustomerService.java |+-CustomerRepository.java | +-order +-Order.java +-OrderController.java +-OrderService.java +-OrderRepository.java 这个目录结构是主流及推荐的做法,而在主入口类上加上 @SpringBootApplication 注解来开启 Spring Boot 的各项能力,如自动配置、组件扫描等。具体看这篇文章《Spring Boot 主类及目录结构介绍》。 11、你如何理解 Spring Boot 中的 Starters? Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成 Spring 及其他技术,而不需要到处找示例代码和依赖包。如你想使用 Spring JPA 访问数据库,只要加入 spring-boot-starter-data-jpa 启动器依赖就能使用了。 Starters包含了许多项目中需要用到的依赖,它们能快速持续的运行,都是一系列得到支持的管理传递性依赖。具体请看这篇文章《Spring Boot Starters启动器》。 12、如何在 Spring Boot 启动的时候运行一些特定的代码? 可以实现接口 ApplicationRunner 或者 CommandLineRunner,这两个接口实现方式一样,它们都只提供了一个 run 方法,具体请看这篇文章《Spring Boot Runner启动器》。 13、Spring Boot 有哪几种读取配置的方式? Spring Boot 可以通过 @PropertySource,@Value,@Environment, @ConfigurationProperties 来绑定变量,具体请看这篇文章《Spring Boot读取配置的几种方式》。 14、Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个? Spring Boot 支持 Java Util Logging, Log4j2, Lockback 作为日志框架,如果你使用 Starters 启动器,Spring Boot 将使用 Logback 作为默认日志框架,具体请看这篇文章《Spring Boot日志集成》。 15、SpringBoot 实现热部署有哪几种方式? 主要有两种方式: ● Spring Loaded ● Spring-boot-devtools Spring-boot-devtools 使用方式可以参考这篇文章《Spring Boot实现热部署》。 16、你如何理解 Spring Boot 配置加载顺序? 在 Spring Boot 里面,可以使用以下几种方式来加载配置。 1)properties文件; 2)YAML文件; 3)系统环境变量; 4)命令行参数; 等等…… 具体请看这篇文章《Spring Boot 配置加载顺序详解》。 17、Spring Boot 如何定义多套不同环境配置? 提供多套配置文件,如: applcation.propertiesapplication-dev.propertiesapplication-test.propertiesapplication-prod.properties 运行时指定具体的配置文件,具体请看这篇文章《Spring Boot Profile 不同环境配置》。 18、Spring Boot 可以兼容老 Spring 项目吗,如何做? 可以兼容,使用@ImportResource注解导入老 Spring 项目配置文件。 19、保护 Spring Boot 应用有哪些方法? ● 在生产中使用HTTPS ● 使用Snyk检查你的依赖关系 ● 升级到最新版本 ● 启用CSRF保护 ● 使用内容安全策略防止XSS攻击 ● … 更多请看这篇文章《10 种保护 Spring Boot 应用的绝佳方法》。 20、Spring Boot 2.X 有什么新特性?与 1.X 有什么区别? ● 配置变更 ● JDK 版本升级 ● 第三方类库升级 ● 响应式 Spring 编程支持 ● HTTP/2 支持 ● 配置属性绑定 ● 更多改进与加强… 具体请看这篇文章《Spring Boot 2.x 新特性总结及迁移指南》。 终于写完了,希望大家好好学习下再去面试,不然再被面试官问这些问题,又答不上来就尴尬了。弄懂了这些问题,对你理解 Spring Boot 也有非常大的帮助,其实,上面的这些题,在我们的公众号Java技术栈里面都能找到答案。 原文发布时间为:2018-10-13 本文作者:R哥 本文来自云栖社区合作伙伴“Java技术栈”,了解相关信息可以关注“Java技术栈”。

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

史上最全 40 道 Dubbo 面试题及答案,看完碾压面试官!

想往高处走,怎么能不懂 Dubbo? Dubbo是国内最出名的分布式服务框架,也是 Java 程序员必备的必会的框架之一。Dubbo 更是中高级面试过程中经常会问的技术,无论你是否用过,你都必须熟悉。 下面我为大家准备了一些 Dubbo 常见的的面试题,一些是我经常问别人的,一些是我过去面试遇到的一些问题,总结给大家,希望对大家能有所帮助。 1、Dubbo是什么? Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架,现已成为 Apache 基金会孵化项目。 面试官问你如果这个都不清楚,那下面的就没必要问了。 官网:http://dubbo.apache.org 2、为什么要用Dubbo? 因为是阿里开源项目,国内很多互联网公司都在用,已经经过很多线上考验。内部使用了 Netty、Zookeeper,保证了高性能高可用性。 使用 Dubbo 可以将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,可用于提高业务复用灵活扩展,使前端应用能更快速的响应多变的市场需求。 下面这张图可以很清楚的诠释,最重要的一点是,分布式架构可以承受更大规模的并发流量。 下面是 Dubbo 的服务治理图。 3、Dubbo 和 Spring Cloud 有什么区别? 两个没关联,如果硬要说区别,有以下几点。 1)通信方式不同 Dubbo 使用的是 RPC 通信,而 Spring Cloud 使用的是 HTTP RESTFul 方式。 2)组成部分不同 4、dubbo都支持什么协议,推荐用哪种? dubbo://(推荐) rmi:// hessian:// http:// webservice:// thrift:// memcached:// redis:// rest:// 5、Dubbo需要 Web 容器吗? 不需要,如果硬要用 Web 容器,只会增加复杂性,也浪费资源。 6、Dubbo内置了哪几种服务容器? Spring Container Jetty Container Log4j Container Dubbo 的服务容器只是一个简单的 Main 方法,并加载一个简单的 Spring 容器,用于暴露服务。 7、Dubbo里面有哪几种节点角色? 8、画一画服务注册与发现的流程图 该图来自 Dubbo 官网,供你参考,如果你说你熟悉 Dubbo, 面试官经常会让你画这个图,记好了。 9、Dubbo默认使用什么注册中心,还有别的选择吗? 推荐使用 Zookeeper 作为注册中心,还有 Redis、Multicast、Simple 注册中心,但不推荐。 10、Dubbo有哪几种配置方式? 1)Spring 配置方式 2)Java API 配置方式 11、Dubbo 核心的配置有哪些? 我曾经面试就遇到过面试官让你写这些配置,我也是蒙逼。。 配置之间的关系见下图。 12、在 Provider 上可以配置的 Consumer 端的属性有哪些? 1)timeout:方法调用超时 2)retries:失败重试次数,默认重试 2 次 3)loadbalance:负载均衡算法,默认随机 4)actives 消费者端,最大并发调用限制 13、Dubbo启动时如果依赖的服务不可用会怎样? Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,默认 check="true",可以通过 check="false" 关闭检查。 14、Dubbo推荐使用什么序列化框架,你知道的还有哪些? 推荐使用Hessian序列化,还有Duddo、FastJson、Java自带序列化。 15、Dubbo默认使用的是什么通信框架,还有别的选择吗? Dubbo 默认使用 Netty 框架,也是推荐的选择,另外内容还集成有Mina、Grizzly。 16、Dubbo有哪几种集群容错方案,默认是哪种? 17、Dubbo有哪几种负载均衡策略,默认是哪种? 18、注册了多个同一样的服务,如果测试指定的某一个服务呢? 可以配置环境点对点直连,绕过注册中心,将以服务接口为单位,忽略注册中心的提供者列表。 19、Dubbo支持服务多协议吗? Dubbo 允许配置多协议,在不同服务上支持不同协议或者同一服务上同时支持多种协议。 20、当一个服务接口有多种实现时怎么做? 当一个接口有多种实现时,可以用 group 属性来分组,服务提供方和消费方都指定同一个 group 即可。 21、服务上线怎么兼容旧版本? 可以用版本号(version)过渡,多个不同版本的服务注册到注册中心,版本号不同的服务相互间不引用。这个和服务分组的概念有一点类似。 22、Dubbo可以对结果进行缓存吗? 可以,Dubbo 提供了声明式缓存,用于加速热门数据的访问速度,以减少用户加缓存的工作量。 23、Dubbo服务之间的调用是阻塞的吗? 默认是同步等待结果阻塞的,支持异步调用。 Dubbo 是基于 NIO 的非阻塞实现并行调用,客户端不需要启动多线程即可完成并行调用多个远程服务,相对多线程开销较小,异步调用会返回一个 Future 对象。 异步调用流程图如下。 24、Dubbo支持分布式事务吗? 目前暂时不支持,后续可能采用基于 JTA/XA 规范实现,如以图所示。 25、Dubbo telnet 命令能做什么? dubbo 通过 telnet 命令来进行服务治理,具体使用看这篇文章《dubbo服务调试管理实用命令》。 telnet localhost 8090 26、Dubbo支持服务降级吗? Dubbo 2.2.0 以上版本支持。 27、Dubbo如何优雅停机? Dubbo 是通过 JDK 的 ShutdownHook 来完成优雅停机的,所以如果使用 kill -9 PID 等强制关闭指令,是不会执行优雅停机的,只有通过 kill PID 时,才会执行。 28、服务提供者能实现失效踢出是什么原理? 服务失效踢出基于 Zookeeper 的临时节点原理。 29、如何解决服务调用链过长的问题? Dubbo 可以使用 Pinpoint 和 Apache Skywalking(Incubator) 实现分布式服务追踪,当然还有其他很多方案。 30、服务读写推荐的容错策略是怎样的? 读操作建议使用 Failover 失败自动切换,默认重试两次其他服务器。 写操作建议使用 Failfast 快速失败,发一次调用失败就立即报错。 31、Dubbo必须依赖的包有哪些? Dubbo 必须依赖 JDK,其他为可选。 32、Dubbo的管理控制台能做什么? 管理控制台主要包含:路由规则,动态配置,服务降级,访问控制,权重调整,负载均衡,等管理功能。 33、说说 Dubbo 服务暴露的过程。 Dubbo 会在 Spring 实例化完 bean 之后,在刷新容器最后一步发布 ContextRefreshEvent 事件的时候,通知实现了 ApplicationListener 的 ServiceBean 类进行回调 onApplicationEvent 事件方法,Dubbo 会在这个方法中调用 ServiceBean 父类 ServiceConfig 的 export 方法,而该方法真正实现了服务的(异步或者非异步)发布。 34、Dubbo 停止维护了吗? 2014 年开始停止维护过几年,17 年开始重新维护,并进入了 Apache 项目。 35、Dubbo 和 Dubbox 有什么区别? Dubbox 是继 Dubbo 停止维护后,当当网基于 Dubbo 做的一个扩展项目,如加了服务可 Restful 调用,更新了开源组件等。 36、你还了解别的分布式框架吗? 别的还有 Spring cloud、Facebook 的 Thrift、Twitter 的 Finagle 等。 37、Dubbo 能集成 Spring Boot 吗? 可以的,项目地址如下。 https://github.com/apache/incubator-dubbo-spring-boot-project 38、在使用过程中都遇到了些什么问题? Dubbo 的设计目的是为了满足高并发小数据量的 rpc 调用,在大数据量下的性能表现并不好,建议使用 rmi 或 http 协议。 39、你读过 Dubbo 的源码吗? 要了解 Dubbo 就必须看其源码,了解其原理,花点时间看下吧,网上也有很多教程,后续有时间我也会在公众号上分享 Dubbo 的源码。 40、你觉得用 Dubbo 好还是 Spring Cloud 好? 扩展性的问题,没有好坏,只有适合不适合,不过我好像更倾向于使用 Dubbo, Spring Cloud 版本升级太快,组件更新替换太频繁,配置太繁琐,还有很多我觉得是没有 Dubbo 顺手的地方…… 欢迎工作一到五年的Java工程师朋友们加入Java架构开发:860113481 群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

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

出场率比较高的一道多线程安全面试题

这个问题是 Java 程序员面试经常会遇到的吧。 工作一两年的应该都知道 ArrayList 是线程不安全的,要使用线程安全的就使用 Vector,这也是各种 Java 面试宝典里面所提及的,可能很多工作好几年的程序员都停留在这个知识面上。 先说说为什么 ArrayList 是线程不安全的吧,来看以下的代码。 /** * 微信公众号:Java技术栈 */ public class TestArrayList { private static List<Integer> list = new ArrayList<>(); public static void main(String[] args) throws InterruptedException { for (int i = 0; i < 10; i++) { testList(); list.clear(); } } private static void testList() throws InterruptedException { Runnable runnable = () -> { for (int i = 0; i < 10000; i++) { list.add(i); } }; Thread t1 = new Thread(runnable); Thread t2 = new Thread(runnable); Thread t3 = new Thread(runnable); t1.start(); t2.start(); t3.start(); t1.join(); t2.join(); t3.join(); System.out.println(list.size()); } } 这是它的输出结果,我们期望的结果应该都是:30000,然后并不是,这就是传说中的多线程并发问题了。 Exception in thread "Thread-1" java.lang.ArrayIndexOutOfBoundsException: 15786 at java.base/java.util.ArrayList.add(ArrayList.java:468) at java.base/java.util.ArrayList.add(ArrayList.java:480) at com.test.thread.TestArrayList.lambda$testList$0(TestArrayList.java:23) at java.base/java.lang.Thread.run(Thread.java:844) 20332 16100 14941 23749 15631 22118 27417 30000 28691 27843 现象分析 从以上结果可以总结出 ArrayList 在并发情况下会出现的几种现象。 1、发生 ArrayIndexOutOfBoundsException 异常; private void add(E e, Object[] elementData, int s) { if (s == elementData.length) elementData = grow(); elementData[s] = e; size = s + 1; } 定位到异常所在源代码,毫无疑问,问题是出现在多线程并发访问下,由于没有同步锁的保护,造成了 ArrayList 扩容不一致的问题。 2、程序正常运行,输出了少于实际容量的大小; 这个也是多线程并发赋值时,对同一个数组索引位置进行了赋值,所以出现少于预期大小的情况。 3、程序正常运行,输出了预期容量的大小; 这是正常运行结果,未发生多线程安全问题,但这是不确定性的,不是每次都会达到正常预期的。 解决方案 既然这样,那么在高并发情况下,使用什么样的列表集合保护线程安全呢?回到文章最开始的地方,使用 Vector,还有别的吗?当然有,篇幅有限,请各位看官期待后续文章。 另外,像 HashMap, HashSet 等都有类似多线程安全问题,在多线程并发环境下避免使用这种集合。 转载请注明原文实际来源地址:原文地址 资料:成为架构师的十阶段学习资料! 教程:史上最强 Spring Boot & Cloud 教程汇总 工具:推荐一款在线创作流程图、思维导图软件 扫描关注我们的微信公众号,回复 "666" 可获取一套Java并发编程高清视频教程。 image

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

Women In Computer Vision——CVPR上一道特殊的靓丽风景线

我们都知道,CVPR(Conference on Computer Vision and Pattern Recognition) IEEE国际计算机视觉与模式识别会议是IEEE举办的图像识别领域的顶级会议,在其领域、乃至整个深度学习和AI领域都拥有巨大的影响力。但大家也许不知道的是,这个大会除了在技术方面的影响力和实力非常强悍之外,在一些细节上还显得非常有人文关怀。 从CVPR2015开始,这两年CVPR的工作交流会议(WorkShop)上都出现了一个新的固定板块:Women In Computer Vision。这项专门为女性开辟的WorkShop旨在提升女性在计算机视觉研究领域内的存在感和地位,加强女性研究者们之间的联系,以及为想要在这一行业有所建树的女生们提供一个展示自己的舞台。其每年邀请的演讲者、以及会议的组织者都是女性。

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

城市智慧化道阻且长 需综合各种理论和关键技术

【中国安防展览网 智慧城市】智慧城市正在成为推进我国城市发展和社会治理的一个实践探索路径。智慧城市建设是十八届五中全会强调的“加强和创新社会治理,推进社会治理精细化,构建全民共建共享的社会治理格局”的重要形态。智慧城市意味着城市资源配置结构和公共管理系统的动态化、立体性和智能化。智慧城市以物联网技术为支撑,利用更智慧、更全面、更有效、更快捷的应用将人类社会的各个层面进行有机融合,实现城市的智慧化发展。 一、城市智慧建设相关理论研究 1.1智慧城市理论 智慧城市借助计算机技术、互联网技术、移动通信技术、物联网技术,发挥多中基础信息设施的优势,将人类社会生活中产生的庞大信息进行智能处理,形成全新的生活方式、社会管理模式,构建新的城市形态。 1.2全生命周期管理理论 社会发展中各种活动大多以独立项目的方式开展的,在城市智慧建设理论中,其将传统的工程项目的管理扩展到项目全生命周期,从构思开支,知道项目结束。完整的项目全生命周期包含以下几部分:项目的决策、实施以及使用和维护,不同阶段和过程之间均存在千丝万缕的联系,智慧城市建设则是对这些联系进行整理和综合分析,理顺城市发展中各部分之间的关联,满足多层次、多方位的个性化需求。 1.3精益建造理论 该理论的基础是生产管理理论,主要实施对象为城市建设中项目的各个过程,主要目标是在最短工期和最少资源,不牺牲项目质量的前提下实现工程项目的管理和完成。精益建造理论来源于制造业的生产管理、流程管理和价值管理,主要为了解决施工过程中如何提高建造效率、降低生产成本、减少工作时间等问题。 二、智慧城市建设中的关键技术分析 智慧城市建设中所需要使用的技术较为复杂和多样,需要不同技术之间的协同合作才能达到预期效果。 2.1数据获取技术 现代数据处理和数据存储技术为智慧城市的建设提供了数据存储的可能。随着云计算技术的发展,基于云的多种技术被提出和应用到社会生活中,这种信息处理和存储技术突破了传统技术的技术瓶颈,利用云端的高性能和大容量存储设备对城市发展中产生的大数据进行处理和分析。此外云计算相关技术的应用将不同类型、不同环境下的数据信息进行了整合,可以实现跨平台、跨领域的信息处理和存储,解决了智慧城市发展进程中存在的数据共享的问题。 2.2物联网技术 物联网被称为人类的第三次信息技术革命,其可以在虚拟的信息和现实的物质之间建立统一规范的联系。首先物联网技术应用大量的传感器组成传感器网络,该网络主要用于对物体进行感知和信息获取;然后应用多种通信技术,典型的如RFID技术等将传感器采集到的数据信息进行传递;最后对采集到的数据信息进行跨行业、跨领域、跨系统、跨应用的共享和互通。 2.3云计算技术 云计算技术是智慧城市发展的保证。云计算将大量的分布的独立计算机通过一定的方式组建成统一管理的云系统,在该系统环境下,多个硬件设备可以协同工作,按照资源需求对硬件能力进行分配,实现多种传统计算技术所无法实现的功能。应用云计算平台可以对智慧城市发展过程中出现的多种状况、产生的多种信息、要求的多种处理功能进行合理解决和分配,充分满足城市建设的需求。 2.4数据挖掘技术 智慧城市智能化需要利用数据挖掘技术实现。智慧城市建设过程中会产生庞大的数据信息,这些数据信息繁杂没有规律,通常我们对于某一方面的研究只需要从数据池中提取我们感兴趣的数据即可。数据挖掘技术就是一种对大量数据按照个性化需求进行挖掘和分析的技术,这种技术可以从城市建设中产生的大量数据中挖掘出符合城市发展需求的信息机理知识,协助推动城市的智慧化演进。 三、总结 总之,城市的智慧化建设是一个漫长而复杂的过程,需要综合应用多种理论和技术,不仅是对城市产生巨大影响,还会对人类的生活方式产生巨大影响。 本文转自d1net(转载)

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

端点安全一体化,在医院与政企落地的三道坎

端点安全一体化这个概念,最近两年被提得很多。医院信息科、政企单位的网络安全负责人,几乎都听过这个词。但真正落地之后,不少人发现一个尴尬的现实:系统上了,策略配了,该拦的也拦了,可数据该出去还是出去,终端该出事还是出事。 问题出在哪?不是技术不行,也不是产品不好。问题在于,很多单位把端点安全一体化当成一个“买来装上就行”的项目,而忽略了它本质上是一套需要持续运营的能力体系。尤其是医院和政企这两个行业,终端环境复杂、人员角色多样、合规压力又大,落地难度远比想象中高。

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

一道泄洪调度指令,背后是一条怎样的数据链?

水利一张图防汛调度功能解析 在一次演示场景中,某水库的下泄流量需要从3000m³/s调整到4000—5500m³/s。表面上看,只是把一个数字调大,但实际操作中需要回答一连串问题:上游还会来多少水?水库能否承受?下游河道是否安全?闸门如何配合?沿线对象是否需要提前预警?调度指令下达后,又如何确认执行效果?

资源下载

更多资源
腾讯云软件源

腾讯云软件源

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

Nacos

Nacos

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

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

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

用户登录
用户注册