<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sidihuo的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sidihuo</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sidihuo]]></copyright><item><title><![CDATA[java通过接口转发文件（上传下载）]]></title><link>https://blog.youkuaiyun.com/sidihuo/article/details/133388704</link><guid>https://blog.youkuaiyun.com/sidihuo/article/details/133388704</guid><author>sidihuo</author><pubDate>Thu, 28 Sep 2023 18:39:04 +0800</pubDate><description><![CDATA[log.info("下载类型接口调用开始： uri = {}", uri);java接口转发上传的文件。java接口转发下载的文件。]]></description><category></category></item><item><title><![CDATA[【无标题】]]></title><link>https://blog.youkuaiyun.com/sidihuo/article/details/124414451</link><guid>https://blog.youkuaiyun.com/sidihuo/article/details/124414451</guid><author>sidihuo</author><pubDate>Mon, 25 Apr 2022 22:49:15 +0800</pubDate><description><![CDATA[简单介绍下项目情况，包括业务量，项目整体结构
介绍下对spring cloud的理解
redis使用场景，分布式锁使用场景
zookeeper项目使用场景，选举机制
工作过程中参与过哪些项目优化工作
socket使用场景
hashmap底层实现原理
线程安全的hashmap有吗，底层实现原理
线程池使用场景，使用注意事项
表索引设计原则及注意事项
介绍下java内存模型
性能调优做过哪些



1.spring cloud的理解

SpringCloud不是一种技术!是一种生态

Spring Cloud.]]></description><category></category></item><item><title><![CDATA[面试-TopK]]></title><link>https://blog.youkuaiyun.com/sidihuo/article/details/115568484</link><guid>https://blog.youkuaiyun.com/sidihuo/article/details/115568484</guid><author>sidihuo</author><pubDate>Sat, 10 Apr 2021 11:30:53 +0800</pubDate><description><![CDATA[1.全局排序 O(n*lg(n))--快排
2.局部排序，只排序topK个数，冒泡排序前k个，O(n*k)
3.堆排序，O(n*lg(k))
4.分治法，每个分支“都要”递归，例如：快速排序，O(n*lg(n))
5.减治法，“只要”递归一个分支，例如：二分查找O(lg(n))，随机选择O(n)
6.TopK的另一个解法：随机选择+partition
7.比特位图法（bitmap）计数O(n)

8.桶排 n个桶O(n)



...]]></description><category></category></item><item><title><![CDATA[面试-时间复杂度]]></title><link>https://blog.youkuaiyun.com/sidihuo/article/details/115566268</link><guid>https://blog.youkuaiyun.com/sidihuo/article/details/115566268</guid><author>sidihuo</author><pubDate>Sat, 10 Apr 2021 10:41:36 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[面试-综合]]></title><link>https://blog.youkuaiyun.com/sidihuo/article/details/115278486</link><guid>https://blog.youkuaiyun.com/sidihuo/article/details/115278486</guid><author>sidihuo</author><pubDate>Sun, 28 Mar 2021 12:36:36 +0800</pubDate><description><![CDATA[东财https://my.oschina.net/u/4357988/blog/3348034



hashmap为什么线程不安全？

jdk1.7自动扩容时候，transfer的实现是头插法，反转链表，可能形成环形链表；

jdk1.8自动扩容使用的尾插法，扩容时候一个entry的下标要不不变，要不变成原下标+原数组大小，虽然不会形成死循环，但是还是可能数据丢失的；



一致性hash

https://zhuanlan.zhihu.com/p/24440059

虚拟节点解决hash环偏...]]></description><category></category></item><item><title><![CDATA[面试-MQ]]></title><link>https://blog.youkuaiyun.com/sidihuo/article/details/114707689</link><guid>https://blog.youkuaiyun.com/sidihuo/article/details/114707689</guid><author>sidihuo</author><pubDate>Fri, 12 Mar 2021 21:15:29 +0800</pubDate><description><![CDATA[部分摘自https://github.com/yuanguangxin/LeetCode

Kafka

中消息是以topic进行分类的，topic在物理层面又能以partition为分组，一个topic可以分成若干个partition。partition还可以细分为segment，一个partition物理上由多个segment组成，segment文件由两部分组成，分别为“.index”文件和“.log”文件，分别表示为segment索引文件和数据文件。这两个文件的命令规则为：partition全局的第一]]></description><category></category></item><item><title><![CDATA[面试-限流算法]]></title><link>https://blog.youkuaiyun.com/sidihuo/article/details/114648684</link><guid>https://blog.youkuaiyun.com/sidihuo/article/details/114648684</guid><author>sidihuo</author><pubDate>Wed, 10 Mar 2021 22:50:18 +0800</pubDate><description><![CDATA[部分转自https://blog.youkuaiyun.com/linhui258/article/details/81155622

https://blog.youkuaiyun.com/weixin_41846320/article/details/95941361



1.计数器

计数器算法是使用计数器在周期内累加访问次数，当达到设定的限流值时，触发限流策略。下一个周期开始时，进行清零，重新计数。

此算法在单机还是分布式环境下实现都非常简单，使用redis的incr原子自增性和线程安全即可轻松实现。



...]]></description><category></category></item><item><title><![CDATA[面试-CAP+BASE+ACID]]></title><link>https://blog.youkuaiyun.com/sidihuo/article/details/114273856</link><guid>https://blog.youkuaiyun.com/sidihuo/article/details/114273856</guid><author>sidihuo</author><pubDate>Mon, 01 Mar 2021 23:05:15 +0800</pubDate><description><![CDATA[CAP

转自http://www.ruanyifeng.com/blog/2018/07/cap.html

分布式系统（distributed system）正变得越来越重要，大型网站几乎都是分布式的。

分布式系统的最大难点，就是各个节点的状态如何同步。CAP 定理是这方面的基本定理，也是理解分布式系统的起点。

本文介绍该定理。它其实很好懂，而且是显而易见的。下面的内容主要参考了 Michael Whittaker 的文章。

一、分布式系统的三个指标



1998年，加州大学的计算机科学家 Er]]></description><category></category></item><item><title><![CDATA[分布式选举---基于redis]]></title><link>https://blog.youkuaiyun.com/sidihuo/article/details/104867742</link><guid>https://blog.youkuaiyun.com/sidihuo/article/details/104867742</guid><author>sidihuo</author><pubDate>Sat, 14 Mar 2020 21:42:44 +0800</pubDate><description><![CDATA[一个集群，只有一个是master，其他都是slave；

当master宕机，从slave里面选举一个新的master来；

可以基于redis实现；



伪代码



String redisKey="redis-master-heart-beat";

boolean master=false;

定时器方法：5秒执行一次（类似心跳）

String redisValue=jedi...]]></description><category></category></item><item><title><![CDATA[面试-秒杀下单]]></title><link>https://blog.youkuaiyun.com/sidihuo/article/details/104583580</link><guid>https://blog.youkuaiyun.com/sidihuo/article/details/104583580</guid><author>sidihuo</author><pubDate>Wed, 11 Mar 2020 23:11:44 +0800</pubDate><description><![CDATA[部分摘自https://github.com/yuanguangxin/LeetCode



秒杀并发情况下库存为负数问题

for update显示加锁
	把udpate语句写在前边，先把数量-1，之后select出库存如果&gt;-1就commit,否则rollback。

update products set quantity = quantity-1 WHERE id=3;
sele...]]></description><category></category></item><item><title><![CDATA[面试-三高]]></title><link>https://blog.youkuaiyun.com/sidihuo/article/details/104583545</link><guid>https://blog.youkuaiyun.com/sidihuo/article/details/104583545</guid><author>sidihuo</author><pubDate>Sat, 29 Feb 2020 22:16:28 +0800</pubDate><description><![CDATA[部分摘自https://github.com/yuanguangxin/LeetCode



高并发系统的设计与实现

在开发高并发系统时有三把利器用来保护系统：缓存、降级和限流。

缓存：缓存比较好理解，在大型高并发系统中，如果没有缓存数据库将分分钟被爆，系统也会瞬间瘫痪。使用缓存不单单能够提升系统访问速度、提高并发访问量，也是保护数据库、保护系统的有效方式。大型网站一般主要是“读”，缓存的...]]></description><category></category></item><item><title><![CDATA[面试-计算机基础]]></title><link>https://blog.youkuaiyun.com/sidihuo/article/details/104583502</link><guid>https://blog.youkuaiyun.com/sidihuo/article/details/104583502</guid><author>sidihuo</author><pubDate>Sat, 29 Feb 2020 22:14:35 +0800</pubDate><description><![CDATA[部分摘自https://github.com/yuanguangxin/LeetCode



操作系统

进程和线程

进程是操作系统资源分配的最小单位，线程是CPU任务调度的最小单位。一个进程可以包含多个线程，所以进程和线程都是一个时间段的描述，是CPU工作时间段的描述，不过是颗粒大小不同。
	不同进程间数据很难共享，同一进程下不同线程间数据很易共享。
	每个进程都有独立的代码和数据空间，进...]]></description><category></category></item><item><title><![CDATA[面试-dubbo]]></title><link>https://blog.youkuaiyun.com/sidihuo/article/details/104583450</link><guid>https://blog.youkuaiyun.com/sidihuo/article/details/104583450</guid><author>sidihuo</author><pubDate>Sat, 29 Feb 2020 22:11:40 +0800</pubDate><description><![CDATA[部分摘自https://github.com/yuanguangxin/LeetCode

Dubbo的容错机制

失败自动切换，当出现失败，重试其它服务器。通常用于读操作，但重试会带来更长延迟。可通过 retries="2" 来设置重试次数
	快速失败，只发起一次调用，失败立即报错。通常用于非幂等性的写操作，比如新增记录。
	失败安全，出现异常时，直接忽略。通常用于写入审计日志等操作。
	失败自...]]></description><category></category></item><item><title><![CDATA[面试-消息队列-Kafka]]></title><link>https://blog.youkuaiyun.com/sidihuo/article/details/104583427</link><guid>https://blog.youkuaiyun.com/sidihuo/article/details/104583427</guid><author>sidihuo</author><pubDate>Sat, 29 Feb 2020 22:10:42 +0800</pubDate><description><![CDATA[部分摘自https://github.com/yuanguangxin/LeetCode

为什么需要消息队列

解耦，异步处理，削峰/限流

Kafka的文件存储机制

Kafka中消息是以topic进行分类的，生产者通过topic向Kafka broker发送消息，消费者通过topic读取数据。然而topic在物理层面又能以partition为分组，一个topic可以分成若干个partitio...]]></description><category></category></item><item><title><![CDATA[面试-Spring]]></title><link>https://blog.youkuaiyun.com/sidihuo/article/details/104583411</link><guid>https://blog.youkuaiyun.com/sidihuo/article/details/104583411</guid><author>sidihuo</author><pubDate>Sat, 29 Feb 2020 22:09:47 +0800</pubDate><description><![CDATA[部分摘自https://github.com/yuanguangxin/LeetCode



什么是三级缓存

第一级缓存：单例缓存池singletonObjects。
	第二级缓存：早期提前暴露的对象缓存earlySingletonObjects。（属性还没有值对象也没有被初始化）
	第三级缓存：singletonFactories单例对象工厂缓存。
创建Bean的整个过程

getBean...]]></description><category></category></item><item><title><![CDATA[fel计算引擎(表达式计算数学公式)--实例sigma求和∑]]></title><link>https://blog.youkuaiyun.com/sidihuo/article/details/89210550</link><guid>https://blog.youkuaiyun.com/sidihuo/article/details/89210550</guid><author>sidihuo</author><pubDate>Thu, 11 Apr 2019 14:52:17 +0800</pubDate><description><![CDATA[fel计算引擎--实例sigma求和∑

从而避免每一个公式都手动写方法计算，只要输入数学公式就可计算结果；

示例计算 


1+2*(SUM('x_*3+1','1','5')+1)



fel用的0.9版本，支持大数高精度；

约定变量以下划线结尾




public class SumFunction extends CommonFunction {

    private ...]]></description><category></category></item><item><title><![CDATA[ABTest-SDK]]></title><link>https://blog.youkuaiyun.com/sidihuo/article/details/82119565</link><guid>https://blog.youkuaiyun.com/sidihuo/article/details/82119565</guid><author>sidihuo</author><pubDate>Mon, 27 Aug 2018 21:50:06 +0800</pubDate><description><![CDATA[源码：https://github.com/sidihuo/abtest-sdk

ABTest-SDK适用于AB分流实验、灰度发布系统等互联网场景；

此SDK支持二次开发，开发者可自行实现查询实验分流配置接口。

特性：

1）支持白名单；

2）轻量级，仅依赖guava；

3）接口耗时微秒级，使用guava的本地缓存；

4）客户分流可控（修改分流比时候客户版本可控，单个实验的分流比例粒度...]]></description><category></category></item><item><title><![CDATA[mysql下载与安装过程]]></title><link>https://blog.youkuaiyun.com/sidihuo/article/details/82026237</link><guid>https://blog.youkuaiyun.com/sidihuo/article/details/82026237</guid><author>sidihuo</author><pubDate>Fri, 24 Aug 2018 22:28:03 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/weixin_40396510/article/details/79277731

 

 

修改密码

 

先登录进入mysql环境：执行下面三个命令。（记得带上分号）

1、use mysql；

2、ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新...]]></description><category></category></item><item><title><![CDATA[优雅的关闭线程池]]></title><link>https://blog.youkuaiyun.com/sidihuo/article/details/81557238</link><guid>https://blog.youkuaiyun.com/sidihuo/article/details/81557238</guid><author>sidihuo</author><pubDate>Fri, 10 Aug 2018 09:18:32 +0800</pubDate><description><![CDATA[
   @PreDestroy
         public void destory() {
                   try {
                            scheduledExecutorService.shutdown();

                            if (!scheduledExecutorService.aw...]]></description><category></category></item><item><title><![CDATA[把字符串随机打散并平均分成N份]]></title><link>https://blog.youkuaiyun.com/sidihuo/article/details/81285863</link><guid>https://blog.youkuaiyun.com/sidihuo/article/details/81285863</guid><author>sidihuo</author><pubDate>Mon, 30 Jul 2018 15:27:26 +0800</pubDate><description><![CDATA[
import java.security.MessageDigest;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
import java.util.UUID;

import org.springframework.util.StringUti...]]></description><category></category></item></channel></rss>