- 博客(89)
- 资源 (5)
- 收藏
- 关注
原创 某团 java面试
Java-某团三轮技术面基于牛客网平台第一轮先自我介绍+技术+二叉树算法题(leetcode简单题)这一轮聊的最舒服,聊的时间最长1个半小时,面试官特别友善,遇到我不会的问题,想让思考,然后再给我部分提示。就像是和好友聊天,然后即面试了,也学到了知识,真的nice。0.先自我介绍。说下自己的优点和缺点。1.项目中为啥用netty?使用netty具体实现了什么?拆包粘包怎么解决?2.为什么要用redis?redis用过哪些数据结构?string的底层实现?hashmap的rehash和redis
2021-03-06 22:32:34 362 1
转载 Kafka基本概念
Kafka概念一个Topic0可以有多个partition(partition0,partition1…partition N)Kafka集群最少3个KafKaServer,也就是3个broker一个Topic0消息分别保存在3个brokerTopic0-partition0分别保存在3个broker,由1个leader和2个followerTopic0-partition0-leader负责Topic0-partition0的数据的读写brokerKafka 集群包含一个或多个服务器,服务
2021-01-15 16:52:01 2047
原创 记录hive on tez报错
记录hive on tez报错我使用的hadoop以及hive还有tez的版本是:hadoop-2.6.0-cdh5.16.2hive-1.1.0-cdh5.16.2tez-0.8.5上测试成功结果Query ID = root_20201023210303_3bda0a6a-6f65-41fe-9c18-64b582c5d2d8Total jobs = 1Launching Job 1 out of 1Status: Running (Executing on YARN cluste
2020-10-23 21:24:02 1215 2
原创 分布式session的实现方式
分布式session的实现方式引言 首先session 是啥?浏览器有个 cookie,在一段时间内这个 cookie 都存在,然后每次发请求过来都带上一个特殊的 jsessionid cookie,就根据这个东西,在服务端可以维护一个对应的 session 域,里面可以放点数据。session与cookie的区别在于session是记录在服务端的,而cookie是记录在客户端的。 &n
2020-10-15 11:01:45 871 1
原创 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 564
原创 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 412 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 349
翻译 配置JVM堆栈大小
概述在本快速教程中,我们将了解如何在HotSpot JVM中配置线程堆栈大小。默认堆栈大小每个JVM线程都有一个私有的本机堆栈来存储调用堆栈信息、本地变量和部分结果。因此,堆栈在方法调用中起着至关重要的作用。而每个JVM实现都使用JVM规范。但是,其他实现细节,例如堆栈大小,是特定于实现的。从现在起,我们将讨论HotSpot JVM,并将使用JVM术语和设置HotSpot JVM堆栈大小。当JVM在创建线程的同时会创建堆栈。如果我们不指定堆栈的大小,JVM将创建一个默认大小的堆栈。通常,这个默认
2020-07-11 18:19:37 4109 2
原创 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 227
原创 自定义一个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 283
原创 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 240
原创 制作更小的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 589
原创 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 212
转载 服务端限流
限流的常见算法有以下三种:时间窗口算法借助 Redis 的有序集合 ZSet 来实现时间窗口算法限流,实现的过程是先使用 ZSet 的 key 存储限流的 ID,score 用来存储请求的时间,每次有请求访问来了之后,先清空之前时间窗口的访问量,统计现在时间窗口的个数和最大允许访问量对比,如果大于等于最大访问量则返回 false 执行限流操作,负责允许执行业务逻辑,并且在 ZSet 中添加一条有效的访问记录.漏桶算法滑动时间算法有一个问题就是在一定范围内,比如 60s 内只能有 10 个请求,当第一
2020-05-23 21:29:47 320
原创 select和epoll的优缺点
select和epoll的优缺点select,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据...
2020-04-19 19:16:55 2082
原创 用go实现简单负载均衡器
用go实现简单负载均衡器本文实现简单的轮询负载均衡,如下图思路介绍:需要一个server代理去接收请求需要一个后台服务结构体,用来存储后台服务信息以及状态需要一个后台服务数组,用来维护所有的后台服务需要一个轮询算法,当server接收到请求按照此算法代理到服务端需要一个配置文件以及读取配置文件的工具,用来存储类似于nginx.conf配置读取配置文件使用http://git...
2020-04-05 20:12:53 719
原创 阿里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 314 1
原创 Java14 Helpful NullPointerExceptions
java14 新特性之一JEP 358: Helpful NullPointerExceptions此功能通过精确描述哪个变量为null以及其他有用信息,提高了NullPointerExceptions 的可用性。这将提高开发人员的生产率,并提高许多开发和调试工具的质量。使用编译时只要加入(-XX:+ShowCodeDetailsInExceptionMessages)参数就能定位空指针错误...
2020-03-18 21:41:31 402
翻译 JVM内存溢出原因及解决方案总结
1. Java 堆空间发生频率:5颗星造成原因无法在 Java 堆中分配对象吞吐量增加应用程序无意中保存了对象引用,对象无法被 GC 回收应用程序过度使用finalizer。finalizer 对象不能被 GC 立刻回收。finalizer 由结束队列服务的守护线程调用,有时finalizer 线程的处理能力无法跟上结束队列的增长解决方案单位对应:GB -> G, g;M...
2020-03-03 10:56:53 451
原创 架构笔记
高可用设计手段无状态化–服务冗余负载均衡–幂等设计异步化设计–超时机制服务限流降级熔断–数据复制/缓存架构拆分、服务治理–sharding高可用案例网关层具备热切换能力高并发设计手段缩短响应时间提高并发数(增加吞吐量)让系统处于合理状态高并发优化手段空间换时间/时间换空间/找到系统瓶颈调用了多少RPC接口?载入多少数据?使用什么算法?非核心流程能否异步化?没...
2020-02-22 18:08:05 260
原创 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 360
原创 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 4074
转载 Java 异步编程:从 Future 到 Loom
Java 异步编程:从 Future 到 Loom 本文对我们了解异步编程有很好的指导性,稍长,希望大家耐心阅读。 众所周知,Java 开始方法执行到结束,都是由同一个线程完成的。这种方式虽易于开发调试,但容易因为锁、IO 等原因导致线程挂起,产生线程上下文切换。随着对应用并发能力要求越来越高,频繁的线程上下文切换所带来的成本变得难以忽视。同时,线程也是相对宝贵的资源,无限制的增加...
2019-10-21 11:30:28 2136 1
原创 某部门的一个电话面试
因为其电话面试问的是一些基础,刚好这些问题是我的短板,故记录一下。1、mysql的事务特性原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)2、mysql的事务的隔离级别Read Uncommitted(读取未提交内容)Read Committed(读取提交内容)Repeatable Read(可重读)Seri...
2019-08-30 17:02:13 477
原创 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 237
原创 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 120
原创 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 6022
原创 JVM规范的栈帧Frames
栈帧Frames 1. 代码中方法的调用在JVM中转换成的是字节码执行,字节码指令执行的数据结构就是栈帧(stack frame),也就是在虚拟机栈中的栈元素。 2. 栈帧是用来存储数据和部分结果的数据结构,同时也用来处理动态链接、方法返回值和异常分派。 3. 栈帧随着方法调用而创建,随着方法调用完成(不论是正常完成或者异常完...
2019-06-05 14:11:26 615
原创 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 5939 2
原创 对技术的追求
1. 专业基础观点 看似最枯燥、最基础的东西往往具有最长久的生命力。所以,对于我们程序员成长过程中来说,最重要的是什么?就是那些最基础的知识。 不要天天谈什么框架,什么库,框架每年层出不穷,可是扒下框架那层炫酷漂亮的外衣,里面还是那些最基础的知识和原理。操作系统、编译原理、计算机组成原理、计算机网络原理...
2019-05-15 19:03:50 1126
原创 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 667
原创 Java关于String问题
1. string常量问题1.1. 运行时常量池与Class文件常量池区别JVM对Class文件中每一部分的格式都有严格的要求,每一个字节用于存储那种数据都必须符合规范上的要求才会被虚拟机认可、装载和执行;但运行时常量池没有这些限制,除了保存Class文件中描述的符号引用,还会把翻译出来的直接引用也存储在运行时常量区java代码编译后,程序会先被编译为.class文件,编译后的字节码文件格式...
2019-05-01 18:42:41 232
原创 C语言之输入输出
输入输出在C语言中,有三个函数可以用来在显示器上输出数据,它们分别是:puts():只能输出字符串,并且输出结束后会自动换行。putchar():只能输出单个字符。printf():可以输出各种类型的数据,在前面的很多章节中都进行了介绍。printf() 是最灵活、最复杂、最常用的输出函数,完全可以替代 puts() 和 putchar(),大家一定要掌握。前面的章节中我们已经介绍了 p...
2019-04-30 00:03:47 14983
原创 服务部署与持续集成(一)
服务部署与持续集成(一)Dockerfile什么是Dockerfile?Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。对于开发人员:可以为开发团队提供一个完全一致的开发环境;对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了;对于运维人员:在部署时,可以实现应用的无缝移植。常用...
2019-04-23 22:21:05 382
原创 响应式编程中的Flux和Mono
响应式编程介绍反应式编程来源于数据流和变化的传播,意味着由底层的执行模型负责通过数据流来自动传播变化。比如求值一个简单的表达式 c=a+b,当 a 或者 b 的值发生变化时,传统的编程范式需要对 a+b 进行重新计算来得到 c 的值。如果使用反应式编程,当 a 或者 b 的值发生变化时,c 的值会自动更新。反应式编程最早由 .NET 平台上的 Reactive Extensions (Rx) 库...
2019-04-22 21:46:43 22963 5
原创 如何避免在java中检查null语句(多种解决方案)
1. 概述通常,null的变量、引用和集合在Java代码中很难处理。它们不仅很难辩别,而且处理起来也很复杂.事实上,在编译时无法识别处理null的任何错误,并在运行时导致NullPointerException异常.在本教程中,我们将了解在Java中检查处理null的必要性,以及帮助我们避免在代码中检查处理null的各种替代方法.2. 什么是NullPointerException(NPE...
2019-04-20 11:34:13 5404 1
原创 SpringMVC的函数式编程
SpringMVC的函数式编程Spring 5.0开始拥抱响应式ReactiveStreams特性,并介绍一种新的响应式Reactive技术栈来替代传统的Servlet技术栈.而且它还为开发者提供了函数时编程模型,但是这种编程模型只针对Reactive技术栈提供.下面说个好消息,在即将到来的Spring5.2中,类似于APIs式的函数式编程将移植到Servlet技术栈,对于坚持使用Servle...
2019-04-17 22:24:29 709
原创 C语言之指针
指针指针概念计算机中所有的数据都必须放在内存中,不同类型的数据占用的字节数不一样,例如 int 占用4个字节,char 占用1个字节。为了正确地访问这些数据,必须为每个字节都编上号码,就像门牌号、身份证号一样,每个字节的编号是唯一的,根据编号可以准确地找到某个字节。下图是 4G 内存中每个字节的编号(以十六进制表示):我们将内存中字节的编号称为地址(Address)或指针(Pointer...
2019-04-16 22:50:26 708
翻译 Springboot2.2版本的延迟初始化
Springboot2.2版本的延迟初始化在最近公布的Spring Boot 2.2的第一个里程碑,引入了延迟初始化的支持。这篇文章描述这个新功能,并解释了如何以及何时启用它。懒惰Lazy是什么意思?自从11年前源代码迁移到Git之前,Spring Framework已经支持了延迟的bean初始化。默认情况下,在刷新应用程序上下文时,将创建上下文中的每个bean并注入其依赖。相反,如果将be...
2019-04-14 12:13:09 1625
转载 RSocket:又一个 REST 的挑战者
RSocket:又一个 REST 的挑战者本文要点:表征状态转移(REST)已经成为微服务通信事实上的标准。作者认为,这不是一件好事——事实上,这是一件非常糟糕的事,尤其是对于微服务通信来说。REST 是基于 HTTP 实现的。使用 REST 的一个常见理由是,它很容易调试,因为它是“人类可读的”。不容易阅读是工具问题。在微服务通信协议设计中,我们需要的部分特性包括二进制序列化、双向通信...
2019-04-12 09:56:26 1207
XMind脑图XMind ZEN 9.1.3 Portable便携版
2019-03-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人