自定义博客皮肤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)
  • 收藏
  • 关注

原创 Spring源码之@Transactional源码解析二

一、事务的传播属性一、传播属性的概述Propagation.REQUIRED(required):支持当前事务,如果当前有事务, 那么加入事务, 如果当前没有事务则新建一个(默认情况) Propagation.NOT_SUPPORTED(not_supported) : 以非事务方式执行操作,如果当前存在事务就把当前事务挂起,执行完后恢复事务(忽略当前事务); Propagation.SUPPORTS (supports) :如果当前有事务则加入,如果没有则不用事务。 Propagat...

2021-01-26 10:21:06 420

原创 Spring中循环依赖详解

一、循环依赖第一种情况一、示例代码package com.sample.service.SpringCircleDI;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;@Componentpublic class CircularRefA { public CircularRefA() {

2021-01-23 20:42:49 564

原创 Spring源码之@Transactional源码解析一

一、开启事务需要哪些步骤一、开启事务入口类 @EnableTransactionManagement这注解中的都做了那些事?首先通过Import的方式将这个事务切面入口类TransactionManagementConfigurationSelector 变成beandefinition对象,接下来进入源码初探:public class TransactionManagementConfigurationSelector extends AdviceModeImportSelect.

2021-01-23 14:48:56 585

原创 Spring源码之@Scope注解中proxyMode属性理解

目录一、代码示例引出疑问情况一:@Scope注解中的proxyMode 属性为默认值 测试用例:执行结果:情况二:@Scope注解中的proxyMode 属性为 ScopedProxyMode.TARGET_CLASS执行结果:二、根据示例问题展开探讨 情况一探讨:情况二的探讨:三、总结一、代码示例引出疑问情况一:@Scope注解中的proxyMode 属性为默认值public class MyBean { @Autow...

2021-01-20 20:54:12 5373 6

转载 通过IDEA使用GIt

git是一个优秀的分布式版本控制系统。但是当集成到IDEA中,每一个功能又该怎么操作呢?这篇文件涵盖了IDEA中常见的Git功能的操作,每一步都有图示,强烈建议收藏。 文章目录 1. 下载安装与配置1.1 下载安装Git1.2 在IDEA中配置Git 2. 克隆Git...

2020-11-05 18:49:46 643 1

原创 2020-09-14

地址:https://blog.csdn.net/HarderXin/article/details/103971493?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.

2020-09-14 12:39:31 103

原创 二叉树非递归前、中、后序遍历---面试题

前序遍历:规则(根左右)代码实现://非递归实现谦前序遍历 根左右 public static void preOrderTraverse2(TreeNode root) { if (root == null) return; Stack<TreeNode> s = new Stack<>();// while (!s.isEmpty() || root != null) {// while (

2020-09-12 11:34:15 134

翻译 Synchronized锁膨胀原理

首先简单说下先偏向锁、轻量级锁、重量级锁三者各自的应用场景:偏向锁:只有一个线程进入临界区; 轻量级锁:多个线程交替进入临界区; 重量级锁:多个线程同时进入临界区。锁膨胀过程:原理分析:偏向所锁,轻量级锁都是乐观锁,重量级锁是悲观锁。一个对象刚开始实例化的时候,没有任何线程来访问它的时候。它是可偏向的,意味着,它现在认为只可能有一个线程来访问它,所以当第一个线程来访问它的时候,它会偏向这个线程,此时,对象持有偏向锁。偏向第一个线程,这个线程在修改对象头成为偏向锁的时候使用CAS操

2020-09-02 15:30:06 437 1

原创 并发编程的艺术

参考文章:带你渗透并发编程

2020-08-24 11:47:56 124

转载 Java 网络IO模型简介

基础概念正式开始之前,需要铺垫一些基本概念,以免接下来看到一脸懵逼。我们都知道,在操作系统中,CPU负责执行指令,这些指令有些来自应用程序,有些是底层系统的自调用。有些指令是非常危险的,如清除内存,网络连接等等,如果错误调用的话有可能导致系统崩溃。因而CPU将指令分为特权指令和非特权指令,对于某些特定的指令,只需要操作系统及其相关模块进行调用。因而,根据这个特点,操作系统内部也划分出了内核态和用户态。内核态内核态拥有完全的底层资源控制权限,可以执行任何的CPU指令,访问任何内存地址,其占有的

2020-08-22 11:25:45 274

原创 Mysql--删除数据库中除了id不一样,其他一样的重复数据

案列:数据库中有多条重复的数据需要清洗一下,这些数据除了id(主键)不一样,其他的都一样。一、首先看一下这些冗余的数据:SELECT min(id) bid ,GROUP_CONCAT(id)FROM operation_title_copy_copy where descript != '' group BY descript,ACTION结果:二、以这个id为例:36,57,72,74,130,171,305,361,376三、删除这些重复的数据:sql语句如下:.

2020-07-22 17:18:34 3605

原创 MyBatis 返回 Map,查询字段两列分别作为 key 和 value

前言:在优化代码的过程中我要查询的结果就是数据库中的两列字段的值,其中这两个字段的的关系是参数名:参数默认值。这是我要的结果集。---没想到mybatis还整you这种的封装,记录一下。1、先列出我的sql和结果集封装:<resultMap id="mapResult" type="java.util.HashMap"> <result property="key" column="paramName" javaType="java.lang.String" jdbcT

2020-07-15 15:34:41 6343 2

原创 java实现SSH协议连接linux

初衷:在每次部署项目的时候,每次都得打包,使用xshell连接linux服务器,每次在连接的时候都会很慢,还得杀死原先的进程id并删除之前的版本,很烦!!所以采用java代码的方式连接服务器实现自动上传换版本启动的过程。。首先:使用ssh协议的jar引进工程pom依赖: <dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId

2020-07-06 19:49:39 4181 2

转载 BAT常爱问的“三次握手,四次挥手”你真的懂吗?

记得刚毕业找工作面试的时候,经常会被问到:你知道“3次握手,4次挥手”吗?这时候我会“胸有成竹”地“背诵”前期准备好的“答案”,第一次怎么怎么,第二次……答完就没有下文了,面试官貌似也没有深入下去的意思,深入下去我也不懂,皆大欢喜!作为程序员,要有“刨根问底”的精神。知其然,更要知其所以然。这篇文章希望能抽丝剥茧,还原背后的原理。为了便于整体把握文章,手动加上文章目录:什么是“3次握手,4次挥手”TCP是一种面向连接的单播协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的.

2020-05-08 20:19:31 252

原创 Java基础相关的内容

java基础相关的博客:参考博客:https://cloud.tencent.com/developer/information/java%20遍历速度慢

2020-04-26 16:08:56 140

原创 牛客刷题---二叉树相关题汇总

二叉树相关的面试题://数据结构class TreeNode { int value; TreeNode left; TreeNode right;public TreeNode(int value) { this.value = value; }}1、输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中...

2020-04-03 21:12:51 286

原创 牛客网刷题汇总

1、定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。分析:方法一、首先想到的是用两个栈来分别来保存数据。栈一stackTotal用来保存所有的数据,栈二stackLittle加入新的元素后当前stackTotal中对应的最小值,当新的元素小于...

2020-04-01 10:22:12 2981

原创 java中的正则matches方法和find方法的区别

Java 正则表达式里find()方法的使用package com.zte.st.dailybuild.dao;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * Created by 6092002943 on 2020/3/28. */public class Test { pu...

2020-03-28 20:09:57 1238

原创 数组相关面试题

编写冒泡排序和选择排序 给一个乱序数组,使得奇数放在前面,偶数放在数组后面,并且保证奇偶数在原数组的相对位置不变第一题、//冒泡排序时间复杂度是O(n^2)public static void bubbleSort(int[] arr) { boolean didSwap; for (int i = 0, len = arr.length; i <...

2020-03-24 18:39:39 505

原创 使用mybatis更新时如果数据类型为boolean型遇到的问题

系统框架使用SSM当更新的数据类型为boolean时使用if标签判断不能判断时段是否为空,只判断字段是否等于null<if test="flag != null"> flag = #{flag,jdbcType=TINYINT},</if>否则当字段为false时,不能更新。因为在mybatis底层当传入进来的字段没有默认值的时候是空也就是false,你传...

2020-03-23 14:48:47 5813 1

转载 LeetCode刷题笔记——LeetCode使用介绍

转载自http://blog.csdn.net/tostq       又到了一年毕业就业季了,三年前的校招季我逃避了,可这一次终于还是要轮到我了=_=...

2020-03-21 10:53:52 644

翻译 Redis相关面试题整理

1、什么是Redis事务?原理是什么?Redis中的事务是一组命令,是Redis的最小执行单位,一个事务要么都执行,要么都不执行。Redis事务保证一个事务内的命令依次执行,而不会被其他命令插入。Redis事务的原理是先将属于一个事物的命令发送给Redis,依次执行这些命令。2、什么是缓存穿透?怎么解决?穿透是指缓存中查询一个不存在的数据,需要去数据库中获取。如果数据也查询不到结果,...

2020-01-13 10:32:32 214

转载 什么是CAS问题

CAS相关的文章:https://blog.csdn.net/bjweimengshu/article/details/78949435java中的CAS和ABA问题:https://www.cnblogs.com/549294286/p/3766717.html上一期为大家讲解的CAS机制的基本概念,没看过的小伙伴们可以点击下面的链接:漫画:什么是 CAS 机制? Java当中...

2019-12-23 21:00:00 633

原创 批处理copy某一路径下文件

windows bat批处理复制文件操作(提取后缀名是xml文件)、代码如下:已经测试过的没问题!!说明:该脚本需要传入两个参数,第一个参数是把需要拷贝的文件复制到那,第二个参数是源文件目录的路径@ECHO OFF:: 开启延迟变量setlocal enabledelayedexpansion::目的文件路径set "tag1=%1"set "tag2=%2"echo ...

2019-12-17 21:19:55 1045

原创 批处理脚本学习总结--初步

参考:https://www.cnblogs.com/siwuxie095/category/925785.html批处理(Batch):望文知义,对某对象进行批量处理,是windows中的一种脚本。 .bat和.cmd的文件都是批处理文件,只是前者更常见。第一个批处理文件:保存到桌面位.bat或.cmd格式文件,双击运行运行结果为:@作用就是关...

2019-12-17 21:13:07 772

转载 轻松掌握java读写锁(ReentrantReadWriteLock)的实现原理

前言前面介绍了java中排它锁,共享锁的底层实现机制,本篇再进一步,学习非常有用的读写锁。鉴于读写锁比其他的锁要复杂,不想堆一大波的文字,本篇会试图图解式说明,把读写锁的机制用另外一种方式阐述,鉴于本人水平有限,如果哪里有误,请不吝赐教。公平读写锁ReentrantReadWriteLock的锁策略有两种,分为公平策略和非公平策略,两者有些小区别,为便于理解,本小节将以示例的形式来...

2019-12-04 09:35:15 117

转载 java共享锁实现原理及CountDownLatch解析

前言前面介绍了ReentrantLock,又叫排他锁,本篇主要通过CountDownLatch的学习来了解java并发包中是如何实现共享锁的。CountDownLatch使用解说CountDownLatch是java5中新增的一个并发工具类,其使用非常简单,下面通过伪代码简单看一下使用方式:这是一个使用CountDownLatch非常简单的例子,创建的时候,需要指...

2019-12-04 08:26:03 107

转载 轻松学习java可重入锁(ReentrantLock)的实现原理

本文链接:https://blog.csdn.net/yanyan19880509/article/details/52345422前言相信学过java的人都知道 synchronized 这个关键词,也知道它用于控制多线程对并发资源的安全访问,兴许,你还用过Lock相关的功能,但你可能从来没有想过java中的锁底层的机制是怎么实现的。如果真是这样,而且你有兴趣了解,今天我将带领你轻松的...

2019-12-04 08:20:53 115

原创 同步、异步、阻塞、非阻塞的区别和联系

首先,阻塞、非阻塞和同步、异步没有任何关系,好多人都认为同步就是阻塞,异步就是非阻塞,这一观点认为是不正确的!!首先来解释同步和异步的概念,这两个概念与消息的通知机制有关.更多涉及多线程之间的交互:案例分析:比如我去银行办理业务,可能选择排队等候,也可能取一个小纸条上面有我的号码,等到排到我这一号时由柜台的人通知我轮到我去办理业务了.。前者(排队等候)就是同步等待消息,而后者(等待...

2019-11-20 21:12:38 183

原创 SaxReader解析xml文件--绕过多层for循环

我的xml文件格式:<?xml version="1.0" encoding="UTF-8"?><tclscripts id="1175269" loadmod="ZteTTATUI" loadfun="RefreshLSuite" TclScripts="D:/ATest1.0/Autotest/tclscript" whosave="ZteTTATLSuite:Bui...

2019-11-15 19:40:39 707

原创 RabbitMq入门安装启动--centos7.0 版本

引言:现在好多互联网公司都在使用的一款消息队列,自己也想试一试,然后就开始摸索,遇到的一些坑记录一下,方便以后再次使用的时候好避免,也希望可以帮助到哪些刚用的程序猿。1、环境说明:centos7.0 版本、RPM包安装方式2、RabbitMq官网:https://www.rabbitmq.com/3、官网下载介绍 :3.1我自己下载的是版本是3.7.17,也就是上图所...

2019-09-20 14:16:37 255 2

原创 shell脚本--杀死相关进程

1、通过shell脚本来部署java后端工程:#!/bin/bashusage() { echo "Usage: sh laugchproject.sh [start|stop|restart|status]" exit 1}pid=`ps -ef|grep resource-|grep -v grep | awk '{print $2}'`existflag=...

2019-09-03 11:19:07 1725

原创 始终开启某个进程--shell保护STAF

由于某些原因STAF句柄可能会丢失导致该进程死掉,利用该shell脚本检查该进程是否存在,如果不存在,则自动开启,protect.sh脚本代码如下:#!/bin/bashwhile truedo ProcNumber=`ps -ef |grep STAF|grep -v grep|wc -l` if [ $ProcNumber -le 0 ];then ...

2019-08-20 10:21:01 170

转载 深入理解java的内存模型-----锁

锁的释放-获取建立的happens before 关系转自:http://www.infoq.com/cn/articles/java-memory-model-5锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。下面是锁释放-获取的示例代码:class MonitorExample { int a ...

2019-08-13 20:57:44 133

转载 开启Tomcat APR运行模式,优化并发性能

Tomcat支持三种接收请求的处理方式:BIO、NIO、APR1>、BIO模式:阻塞式I/O操作,表示Tomcat使用的是传统Java I/O操作(即java.io包及其子包)。Tomcat7以下版本默认情况下是以bio模式运行的,由于每个请求都要创建一个线程来处理,线程开销较大,不能处理高并发的场景,在三种模式中性能也最低。启动tomcat看到如下日志,表示使用的是BIO模式:...

2019-08-06 20:14:55 129

原创 求100以内的素数(质数)--典型面试题

求一百以内的素数不包括1,在时间、速度上面要快!!不多说直接上代码。第一种:public class AA { public static void main(String[] args) { long start = System.currentTimeMillis(); //如果要求100以内的质数 for (int i = ...

2019-08-06 14:36:02 1798 1

翻译 JAVA中的四种引用类型--强、软、弱、虚

前言:关于ThreadLocal,并讨论了ThreadLocal的内存泄漏问题。内存泄漏的原因是因为Thread对象内部维护的ThreadLocalMap,这个Map的Key是弱引用类型(WeakReference),而Value是强引用类型,如果Key被回收,Value却不会被回收。那么本期就来总结下Java中的四种引用类型,对概念上要有个理解。为什么需要不同的引用类型从Java1....

2019-07-23 20:12:27 141

原创 写两个线程,其中一个输出打印1-52,另一个打印A-Z,打印顺序为12A34B56C78D...5152Z

这是一个常见的笔试题,自己本身对多线程理解的不是很透彻,特此记录一下这种多线程面试题下面通过两种方式实现。第一种方式通过Lock锁机制来实现:package com.zte.st.dailybuild.controller;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lo...

2019-07-23 14:08:29 818

转载 Git在不提交当前分支的情况下切换到其它分支进行操作——git stash

假如现在的Bug你还没有解决,而上边又给你派了一个新的Bug,而这个Bug相比较现在正在苦思冥想的Bug比较容易解决。你想先解决新的Bug,可是之前的Bug还没有解决完而不能提交。怎么办?解决方法:在其他分支上另开炉灶解决。首先你需要将此刻正在解决Bug的当前分支“储藏”起来。例假如此时正在你在当前分支dev上已进行了Bug修改但还未提交。此时你想去解决刚派下来的另一个Bug...

2019-06-27 10:48:10 1186

原创 Mysql按条件求和Sum函数

首先在写这博客的初衷是因为在工作开发过程中遇到了数据汇总问题,并且有的还是按条件汇总,这就有点小麻烦,然而学会使用sum函数之后,这些问题就迎刃而解了。是不是很Nice。好记性不如烂笔头!再此,希望能帮到类似需求的小伙伴,谢谢!!!下面进入正题。一、汇总数据展示:二、后台数据封装类:public class FtDailyStaticData { private int...

2019-04-16 12:02:23 28534 1

空空如也

空空如也

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

TA关注的人

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