随笔分类 - Java
Java基础
摘要:折腾了半天,总算搞出来了,参考文章: validation自定义注解校验枚举类型 枚举类 注解校验 每天学习一点点,每天进步一点点。
阅读全文
摘要:前言 Java后端接受前端传来的 json 数据,并写入数据库。 如果前端传来的是嵌套的 json 数据,则不能直接写入数据库。 那该怎么办呢? 解决办法 在后端使用两个 model,如 DTO 和 VO ,其中 VO 用来接受前端数据,DTO 用来写入数据库。 在 VO 中,嵌套json 字段的返
阅读全文
摘要:多模块管理 在软件开发中,把一个大项目分拆为多个模块是降低软件复杂度的有效方法。 多模块管理简单地理解就是一个 Java 工程项目中不止有一个 pom.xml 文件,会在不同的目录中有多个这样的文件,进而实现 Maven 的多模块管理。 pom 文件编写注意事项 1、父 pom 中的 <packag
阅读全文
摘要:方法原型 forEach() 方法用于遍历动态数组中每一个元素并执行特定操作。 这个是 java8 的新特性的应用。 forEach() 方法原型如下: default void forEach(Consumer<? super T> action) { Objects.requireNonNull
阅读全文
摘要:基本作用 ObjectMapper 是 Jackson 提供的一个类,作用是将 java 对象与 json 字符串相互转化。 常用的方法writeValueAsString。 比如在 SpringSecurity 中,登录成功后的回调如下: .successHandler(new Authentic
阅读全文
摘要:SimpleDateFormat 示例 import java.text.SimpleDateFormat; import java.util.Date; public class Main{ public static void main(String[] args){ Date date = n
阅读全文
摘要:面试题 如果让你写一个消息队列,该如何进行架构设计?说一下你的思路。 面试官心理分析 其实聊到这个问题,一般面试官要考察两块: 你有没有对某一个消息队列做过较为深入的原理的了解,或者从整体了解把握住一个消息队列的架构原理。 看看你的设计能力,给你一个常见的系统,就是消息队列系统,看看你能不能从全局把
阅读全文
摘要:面试题 如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决? 面试官心理分析 你看这问法,其实本质针对的场景,都是说,可能你的消费端出了问题,不消费了;或者消费的速度极其慢。接着就坑爹了,可能你的消息队列集群的磁盘都快写满了,都没人消费,这个
阅读全文
摘要:面试题 如何保证消息的顺序性? 面试官心理分析 其实这个也是用 MQ 的时候必问的话题,第一看看你了不了解顺序这个事儿?第二看看你有没有办法保证消息是有顺序的?这是生产系统中常见的问题。 面试题剖析 我举个例子,我们以前做过一个 mysql binlog 同步的系统,压力还是非常大的,日同步数据要达
阅读全文
摘要:面试题 如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题? 面试官心理分析 这个是肯定的,用 MQ 有个基本原则,就是数据不能多一条,也不能少一条,不能多,就是前面说的重复消费和幂等性问题。不能少,就是说这数据别搞丢了。那这个问题你必须得考虑一下。 如果说你这个是用 MQ 来传递非常核心的消
阅读全文
摘要:浅拷贝 什么是浅拷贝 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。即对象的浅拷贝会对“主”对象进行拷贝,但不会复制主对象里面的对象。”里面的对象“会在原来的对象和它的副本之间共享。 浅拷贝实例 public class ShallowCopy { pu
阅读全文
摘要:区别 1.Integer是int的包装类,int则是java的一种基本的数据类型; 2.Integer变量必须实例化之后才能使用,而int变量不需要实例化; 3.Integer实际是对象的引用,当new一个Integer时,实际上生成一个指针指向对象,而int则直接存储数值 4.Integer的默认
阅读全文
摘要:概述 如下图 String StringBuffer StringBuilder String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量优先的内存空间 StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作
阅读全文
摘要:前言 Java 开发工具包(JavaDevelopment Kit) 第四章 对象与类 4.1 面向对象程序设计概述 事实上,在 Java 中,所有的类都源自于一个“神通广大的超类”,它就是 Object。 首先从设计类开始,然后再往每个类中添加方法。 使用预定义类 构造器: 在 Java 程序设计
阅读全文
摘要:面试题 如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性? 面试官心理分析 其实这是很常见的一个问题,这俩问题基本可以连起来问。既然是消费消息,那肯定要考虑会不会重复消费?能不能避免重复消费?或者重复消费了也别造成系统异常可以吗?这个是 MQ 领域的基本问题,其实本质上还是问你使用消息队列
阅读全文
摘要:面试题 如何保证消息队列的高可用? 面试官心理分析 如果有人问到你 MQ 的知识,高可用是必问的。上一讲提到,MQ 会导致系统可用性降低。所以只要你用了 MQ,接下来问的一些要点肯定就是围绕着 MQ 的那些缺点怎么来解决了。 要是你傻乎乎的就干用了一个 MQ,各种问题从来没考虑过,那你就杯具了,面试
阅读全文
摘要:面试题 为什么使用消息队列? 消息队列有什么优点和缺点? Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景? 面试官心理分析 其实面试官主要是想看看: 第一,你知不知道你们系统里为什么要用消息队列这个东西? 不少候选人,说自己项目里用了 Redis、M
阅读全文
摘要:文章来源 美团技术团队 摘要 HashMap 是 Java 程序员使用频率最高的用于映射(键值对)处理的数据类型。随着 JDK(Java Developmet Kit)版本的更新,JDK1.8 对 HashMap 底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合 JDK1.7
阅读全文
摘要:前言 如果开发人员不了解虚拟机诸多技术特性的运行原理,就无法写出最适合虚拟机运行和自优化的代码。 代码清单可以从华章图书的网站(http://www.hzbook.com/)上下载。 Java 程序员把控制内存的权力交给了Java虚拟机,所以可以在编码的时候享受自动内存管理的诸多优势,不过也正因为这
阅读全文
摘要:Java 的 IO 流分为两大类: 字节流 字符流 从超类到实现类,Java IO 流的继承关系大致如下图: InputStream InputStream 就是 Java 标准库提供的最基本的字节输入流。它位于java.io这个包里。java.io包提供了所有同步IO的功能。 要特别注意的一点是,
阅读全文

浙公网安备 33010602011771号