自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 String中方法replace与replaceAll的区别详解

问题最近在查线上问题的时候,发现日志里面挺多这种PatternSyntaxException错误的。从日志中可以清楚的知道,出问题的地方就是调用了String的replaceAll方法。等等,这个不就是个普通的替换方法嘛?难道是我用的姿势不对?话不多说,赶紧看一波源码,将bug修复原因分析以及解决方案在大多数人的认知里,replace方法是替换符合的单个字符串,而replaceAll是替换所有符合的字符串。瞄了一下源码,真的打脸了。源码分析 /** * Replaces each su

2020-07-11 18:33:34 1155

原创 redis分布式锁的实现

为什么要用分布式锁使用场景xx游戏平台举办了一个回馈用户活动,只要等级达到x等级,即可领取xx装备。可能有些人,有过这样的想,是不是,只要我速度够快,就能领到多份奖品啊,想想都美滋滋。结果,系统显示,当前操作过于频繁,请稍后再试。what???这个的话,就涉及到了锁。同个账号,当我们的第一次请求到服务器的时候,已经被加上了锁,当还没释放锁的时候,再次请求,则不能拿到锁,只能继续等待。(当然这...

2020-03-05 21:48:46 259

原创 OOM问题分析定位

一 、问题描述 二、MAT分析三、代码问题四、问题解决

2020-02-21 16:55:17 936

转载 十一、SpringBoot之使用外置的Servlet容器及启动原理

一、嵌入式和外置Servlet容器对比嵌入式Servlet容器:应用打成可执行的jar​优点:简单、便携;​缺点:默认不支持JSP、优化定制比较复杂;外置的Servlet容器:外面安装Tomcat---应用war包的方式打包;二、使用外置的Servlet容器步骤1、必须创建一个war项目;(利用idea创建好目录结构)2、生成web目录和web.xml3...

2019-01-20 23:09:23 195

转载 十、SpringBoot之配置嵌入式Servlet容器及其原理

一、如何定制和修改Servlet容器的相关配置1.修改Servlet容器的相关配置修改和server有关的配置(ServerProperties); //和server有关的配置@ConfigurationProperties( prefix = "server", ignoreUnknownFields = true)public class ServerPro...

2019-01-20 23:03:15 167

转载 九、SpringBoot之错误处理机制原理

1、SpringBoot默认的错误处理机制默认效果:​ 1.浏览器,返回一个默认的错误页面浏览器发送请求的请求头:​ 2.如果是其他客户端,默认响应一个json数据​  原理:可以参照ErrorMvcAutoConfiguration.java;错误处理的自动配置;ErrorMvcAutoConfiguration给容器中添加了以下组件​ 1.Defau...

2019-01-20 22:47:19 198

转载 八、SpringBoot之Web开发实战

一、简介使用SpringBoot:1、创建SpringBoot应用,选中我们需要的模块; 2、SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来 3、自己编写业务代码;自动配置原理:1、xxxxAutoConfiguration:帮我们给容器中自动配置组件; 2、xxxxProperties:配置类来封装配置文件的内容;二、Restf...

2019-01-20 22:20:37 282

转载 七、SpringBoot之SpringMVC自动配置原理

SpringMvc自动配置文档1、Spring MVC 自动配置Spring Boot 自动配置好了SpringMVC以下是SpringBoot对SpringMVC的默认配置:都在WebMvcAutoConfiguration.java这个类里自动配置了ViewResolver(视图解析器:根据方法的返回值得到视图对象(View),视图对象决定如何渲染,是转发还是重定向。例如:C...

2019-01-20 11:26:46 255

转载 六、SpringBoot之Thymeleaf模板引擎使用

 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_29479041/article/details/82981446市面上的模版引擎:JSP、Velocity、Freemarker、ThymeleafSpringBoot推荐的Thymeleaf:语法更简单,功能更强大;thymeleaf官网1、引入Thymeleaf...

2019-01-20 11:18:52 151

转载 五、SpringBoot对静态资源的映射规则

1.所有 /webjars/** ,都去 classpath:/META-INF/resources/webjars/ 找资源;​ webjars:以jar包的方式引入静态资源;webjars官网访问地址:http://localhost:8080/webjars/jquery/3.3.1/dist/jquery.js2."/**" 访问当前项目的任何资源,都去静态资源的文件夹...

2019-01-20 11:16:25 198

原创 四、SpringBoot之日志使用原理

1、日志框架使用原因:(开发一个大型系统为例)之前我们习惯用 System.out.prinltln(" "),将关键数据打印在控制台上,当项目上线后,必须手动将这些输出语句去掉 控制台输出的数据有利于我们项目上线后排查问题,这时我们需要将这些数据存放在一个文件中 这个时候我们通常的做法是引入一个jar包,实现以上的需求,比如 xxxx.jar  使用了一段时间后,我们发现步骤3引入...

2019-01-20 11:15:18 274

转载 三、SpringBoot之配置方法和自动配置原理详解

目录一、配置文件二、YAML配置文件:1、基本语法2、值的写法三、配置文件值注入1、配置文件写法(以下介绍两种):2、javaBean(两种注入方式)3、pom.xml4.测试5、properties配置文件在idea中默认utf-8可能会乱码,调整方法四、@Value获取值和@ConfigurationProperties获取值比较五、@Prope...

2019-01-20 11:10:20 189

转载 二、SpringBoot之使用向导快速创建SpringBoot应用

IDE都支持使用Spring的项目创建向导快速创建一个Spring Boot项目:新建一个项目输入项目名,包名之类的选择我们需要的模块,向导会联网创建Spring Boot项目按照相相关的pom.xml文件,把相关依赖都导入进来主程序自动生成好了,我们只需要我们自己的逻辑写一个Controller测试一下默认生成的Spring Boot项目:- r...

2019-01-19 21:16:26 161

转载 一、SpringBoot之HelloWorld探究-自动配置原理

目录一、环境准备二、MAVEN设置三、创建Spring Boot的 HelloWorld程序四、Hello World探究1、POM文件2、主程序类,主入口类1.@SpringBootConfiguration:Spring Boot的配置类2.@EnableAutoConfiguration:开启自动配置功能一、环境准备环境约束–jdk1.8:Spri...

2019-01-19 21:04:04 119

转载 mysql高可用-基于docker容器下的pxc集群方案

mysql单机性能测试mysqlslap -h192.168.1.16 -uroot -p123456 -P3306 --concurrency=5000 --iterations=1 --auto-generate-sql --auto-generate-sql-load-type=mixed --auto-generate-sql-add-autoincrement --engine=in...

2018-10-10 14:10:32 351

原创 【Java.NIO】Channel,Selector,SelectionKey以及应用实例

Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。 1.NIO的通讯过程: 过程:NIO实现了IO多路复用的Ractor模型,一个线程Thread使用一个选择器Selector通过轮询的方式去监听多个通道Channel上的事件,找到IO事...

2018-08-23 10:04:25 4760 1

原创 数据库常见问题

1.数据库索引失效的场景:应尽量避免在 where 子句中使用 != 或 <> 操作符,否则引擎将放弃使用索引而进行全表扫描; 尽量避免在 where 子句中使用 or 来连接条件 如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不会使用索引; like的模糊查询以 % 开头,索引失效; 应尽量避免在 where 子句中对字段进行表达式操作 应尽量避免在 ...

2018-08-06 10:57:08 406

转载 进程间的几种通信方式的比较和线程间的几种通信方式

几种进程间的通信方式(1) 管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有血缘关系的进程间使用。进程的血缘关系通常指父子进程关系。(2)有名管道(named pipe):有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间通信。(3)信号量(semophore):信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它通常作为一种锁机制,防止某进...

2018-07-26 21:16:19 331

转载 高并发处理方案

技术的深 一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单,随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求...

2018-07-08 18:56:41 258

原创 使用readLine()方法遇到的坑

程序很简单,客户段从控制台读取用户输入,然后发送至服务器端,主要代码如下服务端代码:客户端代码:   结果运行的时候,当开启服务端和客户端后,在客户端的控制台 键盘输入 内容,服务端却没有显示内容原因:1.原来readLine()方法在进行读取一行时,只有遇到回车(\r)或者换行符(\n)才会返回读取结果,这就是“读取一行的意思”,重要的是readLine()返回的读取内容中并不包含换行符或者回车...

2018-06-21 16:14:20 35930 2

转载 BIO,NIO,AIO的区别

一、看图网上很多IO资料,对新手来说,越看越晕。根据自己的理解,总结对比了一下BIO、NIO、AIO。BIO:线程发起IO请求,不管内核是否准备好IO操作,从发起请求起,线程一直阻塞,直到操作完成。如下图:NIO(reactor模型):线程发起IO请求,立即返回;内核在做好IO操作的准备之后,通过调用注册的回调函数通知线程做IO操作,线程开始阻塞,直到操作完成。如下图:AIO(proactor模型...

2018-06-21 10:25:22 122

原创 如果hashMap的key是一个自定义的类,怎么办?为什么重写equals还要重写hashcode

如果hashMap的key是一个自定义的类,必须重写该类的hashcode()方法和equals()方法  HashMap中,如果要比较key是否相等,要同时使用这两个函数!因为自定义的类的hashcode()方法继承于Object类,其hashcode码为默认的内存地 址,这样即便有相同含义的两个对象,比较也是不相等的,equals()比较的是内存地址是否相等。例如,Student ...

2018-06-19 10:19:11 2776

转载 CountDownLatch理解:与join的区别

首先,我们来看一个应用场景1:假设一条流水线上有三个工作者:worker0,worker1,worker2。有一个任务的完成需要他们三者协作完成,worker2可以开始这个任务的前提是worker0和worker1完成了他们的工作,而worker0和worker1是可以并行他们各自的工作的。如果我们要编码模拟上面的场景的话,我们大概很容易就会想到可以用join来做。当在当前线程中调用某个线程 th...

2018-06-11 10:35:10 235

转载 线程池原理(讲的非常棒)

Java并发编程:线程池的使用  在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:  如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。  那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?  在Java中可以...

2018-06-08 10:23:03 184

转载 term query与match query区别

看官方提供的例子[plain] view plain copyPUT my_index  {    "mappings": {      "my_type": {        "properties": {          "full_text": {            "type":  "string"            },          "exact_val

2018-06-03 20:35:34 20729 2

转载 spring注入时bean的set方法为什么不能是static类型的?

静态方法是属于类(class)的,普通方法才是属于实体对象(也就是New出来的对象)的,spring注入是在容器中实例化对象,所以不能使用静态方法在springframework里,我们不能@Autowired一个静态变量,使之成为一个spring bean,例如下面这样:[java] view plaincopy@Autowired  private static YourClass your...

2018-06-01 16:14:02 275

原创 项目遇到的问题

1.在一个springMVC项目中,用测试环境进行测试的时候,用 ==比较传入的参数与指定的字符串,只要字符串字母相等,则会返回true,而当部署到线上的时候,则返回的是false,这个问题找了很久,后来用debug模式解决了原因:在基本数据类型中,不存在equal方法,只有==方法,比较的是基本数据类型的数值,而在引用类型中==比较的是引用类型的地址,equal比较的是引用类型指定的对象的内...

2018-05-28 10:16:56 186

转载 关系数据库三大范式详细剖析

引言  数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。  设计范式是不是很难懂呢?非也,大学教材上给我们一堆数学公式我们当然看不懂,也记不住。所以我们很多人就根本不按照范...

2018-05-28 10:14:09 527

原创 spring boot 遇到的一些问题

1.Spring boot中是不支持jsp模块的,静态资源一般存放在以下几个路径(直接存放在类路径下)classpath:/templates,classpath:/public,classpath:/static注意:需要在application.properties(application.yml)配置文件中配置静态资源路径:2.spring boot和mybatis整合流程...

2018-05-20 23:15:00 236

原创 引用webservice时提醒两个类具有相同的 XML 类型名称

今天自己写了个webservice,然后发布出去,在进行解析,调用之后显示查了一下,主要原因是xml命名冲突了修改前:修改后:修改后可以看到结果能够正确显示...

2018-04-14 16:05:18 4926

转载 天气预报webservice wsimport注意事项

来源:https://blog.csdn.net/lener0611/article/details/19046571wsdl地址 http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl直接使用wsimport 通过该地址生存java 文件时,会报错。因为该wsdl里面包含 ref = "s:schema" 这样的引用。而j...

2018-04-14 10:24:31 241

原创 EL表达式从数组 Map 集合取值

//MapMap<Integer,Student> map = new HashMap<Integer, Student>();map.put(101,new Student("张三",15));map.put(102,new Student("李四",25));map.put(103,new Student("王五",35));//放入域对象中pageCont...

2018-02-24 23:42:39 1047

转载 android中menu.add()参数解析

在menu.add()有四个参数,开始不懂其理。看过后记于此,以备查阅。任何一款软件都少不了对“菜单”的使用。在Android下,每一个activity都捆绑了一个Menu,要想定义和使用菜单,都必须在Activity下进行操作,复写onCreateOptionsMenu 和 onOptionsItemSelected这两个方法。举例如下:java代码:@Override

2017-11-18 14:33:19 2717

空空如也

空空如也

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

TA关注的人

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