自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 javaAgent和动态attach两种方式实现类的修改和加强

javaAgent和动态attach两种方式实现类的修改和加强

2021-04-23 20:29:32 841

原创 arthas入门

arthas入门简介下载启动常用命令简介基础命令dashboardthreadjadredifinewatchtracestack一些高级用法简介是一款java的诊断工具当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?线上遇到某个用户的数据处理有问题,但线上同样无法 debu

2021-03-29 14:17:05 386

转载 ws协议与http协议

http协议(识别数据内容)与webSocket协议同:建立在TCP之上,同http一样通过TCP来传输数据不同:HTTP协议为单向协议,即浏览器只能向服务器请求资源,服务器才能将数据传送给浏览器,而服务器不能主动向浏览器传递数据。分为长连接和短连接,短连接是每次http请求时都需要三次握手才能发送自己的请求,每个request对应一个response;长连接是短时间内保持连接,保持TCP不断开,指的是TCP连接。WebSocket解决客户端发起多个http请求到服务器资源浏览器必须要经过长时间的轮

2021-03-24 23:27:43 3859

原创 记一次线上的Lock wait timeout

记一次线上的Lock wait timeout事发现场分析正常的锁等待死锁事发现场报错信息如图,Lock wait timeout exceeded(锁等待超时),第一次遇到的时候,同事通过增加innodb_lock_wait_timeout参数到100s(默认是50s)试图来解决这个问题,情况有所好转。但是好景不长,之后再次抛出该异常,可见之前的解决方式并不完美。在比较深入地学习了mysql的相关课程之后(强烈推荐 MYSQL实战45讲),对该问题有了解决思路。分析innodb_dead

2021-03-24 14:11:57 1328

原创 Springboot之独立的spring应用

Springboot之独立的spring应用独立的spring应用FATJAR如何执行FATJAR独立的spring应用如标题所述,springboot帮助实现了一个spring应用,独立强调了spring的核心地位。为什么怎么说呢?难道springboot出现之前,spring在项目中使用的还少么?不少,可是在以前的项目中,不管是web还是非web项目,spring都只是承担的一个粘合的作用,有老外也戏称其为“胶水”。确实,在java EE 体系中,IOC和DI概念是早于spring提出,spring

2020-11-02 14:50:34 1192

原创 Spring之消失的web.xml

我从网上找了一张web项目的目录结构,如下:是不是很熟悉的赶脚^-^几年之前这是当之无愧的主流,但是随着技术的发展,servlet3.0、springboot的诞生,基于xml配置的web项目一去不复返了,取而代之的是springboot。今天不谈springboot是如何玩的,今天的主题是web.xml是如何消失的。因为当下主流的技术就是spring全家桶,探究的目的也是sprin...

2019-09-20 17:27:07 488

原创 AQS原码剖析

什么是线程安全问题?多个线程同时对共享资源进行操作,但并不能保证操作的原子性,可见性和有序性(在java中),由此会导致线程安全问题。模拟一个抢票的场景,问题代码示例:package lock;public class RobTicket { private static int ticket = 50; public static void main(Stri...

2019-08-29 15:02:23 159

原创 设计模式之模板方法模式

使用场景整体业务逻辑的步骤基本一致,具体实现各不相同两个重点模板方法 流程方法模板方法中定义了业务逻辑的实现步骤,先做什么,然后做什么,最后做什么,调用相应的流程方法即可,所以模板方法一般出现于抽象类并有具体实现;流程方法的方法定义出现于抽象类中,一般没有方法体(也可以定义默认实现),由子类控制具体的实现细节。例子用户注册成功之后需要发送短信、邮件等提醒,步骤可以归纳为...

2019-08-28 12:41:14 200

原创 使用idea远程调试java应用

1、编辑配置项2、配置“Remote”模板远程应用的ip地址以及debug端口 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5006 本地的代码目录(待调试)3、通过模板添加新的配置4、启动远程应用是加上参数-agentlib:jdwp=transport=dt_socket,serv...

2019-08-13 10:04:25 197

原创 官网申请免费版xshell、xftp、Xmanager 等等工具

1、登录网址https://www.netsarang.com/en/all-downloads/2、选择菜单3、填写信息4、点击邮箱中的链接进行下载

2019-08-09 10:46:58 6071

转载 TIME_WAIT状态存在的意义

什么时候会TIME_WAITTCP在关闭的时候有个四次挥手的过程,主动关闭方在四次挥手的最后一个ACK发送之后会变成TIME_WAIT状态。主动关闭方跟握手不同,挥手可以由客户端发起,也可以是服务端发起。发起关闭的一端我们称之为主动关闭方,另一端称之为被动关闭方。四次挥手主动关闭方会发送一个FIN给被动关闭方,表示数据已经发送完毕。被动关闭方接收到FIN,响应一个ACK。它的...

2019-07-21 14:28:44 223

原创 dubbo中的注册中心zookeeper如何感知服务下线

zookeeper提供了“心跳检测”功能,它会定时向各个服务提供者发送一个请求(实际上建立的是一个 socket 长连接),如果长期没有响应,服务中心就认为该服务提供者已经“挂了”,并将其剔除。服务消费方会监听zookeeper相应的路径,一旦路径上的数据有任何的变化,zookeeper就会将新的服务列表发送给消费方,消费方在获取到数据后,刷新本地缓存的列表。...

2019-07-09 15:14:44 5301 2

转载 一致性hash算法

转自:https://blog.csdn.net/cb_lcl/article/details/81448570一致性Hash算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot Spot)问题,初衷和CARP十分相似。一致性Hash修正了CARP使用的简单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。...

2019-06-16 15:49:49 138

转载 Spring 中出现相同名称的 bean 的处理机制

转发自molashaonian小总结:如果启用组件扫描,bean名称不同时,Spring将尝试创建一个bean,即使该类的bean已经在spring-config.xml中定义了。但是,如果在spring配置文件中定义的bean和自动发现的bean具有相同的名称,那么在组件扫描时,spring不会创建一个新的bean。spring.xml 与 spring-mvc.xml 定义...

2019-06-06 09:25:02 2399

原创 java编程如何保证多线程运行安全?

java编程是面向对象的,而对象的抽象是类,那么如何做到类是线程安全的,即可保证程序的线程安全。ps:什么是线程安全问题?多个线程同时操作共享变量,并且这些操作不是原子操作如何做到类的线程安全呢?让类无状态类中没有成员变量(既没有静态变量,又没有实例变量)让变量线程私有化栈是线程私有的,所以方法中定义的局部变量便是线程私有的ThreadLocal让变量在每个线程中都保存一...

2019-05-09 09:57:09 4199

原创 Spring常用注解大全

@Configuration从spring3.0开始出现,相当于配置bean的xml文件,使用该注解可以实现基于java类的配置(其他两种方式可以参考这篇文章:Spring总结(二) 如何配置元数据——将bean注入到Spring容器中)。源码如下:被该注解标志的类会创建一个对象,注入到IOC容器中。简单使用:package spring;import org.spr...

2019-05-07 22:35:06 326

转载 一文彻底搞懂面试中常问的各种“锁”

转自深夜里的程序猿https://blog.csdn.net/loveqishan/article/details/88944852前言锁,顾名思义就是锁住一些资源,当只有我们拿到钥匙的时候,才能操作锁住的资源。在我们的Java,数据库,还有一些分布式的环境中,总是充斥着各种各样的锁让人头疼,例如“公平锁”、“自旋锁”、“读写锁”、“分布式锁”等等。其实真实的情况是,锁并没有那么多...

2019-05-05 16:45:58 291

原创 HashMap实现原理

底层是一个数组+链表的结构,从jdk1.8开始,引入了红黑树,当链表的长度超过了阈值8,便会由链表转换为红黑树。数组长度数组的长度一定是,默认初始化长度为16,如果传入了初始化参数i,会将数组长度设置为比i大的最小。数组扩容什么时候扩容?当HashMap的容量超过阈值(threshold)便扩容,threshold=数组长度*loadFactory(默认为0.75)。举个例子,Ha...

2019-05-04 10:13:05 110

原创 @Resource与@Autowired 比较

相同点注解到字段上或者方法上来实现自动装配不同点1、@Autowired是由spring提供的,@Resource是java语言提供的,使用该注解能实现对spring的解耦(不过现在都是spring的天下,意义不大)2、查找bean的方式不同@Autowired:首先通过类型来查找bean,如果自找到一个,则直接注入,如果没有找到,则抛出异常,如果找到多个bean也会抛出异常,...

2019-04-17 14:36:43 1848

原创 锁的优化

减小锁的范围指的是减小持有锁的时间,比较典型的例子是:单例模式-懒加载-双重验证,它与直接在方法上加synchronized关键字来说效率更高降低锁密度指的是减小加锁对象的范围,用两个典型的例子加以说明:1、Mysql数据库中有行锁以及表锁,表锁是对整个表加锁,行锁是对每一行的数据加锁,行锁的锁密度更低,并发程度更高;2、jdk1.7以前的ConcurrentHashMap底层是一个S...

2019-04-16 11:06:42 142

原创 jvm 垃圾回收器的并发与并行

并行:多个垃圾回收线程同时进行并发:用户线程和垃圾回收线程同时进行这里的并发与并行的概念需要与多线程中的概念加以区分,详情可以参考这边博文:多线程 并行与并发的区别...

2019-04-13 09:54:09 932

原创 i=i+1 与 i+=1 区别

满脑子的黑人问号有没有,有的话点一波关注:)起初我也是一脸蒙逼,随着知识的积累,有了新的思考,记录下来仅供参考。从执行效率上来说,i+=1更优我们先来看一段代码public class PlusEqualTest { void m1() { int i = 0; i+=1; } void m2() { int i = 0; i=i...

2019-03-19 09:34:41 16946

原创 yield、sleep、wait、notify、notifyAll调用后对锁的影响

yield:让出时间片,不会释放锁sleep:线程进入睡眠状态,不会释放锁wait:必须拿到锁才能执行,执行后释放锁,进入锁的等待队列,方法返回后重新拿到锁notify:必须拿到锁才能执行,执行后不会立马释放锁,而是通知等待队列中的某一个线程,同步代码块执行完毕后才会释放锁notifyAll:同notify,有一点不同在于,notifyAll会发出n个信号(n=等待线程数),而no...

2019-03-18 09:12:55 578

原创 进程与线程

进程:程序运行资源分配的最小单位,一个进程至少有一个线程(保证程序运行),也可以拥有多个线程,线程间共享进程的内存资源。线程:CPU调度的最小单位...

2019-03-14 08:52:33 105

原创 List List&ltObject&gt List&lt?&gt 之间的区别

有这样一种观点:List 和 List<Object> 是一样的其实不然。从两个方面来分析,1、类型限制 2、赋值限定List 没有类型限制,add 或者 get 的时候,接收或者返回的对象类型是Object,所以在add时任何类型的对象均可,get时返回值类型为Object。List也没有赋值限定,即任何只要是集合类的对象均可,包括有类型限定的集合。List<O...

2019-02-22 16:45:12 2963

转载 web项目如何支持DELETE、PUT请求

转自liuyuanjiang109:https://blog.csdn.net/liuyuanjiang109/article/details/78972644ajax使用restful服务发送put 和 delete 请求时直接传参会出现问题一,采用POST  + _method:delete/put  + filter 的方法ajax发送put 和 delete 请求时,需要传递参数,...

2019-02-21 18:57:40 2933

原创 访问hive cli的新方式

今日在使用hive cli的时候发现,往常常用的“hive”命令突然不好使了,如图:一直卡主不动,询问了专业人士,可能是被什么任务卡死了。于是提供给了我一种新的访问方式——beeline。使用样例如下:[root@slave3 ~]# beelineBeeline version 1.2.1000.2.5.3.0-37 by Apache Hivebeeline> !c...

2019-02-13 15:12:19 693

原创 java8函数式编程 总结(二)Lambda表达式

Lambda表达式是java8为函数式编程特别创造的一种书写形式,就像jstl对于jsp。常见的Lambda书写形式有如下几种情形:没有参数不能省略"()",如:Runnable runnable = () -> System.out.println("hello word");有一个参数可以省略"()"和参数类型,如:button.addActionListen...

2019-02-12 17:33:47 148

原创 hadoop hdfs 命令大全

选项名称 使用格式 含义 -ls -ls <路径> 查看指定路径的当前目录结构 -lsr -lsr <路径> 递归查看指定路径的目录结构 -du -du ...

2019-01-29 10:13:05 179

转载 Java数据类型和MySql数据类型对应一览

转自https://www.cnblogs.com/hellocz/p/6393500.html类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述             VARCHAR L+N VARCHAR java.lang.String 12   CHAR...

2019-01-25 10:38:19 185

原创 java8 一行实现Map按value大小排序

List<Map.Entry<Integer,Integer>>list = map.entrySet().stream() .sorted((entry1, entry2) -> entry1.getValue().compareTo(entry2.getValue())) .collect(Collectors.toList());这...

2019-01-04 18:58:07 8874 4

原创 java8函数式编程 总结(一)简介

什么是函数式编程?在《java8 函数式编程》一书中并没有对函数式编程下一个定义,如作者所说,每个人都有不同的理解。那么我的理解是,可以将一个函数作为参数传入到另一个函数中,在java中来说即是——可以将一种行为(方法)作为参数传入到一个方法中。什么是Lambda表达式?Lambda表达式是一种传递行为的方式。说白了,java8定义Lambda表达式式为了告知开发者如何正确的定义一种“...

2018-12-27 16:44:52 197

原创 Spring总结(二) 如何配置元数据——将bean注入到Spring容器中

Spring中配置元数据可以采用三种方式,它们可以混合使用基于XML的配置元数据 基于注解的配置元数据 基于Java的配置元数据。默认情况下,方法名就是Bean的名称。早在几年以前多数的java项目采用的是基于XML的方式,但是现在常用的方式为第二种和第三种,并且常常是结合起来使用。什么是基于注解的配置元数据呢?比如web项目中的Contrller层,Service层,Dao层均...

2018-12-27 15:16:42 2995

原创 Linux 下载文件到windows本地

从Linux服务器下载文件到本地sz  服务器的file路径。例如 sz * 会自动弹出窗口,选中本地要存放的文件位置 从本地上传文件到Linux服务器rz 会自动弹出窗口,选中本地要上传的文件 ...

2018-12-27 15:03:43 7079

原创 Spring总结(一) Spring简介

Spring是什么?程序员口中常被提到的spring其实全称为 Spring Application Framwork,它是当下非常流行的web应用框架。Spring有什么特点?Spring的核心思想可以用一句话来描述——“依赖注入,控制反转”。可以把它看做成一个容器,当中管理者应用中大大小小的实例,如果需要某个类的实例,直接通过ApplicationContext获取即可。Sprin...

2018-12-27 14:56:31 289

转载 xshell 6 免费个人版下载

转自  chinange第一步:首先进入网站下载网址为:https://www.netsarang.com/download/main.html其中有熟悉的X shell 和Xftp 如图:我们点击Xshell 6 Download按键,然后填写表单信息进行免费版获取  点击 Download在上图中如实填写:Lisence type 选择 Home and schoo...

2018-12-19 14:20:31 1092

原创 POI 中的CellType类型以及值的对应关系

CellType     类型     值 CELL_TYPE_NUMERIC     数值 0 CELL_TYPE_STRING     字符串型 1 CELL_TYPE_FORMULA     公式型 2 CELL_TYPE_BLANK     空值 3 CELL_TYPE_BOOLEAN     布尔型 ...

2018-11-16 14:55:30 16491 2

原创 lombok @Builer.Default 需要注意的坑

最近在开发过程中,想让实体类中的boolean字段默认为true,于是我在字段定义后赋值为true,同时该类上有@Builder注解,我希望在使用builder方式创建实例的时候该字段也能默认为true,查看资料后发现@Builder.Default注解很合适。实际运行代码之后,我发现一个无奈的问题,builder模式下默认值生效了,但是使用new得到的实例默认值为false。贴上测试代码,清晰些...

2018-11-15 15:48:21 17943 4

转载 什么叫方法签名 Java

转自李学凯方法签名由方法名称和一个参数列表(方法的参数的顺序和类型)组成。注意,方法签名不包括方法的返回类型。不包括返回值和访问修饰符。常见的问题应用:重载和重写。public class A{     protected int method (int a, int b) {         return 0;     } }class B extends A{    p...

2018-11-12 11:25:05 416

转载 @Value("#{}")与@Value("${}")的区别

1 @Value("#{}")   SpEL表达式@Value("#{}") 表示SpEl表达式通常用来获取bean的属性,或者调用bean的某个方法。当然还有可以表示常量   @RestController @RequestMapping("/login") @Component public class LoginController { ...

2018-11-05 10:45:39 302

空空如也

空空如也

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

TA关注的人

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