<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[it_monkey_ali的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/it_monkey_ali</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; it_monkey_ali]]></copyright><item><title><![CDATA[数据分析（4）绘制茅台股票均线]]></title><link>https://blog.youkuaiyun.com/it_monkey_ali/article/details/124767524</link><guid>https://blog.youkuaiyun.com/it_monkey_ali/article/details/124767524</guid><author>it_monkey_ali</author><pubDate>Sat, 14 May 2022 14:01:27 +0800</pubDate><description><![CDATA[1.从tushare获取茅台股票交易数据


#-*- coding: utf-8 -*-
import tushare as ts

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"C:\Windows\Fonts\simhei.ttf", size=14)


df=ts.get_k_da]]></description><category></category></item><item><title><![CDATA[数据分析（3）]]></title><link>https://blog.youkuaiyun.com/it_monkey_ali/article/details/124572196</link><guid>https://blog.youkuaiyun.com/it_monkey_ali/article/details/124572196</guid><author>it_monkey_ali</author><pubDate>Wed, 04 May 2022 16:14:31 +0800</pubDate><description><![CDATA[matplotlib绘图


	
绘制单条线形图

	
import numpy as np
import matplotlib.pyplot as plt

#绘制单条线形图
x=np.array([1,2,3,4,5])
y=x+3
plt.plot(x,y)
plt.savefig('条线形图.png')
plt.show()


	

	
	
	
	
绘制多条线形图

	
import numpy as np
import matplotlib.pyplot as plt

#绘制多条线形图
x..]]></description><category></category></item><item><title><![CDATA[数据分析（1）]]></title><link>https://blog.youkuaiyun.com/it_monkey_ali/article/details/88294183</link><guid>https://blog.youkuaiyun.com/it_monkey_ali/article/details/88294183</guid><author>it_monkey_ali</author><pubDate>Wed, 04 May 2022 14:16:30 +0800</pubDate><description><![CDATA[一、Numpy基本操作








]]></description><category></category></item><item><title><![CDATA[跳表：为什么Redis一定要用跳表来实现有序集合？]]></title><link>https://blog.youkuaiyun.com/it_monkey_ali/article/details/108587782</link><guid>https://blog.youkuaiyun.com/it_monkey_ali/article/details/108587782</guid><author>it_monkey_ali</author><pubDate>Mon, 14 Sep 2020 20:51:33 +0800</pubDate><description><![CDATA[跳表（Skip list）实际上就是在链表的基础上改造生成的。

跳表是一种各方面性能都比较优秀的动态数据结构，可以支持快速的插入、删除、查找操作，写起来也不复杂，甚至可以替代 红黑树。

Redis 中的有序集合就是用跳表来实现的。那 Redis 为什么会选择用跳表来实现有序集合呢？



一、如何理解跳表？

对于单链表来说，我们查找某个数据，只能从头到尾遍历链表，此时时间复杂度是 ○(n)。





如何提高查询效率？



那怎么来提高查找效率呢？如果像图中那样，对链表建立一级“索引”，...]]></description><category></category></item><item><title><![CDATA[JVM内存模型，以及JVM性能调优]]></title><link>https://blog.youkuaiyun.com/it_monkey_ali/article/details/108569803</link><guid>https://blog.youkuaiyun.com/it_monkey_ali/article/details/108569803</guid><author>it_monkey_ali</author><pubDate>Sun, 13 Sep 2020 22:49:52 +0800</pubDate><description><![CDATA[转载批注：最近因与别人讨论问题时，问到JVM内存模型，但是苦于只知道JVM的大概内容，不知道详细，也罢，近期会逐渐有充足的自己的时间，好好整理学习学习。以下内容为转载别人的资料，个人认为写的很好，就全文拷贝了。



===================华丽的分割线======================

一、JVM内存模型及垃圾收集算法

1.根据Java虚拟机规范，JVM将内存划分为：

New（年轻代）
	Old（年老代）
	永久代（Perm）
 其中New和Old属于堆内存，堆内存会从...]]></description><category></category></item><item><title><![CDATA[nginx限流]]></title><link>https://blog.youkuaiyun.com/it_monkey_ali/article/details/88786109</link><guid>https://blog.youkuaiyun.com/it_monkey_ali/article/details/88786109</guid><author>it_monkey_ali</author><pubDate>Mon, 25 Mar 2019 10:02:12 +0800</pubDate><description><![CDATA[一、场景

一般对外暴露的系统,在促销或者黑客攻击时会涌来大量的请求,为了保护系统不被瞬间到来的高并发流量给打垮, 就需要限流

二、限流算法

1. 令牌桶算法


令牌桶算法



算法思想是：

令牌以固定速率产生，并缓存到令牌桶中；
      令牌桶放满时，多余的令牌被丢弃；
      请求要消耗等比例的令牌才能被处理；
      令牌不够时，...]]></description><category></category></item><item><title><![CDATA[JAVA进阶面试题：秒杀系统架构分析与实战]]></title><link>https://blog.youkuaiyun.com/it_monkey_ali/article/details/88354159</link><guid>https://blog.youkuaiyun.com/it_monkey_ali/article/details/88354159</guid><author>it_monkey_ali</author><pubDate>Fri, 08 Mar 2019 16:41:45 +0800</pubDate><description><![CDATA[1 秒杀业务分析




	正常电子商务流程（1）查询商品；（2）创建订单；（3）扣减库存；（4）更新订单；（5）付款；（6）卖家发货
	
	
	秒杀业务的特性（1）低廉价格；（2）大幅推广；（3）瞬时售空；（4）一般是定时上架；（5）时间短、瞬时并发量高；
	


2 秒杀技术挑战

假设某网站秒杀活动只推出一件商品，预计会吸引1万人参加活动，也就说最大并发请求数是10000，秒杀系统需要面对...]]></description><category></category></item><item><title><![CDATA[JAVA进阶面试题：如何设计一个高并发系统？]]></title><link>https://blog.youkuaiyun.com/it_monkey_ali/article/details/88313195</link><guid>https://blog.youkuaiyun.com/it_monkey_ali/article/details/88313195</guid><author>it_monkey_ali</author><pubDate>Thu, 07 Mar 2019 16:55:59 +0800</pubDate><description><![CDATA[一、面试原题：

如何设计一个高并发系统？

二、面试官心理分析：

假设你在某知名电商公司干过高并发系统，用户上亿，一天流量几十亿，高峰期并发量上万，甚至是十万。那么人家一定会仔细盘问你的系统架构，你们系统啥架构？怎么部署的？部署了多少台机器？缓存咋用的？MQ 咋用的？数据库咋用的？就是深挖你到底是如何扛住高并发的。

因为真正干过高并发的人一定知道，脱离了业务的系统架构都是在纸上谈兵，真正在复...]]></description><category></category></item><item><title><![CDATA[CurrentHashMap在JDK1.8的改进]]></title><link>https://blog.youkuaiyun.com/it_monkey_ali/article/details/88238362</link><guid>https://blog.youkuaiyun.com/it_monkey_ali/article/details/88238362</guid><author>it_monkey_ali</author><pubDate>Wed, 06 Mar 2019 15:39:38 +0800</pubDate><description><![CDATA[一、ConcurrentHashMap在jdk1.7中的设计

jdk1.7中采用Segment+HashEntry的方式进行实现，结构如下：



二、ConcurrentHashMap在jdk1.8中的设计

1.8中放弃了Segment臃肿的设计，取而代之的是采用Node+CAS+Synchronized+红黑树来保证并发安全进行实现，结构如下：








...]]></description><category></category></item><item><title><![CDATA[JDK1.8 HashMap源码分析]]></title><link>https://blog.youkuaiyun.com/it_monkey_ali/article/details/87973986</link><guid>https://blog.youkuaiyun.com/it_monkey_ali/article/details/87973986</guid><author>it_monkey_ali</author><pubDate>Wed, 27 Feb 2019 15:35:37 +0800</pubDate><description><![CDATA[1、底层结构
JDK1.8之前的结构

在JDK1.7之前，HashMap采用的是数组+链表的结构，其结构图如下：

 




 
数组的每一个元素都是一个单链表的头节点，链表是用来解决冲突的，如果不同的key映射到了数组的同一位置处，就将其放入单链表中。

JDK1.8的结构
JDK1.8之前的HashMap都采用上图的结构，都是基于一个数组和多个单链表，hash值冲突的时候，就将对应节点以链...]]></description><category></category></item><item><title><![CDATA[AQS原理浅析]]></title><link>https://blog.youkuaiyun.com/it_monkey_ali/article/details/87709473</link><guid>https://blog.youkuaiyun.com/it_monkey_ali/article/details/87709473</guid><author>it_monkey_ali</author><pubDate>Tue, 19 Feb 2019 14:53:23 +0800</pubDate><description><![CDATA[这是一道面试题：简述AQS原理
AQS核心思想是，如果被请求的共享资源空闲，则将当前请求资源的线程设置为有效的工作线程，并且将共享资源设置为锁定状态。如果被请求的共享资源被占用，那么就需要一套线程阻塞等待以及被唤醒时锁分配的机制，这个机制AQS是用CLH队列锁实现的，即将暂时获取不到锁的线程加入到队列中。

CLH(Craig,Landin,and Hagersten)队列是一个虚拟的双向队列（虚...]]></description><category></category></item><item><title><![CDATA[关于JVM内存模型的理解]]></title><link>https://blog.youkuaiyun.com/it_monkey_ali/article/details/83177177</link><guid>https://blog.youkuaiyun.com/it_monkey_ali/article/details/83177177</guid><author>it_monkey_ali</author><pubDate>Fri, 19 Oct 2018 10:41:05 +0800</pubDate><description><![CDATA[一、概念
1、JVM运行时数据区



jvm运行时数据区


   整个JVM占用的内存可分为两个大区，分别是线程共享区和线程私有区，线程共享区和JVM同生共死，所有线程均可访问此区域；而线程私有区顾名思义每个线程各自占有，与各自线程同生共死。这两个大区内部根据JVM规范定义又分为以下几个区：

方法区（Method Area）
   方法区主要是放一下类似类定义、常量、编译后...]]></description><category></category></item><item><title><![CDATA[高级JAVA必会系列四]]></title><link>https://blog.youkuaiyun.com/it_monkey_ali/article/details/83035523</link><guid>https://blog.youkuaiyun.com/it_monkey_ali/article/details/83035523</guid><author>it_monkey_ali</author><pubDate>Sat, 13 Oct 2018 09:30:26 +0800</pubDate><description><![CDATA[
本文大纲

 

 1.并发编程三要素

原子性，即一个不可再被分割的颗粒。在Java中原子性指的是一个或多个操作要么全部执行成功要么全部执行失败。
	有序性,程序执行的顺序按照代码的先后顺序执行。（处理器可能会对指令进行重排序）
	可见性,当多个线程访问同一个变量时，如果其中一个线程对其作了修改，其他线程能立即获取到最新的值。
2. 线程的五大状态

创建状态,当用 new 操作符创建一个线程...]]></description><category></category></item><item><title><![CDATA[高级JAVA必会系列三:并发编程]]></title><link>https://blog.youkuaiyun.com/it_monkey_ali/article/details/82965438</link><guid>https://blog.youkuaiyun.com/it_monkey_ali/article/details/82965438</guid><author>it_monkey_ali</author><pubDate>Mon, 08 Oct 2018 11:54:23 +0800</pubDate><description><![CDATA[FutureTask

Introduction

  FutureTask这个组件是J.U.C里面的，但不是AQS的子类，但是这个类对线程处理的结果很值得我们学习和在项目中使用。
  在Java中一般通过继承Thread类或者实现Runnable接口这两种方式来创建多线程，但是这两种方式都有个缺陷，就是不能在执行完成后获取执行的结果，在Java 1.5之后提供了Callable和Future接口...]]></description><category></category></item><item><title><![CDATA[Redis集群]]></title><link>https://blog.youkuaiyun.com/it_monkey_ali/article/details/82180680</link><guid>https://blog.youkuaiyun.com/it_monkey_ali/article/details/82180680</guid><author>it_monkey_ali</author><pubDate>Wed, 29 Aug 2018 11:33:18 +0800</pubDate><description><![CDATA[集群架构



(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.

(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.

(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可

(4)redis-cluster把所有的物理节点映射到[0-16383]slot（插槽）上...]]></description><category></category></item><item><title><![CDATA[物联网云平台系统设计]]></title><link>https://blog.youkuaiyun.com/it_monkey_ali/article/details/81735233</link><guid>https://blog.youkuaiyun.com/it_monkey_ali/article/details/81735233</guid><author>it_monkey_ali</author><pubDate>Thu, 16 Aug 2018 09:05:41 +0800</pubDate><description><![CDATA[下面将谈到几个关键问题：

设备如何接入网络？
	设备间如何通信？
	物联网数据的用途?
	如何搭建起一个物联网系统框架呢？它的技术架构又是怎么样呢？
	物联网终端软件系统架构？
	物联网云平台系统架构？
1. 物联网设备如何接入到网络？

只有设备接入到网络里面，才能算是物联网设备。这里涉及到2个关键点：接入方式以及网络通信方式。

设备接入方式：

当前有2种接入方式

直接接入：物联网终端设...]]></description><category></category></item><item><title><![CDATA[Netty学习笔记系列之七：开发私有协议栈]]></title><link>https://blog.youkuaiyun.com/it_monkey_ali/article/details/80749277</link><guid>https://blog.youkuaiyun.com/it_monkey_ali/article/details/80749277</guid><author>it_monkey_ali</author><pubDate>Wed, 20 Jun 2018 17:36:38 +0800</pubDate><description><![CDATA[通信协议从广义上区分，可以分为公有协议和私有协议。由于私有协议的灵活性，它往往会在某个公司或者组织内部使用，按需定制，也因为如此，升级起来会非常方便，灵活性好。绝大多数的私有协议传输层都基于TCP/IP，所以利用Netty的NIO TCP协议栈可以非常方便地进行私有协议的定制和开发。Netty协议栈功能设计使用Netty提供的异步TCP协议栈开发一个私有协议栈，该协议栈被命名为Netty协议栈。N...]]></description><category></category></item><item><title><![CDATA[高级JAVA必会系列二：多线程经常使用的3个关键字：synchronized、ReentrantLock、volatile]]></title><link>https://blog.youkuaiyun.com/it_monkey_ali/article/details/80511467</link><guid>https://blog.youkuaiyun.com/it_monkey_ali/article/details/80511467</guid><author>it_monkey_ali</author><pubDate>Wed, 30 May 2018 16:00:33 +0800</pubDate><description><![CDATA[一.synchronized

(1)用法:

1.修饰实例方法:


package com.retail.sync;

/**
 * @author Tom
 */
public class AccountingSync implements Runnable {

    /**
     * 共享资源(临界资源)
     */
    static int i = 0;

    /**...]]></description><category></category></item><item><title><![CDATA[高级JAVA必会系列一：常用线程池和调度类]]></title><link>https://blog.youkuaiyun.com/it_monkey_ali/article/details/80511306</link><guid>https://blog.youkuaiyun.com/it_monkey_ali/article/details/80511306</guid><author>it_monkey_ali</author><pubDate>Wed, 30 May 2018 15:52:55 +0800</pubDate><description><![CDATA[一、常用线程池

1.newCachedThreadPool

  (1)缓存型池子，先查看池中有没有以前建立的线程，如果有，就复用，如果没有，就建立一个新的线程加入池中；

  (2)缓存型池子，通常用于执行一些生存周期很短的异步型任务；因此一些面向连接的daemon型server中用得不多；

  (3)能复用的线程，缺省超时时间是60s,超过这个IDLE时长...]]></description><category></category></item><item><title><![CDATA[基于springCloud的分布式架构体系]]></title><link>https://blog.youkuaiyun.com/it_monkey_ali/article/details/80422446</link><guid>https://blog.youkuaiyun.com/it_monkey_ali/article/details/80422446</guid><author>it_monkey_ali</author><pubDate>Wed, 23 May 2018 16:50:29 +0800</pubDate><description><![CDATA[Spring Cloud作为一套微服务治理的框架，几乎考虑到了微服务治理的方方面面，之前也写过一些关于Spring Cloud文章，主要偏重各组件的使用，本次分享主要解答这两个问题：Spring Cloud在微服务的架构中都做了哪些事情？Spring Cloud提供的这些功能对微服务的架构提供了怎样的便利？ 我们先来简单回顾一下，我们以往互联网架构的发展情况： 传统架构发展史 单体架构 单体架构在...]]></description><category></category></item></channel></rss>