Loading...

摘要: Java基础 Java对象的内存布局 MapStruct 解了对象映射的毒 周末我把HashMap源码又过了一遍 Java7 和 Java8 中的 ConcurrentHashMap 原理解析 Java中自定义注解 Java函数式编程和lambda表达式 TCP三次握手原理,你真的了解吗? “三次握 阅读全文
posted @ 2019-11-11 10:08 JaJian 阅读(9644) 评论(1) 推荐(6) 编辑
摘要: Driver:Driver是Spark中Application也即代码的发布程序,可以理解为我们编写spark代码的主程序,因此只有一个,负责对spark中SparkContext对象进行创建,其中SparkContext对象负责创建Spark中的RDD(Spark中的基本数据结构,是一种抽象的逻辑 阅读全文
posted @ 2024-01-30 10:29 JaJian 阅读(48) 评论(1) 推荐(0) 编辑
摘要: 之前写过一篇 Redis 数据类型的底层数据结构的实现,其中提到,ZSet 对象的底层数据结构实现之一是跳表。 然后,有读者就问:为什么不使用平衡树(如红黑树、AVL 树)? 我们先来了解下跳表,再来回答这个问题。 跳表 Redis 只有 Zset 对象的底层实现用到了跳表,跳表的优势是能支持平均 阅读全文
posted @ 2022-10-17 23:08 JaJian 阅读(1162) 评论(1) 推荐(0) 编辑
摘要: 在电商平台中,一个订单会有多种状态,临时单、已下单、待支付、已支付、待发货、待收货、已完成等等。每一种状态都和变化前的状态以及执行的操作有关。比如,用户将商品加入购物车后,后台会生成一个所谓的“临时单”。因为用户还没有点击下单,所以这个订单实际上还没有生成。只有当用户下单后,这个“临时单”才会转化为 阅读全文
posted @ 2022-10-12 15:14 JaJian 阅读(1712) 评论(0) 推荐(1) 编辑
摘要: 为什么在Java面试中总是会问HashMap? HashMap一直是Java面试官喜欢考察的题目,无论应聘者你处于哪个级别,在多轮的技术面试中似乎总有一次会被问到有关 HashMap 的问题。 为什么在Java面试中一定会深入考察HashMap?因为 HashMap 它的设计结构和原理的特点,它既可 阅读全文
posted @ 2020-11-16 09:10 JaJian 阅读(3168) 评论(3) 推荐(3) 编辑
摘要: 小问题 记一个开发过程中因为小细节的遗漏而引发的 "莫名其妙",公司中有个2B(to B)供应链项目,持久层用的是 JPA,这里我就不比较 JPA 和 Mybatis 的优劣了,但 JPA 对于多表关联的系统和后期维护性真的是差。 由于是新功能的开发,查询的功能中需要多字段的条件查询,涉及到多张表的 阅读全文
posted @ 2020-11-09 18:23 JaJian 阅读(1325) 评论(0) 推荐(0) 编辑
摘要: 前言 MVC模式是目前主流项目的标准开发模式,这种模式下框架的分层结构清晰,主要分为Controller,Service,Dao。分层的结构下,各层之间的数据传输要求就会存在差异,我们不能用一个对象来贯穿3层,这样不符合开发规范且不够灵活。 我们常常会遇到层级之间字段格式需求不一致的情况,例如数据库 阅读全文
posted @ 2020-11-09 09:31 JaJian 阅读(3152) 评论(0) 推荐(0) 编辑
摘要: 今天来讲些抽象的东西 -- 对象头,因为我在学习的过程中发现很多地方都关联到了对象头的知识点,例如JDK中的 synchronized锁优化 和 JVM 中对象年龄升级等等。要深入理解这些知识的原理,了解对象头的概念很有必要,而且可以为后面分享 synchronized 原理和 JVM 知识的时候做 阅读全文
posted @ 2020-09-21 08:47 JaJian 阅读(9801) 评论(2) 推荐(9) 编辑
摘要: 理论知识 周末上海下起了雨也降温了,无事打开电脑看看源码,就想到了线程池。线程池的技术网络上已经有很多文章都已经写过了,而且理论都是一样的。 但是理论归理论,面试的时候也许你刚好看了一篇能应付过去,但是如果深究细节可能就会懵逼。所以我很建议任何理论我们都需要自己去探究一下才好,自己实践过的才有自己的 阅读全文
posted @ 2020-09-08 09:11 JaJian 阅读(4575) 评论(2) 推荐(10) 编辑
摘要: 前言 最近在学习 Go 语言,Go 语言中有指针对象,一个指针变量指向了一个值的内存地址。学习过 C 语言的猿友应该都知道指针的概念。Go 语言语法与 C 相近,可以说是类 C 的编程语言,所以 Go 语言中有指针也是很正常的。我们可以通过将取地址符 放在一个变量前使用就会得到相应变量的内存地址。 阅读全文
posted @ 2019-08-12 09:11 JaJian 阅读(3155) 评论(1) 推荐(3) 编辑
摘要: 之前已经分享过Elasticsearch的使用和原理的知识,由于近期在公司内部做了一次分享,所以本篇主要是基于之前的博文的一个总结,希望通过这篇文章能让读者大致了解Elasticsearch是做什么的以及它的使用和基本原理。 生活中的数据 搜索引擎是对数据的检索,所以我们先从生活中的数据说起。 我们 阅读全文
posted @ 2019-07-22 09:32 JaJian 阅读(14678) 评论(11) 推荐(17) 编辑
摘要: 传统的单体架构的时候,我们基本是单库然后业务单表的结构。每个业务表的ID一般我们都是从1增,通过 设置自增起始值,但是在分布式服务架构模式下分库分表的设计,使得多个库或多个表存储相同的业务数据。这种情况根据数据库的自增ID就会产生相同ID的情况,不能保证主键的唯一性。 如上图,如果第一个订单存储在 阅读全文
posted @ 2019-07-08 09:00 JaJian 阅读(8128) 评论(10) 推荐(21) 编辑
摘要: 由于近年来的移动端的发展和 2C模式 的红利,一些在风口的企业的业务得到爆发式增长。从架构层面来说,业务驱动技术的变革,所以微服务架构的概念得到很多企业的青睐,因为可以解决服务的大流量和高并发以及稳定性的要求。 但是任何架构设计不是一蹴而就的,不能从起步就开始使用微服务,一般都是先通过单体架构来快速 阅读全文
posted @ 2019-07-02 15:21 JaJian 阅读(3400) 评论(2) 推荐(9) 编辑
摘要: 最近在公众号号上看到了一篇文章,读后蛮有感触的,程序员常常因为走技术还是管理两个方向而犹豫不决,希望通过以下文章的分享对大家有所思考,以下是作者原文。 熟悉我的人都知道,我有位从事猎头工作的老婆,平时的工作是专为某些医疗、金融投资机构提供中、高级岗位职位人才招聘及相关咨询服务。 相比之下,这项工作对 阅读全文
posted @ 2019-06-26 18:03 JaJian 阅读(2846) 评论(1) 推荐(8) 编辑
摘要: 前言 我们程序员在开发的时候经常会遇到各种各样的 BUG 问题,其中大部分是业务逻辑异常,还有一些是代码书写不规范造成的异常例如:NullPointException(NPE),IndexOutOfBoundsException 等等,其实这些我们都好定位和修复。但是还有一些运行时异常定位起来是特别 阅读全文
posted @ 2019-06-12 09:09 JaJian 阅读(35749) 评论(4) 推荐(8) 编辑
摘要: 一款简单干净的博客园主题,代码 Github 地址: "cnblog theme simpcode" ,示例博客: "noobgod" 。 一、准备 在开始之前,必须要确保你已经申请了博客园 JS 权限,具体申请过程就不详细介绍了,读者自行网上搜索,很简单的。 本皮肤如果经常逛博客的读者应该很熟悉, 阅读全文
posted @ 2019-06-11 09:03 JaJian 阅读(13521) 评论(16) 推荐(35) 编辑
摘要: 业务场景 在单机系统中,用户登陆之后,服务端会保存用户的会话信息,只要用户不退出重新登陆,在一段时间内用户可以一直访问该网站,无需重复登陆。用户的信息存在服务端的 session 中,session中可以存放服务端需要的一些用户信息,例如用户ID,所属公司companyId,所属部门deptId等等 阅读全文
posted @ 2019-06-03 08:31 JaJian 阅读(3763) 评论(3) 推荐(4) 编辑
摘要: 业务场景 公司有个借贷的项目,具体业务类似于阿里的蚂蚁借呗,用户在平台上借款,然后规定一个到期时间,在该时间内用户需将借款还清并收取一定的手续费,如果规定时间逾期未还上,则会产生滞纳金。 用户发起借款因此会产生一笔借款订单,用户可通过支付宝或在系统中绑定银行卡到期自动扣款等方式进行还款。还款流程都走 阅读全文
posted @ 2019-05-27 08:57 JaJian 阅读(28416) 评论(14) 推荐(11) 编辑
摘要: 业务场景 近年来B2C、O2O等商业概念的提出和移动端的发展,使得分布式系统流行了起来。分布式系统相对于单系统,解决了流量大、系统高可用和高容错等问题。功能强大也意味着实现起来需要更多技术的支持。例如系统访问层的负载均衡,缓存层的多实例主从复制备份,数据层的分库分表等。 我们以负载均衡为例,常见的负 阅读全文
posted @ 2019-05-23 09:52 JaJian 阅读(14606) 评论(2) 推荐(9) 编辑
摘要: 需求缘起 Web Server通常有个配置,最大工作线程数,后端服务一般也有个配置,工作线程池的线程数量,这个线程数的配置不同的业务架构师有不同的经验值,有些业务设置为CPU核数的2倍,有些业务设置为CPU核数的8倍,有些业务设置为CPU核数的32倍。 “工作线程数”的设置依据是什么,到底设置为多少 阅读全文
posted @ 2019-05-14 15:20 JaJian 阅读(11298) 评论(2) 推荐(2) 编辑