自定义博客皮肤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)
  • 收藏
  • 关注

原创 C++中指针的相关知识

c++中指针是指变量在内存中的地址,指针指向内存中的一段存储单元,区别于引用,引用是原对象的别名,c++中指针的定义一般为 int * p;指针指向的arr就是数组的首地址值,利用解引用*p就可以访问数组中的第一个元素,当p++后,因为p是int型,++后相当于偏移了四个字节,这时就可以访问第二个元素。指针指向内存中编号为0的空间,通常用来初始化指针变量,但空指针指向的内存空间是无法操作的,因为内存中0-255的地址值是系统所用,若操作则报错,即空指针无法访问。随便指向的地址,该地址并不能访问。

2023-06-16 09:57:50 217

原创 数据库三大范式

数据库的三大范式主要是为了满足数据库设计所需要的规范,使数据库的结构清晰明了,不会发生CRUD操作的异常。

2022-08-29 23:19:27 620 1

原创 死锁和排查

通俗的来说死锁就是两个或两个以上的进程由于竞争资源而导致阻塞,在没有外力的作用下,这种阻塞会一直持续下去。产生死锁有以下四大原因:①互斥:一个资源同时只能被一个线程占用。②请求和保持:因为请求资源而阻塞的线程不会放弃自己已经拥有的资源。③不剥夺:阻塞的线程所拥有的资源不能被其他的线程强行剥夺。④循环等待:多个资源形成头尾相连,循环等待的关系。

2022-08-22 11:05:52 265

原创 集合类和线程安全的集合类

执行put操作时,会进行第一次key的hash来定位Segment的位置,会通过ReentrantLock的tryLock()方法尝试去获取锁,如果获取成功就二次hash计算出所在的hashentry,如果已经有线程获取该Segment的锁,那当前线程会以自旋的方式去继续的调用tryLock()方法去获取锁,超过指定次数就挂起,等待唤醒。map的实现类hashmap是线程不安全的,hashtable做了同步的操作,但是每次操作都需要锁住整张表,效率非常的低。的数据结构来实现,并发控制使用。

2022-08-21 23:37:48 245

原创 如何自定义springboot-starter

通过导入AutoConfigurationImprtSelector类实现加载配置文件,该类实现了ImportSelector接口,通过其中的selectImport方法可以获取到所有符合条件的类并加载到bean容器中。具体的是该方法下有一个getAutoConfigurationEntry()可以读取META-INF文件夹下的spring.factories,对该文件声明里面的配置信息进行加载,从而将bean加载到容器中。6.测试,新建一个新的项目,引入上述的依赖后就可以在ioc容器中直接拿实例。...

2022-08-14 17:15:55 194

原创 详解工厂模式

工厂模式也是spring框架中常用的设计模式,需要的时候通过bean工厂获取。

2022-08-13 20:30:02 106

原创 BeanFactory和ApplicationContext的区别

4.二者都支持PostProcesser,但是BeanFactory需要手动的注册,而ApplicationContext会自动检测bean对应的java类是否实现了BeanFactory。Spring最大的特点就是IOC控制反转,IOC容器中装的就是Bean对象,Bean也就是spring、容器管理的java对象,在spring中可以通过xml文件配置。3.BeanFactory采用延迟加载,只有在使用bean的时候才会进行实例化,如果某个属性没有注入,只能在调用getBean()的时候才会抛出异常。..

2022-08-11 12:40:23 135

原创 Java中的关键字

编写程序时,需要给类,方法或变量等起名字,这些就是标识符,在Java中有的表示符被赋予了特殊的含义,这些特殊含义的标识符就是关键字。

2022-07-27 15:28:56 113

原创 详解单例模式

单例模式是Java中最简单的设计模式,创建一个单一的类,这个类只创建自己的对象,同时确保只有一个对象被创建,并且提供获得该对象的get方法。大家都要喝水,但是没必要每人家里都打一口井是吧,通常的做法是整个村里打一个井就够了,大家都从这个井里面打水喝。对应到我们计算机里面,像日志管理、打印机、数据库连接池、应用配置。就像日志管理,单例模式避免了多个人同时写日志导致混乱,只能一个一个写。......

2022-07-18 09:34:09 123

原创 详解Java中的IO模型

很多时候需要持久化的将Java对象保存在内存中,或者在网络上传输Java对象,这时候就需要序列化和反序列化。序列化就是将Java对象转换成二进制数据流的过程。按照流向可以分为输入输出流,按照操作的类别可以分为字节流(IntputStream、OutputStream)和字符流(read、write),按照角色分为节点流和处理流。·从计算机系统角度计算机系统包括cpu(计算单元和逻辑处理单元)、存储单元、输入输出设备,简单来说I/O就是计算机系统和外部设备之间的通信。·从应用程序的角度。...

2022-07-17 10:41:05 468

原创 @Transactional-单元测试中的回滚

今天在JUnit单元测试中测试接口时,突然发现idea写入数据库成功,但是数据库中没有数据去掉@Rollback注解后,idea中事务正常执行,mysql数据库中依然是没有数据的,查看日志发现明显事务虽然执行成功了但是回滚了,仔细一看问题出在@Transactional,spring支持声明式事务,通过AOP实现实现用户操作和具体的事务解耦,加上该注解后,方法执行前创建一个事务,当方法结束后回滚该事务,这就是为什么idea中事务是执行成功的,最后数据库找中没有数据。......

2022-06-28 12:00:33 1583

原创 详解BindingResult

1.前言在开发电商等web应用时,难免要对前端传来的参数进行校验,如果大量的使用if else会增加代码的复杂性,java提供了标准类库,可以如下操作2.在controller层中校验参数在controller层中通过@Valid注解校验前端的参数3.参数校验错误会导致什么在postman中测试,参数CartForm设置为空,postman界面如下提示用户未登录,这是拦截器的问题,将url加入到添加到白名单中测试后还是提示用户未登录,利用debug模式在preHandle处打个断点,重新在

2022-06-22 10:22:43 9275

原创 Comparator比较器

1.介绍Java.util.Comparator用于实现对集合进行排序,同时Java8将Compator接口传递给Stream.sorted、、和方法,可以通过调用这些方法直接实现比价器的功能。2.接口中方法详解是Compator比较器中的功能方法,用于比较两个对象的顺序,返回0、1、-1comparing方法的第一种形式,这种形式需要传递一个函数,从泛型T中提取一个排序键,按照该排序键进行排序,举例如下对子目录subCategoryVoList按照CategoryVo类里面的sortOrder

2022-06-20 09:38:26 614

原创 详解Lambda表达式

Lambda表达式是JDK1.8之后的一种语法,是Java8的新特性,可以把代码写成数据传递的形式,支持将表达式写成方法的参数,使代码风格更加的紧凑,使Java的语言表达能力得到了提升;2.表达式的语法其中箭头左边是我们要处理的形参,箭头右边是对形参的处理表达式3.具体的实践应用在之前博客中说到利用增强for循环筛选出categoryList中的一级类目,现在改写成Lambda表达式的形式。3.1 .stream是将java中的集合生成为流,然后可以对集合中的元素进行流式操作,常用的方法是fil

2022-06-16 11:37:13 142

原创 电商系统开发中商品目录的查找

电商的商品都是按照一定的目录结构排序的,有根目录和子目录,例如下面100001-100005是产品的根目录,所有的商品都属于这几大类,冰箱(100006)属于家用电器(100001) 2.1 先查出一级目录,然后查其子目录,直到查到的是null 2.2 直接查出目录,往上查父目录,一直查到parent_id是0选择从根目录开始往下查,在CategoryService层中添加接口selectAll,其中返回值的类型是返回给前端的responseVo,参数是由CategoryVo组成的List,这样

2022-06-16 10:53:54 536

转载 EI会议论文的格式要求

EI会议i论文模板

2022-06-11 11:46:25 5824

原创 详解mysql中的refid =“base_column_list“

1.问题来源在之前查询数据库的时候基本都是使用select * from student;SELECT name, prod_price FROM products;但是很多时候我们并不需要查询数据库中的全部字段,直接查全部字段会降低效率,同时很多字段的组合是经常被使用到的,每次都单独写出来很麻烦2.Mybatis解决对于上述问题,Mybatis的映射文件中为我们引入了<include refid="Base_Column_List" /> ,意思就是固定几个需要查询的字

2022-05-31 17:20:52 5138

原创 spring中的@Bean注解

1.Spring中常见的注解理解spring中的常用的注解通常分为两类,一类是用来注册Bean,一类是用来使用Bean,简单的来说bean就是一个被实例化的对象1.1 注册beanspring中的IOC容器本来是空的,该类注解就是往IOC容器中放东西,比如@Component , @Repository , @ Controller , @Service , @Configration这些注解就是用于注册Bean,把对象交给spring去管理,当我们需要使用时直接去IOC容器中去取,而不是new

2022-05-27 20:46:54 1035 1

原创 application/json-常见的post提交数据的方式

在http协议中规定了GET、HEAD、POST、PUT、DELETE、CONNECT 等请求方式,其中比较常用的就是post和get,其中post用来向服务器提交数据,post只规定了提交的数据必须放在请求的主体中,但是并没有规定传输数据的编码方式。比较主流的有如下的几种编码方式。1.application/x-www-form-urlencoded最常见的请求方式,特别是自己在测试后端接口时,经常在前端url中直接以键值对的形式写入参数的值。但是该方式默认采用URLencode编码会导致消息包大

2022-05-26 15:07:54 23519

原创 详解AJAX技术

1.为什么要用?在对接支付宝支付的时候需要在初始化的时候设置一个地址值,这个就是用于支付成功后跳转的地址值。aliPayConfig.setReturnUrl("http://127.0.0.1");但是,在对接微信Native支付方式的时候,当扫码付款完成以后客户端并不会跳转,这时候需要AJAX技术来实现异步的刷新网页2.什么是AJAX技术?AJAX的全称是Asynchronous JavaScript and XML,意思就是异步的JavaScript和XML,用于快速创建动态的网

2022-05-24 11:19:11 4249

原创 重复收到微信支付异步通知

微信支付的机制需要我们接收微信的异步通知,通过内网穿透工具注册域名后可以在本地接收到微信发来的异步通知。wxPayConfig.setNotifyUrl("https://xzk.mynatapp.cc/pay/notify/");//接收异步通知在控制层接收微信发来的异步通知 @PostMapping("/notify") @ResponseBody //因为是一组数据所以需要用body接收 public String asyncNotify(@Request

2022-05-21 12:37:09 868

原创 spring提示Field injection is not recommended和依赖注入的方式

spring提示Field injection is not recommended常用依赖注入的方式

2022-05-16 11:45:37 322

原创 详解微信支付中的异步通知

1.什么是异步通知?先说说同步通知,在平时我们付款的时候,特别是在银行转账的时候点击付款后一般都会给我们反馈显示付款成功,这个通知就是同步通知。同步通知仅仅代表调用支付接口成功,也就是用户付款的操作是成功的,至于转账是否到账或者付款是否真正成功并不能知道。异步:当用户提交了付款或者转账的请求时,服务器在后端开始处理具体的支付逻辑业务,这时候就出现一些问题导致支付结果失败,所以有时候向他人转账时会在付款结束后收到短信,显示余额被冲正,转账失败,因此支付结果都是以异步通知为准。2.如何接收异

2022-05-14 19:07:25 6503 1

原创 报错This application has no explicit mapping for /error, so you are seeing this as a fallback.

报错This application has no explicit mapping for /error, so you are seeing this as a fallback.今天在用springboot集成freemaker时,框架搭起来在浏览器中运行后发现报错如标题,上网查无非有三种解释。

2022-05-13 13:26:23 7746

原创 解决报错Error creating bean with name ‘xxxxx‘

该错误字面意思就是xxx没有注入到bean容器中,@Autowired自动装配时在bean容器中找不到该类。需要在接口的实现类上加上@Service注解(具体是什么层就对应加什么注解)

2022-05-12 21:42:38 1121

原创 解决报错Cannot connect to the Maven process. Try again later. If the problem persists, check the Maven

最近看@Autowired源码的时候,没有官方注解提示需要下载源码,点击后报上述错误,百度一番才知道是meaven中jdk版本不对,在设置中修改即可。点击setting进入设置界面,然后依次点击Build,Execution,Deployment --> Build Tools --> Maven --> Importing --> JDK for import 在此设置对应的 JDK版本即可,我的是jdk1.8。...

2022-05-12 21:18:58 17645 2

原创 spring注入的是接口还是实现类

1.问题来源对接微信支付时需要自己写PayService接口,没有多想写接口的时候就在接口上加了@Service实现类,结果报错如下,提示该接口的实现类未注入到bean中,显然servie注解加错位置了。package com.xu.pojo;public class Person { private String name; private Dog dog; private Cat cat; void eat(){ System.out

2022-05-12 21:10:08 708

原创 java中的BigDecimal类型

1.什么是BigDecimal之前我们用到的double和float都可以处理16位的有效数字,然而多数运用于工程中,要求不需要很精确,但是在商业中需要精准运算,因此Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。在做精确运算时,我们不能使用传统的算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。2.采用浮点运算存在的一些问题System.out.println(0.2 + 0.1);输出结果为:主要原

2022-05-12 13:06:18 2606

原创 微信支付的几种分类

1.JSAPI支付(适用于微信公众号和小程序)该方法中商户通过调用微信的JSAPI接口,调用后会跳到微信内置浏览器完成支付收款。用该方法的商户一般有自己的商城网页,在商城网页购买商品后,用户完成选购点击支付,调用微信的支付接口,具体应用场景如下(图源JSAPI支付产品介绍-文档中心-微信支付服务商平台 (qq.com))。2.APP支付商户在自己开发的app中集成微信支付的场景。用户进入app挑选商品后下单,商户服务后生成支付订单,用户点击支付后跳转到微信界面发起支付。3.H5支付商

2022-05-11 16:34:51 2882

原创 MyBatis plugin(MyBatisx)的使用

1.为什么要用?在我们使用mybatis代码生成器生成了mapper.xml文件后,会在xml文件中写sql方法实现mapper接口,例如下图中mapper接口定义了queryById方法,在xml文件中实现,没有办法在mapper接口中通过方法名直接找到sql语句,需要我们去xml文件中找,这样当方法较多时就会麻烦。2.怎么用?直接在设置中搜索mybaits plugin,如果搜索不到mybaits plugin直接安装如下的MyBatisX也可以3.安装完毕此时在map.

2022-05-11 15:48:46 499

原创 MVC三层结构到底是什么以及和Mybatis中结构的关系

1.MVC三层架构1.1model层(dao层)dao层主要做数据持久层的工作, 负责与数据库进行联络的一些任务都封装在此 ,dao层的设计 首先 是设计dao层的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可以再模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,dao层的数据源配置,以及有关数据库连接参数都在Spring配置文件中进行配置。1.2 service层service层主要负责业务模块的应用逻辑应用设计。同样是 首先设

2022-05-10 20:20:17 390

原创 mybaits-plus结合代码生成器使用

1.代码生成器用来简化代码的开发,一般可以生成pojo实体类、mapper映射、mapper对应的xml文件,service层和controller层2.添加依赖<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.2.0</version>&

2022-05-10 16:32:50 243

原创 在Springboot中用Mybatisplus连接Mysql数据库

1.导入mybatisplus的依赖 导入了mybatisplus依赖以后就不要导入mybatis依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.0</version></dependency>..

2022-05-10 15:51:06 6363

空空如也

空空如也

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

TA关注的人

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