<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[zzdurkjava的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/zzdurkjava</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zzdurkjava]]></copyright><item><title><![CDATA[多线程理解]]></title><link>https://blog.youkuaiyun.com/zzdurkjava/article/details/118298284</link><guid>https://blog.youkuaiyun.com/zzdurkjava/article/details/118298284</guid><author>zzdurkjava</author><pubDate>Thu, 08 Jul 2021 12:15:35 +0800</pubDate><description><![CDATA[实现线程的方式有两种：

1、继承java.lang.Thread，并重写它的run()方法

2、实现java.lang.Runnable接口，实现它的run()方法，接口中就一个方法run（）



一、run()和start()

stat() 用于自动调用run()



其实Thread中的run方法调用的是Runnable接口的run方法。Thread和Runnable都实现了run方法，这种操作模式其实就是代理模式。关于代理模式

https://blog.youkuaiyun.com/zhangzey.]]></description><category></category></item><item><title><![CDATA[为啥需要线程池，原理]]></title><link>https://blog.youkuaiyun.com/zzdurkjava/article/details/118298273</link><guid>https://blog.youkuaiyun.com/zzdurkjava/article/details/118298273</guid><author>zzdurkjava</author><pubDate>Mon, 28 Jun 2021 11:33:24 +0800</pubDate><description><![CDATA[每次启动一个线程都要创建一个新的浪费资源的，还有时候线程过多的时候回造成服务器崩溃，所以有了线程池的诞生，线程池是用来管理线程的

Executor: 所有线程池的接口,只有一个方法。

线程池的工作过程如下：

线程池刚创建时，里面没有一个线程。任务队列是作为参数传进来的。不过，就算队列里面有任务，线程池也不会马上执行它们。
	当调用 execute() 方法添加一个任务时，线程池会做如下判断：

	如果正在运行的线程数量小于 corePoolSize，那么马上创建线程运行这个任务；
		如果正在运行的线]]></description><category></category></item><item><title><![CDATA[ReentrantLock和synchronized两种锁定机制的对比]]></title><link>https://blog.youkuaiyun.com/zzdurkjava/article/details/118298260</link><guid>https://blog.youkuaiyun.com/zzdurkjava/article/details/118298260</guid><author>zzdurkjava</author><pubDate>Mon, 28 Jun 2021 11:32:49 +0800</pubDate><description><![CDATA[多线程和并发性

synchronized 不能中断锁

ReentrantLock还多了 锁投票，定时锁等候和中断锁等候，是可重入锁



在资源竞争不是很激烈的情况下，Synchronized的性能要优于ReetrantLock，但是在资源竞争很激烈的情况下，Synchronized的性能会下降几十倍，但是ReetrantLock的性能能维持常态；

Synchronized锁原理

属于JVM层面的

分为：方法同步和代码块同步

比如：

//下列两个方法有什么区别 public synchron.]]></description><category></category></item><item><title><![CDATA[ConcurrentHashMap]]></title><link>https://blog.youkuaiyun.com/zzdurkjava/article/details/118298243</link><guid>https://blog.youkuaiyun.com/zzdurkjava/article/details/118298243</guid><author>zzdurkjava</author><pubDate>Mon, 28 Jun 2021 11:32:17 +0800</pubDate><description><![CDATA[Concurrent是同时的意思

相对于HashTable和Collections.synchronizedMap()，ConcurrentHashMap能够在线程安全的基础上提供更好的并操作。同时降低对读的一致性要求。

jdk6、7、8都不同

1、jdk6/7的的实现

设计思路：采用分段锁的设计，而HashTable是对整个map加锁性能下降。ConcurrentHashMap是对某个部分加锁。

but，由于不是对整个Map加锁，导致一些需要扫描整个Map的方法（如size(), contain]]></description><category></category></item><item><title><![CDATA[mysql索引B树B+树，联合索引]]></title><link>https://blog.youkuaiyun.com/zzdurkjava/article/details/118298200</link><guid>https://blog.youkuaiyun.com/zzdurkjava/article/details/118298200</guid><author>zzdurkjava</author><pubDate>Mon, 28 Jun 2021 11:31:33 +0800</pubDate><description><![CDATA[二叉树，存在平衡问题

红黑树也没用，mysql底层没用到， 层级太多，数据量太大有问题

B+树，折半查找算法：特点有：

1.非叶子节点不存储数据，只存储索引，减少io

2.叶子节点包含所有索引字段

3，叶子节点指针相连，提高访问性能

b树和b+树的区别，b树叶子节点没有相互指针，没法范围查询

b+树把数据都放叶子节点，减少树的高度，减少io

详解b+树



如上图，是一颗b+树，关于b+树的定义可以参见B+树，这里只说一些重点，浅蓝色的块我们称之为一个磁盘块，可以看到每个磁盘块包含几个数据]]></description><category></category></item><item><title><![CDATA[mysql分析explain用法]]></title><link>https://blog.youkuaiyun.com/zzdurkjava/article/details/118298165</link><guid>https://blog.youkuaiyun.com/zzdurkjava/article/details/118298165</guid><author>zzdurkjava</author><pubDate>Mon, 28 Jun 2021 11:30:44 +0800</pubDate><description><![CDATA[查看执行计划：



id：id越大先执行

select_type：查询的类型

ALL、index、range、 ref、eq_ref、const、system、NULL（从左到右，性能从差到好）

all：扫描全表

index：索引全部扫描

range：部分索引扫描，用于范围查询

ref：出现于where操作符为‘=’，且where字段为非唯一索引的单表查询或联表查询。

eq_ref：出现于where操作符为‘=’，且where字段为唯一索引的联表查询。

const：出现于where操作符为]]></description><category></category></item><item><title><![CDATA[xxl-job运行]]></title><link>https://blog.youkuaiyun.com/zzdurkjava/article/details/116480077</link><guid>https://blog.youkuaiyun.com/zzdurkjava/article/details/116480077</guid><author>zzdurkjava</author><pubDate>Mon, 28 Jun 2021 11:29:55 +0800</pubDate><description><![CDATA[1，首先下载https://gitee.com/xuxueli0323/xxl-job 码云地址,



2，配置mysql，运行xuxueli0323-xxl-job-master\xxl-job\doc\db 目录下的tables_xxl_job.sql文件



3，修改xxl-job-admin项目的application.properties文件，修改mysql配置



4，启动xxl-job-admin项目，http://localhost:8080/xxl-job-admin/jobl...]]></description><category></category></item><item><title><![CDATA[数据库锁机制]]></title><link>https://blog.youkuaiyun.com/zzdurkjava/article/details/118298103</link><guid>https://blog.youkuaiyun.com/zzdurkjava/article/details/118298103</guid><author>zzdurkjava</author><pubDate>Mon, 28 Jun 2021 11:29:35 +0800</pubDate><description><![CDATA[锁，很少人为操作，一般有： for update

====一堆名词，一个个分析吧============================

Innodb聚簇索引是给索引加锁



按照锁的粒度划分：行锁、表锁、页锁，记录锁，间隙锁，临键锁、
表锁：粒度大，简单，容易冲突，不会出现死锁，MyISAM和InnoDB都支持。DDL语句会自动加表锁，AlterTable 这种。也可以手动lock unlock

行锁：最细粒度，锁一行或者多行数据。粒度小，麻烦（一行一行加锁），不容易冲突，会出现死锁。

Inn.]]></description><category></category></item><item><title><![CDATA[kafka和RabbitMQ]]></title><link>https://blog.youkuaiyun.com/zzdurkjava/article/details/116693899</link><guid>https://blog.youkuaiyun.com/zzdurkjava/article/details/116693899</guid><author>zzdurkjava</author><pubDate>Wed, 12 May 2021 08:46:55 +0800</pubDate><description><![CDATA[基本概念

如何实现高效

使用mq主要原因：

1，解耦，主要是发布订阅模式，系统间解耦

2，异步，主要是串行改成并行，不需要等待，比如：发送邮件服务

3，削峰，主要是突然涌入大量数据，导致数据库挂掉。可以主动去拉数据。

kafka基本概念

kafka主要用于，日志储存，顺序非常严格

数据持久化，动态扩容，支持事务 ，消息自动平衡

架构基本认识：由多个Broker组成，每个Broker是一个节点，创建一个topic，一个topic分成多个partition，每个partition分布在不同的节]]></description><category></category></item><item><title><![CDATA[xxl-job配置遇到的坑：java.net.BindException: Address already in use: bind]]></title><link>https://blog.youkuaiyun.com/zzdurkjava/article/details/116479406</link><guid>https://blog.youkuaiyun.com/zzdurkjava/article/details/116479406</guid><author>zzdurkjava</author><pubDate>Fri, 07 May 2021 08:44:14 +0800</pubDate><description><![CDATA[任务调度中心xxl-job集成到项目，步骤就不详细写了，我下载的是xxl-job-core 2.3.0版本的jar包，在百度搜索的配置xxljobconfig文件的时候给出的配置是这样的：配置完成之后启动项目，报错：



Exception in thread "Thread-10" java.net.BindException: Address already in use: bind

最初以为端口被占用了，排查发现不是端口问题，xxl-job在版本更新之后@bean不需要加





@Bean(.]]></description><category></category></item><item><title><![CDATA[Java面试题大汇总]]></title><link>https://blog.youkuaiyun.com/zzdurkjava/article/details/101050320</link><guid>https://blog.youkuaiyun.com/zzdurkjava/article/details/101050320</guid><author>zzdurkjava</author><pubDate>Fri, 20 Sep 2019 09:21:26 +0800</pubDate><description><![CDATA[前言 

关于赢在面试的Java题系列基本收集整理完成了，所有题目都是经过精心挑选的，很基础又考验求职者的基本功，应该说被面试到的几率很大。这里整理挑选出来供大家面试前拿来看一看，所有题目整理自网络，有一些错误和笔误，感谢读者的热心纠错，在声明中已经改正过来。

整理这些面试题源于在微信群和几个刚入职的小伙伴们的一次讨论，很多小伙伴谈了自己的面试经历和...]]></description><category></category></item><item><title><![CDATA[zookeeper]]></title><link>https://blog.youkuaiyun.com/zzdurkjava/article/details/100922124</link><guid>https://blog.youkuaiyun.com/zzdurkjava/article/details/100922124</guid><author>zzdurkjava</author><pubDate>Tue, 17 Sep 2019 12:25:30 +0800</pubDate><description><![CDATA[分布式系统协同服务

工作原理：核心是原子广播，这个机制保证了各个Server之间的同步，实现这个原理的协议叫做Zab协议。

简介Zab协议：有两种模式，它们分别是恢复模式（选主）和广播模式（同步）。当服务启动或者在领导者崩溃后，Zab就进入了恢复模式，当领导者被选举出来，且大多数Server完成了和 leader的状态同步以后，恢复模式就结束了。状态同步保证了leader和Server具有相同...]]></description><category></category></item><item><title><![CDATA[瓜子二手车面试java]]></title><link>https://blog.youkuaiyun.com/zzdurkjava/article/details/100922102</link><guid>https://blog.youkuaiyun.com/zzdurkjava/article/details/100922102</guid><author>zzdurkjava</author><pubDate>Tue, 17 Sep 2019 12:24:49 +0800</pubDate><description><![CDATA[快速处理大数据技术

一致性哈希算法原理



map原理，不安全如何解决

索引原理，实现方式

联合索引使用

nginx平滑升级

数据库分库、主从，读写保持一致



单向链表，快速排序https://blog.youkuaiyun.com/u010429424/article/details/77776731

快速排序思想



kafka原理，组概念，topic概念，为什么要用top

...]]></description><category></category></item><item><title><![CDATA[2019最新，大数据面试题Java面试必问]]></title><link>https://blog.youkuaiyun.com/zzdurkjava/article/details/100915387</link><guid>https://blog.youkuaiyun.com/zzdurkjava/article/details/100915387</guid><author>zzdurkjava</author><pubDate>Tue, 17 Sep 2019 09:05:46 +0800</pubDate><description><![CDATA[1、你处理过的最大的数据量？你是如何处理他们的？处理的结果。

2、在处理大数据过程中，如何保证得到期望值？

3、如何让一个网络爬虫速度更快、抽取更好的信息以及更好总结数据从而得到一干净的数据库？

4、点击流数据应该是实时处理？为什么？哪部分应该实时处理？

5、你最喜欢的编程语言是什么？为什么？

6、如何把非结构化的数据转换成结构化的数据？这是否真的有必要做这样的转换？把数据存成平面文本文...]]></description><category></category></item><item><title><![CDATA[【面试真题】腾讯2018秋招前端正式试题（含答案）]]></title><link>https://blog.youkuaiyun.com/zzdurkjava/article/details/100915204</link><guid>https://blog.youkuaiyun.com/zzdurkjava/article/details/100915204</guid><author>zzdurkjava</author><pubDate>Tue, 17 Sep 2019 08:59:45 +0800</pubDate><description><![CDATA[参考答案关注公众号，回复“腾讯答案”获取



01

不定向多选





1. 往下面的5阶B树中插入关键吗80后，该B树第二层的节点数为( )。

A. 6

B. 7

C. 8

D. 9

E. 10







2. 设一棵完全二叉树共有1023个结点，则在该二叉树中的叶子结点数为多少？( )

A. 511

B. 512

C....]]></description><category></category></item><item><title><![CDATA[2018腾讯秋招正式笔试题目]]></title><link>https://blog.youkuaiyun.com/zzdurkjava/article/details/100915102</link><guid>https://blog.youkuaiyun.com/zzdurkjava/article/details/100915102</guid><author>zzdurkjava</author><pubDate>Tue, 17 Sep 2019 08:56:51 +0800</pubDate><description><![CDATA[参考答案关注公众号，回复“腾讯答案”获取



不定项选择题

1、以下说法正确的是（ ）。

A. 由先序序列、中序序列可以还原出树的原貌

B. 200，190，150，170，180，140，155，160，165，120是一个最大堆

C. 排序之前必须把所有待排数据加载到内存

D. 给定一组输入，可以输出一颗唯一的哈夫曼树



2、二叉树的节点的对称序列是IEGMOBA，后...]]></description><category></category></item><item><title><![CDATA[fail-fast和fail-safe]]></title><link>https://blog.youkuaiyun.com/zzdurkjava/article/details/100890289</link><guid>https://blog.youkuaiyun.com/zzdurkjava/article/details/100890289</guid><author>zzdurkjava</author><pubDate>Mon, 16 Sep 2019 15:56:13 +0800</pubDate><description><![CDATA[我们都接触 HashMap、ArrayList 这些集合类，这些在 java.util 包的集合类就都是快速失败的；

而java.util.concurrent 包下的类都是安全失败，比如：ConcurrentHashMap。



在使用迭代器对集合对象进行遍历的时候，如果 A 线程正在对集合进行遍历，此时 B 线程对集合进行修改（增加、删除、修改），或者 A 线程在遍历过程中对集合进行...]]></description><category></category></item><item><title><![CDATA[Vagrant批量生成虚拟机]]></title><link>https://blog.youkuaiyun.com/zzdurkjava/article/details/100890219</link><guid>https://blog.youkuaiyun.com/zzdurkjava/article/details/100890219</guid><author>zzdurkjava</author><pubDate>Mon, 16 Sep 2019 15:54:19 +0800</pubDate><description><![CDATA[开发CAAS需要一堆机器，有时候还需要一堆干净的机器用来测试初始化集群和基础服务，如果每次都手工安装虚拟机，很显然效率太低，于是就开始使用vagrant。

一、下载

需要下载：

virtualboxhttps://www.virtualbox.org/
	vagranthttps://www.vagrantup.com/比较坑的是下载最新版后不能正常使用，告诉我最新的vagrant1....]]></description><category></category></item><item><title><![CDATA[SQL注入问题]]></title><link>https://blog.youkuaiyun.com/zzdurkjava/article/details/90054815</link><guid>https://blog.youkuaiyun.com/zzdurkjava/article/details/90054815</guid><author>zzdurkjava</author><pubDate>Fri, 10 May 2019 11:27:50 +0800</pubDate><description><![CDATA[SQL注入问题 （SQL Injection）

1，jdbc使用PreparedStatement，PreparedStatement已经准备好了,执行阶段只是把输入串作为数据处理

2，检查是否有违法字符串

3，mybatis采用#，尽量少用$，${param}和#{param}两个不同的占位符来作为示例解释Statement和PreparedStatement(mybatis...]]></description><category></category></item><item><title><![CDATA[京东面试经历]]></title><link>https://blog.youkuaiyun.com/zzdurkjava/article/details/90054799</link><guid>https://blog.youkuaiyun.com/zzdurkjava/article/details/90054799</guid><author>zzdurkjava</author><pubDate>Fri, 10 May 2019 11:27:10 +0800</pubDate><description><![CDATA[Jvm内存结构描述

++i是否是线程安全的，为什么

什么情况下，索引会失效

mybatis，事物，#和$的区别，防止sql注入，

struts2的原理，如何获取执行方法，漏洞原理，如何防止。

spring，核心，流程

rpc框架

了解多少？dubbo如何通信，为什么通信快和普通http请求区别，原理是什么，其中一台服务器挂了如何执行，协调，说了zookeeper，问zookeeper...]]></description><category></category></item></channel></rss>