- 博客(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
转载 十一、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关注的人