<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[近光的博客]]></title><description><![CDATA[JAVA/Python/机器学习，新手在路上，欢迎大家学习交流]]></description><link>https://blog.youkuaiyun.com/ran_Max</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ran_Max]]></copyright><item><title><![CDATA[为什么Github要把代码合并请求称为pull request而不是push request？]]></title><link>https://blog.youkuaiyun.com/ran_Max/article/details/106205322</link><guid>https://blog.youkuaiyun.com/ran_Max/article/details/106205322</guid><author>ran_Max</author><pubDate>Tue, 19 May 2020 00:29:49 +0800</pubDate><description><![CDATA[原文 https://www.cnblogs.com/leodaxin/p/9403320.html
问题：
我的理解是：我做了一些修改，我请求把我的修改push到你的仓库，然后你review一下我的代码，如果没问题就接受请求merge，这样的话叫做push request岂不是更合适？因为这个操作是我主动发起的。pull是仓库主向我fork的仓库发起的操作，那么pull request这种操作应该是要上游仓库主来向我发起啊，而不是我主动让上游仓库主来pull我仓库中的代码。
答案：
这个pull指的是权限]]></description><category></category></item><item><title><![CDATA[如何在windows下使用swaggo]]></title><link>https://blog.youkuaiyun.com/ran_Max/article/details/105718374</link><guid>https://blog.youkuaiyun.com/ran_Max/article/details/105718374</guid><author>ran_Max</author><pubDate>Thu, 23 Apr 2020 21:56:54 +0800</pubDate><description><![CDATA[在Linux下安装的流程

$ go get -u github.com/swaggo/swag/cmd/swag

若 $GOROOT/bin 没有加入$PATH中，你需要执行将其可执行文件移动到$GOBIN下

mv $GOPATH/bin/swag /usr/local/go/bin

验证是否安装成功
检查 $GOBIN 下是否有 swag 文件，如下：

$ swag -v
swag v...]]></description><category></category></item><item><title><![CDATA[HTTP1.1和HTTP2.0新特性]]></title><link>https://blog.youkuaiyun.com/ran_Max/article/details/105279644</link><guid>https://blog.youkuaiyun.com/ran_Max/article/details/105279644</guid><author>ran_Max</author><pubDate>Thu, 02 Apr 2020 22:09:11 +0800</pubDate><description><![CDATA[HTTP1.1
长连接
在http1.0时代，每发送一个http请求都会建立一个tcp连接，发送回响应后，连接就会关闭。而TCP连接的建立需要三次握手，极大的浪费了性能。同时一个连接的发起必须是在前一个连接的响应之后。
在http1.1中允许了长连接，当建立起一个tcp连接之后，多个http访问可以复用这个连接，是通过http请求头中的keep-alive来标识的。
其次，http1.1支持了连接...]]></description><category></category></item><item><title><![CDATA[Java线程——中断线程和interrupt()]]></title><link>https://blog.youkuaiyun.com/ran_Max/article/details/99196754</link><guid>https://blog.youkuaiyun.com/ran_Max/article/details/99196754</guid><author>ran_Max</author><pubDate>Sun, 11 Aug 2019 16:23:37 +0800</pubDate><description><![CDATA[线程进入阻塞的情况
1.调用 Thread.sleep() 方法进入休眠状态；
2. 通过 wait() 使线程挂起，直到线程得到 notify() 或 notifyAll() 消息（或者 java.util.concurrent 类库中等价的 signal() 或 signalAll() 消息；
3.  等待某个 I/O 的完成；
4.试图在某个对象上调用其同步控制方法，但是对象锁不可用，因为另...]]></description><category></category></item><item><title><![CDATA[Java中的锁——Synchronized锁的使用]]></title><link>https://blog.youkuaiyun.com/ran_Max/article/details/99189813</link><guid>https://blog.youkuaiyun.com/ran_Max/article/details/99189813</guid><author>ran_Max</author><pubDate>Sun, 11 Aug 2019 15:23:08 +0800</pubDate><description><![CDATA[基本情况




类别
Synchronized
Lock




存在层次
Jvm,Synchronized是Java的关键字
类


锁的获取
当一个线程获取到锁的时候，其他线程只能等待
可以有多种情况，不一定要一直等待下去


锁的释放
由于在Jvm层面，使用完毕之后会自动的释放锁
使用完锁之后必须手动的释放锁，一般放在finally里面


锁的类型
非公平锁
可以是公平的，默认非公平

...]]></description><category></category></item><item><title><![CDATA[不同操作系统下的文件系统]]></title><link>https://blog.youkuaiyun.com/ran_Max/article/details/84064503</link><guid>https://blog.youkuaiyun.com/ran_Max/article/details/84064503</guid><author>ran_Max</author><pubDate>Wed, 14 Nov 2018 12:33:31 +0800</pubDate><description><![CDATA[不同的操作系统有不同的文件系统

Linux 使用 ext4
OSX使用 HFS +
Windows 使用 NTFS
Solaris 和 Unix 使用ZFS。
如果计算机不认识某个文件系统，就会显示这块盘无法读写，OSX可以读入NTFS但是无法写入。

windows的文件系统

FAT32是最老的文件系统，兼容性很好，但他是为32位系统准备的，文件不能超过232-1个字节，也就是不能超过4GB...]]></description><category></category></item><item><title><![CDATA[对于EM算法的理解，看这一篇就够了]]></title><link>https://blog.youkuaiyun.com/ran_Max/article/details/83510403</link><guid>https://blog.youkuaiyun.com/ran_Max/article/details/83510403</guid><author>ran_Max</author><pubDate>Tue, 30 Oct 2018 15:41:26 +0800</pubDate><description><![CDATA[EM算法实际上就是含有隐变量的概率模型参数的极大似然估计法，或极大后验概率估计法。
其中对EM有两种理解，第一种是通俗的简单理解，另外一种对应的是李航的《统计学习方法》中的解释
通俗理解
极大似然估计
假设现在有一个盒子，其中白球有99个，黑球有1个。那么我们很清楚的就可以得出我们从盒子里面摸一个球出来，摸到白球的概率是99/100，摸到黑球的概率是1/100。这就叫做先验概率。
现在假设盒子中有...]]></description><category></category></item><item><title><![CDATA[机器学习中条件熵的理解]]></title><link>https://blog.youkuaiyun.com/ran_Max/article/details/83068767</link><guid>https://blog.youkuaiyun.com/ran_Max/article/details/83068767</guid><author>ran_Max</author><pubDate>Tue, 16 Oct 2018 10:10:16 +0800</pubDate><description><![CDATA[记一下自己的机器学习中一些难以理解的概念。
首先看条件熵的公式

定义：X给定条件下Y的条件概率分布的熵对X的数学期望
几点理解：

X和Y并不一定是独立分布
给定条件下：这里的给定条件下是指，如果X确定的话，YY的条件概率分布的熵对X的数学期望，并不指X确定为某一特定的值
数学期望：条件熵是一个期望，也就是X的所有可能值都要取到

下面举一个栗子：比如天气冷暖和我穿衣服多少是有联系的。假设X表示...]]></description><category></category></item><item><title><![CDATA[负载均衡的几种常见方式]]></title><link>https://blog.youkuaiyun.com/ran_Max/article/details/81350955</link><guid>https://blog.youkuaiyun.com/ran_Max/article/details/81350955</guid><author>ran_Max</author><pubDate>Thu, 02 Aug 2018 00:26:07 +0800</pubDate><description><![CDATA[HTTP重定向

 
HTTP重定向服务器就是一个普通的服务器，当用户访问时，其会根据一定的算法得到服务器集群的一个真实服务器的IP地址，将其放在HTTP响应头中，响应状态码为（302），当用户浏览器接收到这个响应时，会将得到的真实服务器的IP地址提出并重新访问。如上图所示，当用户访问域名时通过DNS解析得到114.100.20.200，然后访问114.100.20.200，也就是HTTP重定向服...]]></description><category></category></item><item><title><![CDATA[Spring中AOP的相关配置]]></title><link>https://blog.youkuaiyun.com/ran_Max/article/details/81276391</link><guid>https://blog.youkuaiyun.com/ran_Max/article/details/81276391</guid><author>ran_Max</author><pubDate>Sun, 29 Jul 2018 22:12:12 +0800</pubDate><description><![CDATA[aop的相关配置



如何使用aspect

&amp;lt;aop:config&amp;gt;
    &amp;lt;!--这里的ref指向一个含有增强方法的类--&amp;gt;
    &amp;lt;aop:aspect id = &quot;log&quot; ref = &quot;logging&quot;&amp;gt;
        &amp;lt;!--定义一个切入点pointcut--&amp;gt;
        &amp;lt;aop:pointcut id =&quot]]></description><category></category></item><item><title><![CDATA[Linux面试常见命令]]></title><link>https://blog.youkuaiyun.com/ran_Max/article/details/81256364</link><guid>https://blog.youkuaiyun.com/ran_Max/article/details/81256364</guid><author>ran_Max</author><pubDate>Sat, 28 Jul 2018 00:55:35 +0800</pubDate><description><![CDATA[显示目录和文件的命令


Ls：用于查看所有文件夹的命令。
Dir：用于显示指定文件夹和目录的命令   Tree： 以树状图列出目录内容
Du：显示目录或文件大小




修改目录，文件权限和属主及数组命令


Chmod：用于改变指定文件的权限命令。
Chown：用于改变文件拥有属性的命令。
Chgrp：用于改变文件群组的命令。
Chattr：用于设置文件具有不可删除和修改权限。
Lsattr：...]]></description><category></category></item><item><title><![CDATA[阿里内推——图的深度搜索]]></title><link>https://blog.youkuaiyun.com/ran_Max/article/details/81150608</link><guid>https://blog.youkuaiyun.com/ran_Max/article/details/81150608</guid><author>ran_Max</author><pubDate>Wed, 25 Jul 2018 20:41:40 +0800</pubDate><description><![CDATA[
  如图，某物流派送员p，需要给a、b、c、d4个快递点派送包裹，请问派送员需要选择什么的路线，才能完成最短路程的派送。假设如图派送员的起点坐标(0,0)，派送路线只能沿着图中的方格边行驶，每个小格都是正方形，且边长为1，如p到d的距离就是4。随机输入n个派送点坐标，求输出最短派送路线值（从起点开始完成n个点派送并回到起始点的距离）。  
  输入  
  4  
  2,2  
  2,8  ...]]></description><category></category></item><item><title><![CDATA[关于公网IP和私有IP的区别]]></title><link>https://blog.youkuaiyun.com/ran_Max/article/details/81177069</link><guid>https://blog.youkuaiyun.com/ran_Max/article/details/81177069</guid><author>ran_Max</author><pubDate>Tue, 24 Jul 2018 00:00:32 +0800</pubDate><description><![CDATA[关于公网IP和私有IP的区别

在百度直接搜索IP会显示公网IP，在cmd中输入ipconfig，或者在Linux终端下输入ifconfig，会显示出私有ip，这两个ip是不一样的,那么到底有什么区别呢？

公网IP一般是运营商分配的，公网ip才能上网，但是不可能给每一个电脑分配一个IP，ipv4肯定是不够的。所以需要私有IP，这种ip一般是用于局域网的管理，不能直接连上互联网，必须通过公网ip上...]]></description><category></category></item><item><title><![CDATA[JAVA基础学习【JVM篇】——垃圾回收机制]]></title><link>https://blog.youkuaiyun.com/ran_Max/article/details/80638996</link><guid>https://blog.youkuaiyun.com/ran_Max/article/details/80638996</guid><author>ran_Max</author><pubDate>Sun, 10 Jun 2018 10:36:05 +0800</pubDate><description><![CDATA[
  Java中一个重要的概念就是引入了自动内存管理机制，不像C++那样需要开发人员手动的为对象分配内存和释放内存。而开发人员经常会忘记释放内存而造成内存泄露，而Java程序员虽然不必管这些，但是Java依然有可能发生内存泄露，如果我们对内存管理机制不理解的话，很难找出错误的所在




Java的自动内存管理做什么


为对象分配内存
回收已经不再存活的对象的内存


下面我们来看下具体是怎么做...]]></description><category></category></item><item><title><![CDATA[JAVA基础学习【JVM篇】——类加载器]]></title><link>https://blog.youkuaiyun.com/ran_Max/article/details/80633458</link><guid>https://blog.youkuaiyun.com/ran_Max/article/details/80633458</guid><author>ran_Max</author><pubDate>Sat, 09 Jun 2018 15:50:52 +0800</pubDate><description><![CDATA[
  虚拟机设计团队把加载阶段中的“通过一个类的全额限定名来获取此类的二进制字节流”放到虚拟机外部去实现，以便让程序自己去决定如何获取所需要的类。实现这个动作的代码模块被称为“类加载器” 
           
  一般来说，Java 虚拟机使用 Java 类的方式如下： 
  1. JAVA源程序被编译器编译之后形成字二进制节码文件（class文件） 
  2. 类加载器负责读取该二进制字节码...]]></description><category></category></item><item><title><![CDATA[JAVA基础学习【JVM篇】——类加载机制]]></title><link>https://blog.youkuaiyun.com/ran_Max/article/details/80629985</link><guid>https://blog.youkuaiyun.com/ran_Max/article/details/80629985</guid><author>ran_Max</author><pubDate>Sat, 09 Jun 2018 10:07:05 +0800</pubDate><description><![CDATA[
  JAVA虚拟机把描述类的数据从Class文件加载到内存中，并对数据进行校验，转换解析和初始化，最终形成能被JVM直接使用的JAVA类型，这个过程就叫类的加载。 
  [TOC]


类的生命周期

 
包括以下7个阶段


加载
验证
准备
解析
初始化
使用
卸载


前五个过程被称为类的加载过程，其中解析和初始化的顺序可能反过来，这是为了支持JAVA的动态绑定。这5个过程会按照顺序开始，...]]></description><category></category></item><item><title><![CDATA[JAVA基础学习【JVM篇】——运行时数据区域]]></title><link>https://blog.youkuaiyun.com/ran_Max/article/details/80624536</link><guid>https://blog.youkuaiyun.com/ran_Max/article/details/80624536</guid><author>ran_Max</author><pubDate>Fri, 08 Jun 2018 17:50:37 +0800</pubDate><description><![CDATA[Java程序的运行过程

首先，编译器会将写好的源代码编译成字节码文件（也就是class文件），每个程序都需要运行在JVM上，JVM的字节码解释器对字节码文件加载运行。那么整个加载运行的过程又是如何开展的呢？



内存区域划分

大多数JVM将内存区域划分为程序计数器（Program Counter Register）、堆（Heap）、栈（VM Stack）、方法区（Method Area）、本...]]></description><category></category></item><item><title><![CDATA[SSM框架+shiro+redis的基础框架，有助于新手学习]]></title><link>https://blog.youkuaiyun.com/ran_Max/article/details/80619762</link><guid>https://blog.youkuaiyun.com/ran_Max/article/details/80619762</guid><author>ran_Max</author><pubDate>Fri, 08 Jun 2018 10:41:59 +0800</pubDate><description><![CDATA[基本框架

基础的SSM框架，集成了shiro作为登陆验证和权限管理和swagger作为开接口文档，让后端程序员专注于业务的开发，同时shiro中集成了redis来做会话管理和权限管理，性能更优，便于分布式的开发 
项目地址：ssm，如果对你有帮助，请点击一个star



1、前后端分离思想

其实前后端分离并不只是开发模式，而是web应用的一种架构模式，前后端之前使用HTTP或者其他协议进行交...]]></description><category></category></item><item><title><![CDATA[Session、Token验证的区别以及CSRF攻击]]></title><link>https://blog.youkuaiyun.com/ran_Max/article/details/80598514</link><guid>https://blog.youkuaiyun.com/ran_Max/article/details/80598514</guid><author>ran_Max</author><pubDate>Wed, 06 Jun 2018 20:26:22 +0800</pubDate><description><![CDATA[Session是什么


  session意为“会话”。我们都知道HTTP是无状态的协议，但有时我们需要保存状态来进行后面的操作，比如某个电商网站的购物车功能（在不登录的情况下，也就是不使用数据库），如果不使用session，那么每次添加物品到购物篮后都不会保存，结果就是刷新一下购物篮就会变成空的。所以我们需要这个session来保存一定的状态。当用户打开某个网页的时候，就发生了一次会话，也就是...]]></description><category></category></item></channel></rss>