<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[zhttly的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/zhttly</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zhttly]]></copyright><item><title><![CDATA[HTTP和HTTPS的区别和常见的面试题]]></title><link>https://blog.youkuaiyun.com/zhttly/article/details/112958695</link><guid>https://blog.youkuaiyun.com/zhttly/article/details/112958695</guid><author>zhttly</author><pubDate>Thu, 21 Jan 2021 15:51:59 +0800</pubDate><description><![CDATA[本篇会着重介绍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 到页面加载显示完成，.]]></description><category></category></item><item><title><![CDATA[Git Checkout提示Another git process seems to be running in this repository...]]></title><link>https://blog.youkuaiyun.com/zhttly/article/details/111884405</link><guid>https://blog.youkuaiyun.com/zhttly/article/details/111884405</guid><author>zhttly</author><pubDate>Tue, 29 Dec 2020 10:57:17 +0800</pubDate><description><![CDATA[原因在于Git在使用过程中遭遇了奔溃，部分被上锁资源没有被释放导致的

打开项目文件夹，打开显示隐藏文件，进入隐藏文件.git，其中的index.lock文件删除掉，然后重新打开git bash进程，问题解决。


...]]></description><category></category></item><item><title><![CDATA[HDFS Pipeline Recovery]]></title><link>https://blog.youkuaiyun.com/zhttly/article/details/109677548</link><guid>https://blog.youkuaiyun.com/zhttly/article/details/109677548</guid><author>zhttly</author><pubDate>Fri, 13 Nov 2020 16:30:46 +0800</pubDate><description><![CDATA[pipeline 写入的三个阶段



1.pipeline setup：Client 发送一个写请求沿着 pipeline 传递下去，最后一个 DataNode 收到后发回一个确认消息。Client 收到确认后，pipeline 设置准备完毕，可以往里面发送数据了。


2.data streaming：Client 将一个 block 拆分为多个 packet 来发送（默认一个 block 64MB，太大所以需要拆分）。Client 持续往 pipeline 发送 packet，在收到 packet .]]></description><category></category></item><item><title><![CDATA[java面试-JVM内存区域划分]]></title><link>https://blog.youkuaiyun.com/zhttly/article/details/106993830</link><guid>https://blog.youkuaiyun.com/zhttly/article/details/106993830</guid><author>zhttly</author><pubDate>Wed, 01 Jul 2020 20:23:56 +0800</pubDate><description><![CDATA[JVM内存划分

说到Java内存区域，刚开始接触java的人会下意识说出“堆栈”。这里要明确堆栈不是一个概念，而是两个概念，堆和栈是两块不同的内存区域，简单理解的话，堆是用来存放对象而栈是用来执行程序的。其次，堆内存和栈内存的这种划分方式比较粗糙，这种划分方式只能说明大多数程序员最关注的、与对象内存分配关系最密切的内存区域是这两块，Java内存区域的划分实际上远比这复杂。对于Java程序员来说，在虚拟机自动内存管理机制的帮助下，不再需要为每一个new操作去配对delete/free代码，不容易出现内存泄露]]></description><category></category></item><item><title><![CDATA[如何解决内存不足场景中 Linux下的OOM Killer情况]]></title><link>https://blog.youkuaiyun.com/zhttly/article/details/106340006</link><guid>https://blog.youkuaiyun.com/zhttly/article/details/106340006</guid><author>zhttly</author><pubDate>Mon, 25 May 2020 19:28:41 +0800</pubDate><description><![CDATA[前言

linux 下的OOM问题的原因通常是因为某时刻应用程序大量请求内存导致系统内存不足造成的，这通常会触发 Linux 内核里的 Out of Memory (OOM) killer，OOM killer 会杀掉某个进程以腾出内存留给系统用，不致于让系统立刻崩溃。如果检查相关的日志文件（/var/log/messages）就会看到下面类似的 Out of memory: Kill process 信息：








Linux内存分配


Linux 内核根据应用程序的要求分配内存，通常来说应..]]></description><category></category></item><item><title><![CDATA[JAVA面试-并发编程中的锁]]></title><link>https://blog.youkuaiyun.com/zhttly/article/details/106159925</link><guid>https://blog.youkuaiyun.com/zhttly/article/details/106159925</guid><author>zhttly</author><pubDate>Sat, 16 May 2020 22:30:57 +0800</pubDate><description><![CDATA[Synchronized相关问题


问题一,Synchronized用过吗,其原理是什么


Synchronized是由jvm实现的保持线程互斥的一种方式,底层字节码被编译成monitorenter和monitorexit两个指令,在遇到monitorenter时,会把对象的锁计数器+1.代表这个已经获取到了锁,在monitorexit将锁计数器-1 代表释放锁


问题二：你刚才提到获取对象的锁，这个“锁”到底是什么？如何确定对象的锁？


这个锁就是一个Refrence对象,也就是要加锁或者解锁的.]]></description><category></category></item><item><title><![CDATA[[LeetCode] 95. Unique Binary Search Trees II 独一无二的二叉搜索树之二]]></title><link>https://blog.youkuaiyun.com/zhttly/article/details/105743683</link><guid>https://blog.youkuaiyun.com/zhttly/article/details/105743683</guid><author>zhttly</author><pubDate>Sat, 25 Apr 2020 01:35:03 +0800</pubDate><description><![CDATA[题目




Given an integern, generate all structurally uniqueBST's(binary search trees) that store values 1 ...n.

Example:


Input: 3
Output:
[
 [1,null,3,2],
 [3,2,null,1],
 [3,1,null,null,2],...]]></description><category></category></item><item><title><![CDATA[MySQL 经常考察难点和热点]]></title><link>https://blog.youkuaiyun.com/zhttly/article/details/88046214</link><guid>https://blog.youkuaiyun.com/zhttly/article/details/88046214</guid><author>zhttly</author><pubDate>Fri, 01 Mar 2019 10:55:16 +0800</pubDate><description><![CDATA[基本架构


MySQL是典型的三层架构模式，在平常使用中对MySQL问题排查和优化，也应该针对具体问题，从对应的层解决问题


三层架构主要分为一下三个

服务层：经典的C/S架构,主要是处理连接和安全验证
	核心层：处理MySQL核心业务
	存储引擎层：存储引擎负责数据的存储和提取
核心层通过存储引擎的API与存储引擎通信,这样就可以屏蔽不同的存储引擎的差异,使得差异对上层透明化




...]]></description><category></category></item><item><title><![CDATA[TCP的链接建立和链接关闭]]></title><link>https://blog.youkuaiyun.com/zhttly/article/details/82833106</link><guid>https://blog.youkuaiyun.com/zhttly/article/details/82833106</guid><author>zhttly</author><pubDate>Thu, 28 Feb 2019 22:06:52 +0800</pubDate><description><![CDATA[本篇主要介绍TCP的链接建立和链接关闭



TCP的三次握手建立链接



TCP的四次握手关闭链接
]]></description><category></category></item><item><title><![CDATA[数据库经典类型题]]></title><link>https://blog.youkuaiyun.com/zhttly/article/details/83095902</link><guid>https://blog.youkuaiyun.com/zhttly/article/details/83095902</guid><author>zhttly</author><pubDate>Thu, 28 Feb 2019 22:06:40 +0800</pubDate><description><![CDATA[1、MySQL的复制原理以及流程(基本原理流程，3个线程以及之间的关联；)


主:binlog(负责记录表和库变更的二进制文件,可以用于本机的数据恢复和主从同步)线程将改变了数据库的语句进行记录,放进master上面的binlog中
	从:io线程:使用了startsalve(打开主从同步)之后,负责从master上面的binlog中拉取内容,放进自己的relaylog(中继log)中
...]]></description><category></category></item><item><title><![CDATA[TCP 为什么是三次握手，而不是两次或四次？]]></title><link>https://blog.youkuaiyun.com/zhttly/article/details/87856073</link><guid>https://blog.youkuaiyun.com/zhttly/article/details/87856073</guid><author>zhttly</author><pubDate>Thu, 21 Feb 2019 11:19:53 +0800</pubDate><description><![CDATA[
TCP协议的一些知识


TCP(Transmission Control Protocol)　传输控制协议

TCP是主机对主机层的传输控制协议，提供可靠的连接服务，采用三次握手确认建立一个连接:

位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置...]]></description><category></category></item><item><title><![CDATA[JVM常见面试题--关于虚拟机之虚拟机类加载机制的问题]]></title><link>https://blog.youkuaiyun.com/zhttly/article/details/86691560</link><guid>https://blog.youkuaiyun.com/zhttly/article/details/86691560</guid><author>zhttly</author><pubDate>Thu, 31 Jan 2019 22:59:21 +0800</pubDate><description><![CDATA[一般作为Java程序员在面试的时候一般会问的大多就是Java内存区域、虚拟机垃圾算法、虚拟垃圾收集器、JVM内存管理这些问题了,对此我参照了一些网上的面试题做出了一些总结

 


简单说说类加载过程，里面执行了哪些操作？


 加载阶段由三个基本动作组成:

通过类型的完全限定名，产生一个代表该类型的二进制数据流
	解析这个二进制数据流为方法区内的运行时数据结构
	创建一个表示该类型的java....]]></description><category></category></item><item><title><![CDATA[JVM常见面试题--关于java内存区域的问题]]></title><link>https://blog.youkuaiyun.com/zhttly/article/details/86691463</link><guid>https://blog.youkuaiyun.com/zhttly/article/details/86691463</guid><author>zhttly</author><pubDate>Thu, 31 Jan 2019 22:34:45 +0800</pubDate><description><![CDATA[一般作为Java程序员在面试的时候一般会问的大多就是Java内存区域、虚拟机垃圾算法、虚拟垃圾收集器、JVM内存管理这些问题了,对此我参照了一些网上的面试题做出了一些总结

 


介绍下Java内存区域（运行时数据区）


 程序计数器:线程私有,因为在线程切换后,要能够恢复到正确的位置,所以是私有的,工作的时候通过改变程序计数器的值来选取下一条指令进行执行
	Java虚拟机栈:同样线程私有,生...]]></description><category></category></item><item><title><![CDATA[JVM常见面试题--关于虚拟机垃圾回收的问题]]></title><link>https://blog.youkuaiyun.com/zhttly/article/details/86691533</link><guid>https://blog.youkuaiyun.com/zhttly/article/details/86691533</guid><author>zhttly</author><pubDate>Thu, 31 Jan 2019 11:47:19 +0800</pubDate><description><![CDATA[一般作为Java程序员在面试的时候一般会问的大多就是Java内存区域、虚拟机垃圾算法、虚拟垃圾收集器、JVM内存管理这些问题了,对此我参照了一些网上的面试题做出了一些总结

 


如何判断对象是否死亡(两种方法) 


 可达性分析:
	这个算法的基本思想就是通过一系列的GC Root对象作为起点,从这些节点开始向下搜索,节点所走过的路称之为引用链,当一个对象没有被任何引用链链接的话,这个对象就...]]></description><category></category></item><item><title><![CDATA[java并发—AQS原理]]></title><link>https://blog.youkuaiyun.com/zhttly/article/details/85456742</link><guid>https://blog.youkuaiyun.com/zhttly/article/details/85456742</guid><author>zhttly</author><pubDate>Mon, 31 Dec 2018 16:03:50 +0800</pubDate><description><![CDATA[
AQS的经典问题


 AQS的原理是什么
	CountDownLatch和CyclicBarrier了解吗,两者的区别是什么？
	用过Semaphore吗？ 可以具体说一下嘛？

AQS的思维导图 


 

]]></description><category></category></item><item><title><![CDATA[简单理解什么是happens-before]]></title><link>https://blog.youkuaiyun.com/zhttly/article/details/84748611</link><guid>https://blog.youkuaiyun.com/zhttly/article/details/84748611</guid><author>zhttly</author><pubDate>Mon, 03 Dec 2018 09:58:27 +0800</pubDate><description><![CDATA[
什么是happens-before

在程序运行过程中,以写操作为例:所有对共享变量的变成都会在线程的本地缓存中进行修改,然后在拷贝回回主存以跨越内存栅栏,跨越内存栅栏的顺序称为happens-before

什么是内存栅栏

内存栅栏就是指从线程本地缓存到主存,或者主存到线程本地缓存之间的拷贝操作

...]]></description><category></category></item><item><title><![CDATA[java字段类型的判断]]></title><link>https://blog.youkuaiyun.com/zhttly/article/details/84286780</link><guid>https://blog.youkuaiyun.com/zhttly/article/details/84286780</guid><author>zhttly</author><pubDate>Tue, 20 Nov 2018 10:32:32 +0800</pubDate><description><![CDATA[
首先反射获取所有的字段



Field[] declaredFields = test.getClass().getDeclaredFields();

 然后判断其类型


for(Field f : declaredFields){

            if(f.getType() == Integer.class){

                // xxxxxx
     ...]]></description><category></category></item><item><title><![CDATA[volatile的实现原理]]></title><link>https://blog.youkuaiyun.com/zhttly/article/details/84070067</link><guid>https://blog.youkuaiyun.com/zhttly/article/details/84070067</guid><author>zhttly</author><pubDate>Wed, 14 Nov 2018 17:13:19 +0800</pubDate><description><![CDATA[
volatile关键字的作用

volatile是轻量级的synchronized,用于保证共享变量在多线程中的可见性,即一个线程修改了volatile标记的值的时候,另外一个线程可以读到这个值,但是要注意,volatile不能保证复合操作的原子性

cpu的一些术语



一般状况下的线程读写操作

cpu为了提高处理速度,不会直接与内存进行通信,而是现将内存中的数据读取到线程内部缓存后在进行...]]></description><category></category></item><item><title><![CDATA[synchronized的实现原理以及锁的升级降级]]></title><link>https://blog.youkuaiyun.com/zhttly/article/details/84030393</link><guid>https://blog.youkuaiyun.com/zhttly/article/details/84030393</guid><author>zhttly</author><pubDate>Tue, 13 Nov 2018 15:56:03 +0800</pubDate><description><![CDATA[
java中锁的表现形式


对于普通的方法,锁是当前的实例对象
对于静态同步方法,锁是当前类的class对象
对于同步代码块,锁是代码块中的对象


java对象头

synchronized所使用的锁是存放在java的对象头中的,如果对象是数组类型,虚拟机使用3个字宽存储对象头,如果对象是非数组类型,则使用2字宽来存储对象头

锁的升级

首先要了解偏向锁和轻量级锁,偏向锁就是在不存在大量线程...]]></description><category></category></item><item><title><![CDATA[HotSpot的解释器和JIT编译器]]></title><link>https://blog.youkuaiyun.com/zhttly/article/details/83825980</link><guid>https://blog.youkuaiyun.com/zhttly/article/details/83825980</guid><author>zhttly</author><pubDate>Wed, 07 Nov 2018 16:16:35 +0800</pubDate><description><![CDATA[
什么是解释执行,什么是编译执行,有什么区别




要理解解释器和编译器,就要先知道什么是解释执行,什么是编译执行

编译执行:顾名思义,先编译再执行,所以就需要编译器现将代码编译成机器码,然后在进行执行,因为是整体编译,所以会产生编译后的机器码文件
	解释执行:解释器会将代码一句一句的进行解释,每解释一句就运行一句,在这个过程中,不会产生机器码文件
解释运行优缺点分析

从启动效率来看解释运行...]]></description><category></category></item></channel></rss>