自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 springIoc的原理和简单实现

首先先了解一下什么是springSpring 是一种轻量级开发框架,旨在提高开发人员的开发效率以及系统的可维护性。我们一般说 Spring 框架指的都是 Spring Framework,它是很多模块的集合,使用这些模块可以很方便地协助我们进行开发。这些模块是:核心容器、数据访问/集成,、Web、AOP(面向切面编程)、工具、消息和测试模块。比如:Core Container 中的 Core 组件是Spring 所有组件的核心,Beans 组件和 Context 组件是实现IOC和依赖注入的基础,AOP

2020-08-15 11:35:12 188

原创 解决微信小程序进入就全屏问题

最新的设置安卓视频不全屏播放(不知道是否全部安卓机型都支持)的方法前两天做了一个石头剪刀布的视频游戏项目,测试过程中找到了更加简便的方法,分享下,如下设置HTML代码:<video id="videoID" controls src="XXX" poster="XXX.jpg" preload="auto" x-webkit-airplay="true" x5-playsinline="...

2019-12-19 23:05:17 3519

原创 注意!BigDecimal为什么不精准了呢?

我们在刚学习java基础的时候我们就了解到涉及到金额等操作不要使用浮点数double,floal,而需要使用BigDecimal,我们先看看java核心卷一的警告:看到书中的解释我们知道了浮点数不精准的主要原因是因为二进制无法精准的表示我们所说说的浮点数。大家想要详细了解二进制的小数转换问题可以看下这篇博客:https://blog.csdn.net/lzb348110175/article/details/119957903了解了不能用浮点数,我们使用BigDecimal总是没问题了吧大家看下

2021-08-31 14:33:42 307

原创 在程序中使用mybatis与直接执行sql结果不同?

背景使用范围查询时候,前端传进来一个id的集合,但这个集合不是我们想的list,而是一个string拼好的,比如"1,2,3,4"这样的一个字符串,我一看这个字符串发现不是和我们写sql时候in()括号这里年的格式一样吗,然后就偷了个懒,直接把字符串拼到了我们的mapper.xml中类似于这样:<if test="userIds != null and userIds != '' "> userId = (#{userIds})</if>然后测试发现如果只传一个可以找到的id

2021-08-24 10:17:23 741

原创 elasticsearch踩坑之模糊查询

背景最近刚学习了es,以前没有自己建过索引,这次体验了一下,然后使用java的API去存入数据和查询数据,插入问题不大,但是在搜索的时候发现在项目中已经对这个字段进行模糊查询,但是只有特定的值才能查到,比如我给一个索引字段添加了“不知道”这样一个字符串,但是,只有在我搜"不"的时候才能搜索到对应数据,"知道"和"知"甚至"不知道"这种去搜索都是搜索不到的解决办法我们每个字段都会有对应的type,我上述所说的字段使用的是text这个类型,而经过查找一些资料,发现只有type是keyword的模糊查询才可

2021-08-20 10:25:45 842

原创 sql-统计同一个字段不同条件的个数

前提条件有三个表,学院表,班级表,学生表,一个学院有多个班级,一个班级有多多个,学生表中有性别字段,最后查询每个学院的学生总数和每个学院男女生各有多少?表结构学院表-----college班级表------class学生表------student统计sql及结果SELECT college.`name`,COUNT(student.id) '总数',count(case when student.sex = '男' then student.id end) '男',count(case

2021-08-11 15:09:32 3440

原创 事务回滚---@Transactional(rollbackFor = Exception.class)

前几天有个老哥面试遇到了"怎样配置才能让他只在数据库操作失败得时候进行回滚,其他情况不回滚"这个问题,这个问题的解决方案很简单,以前在spring项目中我们使用事务都是使用Transactional这个注解,而其中有一个属性rollbackFor ,这个就是需要回滚的情况,一般情况下我们都使用@Transactional(rollbackFor = Exception.class)这个注解是让我们在方法中遇到异常就回滚,而其他情况会滚我们只需要改变Exception.class比如我们想要只有遇到数据库

2021-05-08 09:25:19 334

原创 Spring的事务隔离级别与事务的传播性

事务的四大特性(ACID)原子性(Atomicity): 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;一致性(Consistency): 执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同的;隔离性(Isolation): 并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的;持久性(Durability): 一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。Spri

2021-04-06 10:15:15 85

原创 如何在sql中实现类型转换呢-----cast语句

最近在实现一个把excel中录入的信息插入到数据库的需求,本来我们可以使用easyExcel加上java的业务代码就可以轻松实现,但是要求不用写程序,那就写sql语句吧,首先先要建立一个临时表,然后把excel的内容放到临时表中(这里直接使用Navicat的导入向导就可以了),然后进行连表查询,用个一系列的连表查询我们可以查询到我们需要插入的各个字段,之后使用install和select的复合语句进行插入就好了。这里我遇到了今天的主体,我发现插入有一部分数据的类型是不匹配的,比如我查人员列表查出字段hire

2021-04-02 09:48:15 365

原创 SQL之case when then语句

举个简单的例子:比如你有一个人员表有一个sex属性,但是这个属性一般使用数字表示1表示男2表示女,这时候我们想要直观的得到这个人是男是女,我们就可以使用到case when then语句:case table.sex when 1 then '男' when 2 then '女' else 其他 end实际中的应用:最近在吧excel中的数据导入到数据库中,而数据库有一个是否全国和是否海外的字段,在excel中他是写的是或者否,但是数据库中要插入的是bool类型的所有在sql中使用了case

2021-03-30 09:19:35 247

原创 单例模式

一、什么是单例模式单例模式简单来说就是对于单例的对象的类只可以有一个实例存在。像我们常用spring框架中的bean对象,bean对象都知道是由spring框架去托管的。他的默认就是单例的。二、实现单例的两种方式单例模式最重要的就是使用私有的构造方法。一般有懒汉式和饿汉式两种(我觉得非常的形象):先说饿汉式public class Singleton { // 指向自己实例的私有静态引用,主动创建 private static Singleton singleton = n

2021-01-14 11:14:24 72

原创 easyExcel生成excel本地和测试或正式环境的坑

java.lang.IllegalArgumentException: The workbook already contains a sheet with this name这是我在线上日志看到的问题,这句因为的实际意思是这个生成的excel表已经包含了sheet,如果遇到这个问题你需要检查自己生成的sheet名字。但是遇到这个问题在本地是没有问题的但是发到了测试就就会出现这个问题,我是用的是easyExcel去生成excel时候遇到的问题,具体原因我也不太清楚,但是,因为以前也生成过以前的就没什么问题

2020-12-29 15:21:46 1824 1

原创 mybatis采坑之 PageHelper.startPage出现两个limit情况

故障说明首先这个问题是在我们做项目迁移的时候遇到的,在新写的接口中最开始的去调用接口总是没有问题的,但是如果一直调用这个接口,发现会出现数据的丢失,所以,我看了一下日志信息,发现是sql语句的错误,然后我就很神奇的发现,他的sql语句多出了一个limit,然后我定位到了那段业务代码,发现并没有分页的代码,那么这个分页是哪里来的呢,我猜想可能是我的线程池被污染了被别的分页代码,我就在所有调用分页 PageHelper.startPage这个方法调用完成之后,加了一段, PageHelper.clear,然后

2020-12-07 11:41:52 2334

原创 著名的128陷阱---工作中踩得坑

本来已经写过128陷阱的博客了,但是上周在实际开发的时候遇到了一个bug,然后自已眼看数据库的id值,在128以前的数据是没有问题的,但是在128以后的数据就会莫名的丢失。首先让我们看一小段代码: public static void main(String[] args) { Integer a = 127; Integer b = 127; Integer c = 128; Integer d = 128; Sys

2020-12-07 11:02:39 120

原创 Java并发编程(二)-----synchronized关键字及死锁

synchronized话不多说先上图1.为什么要使用synchronized在并发编程中存在线程安全问题,主要原因有:1.存在共享数据 2.多线程共同操作共享数据。关键字synchronized可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块,同时synchronized可以保证一个线程的变化可见(可见性),即可以代替volatile。2.实现原理synchronized可以保证方法或者代码块在运行时,同一时刻只有一个方法可以进入到临界区,同时它还可以保证共享变量的内存可见性3.

2020-09-22 16:01:58 142

原创 Java并发编程(一)-----创建线程的几种方式

Java并发编程首先,最近看了并发编程的艺术这本书,我感觉这本书挺好的,推荐大家去看。我把前些天整理的一个大体的框架分享先出来今天先说创建线程的几种方式:1.通过实现Runnable接口来创建Thread线程步骤1:创建实现Runnable接口的类: class SomeRunnable implements Runnable{ public void run() { //do something here }}步骤2:创建一个类对象:

2020-09-17 18:08:43 147

原创 HashMap1.7和1.8的区别以及为什么他们是线程不安全的

HashMap1.7和1.8的区别首先数据结构上来看,1.7的HashMap是采用的数组+链表的数据结构,1.8采用的是数组加链表或者红黑树。那么为什么1.8要做在这个改变呢?红黑树虽然本质上是一棵二叉查找树,但它在二叉查找树的基础上增加了着色和相关的性质使得红黑树相对平衡,从而保证了红黑树的查找、插入、删除的时间复杂度最坏为O(log n)。加快检索速率。从这个特性我们可以得出,其实主要还是为了加快我们查找数据的时间。那么又会有人问,什么时候是红黑树什么时候是链表呢,在jdk1.8的规定里面是在6的时候

2020-09-14 09:33:13 839

原创 JAVA表格数据导入到数据库(POI实现)

JAVA表格数据导入到数据库前几天参加了个面试,笔试过程中有一个怎么把表格导入到数据库,我是知道把表格导入到数据库是可以使用POI的,也知道大概思路,不过确实以前项目中没有遇到过,今天正好有时间,手写一下如何将数据导入到数据库中,话不多说上代码。首先我们既然使用poi就要导入相应的poi依赖 <!--读取excel文件--> <dependency> <groupId>org.apache.poi</gro

2020-09-10 17:17:44 923 1

原创 JVM(一)

运行时数据区域什么是线程独享线程独享是指只归这个线程独有的数据区,在运行时数据区虚拟机栈,本地方法栈,程序计数器是线程独享的程序计数器:记录到那个线程执行到哪一行,所以他必须是线程独享的,它可以看作是当前线程执行的字节码的行号指示器。在jvm的概念模型里面,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。多线程是通过线程轮流切换,分配处理器执行时间的方式来实现在,任何一个确定的时刻,一个处理器都只会执行一条线成中的指令。为了让线程切换后能恢复到正确的执行位置,每一个线

2020-08-28 17:56:36 142

原创 SpringMVC的核心DispatcherServlet的实现

首先我们过来先看一张图我们可以很清晰的看到springmvc的核心就是这个前端的控制器DispatcherServlet,所以我认为要明白SpringMVC的我认为还是去重写一个简单的DispatcherServlet比较好理解package com.prosay.mvc;import com.prosay.mvc.annotation.Controller;import com.prosay.mvc.annotation.RequestMapping;import javax.servle

2020-08-24 10:23:06 203

原创 Spring MVC的原理

先来看一下什么是 MVC 模式MVC 是一种设计模式.MVC 的原理图如下:SpringMVC 简单介绍SpringMVC 框架是以请求为驱动,围绕 Servlet 设计,将请求发给控制器,然后通过模型对象,分派器来展示请求结果视图。其中核心类是 DispatcherServlet,它是一个 Servlet,顶层是实现的Servlet接口。SpringMVC 使用需要在 web.xml 中配置 DispatcherServlet 。并且需要配置 Spring 监听器ContextLoaderL

2020-08-17 09:09:51 80

原创 再次复习一次Java基础

8个基本的数据类型int32位4个字节正负20亿不能存手机号long64位8个字节float32位4个字节34.0fdouble64位八个字节short16位两个字节bytechar16位booleanfinal 关键字修饰 变量 变成常量 要全大写一旦赋值不能被修改修饰类不能被继承修饰方法不能被重写重写 子类继承父类 重写父类方法重载 一个类中 相同方法名 但是方法签名不同 参数列表不同

2020-08-08 20:41:09 92

原创 Error:java: JDK isn't specified for module 'xxx'

从git上面pull的文件在自己idea中可能会遇到这种问题,这种问题的根源在于上传的人吧本来自动生成的.idea文件上传了上去,遇到这个问题之后只需要把push下来的.idea文件删掉,然后直接重新启动,然后会提示让你选择jdk,然后选择完jdk这个问题就解决完了...

2019-11-23 15:57:03 663

原创 深度优先和广度优先算法(例题)

在LeetCode上面刷题刷到一道二叉树的题,这道题我认为对学习树的深度优先和广度优先算法有一定的帮助,先来看一下题这道题是这样的:给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。这道题有两种思路一种是深度优先一种是广度优先深度优先见名知意这种思路就是先从深度遍历,我们先去往深处遍历,由于这道题是寻找每一层最右面的值,我们可以总是先访问右子树。...

2019-11-19 15:41:18 2305

原创 用sql语句更改表名(里面有拓展呦)

今天再刷牛客网的时候刷到一道更改表名的题,看网上也没有特别多的解答,所以来写一下这个sql语句alert table 表名 rename to 要更改的表名另外再列出一个相似的(添加一列)alert table 表名 add column 列的信息-frist:在第一列插入-after:在指定的一列列外还有我前几天遇到的一些语句这是一个构造一个触发器的语句create trigge...

2019-11-17 11:21:58 982

原创 复选框的模糊搜索(解决只能根据顺序查找的问题)

这些天一直在做单选框,复选框,下拉框的回显问题,昨天做完复选框发现出现了一个小的bug,单选框和下拉框选择搜索之后都会找到对应的值,但是在复选框中它只会显是按照顺序的选项,例如你的爱好有(篮球,足球,羽毛球)但是在复选框中你可以搜索篮球搜到,可以搜篮球,足球搜到,可以搜篮球,足球,羽毛球搜到,但是搜篮球,羽毛球就会搜不到这条数据,今天解决了这个问题,直接上代码了解决前这个是我自己定义的类(作用...

2019-11-16 23:11:04 833

原创 128陷阱

128陷阱是Integer自动装箱成他的规定,下面先看一段源码 private static class IntegerCache { static final int low = -128; static final int high; static final Integer cache[]; static { ...

2019-11-16 15:45:29 75

原创 从后台动态获取下拉框数据回显(超详细)

第一步先去建立一个字典表目的是让code的值和你要用的表的状态值对应,我这里用的是教师表,code对应的是教师表的status第二部自己去生成一个字典表的实体类,service,以及mapper(应该用这三个就够了)第三部去在你的controller去引入一个字典表service的变量 @Autowired private IDicTeacherService dicTeach...

2019-11-14 11:04:05 7524 3

原创 eclipse搭建Springboot框架和遇到的问题

首先配置好你的maven,和配置jdk是差不多的,可以自行搜索一下,然后接着就是搭建一个springboot框架了话不都说,看图进入preferences之后把下图指向的Update Maven projects on startup如果有勾的去掉,没有的不用改接下来选中window旁边的help选择Eclipese Marketplace进入之后直接搜索STS注意是大写,然后点击i...

2019-10-29 10:36:19 166

原创 JSP实现简单的分页

JSP端 <div> <a class="btn btn-success" href="LoginServlet?begin=${begin-5}">上一页</a> <c:forEach var="i" begin="1" end="${end}"> <a class="btn btn-success" href="LoginS...

2019-10-24 17:08:09 406

转载 JDBC中一些方法的区别和联系

Statement 和 PreparedStatement之间的关系和区别关系:PreparedStatement继承自Statement,都是接口区别:PreparedStatement可以使用占位符,是预编译的,批处理比Statement效率高详解:1、PreparedStatement:表示预编译的 SQL 语句的对象。接口:public interface PreparedSta...

2019-10-17 00:42:00 109

原创 jdbc连接到mysql

JDBC连接数据库想要jdbc连接到数据库需要加载驱动Driver就是驱动,注意mysql如果是高版本需要在mysql后面加上cj;接下来需要连接你的数据库使用DriverManager的getConnectin方法添加url和你mysql的账户密码,如果是8.0版本的mysql需要在url你数据库名字的后面添加?serverTimezone=GMT%2B8这样一句话,之后接连到数据库了,可以在...

2019-10-17 00:26:00 78

原创 数据结构

数组:插入快,如果知道下标可以快速的存取;缺点是查找慢和删除慢,大小固定;有序数组:优点是,比无序数组查找快;缺点是删除慢和插入慢,大小固定;栈:遵循先入后出的存储方式;缺点是存取其他项很慢;队列:和栈相反,遵循先入先出的存取方式;缺点也是存取其他项很慢;链表:优点是插入快和删除快;缺点是查找慢;树:都有一个缺点就是算法复杂;二叉树的优点是查找删除快;红黑树的优点是查找删除快而且树平衡...

2019-09-25 09:37:37 69

原创 数据结构栈的增删改查

栈是一种先进后出的数据结构,栈有栈顶和栈底,开始没有数据的时候栈顶和栈底都是没有的(-1),后面加入数据加入最新的数据,都放到栈顶,最先放的那个数据放到栈底,实现栈的增加和删除都是在栈顶进行操作的。下面是简单实现压栈,出栈,读取栈顶数据的一段代码public class MyStack {Object stackArray[];int maxsize;int top;public My...

2019-09-19 10:36:51 647

原创 前端基础知识(1)

html:结构,css:样式, js:行为;js :jquery是js的的第三方方法库echarts:图表库;用于:大数据分析;layer:弹框的第三方插件;link:html和css关联,harf=“css的路径”; //使html和css关联;scripy:src="js的路径" html与js关联;form:收集用户信息的表单;与后台数据库关联;css的选择器select...

2019-09-12 23:45:46 85

原创 数组

数组基本类型的数组都是以byte压缩存储引用类型数组;地址是以byte形式压缩的;数组可以申请很大但不一定可以生成数据;虽然地址是足够的;引用类型的“=”都是拿的地址;for each语句for(String a:arr){System.out.println(a);}输出的是arr数组,不会产生下标越界;匿名数组int[][] ss = new int[3][];ss[0...

2019-09-12 10:05:50 67

原创 java垃圾回收机制和注释

手动回收优点:能够在内存不使用时快速回收,准确高效;缺点:容易出现bugjava,垃圾回收是自动的,开一个习题集线程去检测那些内存不用了然后回收掉(优点:自动的,意味着不会出现忘记回收缺点:回收不及时)一般观点,宁可回收慢不可忘记回收...

2019-09-12 09:23:51 95

原创 Linux的基本指令和打开jdk

linux只有一个盘,ll颜色不一样是软连接(快捷方式)上传rz 下载szlrzsz 在线安装:yum -y install lrzsz安装之前先检查一下系统有没有自带open-jdk命令:rpm -qa |grep javarpm -qa |grep jdkrpm -qa |grep gcj如果没有输入信息表示没有安装。如果安装可以使用rpm -qa | grep java ...

2019-09-08 17:23:24 292

原创 java的基本数据类型

数据类型,有八种,其他所有类型都是有这八种组成;一个字节等于八位int 4字节short 2字节 2^16long 8字节byte 1字节 2^8定好中心点和间距才能表示范围;整形间距为一,float比整形范围大是因为间距不一样;浮点类型float 4字节double 8字节距离0越近越密集;当超过2^23float精度高比整形精度不可靠不可以直接用;精确计算禁...

2019-09-08 17:22:01 59

原创 java的一些基础运行

大型系统开发支持分布式开发,需要多台计算机协同开发,每台做不同是集群:每台做一样的事多线程:可以多个任务同时,CPU快速切换,并不是真正同时;JDK:执行编译,把.JAVA文件编译成.class文件;jre:运行.CLASS文件,把.class翻译成汇编或c;javaSE:核心语法,java的基础;javaEE:javaWeb开发;javaME:手机开发;SDK:封装好的工具包;...

2019-09-08 17:20:42 48

空空如也

空空如也

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

TA关注的人

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