- 博客(29)
- 资源 (1)
- 收藏
- 关注
原创 HTTP和HTTPS的区别和常见的面试题
本篇会着重介绍http和https的区别和常见的面试题常见的http和https面试题:Http与Https的基本概念和他们的区别 HTTPS工作原理 常用的HTTP方法有哪些 GET方法与POST方法的区别,什么时候应该使用GET什么时候应该使用POST HTTP请求报文与响应报文格式 常见的HTTP的状态码 HTTP1.0,1.1,2.0之间的区别和特性 常见HTTP首部字段 HTTP的缺点与HTTPS有哪些改进 HTTP优化 一个页面从输入 URL 到页面加载显示完成,.
2021-01-21 15:51:59
422
原创 Git Checkout提示Another git process seems to be running in this repository...
原因在于Git在使用过程中遭遇了奔溃,部分被上锁资源没有被释放导致的打开项目文件夹,打开显示隐藏文件,进入隐藏文件.git,其中的index.lock文件删除掉,然后重新打开git bash进程,问题解决。...
2020-12-29 10:57:17
352
原创 HDFS Pipeline Recovery
pipeline 写入的三个阶段1.pipeline setup:Client 发送一个写请求沿着 pipeline 传递下去,最后一个 DataNode 收到后发回一个确认消息。Client 收到确认后,pipeline 设置准备完毕,可以往里面发送数据了。2.data streaming:Client 将一个 block 拆分为多个 packet 来发送(默认一个 block 64MB,太大所以需要拆分)。Client 持续往 pipeline 发送 packet,在收到 packet .
2020-11-13 16:30:46
467
原创 java面试-JVM内存区域划分
JVM内存划分说到Java内存区域,刚开始接触java的人会下意识说出“堆栈”。这里要明确堆栈不是一个概念,而是两个概念,堆和栈是两块不同的内存区域,简单理解的话,堆是用来存放对象而栈是用来执行程序的。其次,堆内存和栈内存的这种划分方式比较粗糙,这种划分方式只能说明大多数程序员最关注的、与对象内存分配关系最密切的内存区域是这两块,Java内存区域的划分实际上远比这复杂。对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每一个new操作去配对delete/free代码,不容易出现内存泄露
2020-07-01 20:23:56
164
原创 如何解决内存不足场景中 Linux下的OOM Killer情况
前言linux 下的OOM问题的原因通常是因为某时刻应用程序大量请求内存导致系统内存不足造成的,这通常会触发 Linux 内核里的 Out of Memory (OOM) killer,OOM killer 会杀掉某个进程以腾出内存留给系统用,不致于让系统立刻崩溃。如果检查相关的日志文件(/var/log/messages)就会看到下面类似的 Out of memory: Kill process 信息:Linux内存分配Linux 内核根据应用程序的要求分配内存,通常来说应..
2020-05-25 19:28:41
765
原创 JAVA面试-并发编程中的锁
Synchronized相关问题问题一,Synchronized用过吗,其原理是什么Synchronized是由jvm实现的保持线程互斥的一种方式,底层字节码被编译成monitorenter和monitorexit两个指令,在遇到monitorenter时,会把对象的锁计数器+1.代表这个已经获取到了锁,在monitorexit将锁计数器-1 代表释放锁问题二:你刚才提到获取对象的锁,这个“锁”到底是什么?如何确定对象的锁?这个锁就是一个Refrence对象,也就是要加锁或者解锁的.
2020-05-16 22:30:57
230
原创 [LeetCode] 95. Unique Binary Search Trees II 独一无二的二叉搜索树之二
题目Given an integern, generate all structurally uniqueBST's(binary search trees) that store values 1 ...n.Example:Input: 3Output:[ [1,null,3,2], [3,2,null,1], [3,1,null,null,2],...
2020-04-25 01:35:03
133
原创 MySQL 经常考察难点和热点
基本架构MySQL是典型的三层架构模式,在平常使用中对MySQL问题排查和优化,也应该针对具体问题,从对应的层解决问题三层架构主要分为一下三个服务层:经典的C/S架构,主要是处理连接和安全验证 核心层:处理MySQL核心业务 存储引擎层:存储引擎负责数据的存储和提取核心层通过存储引擎的API与存储引擎通信,这样就可以屏蔽不同的存储引擎的差异,使得差异对上层透明化...
2019-03-01 10:55:16
904
原创 数据库经典类型题
1、MySQL的复制原理以及流程(基本原理流程,3个线程以及之间的关联;)主:binlog(负责记录表和库变更的二进制文件,可以用于本机的数据恢复和主从同步)线程将改变了数据库的语句进行记录,放进master上面的binlog中 从:io线程:使用了startsalve(打开主从同步)之后,负责从master上面的binlog中拉取内容,放进自己的relaylog(中继log)中...
2019-02-28 22:06:40
167
原创 TCP 为什么是三次握手,而不是两次或四次?
TCP协议的一些知识TCP(Transmission Control Protocol) 传输控制协议TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置...
2019-02-21 11:19:53
534
原创 JVM常见面试题--关于虚拟机之虚拟机类加载机制的问题
一般作为Java程序员在面试的时候一般会问的大多就是Java内存区域、虚拟机垃圾算法、虚拟垃圾收集器、JVM内存管理这些问题了,对此我参照了一些网上的面试题做出了一些总结 简单说说类加载过程,里面执行了哪些操作? 加载阶段由三个基本动作组成:通过类型的完全限定名,产生一个代表该类型的二进制数据流 解析这个二进制数据流为方法区内的运行时数据结构 创建一个表示该类型的java....
2019-01-31 22:59:21
188
原创 JVM常见面试题--关于java内存区域的问题
一般作为Java程序员在面试的时候一般会问的大多就是Java内存区域、虚拟机垃圾算法、虚拟垃圾收集器、JVM内存管理这些问题了,对此我参照了一些网上的面试题做出了一些总结 介绍下Java内存区域(运行时数据区) 程序计数器:线程私有,因为在线程切换后,要能够恢复到正确的位置,所以是私有的,工作的时候通过改变程序计数器的值来选取下一条指令进行执行 Java虚拟机栈:同样线程私有,生...
2019-01-31 22:34:45
707
原创 JVM常见面试题--关于虚拟机垃圾回收的问题
一般作为Java程序员在面试的时候一般会问的大多就是Java内存区域、虚拟机垃圾算法、虚拟垃圾收集器、JVM内存管理这些问题了,对此我参照了一些网上的面试题做出了一些总结 如何判断对象是否死亡(两种方法) 可达性分析: 这个算法的基本思想就是通过一系列的GC Root对象作为起点,从这些节点开始向下搜索,节点所走过的路称之为引用链,当一个对象没有被任何引用链链接的话,这个对象就...
2019-01-31 11:47:19
374
原创 java并发—AQS原理
AQS的经典问题 AQS的原理是什么 CountDownLatch和CyclicBarrier了解吗,两者的区别是什么? 用过Semaphore吗? 可以具体说一下嘛?AQS的思维导图
2018-12-31 16:03:50
161
原创 简单理解什么是happens-before
什么是happens-before在程序运行过程中,以写操作为例:所有对共享变量的变成都会在线程的本地缓存中进行修改,然后在拷贝回回主存以跨越内存栅栏,跨越内存栅栏的顺序称为happens-before什么是内存栅栏内存栅栏就是指从线程本地缓存到主存,或者主存到线程本地缓存之间的拷贝操作...
2018-12-03 09:58:27
404
原创 java字段类型的判断
首先反射获取所有的字段Field[] declaredFields = test.getClass().getDeclaredFields(); 然后判断其类型for(Field f : declaredFields){ if(f.getType() == Integer.class){ // xxxxxx ...
2018-11-20 10:32:32
15836
原创 volatile的实现原理
volatile关键字的作用volatile是轻量级的synchronized,用于保证共享变量在多线程中的可见性,即一个线程修改了volatile标记的值的时候,另外一个线程可以读到这个值,但是要注意,volatile不能保证复合操作的原子性cpu的一些术语一般状况下的线程读写操作cpu为了提高处理速度,不会直接与内存进行通信,而是现将内存中的数据读取到线程内部缓存后在进行...
2018-11-14 17:13:19
181
原创 synchronized的实现原理以及锁的升级降级
java中锁的表现形式对于普通的方法,锁是当前的实例对象对于静态同步方法,锁是当前类的class对象对于同步代码块,锁是代码块中的对象java对象头synchronized所使用的锁是存放在java的对象头中的,如果对象是数组类型,虚拟机使用3个字宽存储对象头,如果对象是非数组类型,则使用2字宽来存储对象头锁的升级首先要了解偏向锁和轻量级锁,偏向锁就是在不存在大量线程...
2018-11-13 15:56:03
2619
原创 HotSpot的解释器和JIT编译器
什么是解释执行,什么是编译执行,有什么区别要理解解释器和编译器,就要先知道什么是解释执行,什么是编译执行编译执行:顾名思义,先编译再执行,所以就需要编译器现将代码编译成机器码,然后在进行执行,因为是整体编译,所以会产生编译后的机器码文件 解释执行:解释器会将代码一句一句的进行解释,每解释一句就运行一句,在这个过程中,不会产生机器码文件解释运行优缺点分析从启动效率来看解释运行...
2018-11-07 16:16:35
1216
原创 Netty源码分析-Netty服务端启动流程解析
前言上一章节 中,我们讲解了java的普通的IO和NIO,总结了它们的优缺点,然后使用netty提供的api将我们之前的代码进行了改造,本章就让我们来进行netty的服务端启动流程的分析,首先还是先上一下代码实例(看本章之前最好对NIO和Netty的服务端编写有一些了解,关于这些可以去看上一章节来进行学习)NIO服务端启动流程代码既然netty是对java的NIO进行的封装,那...
2018-11-06 21:08:29
225
原创 HotSpot销毁和内部结构的简单分析
前言 想要分析一个项目的源码,首先要知道这个项目的目录结构,然后再根据结构进行拆分分析,HotSpot在解压后发现,主要由四个子目录组成了整个项目agent:包含了Serviceability Agent 的 客户 端 实现; make:包含了用户build出HotSpot的各种组件 src:最重要的目录,包含了源码实现,如果说cpu实现,操作系统实现,与平台无关性实现 test...
2018-10-30 16:47:52
232
原创 java字节码文件魔数的由来
关于魔数的解释和疑问java字节码文件的前4个字节是0xCAFEBABE,也被称呼为魔数,但是为什么要使用魔数来进行字节码文件的判断呢,为什么不适用后缀名进行判断呢 其实使用后缀也是可以的,只不过无法确保用户会不会手动修改文件的后缀名,所以使用了魔数来进行判断 魔数内容的由来CAFEBABE象征着著名的咖啡品牌 Peet' s Coffee 中 深受欢迎的Barista...
2018-10-29 11:53:53
729
原创 java的字节码编译原理-词法解析器
java的编译结果为什么不是类似于c/c++的机器码呢 这是java实现了与平台无关性的体现,字节码就类似于一种通用的契约,提供给jvm进行运行,虽然不同的jvm内部实现的细节不同,但是他们执行的字节码的内容却是相同的java的编译屏蔽了与底层操作系统和物理硬件相关的一些信息,使得开发人员更加的可以关注于业务的本身 java都必须使用javac进行编译吗并不是,其实常用...
2018-10-26 01:25:32
352
原创 一次完整的HTTP请求与响应都发生了什么
本篇介绍的是一次完成的http请求都经过了那些步骤,这些步骤相应的作用又是什么1.在浏览器端输入网站的url地址只有知道了一个网站的url地址才能访问到这个网站2.浏览器查找缓存浏览器会查找浏览器缓存,系统缓存,路由缓存,如果没有的话 继续下一步,如果有的话,直接显示注意:浏览器会把访问过得web网站资源(html 图片)缓存起来,而判断是否使用缓存的条件有以下几种:是...
2018-09-24 22:32:50
5509
原创 http状态码总结
2xx : 代表服务端已经成功接收并处理了该请求200:服务端成功接收了该请求并进行了处理,请求所需要的数据应该伴随这次请求对应的响应返回给客户端 202:服务端已经成功接收了请求,但是并未进行处理3xx : 通常代表客户端需要进行进一步请求用,常用来进行重定向的状态码301: 客户端请求的资源已经永久移动到别的位置,服务端会自动将该请求重定向到新的位置4xx : 通常表示客户端请求...
2018-09-24 16:22:45
1687
原创 java多线程之内存可见性(一)
前言提到多线程就不可表面的会提到数据争用,提到数据争用就会自然而然的聊到多线程,本篇就对java多线程的内存可见性做一个探讨共享变量在内存中的可见性 可见性:一个线程对共享变量值得修改,能够及时的被其他线程看到 共享变量:如果一个变量在多个线程的线程内存中都存有副本,那么这个变量就是这几个线程的共享变量如果想要了解共享变量,那么就要先知道java的内存模型java内...
2018-09-16 17:10:00
291
原创 Netty源码分析-什么是Netty
前言现在,越来越多的公司都在招聘要求中写上了熟悉javaIO,NIO编程, 这也NIO已经成为了java程序员所必须应该掌握的,平时的工作中或许不会用到NIO编程,但是掌握NIO的思想是很好的IO编程:在讲解NIO之前,首先要了解一下IO编程,思考一下:编写一个程序,客户端每2s给服务端发送消息,服务端接收到消息后打印出客户端的发送过来的消息服务端代码 package...
2018-09-14 17:52:58
367
原创 Nginx的配置解析(新手入门)
Nginx功能简述反向代理:简单来说就是代理多台服务器,客户端在访问的时候并不知道自己实际上是访问的是哪个服务器,具体的请求由nginx来进行服务器的分发 负载均衡:Nginx提供的负载均衡策略有5种:轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除 指定权重:指定轮询几率,wei...
2018-09-12 17:14:19
248
hadoop-mapreduce-client-jobclient-0.23.1.jar
2020-05-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人