自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 k8s集群搭建步骤

博主搭建过很多软件,k8s尤其不顺利,主要是国内网络问题。本文就离线搭建做了整理,为成功案例,并非其他博文copy。版本:k8s 1.14基础条件1、计算机配置2、VMware虚拟机步骤1、部署条件准备vmware三台虚拟机 centos7 均配置可以联网联网配置,参考:https://blog.csdn.net/c466254931/article/details/103123630虚拟机访问外网主要是如下配置cd /etc/sysconfig/network-s

2021-06-01 11:22:08 21

原创 基于ELK(es、logstash、kibana)和springboot2、log4j2实现日志可视化

搭建ELK平台这部分参考作者另一个采坑博客ELK部署笔记(docker-compose部署)建一个采用log4j2框架的SpringBoot项目这部分没啥好说的,注意几个要点1、确定项目采用了你配置的log4j2框架,而不是用的默认的logback或者其他日志框架 <dependency> <groupId>org.springframework.boot</groupId> <

2020-11-28 23:48:48 270 4

原创 ELK部署笔记(docker-compose部署)

环境:CentOS7.6,1核2G建议先看后面两部,可以先把yum更新到最新,安装的docker如果与系统匹配上,可能会比较顺利!1、用docker部署elk的大体步骤yum install docker yum install docker-compose新建自定义目录,新建docker-compose.yml文件(这个过程叫编排服务)mkdir /xxx/elk vim dokcer-compose.yml复制以下内容到新建的docker-compose.yml文件,保存

2020-11-28 12:19:13 984

原创 POI上传带图片的Excel

/** * 可用于读取包含多个表的excel * 外层map用于表示sheet,list用于表示每个sheet的行记录,内层map用于表示sheet-->row-->cell即:行中的每一列数据 * * @param filePath 文件路径 * @return {@link Map<String, List<Map<String, Object>>>} */public Map<String, List<Map<Strin.

2021-06-01 16:24:08 17

原创 Nacos 功能初探

简介:Nacos 致力于帮助您发现、配置和管理微服务。在SpringCloud中,可以替换eureka、configNacos Config一、安装启动1、下载安装https://github.com/alibaba/nacos/releases2、解压3、启动cd到bin目录,执行:sh startup.sh -m standalone见到如上界面就表示启动成功4、登陆管理界面http://localhost:8848/nacos/index.htm

2021-05-22 13:51:52 23 4

原创 Java链表实现队列

问题:用链表实现一个先进先出的队列分析:1、链表实现,必须有一个节点能够装数据和下一个节点的指针(引用)2、队列必须要有队首、队尾指针和记录当前队列大小的整型数3、入队:往队尾加,队尾的下一个指针指向新元素,随后移动队尾指针指向新元素4、出队:取出队首数据,移动队首指针指向队首的下一个元素5、边界问题考虑实现1、节点类/** * 队列结点 * * @author zab * @date 2021-01-27 11:13 */public class Nod.

2021-01-27 11:32:17 42

原创 手撕Java快排

思想从乱序的数字中找一个中位数(便于理解,就取最后一个数),设想两个游标,左游标指向第0个数,右游标指向最后一个数第一步:左游标右移,直到找到一个数比中位数大的停止第二步:右游标左移,直到找到一个数比中位数小的停止第三步:交换左右游标的指向的数,这时候发生一个现象就是小的数在左移,大的数在右移第四步:重复一二三步,直到左右游标指向同一个数。这时候交换中位数和同时指向的数。这时候发生一个现象就是左右游标同时指向的位置,左边全是比该位置对应的数小的数,右边全是比该位置对应的数大的数第五步

2021-01-25 23:45:26 49

原创 Error deserializing Avro message for id -1

Error deserializing Avro message for id -1最近博主在工作中遇到过这种错误。分析该错误是由于kafka反序列化消息失败导致的。至于为啥失败,这样从项目说起。话说博主接了一个项目,该项目由其他项目迁移过来修修补补,kafka消息监听也有很多。于是乎,遇到新需求时,都是拷贝一份kafka配置过来,其中一份配置长这样:props.put("key.deserializer", "org.apache.kafka...

2020-12-23 19:44:45 113

原创 如何修改git已提交的commit message

git commit --amend会弹出一个编辑框,就像vim一样,按下键盘I键(insert)编辑好了过后,(:wq)保存即可

2020-12-22 10:37:06 300 1

原创 Kafka?看这篇就够了!

为什么要用消息中间件解耦、异步、削峰限流消息中间件常用工作模式至多消费一次消息生产者生产的消息如果被消费者消费后,消费者会向生产者服务器确认已消费,由生产者主动删除服务器的消费过的消息没有限制消费次数消息生产者发完消息后,该消息可以由多个消费者同时消费,并且同一个消费者可以多次消费消息服务器的同一个记录kafka架构kafka消息以topic分类,消息称为record每个topic底层都会对应一组partition分区的日志,用于持久化topic的re..

2020-10-30 00:12:16 69

原创 Java程序员需掌握的计算机基础

一、计算机系统概述一个完整的计算机系统包括:硬件系统和软件系统,如下图所示硬件:计算机装置,即物理设备。硬件系统:组成计算机系统的各种物理设备的总称。是计算机完成工作的物质基础,是软件建立和依托的基础。软件:某种计算机语言编写的程序、数据和相关文档的集合。指示计算机完成特定工作任务,是计算机系统的灵魂。软件系统:在计算机上运行的所有软件的总称。裸机:仅有硬件组成,没有软件的计算机。二、计算机硬件系统及工作原理冯·洛伊曼计算机体系结构特征:计算机由5个部分组成:运.

2020-10-08 23:32:10 149

转载 如何分库分表

数据库怎么分库分表,垂直?水平?一、数据库瓶颈不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。1、IO瓶颈第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 ->分库和垂直分表。第二种:网络IO瓶颈,请求的数据太多,网络带宽不够 ->分库。2、CPU瓶..

2020-09-24 10:52:17 282

原创 点击此文,免登陆下载JDK

创建账户是不可能创建账户的。只有偷个账号来用:http://bugmenot.com/view/oracle.com

2020-06-03 22:26:52 179

原创 不使用其他框架实现RPC远程调用
原力计划

回顾RPC框架节点 角色说明 Provider 提供远程服务的服务提供方 Consumer 调用远程服务的服务消费方 Registry 服务注册与发现的注册中心 Dubbo最重要的三个角色就是服务提供方、服务消费方、注册中心。下面我们通过Java原生API实现远程调用,不使用任何第三方框架!服务提供方package rpc.provider;/** * 服务提供方 接口 * * @author zab * @date 2020-05-

2020-05-17 21:55:18 169

原创 RabbitMQ原理笔记

1、AMQP高级消息队列协议和abbit的工作流程AMQP(Advanced Message Queuing Protocol,高级消息队列协议)是一个进程间传递异步消息的网络协议其工作流程如下图发布者将消息发送到指定的交换机,而使用者将消息从队列中拉出(或者队列根据配置将消息推送给消费者)消息发布者和消费者通信是通过公有的交换机名称,通常新建队列都会绑定到某一个交换机上...

2020-04-28 23:02:46 102

原创 Docker Nginx部署笔记

目的把前端开发的项目,用ng代理访问,前端基于antd+react已打包到dist文件夹Ng常用知识1、启停操作:nginx -s stop 快速关机nginx -s quit 正常关机nginx -s reload 重新加载配置文件nginx -s reopen 重新打开日志文件2、配置文件位置:/usr/local/nginx/conf,/etc/ng...

2020-04-06 09:22:11 2231

原创 后台管理系统打包笔记(antd+springboot)

1、前端项目,npm run build生成dist文件夹2、后台配置@Configuration@EnableWebMvcpublic class WebMvcConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry r...

2020-03-31 00:04:19 194

原创 Java多线程与高并发七(ThreadLocal源码)

ThreadLocal是什么ThreadLocal提供了线程局部变量,由该类保存的变量,会分开线程,不同的线程会保存不同的变量副本。import java.util.HashMap;import java.util.Map;public class ThreadLocalTest { ThreadLocal threadLocal = new ThreadLocal();...

2020-02-05 23:56:21 406

原创 Java多线程与高并发八(线程池)

Java多线程与高并发七本来想写ThreadLocal源码的,实在是看底层代码看不动了!先搁置吧。Java多线程与高并发八给同学们分享下面试中常考的线程池的七大参数!为什么要用线程池 防止频繁创建和销毁线程,让每个线程可以多次使用,防止消耗过多内存,所以我们使用线程池。为什么不用JDK自带线程池 像下面这样定义线程池,不香吗?为什么不用呢?...

2020-01-23 00:25:40 1061

原创 Java多线程与高并发六(Lock上锁底层实现原理)

我们前面介绍了Lock的基本用法,知道Lock有公平锁、非公平锁两种实现,也知道Lock底层是用CAS实现的,但我们前面并没有详细介绍底层实现,本文就围绕Lock的加锁操作介绍Lock的底层实现原理。 我们的切入点是可重入锁ReentrantLock的lock()方法:Lock lock = new ReentrantLock();lock.lock();跟进代码...

2019-11-17 23:33:18 894 1

原创 Java多线程与高并发五(常用并发工具类)

为了实现各种线程的操作,比如线程阻塞、阻塞恢复,JDK提供了大量模型来操纵线程运行。《Java多线程与高并发五(常用并发工具类)》给大家伙儿分享下JDK中常见的并发工具类。说一道面试题实现一个容器,提供add,size方法,两个线程,线程一添加十个元素到容器中,线程二监控容器中元素的个数,当线程一添加到容器的元素个数到5时,线程二给出提示并结束。解法一:wait/notify和syn...

2019-11-09 00:44:07 1203 1

原创 Java多线程与高并发四(Lock与CAS)

我们在《Java多线程与高并发一》中讲到怎样新建一个线程,用synchronized怎样给代码加锁,以及synchronized锁的优化升级。在《Java多线程与高并发二》中,我们认识了Java的内存模型和计算机的内存架构,以及二者之间的不同,怎样弥补。在《Java多线程与高并发三》中,我们我们认识了volatile关键字,以及其作用和深入原理。《Java多线程与高并发四》给大家介绍L...

2019-11-03 22:37:05 752

原创 Java多线程与高并发三(volatile关键字)

volatile关键字,开发中一般不用,主要用途就是用来面试造火箭,那么它在代码中的真正作用是啥呢??上一篇博客说到,对于现代多核心计算机而言,在多线程的情况下,如果一个变量没有加volatile修饰,可能出现线程间各自拷贝主内存的变量值到自己独有的线程CPU缓存中对数据做各种操作,导致变量的变化在线程间不可见的问题。volatile作用一:保证线程之间变量的可见性举个例子:...

2019-11-02 16:14:23 685

原创 Java多线程与高并发二(JMM)

JMM-Java内存模型Java虚拟机把Java的内存分为thread stacks和heap,在理解多线程的时候,这种粗糙的分法已足够。如图所示,该图有如下含义:1、每个线程都有自己的thread stack,意味着只要是存在于thread stack的变量都是线程独有,别的线程是不能访问的。说的直白点,即使两个线程执行相同代码,每个线程都独享变量。2、Java中的基础数据类型...

2019-10-29 17:07:03 722

原创 Java多线程与高并发一(基础知识)

Java多线程是面试重要考点,其知识面涉及深度和广度都是其他面试题型所不及的,本博客系列《Java多线程与高并发》记录了博主学习高并发与多线程的路径,知识点由浅入深,并附有大量案例程序,可以作为笔记随时翻查。话不多讲,上干货。程序、进程、线程程序:是一个静态的实体,是一组有序指令的集合,就是躺在硬盘上的一堆代码文件进程:程序运行起来,就是一个进程,每个进程占有某些系统资...

2019-10-22 23:20:45 2954

原创 聊聊Java8接口中的default和static方法

JDK1.8之前的接口回顾 在jdk1.8之前,我们对接口的认知是这样的: 1、方法:只能包含public和abstract的方法,即使定义为:interface Shape { //获取几何图形的面积 Double getArea(double length, double width);}方法前面也默认加了public abstract修饰...

2019-09-21 16:34:44 1326 3

转载 从头到尾谈Java垃圾回收

原著:聂晓龙(花名:率鸽),阿里巴巴高级开发工程师。之前上学的时候有这个一个梗,说在食堂里吃饭,吃完把餐盘端走清理的,是 C++ 程序员,吃完直接就走的,是 Java 程序员。

2019-07-30 22:16:48 643

原创 SpringBoot2.1.5实现动态数据源切换

问题1、数据不都是在一个库存在,可能需要到其他库去操作数据比如现在需要从两个不同库里去拿user数据而我们用springboot项目做配置一般是这么写的:其中url已经定位到一个库了,所有的操作都是基于这个test库里面的不同的表2、公司业务做得比较大,数据库需要主从分离基于以上两种问题,需要做数据源的动态切换。解决方案1、思路分析要想配置多个数据源,必...

2019-06-02 10:09:12 1466

原创 数据结构与算法——基础数据结构(数组和链表)

什么是线性表线性表是由零个或多个数据元素组成的有限序列。线性表是有限的 线性表第一个元素无前驱,最后一个元素无后继,中间元素只有一个前驱和后继元素 线性表可以是空表常见的线性表常见的线性表如下图所示常见的线性表数据结构有:数组,链表,队列,栈;与线性表相对的是稍稍复杂的数据结构,比如:树,图等。什么是数组数组是一种线性表,具有连续的内存空间,并且只能存储相同的数据...

2019-05-23 22:44:13 951

原创 AES前后端加解密踩坑记录

为什么要加密传输参数?采用什么加密方式?AES有多少中加密类型?是读者大人们自行百度的哟。话不多说,既然是踩坑记录,放心肯定是能解决问题的。上代码后端工具类import org.apache.commons.codec.binary.Base64;import javax.crypto.Cipher;import javax.crypto.spec.SecretKeySpec;...

2019-04-18 22:28:46 2161 3

原创 数据结构与算法——复杂度(下)

一个不一样的案例 上一章我们说到了什么是复杂度,怎样计算复杂度。但是之前提到的都是类似于以下案例的:int cal(int n) { int sum = 0; int j = 1; for (int i = 0; i <= n; i++) { sum = sum + i; } return sum; }...

2019-04-01 21:56:28 666

原创 数据结构与算法——复杂度(上)

数据结构是计算机存储、组织数据的方式。算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。程序员学习数据结构和算法,就是学习操纵数据结构解决问题的方法,就是学习如何更快速度更省空间的解决问题,即学习如何让代码跑的更快,如何让计算机更省存储空间。什么是时间复杂度和空间复...

2019-02-27 18:21:31 724

原创 SpringBoot2.0.6集成Dubbo(零xml)

springboot集成dubbo有多种方式,这里介绍一种比较新的不用xml的方式分享给大家,用到依赖dubbo-spring-boot-starter项目环境:win10+jdk1.8+zookeeper3.4.13+springboot2.0.6zookeeper的安装和配置不了解的,读者大人请自行百度。项目运行前,首先启动zookeeper的zkServer.cmd。项目结构...

2018-10-31 22:38:44 1569 4

原创 Maven内置属性

     有时候在看一些开源框架的配置文件(如swagger2)时,有些莫名其妙的属性不知道说的哪个文件夹,特查询资料做个总结,方便以后自己查阅。Maven属性内置属性(maven预定义,用户可以直接使用的)      主要有两个常用内置属性:      ${basedir}表示项目根目录,即包含pom.xml文件的目录      ${version}表示项目版本     ...

2018-10-21 19:58:32 699

原创 springboot2.0.5集成mybatis(PageHelper分页插件、generator插件使用)

用IDEA搭建springboot2.0.5项目选择Spring initializr就可以轻松搭建一个springboot项目,第一次搭建很费时在Group写上公司域名,Artifact写上项目名,打包用Jar选Web勾选SQL项,勾选MySQL、JDBC、MyBatis,这里选择了过后,IDEA会方便地帮我们导入相关依赖数据库建立CREATE TABL...

2018-09-28 17:04:58 7588 2

原创 SpringBoot2.0.4使用JPA和Redis

      近来研究SpringBoot持久化与缓存的问题,搜集资料做了一个Demo。      环境:Win10、JDK1.8、IDEA、Redis、Mysql5.7、Redis3.2、SpringBoot2.0.4Release版第一步建立一个学生表:CREATE TABLE `student` ( `sid` int(11) DEFAULT NULL, `sname` ...

2018-08-21 23:04:31 2856 3

转载 Spring-data-jpa介绍与使用

本篇进行Spring-data-jpa的介绍,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求。这里不讲解JPA和Spring-data-jpa单独使用,所有的内容都是在和Spring整合的环境中实现。如果需要了解该框架的入门,百度一下,很多入门的介绍。在这篇文章的接下来一篇,会有一个系列来讲解mybatis,这个系列从mybatis的入门开始,到基本使用,和spring整合,和第...

2018-08-17 12:35:27 772

转载 log4j详细使用

日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。一、入门实例1.新建一个JAva工程,导入包log4j-1.2.17.jar,整个工程最终目录如下2、src同级创建并设置log4j.properties ...

2018-07-18 23:08:25 731

原创 IDEA自定义方法注释(一张图搞定)

IDEA是开发java程序的神器,那么如何在方法上快速自定义一个注释呢?其实看一个图就会了:

2018-06-22 23:13:33 718

原创 自定义一个可以使用增强for循环的类

听说这是一道面试题,兴起研究了下ArrayList的源码熬制而成下列代码,主要使用两个接口:Iterable和Iterator。要实现一个类可以使用增强for循环第一步:使该类实现Iterable,字面理解是:让该类有能力迭代(-able),该接口只有一个需要实现的方法,即:iterator(),方法返回一个迭代器Iterator&lt;T&gt;;第二步:定义一个内部类,内部类实现Iterato...

2018-06-16 18:36:20 1511 2

空空如也

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除