<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ycb1689的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ycb1689</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ycb1689]]></copyright><item><title><![CDATA[ThreadLocal原理及内存泄露]]></title><link>https://blog.youkuaiyun.com/ycb1689/article/details/106849050</link><guid>https://blog.youkuaiyun.com/ycb1689/article/details/106849050</guid><author>ycb1689</author><pubDate>Fri, 19 Jun 2020 09:33:51 +0800</pubDate><description><![CDATA[前言

在介绍ThreadLocal之前，先说两个概念内存泄露与内存溢出：

    内存泄漏memory leak：是指程序在申请内存后，无法释放已申请的内存空间，一次内存泄漏似乎不会有大的影响，但内存泄漏堆积后的后果就是内存溢出。
    内存溢出 out of memory：没内存可以分配给新的对象了。

    强引用： 不会被回收的内存。

    软引用： 内部不足的时候回收的内存。

    弱引用： 存活到垃圾回收前的内存。

Thr...]]></description><category></category></item><item><title><![CDATA[Linux十字病毒查杀处理]]></title><link>https://blog.youkuaiyun.com/ycb1689/article/details/104278228</link><guid>https://blog.youkuaiyun.com/ycb1689/article/details/104278228</guid><author>ycb1689</author><pubDate>Wed, 12 Feb 2020 14:53:07 +0800</pubDate><description><![CDATA[https://blog.51cto.com/ixdba/2163018

一、现象

接到客户的电话，说自己的云服务器被提供商禁止访问了，原因是监测到网络流量暴满，服务器不停的向外发包，在确认客户没有业务量突增的情况下，初步判断可能服务器遭受了流量攻&amp;击（DDOS），不过按照常理来说，客户的业务系统就是一个小的web系统，平时流量不大，影响力也一般，不至于遭受DDOs，带着这些疑问...]]></description><category></category></item><item><title><![CDATA[使用shell脚本实现自动SSH互信功能（免密登录）]]></title><link>https://blog.youkuaiyun.com/ycb1689/article/details/104278081</link><guid>https://blog.youkuaiyun.com/ycb1689/article/details/104278081</guid><author>ycb1689</author><pubDate>Wed, 12 Feb 2020 14:11:37 +0800</pubDate><description><![CDATA[说假设有一个1000台节点的Hadoop集群，要配置节点之间的SSH免密码登录，该如何用shell脚本实现？


#!/bin/expect
 
#循环1000台机器的IP地址，生成密钥文件authorized_keys
 
for ip in {cat ip.list}
do
    ssh user@$ip ssh-keygen -t rsa  &amp;&gt;/dev/null
    e...]]></description><category></category></item><item><title><![CDATA[nginx 查看每秒有多少访问量]]></title><link>https://blog.youkuaiyun.com/ycb1689/article/details/99695410</link><guid>https://blog.youkuaiyun.com/ycb1689/article/details/99695410</guid><author>ycb1689</author><pubDate>Sat, 17 Aug 2019 17:09:42 +0800</pubDate><description><![CDATA[nginx访问量统计

1.根据访问IP统计UV

awk ‘{print $1}’ access.log|sort | uniq -c |wc -l

2.统计访问URL统计PV

awk ‘{print $7}’ access.log|wc -l

3.查询访问最频繁的URL

awk ‘{print $7}’ access.log|sort | uniq -c |sort -n -k 1 -...]]></description><category></category></item><item><title><![CDATA[微信小程序、公众号内嵌H5页面调用微信扫一扫]]></title><link>https://blog.youkuaiyun.com/ycb1689/article/details/94165675</link><guid>https://blog.youkuaiyun.com/ycb1689/article/details/94165675</guid><author>ycb1689</author><pubDate>Sat, 29 Jun 2019 16:26:04 +0800</pubDate><description><![CDATA[小程序内嵌H5调用微信扫一扫的功能，通过小程序webview来实现，具体方法与思路代码如下：

但是，小程序踩坑之路并没有结束。在公众号网页中通过配置APPID和appsecret可以正常调起微信扫一扫，但是，如何在小程序webview中调用扫一扫？扫描之后数据如何处理？小程序页面处理？还是传递给H5页面处理？

无奈之下，只得另寻他法。网上有人说，可以在H5页面使用wx.miniProgram....]]></description><category></category></item><item><title><![CDATA[java通过Exchange协议发送邮件]]></title><link>https://blog.youkuaiyun.com/ycb1689/article/details/90607932</link><guid>https://blog.youkuaiyun.com/ycb1689/article/details/90607932</guid><author>ycb1689</author><pubDate>Mon, 27 May 2019 17:53:10 +0800</pubDate><description><![CDATA[1、由于公司邮箱采用微软的，所以之前使用STMP协议发送业务告知邮件的业务代码需要变更。首先需要在项目引入以下Jar包


	&lt;!-- 微软邮箱 --&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;com.microsoft.ews-java-api&lt;/groupId&gt;
			&lt;artifactId&gt;ews-java-api&l...]]></description><category></category></item><item><title><![CDATA[采用Redis、Java的BitSet布隆过滤器去重]]></title><link>https://blog.youkuaiyun.com/ycb1689/article/details/89850260</link><guid>https://blog.youkuaiyun.com/ycb1689/article/details/89850260</guid><author>ycb1689</author><pubDate>Sun, 05 May 2019 17:41:48 +0800</pubDate><description><![CDATA[BloomFilter算法及其适用场景

　　BloomFilter是利用类似位图或者位集合数据结构来存储数据，利用位数组来简洁的表示一个集合，并且能够快速的判断一个元素是不是已经存在于这个集合。因为基于Hash来计算数据所在位置，所以BloomFilter的添加和查询操作都是O(1)的。因为存储简洁，这种数据结构能够利用较少的内存来存储海量的数据。那么，还有这种时间和空间两全其美的算法？当然不是...]]></description><category></category></item><item><title><![CDATA[jmap、jstack、jps无法连接jvm解决办法]]></title><link>https://blog.youkuaiyun.com/ycb1689/article/details/89671114</link><guid>https://blog.youkuaiyun.com/ycb1689/article/details/89671114</guid><author>ycb1689</author><pubDate>Mon, 29 Apr 2019 11:22:52 +0800</pubDate><description><![CDATA[一、背景

在对线上服务器的java应用dump操作时发现，以下报错，不能dump。jps也获取不到java进程的pid。

# jmap -dump:file=/data/dump/jvm_en.hprof 20176

20176: Unable to open socket file: target process not responding or HotSpot VM not loade...]]></description><category></category></item><item><title><![CDATA[JVM性能调优及线上故障问题排查步骤]]></title><link>https://blog.youkuaiyun.com/ycb1689/article/details/89669691</link><guid>https://blog.youkuaiyun.com/ycb1689/article/details/89669691</guid><author>ycb1689</author><pubDate>Mon, 29 Apr 2019 11:22:11 +0800</pubDate><description><![CDATA[一、发现问题

下面是线上机器的cpu使用率，可以看到从4月8日开始，随着时间cpu使用率在逐步增高，最终使用率达到100%导致线上服务不可用，后面重启了机器后恢复。



二、排查思路

简单分析下可能出问题的地方，分为5个方向：

系统本身代码问题
	内部下游系统的问题导致的雪崩效应
	上游系统调用量突增
	http请求第三方的问题
	机器本身的问题
三、开始排查

查看日志，没有发现集中的错...]]></description><category></category></item><item><title><![CDATA[Zookeeper实现可重入分布式锁]]></title><link>https://blog.youkuaiyun.com/ycb1689/article/details/89380057</link><guid>https://blog.youkuaiyun.com/ycb1689/article/details/89380057</guid><author>ycb1689</author><pubDate>Thu, 18 Apr 2019 15:36:43 +0800</pubDate><description><![CDATA[原理见快速理解Zookeeper实现分布锁的原理及代码实现



抽象的OrderService接口：


public interface OrderService {
    void createOrder();
}

订单号生成类（模拟公共资源ps:需要用锁的地方）：


import java.text.SimpleDateFormat;
import java.util.Date;
...]]></description><category></category></item><item><title><![CDATA[快速理解Zookeeper实现分布锁的原理及代码实现]]></title><link>https://blog.youkuaiyun.com/ycb1689/article/details/89370818</link><guid>https://blog.youkuaiyun.com/ycb1689/article/details/89370818</guid><author>ycb1689</author><pubDate>Thu, 18 Apr 2019 11:46:04 +0800</pubDate><description><![CDATA[如何用Zookeeper实现分布式锁?

网上好多采用ZK实现分布式锁都只能够应付一般使用场景，但存在着如下两个问题：

1、锁的获取顺序和最初客户端争抢顺序不一致，这不是一个公平锁。每次锁获取都是当次最先抢到锁的客户端。

2、羊群效应，所有没有抢到锁的客户端都会监听/exlusive_lock变更。当并发客户端很多的情况下，所有的客户端都会接到通知去争抢锁，此时就出现了羊群效应。

而本文章等...]]></description><category></category></item><item><title><![CDATA[使用雪花算法为分布式下全局ID、订单号等简单解决方案考虑到时钟回拨]]></title><link>https://blog.youkuaiyun.com/ycb1689/article/details/89331634</link><guid>https://blog.youkuaiyun.com/ycb1689/article/details/89331634</guid><author>ycb1689</author><pubDate>Tue, 16 Apr 2019 14:18:51 +0800</pubDate><description><![CDATA[1.snowflake简介
互联网快速发展的今天，分布式应用系统已经见怪不怪，在分布式系统中，我们需要各种各样的ID，既然是ID那么必然是要保证全局唯一，除此之外，不同当业务还需要不同的特性，比如像并发巨大的业务要求ID生成效率高，吞吐大；比如某些银行类业务，需要按每日日期制定交易流水号；又比如我们希望用户的ID是随机的，无序的，纯数字的，且位数长度是小于10位的。等等，不同的业务...]]></description><category></category></item><item><title><![CDATA[高效、高并发的分布式ID生成器解决方案]]></title><link>https://blog.youkuaiyun.com/ycb1689/article/details/89326598</link><guid>https://blog.youkuaiyun.com/ycb1689/article/details/89326598</guid><author>ycb1689</author><pubDate>Tue, 16 Apr 2019 09:41:38 +0800</pubDate><description><![CDATA[ID生成器是指能产生不重复ID服务的程序，在后台开发过程中，尤其是分布式服务、微服务程序开发过程中，经常会用到，例如，为用户的每个请求产生一个唯一ID、为每个消息产生一个ID等等，ID生成器也是进行无状态服务开发的重要需求之一。

ID生成器有其特殊要求：

（1）产生的ID不能重复，在任何情况下产生的ID都不能重复，例如：在ID生成器程序重启之后，ID生成器产生的新ID不能与重启之前产生...]]></description><category></category></item><item><title><![CDATA[分布式防重复提交token设计]]></title><link>https://blog.youkuaiyun.com/ycb1689/article/details/89305558</link><guid>https://blog.youkuaiyun.com/ycb1689/article/details/89305558</guid><author>ycb1689</author><pubDate>Mon, 15 Apr 2019 20:22:19 +0800</pubDate><description><![CDATA[大型互联网项目中，很多流量都达到亿级。同一时间很多的人在使用，而每个用户提交表单的时候都可能会出现重复点击的情况，此时如果不做好控制，那么系统将会产生很多的数据重复的问题。怎样去设计一个高可用的防重复提交方案呢？

具体问题争论点如下：

  1.用户在提交数据后，很多时候总会有重复提交（商城秒抢活动更甚，几乎不可用）

  2.系统每天宕机好几次（后经代码+服务器数据分析，a各种流没使用...]]></description><category></category></item><item><title><![CDATA[jvm参数陷阱]]></title><link>https://blog.youkuaiyun.com/ycb1689/article/details/89155023</link><guid>https://blog.youkuaiyun.com/ycb1689/article/details/89155023</guid><author>ycb1689</author><pubDate>Tue, 09 Apr 2019 17:05:41 +0800</pubDate><description><![CDATA[-XX:MaxTenuringThreshold

-XX:MaxTenuringThreshold只对串行回收器和ParNew有效，对ParallGC无效。存活次数在串行和ParNew方式中可通过-XX:MaxTenuringThreshold来设置，ParallelScavenge则根据运行状态来决定。

-XX:PretenureSizeThreshold

-XX:PretenureSiz...]]></description><category></category></item><item><title><![CDATA[nginx配置详解及如何解决跨域、GEO白名单、限速、限流(防止DDOS攻击)]]></title><link>https://blog.youkuaiyun.com/ycb1689/article/details/88916240</link><guid>https://blog.youkuaiyun.com/ycb1689/article/details/88916240</guid><author>ycb1689</author><pubDate>Sat, 30 Mar 2019 17:53:34 +0800</pubDate><description><![CDATA[本配置中有些功能是在window下测试，而由于windows下nginx好像对有些功能有限制，所以只做了名词功能标注，功能注释了


##定义nginx运行的用户各用户组
#user  nobody;
##nginx进程数，建议设置与cpu核心数一致
worker_processes  1;
#windows下好像不支持
#worker_cpu_affinity 00000001 00000010...]]></description><category></category></item><item><title><![CDATA[Spring-session(spring-session-data-redis)实现分布式下Session共享]]></title><link>https://blog.youkuaiyun.com/ycb1689/article/details/88529965</link><guid>https://blog.youkuaiyun.com/ycb1689/article/details/88529965</guid><author>ycb1689</author><pubDate>Wed, 13 Mar 2019 12:58:39 +0800</pubDate><description><![CDATA[由于公司项目是单节点的，同事在开发过程中并未做Session共享，由于流量上升后，领导未经过了解直接加机器、加节点；大家可想而知了，项目中运行过程出现很多问题，经过同事们系列排查，才知道是由于上面原因导致拿不到Session。

大家在项目采用Spring-Session时一定要注意项目中Spring的版本，否则会给你带成很多坑，首先，Spring-Session所需的最低SPring版本是3.2...]]></description><category></category></item><item><title><![CDATA[Java多线程系列--“JUC线程池”06之 Callable和Future]]></title><link>https://blog.youkuaiyun.com/ycb1689/article/details/88219635</link><guid>https://blog.youkuaiyun.com/ycb1689/article/details/88219635</guid><author>ycb1689</author><pubDate>Wed, 06 Mar 2019 09:55:18 +0800</pubDate><description><![CDATA[概要

本章介绍线程池中的Callable和Future。

Callable 和 Future 简介

　　Callable 和 Future 是比较有趣的一对组合。当我们需要获取线程的执行结果时，就需要用到它们。Callable用于产生结果，Future用于获取结果。

1. Callable

Callable 是一个接口，它只包含一个call()方法。Callable是一个返回结果并且可能...]]></description><category></category></item><item><title><![CDATA[Java多线程系列--“JUC线程池”05之 线程池原理(四)]]></title><link>https://blog.youkuaiyun.com/ycb1689/article/details/88176702</link><guid>https://blog.youkuaiyun.com/ycb1689/article/details/88176702</guid><author>ycb1689</author><pubDate>Wed, 06 Mar 2019 09:51:30 +0800</pubDate><description><![CDATA[概要

本章介绍线程池的拒绝策略。内容包括：

拒绝策略介绍

线程池的拒绝策略，是指当任务添加到线程池中被拒绝，而采取的处理措施。
当任务添加到线程池中之所以被拒绝，可能是由于：第一，线程池异常关闭。第二，任务数量超过线程池的最大限制。

线程池共包括4种拒绝策略，它们分别是：AbortPolicy,CallerRunsPolicy,DiscardOldestPolicy和DiscardPo...]]></description><category></category></item><item><title><![CDATA[Java多线程系列--“JUC线程池”04之 线程池原理(三)]]></title><link>https://blog.youkuaiyun.com/ycb1689/article/details/88176624</link><guid>https://blog.youkuaiyun.com/ycb1689/article/details/88176624</guid><author>ycb1689</author><pubDate>Tue, 05 Mar 2019 12:34:10 +0800</pubDate><description><![CDATA[本章介绍线程池的生命周期。在&quot;Java多线程系列--“基础篇”01之 基本概念&quot;中，我们介绍过，线程有5种状态：新建状态，就绪状态，运行状态，阻塞状态，死亡状态。线程池也有5种状态；然而，线程池不同于线程，线程池的5种状态是：Running,SHUTDOWN,STOP,TIDYING,TERMINATED。


线程池状态定义代码如下：




private final AtomicI...]]></description><category></category></item></channel></rss>