自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (2)
  • 收藏
  • 关注

原创 多线程之ThreadLocal原理分析

ThreadLocal使用场景源码分析setgetThreadLocalMap3种引用强引用内存泄漏使用场景ThreadLocal提供了线程独有的局部变量,可以在整个线程存活的过程中随时取用,极大地方便了一些逻辑的实现。常见的ThreadLocal用法有:1.存储单个线程上下文信息。一次request中可以将一些用户信息存到ThreadLocal中,在业务处理是可以随时获取。2.使变量线程安全。变量既然成为了每个线程内部的局部变量,自然就不会存在并发问题了;3.减少参数传递。比如做一个trace工

2021-02-28 22:48:41 142

原创 java基础Synchronized底层monitor

synchronized底层使用monitor来控制锁的活动。了解monitor中的各个属性值的含义,锁的竞争流程。ObjectMonitor主要数据结构如下:

2021-02-25 18:27:34 2040 2

原创 java基础ReentrantLock和AQS同步队列

ReentrantLock和AQS同步队列ReentrantLock同步队列(AQS)ReentrantLock#lock()NonfairSync#lock()AQS#compareAndSetStateAQS#acquireSync#nonfairTryAcquire 非公平锁Sync#fairTryAcquire 公平锁AQS#addWaiter(Node)AQS#acquireQueuedparkAndCheckInterruptReentrantLock#unlock()unparkSuccess

2021-02-23 17:32:57 722 1

原创 java基础Synchronized原理及逃逸分析

Synchronized用法锁升级无锁identity hashcodeagebiased locklock偏向锁轻量级锁重量级锁用法synchronized可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码。synchronized有三种应用方式:作用于实例方法,当前实例加锁,进入同步代码前要获得当前实例的锁;作用于静态方法,当前类加锁,进去同步代码前要获得当前类对象的锁;作用于代码块,对括号里配置的对象加锁。锁升级在说锁升级前时先

2021-02-22 11:29:30 326

原创 java基础之ConcurrentHashMap1.8(一)

put方法public V put(K key, V value) { return putVal(key, value, false); } /** Implementation for put and putIfAbsent */ final V putVal(K key, V value, boolean onlyIfAbsent) { if (key == null || value == null) throw new NullPoint

2021-02-20 15:24:25 193

原创 java基础之HashMap

Map相关问题总结HashMap1.7数组+链表头插1.8数组+链表+红黑树尾插扩容机制LoadFactory 默认0.75创建一个空数组重新HashHash公式跟长度有关线程不安全2的幂次方便位运算均匀分布

2021-02-19 17:26:18 90

原创 Nginx limit_req_zone限流实战

1.基本配置根据ip限流主要用到limit_req_zone模块,下面分别对两个接口做了不同规则的限流,配置代码如下:http{limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;limit_req_zone $binary_remote_addr zone=two:10m rate=60r/m; server { # zone要和上方声明的对应 location /search/ { limit_re

2021-02-05 18:20:06 851

原创 【转自公众号】spring的重试机制,可用用于io超时

概要Spring实现了一套重试机制,功能简单实用。Spring Retry是从Spring Batch独立出来的一个功能,已经广泛应用于Spring Batch,Spring Integration, Spring for Apache Hadoop等Spring项目。本文将讲述如何使用Spring Retry及其实现原理。背景重试,其实我们其实很多时候都需要的,为了保证容错性,可用性,一致性等。一般用来应对外部系统的一些不可预料的返回、异常等,特别是网络延迟,中断等情况。还有在现在流行的微服务

2020-12-14 15:14:45 120

原创 discard long time none received connection

记一次com.alibaba.druid的bug背景服务从springboot1.5升级到spring boot 2.x时 报连接错误,应该是druid 1.0.x版本不支持springboot2.x版本,所以用了druid1.2.1。果然启动和使用都正常了。但运行一段时间有报下列错误[2020-10-21 15:53:24:008][service-courseware-processer-pic][] [ERROR] - com.alibaba.druid.pool.DruidAbstractD

2020-10-22 14:46:22 3225 1

原创 记一次DDOS攻击

发生在测试环境,有外网域名。客户端同学反映接口不能请求,看了下日志没有错误,重启了一下可以正常启动。过了一段时间又不能访问了,开始排查nginx日志。发现一瞬间有大量的请求响应码为404,之后我们的请求响应499。因为测试环境跑了多个服务,内存使用率较高98%,考虑是不是内存不足引起的开始做服务迁移,将我的服务迁走并且nginx转发的新服务,观察一段时间。好景不长,第二天又挂了。说明不是内存的问题,再看nginx日志发现还是一样的情况,大量的请求,其中不乏sql注入,env,secret

2020-09-28 17:32:51 622

原创 java基础之UDP,TCP

tcp3次,4次握手seq:初始序列号由自己定,而后绪的序列号由对端的 ACK 决定:SN_x = ACK_y (x 的序列号 = y 发给 x 的 ACK)Acknowledgment Numbe:称为「确认序列号」。确认序列号是接收确认端所期望收到的下一序列号。确认序号应当是上次已成功收到数据字节序号加1,只有当标志位中的 ACK 标志为 1 时该确认序列号的字段才有效。主要用来解决不...

2020-05-13 18:05:51 153

原创 java基础之finally训练

1、不管有没有出现异常,finally块中代码都会执行;2、当try和catch中有return时,finally仍然会执行;3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,不管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;4、finally中最好不要包含...

2020-05-13 18:05:01 125

转载 一致性hash在 redis中应用

1.ShardedJedis内部实现首先我们来看一下ShardedJedis的一个继承关系 看完了图,那么我们一步一步跟着我们的代码调用来看,以我们最简单的 ShardedJedis.get(key)方法为例: public String get(String key) { Jedis j = getShard(key); return j.get(key)...

2018-09-12 15:19:04 357

原创 一致性hash java实现

前言之前讲了 一致性hash算法的原理,现在撸代码。环的数据结构,可能首先想到的是常用的List。一致性hash需要找比当前元素大的节点,那么list要么排好序然后比较找到对应的节点,要么是不排序直接遍历算差值。显然在这种查找比较频繁的场景树结构更适合,所以我们用有序的树结构TreeMap。 节点的hash冲突时我们再取一次hash值/**一致性hash * Created by ...

2018-09-11 12:53:43 653

原创 了解一致性HASH算法

Hash取余算法适合在项目初期使用流量少的时候使用。比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的 hash 值,然后均匀的映射到到 N 个 cache ,list.get(hash(object)%n);图 1-1如图1-1中,有3个cache,...

2018-09-08 19:47:00 160

转载 Hibernate多对多查询

一个老师教许多学生,一个学生被许多老师教,一个学生有好多书,同一种书被许多同学拥有.要查询教拥有书"a"的学生的老师!HQL如何写呀?如何取值?class Teacher{String id;String name;Set students;}class Student{String id;String name;Set teachers;Set b

2015-06-17 15:16:37 222

转载 严重: IOException while loading persisted sessions: java.io.EOFException

tomcat在启动时出现如下异常问题:        严重: IOException while loading persisted sessions: java.io.EOFException        严重: Exception loading sessions from persistent storage        分析:EOFException表示输入过程中意

2015-06-17 15:04:34 185

转载 Java静态代码块(static block)调用陷阱小记

Java 中的static代码块并不一定会被调用。设两个含静态方法和静态块的两个类(父类Base 子类Extend)static块要写在public类里,所以两个类要写在单独的两个.java文件里//父类public class Base { public static String who = "Mr. Base"; Base(){

2015-06-02 17:08:04 227

转载 java定时任务,每天定时执行任务

public class TimerManager { //时间间隔 private static final long PERIOD_DAY = 24 * 60 * 60 * 1000; public TimerManager() { Calendar calendar = Calendar.getInstance(); /*** 定制每日2:00执行

2015-05-29 15:19:29 167

Ext4 desktop

Ext4 desktop ,有图标拖动,桌面挂件,右键,换背景,换主题,不规则图片,等一系列拓展功能,代码无错,无后台代码,分不够的可联系我。

2015-04-14

服装销售公司分销资源计划(DRP)系统

服装销售公司分销资源计划(DRP)系统的设计及实现

2012-11-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除