- 博客(13)
- 资源 (7)
- 收藏
- 关注

原创 Netty 的线程模型
要想开发一个高性能的TCP服务器,熟悉所使用框架的线程模型非常重要。Netty本身都是高性能的网络框架,如果再搭配上高效率的代码,才能实现一个高大上的服务器。但是如果不了解它们的线程模型,就很难写出高性能的代码。框架本身效率再高,程序写的太差,那么服务器整体的性能也不会太高。就像一个电脑,CPU再好,内存小硬盘慢散热差,整体的性能也不会太高。玩过Android开发的同学会知道,在Android应用中有一个非常重要线程:UI线程(即主线程)。UI线程是负责一个Android的界面显示以及和用户交互。Act
2021-02-18 11:20:59
232

原创 Java中如何唤醒“指定的“线程
熟悉线程操作的小伙伴应该知道,Java中线程的挂起和唤醒一般用synchronized + wait + notify完成。比如:synchronized(o) { o.wait(); //wait状态}在其他线程中o.notify(),就可以唤醒在o上wait的线程。可是如果o上有多个线程wait,是没有办法唤醒“指定”的某个线程的。不过,Java6之后,转机来了,Java6引入了LockSupport这个类,好了,废话不多说,我们直接上代码:public class Test
2021-02-16 22:41:15
2753

原创 利用 Redis 实现代码零侵入、高性能和安全的分布锁
针对高并发程序的设计而言,分布式锁是不可或缺的功能,特别是用户大量的操作、流量涌进来以后,看似运行稳定的程序却因为没有分布锁而导致物品超卖或一人多个订单的情况发生,而有的同学在系统中可能也使用了分布锁,但是每隔一段时间就会导致死锁或者出现根本拦不住的情况,视分布式锁如无物,关键是问题还偶然性的发生,花了大量的时间看日志、测试,但都一无所获,本场 Chat 将解密分布锁以上发生问题的原因和解决办法,...
2020-03-09 13:54:22
173

原创 设计模式思维拓展与实战:策略模式
“我明明学了那么多的设计模式,怎么转头就忘?”;“设计模式那么多,我该用哪一种?”;“设计模式太难了,我还是继续堆积我的代码吧,虽然扩展起来比较麻烦,复制、粘贴嘛”。如果您有类似的困惑,那么这篇文章将很适合您阅读,学会了概念不代表真正的掌握了它,只有实战才能真正的加深我们对设计模式的理解,从而让我们的程序更加的健壮、优美和富有生命力,远离复制、粘贴吧,因为您是一位优秀的软件开发人员,本场 Chat...
2020-03-08 22:54:10
185

转载 redisson分布式锁的实现
最近由于工作很忙,很长时间没有更新博客了,今天为大家带来一篇有关Redisson实现分布式锁的文章,好了,不多说了,直接进入主题。1. 可重入锁(Reentrant Lock)Redisson的分布式可重入锁RLock Java对象实现了java.util.concurrent.locks.Lock接口,同时还支持自动过期解锁。[java] view
2017-11-13 18:25:12
958
原创 ThreadLocal的用法以及为什么要使用它?
首先我们来说一下ThreadLocal的含义, Thread线程,Local本地,线程本地到底是什么意思呢?我们来看下面这个小程序。public class ThreadLocal1 { volatile static Person p = new Person(); public static void main(String[] args) { new Thread(()->{ try { TimeUnit.SECONDS.
2021-02-21 08:18:22
700
原创 java并发的选择
1、控制并发线程数的用Semaphore2、线程之间的数据交换用Exchanger3、等待多线程完成的CountDownLatch4、同步屏障CyclicBarrier
2017-11-10 16:02:06
169
原创 java并发信号量Semaphore
package com.blocking;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Semaphore;public class ArrayCopy {public static
2017-11-10 15:18:59
195
转载 linux redHat 安装jdk
用root登录一、系统环境操作系统: RedHat Enterprise Linux server 5.4(rhel 5.4)二、安装JDK1. 从www.oracle.com下载最新的Java SE Development Kit 7 jdk-7-linux-i586.rpm2. 将JDK安装文件jdk-7-linux-i58
2017-02-21 17:25:53
890
原创 jquery设置easyui校验
//JQuery EasyUI 动态改变表单项的验证规则$(document).ready(function(){ $('#FILE_QUALITY').combobox({ onChange:function(newValue,oldValue){ if(newValue == 2){ $('#FRONT_FOR_
2016-11-21 16:40:00
618
转载 java并发 分布式锁
Redis有一系列的命令,特点是以NX结尾,NX是Not eXists的缩写,如SETNX命令就应该理解为:SET if Not eXists。这系列的命令非常有用,这里讲使用SETNX来实现分布式锁。 用SETNX实现分布式锁 利用SETNX非常简单地实现分布式锁。例如:某客户端要获得一个名字foo的锁,客户端使用下面的命令进行获取: SETNX lock.foo 如返
2016-10-12 15:07:48
493
基于Netty的聊天程序
2013-01-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人