<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Justdoforever的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Justdoforever</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Justdoforever]]></copyright><item><title><![CDATA[ajax前端传参总结]]></title><link>https://blog.youkuaiyun.com/Justdoforever/article/details/121649840</link><guid>https://blog.youkuaiyun.com/Justdoforever/article/details/121649840</guid><author>Justdoforever</author><pubDate>Sun, 12 Dec 2021 15:39:38 +0800</pubDate><description><![CDATA[总结
@RequestParam()接收前端数据的情况：
POST请求“application/x-www-form-urlencoded’”，此时传参能用JSON.stringify()，，POST请求用“application/json”是后端要用@ResquestBody注解封装实体对象接收，不能用@RequestParam()。
GET请求时用“‘application/x-www-form-urlencoded’”或“application/json”都行，不用JSON.stringify()修饰]]></description><category></category></item><item><title><![CDATA[CyclicBarrier与CountDownLatch的区别]]></title><link>https://blog.youkuaiyun.com/Justdoforever/article/details/121041443</link><guid>https://blog.youkuaiyun.com/Justdoforever/article/details/121041443</guid><author>Justdoforever</author><pubDate>Fri, 29 Oct 2021 19:39:51 +0800</pubDate><description><![CDATA[CyclicBarrier与CountDownLatch的区别
至此我们难免会将CyclicBarrier与CountDownLatch进行一番比较。这两个类都可以实现一组线程在到达某个条件之前进行等待，它们内部都有一个计数器，当计数器的值不断的减为0的时候所有阻塞的线程将会被唤醒。
有区别的是CyclicBarrier的计数器由自己控制，而CountDownLatch的计数器则由使用者来控制，在CyclicBarrier中线程调用await方法不仅会将自己阻塞还会将计数器减1，而在CountDownLat]]></description><category></category></item><item><title><![CDATA[BigInteger 用法]]></title><link>https://blog.youkuaiyun.com/Justdoforever/article/details/120252784</link><guid>https://blog.youkuaiyun.com/Justdoforever/article/details/120252784</guid><author>Justdoforever</author><pubDate>Sun, 12 Sep 2021 17:03:27 +0800</pubDate><description><![CDATA[import java.math.BigInteger;
import java.util.Scanner;
public class test4 {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
int n=sc.nextInt();
for (int j = 0; j &lt; n; j++) {
int n1=sc.nextInt();
int n2=sc.nextInt();
BigInteg]]></description><category></category></item><item><title><![CDATA[java 基础]]></title><link>https://blog.youkuaiyun.com/Justdoforever/article/details/120075296</link><guid>https://blog.youkuaiyun.com/Justdoforever/article/details/120075296</guid><author>Justdoforever</author><pubDate>Fri, 03 Sep 2021 10:11:03 +0800</pubDate><description><![CDATA[任务队列的实现原理？
这里面试官是想让我说任务队列的工作原理，阻塞唤醒这些。
但是我理解错了。第一次面试问这么深，所以这里没答好。
我答的是ArrayBlockingQueue：底层是数组，有界队列LinkedBlockingQueue：底层是链表，可以当做无界和有界队列。
实际上应该回答阻塞队列，原理就是读操作和写操作都需要获取到 AQS 独占锁才能进行操作。如果队列为空，这个时候读操作的线程进入到读线程队列排队，等待写线程写入新的元素，然后唤醒读线程队列的第一个等待线程。如果队列已满，这个时候写操作的线]]></description><category></category></item><item><title><![CDATA[123456]]></title><link>https://blog.youkuaiyun.com/Justdoforever/article/details/119297100</link><guid>https://blog.youkuaiyun.com/Justdoforever/article/details/119297100</guid><author>Justdoforever</author><pubDate>Sun, 01 Aug 2021 13:13:24 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[rpc0000]]></title><link>https://blog.youkuaiyun.com/Justdoforever/article/details/119297031</link><guid>https://blog.youkuaiyun.com/Justdoforever/article/details/119297031</guid><author>Justdoforever</author><pubDate>Sun, 01 Aug 2021 13:03:33 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[java rpc实现]]></title><link>https://blog.youkuaiyun.com/Justdoforever/article/details/119152705</link><guid>https://blog.youkuaiyun.com/Justdoforever/article/details/119152705</guid><author>Justdoforever</author><pubDate>Wed, 28 Jul 2021 10:04:51 +0800</pubDate><description><![CDATA[Socket 网络通信实战
什么是 Socket(套接字)
Socket是一个抽象概念，应用程序可以通过它发送或接收数据。在使用 Socket 进行网络通信的时候，通过 Socket 就可以让我们的数据在网络中传输。操作套接字的时候，和我们读写文件很像。套接字是IP地址与端口的组合，套接字 Socket=（IP地址：端口号）。
要通过互联网进行通信，至少需要一对套接字：
运行于服务器端的Server Socket。
运行于客户机端的Client Socket
在Java 开发中使用Socket 时会常用到两]]></description><category></category></item><item><title><![CDATA[阿里1面1]]></title><link>https://blog.youkuaiyun.com/Justdoforever/article/details/116719394</link><guid>https://blog.youkuaiyun.com/Justdoforever/article/details/116719394</guid><author>Justdoforever</author><pubDate>Wed, 12 May 2021 20:45:13 +0800</pubDate><description><![CDATA[场景，比如限流
答案：三种限流算法
计数器法，漏桶和令牌桶算法，限流一般在网关进行。
如何实现云班课？ 每个学校有自己的数据库 不同学校用相同的云班课系统
答案：多租户
我答的，分库分表，那么如何分库分表？
四种方式水平分库分表，垂直分库分表
sharding-jdbc实例分库分表
还有一个场景题是如何实现一个比价系统
比价系统用CyclicBarrier比较好，适用于将一个大任务分解为多个任务，然后多个线程执行多个计算任务，然后将结果的合并，可重复使用
CountDownLatch和CyclicBarri]]></description><category></category></item><item><title><![CDATA[每个公司有自己的数据库 公司用相同的系统  多租户]]></title><link>https://blog.youkuaiyun.com/Justdoforever/article/details/116719230</link><guid>https://blog.youkuaiyun.com/Justdoforever/article/details/116719230</guid><author>Justdoforever</author><pubDate>Wed, 12 May 2021 19:29:03 +0800</pubDate><description><![CDATA[多租户1.1 多租户是什么1.2 需求分析1.3 多租户的数据库方案分析1.3.1 独立数据库1.3.2 共享数据库、独立 Schema1.3.3 共享数据库、共享数据表
1.1 多租户是什么
多租户技术（Multi-TenancyTechnology）又称多重租赁技术：是一种软件架构技术，是实现如何在多用户环境下 （此处的多用户一般是面向企业用户）共用相同的系统或程序组件，并且可确保各用户间数据的隔离性。简单讲： 在一台服务器上运行单个应用实例，它为多个租户（客户）提供服务。从定义中我们可以理解：多租户是]]></description><category></category></item><item><title><![CDATA[剖析常见的限流算法：计数器法、漏桶和令牌桶算法]]></title><link>https://blog.youkuaiyun.com/Justdoforever/article/details/116702020</link><guid>https://blog.youkuaiyun.com/Justdoforever/article/details/116702020</guid><author>Justdoforever</author><pubDate>Wed, 12 May 2021 13:11:22 +0800</pubDate><description><![CDATA[常见的限流算法1. 计数器法2. 漏桶和令牌桶算法3.Spring Cloud Gateway限流

对于业务系统来说高并发就是支撑「海量用户请求」，QPS 会是平时的几百倍甚至更高。
如果不考虑高并发的情况，即使业务系统平时运行得好好的，并发量一旦增加就会频繁出现各种诡异的业务问题，比如，在电商业务中，可能会出现用户订单丢失、库存扣减异常、超卖等问题。

限流是服务降级的一种手段，顾名思义，通过限制系统的流量，从而实现保护系统的目的。
合理的限流配置，需要了解系统的吞吐量，所以，限流一般需要结合容量规划和]]></description><category></category></item><item><title><![CDATA[找到最大的矩阵面积 java]]></title><link>https://blog.youkuaiyun.com/Justdoforever/article/details/116673534</link><guid>https://blog.youkuaiyun.com/Justdoforever/article/details/116673534</guid><author>Justdoforever</author><pubDate>Tue, 11 May 2021 22:37:20 +0800</pubDate><description><![CDATA[题目 找到最大的矩阵面积
思路
单调递增栈，正向遍历，找到右面第一个小于当前元素（cur）的元素的位置j；
反向遍历，找到左边离我最近且小于我的元素的位置i，
遍历所有元素：计算并找到cur*(i-j)的最大值，
import java.util.Arrays;
import java.util.Deque;
import java.util.LinkedList;

public class findMaxS {
    public static void main(String[] args) {
 ]]></description><category></category></item><item><title><![CDATA[操作系统]]></title><link>https://blog.youkuaiyun.com/Justdoforever/article/details/116300243</link><guid>https://blog.youkuaiyun.com/Justdoforever/article/details/116300243</guid><author>Justdoforever</author><pubDate>Fri, 30 Apr 2021 20:00:21 +0800</pubDate><description><![CDATA[操作系统内核的抽象与特征

操作系统:计算机科学研究的基石之一
。计算机系统的基本组成部分和核心支撑软件
。贯穿程序语言、运行时系统、应用、体系结构.
。联系计算机科学和计算机系统的典范
。操作系统的知识影响到专业人员的素质
。大量专业工作与操作系统技术相关
。顶尖大学的计算机科学部门
o MIT, Stanford, Berkeley, …
。计算机产业，
。旧时: Xerox (PARC), IBM, DEC (SRC), Bell Labs
。现代: Microsoft, Google, Yahoo,]]></description><category></category></item><item><title><![CDATA[华为笔试21年4月10日]]></title><link>https://blog.youkuaiyun.com/Justdoforever/article/details/116171278</link><guid>https://blog.youkuaiyun.com/Justdoforever/article/details/116171278</guid><author>Justdoforever</author><pubDate>Fri, 30 Apr 2021 12:02:37 +0800</pubDate><description><![CDATA[华为笔试21年4月10日
1.反转括号里的字符串
String str = “((jhkv)(love)i)”; // 变为ilovejhkv
String str = “(u(s)(love)i)”; // 变为ilovesu
从里面括号到外面括号依次反转，然后拼接
思路用 递归
定义：inverse(str,l,r) 反转str从l到r不包括括号的字符串
若
package com.company;

public class fanzhuan {
    public static void main]]></description><category></category></item><item><title><![CDATA[并查集模板 统计连通分量]]></title><link>https://blog.youkuaiyun.com/Justdoforever/article/details/116171199</link><guid>https://blog.youkuaiyun.com/Justdoforever/article/details/116171199</guid><author>Justdoforever</author><pubDate>Mon, 26 Apr 2021 20:21:39 +0800</pubDate><description><![CDATA[并查集模板 统计连通分量
package com.company;

public class bingchaji {
    int count; // 联通分量个数
    int[] parent; //记录根节点
    int[] cnt;// 记录以根节点记录该树的节点数量，只有一个树的根节点的
    // 记录才是准确的，cnt[parent]
    public bingchaji(int n) {
        parent = new int[n+1];
        cnt =]]></description><category></category></item><item><title><![CDATA[冒泡排序 插入排序 选择排序 快速排序 归并排序 堆排序计数排序实现 Java]]></title><link>https://blog.youkuaiyun.com/Justdoforever/article/details/116171097</link><guid>https://blog.youkuaiyun.com/Justdoforever/article/details/116171097</guid><author>Justdoforever</author><pubDate>Mon, 26 Apr 2021 20:20:10 +0800</pubDate><description><![CDATA[冒泡排序 插入排序 选择排序 快速排序 归并排序 堆排序计数排序实现


import java.util.Arrays;

public class maopao {
    public static void main(String[] args) {
        int[] a = {7, 8,9,6,3,5,6,7};
        maopao maopao = new maopao();
//        maopao.sort(a);
//        maopao.insertS]]></description><category></category></item><item><title><![CDATA[Add One , dp]]></title><link>https://blog.youkuaiyun.com/Justdoforever/article/details/115868130</link><guid>https://blog.youkuaiyun.com/Justdoforever/article/details/115868130</guid><author>Justdoforever</author><pubDate>Mon, 19 Apr 2021 16:38:24 +0800</pubDate><description><![CDATA[import java.util.Scanner;

public class dp {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();
        int mod = 1000000007, max_m = 200005;
        int[] dp = new int[max_m];
        f.]]></description><category></category></item><item><title><![CDATA[强大的心理素质如何锻炼?心理素质提高五大方法]]></title><link>https://blog.youkuaiyun.com/Justdoforever/article/details/115740491</link><guid>https://blog.youkuaiyun.com/Justdoforever/article/details/115740491</guid><author>Justdoforever</author><pubDate>Thu, 15 Apr 2021 21:32:45 +0800</pubDate><description><![CDATA[强大的心理素质如何锻炼?心理素质提高五大方法
强大的心理素质强大的心理素质如何锻炼?心理素质提高五大方法1. 利用注意力训练来培养心理灵活性2. 锻炼3. 多自言自语4. 休息5. 明确并培养自己的价值观写在最后
)

导语:如果是这样，你可能会发现自己想去找几篇关于情商的文章来读读。这是一个很有吸引力的想法——如果我们更多地了解自己和自己的情绪是如何运作的，我们可以有所改善——从坏情绪和消极的思维模式到提高效率和人际关系的质量。


人生难免有不如意的事情，这些事情很容易让你陷入负面情绪的怪圈中，这时候你]]></description><category></category></item><item><title><![CDATA[179. 最大数]]></title><link>https://blog.youkuaiyun.com/Justdoforever/article/details/115635216</link><guid>https://blog.youkuaiyun.com/Justdoforever/article/details/115635216</guid><author>Justdoforever</author><pubDate>Mon, 12 Apr 2021 18:55:54 +0800</pubDate><description><![CDATA[给定一组非负整数 nums，重新排列每个数的顺序（每个数不可拆分）使之组成一个最大的整数。
注意：输出结果可能非常大，所以你需要返回一个字符串而不是整数。
示例 1：
输入：nums = [10,2]
输出：“210”
示例 2：
输入：nums = [3,30,34,5,9]
输出：“9534330”
示例 3：
输入：nums = [1]
输出：“1”
示例 4：
输入：nums = [10]
输出：“10”
思路
每个字符串排序，自定义比较器(str1 + str2).compareTo(str2 +]]></description><category></category></item><item><title><![CDATA[SQL语句总结]]></title><link>https://blog.youkuaiyun.com/Justdoforever/article/details/115495046</link><guid>https://blog.youkuaiyun.com/Justdoforever/article/details/115495046</guid><author>Justdoforever</author><pubDate>Wed, 07 Apr 2021 21:11:46 +0800</pubDate><description><![CDATA[SQL语句
一个班级分数大于90分的人数占比，round函数，coucat

select round(T1.co / T2.totalCo * 100, 1)
from
(select count() AS co from student  s where s.score &gt;= 90 ) T1,
(select count() AS co from student ) T2;


分组取每组最大值
案例：按课程号分组取成绩最大值所在行的数据
我们可以使用关联子查询来实现：

select *
fro]]></description><category></category></item><item><title><![CDATA[执行SQL语句过程，SQL语句的执行顺序以及innodb执行SQL原理]]></title><link>https://blog.youkuaiyun.com/Justdoforever/article/details/115492403</link><guid>https://blog.youkuaiyun.com/Justdoforever/article/details/115492403</guid><author>Justdoforever</author><pubDate>Wed, 07 Apr 2021 20:11:11 +0800</pubDate><description><![CDATA[用户通过数据库连接池执行SQL语句过程

用户通过数据库连接池执行SQL语句，通过TCP/IP与数据库通信，数据库获得SQL语句后，数据库交给SQL接口处理 ，再用SQL解析器进行SQL解析，然后通过SQL查询优化器计算出最优查询路径，最后将SQL的执行计划交给执行器执行，执行器调用数据库的存储引擎完成数据库操作。
sql语句的执行顺序
staff
id  name  dept  salary  edlevel  	 hiredate
1    张三  开发部 2000     3             ]]></description><category></category></item></channel></rss>