![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
文章平均质量分 80
大海海阔
这个作者很懒,什么都没留下…
展开
-
分布式redis锁代码实现
@Componentpublic class RedisDistributedLock extends AbstractDistributedLock { @Autowired private RedisTemplate<String, Object> redisTemplate; private ThreadLocal<String> lockFlag = new ThreadLocal<>(); private static ...转载 2021-10-28 21:09:27 · 262 阅读 · 0 评论 -
java生成复杂的嵌套json
https://blog.csdn.net/surpass0728/article/details/79372775在之前并没有接触到关于复杂嵌套json数据,都是返回一些简单的json数据。最近了解到JSONObject和JSONArray的一些知识。json对象与json对象数组的转化关系var jsonStr = "{\"userId\":\"001\"}"; /...转载 2020-02-08 12:46:39 · 1783 阅读 · 0 评论 -
一个轻量级的分布式RPC框架
本文链接:https://blog.csdn.net/u014411730/article/details/78607616背景:在互联网中,随着访问需求的不断扩大,单一的MVC架构已经不能满足用户的访问需求,这个时候就需要RPC分布式架构。常见的RPC框架:跨语言调用型:Apache的Thrift,Google的Grpc、微博开源的Motan。服务治理型:淘宝的Dubbo(...转载 2019-11-12 15:19:41 · 226 阅读 · 0 评论 -
分布式锁原理及实现方式
本文转自:http://www.hollischuang.com/archives/1716 目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance转载 2017-05-18 01:01:44 · 344 阅读 · 0 评论 -
BlockingQueue
BlockingQueue前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。认识BlockingQueue阻塞队列,转载 2017-05-07 22:55:50 · 170 阅读 · 0 评论 -
CopyOnWriteArrayList与Collections.synchronizedMap性能比较
CopyOnWriteArrayList与Collections.synchronizedMap性能比较Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnW转载 2017-05-05 21:08:55 · 346 阅读 · 0 评论 -
linux系统添加根证书 linux证书信任列表
http://blog.csdn.net/lemonzone2010/article/details/465155211.linux 访问 https 证书问题[root@boss-test-dev001-jydx ~]# curl -v https://mobile.mycard520.com.tw* About to connect() to mobile.myc转载 2017-05-05 20:36:37 · 18575 阅读 · 0 评论 -
zabbix3.0.4添加对web页面url的状态监控
zabbix3.0.4添加对web页面url的状态监控1、应用集配置 在配置—>主机中打开主机列表,选择需要添加监控主机的web,创建应用集2、web监测配置选择web场景,再单击右上角的创建web场景在名称中输入监控的名称,客户端是选择测试站点的浏览器类型在步骤选项卡添加测试步骤Name是转载 2017-05-22 23:44:59 · 1646 阅读 · 0 评论 -
Java中常用的锁分析总结
http://www.tuicool.com/articles/NnQjyqJava中常用的锁分析总结Java中常用的锁分析总结Java 中常用的锁分析总结1. ReentrantLock、ReentrantReadWriteLock及Sychronized简介(a) 类继承结构ReentrantLock类继承结构转载 2017-05-10 23:30:37 · 370 阅读 · 0 评论 -
java中Collections详解
Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能;如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b,c,d,e,f,g这样,当然数字也是这样的。compare(a,b)方法:根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。equals(obj)方法:仅当指定的对象也是一个 Compara转载 2017-05-02 23:43:10 · 3796 阅读 · 0 评论 -
Java线程安全的计数器
一、多线程以及线程安全 java线程安全就是指控制多个线程对某个资源的有序访问或修改。这涉及两个很重要的概念:java的内存模型和java的线程同步机制。 1.java的内存模型要解决两个主要的问题:可见性和有序性可见性: 多个线程之间是不能互相传递数据通信的,它们之间的沟通只能通过共享变量来进行 2.线程同步 由于同一转载 2017-04-19 22:18:02 · 7098 阅读 · 0 评论 -
HashMap vs. TreeMap vs. Hashtable vs. LinkedHashMap
Map是最重要的数据结构。这篇文章中,我会带你们看看HashMap, TreeMap, HashTable和LinkedHashMap的区别。1. Map概览Java SE中有四种常见的Map实现——HashMap, TreeMap, Hashtable和LinkedHashMap。如果我们使用一句话来分别概括它们的特点,就是:HashMap就是一张hash表,键和值都没有排序转载 2017-05-01 17:04:52 · 220 阅读 · 0 评论 -
Condition-线程通信更高效的方式
讲述了并发包下的Lock,Lock可以更好的解决线程同步问题,使之更面向对象,并且ReadWriteLock在处理同步时更强大,那么同样,线程间仅仅互斥是不够的,还需要通信,本篇的内容是基于上篇之上,使用Lock如何处理线程通信。 那么引入本篇的主角,Condition,Condition 将 Object 监视器方法(wait、notify 和 notifyAll)分解成截转载 2017-04-18 23:49:32 · 185 阅读 · 0 评论 -
Java幂等
基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式。无论是在大型互联网应用还是企业级架构中,我们都见到了越来越多的SOA或RESTful的Web API。为什么Web API如此流行呢?我认为很大程度上应归功于简单有效的HTTP协议。HTTP协议是一种分布式的面向资源的网络应用层协议,无论是服务器端提供Web服务,还是客户端消费Web服务都非常简单。再加上浏览器、Javascr转载 2017-04-17 20:26:12 · 2063 阅读 · 0 评论 -
基于BIO的Java Socket通信
http://blog.csdn.net/shirdrn/article/details/6254821BIO,即阻塞IO,在基于Socket的消息通信过程中,Socket服务端向外部提供服务,而Socket客户端可以建立到Socket服务端的连接,进而发送请求数据,然后等待Socket服务端处理,并返回处理结果(响应)。基于BIO的通信,Socket服务端会发生阻转载 2017-03-16 20:17:10 · 697 阅读 · 0 评论 -
Java线程安全的计数器
一、多线程以及线程安全 java线程安全就是指控制多个线程对某个资源的有序访问或修改。这涉及两个很重要的概念:java的内存模型和java的线程同步机制。 1.java的内存模型要解决两个主要的问题:可见性和有序性可见性: 多个线程之间是不能互相传递数据通信的,它们之间的沟通只能通过共享变量来进行 2.线程同步转载 2017-04-25 23:42:40 · 1202 阅读 · 0 评论 -
Java线程(九):Condition-线程通信更高效的方式
http://blog.csdn.net/ghsau/article/details/7481142上一篇讲述了并发包下的Lock,Lock可以更好的解决线程同步问题,使之更面向对象,并且ReadWriteLock在处理同步时更强大,那么同样,线程间仅仅互斥是不够的,还需要通信,本篇的内容是基于上篇之上,使用Lock如何处理线程通信。 那么引入本篇的主角,Cond转载 2017-05-08 23:16:15 · 197 阅读 · 0 评论 -
Java线程(八):锁对象Lock-同步问题更完美的处理方式
http://blog.csdn.net/ghsau/article/details/7461369 Lock是java.util.concurrent.locks包下的接口,Lock 实现提供了比使用synchronized 方法和语句可获得的更广泛的锁定操作,它能以更优雅的方式处理线程同步问题,我们拿Java线程(二)中的一个例子简单的实现一下和sychroni转载 2017-05-09 00:05:48 · 481 阅读 · 0 评论 -
Netty基础
1.BIO、NIO 和 AIO 的区别?BIO:一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理。线程开销大。伪异步 IO:将请求连接放入线程池,一对多,但线程还是很宝贵的资源。NIO:一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有 I/O 请求时才启动一个线程进行处理。AIO:一个有效请求一个线程,客户端的 I/...原创 2019-09-01 15:08:23 · 177 阅读 · 0 评论 -
websocket心跳的实现
http://blog.csdn.net/real_bird/article/details/77119897前言在使用websocket的过程中,有时候会遇到客户端网络关闭的情况,而这时候在服务端并没有触发onclose事件。这样会:多余的连接服务端会继续给客户端发数据,这些数据会丢失所以就需要一种机制来检测客户端和服务端是否处于正常连接的状态。这转载 2017-11-26 23:08:58 · 2783 阅读 · 0 评论 -
《java设计模式》之责任链模式
http://www.cnblogs.com/draem0507/p/3784130.html在阎宏博士的《JAVA与模式》一书中开头是这样描述责任链(Chain of Responsibility)模式的: 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。转载 2017-07-10 07:23:04 · 245 阅读 · 0 评论 -
hashmap冲突的解决方法以及原理分析:
在Java编程语言中,最基本的结构就是两种,一种是数组,一种是模拟指针(引用),所有的数据结构都可以用这两个基本结构构造,HashMap也一样。当程序试图将多个 key-value 放入 HashMap 中时,以如下代码片段为例:HashMap m=new HashMap(); m.put("a", "rrr1"); m.put("b", "tt9"); m.put("c",转载 2017-07-06 22:51:44 · 341 阅读 · 0 评论 -
设计模式系列之建造者模式
http://blog.csdn.net/jason0539/article/details/44992733本文继续介绍23种设计模式系列之建造者模式。定义:建造者模式:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。实用范围1、当创建复杂对象的算法应该独立于该对象的组成部分以及它们的转载 2017-06-27 19:56:13 · 207 阅读 · 1 评论 -
关于BIO和NIO的理解
https://my.oschina.net/u/658658/blog/521016最近大概看了ZooKeeper和Mina的源码发现都是用Java NIO实现的,所以有必要搞清楚什么是NIO。下面是我结合网络资料自己总结的,为了节约时间图示随便画的,能达意就行。简介:BIO:同步阻塞式IO,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动转载 2017-07-05 01:03:15 · 279 阅读 · 0 评论 -
高并发的核心技术-幂等的实现方案
高并发的核心技术-幂等的实现方案 一、背景 我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。 例如: 1. 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果。 2. 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱; 3. 发送消息,也应该只发一次,同样的短信发给用户,用户转载 2017-07-04 23:36:49 · 222 阅读 · 0 评论 -
策略模式
package com.moshi.celv;public interface Caluator {public void testcal(int a,int b);}package com.moshi.celv;public class AddCal implements Caluator {public void原创 2017-07-03 01:19:41 · 345 阅读 · 0 评论 -
深入理解Servlet线程安全问题
在上一篇关于Serlvet框架和Servlet生命周期的学习中,我们已经知道了在多线程的情况下 Servlet是线程不安全的。Servlet体系是建立在java多线程的基础之上的,它的生命周期是由Tomcat 来维护的。当客户端第一次请求Servlet的时候,tomcat会根据web.xml配置文件实例化servlet,转载 2017-07-11 07:48:37 · 387 阅读 · 0 评论 -
关于java中的锁的理解(通俗易懂)
关于java中的锁的理解(通俗易懂)http://blog.csdn.net/u012291108/article/details/51348603一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在Java里边就是拿到某个同步对象的锁(一个对象只有一把锁); 如果这个时候同步对象的锁被其他线程拿走了,他(这个线程)就只能等了(转载 2017-06-06 23:53:53 · 3223 阅读 · 2 评论 -
用AtomicStampedReference解决ABA问题
http://www.cnblogs.com/java20130722/p/3206742.html在运用CAS做Lock-Free操作中有一个经典的ABA问题:线程1准备用CAS将变量的值由A替换为B,在此之前,线程2将变量的值由A替换为C,又由C替换为A,然后线程1执行CAS时发现变量的值仍然为A,所以CAS成功。但实际上这时的现场已经和最初不同了,尽管CAS成功,转载 2017-05-09 17:56:33 · 456 阅读 · 0 评论 -
分布式锁
http://www.cnblogs.com/PurpleDream/p/5559352.html 转载请注明来自博客园http://www.cnblogs.com/PurpleDream/p/5559352.html ,版权归本人和博客园所有,谢谢!正文: 第一步,自身的业务场景: 在我日常做的项目中,目前涉及了以下这些业务场景:转载 2017-03-10 09:07:39 · 189 阅读 · 0 评论 -
jedisLock—redis分布式锁实现
http://www.cnblogs.com/0201zcr/p/5942748.html一、使用分布式锁要满足的几个条件:系统是一个分布式系统(关键是分布式,单机的可以使用ReentrantLock或者synchronized代码块来实现)共享资源(各个系统访问同一个资源,资源的载体可能是传统关系型数据库或者NoSQL)同步访问(即有很多个进程同事访问同一个共享资源。转载 2017-03-08 19:01:08 · 212 阅读 · 0 评论 -
探索 ConcurrentHashMap 高并发性的实现机制
简介ConcurrentHashMap 是 util.concurrent 包的重要成员。本文将结合 Java 内存模型,分析 JDK 源代码,探索 ConcurrentHashMap 高并发的具体实现机制。由于 ConcurrentHashMap 的源代码实现依赖于 Java 内存模型,所以阅读本文需要读者了解 Java 内存模型。同时,ConcurrentHashMap 的转载 2017-02-06 17:35:09 · 199 阅读 · 0 评论 -
深入理解ThreadLocal
https://my.oschina.net/clopopo/blog/149368学习一个东西首先要知道为什么要引入它,就是我们能用它来干什么。所以我们先来看看ThreadLocal对我们到底有什么用,然后再来看看它的实现原理。ThreadLocal如果单纯从名字上来看像是“本地线程"这么个意思,只能说这个名字起的确实不太好,很容易让人产生误解,ThreadLocalVariable转载 2017-01-10 00:07:20 · 289 阅读 · 0 评论 -
ThreadLocal详解
http://www.cnblogs.com/dreamroute/p/5034726.htmlThreadLocal翻译成中文比较准确的叫法应该是:线程局部变量。 这个玩意有什么用处,或者说为什么要有这么一个东东?先解释一下,在并发编程的时候,成员变量如果不做任何处理其实是线程不安全的,各个线程都在操作同一个变量,显然是不行的,并且我们也知道volatile这个关键字也转载 2017-01-09 14:58:48 · 315 阅读 · 0 评论 -
从零开始写一个RPC框架的详细步骤
http://blog.csdn.net/liu88010988/article/details/51547592定位所谓定位就是回答几个问题,我出于什么目的要写一个框架,我的这个框架是干什么的,有什么特性适用于什么场景,我的这个框架的用户对象是谁,他们会怎么使用,框架由谁维护将来怎么发展等等。如果你打算写框架,那么肯定心里已经有一个初步的定位,比如它是一个缓存框架转载 2017-01-09 00:20:58 · 5684 阅读 · 2 评论 -
Java总结篇系列:Java多线程(一)
http://www.cnblogs.com/lwbqqyumidi/p/3804883.htmlpublic class ThreadTest { public static void main(String[] args) { MyRunnable myRunnable = new MyRunnable(); T转载 2017-01-09 00:13:36 · 239 阅读 · 0 评论 -
JAVA 多线程
http://www.cnblogs.com/wxd0108/p/5479442.html如果对什么是线程、什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内。用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一半对,因为反应“多角色”的程序代码,最起码每个角色要给他一个线程吧,转载 2017-01-08 20:50:57 · 184 阅读 · 0 评论 -
redis相关小记
1,安装:wget wget http://download.redis.io/releases/redis-2.8.17.tar.gz && tar zxvf && makemake命令执行完成后,会在当前目录下生成本个可执行文件,分别是redis-server、redis-cli、redis-benchmark、redis-stat,它们的作用如下:redi转载 2016-12-30 17:34:53 · 241 阅读 · 0 评论 -
Java 中 Comparable 和 Comparator 比较
http://www.cnblogs.com/skywang12345/p/3324788.htmlComparable 简介Comparable 是排序接口。若一个类实现了Comparable接口,就意味着“该类支持排序”。 即然实现Comparable接口的类支持排序,假设现在存在“实现Comparable接口的类的对象的List列表(或数组)”,则该Li转载 2016-08-14 11:15:26 · 238 阅读 · 0 评论 -
TreeMap详细介绍(源码解析)和使用示例
http://www.cnblogs.com/skywang12345/p/3310928.htmlTreeMap 简介TreeMap 是一个有序的key-value集合,它是通过红黑树实现的。TreeMap 继承于AbstractMap,所以它是一个Map,即一个key-value集合。TreeMap 实现了NavigableMap接口,意味着它支持一系列的导转载 2016-08-14 11:03:56 · 7705 阅读 · 0 评论