自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

爱飞的笨鸟的博客

千里之行,始于足下.

  • 博客(102)
  • 资源 (4)
  • 问答 (3)
  • 收藏
  • 关注

转载 并发编程this逸出

并发编程实践中,this引用逃逸("this"escape)是指对象还没有构造完成,它的this引用就被发布出去了。这是危及到线程安全的,因为其他线程有可能通过这个逸出的引用访问到“初始化了一半”的对象(partially-constructed object)。这样就会出现某些线程中看到该对象的状态是没初始化完的状态,而在另外一些线程看到的却是已经初始化完的状态,这种不一致性是不确定的,程序也会因此而产生一些无法预知的并发错误。在说明并发编程中如何避免this引用逸出之前,我们先看看一个对象是如何产生th

2021-04-08 21:14:31 256

转载 mybatisPlus关于and和or的语法

最近在使用MyBatis Plus,发现在拼接条件的时候,and和or会出问题比如下面这种QueryWrapper<User> userWrapper = new QueryWrapper<User>();userWrapper.eq("name", name);userWrapper.eq("pwd", pwd).or().eq("phone", phone);这种写法拼出来的SQL语句是这样的select * from user where (name = ? an

2021-03-24 13:48:24 593

转载 Redis分布式锁的实现原理

目录一、写在前面二、Redisson实现Redis分布式锁的底层原理(1)加锁机制(2)锁互斥机制(3)watch dog自动延期机制(4)可重入加锁机制(5)锁释放机制(6)此种方案Redis分布式锁的缺陷三、未完待续一、写在前面现在面试,一般都会聊聊分布式系统这块的东西。通常面试官都会从服务框架(Spring Cloud、Dubbo)聊起,一路聊到分布式事...

2021-02-03 14:37:00 808

原创 sql in 的多字段匹配

技术点in 的用法 类似于:select * from t where (a,c) in ((a1,c2),(a2,c3));首先:in的单字段 匹配select * from where a in (a1,a2,a3);该语法中a 的 类型如果是 纯数字的,即使 01,02这种的字符串也是可以执行成功的,并且不需要加单引号.如果是多字段匹配的时候,那么,如果只有一个匹配项,是没有问题的,也不用加单引号 类似于select * from t where (a,c) in ((01,01

2021-01-27 20:29:48 10866 3

转载 Java如何对一个对象进行深拷贝?

本文收藏了,作者写的很好,本人选用GSON的写法,主要是简单,通用性强.在Java语言里,当我们需要拷贝一个对象时,有两种类型的拷贝:浅拷贝与深拷贝。浅拷贝只是拷贝了源对象的地址,所以源对象的值发生变化时,拷贝对象的值也会发生变化。而深拷贝则是拷贝了源对象的所有值,所以即使源对象的值发生变化时,拷贝对象的值也不会改变。如下图描述:了解了浅拷贝和深拷贝的区别之后,本篇博客将教大家几种深拷贝的方法。拷贝对象首先,我们定义一下需要拷贝的简单对象。 1 ...

2021-01-25 16:05:13 218

原创 5.代码修改与冲突解决

1.1代码修改1.1.1更新代码修改代码前,我们都需要先将远端分支中的别人修改的代码更新到本地,防止代码冲突点击右上角的如果报错:直接按提示:在terminal中输入:我的是:然后再拉取就可以了。1.1.2提交代码检查完毕之后,点击commit按钮右边的下拉框,选中commit and push即可将代码推送到远端。如果点击commit ,则只会将代码提交到本地。点击完之后会让你天用户名和邮箱,邮箱格式...

2020-07-13 20:41:27 866

原创 4. 分支管理

1.1分支管理1.1.1创建分支v在dev的基础上创建新的分支;首先找到dev分支,点击idea右下角的master (分支的按钮)按钮,在remote branchs列表中找到origin/dev,点击,并选中New Branch from selected..此时,我们可以看到右下角的分支名称已经改变,event log也显示已经检出成功,然而,我们打开gitlab 发现并没有我们创建的分支,这是因为我们此时只是在本地创建成功了,还没有push到远端仓库中,之后会有很...

2020-07-13 20:36:20 2818 2

原创 3.拉取远端源码

1.1拉取远端源码(master) 1.1.1创建一个空文件夹(一会儿我们克隆到这个里面)1.1.2Clone(克隆)打开IDEA ---->file------->New..------>Project From Version Control复制git源码地址之后需要配置maven (也在setting里面配置),不在本文档介绍范围之内,如不会请自行百度。成功后的界面:我们可以看到,当前我...

2020-07-13 20:31:26 591

原创 2.IDEA 配置git

1IDEA 配置git1.1操作步骤v打开idea,进入任何一个工作空间。v使用快捷键CTRL+ALT+s 进入setting,之后的操作如下:1.2测试:点击test 按钮 下方显示git的版本号,表示配置成功。...

2020-07-13 20:29:08 374

原创 1.git安装与检测

安装 (windows) 双击git.exe,一路next,记住安装路径(在idea配置git时要用,默认C:\Program Files\Git)就行了。 测试 打开cmd控制台,输入git,显示下面内容表示安装成功。

2020-07-13 19:34:27 637

转载 REDIS缓存穿透,缓存击穿,缓存雪崩原因+解决方案

一、前言在我们日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度比较慢的问题而存在严重的性能弊端,一瞬间成千上万的请求到来,需要系统在极短的时间内完成成千上万次的读/写操作,这个时候往往不是数据库能够承受的,极其容易造成数据库系统瘫痪,最终导致服务宕机的严重生产问题。为了克服上述的问

2020-06-22 16:01:22 132

原创 3.自动化部署(github+webhook+jenkins+springboot+maven)

1.如果jenkins的相关部署不太了解可以移步到我的其他两篇博文稍作了解https://blog.csdn.net/m0_37970699/article/details/106709472https://blog.csdn.net/m0_37970699/article/details/1067145942.下面开始首先说下思路:其实就是通过github 的webhook 触发jenkins的部署就行了流程是这样的:本地修改代码后提交到github ---->githu

2020-06-12 16:24:32 487

原创 2.构建Pipeline流水线(springboot+maven+github+jenkins)

1.构建 springboot+maven+GitHub+jenkins 手动部署请参照:https://blog.csdn.net/m0_37970699/article/details/106709472接着.本文实现 pipeline流水线的构建形式:也就是直接通过脚本,直接构建所有步骤,废话不多说,下面正式开始:2.构建新项目点击 new item 关键来了:主要是写这个groovy脚本,如果你本身就会,那就随便玩了,如果不会比如我这样的,就需要使用下..

2020-06-12 14:08:30 3868

原创 1.环境搭建jenkins(docker安装)+github+springboot(手动部署)

1.安装docker https://blog.csdn.net/m0_37970699/article/details/103677596Docker 相关命令:https://blog.csdn.net/m0_37970699/article/details/1058452672.docker 安装jenkinsdocker search jenkins 选择最新的镜像docker pull jenkins在home目录下创建jenkins的工作空间挂载目录...

2020-06-12 09:59:46 637

原创 docker命令大全以及使用注意事项

1.帮助命令docker --help 命令帮助docker version docker版本信息docker info docker 的详细的信息2.镜像命令docker images 本地的镜像列表docker search image_name 查询远程仓库镜像(阿里云镜像仓库)docker search -s 30 --no-trunc tomcat ...

2020-04-29 17:51:25 1237

原创 idea通过Tomcat启动ssm项目跳转空白页或404

1.通过Tomcat启动后跳转到空白页面然后各种访问都是空白页面:这种情况是idea没有将resource或者webapp文件识别为源文件正确的配置应该是:注意resources与webapp的文件夹标识是Resources的,如果不是需要手动添加为Resource即选中文件夹右键选择Resources即可2.通过Tomcat启动后跳转到404页面,说明项目启动成功,访问路...

2020-03-07 23:32:24 5749 4

转载 OOM问题快速定位

有一个Java服务出现了OOM(Out Of Memory)问题,定位了好久不得其法,请问有什么好的思路么?OOM的问题,印象中之前写过,这里再总结一些相对通用的方案,希望能帮助到Java技术栈的同学。某Java服务(假设PID=10765)出现了OOM,最常见的原因为: 有可能是内存分配确实过小,而正常业务使用了大量内存 某一个对象被频繁申请,却没有释放,...

2020-01-13 14:04:50 920

转载 CPU 过高快速定位问题代码

假设,服务器上部署了若干Java站点服务,以及若干Java微服务,突然收到运维的CPU异常告警。如何定位是哪个服务进程导致CPU过载,哪个线程导致CPU过载,哪段代码导致CPU过载?简要步骤如下:(1)找到最耗CPU的进程;(2)找到最耗CPU的线程;(3)查看堆栈,定位线程在干嘛,定位对应代码;步骤一、找到最耗CPU的进程工具:top方法:...

2020-01-13 13:50:26 944 1

原创 listagg 函数导致中文乱码

1.背景oracle 12.2c 数据库导入到oracle 12.1c 数据库后,通过listagg的函数中文乱码,不太清楚是为什么,两个数据库编码都一样,表结构与数据都是直接导过来的现象:用sql查是一样的: listagg(p.C_NAME, ',')within group( order by p.C_NAME)OVER (PARTITION BY t.C_ORDERNUMBER)...

2020-01-09 09:46:17 1813

原创 3.ES----IndexTemplate 和 dynamicTemplate

1.索引模板 IndexTemplate可以看到setting是用来设定集群存储的,mapping是用来定义具体的索引设置.这里需要注意一下order 的值这个规定,使我们可以找到到底使用的是哪个索引模板中的设置. 上面的就是顺序.也就是说先去配置默认的设定,如果有模板则去寻找较低的order,用较低的order的模板覆盖默认模板,再去找order较高...

2020-01-08 20:30:57 614

原创 部署服务到新的服务器教训记录

服务器配置:1.检查磁盘大小df -h2.检查物理内存大小free -h对比之前的服务器,查看配置是否一致,如果比原服务更好,则没问题,如果差的较多,则需要考量以上两个参数是否足够使用.我的原服务器是32g的内存,新服务器的可用内存只有8g导致有些服务启动不了,这个在添加了虚拟内存之后有了一定的改善,但是仍然是不够使用,并且使用虚拟内存也就是交换区的话会使服务器变慢,不建议过多的使用最...

2020-01-07 15:30:56 320

原创 1.docker安装与运行

1.查看是否安装了dockerps -ef | grep docker2.开始安装dockeryum install -y docker3.安装完成后 禁用防火墙,与selinux查看防火墙状态:systemctl status firewalld.service关闭防火墙:systemctl stop firewalld.service禁用防火墙:...

2019-12-24 09:43:51 320

原创 3.ES----自定义Mapping以及null值设定

PUT index{“mappings” :{//define your mapping}}一些安全信息例如身份证号,生日,手机号等不希望被索引到,可以讲index 设置为false ,减小开销该字段不会被倒排索引了null 值 设定keyword:(关键字)索引结构化内容(如ID、电子邮件地址、主机名、状态码、邮政编码或标记)的字段。它们通常用于筛选(查找发布状...

2019-12-20 17:57:34 1392

原创 2.ES----Logstash 安装与测试数据导入

1.下载Logstash 安装包注意版本对应,解压2.下载movieton测试数据 ,解压得到 movies.csv 文件,复制到logstash的bin目录下3.在config目录下 新建文件 logstash.conf文件# Sample Logstash configuration for creating a simple# Beats -> Logstash -> E...

2019-12-19 10:44:31 512

转载 1.ES---脚本化字段

脚本化 field 示例本小节展示了 Kibana 中一些常见场景下的 Lucene expressions 和 Painless 脚本化 field 示例。如上所述,这些示例以来自 Kibana 入门教程的数据集为基础,并且假定你使用的是 Elasticsearch 和 Kibana 5.1.1,因为在之前的版本中,某些类型的脚本化 field 中存在一些与过滤和排序相关的已知问题。由于 E...

2019-12-18 16:39:10 958

原创 进阶--研磨设计模式----单例模式

单例模式由于是进阶,基础的饿汉式与懒汉式单例模式就不在这里说明了,双重检查的写法也没什么可讲的,算是高级一点放上代码吧,双重检查:public class DoubleCheckSingleton { //私有化构造方法 private DoubleCheckSingleton(){}; //自己作为属性: 添加volatile 修饰,使其对所有线程可见 p...

2019-12-16 16:19:06 159

原创 进阶--研磨设计模式----适配器模式

简介适配器模式使用场景: 当我们有已经实现的功能,但是与现在要求的接口不一致,则可以使用适配器模式用现在的接口去调用已经有了的实现的接口,总之,适配器的使用是为了复用已有的功能.例子其实,我们在工作中用的很多,例如Aservice a方法 需要调用Bservice的方法 b方法,就需要将BService实例注入到Aservice中,这就是适配器的使用了,我们要调用A的方法,但是我们知道了B...

2019-12-16 14:28:23 105

原创 oracle 查看被锁表以及解锁

Oracle数据库操作中,我们有时会用到锁表查询以及解锁和kill进程等操作,那么这些操作是怎么实现的呢?本文我们主要就介绍一下这部分内容。(1)锁表查询的代码有以下的形式:select count(*) from v$locked_object;select * from v$locked_object;(2)查看哪个表被锁select b.owner,b.object_nam...

2019-12-13 10:15:59 687

转载 mysql数据库中查询表是否被锁

查看表是否被锁:直接在mysql命令行执行:show engine innodb status\G。查看造成死锁的sql语句,分析索引情况,然后优化sql.然后show processlist,查看造成死锁占用时间长的sql语句。show status like ‘%lock%。查看表被锁状态和结束死锁步骤:1.查看表被锁状态show OPEN TABLES where In_use &...

2019-12-13 10:13:49 1470

原创 测试用例springboot(cloud)+Junit4+MockMVC

1.通过springboot+Junit4+MockMVC 测试controller右键单击 -->GO TO–>Test–>GREATE NEW TEST生成测试类以及目录就可以测试了.变绿了!可以打断点.测试跟踪.@RunWith(SpringRunner.class)@SpringBootTest(classes = {AdminApplicatio...

2019-12-06 21:33:31 504

原创 2.进阶--研磨设计模式----外观模式

1.外观模式:作用或者优点: 为某个系统的组合功能提供一个外层,也就是客户端使用系统的某个组合功能(需要与多个子模块交互)时候,可以通过提供一个外层,来避免客户端对子模块复杂的调用,简化了客户端的使用步骤,客户端只需要与外观交互即可.缺点或者是注意点: 外观模式是由上到下的调用,不要存在反向的调用(防止循环调用,spring中类的注入,如果存在循环注入的话,会编译不通过,而且也是不符合逻辑的,...

2019-11-29 16:40:54 130

原创 再刷设计模式概述

1.本次学习设计模式起因是因为目前自己的能力呢到了一个瓶颈,是怎么的具体的情况呢?就是工作中的任务基本上都可以很好的实现,但是呢总觉得少点艺术性,对编程的艺术没有什么概念,也就是功能都能实现(大部分),但是呢没有什么更好的可以拿出来说的东西除了仅仅完成了功能,并且目前需要学习一些更加大的概念比如抽象,分化,分治等为进阶架构师做准备.2.进阶的话,需要学习框架源码等,提前再学一遍设计模式有助于理解...

2019-11-29 15:04:27 91

原创 Java8 新特性之Stream入门以及实战

什么是StreamStream(流)是一个来自数据源的元素队列并支持聚合操作 元素是特定类型的对象,形成一个队列。 Java中的Stream并不会存储元素,而是按需计算。 数据源 流的来源。 可以是集合,数组,I/O channel, 产生器generator 等。 类似SQL语句一样的操作, 比如filter, map, reduce, find,...

2019-11-15 16:48:56 136

原创 sql自定义变量的基本用法

1.employee表按 salary进行排名,相同的排名相同,并且排名连续:sql:SELECT@num := IF(@salary = salary, @num, @num + 1) num,//另@num重新赋值(如果@salary = 当前记录的salary,@num赋值为@num,否则赋值为@num+1 )@salary := salary salaryFROMempl...

2019-11-14 12:32:33 1964

转载 sql排序,组内排序

一、排名/*普通排名:从1开始,顺序往下排*/SELECT cs.*,@r :=@r + 1 AS rankFROM cs,(SELECT @r := 0) rORDER BY score;/*并列排名:相同的值是相同的排名*/SELECT cs.* ,CASE WHEN @p=score THEN @rWHEN @p:=score THEN @r:=@r+1 #这里最好是...

2019-11-14 11:56:37 2022

转载 1.JVM FullGC 触发条件汇总

一共5种场景1.System.gc()程序中显式的调用System.gc(),有可能会触发Full GC。(比如NIO中的直接内存使用)使用-XX:-+DisableExplicitGC 参数,可以禁用。2.老年代空间不足这个空间不足有两种,一种是分配一个对象,空间真的不足。另一种是由于内存碎片,导致没有连续内存空间来分配给对象。3.CMS GC时出现空间分配担保失败和concurren...

2019-11-12 10:45:17 4536 2

转载 一个由-XX:SurvivorRatio失效引发的探索

最近死磕一个关注吞吐量的应用程序,初期参数如下:-Xms4096m -Xmx4096m -Xss256K -XX:PermSize=128m -XX:MaxPermSize=256m -Xmn3g -XX:SurvivorRatio=4 -XX:+UseParallelGC -XX:ParallelGCThreads=16 -XX:+UseParallelOldGC -XX:...

2019-11-12 09:53:30 673

原创 JVM---双亲委派模型(源码详解)

含义1.双亲委派模型是从JDK1.2开始至今都在沿用的类加载模型,具体的逻辑是:先看源码: protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException { synchronized (getClassLoadingLock(...

2019-11-07 17:53:14 527 1

原创 JVM----垃圾收集信息解读实战

demo1public class Main { public static void main(String[] args) { { byte[] bytes=new byte[20*1024*1024]; } System.gc(); }}在 verbose:gc -XX:PrintGCDetail...

2019-11-04 18:05:42 141

转载 JVM---GC回收信息详解(PrintGCDetails)

Java GC日志可以通过 +PrintGCDetails开启以ParallelGC为例YoungGC日志解释如下(图片源地址:这里) :FullGC(图片源地址:这里):

2019-11-04 15:05:01 2009 2

springboot 微服务直接可以使用的脚本无需任何修改

该脚本无需任何修改,只可以直接使用,springboot项目的jar包启动方式,只要是springboot的jar包,都可以直接使用

2019-04-29

oracle 32bit-instantclient-basic-nt-12.1.0.1.0

该软件用于配合PL/SQL developer完成对oracle数据库的操作,也可以适配64位的oracle客户端与developer进行连接

2019-04-21

7.1PLSQL Developer

该资源是7.1PLSQL Developer的安装包,可以解压后直接使用,不用安装,当然你也可以自己重新安装,用于配合Oracle数据服务器或者客户端操作数据库

2019-04-21

Oracle 64bit 11g win 客户端

该资源是Oracle 64bit 11g win 客户端,相信工作的小朋友都会用到,配合PL/SQL developer使用更是舒服.希望对大家有用

2019-04-21

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

TA关注的人

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