
Java
徐塬峰
6年Java开发经验,精通Spring Cloud微服务架构,熟悉Python数据分析与计算机视觉。致力于通过技术解决复杂业务问题,擅长高并发系统设计与性能优化,具备全栈开发能力。坚持技术分享,CSDN原创技术文章100+篇,GitHub参与开源项目3项+。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
代码整洁提升方案
代码整洁度提升原创 2023-01-15 21:42:07 · 4551 阅读 · 1 评论 -
SpringBoot实现图片文件的上传并显示
springboot实现图片上传的思路导入相关的依赖<!-- https://mvnrepository.com/artifact/commons-io/commons-io --><dependency> <groupId>commons-io</groupId> <artifactId>commons-io...原创 2019-03-29 13:46:54 · 3438 阅读 · 0 评论 -
TreeSet的几大特点
TreeSet的几大特点:1、TreeSet中存储的类型必须是一致的,不能一下存int,一下又存string2、TreeSet在遍历集合元素时,是有顺序的【从小到大】(我的理解,如果存的字母,按字典序排列)3、排序:当向TreeSet中添加自定义对象时,有2种排序方法,1:自然排序 2、定制排序自然排序:要求自定义类实现java.lang.Comparable接口并重写compareTo...原创 2019-04-02 11:16:07 · 4566 阅读 · 0 评论 -
关于HashMap容量的初始化,还有这么多学问
转载自 关于HashMap容量的初始化,还有这么多学问在《HashMap中傻傻分不清楚的那些概念》文章中,我们介绍了HashMap中和容量相关的几个概念,简单介绍了一下HashMap的扩容机制。文中我们提到,默认情况下HashMap的容量是16,但是,如果用户通过构造函数指定了一个数字作为容量,那么Hash会选择大于该数字的第一个2的幂作为容量。(3-&...转载 2019-03-31 19:58:24 · 580 阅读 · 0 评论 -
IntelliJ IDEA / Eclipse 自动生成 Author 注释 签名
Author 注释 签名如下:/*** @author 稚枭天卓 E-mail:[email protected]* @version 创建时间:2016-6-20 下午04:58:52*/Eclipse 自动生成 Author 注释 签名window-> preference->Java-> code styple-> code templat...转载 2019-03-31 19:38:49 · 604 阅读 · 0 评论 -
SpringMVC配置登录拦截器
项目中经常有需求,如果没有登录进入系统,则应该返回登录,那么这一层登录怎么去实现呢? 在ssm项目中主要通过继承HandlerInterceptorAdapter这个类代码:public class LoginIntercepter extends HandlerInterceptorAdapter { //handlerMapping处理前 //该函数...原创 2019-03-12 22:16:52 · 761 阅读 · 0 评论 -
使用MyBatis Generator自动生成代码 (一)
前言:mybaits 三剑客 :mybatis-generator、mybatis-plugin、mybatis-pagehelper其中本文将主要讲解mybatis-generator的作用以及用法。mybatis-generator主要的作用是通过数据库直接生成 相关的dao层、mapper层、pojo层,其大大节约了开发所花费的时间,让我们更加关注业务的实现。接下来就将一步一步讲解my...原创 2019-02-27 13:42:04 · 464 阅读 · 0 评论 -
SpringMVC--前后台日期格式传值解决方式 @InitBinder的使用
解决报错:Failed to convert value of type 'java.lang.String' to required type 'java.util.Date'发生这一错误的主要原因是Controller类中需要接收的是Date类型,但是在页面端传过来的是String类型,最终导致了这个错误。、解决方法在InitBinder 初始化的时候对日期类型进行转换,转换为可...原创 2019-02-20 18:10:25 · 1047 阅读 · 0 评论 -
Mybatis中编写like语句
Oracle SELECT * FROM user WHERE name LIKE CONCAT('%',#{name},'%') 或 SELECT * FROM user WHERE name LIKE '%'||#{name}||'%' SQL Server ...转载 2019-02-20 01:58:29 · 1938 阅读 · 0 评论 -
多线程-线程并发Fork/Join Task(三)
前言:当硬件处理能力不能按照摩尔定律垂直发展的时候,选择了水平发展,多核处理器已经广泛应用。未来随着技术的进一步发展,可能出现成百上千个处理核心,但现有的程序运行在多核心处理器上并不能得到较大性能的提升,主要的瓶颈在于程序本身的并发处理能力不强,不能够合理的利用多核心资源。ForkJoin框架作为线程并发框架,其核心采用了分而治之的思想,其思想将一个大的模块逐步划分为一个又一个小的任务...原创 2019-02-11 20:39:00 · 700 阅读 · 0 评论 -
SpringBoot事务-REQUIRES_NEW 事务属性陷阱
REQUIRES_NEW 事务属性陷阱不管是使用 Spring Framework,还是使用 EJB,使用 REQUIRES_NEW 事务属性都会得到不好的结果并导致数据损坏和不一致。REQUIRES_NEW 事务属性总是会在启动方法时启动一个新的事务。许多开发人员都错误地使用 REQUIRES_NEW 属性,认为它是确保事务启动的正确方法。考虑清单 11 中的两个方法:清单 11. 使用...转载 2019-02-10 14:02:37 · 10036 阅读 · 0 评论 -
Hash冲突解决方式
在Java编程语言中,最基本的结构就是两种,一种是数组,一种是模拟指针(引用),所有的数据结构都可以用这两个基本结构构造,HashMap也一样。当程序试图将多个 key-value 放入 HashMap 中时,以如下代码片段为例:HashMap<String,Object> m=new HashMap<String,Object>(); m.put("a", "r...转载 2019-04-09 09:11:13 · 479 阅读 · 0 评论 -
Java中Map集合中的Entry对象
Entry: 键值对 对象。 在Map类设计是,提供了一个嵌套接口(static修饰的接口):Entry。Entry将键值对的对应关系封装成了对象,即键值对对象,这样我们在遍历Map集合时,就可以从每一个键值对(Entry)对象中获取对应的键与对应的值。Entry为什么是静态的? Entry是Map接口中提供的一个静态内部嵌套接口,修饰为静态可以通过类名调用。Map集合遍历...转载 2019-04-20 21:39:51 · 1122 阅读 · 0 评论 -
解决多个Spring Boot项目部署在一个Tomcat容器无法启动
业务介绍最近用Spring Boot开发了了几个公众号项目,并准备做跳转引流。部署环境:JDK8、Tomcat8、Centos7遇到的问题我多个项目一直都是部署在同一个Tomcat下,共用80端口,之前使用的MVC或者Servlet项目都没有问题,但是今天把新的Spring Boot项目部署上去之后,Tomcat直接抛出异常,并且该项目无法访问,其他项目正常。报错信息:org....原创 2019-09-11 11:33:07 · 969 阅读 · 0 评论 -
SpringMvc报错Missing URI template variable ‘id‘ for method parameter of type long
long类型的方法参数缺少uri模板变量“id”问题出现的原因是使用@PathVariable注解而没有采用rest的写法如图所示:解决思路:加上 @RequestMapping("/ban/{userId}")...原创 2019-07-22 18:06:57 · 35654 阅读 · 7 评论 -
springboot 通用功能的开发
在开发过程中,我们常常会想,也许每天都是重复的CRUD类的工作,而基于面向对象又有很丰富的特性,例如:封装,继承,多态等特性。那么完全可以将通用的部分的代码抽离出来。极大的简化web开发。 什么样的功能可以被抽离?其实对于大家平常开发都会用的功能都可以抽离出来,一张表的增删改查。分页查询,批量操作等。对于缓存的操作,也可以抽离出来。尽可能的解除开发的耦合性, 对于通用功能的实现,也许对...原创 2019-07-30 14:49:49 · 1488 阅读 · 2 评论 -
多线程(六)实战--手写简单的线程池
1.什么是线程池?为什么用使用它1.降低资源的消耗,在之前做elasticsearch高级客户端的开发的项目中,每一次创建与elasticsearch的连接都会花费不少的时间,大约是1-2秒左右,这样的话,使用elastcisearch这样的分布式搜索服务器就没有必要了。所以可以使用线程池来对连接进行优化,如能把创建好的连接保存在线程池里,每一次需要调用的时候从线程池中取出连接,可以大幅度的节...原创 2019-06-09 15:51:38 · 670 阅读 · 0 评论 -
赛事管理系统,基于SSM框架一个简单的比赛裁判管理系统
简介这个项目是一个简单的比赛管理系统,该练手小项目希望能帮助到大家,SSM的整合使用技术IOC容器:SpringWeb框架:SpringMVCORM框架:Mybatis数据源:C3P0日志:log4j AOP前端框架:Hui其他插件: Ueditor快速上手1.运行环境和所需工具建议使用以下环境,避免版本带来的问题编译器:Eclipse项目构建工具:Maven数据库:...原创 2019-05-27 18:01:11 · 3479 阅读 · 0 评论 -
StringBuffer与StringBuilder的区别,及实现原理
区别1、StringBuffer 与 StringBuilder 中的方法和功能完全是等价的,2、只是StringBuffer 中的方法大都采用了synchronized关键字进行修饰,因此是线程安全的,而 StringBuilder 没有这个修饰,可以被认为是线程不安全的。3、在单线程程序下,StringBuilder效率更快,因为它不需要加锁,不具备多线程安全而Str...转载 2019-05-13 16:26:18 · 3086 阅读 · 0 评论 -
spring aop使用异步的方式批量处理系统日志
在软件开发的过程中,进行系统日志记录是必不可少的,我利用了Spring aop 自定义注解 面向切面编程 队列 异步 批量处理的方式 完成了我们系统的日志记录,提升了日志记录的性能。首先 :编写自定义注解,使用该注解注解在controller层的方法上,便于后续的aop记录日志。/** * @author 徐塬峰 2019/4/14 * 以自定义注解的方式记录日志 * 注解在方法......原创 2019-05-14 11:43:14 · 3657 阅读 · 2 评论 -
MyBatis与JPA的区别是什么
MyBatis分为全注解版和xml版;全注解版适合于小项目,直接在方法上加注解,在注解中写sql仓储Repository 模式是领域驱动设计中另一个经典的模式。在早期,我们常常将数据访问层命名为:DAO,而在 SpringData JPA 中,其称之为 Repository(仓储),这也不是巧合,而是设计者有意为之。熟悉 SpringData JPA 的朋友都知道当一个接口继承 JpaRep...原创 2019-05-08 14:28:03 · 4217 阅读 · 0 评论 -
@PathVariable是什么?详情及用法解析
@PathVariable 映射 URL 绑定的占位符带占位符的 URL 是 Spring3.0 新增的功能,该功能在SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义通过 @PathVariable 可以将&nbs...原创 2019-04-26 09:29:49 · 16314 阅读 · 0 评论 -
深入 理解Statement 和 PreparedStatement
一、使用Statement而不是PreparedStatement对象JDBC驱动的最佳化是基于使用的是什么功能. 选择PreparedStatement还是Statement取决于你要怎么使用它们. 对于只执行一次的SQL语句选择Statement是最好的. 相反, 如果SQL语句被多次执行选用PreparedStatement是最好的.PreparedStatement的第一次执行消耗是很...转载 2019-04-21 18:55:33 · 3890 阅读 · 0 评论 -
java高级--面试问题
一。三大框架方面问题1、Spring 事务的隔离性,并说说每个隔离性的区别解答:Spring事务详解2、Spring事务的传播行为,并说说每个传播行为的区别解答:Spring事务详解3、hibernate跟Mybatis/ ibatis 的区别,为什么选择?解答:Hibernate与Mybatis的比较4、Struts跟...转载 2019-01-23 16:11:26 · 1129 阅读 · 0 评论 -
Eclipse上安装P3C插件
1.P3C是什么?p3c是阿里开发的代码规范插件:为了让开发者更加方便、快速将规范推动并实行起来,阿里基于手册内容,研发了一套自动化的IDE检测插件(IDEA、Eclipse)。该插件在扫描代码后,将不符合规约的代码按Blocker/Critical/Major三个等级显示在下方,甚至在IDEA上,我们还基于Inspection机制提供了实时检测功能,编写代码的同时也能快速发现问题所在。...原创 2019-02-14 17:22:18 · 2194 阅读 · 1 评论 -
X-Forwarded-For 获得用户的真实ip
什么是X-Forwarded-For?X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。它不是RFC中定义的标准请求头信息,在squid缓存代理服务器开发文档中可以找到该项的详细介绍。标准格式如下:X-Forwarded-For: client1, proxy1, proxy2。如何通过...原创 2018-07-23 09:09:29 · 5485 阅读 · 2 评论 -
Linux环境下配置JDK环境与Tomcat环境
1.安装JDK linux版本目录 1.安装JDK linux版本2.将JDK发送到阿里云 linux服务器3.开始配置4.配置系统配置文件5.配置完成 测试类6.将写好的代码放到服务器上运行7.配置tomcat服务器8.下载完成后上传到云服务器中安装 JDKhttp://www.oracle.com/technetwork/java/java...原创 2018-07-03 20:23:48 · 765 阅读 · 0 评论 -
JavaWeb实现图片上传并显示
1.创建maven项目,打包格式为war,导入maven依赖 pom文件。<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 h......原创 2018-07-03 14:37:19 · 36419 阅读 · 0 评论 -
静态内部类
java中可以使用static关键字来声明一个成员内部类,该类被称为静态内部类,它可以在不创建外部类的对象的情况下被实例化。外部类名.内部类名 变量名=new 外部类名.内部类名();演示外部类class Outer{private static int num=6;static class Inner{void show(){System.out.println("num="+nu...原创 2018-06-07 09:48:05 · 581 阅读 · 0 评论 -
Ajax简单介绍与使用
1,阿贾克斯是什么?简单来说AJAX是一个局部的刷新技术,通过向服务器发送并且获得请求来刷新某一个局部界面,而不是整个界面的刷新。它是通过在HTML页面中使用的JavaScript的和的的XmlHttpRequest来向服务器发送和获取数据。它可以实现页面的局部刷新和异步刷新。2,如果没有的Ajax的会怎么样假如你在看网络视频的时候,如果没有AJAX这个局部刷新技术,那么每次你评论...原创 2018-06-07 09:31:41 · 806 阅读 · 0 评论 -
使用final来修饰方法
Final 来修饰方法final来修饰类 方法 属性都表示其值不可变,也就是说类不可继承,方法不可重写,属性不可覆盖。如果使用final来修饰方法,那么表示该方法不能被重写,如果在父类中使用final 来修饰方法,那么该方法就被定义为private,即不可重写,即方法被私有化了。demo父类 中有一个用final 声明的speak方法,子类继承父类并去调用speak方法。cl......原创 2018-06-07 09:15:26 · 19112 阅读 · 4 评论 -
JavaWeb中解决dom解析xml文件路径出错的问题
今天项目中使用dom 去解析xml文件但是由于是web项目 报错提示找不到xml文件路径data xml文件所处的位置解决方案: 写出相对于src的绝对路径即可,代码如下 URL xmlPath = MyXMLUtils.class.getClassLoader().getResource("./data.xml"); Docume...原创 2018-06-20 19:49:05 · 2179 阅读 · 0 评论 -
面向对象多态概念理解
1. 什么是多态一句话概括:父类对象引用子类变量 调用的是子类的实现例子:子类public class Chinese extends Person{ public void hello() { System.out.println("我是中国人"); } public void baimian() { System.out.println("我来拜年了"); } }...原创 2018-05-21 20:11:46 · 2578 阅读 · 1 评论 -
SSM框架整合ElasticSearch实现数据的增删改查实战案例
前言: 当处理海量数据时,单纯的mysql oracle 以及sql查询已经无法满足我们在效率上的需求,elasticSearch 是当下一款热门的实时搜索引擎基于lucense的搜索服务器,使用它可以完成近乎实时的数据查询。并且支持权重搜索,全文搜索等方式进行查询。目录一、准备开发环境二、常用操作三、查询结果高亮显示四、效果展示五、后记:一、准备开发环境......原创 2018-04-24 14:15:17 · 10501 阅读 · 3 评论 -
实现Runnable接口与继承Thread类的区别
一、首先通过例子实现这两种方式。1、继承Thread类。 Thread类是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了。首先新建一个MyThread类继承自Thread类,重写run()方法,在控制输入传递的文本,public class MyThread extends Thread { private ...转载 2018-05-18 12:46:58 · 910 阅读 · 0 评论 -
redis服务器在windows环境安装设置密码并注册为服务
1.安装windows版本的redis服务器与客户端下载地址:https://github.com/MSOpenTech/redis/releases 2.解压redis 主机解压之后 显示的目录如下 3.设置Redis密码找到redis.windows-service.conf文件 以记事本的方式打开配置文件 以记事本的方式打开并找到修改密码的这一段话 ***...原创 2018-08-07 13:06:51 · 1919 阅读 · 0 评论 -
javaweb项目部署到tomcat上去掉项目名后报错的问题
1.问题最近心血来潮在部署tomcat 项目的时候把项目名给去掉 ,但是在去掉项目名发布项目之后,出现了服务器错误500的问题 去掉项目名代码如下,配置path为”“,docBase 跟上项目名称即可。 &amp;lt;Context path=&quot;&quot; docBase=&quot;Search&quot; reloadable=&quot;true&quot原创 2018-08-08 09:29:48 · 585 阅读 · 0 评论 -
java中native是什么?什么时候去使用?
java中native的用法前言:在查看 Thread.java 文件时,发现有一个 方法比较特殊private native void start0();概念:native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中。Java语言本身不能对操作系统底层进行访问和操作,但是可以通过JNI接口调用其他语言来实现对底层的访...转载 2019-01-26 00:15:13 · 785 阅读 · 0 评论 -
用两个栈来实现一个队列,完成队列的Push和Pop操作。
剑指offer编程题用两个栈来实现一个队列,完成队列的Push和Pop操作。思路:由于队列是先进先出的,而栈是先进后出的,所以要用2个栈来实现队列的入队出队功能,队列的入队功能与栈的一样,出队时,先将第一个栈中的元素全部弹出,并倒入到第二个栈中,将第二个栈中栈顶元素弹出,并将stack2中剩下的元素倒回到stack1中,即实现一次出队操作实现import java.util....原创 2018-11-14 11:49:18 · 308 阅读 · 0 评论 -
java中char类型转换成int类型
PlanA:char ch = '9';if (Character.isDigit(ch)){ // 判断是否是数字 int num = Integer.parseInt(String.valueOf(ch)); System.out.println(num);} PlanB:char ch = '9';if (Character.isDigit(ch...原创 2018-10-26 09:06:36 · 4990 阅读 · 0 评论