自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 资源 (1)
  • 收藏
  • 关注

原创 MySQL字符集和排序规则

MySQL在 5.5.3 之后增加了 utf8mb4 字符编码,mb4即 most bytes 4,使用4个字节来表示完整的UTF-8,是utf8 的超集并完全兼容utf8,能够用4个字节存储更多的字符。:不区分大小写,不支持扩展,它仅能够在字符之间进行逐个比较,没有实现Unicode排序规则,在遇到某些特殊语言或者字符集,排序结果可能不一致。:是基于标准的unicode来排序和比较,能够在各种语言之间精确排序,unicode排序规则为了能够处理特殊字符的情况,实现了略微复杂的排序算法。

2023-05-04 13:25:18 1152

转载 if-else代码优化的八种方案

前言代码中如果if-else比较多,阅读起来比较困难,维护起来也比较困难,很容易出bug,接下来,本文将介绍优化if-else代码的八种方案。优化方案一:提前return,去除不必要的else如果if-else代码块包含return语句,可以考虑通过提前return,把多余else干掉,使代码更加优雅。优化前:if(condition){ //d...

2020-03-12 11:24:11 2095 1

转载 18 个Java8 日期处理的实践

示例1:Java 8中获取今天的日期 示例2:Java 8中获取年、月、日信息 示例3:Java 8中处理特定日期 示例4:Java 8中判断两个日期是否相等 示例5:Java 8中检查像生日这种周期性事件 示例6:Java 8中获取当前时间 示例7:Java 8中获取当前时间 示例8:Java 8如何计算一周后的日期 ...

2020-03-06 09:45:19 389

原创 Java8函数式接口介绍—Consumer、Function、Predicate

这里写自定义目录标题何为函数式接口?新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入何为函数式接口?函数式接...

2019-12-09 15:20:23 2088

原创 Java1.8—使用Stream通过对象某个字段对集合进行去重

有两种方法实现,一种是通过重写对象的的equals()和hashcode(),再使用distinct,distinct就是通过equals来去重的,下面看一个简单例子。package com.test.demo;import lombok.Data;/** * @description: * @author: * @create: 2019-11-28 17:08 **/@...

2019-11-28 18:03:59 11287

转载 深入浅出 Java 8 Lambda 表达式

Java是一流的面向对象语言,除了部分简单数据类型,Java 中的一切都是对象,即使数组也是一种对象,每个类创建的实例也是对象。在 Java 中定义的函数或方法不可能完全独立,也不能将方法作为参数或返回一个方法给实例。从 Swing 开始,我们总是通过匿名类给方法传递函数功能,以下是旧版的事件监听代码:someObject.addMouseListener(new MouseAdapt...

2019-11-07 11:38:09 143

转载 AbstractRoutingDataSource原理剖析

因为配置多数据源使用了这个类,固记录一下,方便后面查阅ThreadLocalRountingDataSource继承了AbstractRoutingDataSource,实现其抽象方法protected abstract Object determineCurrentLookupKey(); 从而实现对不同数据源的路由功能。我们从源码入手分析下其中原理:public abstract...

2019-10-24 10:31:39 940

转载 centos查看是否已经安装了某个软件

1.rpm包安装的,可以用rpm -qa看到,如果要查找某软件包是否安装,用 rpm -qa | grep "软件或者包的名字"。2.yum方法安装的,可以用yum list installed查找,如果是查找指定包,命令后加 | grep "软件名或者包名";例如:yum list installed openssl |grep openssl...

2019-10-11 22:54:21 547

原创 SpringBoot ——— 使用RestTemplate发送带token的GET和POST请求

最近要在项目中调用别人提供的接口服务,网上大概搜了一下,发现除了传统的httpclient之外,Spring也为我们提供了一个非常方便的HTTP客户端,允许我们调用各种rest服务,包括GET,POST,PUT,DELETE等等。折腾了一下发现还挺好用的,下面贴出RestTemplate发送GET和POST的示例代码。配置类:package com.test.config;import...

2019-09-16 14:29:51 21060 9

原创 踩坑——SpringBoot配置多数据源,循环引用问题

最近在使用SpringBoot配置AOP动态数据源,通过继承AbstractRoutingDataSource这个类来实现的,在使用的时候报了一个错误,如下大概就是dynamicDataSource依赖dataSourceScxys,dataSourceScxys依赖DataSourceInitializerInvoker,而DataSourceInitializerInvoker又依赖...

2019-08-07 10:42:24 3181

转载 Mysql数据库备份——数据库备份和表备份

Mysql中数据备份使用的命令是:mysqldump命令将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。mysqldump命令的工作原理很简单。它先查出需要备份的表的结构,再在文本文件中生成一个CREATE语句。然后,将表中的所有记录转换成一条INSERT语句。然后通过这些语句,就能够创建表并插入数据。1、Mysql语句备份一个数据库:备份的语句my...

2019-07-15 10:32:15 2220

转载 ExecutorService中submit和execute的区别

在Java5之后,并发线程这块发生了根本的变化,最重要的莫过于新的启动、调度、管理线程的一大堆API了。在Java5以后,通过Executor来启动线程比用Thread的start()更好。在新特征中,可以很容易控制线程的启动、执行和关闭过程,还可以很容易使用线程池的特性。一、创建任务任务就是一个实现了Runnable接口的类。创建的时候实run方法即可。二、执行...

2019-06-18 11:41:54 2170

转载 通俗易懂的解释HTTPS

通俗易懂的HTTPS,SSL,数字签名,电子证书的说明文章.什么是HTTPS?HTTPS是HTTP协议和SSL/TLS协议的组合。SSL/TLS是什么?SSL全名为Secure Sockets Layer,他是网景公司发明的用来解决http协议使用明文传输信息造成的信息安全泄露问题,而发明出来的协议。后来,因为SSL应用广泛,于是他成为了互联网的一个标准。于是SSL被标准化后改名为...

2019-06-13 11:16:28 339

转载 CopyOnWriteArrayList解读

前一阵子写过一篇COW(Copy On Write)文章,结果阅读量很低啊...COW奶牛!Copy On Write机制了解一下可能大家对这个技术比较陌生吧,但这项技术是挺多应用场景的。除了上文所说的Linux、文件系统外,其实在Java也有其身影。大家对线程安全容器可能最熟悉的就是ConcurrentHashMap了,因为这个容器经常会在面试的时候考查。比如说,一个常见的面试...

2019-06-05 14:56:08 203

转载 Linux cat命令详解

cat命令主要用来查看文件内容,创建文件,文件合并,追加文件内容等功能。A:查看文件内容主要用法:1、cat f1.txt,查看f1.txt文件的内容。2、cat -n f1.txt,查看f1.txt文件的内容,并且由1开始对所有输出行进行编号。3、cat -b f1.txt,查看f1.txt文件的内容,用法与-n相似,只不过对于空白行不编号。4、cat -sf1.tx...

2019-05-22 22:35:52 252

转载 Java并发之CAS机制

我们先看一段代码:启动两个线程,每个线程中让静态变量count循环累加100次。最终输出的count结果一定是200吗?因为这段代码是非线程安全的,所以最终的自增结果很可能会小于200。我们再加上synchronized同步锁,再来看一下。加了同步锁之后,count自增的操作变成了原子性操作,所以最终输出一定是count=200,代码实现了线程安全。虽然synchroni...

2019-05-21 22:40:34 182 1

转载 JVM内存模型详解

一 jvm运行时数据区有哪些我们先来看一张图JVM运行时数据区分类1. JVM栈 (Java Virtual Machine Stacks)2. 堆内存 (Heap Memory)3. 方法区 (Method Area)4. 本地方法栈 (Native Method Stacks)5. 程序计数器 (Program Counter (PC) Register)...

2019-05-21 16:38:10 97

原创 合并两个有序链表

题目描述将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思路分析首先,两个链表是有序的,要合并这两个有序链表使合并后的链表仍然有序,我们可以采用这样的方法,构造一个空节点,比较两个有序链表第一个...

2019-05-20 01:18:06 212

原创 LeetCode——有效的括号

题目描述给定一个只包括'(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输...

2019-05-19 20:02:42 118

原创 LeetCode——最长公共前缀

题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母a-z。思路分析大概有这...

2019-05-19 18:18:37 162

原创 LeetCode——罗马数字转整数

题目描述罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两...

2019-05-19 00:56:52 128

转载 SpringMVC中Controller单例线程安全问题思考

spring生成对象默认是单例(也就是一个对象)的。通过scope属性可以更改为多例。第一部分:验证Spring生成对象默认是单例的。下面我们来一个网上的例子验证一下:<beanid="singleton"class="java.util.Date"scope="singleton"></bean><beanid="prototy...

2019-05-16 00:05:37 2925 2

原创 设计四个线程,两个线程对j+1,两个线程对j-1

自己的解法:public class FourThread { private int j; Object o = new Object(); class A extends Thread { @Override public void run() { synchronized (o) { j++; System.out.println(Thread.c...

2019-05-14 19:55:19 543

原创 返回斐波拉契数列某项的值

斐波拉契数列指的是这样一个数列:1、1、2、3、5、8、13、21、34....即每项的值是前两项数值之和。现要实现一个函数,返回指定项的值,以下分别是递归方式和递推方式的实现递推 public static void getvalue(int n){ int[] array=new int[n]; array[0]=1;array[1]=1; for(int i=0...

2019-05-14 18:29:31 283

转载 如何修改运行中docker容器的端口映射

在docker run创建并运行容器的时候,可以通过-p指定端口映射规则。但是,我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改。当docker start运行容器后并没有提供一个-p选项或设置,让你修改指定端口映射规则。那么这种情况我们该怎么处理呢?方法一:删除原有容器,重新建新容器这个解决方案最为简单,把原来的容器删掉,重新建一个。当然这次不要忘记加上端口映射。优缺点:优点是...

2019-05-08 22:27:07 4115 2

原创 docker的Repository和Registry的理解

Repository:镜像仓库,用于存储具体的docker镜像,起到的是仓库存储作用,比如Tomcat下面有很多个版本的镜像,它们共同组成了Tomcat的Repository,我们通过tag来区分镜像版本 Registry:注册服务器,管理镜像仓库,起到的是服务器的作用,比如官方的是Docker Hub,它是开源的,我们一般通过docker pull默认是拉取官方镜像仓库的镜像,当然我们也可以自...

2019-05-08 19:34:25 1974

转载 如何理解group by

写在前面的话:用了好久group by,今天早上一觉醒来,突然感觉group by好陌生,总有个筋别不过来,为什么不能够select * from Table group by id,为什么一定不能是*,而是某一个列或者某个列的聚合函数,group by 多个字段可以怎么去很好的理解呢?不过最后还是转过来了,简单写写吧,大牛们直接略过吧。=========正文开始===========...

2019-05-08 18:02:29 139

原创 docker进入容器命令

两种方式,第一种 docker attach 44fc0f0582d9 但是这种方式有缺点,当多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作。推荐第二种docker exec -it 44fc0f0582d9 /bin/bash注:如果出现OCI runtime exec failed: exec fa...

2019-05-07 23:41:04 73286 2

原创 LeetCode——回文数

题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它...

2019-05-05 22:20:24 104

原创 LeetCode——整数反转

题目描述给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−231, 231− 1]。请根据这个假设,如果反转后整数溢出那...

2019-05-05 14:25:51 163

原创 LeetCode——两数之和

给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]我的解法...

2019-05-04 17:23:00 92

原创 三个线程循环打印ABC

采用synchronized,wait,notifyAll实现,要实现这个功能,如Thread A >>A ,Thread B>>B,Thread C >>C,按顺序执行,那么我们需要让线程持有两个锁,一个是前一个打印线程对应的锁,一个是自己的锁,当线程同时获取到两个锁时,可以执行打印,打印结束后,释放自己的锁并唤醒其他等待该锁的线程,同时调用wait释放前一个...

2019-05-02 18:34:32 4419 4

原创 单线程模式的生产者消费者案例

消费者与生产者问题是多线程中比较经典的问题之一,在学习并发编程中往往会针对这个问题来讲解程序的设计及思想,下面实现一个简单的单线程生产者与消费者模式。public class Producer_Consumer { private int i = 0; Object LOCK = new Object(); private boolean isProduce = false;...

2019-05-01 18:47:14 753

原创 暴力结束线程案例

结束线程我们常用的有两种方式,一种是通过interrupted方法判断线程是否处于打断状态,还有一种是设置一个标志位,如下interruptedpackage forceclose;public class MyThread extends Thread { @Override public void run() { while(true){ if(Thread.int...

2019-05-01 12:47:08 254

原创 IDEA不显示java及resources目录下的文件

刚用IDEA没多久,今天打开发现项目不显示java目录下的.java文件了,文件夹显示有文件,但是没有小三角形图标打不开。弄了好久找到解决办法:File >> Invalidate Caches/Restart >>Invalidate and Restart等待重启即可。...

2019-04-26 12:21:56 3489 1

转载 Maven父子工程依赖jar传递方式

如果父项目pom中使用的是: <dependencies> ....</dependencies> 方式, 则子项目pom会自动使用pom中的jar包。 如果你需要子类工程直接自动引用父类的jar包,可以使用这种管理方法 如果父项目pom使用 <dependencyManagement> ...

2019-04-26 01:28:02 4709

原创 Your ApplicationContext is unlikely to start due to a @ComponentScan of the default package.

出现这个错误一般是因为把主启动类直接放在了src目录下,而ApplicationContext 是不能在默认包下启动。解决办法:在src在建一个包,将启动类放在这个包里即可,只要不是默认包都可以...

2019-04-25 22:54:45 206

原创 判断一个数是不是2的整数次幂(Java实现)

解题思路:循环将这个数除以2,取商再除以2,每次取商后除以2判断余数是否为0,如果不为0,肯定不是2的整数次幂,直接退出,如果为0,继续循环,当这个数等于1时,退出循环说明是2的整数次幂代码如下public static boolean ispow(int i){ if(i<=1){ return false; } do{ if(i%2!=0){ r...

2019-04-24 16:27:30 1802 1

原创 在排好序的数组中,找出两个数之和为m的所有下标组合

题目不难理解,举个例子int a[] = {1,2,3,4,5,6};m为6,这里1+5=6,2+4=6,所以应该返回下标0,4和1,3解题思路,因为是排好序的数组,可以利用二分查找的思想,设置数组的头尾标志,每次取数求和判断是否等于m,如果等于说明找到一组组合,输出下标,然后头标志后移,尾标志前移,不等于则有两种情况1.两数之和大于m,由于数组是排好序的,所以尾标记前移2.两数之...

2019-04-24 14:09:53 642

原创 SprngBoot如何向容器中注册servlet与Filter

在没使用SpringBoot之前,我们要使用Servlet或者过滤器需要在web.xml中进行配置,而SpringBoot使用的内嵌Servlet容器,没有web.xml,这个时候要使用Servlet,过滤器,我们可以按照SpringBoot推荐往容器中注册组件的方式来注册。只需写一个配置类,将对应的Bean注入即可,下面来看看具体使用。注入Servlet我的Servlet就是简单的向浏览器输...

2019-04-13 11:45:08 269

solr环境搭建相关资源包

linux环境下搭建solr相关的工具包,解压即用,内含tomcatsolr以及IK分词器,jdk选择1.7以上的版本即可

2019-03-19

空空如也

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

TA关注的人

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