自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(87)
  • 资源 (5)

原创 分布式session的实现方式

分布式session的实现方式引言        首先session 是啥?浏览器有个 cookie,在一段时间内这个 cookie 都存在,然后每次发请求过来都带上一个特殊的 jsessionid cookie,就根据这个东西,在服务端可以维护一个对应的 session 域,里面可以放点数据。session与cookie的区别在于session是记录在服务端的,而cookie是记录在客户端的。  &n

2020-10-15 11:01:45 14

原创 Zookeeper3.4.14(单集群)、Kafka_2.12-2.2.2(集群)安装

        最近消失了一段时间,去办理北航的非全研究生入学,回归校园生活感觉还不错,好了不说废话,记录下Zookeeper3.4.14(单集群)、Kafka_2.12-2.2.2(集群)安装。一、单机环境搭建1.1 下载下载对应版本 Zookeeper,这里我下载的版本 3.4.14 。官方下载地址:https://archive.apache.org/dist/zookeeper/wget方式直接wget htt

2020-10-13 23:22:48 37

原创 Java面试优秀博客总结

没事的时候可以多看看,多积累多学习,Java技术面试优秀博客总结:http://notfound9.github.io/interviewGuide/#/docs/BATInterviewhttps://me.csdn.net/ThinkWonhttps://snailclimb.gitee.io/javaguide/#/https://www.hadyang.xyz/interview/https://gongfukangee.github.io/https://github.com/gzc4

2020-07-12 22:54:32 66 1

原创 Redis哨兵模式原理简介

Redis哨兵模式原理Redis哨兵工作原理可以概括为3个阶段监控阶段,通知阶段,故障转移阶段。全部是文字,比较枯燥。监控阶段一个Sentinel的监控行为Sentinel1 向master发送infomaster返回info信息给Sentinel 1Sentinel1 与master建立cmd连接Sentinel1 向所有slave发送infoSentinel1 记录SentinelState(包括master,slave,sentinels )master记录SentinelRedis

2020-07-12 22:24:07 52

翻译 配置JVM堆栈大小

概述在本快速教程中,我们将了解如何在HotSpot JVM中配置线程堆栈大小。默认堆栈大小每个JVM线程都有一个私有的本机堆栈来存储调用堆栈信息、本地变量和部分结果。因此,堆栈在方法调用中起着至关重要的作用。而每个JVM实现都使用JVM规范。但是,其他实现细节,例如堆栈大小,是特定于实现的。从现在起,我们将讨论HotSpot JVM,并将使用JVM术语和设置HotSpot JVM堆栈大小。当JVM在创建线程的同时会创建堆栈。如果我们不指定堆栈的大小,JVM将创建一个默认大小的堆栈。通常,这个默认

2020-07-11 18:19:37 253

原创 java8函数式编程

java中的函数式编程/** * 函数式编程demo */public class FunctionalTest { static void testCompare1(int src, double limit) { double d= src*src+src * 10.0; if (d < limit){ System.out.println("Success: " + d); }else {

2020-06-03 00:01:09 56

原创 自定义一个spring-boot-starter

自定义spring-boot-starter1.自定义starter项目Spring 官方定义的 starter 通常命名遵循的格式为 spring-boot-starter-{name},例如 spring-boot-starter-web。非官方 starter 命名应遵循 {name}-spring-boot-starter 的格式,例如,dubbo-spring-boot-starter 。创建一个Spring Boot项目,名称jsonformat-spring-boot-starter。

2020-06-02 23:45:16 57

原创 docker安装部分软件(自用)

docker-redisdocker run -d -p 6379:6379 --name redis redis:4.0 redis-server --appendonly yes --requirepass “pppp”docker run -d -p 6379:6379 -v $PWD/data:/data --name redis redis:4.0 redis-server --appendonly yes --requirepass “ppppp”命令说明:-p 6379:637

2020-05-28 21:22:54 76

原创 制作更小的springboot项目docker容器

制作更小的springboot项目docker容器操作一:选择一个更小的基础镜像通常情况下我们的Dockerfile文件如下FROM java:8VOLUME /tmpADD myserver.jar app.jarRUN bash -c 'touch /app.jar'RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeRUN echo "Asia/Shanghai" > /etc/timezoneENTRYPOIN

2020-05-28 21:11:54 73

原创 docker-nginx

docker-nginx新建目录mkdir -p nginx/{log,conf,html}切换到nginx目录下cd nginx你会看到3个文件夹conf,html,log他们分别对应着容器中的文件目录,如下宿主机下目录容器中的文件目录容器文件目录说明conf/etc/nginx/conf.d默认配置文件目录html/usr/share/nginx/html静态文件目录log/var/log/nginx日志目录简单启动直接制作容器d

2020-05-28 21:09:30 67

转载 服务端限流

限流的常见算法有以下三种:时间窗口算法借助 Redis 的有序集合 ZSet 来实现时间窗口算法限流,实现的过程是先使用 ZSet 的 key 存储限流的 ID,score 用来存储请求的时间,每次有请求访问来了之后,先清空之前时间窗口的访问量,统计现在时间窗口的个数和最大允许访问量对比,如果大于等于最大访问量则返回 false 执行限流操作,负责允许执行业务逻辑,并且在 ZSet 中添加一条有效的访问记录.漏桶算法滑动时间算法有一个问题就是在一定范围内,比如 60s 内只能有 10 个请求,当第一

2020-05-23 21:29:47 53

原创 select和epoll的优缺点

select和epoll的优缺点select,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据...

2020-04-19 19:16:55 107

原创 用go实现简单负载均衡器

用go实现简单负载均衡器本文实现简单的轮询负载均衡,如下图思路介绍:需要一个server代理去接收请求需要一个后台服务结构体,用来存储后台服务信息以及状态需要一个后台服务数组,用来维护所有的后台服务需要一个轮询算法,当server接收到请求按照此算法代理到服务端需要一个配置文件以及读取配置文件的工具,用来存储类似于nginx.conf配置读取配置文件使用http://git...

2020-04-05 20:12:53 104

原创 阿里rocketmq安装

rocketmq-windows安装启动RocketMQ(1)下载RocketMQ服务器下载地址:http://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.5.0/rocketmq-all-4.5.0-binrelease.zip(2)解压并启动启动nameserver:set ROCKETMQ_HOME=[rocketmq服务端解压路...

2020-03-29 23:30:27 44

原创 Java14 Helpful NullPointerExceptions

java14 新特性之一JEP 358: Helpful NullPointerExceptions此功能通过精确描述哪个变量为null以及其他有用信息,提高了NullPointerExceptions 的可用性。这将提高开发人员的生产率,并提高许多开发和调试工具的质量。使用编译时只要加入(-XX:+ShowCodeDetailsInExceptionMessages)参数就能定位空指针错误...

2020-03-18 21:41:31 227

翻译 JVM内存溢出原因及解决方案总结

1. Java 堆空间发生频率:5颗星造成原因无法在 Java 堆中分配对象吞吐量增加应用程序无意中保存了对象引用,对象无法被 GC 回收应用程序过度使用finalizer。finalizer 对象不能被 GC 立刻回收。finalizer 由结束队列服务的守护线程调用,有时finalizer 线程的处理能力无法跟上结束队列的增长解决方案单位对应:GB -> G, g;M...

2020-03-03 10:56:53 119

原创 架构笔记

高可用设计手段无状态化–服务冗余负载均衡–幂等设计异步化设计–超时机制服务限流降级熔断–数据复制/缓存架构拆分、服务治理–sharding高可用案例网关层具备热切换能力高并发设计手段缩短响应时间提高并发数(增加吞吐量)让系统处于合理状态高并发优化手段空间换时间/时间换空间/找到系统瓶颈调用了多少RPC接口?载入多少数据?使用什么算法?非核心流程能否异步化?没...

2020-02-22 18:08:05 141

原创 JVM内存泄露排查指令

JVM内存泄露排查指令查看系统中各个进程状态top题外话记录下:使用特定端口查找进程的PIDss -ltnup 'sport = :22'l – show only listening socketst – show TCP connectionsn – show addresses in a numerical formu – show UDP connectionsp –...

2019-11-28 09:37:11 104

原创 windows下minikube安装启动

1. windows下minikube安装启动1.1. 第一版1.1.1. 安装minikube直接使用官方安装包安装,minikube-installer.exe,点击运行安装即可1.1.2. 安装kubectl直接下载放置F:\kubectl\(自定义文件夹)下,环境变量需要自己配置一波1.1.3. 安装virtual box因为minikube默认使用virtualbox,故第...

2019-10-24 15:02:53 1188

转载 Java 异步编程:从 Future 到 Loom

Java 异步编程:从 Future 到 Loom    本文对我们了解异步编程有很好的指导性,稍长,希望大家耐心阅读。    众所周知,Java 开始方法执行到结束,都是由同一个线程完成的。这种方式虽易于开发调试,但容易因为锁、IO 等原因导致线程挂起,产生线程上下文切换。随着对应用并发能力要求越来越高,频繁的线程上下文切换所带来的成本变得难以忽视。同时,线程也是相对宝贵的资源,无限制的增加...

2019-10-21 11:30:28 599

原创 某部门的一个电话面试

因为其电话面试问的是一些基础,刚好这些问题是我的短板,故记录一下。1、mysql的事务特性原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)2、mysql的事务的隔离级别Read Uncommitted(读取未提交内容)Read Committed(读取提交内容)Repeatable Read(可重读)Seri...

2019-08-30 17:02:13 255

原创 Map最佳实践

今天的主题是map和一些错误的使用。我们通过减少map的hash来进行优化,这些方法都会进行一次hash,比如get, containsKey, put等等。我们以前可能出现的代码if (map.containsKey(key)) { // one hash return map.get(key); // two hash}List<String> list = new...

2019-08-28 14:53:34 89

原创 docker-compose的安装

docker-compose的安装安装下载docker-composesudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose想用不同版本直接替换1.24....

2019-07-24 10:42:23 21

原创 Spring Data JPA中的@DynamicUpdate注解

Spring Data JPA中的@DynamicUpdate注解使用    @DynamicUpdate属于类级别的注解,一般使用在JPA entity 类.如下@Entity@DynamicUpdatepublic class User { // Existing data and methods}作用  &...

2019-07-24 10:35:37 1494

原创 Docker未做防护,被拉去挖矿

我中奖了一般都说redis容易中病毒,但是今天要说的是docker。我们测试服务器未做docker的安全防护,开启了私有仓库的2357端口,导致https://hub.docker.com/r/zoolu2/jauto中了这个的奖,已经pull了50K+了,如果你发现你们的服务器cpu爆炸,快检查一下吧。建议为了避免您成为此种恶意入侵和挖矿事件的受害者,建议:不要将对内使用的服务(如D...

2019-06-05 14:39:53 1921

原创 JVM规范的栈帧Frames

栈帧Frames  1. 代码中方法的调用在JVM中转换成的是字节码执行,字节码指令执行的数据结构就是栈帧(stack frame),也就是在虚拟机栈中的栈元素。  2. 栈帧是用来存储数据和部分结果的数据结构,同时也用来处理动态链接、方法返回值和异常分派。  3. 栈帧随着方法调用而创建,随着方法调用完成(不论是正常完成或者异常完...

2019-06-05 14:11:26 231

原创 Springboot2.2中的RSocket体验

Springboot2.2中的RSocket体验什么是RSocket?RSocket是一种二进制协议,用于TCP、websocket和Aeron等字节流传输。它通过异步消息在单个连接上传递,支持以下对称交互模型:request/response (stream of 1)request/stream (finite stream of many)fire-and-forget (no ...

2019-05-27 20:05:12 3433 1

原创 对技术的追求

1. 专业基础观点    看似最枯燥、最基础的东西往往具有最长久的生命力。所以,对于我们程序员成长过程中来说,最重要的是什么?就是那些最基础的知识。    不要天天谈什么框架,什么库,框架每年层出不穷,可是扒下框架那层炫酷漂亮的外衣,里面还是那些最基础的知识和原理。操作系统、编译原理、计算机组成原理、计算机网络原理...

2019-05-15 19:03:50 196

原创 JVM运行时数据区(Run-Time Data Areas)

JVM运行时数据区(Run-Time Data Areas)    今天在网上搜索了关于JVM运行时数据区的介绍,发现很多人对于这个基础知识的理解偏差,简单列举几个比如有人认为方法区在jdk8被移除了;之后查阅了jdk8的JVM架构介绍,jdk11的JVM架构介绍 确定了一些事儿,先贴一张图,根据官方介绍自己画的.pc寄存器(The pc Regi...

2019-05-01 18:48:27 269

原创 Java关于String问题

1. string常量问题1.1. 运行时常量池与Class文件常量池区别JVM对Class文件中每一部分的格式都有严格的要求,每一个字节用于存储那种数据都必须符合规范上的要求才会被虚拟机认可、装载和执行;但运行时常量池没有这些限制,除了保存Class文件中描述的符号引用,还会把翻译出来的直接引用也存储在运行时常量区java代码编译后,程序会先被编译为.class文件,编译后的字节码文件格式...

2019-05-01 18:42:41 96

原创 C语言之输入输出

输入输出在C语言中,有三个函数可以用来在显示器上输出数据,它们分别是:puts():只能输出字符串,并且输出结束后会自动换行。putchar():只能输出单个字符。printf():可以输出各种类型的数据,在前面的很多章节中都进行了介绍。printf() 是最灵活、最复杂、最常用的输出函数,完全可以替代 puts() 和 putchar(),大家一定要掌握。前面的章节中我们已经介绍了 p...

2019-04-30 00:03:47 1315

原创 服务部署与持续集成(一)

服务部署与持续集成(一)Dockerfile什么是Dockerfile?Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。对于开发人员:可以为开发团队提供一个完全一致的开发环境;对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了;对于运维人员:在部署时,可以实现应用的无缝移植。常用...

2019-04-23 22:21:05 197

原创 响应式编程中的Flux和Mono

响应式编程介绍反应式编程来源于数据流和变化的传播,意味着由底层的执行模型负责通过数据流来自动传播变化。比如求值一个简单的表达式 c=a+b,当 a 或者 b 的值发生变化时,传统的编程范式需要对 a+b 进行重新计算来得到 c 的值。如果使用反应式编程,当 a 或者 b 的值发生变化时,c 的值会自动更新。反应式编程最早由 .NET 平台上的 Reactive Extensions (Rx) 库...

2019-04-22 21:46:43 9855 2

原创 如何避免在java中检查null语句(多种解决方案)

1. 概述通常,null的变量、引用和集合在Java代码中很难处理。它们不仅很难辩别,而且处理起来也很复杂.事实上,在编译时无法识别处理null的任何错误,并在运行时导致NullPointerException异常.在本教程中,我们将了解在Java中检查处理null的必要性,以及帮助我们避免在代码中检查处理null的各种替代方法.2. 什么是NullPointerException(NPE...

2019-04-20 11:34:13 1958

原创 SpringMVC的函数式编程

SpringMVC的函数式编程Spring 5.0开始拥抱响应式ReactiveStreams特性,并介绍一种新的响应式Reactive技术栈来替代传统的Servlet技术栈.而且它还为开发者提供了函数时编程模型,但是这种编程模型只针对Reactive技术栈提供.下面说个好消息,在即将到来的Spring5.2中,类似于APIs式的函数式编程将移植到Servlet技术栈,对于坚持使用Servle...

2019-04-17 22:24:29 331

原创 C语言之指针

指针指针概念计算机中所有的数据都必须放在内存中,不同类型的数据占用的字节数不一样,例如 int 占用4个字节,char 占用1个字节。为了正确地访问这些数据,必须为每个字节都编上号码,就像门牌号、身份证号一样,每个字节的编号是唯一的,根据编号可以准确地找到某个字节。下图是 4G 内存中每个字节的编号(以十六进制表示):我们将内存中字节的编号称为地址(Address)或指针(Pointer...

2019-04-16 22:50:26 82

翻译 Springboot2.2版本的延迟初始化

Springboot2.2版本的延迟初始化在最近公布的Spring Boot 2.2的第一个里程碑,引入了延迟初始化的支持。这篇文章描述这个新功能,并解释了如何以及何时启用它。懒惰Lazy是什么意思?自从11年前源代码迁移到Git之前,Spring Framework已经支持了延迟的bean初始化。默认情况下,在刷新应用程序上下文时,将创建上下文中的每个bean并注入其依赖。相反,如果将be...

2019-04-14 12:13:09 1025

转载 RSocket:又一个 REST 的挑战者

RSocket:又一个 REST 的挑战者本文要点:表征状态转移(REST)已经成为微服务通信事实上的标准。作者认为,这不是一件好事——事实上,这是一件非常糟糕的事,尤其是对于微服务通信来说。REST 是基于 HTTP 实现的。使用 REST 的一个常见理由是,它很容易调试,因为它是“人类可读的”。不容易阅读是工具问题。在微服务通信协议设计中,我们需要的部分特性包括二进制序列化、双向通信...

2019-04-12 09:56:26 926

原创 C语言之文件操作

1. 文件操作1.1. 文件概述我们对文件的概念已经非常熟悉了,比如常见的 Word 文档、txt 文件、源文件等。文件是数据源的一种,最主要的作用是保存数据。在操作系统中,为了统一对各种硬件的操作,简化接口,不同的硬件设备也都被看成一个文件。对这些文件的操作,等同于对磁盘上普通文件的操作。例如:通常把显示器称为标准输出文件,printf 就是向这个文件输出数据;通常把键盘称为标准输入文...

2019-04-06 22:50:11 125

转载 浅谈 RPC、RMI、REST 这些很绕的概念

什么是 RPCRPC(Remote Procedure Call) 翻译过来叫远程过程调用,加上 Protocol 之后也有称之为远程过程调用协议,可以由不同的语言实现,根据维基百科的解释 —— RPC 指在分布式环境下,一个计算机程序能调用另一个不同地址空间里的方法(不同地址空间通常指局域网下的另一台计算机),但是编码的形式就像调用一个本地方法一样,程序员不用去关心背后的细节。为什...

2019-03-29 17:34:01 246

XMind脑图XMind ZEN 9.1.3 Portable便携版

XMind 是一款非常实用的商业思维导图软件,应用全球最先进的Eclipse RCP 软件架构,全力打造易用、高效的可视化思维软件,免费版,适合学习和研究

2019-03-29

正计时插件

使用js实现的正计时插件,简单易用很强大,可以自己修改代码实现更好的效果。

2018-04-26

蓝牙扫描连接测试好工具啊

可以扫描连接蓝牙设备,可模拟给蓝牙发指令,你懂的。

2018-04-26

weixin-java-mp -2.5 -api

weixin-java-mp -2.5的api说明文档,可以好好研究,封装了支付等接口

2017-12-04

jquery-3.2.1.min.js

积分竟然最少1分,本来想免费的

2017-08-11

空空如也

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