自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

石光辉的博客

千行代码,Bug何处藏。纵使上线又怎样,朝令改,夕断肠。

  • 博客(58)
  • 收藏
  • 关注

原创 java8 stream 中Collectors使用详解

一.首先先造点我们用来测试的数据 Student student=new Student("001","sgh",99,"men"); Student student1=new Student("002","asd",100,"women"); Student student2=new Student("003","dfg",110,"men"); Student student3=new Student("004","erg",115,"me

2021-09-28 17:08:21 1562 1

原创 java.lang.NullPointerException: element cannot be mapped to a null key错误原因

1.使用java8的stream流对数据进行处理,要按照某个字段对数据进行分组的时候报了一个错误,该错误出现的原因是list中该字段为null导致。Map<String, List<HospitalSectionBo>> collect = setMeal.getSectionBos().stream().collect(Collectors.groupingBy(HospitalSectionBo::getSectionCate));也就是当HospitalSectionBo

2021-07-12 17:40:23 4279 1

原创 用两个栈实现队列

题目描诉:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。问题分析:先来回顾一下栈和队列的基本特点: 栈:后进先出(LIFO) 队列: 先进先出 很明显我们需要根据JDK给我们提供的栈的一些基本方法来实现。既然题目给了我们两个栈,我们可以这样考虑当push的时候将元素push进stack1,pop的时候我们先把stack1的元素pop到stack2,然后再对stack2执行pop操作,这样就可以保证是先进先出的。(负[pop]负[pop]得正[先进先出])考察内

2021-04-19 17:18:55 125

原创 合并两个排序的链表

题目描诉输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。问题分析:我们可以这样分析:假设我们有两个链表 A,B;A的头节点A1的值与B的头结点B1的值比较,假设A1小,则A1为头节点;A2再和B1比较,假设B1小,则,A1指向B1;A2再和B2比较。。。。。。。 就这样循环往复就行了,应该还算好理解。示例代码非递归版本/*public class ListNode { int val; ListNode next = null

2021-04-19 16:51:11 92

原创 调整数组顺序使奇数位于偶数前面

题目描诉:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。问题解析:这道题有挺多种解法的,给大家介绍一种我觉得挺好理解的方法: 我们首先统计奇数的个数假设为n,然后新建一个等长数组,然后通过循环判断原数组中的元素为偶数还是奇数。如果是则从数组下标0的元素开始,把该奇数添加到新数组;如果是偶数则从数组下标为n的元素开始把该偶数添加到新数组中。示例代码: public vo

2021-04-19 16:23:27 90

原创 二维数组查找

1.题目描诉在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。问题解析:一种很好理解的思路,矩阵是有序的,从左下角来看,向上数字递减,向右数字递增, 因此从左下角开始查找,当要查找数字比左下角数字大时。右移 要查找数字比左下角数字小时,上移。这样找的速度最快。示例代码 public boolean Find(int target, int [][] array) {

2021-04-19 16:05:28 53

原创 java解析Excel文件,接口导入Excel文件,解析

接口参数@PostMapping(value = Hplus.platform.trade.batch_post_sale, consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public Mono<HplusResponse<BatchPostSaleByPosSaleNoResultBo>> batchPostSaleByPostSaleNoList(@RequestPart(name = "file") FilePart

2021-04-15 10:03:57 612

原创 响应式编程中排序问题

@Override public Flux<ExpressPostDto> findExpressPostOrder(String keyword, Pageable pageable) { return reactiveMongoTemplate.aggregate( Aggregation.newAggregation( Aggregation.match(criteriaExpress.

2021-02-19 11:26:57 256

原创 springboot中常用注解

1.@Id主键,不可重复,自带索引,可以在定义的列名上标注,需要自己生成并维护不重复的约束。如果自己不设置@Id主键,mongo会自动生成一个唯一主键,并且插入时效率远高于自己设置主键。原因可参考上一篇mongo和mysql的性能对比。在实际业务中不建议自己设置主键,应交给mongo自己生成,自己可以设置一个业务id,如int型字段,用自己设置的业务id来维护相关联的表。2.@Indexed声明该字段需要加索引,加索引后以该字段为条件检索将大大提高速度。唯一索引的话是@Indexed(unique

2021-02-19 11:08:25 403

原创 mongoDB中按照某一字段搜索,该字段可能为空问题处理

1.医院列表按照特殊库存字段搜索,但是数据库中有些医院数据特殊库存字段为空,导致测试人员在测试的时候,存在特殊库存和不存在特殊库存的数据总和不等于医院总数据。 Query countQuery = new Query(); if (Objects.nonNull(commonBo.getIsSpecialStock()) && commonBo.getIsSpecialStock()) { countQuery.addCriteria(Criter

2020-12-23 11:37:22 1830

原创 响应式中如何对操作后的数据流里面的数据进行排序

flatmap操作符和conatmap操作符的区别1.concatMap类似for循环一样遍历处理元素,一个元素处理慢了,后面元素就得等着前面处理完,而flatMap则是并行处理,返回的元素是无序的,谁先处理完谁排放出去。2.问题查一次团检下的所有医院,再查每家医院下存在的套餐,最后返回一个 ComgcHostitalAndSetMealDtoComgcHostitalAndSetMealDto类@Datapublic class ComgcHostitalAndSetMealDto {

2020-12-03 18:44:07 265

原创 StringUtils中isEmpty、isBlank、isNotEmpty、isNotBlank的区别以及后端如何对前端传来的数组判空

System.out.println(StringUtils.isEmpty(null));//true System.out.println(StringUtils.isEmpty(""));//true System.out.println(StringUtils.isEmpty(" "));//false System.out.println(StringUtils.isEmpty("ABC"));//false System....

2020-10-23 16:01:01 271

原创 javaweb体系

B/S模式B/S是指浏览器(Browser)/服务器(Server)模式。一般的网站都是B/S结构的。比如Google,Baidu。Web应用程序的访问不需要安装客户端程序,可以通过任意一款浏览器来访问Web应用程序。当Web应用程序进行升级时,不需要客户端进行任何改动web访问基本原理web容器(Tomcat)web容器的概念容器这个名词也用在List,Set这类的Collectio...

2020-10-23 14:56:17 266

原创 mongodb中的聚合管道查询

1.mongo的聚合管道查询,也就是连表查询,在下面的例子中没有用mongodb的语句查询,使用了封装的类。 public Flux<PostSaleHspAggregateBo> getPostSaleWaitCompletedList(PostSaleSearch search, Pageable pageable) { Criteria criteria1 = new Criteria(); String noGroup = "未分组";

2020-10-21 14:28:19 724

原创 响应式编程项目中总结

响应式编程项目中新手总结1.业务描述将excel表中的数据导入,判断excel表中的医院是否存在和是否已经被关联,如果不存在或者已经被关联,收集起来返回。2.主要业务代码2.1关联医院的方法 /*** * 关联医院的时候 更新医院的分组字段 更新分组的更新时间 * @param hospitalCode 医院编码 * @param groupName 分组名称 * @param reactiveMongoOperations * @return

2020-08-27 17:12:31 387

原创 使用idea搭建ssm框架,并实现简单的CRUD和分页查询功能

1.使用idea搭建ssm框架步骤,请参考本人博客2.项目搭建好,创建以下目录3.在pom.xml文件中引入依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSch...

2019-06-05 11:58:07 1452 1

原创 Mybatis三剑客

Mybatis-generator:自动化生成数据库交互代码Mybatis-plugin:可以实现mybatis的接口文件和实现xml自动跳转,验证正确性,在xml中智能提示等功能在idea中ctrl+shift+A 搜索Mybatis-plugin安装 安装完成以后 重启idea即可Mybatis-pagehelper:mybatis非常好用的分页插件,在pom.xml文件配置依赖...

2019-05-31 11:11:17 195

原创 使用idea自带的spring Initializer搭建SpringBoot流程(习惯优于配置)

1.打开idea,选择create new project2.jdk版本使用1.8以上的版本3.4.选择web提供web支持5.6.点击Finish,等待idea帮你搭建环境7.pom.xml文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4...

2019-05-27 17:46:32 10244

原创 ssm框架中分页查询的核心代码和记住密码功能

1.分页查询的核心代码1.1 分页类Pagepackage com.imooc.oa.entity;import java.util.List;public class Page<T> { private int currentPage; //当前页数 private int totalPage; //总页数 private int ...

2019-05-26 09:45:36 1065

原创 使用idea搭建SSM框架,并成功运行。

1.搭建环境1. 前4步跟搭建Spring项目环境是一样的,请参考本人博客的Spring框架学习01.2.在pom.xml中引入相关依赖相关测试依赖<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <v...

2019-05-17 21:10:47 3785

原创 SpringMVC框架09——@ResponseBody的用法详解

@ResponseBody可以标注在方法上也可以标注在类上面。简单来说,当标注在方法上时,该方法的返回结果直接转成JSON格式;当标注在类上时,该类中的所有方法的返回结果都转换成JSON格式。代码示例如下:前端的异步请求使用JQuery的ajax方法<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"&...

2019-05-17 16:56:56 596

原创 SpringMVC框架03——数据绑定

1、绑定基本数据类型在Controller类中添加业务方法:/** * 绑定基本数据类型 */@RequestMapping("/baseType")@ResponseBodypublic String baseType(@RequestParam("id") int id){ return "id="+id;访问:2、绑定包装类Controller类中的业务方法:...

2019-05-17 16:25:40 156

原创 SpringMVC框架02——SpringMVC的Controller详解

1、基于注解的控制器1.1、@Controller 注解类型在SpringMVC中使用org.springframework.stereotype.Controller注解类型声明某类的实例是一个控制器。package com.sgh.controller;import org.springframework.stereotype.Controller;import org.sprin...

2019-05-16 20:56:03 457

原创 SpringMVC框架01-使用idea搭建环境并成功运行

1、Spring MVC 入门1.1、Spring MVC 简介把Web应用程序分为三层,分别是:控制器(Controller):负责接收并处理请求,响应客户端;模型(Model):模型数据,业务逻辑;视图(View):呈现模型,与用户进行交互;1.2、SpringMVC核心组件DispatcherServlet:前置控制器Handler:处理器,完成具体业务逻辑HandlerM...

2019-05-16 19:31:12 3312

原创 Spring框架学习08-Jdbc Template实现数据库操作

Spring框架学习——JDBC Template 实现数据库操作为了简化持久化操作,Spring在JDBC API之上提供了JDBC Template组件1. 添加依赖 <dependencies> <!--测试相关--> <dependency> <groupId>junit</groupId>...

2019-05-14 16:31:36 126

转载 Spring框架学习07——基于AspectJ的AOP开发

请查看下面链接https://www.cnblogs.com/jpwz/p/10596088.html

2019-05-14 11:11:57 119

转载 Spring框架学习06——自动代理方式实现AOP(转载)

请查看下面的链接https://www.cnblogs.com/jpwz/p/10596005.html

2019-05-14 10:55:46 105

原创 Spring框架学习05-基于传统代理类的Aop实现

Spring框架学习07——基于传统代理类的AOP实现在Spring中默认使用JDK动态代理实现AOP编程,使用org.springframework.aop.framework.ProxyFactoryBean创建代理是Spring AOP 实现的最基本方式。1、通知类型根据Spring中通知在目标类方法中的连接点位置,通知可以分为6种类型:(1)环绕通知环绕通知(org.aopall...

2019-05-14 10:43:35 186

原创 Spring框架学习04——AOP底层实现原理

Spring框架学习06——AOP底层实现原理在Java中有多种动态代理技术,如JDK、CGLIB、Javassist、ASM,其中最常用的动态代理技术是JDK和CGLIB。1、JDK的动态代理JDK动态代理是java.lang.reflect.*包提供的方法,必须要借助一个接口才能产生代理对象,对于使用业务接口的类,Spring默认使用JDK动态代理实现AOP。代码示例如下:创建dao...

2019-05-13 20:59:15 241

原创 Spring框架学习-03(Aop相关术语详解)

1、Spring AOP 的基本概述AOP(Aspect Oriented Programing)面向切面编程,AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码(性能监视、事务管理、安全检查、缓存)。Spring AOP使用纯Java实现,不需要专门的编译过程和类加载器,在运行期通过代理方式向目标类织入增强代码。2、AOP的相关术语在Spring AOP 框架中涉及以下常用术语:*...

2019-05-13 20:21:56 173

原创 Spring框架学习02(Spring Ioc详解及复杂类型的属性注入)

1、Spring IOC的基本概念IOC(Inverse of Control)反转控制的概念,就是将原本在程序中手动创建对象的控制权,交由Spring框架管理。当某个Java对象(调用者)需要调用另一个Java对象(被调用者)时,在传统编程模式下,调用者通常会采用“new 被调用者”的代码方式来创建对象。这种方式会增加调用者与被调用者之间的耦合性,不利于后期代码的升级与维护。当Spring框...

2019-05-11 19:41:41 226

原创 Spring框架学习01-使用idea搭建Spring项目

1.创建新的项目2.3.4.5.在pom.xml文件中引入相关spring依赖和相关日志依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-inst...

2019-05-11 17:14:43 1912

转载 Spring框架简介

1.Spring简介1.Spring是一个轻量级Java开发框架,最早有Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发Java应用程序提供全面的基础架构支持。Spring负责基础架构,因此Java开发者可以专注于应用程序的开发。2. Spring优点(1)...

2019-05-11 16:27:43 567

原创 随手笔记(视频学习笔记)

jsp学习笔记1.1 jspjava服务器页面,其根本是一个简化的Servlet设计,jsp是在传统的html网页中插入了java程序段和jsp标记,从而形成jsp文件,jsp开发的应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。1.2 javaweb 用Java技术解决相关web互联网领域问题的技术总称。1.3 jsp语法格式:<%!String str=“s...

2019-05-10 19:48:01 340

原创 多线程作业

使用多线程描述龟兔赛跑1.龟兔赛跑新规:规则:龟兔同时起步,每10毫秒秒跑1米,终点为100米,兔子跑步的能力强,乌龟跑步的能力弱途中: 1.兔子跑到10米的时候,谦让乌龟一下,接着跑      2.兔子跑到50米的时候,再让龟1毫秒,接着跑      3.兔子跑到80米的时候,睡了50毫秒,接着跑分析: 兔子跑步的能力强,乌龟跑步的能力弱(优先级的设置)1.兔子跑到10米的时候,谦...

2019-05-07 16:30:30 719

原创 多线程

多线程Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。多线程是多任务的一种特别的形式,但多线程使用了更小的资源开销。这里定义和线程相关的另一个术语 - 进程:一个进程包括由操作系统分配的内存空间,包含一个或多个线程。一个线程不能独立的存在,它必须是进程的一部分。一个进程一直运行,直到所有的非守护线程都...

2019-05-06 21:37:17 118

原创 Object类的toString方法

Object类的toString()方法源码public String toString()返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。 Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符...

2019-05-05 15:26:36 4876

原创 我的第一个SpringBoot小Demo(简单的学生管理系统)

1.使用idea搭建SpringBoot环境写第一个springboot例子之前 确保所要用到的工具都安装好 jdk,maven,idea,mysql选择create new project3.4.6.7.第一个springboot小例子已经跑起来了...

2019-05-02 10:20:58 10225 20

原创 java设计模式

1.设计模式1.1 饿汉模式是在类加载的时机创建对象public class SingleObject { //1.创建私有的构造方法 private SingleObject(){} //2.声明公开的静态对象属性 private static SingleObject instance=new SingleObject(); //提供公开的...

2019-04-15 21:04:14 102

原创 配置文件操作

1.Xml文件操作(1)使用pull方式解析//1.创建解析工厂对象 XmlPullParserFactory xmlFactory = XmlPullParserFactory.newInstance(); //2.获得解析器对象 XmlPullParser xmlParser = xmlFactory.newPullParser(); //3.指定资源路径 ...

2019-04-15 20:09:44 214

空空如也

空空如也

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

TA关注的人

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