周末我把HashMap源码又过了一遍

为什么在Java面试中总是会问HashMap? HashMap一直是Java面试官喜欢考察的题目,无论应聘者你处于哪个级别,在多轮的技术面试中似乎总有一次会被问到有关 HashMap 的问题。 为什么在Java面试中一定会深入考察HashMap?因为 HashMap 它的设计结构和原理的特点,它既可 ... »

Mybatis 批量更新遇到的小问题

小问题 记一个开发过程中因为小细节的遗漏而引发的 "莫名其妙",公司中有个2B(to B)供应链项目,持久层用的是 JPA,这里我就不吐槽 JPA 了,这种 SQL 嵌入在代码里的方式真的不够简洁。 由于是新功能的开发,查询的功能中需要多字段的条件查询,涉及到多张表的关联操作。我试着用 JPA 来写 ... »

MapStruct 解了对象映射的毒

前言 MVC模式是目前主流项目的标准开发模式,这种模式下框架的分层结构清晰,主要分为Controller,Service,Dao。分层的结构下,各层之间的数据传输要求就会存在差异,我们不能用一个对象来贯穿3层,这样不符合开发规范且不够灵活。 我们常常会遇到层级之间字段格式需求不一致的情况,例如数据库 ... »

那些Java架构师必知必会的技术

Java基础 "Java 7 和 Java 8 中的 HashMap原理解析" "Java7 和 Java8 中的 ConcurrentHashMap 原理解析" "Java中自定义注解" "Java函数式编程和lambda表达式" "TCP三次握手原理,你真的了解吗?" "“三次握手,四次挥手”你 ... »

对Java中HashCode方法的深入思考

前言 最近在学习 Go 语言,Go 语言中有指针对象,一个指针变量指向了一个值的内存地址。学习过 C 语言的猿友应该都知道指针的概念。Go 语言语法与 C 相近,可以说是类 C 的编程语言,所以 Go 语言中有指针也是很正常的。我们可以通过将取地址符 放在一个变量前使用就会得到相应变量的内存地址。 ... »

Elasticsearch 技术分析(九):Elasticsearch的使用和原理总结

前言 之前已经分享过Elasticsearch的使用和原理的知识,由于近期在公司内部做了一次内部分享,所以本篇主要是基于之前的博文的一个总结,希望通过这篇文章能让读者大致了解Elasticsearch是做什么的以及它的使用和基本原理。 生活中的数据 搜索引擎是对数据的检索,所以我们先从生活中的数据说 ... »

分布式全局ID生成方案

传统的单体架构的时候,我们基本是单库然后业务单表的结构。每个业务表的ID一般我们都是从1增,通过 设置自增起始值,但是在分布式服务架构模式下分库分表的设计,使得多个库或多个表存储相同的业务数据。这种情况根据数据库的自增ID就会产生相同ID的情况,不能保证主键的唯一性。 如上图,如果第一个订单存储在 ... »

从单体架构升级到微服务,在代码层面应注意的一些问题

由于近年来的移动端的发展和 2C模式 的红利,一些在风口的企业的业务得到爆发式增长。从架构层面来说,业务驱动技术的变革,所以微服务架构的概念得到很多企业的青睐,因为可以解决服务的大流量和高并发以及稳定性的要求。 但是任何架构设计不是一蹴而就的,不能从起步就开始使用微服务,一般都是先通过单体架构来快速 ... »

通过IDEA快速定位和排除依赖冲突

前言 我们程序员在开发的时候经常会遇到各种各样的 BUG 问题,其中大部分是业务逻辑异常,还有一些是代码书写不规范造成的异常例如:NullPointException(NPE),IndexOutOfBoundsException 等等,其实这些我们都好定位和修复。但是还有一些运行时异常定位起来是特别 ... »

一款简单的程序员博客园皮肤

一款简单干净的博客园主题,代码 Github 地址: "cnblog theme simpcode" ,示例博客:https://www.cnblogs.com/noobgod/。 一、准备 在开始之前,必须要确保你已经申请了博客园 JS 权限,具体申请过程就不详细介绍了,读者自行网上搜索,很简单的 ... »

分布式系统中session一致性问题

业务场景 在单机系统中,用户登陆之后,服务端会保存用户的会话信息,只要用户不退出重新登陆,在一段时间内用户可以一直访问该网站,无需重复登陆。用户的信息存在服务端的 session 中,session中可以存放服务端需要的一些用户信息,例如用户ID,所属公司companyId,所属部门deptId等等 ... »

分布式系统中接口的幂等性

业务场景 公司有个借贷的项目,具体业务类似于阿里的蚂蚁借呗,用户在平台上借款,然后规定一个到期时间,在该时间内用户需将借款还清并收取一定的手续费,如果规定时间逾期未还上,则会产生滞纳金。 用户发起借款因此会产生一笔借款订单,用户可通过支付宝或在系统中绑定银行卡到期自动扣款等方式进行还款。还款流程都走 ... »

分布式系统中一致性哈希算法

问题场景 近年来B2C、O2O等商业概念的提出和移动端的发展,使得分布式系统流行了起来。分布式系统相对于单系统,解决了流量大、系统高可用和高容错等问题。功能强大也意味着实现起来需要更多技术的支持。例如系统访问层的负载均衡,缓存层的多实例主从复制备份,数据层的分库分表等。 我们以负载均衡为例,常见的负 ... »

Elasticsearch 的性能优化

硬件选择 Elasticsearch(后文简称 ES)的基础是 Lucene,所有的索引和文档数据是存储在本地的磁盘中,具体的路径可在 ES 的配置文件 中配置,如下: 磁盘涉及到 IO 的读写速度问题,因此如果条件允许的条件下,尽可能使用 SSD 硬盘和 高配置的 CPU。IO的提升,会极大改进 ... »

记一次在咸鱼上购买 MacBook Pro 的经历

前言 以前一直用的是 windows 的,但是最近特别想买个 macOS 的。其实不是为了其他什么目的,只是涉及到开发 macOS更接近 linux 系统,一直没使用过所以就想尝试体验下,而且现在很多公司都配置了 mac 给开发人员使用,像阿里很多部门都是配 Macbook 的。提前体验下,不仅自己 ... »

程序员为什么会有职业瓶颈?

寒冬的思考 2019年初,俗话说"金三银四"。这时候面试不知道你们慌不慌张。因为2018年冬天是寒冷的。其实18年的低温持续时间不算很长,我也没有披上军大衣。但是突如其来的互联网寒冬影响了不少人,互联网寒冬当然主要受影响的就是程序员了。 回顾过往,2017年是互联网高速发展的一年,共享经济仅仅一个概 ... »

IntelliJ IDEA(十二) :文件状态高亮显示

前言 使用 IDEA 的都知道,IDEA 对于版本控制的文件是有高亮颜色提示的,例如 IDEA(2018.3)的 Darcula 主题中使用 Git 作为版本控制工具,通过四种颜色来提示文件版本控制,如下图: 通过这种文件颜色的区分,开发人员能清晰的知道文件目前处于版本控制的哪个阶段。 今天想更换个 ... »

Elasticsearch 通关教程(四): 分布式工作原理

前言 通过前面章节的了解,我们已经知道 Elasticsearch 是一个实时的分布式搜索分析引擎,它能让你以一个之前从未有过的速度和规模,去探索你的数据。它被用作全文检索、结构化搜索、分析以及这三个功能的组合。 Elasticsearch 可以横向扩展至数百(甚至数千)的服务器节点,同时可以处理P ... »