保存成功
订阅成功
保存失败,请重试
提交成功
张振华

张振华

Java开发经理
曾经先后在驴妈妈,携程,要买车公司担任过Java高级工程师、架构师、开发主管、技术经理等职务。在电商公司工作期间,负责过PC站和后端服务的平台架构、实现和升级。 目前在做一些Java架构工作。前后从业10几年没有离开Java,2015年出版《Java并发编程从入门到精通》。2018年出版《Spring Data Jpa从入门到精通》。 网名:张振华.Jack...更多
创作文章14

SpringDataJPA 晋级篇之:Hibernate 核心原理

经历过一些工作的沉淀和观察,给大家介绍一些 SpringDataJPA 的核心概念,方便大家快速的掌握 SpringDataJPA: 1. Spring Data JPA 中的五个重要时机:Session/connection/transaction/persistenceContext/flush 等 open/close 的时机和关系; 2. Persistence Context 到底是个什么鬼?起到了什么作用?和 Entity 的生命周期是什么关系?怎么相互作用的? 3. JPA 中 DB 的更新时机是怎么样的?如何规定和实现的? 4. JPA 中经典的 N+1 问题如何解决?
122 订阅

Java 晋级:Spring5.0 之 WebFlux 整体认识

Spring Framework5.0 之后,Reactive Programming 进入的大家的视野,而 Spring Framework5.0 的 Webflux 提供了 Reactive 的框架解决方案,发现身边一些同事理解不够透彻,Jack 打算和大家一起来学习一下。 通过本Chat大家会学习到如下内容: 1. WebFlux 涉及到的概念认识(面向对象编程、函数式编程、反应式编程)? 2. WebFlux 中 Reactive 重要的封装是什么? 3. WebFlux 与 Spring Data 的关系? 4. WebFlux 与异步响应(NIO 等)的关系 5. WebFlux 与 Socket、Servert3.0、Tomcat 等的关系 6. WebFlux 在 SpringMVC 与 HTTP 协议的关系 7. WebFlux 的实际使用场景是什么? 当然了,本 Chat 也不局限于以上内容,欢迎大家一起交流与学习,本期话题主要是围绕 WebFlux 和响应式编程,一起来彻底理解它,欢迎大家留言想知道的或者提供一些参考资料。
严选Java
380 订阅

Spring Data JPA 晋级提升篇:复杂场景实战用法与优化

[《Spring Data JPA 从入门到精通》](https://s.click.taobao.com/LsfmVOw) &[《Spring Data JPA 实战》](http://gitbook.cn/m/mazi/comp/column?columnId=5ab9bfd5c864031e9f8301bd)推出后不久,经过一些读者的反馈和讨论,还有一些业界大牛的建议。 老师打算对最近的实战经验再进行一次输出,通过本场 Chat,大家可以学习了解到如下内容: 1. Spring Data JPA 中 N+1条 SQL 的实战使用,及其SQL和参数如何打印出来。 2. Repository 中 Cache的使用。 3. JPA 关注的 Hibernate 在 Application 的配置有哪些?如何找? 4. @Entity 中 Lazy Load 所遇到的坑。 5. Hibernate Inheritance Mapping 实战使用。 6. 多态、水平拆表如何做? 7. @Transactiona 在私有方法和异步线程遇到的问题?及其如何优雅解决? 8. 还会透过现象看本质,思想上我们如何形成转变,一起感受 JPA 的魅力。 当然了,本 Chat 也不局限于以上内容,欢迎大家一起交流与学习 Spring JPA 的高级用法。参与本 Chat 之前建议大家对以上两本资料有所了解,这样可能大家讨论交流的时候可能更深入一些。小伙伴们购过书的,在线交流的时候来了....... > 欢迎各位小伙伴支持老师的新书《Spring Data JPA 入门到精通》,这样可以有更完整的认识哦。 [推荐京东购买链接100%好评](https://s.click.taobao.com/LsfmVOw)
Spring
1029 订阅

Spring Boot Actuator 之监控架构实战使用

本 Chat 作为 Logging 的姊妹篇,来和大家一起整体认识一下 Spring Boot Actuator 及其在实际工作的使用。有整体到局部,有原理到实战,一起来学习一下 Actuator 的正确使用姿势。 通过此篇 Chat 我们可以了解到如下内容: 1. Spring Boot Actuator 如何使用。 2. Actuator 中我们重点关注的是什么?如何自定义 Heath? 3. Metrics 与 Micrometer 的关系是什么? 4. Prometheus 是什么鬼,我们如何使用和自定义? 5. Grafana 中 Prometheus 的如何配置? 我尽量把自己的实际工作经验进行输出,帮组大家上升一个台阶进行快速学习。篇幅有限可能原理部分的讲解就不如实战经验的讲解了,主要让大家 明白整体上是怎么回事,生产如何去操作。 欢迎支持我的新书《Spring Data JPA 入门到精通》,不少实战和学习方法尽在不言中。 实录内容: 1. Spring Boot 面试题有哪些?如何准备? 1. Registry-JMX 如何使用?有什么效果? 1. 使用非 Spring Boot 的项目如何做监控和告警? 1. Jolokia 是什么有用过吗? 1. 当我们把 Metrics 的指标暴露给了 JMX 之后怎么办? 1. Prometheus ELK 链路监控有什么区别?定位是什么? 1. 在 Spring Boot 项目内,maven,子 module 使用本身的配置文件,在启动模块内引用子模块,若启动模块内配置了相同的配置,是否会覆盖子模块的配置?另什么情况会引起 Spring Data JPA 的@Colum n内的配置失效(如 length、unique)? 1. Prometheus 与 open falcon 选型上有何注意点?Jaeger 与 skywalking 选型上有何注意点? 1. 分布式数据如何收集?服务器宕机怎么办?数据会丢失吗? 1. 指标监控不是有 Zabbix 吗? 1. 实际工作中有哪些需要自定义 Metrics 的场景? 1. HTTP 级别的监控我们的 Grafana 里面配置了哪些? 1. 一定要有 Spring Boot Admin 吗?
严选JavaSpring Boot
849 订阅

从架构角度来看 Java 分布式日志如何收集(Sleuth/Zipkin)

在实际工作中会发现身边的同事或者一些公司,搭建和构建日志系统的时候走了很多的弯路,有用 Logback 的有用 Log4j 的,有自定义 Aappender 改变日志格式的,有异步推送到日志系统的,有用 ELK 的,有用国内开源 Cat 的。开源的 Cloud 框架有用 Sleuth 的,有用 Zipkin 的,而也有直接用 OpenTracking 的。可能五花八门什么样的都有,作者通过这篇文章,来看一下我们生产环境的日志是如何收集的。 通过此篇 Chat 我们可以了解到如下内容: 1. OpenTracing 是什么? 2. Spring Cloud Sleuth 我们如何使用? 3. Zipkin 扮演什么角色? 4. Spring Logging 为我们做了哪些工作? 5. ELK 应该怎么样来收集我们的日志? 6. 如何利用 Sentry 独立收集异常和警告日志? 7. 一个日志系统的正确架构思想是什么? 8. 我们的生产 Framework-Logging 做了哪些工作? 我们这篇 Chat 的中心是谈谈怎么从全局来看这件事,把实战经验给大家分享一下。由于篇幅有限可能不能谈里面的实现原理,主要是实际操作,完成整体认识。 实录内容提要: 1. 目前微服务盛行,这个业务可能夸多个系统,怎样设计日志系统,在出现问题时怎样,才能快速定位不同系统间的请求是同一笔请求,例如系统间日志能否有一个统一的 ID? 1. OpenTracing 与 Zipkin 如何做选择? 1. Server ZipkinUI 和 Jaeger 如何做选择? 1. Sleuth 依赖 Filter 并配置一定的 Percentage 这样性能会成线性下降,你如何看这样的问题?在生产环境下查问题的时候才打开吗? 1. JMS 日志跟踪是如何实现的? 1. DBtracing 如何实现的? 1. 有没有代码地址可以参考? 1. 集成的时候坑有哪些? 1. 日志系统架构的本质是什么? 1. 日志级别该如何划分? 1. 架构师最重要的素质是什么? 1. 阿里有对 Java 日志部分做约束吗?
Java架构
417 订阅

Java 进阶篇:理解 Class 和 Class 加载过程

如果 Java 程序员从初级晋级的架构师的过程中,其实对于 Class 的认识和其加载的过程也是逃不掉的话题(面试,复杂业务场景)。 Jack 打算和大家一起通过此篇 Chat 再来学一下 Class 是什么,及其加载的过程和在实际工作的关系是什么样的。通过此次 Chat 相信大家能学习到如下内容: 1. .class 是什么?我们应该关注的点有哪些? 2. .class 的加载过程是什么样的? 3. ClassLoader 起什么作用?双亲委派模型是什么?而实际工作涉及到的 ClassLoader 有哪些? 4. Class 本身的初始化顺序是什么样的?理解 static,final 的特殊之处。 5. 那么 Spring Bean 的加载过程是什么样的? 6. 在面试和工作中起到什么作用?尾部彩蛋送几道经典面试题 实录精彩问答: 1. 如何通过 Byte 二进制流来加载 Class? 1. 什么是 Java Bytecode(Java字节码)? 1. 元数据 Metaspace 和.class 的关系? 1. 利用字节码分析一下 Enum 的原理吗?Enum 和 Class 是什么关系
Java
357 订阅

Java 高级篇:JVM 垃圾回收机制

JVM 的内存模型和 JVM 的垃圾回收机制一直是 Java 业内从业者绕不开的话题(实际调优、面试),Jack 和大家再来一起学习一下 JVM 的垃圾回收机制。作为 Java 从业者如果不掌握这些知识点可能很难跳过高级走向架构师阶段。 本场 Chat,作者将会围绕 JVM 的内存模型,JVM 的垃圾回收,JVM 的参数设置和如何监控这四个话题展开。通过本场 Chat 相信大家会学会如下内容: 1. JVM 内存模型是什么样的,都存什么? 2. JVM 的垃圾回收机制是什么?都有哪些算法? 3. JVM 和垃圾回收对应的参数有哪些?如何去设置? 4. JVM 生产监控的指标有哪些? 5. 轻松应对 JVM 的面试和实际工作。 通过本场 Chat 希望能和大家一起提升和学习。 实录内容提要: 1. 递归和 for 循环分别影响的是哪块内存? 1. 垃圾回收的触发时机是什么? 1. 如何判断一个对象该不该回收? 1. 对象四种引用方式是什么,在什么场景用到? 1. -D -XX -X 有什么区别? 1. 问题默认开启的是哪个 GC ? 1. 我们一般需要关注的参数有哪些? 1. 实际生产环境你们设置了哪些参数? 1. 监控的工具有哪些? 1. Java 8 引入了元空间,元空间和永久代有什么不一样?元空间和永久代可以理解为方法区的不同实现吗? 1. 国外有哪些一手JVM资料的获取途径?尤其是在 JVM 规范、 HotSpot 实现方面? 1. 既然实际中很少去配 JVM 参数,为什么面试的时候还总问 JVM 优化的问题?如果缺乏 1. JVM 调优经验,面试中该如何应对? 1. 能否把对 JVM 的监控集成到系统里面?
严选Java
1761 订阅

Spring Data REST 与 Spring RestTemplate 实战详解

HTTP 协议的 REST 风格的服务越来越多,而 Spring 的这两个项目一个是 Server 端一个是 Client 端。而实际工作中也看到不少的同事 Server 和 Client 用的真是五花八门,什么样的都用。而 Spring 社区给我们提供了两个 Project,但是发现身边的同事详细了解和使用的还是比较少。 1. Spring Data REST:通过构建在 Spring Data Repositories 之上,自动将其导出为 REST 资源的 API,减少了大量重复代码和无聊的样板代码。 2. Spring RestTemplate:比 HttpClient 更优雅的 Restful URL 访问的客户端 API。 本场 Chat 作者给大家介绍一下 Spring Data REST 和Spring RestTemplate 如何正确的使用,带领大家快熟入门并且熟练掌握,通过本场 Chat 你会学会如下内容: 1. Spring Data REST & RestTemplate 是什么,解决什么问题? 2. Spring Data REST & RestTemplate 快速入门 。 3. 重点关注的其能力有哪些? 4. 实际工作中我们是怎么使用的? 5. 在 Spring Boot2.0 中的加载原理是什么?
Spring
256 订阅

Spring Expression Language 全面介绍

Spring Expression Language(简称 SpEL)是一个支持查询和操作运行时对象导航图功能的强大的表达式语言。它的语法类似于传统 EL,但提供额外的功能,最出色的就是函数调用和简单字符串的模板函数。 尽管有其他可选的 Java 表达式语言,如 OGNL、MVEL、JBoss EL 等等,但 SpEL 创建的初衷是给 Spring 社区提供一种简单而高效的表达式语言,一种可贯穿整个 Spring 产品组的语言。这种语言的特性基于 Spring 产品的需求而设计。 实际上,在我们的工作中已不知不觉离不开 SpEL 表达式语言,本 Chat 中作者将点睛提出容易被我们忽略但又很重要的表达式语言。 本场 Chat 分享的内容主要有以下几点: 1. SpEL 基本语法(Operators:List、Map、Relational、Logical、Bean)及表达式语言支持的功能。 2. SpEL 重要的几个类(ExpressionParser、Expression)及使用 Spring 的表达接口、表达式求值。 3. SpEL 的应用场景(Spring Boot Config、Spring MVC、Spring Data JPA、Spring Cache)及在我们的实际代码中哪里会用的实战经验。
严选Spring
183 订阅

Java 架构师眼中的 HTTP 协议

随着微服务的逐步深入化,HTTP 协议越来越受到重视,那么如果作为一个 Java 架构师 HTTP 协议应该知道到什么程度呢?作者将从几方面入手和大家一起掌握一下 HTTP 协议。 - HTTP 协议的基本内容( 发展历史, 协议重点内容, 开发者工具, http2.0的实际应用 )。 - 架构师需要重点关注的 HTTP 协议的内容在生产环境中的延伸(如 静态缓存、动态缓存, 鉴权, Cookie与Session的基本要点, Tomcat或者Spring Boot 2.0 的server配置重点等 ) - Spring 对 HTTP 协议做了哪些支持(如 1:在Spring MVC Web中的应用, 2:Spring Cloud中关注的重点, 3:Spring Data Jpa 对web的支持, 4:Spring Data Rest 对restful服务的使用, RestTemplate等 ) - JSON API 对 HTTP 协议的规定,及其开源项目(yahoo.elide 的支持) - 实际工作中,我们为 HTTP 协议做了哪些架构工作( 1:RestTemplate 的重试和监控 2:返回格式的约定及其实现方法 ) - 微服务中 HTTP 与 RPC 的权衡 - 面试中起到的关键作用是什么 实录制内容提要: 1. 能否举例说明 Spring Data Rest 的实际用途? 1. 请问你在实际项目中,做过文章里的哪些架构? 1. 面试时会问有关 http 协议的内容吗,一般会涉及哪些内容? 1. 请问你之前是怎么做 Etag 缓存的? 1. http2 有实际使用吗,它的优点是什么? 1. 在 Node.JS 使用 Swagger,修改接口的同时可以自动更新接口文档。请问 JAVA有什么好的解决方案? 1. Spring 生态中有没有类似的技术? 1. 请问 http 协议在微服务中起到了什么作用? 1. http 协议的安全,需要考虑哪方面内容? 1. 现在的证书去哪买比较合适? 1. Springcloud 和 dubbo 谁得天下? 1. 如何理解 http 请求过程中的长短连接? 1. 如何学习 http 协议? 1. 能否介绍一下 https 流量的解密,特别是在没有证书又做不了中间人代理的时候怎么办?
Java架构
1008 订阅

Intellij Idea 中 Spring JPA 相关插件使用技巧

工欲善其事必先利其器,这个 Chat 和大家分享一下 Intellij Idea 工具中使用 Spring Data JPA 相关的插件都有哪些技巧,以帮助我们提升开发效率。 分享的内容不限于如下内容: - Persistence(创建实体、JPA console、JPQL) - DataBase(Query console,Sql 控制台使用技巧,如何优化sql等。可以代替 N 多数据库客户端) 大量采用图解的方式,大家看过之后会发现工具能帮我们做的事情太多了。 当工具使用熟悉了才能显示出我们的专业能力。 实录内容提要: 1. 第一个插件就是 datagrip,如果 idea 是社区版是没有的。现在文章里写出来就说明使用的是企业版,请问你是自己买 license 还是破解的? 1. Spring boot 如何热部署? 1. Spring boot 如何远程 Debug? 1. 如何学习 Indellij Idea? 1. Spring Boot debug/run有哪些控制台? 1. 阅读框架源码有什么好方法? 1. SpringJPA 要设置统一表前缀,但我不想给 entity 类都写前缀, 请问除了给 entity 注解 table 写明表名和重写 naming 类之外, 还有什么办法吗? 1. Intellij 版本控制用什么插件? 1. Intellij 对 Docker 有哪些插件? 1. 能介绍一下 Gradle 的使用吗? 1. Java 开发规范,需要用到哪些插件?
Spring
278 订阅

如何理解并掌握 Java 数据结构

一说起“数据结构”可能很多同学都又交给老师了。但是实际工作中如果做得深入一些,特别是越往上发展,越大公司越离不开数据结构。本场 Chat 作者将带领大家重温《Java 数据结构》,讲解的内容有: 1. 哪些数据结构(线,链,堆,栈,队列)及其在 Java 里面哪里有用到。 2. 8 大算法(时间复杂度,空间复杂度,内存,CPU 的影响)及其应用的地方。 3. KMP 查找算法,二分查找,递归算法(写法,内存的影响)。 4. 数、图及其应用的地方。 5. hash 表,及其实际工作中哪里应用。 和 Jack 一起重温 Java 数据结构经典,10 年老程序员告诉你该怎么来理解和掌握数据结构。通往资深开发和 Java 架构师必须要掌握的知识点。 实录内容提要: 1. 关于面试的几个问题出题面试候选人,在数据结构和算法这块,请问会出哪些题,着重哪些点?如果要准备面试,虽然短期内刷 leetcode 可以积累一些思路,但过些时间就模糊了,怎么在平时工作中训练,长期内都能掌握?工作中平时比较多的是写基本的 CURD 业务,关于数据结构的算法用的比较少,但是面试中又比较爱面试,怎么找到这个平衡?笔试或面试中图这类数据结构的一般考点是什么?面试的话是更重视算法和数据结构基础,还是相关业务的项目经验或者框架使用经验和框架原理? 1. 关于冒泡排序和选择排序,我曾经搜索过网络上很多文章,发现大部分都是错的,自己做文章筛选的成本很高,还可能被误导。因此能不能请给出更多的参考链接? 1. 能否请结合一个例子讲解一下工作中用数据结构解决的问题? 1. 请问有更详细的讲解 Java 数据结构和算法的资料或者书籍推荐吗? 1. 有关二叉平衡树的意义,可以稍微详细讲一下吗? 1. 工作中哪些地方会用到数据结构? 1. 完全二叉树是否可以理解为 D-1 层最右子树没有右叶子的二叉树? 1. 关于树的知识记得有前序、中序、后序遍历算法。文中没有提及,可以讲一下吗?以及这些遍历在实际生产中如何使用? 1. 请问老师 B+ 树和 B- 树怎么理解?
Java
2249 订阅

Java 工程师如何得到一个好 Offer

决战面试,笔者从业 10 几年,经历过大大小小的面试也去过一些大公司,还经历过一些大的找工作浪潮,也看到过很多身边的同事找工作的经历,也有招聘的经历。有的实现了自我超越,而有的只能小步慢跑,而有的还可能很长一段时间找不到工作。 其实找工作有一些本质的东西,希望很多人可以把握住。 笔者将揭秘一些生活经验中很难知道东西,告诉大家一些套路和社会上容易忽略的东西。人一到社会上接触到最多就是各种套路,我将告诉大家能够决胜千里的七个重要套路。有了套路之后人就能少走很多弯路,笔者经历了不少弯路,希望大家能避免。 实录里面的内容: 1. 应届生,实习生该怎么办? 1. 面试时间一般是多久? 1. 面试过程中如何提高自己的工资? 1. 有真实的案例吗? 1. 都适合哪些段位的程序猿用? 1. 微服务架构方面都会有哪些面试题? 1. 对工作中的我们有哪些忠告? 1. 资深Java和架构师的主要的面试区别在哪里? 1. 一两年的一般面试什么题目? 1. 我们公司因为用户量太少没有引入分布式,而我自己对这些也没有过多的涉猎。所以在面试的时候,是提前准备一下然后去套路一番?还是实话实说自己没用过,然后把自己对分布式懂多少说多少? 1. 平时怎么积累学习比较好,感觉知识很零碎,系统不起来怎么办?
严选Java
284 订阅

Java 多线程与并发编程 · Java 工程师必知必会

从事 Java 的开发的小伙伴们会发现 Java 多线程和并发无论是工作或者是面试都绕不开的话题。作者打算高度抽象和概括一下线程是什么,已经如何应用。身边的有很多小伙伴们,看过我的《Java 并发编程从入门到精通》都感觉帮助比较大,面试完基本上都能达到高级和资深水平,最少工资能达到 20K+ /月,并且对实际工作帮助也比较大。所以作者打算再次分享一下: 1. JAVA-Thread 概念 2. 安全和锁 3. Concurrent 包(安全集合类、安全 Queue)线程阻塞机制 4. 线程池详解(原理,实际使用) 5. 线程的监控和分析方法 6. Servlet、Spring 和数据库连接池与线程的关系 **实录提要:** - 为什么阿里的 Java 开发手册提到“线程池不允许使用 Executors 创建”? - 为什么很多公司在实际工作中必须通过线程池创建 Thread,不允许手动创建? - 如何理解 volatile 关键字? - 线程池的工作原理是什么? - 前端 Javascript/html/CSS 的常考点有哪些? - 平时常用 Xshell 等工具查看后台报文,反倒没有关注 Linux 系统的相关知识,怎样做到以点到面地描述? - 该怎样提高对线程的了解及实战运用能力? - 如何通过阅读框架源码来提高自己写代码、写框架的能力?
严选Java
2253 订阅
微信扫描登录