- 博客(34)
- 收藏
- 关注
原创 使用函数式接口解决大量if-else/switch
最近看到之前的项目中,有业务需要从消费队列中接收消息,每一条消息都有一个标识来表示是哪类数据。在接收时,就会有大量的if-else进行判断从而进行不同的逻辑处理。这样就不可避免的造成写在后面的判断会经过多次判断,并且程序会显得越来越臃肿。参考servlet的源码进行优化。可想而知,如果有大量的业务逻辑需要执行,就要有大量的if-else要进行判断......
2022-06-21 17:07:41
772
1
原创 在工作中关于雪花算法的一些思考
最近思考到一些主键的生成策略。由于当前公司普遍采用一种与业务上固定标识的id相拼接的字符串,主键的索引优势没有很大程度的利用起来,所以参考对比了一些主键的生成策略。
2022-03-07 17:17:15
1089
2
原创 通过Java代码实现ping功能测试ip地址与ip:port的连通性
通过Java代码实现测试ip地址与ip:port的连通性需求分析具体实现测试ip连通性测试ip:port连通性重试机制需求分析最近在业务中,需要添加一种掉线告警系统。大致思路为:通过定时任务扫描,每一个小时判断一次设备是否在线,如果在线继续判断端口是否能够通讯。如果不在线或者不能通讯,需要及时push消息给告警人员,及时处理。具体实现测试ip连通性主要通过InetAddress类来实现 /** * @param ipAddress 待检测IP地址 * @param tim
2021-08-31 22:47:47
4857
4
原创 Java中的四种引用类型
Java中的四种引用类型hello大家好,好久不见,我是java大侠。最近刚刚毕业进入了校招公司,发现技术基础还是很重要,所以特地立下决心,每日分享一个关于Java相关知识的总结,希望能够伴随大家一起成长。在Java中一切皆对象,对象的操作就是通过该对象的引用(reference)实现的。在Java中,对象的引用一共有强引用,弱引用,软引用,虚引用共计四种类型强引用强引用在Java中是我们最常见的。在把一个对象赋值给一个引用变量时,我们就称这个引用变量是一个强引用。Object t = ne
2021-07-13 07:29:13
226
1
原创 记录一次作业帮面试前的复习冲刺
1、三次握手四次挥手全过程前提须知:TCP的传送单元称为报文段。一个TCP报文段又分为TCP首部和TCP数据两部分。整个TCP报文段都封装在IP的数据报中数据部分。TCP首部的长度是4的倍数,并且有20个固定的字节,剩余的就是可变动的选项与填充。最常见的可选字段是 最大报文大小又称MSS 。20个固定的字节包括 源端口号(2字节),目的端口号(2字节),seq序列号(4),确认号ack(4字节)以及确认为ACK等首先在三次握手建立连接的过程中,是不会传输TCP报文段的。传输的是 传输控制块 TC
2021-04-16 23:05:54
1137
原创 主机连接WIFI情况下如何确保虚拟机中Centos连通外网并固定IP
最近需要开发部署一个项目,但是因为之前设置的ip都是nat模式,ip总是变动,设置为桥接模式又总是没网,所以去网上搜索了一些方法,但是感觉都不适用。特地写了一篇博客来纪念一下安装部署一台Centos7略设置网络适配器模式设置虚拟网络编辑器如果没有虚拟适配器的话,需要点击还原默认设置,生成一下。设置对应模式网络编辑器信息因为我使用的是NAT模式,所以我选择VM8关闭DHCP自动分配ip功能选择NAT设置,设置子网的网段在Centos中修改配置vim /etc/sysconfi
2021-01-29 11:02:50
327
原创 2、两数相加。给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
两数相加给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9,9,9,9],
2021-01-04 12:09:40
7901
原创 1、两数之和。给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。
1、两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], target = 6输出:[
2021-01-04 11:02:48
3895
1
原创 Java基础之集合详解(List、Queue、Set、Map)
文章目录集合List:可重复ArrayListVectorLinkedListQueueSet:不可重复HashSet:HashMap实现,无序TreeSet:二叉树实现LinkHashSet:HashMap实现数据存储,双向链表记录顺序MapHashMap:数组+链表存储数据,线程不安全ConcurrentHashMap:分段锁实现,线程安全**HashTable:线程安全**TreeMap:基于二叉树数据结构LinkedHashMap:基于HashMap数据结构,使用链表保存插入顺序异常反射内部类泛型
2021-01-03 11:00:01
832
原创 JVM理论知识面试大全
文章目录1.1 JVM组成1.2 Java程序运行过程1.3 JVM的内存区域1.4 JVM的运行时内存新生代:Eden区、ServivorTo区和ServivorFrom区老年代永久代1.5 Java中常用的垃圾回收算法标记清除复制算法标记整理分代收集算法1.6 Java中的4种引用类型1.7 分代收集算法和分区收集算法新生代与复制算法老年代与标记整理算法1.8 垃圾收集器Serial垃圾收集器:单线程,复制算法ParNew垃圾收集器:多线程,复制算法Parallel Scavenge垃圾收集器:多线程,
2021-01-02 20:37:03
650
原创 SpringCloud Gateway微服务网关介绍快速入门教程案例
文章目录概述什么是GatewayGateway的特性Gateway在微服务架构中的地位Gateway网关的三大组件Gateway的工作流程Gateway的配置案例1、建Module2、改pom3、写yml4、主启动5、业务类6、启动GatewayGateway的详细配置1、使用配置类的方式添加网关路由2、使用yml配置1、在8001服务外层加上一层9527网关2、通过微服务名来调用服务提供者集群服务(8001/8002)Predicate详解Route Predicate Factory是什么?与predi
2020-12-15 02:05:10
1153
原创 SpringCloud之Hystrix快速入门介绍+案例分析(服务降级、服务熔断)
文章目录Hystrix(豪猪哥)Hystrix是什么服务降级(fallback)服务熔断(break)服务限流(flowlimit)服务雪崩hystrix服务端测试用例1、建Module2、改pom3、写yml4、主启动5、业务类服务层控制层6、测试Jmeter使用教程Hystrix服务降级(fallback)1、什么是服务降级2、哪些情况会发出服务降级3、服务降级可以用在哪里4、服务降级案例分析5、Hystrix配置说明服务端服务降级配置1、建Module2、改pom3、写yml4、主启动5、业务类6、测
2020-12-09 12:52:41
1151
原创 SpringCloud之Open Feign服务调用快速入门分析案例
Feign可以进行远程服务调用Feign 采用的是基于接口的注解Feign 整合了ribbon,具有负载均衡的能力Feign整合了Hystrix,具有熔断的能力
2020-12-08 17:57:34
965
原创 IntelliJ IDEA 2020常用配置大全(Java后台开发必备,超详细)
文章目录1、修改存放路径2、配置maven(为每一个新项目)3、设置默认的SDK(新)4、设置鼠标滑轮控制字体大小5、设置编码集(新)6、设置自动编译(新)7、设置类自动导入8、代码补全9、自动设置作者头10、隐藏idea自带的.iml文件,以及.idea文件夹11、设置Git12、关闭自动更新13、设置IDEA的最大最小内存14、springboot快速启动1、修改存放路径进入IDEA文件夹下的bin目录找到idea.properties修改存放路径即可2、配置maven(为每一个新项目)
2020-12-07 12:32:41
2211
2
原创 SpringCloud微服务概述及项目聚合实例之支付模块(非常适合初学者)
概述提出者Martin Fowler什么是微服务微服务架构是一种架构模式。它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相协作(通常是基于HTTP协议的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应当尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建微服务
2020-12-03 22:48:29
1825
原创 Java开发人员必备的linux学习大全(用户管理,基本操作,mysql、jdk等开发软件的安装,图文详解)
1、Linux-CentOS7 分区2、软件选择安装选择带有GUI的选项安装3、VMtools1、安装2、直接黏贴命令在win和centos之间可以从windows复制命令到linux中,快速复制粘贴3、设置win和centos的共享文件夹点击要共享的虚拟机,右键-> 设置 -> 选项 -> 共享文件夹设置成总是启动,并且添加一个 本地共享文件夹的位置4、测试linux 系统中默认挂在VM tool共享文件夹的目录为 /mnt/hgfs4、
2020-12-02 17:41:08
2908
原创 5分钟带你快速了解微服务负载均衡之Ribbon
5分钟带你快速了解RibbonRibbon介绍Spring Cloud Ribbon是基于Netflix Ribbon实现的—套客户端负载均衡的工具。主要功能是提供客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助我们基于某种规则(如简单轮询,随机连接等)去连接这些机器。并且我们很容易使用Ribbon实现自定义的负载均衡算法。负载均衡(Lo
2020-12-02 15:01:31
683
2
原创 一篇文章带你快速了解Consul,实战consul注册中心
什么是ConsulConsul是一套开源的分布式服务发现和配置管理系统,由HashiCorp 公司用Go语言开发。Consul提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格Consul具有很多优点基于 Raft 协议比较简洁支持健康检查同时支持 HTTP 和 DNS 协议支持跨数据中心的 WAN 集群提供图形界面跨平台支持 Linux、Mac、WindowsConsul安装linxu安装Ce
2020-12-01 23:57:11
594
原创 Centos7安装consul详解(服务器+虚拟机)
下载安装包进入官网 https://www.consul.io/downloads选择对应的系统以及对应的版本复制下载链接进入linux系统中,使用wget命令下载[root@service opt]# cd /opt[root@service opt]# wget https://releases.hashicorp.com/consul/1.9.0/consul_1.9.0_linux_amd64.zip解压安装包[root@service opt]# unzip consul
2020-12-01 10:48:00
1270
原创 zookeeper之注册中心实现集群版
zookeeper作为注册中心集群版服务提供者集群1、建moudlecloud-providerzk-payment8004cloud-providerzk-payment8005cloud-providerzk-payment80062、改pom每个项目的依赖都是相同的springboot与cloud的版本为<spring.boot.version>2.2.2.RELEASE</spring.boot.version><spring.cloud.ver
2020-12-01 00:03:50
468
原创 Centos7安装zookeeper详细流程(亲测绝对成功!)
1、下载tar包进入zookeeper官网https://downloads.apache.org/zookeeper/找到最新的zookeeper安装包进入需要下载的目录,笔者这里将tar包下载到/opt目录下下载[root@service opt]# cd /opt[root@service opt]# wget https://downloads.apache.org/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz
2020-11-30 22:12:36
9867
8
原创 zookeeper之服务注册中心功能实现微服务访问代码详解
什么是zookeeperZooKeeper是用于分布式应用程序的协调服务。它公开了一组简单的API,分布式应用程序可以基于这些API用于同步,节点状态、配置等信息、服务注册等信息。其由Java编写,支持Java和C两种语言的客户端。zookeeper 中数据基本单元叫节点,节点之下可包含子节点,最后以树级方式程现。每个节点拥有唯一的路径path。客户端基于PATH上传节点数据,zookeeper 收到后会实时通知对该路径进行监听的客户端。zookeeper安装Centos7之zookeeper
2020-11-30 01:03:53
689
原创 SpringCloud微服务之Eureka注册中心集群版功能实现以及配置详解
集群说明SpringCloud实现集群版Eureka项目结构图1、创建eureka注册中心模块cloud-eureka-server7001cloud-eureka-server7002cloud-eureka-server70032、更改hosthost地址为 C:\Windows\System32\drivers\etc添加本地地址解析127.0.0.1 eureka7001.com:7001127.0.0.1 eureka7002.com:70021
2020-11-29 00:24:10
731
原创 SpringCloud微服务之Eureka注册中心单机版功能实现
Eureka概述服务注册微服务是不同的服务分布在不同的主机上,服务跟服务之间可能存在调用关系。我们可能是通过硬编码写死服务地址的方式来调用其他服务,这样对于后期服务的新增,服务的重新部署都有很多不便利的地方,所以注册中心解决的就是这样一个问题。注册中心是微服务架构中的通讯录,记录了服务和服务地址的映射关系。在分布式架构中,服务都会注册到这里,当服务需要调用其他服务时,就通过注册中心寻找服务地址,当新增一个服务时,也会将服务地址注册到注册中心服务治理服务治理可以说是微服务架构中最为核心和基础的模
2020-11-27 18:36:06
177
原创 Centos之防火墙/服务管理(firewall/iptables)命令详细说明
Centos之防火墙/服务管理命令详细说明1、Centos7在Centos7中使用firewall来代替ipables,但是iptables也可以继续安装使用,以下是firewall的操作命令1、启动防火墙systemctl start firewalld2、查看防火墙的状态systemctl status firewalld3、关闭防火墙systemctl stop firewalld4、设置防火墙开机自启systemctl enable firewalld.servi
2020-11-15 22:59:03
3096
1
原创 Centos7环境下安装Mysql8详细教程(超详细,亲测百分百成功)
Centos7环境下安装Mysql8详细教程(超详细,亲测百分百成功)1、上传或者下载mysql安装包下载推荐使用清华的镜像,下载速度非常的快wget https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-8.0/mysql-8.0.21-el7-x86_64.tar.gz当然,如果没有我也提供了下载包链接:https://pan.baidu.com/s/14-_LlXPpMB10ray3iYPoQQ提取码:idea上传
2020-11-15 22:42:06
45063
44
原创 centos7环境下安装tomcat9教程
1、解压tomcattar -zxvf apache-tomcat-9.0.39.jar.gz当然,如果没有我也提供了下载包链接:https://pan.baidu.com/s/14-_LlXPpMB10ray3iYPoQQ提取码:idea2、移动路径移动到/usr/local /tomcat/mv /opt/apache-tomcat-9.0.39/ /usr/local /tomcat/3、启动服务进入tomcat的bin目录,执行启动脚本# cd apache-tom
2020-11-15 22:33:12
408
1
原创 centos7环境下安装JDK8之详细教程(超详细)
1、下载JDK安装包使用wget 远程下载或者从本地远程上传到服务器的/opt目录下当然,如果没有我也提供了下载包链接:https://pan.baidu.com/s/14-_LlXPpMB10ray3iYPoQQ提取码:idea2、解压JDK在**/opt**目录下解压jdktar -xzvf jdk-linux-x64.tar.gz3、移动jdk根据习惯,将JDK移动到 /usr/local/路径下mv jdk1.8.0_131 /usr/local/4、配置
2020-11-15 22:27:55
1255
原创 Vue脚手架2.x之初始化一个项目并结合bootstrap的四种方法
1、新建一个项目名 我们可以新建一个目录(项目/文件夹),将前台和后台项目都放在该目录下。 我们需要做一个电影推荐项目,所以我们在目录下新建了一个目录img_item2、切换路径在Terminal中切换到我们新建的目录下3、初始化一个vue项目vue init webpack img_web //img_web是前端项目名4、运行vue项目我们切换路径到新建的前端项目中,然后启动项目npm run devnpm startnpm run start三者都可以启动项目,
2020-11-12 23:38:46
1576
2
原创 在学习的道路上,不要迷茫,勇于突破
今天似乎是狂欢后的余乐,内心还在回味着昨日的疯狂,不知为何,总是有一种贪小便宜的心理。人们常说,知足常乐,而我总在贪图不属于自己的东西,这不正是不睿智的选择吗?我舍弃了我拥有最珍贵的,却在一些芝麻细节上追求,可谓是丢了西瓜捡芝麻!自从双十一以来,心态越来越变得严重,似乎是十月因为招聘会、面试、找工作繁忙的生活而所造成的阴影,所以在十一月来没有了紧迫的压力,没有了时时刻刻都在找工作的情绪,难道仅仅是因为得到了offer就松懈,就得意忘形了?……这是一个值得思考的地方!我的内心一直在对着一些事情而耿耿于怀
2020-11-12 08:40:54
459
原创 JavaSE基础之体系结构、主要特点、三大特性
1、Java基础知识图谱2、Java技术体系Java SE(Java Standard Edition)标准版支持面向桌面级应用的Java平台,提供了完整的Java核心API。Java EE(Java Enterprise Edition)企业版是为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如Servlet、JSP等,主要针对于Web应用的开发。Java ME(Java Micro Edition)微机版支持Java程序运行在移动终端(手机,PDA)上的平台,对Jav
2020-11-10 20:33:40
1336
2
原创 Spring之创建bean的三种方式(基于XML)
Spring之创建bean的三种方式Bean:在计算机英语中,有可重用组件的含义。JavaBean: 用Java语言编写的可重用组件。 JavaBean >= 实体类他就是为了创建我们的service和dao对象的。获取JavaBean的方式需要一个配置文件来配置我们的service和dao配置的内容:唯一标识 = 全限定类型(key = value)通过读取配置文件中配置的内容,反射创建对象注:配置文件可以是XML也可以是properties1、使用默认构造函
2020-09-05 08:45:03
1900
原创 Spring基于注解的AOP事务控制报错:Can‘t call commit when autocommit=true
Spring基于注解的AOP事务控制报错:Can’t call commit when autocommit=true结论没有考虑spring基于注解的AOP通知的执行顺序。正文当使用注解配置AOP时,在配置完四大通知(前置通知,后置通知,异常通知,最终通知)后,如下package com.item.utils;import com.sun.tracing.dtrace.Attributes;import org.aspectj.lang.annotation.*;import org.s
2020-08-10 20:06:40
817
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人