自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 关于SpringBoot项目打包没有把依赖的jar包一起打包的解决办法

一般未一起打包是因为pom不是继承自spring-boot-starter-parent导致的需要在pom.xml文件写入以下配置 1 <build> 2 <plugins> 3 <plugin> 4 <groupId>org.springframework.boot&lt...

2019-09-19 13:10:00 1256

转载 Spring中你可能不知道的事(一)

Spring作为Java的王牌开源项目,相信大家都用过,但是可能大家仅仅用到了Spring最常用的功能,Spring实在是庞大了,很多功能可能一辈子都不会用到,今天我就罗列下Spring中你可能不知道的事。一是可以帮助大家以后阅读源码,知道Spring为什么会这么写,二是可以作为知识储备,可以对Spring有一个更全面的认识。register现在官方推荐应该就是用JavaConf...

2019-09-17 22:27:00 186

转载 Spring中的aware接口

Spring中有很多继承于aware中的接口,这些接口到底是做什么用到的aware,翻译过来是知道的,已感知的,意识到的,所以这些接口从字面意思应该是能感知到所有Aware前面的含义。先举个BeanNameAware的例子,实现BeanNameAware接口,可以让该Bean感知到自身的BeanName(对应Spring容器的BeanId属性)属性,举个例子:...

2019-09-17 21:52:00 186

转载 细说OSI七层协议模型及OSI参考模型中的数据封装过程

OSI模型,即开放式通信系统互联参考模型(Open System Interconnection,OSI/RM,Open Systems InterconnectionReference Model),是国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内互连为网络的标准框架,简称OSI。0SI/RM协议是由IS0(国际标准化组织)制定的,它有三个基本的功...

2019-09-02 15:31:00 1128

转载 java字符串转义,把&lt;&gt;转换成<>等字符

使用的是commons-lang3-3.4中的StringEscapeUtils类 1 package test; 2 3 import java.io.IOException; 4 5 import org.apache.commons.lang3.StringEscapeUtils; 6 7 public class EscapeTest {...

2019-08-21 10:28:00 3478

转载 filebeat工作原理

Filebeat是本地文件的日志数据采集器。 作为服务器上的代理安装,Filebeat监视日志目录或特定日志文件,tail file,并将它们转发给Elasticsearch或Logstash进行索引、kafka 等。工作原理:Filebeat由两个主要组件组成:prospector 和harvester。这些组件一起工作来读取文件(tail file)并将事件数据发送到您指...

2019-08-06 19:15:00 122

转载 Java并发编程-CAS

1、并发编程三要素-原子性、可见性、有序性  在讨论CAS前,我想先讨论一下并发编程的三要素,这个应该可以帮助理解CAS的作用等。其实上一篇提到的Java内存模型就是围绕着在并发过程中如何处理原子性、可见性和有序性这3个特征来建立的,所以我理解Java编程实现如果满足了这3个特性,就是线程安全的,可以支持并发访问。原子性:指的是一个操作不能再继续拆分,要么一次操作完成,要么就...

2019-07-30 13:55:00 72

转载 Java并发编程-volatile

一直以为多线程环境的同步只能通过这个来实现的,事实上Java还提供了另外一个更加轻量级的实现-volatile,如果说synchronized实现了数据在同一时刻只能有一个线程对数据访问的话,那么volatile实现的就是同时可以多个线程在访问数据,但是只要数据发生了变化,便确保其他线程及时“感知”这种变化。1、CPU、主存及高速缓存的概念  计算机的硬件组成可以抽象为由总线、I...

2019-07-30 13:54:00 65

转载 Java并发编程-synchronized

1、为什么会用到synchronized  Java语言的一个高级特性就是支持多线程,线程在操作系统的实现上,可以看成是轻量级的进程,同一进程中的线程都将共享进程的内存空间,所以Java的多线程在共享JVM的内存空间。JVM的内存空间主要分为:程序计数器、虚拟机栈、本地方法栈、堆、方法区和运行时常量池。  在这些内存空间中,我们重点关注栈和堆,这里的栈包括了虚拟机栈和本地方法栈(...

2019-07-30 13:49:00 111

转载 Java并发编程-看懂AQS的前世今生

在具备了volatile、CAS和模板方法设计模式的知识之后,我们可以来深入学习下AbstractQueuedSynchronizer(AQS),本文主要想从AQS的产生背景、设计和结构、源代码实现及AQS应用这4个方面来学习下AQS,文章耗时一个月,所以篇幅有点长,需要一点耐心。  1、AQS产生背景  通过JCP的JSR166规范,Jdk1.5开始引入了j.u.c包,这个包提...

2019-07-30 10:55:00 63

转载 Java并发编程-ReentrantLock

上文已经总结了AQS的前世今生,有了这个基础我们就可以来进一步学习并发工具类。首先我们要学习的就是ReentrantLock,本文将从ReentrantLock的产生背景、源码原理解析和应用来学习ReentrantLock这个并发工具类。1、产生背景  前面我们已经学习过了synchronized,这个关键字可以确保对象在并发访问中的原子性、可见性和有序性,这个关键字的底层交由...

2019-07-30 10:37:00 90

转载 Java并发编程-ReentrantReadWriteLock

基于AQS的前世今生,来学习并发工具类ReentrantReadWriteLock。本文将从ReentrantReadWriteLock的产生背景、源码原理解析和应用来学习这个并发工具类。1、产生背景  前面我们学习的重入锁ReentrantLock本质上还是互斥锁,每次最多只能有一个线程持有ReentrantLock。对于维护数据完整性来说,互斥通常是一种过于强硬的规则,因此...

2019-07-30 10:33:00 107

转载 Java并发编程-CountDownLatch

基于AQS的前世今生,来学习并发工具类CountDownLatch。本文将从CountDownLatch的应用场景、源码原理解析来学习这个并发工具类。1、应用场景  CountDownLatch是并发包中用来控制一个或者多个线程等待其他线程完成操作的并发工具类。现以工作中的一个场景来描述下CountDownLatch的应用,代码如下: 1 /* 2 模拟工作中的一个...

2019-07-30 10:29:00 100

转载 Java并发编程-Semaphore

基于AQS的前世今生,来学习并发工具类Semaphore。本文将从Semaphore的应用场景、源码原理解析来学习这个并发工具类。1、应用场景  Semaphore用来控制同时访问某个特定资源的操作数量,或者同时执行某个指定操作的数量。还可以用来实现某种资源池限制,或者对容器施加边界。1.1当成锁使用  控制同时访问某个特定资源的操作数量,代码如下: 1 ...

2019-07-30 10:10:00 97

转载 Spring3.1新属性管理API:PropertySource、Environment、Profile

新的属性管理APIPropertySource:属性源,key-value属性对抽象,比如用于配置数据PropertyResolver:属性解析器,用于解析相应key的valueEnvironment:环境,本身是一个PropertyResolver,但是提供了Profile特性,即可以根据环境得到相应数据(即激活不同的Profile,可以得到不同的属性数据,比如用于多环境场...

2019-07-29 15:11:00 140

转载 mybatis 使用sqlSessionFactory实现批量操作

sqlSessionFactory实现批量提交的java,但无法返回受影响数量。 1 public int updateBatch(List<Object> list){ 2 if(list ==null || list.size() <= 0){ 3 return -1; 4 } 5 ...

2019-07-29 11:43:00 1819

转载 java 8新特性 instant 和 LocalDateTime

一直都知道SimpleDateFormat是线程不安全的,现在还是出现了问题。阿里Java规范中(六.5)有这么一条强制Instantjava.time 包中的 Instant 类代表的是某个时间(有点像 java.util.Date),准确的说是:”是不带时区的即时时间点“,它是精确到纳秒的(而不是象旧版本的Date精确到毫秒)。如果使用纳秒去表示一个时间则原来使用一位...

2019-07-12 11:29:00 454

转载 后端开发_使用@DateTimeFormat注解解决前台string类型与后台date类型的转换,使用@JsonFormat注解解决后台date类型与前台string类型的转换...

说明:有的时候由前台jsp页面填写一个日期,提交到后台spring mvc的时候,我们希望直接转换成一个Date类型,而不是由一个string 类型接收,然后再通过simpleDateFormat来进行转格式,这样太麻烦了,代码会显的很乱,spring为我们提供了类型转化器,写起来也是很麻烦,我们的需求很简单就是由框架帮我们去自动的转换类型而不是手动的转换,在这样的背景下,我们可以使...

2019-07-09 10:26:00 241

转载 shell关闭指定进程

例如要关闭jupyter-notebook这个进程:ps -ef | grep jupyter-notebook | grep -v grep | cut -c 9-15 | xargs kill -9说明:管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。  “ps -ef” 查看所有进程  “grep -v grep” 是在列出的进程...

2019-06-28 11:11:00 219

转载 socket跟TCP/IP 的关系,单台服务器上的并发TCP连接数问题

常识一:文件句柄限制在Linux下编写网络服务器程序的朋友肯定都知道每一个tcp连接都要占一个文件描述符,一旦这个文件描述符使用完了,新的连接到来返回给我们的错误是“Socket/File:Can'topen so many files”。这时你需要明白操作系统对可以打开的最大文件数的限制。进程限制执行ulimit -n 输出1024,说明...

2019-06-28 11:08:00 429

转载 最详细的Log4j使用教程

日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j可以免费下载到Log4j最新版本的软件包。一、入门实例1.新建一个JAva工程,导入包log4j-1.2.17.jar,整个工程最终目录如下2、src同级创建并设置log4j.propertie...

2019-06-22 18:14:00 88

转载 [Java IO]06_JSON操作

6.1 JSON知识背景6.1.1 JSON简介JSON: JavaScript Object Notation(JavaScript对象表示法)JSON是存储和交换文本信息的语法。类似XML。JSON比XML更小、更快,更易解析。JSON使用Javascript语法来描述数据对象,但是JSON仍然独立于语言和平台。JSON解析器和JS...

2019-06-22 18:07:00 99

转载 mybatis一次执行多条SQL语句

首先在数据库连接URL上加上allowMultiQueries=true,默认mysql是不支持一次执行多条SQL语句的。1 jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true在delete节点中添加多条语句:...

2019-06-12 17:10:00 337

转载 springboot Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder ‘name’ in va...

springboot启动时会检索 @Value 对应配置文件中的key,当该key不存在时就会报:Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder异常,解决方案有两种:1,设置 @Value 的默认值1 @Value("${name:default_name}")2 p...

2019-06-03 19:28:00 33785

转载 JAVA中的强引用(StrongReference)、软引用(SoftReference)、弱引用(WeakReference)和幽灵引用(PhantomReference)...

强引用:只要引用存在,垃圾回收器永远不会回收Object obj = new Object();//可直接通过obj取得对应的对象 如obj.equels(new Object());而这样 obj对象对后面new Object的一个强引用,只有当obj这个引用被释放之后,对象才会被释放掉,这也是我们经常所用到的编码形式。软引用:非必须引用,内存溢出之前进行回收,可以通...

2019-05-27 16:00:00 85

转载 mysql 查询当天、本周,本月,上一个月的数据

今天select * from 表名 where to_days(时间字段名) = to_days(now());昨天SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1近7天SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTE...

2019-05-14 11:06:00 74

转载 Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore

在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。  以下是本文目录大纲:  一.CountDownLatch用法  二.CyclicBarrier用法  三.Semaphore用法一.CountDownLatch用法  ...

2019-05-10 16:10:00 77

转载 Java开发必须掌握的线上问题排查命令

作为一个合格的开发人员,不仅要能写得一手还代码,还有一项很重要的技能就是排查问题。这里提到的排查问题不仅仅是在coding的过程中debug等,还包括的就是线上问题的排查。由于在生产环境中,一般没办法debug(其实有些问题,debug也白扯。。。),所以我们需要借助一些常用命令来查看运行时的具体情况,这些运行时信息包括但不限于运行日志、异常堆栈、堆使用情况、GC情况、JVM参数情况、线...

2019-05-08 17:09:00 85

转载 Java命令学习系列(七)——javap

javap是jdk自带的一个工具,可以对代码反编译,也可以查看java编译器生成的字节码。一般情况下,很少有人使用javap对class文件进行反编译,因为有很多成熟的反编译工具可以使用,比如jad。但是,javap还可以查看java编译器为我们生成的字节码。通过它,可以对照源代码和字节码,从而了解很多编译器内部的工作。实例javap命令分解一个class文件,它根据...

2019-05-08 17:08:00 72

转载 Java命令学习系列(六)——jinfo

jinfo可以输出java进程、core文件或远程debug服务器的配置信息。这些配置信息包括JAVA系统参数及命令行参数,如果进程运行在64位虚拟机上,需要指明-J-d64参数,如:jinfo -J-d64 -sysprops pid另外,Java7的官方文档指出,这一命令在后续的版本中可能不再使用。笔者使用的版本(jdk8)中已经不支持该命令(笔者翻阅了java8中该命令的文档,...

2019-05-08 17:06:00 90

转载 Java命令学习系列(五)——jhat

jhat(Java Heap Analysis Tool),是一个用来分析java的堆情况的命令。之前的文章讲到过,使用jmap可以生成Java堆的Dump文件。生成dump文件之后就可以用jhat命令,将dump文件转成html的形式,然后通过http访问可以查看堆情况。jhat命令解析会Java堆dump并启动一个web服务器,然后就可以在浏览器中查看堆的dump文件了。...

2019-05-08 17:04:00 100

转载 Java命令学习系列(四)——jstat

jstat(JVM Statistics Monitoring Tool)是用于监控虚拟机各种运行状态信息的命令行工具。他可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形的服务器上,它是运行期定位虚拟机性能问题的首选工具。jstat位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命...

2019-05-08 17:01:00 89

转载 Java命令学习系列(零)——常见命令及Java Dump介绍

一、常用命令:在JDK的bin目彔下,包含了java命令及其他实用工具。jps:查看本机的Java中进程信息。jstack:打印线程的栈信息,制作线程Dump。jmap:打印内存映射,制作堆Dump。jstat:性能监控工具。jhat:内存分析工具。jconsole:简易的可视化控制台。jvisualvm:功能强大的控制台。二、认识Java D...

2019-05-08 17:00:00 103

转载 Java命令学习系列(三)——Jmap

jmap是JDK自带的工具软件,主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节。可以使用jmap生成Heap Dump。在Java命令学习系列(零)——常见命令及Java Dump介绍和Java命令学习系列(二)——Jstack中分别有关于Java Dump以及线程 Dump的介绍。这篇文章主要介绍Java的堆Dump以及jamp命令什么是...

2019-05-08 16:57:00 78

转载 Java命令学习系列(二):Jstack

jstack是java虚拟机自带的一种堆栈跟踪工具。功能jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。 线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做...

2019-05-08 16:51:00 95

转载 Java命令学习系列(一):Jps

jps位于jdk的bin目录下,其作用是显示当前系统的java进程情况,及其id号。 jps相当于Solaris进程工具ps。不象”pgrep java”或”ps -ef grep java”,jps并不使用应用程序名来查找JVM实例。因此,它查找所有的Java应用程序,包括即使没有使用java执行体的那种(例如,定制的启动 器)。另外,jps仅查找当前用户的Java进程,而不是当前系统...

2019-05-08 16:25:00 94

转载 查看jvm中的各种参数以及默认值

1 标准参数标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容;通过命令java即可查看用法: java [-options] class [args...] (执行类) 或 java [-options] -jar jarfile [args...] (执行 jar 文件)其中选项包括:...

2019-05-08 10:11:00 807

转载 shell启动脚本中的0、1、2、>和&解析

目录一、0 1 2 文件描述符二、>是重定向符,就是把前面输出的内容重定向到后面指定的位置三、& 是一个描述符,如果1或2前不加&,会被当成一个普通文件nohup sh gmv.sh >ls.txt 2>&1 & 后台运行脚本的一般格式,并且把日志(正常日志和错误日志)输出到ls.txt中tail -f ls.txt...

2019-04-01 10:14:00 168

转载 SpringBoot启动流程解析

由于该系统是底层系统,以微服务形式对外暴露dubbo服务,所以本流程中SpringBoot不基于jetty或者tomcat等容器启动方式发布服务,而是以执行程序方式启动来发布(参考下图keepRunning方法)。 本文以调试一个实际的SpringBoot启动程序为例,参考流程中主要类类图,来分析其启动逻辑和自动化配置原理。 图片链接:https://www...

2019-03-19 17:33:00 59

转载 拦截器和过滤器的区别

拦截器与过滤器的区别:1、过滤器和拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前。如下图:2、拦截器可以获取IOC容器中的各个bean,而过滤器就不行,因为拦截器是spring提供并管理的,spring的功能可以被拦截器使用,在拦截器里注入一个service...

2019-03-19 16:12:00 110

空空如也

空空如也

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

TA关注的人

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