自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 收藏
  • 关注

转载 Java设计模式之策略模式详解

前言在软件领域中,设计模式作为一种经典的开发实践常常需要我们去深入的理解,而策略模式作为设计模式的一种,使用频率也是相对来说比较高的,在Java中,当我们学习TreeSet集合的时候,就采用了经典的策略模式的思想,本文主要讲解策略模式。概念其思想是针对一组算法,将每一种算法都封装到具有共同接口的独立的类中,从而是它们可以相互替换。策略模式的最大特点是使得算法可以在不影响客户端的情况下发生变化...

2019-09-03 18:50:09 154

转载 线程池的工作原理与源码解读

随着cpu核数越来越多,不可避免的利用多线程技术以充分利用其计算能力。所以,多线程技术是服务端开发人员必须掌握的技术。线程的创建和销毁,都涉及到系统调用,比较消耗系统资源,所以就引入了线程池技术,避免频繁的线程创建和销毁。在Java用有一个Executors工具类,可以为我们创建一个线程池,其本质就是new了一个ThreadPoolExecutor对象。线程池几乎也是面试必考问题。本节结合源代...

2019-08-01 17:47:08 189

转载 自己动手写把”锁”---终极篇

锁是整个Java并发包的实现基础,通过学习本系列文章,将对你理解Java并发包的本质有很大的帮助。前边几篇中,我已经把实现锁用到的技术,进行了一一讲述。这其中有原子性、内存模型、LockSupport还有CAS,掌握了这些技术,即使没有本篇,你也完全有能力自己写一把锁出来。但为了本系列的完整性,我在这里还是把最后这一篇补上。先说一下锁的运行流程:多个线程抢占同一把锁,只有一个线程能抢占成功,抢...

2019-07-31 15:20:43 189

转载 自己动手写把”锁”---LockSupport深入浅出

本篇是《自己动手写把"锁"》系列技术铺垫的最后一个知识点。本篇主要讲解LockSupport工具类,它用来实现线程的挂起和唤醒。LockSupport是Java6引入的一个工具类,它简单灵活,应用广泛。一、简单俗话说,没有比较就没有伤害。这里咱们还是通过对比来介绍LockSupport的简单。在没有LockSupport之前,线程的挂起和唤醒咱们都是通过Object的wait和notify...

2019-07-31 11:25:31 165

转载 自己动手写把”锁”---原子性操作

转载自:https://www.cnblogs.com/qingquanzi/p/8215286.html所谓的原子性,就是在执行过程中不会被线程调度机制打断的操作,这种操作从开始就一直运行到结束,中间不存在任何上下文切换。还是以上篇讲到的x++操作为例。这是一个典型的‘读改写’的操作,在多线程的情况下,必须需要硬件的支持来保证‘读改写’的原子性,底层原理可以简单理解,通过锁总线的方式来实现。...

2019-07-31 11:00:47 161

转载 自己动手写把”锁”之---JMM和volatile

一、JAVA内存模型关于Java内存模型的文章,网上真的数不胜数。在这里我就不打算说的很详细、很严谨了。只力求大家能更好的理解和运用,为后边的技术点做铺垫。内存模型并不是Java独有的概念,而是我们的计算机硬件平台的一个概念。内存模型描述了程序中变量如何在从内存读出、以及何时写会内存的底层细节。我们知道,程序运行其实就是CPU和内存的频繁交互的过程。随着CPU的快速发展,CPU的执行速度越来...

2019-07-31 11:00:35 99

转载 自己动手写把”锁”之---锁的作用

前序这是一个系列文章,前边几篇比较基础,主要为了后续做准备。熟悉的朋友可以直接跳过看后续的文章。本主题很重要,学完这个系列,你将会对Java并包有一个透彻的原理性的认识。线程池技术、阻塞队列、信号量、原子性操作等等所用的基础技术都会在这系列的文章中讲到。学完之后,大家可以自己实现一个CountDownLatch来练练手。正文都知道,现在处理器的核数越来越多,为充分利用其计算资源,服务端编程...

2019-07-31 11:00:21 117

转载 SHA1加密算法的java实现

转载自: https://blog.youkuaiyun.com/zyhlwzy/article/details/77967255SHA1加密算法SHA是一种数据加密算法,该算法经过加密专家多年来的发展和改进已日益完善,现在已成为公认的最安全的散列算法之一,并被广泛使用。该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并...

2019-07-23 18:24:58 286

转载 MD5加密算法的java实现

转载自: https://blog.youkuaiyun.com/zyhlwzy/article/details/77967220MD5加密算法MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理。MD...

2019-07-23 18:22:35 179

转载 BASE64加密算法的java实现

转载自: https://blog.youkuaiyun.com/zyhlwzy/article/details/77964763Base64加密算法编码规则Base64编码的思想是采用64个基本的ASCII码字符对数据进行重新编码。他将需要编码的数据拆分成字节数组,以三个字节为一组。按顺序排列24位数据,再把这24位数据分成四组,即每组6位。再在每组的最高位前补两个0凑足一个字节。这样就把一个3字节为一...

2019-07-23 18:21:51 335

转载 RSA加密算法java实现

转载自: https://blog.youkuaiyun.com/zyhlwzy/article/details/77948195RSA加密算法是目前最有影响力的公钥加密算法,并且被普遍认为是目前最优秀的公钥方案之一。RSA是第一个能同时用于加密和数宇签名的算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA加密算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那...

2019-07-23 18:19:53 365

转载 AES加密算法java实现

转载自: https://blog.youkuaiyun.com/zyhlwzy/article/details/77948165AES加密算法是密码学中的高级加密标准,该加密算法采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的区块加密标准,这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。过多...

2019-07-23 18:18:38 1037

转载 DES加密算法java实现

转载自: https://blog.youkuaiyun.com/zyhlwzy/article/details/77948137由于计算机软件的非法复制,通信的泄密、数据安全受到威胁,解密及盗版问题日益严重,甚至引发国际争端,所以在信息安全技术中,加密技术占有不可替代的位置,因此对信息加密技术和加密手段的研究与开发,受到各国计算机界的重视,发展日新月异。在系统研发过程中,有些数据对于系统或者用户来说,都...

2019-07-23 18:17:30 1283

转载 几种常见的加密算法

转载自:https://blog.youkuaiyun.com/zyhlwzy/article/details/77946086由于计算机软件的非法复制,通信的泄密、数据安全受到威胁,解密及盗版问题日益严重,甚至引发国际争端,所以在信息安全技术中,加密技术占有不可替代的位置,因此对信息加密技术和加密手段的研究与开发,受到各国计算机界的重视,发展日新月异。现在我们就几种常用的加密算法给大家比较一下。DES加...

2019-07-23 18:16:17 1053

转载 组内分享java多线程进阶系列--1

在这里插入图片描述

2019-05-09 20:14:26 154

转载 代理模式

dbcp中的连接池GenericObjectPool用的就是代理模式的设计思想,如下代理模式的分析作为参考,仔细体会一下吧一、代理模式介绍代理模式是一种非常好理解的一种设计模式,生活中处处都有代理:王宝强作为一个明星,不可能什么事都由他自己干(约电视剧、排期之类的),于是他请了经纪人去医院挂号很麻烦怎么办?找黄牛帮我们挂号王者荣耀技术水平不够,想要上分怎么办?请游戏代练写点不正经的代码...

2019-04-18 17:40:16 117

转载 项目性能优化之异步日志

转载自:https://www.sohu.com/a/207100497_100013542特别说明:logback版本1.2.3才有下文的neverblock设置一、前言最近刚刚结束转岗以来的第一次双11压测,收获颇多,难言言表, 本文就先谈谈异步日志吧,在高并发高流量响应延迟要求比较小的系统中同步打日志已经满足不了需求了,同步打日志会阻塞调用打日志的线程,而打日志本身是需要写磁盘的,所以...

2019-04-17 15:59:51 1193

转载 Strategy模式

转载自:http://www.d-kai.me/strategy模式Strategy模式也称为“策略模式”。该模式将某些关键的算法从实现类中解耦,让调用者可以选择不同的算法灵活地应用于实现类。Context:实现类,如果没有使用策略模式,那么Strategy中的算法应该被包含在Context内;Strategy:策略接口,提供算法接口,Context使用接口调用具体的策略算法;Concre...

2019-04-17 14:53:46 509

转载 Apache commons-pool对象池原理分析

转载自:https://shift-alt-ctrl.iteye.com/blog/1917782Apache commons-pool本质上是"对象池",即通过一定的规则来维护对象集合的容器;commos-pool在很多场景中,用来实现"连接池"/"任务worker池"等,大家常用的dbcp数据库连接池,也是基于commons-pool实现.commons-pool实现思想非常简单,它主要的...

2019-04-17 11:25:58 246

转载 dbcp中几个重要实现类之间的关系和连接池参数简介

转载自:https://my.oschina.net/u/2474629/blog/690748如下图1所示主要分析的是BasicDataSource、GenericObjectPool、DriverConnectionFactory、PoolableConnectionFactory和PoolingDataSource类。图1 dbcp几个重要实现类的关系我们直接使用的最多的就是Bas...

2019-04-17 11:10:25 382

转载 dbcp源码分析

转载自:https://www.ktanx.com/blog/p/1274如果自己实现一个DataSource,最基本的数据准备1.dbs=new DataSource()2.connPool=new ConnectionPool()关联到dbs3.driverConnectionFactorty创建最基本conn,add到connPool4.dbs中的connPool并不是可池子化管理...

2019-04-09 19:15:13 772

转载 spring补充扩展

Bean的生命周期建立1 . Bean的建立由BeanFactory读取Bean定义文件,并生成各个实例。初始化2. 依赖注入3.setBeanName()4.setBeanFactory()5.processBeforeInitialization()初始化之前都会执行这个实例的processBeforeInitialization()方法。6.afterProperties...

2019-04-09 11:25:10 129

转载 Spring核心组件

一 Spring核心组件Beanspring是面向bean的编程(bean oriented programming)将对象之间的依赖关系转而用配置文件来管理(IOC)bean的配置由BeanDefinition对象描述.beanFactory是spring提供的基本IOC容器,可完成作为IOC Service provider的所有职责.BeanDefinitionReader负责...

2019-04-09 11:03:49 155

转载 java基础学习-1

对比一:Arraylist与LinkedList的比较1、ArrayList是实现了基于动态数组的数据结构,因为地址连续,一旦数据存储好了,查询操作效率会比较高(在内存里是连着放的)。2、因为地址连续, ArrayList要移动数据,所以插入和删除操作效率比较低。3、LinkedList基于链表的数据结构,地址是任意的,所以在开辟内存空间的时候不需要等一个连续的地址,对于新增和删除操作add...

2019-04-08 18:04:02 77

转载 漫画算法--跳跃表

http://blog.jobbole.com/111731/

2019-01-28 13:41:51 246

转载 slf4j-api、slf4j-log4j12以及log4j之间什么关系?

转载自:https://blog.youkuaiyun.com/tengdazhang770960436/article/details/18006127几乎在每个jar包里都可以看到log4j的身影,在多个子工程构成项目中,slf4j相关的冲突时不时就跳出来让你不爽,那么slf4j-api、slf4j-log4j12还有log4j他们是什么关系?我把自己了解的和大家简单分享一下:slf4j:Simple...

2019-01-25 19:41:40 425

转载 Java日志框架:logback详解

转载自:https://www.cnblogs.com/xrq730/p/8628945.html为什么使用logback记得前几年工作的时候,公司使用的日志框架还是log4j,大约从16年中到现在,不管是我参与的别人已经搭建好的项目还是我自己主导的项目,日志框架基本都换成了logback,总结一下,logback大约有以下的一些优点:内核重写、测试充分、初始化内存加载更小,这一切让logb...

2019-01-25 19:02:51 158

转载 logback异步输出日志的配置方法和源码分析

转载自: https://blog.youkuaiyun.com/lkforce/article/details/766370711,异步输出日志的配置logback中的异步输出日志使用了AsyncAppender这个appender配置方式如下: logs/context-log.%d{yyyy-MM-dd}.log 30 ...

2019-01-25 19:01:51 1716

转载 堆外缓存

转载自:https://www.cnblogs.com/scy251147/p/9634766.html堆内缓存的劣势事物都是有两面性的,堆内缓存在JVM的管理下,纵然无可挑剔,但是在GC过程中产生的程序小停顿和程序大停顿,则像一把利剑一样,斩断了对构造出完美高并发系统的念想。简单的以HashMap这个JDK自带的缓存组件为例,benchmark结果如下:Benchmark ...

2019-01-14 21:06:12 1757

转载 缓存分析图

转载自:https://blog.youkuaiyun.com/wee616/article/details/81071491

2019-01-14 19:20:30 112

转载 controller中 @value 值无法注入

转载自:https://blog.youkuaiyun.com/mountain1164528154/article/details/79425521在使用spring(未涉及springboot)进行读取配置文件中的属性值时,在controller中 @value 值无法注入,配置正确,配置文件也找得到。话不多说,先上代码:由于使用的是spring配置文件方式,web.xml中contextCo...

2019-01-08 17:59:52 661

转载 位运算之——按位与(&)操作——(快速取模算法)

转载自:http://blog.sina.com.cn/s/blog_7b7cad23010163vy.html学习redis 字典结构,hash找槽位 求槽位的索引值时,用到了 hash值 & sizemask操作,其后的scan操作涉及扫描顺序逻辑,对同模的槽位 按一定规则扫描!其中涉及位运算 & 和 %操作之间的关系!故整理学习资料如下:由于位运算直接对内存数据进行操...

2018-12-03 19:56:55 1278

转载 取模运算和取余运算真的是一回事吗?

转载自:http://www.runoob.com/w3cnote/remainder-and-the-modulo.html通常取模运算也叫取余运算,它们返回结果都是余数 .rem 和 mod 唯一的区别在于:当 x 和 y 的正负号一样的时候,两个函数结果是等同的;当 x 和 y 的符号不同时,rem 函数结果的符号和 x 的一样,而 mod 和 y 一样。这是由于这两个函数的生成机制不...

2018-12-03 10:47:28 1346

转载 理解Java中的ThreadLocal

转载自:https://droidyue.com/blog/2016/03/13/learning-threadlocal-in-java/ThreadLocal是什么ThreadLocal是一个关于创建线程局部变量的类。通常情况下,我们创建的变量是可以被任何一个线程访问并修改的。而使用ThreadLocal创建的变量只能被当前线程访问,其他线程则无法访问和修改。用法简介创建,支持泛型...

2018-11-30 21:00:56 116

原创 InnoDB技术分享第二期

在这里插入图片描述

2018-11-29 18:31:38 131

原创 Redis技术分享第二期

2018-11-28 10:33:34 175

转载 B-Tree原理分析

转载自: http://write.blog.youkuaiyun.com/mdeditor#!postId=72803587刚开始学习的时候,百度去查,但发现好多说得太复杂不好理解,结合各个文章总结一下(建议大概看文字,不理解不要紧,然后再看图的执行步骤然后在结合文字,这样一切就清晰好多)B-tree,B是balance,一般用于数据库的索引。使用B-tree结构可以显著减少定位记录时所经历的中间过程,...

2018-11-16 17:25:51 504

转载 B树、B-树、B+树、B*树

了解了InnoDB的底层索引结构是B+Tree,那么就不得不聊一聊BTree,B-Tree和B+Tree了转载自:https://blog.youkuaiyun.com/andyzhaojianhui/article/details/76988560B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点...

2018-11-15 19:26:26 102

原创 InnoDB技术分享第一期

2018-11-15 14:37:15 120

原创 Redis技术分享第一期

2018-11-14 16:06:35 195

空空如也

空空如也

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

TA关注的人

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