
java
文章平均质量分 67
奔跑的窝窝牛
低头看着键盘,这些字母怎能拼凑偶的忧桑。
展开
-
python和java之间相互调用
python调用java方法。java执行python语句原创 2022-10-20 10:22:23 · 3445 阅读 · 0 评论 -
MAT堆栈分析工具安装使用
MAT堆栈分析工具安装使用原创 2022-06-09 14:20:31 · 2131 阅读 · 0 评论 -
java程序异常退出的OOM问题使用MAT分析排查过程
OOM程序异常退出问题分析原创 2022-06-09 14:03:00 · 2440 阅读 · 0 评论 -
jvm一般相关配置OutOfMemoryError关参数配置解释
JVM提供了有用的参数来处理 OutOfMemoryError 。在本文中,我们将重点介绍这些JVM参数。在排除OutOfMemoryError故障时,它可能会很方便。这些JVM参数是:1. -XX:HeapDumpOnOutOfMemoryError-XX:HeapDumpPath2. -XX:onAutofmemoryError3. -XX:+ExitOnOutOfMemoryError4. -XX:+CrashOnOutOfMemoryError让我们在本文中详细讨论这些JVM参数。堆转储dump文件原创 2022-06-06 17:47:07 · 3955 阅读 · 0 评论 -
为什么使用消息队列-消息队列有什么优点和缺点
为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景?为什么使用消息队列比较核心的有 3 个:解耦、异步、削峰。缺点有以下几个: 系统可用性降低 系统引入的外部依赖越多,越容易挂掉。本来你就是 A 系统调用 BCD 三个系统的接口就好了,ABCD 四个系统还好好的,没啥问题,你偏加个 MQ 进来,万一 MQ 挂了咋整?MQ 一挂,整套系统崩溃,你不就完了?如何保证消息队列的高可用,..原创 2021-05-10 10:43:30 · 208 阅读 · 0 评论 -
分布式定时任务调度框架
1. 目标把定时任务通过集群的方式进行管理调度,并采用分布式部署,保证系统的高可用,提高了容错。那么如何保证定时任务只在集群的某一个节点上执行,或者一个任务如何拆分为多个独立的任务项,由分布式的机器去分别执行, 众多的定时任务如何统一管理,现在有很多成熟的分布式定时任务框架,都能很好的实现上述的功能。2. 调度框架2.1 Quartz 介绍 Quartz集群中每个节点都是一个单独的Quartz应用,它又管理着其他的节点。这个集群需要每个节点单独的启动或停止;和我们的应用服务器集群不同,原创 2021-05-10 10:40:34 · 652 阅读 · 0 评论 -
分布式锁实现的三种方式
基于数据库实现分布式锁;基于缓存(Redis等)实现分布式锁;基于Zookeeper实现分布式锁;一 基于数据库的实现方式字段上创建唯一索引,获取锁,使用insert into, 释放锁delete操作问题:性能,不具备可重入性,无锁失效机制,不具备锁阻塞特性select for update 悲观锁二 基于redis的实现方式1、选用Redis实现分布式锁原因:(1)Redis有很高的性能;(2)Redis命令对此支持较...原创 2021-05-10 10:36:51 · 129 阅读 · 0 评论 -
分布式事务实现方式
2pc2PC(Two-phase commit protocol),中文叫二阶段提交。二阶段提交是一种强一致性设计,2PC 引入一个事务协调者的角色来协调管理各参与者(也可称之为各本地资源)的提交和回滚,二阶段分别指的是准备(投票)和提交两个阶段。准备阶段协调者会给各参与者发送准备命令提交阶段同步等待所有资源的响应之后就进入第二阶段即提交阶段(注意提交阶段不一定是提交事务,也可能是回滚事务。实现方案java jta xa协议规范实现2pcAtomikos的实现阿...原创 2021-05-10 10:35:38 · 156 阅读 · 0 评论 -
JVM调优参数
-Xms: 堆的初始值,例如 -Xmx2048,初始堆大小为 2G-Xmx: 堆的最大值,例如 -Xmx2048M,允许最大堆内存 2G-Xmn: 新生代大小-XX:SurvivorRatio:Eden 区所占比例,默认是 8,也就是 80%,例如 -XX:SurvivorRatio=8-Xss:栈空间大小,栈是线程独占的,所以是一个线程使用栈空间的大小,例如 -Xss256K,如果不设置此参数,默认值是 1M,一般来讲设置成 256K 就足够了。简单日志-verbose:gc 或者原创 2021-05-10 10:33:55 · 181 阅读 · 0 评论 -
elasticsearch 5.x版本安装插件
windows :所需资源 :下载Node.js,网址:https://nodejs.org/en/ 下载 elasticsearch-head https://github.com/mobz/elasticsearch-head安装nodejs包,随便安装那个盘安装gruntgrunt是一个很方便的构建工具,可以进行打包压缩、测试、原创 2020-09-30 10:42:34 · 179 阅读 · 0 评论 -
Java虚拟机堆栈异常溢出问题分析解决 OutOfMemoryError,StackOverflowError
Java堆溢出java堆用于存储对象实例,我们只要不断的创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清楚这些对象,就会在对象数量达到堆的容量限制后产生内存溢出的异常实例代码清单如下:package com.kerry;import java.util.ArrayList;import java.util.List;public原创 2020-09-30 10:42:13 · 716 阅读 · 0 评论 -
Kafka工作原理以及流程
Kafka Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据,具有高性能、持久化、多副本备份、横向扩展能力……… 一些基本的介绍这里就不展开了,网上有太多关于这些的介绍了,读者可以自行百度一下!基础架构及术语 话不多说,先看图,通过这张图我们来捋一捋相关的概念及之间的关系: 如果看到这张图你很懵逼,木有关系!我们先来分析相关概念 Producer:Producer即生产者,消息的产生者,是消息的入口。 kafka clust转载 2020-09-30 10:40:46 · 600 阅读 · 0 评论 -
java使用递归,非递归方式实现二叉树的三种常见遍历方式
二叉树的定义:二叉树(binary tree)是结点的有限集合,这个集合或者空,或者由一个根及两个互不相交的称为这个根的左子树或右子树构成. 从定义可以看出,二叉树包括:1.空树 2.只有一个根节点 3.只有左子树 4.只有右子树 5.左右子树都存在 有且仅有这5中表现形式 二叉树的特点:性质1:在二叉树的第i层上至多有2^(i-1原创 2017-03-07 10:48:46 · 12474 阅读 · 3 评论 -
Spring Boot的启动器各个Starter解释
spring Boot应用启动器基本的一共有44种,具体如下:1)spring-boot-starter 这是Spring Boot的核心启动器,包含了自动配置、日志和YAML。2)spring-boot-starter-actuator 帮助监控和管理应用。3)spring-boot-starter-amqp 通过spring-rabbit来支持AMQP协议(原创 2017-08-31 14:36:10 · 437 阅读 · 0 评论 -
springboot集成mybatis xml方式
关键代码如下:1,添加pom引用 org.mybatis.spring.boot mybatis-spring-boot-starter 1.1.1 mysql mysql-connector-java 2 application.propertiesmybatis.config-location原创 2017-07-31 10:54:51 · 24966 阅读 · 5 评论 -
springboot集成mongodb使用mongoTemplate和MongoRepository
springboot集成mongodb使用mongoTemplate和MongoRepository在pom文件引入spring-boot-starter-data-mongodb依赖: org.springframework.boot spring-boot-starter-data-mongodb 数据源的配置 如果mongodb端口是默认端口,并原创 2017-08-28 15:13:38 · 13790 阅读 · 0 评论 -
spring 在有事务的方法上配置自定义日志切面,事务会失效解决方法
问题描述,在servic事务方法中记录日志时候,在方法上加上自定义日志注解横切面,日志切面使用Around环绕通知记录日志事务配置都是正确配置,当去除@MethodLog日志注解时候,事务是可以正常回滚的如果加上日志注解@MethodLog事务会失效,不回滚。service类@Servicepublic class UserServiceImpl implements UserS原创 2017-08-25 14:41:03 · 5370 阅读 · 2 评论 -
jdk1.8 lambda表达式处理集合的一些用法
package com.kerry;import java.time.Clock;import java.time.Duration;import java.time.LocalDate;import java.time.LocalDateTime;import java.time.LocalTime;import java.time.Month;import java.util.原创 2017-08-04 14:05:12 · 1563 阅读 · 0 评论 -
springboot filter使用配置
一 ,springboot使用filter有两种方式一种是通过FilterRegistrationBean代码注册,一种是通过注解@WebFilter1,注解@WebFilter 需要在主程序Applicaiton上开启@ServletComponentScan 新建一个 Filter类,MyFilter继承Filter,类上加上@WebFilter注解package原创 2017-07-31 10:56:47 · 1239 阅读 · 0 评论 -
Java GC算法以及垃圾收集算法
概述垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了。jvm 中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理,因此,我们的内存垃圾回收主要集中于 java 堆和方法区中,在程序运行期间,这部分内存的分配和转载 2017-08-02 17:20:10 · 337 阅读 · 0 评论 -
spring配置集成redis的不同方式
1 redis.clients.jedis.JedisPool (引入jedis.jar) 2 org.springframework.data.redis.core.RedisTemplate(引入 spring-data-redis.jar)原创 2017-03-13 14:14:38 · 479 阅读 · 0 评论 -
Dubbo Main启动方式配置
服务容器是一个standalone的启动程序,因为后台服务不需要Tomcat或JBoss等Web容器的功能,如果硬要用Web容器去加载服务提供方,增加复杂性,也浪费资源。 服务容器只是一个简单的Main方法,并加载一个简单的Spring容器,用于暴露服务。 服务容器的加载内容可以扩展,内置了spring, jetty, log4j等加载,可通过Container扩展点进行扩展,参见:Con原创 2017-03-07 17:02:38 · 10307 阅读 · 0 评论 -
spring配置单Redis,Sentinel 哨兵模式,Redis Cluster集群,Redis Sharding集群
spring 集成 Redis的方式有哪些 1、单机版 不解释 配置如下: 2、Sentinel 哨兵模式 主从模式,一主多从模式原创 2017-03-13 16:45:12 · 3370 阅读 · 0 评论 -
spring集成Jedis Cluster配置
bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> property name="maxTotal" value="100" /> property name="maxIdle" value="20" /> property name="min原创 2017-03-13 16:30:32 · 2023 阅读 · 0 评论 -
java中synchronized和lock的区别
总的来说,lock更加灵活。主要相同点:Lock能完成synchronized所实现的所有功能不同: 1.ReentrantLock功能性方面更全面,比如时间锁等候,可中断锁等候,锁投票等,因此更有扩展性。在多个条件变量和高度竞争锁的地方,用ReentrantLock更合适,ReentrantLock还提供了Condition,对线程的等待和唤醒等操作更加灵活,一个ReentrantLock可以有原创 2017-03-14 09:50:25 · 1504 阅读 · 0 评论 -
JVM内存模型以及内存分配示例
JVM内存模型总体架构图通过另一种形式画出来更好理解JAVA堆线程共享的,存放所有对象实例和数组。原创 2017-03-30 16:28:09 · 1028 阅读 · 0 评论 -
java实现线程池
线程池: 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。 如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能。 一个原创 2017-04-01 16:03:13 · 351 阅读 · 0 评论 -
各种单例模式的写法
第一种(懒汉,线程不安全): public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == null) {原创 2017-04-06 11:10:28 · 235 阅读 · 0 评论 -
dubbo简单集成spring
使用maven构建 core-inteface(接口定义),core(服务提供实现),comsumer(服务消费)1 ,建立core- interface公共api2 建立服务提供者项目,core 实现interface中接口dubbo-provider.xml 配置 , 相关更详细参数配置说明 http://dubbo.io/User+Guide-zh.原创 2017-04-21 09:22:03 · 1827 阅读 · 0 评论 -
JAVA操作HBASE数据操作详解
Hbase对于建表,和RDBMS类似,HBase也有namespace的概念,可以指定表空间创建表,也可以直接创建表,进入default表空间。对于数据操作,HBase支持四类主要的数据操作,分别是:Put :增加一行,修改一行;Delete :删除一行,删除指定列族,删除指定column的多个版本,删除指定column的制定版本等;Get :获取指定行的所原创 2017-05-22 10:02:10 · 21617 阅读 · 8 评论 -
ActiveMQ的配置以及使用方法
ActiveMQ的简单使用ActiveMQ是一种开源的,实现了JMS规范的,面向消息(MOM)的中间件,为应用程序提供高效的、可扩展的、稳定的和安全的企业级消息通信ActiveMQ接发送消息流程图:Spring结合ActiveMQ使用1.pom文件引入依赖,引入jar包 org.apache.activemq原创 2017-03-29 13:46:37 · 10830 阅读 · 1 评论 -
springboot listener使用配置
一 ,springboot使用listener有两种方式一种是通过ServletListenerRegistrationBean代码注册,一种是通过注解@WebListener1 @WebListener方式新建listener类 选择实现的listener接口这里选择用ServletContextListener 代码如下package com.kerry.listen原创 2017-07-31 10:57:06 · 18205 阅读 · 2 评论 -
springboot servlet使用配置
在spring boot中添加自己的Servlet有两种方法,代码注册Servlet和注解自动注册(Filter和Listener也是如此)。 一、代码注册通过ServletRegistrationBean 获得控制。 也可以通过实现 ServletContextInitializer 接口直接注册。package com.kerry.servlet;import java.i原创 2017-07-31 10:56:20 · 17984 阅读 · 0 评论 -
SpingBoot项目打war包部署到其他tomcat中
springboot将项目打成war包部署到其他的tomcat中Spring Boot自己有tomcat,也提供了很多配置选项tomcat,比如端口号、访问地址等,但是很多时候可能一个tomcat下部署多个项目,需要将项目打成war包部署至自己的服务中,如下是具体步骤:一 修改pom文件去掉自带tomcat, org.springframework.boo原创 2017-07-31 10:55:56 · 381 阅读 · 0 评论 -
springboot 使用配置返回jsp
步骤如下:1 pom引入jstl支持 javax.servlet jstl 2 修改application.properties 添加内容#配置返回jsp start# 配置jsp文件的位置,默认位置为:src/main/webappspring.mvc.view.prefix:/WEB-INF/jsp/# 配置jsp文件的后缀spr原创 2017-07-31 10:55:32 · 17345 阅读 · 1 评论 -
springboot异常处理
一 ,传统的处理异常 那种标准的try.....catch try { ...} catch (Exception e) { doSomeThing();}像这种标准的 try-catch 是可以解决问题,但如果让你在每个接口实现里面都 try-catch 一下,我想你应该是不太愿意的,而且太麻烦。那么下面来介绍下 SpringBoot 为我们提供的处理方式。原创 2017-07-31 14:21:31 · 448 阅读 · 0 评论 -
Java多线程问题总结
Java多线程的问题,有些来源于各大网站、有些来源于自己的思考。可能有些问题网上有、可能有些问题对应的答案也有、也可能有些各位网友也都看过,但是本文写作的重心就是所有的问题都会按照自己的理解回答一遍,不会去看网上的答案,因此可能有些问题讲的不对,能指正的希望大家不吝指教。40个问题汇总1、多线程有什么用?一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,转载 2017-08-02 10:32:31 · 357 阅读 · 0 评论 -
java使用redis实现分布式锁
直接贴上代码/** * @param subKey set Key name * @param timeout get lock timeout,if not get, * @param unit time unit * @param sValue * @return */ public static boolean tryLock(String sub原创 2017-03-13 10:36:22 · 624 阅读 · 0 评论