java
文章平均质量分 81
IT瓜哥-杨得朝
多年JavaWeb开发,K8S,大数据开发10+年经验,具有多个大型项目实战经验。擅长分布式系统,微服务系统架构与设计,尤其对海量日志收集和存储非常熟悉,熟悉大数据云计算相关技术,参与过docker,mesos,marathon,elasticsearch、rbbitMq,springCloud,hadoop,spark,hibv,hase等相关技术系统开发和架构设计,此外对分布式对象存储ceph等相关数据有所涉猎。
展开
-
乐观锁和悲观锁
记忆技巧:悲观锁提前上锁,乐观锁延迟上锁使用场景:乐观锁适用于多读的应用类型,这样可以提高吞吐量2.1 乐观锁记忆技巧:拿数据之前不会上锁,更新数据的时候判断数据是否被更新过。总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制和CAS算法实现。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库提供的类似于write_condition机制,其实都是提供的乐观锁。在Java中java.ut原创 2022-01-17 10:23:03 · 411 阅读 · 0 评论 -
JVM 虚拟机字节码指令表
大家好,我是瓜哥。最近在研究多线程中volicate关键字及其运行原理过程当中,需要对代码运行过程中底层原理进行分析,需要将源代码翻译为机器指令,所以收集以下字节码指令,供大家一起学习提高。volatile 是 Java 虚拟机提供的轻量级的同步机制保证可见性 禁止指令排序 不保证原子性字节码 助记符 指令含义 0x00 nop None 0x01 aconst_null 将null推送至栈顶 0x02 iconst_m1 将int型原创 2022-01-15 12:24:26 · 222 阅读 · 0 评论 -
postman接口测试传参总结
大家好,我是瓜哥,本人虽然接触java10年时间,但是在刚开始接触javaweb开发的时候,对于前端界面向后端传参也不是很清楚。最近刚开始入职不久的一个软件测试妹子一直在做接口测试相关的工作,由于她之前没有接触过web开发相关的工作。所以对于接口测试中各种接口不通出现的问题经常不知道如何解决。其实在接口测试当中很大一部分是由于接口接受参数不正常而造成的。对此本人将接口测试的各种传参总结如下:并且利用postman进行接口测试。一、GET方式的接口1、不传递参数请求:http://localhost:原创 2021-09-18 16:59:24 · 7894 阅读 · 0 评论 -
Socket粘包问题的3种解决方案,最后一种最完美!
在 Java 语言中,传统的 Socket 编程分为两种实现方式,这两种实现方式也对应着两种不同的传输层协议:TCP 协议和 UDP 协议,但作为互联网中最常用的传输层协议 TCP,在使用时却会导致粘包和半包问题,于是为了彻底的解决此问题,便诞生了此篇文章。什么是 TCP 协议?TCP 全称是 Transmission Control Protocol(传输控制协议),它由 IETF 的 RFC 793 定义,是一种面向连接的点对点的传输层通信协议。TCP 通过使用序列号和确认消息,从发送节点提转载 2021-09-09 19:50:00 · 891 阅读 · 1 评论 -
Springboot项目中自定义注解实现多数据源切换访问
大家好,我是瓜哥。java程序中多数据访问实现的方式有好几种,可以使用开源的第三方插件,可以通过AOP的方式,可以自定义注解。今天我用自定义注解的方式亲自做了一遍。下面总结如下。1、首先新建一个自定义注解ChoiceDataSource @Target({ElementType.METHOD,ElementType.TYPE}) 可以使注解在方法和接口或者类上都可以在springboot项目中定义不同的数据源## datasource master #spring.dataso...原创 2021-07-14 14:54:54 · 673 阅读 · 2 评论 -
Java开发中RestFul服务接口规范
REST介绍representational State Transfer (REST) 是一种架构原则,其中将 web 服务视为资源,可以由其 URL 唯一标识。RESTful Web 服务的关键特点是明确使用 HTTP 方法来表示不同的操作的调用。REST 的基本设计原则对典型 CRUD 操作使用 HTTP 协议方法:POST - 创建资源GET - 检索资源PUT – 更新资源DELETE - 删除资源REST 服务的主要优势在于:它们是跨平台 (Java、.net、P原创 2020-11-26 09:46:55 · 3353 阅读 · 1 评论 -
Java中线程池详解
java线程的创建、销毁和线程减切换是一件比较耗费计算机资源的事。如果我们需要用多线程处理任务,并频繁的创建、销毁线程会造成计算机资源的无端浪费。一、线程池的优点(资管速)1、降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。2、提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。3、提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消...原创 2019-05-10 16:44:37 · 189 阅读 · 0 评论 -
cookie窃取和session劫持
一、cookie的基本特性如果不了解cookie,可以先到wikipedia上学习一下。http request浏览器向服务器发起的每个请求都会带上cookie:Host: www.example.orgCookie: foo=value1;bar=value2Accept: */*http response服务器给浏览器的返回可以设置cookie:HTTP/...转载 2018-09-28 10:19:14 · 668 阅读 · 0 评论 -
Maven开发规范
大家好,我是瓜哥: 最近在做微服务项目架构搭建,maven是我们开发当中必不可少的工具,下面对maven的一些规范进行整理。Maven目录结构说明 src/main/java 源代码目录 src/main/resources 所需资源目录 src/main/filters 资...原创 2018-09-28 10:01:52 · 970 阅读 · 0 评论 -
一次性搞清楚equals和hashCode
前言在程序设计中,有很多的“公约”,遵守约定去实现你的代码,会让你避开很多坑,这些公约是前人总结出来的设计规范。Object类是Java中的万类之祖,其中,equals和hashCode是2个非常重要的方法。这2个方法总是被人放在一起讨论。最近在看集合框架,为了打基础,就决定把一些细枝末节清理掉。一次性搞清楚!下面开始剖析。public boolean equals(Obje...转载 2018-09-26 15:47:05 · 151 阅读 · 0 评论 -
java内存模型整理
JVM回顾JVM = 类加载器(classloader) + 执行引擎(execution engine) + 运行时数据区域(runtime data area) 运行时数据区域Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和...原创 2018-09-26 15:08:10 · 174 阅读 · 0 评论 -
java常见面试46题
1. 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。2. JDK和JRE的...转载 2018-09-26 13:51:00 · 184 阅读 · 0 评论