<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[java3456的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/java3456</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; java3456]]></copyright><item><title><![CDATA[面试官：如何决定使用 HashMap 还是 TreeMap？]]></title><link>https://blog.youkuaiyun.com/java3456/article/details/107337236</link><guid>https://blog.youkuaiyun.com/java3456/article/details/107337236</guid><author>java3456</author><pubDate>Tue, 14 Jul 2020 14:23:46 +0800</pubDate><description><![CDATA[问：如何决定使用 HashMap 还是 TreeMap？

介绍

TreeMap&lt;K,V&gt;的Key值是要求实现java.lang.Comparable，所以迭代的时候TreeMap默认是按照Key值升序排序的；TreeMap的实现是基于红黑树结构。适用于按自然顺序或自定义顺序遍历键（key）。

HashMap&lt;K,V&gt;的Key值实现散列hashCode()，分布是散列的、均匀的，不支持排序；数据结构主要是桶(数组)，链表或红黑树。适用于在Map中插入、删除和定位元素。

结论

]]></description><category></category></item><item><title><![CDATA[纯CSS实现自定义单选框和复选框]]></title><link>https://blog.youkuaiyun.com/java3456/article/details/107330201</link><guid>https://blog.youkuaiyun.com/java3456/article/details/107330201</guid><author>java3456</author><pubDate>Tue, 14 Jul 2020 08:55:32 +0800</pubDate><description><![CDATA[目录

1 实现效果

2 知识点讲解

2.1 标签

2.2 CSS3 box-shadow 属性

2.3 CSS3 transition 属性

2.4 CSS3 :checked 选择器

2.5 CSS element+element 选择器

3 代码实现


1 实现效果





2 知识点讲解

2.1 &lt;label&gt;标签

在html中，&lt;label&gt;标签通常和&lt;input&gt;标签一起使用，&lt;label&gt;标签为input元素定义标注（标..]]></description><category></category></item><item><title><![CDATA[讲烂了的mysql，今天再给大家重温一下]]></title><link>https://blog.youkuaiyun.com/java3456/article/details/107316654</link><guid>https://blog.youkuaiyun.com/java3456/article/details/107316654</guid><author>java3456</author><pubDate>Mon, 13 Jul 2020 14:38:50 +0800</pubDate><description><![CDATA[mysql事务：

MySQL 事务主要用于处理操作量大，复杂度高的数据。比如说，在人员管理系统中，你删除一个人员，你既需要删除人员的基本资料，也要删除和该人员相关的信息，如信箱，文章等等，这样，这些数据库操作语句就构成一个事务！


• 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。• 事务处理可以用来维护数据库的完整性，保证成批的 SQL 语句要么全部执行，要么全部不执行。• 事务用来管理 insert,update,delete 语句一般来说，事务是必须满足4个条件（A]]></description><category></category></item><item><title><![CDATA[设计模式(1)—什么是设计模式？设计模式的六大原则是什么？]]></title><link>https://blog.youkuaiyun.com/java3456/article/details/107309850</link><guid>https://blog.youkuaiyun.com/java3456/article/details/107309850</guid><author>java3456</author><pubDate>Mon, 13 Jul 2020 09:00:41 +0800</pubDate><description><![CDATA[只有登上山顶，才能看到那边的风光



目录


1.什么设计模式

2.设计模式的发展

3.设计原则6大原则

3.1 开闭原则

3.2 里氏转换原则

3.3 依赖倒转原则

3.4 接口隔离原则

3.5 合成/聚合复用原则

3.6 迪米特原则




1.什么设计模式

软件设计模式（Design pattern），又称设计模式，是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。设计模...]]></description><category></category></item><item><title><![CDATA[不会有人还不知道全文检索工具Lucene怎么用吧？文字长文教程]]></title><link>https://blog.youkuaiyun.com/java3456/article/details/107289891</link><guid>https://blog.youkuaiyun.com/java3456/article/details/107289891</guid><author>java3456</author><pubDate>Sat, 11 Jul 2020 20:16:39 +0800</pubDate><description><![CDATA[1.什么是Lucene



Apache Lucene 是完全用Java编写的高性能，功能齐全的，全文检索引擎工具包，通过lucene可以让程序员快速开发一个全文检索功能。



1.1什么是全文检索



在我们的生活中数据总体分为两种：结构化数据和非结构化数据。

结构化数据：具有固定格式或有限长度的数据，如数据库，元数据等。

非结构化数据：不定长或无固定格式的数据，如邮件，word文档等。非结构化数据又叫全文数据。

当然有的地方还会提到第三种，半结构化数据，如XML，HTML等，半结构...]]></description><category></category></item><item><title><![CDATA[Git 如何优雅地回退代码]]></title><link>https://blog.youkuaiyun.com/java3456/article/details/107284552</link><guid>https://blog.youkuaiyun.com/java3456/article/details/107284552</guid><author>java3456</author><pubDate>Sat, 11 Jul 2020 14:34:12 +0800</pubDate><description><![CDATA[前言

从接触编程就开始使用 Git 进行代码管理，先是自己玩 Github，又在工作中使用 Gitlab，虽然使用时间挺长，可是也只进行一些常用操作，如推拉代码、提交、合并等，更复杂的操作没有使用过，看过的教程也逐渐淡忘了，有些对不起 Linus 大神。

出来混总是要还的，前些天就遇到了 Git 里一种十分糟心的场景，并为之前没有深入理解 Git 命令付出了一下午时间的代价。

先介绍一下这种场景，我们一个项目从 N 版本升到 A 版本时引入了另一项目的 jar 包，又陆续发布了 B、C...]]></description><category></category></item><item><title><![CDATA[终于有人把Elasticsearch架构原理讲明白了，感觉之前看的都是渣]]></title><link>https://blog.youkuaiyun.com/java3456/article/details/107279647</link><guid>https://blog.youkuaiyun.com/java3456/article/details/107279647</guid><author>java3456</author><pubDate>Sat, 11 Jul 2020 09:05:27 +0800</pubDate><description><![CDATA[架构原理

本文作为 Elastic Stack 指南，关注于 Elasticsearch 在日志和数据分析场景的应用，并不打算对底层的 Lucene 原理或者 Java 编程做详细的介绍，但是 Elasticsearch 层面上的一些架构设计，对我们做性能调优，故障处理，具有非常重要的影响。

所以，作为 ES 部分的起始章节，先从数据流向和分布的层面，介绍一下 ES 的工作原理，以及相关的可控项。各位读者可以跳过这节先行阅读后面的运维操作部分，但作为性能调优的基础知识，依然建议大家抽时间返回来了解。

]]></description><category></category></item><item><title><![CDATA[GitHub上40K+star的宝藏级SpringBoot核心文档，看完献出膝盖]]></title><link>https://blog.youkuaiyun.com/java3456/article/details/107249431</link><guid>https://blog.youkuaiyun.com/java3456/article/details/107249431</guid><author>java3456</author><pubDate>Fri, 10 Jul 2020 13:56:29 +0800</pubDate><description><![CDATA[SpringBoot 以其轻量级、内嵌 Web 容器、一键启动、方便调试等特点被越来越多的微服务实践者所采用。然而知其然还要知其所以然，本 Chat 就来讲解 SpringBoot 核心模块的实现原理，在面试的时候也是会被经常问到的，核心内容主要包括：

spring-boot-load 模块，正常情况下一个类加载器只能找到加载路径的 jar 包里面当前目录或者文件类里面的 *.class 文件，SpringBoot 允许我们使用 java -jar archive.jar 运行包含嵌套依赖 jar 的 j]]></description><category></category></item><item><title><![CDATA[数据持久化框架为什么放弃JPA、Mybatis，最终选择JDBCTemplate！]]></title><link>https://blog.youkuaiyun.com/java3456/article/details/107204129</link><guid>https://blog.youkuaiyun.com/java3456/article/details/107204129</guid><author>java3456</author><pubDate>Wed, 08 Jul 2020 13:51:59 +0800</pubDate><description><![CDATA[因为项目需要选择数据持久化框架，看了一下主要几个流行的和不流行的框架，对于复杂业务系统，最终的结论是，JOOQ是总体上最好的，可惜不是完全免费，最终选择JDBC Template。


【文末放送面试题，纯福利】






Hibernate和Mybatis是使用最多的两个主流框架，而JOOQ、Ebean等小众框架则知道的人不多，但也有很多独特的优点；而JPA则是一组Java持久层Api的规范，Spring Data JPA是JPA Repository的实现，本来和Hibernate、Mybatis、.]]></description><category></category></item><item><title><![CDATA[杀鸡焉用宰牛刀？就是几个if else场景我需要用到策略模式？！]]></title><link>https://blog.youkuaiyun.com/java3456/article/details/107197402</link><guid>https://blog.youkuaiyun.com/java3456/article/details/107197402</guid><author>java3456</author><pubDate>Wed, 08 Jul 2020 09:06:45 +0800</pubDate><description><![CDATA[我想大家肯定都或多或少的看过各种“策略模式”的讲解、布道等等，这篇文章就是来好好“澄清”一下策略模式，并尝试回答以下的问题：

策略模式是如何优化业务逻辑代码结构的？
	杀鸡焉用宰牛刀？就是几个if else场景我需要用到策略模式？！
	有没有什么更好的代码结构来实现策略模式的吗？


策略模式是如何优化业务逻辑代码结构的？

要回答这个问题，我们还得先扒一扒策略模式的定义，从定义着手来理解它

策略模式的教科书定义

它的定义很精简：一个类的行为或其算法可以在运行时更改。我们把它降维到代码层面，用人话翻.]]></description><category></category></item><item><title><![CDATA[不了解JVM原理，还想要年薪50万？老实看完这篇文章]]></title><link>https://blog.youkuaiyun.com/java3456/article/details/107180545</link><guid>https://blog.youkuaiyun.com/java3456/article/details/107180545</guid><author>java3456</author><pubDate>Tue, 07 Jul 2020 14:20:41 +0800</pubDate><description><![CDATA[概念

虚拟机：指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统 ，是物理机的软件实现。常用的虚拟机有VMWare，Visual Box，Java Virtual Machine（Java虚拟机，简称JVM）。

Java虚拟机阵营：Sun HotSpot VM、BEA JRockit VM、IBM J9 VM、Azul VM、Apache Harmony、Google Dalvik VM、Microsoft JVM…

启动流程





基本架构







Ja...]]></description><category></category></item><item><title><![CDATA[使用Hystrix实现Spring Cloud的熔断机制]]></title><link>https://blog.youkuaiyun.com/java3456/article/details/107173560</link><guid>https://blog.youkuaiyun.com/java3456/article/details/107173560</guid><author>java3456</author><pubDate>Tue, 07 Jul 2020 09:09:16 +0800</pubDate><description><![CDATA[1. 熔断机制介绍

在介绍熔断机制之前，我们需要了解微服务的雪崩效应。在微服务架构中，微服务是完成一个单一的业务功能，这样做的好处是可以做到解耦，每个微服务可以独立演进。但是，一个应用可能会有多个微服务组成，微服务之间的数据交互通过远程过程调用完成。这就带来一个问题，假设微服务A调用微服务B和微服务C，微服务B和微服务C又调用其它的微服务，这就是所谓的“扇出”。

如果扇出的链路上某个微服务的调用响应时间过长或者不可用，对微服务A的调用就会占用越来越多的系统资源，进而引起系统崩溃，所谓的“...]]></description><category></category></item><item><title><![CDATA[面试官80%会问的分布式事务中的“最大努力通知”事务]]></title><link>https://blog.youkuaiyun.com/java3456/article/details/107158607</link><guid>https://blog.youkuaiyun.com/java3456/article/details/107158607</guid><author>java3456</author><pubDate>Mon, 06 Jul 2020 14:40:55 +0800</pubDate><description><![CDATA[一、概述


咱们今天聊聊分布式事务系列中的最后一个方案：最大努力通知事务。最大努力通知事务的主流实现仍是基于MQ来进行事务控制。最大努力通知事务和事务消息都是通知型事务，主要适用于那些需要异步更新数据，并且对数据的实时性要求较低的场景。


最大努力通知事务主要用于外部系统，因为外部的网络环境更加复杂和不可信，所以只能尽最大努力去通知实现数据最终一致性，比如充值平台与运营商、支付对接、商户通知等等跨平台、跨企业的系统间业务交互场景；而事务消息主要适用于内部系统的数据最终一致性保障，因为内部相对比较可控，比]]></description><category></category></item><item><title><![CDATA[面试官：为什么需要happens-before规则和什么是指令重排序]]></title><link>https://blog.youkuaiyun.com/java3456/article/details/107149532</link><guid>https://blog.youkuaiyun.com/java3456/article/details/107149532</guid><author>java3456</author><pubDate>Mon, 06 Jul 2020 09:08:32 +0800</pubDate><description><![CDATA[本篇文章从happens-before定义、用途以及具体规则三个方面对happens-before进行解读，并通过源码案例深入了解为什么需要happens-before规则和什么是指令重排序。


什么是happens-before

happens-before：A happens-before B就是A先行发生于B（这种说法不是很准确），定义为hb(A, B)。在Java内存模型中，happens-before的意思是前一个操作的结果可以被后续操作获取。

为什么需要happens-before

..]]></description><category></category></item><item><title><![CDATA[ConcurrentHashMap里面也有死循环]]></title><link>https://blog.youkuaiyun.com/java3456/article/details/107129716</link><guid>https://blog.youkuaiyun.com/java3456/article/details/107129716</guid><author>java3456</author><pubDate>Sat, 04 Jul 2020 20:19:55 +0800</pubDate><description><![CDATA[这篇文章，聊一下我最近才知道的一个关于 JDK 8 的 BUG 吧。

首先说一下我是怎么发现这个 BUG 的呢？

大家都知道我对 Dubbo 有一定的关注，前段时间 Dubbo 2.7.7 发布后我看了它的更新点，就是下面这个网址：


https://github.com/apache/dubbo/releases/tag/dubbo-2.7.7




其中有 Bugfixex 这一部分：





每一个我都去简单的看了一下，其他的 Bugfixes 或多或少都和 Dubbo 框架有一定的关联..]]></description><category></category></item><item><title><![CDATA[不必东奔西走，Java 集合框架看这一篇就够了]]></title><link>https://blog.youkuaiyun.com/java3456/article/details/107127573</link><guid>https://blog.youkuaiyun.com/java3456/article/details/107127573</guid><author>java3456</author><pubDate>Sat, 04 Jul 2020 17:48:10 +0800</pubDate><description><![CDATA[Java 集合，也称作容器，主要是由两大接口 (Interface) 派生出来的：Collection 和 Map

顾名思义，容器就是用来存放数据的。

那么这两大接口的不同之处在于：

Collection 存放单一元素；
	Map 存放 key-value 键值对。
就是单身狗放 Collection 里面，couple 就放 Map 里。（所以你属于哪里？

学习这些集合框架，我认为有 4 个目标：

明确每个接口和类的对应关系；
	对每个接口和类，熟悉常用的 API；
	对不同的场...]]></description><category></category></item><item><title><![CDATA[阿里巴巴美团等大厂面试大火的微服务架构还不懂？速来看]]></title><link>https://blog.youkuaiyun.com/java3456/article/details/107124547</link><guid>https://blog.youkuaiyun.com/java3456/article/details/107124547</guid><author>java3456</author><pubDate>Sat, 04 Jul 2020 15:01:51 +0800</pubDate><description><![CDATA[务架构和Spring Cloud。

第3、4章讲解了用Spring Cloud构建微服务的准备工作。



第5~12 章以案例为切入点，讲解了Spring Cloud构建微服务的基础组件，包括Eureka、Ribbon、Feign、 Hystrix、 Zuul、Config、Sleuth、 Admint 等组件。





第13~ 15章讲述了使用Spring Cloud OAuth2来保护微服务系统的相关知识。



第16章用个综合案例， 全面讲解了如何使用Spring Cloud 构建微服务，可]]></description><category></category></item><item><title><![CDATA[资深架构师分享的秘密武器，Spring Boot面试题（2020最新版）]]></title><link>https://blog.youkuaiyun.com/java3456/article/details/107119731</link><guid>https://blog.youkuaiyun.com/java3456/article/details/107119731</guid><author>java3456</author><pubDate>Sat, 04 Jul 2020 09:19:41 +0800</pubDate><description><![CDATA[概述

什么是 Spring Boot？

Spring Boot 是 Spring 开源组织下的子项目，是 Spring 组件一站式解决方案，主要是简化了使用 Spring 的难度，简省了繁重的配置，提供了各种启动器，开发者能快速上手。

Spring Boot 有哪些优点？

Spring Boot 主要有如下优点：

容易上手，提升开发效率，为 Spring 开发提供一个更快、更广泛的入门体验。
	开箱即用，远离繁琐的配置。
	提供了一系列大型项目通用的非业务性功能，例如：内嵌服务器、安全管理、运行数]]></description><category></category></item><item><title><![CDATA[Spring实战—使用注解保护方法，附上spring全家桶！]]></title><link>https://blog.youkuaiyun.com/java3456/article/details/107119499</link><guid>https://blog.youkuaiyun.com/java3456/article/details/107119499</guid><author>java3456</author><pubDate>Sat, 04 Jul 2020 09:02:01 +0800</pubDate><description><![CDATA[尽管Spring Security为我们提供了Web层的安全保护，我们依旧有可能会疏忽而导致用户通过正常访问路径访问到不应该访问的方法，所以除了在web层实施保护以外，我们还需要给底层的方法施加保护层。这样就能保证如果用户不具备权限的话，就无法执行相应的逻辑

文末分享的一线架构师的Spring全家桶笔记：Spring+Spring Boot+Spring Cloud+Spring MVC，如果你想要一起学习那就添加小助手VX：xuanwo008免费领取不要错过哦


Spring Security 提供.]]></description><category></category></item><item><title><![CDATA[《大厂面试》面试官看了直呼想要的简历]]></title><link>https://blog.youkuaiyun.com/java3456/article/details/107104493</link><guid>https://blog.youkuaiyun.com/java3456/article/details/107104493</guid><author>java3456</author><pubDate>Fri, 03 Jul 2020 14:08:01 +0800</pubDate><description><![CDATA[前言



昂每周我的邮箱都会收到各式各样的简历，但是说实话通过率真的太低了，hr都要吐槽我了，大家还是要好好写简历呀，能力再强简历差了，也不行啊。

HR经常一天过几百份，甚至上千份简历，可能看10-30秒就会觉得留下来继续看一下，是邀约面试，还是PASS掉，但是很多简历甚至那10秒都撑不到。

都说“人靠衣装佛靠金装”，同理我们出去找工作，简历也是我们的门面了，你想找到好工作，就得先过简历这一关了。

那被PASS的原因就很多了，要么是不符合招聘要求，比如学历不符、个人硬实力不符、年限、薪资不匹配、简历]]></description><category></category></item></channel></rss>