<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wangyao2221的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_24342739</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_24342739]]></copyright><item><title><![CDATA[【Java】对equals、hashCode和==的理解]]></title><link>https://blog.youkuaiyun.com/qq_24342739/article/details/107332526</link><guid>https://blog.youkuaiyun.com/qq_24342739/article/details/107332526</guid><author>qq_24342739</author><pubDate>Tue, 14 Jul 2020 11:10:35 +0800</pubDate><description><![CDATA[equals
equals比较两个对象的内容是否相等，准确的说是用户或者需求认为两个对象相等两个对象就相等，比如下面两个类：
public class Student {
        private String name;
        private int age;

        public Student(String name, int age) {
            this.name = name;
            this.age = age;
        }
]]></description><category></category></item><item><title><![CDATA[【MPS】Jetbrains MPS入门案例Shapes（四）]]></title><link>https://blog.youkuaiyun.com/qq_24342739/article/details/100186465</link><guid>https://blog.youkuaiyun.com/qq_24342739/article/details/100186465</guid><author>qq_24342739</author><pubDate>Sat, 28 Sep 2019 12:01:07 +0800</pubDate><description><![CDATA[上一篇文章介绍了MPS入门案例中添加颜色属性的过程，这篇文章将介绍如何将实例模型转换为Java代码，并且通过调用Java图形化编程库来绘制图形的方法，主要是通过MPS的生成器Generator来生成Java代码的，这是本人觉得最有意思的一部分。除了生成Java代码还可以生成XML文件、JS文件等，还可以通过Editor Generator生成任意想要生成的问本或者语言。
配置Canvas到Rule...]]></description><category></category></item><item><title><![CDATA[【MPS】Jetbrains MPS入门案例Shapes（三）]]></title><link>https://blog.youkuaiyun.com/qq_24342739/article/details/100166152</link><guid>https://blog.youkuaiyun.com/qq_24342739/article/details/100166152</guid><author>qq_24342739</author><pubDate>Sat, 31 Aug 2019 13:16:53 +0800</pubDate><description><![CDATA[定义完Editor之后Rebuild一下项目


此时多出一个accessories目录，选中下面的Shapes.colors选项，按ALT + Enter进行Used Languages的导入：







]]></description><category></category></item><item><title><![CDATA[【MPS】Jetbrains MPS入门案例Shapes（二）]]></title><link>https://blog.youkuaiyun.com/qq_24342739/article/details/100046083</link><guid>https://blog.youkuaiyun.com/qq_24342739/article/details/100046083</guid><author>qq_24342739</author><pubDate>Fri, 23 Aug 2019 23:30:15 +0800</pubDate><description><![CDATA[上一篇文章介绍了MPS入门案例Shapes中创建Concept的过程，这篇文章将介绍如果创建Shapes这个DSL的Editor，它在语言层面上描述的是某种DSL的具体语法(Concrete Syntax)，也就是建模时写的代码（包含关键字、格式等），我们通常说的C++、Java、Python等的语法事实上指的就是这些语言的具体语法。
创建Editor
由于Shape是一个抽象的Concept，所...]]></description><category></category></item><item><title><![CDATA[【MPS】Jetbrains MPS入门案例Shapes（一）]]></title><link>https://blog.youkuaiyun.com/qq_24342739/article/details/99821442</link><guid>https://blog.youkuaiyun.com/qq_24342739/article/details/99821442</guid><author>qq_24342739</author><pubDate>Fri, 23 Aug 2019 00:33:30 +0800</pubDate><description><![CDATA[JetBrains 凭借 MPS 推出新的编程范式
MPS (Meta Programming System) 是一个执行面向语言编程范式的全新概念的软件开发环境，用于创建实际应用和领域专用语言。 

MPS 是一个让专业软件开发人员创建新的自定义语言、扩充现有语言以及使用这些语言来开发程序的环境。MPS 还是一种用于创建领域专用语言 (DSL) 的工具。对编程不甚熟悉的领域专业人士可轻松使用通...]]></description><category></category></item><item><title><![CDATA[【LeetCode】1114. Print in Order（多线程：按序打印）]]></title><link>https://blog.youkuaiyun.com/qq_24342739/article/details/97955439</link><guid>https://blog.youkuaiyun.com/qq_24342739/article/details/97955439</guid><author>qq_24342739</author><pubDate>Wed, 31 Jul 2019 21:37:00 +0800</pubDate><description><![CDATA[LeetCode新出了一类多线程的题目，主要考察的是对编程语言中多线程的用法以及多线程的算法，目前只有四题，这篇博客是对第一个1114这个多线程题目的分析。

题目
Suppose we have a class:
public class Foo {
  public void first() { print("first"); }
  public void second() { print...]]></description><category></category></item><item><title><![CDATA[【Java】对Java函数式接口(Functional Interface)的理解]]></title><link>https://blog.youkuaiyun.com/qq_24342739/article/details/96961280</link><guid>https://blog.youkuaiyun.com/qq_24342739/article/details/96961280</guid><author>qq_24342739</author><pubDate>Tue, 23 Jul 2019 08:43:44 +0800</pubDate><description><![CDATA[函数式接口(Functional Interface)就是一个有且仅有一个抽象方法，但是可以有多个非抽象方法的接口。
函数式接口可以被隐式转换为 lambda 表达式。
Lambda 表达式和方法引用（实际上也可认为是Lambda表达式）上。
如定义了一个函数式接口如下：

@FunctionalInterface
interface GreetingService 
{
    void sa...]]></description><category></category></item><item><title><![CDATA[【JVM】while程序的字节码分析]]></title><link>https://blog.youkuaiyun.com/qq_24342739/article/details/96346103</link><guid>https://blog.youkuaiyun.com/qq_24342739/article/details/96346103</guid><author>qq_24342739</author><pubDate>Wed, 17 Jul 2019 20:42:30 +0800</pubDate><description><![CDATA[while程序的字节码分析
首先来看两个最简单的while程序，不包含任何变量：

程序1：

public class Test {
    public static void main(String[] args) {
        while(true) {
        }
    }
}

字节码指令：
public class com.wangyao2221.jvm.test.T...]]></description><category></category></item><item><title><![CDATA[【LeetCode】1105. Filling Bookcase Shelves(填充书架)]]></title><link>https://blog.youkuaiyun.com/qq_24342739/article/details/95858738</link><guid>https://blog.youkuaiyun.com/qq_24342739/article/details/95858738</guid><author>qq_24342739</author><pubDate>Sun, 14 Jul 2019 10:29:49 +0800</pubDate><description><![CDATA[题目
附近的家居城促销，你买回了一直心仪的可调节书架，打算把自己的书都整理到新的书架上。
你把要摆放的书 books 都整理好，叠成一摞：从上往下，第 i 本书的厚度为 books[i][0]，高度为 books[i][1]。
按顺序 将这些书摆放到总宽度为 shelf_width 的书架上。
先选几本书放在书架上（它们的厚度之和小于等于书架的宽度 shelf_width），然后再建一层书架。重复...]]></description><category></category></item><item><title><![CDATA[【LeetCode】1104. Path In Zigzag Labelled Binary Tree]]></title><link>https://blog.youkuaiyun.com/qq_24342739/article/details/94310615</link><guid>https://blog.youkuaiyun.com/qq_24342739/article/details/94310615</guid><author>qq_24342739</author><pubDate>Sun, 30 Jun 2019 13:53:25 +0800</pubDate><description><![CDATA[题目

In an infinite binary tree where every node has two children, the nodes are labelled in row order.
In the odd numbered rows (ie., the first, third, fifth,…), the labelling is left to right, while ...]]></description><category></category></item><item><title><![CDATA[【面试题】有序数组截断、交换后的查找算法]]></title><link>https://blog.youkuaiyun.com/qq_24342739/article/details/94045358</link><guid>https://blog.youkuaiyun.com/qq_24342739/article/details/94045358</guid><author>qq_24342739</author><pubDate>Fri, 28 Jun 2019 21:14:54 +0800</pubDate><description><![CDATA[题目
将一段有序数组从中间某个位置截断，分成两部分，比如1,2,3,4,5,6,7,8从4的位置截断成两部分1,2,3,4和5,6,7,8，然后交换这两部分的顺序变成5,6,7,8,1,2,3,4，写成对变换后的数组的查找算法，如果查找成功则返回在数组中的索引（变换后），查找失败则返回-1
分析
这道题直接for循环遍历可以完成，但这是一道面试题，那就要考虑尽可能降低算法的时间复杂度，所以考虑一下...]]></description><category></category></item><item><title><![CDATA[【LeetCode】1081. Smallest Subsequence of Distinct Characters]]></title><link>https://blog.youkuaiyun.com/qq_24342739/article/details/93127015</link><guid>https://blog.youkuaiyun.com/qq_24342739/article/details/93127015</guid><author>qq_24342739</author><pubDate>Thu, 20 Jun 2019 20:43:05 +0800</pubDate><description><![CDATA[题目
Return the lexicographically smallest subsequence of text that contains all the distinct characters of text exactly once.

Example 1:
Input: "cdadabcc"
Output: "adbc"

Example 2:
Input: "abcd"
Outp...]]></description><category></category></item><item><title><![CDATA[【LeetCode】1010. Pairs of Songs With Total Durations Divisible by 60]]></title><link>https://blog.youkuaiyun.com/qq_24342739/article/details/92801117</link><guid>https://blog.youkuaiyun.com/qq_24342739/article/details/92801117</guid><author>qq_24342739</author><pubDate>Tue, 18 Jun 2019 22:30:45 +0800</pubDate><description><![CDATA[题目
https://leetcode.com/problems/pairs-of-songs-with-total-durations-divisible-by-60/
In a list of songs, the i-th song has a duration of time[i] seconds. 

Return the number of pairs of songs for whi...]]></description><category></category></item><item><title><![CDATA[【CodeWars】Path Finder #2: shortest path]]></title><link>https://blog.youkuaiyun.com/qq_24342739/article/details/91352359</link><guid>https://blog.youkuaiyun.com/qq_24342739/article/details/91352359</guid><author>qq_24342739</author><pubDate>Sun, 09 Jun 2019 13:28:37 +0800</pubDate><description><![CDATA[题意

题目链接：https://www.codewars.com/kata/path-finder-number-2-shortest-path

Task
You are at position [0, 0] in maze NxN and you can only move in one of the four cardinal directions (i.e. North, East, S...]]></description><category></category></item><item><title><![CDATA[【CodeWars】int32 to IPv4]]></title><link>https://blog.youkuaiyun.com/qq_24342739/article/details/90743283</link><guid>https://blog.youkuaiyun.com/qq_24342739/article/details/90743283</guid><author>qq_24342739</author><pubDate>Sun, 02 Jun 2019 20:54:32 +0800</pubDate><description><![CDATA[题意

题目链接：https://www.codewars.com/kata/int32-to-ipv4/train/java/5cebc1b2c6c7fc0022674279

题目意思是将一个长整型的的数字转换成ipv4，比如2149583361的二进制表示是10000000001000000000101000000001，而ipv4是每个点是之间的数值大小取值是0~255，也就是二进制的八位...]]></description><category></category></item><item><title><![CDATA[【CodeWars】Counting Duplicates]]></title><link>https://blog.youkuaiyun.com/qq_24342739/article/details/90742927</link><guid>https://blog.youkuaiyun.com/qq_24342739/article/details/90742927</guid><author>qq_24342739</author><pubDate>Sun, 02 Jun 2019 20:21:50 +0800</pubDate><description><![CDATA[题意

题目链接：https://www.codewars.com/kata/counting-duplicates/train/java/5cf118cee10216001acc1c83

题目意思很简单，就是求出给定字符串中出现次数最多的字符出现的次数，如果是字母则大小写，思路也比较简单，有人使用Map来记录字符出现的次数去实现，我的做法是定义一个大小为ASCII最大值(127)的数组，以每个...]]></description><category></category></item><item><title><![CDATA[【CodeWars】Ones and Zeros]]></title><link>https://blog.youkuaiyun.com/qq_24342739/article/details/90609576</link><guid>https://blog.youkuaiyun.com/qq_24342739/article/details/90609576</guid><author>qq_24342739</author><pubDate>Mon, 27 May 2019 18:48:46 +0800</pubDate><description><![CDATA[1.题意
题目的意思是给定一个整型数组，数组的每个元素只能取0或1，将数组所有元素按序组成的二进制串转换成十进制的数值
2. 代码
代码很简单，按照二进制计算的思路来写就行，假设返回的值是sum，初始化为0，从第一位开始，进行sum = sum * 2，然后再加上当前值，直到算完最后一位，我这里使用位运算，事实上和前面是一样的，只是更贴合二进制计算的本质
import java.util.List...]]></description><category></category></item><item><title><![CDATA[【CodeWars】Human readable duration format]]></title><link>https://blog.youkuaiyun.com/qq_24342739/article/details/90609356</link><guid>https://blog.youkuaiyun.com/qq_24342739/article/details/90609356</guid><author>qq_24342739</author><pubDate>Mon, 27 May 2019 18:31:24 +0800</pubDate><description><![CDATA[1.题意
题目意思很简单，就是给定一个秒数seconds，计算这个seconds的year、day、hour、minute、second，以"1year, 2 days, 1 hour, 1 minute and 2 seconds"这样形式的字符串返回，其中数值为0 的部分不显示，最后一个数值用"and"拼接，如果这个0秒则返回"now"
2.代码
一开始想的是算出这些值，然后用if else来...]]></description><category></category></item><item><title><![CDATA[【CodeWars】Square into Squares. Protect trees!]]></title><link>https://blog.youkuaiyun.com/qq_24342739/article/details/90544539</link><guid>https://blog.youkuaiyun.com/qq_24342739/article/details/90544539</guid><author>qq_24342739</author><pubDate>Sat, 25 May 2019 11:03:17 +0800</pubDate><description><![CDATA[1.题意
这题的意思是给定一个数字n，在经过decompose(n)处理之后得到一个一组数字，这组数字的平方和要等于n^2，这组数中最大值要小于n(如果可以等于n的话直接返回n就是了)，并且如果存在多组解需要取最大值最大的那组解。就像题目中的例子说的那样：

Examples
decompose(11) must return [1,2,4,10]. Note that there are act...]]></description><category></category></item><item><title><![CDATA[【Hadoop】IDEA调试Docker上的Hadoop]]></title><link>https://blog.youkuaiyun.com/qq_24342739/article/details/89429786</link><guid>https://blog.youkuaiyun.com/qq_24342739/article/details/89429786</guid><author>qq_24342739</author><pubDate>Sun, 21 Apr 2019 13:52:54 +0800</pubDate><description><![CDATA[文章目录IDEA调试Docker上的Hadoop安装JDK安装IDEA创建Maven项目编写WordCount程序本地执行MapReduce程序创建测试数据执行WordCount程序连接Docker集群执行WordCount修改Hadoop配置配置log4j删除output目录配置执行参数执行WordCount补充内容备份镜像可能要用到的一些命令
IDEA调试Docker上的Hadoop

上一篇...]]></description><category></category></item></channel></rss>