java
CLYH
巨帅宏
展开
-
盛最多水的容器
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/container-with-most-water原创 2021-01-06 08:02:18 · 236 阅读 · 0 评论 -
docker部署springboot项目并访问宿主机文件
--本文主要记录docker部署项目过程以及访问宿主机文件资源的方式一、手动部署需要提前说明的是,本人的开发环境为Window环境,而生产环境为Centos,所以对应的文件路径也需要区分。1、第一步是配置文件的配置(配置内容仅作为举例)application.ymlspring: profiles: active: dev---spring: profiles: active: prodapplication-dev.yml#appli.原创 2020-11-08 18:35:06 · 3846 阅读 · 0 评论 -
JVM中对象的内存布局及访问定位
一、对象的内存布局在JVM中,对象主要是存储在堆内存的,其中分为三个部分:对象头、实例数据和对齐填充。对象头对象头包括两类信息。第一类:Mark Word。用于存储对象自身的运行时数据,如哈希码、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等。这部分的数据长度在32位和64位的虚拟机中分别是32byte和64byte。并且这一部分数据官方成为Mark Word。Mark word的存储内容会随着对象的状态变化而改变。已32位虚拟机为例,对象在无锁状态下,有25比.原创 2020-10-26 22:45:02 · 229 阅读 · 0 评论 -
JVM对象创建过程
对象的创建在JVM中一般包括几个步骤:1、符号引用检查。符号引用是存储在常量池中的,符号引用对应的是一个类,JVM首先会根据符号引用判断对应的类是否已经经过相应的类加载过程,如果为执行类加载,则需要进行类加载。2、内存分配。接下来JVM会在堆中划分出一块区域用来存储对象实例。需要注意的是所需分配的对象内存大小在类加载的过程就已经确定了。内存分配主要有两种方式,指针碰撞和空闲列表。选择哪种分配方式取决于Java堆是否规整。假设Java堆是规整的,即被对象占用的内存在一边,空闲内存在另一半,中间放一个指原创 2020-10-21 23:30:33 · 152 阅读 · 0 评论 -
The runtime data area model of JVM
了解运行时数据区模型是认识Java虚拟机的重要前提。虽然说JVM甚至说较为常用的HotSpot虚拟机本身就有自动分配和管理内存的功能,但是学习JVM是为了能够在出错的时候甚至在优化的时候能够由开发人员自己去处理,虚拟机提供的自动内存管理只能在合适或通常情况下是没问题的。运行时数据区又称为Java虚拟机运行时数据区,它的大体模型结构如下图所示运行时数据区其实就是一块内存区域,按照不同的类型和功能进行划分。主要有程序计数器,虚拟机栈,本地方法栈,方法区和堆。按照线程的使用情况可以分为线程私有和线原创 2020-10-14 23:52:04 · 323 阅读 · 0 评论 -
SpringCloud-Config动态配置中心
在微服务应用中,甚至在一个拥有复杂结构的微服务及分布式应用中,开发难度和运维难度都大大增加。其中最重要的就是配置文件的维护。一般情况下,每一个微服务都需要配置一个application配置文件,以不同场景为例,分为开发环境,测试环境,正式环境等。每一次变更都需要一个个修改并重启服务,操作繁琐并且容易出错。SpringCloud-config是统一的服务配置中心,可以实现一处更新,处处更新。直接撸起来(本次服务注册中心采用Eureka)一、创建并配置config-center服务端config.原创 2020-09-14 08:07:43 · 448 阅读 · 0 评论 -
Spring组件注入为null问题
今天写业务的时候突然遇到一个Spring组件注入为null的问题,其实早在之前有一次就遇到过了,一直没处理,今天终于发现问题记录一下。原先我只是为了使用建造者模式构造一个对象并调用目标方法,具体情况如下其中的http()为静态方法,用于创建SimpleTransfer实例。如下所示一开始并没有问题,但是后面为了封装服务调用接口及相关的参数,我又需要引入一个组件,以ConnectionBaseUtil为例先看一下ConnectionBaseUtil这里的ConnectionBa原创 2020-09-07 21:12:55 · 661 阅读 · 0 评论 -
必须了解的三种IO操作--BIO、NIO、AIO
Blocking IONew| Non-Blocking IOAsynchronous原创 2020-08-23 23:21:02 · 487 阅读 · 0 评论 -
springboot 自定义配置文件的加载及导入
一、配置文件的加载/* * 加载自定义配置文件数据 */@PropertySource(value)自定义创建targetData.properties接着在po包下创建一个实体类userpublic class User { private String name; private Integer age; private Integer ...原创 2020-04-18 23:36:15 · 1453 阅读 · 0 评论 -
springboot 全局配置文件
目录springboot的两种配置文件yaml的三种写法springboot的两种配置文件springboot提供了两种配置文件的支持,分别是: -application.properties -application.yml配置文件路径为:src/main/resources/application.yml或src/main/res...原创 2020-04-18 17:46:14 · 1524 阅读 · 0 评论 -
springboot应用打包jar并运行
我们知道springboot其实就是对spring框架的整合,同时简化spring的应用。其中方便之一就是不需要自己配置tomcat服务器,也不需要达成war包,只需要打包成可执行的jar包,并通过java -jar name.jar即可部署程序并运行。接下就是对springboot应用打包及运行的介绍1、在pom.xml中添加打包插件<!--将应用打包成可执行的jar包-...原创 2020-04-18 15:42:31 · 661 阅读 · 0 评论 -
eclipse Maven 项目环境搭建
使用maven命令将项目发布到tomcat:mvn tomcat:run原创 2020-04-17 19:43:53 · 162 阅读 · 0 评论 -
springboot入门 helloworld
1、环境搭建2、解决目录1、环境搭建2、解决原创 2020-04-18 15:10:09 · 321 阅读 · 0 评论 -
JAVA日志--log4j(源码分析)
日志级别log4j有6个日志级别:fatal(严重)-->error(错误)-->warn(警告)-->info(运行信息)-->debug(调试)-->trace(追踪)日志级别从左到右依次递减一、不使用配置文件步骤:首先通过BasicConfigurator.configure()初始化默认的配置信息,接着创建日志记录器,最后输出日志。和JUL日志...原创 2020-04-14 18:03:32 · 705 阅读 · 0 评论 -
JAVA日志--JUL
日志级别:OFF(关闭)-->SEVERE(严重)-->WARNING(警告)-->INFO(信息)-->CONFIG(配置)-->FINE(详细)-->FINER(较详细)-->FINEST(非常详细)-->ALL(打开)日志级别从左到右一次递减,系统默认配置是INFO级别,表示INFO级别以上的才可以输出。OFF和ALL代表日志的最高和最低级...原创 2020-04-14 13:26:47 · 346 阅读 · 0 评论 -
mvc:interceptor中mvc:mapping path路径设置
规定拦截以特定字符或后缀结尾的url://规定拦截以.a结尾的url//前缀必须以 /** 形式开头<mvc:mapping path="/**/*.a"/>原创 2020-03-27 14:33:35 · 3139 阅读 · 1 评论 -
spring框架下基于websocket握手的拦截器配置(HandshakeInterceptor)
本次博客为记录小程序开发过程中遇到的问题,总结一些经验!对于拦截器的配置,相信很多人都会碰到坑,当然遇到的坑越多,你的技能提升的越快,我觉得是对的。做项目是可以提升一个程序员的技能,考验开发能力的最好方法之一。下面直接进入正题:本次拦截器的配置主要是要实现在websocket握手前,对用户信息的验证及筛选。在本系统中原先已实现了登录验证的拦截器,即判断小程序请求头中是否存在登录态...原创 2020-03-25 11:10:12 · 15444 阅读 · 1 评论 -
Java继承中构造器的定义(this,super的问题)
继承是对已有的类的扩展,它继承了父类所有的属性和方法(私有属性和方法同样继承了,但是不能使用)。在类的定义中,需要通过构造器初始化,在创建对象时,new的其实就是构造器,而构造器分为有参构造器和无参构造器。this用法:1、在程序中产生二义性时,应该使用this来区分。比如区分全局变量和局部变量。普通方法中,this总是指向调用该方法的对象;构造器中,this指向正要初始化的对象。...原创 2020-02-04 16:13:14 · 393 阅读 · 0 评论 -
JAVA List对象之间的赋值问题
事先创建的list对象:List<String> list = new ArrayList<String>()若需将list对象的值赋值给list2List<String> list2 = list;这种写法并没有创建新的List对象,实质上list2和list的对象内存地址相同,此操作是将list2的地址指向list的地址,共用同一内存,只要其中...原创 2019-10-15 11:01:31 · 3324 阅读 · 0 评论 -
JAVA程序之多态
多态,简单来说就是方法的多态。多态存在的三个必要条件就是:继承,方法重写,父类引用指向子类对象 。比如说:class A { public void look() { System.out.println("正在发呆"); }}class B extends A { public void look() { System...原创 2019-07-30 20:24:29 · 172 阅读 · 0 评论 -
JAVA冒泡排序法(优化算法)
冒泡排序法基本原理(递增排序):分两层循环,一层外循环,一层内循环。相邻两个元素相互比较,若前面的数大于后面一个的数,则交换位置,否则不变。 将整个数列分成有序数列和无序数列两部分会比较好理解。 刚开始时,整个数列是无序的,有序数列时空的。 外循环循环一次,无序数列中的最大的数排到了最后(有序数列的元素个数增加1),那么不需要再去顾及这个有序数列,我们可以通过“标记”的方式判...原创 2019-08-11 17:11:38 · 297 阅读 · 0 评论 -
JAVA 二分法检索
二分法检索原理:(1)将无序数列按递增顺序排列成有序数列(2)比较要检索的元素和该数列中间位置元素的大小,若相等返回该中间值(3)若比中间值大(或小),则在数列的后半部分(前半部分)按同样的原理比较,直到找到为止二分法示意图://二分法检索import java.util.Arrays;public class Test { public static...原创 2019-08-11 17:33:40 · 233 阅读 · 0 评论 -
使用Arrays类对数组元素进行排序(通过Comparable接口实现对象比较)
JDK提供的java.util.Arrays类包含了常用的数组操作,可以实现数组元素的排序、查找、填充、打印等常见操作。实例:import java.util.Arrays;public class Test { public static void main (String args[]) { Man[] msMans = { new Man(3,"a"), new Man(6...原创 2019-08-10 18:17:57 · 821 阅读 · 0 评论 -
包装类&自动装箱和拆箱&&包装类的缓存问题
包装类的定义及用途定义:八种基本数据类型对应的类统称为包装类。八种基本数据类型并不是对象,而Java作为面向对象的语言,在实际应用中对象的创建是必不可少的,这个时候就需要将基本数据类型转换成对象,从而方便对基本数据类型进行操作。基本数据类型 包装类 byte Byte boolean Boolean short Short char Chara...原创 2019-08-21 17:48:27 · 147 阅读 · 1 评论 -
final关键字
修饰变量:被它修饰的变量不可改变 final int MAX_SPEED = 100;//一般如果对final修饰的变量进行操作,则操作的是这个变量的副本,也就是产生了新对象 修饰方法:该方法不可被子类重写,但可以被重载 final void study() { } 修饰类:被修饰的类不能被继承 final class Test { }...原创 2019-08-26 22:37:59 · 124 阅读 · 0 评论 -
Java异常机制
异常机制的本质是,当程序出现错误时,令程序安全退出的机制。异常处理,就是指程序在出现问题是依然可以正确执行完毕。/* ** * */所有的异常的根类都是java.lang.Throwable。Throwable下面又有两大子类:Error(错误) 、Exception(例外/异常) Error是程序无法处理的错误,造成这种错误的原因主要是JVM出现了问题,与代码无关。...原创 2019-08-27 14:57:03 · 177 阅读 · 0 评论 -
字符串相关类(String、StringBuffer、StringBuilder)
String类对象代表不可变的Unicode字符序列,其字符串内容实质是存储到一个有final修饰的value【】数组中,所以String对象为不可变对象,不可变对象内部的成员变量的值无法改变。对String类常量进行自身操作时,实质是对自身副本的操作,即产生了新对象。 StringBuffer和StringBuilder非常类似,均表示可变字符序列。这两个类都是抽象类Abstrac...原创 2019-08-27 15:17:32 · 124 阅读 · 0 评论 -
Java中输出"\t"的效果
"\t"表示横向空8个空格,以单个数字字符或字母字符为例,在两字符串中间插入"\t"可以达到以下效果:System.out.println("1"+"\t"+"1"+"\t"+"1");System.out.println("1\t1\t1");如果字符串长度>单个字符,如111或aaaaa,则效果如下:System.out.println("1111"+"\t"...原创 2019-09-04 17:19:52 · 3914 阅读 · 0 评论 -
Scanner类中nextLine()和next()方法的区别
使用Scanner扫描器实现字符串的输入方法有两种:next() 和nextLine()1、使用next()方法时,会先排除掉有效字符串前的空格键,enter键,tab键然后才返回我们输入的有效字符串,如123;不可能出现"12 3"等现象。并且以空格,enter,tab作为结束符,但不会过滤掉enter键。2、nextLine()方法,则可以返回所有enter键前的所有字符串,并以ent...原创 2019-09-04 23:15:54 · 159 阅读 · 0 评论 -
java.lang.String.split()方法
String.split(String regex,int limit)方法主要用于根据匹配的正则表达式拆分字符串,并以数组形式返回。regex:正则表达式分割符limit:分割分数,如果分割一个"my-name-is-oolee",limit为2,则得到的结果为my和name-is-oolee两个数组元素,即第一个分割符前的为一部分,后面的为另外一部分。public class T...原创 2019-09-05 17:59:53 · 517 阅读 · 1 评论 -
JAVA 程序的封装
JAVA 程序的封装*封装的含义和作用:就是把对象的属性和操作结合为一个独立的整体,并且尽可能隐藏对象内部的实现细节。即需要让用户知道的就暴露出来,不需要顾客知道的就隐藏起来*封装的优点:1、提高代码安全性2、提高代码复用性3、高内聚:封装细节,便于修改内部代码,提高可维护性。4、低耦合:简化外部调用,便于调用者使用,便于扩展和协作。*封装的实现——利用访问控制符(访问权限修饰符)...原创 2019-07-29 21:32:15 · 517 阅读 · 0 评论