<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[MustangJy的博客]]></title><description><![CDATA[0.0]]></description><link>https://blog.youkuaiyun.com/MustangJy</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; MustangJy]]></copyright><item><title><![CDATA[【面经】2020届斗鱼服务端SP面经]]></title><link>https://blog.youkuaiyun.com/MustangJy/article/details/100903994</link><guid>https://blog.youkuaiyun.com/MustangJy/article/details/100903994</guid><author>MustangJy</author><pubDate>Mon, 16 Sep 2019 22:18:38 +0800</pubDate><description><![CDATA[作者：Mustangjy
链接：https://www.nowcoder.com/discuss/247345?toCommentId=4062877
来源：牛客网


斗鱼服务端sp面经



声明

以下的内容中我的回答不一定是正确或全面的，欢迎大家纠正。



正文

周日10点的场，9点20带着简历到了斗鱼面试的楼。填了个信息表，开始排号。大概10点10分带到一个房间开始一面。

一...]]></description><category></category></item><item><title><![CDATA[约瑟夫环问题 —— 递归法的简单易懂的解释]]></title><link>https://blog.youkuaiyun.com/MustangJy/article/details/96869696</link><guid>https://blog.youkuaiyun.com/MustangJy/article/details/96869696</guid><author>MustangJy</author><pubDate>Mon, 22 Jul 2019 18:17:12 +0800</pubDate><description><![CDATA[最近看了大佬的一篇博客：一行代码解决约瑟夫环问题  前面两个方法都看懂了，比较简单，但是最后一个只用一行代码的解法，实在是没有看懂，但是根据大佬的思路，我也做出了自己的解释，虽然在简洁性上不如大佬的一行完毕，但是整个思路不是很难懂，主要是记忆起来比较方便。大家可以先尝试看看大佬解法。

问题描述

编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈，从编号为 1 的士兵开始依次报数（1，2，...]]></description><category></category></item><item><title><![CDATA[Java线程池 - 重点总结]]></title><link>https://blog.youkuaiyun.com/MustangJy/article/details/96704648</link><guid>https://blog.youkuaiyun.com/MustangJy/article/details/96704648</guid><author>MustangJy</author><pubDate>Sun, 21 Jul 2019 20:43:30 +0800</pubDate><description><![CDATA[本文参考：

https://www.cnblogs.com/exe19/p/5359885.html 写的很好，但是jdk版本老，与8的代码不符。

https://www.jianshu.com/p/50fffbf21b39 可以简单看一下

https://www.cnblogs.com/trust-freedom/p/6681948.html jdk版本与8代码相符，流程较为详细...]]></description><category></category></item><item><title><![CDATA[Java List和Collections的sort()方法使用]]></title><link>https://blog.youkuaiyun.com/MustangJy/article/details/94136170</link><guid>https://blog.youkuaiyun.com/MustangJy/article/details/94136170</guid><author>MustangJy</author><pubDate>Sat, 29 Jun 2019 11:27:43 +0800</pubDate><description><![CDATA[我自己使用起来比较记得住的是下面这个labmda表达式用法：


ArrayList&lt;Integer&gt; list = new ArrayList&lt;&gt;();
list.sort(((int a, int b) -&gt; b - a); //升序

//或者复杂一点的,一个字符串数组列表的数组列表，按照其元素（也就是字符串的数组列表）的长度排序。
ArrayList&lt;A...]]></description><category></category></item><item><title><![CDATA[Python通过对象名调用方法（对象名后面括号和参数）]]></title><link>https://blog.youkuaiyun.com/MustangJy/article/details/93760708</link><guid>https://blog.youkuaiyun.com/MustangJy/article/details/93760708</guid><author>MustangJy</author><pubDate>Wed, 26 Jun 2019 18:15:33 +0800</pubDate><description><![CDATA[实习做一个自动化测试项目的时候看到大佬代码：


d = u2.connect() #该方法返回一个UIAutomatorServer类的实例
d(discription = 'Books').click()  # ???wtf,怎么对象名字后面带个括号，什么操作？

为了搞懂这个原因，我把代码里原来正确的参数description随便改成了一个错的，比如d(abc='1')，根据报错的信息一步步...]]></description><category></category></item><item><title><![CDATA[遍历HashMap的方法和选择（全）]]></title><link>https://blog.youkuaiyun.com/MustangJy/article/details/90288955</link><guid>https://blog.youkuaiyun.com/MustangJy/article/details/90288955</guid><author>MustangJy</author><pubDate>Fri, 17 May 2019 13:05:44 +0800</pubDate><description><![CDATA[0.Notice

一般来说只需要记住前三个方法就可以满足所有需求了。

1. Lambda表达式 + HashMap.forEach()

 lambda表达式是jdk8开始出现的新特性，用它遍历HashMap比较方便优美，例如：


        HashMap&lt;String, String&gt; map = new HashMap&lt;&gt;();
        map.f...]]></description><category></category></item><item><title><![CDATA[多态：子类与父类构造器调用关系、静态非静态代码块的加载顺序]]></title><link>https://blog.youkuaiyun.com/MustangJy/article/details/89482467</link><guid>https://blog.youkuaiyun.com/MustangJy/article/details/89482467</guid><author>MustangJy</author><pubDate>Tue, 23 Apr 2019 23:22:18 +0800</pubDate><description><![CDATA[首先把结论贴出来：

1. 类的加载顺序。

(1) 父类静态代码块(包括静态初始化块，静态属性，但不包括静态方法)

(2) 子类静态代码块(包括静态初始化块，静态属性，但不包括静态方法)

(3) 父类非静态代码块(包括非静态初始化块，非静态属性)

(4) 父类构造函数

(5) 子类非静态代码块(包括非静态初始化块，非静态属性)

(6) 子类构造函数

Point1：关于静态...]]></description><category></category></item><item><title><![CDATA[非递归：二叉树带权路径和  &&  遍历二叉树]]></title><link>https://blog.youkuaiyun.com/MustangJy/article/details/89426258</link><guid>https://blog.youkuaiyun.com/MustangJy/article/details/89426258</guid><author>MustangJy</author><pubDate>Sun, 21 Apr 2019 00:52:35 +0800</pubDate><description><![CDATA[写在前头的总结

下面的先序中序后序遍历以及二叉树的带权路径的解法基本可以囊括绝大多数与二叉树相关的问题，为了方便记忆，在写的时候都用了两个嵌套的while循环，省得到时候再跟while里套if else的记混~



首先二叉树的先序、中序、后序遍历在这篇博客里写的很清楚，尤其是后续遍历，思路很巧妙：后序遍历的非递归版本是最有技巧性的，难度相对高一点，但其实是可以转换成前序遍历的。后序遍历...]]></description><category></category></item><item><title><![CDATA[算法之动态规划（三） 小Q的歌单_腾讯笔试编程题]]></title><link>https://blog.youkuaiyun.com/MustangJy/article/details/89034600</link><guid>https://blog.youkuaiyun.com/MustangJy/article/details/89034600</guid><author>MustangJy</author><pubDate>Thu, 04 Apr 2019 21:21:31 +0800</pubDate><description><![CDATA[问题描述：小Q有X首长度为A的不同的歌和Y首长度为B的不同的歌，现在小Q想用这些歌组成一个总长度正好为K的歌单，每首歌最多只能在歌单中出现一次，在不考虑歌单内歌曲的先后顺序的情况下，请问有多少种组成歌单的方法。

输入描述:


每个输入包含一个测试用例。
每个测试用例的第一行包含一个整数，表示歌单的总长度K(1&lt;=K&lt;=1000)。
接下来的一行包含四个正整数，分别表示歌的第一种长度...]]></description><category></category></item><item><title><![CDATA[【有疑问，结论待定】JDK8  Java字符串常量池在Java堆中而不是方法区?]]></title><link>https://blog.youkuaiyun.com/MustangJy/article/details/88044964</link><guid>https://blog.youkuaiyun.com/MustangJy/article/details/88044964</guid><author>MustangJy</author><pubDate>Thu, 28 Feb 2019 21:14:10 +0800</pubDate><description><![CDATA[String.intern()方法的作用是返回一个字符串引用，引用的是字符串常量池中的字符串（字面量），所以我们可以通过这个方法来测试，使得字符串常量池内存溢出，看看这个时候报错报的是哪里out of memory。


import java.util.ArrayList;

public class StringConstancePool {
    public static void ma...]]></description><category></category></item><item><title><![CDATA[自用Java错题记录]]></title><link>https://blog.youkuaiyun.com/MustangJy/article/details/87893736</link><guid>https://blog.youkuaiyun.com/MustangJy/article/details/87893736</guid><author>MustangJy</author><pubDate>Sat, 23 Feb 2019 19:06:20 +0800</pubDate><description><![CDATA[1.
析：
 c1 = new Cat(10L);
 c2 = new Cat(10L);

A ,c1和c2是两个参数相同的不同对象，c1!=c2，返回false

B ,c2和c3指向同一个引用，所以c2==c3，返回true

C, m与c1是不同类型，不相等，返回false

D，c1没有定义equals方法，默认调用Object类的equals方法，返回false

https://ww...]]></description><category></category></item><item><title><![CDATA[对Java如何判断HashSet和HashMap中相同元素的研究]]></title><link>https://blog.youkuaiyun.com/MustangJy/article/details/87894711</link><guid>https://blog.youkuaiyun.com/MustangJy/article/details/87894711</guid><author>MustangJy</author><pubDate>Sat, 23 Feb 2019 17:21:16 +0800</pubDate><description><![CDATA[转自：http://f543711700.iteye.com/blog/800929

 

对Java如何判断HashSet和HashMap中相同元素的研究

Java数据结构JDK 

   HashSet和HashMap一直都是JDK中最常用的两个类，HashSet要求不能存储相同的对象，HashMap要求不能存储相同的键。 
    那么Java运行时环境是如何判断HashSet中相同对象...]]></description><category></category></item><item><title><![CDATA[数据结构之树——二叉查找树、2-3树、2-3-4树、红黑树、B树、B+树及其关系]]></title><link>https://blog.youkuaiyun.com/MustangJy/article/details/87783323</link><guid>https://blog.youkuaiyun.com/MustangJy/article/details/87783323</guid><author>MustangJy</author><pubDate>Wed, 20 Feb 2019 19:35:34 +0800</pubDate><description><![CDATA[前言

对于大量的输入数据，链表的线性访问时间太慢，不宜使用。由此，其他的更高效的数据结构被提出，二叉查找树是其中重要的一个。二叉查找树是两种库集合类TreeSet和TreeMap实现的基础，应用很广泛。在计算机科学中树(tree)是非常有用的抽象概念。

树的定义

定义树的一种自然的方式是递归的方式。一棵树是一些节点的集合，这个集合可以是空集；若不是空集，则树由称作根（root）的节点r与...]]></description><category></category></item><item><title><![CDATA[Java学习笔记：泛型、集合与数组]]></title><link>https://blog.youkuaiyun.com/MustangJy/article/details/86634807</link><guid>https://blog.youkuaiyun.com/MustangJy/article/details/86634807</guid><author>MustangJy</author><pubDate>Fri, 25 Jan 2019 00:10:38 +0800</pubDate><description><![CDATA[泛型

写在前头的重点总结

泛型程序设计的作用就是让编写的代码可以被不同类型的对象所重用
	泛型的使用，即在声明类或定义一个泛型方法时加形如&amp;lt;T&amp;gt;的菱形，里面是占位符，这个占位符就指代泛型所包含的所有类型
	泛型类或方法中的占位符类型如果要加以约束： &amp;lt;T extends Comparable &amp;amp; Serializable&amp;gt;， 而不是用 implements
	类...]]></description><category></category></item><item><title><![CDATA[算法之动态规划（二） 爬楼梯与抢房子]]></title><link>https://blog.youkuaiyun.com/MustangJy/article/details/86619432</link><guid>https://blog.youkuaiyun.com/MustangJy/article/details/86619432</guid><author>MustangJy</author><pubDate>Thu, 24 Jan 2019 00:40:05 +0800</pubDate><description><![CDATA[爬楼梯问题

假设你正在爬楼梯。需要 爬n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶？

思路分析：从动态规划的角度，这个问题的关键在于找出能够推出结果的一个“状态”，每一步的“状态”都可以由之前的“状态”锁推出。由于每一步可以爬1或2个台阶，那么，我到达第n(n&amp;gt;2)阶，第一种可能就是我从第n-2阶爬了两层到的，第二种可能就是我从n-1阶爬了一层...]]></description><category></category></item><item><title><![CDATA[JVM学习笔记(4) 线程安全 & 虚拟机的同步实现与锁优化]]></title><link>https://blog.youkuaiyun.com/MustangJy/article/details/86617895</link><guid>https://blog.youkuaiyun.com/MustangJy/article/details/86617895</guid><author>MustangJy</author><pubDate>Wed, 23 Jan 2019 21:40:44 +0800</pubDate><description><![CDATA[写在前头的重点总结：

线程安全的程度：大部分的线程安全类都不是绝对安全而是相对安全的，需要保证这个对象单独的操作是线程安全的，在调用时不需要做额外的保障措施；但是对于一些特定顺序的连续调用，就可能需要在调用端使用额外的同步手段保证调用的正确性。
	线程安全的实现方法： 互斥\阻塞同步（synchronized、重入锁ReentrantLock）；非阻塞同步——基于冲突检测的乐观并发策略，需要操作...]]></description><category></category></item><item><title><![CDATA[JVM学习笔记(3) Java内存模型与volatile关键字 & 线程的实现、调度]]></title><link>https://blog.youkuaiyun.com/MustangJy/article/details/86498100</link><guid>https://blog.youkuaiyun.com/MustangJy/article/details/86498100</guid><author>MustangJy</author><pubDate>Tue, 22 Jan 2019 16:23:12 +0800</pubDate><description><![CDATA[内存模型的相关概念
	并发编程中的三个概念：可见性、原子性、有序性  
	Java内存模型：主内存、线程的工作内存
	深入剖析volatile关键字：lock前缀指令——内存屏障，保证有序性，不保证原子性——无法替代synchronized
	使用volatile关键字的场景：状态标记量、双重检测
以上参考： Java并发编程：volatile关键字解析   可以说是写的很到位了~

上文中特别需...]]></description><category></category></item><item><title><![CDATA[算法之动态规划（一） 如何获得最多的年终奖]]></title><link>https://blog.youkuaiyun.com/MustangJy/article/details/85471779</link><guid>https://blog.youkuaiyun.com/MustangJy/article/details/85471779</guid><author>MustangJy</author><pubDate>Mon, 31 Dec 2018 16:57:33 +0800</pubDate><description><![CDATA[预备知识：

动态规划：动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中，可能会有许多可行解。每一个解都对应于一个值，我们希望找到具有最优值的解。动态规划算法与分治法类似，其基本思想也是将待求解问题分解成若干个子问题，先求解子问题，然后从这些子问题的解得到原问题的解。与分治法不同的是，适合于用动态规划求解的问题，经分解得到子问题往往不是互相独立的。若用分治法来解这类问题，则分解得到的子...]]></description><category></category></item><item><title><![CDATA[Ubuntu16.04下安装NS3]]></title><link>https://blog.youkuaiyun.com/MustangJy/article/details/83381064</link><guid>https://blog.youkuaiyun.com/MustangJy/article/details/83381064</guid><author>MustangJy</author><pubDate>Thu, 25 Oct 2018 16:24:45 +0800</pubDate><description><![CDATA[官网上的安装教程比较新，网络上一些其他人发布的教程很多没有同步各种依赖包和ubuntu系统版本发生的改变，想要搞明白需要安装哪些依赖、为什么要安装，最好去英文官网上去翻阅：nsnam英文安装wiki

注意点：

如果使用下面的命令安装依赖的话，就只能安装ns-3.28以及之前的版本,且Ubuntu的版本必须是16.04，否则可能会出问题。


sudo apt-get install gcc g...]]></description><category></category></item><item><title><![CDATA[JVM学习笔记(2) 垃圾收集器与内存分配策略]]></title><link>https://blog.youkuaiyun.com/MustangJy/article/details/83270967</link><guid>https://blog.youkuaiyun.com/MustangJy/article/details/83270967</guid><author>MustangJy</author><pubDate>Tue, 23 Oct 2018 17:05:40 +0800</pubDate><description><![CDATA[Java技术体系中所提倡的自动内存管理，最终可以规划为自动化地解决了两个问题：给对象分配内存、以及回收分配给对象的内存。

一、回收内存：垃圾管理器(GC,Garbage Collector)
关于G1收集器，详细的内容可以参照：详解 JVM Garbage First(G1) 垃圾收集器

二、内存分配与回收策略

对象的内存分配，往大方向讲，就是在堆上分配（但也可能经过JIT编译后被拆散为标量...]]></description><category></category></item></channel></rss>