<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[傻傻的青铜的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/u013766342</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u013766342]]></copyright><item><title><![CDATA[Java 虚拟机对锁优化所做的努力]]></title><link>https://blog.youkuaiyun.com/u013766342/article/details/81699840</link><guid>https://blog.youkuaiyun.com/u013766342/article/details/81699840</guid><author>u013766342</author><pubDate>Wed, 15 Aug 2018 10:34:05 +0800</pubDate><description><![CDATA[1、 锁偏向

锁偏向是一种针对加锁操作的优化手段。

如果一个线程获得了锁，那么锁就进入偏向模式。当这个线程再次请求锁时，无须再做任何同步操作。这样就节省了大量有关锁申请的操作，从而提高了程序性能。

因此，对于几乎没有锁竞争的场合，偏向锁有比较红啊的优化效果，因为连续多次极有可能是同一个线程请求相同的锁。而对于锁竞争比较激烈的场合，其效果不佳。因为在竞争激烈的场合，最有可能的情况是每次都是不同...]]></description><category></category></item><item><title><![CDATA[Java面试常问计算机网络问题]]></title><link>https://blog.youkuaiyun.com/u013766342/article/details/81699471</link><guid>https://blog.youkuaiyun.com/u013766342/article/details/81699471</guid><author>u013766342</author><pubDate>Wed, 15 Aug 2018 10:20:26 +0800</pubDate><description><![CDATA[GET 和 POST 的区别

 

GET请注意，查询字符串（名称/值对）是在 GET 请求的 URL 中发送的：/test/demo_form.asp?name1=value1&amp;amp;name2=value2


	GET 请求可被缓存
	
	
	GET 请求保留在浏览器历史记录中
	
	
	GET 请求可被收藏为书签
	
	
	GET 请求不应在处理敏感数据时使用
	
	
	GET 请求有...]]></description><category></category></item><item><title><![CDATA[搞懂 HashSet &amp; LinkedHashSet 源码 以及集合常见面试题目]]></title><link>https://blog.youkuaiyun.com/u013766342/article/details/81240731</link><guid>https://blog.youkuaiyun.com/u013766342/article/details/81240731</guid><author>u013766342</author><pubDate>Fri, 27 Jul 2018 17:06:45 +0800</pubDate><description><![CDATA[Set 集合概述




由于本篇文章主要叙述 Set 容器以及和 Map 容器之间关系，我们只需要关注上述集合图谱中 Set 部分。可以看出 Set 主要的实现类有 HashSet 和 TreeSet 以及没有画出的 LinkedHashSet。其中 HashSet 的实现依赖于 HashMap， TreeSet 的实现依赖于 TreeMap，LinkedHashSet 的实现依赖于 Linke...]]></description><category></category></item><item><title><![CDATA[双机热备方案及双机热备软件选择]]></title><link>https://blog.youkuaiyun.com/u013766342/article/details/81240338</link><guid>https://blog.youkuaiyun.com/u013766342/article/details/81240338</guid><author>u013766342</author><pubDate>Fri, 27 Jul 2018 16:54:19 +0800</pubDate><description><![CDATA[1 什么是双机热备方案

企事业机构的信息化建设已经在随着社会建设的不断推进而改进和创新。众企事业机构的决策层也愈发重视企事业机构的信息化，不同程度的运营和发展着自身的业务信息系统。但是日趋普遍的业务信息系统在为企事业机构带来利益的同时，也存在着一个不容忽视的隐患——越来越多的业务依赖于业务信息系统。如果运行着关键业务信息系统的服务器发生宕机或是因为不可控的原因而停止，从而导致整个企事业机构的信息...]]></description><category></category></item><item><title><![CDATA[如何解决秒杀的性能问题和超卖的讨论]]></title><link>https://blog.youkuaiyun.com/u013766342/article/details/81240232</link><guid>https://blog.youkuaiyun.com/u013766342/article/details/81240232</guid><author>u013766342</author><pubDate>Fri, 27 Jul 2018 16:49:14 +0800</pubDate><description><![CDATA[进入正文前先说一点个人感受，之前看淘宝的ppt感觉都懂了，等到自己出解决方案的时候发现还是有很多想不到的地方其实都没懂，再次验证了“细节是魔鬼”的理论。并且一个人的能力有限，只有大家一起讨论才能想的更周全，更细致。好了，闲话少说，下面进入正文。

一、秒杀带来了什么？

秒杀或抢购活动一般会经过【预约】【抢订单】【支付】这3个大环节，而其中【抢订单】这个环节是最考验业务提供方的抗压能力的。

抢订...]]></description><category></category></item><item><title><![CDATA[谈谈我对Spring IOC的理解]]></title><link>https://blog.youkuaiyun.com/u013766342/article/details/81240201</link><guid>https://blog.youkuaiyun.com/u013766342/article/details/81240201</guid><author>u013766342</author><pubDate>Fri, 27 Jul 2018 16:44:24 +0800</pubDate><description><![CDATA[学习过Spring框架的人一定都会听过Spring的IoC(控制反转) 、DI(依赖注入)这两个概念，对于初学Spring的人来说，总觉得IoC 、DI这两个概念是模糊不清的，是很难理解的，今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解以及谈谈我对Spring Ioc的理解。

一、分享Iteye的开涛对Ioc的精彩讲解

　　首先要分享的是Iteye的开涛这位技术牛人对Spr...]]></description><category></category></item><item><title><![CDATA[一个用消息队列的人，不知道为啥用，这就有点尴尬]]></title><link>https://blog.youkuaiyun.com/u013766342/article/details/81240121</link><guid>https://blog.youkuaiyun.com/u013766342/article/details/81240121</guid><author>u013766342</author><pubDate>Fri, 27 Jul 2018 16:41:17 +0800</pubDate><description><![CDATA[0 为什么写这篇文章?

博主有两位朋友分别是小A和小B:

小A，工作于传统软件行业(某社保局的软件外包公司)，每天工作内容就是和产品聊聊需求，改改业务逻辑。再不然就是和运营聊聊天，写几个SQL，生成下报表。又或者接到客服的通知，某某功能故障了，改改数据，然后下班部署上线。每天过的都是这种生活，技术零成长。

小B，工作于某国企，虽然能接触到一些中间件技术。然而，他只会订阅/发布消息。通俗点说，...]]></description><category></category></item><item><title><![CDATA[深入解读RabbitMQ工作原理及Java中简单使用]]></title><link>https://blog.youkuaiyun.com/u013766342/article/details/81239970</link><guid>https://blog.youkuaiyun.com/u013766342/article/details/81239970</guid><author>u013766342</author><pubDate>Fri, 27 Jul 2018 16:35:57 +0800</pubDate><description><![CDATA[RabbitMQ简介

在介绍RabbitMQ之前实现要介绍一下MQ，MQ是什么？

MQ全称是Message Queue，可以理解为消息队列的意思，简单来说就是消息以管道的方式进行传递。

RabbitMQ是一个实现了AMQP（Advanced Message Queuing Protocol）高级消息队列协议的消息队列服务，用Erlang语言的。

使用场景

在我们秒杀抢购商品的时候，系统会...]]></description><category></category></item><item><title><![CDATA[分布式之MQ复习精讲]]></title><link>https://blog.youkuaiyun.com/u013766342/article/details/81239822</link><guid>https://blog.youkuaiyun.com/u013766342/article/details/81239822</guid><author>u013766342</author><pubDate>Fri, 27 Jul 2018 16:32:18 +0800</pubDate><description><![CDATA[为什么写这篇文章?

博主有两位朋友分别是小A和小B:

1.小A，工作于传统软件行业(某社保局的软件外包公司)，每天工作内容就是和产品聊聊需求，改改业务逻辑。再不然就是和运营聊聊天，写几个SQL，生成下报表。又或者接到客服的通知，某某功能故障了，改改数据，然后下班部署上线。每天过的都是这种生活，技术零成长。

2.小B，工作于某国企，虽然能接触到一些中间件技术。然而，他只会订阅/发布消息。通俗点...]]></description><category></category></item><item><title><![CDATA[springboot 完整企业项目搭建实记]]></title><link>https://blog.youkuaiyun.com/u013766342/article/details/81239786</link><guid>https://blog.youkuaiyun.com/u013766342/article/details/81239786</guid><author>u013766342</author><pubDate>Fri, 27 Jul 2018 16:27:13 +0800</pubDate><description><![CDATA[这里给自己定一个该框架搭建完成的目标，如下 ：

 

框架要求功能： 
- 处理http/json 请求 
- 日志记录 
- 持久化 
- 数据源，事务控制 
- 定时任务 
- 视图模版

 

搭建环境： 
- 编译器：idea 2016.2.4 
- Maven : maven3.0 
- JDK: java7 
- 系统: mac OS 10.10.4 
- 数据库: mysql5.6...]]></description><category></category></item><item><title><![CDATA[SpringMVC工作原理]]></title><link>https://blog.youkuaiyun.com/u013766342/article/details/81239335</link><guid>https://blog.youkuaiyun.com/u013766342/article/details/81239335</guid><author>u013766342</author><pubDate>Fri, 27 Jul 2018 16:11:45 +0800</pubDate><description><![CDATA[SpringMVC的工作原理图：

 



 

SpringMVC流程

 


	用户发送请求至前端控制器DispatcherServlet。
	
	
	DispatcherServlet收到请求调用HandlerMapping处理器映射器。
	
	
	处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找)，生成处理器对象及处理器拦截器(如果有则生成)一并返回给Dispatcher...]]></description><category></category></item><item><title><![CDATA[SpringBoot启动流程解析]]></title><link>https://blog.youkuaiyun.com/u013766342/article/details/81239073</link><guid>https://blog.youkuaiyun.com/u013766342/article/details/81239073</guid><author>u013766342</author><pubDate>Fri, 27 Jul 2018 16:06:11 +0800</pubDate><description><![CDATA[写在前面：

由于该系统是底层系统，以微服务形式对外暴露dubbo服务，所以本流程中SpringBoot不基于jetty或者tomcat等容器启动方式发布服务，而是以执行程序方式启动来发布(参考下图keepRunning方法)。

 

本文以调试一个实际的SpringBoot启动程序为例，参考流程中主要类类图，来分析其启动逻辑和自动化配置原理。



 

总览：

上图为SpringBoot启...]]></description><category></category></item><item><title><![CDATA[Java虚拟机的Heap监狱]]></title><link>https://blog.youkuaiyun.com/u013766342/article/details/81186852</link><guid>https://blog.youkuaiyun.com/u013766342/article/details/81186852</guid><author>u013766342</author><pubDate>Tue, 24 Jul 2018 16:21:15 +0800</pubDate><description><![CDATA[在Java虚拟机中，我是一个位高权重的大管家，他们都很怕我，尤其是那些Java 对象，我把他们圈到一个叫做Heap的“监狱”里，严格管理，生杀大权尽在掌握。

中国人把Stack翻译成“栈”，把Heap翻译成“堆”， 还有人会把Stack翻译成“堆栈”，唉，真不知道他们是怎么想的， 不过这么多年都过来了，你们明白就好。

碰巧我会对Heap中的Java 对象做垃圾回收，这个“堆”总是让我联想到垃圾...]]></description><category></category></item><item><title><![CDATA[细思极恐-你真的会写Java吗]]></title><link>https://blog.youkuaiyun.com/u013766342/article/details/81186209</link><guid>https://blog.youkuaiyun.com/u013766342/article/details/81186209</guid><author>u013766342</author><pubDate>Tue, 24 Jul 2018 15:54:39 +0800</pubDate><description><![CDATA[文章核心

其实，本不想把标题写的那么恐怖，只是发现很多人干了几年java以后，都自认为是一个不错的java程序员了，可以拿着上万的工资都处宣扬自己了，写这篇文章的目的并不是嘲讽和我一样做java的同行们，只是希望读者看到此篇文章后，可以和我一样，心平气和的争取做一个优秀的程序员。

讲述方向

由于一直从事移动互联网相关工作，java开发中经常和移动端打交道或者做一些后端的工作，所以本篇文章更可...]]></description><category></category></item><item><title><![CDATA[详解 equals() 方法和 hashCode() 方法]]></title><link>https://blog.youkuaiyun.com/u013766342/article/details/81186085</link><guid>https://blog.youkuaiyun.com/u013766342/article/details/81186085</guid><author>u013766342</author><pubDate>Tue, 24 Jul 2018 15:50:44 +0800</pubDate><description><![CDATA[前言

 

Java的基类Object提供了一些方法，其中equals()方法用于判断两个对象是否相等，hashCode()方法用于计算对象的哈希码。equals()和hashCode()都不是final方法，都可以被重写(overwrite)。

 

本文介绍了2种方法在使用和重写时，一些需要注意的问题。

 

一、equal()方法

 Object类中equals()方法实现如下：

...]]></description><category></category></item><item><title><![CDATA[对高并发流量控制的一点思考]]></title><link>https://blog.youkuaiyun.com/u013766342/article/details/81186014</link><guid>https://blog.youkuaiyun.com/u013766342/article/details/81186014</guid><author>u013766342</author><pubDate>Tue, 24 Jul 2018 15:48:18 +0800</pubDate><description><![CDATA[ 

前言：

在实际项目中，曾经遭遇过线上5W+QPS的峰值，也在压测状态下经历过10W+QPS的大流量请求，主要就是自己对高并发流量控制的一点思考。

应对大流量的一些思路

首先，我们来说一下什么是大流量？


大流量，我们很可能会冒出：TPS（每秒事务量），QPS（每秒请求量），1W+，5W+，10W+，100W+...。其实并没有一个绝对的数字，如果这个量造成了系统的压力，影响了系统的性...]]></description><category></category></item><item><title><![CDATA[活跃性（死锁、饥饿、活锁）]]></title><link>https://blog.youkuaiyun.com/u013766342/article/details/80929719</link><guid>https://blog.youkuaiyun.com/u013766342/article/details/80929719</guid><author>u013766342</author><pubDate>Thu, 05 Jul 2018 16:54:55 +0800</pubDate><description><![CDATA[锁顺序死锁我们知道，加锁是为了保证线程安全性而做的同步操作，而过度的加锁可能导致各个线程彼此依赖别的线程已经持有的锁。先上一段代码瞅瞅：public class DeadLockDemo {    public static void main(String[] args) {        Object lock1 = new Object();        Object lock2 = ne...]]></description><category></category></item><item><title><![CDATA[线程间通信(上) 之wait/notify机制]]></title><link>https://blog.youkuaiyun.com/u013766342/article/details/80929528</link><guid>https://blog.youkuaiyun.com/u013766342/article/details/80929528</guid><author>u013766342</author><pubDate>Thu, 05 Jul 2018 16:46:38 +0800</pubDate><description><![CDATA[线程间通信如果一个线程从头到尾执行完也不和别的线程打交道的话，那就不会有各种安全性问题了。但是协作越来越成为社会发展的大势，一个大任务拆成若干个小任务之后，各个小任务之间可能也需要相互协作最终才能执行完整个大任务。所以各个线程在执行过程中可以相互通信，所谓通信就是指相互交换一些数据或者发送一些控制指令，比如一个线程给另一个暂停执行的线程发送一个恢复执行的指令，下边详细看都有哪些通信方式。volat...]]></description><category></category></item><item><title><![CDATA[设计线程安全的类]]></title><link>https://blog.youkuaiyun.com/u013766342/article/details/80929507</link><guid>https://blog.youkuaiyun.com/u013766342/article/details/80929507</guid><author>u013766342</author><pubDate>Thu, 05 Jul 2018 16:44:29 +0800</pubDate><description><![CDATA[设计线程安全的类前边我们对线程安全性的分析都停留在一两个可变共享变量的基础上，真实并发程序中可变共享变量会非常多，在出现安全性问题的时候很难准确定位是哪块儿出了问题，而且修复问题的难度也会随着程序规模的扩大而提升(因为在程序的各个位置都可以随便使用可变共享变量，每个操作都可能导致安全性问题的发生)。比方说我们设计了一个这样的类：public class Increment {    private...]]></description><category></category></item><item><title><![CDATA[java并发编程之原子性操作]]></title><link>https://blog.youkuaiyun.com/u013766342/article/details/80929474</link><guid>https://blog.youkuaiyun.com/u013766342/article/details/80929474</guid><author>u013766342</author><pubDate>Thu, 05 Jul 2018 16:43:26 +0800</pubDate><description><![CDATA[线程风险上头一直在说以线程为基础的并发编程的好处了，什么提高处理器利用率啦，简化编程模型啦。但是砖家们还是认为并发编程是程序开发中最不可捉摸、最诡异、最扯犊子、最麻烦、最恶心、最心烦、最容易出错、最不符合社会主义核心价值观的一个部分～ 造成这么多最的原因其实很简单：进程中的各种资源，比如内存和I/O，在代码里以变量的形式展现，而某些变量在多线程间是共享、可变的，共享意味着这个变量可以被多个线程同时...]]></description><category></category></item></channel></rss>