暂时未有相关云产品技术能力~
关注公众号:JavaEdge,后台回复面试,领取更多大厂求职资源。曾在百度、携程、华为等大厂搬砖,专注Java生态各种中间件原理、框架源码、微服务、中台等架构设计及落地实战,只生产硬核干货!
《代码重构》之方法到底多长算“长”?
一个简单需求竟让我改了十几处代码,万字控诉到底什么是重复代码!
Spring Data Redis怎么读不到我刚才设进去的值?
不管是日本人设计的 Ruby还是巴西人设计的 Lua,各种语法采用的全都是英语。所以,想要成为一个优秀的程序员,会用英语写代码是必要的。 但不是要求研发人员都得专业英语八级,但至少确保代码用英语表达你的意图。
阿里P8面试被问:Spring AOP Proxy创建出来的到底是个啥?
阿里P8面试被问:Spring AOP Proxy创建出来的到底是个啥?
有读者看到标题就开始敲键盘了,我知道,命名不就是不能用 abc、123 命名,名字要有意义嘛,这有什么好讲的? 然而,即便懂得了名字要有意义,很多程序员依然无法逃离命名沼泽。
有读者看到标题就开始敲键盘了,我知道,命名不就是不能用 abc、123 命名,名字要有意义嘛,这有什么好讲的? 然而,即便懂得了名字要有意义,很多程序员依然无法逃离命名沼泽。
阿里四面:你知道Spring AOP创建Proxy的过程吗?
Spring源码编译报错:reactor.core.publisher中的MonoProcessor已过时
Spring Bean生命周期你除了会背八股文面试,真的会用了吗?
Spring Bean生命周期你除了会背八股文面试,真的会用了吗?
万字总结!全网最全的Java并发编程知识点
万字总结!全网最全的Java并发编程知识点
万字总结!全网最全的Java并发编程知识点
万字总结!全网最全的Java并发编程知识点
万字总结!全网最全的Java并发编程知识点
Java语法糖之泛型与类型擦除
并发不一定要依赖多线程(如PHP的多进程并发),但在Java中谈论并发,大多数都与线程脱不开关系。
LinkedHashMap维护插入的顺序。
LinkedHashMap维护插入的顺序。
集合类型的自动注入是Spring提供的另外一个强大功能。我们在方便的使用依赖注入的特性时,必须要思考对象从哪里注入、怎么创建、为什么是注入这一个对象的。虽然编写框架的目的是让开发人员无需关心太多底层细节,能专心业务逻辑的开发,但是作为开发人员不能真的无脑去使用框架。 务必学会注入集合等高级用法,让自己有所提升! 现在有一需求:存在多个用户Bean,找出来存储到一个List。
有时我们会使用@Value自动注入,同时也存在注入到集合、数组等复杂类型的场景。这都是方便写 bug 的场景。
有时我们会使用@Value自动注入,同时也存在注入到集合、数组等复杂类型的场景。这都是方便写 bug 的场景。
像第一个案例,同种类型的实现,可能不是同时出现在自己的项目代码中,而是有部分实现出现在依赖的类库。看来研究源码的确能让我们少写几个 bug!
像第一个案例,同种类型的实现,可能不是同时出现在自己的项目代码中,而是有部分实现出现在依赖的类库。看来研究源码的确能让我们少写几个 bug!
像第一个案例,同种类型的实现,可能不是同时出现在自己的项目代码中,而是有部分实现出现在依赖的类库。看来研究源码的确能让我们少写几个 bug!
HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长. HashMap是非线程安全的,只适用于单线程环境,多线程环境可以采用并发包下的concurrentHashMap HashMap 实现了Serializable接口,因此它支持序列化,实现了Cloneable接口,能被克隆 HashMap是基于哈希表的Map接口的非同步实现.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映射的顺序,特别是它不保证该顺序恒久不变.
HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长. HashMap是非线程安全的,只适用于单线程环境,多线程环境可以采用并发包下的concurrentHashMap HashMap 实现了Serializable接口,因此它支持序列化,实现了Cloneable接口,能被克隆 HashMap是基于哈希表的Map接口的非同步实现.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映射的顺序,特别是它不保证该顺序恒久不变.
HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长. HashMap是非线程安全的,只适用于单线程环境,多线程环境可以采用并发包下的concurrentHashMap HashMap 实现了Serializable接口,因此它支持序列化,实现了Cloneable接口,能被克隆 HashMap是基于哈希表的Map接口的非同步实现.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映射的顺序,特别是它不保证该顺序恒久不变.
约定大于配置,convention over configuration,也称按约定编程,一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。 本质是说,开发人员仅需规定应用中不符约定的部分。例如,如果模型中有个名为Sale的类,那么数据库中对应的表就会默认命名为sales。只有在偏离这一约定时,例如将该表命名为"products_sold",才需写有关这个名字的配置。 如果所用工具的约定与期待相符,便可省去配置;反之,可以配置来达到所期待的方式。
基本概念 树,一种非线性表数据结构: 节点 “树”里面的每个元素 父子关系 连线相邻节点之间的关系 兄弟节点 节点的父节点是同一个节点 根节点 没有父节点的节点 叶(子)节点 没有子节点的节点 节点的高度 节点到叶节点的最长路径(边数) 树的高度 根节点的高度 节点的深度 根节点到该节点所经历的边的个数 节点的层数 节点的深度+1
基本概念 树,一种非线性表数据结构: 节点 “树”里面的每个元素 父子关系 连线相邻节点之间的关系 兄弟节点 节点的父节点是同一个节点 根节点 没有父节点的节点 叶(子)节点 没有子节点的节点 节点的高度 节点到叶节点的最长路径(边数) 树的高度 根节点的高度 节点的深度 根节点到该节点所经历的边的个数 节点的层数 节点的深度+1
1 什么是哈希算法? 将任意长度的二进制值串映射为固定长度的二进制值串,映射规则就是哈希算法 通过原始数据映射之后得到的二进制值串就是哈希值
Could not obtain connection to query metadata : Public Key Retrieval is not allowed
生命线的激活与撤销 关键字activate和deactivate 表示参与者的生命活动。 一旦参与者被激活,它的生命线就会显示出来。 activate和deactivate适用于以上情形。 destroy表示一个参与者的生命线的终结。
常规去重 碰到List去重的问题,除了遍历去重,我们常常想到利用Set集合不允许重复元素的特点,通过List和Set互转,来去掉重复元素。
使用Java反射,可以在运行时检查一个方法的信息以及在运行期调用这个方法,通过使用java.lang.reflect.Method类就可以实现上述功能。
条件构造器 说明 以下出现的第一个入参boolean condition表示该条件是否加入最后生成的SQL中,
条件构造器 说明 以下出现的第一个入参boolean condition表示该条件是否加入最后生成的SQL中,
条件构造器 说明 以下出现的第一个入参boolean condition表示该条件是否加入最后生成的SQL中,
链表实现的LRU缓存淘汰算法的时间复杂度是O(n),当时我也提到了,通过散列表可以将这个时间复杂度降低到O(1)。 Redis的有序集合是使用跳表来实现的,跳表可以看作一种改进版的链表。Redis有序集合不仅使用了跳表,还用到了散列表。 LinkedHashMap也用到了散列表和链表两种数据结构。散列表和链表都是如何组合起来使用的,以及为什么散列表和链表会经常放到一块使用。
链表实现的LRU缓存淘汰算法的时间复杂度是O(n),当时我也提到了,通过散列表可以将这个时间复杂度降低到O(1)。 Redis的有序集合是使用跳表来实现的,跳表可以看作一种改进版的链表。Redis有序集合不仅使用了跳表,还用到了散列表。 LinkedHashMap也用到了散列表和链表两种数据结构。散列表和链表都是如何组合起来使用的,以及为什么散列表和链表会经常放到一块使用。
常用英文单词20万个,假设单词平均长度10个字母,平均一个单词占用10字节,那20万英文单词大约占2MB存储空间,这完全可以放在内存。所以我们可以用散列表来存储整个英文单词词典。 当用户输入某个英文单词时,拿用户输入的单词去散列表中查找: 查到,则说明拼写正确 没有查到,则说明拼写可能有误,给予提示 这就能轻松实现快速判断是否存在拼写错误。
常用英文单词20万个,假设单词平均长度10个字母,平均一个单词占用10字节,那20万英文单词大约占2MB存储空间,这完全可以放在内存。所以我们可以用散列表来存储整个英文单词词典。 当用户输入某个英文单词时,拿用户输入的单词去散列表中查找: 查到,则说明拼写正确 没有查到,则说明拼写可能有误,给予提示 这就能轻松实现快速判断是否存在拼写错误。
常用英文单词20万个,假设单词平均长度10个字母,平均一个单词占用10字节,那20万英文单词大约占2MB存储空间,这完全可以放在内存。所以我们可以用散列表来存储整个英文单词词典。 当用户输入某个英文单词时,拿用户输入的单词去散列表中查找: 查到,则说明拼写正确 没有查到,则说明拼写可能有误,给予提示 这就能轻松实现快速判断是否存在拼写错误。
面试官:为何Redis使用跳表而非红黑树实现SortedSet?
面试官:为何Redis使用跳表而非红黑树实现SortedSet?
面试官:为何Redis使用跳表而非红黑树实现SortedSet?
MyBatis惊天bug!居然将字符串解析成数值类型!