后端---Redis持久化方式 Redis不同于Memcached的很重一点就是,Redis支持持久化,而且支持两种不同的持久化操作。Redis的一种持久化方式叫快照(snapshotting,RDB),另一种方式是只追加文件(append-only file,AOF).这两种方法各有千秋,下面我会详细这两种持久化方法是什么,怎么用,如何选择适合自己的持久化方法。快照(snapshotting)持久化Redis可以通过创...
后端---Spring-Retry框架介绍和基本开发 Spring-Retry框架介绍和基本开发一、背景介绍 前天是来到公司实习的第五天,之前几天分给我的任务一直都是熟悉项目,阅读项目代码梳理其中某些接口或枚举类之间的关系,并书写文档。直到前天下午组长把我叫来说出了这样一个需求,在我们项目中有一个认证身份证号的service接口,该接口是调用第三方公司的接口,但是第三方公司的接口并不稳定,每天大约有1.5w个返回错误code值200...
Spring并发访问的线程安全性问题 Spring框架中在并发访问时的线程安全性 在今天整理往前所学的知识中,看到了关于HashMap是线程不安全的,在之前的实际项目开发中自己在写一个消息通知的接口功大家调用的时候,因为一个消息通知的模板中需要替换的参数长度和数量不定,并且相同的参数可能对应不同的内容,为了方便大家调用我的这个方法,我使用了HashMap作为参数,并把它写在了Service层中一个方法内。使用的框架是S...
后端---Java中的公平锁和非公平锁实现详解 Java中的公平锁和非公平锁实现详解 在Java中实现锁的方式有两种,一种是使用Java自带的关键字synchronized对相应的类或者方法以及代码块进行加锁,另一种是ReentrantLock,前者只能是非公平锁,而后者是默认非公平但可实现公平的一把锁。ReentrantLock的实现是基于其内部类FairSync(公平锁)和NonFairSync(非公平锁)实现的。 其可重入性是...
多线程---java中锁池和等待池的概念 锁池和等待池在java中,每个对象都有两个池,锁(monitor)池和等待池锁池:假设线程A已经拥有了某个对象(注意:不是类)的锁,而其它的线程想要调用这个对象的某个synchronized方法(或者synchronized块),由于这些线程在进入对象的synchronized方法之前必须先获得该对象的锁的拥有权,但是该对象的锁目前正被线程A拥有,所以这些线程就进入了该对象的锁池中。 等...
后端---深入理解双重检查锁定 Java中的双重检查锁定双重检查锁定又称双重效验锁,以前常常用于Java中的单例模式,在并发编程中的线程池中常常用到该模式,并且在Spring中DI(依赖注入)也用到该模式的思想,当Spring运行的时候将我们加入注解的bean(Java对象)遍历出来,并创建其相关的一个实例,在程序的运行中,如果遇到要操作该对象的时候,便使用Spring为我们创建的该类的单例进行相关的操作。但是如何确保只生成...
后端---git常用命令和使用顺序 Git基本了解git命令是一些命令行工具的集合,它可以用来跟踪,记录文件的变动。比如你可以进行保存,比对,分析,合并等等。这个过程被称之为版本控制。已经有一系列的版本控制系统,比如SVN, Mercurial, Perforce, CVS, Bitkeepe等等。Git是分布式的,这意味着它并不依赖于中心服务器,任何一台机器都可以有一个本地版本的控制系统,我们称之为仓库。如果是多人协作的话...
Java集合:HashMap源码剖析 Java集合:HashMap源码剖析一、HashMap概述二、HashMap的数据结构三、HashMap源码分析 1、关键属性 2、构造方法 3、存储数据 4、调整大小 5、数据读取 6、HashMap的性能参数 7、Fail-Fast机制 声明:本博客转自 博客园 h...
彻底搞懂hashCode与equals的作用与区别 文章为转载, 原文地址:https://blog.csdn.net/lijiecao0226/article/details/24609559 最近去面试了几家公司,被问到hashCode的作用,虽然回答出来了,但是自己还是对hashCode和equals的作用一知半解的,所以决定把它们研究一下。以前写程序一直没有注意hashCode的作用,一般都是覆盖了equals,缺没有覆盖has...
后端---Java中的HashSet和TreeSet和LinkedHashSet的区别 Java中的HashSet和TreeSet和LinkedHashSet区别 Set接口与三种实现之间的关系Set是一个不包含重复元素的 collection。无序且唯一。HashSet LinkedHashSet TreeSetHashSet是使用哈希表(hash table)实现的,其中的元素是无序的。HashSet的add、remove、contains方法 的时间复杂...
后端---Java中ArrayList和LinkedList区别和联系 ArrayList和LinkedList的区别和联系在一个多月之前,我曾写过一篇博客想要迅速简洁的了解Java中所有的集合类型(List、Set、Map),然后一个月多后的我不得已又抱起《Java核心卷I 》仔细研读,这是为什么呢???是因为“温故而知新”还是因为“书读百遍其义自显”????都不是!!!因为我忘完了啊!关于List和Set、Map的博客,这里给出链接 ja...
Spring架构---Spring中的事务管理详解 Spring中的事务管理详解1. 事务简介:事务管理是企业级应用程序开发中必不可少的技术,用来确保数据的完整性和一致性事务就是一系列的动作,它们被当作一个单独的工作单元。这些动作要么全部完成,要么全部不起作用2. 事务的四个关键属性(ACID)① 原子性(atomicity):事务是一个原子操作,有一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用② 一致性(...
后端---Java中Iterator(迭代器)原理分析 Java中Iterator(迭代器)的用法及其背后机制的探究一.背景延伸 在Java中遍历List时会用到Java提供的Iterator,Iterator十分好用,原因是:迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。 Java中的Iterator功能比较简单,并且只能单...
网络---Https和Http区别和对称加密和非对称加密 Https和Http区别众所周知,WEB服务存在http和https两种通信方式,http默认采用80作为通讯端口,对于传输采用不加密的方式,https默认采用443,对于传输的数据进行加密传输目前主流的网站基本上开始默认采用HTTPS作为通信方式,一切的考虑都基于对安全的要求,那么如何对自己的网站配置HTTPS通信,是本文着重介绍的本文的主要内容包括:https加密传输的原理、如何申...
Java自定义类加载器与双亲委派模型 1. 双亲委派模型关于双亲委派模型,网上的资料有很多。我这里只简单的描述一下,就当是复习。1.1 什么是双亲委派模型?首先,先要知道什么是类加载器。简单说,类加载器就是根据指定全限定名称将class文件加载到JVM内存,转为Class对象。如果站在JVM的角度来看,只存在两种类加载器: 启动类加载器(Bootstrap ClassLoader):由C++语言实现(针对HotSp...
后端---史上最全最小白最简单最细致的Java接入微信支付接口(Native接入) 距离上一篇博客史上最全最小白最简单最细致的Java接入支付宝支付接口方法 https://blog.csdn.net/weixin_42504145/article/details/85077635已经过去快三天了,终于在今天将微信整个电脑网页支付整合在SSM框架上.大家可以在Github https://github.com/nigel-zhou/reimagined-waddl...
后端---史上最全最小白最简单最细致的Java接入支付宝支付接口方法 昨天Boss在讲项目的业务需求的时候对我突然说让我做一下支付宝微信支付接口这块功能,我的心里是充满问号的????,但是我的嘴却坚定的说出了没问题!!! ???????? 于是开启了我这一天的快乐之旅,在这个无情又寒冷的深夜里将我今天的快乐分享给大家! 哈哈哈哈哈哈,不扯了,我们开始正题! 正题每天早上起来...
后端--Java中class文件结构 最近刚看完《深入理解Java虚拟机》周志明著 第六章 类文件结构,在这里写一篇关于JVM如何解析Class文件结构的博客。Class类文件结构Class文件是一组以8字节为基础单位的二进制流, 各个数据项目严格按照顺序紧凑排列在class文件中, 中间没有任何分隔符,这使得class文件中存储的内容几乎是全部程序运行的程序。Java虚拟机规范规定,Class文件格式采用类似C语言结构...