![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 64
进击的Z同学
大数据开发工程师
展开
-
如何监控和诊断JVM堆内和堆外内存使用?
文章目录典型回答了解 JVM 内存的方法有很多,具体能力范围也有区别,简单总结如下:可以使用综合性的图形化工具,如 JConsole、VisualVM(注意,从 Oracle JDK 9 开始,VisualVM 已经不再包含在 JDK 安装包中)等。这些工具具体使用起来相对比较直观,直接连接到 Java 进程,然后就可以在图形化界面里掌握内存使用情况。以 JConsole 为例,其内存页面可以显示常见的堆内存和各种堆外部分使用状态。也可以使用命令行工具进行运行时查询,如 jstat 和 jm原创 2022-03-27 20:13:50 · 1180 阅读 · 0 评论 -
Java锁Monitor-通过openjdk源码分析ObjectMonitor底层实现
文章目录在我们分析synchronized关键字底层信息时,其中谈到了Monitor对象,它是由C++来实现的,那,到底它长啥样呢?我们在编写同步代码时完全木有看到该对象的存在,所以这次打算真正来瞅一下它的真正面目,而对于这个Hospot代码JDK是并没有开源的,但是社区版本的JDK是开源了,在openjdk上可以阅读得到,所以下面先到openjdk上瞅一下:所以点击一下它:点击一下:然后点击左侧的browser方便我们浏览代码:然后定位到这个路径:然后点击runtime/,其中转载 2022-03-27 19:47:48 · 570 阅读 · 0 评论 -
又是一年1024
又是一年1024了,去年毕业工作至今,收获还是蛮大的,后面继续加油!!!原创 2021-10-24 23:30:47 · 129 阅读 · 0 评论 -
什么是Spring的AOP特性?
文章目录Spring AOP 的登场什么是 Spring AOPSpring AOP 原理代理模式的两种常见实现方法:动态代理、静态代理Spring AOP 上手使用Spring AOP 的优势和缺点Spring AOP 总结Spring AOP 的登场在工作中经常会遇到维护老 WEB 项目的任务,老项目有很多问题,其中一个就是没有日志系统,出现问题,排查困难。当时我的任务就是给老项目增加日志。按理来说,增加日志不难,增加 Log4j 依赖,填好配置。在每个 Controller 类和 Server 类转载 2021-07-23 16:21:16 · 387 阅读 · 0 评论 -
Spring AOP详解【漫画版】
文章目录【漫画】AOP 面试造火箭事件始末原博github转载 2021-03-10 23:46:02 · 365 阅读 · 0 评论 -
Java异步编程指南
文章目录一. Future二. ListenableFuture三. CompletableFuture在我们平时开发中或多或少都会遇到需要调用接口来完成一个功能的需求,这个接口可以是内部系统也可以是外部的,然后等到接口返回数据了才能继续其他的业务流程,这就是传统的同步模式。同步模式虽然简单但缺点也很明显,如果对方服务处理缓慢迟迟未能返回数据,或网络问题导致响应变长,就会阻塞我们调用方的线程,导致我们主流程的耗时latency延长,传统的解决方式是增加接口的超时timeout设置,防止无限期等待。但即使转载 2021-02-25 00:04:51 · 572 阅读 · 0 评论 -
Java解析读取xml配置文件demo
xml:<?xml version="1.0" encoding="UTF-8"?><CONFIG> <VALUE> <!-- 正负样本比参数名称 --> <sampleMonitorField>is_click</sampleMonitorField> <!-- 正负样本比参数索引位置 --> <arrPosition>6</ar原创 2020-07-13 18:02:36 · 422 阅读 · 0 评论 -
Google Guava--ArrayListMultimap方法使用
文章目录1. Multimap常用方法1.1 create方法1.2 put方法1.3 size方法1.4 get方法1.5 keys方法和keySet方法2. Multimap之Demo2.1 Demo源码2.2 输出结果1. Multimap常用方法1.1 create方法// 用于创建一个一键多值的multimap集合 Multimap<String, Student> multimap = ArrayListMultimap.create(); 1.2 put方法// 往转载 2020-05-18 14:39:34 · 431 阅读 · 0 评论 -
微服务架构之网关
文章目录1. API网关1.1 什么是API网关1.2 为什么需要API网关1.3 统一API网关2. 统一网关的设计2.1 异步化请求2.1.1 全链路异步2.2 链式处理2.3 业务隔离2.3.1 信号量隔离2.3.2 线程池隔离2.3.3 集群隔离2.4 请求限流2.5 熔断降级2.6 泛化调用2.7 管理平台3. 总结4. Spring Cloud Zuul4.1 Zuul简介4.2 创建...原创 2020-05-08 16:27:35 · 889 阅读 · 0 评论 -
高并发系统保护-Hystrix熔断器
文章目录高并发系统保护雪崩效应常见场景降级预案降级策略分布式降级框架 Hystrix初探HystrixHystrix入门Hystrix简单示例Hystrix处理流程Hystrix容错资源隔离熔断回退降级高并发系统保护在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。当访问量剧增、服务出现问题(如响应时间慢或不响应)或非核心服务影响到核心流程的性能时,仍然需要保证服务还是可用的,即使...原创 2020-05-07 12:37:15 · 536 阅读 · 0 评论 -
微服务架构之服务发现
文章目录服务发现常见的服务发现框架Eureka实战与原理搭建Eureka注册中心集群Eureka 源码分析服务发现在传统的系统部署中,服务运行在一个固定的已知的 IP 和端口上,如果一个服务需要调用另外一个服务,可以通过地址直接调用。但是,在虚拟化或容器化的环境中,服务实例的启动和销毁是很频繁的,服务地址在动态的变化,如下图所示:在基于云的微服务应用中,服务实例的网络地址(IP Addre...原创 2020-05-06 18:07:01 · 1590 阅读 · 0 评论 -
从服务化到微服务-springcloud
文章目录从服务化到微服务RibbonRestTemplateFeign的目标从服务化到微服务微服务架构与传统单体架构的对比微服务的架构:微服务把每一个职责单一的功能放在一个独立的服务中 。每个服务运行在一个单独的进程中。每个服务有多个实例运行。运行在容器化的平台,可以平滑伸缩。每个服务有自己的数据存储。独立的数据,缓存,消息队列等。每个服务有独立的运营平台。每个服务高度自治,内部...原创 2020-05-03 21:03:48 · 1133 阅读 · 0 评论 -
高并发之线程池附图(网课整理)
文章目录1、线程池的主要处理流程2、ThreadPoolExecutor执行示意图3、任务的两级调度模型4、Executor框架类与接口5、Executor使用示意图6、FixedThreadPool的execute()运行示意图7、SingleThreadExecutor的运行示意图8、CachedThreadPool的execute()方法的执行示意图9、CachedThreadPool中任务...原创 2020-05-02 21:03:15 · 309 阅读 · 0 评论 -
高并发之线程池(网课整理)
文章目录线程池线程线程池原理ThreadPoolExecutor核心源码FutureTask源码线程池中的线程初始化线程池的关闭异常处理任务拒绝策略线程池大小任务缓存队列线程池总结Executor框架Executor框架简介Executor框架两级调度模型Executor框架结构和成员Spring中的线程安全性线程池线程概念进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程...原创 2020-05-02 20:53:38 · 378 阅读 · 0 评论 -
并发编程AQS(网课整理)(未完)
文章目录AQS1、AQS的产生背景2、AQS的设计和结构2.1 设计思想2.1.1 同步状态2.1.2 阻塞AQS1、AQS的产生背景通过JCP的JSR166规范,Jdk1.5开始引入了j.u.c包,这个包提供了一系列支持并发的组件。这些组件是一系列的同步器,这些同步器主要维护着以下几个功能:内部同步状态的管理(例如表示一个锁的状态是获取还是释放),同步状态的更新和检查操作,且至少有一个方法...原创 2020-04-29 23:10:19 · 235 阅读 · 0 评论 -
Java容器 & 不可变对象(网课整理)
让并发编程变得更简单说到并发编程,可能很多朋友都会觉得最苦恼的事情就是如何处理共享资源的互斥访问,可能稍不留神,就会导致代码上线后出现莫名其妙的问题,并且大部分并发问题都不是太容易进行定位和复现。所以即使是非常有经验的程序员,在进行并发编程时,也会非常的小心,内心如履薄冰。大多数情况下,对于资源互斥访问的场景,都是采用加锁的方式来实现对资源的串行访问,来保证 并发安全,如synchronize...原创 2020-04-29 00:38:07 · 402 阅读 · 0 评论 -
Java并发机制的底层实现(网课整理)
文章目录并发编程的挑战上下文切换多线程一定是快的吗?synchronized的实现原理及应用Monitor对象Monitor与SynchronizedJava对象头锁的升级变化1.偏向锁2.轻量级锁3.锁的优缺点对比volatile原理及应用volatile定义与实现原理线程不安全类StringBuilderSimpleDataFormatArrayListHashMap并发编程的挑战上下文切...原创 2020-04-17 11:22:58 · 383 阅读 · 0 评论 -
Java并发编程
文章目录线程之间的通信和同步Java内存模型JVM对Java内存模型的实现硬件内存架构共享对象的可见性线程竞争现象支撑Java内存模型的基础原理指令重排序数据依赖性as-if-serial内存屏障(Memory Barrier )happens-before线程安全性互斥同步synchronized关键字java.util.concurrent包中的重入锁(ReentrantLock)非阻塞同步比...原创 2020-04-11 13:47:12 · 226 阅读 · 0 评论 -
dubbo集群容错
为了避免单点故障,现在的应用通常至少会部署在两台服务器上。对于一些负载比较高的服务,会部署更多的服务器。这样, 在同一环境下的服务提供者数量会大于1。对于服务消费者来说,同一环境下出现了多个服务提供者。这时会出现一个问题, 服务消费者需要决定选择哪个服务提供者进行调用。另外服务调用失败时的处理措施也是需要考虑的,是重试呢,还是抛出异常,亦或是只打印异常等。为了处理这些问题,Dubbo 定义了集群接...原创 2020-04-03 00:08:30 · 353 阅读 · 0 评论 -
dubbo demo示例
文章目录服务提供者服务消费者内容出自dubbo中文文档http://dubbo.apache.org/zh-cn/docs/user/quick-start.html下载dubbo官方示例代码:git clone https://github.com/apache/dubbo.git这里我们看dubbo-demo下的dubbo-demo-xml子项目。首先在interface项目中定...原创 2020-03-30 00:07:55 · 560 阅读 · 0 评论 -
dubbo入门
文章目录dubbo简介dubbo架构用法本文主要内容出自dubbo中文文档:http://dubbo.apache.org/zh-cn/docs/user/quick-start.htmldubbo简介Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC(一种远程调用) 分布式服务框架(SOA),致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。Dubbo...转载 2020-03-28 10:39:49 · 206 阅读 · 0 评论 -
dubbo学习笔记
文章目录dubbo是什么Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。Dubbo使得调用远程服务就像调用本地java服务一样简单。dubbo节点说明Dubbo 的架构如下图所示:节点角色说明节点角色说明Provider暴露服务的服务提供方Consumer...原创 2020-03-27 23:46:59 · 282 阅读 · 0 评论 -
CPU占用过高问题排查
文章目录1. 查看系统状况2. 定位问题线程3. 查看问题线程堆栈4. jstack查看线程堆栈信息5. jstat查看进程内存状况6. jstack和jmap分析进程堆栈和内存状况1. 查看系统状况top命令查看CPU、内存等使用情况[root@izuf6bsiti3f4kuichki8nz ~]# toptop - 14:52:54 up 514 days, 7:00, 8 use...原创 2020-03-16 10:41:37 · 1145 阅读 · 0 评论 -
JVM常用监控命令
文章目录jps查看虚拟机进程jstat:虚拟机统计信息监控工具jmap生成dump文件jstack生成jvm当前时刻线程快照jinfo:Java配置信息工具jps查看虚拟机进程jps(JVM Process Status Tool),功能和ps类似:可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)的名称,以及这些进程的本地虚拟机的唯一ID(L...原创 2020-03-16 10:06:51 · 460 阅读 · 0 评论 -
双亲委派模型的破坏者-线程上下文类加载器
在Java应用中存在着很多服务提供者接口(Service Provider Interface,SPI),这些接口允许第三方为他们提供实现,如常见的SPI有JDBC、JNDI等,这些SPI的接口属于Java核心库,一般存在rt.jar包中,由bootstrap类加载器加载,而SPI的第三方实现代码则是作为Java应用所依赖的jar包被存放在classpath路径下,由于SPI接口中的代码经常需要加...原创 2020-03-13 17:46:48 · 520 阅读 · 0 评论 -
自定义类加载器
自定义类的的应用场景:1.加密:Java代码可以轻易的被反编译,如果你需要把自己的代码进行加密以防止反编译,可以先将编译后的代码用某种加密算法加密,类加载后就不能再用Java的ClassLoader去加载类了,这时就需要自定义ClassLoader在加载类的时候先解密类,然后再加载。2.从非标准的来源加载代码:如果你的字节码是放在数据库、甚至是在云端,就可以自定义类加载器,从指定的来源加载类...原创 2020-03-12 18:17:52 · 413 阅读 · 0 评论 -
Spring 的事务传播行为
事务传播指的是一个方法传播到另一个方法的事务传播。Spring解决的就是方法之间的事务传播。Spring中枚举定义了七种事务传播行为。//// Source code recreated from a .class file by IntelliJ IDEA// (powered by Fernflower decompiler)//package org.springframew...原创 2020-02-28 14:45:22 · 180 阅读 · 0 评论 -
SpringBoot图片上传并回显
文章目录1. Controller2. 创建MyWebMvcConfigurer配置资源映射路径3. 验证1. Controllerpackage com.lixiang.hitravel.controller;import io.swagger.annotations.Api;import lombok.extern.slf4j.Slf4j;import org.springfram...原创 2020-02-25 15:31:30 · 1322 阅读 · 0 评论 -
jdbc到mybatis详解
文章目录1. JDBC编程2. 什么是ORM3. 常见的持久化框架MyBatis使用示例MyBatis整体架构SqlSession执行流程源码分析1. Mapper的动态代理2. SqlSession中的对象3. 执行器Executor4. 数据库会话器StatementHandler5. 参数处理器ParameterHandler6. ResultSetHandler1. JDBC编程什么是...原创 2020-02-24 12:49:12 · 796 阅读 · 0 评论 -
AOP实现web日志处理
文章目录在项目pom.xml中添加依赖:<!-- aop 依赖 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></depende...原创 2020-02-19 12:12:05 · 310 阅读 · 0 评论 -
Maven Profile多环境打包
在日常开发中,通常不止一套环境,如开发环境、测试环境、预发环境、生成环境,而每个环境的配置项可能都不一样,这就需要用到多环境打包来解决这个问题。1.在项目的resouces目录中新建conf目录,再在其中按照环境创建相应目录,这里创建开发环境dev、测试环境test,再将原本的application.properties文件分别拷贝一份到两个目录中,根据环境修改其中的配置项,最后删除原本的配置...原创 2020-01-15 18:11:53 · 1115 阅读 · 0 评论 -
Java Web日常知识整理
dependencies与 dependencyManagementdependencyManagement Maven使用 dependencyManagement元素来提供了一种管理依赖版本号的方式。通常会在一个组织或者项目的最顶层的父POM中看到dependencyManagement元素;这样做的好处∶统一管理项目的版本号,确保应用的各个项目的依赖和版本一致,才能保证测试的和发布的...原创 2020-01-15 17:57:23 · 164 阅读 · 0 评论 -
代理模式
文章目录静态代理jdk动态代理cglib动态代理关系静态代理代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。代理模式一般涉及到的角色有:抽象角色:声明真实对象和代理对象的共同接口。代理角色:代理角色对象内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作...原创 2020-01-11 17:48:01 · 197 阅读 · 0 评论 -
rabbitmq入门示例 - 生产和消费消息(Java)
本文演示RabbitMQ Java中生产和消费消息的示例。首先在maven配置文件中加入相关依赖:<dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>4.2.1</...原创 2019-11-27 11:48:35 · 707 阅读 · 0 评论 -
Spring如何解决循环依赖问题(转)
文章目录过程演示源码讲解小结也可以简单说成是通过spring三级缓存解决的。过程演示关于Spring bean的创建,其本质上还是一个对象的创建,既然是对象,读者朋友一定要明白一点就是,一个完整的对象包含两部分:当前对象实例化和对象属性的实例化。在Spring中,对象的实例化是通过反射实现的,而对象的属性则是在对象实例化之后通过一定的方式设置的。这个过程可以按照如下方式进行理解:理解...转载 2019-11-26 21:11:00 · 195 阅读 · 0 评论 -
Spring IOC容器源码分析(转)
文章目录引言BeanFactory 简介启动过程分析创建 Bean 容器前的准备工作创建 Bean 容器,加载并注册 BeanBean 容器实例化完成后准备 Bean 容器: prepareBeanFactory初始化所有的 singleton beans附录id 和 name配置是否允许 Bean 覆盖、是否允许循环依赖profile工厂模式生成 BeanFactoryBean初始化 Bean ...转载 2019-11-26 20:12:41 · 245 阅读 · 0 评论 -
Spring的IoC容器之BeanFactory(未完)
文章目录本文内容出自《Spring揭秘》一书Spring的IoC容器是一个提供IoC支持的轻量级容器,除了基本的IoC支持,它作为轻量级容器还提供了IoC之外的支持。如在Spring的IoC容器之上,Spring还提供了相应的AOP(Aspect Oriented Programming,面向切面编程)框架支持、企业级服务集成等服务。Spring的IoC容器和IoC Service Pro...原创 2019-11-26 14:01:13 · 259 阅读 · 0 评论 -
IoC的基本概念
文章目录IoC理念:让别人为你服务注入方式构造方法注入setter方法注入接口注入三种注入方式的比较IoC的好处本文内容出自《Spring揭秘》一书Spring的IoC容器是整个Spring框架的核心和基础。IoC理念:让别人为你服务Ioc全称Inversion of Control(控制反转),它还有个别名叫依赖注入(Dependency Injection)。在使用IoC以前,如果...原创 2019-11-26 13:25:47 · 625 阅读 · 0 评论 -
Zuul + OAuth2.0 + JWT 实现单点登录
文章目录1. 应用权限概述1.1 自定义权限认证Filter1.2 OAuth2.0 + JWT2. Zuul + OAuth2.0 + JWT 实战2.1 zuul-server编写2.2 auth-server编写2.3 user服务编写2.4 测试本文内容出自《重新定义Spring Cloud实战》1. 应用权限概述权限,是整个微服务体系乃至软件业永恒的话题,有资源的地方,就有权限...原创 2019-11-07 20:14:45 · 4457 阅读 · 2 评论 -
Spring Cloud Config 概述及入门案例
文章目录1. 什么是Spring Cloud2. Spring Cloud Config概述3. Spring Cloud Config入门案例3.1 Config Server配置3.2 Config Client配置延伸Spring Cloud Config是Spring Cloud微服务体系中的中配置中心,是微服务中不可获取的一部分,其都能够很好的将程序中配置日益增多的各种功能的开关、参数...原创 2019-11-06 21:03:03 · 410 阅读 · 0 评论