<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Shapeofyou的博客]]></title><description><![CDATA[欢迎交流~~]]></description><link>https://blog.youkuaiyun.com/Shapeofyou</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Shapeofyou]]></copyright><item><title><![CDATA[throws和try catch什么时候使用]]></title><link>https://blog.youkuaiyun.com/Shapeofyou/article/details/123804938</link><guid>https://blog.youkuaiyun.com/Shapeofyou/article/details/123804938</guid><author>Shapeofyou</author><pubDate>Mon, 28 Mar 2022 20:40:51 +0800</pubDate><description><![CDATA[出现异常后，要么抛throws 要么 try catch

thrwos 。 是抛给了你的上一级（调用者）。这个异常我处理不了或者不知道怎么处理时使用。
	try catch代码块 。是自己处理异常，不用再抛出去，因为自己都能处理的异常抛出去没意义了。


例子：下面代码1/0会抛出ArithmeticException ，被catch语句捕获并进行处理，所以不需要再在方法头再throws异常。


public void test() { // throws ArithmeticException
   ]]></description><category></category></item><item><title><![CDATA[Redis学习笔记P01-P02（尚硅谷）]]></title><link>https://blog.youkuaiyun.com/Shapeofyou/article/details/122420555</link><guid>https://blog.youkuaiyun.com/Shapeofyou/article/details/122420555</guid><author>Shapeofyou</author><pubDate>Mon, 10 Jan 2022 22:15:18 +0800</pubDate><description><![CDATA[Web1.0的时代

数据访问量很有限，用一夫当关的高性能的单点服务器可以解决大部分问题。



Web2.0时代

随着Web2.0的时代的到来，用户访问量大幅度提升，同时产生了大量的用户数据。加上后来的智能移动设备的普及，所有的互联网平台都面临了巨大的性能挑战。



​​​​​​​为了解决CPU及内存压力

​​​​​​​

解决IO压力


...]]></description><category></category></item><item><title><![CDATA[LeetCode艰难刷题日记：矩阵置零]]></title><link>https://blog.youkuaiyun.com/Shapeofyou/article/details/121204562</link><guid>https://blog.youkuaiyun.com/Shapeofyou/article/details/121204562</guid><author>Shapeofyou</author><pubDate>Mon, 08 Nov 2021 11:41:22 +0800</pubDate><description><![CDATA[class Solution {
    public void setZeroes(int[][] matrix) {
        int m = matrix.length, n = matrix[0].length;
        boolean[] row = new boolean[m]; //存放元素为0的行下标
        boolean[] col = new boolean[n]; //存放元素为0的列下标

        //记录原数组中，元素为0的行下标与列下标
  ...]]></description><category></category></item><item><title><![CDATA[LeetCode艰难刷题日记 18. 杨辉三角]]></title><link>https://blog.youkuaiyun.com/Shapeofyou/article/details/121189472</link><guid>https://blog.youkuaiyun.com/Shapeofyou/article/details/121189472</guid><author>Shapeofyou</author><pubDate>Sun, 07 Nov 2021 14:42:09 +0800</pubDate><description><![CDATA[题目
给定一个非负整数 numRows，生成「杨辉三角」的前 numRows 行。
在「杨辉三角」中，每个数是它左上方和右上方的数的和。
体会
自己对动态规划真的不熟悉，所以看了看b站还有题解开始慢慢理解并加深。对我而已，动态规划就是通过列出各个状态下的条件，比如这题中第一行是1，第二行1，1，转换为
class Solution {
    public List&lt;List&lt;Integer&gt;&gt; generate(int numRows) {
		List&lt;List&lt;In]]></description><category></category></item><item><title><![CDATA[LeetCode艰难刷题日记之 350. 两个数组的交集 II]]></title><link>https://blog.youkuaiyun.com/Shapeofyou/article/details/121156168</link><guid>https://blog.youkuaiyun.com/Shapeofyou/article/details/121156168</guid><author>Shapeofyou</author><pubDate>Fri, 05 Nov 2021 09:20:39 +0800</pubDate><description><![CDATA[题目



两个数组的交集 II



思路
-1. 两个数组a和b，把数组a的元素 放入一个HashMap中，key为a元素，value为元素出现的次数
-2 .然后在遍历数组b，检验数组b的元素是否在1中的map存在，有则是a和b元素的交集元素
代码
class Solution {
    public int[] intersect(int[] nums1, int[] nums2) {

        if (nums1.length &gt; nums2.length) {
         ]]></description><category></category></item><item><title><![CDATA[剑指 Offer 52. 两个链表的第一个公共节点]]></title><link>https://blog.youkuaiyun.com/Shapeofyou/article/details/115247989</link><guid>https://blog.youkuaiyun.com/Shapeofyou/article/details/115247989</guid><author>Shapeofyou</author><pubDate>Fri, 26 Mar 2021 15:50:46 +0800</pubDate><description><![CDATA[Q:输入两个链表，找出它们的第一个公共节点。


定义两个指针 node1，node2 分别指向两个链表 headA，headB 的头结点
	同时分别逐结点遍历，当 node1 到达链表 headA 的末尾时，重新定位到链表 headB 的头结点；
	当 node2 到达链表 headB 的末尾时，重新定位到链表 headA 的头结点。
	当它们相遇时，所指向的结点就是第一个公共结点

/**
 * Definition for singly-linked list.
 * public class ...]]></description><category></category></item><item><title><![CDATA[面试题 02.02. 返回倒数第 k 个节点]]></title><link>https://blog.youkuaiyun.com/Shapeofyou/article/details/115246667</link><guid>https://blog.youkuaiyun.com/Shapeofyou/article/details/115246667</guid><author>Shapeofyou</author><pubDate>Fri, 26 Mar 2021 15:26:09 +0800</pubDate><description><![CDATA[面试题 02.02. 返回倒数第 k 个节点



实现一种算法，找出单向链表中倒数第 k 个节点。返回该节点的值。

注意：本题相对原题稍作改动

示例：

输入： 1-&gt;2-&gt;3-&gt;4-&gt;5 和 k = 2
输出： 4



思路：快慢指针。
	具体：
快指针向前走k步，
	然后慢指针和快指针一起走，
	直到快指针为空时，慢指针指向的节点就是题目所求的节点



/**
 * Definition for singly-linked list.
 * public clas...]]></description><category></category></item><item><title><![CDATA[面试题 02.03. 删除中间节点]]></title><link>https://blog.youkuaiyun.com/Shapeofyou/article/details/115245788</link><guid>https://blog.youkuaiyun.com/Shapeofyou/article/details/115245788</guid><author>Shapeofyou</author><pubDate>Fri, 26 Mar 2021 15:09:56 +0800</pubDate><description><![CDATA[面试题 02.03. 删除中间节点


实现一种算法，删除单向链表中间的某个节点（即不是第一个或最后一个节点），假定你只能访问该节点。

示例：


输入：单向链表a-&gt;b-&gt;c-&gt;d-&gt;e-&gt;f中的节点c
结果：不返回任何数据，但该链表变为a-&gt;b-&gt;d-&gt;e-&gt;f


/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *    .]]></description><category></category></item><item><title><![CDATA[Java刷题复习（三）2021/3/26]]></title><link>https://blog.youkuaiyun.com/Shapeofyou/article/details/115232456</link><guid>https://blog.youkuaiyun.com/Shapeofyou/article/details/115232456</guid><author>Shapeofyou</author><pubDate>Fri, 26 Mar 2021 11:27:12 +0800</pubDate><description><![CDATA[static能否修饰class


内部类可以是静态static的，也可用public，default，protected和private修饰，

外部类的修饰符只能是public，abstract，final






Java中只有整型才能使用的运算符为？ %





List：可重复的，有序的。Set：不可重复的，无序的。





Object类里的方法


java object默认的基本方法中没有copy()，含有如下方法：
getClass(), hashCode(), equ...]]></description><category></category></item><item><title><![CDATA[Java刷题复习（二）2021/3/26]]></title><link>https://blog.youkuaiyun.com/Shapeofyou/article/details/115230769</link><guid>https://blog.youkuaiyun.com/Shapeofyou/article/details/115230769</guid><author>Shapeofyou</author><pubDate>Fri, 26 Mar 2021 10:40:26 +0800</pubDate><description><![CDATA[Java回收机制


在java中，对象的内存在哪个时刻回收，取决于垃圾回收器何时运行。
	一旦垃圾回收器准备好释放对象占用的存储空间，将首先调用其finalize()方法， 并且在下一次垃圾回收动作发生时，才会真正的回收对象占用的内存（《java 编程思想》）
	在C++中，对象的内存在哪个时刻被回收，是可以确定的，在C++中，析构函数和资源的释放息息相关，能不能正确处理析构函数，关乎能否正确回收对象内存资源。
	在java中，对象的内存在哪个时刻回收，取决于垃圾回收器何时运行，在java中，所有的对象.]]></description><category></category></item><item><title><![CDATA[Java刷题复习（一）2021/3/26]]></title><link>https://blog.youkuaiyun.com/Shapeofyou/article/details/115228613</link><guid>https://blog.youkuaiyun.com/Shapeofyou/article/details/115228613</guid><author>Shapeofyou</author><pubDate>Fri, 26 Mar 2021 10:24:05 +0800</pubDate><description><![CDATA[语句：char foo='中'，是否正确？（假设源文件以GB2312编码存储，并且以javac – encoding GB2312命令编译）


这里的’中‘应该是不管用什么编码方式存储，赋值给char变量后都会先转换成对应的unicode的序号\u4e2d
	只要是utf-16be能表示的unicode编码都是可以成功的，与java文件本身的字符编码无关系。
	--a:比如，’中‘在gbk中的编码是d6d0，那当赋值给char类型时，java知道这是gbk字符集下表示的’中‘，那就能通过对比gbk和un.]]></description><category></category></item><item><title><![CDATA[Java（三）2021/3/25]]></title><link>https://blog.youkuaiyun.com/Shapeofyou/article/details/115202321</link><guid>https://blog.youkuaiyun.com/Shapeofyou/article/details/115202321</guid><author>Shapeofyou</author><pubDate>Thu, 25 Mar 2021 11:25:33 +0800</pubDate><description><![CDATA[instanceof


用来在运行时指出对象是否是特定类的一个实例，instanceof通过返回一个布尔值来指出，这个对象是否是这个特定类或者是它的子类的一个实例。




基本编程单元是类，基本存储单元


java的基本编程单元是类，基本存储单元是变量。






抽象方法定义




1. 首先，类的修饰符，都应该在class关键字之前，AB错；

2. 抽象方法不能有方法体，D错。






如果一个接口Cow有个方法drink()，有个类Calf实现接口Cow，则在类Calf中正...]]></description><category></category></item><item><title><![CDATA[Java复习（二）2021/3/25]]></title><link>https://blog.youkuaiyun.com/Shapeofyou/article/details/115200597</link><guid>https://blog.youkuaiyun.com/Shapeofyou/article/details/115200597</guid><author>Shapeofyou</author><pubDate>Thu, 25 Mar 2021 11:00:28 +0800</pubDate><description><![CDATA[重载和重写区别


重载：

  1、 重载是在编译器通过方法中形参的静态类型确定调用方法版本的过程。

  2、 重载是多态在编译期的表现形式

  3、 重载的判定只有两个条件（其他的条件都不能作为判定）：

  1、 方法名一致

  2、形参列表不同

重写：

  1、重写在方法运行时，通过调用者的实际类型来确定调用的方法版本。（具体细说，就是子父类中的重写方法在对应的class文件常量池的位置相同，一旦子类没有重写，那么子类的实例就会沿着...]]></description><category></category></item><item><title><![CDATA[Java复习（一）2021/3/25]]></title><link>https://blog.youkuaiyun.com/Shapeofyou/article/details/115199135</link><guid>https://blog.youkuaiyun.com/Shapeofyou/article/details/115199135</guid><author>Shapeofyou</author><pubDate>Thu, 25 Mar 2021 10:33:38 +0800</pubDate><description><![CDATA[最终类


最终类就是被final修饰的类，最终方法就是被final修饰的方法。最终类不能被继承，最终方法不能被重写。




抽象类和最终类都可以被声明使用。


这里只是说“声明”，并没有说“实例化”；如果只是声明是可以的，最常见的使用方式就是：
1、父类类型的引用指向子类的对象；
2、接口类型的引用指向该接口的实现类的对象；
以上两种使用方式也就是所谓的“向上转型”。




判断：用户不能调用构造方法，只能通过new关键字自动调用。（X）


在类内部可以用户可以使用关键字this.构造方法...]]></description><category></category></item><item><title><![CDATA[Java复习（三）2021/3/24]]></title><link>https://blog.youkuaiyun.com/Shapeofyou/article/details/115167749</link><guid>https://blog.youkuaiyun.com/Shapeofyou/article/details/115167749</guid><author>Shapeofyou</author><pubDate>Wed, 24 Mar 2021 11:34:48 +0800</pubDate><description><![CDATA[HashMap组成


由数组+链表组成的，数组是 HashMap 的主体，链表则是主要为了解决哈希冲突而存在的




线程题




考察的run()方法作为普通方法的调用和通过线程start的启动调用的区别。对象.start()属于对线程的启动调用run()方法。

题目给出的example.run();是对象对普通方法的调用，所以由上到下依次执行输出：run main。




子类父类


在一个子类被创建的时候，首先会在内存中创建一个父类对象，然后在父类对象外部放上子类独有的属性，两者合...]]></description><category></category></item><item><title><![CDATA[Java面试（二）2021/3/24]]></title><link>https://blog.youkuaiyun.com/Shapeofyou/article/details/115164942</link><guid>https://blog.youkuaiyun.com/Shapeofyou/article/details/115164942</guid><author>Shapeofyou</author><pubDate>Wed, 24 Mar 2021 11:10:13 +0800</pubDate><description><![CDATA[映射(Map)的key和value都不可重复。（X）


Map接口有两个金典的子类分别是Hashtable 和 Hashmap。

Hashtable 线程安全，不支持key和value为空，key不能重复，但value可以重复，不支持key和value为null。

Hashmap 非线程安全，支持key和value为空，key不能重复，但value可以重复，支持key和value为null。

由于题目否定Map集合中的value都不可重复，这是错误的。






局部变量可以和成员...]]></description><category></category></item><item><title><![CDATA[Java面试复习（一）2021/3/24]]></title><link>https://blog.youkuaiyun.com/Shapeofyou/article/details/115163750</link><guid>https://blog.youkuaiyun.com/Shapeofyou/article/details/115163750</guid><author>Shapeofyou</author><pubDate>Wed, 24 Mar 2021 10:26:36 +0800</pubDate><description><![CDATA[计算机组成


计算机由硬件系统和软件系统组成，没有安装任何软件的计算机称为裸机。

所谓软件是指为方便使用计算机和提高使用效率而组织的程序以及用于开发、使用和维护的有关文档。

软件系统可分为系统软件和应用软件两大类。




属于HttpServletResponse接口完成的功能


设置HTTP头标 


			1
			
			
			response.setHeader("Refresh","3");//三秒刷新页面一次
			
		设置cookie


			1

			2
			
	...]]></description><category></category></item><item><title><![CDATA[1331. 数组序号转换]]></title><link>https://blog.youkuaiyun.com/Shapeofyou/article/details/115149139</link><guid>https://blog.youkuaiyun.com/Shapeofyou/article/details/115149139</guid><author>Shapeofyou</author><pubDate>Tue, 23 Mar 2021 22:43:07 +0800</pubDate><description><![CDATA[给你一个整数数组arr ，请你将数组中的每个元素替换为它们排序后的序号。

序号代表了一个元素有多大。序号编号的规则如下：

序号从 1 开始编号。
一个元素越大，那么序号越大。如果两个元素相等，那么它们的序号相同。
每个数字的序号都应该尽可能地小。


示例 1：

输入：arr = [40,10,20,30]
输出：[4,1,2,3]
解释：40 是最大的元素。 10 是最小的元素。 20 是第二小的数字。 30 是第三小的数字。
示例 2：

输入：arr = [100,100,100]
输出：[..]]></description><category></category></item><item><title><![CDATA[面试题 17.10. 主要元素]]></title><link>https://blog.youkuaiyun.com/Shapeofyou/article/details/115147933</link><guid>https://blog.youkuaiyun.com/Shapeofyou/article/details/115147933</guid><author>Shapeofyou</author><pubDate>Tue, 23 Mar 2021 22:20:27 +0800</pubDate><description><![CDATA[数组中占比超过一半的元素称之为主要元素。给定一个整数数组，找到它的主要元素。若没有，返回-1。

示例 1：

输入：[1,2,5,9,5,9,5,5,5]
输出：5

示例 2：

输入：[3,2]
输出：-1

示例 3：

输入：[2,2,1,1,1,2,2]
输出：2

说明：
你有办法在时间复杂度为 O(N)，空间复杂度为 O(1) 内完成吗？



代码：


class Solution {
    public int majorityElement(int[] nums) {

    .]]></description><category></category></item><item><title><![CDATA[JUC复习2021/3/23]]></title><link>https://blog.youkuaiyun.com/Shapeofyou/article/details/115141325</link><guid>https://blog.youkuaiyun.com/Shapeofyou/article/details/115141325</guid><author>Shapeofyou</author><pubDate>Tue, 23 Mar 2021 20:36:31 +0800</pubDate><description><![CDATA[JUC

是什么

Java 5.0 提供了 java.util.concurrent （简称 JUC ）包

做了啥

增加并发编程中实用工具类

用于定义类似于线程的自定义子系统，包括线程池、异步 IO 和轻量级任务框架

提供可调的、灵活的线程池

还提供了设计用于多线程上下文中的 Collection 实现等



内存可见性

1.是什么？

内存可见性（Memory Visibility）是指当某个线程正在使用对象状态而另一个线程在同时修改该状态

2.要怎么做

需要确保当一个线程修改了对象.]]></description><category></category></item></channel></rss>