- 博客(48)
- 收藏
- 关注
原创 Spring Boot 实现接口幂等性的 4 种方案
幂等是一个数学与计算机学概念,在数学中某一元运算为幂等时,其作用在任一元素两次后会和其作用一次的结果相同。在计算机中编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数或幂等方法是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。在HTTP/1.1中,对幂等性进行了定义。
2023-07-21 20:11:33 239
原创 Vue3组件的生命周期
总之,Vue 3 的组件生命周期是由一系列钩子函数组成的,每个钩子函数在特定的阶段被调用,以便开发者可以灵活地控制组件的行为。Vue 3 的组件生命周期是由一系列钩子函数组成的,这些钩子函数在组件创建、更新和销毁过程中被调用。- mounted:在挂载之后被调用,此时组件已经被挂载到页面上,可以访问到组件的 DOM 元素。- beforeUnmount:在组件卸载之前被调用,此时组件仍然可用,但 DOM 已经被删除。- updated:在组件更新之后被调用,此时组件的 DOM 已经重新渲染完毕。
2023-05-01 23:51:28 2715
原创 乐观锁和悲观锁
记忆技巧:悲观锁提前上锁,乐观锁延迟上锁使用场景:乐观锁适用于多读的应用类型,这样可以提高吞吐量2.1 乐观锁记忆技巧:拿数据之前不会上锁,更新数据的时候判断数据是否被更新过。总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制和CAS算法实现。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库提供的类似于write_condition机制,其实都是提供的乐观锁。在Java中java.ut
2022-01-17 10:23:03 419
原创 JVM 虚拟机字节码指令表
大家好,我是瓜哥。最近在研究多线程中volicate关键字及其运行原理过程当中,需要对代码运行过程中底层原理进行分析,需要将源代码翻译为机器指令,所以收集以下字节码指令,供大家一起学习提高。volatile 是 Java 虚拟机提供的轻量级的同步机制保证可见性 禁止指令排序 不保证原子性字节码 助记符 指令含义 0x00 nop None 0x01 aconst_null 将null推送至栈顶 0x02 iconst_m1 将int型
2022-01-15 12:24:26 235
原创 Flink部署安装及其WorldCount执行
Flink启动及其WorldCount执行大家好,是瓜哥,最近几年,大数据处理组件Flink非常火,作为一个从事多年java的老程序员,也得跟上时代的技步伐,不然迟早就会被这个技术千变万化的时代抛弃。Flink 是一个针对流数据和批数据的分布式处理引擎,代码主要是由 Java 实现,部分代码是 Scala。它可以处理有界的批量数据集、也可以处理无界的实时数据集。对 Flink 而言,其所要处理的主要场景就是流数据,批数据只是流数据的一个极限特例而已,所以 Flink 也是一款真正的流批统一的计...
2021-11-09 10:05:14 2056
原创 Flink流处理StreamExecutionEnvironment用法
大家好,我是瓜哥,今天进行了Flink相关内容的总结和学习。Flink可以处理实时流式数据处理。具体的资料文档可以登录flink官方文档直接进行在线学习。flink官方文档直接看官方文档对flink的一个架构图:Apache Flink 功能强大,支持开发和运行多种不同种类的应用程序。它的主要特性包括:批流一体化、精密的状态管理、事件时间支持以及精确一次的状态一致性保障等。Flink 不仅可以运行在包括 YARN、 Mesos、Kubernetes 在内的多种资源管理框架上,还支持在裸机集群
2021-11-05 10:59:30 9986
原创 Flink知识点总结
1、Flink核心概念Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。并且 Flink 提供了数据分布、容错机制以及资源管理等核心功能 Flink提供了诸多高抽象层的API以便用户编写分布式任务 DataSet API, 对静态数据进行批处理操作,将静态数据抽象成分布式的数据集,用户可以方便地使用Flink提供的各种操作符对分布式数据集进行处理,支持Java、Scala和Python。 DataStream API,对数据流进行流处理操作,将流式的数据...
2021-10-28 20:46:04 993
原创 Kubernetes知识点总结
大家好,我是瓜哥,随着容器的火爆,利用容器架构来搭建业务系统的人越来越多。现在javaweb开发人才在市场里面已经非常多,就业薪资也逐渐没有增长空间。所以作为一个IT码农,需要不断的提升自己各方面技术能力。之前虽然接触过一段时间的K8S,但是里面的各种组件和知识点非常多,看完后就会老忘记,今天抽时间来总结一下K8S里面重要的知识点。实操中发现,像 Docker 之类的容器引擎,折腾少量容器还行。但如今的云原生应用、机器学习任务或者大数据分析业务,动辄就要使用成百上千的容器。要管理这么多容器,Docker
2021-09-24 11:03:01 406 1
原创 postman接口测试传参总结
大家好,我是瓜哥,本人虽然接触java10年时间,但是在刚开始接触javaweb开发的时候,对于前端界面向后端传参也不是很清楚。最近刚开始入职不久的一个软件测试妹子一直在做接口测试相关的工作,由于她之前没有接触过web开发相关的工作。所以对于接口测试中各种接口不通出现的问题经常不知道如何解决。其实在接口测试当中很大一部分是由于接口接受参数不正常而造成的。对此本人将接口测试的各种传参总结如下:并且利用postman进行接口测试。一、GET方式的接口1、不传递参数请求:http://localhost:
2021-09-18 16:59:24 7971
原创 docker知识点总结
1、什么DockerDocker是一个容器化平台,它以容器的形式将您的应用程序及其所有依赖项打包在一起,以确保您的应用程序在任何环境中无缝运行。2、Docker与虚拟机有何不同Docker不是虚拟化方法。它依赖于实际实现基于容器的虚拟化或操作系统级虚拟化的其他工具。为此,Docker最初使用LXC驱动程序,然后移动到libcontainer现在重命名为runc。Docker主要专注于在应用程序容器内自动部署应用程序。应用程序容器旨在打包和运行单个服务,而系统容器则设计为运行多个进程,如虚拟机。因此,Do
2021-09-17 16:28:30 381
转载 Socket粘包问题的3种解决方案,最后一种最完美!
在 Java 语言中,传统的 Socket 编程分为两种实现方式,这两种实现方式也对应着两种不同的传输层协议:TCP 协议和 UDP 协议,但作为互联网中最常用的传输层协议 TCP,在使用时却会导致粘包和半包问题,于是为了彻底的解决此问题,便诞生了此篇文章。什么是 TCP 协议?TCP 全称是 Transmission Control Protocol(传输控制协议),它由 IETF 的 RFC 793 定义,是一种面向连接的点对点的传输层通信协议。TCP 通过使用序列号和确认消息,从发送节点提
2021-09-09 19:50:00 903 1
原创 Springboot项目中自定义注解实现多数据源切换访问
大家好,我是瓜哥。java程序中多数据访问实现的方式有好几种,可以使用开源的第三方插件,可以通过AOP的方式,可以自定义注解。今天我用自定义注解的方式亲自做了一遍。下面总结如下。1、首先新建一个自定义注解ChoiceDataSource @Target({ElementType.METHOD,ElementType.TYPE}) 可以使注解在方法和接口或者类上都可以在springboot项目中定义不同的数据源## datasource master #spring.dataso...
2021-07-14 14:54:54 679 2
原创 JVM 运行时内存(二)
Java 堆从 GC 的角度还可以细分为: 新生代( Eden 区 、 From Survivor 区 和 To Survivor 区 )和老年代。1.新生代是用来存放新生的对象。一般占据堆的1/3空间。由于频繁创建对象,所以新生代会频繁触发MinorGC 进行垃圾回收。新生代又分为 Eden 区、ServivorFrom、ServivorTo 三个区。1.1、Eden 区Java新对象的出生地(如果新创建的对象占用内存很大,则直接分配到老年代)。当Eden区内存不够的时候就会触发M
2021-01-22 16:57:11 120
原创 JVM 内存区域构成(一)
最近一直忙着做项目,对于基础知识已经好久没有总结了,今天花点时间对一些工作当中用不到,但是还是很有必要掌握的理论知识进行总结。一、思维导图二、基本概念1、JVM 内存区域主要分为线程私有区域【程序计数器、虚拟机栈、本地方法区】、线程共享区域【JAVA 堆、方法区】、直接内存。2、线程私有数据区域生命周期与线程相同, 依赖用户线程的启动/结束 而创建/销毁(在 HotspotVM 内, 每个线程都与操作系统的本地线程直接映射, 因此这部分内存区域的存/否跟随本地线程的生/死对应)。.
2021-01-22 14:06:32 250
原创 数据结构与算法-排序-选择排序(2)
选择排序简介简单选择排序是最简单直观的一种算法,基本思想为每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止,简单选择排序是不稳定排序。在算法实现时,每一趟确定最小元素的时候会通过不断地比较交换来使得首位置为当前最小,交换是个比较耗时的操作。其实我们很容易发现,在还未完全确定当前最小元素之前,这些交换都是无意义的。我们可以通过设置一个变量min,每一次比较仅存储较小元素的数组下标,当轮循环结束之后,那这个变量存储的就是当前最小元素的下标,此时再执行交换操作即可。代码实
2021-01-15 10:44:00 166
原创 数据结构与算法-排序-冒泡排序(1)
冒泡排序简介(从小到大排序) 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个,即需要进行length-1次。 第一次是对n个数进行n-1次比较,进行到最后第n个的一个是最大的; 第二次是对n-1个数进行n-2次比较,进行到最后第n-...
2021-01-15 10:01:08 177 2
原创 二、接口测试知识点总结
1.什么是接口测试?接口测试:是测试系统组件间接口的一种测试方法 接口测试的重点:检查数据的交换,数据传递的正确性,以及接口间的逻辑依赖关系 接口测试的意义:在软件开发的同时实现并行测试,减少页面层测试的深度,缩短整个项目的测试周期2.接口自动化测试的流程?基本的接口功能自动化测试流程为:需求分析-->用例设计-->脚本开发-->测试执行-->结果分析3.GET请求和POST请求区别是什么?GET请求:用于信息获取,相对而言是安全和幂等的;在做数据查询时,建议用
2021-01-15 09:23:34 1993
原创 一、软件性能测试知识点总结
1.常见的性能测试策略有哪些参考答案:基准测试,并发(业务边界值)测试,综合场景测试,负载测试,疲劳测试,极限压力测试,大数据量测试2.完成一个性能测试项目,请阐述你的实施流程:参考答案:测试设计阶段:1)了解被测系统的性能需求,定义测试目标和范围;2)了解系统的技术信息,如系统架构等;3)确定测试方案、进度安排,并制定测试计划,场景设置方案,及需要收集的测试数据;4)同相关人员协商讨论测试方案;5)准备数据收集模板;不同项目的性能测试,需要收集的数据不同;针对性
2021-01-15 09:20:24 913
原创 javascprit模块化整理笔记
前言各位好,js模块是一个项目人员对代码进行规范和优化非常重要的一点,在可视化平台开发中,由于很多组件需要自定义开发,在整个代码编程过程中发现将代码进行模块化管理是很重要的事情,否则越到后面代码越来越难以维护,代码逻辑也比较凌乱,所以今天通过学习和整理对js模块化进行了相关的整理。模块化的理解一、什么是模块? * 将一个复杂的程序依据一定的规则(规范)封装成几个块(文件), 并进行组合在一起 * 块的内部数据/实现是私有的, 只是向外部暴露一些接口(方法)与外部其它模块通信二、一个模..
2020-12-19 19:15:12 327 1
原创 javascript中offsetWidth,clientWidth,width的区别
说明在做可视化平台过程中,由于要各种echarts组件要通过拖拽实现在画布中的布局和大小的缩放,所以用到了js中获取各种宽高相关的内容。通过整理网上内容和自己试验,最终整理以下。 //offsetWidth //返回元素的宽度(包括元素宽度、内边距和边框,不包括外边距) //offsetHeight //返回元素的高度(包括元素高度、内边距和边框,不包括外边距) //clientWidth //返回元素的宽度(包括元素宽度、内边距,不包括边框和外边距) //client...
2020-12-01 11:25:17 319
原创 数据可视化中CSS实现四个边角特效实现
在数据可视化大屏中,我们看到人家的到做的很炫酷,如下图,中div四个边角的特殊颜色边角是怎么实现的呢,下面本人通过两种方式进行实现。方式一<body> <h1 class="title">css实现矩形边角加粗</h1> <div class="main"> <span></span> <span></span> <span></span> &
2020-11-27 10:42:11 2489
原创 CSS实现tab页切换效果
说明tab也切换在前端页面中是非常常见的一种效果。本人通过搜集资料大致实现有有下面三种写法。 利用:hover选择器 缺点:只有鼠标在元素上面的时候才有效果,无法实现选中和默认显示某一个的效果 利用a标签的锚点 + :target选择器 缺点:因为锚点会将选中的元素滚动到页面最上面,每次切换位置都要移动,体验极差。 利用label和radio的绑定关系和radio选中时的:checked来实现效果 radio控件和label控件绑定只要指定label的"for"
2020-11-26 14:27:48 4351
原创 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 3386 1
原创 JavaScript模拟Vue实现双向绑定
最近一直做vue相关项目开发,对于vue的底层原理不是很清楚,今天搜集各种资料并整理1、MVVM介绍我们知道Vue是基于MVVM的一个前端框架,首先来介绍下什么是MVVM?M:模型层,主要负责业务数据相关;V:视图层,顾名思义,负责视图相关,细分下来就是html+css层;VM:V与M沟通的桥梁,负责监听M或者V的修改,是实现MVVM双向绑定的要点;其次,使用Object.defineProperty实现MVVM的表单数据双向绑定,当修改data属性之后,Vue立刻监听到,data
2020-11-24 16:05:26 172
原创 Vue中v-if和v-show的不同及其实现原理
各位好,本人瓜哥,最近接触前端项目比较多,尤其当前vue使用相当流行。对于vue中的条件指令v-if和v-show更容易混淆。相应使用演示请下载https://gitee.com/yangdechao_admin/vue-guage.git,具体代码请查看demo1.vue实现原理v-if是动态的向DOM树内添加或者删除DOM元素;v-show是通过设置DOM元素的display样式属性控制显隐使用了 v-if 的时候,如果值为 false ,那么页面将不会有这个 html 标签生成。..
2020-11-24 14:31:26 1770
原创 分布式对象存储池建设工作总结
2018年XXX卡中心重点进行分布式对象存储池初期建设规划。通过对语音存储、云计算平台、影像平台、图片资源平台等相关业务系统存储需求进行调研,确定了各个业务系统系统对存储资源池需求状况。此外选取了当前国内具体一定实力的对象存储厂商进行了相关的产品验证,下面对本人一年之内所做工作进行一个完整总结。完成分布式对象存储系统需求整理初期,通过调研卡中心各个业务系统中文件存储情况,对各个业务系统进行系统的需求整理。通过需求调研发现,当前卡中心非结构化文件存储采用传统文件存储系统(如NAS)做为主要存储方案,NA
2020-06-03 11:47:45 836
原创 一、xxl-job 2.1.2版本调度器启动流程
大家好,我是瓜哥,最近公司由于新接手了一个大型项目,使用到了批量调度任务的需求,通过各种调度开源组件的选型,最终打算使用xxl-job来进行任务调度,本次主要对2.1.2源码进行流程梳理。由于当前项目调度任务需求的特殊要求,需要对xxl-job源码进行二次修改和开发完善。本人将官方源码下载下来后做了相关的流程梳理,下面主要对调度器启动流程做一个完整的总结。Xxl-job笔记整理1、xxl-job-admin在启动时spring会扫描到XxlJobAdminConfig类,该类的主要代码如下:由于
2020-05-21 10:00:48 912
原创 Ambari部署安装
Ambari部署安装手册1·环境配置本安装基于RHEL 7.3。1.1关闭防火墙服务(所有节点)和selinux关闭防火墙:service iptables stop或systemctl stop firewalld禁止开机启动:chkconfig iptables off 或 systemctl disable firewalld查看防火墙状态:service...
2019-06-12 17:48:16 1716
原创 Java中线程池详解
java线程的创建、销毁和线程减切换是一件比较耗费计算机资源的事。如果我们需要用多线程处理任务,并频繁的创建、销毁线程会造成计算机资源的无端浪费。一、线程池的优点(资管速)1、降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。2、提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。3、提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消...
2019-05-10 16:44:37 197
原创 超文本传输协议http详解
HTTP特点HTTP(HyperText Transfer Protocol,超文本传输协议),是一个应用层协议,虽然在2015年已推出HTTP/2版本,并被主要的web浏览器和web服务器支持。但目前使用最广泛的还是HTTP/1.1版本。它的主要特点可概括如下:支持客户/服务器模式。 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。由于HTTP协议简单,使得HTTP服务器...
2018-09-29 17:07:19 4804
转载 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 674
原创 zipkin,kafka,elasticsearch整合及其原理流程
大家好,我是瓜哥: 最近公司打算启用springcloud做微服务架构,微服务开发中链路跟踪是很重要的一环,springcloud中zipkin就实现了链路跟踪的整个功能,zipkin整合中使用到了kafka做链路数据收集,elasticsearch做数据存储和搜索,下面是整个调用过程。Zipkin 是一款开源的分布式实时数据追踪系统(Distributed Tracking S...
2018-09-28 10:10:04 7382
原创 Maven开发规范
大家好,我是瓜哥: 最近在做微服务项目架构搭建,maven是我们开发当中必不可少的工具,下面对maven的一些规范进行整理。Maven目录结构说明 src/main/java 源代码目录 src/main/resources 所需资源目录 src/main/filters 资...
2018-09-28 10:01:52 986
原创 常见分布式文件存储介绍、选型比较、架构设计
Hello,我是瓜哥:之前在进行对接存储项目的时候,对公司内部使用的文件系统进行了梳理,当前公司内部使用的文件系统有GlusterFS,FastDFS等,由于文件系统在海量小文件和高并发之下性能急剧下降,性能遭遇瓶颈,因此打算建设分布式对象存储平台。下面对市面上比较流行的非结构化文件存储产品进行相关整理和比较。分布式文件存储的来源在这个数据爆炸的时代,产生的数据量不断地在攀升,从GB,...
2018-09-28 09:51:02 45817 4
原创 微服务Dubbo和SpringCloud架构设计、优劣势比较
大家好,我是瓜哥: 最近在做公司项目微服务改造。在当前比较流行的微服务实现方式有Dubbo和SpringCloud,到底哪种微服务方式更适合项目,下面是整理的对于该两种方式微服务优劣势比较。本文主要围绕微服务的技术选型、通讯协议、服务依赖模式、开始模式、运行模式等几方面来综合比较Dubbo和Spring Cloud 这2种开发框架。架构师可以根据公司的技术实力并结合项目的特点来选择某个合...
2018-09-28 09:32:52 1523
原创 25个经典的Spring问答,什么是Spring框架?
1、什么是Spring框架?Spring框架有哪些主要模块?深夜在来一波,晚安Spring框架是一个为Java应用程序的开发提供了综合、广泛的基础性支持的Java平台。Spring帮助开发者解决了开发中基础性的问题,使得开发人员可以专注于应用程序的开发。Spring框架本身亦是按照设计模式精心打造,这使得我们可以在开发环境中安心的集成Spring框架,不必担心Spring是如何在后台进行工...
2018-09-28 09:26:38 429
转载 一次性搞清楚equals和hashCode
前言在程序设计中,有很多的“公约”,遵守约定去实现你的代码,会让你避开很多坑,这些公约是前人总结出来的设计规范。Object类是Java中的万类之祖,其中,equals和hashCode是2个非常重要的方法。这2个方法总是被人放在一起讨论。最近在看集合框架,为了打基础,就决定把一些细枝末节清理掉。一次性搞清楚!下面开始剖析。public boolean equals(Obje...
2018-09-26 15:47:05 158
原创 java内存模型整理
JVM回顾JVM = 类加载器(classloader) + 执行引擎(execution engine) + 运行时数据区域(runtime data area) 运行时数据区域Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和...
2018-09-26 15:08:10 179
转载 java常见面试46题
1. 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。2. JDK和JRE的...
2018-09-26 13:51:00 194
原创 Linux性能检测常用的10个基本命令
之前在做对象存储poc测试时,需要监控linux各项参数性能。现在将常用到的命令总结如下。1. uptime$ uptime 23:51:26 up 21:31, 1 user, load average: 30.02, 26.43, 19.0212该命令可以大致的看出计算机的整体负载情况,load average后的数字分别表示计算机在1min、5min、15min内的平均负载...
2018-09-26 10:59:26 239
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人