- 博客(464)
- 资源 (26)
- 收藏
- 关注
原创 ThreadLocal原理及内存泄露
前言在介绍ThreadLocal之前,先说两个概念内存泄露与内存溢出: 内存泄漏memory leak:是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。 内存溢出 out of memory:没内存可以分配给新的对象了。 强引用: 不会被回收的内存。 软引用: 内部不足的时候回收的内存。 弱引用: 存活到垃圾回收前的内存。Thr...
2020-06-19 09:33:51
1006
原创 Linux十字病毒查杀处理
https://blog.51cto.com/ixdba/2163018一、现象接到客户的电话,说自己的云服务器被提供商禁止访问了,原因是监测到网络流量暴满,服务器不停的向外发包,在确认客户没有业务量突增的情况下,初步判断可能服务器遭受了流量攻&击(DDOS),不过按照常理来说,客户的业务系统就是一个小的web系统,平时流量不大,影响力也一般,不至于遭受DDOs,带着这些疑问...
2020-02-12 14:53:07
765
1
原创 使用shell脚本实现自动SSH互信功能(免密登录)
说假设有一个1000台节点的Hadoop集群,要配置节点之间的SSH免密码登录,该如何用shell脚本实现?#!/bin/expect #循环1000台机器的IP地址,生成密钥文件authorized_keys for ip in {cat ip.list}do ssh user@$ip ssh-keygen -t rsa &>/dev/null e...
2020-02-12 14:11:37
1420
原创 nginx 查看每秒有多少访问量
nginx访问量统计1.根据访问IP统计UVawk ‘{print $1}’ access.log|sort | uniq -c |wc -l2.统计访问URL统计PVawk ‘{print $7}’ access.log|wc -l3.查询访问最频繁的URLawk ‘{print $7}’ access.log|sort | uniq -c |sort -n -k 1 -...
2019-08-17 17:09:42
1275
原创 微信小程序、公众号内嵌H5页面调用微信扫一扫
小程序内嵌H5调用微信扫一扫的功能,通过小程序webview来实现,具体方法与思路代码如下:但是,小程序踩坑之路并没有结束。在公众号网页中通过配置APPID和appsecret可以正常调起微信扫一扫,但是,如何在小程序webview中调用扫一扫?扫描之后数据如何处理?小程序页面处理?还是传递给H5页面处理?无奈之下,只得另寻他法。网上有人说,可以在H5页面使用wx.miniProgram....
2019-06-29 16:26:04
11507
4
原创 java通过Exchange协议发送邮件
1、由于公司邮箱采用微软的,所以之前使用STMP协议发送业务告知邮件的业务代码需要变更。首先需要在项目引入以下Jar包 <!-- 微软邮箱 --> <dependency> <groupId>com.microsoft.ews-java-api</groupId> <artifactId>ews-java-api&l...
2019-05-27 17:53:10
13078
7
原创 采用Redis、Java的BitSet布隆过滤器去重
BloomFilter算法及其适用场景 BloomFilter是利用类似位图或者位集合数据结构来存储数据,利用位数组来简洁的表示一个集合,并且能够快速的判断一个元素是不是已经存在于这个集合。因为基于Hash来计算数据所在位置,所以BloomFilter的添加和查询操作都是O(1)的。因为存储简洁,这种数据结构能够利用较少的内存来存储海量的数据。那么,还有这种时间和空间两全其美的算法?当然不是...
2019-05-05 17:41:48
3063
原创 jmap、jstack、jps无法连接jvm解决办法
一、背景在对线上服务器的java应用dump操作时发现,以下报错,不能dump。jps也获取不到java进程的pid。# jmap -dump:file=/data/dump/jvm_en.hprof 2017620176: Unable to open socket file: target process not responding or HotSpot VM not loade...
2019-04-29 11:22:52
1602
原创 JVM性能调优及线上故障问题排查步骤
一、发现问题下面是线上机器的cpu使用率,可以看到从4月8日开始,随着时间cpu使用率在逐步增高,最终使用率达到100%导致线上服务不可用,后面重启了机器后恢复。二、排查思路简单分析下可能出问题的地方,分为5个方向:系统本身代码问题 内部下游系统的问题导致的雪崩效应 上游系统调用量突增 http请求第三方的问题 机器本身的问题三、开始排查查看日志,没有发现集中的错...
2019-04-29 11:22:11
4520
2
原创 Zookeeper实现可重入分布式锁
原理见快速理解Zookeeper实现分布锁的原理及代码实现抽象的OrderService接口:public interface OrderService { void createOrder();}订单号生成类(模拟公共资源ps:需要用锁的地方):import java.text.SimpleDateFormat;import java.util.Date;...
2019-04-18 15:36:43
1078
原创 快速理解Zookeeper实现分布锁的原理及代码实现
如何用Zookeeper实现分布式锁?网上好多采用ZK实现分布式锁都只能够应付一般使用场景,但存在着如下两个问题:1、锁的获取顺序和最初客户端争抢顺序不一致,这不是一个公平锁。每次锁获取都是当次最先抢到锁的客户端。2、羊群效应,所有没有抢到锁的客户端都会监听/exlusive_lock变更。当并发客户端很多的情况下,所有的客户端都会接到通知去争抢锁,此时就出现了羊群效应。而本文章等...
2019-04-18 11:46:04
689
原创 使用雪花算法为分布式下全局ID、订单号等简单解决方案考虑到时钟回拨
1.snowflake简介互联网快速发展的今天,分布式应用系统已经见怪不怪,在分布式系统中,我们需要各种各样的ID,既然是ID那么必然是要保证全局唯一,除此之外,不同当业务还需要不同的特性,比如像并发巨大的业务要求ID生成效率高,吞吐大;比如某些银行类业务,需要按每日日期制定交易流水号;又比如我们希望用户的ID是随机的,无序的,纯数字的,且位数长度是小于10位的。等等,不同的业务...
2019-04-16 14:18:51
7421
1
原创 高效、高并发的分布式ID生成器解决方案
ID生成器是指能产生不重复ID服务的程序,在后台开发过程中,尤其是分布式服务、微服务程序开发过程中,经常会用到,例如,为用户的每个请求产生一个唯一ID、为每个消息产生一个ID等等,ID生成器也是进行无状态服务开发的重要需求之一。ID生成器有其特殊要求:(1)产生的ID不能重复,在任何情况下产生的ID都不能重复,例如:在ID生成器程序重启之后,ID生成器产生的新ID不能与重启之前产生...
2019-04-16 09:41:38
894
原创 分布式防重复提交token设计
大型互联网项目中,很多流量都达到亿级。同一时间很多的人在使用,而每个用户提交表单的时候都可能会出现重复点击的情况,此时如果不做好控制,那么系统将会产生很多的数据重复的问题。怎样去设计一个高可用的防重复提交方案呢?具体问题争论点如下: 1.用户在提交数据后,很多时候总会有重复提交(商城秒抢活动更甚,几乎不可用) 2.系统每天宕机好几次(后经代码+服务器数据分析,a各种流没使用...
2019-04-15 20:22:19
684
原创 jvm参数陷阱
-XX:MaxTenuringThreshold-XX:MaxTenuringThreshold只对串行回收器和ParNew有效,对ParallGC无效。存活次数在串行和ParNew方式中可通过-XX:MaxTenuringThreshold来设置,ParallelScavenge则根据运行状态来决定。-XX:PretenureSizeThreshold-XX:PretenureSiz...
2019-04-09 17:05:41
761
原创 nginx配置详解及如何解决跨域、GEO白名单、限速、限流(防止DDOS攻击)
本配置中有些功能是在window下测试,而由于windows下nginx好像对有些功能有限制,所以只做了名词功能标注,功能注释了##定义nginx运行的用户各用户组#user nobody;##nginx进程数,建议设置与cpu核心数一致worker_processes 1;#windows下好像不支持#worker_cpu_affinity 00000001 00000010...
2019-03-30 17:53:34
1398
原创 Spring-session(spring-session-data-redis)实现分布式下Session共享
由于公司项目是单节点的,同事在开发过程中并未做Session共享,由于流量上升后,领导未经过了解直接加机器、加节点;大家可想而知了,项目中运行过程出现很多问题,经过同事们系列排查,才知道是由于上面原因导致拿不到Session。大家在项目采用Spring-Session时一定要注意项目中Spring的版本,否则会给你带成很多坑,首先,Spring-Session所需的最低SPring版本是3.2...
2019-03-13 12:58:39
5487
原创 Java多线程系列--“JUC线程池”06之 Callable和Future
概要本章介绍线程池中的Callable和Future。Callable 和 Future 简介 Callable 和 Future 是比较有趣的一对组合。当我们需要获取线程的执行结果时,就需要用到它们。Callable用于产生结果,Future用于获取结果。1. CallableCallable 是一个接口,它只包含一个call()方法。Callable是一个返回结果并且可能...
2019-03-06 09:55:18
311
原创 Java多线程系列--“JUC线程池”05之 线程池原理(四)
概要本章介绍线程池的拒绝策略。内容包括:拒绝策略介绍线程池的拒绝策略,是指当任务添加到线程池中被拒绝,而采取的处理措施。当任务添加到线程池中之所以被拒绝,可能是由于:第一,线程池异常关闭。第二,任务数量超过线程池的最大限制。线程池共包括4种拒绝策略,它们分别是:AbortPolicy,CallerRunsPolicy,DiscardOldestPolicy和DiscardPo...
2019-03-06 09:51:30
189
原创 Java多线程系列--“JUC线程池”04之 线程池原理(三)
本章介绍线程池的生命周期。在"Java多线程系列--“基础篇”01之 基本概念"中,我们介绍过,线程有5种状态:新建状态,就绪状态,运行状态,阻塞状态,死亡状态。线程池也有5种状态;然而,线程池不同于线程,线程池的5种状态是:Running,SHUTDOWN,STOP,TIDYING,TERMINATED。线程池状态定义代码如下:private final AtomicI...
2019-03-05 12:34:10
192
原创 Java多线程系列--“JUC线程池”03之 线程池原理(二)
概要在前面一章"Java多线程系列--“JUC线程池”02之 线程池原理(一)"中介绍了线程池的数据结构,本章会通过分析线程池的源码,对线程池进行说明。内容包括:线程池示例在分析线程池之前,先看一个简单的线程池示例。import java.util.concurrent.Executors;import java.util.concurrent.ExecutorServi...
2019-03-05 12:31:17
129
原创 Java多线程系列--“JUC线程池”02之 线程池原理(一)
概要在上一章"Java多线程系列--“JUC线程池”01之 线程池架构"中,我们了解了线程池的架构。线程池的实现类是ThreadPoolExecutor类。本章,我们通过分析ThreadPoolExecutor类,来了解线程池的原理。内容包括:ThreadPoolExecutor简介ThreadPoolExecutor是线程池类。对于线程池,可以通俗的将它理解为"存放一定数量线...
2019-03-05 12:27:05
173
原创 Java多线程系列--“JUC线程池”01之 线程池架构
概要前面分别介绍了"Java多线程基础"、"JUC原子类"和"JUC锁"。本章介绍JUC的最后一部分的内容——线程池。内容包括:线程池架构图线程池的架构图如下:1. Executor它是"执行者"接口,它是来执行任务的。准确的说,Executor提供了execute()接口来执行已提交的 Runnable 任务的对象。Executor存在的目的是提供一种将"任务提交...
2019-03-05 11:47:24
176
转载 Java多线程系列--“JUC集合”10之 ConcurrentLinkedQueue
概要本章对Java.util.concurrent包中的ConcurrentHashMap类进行详细的介绍。内容包括:ConcurrentLinkedQueue介绍ConcurrentLinkedQueue是线程安全的队列,它适用于“高并发”的场景。它是一个基于链接节点的无界线程安全队列,按照 FIFO(先进先出)原则对元素进行排序。队列元素中不可以放置null元素(内部实现...
2019-03-05 11:29:10
253
原创 Java多线程系列--“JUC集合”09之 LinkedBlockingDeque
概要本章介绍JUC包中的LinkedBlockingDeque。内容包括:LinkedBlockingDeque介绍LinkedBlockingDeque是双向链表实现的双向并发阻塞队列。该阻塞队列同时支持FIFO和FILO两种操作方式,即可以从队列的头和尾同时操作(插入/删除);并且,该阻塞队列是支持线程安全。此外,LinkedBlockingDeque还是可选容量的(防...
2019-03-05 11:24:37
188
原创 Java多线程系列--“JUC集合”08之 LinkedBlockingQueue
概要本章介绍JUC包中的LinkedBlockingQueue。内容包括:LinkedBlockingQueue介绍LinkedBlockingQueue是一个单向链表实现的阻塞队列。该队列按 FIFO(先进先出)排序元素,新元素插入到队列的尾部,并且队列获取操作会获得位于队列头部的元素。链接队列的吞吐量通常要高于基于数组的队列,但是在大多数并发应用程序中,其可预知的性能要低。...
2019-03-05 11:20:47
232
转载 Java多线程系列--“JUC集合”07之 ArrayBlockingQueue
概要本章对Java.util.concurrent包中的ArrayBlockingQueue类进行详细的介绍。内容包括:ArrayBlockingQueue介绍ArrayBlockingQueue是数组实现的线程安全的有界的阻塞队列。线程安全是指,ArrayBlockingQueue内部通过“互斥锁”保护竞争资源,实现了多线程对竞争资源的互斥访问。而有界,则是指ArrayBl...
2019-03-05 11:15:29
195
转载 Java多线程系列--“JUC集合”06之 ConcurrentSkipListSet
概要本章对Java.util.concurrent包中的ConcurrentSkipListSet类进行详细的介绍。内容包括:ConcurrentSkipListSet介绍ConcurrentSkipListSet是线程安全的有序的集合,适用于高并发的场景。ConcurrentSkipListSet和TreeSet,它们虽然都是有序的集合。但是,第一,它们的线程安全机制不同,...
2019-03-05 11:09:51
237
转载 Java多线程系列--“JUC集合”05之 ConcurrentSkipListMap
概要本章对Java.util.concurrent包中的ConcurrentSkipListMap类进行详细的介绍。内容包括:ConcurrentSkipListMap介绍ConcurrentSkipListMap是线程安全的有序的哈希表,适用于高并发的场景。ConcurrentSkipListMap和TreeMap,它们虽然都是有序的哈希表。但是,第一,它们的线程安全机制不...
2019-03-05 11:04:21
374
原创 Java多线程系列--“JUC集合”04之 ConcurrentHashMap
概要本章是JUC系列的ConcurrentHashMap篇。内容包括:ConcurrentHashMap介绍ConcurrentHashMap是线程安全的哈希表。HashMap,Hashtable, ConcurrentHashMap之间的关联如下: HashMap是非线程安全的哈希表,常用于单线程程序中。 HashMap是线程安全的哈希表,它是通过sync...
2019-03-04 17:05:00
239
原创 Java多线程系列--“JUC集合”03之 CopyOnWriteArraySet
概要本章是JUC系列中的CopyOnWriteArraySet篇。接下来,会先对CopyOnWriteArraySet进行基本介绍,然后再说明它的原理,接着通过代码去分析,最后通过示例更进一步的了解CopyOnWriteArraySet。内容包括:CopyOnWriteArraySet介绍它是线程安全的无序的集合,可以将它理解成线程安全的HashSet。有意思的是,CopyOnWrit...
2019-03-04 16:55:18
199
转载 Java多线程系列--“JUC集合”02之 CopyOnWriteArrayList
概要本章是"JUC系列"的CopyOnWriteArrayList篇。接下来,会先对CopyOnWriteArrayList进行基本介绍,然后再说明它的原理,接着通过代码去分析,最后通过示例更进一步的了解CopyOnWriteArrayList。内容包括:CopyOnWriteArrayList介绍它相当于线程安全的ArrayList。和ArrayList一样,它是个可变数组;但是和A...
2019-03-04 16:49:06
263
原创 Java多线程系列--“JUC集合”01之 框架
概要之前,在"Java 集合系列目录(Category)"中,讲解了Java集合包中的各个类。接下来,将展开对JUC包中的集合进行学习。在学习之前,先温习一下"Java集合包"。本章内容包括:Java集合包在“Java 集合系列01之 总体框架”中,介绍java集合的架构。主体内容包括Collection集合和Map类;而Collection集合又可以划分为List(队列)和...
2019-03-04 16:40:07
199
原创 Java多线程系列--“JUC锁”11之 Semaphore信号量的原理和示例
概要本章,我们对JUC包中的信号量Semaphore进行学习。内容包括:Semaphore简介Semaphore是一个计数信号量,它的本质是一个"共享锁"。信号量维护了一个信号量许可集。线程可以通过调用acquire()来获取信号量的许可;当信号量中有可用的许可时,线程能获取该许可;否则线程必须等待,直到有可用的许可为止。 线程可以通过release()来释放它所持有的信号...
2019-03-04 16:18:50
256
原创 Java多线程系列--“JUC锁”10之 CyclicBarrier原理和示例
概要本章介绍JUC包中的CyclicBarrier锁。内容包括:CyclicBarrier简介CyclicBarrier是一个同步辅助类,允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。因为该 barrier在释放等待线程后可以重用,所以称它为循环 的 barrier。注意比较CountDownLatch和CyclicBarr...
2019-03-04 16:05:03
194
原创 Java多线程系列--“JUC锁”09之 CountDownLatch原理和示例
概要前面对"独占锁"和"共享锁"有了个大致的了解;本章,我们对CountDownLatch进行学习。和ReadWriteLock.ReadLock一样,CountDownLatch的本质也是一个"共享锁"。本章的内容包括:CountDownLatch简介CountDownLatch是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。Cou...
2019-03-04 15:58:05
180
原创 Java多线程系列--“JUC锁”08之 共享锁和ReentrantReadWriteLock
概要Java的JUC(java.util.concurrent)包中的锁包括"独占锁"和"共享锁"。在“Java多线程系列--“JUC锁”02之 互斥锁ReentrantLock”中,对Java的独占锁进行了说明。本章对Java的“共享锁”进行介绍,JUC中的共享锁有CountDownLatch, CyclicBarrier, Semaphore, ReentrantReadWriteLoc...
2019-03-04 15:53:16
313
原创 Java多线程系列--“JUC锁”07之 LockSupport
概述本章介绍JUC(java.util.concurrent)包中的LockSupport。内容包括:LockSupport介绍LockSupport是用来创建锁和其他同步类的基本线程阻塞原语。LockSupport中的park() 和 unpark() 的作用分别是阻塞线程和解除阻塞线程,而且park()和unpark()不会遇到“Thread.suspend 和 Thread...
2019-03-04 15:29:09
205
原创 Java多线程系列--“JUC锁”06之 Condition条件
概要前面对JUC包中的锁的原理进行了介绍,本章会JUC中对与锁经常配合使用的Condition进行介绍,内容包括:Condition介绍Condition的作用是对锁进行更精确的控制。Condition中的await()方法相当于Object的wait()方法,Condition中的signal()方法相当于Object的notify()方法,Condition中的signalAl...
2019-03-04 15:23:05
155
原创 Java多线程系列--“JUC锁”05之 非公平锁
概要前面两章分析了"公平锁的获取和释放机制",这一章开始对“非公平锁”的获取锁/释放锁的过程进行分析。内容包括参考代码下面给出Java1.7.0_40版本中,ReentrantLock和AQS的源码,仅供参考!ReentranLock.javaAQS(AbstractQueuedSynchronizer.java)获取非公平锁(基于JDK1.7.0_40)非...
2019-03-02 15:55:05
150
Swing下CS结构软件自动升级实现
2012-10-16
java处理GIF文件格式时进行相关分析的类
2012-10-15
Java_TCPIP_Socket编程
2012-09-26
良好体验度的注册系统ASP.NET版本
2008-12-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人