![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 64
zghgchao
java开发/大数据/云计算
展开
-
JVM的内存模型
基于jdk1.8画的JVM的内存模型堆:存放对象实例,几乎所有的对象实例都在这里分配内存 虚拟机栈:虚拟机栈描述的是Java方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧(Stack Frame)用于存储局部变量表、操作栈、动态链接、方法出口等信息 本地方法栈:本地方法栈则是为虚拟机使用到的Native方法服务。 方法区:存储已被虚拟机加载的类元数据信息(元空间:包括类...转载 2019-08-13 18:48:25 · 128 阅读 · 0 评论 -
设计模式
1.什么是设计模式在软件工程中,设计模式是对软件设计中普遍存在的各种问题,所提出的 解决方案。换句话说,设计模式是一套被反复使用、多数人知晓的、经过分类的、代码设计的 经验的总结。使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码可靠性。1.1设计模式原则1)、开闭原则(Open Close Principle)开闭原则的意思是:对扩展开放,对修改封闭。在程序需要进...原创 2018-08-19 23:01:05 · 119 阅读 · 0 评论 -
设计模式之单例模式
原创 2018-08-26 15:28:58 · 105 阅读 · 0 评论 -
Springboot使用FastJson后,POI导出excel乱码
在项目中使用了 fastjson,用作驼峰和下划线的互转,但在引入POI导出excel时,发现导出excel文件不报错,也没抛出异常,但excel打开却乱码,于是各种调试,各种找。。。;最后再把fastjson的配置注释掉发现excel没有乱码了,于是网上查了一下,原来是配置fastjson时重写了HttpMessageConverters,但MediaType没有设置成 MediaType.AP...原创 2018-08-10 23:41:51 · 3554 阅读 · 0 评论 -
Spring-data-jpa 之Specification in的用法
//根据竞买人客户名称进行查询 In<Long> in = cb.in(root.get(BailPay_.customerId)); if(customerName != null && !customerName.isEmpty()){ List<Cus...转载 2018-08-03 21:56:25 · 9038 阅读 · 0 评论 -
java中Integer 值比较需要注意的问题
package com.com.test;/** * Created by ***** 2018/6/29 9:18 * java中Integer类型对于-128-127之间的数是缓冲区取的, * 所以用等号比较是一致的。但对于不在这区间的数字是在堆中new出来的。所以地址空间不一样,也就不相等。 */public class IntegerTest { public st...原创 2018-06-29 09:32:46 · 356 阅读 · 0 评论 -
常见的几种单例模式
单例模式:是一种常用的软件设计模式,在它的核心结构中值包含一个被称为单例的特殊类。一个类只有一个实例,即一个类只有一个对象实例。 对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;售票时,一共有100张票,可有有多个窗口同时售票,但需要保证不要超售(这里的票数余量就是单例,售票涉及到多线程)。如果不是用机制对窗口对象进行唯一化将弹...原创 2018-07-02 22:31:42 · 195 阅读 · 0 评论 -
Java并发编程 面试
1、在java中守护线程和本地线程区别?java中的线程分为两种:守护线程(Daemon)和用户线程(User)。任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon(bool on);true则把该线程设置为守护线程,反之则为用户线程。Thread.setDaemon()必须在Thread.start()之前调用,否则运行时会抛出异常。两者的区别: 唯一的区别是判断虚...转载 2018-06-25 22:30:51 · 239 阅读 · 0 评论 -
Spring事务传播机制
Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播,即协调已经有事务标识的方法之间的发生调用时的事务上下文的规则(是否要有独立的事务隔离级别和锁) 概述当我们调用一个基于Spring的Service接口方法(如UserService#addUser())时,它将运行于Spring管理的事务 环境中,...原创 2018-06-26 07:57:14 · 114 阅读 · 0 评论 -
Java 8 Optional 类-学习
Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。Optional 类的引入很好的解决空指针异常。类声明以下是一个 java.util.Optional<T> ...原创 2018-06-23 16:23:47 · 190 阅读 · 0 评论 -
设计模式--工厂模式
1. 什么是工厂模式工厂模式(Factory Pattern)的意义就跟它的名字一样,在面向对象程序设计中,工厂通常是一个用来创建其他对象的对象。工厂模式根据不同的参数来实现不同的分配方案和创建对象。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。例如用工厂来创建 人 这个对象,如果我们需要一个男人对象,工厂就会为我们创建一个男人;如...原创 2018-08-19 23:14:37 · 129 阅读 · 0 评论 -
设计模式之抽象工厂模式
1. 什么是抽象工厂模式抽象工厂模式(Abstract Factory Pattern)是一种软件开发设计模式。抽象工厂模式提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来。如果比较抽象工厂模式和工厂模式,我们不难发现前者只是在工厂模式之上增加了一层抽象的概念。抽象工厂是一个父类工厂,可以创建其它工厂类。所以我们也叫它 “工厂的工厂”。(想想上节课的 “女娲娘娘”,这简直就是 “女娲...原创 2018-08-22 23:24:54 · 107 阅读 · 0 评论 -
springBoot2+Mybatis+log4j2日志配置
采用springBoot2+Mybatis+log4j2将日志信息分为info、error、sql三个文件夹打印出来,日志结构如图1.POM文件依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> ...原创 2019-06-17 14:59:04 · 7928 阅读 · 2 评论 -
java List转String去掉[ 、]、空格
public static void main(String[] args) { String s = "[aasa, bbbbb]"; String s1 = s.replaceAll("(?:\\[|null|\\]| +)", ""); System.out.println(s1); }在list<String> ...原创 2019-06-05 18:20:09 · 9876 阅读 · 1 评论 -
git命令-切换分支
1.查看远程分支 git branch -a~/mxnet$ git branch -a* master remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/nnvm remotes/origin/piiswrong-patch-1 remotes/origin/v0....原创 2018-12-04 13:16:31 · 231 阅读 · 0 评论 -
SpringBoot.2x通过统一配置中心读取mysql.properties的配置
SpringBoot默认通过 spring.datasource 前缀去自动化配置mysql数据库的连接,但现在需要通过配置中心的配置实现数据库的连接。步骤如下:1.配置中心mysql.properties如下mysql.crm.jdbc.driver-class-name=com.mysql.jdbc.Drivermysql.crm.jdbc.username=rootmysql....原创 2018-11-29 13:03:56 · 2778 阅读 · 1 评论 -
SpringBoot2.x连接自定义前缀的redis
因为项目需要,需通过统一配置中心读取redis的配置信息,而springBoot默认读取的配置信息的前缀为 spring.redis。步骤如下:1.需要读取的配置文件 redis.propertiesredis.host=192.168.1.10redis.port=63792.程序启动读取配置文件SpringBoot启动类添加注解 @PropertySource(va...原创 2018-11-29 12:55:42 · 2412 阅读 · 1 评论 -
SpringBoot RestTemplate进行POST请求,from-data传参
1.cinfig配置类package com.haoqian.crm.kscrm.configration;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.h...原创 2018-11-16 14:09:38 · 22293 阅读 · 3 评论 -
设计模式之观察者模式
1.什么是观察者模式一句话,观察者模式(Observer Pattern)就是一种 “发布者-订阅者” 的模式。有时也被称为 “模型-视图”模式、“源-监听者”模式等。在这种模式中,由一个目标对象来管理所有依赖与它的观察者对象,并且当这个目标对象自身发生改变时,会主动向它的观察者们发出通知。比如你最近在追一个美剧《生活大爆炸》,假设著名在线视频网站某狐买下独家版权,在线更新与播放。于...原创 2018-08-25 22:40:03 · 102 阅读 · 0 评论 -
CentOS7中安装与配置Jdk1.8
一、前期准备环境:最小安装的CentOS 7(虚拟机安装的新版的centos系统,与6有一些配置文件上的差异),提前装好了lrssz工具(不会安装的,可以参看我的另一篇随笔——lrssz的安装)。a) 首先从官网上下载Jdk 8 for Linux x64到window下。b) 我这边用的最小安装,所以没有安装centos自带的openjdk,如果你安装...原创 2018-08-27 13:52:29 · 201 阅读 · 0 评论 -
SpringBoot + Vue + nginx项目部署
1.后端项目部署:(1)Java项目打包上传到 服务器,开启服务java -jar *****.jar --server.port=8080(2)vue项目打包,拷贝dist下的static和index.html到/usr/local/nginx/html目录下(3)安装Nginx,参考https://blog.csdn.net/qq_22027637/article/detai...原创 2018-08-17 15:05:37 · 6407 阅读 · 0 评论 -
Java 8 日期时间 API-学习
Java 8通过发布新的Date-Time API (JSR 310)来进一步加强对日期与时间的处理。在旧版的 Java 中,日期时间 API 存在诸多问题,其中有:非线程安全 − java.util.Date 是非线程安全的,所有的日期类都是可变的,这是Java日期类最大的问题之一。设计很差 − Java的日期/时间类的定义并不一致,在java.util和java.sql的包中都有日期类,此外用...原创 2018-06-23 16:15:24 · 231 阅读 · 0 评论 -
关于spring cloud “Finchley.RC2”版本在spring cloud config中的ArrayIndexOutOfBoundsException
关于spring cloud “Finchley.RC2”版本在spring cloud config中的ArrayIndexOutOfBoundsException在学spring cloud config的时候遇到一个ArrayIndexOutOfBoundsException的问题。学习参考https://blog.csdn.net/forezp/article/details/700372...原创 2018-06-20 22:13:52 · 336 阅读 · 0 评论 -
九种排序算法的可视化及比较
排序是工作和生活中非常常见的一个问题。现在已经有比较成熟的排序技术,被广泛地应用于各种程序语言或数据库中。不同的排序算法有不同的性能和适用场景,下面的视频对比了 9 种排序算法的性能表现。排序算法依次为选择排序、希尔排序、插入排序、归并排序、快速排序、堆排序、冒泡排序、梳排序、鸡尾酒排序。冒泡排序冒泡排序(Bubble Sort)是一种交换排序,基本思想是:两两比较相邻记录的关键字,如果反序则交换...转载 2018-06-12 19:53:00 · 1872 阅读 · 0 评论 -
Java中的final关键字
一、final关键字的基本用法在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。下面就从这三个方面来了解一下final关键字的基本用法。1、修饰类 当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意转载 2018-04-08 17:28:34 · 99 阅读 · 0 评论 -
SSO单点登录系统分析
项目构建e3-sso(pom 聚合工程)|--e3-sso-interface(jar)|--e3-sso-Service(war)e3-sso-web服务接口实现检查数据是否可用(RegitsterController)请求的 url:/user/check/{param}/{type} 参数:从 url 中取参数 1、String param(要校验的数据)2、Integer type(原创 2018-04-08 11:13:11 · 388 阅读 · 0 评论 -
Guns快速使用
1.Guns结构组成Spring Boot Shiro Mybatis-plus Spring MVC Swagger2.Guns模块介绍guns-parent:guns的maven父工程 guns-admin:guns的业务子模块 guns-rest:guns的Restful支持模块3. 定义业务数据 字段名称 字段类型 字段含义 id string 业务唯一编原创 2018-03-17 21:52:45 · 5731 阅读 · 0 评论 -
理解RESTful架构
越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点。网站开发,完全可以采用软件开发的模式。但是传统上,软件和网络是两个不同的领域,很少有交集;软件开发主要针对单机环境,网络则主要研究系统之间的通信。互联网的兴起,使得这两个领域开始融合,现在我们必须考虑,如何开发转载 2017-12-30 17:01:20 · 167 阅读 · 0 评论 -
Spring Data简单使用
Spring Data JPA 快速起步开发环境搭建Spring Data JPA开发Maven依赖添加 org.springframework.data spring-data-jpa 1.11.7.RELEASE org.hibernate hibernate-entitymanager 5.0.12原创 2017-12-30 13:06:03 · 213 阅读 · 0 评论 -
MapReducer流量统计
1、对流量日志中的用户统计总上、下行流量技术点:自定义javaBean用来在mapreduce中充当value注意: javaBean要实现Writable接口,实现两个方法package com.mr.flowsum;import org.apache.hadoop.io.WritableComparable;import java.io.DataInput;import j原创 2017-11-06 15:26:39 · 899 阅读 · 0 评论 -
Hashtable,HashMap,ConcurrentHashMap 底层实现原理与线程安全问题
术语定义术语英文解释哈希算法hash algorithm是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。 哈希表hash table根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表中的存储位置,这种表称转载 2017-11-05 15:04:30 · 1475 阅读 · 0 评论 -
Java开发必会的Linux命令
本文并不会对所有命令进行详细讲解,只给出常见用法和解释。具体用法可以使用--help查看帮助或者直接通过google搜索学习。1查找文件find / -name filename.txt根据名称查找/目录下的filename.txt文件。find . -name "*.xml"递归查找所有的xml文件find . -name "*.x转载 2017-11-12 10:29:03 · 339 阅读 · 0 评论 -
单例模式之懒汉模式--Java实现
/** * 单例设计模式 * 应用场合:有些对象只需要一个就足够了 * 作用:保证整个应用程序中某个实例有且只有一个 * 类型:饿汉模式、懒汉模式 * 二、单例模式之懒汉模式 */public class Singleton2 { //1.将构造方法私有化,不允许外部直接创建对象 private Singleton2() { } //2.创建类的原创 2017-11-01 09:24:47 · 482 阅读 · 0 评论 -
StringUtils总isBlank和isEmpty的区别
StringUtils中isBlank和isEmpty的区别isEmpty源码Checks if a CharSequence is empty (“”) or null.public static boolean isEmpty(final CharSequence cs) { return cs == null || cs.length() == 0; ...原创 2018-04-01 11:47:09 · 241 阅读 · 0 评论 -
jdbc编程问题总结
创建mysql数据库-- ------------------------------ Table structure for `orders`-- ----------------------------DROP TABLE IF EXISTS `orders`;CREATE TABLE `orders` ( `id` int(11) NOT NULL AUTO_INCREMENT,原创 2018-04-05 10:40:28 · 145 阅读 · 0 评论 -
通俗理解 KMP 字符串匹配算法
KMP 算法是一个高效的字符串匹配算法,由Knuth、Morris、Pratt三人提出,并使用三人名字的首字母命名。在KMP之前,字符串匹配算法往往是遍历字符串的每一个字符进行比对,算法复杂度是O(mn)。而KMP算法通过预处理能够把复杂度降低到O(m+n)。 KMP算法假设给定一个字符串 1 ABCABCABDEF,现在需要搜索字符串 2 ABCABD 在字符串 1 中出现的位置。从 0 位置开...转载 2018-06-12 19:50:24 · 250 阅读 · 0 评论 -
B树和B+树的插入、删除图文详解
1. B树1.1 B树的定义B树也称B-树,它是一颗多路平衡查找树。我们描述一颗B树时需要指定它的阶数,阶数表示了一个结点最多有多少个孩子结点,一般用字母m表示阶数。当m取2时,就是我们常见的二叉搜索树。一颗m阶的B树定义如下:1)每个结点最多有m-1个关键字。2)根结点最少可以只有1个关键字。3)非根结点至少有Math.ceil(m/2)-1个关键字。4)每个结点中的关键字都按照从小到大的顺序排...原创 2018-06-12 19:46:25 · 5282 阅读 · 1 评论 -
Java面试——网络协议相关
网络协议相关网络协议方面,考察最多的包括服务器和客户端在三次握手、四次挥手过程中的状态变化;还有网络拥塞控制,及其解决办法等。01. 三次握手、四次挥手示意图:总共有四种状态:主动建立连接、主动断开连接、被动建立连和被动断开连接两两组合还是 4 种组合:主动建立连接、主动断开连接会经历的状态:SYNC_SENT——ESTABLISHED—-FIN_WAIT_1—-FIN_WAIT_2—-TIME_...原创 2018-06-12 15:43:21 · 806 阅读 · 0 评论 -
Java 8 相关知识
Java 8 相关知识关于 Java8 中新知识点,面试官会让你说说 Java8 你了解多少,下边主要阐述我所了解,并且在面试中回答的 Java8 新增知识点。0.1 HashMap 的底层实现有变化:HashMap 是数组 + 链表 + 红黑树(JDK1.8 增加了红黑树部分)实现。02. JVM 内存管理方面,由元空间代替了永久代。区别:1. 元空间并不在虚拟机中,而是使用本地内存;2. 默认...原创 2018-06-12 15:42:32 · 237 阅读 · 0 评论 -
Java面试常见问题——JVM 内存管理
JVM 内存管理既然是 Java 开发面试,那么对 JVM 的考察当然也是必须的,面试官一般会问你对 JVM 有了解吗?我通常都会把我所了解的都说一遍,包括:JVM 内存划分、JVM 垃圾回收的含义,有哪些 GC 算法,年轻代和老年代各自的特点统统阐述一遍。01. JVM 内存划分:方法区(线程共享):常量、静态变量、JIT(即时编译器) 编译后的代码也都在方法区;堆内存(线程共享):垃圾回收的主...原创 2018-06-12 15:42:06 · 1706 阅读 · 0 评论