JAVA
延陵缥缈
这个作者很懒,什么都没留下…
展开
-
java中for、foreach(增强for)和stream中foreach的性能和原理
for循环是java出生的时候就已经支持了,在jdk 1.5中开始支持 foreach循环,foreach在一定程度上简化了集合的遍历,但是由于场景的局限性不能完全替代 for 循环。...原创 2021-03-01 23:52:23 · 5738 阅读 · 0 评论 -
多线程结果集合并
package com.yanling.executor;import java.util.ArrayList;import java.util.Iterator;import java.util.Random;import java.util.concurrent.*;public class ExecutorServiceDemo { public static void main(String[] args) { ExecutorServic...原创 2021-03-01 23:48:14 · 2531 阅读 · 3 评论 -
理解单链表的反转(java实现)
要求很简单,输入一个链表,反转链表后,输出新链表的表头。 反转链表是有2种方法(递归法,遍历法)实现的,面试官最爱考察的算法无非是斐波那契数列和单链表反转,递归方法实现链表反转比较优雅,但是对于不了解递归的同学来说还是有理解难度的。1.递归方法总体来说,递归法是从最后一个Node开始,在弹栈的过程中将指针顺序置换的。为了方便理解,我们以 1->2->3->4这个链表来做演示。输出的效果是4->3->2->1public static..转载 2021-02-25 12:26:17 · 246 阅读 · 0 评论 -
手写先进先出队列
这里采用的是双端链表来实现的先进先出对列。package com.yanling.queue;/** * 队列(先进先出) * @author yanling * @date 2021-2-14 */public class MyFIFO { public int size; /** * 尾指针 */ private Node last; /** * 头指针 */ private Node first;原创 2021-02-25 12:23:39 · 178 阅读 · 0 评论 -
实现先进后出栈
这里采用的是双端链表来实现的先进后出栈。/** * 栈(先进后出) * @author yanling * @date 2021-2-14 */public class MyFILO { public int size; /** * 尾指针 */ private MyFILO.Node last; /** * 头指针 */ private MyFILO.Node first; /** * 队列原创 2021-02-25 12:22:54 · 265 阅读 · 0 评论 -
springboot 获取访问接口的请求的IP地址
package city.albert.utils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.util.StringUtils;import javax.servlet.http.HttpServletRequest;import java.net.InetAddress;import java.net.UnknownHostException;/** * Ip.原创 2021-02-19 00:43:23 · 1463 阅读 · 1 评论 -
下划线转驼峰式工具类
近期在写一个迷你型的mybaits框架,涉及到数据库字段映射到Java实体类时遇到的需要将下换线转命名成驼峰命名。一般有两种实现方式:操作字节数组,性能较高,可读性较差 使用String类提供的方法实现,性能较低1.操作字节数组实现下划线转驼峰package com.yanling.mybatis.util;/** * @description: 下划线转换驼峰工具类 * @author: yanling * @time: 2021/1/2 */public class To原创 2021-01-02 22:51:14 · 1615 阅读 · 0 评论 -
CAS原理分析
1 概述CAS(Compare-and-Swap),即比较并替换,是一种实现并发算法时常用到的技术,Java并发包中的很多类都使用了CAS技术。CAS也是现在面试经常问的问题,本文将深入的介绍CAS的原理。2 CAS原理CAS通过调用JNI的代码实现的。JNI:Java Native Interface为JAVA本地调用,允许java调用其他语言。而compareAndSwapInt就是借助C来调用CPU底层指令实现的。下面是sun.misc.Unsafe类的compareAndSw原创 2020-11-15 21:24:10 · 270 阅读 · 0 评论 -
JAVA获取本机IP地址
在百度搜索“JAVA获取本机IP地址”,基本上搜到比较普遍的说法是InetAddress.getLocalHost().getHostAddress(),实际上这段代码在复杂环境下是不准的。IP地址在现在的网络环境更加复杂了,比如有Lan,WIFI,蓝牙热点,虚拟机网卡...即存在很多的网络接口(network interfaces),每个网络接口就包含一个IP地址,并不是所有的IP地址能被外部或局域网访问,比如说虚拟机网卡地址等等。直接上代码private static InetAddress转载 2020-09-15 00:28:29 · 3289 阅读 · 1 评论 -
swagger2 注解使用说明
1.注解说明注解 作用对象 说明 @Api controller类 对类的描述 @ApiOperation 接口方法 方法描述 @ApiImplicitParam 接口方法 get单个传参时定义参数描述和是否必传 @ApiImplicitParams 接口方法 get对个传参时定义参数描述和是否必传,需要和@ApiImplicitParam配合使用 @ApiResponse 接口方法 定义返回状态原创 2020-06-18 17:53:37 · 619 阅读 · 0 评论 -
JAVA中 Integer 的==和equals 详解
关于Integer之间的比较躺的坑多了也就有了经验,-128~127范围能可以用equals或“==”都可以,不在范围内只能使用equals,例如: @Test public void test6 () { Integer num1 = 17; Integer num2 = 17; Integer num3 = 177; Integer num4 = 177...原创 2019-11-12 21:58:38 · 2013 阅读 · 0 评论 -
Java中final关键字简述
针对Java语言中的final关键字,想必都不陌生了。本文主要是来对final做关键字做一个总结。1.final修饰类当用final去修饰一个类的时候,表示这个类不能被继承。注意:被final修饰的类,final类中的成员变量可以根据自己的实际需要设计为fianl。 final类中的成员方法都会被隐式的指定为final方法。说明:在自己设计一个类的时候,要想好这个类将来是否会被...原创 2019-07-29 19:52:32 · 245 阅读 · 0 评论 -
java流水单号生成
在开发中几乎所用的系统都会涉及到唯一单号的生成,通常分为两种:一种是有序的生成带有一定规则的单号,另一种是无序的随机生成唯一的单号。这里主要是介绍怎么才能在不同场景下生成有序带有一定规则的单号。1.synchronized同步获取单号创建一个表来存储单号,使用唯一索引确保获得的每一个单号都是唯一的。CREATE TABLE `generate_no` ( `tid...原创 2019-07-25 20:40:55 · 3562 阅读 · 1 评论 -
Java Thread.join()详解
1.用法join是Thread类的一个方法,启动线程后直接调用,例如:Thread t = new AThread(); t.start(); t.join();2.join方法的作用 在很多情况下,主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程往往将于子线程之前结束,但是如果主线程处理完其他的事务后,需要用到子线程的处理结果,也就是主线程需...原创 2019-02-21 01:11:49 · 381 阅读 · 0 评论 -
深入理解位运算操作及使用场景
工作中一直没用过位操作,只有在阅读一些源码的时候会看到使用位运算符(因为直接使用位运算符效率更高),为了更好的阅读源码那就好好学习一下吧,顺便把学习的东西记下来。 位运算符大致就以下几种吧。位运算符 名称 符号 用法 位求反 ~ ~expr 左移 << expr1 << expr2 右移...原创 2019-01-22 23:52:11 · 1780 阅读 · 0 评论 -
Java中的volatile
1.基本概念 在谈volatile的时候我们需要先了解一些JVM的基本概念。1.1.原子性 在计算机领域,即一个操作或多个操作在执行过程中不会受到其他因素的影响,并且要么全部执行成功,或者全部执行失败。 int i = 0, j = 0; //原子性操作,java中对基本数据类型的变量赋值都是原子性操作 i = 1; ...原创 2018-10-15 14:16:02 · 202 阅读 · 0 评论 -
java 多线程
目录1.java 线程简介2.线程的生命周期及基本状态3.线程的创建及使用3.1.继承Thread类3.2.实现Runnable接口3.3.实现Callable和Future接口4.常用方法4.1.sleep(long millis)4.2.join()4.3.yield()4.4.setPriority():4.5.interrupt()4.6...原创 2018-09-23 09:25:18 · 245 阅读 · 0 评论 -
简介java Collection接口
目录1.集合框架体系2.Collection 接口简介3.Collection 接口方法4.总结1.集合框架体系 集合是用于存储对象的容器。而每种容器内部都有其独特的数据结构,正因为不同的容器内部数据结构不同,使其各自有自己独特的使用场景。虽然每个容器有其独特的结构但是类似的容器还是存在共性的(至少对容器内部对象的操作方法上是存在共性的),所以这些共性方法能被不...原创 2018-09-17 22:47:44 · 278 阅读 · 0 评论 -
Mybatis之 foreach深入了解
这篇文章主要对foreach里面的collection相关的内容做一些介绍,围绕foreach做一些数据插入和查询相关的研究。foreach属性属性描述item循环体中的具体对象。支持属性的点路径访问,如item.age,item.info.details。具体说明:在list和数组中是其中的对象,在map中是value。该参数为必选。collection要做foreach的对象,作为入参时,Li...原创 2018-04-08 16:31:36 · 2134 阅读 · 1 评论 -
java源码学习之Objects
1.Objects 与Object的区别1.1.object是java中所有类的基类,java中所有的类都继承自Object,位于java.lang包下面;objects是object的一个工具类,位于java.util包下,被final修饰不能被继承,拥有私有的构造函数。1.2.object在jdk1.0就出现了;objects出生于jdk1.7。1.3.Objects由一些静态的实用方法组成,...原创 2018-04-09 14:16:31 · 519 阅读 · 1 评论 -
Java 枚举类的基本使用
枚举(enum 的全称为 enumeration,)类型是Java 5新增的特性,它是一种新的类型(本质还是类),允许用常量来表示特定的数据片断,而且全部都以类型安全的形式来表示,存放在 java.lang 包中。1.常量的使用 在JDK1.5之前,我们定义常量都是:public static fianl....。现在有了枚举之后,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更...原创 2018-04-01 22:19:24 · 248 阅读 · 0 评论 -
SpringBoot定时任务
定时任务一般是项目中都需要用到的,可以用于定时处理一些特殊的任务,比如定时发送短信,邮件等等。今天我们就来看下在SpringBoot中如何集成定时任务。 首先,搭建好一个springboot项目,可使用maven或者gradle或者其他。由于这里讲的是主要是定时任务,没有搭建过springboot项目的可以参考https://blog.csdn.net/qq_3499...原创 2018-04-02 23:48:20 · 1359 阅读 · 0 评论 -
StringUtils工具类方法汇总1(空校验、去字符处理、字符串比较)
Apache commons lang3包下的StringUtils工具类中封装了一些字符串操作的方法,非常实用,使用起来也非常方便。StringUtils类在操作字符串时,即使操作的为null值也是安全的,不会报NullPointerException,这一点在后面的例子中再具体说明。因此,在操作字符串时使用StringUtils相比使用原生的String会更加安全。1.字符串空校...原创 2018-04-16 16:01:47 · 4899 阅读 · 0 评论 -
SpringCloud 第一篇: 服务注册中心(Eureka)
在Spring Cloud里,负责微服务注册与发现的项目是Spring Cloud Netflix项目中的Eureka组件。Eureka分为两大部分,Eureka Server与Eureka Client。很显然,Eureka Server负责管理、协调所有的微服务提供者,即Eureka Client,因此我们要使用创建协作的微服务框架,首先必须创建Eureka Server。1.建立Sp...原创 2018-05-22 14:42:11 · 358 阅读 · 0 评论 -
SpringCloud 第二篇: 服务提供者 (eureka client)
在上一篇中我创建了一个注册中心,现在我就可以给他注册服务。当client向server注册时,它会提供一些元数据,例如主机和端口,URL,主页等。Eureka server 从每个client实例接收心跳消息。 如果心跳超时,则通常将该实例从注册server中删除。创建过程同server类似,创建完pom.xml如下:...原创 2018-05-22 20:39:00 · 301 阅读 · 0 评论 -
java多线程编程实例
这篇文章主要介绍了java多线程编程实例,分享了几则多线程的实例代码,具有一定参考价值,加深多线程编程的理解还是很有帮助的,需要的朋友可以参考下。1.相关知识:Java多线程程序设计到的知识:(1)对同一个数量进行操作(2)对同一个对象进行操作(3)回调方法使用(4)线程同步,死锁问题(5)线程通信等等2.示例2.1三个售票窗口同时出售20张票程序分析: (1)票数要使用同一...原创 2018-05-25 10:01:22 · 88987 阅读 · 48 评论 -
java设计模式之单例模式详解
Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在。一些管理器和控制器常被设计成单例模式。单例模式有以下特点: (1)单例类只能有一个实例。 (2)单例类必须自己创建自己的唯一实例。 (3)单例类必须给所有其他对象提供这一实例。单例模式有很多好处,它能够避免实例对象的重复创建,不仅可以...原创 2018-06-03 23:22:30 · 316 阅读 · 0 评论 -
java设计模式之代理模式详解
代理模式在Java中十分常见,有如Spring实现AOP而使用动态代理,更有RPC实现中使用的调用端调用的代理服务。代理模型除了是一种设计模式之外,它更是一种思维,所以探讨并深入理解这种模型是非常有必要的。1.简介定义:给某一个对象提供一个代理,并由代理对象控制对原对象的引用。代理模式包含如下角色: ISubject:抽象主题角色,是一个接口。该接口是对象和它的代理共用的接口...原创 2018-06-03 01:40:03 · 6894 阅读 · 2 评论 -
java设计模式之工厂模式详解
设计模式代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 根据设计模式的参考书中所提到的,总共有 23 种设计模式。这些模式可以分为三大类:创建型模式、结构型模式、行为型模式。当然还有其他的一种写说法说不止23总设计模...原创 2018-04-23 20:58:13 · 295 阅读 · 1 评论 -
JVM-GC的引用计数法、可达性分析法和最终判定
任何垃圾收集算法都需要做两件事,首先检测出垃圾对象,其次释放垃圾对象占用的堆空间并还给程序。垃圾对象检测主要有两种算法:引用计数法和可达性分析法(引用链),这里主要研究下这两种算法。1.引用数法 引用计数法师垃圾收集的早期策略,在这中方法中,堆中每个对象都有一个引用计数,每当有一个地方引用他时,引用计数值就+1,当引用失效时,引用计数值就-1,任何时刻引用计数值为0的对象就是...原创 2018-06-13 00:09:04 · 2858 阅读 · 0 评论 -
jvm的生命周期和java类的生命周期
1.jvm的生命周期一个运行时的的java虚拟机实例的天职就是运行一个java程序。1.1.JVM实例的诞生 当一个程序启动,伴随的就是一个jvm实例的诞生,当这个程序关闭退出,这个jvm实例就随之消亡。如果在同一台机器上运行多个程序,将诞生相应数量的jvm实例,每个程序都有一个与之对应的jvm实例供其运行。任何一个拥有公开的(public)、静态的(static)、没有返回值(vo...原创 2018-06-14 00:01:33 · 6124 阅读 · 2 评论 -
TCC型分布式事务介绍
分布式事务的产生是由于需要同时对多个数据源进行事务操作(资源层),资源层的分布式事务常用的方案有JTA、spring事务等。随着微服务的盛行,服务层的分布式事务也日益重要,本文就着重讨论一种服务层分布式事务的实现原理:TCC。一般而言,满足ACID的事务的为钢性事务,满足BASE理论的为柔性事务。其中,柔性事务大致可以分为以下四种:两阶段型补偿型异步确保型最大努力通知型TCC型事务TCC事物 ...原创 2018-06-08 22:55:51 · 1011 阅读 · 0 评论 -
java内存模型
内存模型运行时内存Java内存模型,往往是指Java程序在运行时内存的模型,而Java代码是运行在Java虚拟机之上的,由Java虚拟机通过解释执行(解释器)或编译执行(即时编译器)来完成,故Java内存模型,也就是指Java虚拟机的运行时内存模型。运行时内存模型,分为线程私有和共享数据区两大类,其中线程私有的数据区包含程序计数器、虚拟机栈、本地方法区,所有线程共享的数据区包含Java堆、方法区,...原创 2018-07-03 13:42:25 · 280 阅读 · 0 评论 -
HashMap详解
Java集合框架强大、简单、易用。尤其在设计业务逻辑的编程中,集合框架可以说是使用最多的类。Map集合是一种把键(key)和值(value)的结构集合,在实际引用中及其广泛。本篇简单分析java中hashmap的实现,并简单分析它的一些性能,使用过程中的需要注意的地方。1、HashMap 简介HashMap 是一个Hash表(散列表),它存储的内容是键值对(key-value)映射。 H...原创 2018-07-23 20:59:57 · 481 阅读 · 0 评论 -
Spring Boot + MyBatis框架的搭建
spring boot的方便之处在于没有了繁杂的xml配置文件和不需要再自己去安装tomcat等服务器,由于后续工作需要用到spring boot+mybatis来进行工作,将这两天学习的东西记录下来,方便自己查看也避免后来者能避开我碰到的坑。 Spring Boot建议使用Maven或Gradle,本文以Maven为例。 创建一个maven web项目,可以参考http://blog.csdn原创 2017-03-23 10:21:14 · 1019 阅读 · 0 评论