自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 指数基金的正确购买姿势

基金:发行基金份额将投资者分散的资金集中起来。基金就是一个篮子,按照预先设定好的规则,装入各种各样的资产。这样一来,普通人原来买不起的资产,就可以通过基金的方式投资了。...

2021-05-31 21:13:43 358 3

原创 mybatis mapper 路径问题探究

工作中遇到个小问题,记录一下

2020-11-17 07:55:44 548

原创 D0、T0、S0到账模式的区别

一、T+1、T+0、D+1、D+0、S+0和D+S1、T+1到账T指的就是交易当天,T+1指的就是当天交易的款,要等到第2个工作日到账,注意这里算的是工作日,节假日是不能到账的。比如星期五星期六星期天的交易,T+1到账指的是星期一到账。2、T+0到账指的是当天所有成功的交易,在工作日当天就进行结算。周末是不进行结算的。比如星期五的交易在当天就到账,但是星期六星期天的交易,要等到礼拜一才到账,节假日类似。3、D+1到账D在这里指的是Day,也就是天的意思,D+1到账指的是所有交易,都在第2天到账,

2020-10-22 20:04:47 7506

原创 jvm整理 | 线程的创建

实现线程主要有三种方式:使用内核线程实现(1:1实现),使用用户线程实现(1:N实现),使用用户线程加轻量级进程混合实现(N:M实现)4.Java线程的实现Java线程如何实现并不受Java虚拟机规范的约束,这是一个与具体虚拟机相关的话题。Java线程在早期的Classic虚拟机上(JDK 1.2以前),是基于一种被称为“绿色线程”(Green Threads)的用户线程实现的,但从JDK 1.3起,“主流”平台上的“主流”商用Java虚拟机的线程模型普遍都被替换为基于操作系统原生线程模型来..

2020-10-08 22:37:35 209

原创 jvm整理 | 反射原理

https://www.cnblogs.com/zabulon/p/5826610.htmlhttps://www.cnblogs.com/yougewe/p/10125073.htmlhttps://blog.csdn.net/weixin_42724467/article/details/84311385

2020-10-08 07:46:33 383

原创 jvm整理 | 内存间交互

Java内存模型规定了所有的变量都存储在主内存(Main Memory)中线程对变量的所有操作(读取、赋值等)都必须在工作内存中进行,而不能直接读写主内存中的数据Java内存模型中定义了以下8种操作来完成。Java虚拟机实现时必须保证下面提及的每一种操作都是原子的、不可再分的·lock(锁定):作用于主内存的变量,它把一个变量标识为一条线程独占的状态。·unlock(解锁):作用于主内存的变量,它把一个处于锁定状态的变量释放出来,释放后的变量才可以被其他线程锁定。·read(..

2020-09-29 00:31:54 159

原创 SQL中的in与not in、exists与not exists的区别

in是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询,一直以来认为exists比in效率高的说法是不准确的。如果查询的两个表大小相当,那么用in和exists差别不大;如果两个表中一个较小一个较大,则子查询表大的用exists,子查询表小的用in...

2020-09-24 07:29:33 131

原创 spring 循环依赖 源码探究

https://blog.csdn.net/java_lyvee/article/details/101793774https://www.processon.com/view/link/5c15e10ae4b0ed122da86303

2020-09-24 07:28:54 189

原创 jvm整理 | 垃圾回收

1、可达性算法分析 GC Roots:虚拟机栈中引用的对象、方法区中类静态属性引用的对象、方法区中常量引用的对象、Native方法中引用的对象、java虚拟机内部的引用(基本数据类型的Class对象,异常对象,系统类加载器)、被Synchronized 持有的对象2、引用 如果reference 类型的数据中存储的数值代表的是另外一块内存的起始地址,就称改reference数据是代表某块内存,某个对象的引用。 ...

2020-09-10 09:30:18 169

原创 jvm 整理 | 对象的创建

1、当Java虚拟机遇到一条new指令时,首先会去检查这条指令的参数是否能在常量池中定位一个类的符号引用2、判断是否进行过类加载3、内存分配: 指针碰撞:java堆内存规整,垃圾收集器具备空间压缩整理能力(Serial、ParNew) 空闲列表:内存不规整,维护一个列表来记录哪块内存是可用的,垃圾收集器具备标记-清除(CMS)(并发分配是否会出现问题? 会:可能出现正在给对象A分配内存,指针还没来得及修改,对象B又同时使用了原来的指...

2020-09-01 20:25:02 145

原创 jvm 整理 | 运行时数据区

线程共享:堆、方法区线程隔离:虚拟机栈、本地方法栈、程序计数器程序计数器:一块较小的内存空间,执行的字节码的行号指示器虚拟机栈:用于Java方法执行的线程内存模型,存储 局部变量表、操作数栈、动态链接、方法出口 局部变量表存储了编译期可知的各种基本数据类型(以局部变量槽Slot为单位,long 和 double 占两位,其余只占一个)+对象引用 如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverf...

2020-08-31 23:29:27 151

转载 Java 中的引用逃逸

https://mp.weixin.qq.com/s/XIGGmuSD_62BBBD4RDX6Kw

2020-08-30 23:19:02 529

原创 灵魂一问:数组的查找为什么比链表快?

一般面试大概率会问到数组与链表的比较,那大家一定都知道数组的查找效率优于链表,那么为什么会这样呢,我们今天来仔细分析下原因。一、什么是数组?我想大家应该都知道答案:数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。有两个关键词:线性表 顾名思义,线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。其实除了数组,链表、队列、栈等也是线性表结构。内存连续,数据类型相同因为这两个特性,数组才有了一个强大...

2020-07-01 08:54:45 1338 1

原创 MYSQL 复制的工作原理

目录一、工作原理二、存在的问题一、工作原理复制(replication)是MySQL数据库提供的一种高可用高性能的解决方案,一般用来建立大型的应用。总体来说,replication的工作原理分为以下5个步骤:步骤一:主库db的更新事件(update、insert、delete)被写到binlog步骤二:从库发起连接,连接到主库步骤三:此时主库创建一个binlog dump thread线程,把binlog的内容发送到从库步骤四:从库启动之后,创建一个I/O线程,读取主库传过来.

2020-06-29 08:10:53 1067

原创 O(n) 时间复杂度内求无序数组中的第 K 大元素

思路:我们选择数组区间 A[0…n-1]的最后一个元素 A[n-1]作为 pivot,对数组 A[0…n-1]原地分区,这样数组就分成了三部分,A[0…p-1]、A[p]、A[p+1…n-1]。如果 p+1=K,那 A[p]就是要求解的元素;如果 K>p+1, 说明第 K 大元素出现在 A[p+1…n-1]区间,我们再按照上面的思路递归地在 A[p+1…n-1]这个区间内查找。同理,如果 K<p+1,那我们就在 A[0…p-1]区间查找。代码如下:package com..

2020-06-09 23:45:22 1367 4

原创 Spring AOP 浅析 — 开启aop的配置

目录spring开启aop的配置有两种方式使用@EnableAspectJAutoProxy注解使用XML中配置以下是最近spring的学习整理,如有不对之处,欢迎大神指教!spring开启aop的配置有两种方式1、注解形式@Configuration@EnableAspectJAutoProxypublic class Config {}有效的切面类:@Aspect@Componentpublic class MyAspect { //...

2020-05-13 21:59:07 1812

原创 《数据结构与算法之美》-------- 栈 (实现算术表达式的求值 java语言实现)

利用栈实现算术表达式的求值package com.my.datastructure;import java.util.Stack;/** * @author zhe.sun * @Description: 利用栈实现算术表达式的求值 * @date 2020/5/8 23:25 */public class StackTest { public static void main(String[] args) { System.out.println(c.

2020-05-09 01:01:36 357

原创 《数据结构与算法之美》----常见的链表操作

目录单链表反转两个有序的链表合并删除链表倒数第 n 个结点循环链表----约瑟夫问题单链表反转 /** * 翻转链表 * * 1->2->3 * * @param head * @return */ public static Node reverseList(Node h...

2020-05-06 22:13:02 191

原创 MYSQL-InnoDB存储引擎--- 锁

锁的类型一致性非锁定读, 快照数据,mvcc(多版本并发控制),在事务隔离级别READ COMMITTED和REPEATABLEREAD(InnoDB存储引擎的默认事务隔离级别)下,InnoDB存储引擎使用非锁定的一致性读。然而,对于快照数据的定义却不相同。在READ COMMITTED事务隔离级别下,对于快照数据,非一致性读总是读取被锁定行的最新一份快照数据。而在REPEATABLE R...

2020-05-05 21:41:57 194

原创 concurrenthashmap 源码分析(四 ) - addCount() 方法

在putVal 方法的最后会调用 addCount方法从 putVal 传入的参数是( 1, binCount),binCount 默认是0,只有 hash 冲突了才会大于 1.且他的大小是链表的长度,红黑树是2来看下源码:/** * Adds to count, and if table is too small and not already * resiz...

2020-04-24 01:16:54 824

原创 concurrenthashmap 源码分析(三) - transfer() 方法

一、当 node 的 hash 等于 MOVED的时候会进行helpTransfer方法也就是当发现其他线程正在扩容的时候,当前线程去帮助扩容/** * Helps transfer if a resize is in progress. */ final Node<K,V>[] helpTransfer(Node<K,V>[] ta...

2020-04-24 00:06:11 663

原创 concurrenthashmap 源码分析(二) - initTable() 方法

前一章我们在putVal 方法中看到,当 node 的 hash 等于 MOVED的时候会进行helpTransfer方法也就是当发现其他线程正在扩容的时候,当前线程去帮助扩容 /** * Helps transfer if a resize is in progress. */ final Node<K,V>[] helpTransfer(No...

2020-04-23 00:05:57 877

原创 concurrenthashmap 源码分析(一) - putVal() 方法

这篇文章主要分析putVal方法的源码,这里面也包括了 concurrenthashmap大部分的常用的方法,例如 initTable、spread、transfer、treeifyBin、addCount等等一、概述A hash table supporting full concurrency of retrievals and high expected concurr...

2020-04-10 09:17:05 715

原创 AQS 源码分析(三)--------CLH 队列 和 Condition 队列

这篇文章我们来一起学习下AQS中的 ConditonObject ,并以ReentrantLock为例子来分析下CLH 队列和 Condition队列之间的转换过程,如果有不对的地方,欢迎大佬指正!一 lock 与 synchronized 的比较synchronized 关键字:java提供了内置锁来支持多线程的同步,JVM会根据synchronized 关键字来标识同步代码块,当线程进...

2020-03-31 00:25:37 1230

原创 AQS 源码分析(二)-------共享锁

上一篇主要介绍了AQS排它锁的acquire 和 release,这篇文章我们来一起学习下共享锁的实现。与获取独占锁不同的是,共享锁允许多个线程持有。我们先看下 tryAcquireShared 返回参数的含义: * @return a negative value on failure; zero if acquisition in shared * ...

2020-03-28 19:54:37 201

原创 AQS-源码分析(一)-------排它锁

最近仔细学习了一下java AbstractQueuedSynchronizer 的源码,这里来一起分享下,如果有错误的地方,欢迎指正!我们将会从一下几个方面介绍:一、简介AQS是Doug Lea 大师创作用来构建锁或其他同步组建的基础框架类。AQS主要采用模板方法实现同步原语,以简化并发工具的内部实现,AQS主要做了三件事情:同步状态的管理,主要是通过state变量 线程...

2020-03-27 14:23:34 219

原创 ThreadPoolExecutor-线程池源码 look look

最近仔细学习了一下java 线程池的源码,这里来一起分享下,如果有错误的地方,欢迎指正!我们将会从一下六个方面介绍:二、构造参数corePoolSize:线程池核心线程数大小 maximumPoolSize:线程池线程数最大值,达到最大值后线程池不会再增加线程执行任务 keepAliveTime:线程池中超过corePoolSize数目的空闲线程最大存活时间 allowCor...

2020-03-12 00:51:39 525

原创 Spring @Autowired 失效 BeanFactoryPostProcessor 错误姿势

工作中遇到一个@Autowired 自动注入失败的情况,经过一系列的探索之后发现是对spring 的 BeanFactoryPostProcessor 使用姿势错误导致的,下面我们来具体说明下流程代码如下:首先我们会在bean工厂的后置处理器中 运行如下代码beanFactory.getBeansOfType(Man.class)这个方法会返回与给定对象类型匹配的 bea...

2020-02-14 22:55:01 1309

原创 生产遇到的问题记录

1、上线之前一定要准备好相关材料,配置,脚本,数据库2、要把相关的人全部留下,上线之前一定都要明确的通知到3、涉及迁移之类的流程一定要确定步骤,步骤乱了会出问题4、MQ之类的迁移,要做到前后兼容...

2020-02-13 22:12:44 190

原创 Spring源码阅读------IOC 注册bean(一)

笔者最近打算读读spring的源码,就先从最常用的IOC开始看起。1、定义:IOC是Inversion of Control的缩写,多数书籍翻译成“控制反转”,还有些书籍翻译成为“控制反向”或者“控制倒置”。也就是将Java对象交给spring来管理。2、三种方式:1、XML声明配置2、注解声明配置 (推荐)3、JavaConfig声明配置 (推崇)本文主要说明前两种方...

2019-12-30 20:56:18 211

转载 ThreadLocal 使用和原理

这篇文章会从三个方面来说说ThreadlocalThreadLocal用在什么地方? ThreadLocal的get/set源码分析! ThreadLocal的使用方法!1、ThreadLocal用在什么地方?1.1)保存线程上下文信息,在任意需要的地方可以获取。 例如Spring的事务管理,用ThreadLocal存储Connection,从而各个DAO可以获取同...

2019-12-19 09:23:08 180

原创 jvm整理 | 类加载机制

一、类的加载过程参考:https://blog.csdn.net/xuemengrui12/article/details/827074731、一个Java文件从编码完成到最终执行,一般主要包括两个过程编译,即把我们写好的java文件,通过javac命令编译成字节码,也就是我们常说的.class文件。运行,则是把编译声称的.class文件交给Java虚拟机(JVM)执行。而我们所说的...

2019-12-19 00:02:00 151

原创 JAVA IO — 设计模式

首先给出Java IO的类图:(来源:https://www.cnblogs.com/davidgu/archive/2012/06/25/2561078.html)一、装饰模式1·定义:动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活(大话设计模式原文)2·结构图:Component是定义一个接口对象,可以给这些对象动态的添加职责。Co...

2019-11-30 16:17:31 242

原创 并发条件下update条件不当引发死锁问题

项目压力测试数据库中发生死锁问题,定位问题后发现是update语句条件不当导致,现在记录下来,和大家一起分享下!数据库:mysql表结构大致如下Tablecolumn_a column_b column_c A1 B1 C1 A2 B2 C2 A3 B3 C3 其中column_a,column_b为联合索引...

2019-03-27 23:53:54 2284

原创 SpringBoot+JPA+ElementUi 给级联选择器Cascader返回树形结构数据

如题,最近项目刚结束,来整理下,不喜勿碰,欢迎大神指教!!!目前项目中的Cascader使用一般都是写js脚本,现在要求把信息配置在数据库中。直接上代码信息配置表的设计:DROP TABLE IF EXISTS `tree_node_configuration`;CREATE TABLE `tree_node_configuration` (  `id` bigint(20) NOT NULL A...

2018-03-18 22:46:32 5308

转载 lintcode-第k大的数

题目:在数组中找到第k大的元素样例:给出数组 [9,3,2,4,8],第三大的元素是 4给出数组 [1,2,3,4,5],第一大的元素是 5,第二大的元素是 4,第三大的元素是 3,以此类推/** *  find KthMax number */ public static int kthLargestElement(int k, int[] nums) {        if(null =...

2018-02-08 15:56:39 375

原创 lintcode-两数之和-BST版本

题目:给一棵二叉搜索树以及一个整数 n, 在树中找到和为 n 的两个数字样例:给一棵BST: 4 / \ 2 5 / \1 3以及一个整数 n = 3返回 [1, 2] 或 [2, 1]思路:遍历节点,在节点上判断另一个数是否存在代码:/** * Definition of TreeNode:

2018-02-05 22:29:37 592

原创 算法-二叉查找树-迭代器

题目:设计实现一个带有下列属性的二叉查找树的迭代器:元素按照递增的顺序被访问(比如中序遍历)next()和hasNext()的询问操作要求均摊时间复杂度是O(1)样例对于下列二叉查找树,使用迭代器进行中序遍历的结果为 [1, 6, 10, 11, 12] 10 / \1 11 \ \ 6

2018-02-01 23:14:20 309

原创 算法-二叉查找树-搜索区间

题目:给定两个值 k1 和 k2(k1 样例如果有 k1 = 10 和 k2 = 22, 你的程序应该返回 [12, 20, 22]. 20 / \ 8 22 / \4 12代码如下:类似中序遍历,加上区间的筛选。/** * Definition of TreeNode: * public class T

2018-01-31 23:03:44 524

原创 算法-二叉查找树-删除节点

题目:给定一棵具有不同节点值的二叉查找树,删除树中与给定值相同的节点。如果树中没有相同值的节点,就不做任何处理。你应该保证处理之后的树仍是二叉查找树。样例:给出如下二叉查找树:          5       /    \    3          6 /    \2       4删除节点3之后,你可以返回:          5     

2018-01-30 23:22:21 1083

空空如也

空空如也

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

TA关注的人

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