java

深入理解spring事务

2021-03-01
事务介绍 一个事务要么同时成功,要么同时失败 特性 Atomic原子性 事务是由一个或多个活动组成的一个工作单元.原子性确保事务中的所有操作全部发生或全部不发生 Consistent一致性 一旦事务完成,系统必须确保它所建模的业务处于一致的状态 Isolated隔离性 事务允许多个用户对数据进行操作,每个用户的操作不会与其他用户纠缠在一起 Durable持久性 一旦事务完成,事务的结果应该持久化 事务隔离级别 DEFAULT 使用底层数据库预设的隔离层级 READ_UNCOMMITTED (读未

java应用占用内存过高排查的解决方案

2021-03-01
故障:收到服务器报警,内存使用率超过80% 1.查看 使用dstat和top查看内存使用最高的应用 使用dstat 查到内存占用最高的是java应用,使用2253M内存,但是这台服务器跑了好几个java,具体哪个进程使用top看下资源情况 使用top 可以看到java应用整体内存使用率超过了70%,其中pid为16494的进程 一个应用占了28.7的内存 2.定位线程问题 使用ps查看16494的线程情况 命令:ps p 16494 -L -o pcpu,pmem,pid,tid,time,tn

Java Lombok简介、使用、工作原理、优缺点

2021-03-01
简介 官方介绍 Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java. Never write another getter or equals method again, with one annotation your class has a fully featured builder, automate your lo

java使用HashMap实现斗地主(有序版)

2021-03-01
本文实例为大家分享了java使用HashMap实现斗地主的具体代码,供大家参考,具体内容如下 案例介绍 按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌. 案例分析 1.准备牌: 每张扑克牌牌由花色和数字两部分组成.可以使用花色集合与数字集合嵌套迭代完成扑克牌的组装. 2.发牌 扑克牌组转完毕后由Collections类的shuffle方法打乱重排,最后3张当作底牌,剩余牌通过对3取模依次发牌. 3.看牌 打

Spring Boot 项目启动失败的解决方案

2021-02-28
Spring Boot 项目是不是经常失败,显示一大堆的错误信息,如端口重复绑定时会打印以下异常: *************************** APPLICATION FAILED TO START *************************** Description: Embedded servlet container failed to start. Port 8080 was already in use. Action: Identify and stop the

java jvm两种存储区的类型知识点讲解

2021-02-28
我们知道在jvm中存放了不少数据,那么存放数据的地方叫做存储区.想必大家还不知道存储区是分为两种类型的,常量缓冲池和方法区.相信很多人还没有接触到这个概念,本篇对java中jvm的存储区进行的内容的整理,下面一起来看看这两种存储取的概念和区别吧. 1.分类 JVM有两种类型的存储区:常量缓冲池和方法区.常量缓冲池用于存储类名.方法名和字段名以及字符串常量.方法区用于存储Java方法的字节码.JVM规范中没有规定这两个存储区域的具体实现.因此,Java应用程序的存储布局必须在运行过程中确定,这取决

深入理解Java线程池从设计思想到源码解读

2021-02-28
线程池:从设计思想到源码解析 前言初识线程池线程池优势线程池设计思路 深入线程池构造方法任务队列拒绝策略线程池状态初始化&容量调整&关闭 使用线程池ThreadPoolExecutorExecutors封装线程池 解读线程池execute()addWorker()Worker类runWorker()processWorkerExit() 前言 各位小伙伴儿,春节已经结束了,在此献上一篇肝了一个春节假期的迟来的拜年之作,希望读者朋友们都能有收获. 根据穆氏哲学,投入越多,收获越大.我作此文时

springboot2.X整合prometheus监控的实例讲解

2021-02-28
springboot2.x暴露健康状况通过prometheus监控 加入依赖 <!--prometheus监控 https://prometheus.io/docs/introduction/overview/--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId>

java使用ArrayList实现斗地主(无序版)

2021-02-28
本文实例为大家分享了java使用ArrayList实现斗地主的具体代码,供大家参考,具体内容如下 案例介绍 按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌. 案例分析 1. 准备牌 每张扑克牌牌由花色和数字两部分组成.可以使用花色集合与数字集合嵌套迭代完成扑克牌的组装. 2. 发牌 扑克牌组转完毕后由Collections类的shuffle方法打乱重排,最后3张当作底牌,剩余牌通过对3取模依次发牌. 3.

详解Maven JAR包冲突问题排查及解决方案

2021-02-28
前言 写这篇文章的初衷是因为今天在使用mvn dependency:tree命令时,突然想起一年前面试阿里的一道面试题.面试题是说假设线上发生JAR包冲突,应该怎么排查?我那时候的回答是IDEA有个Maven Helper的插件,可以帮忙分析依赖冲突,然后还有一种办法是如果一个类import的时候提示两个地方可导入,那就说明有冲突.现在回头想想确实太不专业了,以下是一次JAR包冲突的一个比较正规的流程,是通过整理几篇博客后总结的希望对大家也有帮助,如果有错误的地方也欢迎指出 GitHub地址:h

kotlin java 混合代码 maven 打包实现

2021-02-28
Kotlin简介 Kotlin是一种针对Java 平台的新编程语言.Kotlin简洁.安全.务实,并且专注于与Java代码的互操作性.它几乎可以用在现在Java使用的任何地方:服务端开发.Android应用等等.Kotlin 可以很好地和所有现存的Java库和框架一起工作,而且性能和Java旗鼓相当. Kotlin 特点 Kotlin 是静态类型语言并支持类型推导,允许维护正确性与性能的同时保持源代码的简洁. Kotlin 支持面向对象和函数式两种编程风格,通过头等函数使更高级别的的抽象成为可能

使用Jacoco获取 Java 程序的代码执行覆盖率的步骤详解

2021-02-28
Jacoco是Java Code Coverage的缩写,顾名思义,它是获取Java代码执行覆盖率的一个工具,通常用它来获取单元测试覆盖率.它通过分析Java字节码来得到代码执行覆盖率,因此它还可以分析任何基于JVM的语言(如Croovy.Kotlin)的覆盖率.本文不讨论如何用Jacoco获取单元测试的代码覆盖率,而是从Jacoco的原理出发,介绍如何通过Jacoco获取SIT或者UAT的测试覆盖率.更准确来讲,是获取一个应用执行过的代码占总代码的比率.包括字节码指令覆盖率,分支覆盖率,圈复杂

SpringMVC 如何使用注解完成登录拦截

2021-02-28
为了实现用户登录拦截你是否写过如下代码呢? 1. 基于Filter import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.s

IDEA 创建一个Mybatis Maven项目的方法步骤(图文)

2021-02-28
第一步:先新建一个工程 直接next就行了,不用选内容,不然他会下载骨架会卡很久 第一个箭头是项目名称,第二个箭头是项目路径,根据自己需要修改就行了.新建好的项目是这样的. 第二步:我们需要添加一个web框架支持 右键你的项目然后选择Add Framework那一项. 选中Web Application点击ok. 这样项目结构就有了,重点是啥都不用调了很方便. 第三步:去配置Tomcat 选择Tomcat Server下面的Local 这里选择你的Tomcat在哪里 按照箭头步骤来从上到下把工程

java Array和Arrays的区别总结

2021-02-28
我们在对数组操作时,经常会用到Arrays的方法,同时会结合一些函数函数对数组进行操作.同时我们还学习了数组类Array,这两种类的名称上只有很小的差别,但在用法上区别比较大.本篇把它们分成了两大部分,对应讲解其中的用法,大家可以就它们的使用进行区分. 1.数组类Array属于java.lang Java中最基本的一个存储结构. 提供了动态创建和访问Java数组的方法.其中的元素的类型必须相同. 效率高,但容量固定且无法动态改变. 它无法判断其中实际存有多少元素,length只是告诉我们arra

Java语言实现简单的酒店前台管理小功能(实例代码)

2021-02-28
笔者是一名刚上路的小萌新,有什么问题希望大家可以指正! 以下为题目: 为某个酒店编写程序:酒店管理系统,模拟订房.退房.打印所有房间状态等功能. 1.该系统的用户是:酒店前台. 2.酒店使用一个二维数组来模拟."Room[][] rooms;" 3.酒店中的每一个房间应该是一个java对象:Room 4.每一个房间Room应该有:房间编号.房间类型.房间是否空闲. 5.系统应该对外提供的功能: 可以预定房间:用户输入房间编号,订房. 可以退房:用户输入房间编号,退房. 可以查看所有房间

关于Springboot | @RequestBody 接收到的参数对象属性为空的问题

2021-02-28
背景 今天在调试项目的时候遇到一个坑,用Postman发送一个post请求,在Springboot项目使用@RequestBody接收时参数总是报不存在,但是多次检查postman上的请求格式以及项目代码都没有问题 Postman: 请求参数: { "firstName":"fdsaf", "lastName":"dfasdf" } Controller: Entity 通过debug模式可以发现传进到实体的参数都为null

spring依赖注入深入理解

2021-02-28
IOC&&DI IOC(Inversion of Control)一般分为两种类型:依赖注入DI(Dependency Injection)和依赖查找(Dependency Lookup) org.springframework.beans.factory.BeanFactory是IOC容器的具体实现,是Spring IOC容器的核心接口 Spring IOC负责创建对象,管理对象,装配对象,配置对象,并且管理这些对象的整个生命周期. 优点:把应用的代码量降到最低.最小代价和最小侵入式是松

java中应用Stack进行算术运算的操作

2021-02-28
java.util.stack,继承自Vector FILO, 适合带有小括号的算术运算 import java.util.Stack; /** * 利用栈,进行四则运算的类 * 用两个栈来实现算符优先,一个栈用来保存需要计算的数据numStack,一个用来保存计算优先符priStack * * 基本算法实现思路为:用当前取得的运算符与priStack栈顶运算符比较优先级:若高于,则因为会先运算,放入栈顶: * 若等于,因为出现在后面,所以会后计算,所以栈顶元素出栈,取出操作数运算: * 若小于

Spring Boot 搭建 ELK正确看日志的配置流程

2021-02-28
为什么要用ELK ELK实际上是三个工具,Elastricsearch + Logstash + Kibana,通过ELK,用来收集日志还有进行日志分析,最后通过可视化UI进行展示.一开始业务量比较小的时候,通过简单的SLF4J+Logger在服务器打印日志,通过grep进行简单查询,但是随着业务量增加,数据量也会不断增加,所以使用ELK可以进行大数量的日志收集和分析 简单画了一下架构图 在环境配置中,主要介绍Mac和Linux配置,Windows系统大致相同,当然,前提是大家都安装了JDK 1