自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 在Spring-Boot中使用@Value注解注入集合类

我们在使用spring框架进行开发时,有时候需要在properties文件中配置集合内容并注入到代码中使用。本篇博客的目的就是给出一种可行的方式。1.注入通常来说,我们都使用@Value注解来注入properties文件中的内容,注入集合类时,我们也使用@Value来注入。properties文件中的内容如下:my.set=foo,barmy.list=foo,barmy.map={"foo": "bar"}分别是我们要注入的Set,List,Map中的内容。注入方式如下:@Value(

2020-09-20 18:44:04 5374 1

原创 用JavaScript接收并显示字节流中的图片

写了个网页版贪吃蛇,需要在前端接受后端传过来的字节流然后显示,谷歌上搜了一下,最后的代码如下,并且简单做下讲解。socket.onmessage = function(msg) { var bytes = new Uint8Array(msg.data); var blob = new Blob([bytes], { type: "...

2020-04-12 22:27:30 17232 2

原创 Manacher算法详解

算法简介Manacher算法是一种用来求给定字符串的最大回文子串长度的算法。它相对于简单的中心扩展算法的优势在于不用从头开始扩展,也就是说计算以索引值为i的字符为中心的回文子串的长度时,不必从i-1和i+1开始比较,而是可以利用回文子串本身的一些性质,从离位置i更远的两头开始扩展,减少计算量。下面我们具体地看一下这个算法。算法过程我们目前只考虑所有位置的最大回文子串的长度是奇数的情况,偶数的...

2020-03-15 23:07:32 255

原创 锁机制及其实现--java并发包中的锁和redisson中的锁

前言在多线程环境中,多个线程访问同一块代码时,就会发生竞态条件(race condition),这意味着在某个时刻,我们无法确定到底是哪个线程在执行那块代码中的某个操作,也无法确定在那个操作之后,是不是同一个线程会继续执行下一个操作。这样带来的问题就是无法预测程序的行为,程序不会按照我们的期望运行,程序很容易出错甚至奔溃。在多线程环境中,我们需要一种机制来获得确定性,也就是一次共享代码块的完整...

2019-11-21 18:05:39 294

原创 Session和Cookie的区别

以前看过几篇别人讲Session和Cookie的区别的文章,但是大都给人一种语焉不详的感觉。本文从Tomcat自带的例子入手,讲一下Session和Cookie的区别,本文中Session指J2EE中的HttpSession接口,可参看源码;Cookie有两种含义,一种是指rfc6252中定义的一种HTTP头,另外一种是指J2EE中的Cookie接口。HttpSession接口这个接口是J2E...

2019-11-02 00:14:36 364

原创 在spring boot测试中无法加载配置文件中的值

项目中有变量是配置在application.yml文件里面的,运行整个项目时没有问题,但是单独拿出来进行测试的话变量一直是空。@Configuration@ConfigurationProperties(prefix = "file")@Datapublic class CameraImageProperties { private String uploadDir; ...

2019-09-18 16:04:07 1368 2

原创 对递归的进一步理解

这周看了一道求数组排列的题目,解法用了递归,看懂之后自己对递归的理解更深了。递归的定义递归是指程序调用自身,但调用时必须改变调用参数,直到某个参数满足退出条件。函数调用的过程会用到run-time stack,递归时栈中的内容有相似性,但是每一层的差异最终会导致运行栈增长的停止,并且从栈顶返回。理解递归,最终还是要归结到理解函数调用过程中运行栈的增长和退出。run-time stack...

2019-05-19 12:30:47 196

原创 addEventListener()中的第三个参数

昨天遇到一段js代码里面的addEventListener方法竟然有三个参数,去谷歌搜了一下,觉得这个概念很有意思,值得总结一下写成博客。useCaptureaddEventListener()中的第三个参数是Boolean类型的值,代表第二个参数handler是否在第一个参数Event的capture阶段使用。事件(Event)在事件目标(EventTarget)中的顺序当DOM元素之间...

2019-04-23 15:52:43 1712

原创 Spring Boot中的@EnableWebMvc

学习Spring Security时,需要在Spring Boot的配置类里面注册自己编写的登录页面,但是发现在/resources/static/目录下面的静态文件找不到了,访问的话显示404。找了很久才知道了问题所在。Spring中对静态文件的加载在Spring中如果我们想通过URL访问静态资源,比如/resources/下的文件,通过/resources/**来访问,就需要在配置类中重写...

2019-01-24 16:41:33 516

原创 自己配置的系统服务报错

今天在服务器上下载了hexo,准备搭建博客,安装好了之后想把hexo配置成系统服务,这样管理起来就能方便些。结果开始一直不行报错,最后搞了好几个小时。配置完了之后“systemctl start hexo”,然后"systemctl status hexo",发现没成功启动,“Active: failed (Result: start-limit)”。从这里踏上了谷歌的漫漫路,根据报错的信息不断...

2019-01-22 17:02:13 704

原创 js文件不起作用

今天写HTML代码时把jQuery文件的链接放在了自己的js文件链接的后面,所以js代码不起作用,看了半天才发现是这个原因。

2019-01-21 19:53:44 1532 2

原创 Java中的类加载与类卸载

类加载Java中的代码都写在类里面,源代码(.java文件)经过编译后会变成字节码(.class文件),当Java应用程序运行时,JVM会加载要用到的类。负责类加载的是java.lang.ClassLoader的对象,ClassLoader的对象会根据类的binary name(不知道怎么翻译,二进制名?)来读取类的字节码,然后把这些字节码加载到JVM的方法区里,同时会在heap里面创建一个C...

2018-12-19 15:47:14 3476 1

原创 实现接口中的方法

今天有人在群里问了一道Java题目:我看了一下不知道答案,遂谷歌之。答案应该是D。知识点:concrete类,不知道怎么翻译,就是可以直接实例化的类,必须实现它实现的接口中所有的方法。抽象类,可以只实现部分它实现的接口中的方法,剩下的部分让它的concrete子类去实现。...

2018-12-19 10:51:43 2501

原创 XML命名空间

.xml文件是很常见的配置文件类型,也经常会遇到,这篇文章以spring官方文档里面的一个.xml文件片段来讲解一下XML命名空间。<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="...

2018-12-07 11:44:57 1544

原创 进程和线程

算是对原文的总结加上两个实际的例子,最好能看一看英文原文,人家说得更详细。进程(process)一个进程就是程序的一个实例。程序运行时需要计算机硬件资源的支持,操作系统的任务就是分配进程需要的资源。每个进程都需要的计算机资源包括内存,寄存器,程序计数器,栈,堆。和线程不同,每个进程的堆都是互相独立的。这也保证了某个进程出错不会影响到其他进程。线程(thread)线程就是对进程获得的(操...

2018-12-05 15:14:04 139

原创 用公匙登录SSH

这篇文章并不是教你怎么设置,因为已经有很多相关的文章了。昨天用CRT生成密匙对之后把公匙上传到了服务器,验证可以登录之后,删了密匙。对你没看错,删了密匙只留下了公匙,再次登录的时候提示密匙不存在,这时候我竟然没有认真看报错信息,大概看了一眼就以为公匙加载有问题,试着把公匙放到了另外的文件夹,还试了重启CRT,试了重启电脑。。。。。。,最后才意识到可能是因为我删了另外一个文件,重新生成密匙对,上传...

2018-11-30 10:48:41 330

原创 TCP的建立连接,包重传,关闭连接

佛家喜欢讲缘起,确实很多事情都不是无缘无故发生,这篇文章就是今天早上跟朋友聊天时提到谷歌的BBR,然后我意识到自己网络方面的知识很匮乏,带着疑问去搜索答案,在搜索的过程中产生新的疑问,然后再寻找答案。最后就有了这篇文章。传输层主要有两个协议:TCP和UDP,TCP是面向连接的,是可靠的。UDP只管发送数据报(datagram),不管发送出去会发生什么,这种人活得很轻松,对自己的消耗很少,Face...

2018-11-27 17:02:09 686

原创 Java中的正则表达式

好久不用Java中的正则表达式,记得很多方法都在Matcher类里面,结果打开文档一脸懵逼,找不到一个合适的方法把原始字符串传进去,只好去谷歌上面找入门教程,发现Matcher类的对象是用原始字符串构造的,用Pattern的matcher(CharSequence input)方法来获得Matcher类的对象。后来发现文档里面有这么一句,不过是在Pattern的文档里面。A typical i...

2018-11-26 17:29:05 151

原创 Java中创建线程的两种方式

在Java中线程是Thread类的实例,有两个方式可以开新线程,分别对应Thread的两种构造方法:Thread()和Thread(Runnable target)。实现Runnable接口public class HelloRunnable implements Runnable { public void run() { System.out.println("H...

2018-11-26 17:16:29 168

原创 java.io包和java.nio包

Java中I/O相关的两个包是java.io和java.nio,它们的最重要的区别就是java.io里面的类是面向流的(stream oriented),java.nio里面的类是面向缓存的(buffer oriented)。面向流意味着一次读取一个或者一些字节,然后处理这些字节,在读取和处理这些字节时当前线程是阻塞的,不能干其他事情。面向缓存意味着把一些字节读到缓存里面,选择了读取的字节之后当...

2018-11-26 17:00:49 4124 1

原创 Java中复制字节流

因为InputStream只能进行一遍完整的读过程,之后里面就没有数据了,当我们需要读不止一次时,需要先复制出来。ByteArrayOutputStream baos = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int readLen;try { while ((readLen = clientSocket.g...

2018-11-26 16:52:41 579

原创 Java I/O

emmmm,这篇文章的题目可能有点大了,以后会不断完善更新。基础I/OJava中和I/O相关的类都在java.io包里面(当然,还有java.nio),I/O的形式都是以流的形式进行的,大致的方法是读和写,对应的类(也是方向)是入和出,从入方向的流中读取数据时,其中所剩的数据越来越少,直至读完,所以一个流中只能进行一遍完整的读取过程。最常用的就是字节流和字符串流。字符串流所有字符串流相关...

2018-11-26 16:48:56 339

转载 dig命令

刚刚想起来之前用到了一个新的命令,dig,但是没有及时记录下来,想补上一篇博文。发现网上已经有一篇很不错的文章了,直接转载了。原文链接

2018-11-12 18:25:02 824

原创 在JavaScript中获取主机IP

写了个网页小游戏,在自己电脑上测试没问题之后部署到了服务器上面,结果发现不行,原来是因为前端网页的js代码里面把websocket的ip硬编码成了localhost,也可以直接在服务器上面把websocket的IP写成服务器IP,但是本着避免硬编码的想法,在谷歌上面搜了一下获取主机IP的方法。location.host一开始显示的结果是这个,但是这个只能获取IP,我服务器上面tomcat用的...

2018-11-12 11:04:48 4771

原创 alternatives

添加链接描述

2018-11-07 17:27:00 400

翻译 SQL语句中的执行顺序

这也是一篇不完全的翻译,有兴趣的读者可以查看原文。SQL语句的执行顺序

2018-11-07 17:10:44 1206

原创 SQL中的几种JOIN

洋洋洒洒写几百个字,不如上传一张示意图。现在都讲可视化嘛,图片最直观了。

2018-11-07 16:23:12 6578 1

原创 MySQL中的JOIN

MySQL的官方文档上面是这么写的“MySQL executes joins between tables using a nested-loop algorithm or variations on it.”但是似乎又有其他算法,这篇文章的题目就是《MySQL Isn’t Limited to Nested-Loop Joins》,作者还在文中抱怨说“I think the MySQL docu...

2018-11-07 16:19:15 259

原创 MySQL中的窗口函数

从version 8.0开始,MySQL支持在查询中使用窗口函数。这篇文章是对一篇英文资料的不完全翻译,加上自己的一些理解。如果有兴趣可以去看看原文章。文中的示例用到的建表语句和插值语句如下:CREATE TABLE sales( sales_employee VARCHAR(50) NOT NULL, fiscal_year INT NOT NULL, sale DEC...

2018-11-06 17:02:14 24141 2

原创 Linux启动程序systemd和环境变量

昨天看到一篇文章,讲的是Linux的开机启动,个人感觉写得非常好。我是在学习环境变量时看到的,所以只翻译其中的一小部分,再结合环境变量讲一讲。建议大家好好读一下原文。systemdLinux系统的开机流程(boot process)的结束:选定的系统核(kernel)加载到内存,然后解压自己,加载systemd,此时控制权交给了systemd,开始系统的启动流程(startup process...

2018-11-06 11:36:58 9650

原创 .bash_profile和.bashrc

我们在CentOS上面配置程序时,看到有些地方写着在.bash_profile中写入xxx,有些地方写着在.bashrc中写入xxx。到底这两个文件有什么区别呢?根据bash man page,.bash_profile会在登录shell中生效,.bashrc会在交互非登录shell中生效。登录shell指的是我们输入用户名和密码之后打开的shell,比如我们通过ssh登录到远程主机,打开的sh...

2018-11-05 16:19:50 6090

原创 Java中的静态和非静态(static,non-static)

今天看别人的代码时,发现自己对Java中的静态成员和非静态成员的理解不够,所以又去查了资料看了文档,把最新的认识总结在这里。运行Java应用程序时,在实际的代码运行之前的一个步骤是加载类,具体点说,在Java SE 8的JVM中,需要先把类加载到Metaspace。如果类中有静态成员,加载类时会在heap中为其分配空间,此空间是属于类的。类中的非静态成员(实例成员)是和类的对象绑定的,它们属于对...

2018-11-05 15:51:15 4276

翻译 Java中的访问控制修饰符

在Java中,访问控制修饰符决定了一个类是否可以使用其它类中的某个域或者调用其它类中的某个方法,访问控制修饰符有两种层级:top level,修饰类,有public和package-private(也就是没显式指定修饰符时的类型)member level,修饰类中的成员,有public,private,protected和package-private(也就是没显式指定修饰符时的类型)下...

2018-11-05 14:56:00 998

原创 Java中的final关键字

Java中的final关键字修饰的项不可更改。具体来说就是final class不能被继承final 变量的值不能更改final方法不能被覆写。final修饰的变量值得多说两句,对于引用类型的变量,final的意思是声明变量时它指向哪个对象,它就要一直指向那个对象,那个对象变化与否都没关系。上代码:public class FinalDemo { public st...

2018-11-05 11:35:28 835

转载 CSS盒模型

转载别人的文章,方便以后查看。

2018-11-03 22:29:16 101

原创 把Tomcat配置为系统服务

yum命令安装Tomcat后发现是Tomcat7,现在Tomcat9都出来了,为了用上最新版本,就去官网下了压缩包自己解压安装了Tomcat9.0.12.但自己安装的操作起来不方便。本来准备把$CATALINA_HOME/bin/shartup.sh放到开机启动的脚本里面,突然想起来可以配置成系统服务呀,这样不是更方便吗。然而,事情并没有那么简单,毕竟我什么都不懂。找到了完美的配置。在这里找...

2018-11-03 13:09:01 2595

原创 添加域名解析

在阿里云注册了一个域名,添加域名解析时大概在网上搜了一下应该怎么填写。提交之后半天没生效,我那个着急呀,为什么不行呢,第二天在官网上面按照指引填写了一下,才发现把主机记录写错了,上面链接里面的那篇简书文章其实有图片,但是看的时候马马虎虎,觉得哦我已经明白了。我注册的域名是rjxj.xyz,想通过www.rjxj.xyz来访问主机,应该填www就可以了,结果我填了www.rjxj.xyz,所以ww...

2018-11-02 23:50:19 782

原创 Gradle入门

Gradle是一款构建基于JVM的项目的工具,除了Java,也支持Kotlin,Groovy和Scala等语言。Gradle的基本概念-task使用Gradle时,你想让Gradle做的事情就是task,比如编译:compileJava,打包:jar等等。在命令行输入task名称,Gradle就会执行相应的task。Gradle中的plugin在Gradle中,插件的作用是对某些task...

2018-11-02 23:39:47 110

原创 阿里云服务器SSH登录

趁着阿里云双十一打折,一口气买了三年的1核2G服务器(邀请链接https://m.aliyun.com/act/team1111/#/share?params=N.FF7yxCciiM.090ljchw)。选择了杭州的服务器并且创建实例之后不知道怎么用CRT通过ssh登录。看到网上说要先在阿里云ECS控制台创建密匙对,和自己的服务器实例绑定,然后下载.pem文件,之后照着别人的博客制作了实例的.p...

2018-11-02 23:31:01 3966

转载 DNS BIND之bind-utils

原文链接

2018-11-02 23:09:44 499

空空如也

空空如也

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

TA关注的人

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