<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[624回锅肉的博客]]></title><description><![CDATA[一些总结]]></description><link>https://blog.youkuaiyun.com/Pomeranian</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Pomeranian]]></copyright><item><title><![CDATA[贴近项目场景的回答]]></title><link>https://blog.youkuaiyun.com/Pomeranian/article/details/123461288</link><guid>https://blog.youkuaiyun.com/Pomeranian/article/details/123461288</guid><author>Pomeranian</author><pubDate>Sun, 13 Mar 2022 17:15:00 +0800</pubDate><description><![CDATA[1.dubbo + zookeeper
项目里使用dubbo都干了什么？有什么作用？
dubbo是一个分布式服务框架，所以整个系统都使用了这个dubbo，比如我们负责的是订单模块的开发，也就是分布式中的订单服务。和别的服务进行交互，也都使用的dubbo，因为它也是一个rpc框架。它的作用就是协调分布式中各个服务，理清调用关系等功能。
zookeeper作为dubbo的注册中心，ZK可以用来管理和维护服务提供者的列表，实现服务提供者和消费者在注册中心对服务的注册和订阅功能。
2.redis
项目里使用redi]]></description><category></category></item><item><title><![CDATA[ActiveMQ]]></title><link>https://blog.youkuaiyun.com/Pomeranian/article/details/123457267</link><guid>https://blog.youkuaiyun.com/Pomeranian/article/details/123457267</guid><author>Pomeranian</author><pubDate>Sun, 13 Mar 2022 15:20:46 +0800</pubDate><description><![CDATA[消息队列
1.什么是消息队列？它解决了什么问题？（可以用来干什么？）具体怎么解决的？有什么好处？带来了什么问题？
2.JMS和AMQP每个是什么？它们有什么模式和数据类型？区别是什么？
3.ActiveMQ是什么？用来干什么？里面有什么模式？
1.消息队列就是一个存储消息生产者生产海量消息的地方，然后消息消费者就可以异步地从消息队列中进行消费。
它主要解决了三个问题：异步（减少用户相应时间，提高用户体验），削峰（促销活动时，用来存储海量请求，然后慢慢处理积压在队列里的请求），解耦（A调用B,C,D后面如果需]]></description><category></category></item><item><title><![CDATA[Solr + ZooKeeper]]></title><link>https://blog.youkuaiyun.com/Pomeranian/article/details/123433120</link><guid>https://blog.youkuaiyun.com/Pomeranian/article/details/123433120</guid><author>Pomeranian</author><pubDate>Sun, 13 Mar 2022 12:10:24 +0800</pubDate><description><![CDATA[1.什么是Solr?
2.什么是倒排索引？
3.Solr和ElasticSerach有什么相同点和不同点？
1.Solr是基于Lucene的全文搜索平台。它使用倒排索引机制可以实现快速的全文搜索与查找。
2.倒排索引里有field和document的概念。想正常的搜索都是知道商品具体的名字后来进行查找，是先知道document这种，然后去查找对应的field。这是正排索引。（然后举自己项目具体的例子）倒排索引就是我们的输入和整理的索引是field，也就是每个商品的关键词。然后通过这个field索引就可以查询]]></description><category></category></item><item><title><![CDATA[Redis]]></title><link>https://blog.youkuaiyun.com/Pomeranian/article/details/123409846</link><guid>https://blog.youkuaiyun.com/Pomeranian/article/details/123409846</guid><author>Pomeranian</author><pubDate>Fri, 11 Mar 2022 17:48:32 +0800</pubDate><description><![CDATA[1.介绍一下Redis
Redis是由C语言写的一个数据库，是Key/Value结构的。它直接把数据保存在内存当中，它也可以把内存中的数据持久化到磁盘里。特点是速度快，常见的用法有加在数据库之前的缓存，分布式锁（Redison），还有简单的消息队列。
2.说一下Redis和Memcached的相同与区别
相同：
1.它们都把数据存储在内存里。
2.它们都是Key/Value结构的数据库。
不同：
1.Redis有更丰富的数据类型，而Memcached单一。只有string。
2.Redis不仅可以把数据存.]]></description><category></category></item><item><title><![CDATA[RPC + Dubbo]]></title><link>https://blog.youkuaiyun.com/Pomeranian/article/details/123388545</link><guid>https://blog.youkuaiyun.com/Pomeranian/article/details/123388545</guid><author>Pomeranian</author><pubDate>Thu, 10 Mar 2022 16:21:24 +0800</pubDate><description><![CDATA[参考javaguide里的dubbo面试题。

1.RPC
什么是RPC?
RPC是远程过程调用，Remote Procedure Call。可以实现像本地方法调用那样方便地进行不同服务器之间的方法调用。
RPC的原理是什么？
先画一张图：

首先客户端把要调用的方法，类，方法参数等传递给client stub（客户端桩）。然后客户端桩把这些序列化为RpcRequest，并由网络传输给另一台服务器（使用socket或者netty）。然后server stub（服务端桩）把传输过来的RpcRequest进行反]]></description><category></category></item><item><title><![CDATA[项目的总结]]></title><link>https://blog.youkuaiyun.com/Pomeranian/article/details/123360071</link><guid>https://blog.youkuaiyun.com/Pomeranian/article/details/123360071</guid><author>Pomeranian</author><pubDate>Wed, 09 Mar 2022 21:49:38 +0800</pubDate><description><![CDATA[订单模块和搜索模块的后端开发
SSM + Dubbo + Redis + Solr + ActiveMQ
它是一个卖茶的电商平台，使用的是SOA也就是面向服务的架构。
1.SOA面向服务的架构
传统架构-&gt;分布式架构-&gt;面向服务的架构
使用session复制：（传统架构）
1个tomcat理论最多支持500并发（但实际上一般在300左右）。
所以需要多个tomcat来做集群（多个服务器部署同一套代码）。然后通过负载均衡服务器来进行负载的分配，如nginx（engine x）服务器。

那是不是集]]></description><category></category></item><item><title><![CDATA[牛客剑指offer易错点]]></title><link>https://blog.youkuaiyun.com/Pomeranian/article/details/119764937</link><guid>https://blog.youkuaiyun.com/Pomeranian/article/details/119764937</guid><author>Pomeranian</author><pubDate>Tue, 17 Aug 2021 20:10:41 +0800</pubDate><description><![CDATA[JZ4 重建二叉树
注意两点：
1.左子树长度为k-inS
（inS刚开始是为0，但是在递归参数中inS是不断变化的）
2.递归结束条件为preS&gt;preE或inS&gt;inE，返回null。
（当preS== preE和inS ==inE时可以继续创建这个节点）

...]]></description><category></category></item><item><title><![CDATA[西安爱学思面经]]></title><link>https://blog.youkuaiyun.com/Pomeranian/article/details/116242237</link><guid>https://blog.youkuaiyun.com/Pomeranian/article/details/116242237</guid><author>Pomeranian</author><pubDate>Wed, 28 Apr 2021 20:42:20 +0800</pubDate><description><![CDATA[过程：
1.先笔试
2.hr面
3.技术面
4.boss面
笔试只要不要完全空白就可以继续

问题总结：
1.用过哪些集合?
list set map特性 联系和区别
2.hashmap什么时候扩容 负载因子 怎么扩容 整个过程
3.栈的应用场景
4.操作系统中
进程的通信方式
多线程的同步方式
5.程序编译，链接等整个过程
重定向在哪个阶段
6.抽象类和接口的区别
主要是抽象类的使用（用的少，去用几个demo试试）
7.linux文件的压缩和解压的常用命令

一些需要提高的点：
1.没有录上音，下次技术面]]></description><category></category></item><item><title><![CDATA[mysql]]></title><link>https://blog.youkuaiyun.com/Pomeranian/article/details/115376335</link><guid>https://blog.youkuaiyun.com/Pomeranian/article/details/115376335</guid><author>Pomeranian</author><pubDate>Tue, 06 Apr 2021 16:22:20 +0800</pubDate><description><![CDATA[4.1 MySQL
4.1.2 什么是MySQL?
mysql是一个开源的关系型数据库。默认端口为3306。
4.1.3 mysql存储引擎有哪些？
myisam和InnoDB。
myisam是早期mysql的默认存储引擎，而InnoDB是现在mysql的默认存储引擎，支持事务。用show engines;命令查看mysql的所有存储引擎后，发现只有InnoDB引擎是支持事务的，剩下的都不支持事务。
MyISAM和InnoDB有什么区别？
1.myisam不支持事务，而InnoDB支持事务
2.myisam]]></description><category></category></item><item><title><![CDATA[操作系统]]></title><link>https://blog.youkuaiyun.com/Pomeranian/article/details/115253672</link><guid>https://blog.youkuaiyun.com/Pomeranian/article/details/115253672</guid><author>Pomeranian</author><pubDate>Wed, 31 Mar 2021 20:37:26 +0800</pubDate><description><![CDATA[一：基础
1.1 什么是操作系统？
1.它是管理电脑硬件和软件的程序，是计算机的基础设施。
2.它屏蔽了硬件的复杂性。
3.它的内核(kernel)是核心的部分。内核负责内存和硬件设备的管理，文件系统和应用程序的管理等。
内核连接了硬件和应用程序，是它们的桥梁，决定了计算机系统的性能和稳定性。

1.2 什么是系统调用？
进程在操作系统中有两个状态：
一个是用户态，一个是内核态。
应用程序一般的操作都是在用户态进行的，也就是管理用户数据，进行一些用户操作。但是总会有一些需要更底层的需要操作系统来完成的操作，]]></description><category></category></item><item><title><![CDATA[计算机网络]]></title><link>https://blog.youkuaiyun.com/Pomeranian/article/details/115130525</link><guid>https://blog.youkuaiyun.com/Pomeranian/article/details/115130525</guid><author>Pomeranian</author><pubDate>Fri, 26 Mar 2021 19:11:22 +0800</pubDate><description><![CDATA[3.1.1 OSI与TCP/IP各层的结构与功能,都有哪些协议?
OSI七层协议：
从下到上，1.物理层2.数据链路层3.网络层4.传输层5.会话层6.表示层7.应用层
TCP/IP四层协议：
从下到上，1.网络接口层2.网络层3.传输层4.应用层
折中的五层协议：
从下到上，1.物理层2.数据链路层3.网络层4.传输层5.应用层
每层都是干什么的？
1.物理层：
物理层传输比特流。
物理层的作用是：在两个计算机节点之间传输比特流，尽可能忽略传输介质以及物理设备之间的差异。
2.数据链路层：
主机之间的数据]]></description><category></category></item><item><title><![CDATA[java语言基础]]></title><link>https://blog.youkuaiyun.com/Pomeranian/article/details/114981494</link><guid>https://blog.youkuaiyun.com/Pomeranian/article/details/114981494</guid><author>Pomeranian</author><pubDate>Tue, 23 Mar 2021 16:13:08 +0800</pubDate><description><![CDATA[2.1.1. ⾯向对象和⾯向过程的区别
1.在性能方面：
面向过程的性能要好于面向对象。因为面向对象有对象的概念，需要实例化对象，这会消耗大量的资源。所以面向对象的性能差一些。
2.在可维护性，可扩展性方面：
面向对象的可维护性和可扩展性要好的多。因为面向对象有封装，继承，多态等特性，会使系统的可维护性和可扩展性更好。
java比较慢是因为：java并不是像面向过程语言编译为机器码后让机器执行，而是使用字节码.class让虚拟机去执行，所以慢一些。
2.1.1.  Java 语⾔有哪些特点?
1.简单易学
]]></description><category></category></item><item><title><![CDATA[10.之字形打印二叉树]]></title><link>https://blog.youkuaiyun.com/Pomeranian/article/details/115124780</link><guid>https://blog.youkuaiyun.com/Pomeranian/article/details/115124780</guid><author>Pomeranian</author><pubDate>Tue, 23 Mar 2021 15:12:10 +0800</pubDate><description><![CDATA[题目：把二叉树按之字形层序遍历，每层单独保存，最后返回。
public ArrayList&lt;ArrayList&gt; zigzagLevelOrder (TreeNode root)
思路：基本思路是层序遍历每层单独保存。这是用size固定，然后把每次size的元素放到一层中保存。
不同的是有正向的，有反向的。用一个栈，来实现反向的。（就是先放到栈里，再拿出来保存）。
用栈，不会增加时间和空间的复杂度。（时间上语句没有嵌套，而且需要使用队列）
	 /*
    隔行打印层序遍历，用size保存
  ]]></description><category></category></item><item><title><![CDATA[9.符号序列]]></title><link>https://blog.youkuaiyun.com/Pomeranian/article/details/115112534</link><guid>https://blog.youkuaiyun.com/Pomeranian/article/details/115112534</guid><author>Pomeranian</author><pubDate>Tue, 23 Mar 2021 10:57:02 +0800</pubDate><description><![CDATA[题目：一个字符串里只有[ ] ( ) { }这6个符号，每队各自前后匹配，问这个字符串是不是匹配的。如[()]是匹配的，[{]}是不匹配的。
public boolean isValid (String s)
思路：用栈存放，拿栈顶元素和下一个元素比较，如果匹配的话pop栈顶元素，如果不匹配就放到栈里。
最后如果完全匹配了，栈为空，否则就没有完全匹配。
	/*
    思路：
    把元素放到栈里，匹配了就弹出，看看最后栈是否为空
     */
    public boolean isValid (S]]></description><category></category></item><item><title><![CDATA[8.无重复元素的子串的最大长度（子串——最大长度）]]></title><link>https://blog.youkuaiyun.com/Pomeranian/article/details/115009554</link><guid>https://blog.youkuaiyun.com/Pomeranian/article/details/115009554</guid><author>Pomeranian</author><pubDate>Fri, 19 Mar 2021 16:30:34 +0800</pubDate><description><![CDATA[题目：求无重复元素的子串的最大长度。
public int maxLength (int[] arr)
思路：子部分求最大某属性，动态规划dp[j]（需要另一个下标就声明为dp[j]）
dp[j]表示以arr[j]结尾的没有重复元素子串的最大长度。
arr[i]是离arr[j]左边最近的等于arr[j]的元素（重复元素），arr[i]==arr[j]。
举个例子： dp[j]怎么由dp[j-1]获得
如dabca,abca 满足dp[j-1] &gt;= j-i时，dp[j]=j-i
当dp[j-1]&lt]]></description><category></category></item><item><title><![CDATA[7.连续子数组的最大和（子数组——最大和）]]></title><link>https://blog.youkuaiyun.com/Pomeranian/article/details/114970710</link><guid>https://blog.youkuaiyun.com/Pomeranian/article/details/114970710</guid><author>Pomeranian</author><pubDate>Thu, 18 Mar 2021 11:39:28 +0800</pubDate><description><![CDATA[题目：给一个数组，让求连续数组元素的最大和。
public int maxsumofSubarray (int[] arr)
思路：
连续子数组的最大和  动态规划 dp[i]
dp[i]表示以arr[i]结尾的连续子数组的最大和。arr[i]必须加上，就不判断arr[i]是正还是负。
dp[i]等于arr[i]加上以上一个元素为结尾的最大和dp[i-1]，但是需要判断dp[i-1]的正负，如果是正的则加上，负的就不加，加0。
时间复杂度为O(n)，空间复杂度为O(1)，所以只能在arr上修改，不能创建新数]]></description><category></category></item><item><title><![CDATA[6.跳台阶 && 变态跳台阶]]></title><link>https://blog.youkuaiyun.com/Pomeranian/article/details/114965832</link><guid>https://blog.youkuaiyun.com/Pomeranian/article/details/114965832</guid><author>Pomeranian</author><pubDate>Thu, 18 Mar 2021 10:15:15 +0800</pubDate><description><![CDATA[题目：有n个台阶，青蛙一次能跳1个，一次也能跳2个。问跳完这n阶台阶，有多少种跳法？
public int JumpFloor(int target)
思路：
先分析问题，发现是斐波那契数列。先想到可以用递归去做，但是效率不好，不是最好的方法。
然后就想到递推，从刚开始的两个变量加来得到下一个数。然后不断地覆盖这两个变量。来得到答案。
	/*
    斐波那契数列，可以递归，但肯定不是最好的方法
    递推，用两个变量不断往下计算才是最好的方法
     */
    public int JumpFlo]]></description><category></category></item><item><title><![CDATA[java集合]]></title><link>https://blog.youkuaiyun.com/Pomeranian/article/details/114840657</link><guid>https://blog.youkuaiyun.com/Pomeranian/article/details/114840657</guid><author>Pomeranian</author><pubDate>Wed, 17 Mar 2021 20:24:30 +0800</pubDate><description><![CDATA[2.2.1. 说说List,Set,Map三者的区别？
从储存元素的角度看：
List：存储的元素是有序的（有顺序），可以重复。
Set：存储的元素是无序的，不可以重复。
Map：存储的是&lt;key,value&gt;的键值对，key是无序的，不可重复。value是无序的，可以重复。一个key对应一个value。
2.2.2. ArrayList 与 LinkedList 区别?ArrayList 与 LinkedList的使用场景是什么？
1.是否线程安全：
它们都不是线程安全的
2.它们的底层结构：]]></description><category></category></item><item><title><![CDATA[5.两数之和]]></title><link>https://blog.youkuaiyun.com/Pomeranian/article/details/114921917</link><guid>https://blog.youkuaiyun.com/Pomeranian/article/details/114921917</guid><author>Pomeranian</author><pubDate>Wed, 17 Mar 2021 11:41:56 +0800</pubDate><description><![CDATA[题目：给一个数组，一个目标和target。已知数组里只有两个和等于target（唯一解）。求这两个数的下标，并放到res[]里返回（下标从1开始）。
public int[] twoSum (int[] numbers, int target)
思路：
1.暴力循环。
O(n^2)
2.用哈希表（HashMap实现）先把所有的以数值为key，以对应的下标为value存储。
然后从第一个开始，把自己想要的差值从map里找（但是如果target为自己的2倍，还应加上想要的差值不能等于自己的判断）。然后从第一个开]]></description><category></category></item><item><title><![CDATA[4.合并两个有序链表]]></title><link>https://blog.youkuaiyun.com/Pomeranian/article/details/114874613</link><guid>https://blog.youkuaiyun.com/Pomeranian/article/details/114874613</guid><author>Pomeranian</author><pubDate>Tue, 16 Mar 2021 12:00:10 +0800</pubDate><description><![CDATA[题目：两个链表有序，合成一个新的链表，也有序，且不创建新节点。
public ListNode mergeTwoLists (ListNode l1, ListNode l2)
思路：
1.把l1和l2最小的头结点作为新链表的head
2.关键：l1和l2往后遍历，把更小的链接到新链表中。然后新链表就有序了。
3.最后把l1或l2剩下的一段链接到里面。
注意：
加上l1和l2的判空。当l1为null时直接返回l2（l2可以为null也可以不为null）。
	/*
    思路：
    1.两链表最小的头结]]></description><category></category></item></channel></rss>