自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

延陵缥缈的博客

路漫漫其修远兮

  • 博客(76)
  • 资源 (3)
  • 收藏
  • 关注

原创 java中for、foreach(增强for)和stream中foreach的性能和原理

for循环是java出生的时候就已经支持了,在jdk 1.5中开始支持 foreach循环,foreach在一定程度上简化了集合的遍历,但是由于场景的局限性不能完全替代 for 循环。...

2021-03-01 23:52:23 5748

原创 多线程结果集合并

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 247

原创 手写先进先出队列

这里采用的是双端链表来实现的先进先出对列。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

原创 实现先进后出栈

这里采用的是双端链表来实现的先进后出栈。/** * 栈(先进后出) * @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

转载 分库分表:中间件方案对比

背景分库分表这个词相信很多人都不陌生,在互联网公司数据到达一定规模的时候,多数都会对数据进行分库分表,或者也有人叫分片,英文翻译为Sharding;更加准确来说我们常常关心的是水平分片,即单个业务的某些表到达一定规模后,即使建立索引也无法从根本上带来很大的性能提升,这时我们会考虑把单表拆分。以MySQL为例,B+树索引的深度会随着记录的增多而逐渐加深,根据索引查询的开销也会越来越大,而单表拆分成多个表之后,B+树深度降低,每个单表独立查询的速度也会加快,如果同时还分库的话,并且在不同的实例上

2021-02-23 21:35:54 424

原创 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 1616

原创 统一配置中心技术选型对比

随着业务的发展、微服务架构的升级,服务的数量、程序的配置日益增多(各种微服务、各种服务器地址、各种参数),传统的配置文件方式和数据库的方式已无法满足开发人员对配置管理的要求:安全性:配置跟随源代码保存在代码库中,容易造成配置泄漏。 时效性:修改配置,需要重启服务才能生效。 局限性:无法支持动态调整:例如日志开关、功能开关。因此,分布式配置中心应运而生!开源配置中心spring-cloud-config:spring开源的配置中心,和spring cloud无缝配合,依赖Eureka。 d

2020-12-31 01:15:42 856

原创 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

转载 JAVA获取本机IP地址

在百度搜索“JAVA获取本机IP地址”,基本上搜到比较普遍的说法是InetAddress.getLocalHost().getHostAddress(),实际上这段代码在复杂环境下是不准的。IP地址在现在的网络环境更加复杂了,比如有Lan,WIFI,蓝牙热点,虚拟机网卡...即存在很多的网络接口(network interfaces),每个网络接口就包含一个IP地址,并不是所有的IP地址能被外部或局域网访问,比如说虚拟机网卡地址等等。直接上代码private static InetAddress

2020-09-15 00:28:29 3290 1

原创 swagger2 注解使用说明

1.注解说明注解 作用对象 说明 @Api controller类 对类的描述 @ApiOperation 接口方法 方法描述 @ApiImplicitParam 接口方法 get单个传参时定义参数描述和是否必传 @ApiImplicitParams 接口方法 get对个传参时定义参数描述和是否必传,需要和@ApiImplicitParam配合使用 @ApiResponse 接口方法 定义返回状态

2020-06-18 17:53:37 621

原创 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 2018

原创 mysql SQL优化方案

网上关于SQL优化方案有很多,并且有些方案之间有冲突,所以自己测试、整理了一些sql的优化信息。1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where nu...

2019-10-11 11:12:59 158

原创 Java中final关键字简述

针对Java语言中的final关键字,想必都不陌生了。本文主要是来对final做关键字做一个总结。1.final修饰类当用final去修饰一个类的时候,表示这个类不能被继承。注意:被final修饰的类,final类中的成员变量可以根据自己的实际需要设计为fianl。 final类中的成员方法都会被隐式的指定为final方法。说明:在自己设计一个类的时候,要想好这个类将来是否会被...

2019-07-29 19:52:32 245

原创 java流水单号生成

在开发中几乎所用的系统都会涉及到唯一单号的生成,通常分为两种:一种是有序的生成带有一定规则的单号,另一种是无序的随机生成唯一的单号。这里主要是介绍怎么才能在不同场景下生成有序带有一定规则的单号。1.synchronized同步获取单号创建一个表来存储单号,使用唯一索引确保获得的每一个单号都是唯一的。CREATE TABLE `generate_no` ( `tid...

2019-07-25 20:40:55 3569 1

原创 Java8排序stream.sorted()

在这个页面上我们将提供java 8 Stream sorted()示例。我们可以按照自然排序以及Comparator提供的排序对流进行排序。在java 8中Comparator可以使用lambda表达式进行实例化。我们还可以反转自然排序以及提供的排序Comparator。自然排序使用提供的顺序Comparable,必须由其实例是流元素的类实现。在这个页面上我们将排序List,Map并...

2019-07-03 09:24:03 115181 8

转载 数据库中间件Mycat+SpringBoot完成分库分表

1.背景随着时间和业务的发展,数据库中的数据量增长是不可控的,库和表中的数据会越来越大,随之带来的是更高的磁盘、IO、系统开销,甚至性能上的瓶颈,而一台服务的资源终究是有限的,因此需要对数据库和表进行拆分,从而更好的提供数据服务。当用户表达到千万级别,在做很多操作的时候都会很吃力,所以当数据增长到1000万以上就需要分库分表来缓解单库(表)的压力。2.什么是分库分表简单来说,就是指...

2019-03-21 23:02:01 1343

原创 REST设计规则

1.简介REST(Representational State Transfer), 表述性状态转移是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格. REST只是一种概念、风格或者约束,是回归HTTP本身的建议. REST,SOAP,XML-RPC是目前三种主流的Web服务实现方案。REST相比其他两种更加简洁。2.REST特点REST应用应该具备的...

2019-02-28 23:08:36 1138

原创 Java Thread.join()详解

1.用法join是Thread类的一个方法,启动线程后直接调用,例如:Thread t = new AThread(); t.start(); t.join();2.join方法的作用       在很多情况下,主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程往往将于子线程之前结束,但是如果主线程处理完其他的事务后,需要用到子线程的处理结果,也就是主线程需...

2019-02-21 01:11:49 383

原创 深入理解位运算操作及使用场景

工作中一直没用过位操作,只有在阅读一些源码的时候会看到使用位运算符(因为直接使用位运算符效率更高),为了更好的阅读源码那就好好学习一下吧,顺便把学习的东西记下来。 位运算符大致就以下几种吧。位运算符 名称 符号 用法 位求反 ~ ~expr 左移 << expr1 << expr2 右移...

2019-01-22 23:52:11 1781

转载 分布式事务的实现原理

事务是数据库系统中非常有趣也非常重要的概念,它是数据库管理系统执行过程中的一个逻辑单元,它能够保证一个事务中的所有操作要么全部执行,要么全不执行;在 SOA 与微服务架构大行其道的今天,在分布式的多个服务中保证业务的一致性就需要我们实现分布式事务。在这篇文章中,我们将介绍 事务的实现原理、分布式事务的理论基础以及实现原理。事务在文章的开头,我们已经说过事务是数据库管理系统执行过程中...

2018-11-30 20:39:11 255

原创 Java中的volatile

1.基本概念       在谈volatile的时候我们需要先了解一些JVM的基本概念。1.1.原子性       在计算机领域,即一个操作或多个操作在执行过程中不会受到其他因素的影响,并且要么全部执行成功,或者全部执行失败。 int i = 0, j = 0; //原子性操作,java中对基本数据类型的变量赋值都是原子性操作 i = 1; ...

2018-10-15 14:16:02 202

原创 SpringBoot 打包成war包,部署到tomcat

使用maven创建的springboot项目,默认是jar包,springboot还有自己带的tomcat。现在需要将项目打包,并部署到服务器tomcat下面。 1、修改pom.xml文件。将jar修改为war。<packaging>war</packaging>2、在pom.xml文件中将build节点中的finalName修改为server.context-...

2018-10-12 17:30:22 296

原创 SentOS7环境yum命令安装Mysql5.7

http://note.youdao.com/noteshare?id=0c3c5acaa960bb65f3429bb1f228bd95&sub=886DAEC7EA764FEF8EE6DE4E9B52683E

2018-10-11 16:08:28 510

原创 Mybatis 开启打印Sql语句

1.spring集成mybatis打印sql语句现在的spring-mybatis.xml配置如下:<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <...

2018-10-09 13:52:43 50455 6

原创 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

原创 简介java Collection接口

目录1.集合框架体系2.Collection 接口简介3.Collection 接口方法4.总结1.集合框架体系       集合是用于存储对象的容器。而每种容器内部都有其独特的数据结构,正因为不同的容器内部数据结构不同,使其各自有自己独特的使用场景。虽然每个容器有其独特的结构但是类似的容器还是存在共性的(至少对容器内部对象的操作方法上是存在共性的),所以这些共性方法能被不...

2018-09-17 22:47:44 278

原创 Spring @Value 注解赋值

       Spring开发中经常设计调用各种资源的情况,包括普通文件,网址、配置文件、系统环境变量等,Spring的提供了很多种犯法来完成这个步骤,这里仅介绍@Value注解来时实现。1.@Value("")@Value("张三")private String name;@Value("classpath:/person.properties")private Resourc...

2018-09-06 19:13:09 7314

原创 Spring Bean生命周期

 1.bean的生命周期:2.Bean的定义        Bean 是 spring 装配的组件模型,一切实体类都可以配置成一个 Bean ,进而就可以在任何其他的 Bean 中使用,一个 Bean 也可以不是指定的实体类,这就是抽象 Bean 。3.bean生命周期示例创建一个实体类,里面定义好构造函数、初始化方法和销毁方法。package com.yanling.b...

2018-09-05 01:37:23 225

原创 搭建SSM框架

 用惯了SpringBoot,都快忘了SSM框架怎么搭建了,特写一篇博客来记录,也可以提供给新手参考。准备环境idea jdk 1.8 maven3.3.9配置maven记得修改maven中央库。搭建步骤1.创建maven项目一定要打上勾,要不然没法选择下面的模块。点击Finish就可以搭建完成了。2.创建目录结构这里列出的是搭建完了之后所...

2018-08-29 01:03:01 245

原创 MySQL中Explain用法和结果分析

Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优化语句。Explain语法:explain select … from … [where …]例如:explain select * from sc;输出:下面对各个属性进行...

2018-08-23 21:36:22 655

转载 Intellij IDEA 快捷键整理(史上最全)

【常规】Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Shift+Click,可以关闭文件Ctrl+[ OR ],可以跑到大括号的开头与结尾Ctrl+F12,可以显示当前文件的结构Ctrl+F7,可以查询当前元素在当前文件中的引用,然后按 F3 可以选择Ctrl+N,可以...

2018-07-25 20:01:08 213

原创 HashMap详解

Java集合框架强大、简单、易用。尤其在设计业务逻辑的编程中,集合框架可以说是使用最多的类。Map集合是一种把键(key)和值(value)的结构集合,在实际引用中及其广泛。本篇简单分析java中hashmap的实现,并简单分析它的一些性能,使用过程中的需要注意的地方。1、HashMap 简介HashMap 是一个Hash表(散列表),它存储的内容是键值对(key-value)映射。 H...

2018-07-23 20:59:57 482

原创 SpringBoot整合shiro、自定义sessionManager

       Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。相比较Spring Security,shiro有小巧、简单、易上手等的优点。所以很多框架都在使用shiro。而springboot作为一个开源框架,必然提供了和shiro整合的功能!接下来就用springboot整合shiro完成对于用户登录的判定和权限的验证.1.基础数据公司...

2018-07-23 20:49:18 18169 3

原创 centos7开放、关闭及查看端口

centos7中的防火墙改成了firewall,使用iptables无作用。开放端口的方法:firewall-cmd --zone=public --add-port=3306/tcp --permanent关闭端口方法:firewall-cmd --remove-port=3306/udp --permanent命令含义: --zone #作用域 --add-...

2018-07-20 15:16:07 15098 2

原创 windows10环境下的RabbitMQ安装步骤(图文)

1、下载并安装erlang       原因:RabbitMQ服务端代码是使用并发式语言Erlang编写的,安装Rabbit MQ的前提是安装Erlang。下载地址:http://www.erlang.org/downloads双击,点next就可以。选择一个自己想保存的地方,然后next、finish就可以。安装完事儿后要记得配置一下系统的环境变量。此电脑...

2018-07-18 21:31:35 2003

原创 SpringBoot整合使用RabbitMQ

        RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。消息中间件在互联网公司的使用中越来越多,消息中间件最主要的作用是解耦,中间件最标准的用法是生产者生产消息传送到队列,消费者从队列中拿取消息并处理,生产者不用关心是谁来消费,消费者不用关心谁在生产消息,从而达到解耦的目的。在分布式的系统中,消息队列也会被用在很多其它的方面,比如...

2018-07-18 20:55:01 363

原创 RabbitMq 简介

一、RabbitMQ是什么  RabbitMQ,遵循AMQP协议,由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上。  学过websocket的来理解rabbitMQ应该是非常简单的了,websocket是基于服务器和页面之间的通信协议,一次握手,多次通信。 而rabbitMQ就像是服务器之间的socket,一个服务器连上MQ监听,而另一个服务器只要通过MQ发...

2018-07-18 13:55:26 420

转载 linux使用rpm和yum安装和卸载

一、rpm包的安装:1.安装一个包   # rpm -ivh 2.升级一个包   # rpm -Uvh 3.移走一个包   # rpm -e 4.安装参数   –force 即使覆盖属于其它包的文件也强迫安装   –nodeps 如果该RPM包的安装依赖其它包,即使其它包没装,也强迫安装。 5.查询一个包是否被安装   # rpm -q &lt; rpm package n...

2018-07-17 14:08:04 1142

PLSql 10 汉化工具

PLSql 10 汉化工具,走过路过不要错过,走过路过不要错过,走过路过不要错过,走过路过不要错过

2017-12-28

mysql驱动包

mysql的驱动包,mysql的驱动包,mysql的驱动包,mysql的驱动包,mysql的驱动包,mysql的驱动包,mysql的驱动包,mysql的驱动包

2017-09-11

QlikView使用手册

该章介绍了Qliktech公司,并解释该QlikView产品的差异。它概述了QlikView专业版的基本 内容,也勾画出了格式和结构的手册,指导学习者通过安装、设置教程例子和实际操作来学习 剩余的课程。

2017-09-11

空空如也

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

TA关注的人

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