博客园 - lovecindywang
uuid:6cbd1ba2-f883-4c34-aed1-30dde64a3a3e;id=701228
2020-04-02T01:47:03Z
lovecindywang
https://www.cnblogs.com/lovecindywang/
feed.cnblogs.com
https://www.cnblogs.com/lovecindywang/p/12448677.html
Java避坑宝典《Java业务开发常见错误100例》上线了 - lovecindywang
写这个专栏的缘起 之前我写过一篇博客:《朱晔的互联网架构实践心得S2E2:写业务代码最容易掉的10种坑》,引起的关注还是挺多的。后来和极客时间的编辑一拍即合决定以这个为题写一个专栏。其实所谓坑就是容易忽略但是不容易发现的问题,大部分生产事故都是发布、运维相关的配置引起,真正代码中的问题上线后产生问题
2020-03-09T09:11:00Z
2020-03-09T09:11:00Z
lovecindywang
https://www.cnblogs.com/lovecindywang/
【摘要】写这个专栏的缘起 之前我写过一篇博客:《朱晔的互联网架构实践心得S2E2:写业务代码最容易掉的10种坑》,引起的关注还是挺多的。后来和极客时间的编辑一拍即合决定以这个为题写一个专栏。其实所谓坑就是容易忽略但是不容易发现的问题,大部分生产事故都是发布、运维相关的配置引起,真正代码中的问题上线后产生问题 <a href="https://www.cnblogs.com/lovecindywang/p/12448677.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lovecindywang/p/11620544.html
朱晔和你聊Spring系列S1E11:小测Spring Cloud Kubernetes @ 阿里云K8S - lovecindywang
朱晔和你聊Spring系列S1E11:小测Spring Cloud Kubernetes @ 阿里云K8S 有关Spring Cloud Kubernates(以下简称SCK)详见https://github.com/spring cloud/spring cloud kubernetes,在本文中
2019-10-03T11:55:00Z
2019-10-03T11:55:00Z
lovecindywang
https://www.cnblogs.com/lovecindywang/
【摘要】朱晔和你聊Spring系列S1E11:小测Spring Cloud Kubernetes @ 阿里云K8S 有关Spring Cloud Kubernates(以下简称SCK)详见https://github.com/spring cloud/spring cloud kubernetes,在本文中 <a href="https://www.cnblogs.com/lovecindywang/p/11620544.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lovecindywang/p/11222213.html
和朱晔一起复习Java并发(五):并发容器和同步器 - lovecindywang
和朱晔一起复习Java并发(五):并发容器和同步器 本节我们先会来复习一下java.util.concurrent下面的一些并发容器,然后再会来简单看一下各种同步器。 ConcurrentHashMap和ConcurrentSkipListMap的性能 首先,我们来测试一下ConcurrentHas
2019-07-21T10:51:00Z
2019-07-21T10:51:00Z
lovecindywang
https://www.cnblogs.com/lovecindywang/
【摘要】和朱晔一起复习Java并发(五):并发容器和同步器 本节我们先会来复习一下java.util.concurrent下面的一些并发容器,然后再会来简单看一下各种同步器。 ConcurrentHashMap和ConcurrentSkipListMap的性能 首先,我们来测试一下ConcurrentHas <a href="https://www.cnblogs.com/lovecindywang/p/11222213.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lovecindywang/p/11220228.html
和朱晔一起复习Java并发(四):Atomic - lovecindywang
本节我们来研究下并发包中的Atomic类型。 AtomicXXX和XXXAdder以及XXXAccumulator性能测试 先来一把性能测试,对比一下AtomicLong(1.5出来的)、LongAdder(1.8出来的)和LongAccumulator(1.8出来的)用于简单累加的性能。 程序逻辑
2019-07-21T01:24:00Z
2019-07-21T01:24:00Z
lovecindywang
https://www.cnblogs.com/lovecindywang/
【摘要】本节我们来研究下并发包中的Atomic类型。 AtomicXXX和XXXAdder以及XXXAccumulator性能测试 先来一把性能测试,对比一下AtomicLong(1.5出来的)、LongAdder(1.8出来的)和LongAccumulator(1.8出来的)用于简单累加的性能。 程序逻辑 <a href="https://www.cnblogs.com/lovecindywang/p/11220228.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lovecindywang/p/11216570.html
和朱晔一起复习Java并发(三):锁(含锁性能测试) - lovecindywang
这个专题我发现怎么慢慢演化为性能测试了,遇到任何东西我就忍不住去测一把。本文我们会大概看一下各种锁数据结构的简单用法,顺便也会来比拼一下性能。 各种并发锁 首先,我们定一个抽象基类,用于各种锁测试的一些公共代码: 我们需要使用锁来保护counter和hashMap这2个资源 write字段表示这个线
2019-07-20T00:55:00Z
2019-07-20T00:55:00Z
lovecindywang
https://www.cnblogs.com/lovecindywang/
【摘要】这个专题我发现怎么慢慢演化为性能测试了,遇到任何东西我就忍不住去测一把。本文我们会大概看一下各种锁数据结构的简单用法,顺便也会来比拼一下性能。 各种并发锁 首先,我们定一个抽象基类,用于各种锁测试的一些公共代码: 我们需要使用锁来保护counter和hashMap这2个资源 write字段表示这个线 <a href="https://www.cnblogs.com/lovecindywang/p/11216570.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lovecindywang/p/11203577.html
和朱晔一起复习Java并发(二):队列 - lovecindywang
和朱晔一起复习Java并发(二):队列 老样子,我们还是从一些例子开始慢慢熟悉各种并发队列。以看小说看故事的心态来学习不会显得那么枯燥而且更容易记忆深刻。 阻塞队列的等待? 阻塞队列最适合做的事情就是做为生产消费者的中间存储,以抵抗生产者消费者速率不匹配的问题,不但是在速率不匹配的时候能够有地方暂存
2019-07-17T12:48:00Z
2019-07-17T12:48:00Z
lovecindywang
https://www.cnblogs.com/lovecindywang/
【摘要】和朱晔一起复习Java并发(二):队列 老样子,我们还是从一些例子开始慢慢熟悉各种并发队列。以看小说看故事的心态来学习不会显得那么枯燥而且更容易记忆深刻。 阻塞队列的等待? 阻塞队列最适合做的事情就是做为生产消费者的中间存储,以抵抗生产者消费者速率不匹配的问题,不但是在速率不匹配的时候能够有地方暂存 <a href="https://www.cnblogs.com/lovecindywang/p/11203577.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lovecindywang/p/11182090.html
和朱晔一起复习Java并发(一):线程池 - lovecindywang
和我之前的Spring系列文章一样,我们会以做一些Demo做实验的方式来复习一些知识点。 本文我们先从Java并发中最最常用的线程池开始。 从一个线程池实验开始 首先我们写一个方法来每秒一次定时输出线程池的基本信息: 然后,我们写一个方法来定时提交任务到线程池: 可以看到: 一共提交20个任务 每秒
2019-07-13T13:10:00Z
2019-07-13T13:10:00Z
lovecindywang
https://www.cnblogs.com/lovecindywang/
【摘要】和我之前的Spring系列文章一样,我们会以做一些Demo做实验的方式来复习一些知识点。 本文我们先从Java并发中最最常用的线程池开始。 从一个线程池实验开始 首先我们写一个方法来每秒一次定时输出线程池的基本信息: 然后,我们写一个方法来定时提交任务到线程池: 可以看到: 一共提交20个任务 每秒 <a href="https://www.cnblogs.com/lovecindywang/p/11182090.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lovecindywang/p/11115802.html
基于Netty的四层和七层代理性能方面的一些压力测试 - lovecindywang
本文我们主要是想测试和研究几点: 基于Netty写的最简单的转发HTTP请求的程序,四层和七层性能的差异 三种代理线程模型性能的差异,下文会详细解释三种线程模型 池和非池化ByteBuffer性能的差异 本文测试使用的代码在: https://github.com/JosephZhu1983/pro
2019-07-01T10:10:00Z
2019-07-01T10:10:00Z
lovecindywang
https://www.cnblogs.com/lovecindywang/
【摘要】本文我们主要是想测试和研究几点: 基于Netty写的最简单的转发HTTP请求的程序,四层和七层性能的差异 三种代理线程模型性能的差异,下文会详细解释三种线程模型 池和非池化ByteBuffer性能的差异 本文测试使用的代码在: https://github.com/JosephZhu1983/pro <a href="https://www.cnblogs.com/lovecindywang/p/11115802.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lovecindywang/p/10941007.html
朱晔的互联网架构实践心得S2E7:漫谈平台架构的工作(基础架构、基础服务、基础平台、基础中间件等等) - lovecindywang
前言 程序开发毕竟还不是搬砖这种无脑体力劳动,需要事先有标准,有架构,有设计,绝对不是新公司今天创立,明天就可以开始编码的。其实很多公司在起步的时候没有财力和资源建设独立的基础架构或平台架构部门,甚至运维团队都没有,但是这不妨碍我们心中有一个蓝图知道努力的方向,本文我们就简单聊聊平台架构相关的工作内
2019-05-28T15:07:00Z
2019-05-28T15:07:00Z
lovecindywang
https://www.cnblogs.com/lovecindywang/
【摘要】前言 程序开发毕竟还不是搬砖这种无脑体力劳动,需要事先有标准,有架构,有设计,绝对不是新公司今天创立,明天就可以开始编码的。其实很多公司在起步的时候没有财力和资源建设独立的基础架构或平台架构部门,甚至运维团队都没有,但是这不妨碍我们心中有一个蓝图知道努力的方向,本文我们就简单聊聊平台架构相关的工作内 <a href="https://www.cnblogs.com/lovecindywang/p/10941007.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lovecindywang/p/10846471.html
朱晔的互联网架构实践心得S2E6:浅谈高并发架构设计的16招 - lovecindywang
朱晔的互联网架构实践心得S2E6:浅谈高并发架构设计的16招 概览 标题中的高并发架构设计是指设计一套比较合适的架构来应对请求、并发量很大的系统,使系统的稳定性、响应时间符合预期并且能在极端的情况下自动调整为相对合理的服务水平。一般而言我们很难用通用的架构设计的手段来解决所有问题,在处理高并发架构的
2019-05-10T12:01:00Z
2019-05-10T12:01:00Z
lovecindywang
https://www.cnblogs.com/lovecindywang/
【摘要】朱晔的互联网架构实践心得S2E6:浅谈高并发架构设计的16招 概览 标题中的高并发架构设计是指设计一套比较合适的架构来应对请求、并发量很大的系统,使系统的稳定性、响应时间符合预期并且能在极端的情况下自动调整为相对合理的服务水平。一般而言我们很难用通用的架构设计的手段来解决所有问题,在处理高并发架构的 <a href="https://www.cnblogs.com/lovecindywang/p/10846471.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lovecindywang/p/10800593.html
记一次OOM问题排查过程 - lovecindywang
上周运维反馈线上程序出现了OOM,程序日志中的输出为 看线程名称应该是tomcat的nio工作线程,线程在处理程序的时候因为无法在堆中分配更多内存出现了OOM,幸好JVM启动参数配置了 XX:+HeapDumpOnOutOfMemoryError,使用MAT打开拿到的hprof文件进行分析。 第一步
2019-05-01T12:05:00Z
2019-05-01T12:05:00Z
lovecindywang
https://www.cnblogs.com/lovecindywang/
【摘要】上周运维反馈线上程序出现了OOM,程序日志中的输出为 看线程名称应该是tomcat的nio工作线程,线程在处理程序的时候因为无法在堆中分配更多内存出现了OOM,幸好JVM启动参数配置了 XX:+HeapDumpOnOutOfMemoryError,使用MAT打开拿到的hprof文件进行分析。 第一步 <a href="https://www.cnblogs.com/lovecindywang/p/10800593.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lovecindywang/p/10383756.html
朱晔的互联网架构实践心得S2E5:浅谈四种API设计风格(RPC、REST、GraphQL、服务端驱动) - lovecindywang
Web API设计其实是一个挺重要的设计话题,许多公司都会有公司层面的Web API设计规范,几乎所有的项目在详细设计阶段都会进行API设计,项目开发后都会有一份API文档供测试和联调。本文尝试根据自己的理解总结一下目前常见的四种API设计风格以及设计考虑点。 RPC 这是最常见的方式,RPC说的是
2019-02-15T07:05:00Z
2019-02-15T07:05:00Z
lovecindywang
https://www.cnblogs.com/lovecindywang/
【摘要】Web API设计其实是一个挺重要的设计话题,许多公司都会有公司层面的Web API设计规范,几乎所有的项目在详细设计阶段都会进行API设计,项目开发后都会有一份API文档供测试和联调。本文尝试根据自己的理解总结一下目前常见的四种API设计风格以及设计考虑点。 RPC 这是最常见的方式,RPC说的是 <a href="https://www.cnblogs.com/lovecindywang/p/10383756.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lovecindywang/p/10358064.html
朱晔的互联网架构实践心得S2E4:小议微服务的各种玩法(古典、SOA、传统、K8S、ServiceMesh) - lovecindywang
十几年前就有一些公司开始践行服务拆分以及SOA,六年前有了微服务的概念,于是大家开始思考SOA和微服务的关系和区别。最近三年Spring Cloud的大火把微服务的实践推到了高潮,而近两年K8S在容器编排的地位确定之后大家又开始实践起以K8S为核心的云原生思想和微服务的结合如何去落地,2018年又多
2019-02-09T13:27:00Z
2019-02-09T13:27:00Z
lovecindywang
https://www.cnblogs.com/lovecindywang/
【摘要】十几年前就有一些公司开始践行服务拆分以及SOA,六年前有了微服务的概念,于是大家开始思考SOA和微服务的关系和区别。最近三年Spring Cloud的大火把微服务的实践推到了高潮,而近两年K8S在容器编排的地位确定之后大家又开始实践起以K8S为核心的云原生思想和微服务的结合如何去落地,2018年又多 <a href="https://www.cnblogs.com/lovecindywang/p/10358064.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lovecindywang/p/10316898.html
朱晔的互联网架构实践心得S2E3:品味Kubernetes的设计理念 - lovecindywang
Kubernetes(k8s)是一款开源的优秀的容器编排调度系统,其本身也是一款分布式应用程序。虽然本系列文章讨论的是互联网架构,但是k8s的一些设计理念非常值得深思和借鉴,本人并非运维专家,本文尝试从自己看到的一些k8s的架构理念结合自己的理解来分析 k8s在稳定性、简单、可扩展性三个方面做的一些
2019-01-24T13:21:00Z
2019-01-24T13:21:00Z
lovecindywang
https://www.cnblogs.com/lovecindywang/
【摘要】Kubernetes(k8s)是一款开源的优秀的容器编排调度系统,其本身也是一款分布式应用程序。虽然本系列文章讨论的是互联网架构,但是k8s的一些设计理念非常值得深思和借鉴,本人并非运维专家,本文尝试从自己看到的一些k8s的架构理念结合自己的理解来分析 k8s在稳定性、简单、可扩展性三个方面做的一些 <a href="https://www.cnblogs.com/lovecindywang/p/10316898.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lovecindywang/p/10259768.html
朱晔的互联网架构实践心得S2E2:写业务代码最容易掉的10种坑 - lovecindywang
我承认,本文的标题有一点标题党,特别是写业务代码,大家因为没有足够重视一些细节最容易调的坑(侧重Java,当然,本文说的这些点很多是不限制于语言的)。 1、客户端的使用 我们在使用Redis、ElasticSearch、RabbitMQ、Mongodb等中间件或存储的时候肯定都会使用客户端包来和这些
2019-01-12T07:02:00Z
2019-01-12T07:02:00Z
lovecindywang
https://www.cnblogs.com/lovecindywang/
【摘要】我承认,本文的标题有一点标题党,特别是写业务代码,大家因为没有足够重视一些细节最容易调的坑(侧重Java,当然,本文说的这些点很多是不限制于语言的)。 1、客户端的使用 我们在使用Redis、ElasticSearch、RabbitMQ、Mongodb等中间件或存储的时候肯定都会使用客户端包来和这些 <a href="https://www.cnblogs.com/lovecindywang/p/10259768.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lovecindywang/p/10224881.html
朱晔的互联网架构实践心得S2E1:业务代码究竟难不难写? - lovecindywang
注意,这是我的架构实践心得的第二季的系列文章,第一季有10篇你也可以回顾。 见https://www.cnblogs.com/lovecindywang/category/1296779.html 最近我一直在思考几个问题: 业务代码究竟难不难写? 一直开发业务代码是不是完全学不到东西? 5年+开发
2019-01-05T08:02:00Z
2019-01-05T08:02:00Z
lovecindywang
https://www.cnblogs.com/lovecindywang/
【摘要】注意,这是我的架构实践心得的第二季的系列文章,第一季有10篇你也可以回顾。 见https://www.cnblogs.com/lovecindywang/category/1296779.html 最近我一直在思考几个问题: 业务代码究竟难不难写? 一直开发业务代码是不是完全学不到东西? 5年+开发 <a href="https://www.cnblogs.com/lovecindywang/p/10224881.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lovecindywang/p/9897916.html
朱晔和你聊Spring系列S1E10:强大且复杂的Spring Security(含OAuth2三角色+三模式完整例子) - lovecindywang
Spring Security功能多,组件抽象程度高,配置方式多样,导致了Spring Security强大且复杂的特性。Spring Security的学习成本几乎是Spring家族中最高的,Spring Security的精良设计值得我们学习,但是结合实际复杂的业务场景,我们不但需要理解Spri
2018-11-02T10:58:00Z
2018-11-02T10:58:00Z
lovecindywang
https://www.cnblogs.com/lovecindywang/
【摘要】Spring Security功能多,组件抽象程度高,配置方式多样,导致了Spring Security强大且复杂的特性。Spring Security的学习成本几乎是Spring家族中最高的,Spring Security的精良设计值得我们学习,但是结合实际复杂的业务场景,我们不但需要理解Spri <a href="https://www.cnblogs.com/lovecindywang/p/9897916.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lovecindywang/p/9846846.html
朱晔和你聊Spring系列S1E9:聊聊Spring的那些注解 - lovecindywang
本文我们来梳理一下Spring的那些注解,如下图所示,大概从几方面列出了Spring的一些注解: 如果此图看不清楚也没事,请运行下面的代码输出所有的结果。 Spring目前的趋势是使用注解结合Java代码而不是配置来定义行为、属性、功能、规则和扩展点,因此梳理注解也是梳理Spring功能点的很好的方
2018-10-24T15:03:00Z
2018-10-24T15:03:00Z
lovecindywang
https://www.cnblogs.com/lovecindywang/
【摘要】本文我们来梳理一下Spring的那些注解,如下图所示,大概从几方面列出了Spring的一些注解: 如果此图看不清楚也没事,请运行下面的代码输出所有的结果。 Spring目前的趋势是使用注解结合Java代码而不是配置来定义行为、属性、功能、规则和扩展点,因此梳理注解也是梳理Spring功能点的很好的方 <a href="https://www.cnblogs.com/lovecindywang/p/9846846.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lovecindywang/p/9777349.html
朱晔和你聊Spring系列S1E8:凑活着用的Spring Cloud(含一个实际业务贯穿所有组件的完整例子) - lovecindywang
本文会以一个简单而完整的业务来阐述Spring Cloud Finchley.RELEASE版本常用组件的使用。如下图所示,本文会覆盖的组件有: 1. Spring Cloud Netflix Zuul网关服务器 2. Spring Cloud Netflix Eureka发现服务器 3. Spri
2018-10-12T03:51:00Z
2018-10-12T03:51:00Z
lovecindywang
https://www.cnblogs.com/lovecindywang/
【摘要】本文会以一个简单而完整的业务来阐述Spring Cloud Finchley.RELEASE版本常用组件的使用。如下图所示,本文会覆盖的组件有: 1. Spring Cloud Netflix Zuul网关服务器 2. Spring Cloud Netflix Eureka发现服务器 3. Spri <a href="https://www.cnblogs.com/lovecindywang/p/9777349.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/lovecindywang/p/9757631.html
朱晔和你聊Spring系列S1E7:简单好用的Spring Boot Actuator - lovecindywang
"阅读PDF版本" 本文会来看一下Spring Boot Actuator提供给我们的监控端点Endpoint、健康检查Health和打点指标Metrics等所谓的Production ready(生产环境必要的一些)功能。 监控端点 我们先来新建一个模块: 引入了必要的actuator和web启动
2018-10-08T14:17:00Z
2018-10-08T14:17:00Z
lovecindywang
https://www.cnblogs.com/lovecindywang/
【摘要】"阅读PDF版本" 本文会来看一下Spring Boot Actuator提供给我们的监控端点Endpoint、健康检查Health和打点指标Metrics等所谓的Production ready(生产环境必要的一些)功能。 监控端点 我们先来新建一个模块: 引入了必要的actuator和web启动 <a href="https://www.cnblogs.com/lovecindywang/p/9757631.html" target="_blank">阅读全文</a>