自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ActiveRecord在MyBatisPlus中的使用

ActiveRecord(活动记录)是一种领域模型(Domain Model),适用于业务逻辑比较简单的情形,一个类就包括了数据访问和业务逻辑。MyBatisPlus也对ActiveRecord进行了探索:实体类继承Model,并重写pkVal方法:@Datapublic class User extends Model<User> { @TableId(value = "id", type = IdType.AUTO) private Integer id;

2021-04-21 18:39:09 1086 1

原创 MyBatisPlus的使用&分页&逻辑删除&主键策略&自动填充

MyBatis是一款优秀的持久层框架中还是比较火的,而MyBatisPlus(简称MP)在其基础上只做增强不做改变。MyBatis可以直接在XML中通过SQL语句操作数据库,很是灵活。但正因为其操作都要通过SQL语句进行,就必须写大量的XML文件,很是麻烦。MyBatisPlus很好地解决了以上问题,封装好了一些CRUD方法,我们不需要再写XML了,直接调用这些方法就可以。SpringBoot整合MyBatisPluspom.xml:<!--MybatisPlus--><d

2021-04-21 16:53:35 858

原创 Java类加载机制&双亲委派机制&ClassLoader&classpath

Java的类加载器(ClassLoader)主要有以下几种:类加载器:jre的一部分,负责动态地将类添加到Java虚拟机。类加载器的分类:启动类加载器 BootstrapClassLoader:加载jre/lib/rt.jar;扩展类加载器 ExtClassLoader:加载jre/lib/ext/*.jar;应用程序类加载器 AppClassLoader:加载classpath(参考classpath与AppClassLoader的关系)上指定的jar或目录。类加载器的任务:根据一个类的

2021-04-18 16:22:28 853

原创 自我反思-2021年4月面试总结

从3月底裸辞回家,到两天前尘埃落定,大半个月的求职经历告一段落。结果是圆满的,而过程是曲折丰盈的。丰盈在哪里?丰盈在仅有的四天面试对谈之中。大部分面试官更看我有没有独立完成过一些项目的开发,而对我的印象基本一致:优秀的学习能力,暂时缺乏实践与经验的积累,工作中需要给与一些指导。如果能够提升自己对编程的兴趣与着魔程度,再好不过了。我赞同这种说法,也渴望能够得到这样的工作机会。其实到了最后一天,offer已经到手,但有三个面试还可以参加。我选择了去看一看,果不其然,与面试官的交流让我陷入了自我反思:我

2021-04-17 21:51:24 156

原创 Springboot概述

为了在JavaEE领域提供一种更为简便的开发方式,来取代繁琐的项目搭建工作,Spring推出了Springboot项目。该项目可以让使用者更快速地搭建项目,从而更专注于业务系统的开发。系统配置、基础代码、项目依赖的jar包,甚至开发时所应用到的服务器(Tomcat、jetty等)等,Springboot都可以帮我们准备好。只要在建立项目时,使用构建工具加入相应的Springboot依赖包,项目即可运行,无需关心版本兼容、部署war包等问题。四大核心:(1)自动配置:针对很多Spring应用程序和常见的应

2021-04-04 15:05:57 131

原创 数据库三大范式

范式:数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系,所以建立科学的、规范的数据库是需要满足一些规范来优化数据的存储方式;在关系型数据库中这些规范就可以称为范式。三大范式:第一范式:当关系模式R的所有属性都不能再分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF(确保列的原子性);第二范式:如果关系模式R满足第一范式,并且R的所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第二范式,简记为2NF(属性完全依赖于主键);举例:原表中包含了学生、课程两个逻辑原表

2021-04-02 15:48:20 85

原创 单例模式&类加载时机&线程安全&synchronized&volatile&原子操作&指令重排

定义:确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡驱动等都经常被设计为单例的。这些应用都或多或少有资源管理器的功能,避免出现不一致的状态,比如两个Printer对象同时向打印机发送打印指令。线程安全:单例对象内的实例变量被多线程共享,所以推荐使用无状态对象(没有实例变量的对象,不能保存数据,是不变类,线程安全)。饿汉式:class Singleton { private static Singleton s = new

2021-03-31 09:34:24 169

原创 迭代器,Iterable,Iterator,ListIterator

Java中的Iterator功能比较简单,并且只能单向移动:iterator()方法来自java.lang.Iterable接口,被Collection继承:public interface Iterable<T> {// 顾名思义,实现了这个接口的集合对象支持迭代。 Iterator<T> iterator();}public interface Collection<E> extends Iterable<E>Iterable接口的itera

2021-03-29 21:18:46 103

原创 含有变量的片段引用(th:fragment,th:with)

在使用th:fragment定义片段时,若显式指定片段参数,那么在引用片段时,如果不传入参数,则会抛异常。若不指定片段参数,那么在引用片段时,不管是否传入参数,都不会抛异常:后端传来参数:@RequestMapping("test")public String test(HttpServletRequest request) { request.setAttribute("user", "Jack"); request.setAttribute("company", "Tencent"

2021-03-29 10:40:42 675

原创 th:insert,th:replace,th:include的区别

在Thymeleaf中,可以使用th:insert,th:replace,th:include三种方式插入模板片段,下面通过例子对三种方式进行比较:准备片段页面footer.html:<span th:fragment="copy">Footer Text</span>在页面中使用三种方式插入模板片段:<div th:insert="~{footer.html::copy}"></div><div th:replace="~{footer.h

2021-03-29 09:47:29 530

原创 使用Thymeleaf实现列表奇偶列背景色设置

直接上代码:@RequestMapping("test")public String test(ModelMap mm, HttpServletRequest request, HttpServletResponse response) { String[] strs = {"独坐幽篁里,", "弹琴复长啸。", "林深人不知,", "明月来相照。"}; request.setAttribute("strs", strs); return "

2021-03-28 21:27:12 1199

原创 自定义配置读取(Environment;@Value;@ConfigurationProperties)

我们可以在application.yml中进行自定义配置,问题是如何使用这些配置。Springboot给我们提供了三种方式:Environment类读取;@Value注解读取;@ConfigurationProperties注解读取。首先,在application.yml中准备自定义配置:my-jdbc: url: localhost:3306 user: root password: 123456 db: name: mysql version: 1.0

2021-03-27 09:58:35 730

原创 Springboot中过滤器Filter的配置与使用(UTF-8字符编码(解决乱码),请求URL过滤(HttpServletRequestWrapper))

之前在web.xml文件中,总会使用下面的配置进行字符编码:<filter> <filter-name>encoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding&

2021-03-26 19:24:46 1255

原创 Springboot运行单元测试@SpringBootTest

首先,需要导入相关依赖:<dependency> <!--springboot测试的起步依赖--> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId></dependency>(此处没有添加任何<scope>,<exclusions>等配置);之后,编

2021-03-14 11:03:12 1311

原创 MySQL中case when then else end的用法

用法1:SELECT CASE WHEN STATE = '1' THEN '成功' WHEN STATE = '2' THEN '失败' ELSE '其他' END FROM SYS_SCHEDULER用法2:SELECT STATE CASE WHEN '1' THEN '成功' WHEN '2' THEN '失败' ELSE '其他' END FROM SYS_SCHEDULER举例:有员工表empin

2021-02-20 16:40:24 226

原创 text与utext的区别

@RequestMapping("/test")public String test(ModelMap mm) { String msg = "<h1>啦啦啦</h1>"; mm.addAttribute("msg", msg); return "test";}<p th:text="使用text +${msg}"></p><p th:utext="使用utext +${msg}"></p>结果:

2021-02-20 09:38:47 1359

原创 Thymeleaf的几个内置对象(#ctx,#locale,#request,#response,#session,#servletContext)

这篇文章,主要讲解几个Thymeleaf基本内置对象的使用。#ctx:模板引擎的全局上下文对象;#locale:在全局上下文中维护的java.util.Locale对象;#request:表示HttpServletRequest对象,只在Web环境下使用;#response:表示HttpServletResponse对象,只在Web环境下使用;#session:表示HttpSession对象,只在Web环境下使用;#servletContext:表示ServletContext对象,只在Web环

2021-01-29 11:05:00 2752

原创 Locale,语言文化,国家地区

Locale,表示一个地区。近期将做一个跨境项目,会涉及到不同国家的语言、日期、货币等问题,因此早做准备,先把Locale类搞清楚。获取Locale获取默认的LocaleLocale locale = Locale.getDefault();System.out.println(locale);结果:zh_CN其中,zh表示简体中文,CN表示中国大陆。直接使用Locale的静态对象Locale.java中提供了以下静态对象:public static final Locale CA

2021-01-28 19:34:36 683

原创 多表关联更新

假设有两个表,test1与test2,表结构相同,如下:idnameage123现在,想将表test2中的数据移到test1中,根据id相等的规则,不同数据库的SQL语句会有不同:SQL Server:update test1set test1.name=test2.name,test1.age=test2.agefrom test1 inner join test2on test1.id=test2.idOracle:update t

2021-01-28 15:00:17 130

原创 jQuery中parent与remove方法实现“删除自己”

<ul> <li>L1<button onclick="removeSelf(this)">删除</button> </li> <li>L2<button onclick="removeSelf(this)">删除</button> </li> <li>L3<button onclick="removeSelf(this)">删除</button&

2021-01-28 14:39:32 2136 2

原创 可以获取Cookie值的两种方式(@CookieValue)

@RequestMapping("test")public String test(ModelMap mm, HttpServletResponse response) { // 在response中存入Cookie response.addCookie(new Cookie("name", "value")); return "test";}@RequestMapping("/getCookie")public String getCookie(@CookieValue("na

2021-01-26 20:53:02 3782

原创 登录拦截器

无需多言,只为查找方便:@Componentpublic class LoginInterceptor implements HandlerInterceptor {// 登录拦截器 @Autowired private TAdminInfoService tAdminInfoService; public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object ha

2021-01-26 13:56:21 78

原创 Cookie&Session&中文英文二进制数据编码(Unicode,ASCII,BASE64)&HTTP

目录Cookie&SessionCookieCookie机制Java对Cookie的封装Cookie的不可跨域名性Unicode编码:保存中文Cookie处理二进制数据设置Cookie的所有属性Cookie的有效期Cookie的修改、删除Cookie的安全属性案例:用Cookie实现永久登录SessionSession机制使用Session实现用户登录Session的生命周期参考资料Cookie&Session在Web程序中,会话跟踪用来跟踪用户的整个会话,是很重要的事情。理论上,一个用

2021-01-25 21:01:28 629

原创 SVN代码提交步骤

创建一个文件夹,用于存放项目代码右击文件夹,选择SVN的checkout,填写URL与密码把要提交的项目复制到文件夹里右击项目,TortoiseSVN-add右击项目,SVN Commit上传成功页面:项目左下角出现绿色对勾,表示上传最终完成:...

2021-01-23 08:55:18 7871 1

原创 th:onclick的使用(可传多个参数)

代码一看就懂:HTML:<!--一个参数--><button th:onclick="getNick([[${user.nick}]])">按钮1</button><!--多参--><button th:onclick="getNickAndPhone([[${user.nick}]], [[${user.phone}]])">按钮2</button><!--多参, 且包含三元运算符--><button

2021-01-22 21:11:39 6660

原创 SVN中,代码上传错误,回滚步骤

最近发生两三次因为与产品交流不畅导致代码上传错误的问题,这时候想回滚/回退代码就需要更小心。比如今天下班时,产品想把功能A上线,但是沟通歧义导致功能A与B同时被上线,此时我的回滚步骤是:备份所有相关文件;将刚刚提交的文件中,想要回退的部分文件分别复制到Notepad++中;将想要回退的部分文件的原始版本复制到Idea的当前文件上;检查当前文件,无误后提交,发布;检查线上环境中项目运行情况;将Notepad++中代码复制到当前文件,保证未提交的部分代码为最新状态;运行本地项目,检查项目运行情况

2021-01-22 20:34:06 1053

原创 Java中的“随机”应用:Random,Math.random,RandomStringUtils(字符串,字符,数字,布尔值)

Random:public static void main(String[] args) { // 以系统当前时间作为随机数生成的种子 Random random=new Random(); System.out.println(random.nextInt(10));//返回一个[0, 10)区间内的整数 System.out.println(random.nextFloat()); //返回一个随机浮点型 System.out.println(random.nex

2021-01-14 16:03:57 177

原创 @DS注解的使用,动态数据源,事务

有时,在一个项目中会用到多数据源,此时可以使用苞米豆的dynamic-datasource-spring-boot-starter:首先,引入jar包:<dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>2.5.4</version>

2021-01-12 20:58:37 30980 4

原创 为链接表达式@{}添加参数的简便方法

代替原有?与&:th:href="@{/user/details(id=${user.id}, name=${user.name})}"等效于:th:href="@{|/user/details?id=${user.id}&name=${user.name}|}"为URI添加指定参数:th:href="@{/user/{userid}/details(userid=${user.id})}"(在括号中为userid赋值)...

2021-01-11 19:12:34 493

原创 手机号,验证码登录校验(指定时间内,指定IP不用重复登录);获取客户端IP;手机号正则Pattern

在“字符验证码的创建”一文中,已经介绍了如何创建验证码,这回我们使用手机号和验证码来做登录校验:HTML页面:<form id="form" action="/login" method="post"> <div> 手机号: <input type="text" id="phoneNumber" name="phoneNumber"> </div> <div> 验证码:

2021-01-10 18:47:15 572 1

原创 字符验证码的创建(BufferedImage,随机Random,ImageIO传递图片,使用Math.random()实现局部刷新,attr,removeAttr,setInterval定时器)

验证码的作用:区分用户是计算机还是人;验证码有图片、拖拽、短信等各种形式,其中图片形式最为常见:工具类:public class VerifyCodeUtils { /** * 创建验证码 * @param width 图片宽度 * @param height 图片高度 * @param length 字符数 * @param fontName 字体名 * @return */ public static Buffe

2021-01-10 17:26:25 157

原创 Thymeleaf读取对象、List、Map、数组中的变量值

Controller代码:@RequestMapping("test")public String test(ModelMap mm) { Teacher teacher = new Teacher(); teacher.setTeacherName("老王"); Class cls = new Class(); cls.setClassName("历史"); cls.setTeacher(teacher);// 赋值对象属性 List<Teache

2021-01-08 20:59:19 4781

原创 SQL Server多表关联更新update

需求:将a表的nvc_add_name字段设置为b表的nvc_show_name值,其中b.nvc_admin_name = a.nvc_add_name,且a表的i_ed_identifier取值为2或3:update a set a.nvc_add_name = b.nvc_show_name from Information.dbo.t_equipment_manage a inner join GYBTest.dbo.t_admin_info b on b.nvc_admin_name = a.

2021-01-08 16:13:56 2027

原创 使用th:utext处理HTML节点转义文本

直接上代码:@RequestMapping("test")public String test(ModelMap mm) { mm.addAttribute("text", "你好,<span style='color: red'>疯狂 Java</span>"); return "test";}<span th:text="${text}"></span><br><span th:utext="${text}"&

2021-01-07 20:05:12 863

原创 SpringBoot中Thymeleaf的配置

spring.thymeleaf.cache:是否打开模板缓存,默认为true(开发阶段建议关闭);spring.thymeleaf.check-template:是否在处理模板前检查其是否存在,默认为true;spring.thymeleaf.check-template-location:是否检查模板位置,默认为true;spring.thymeleaf.content-type:模板的content-type值,默认为text/html;spring.thymeleaf.enabled:是否开

2021-01-03 20:25:51 931

原创 使用RequestParam或HttpServletRequest获取上传的文件

前端(注意form的method与enctype):<form action="/upload" id="form" method="post" enctype="multipart/form-data"> 姓名:<input type="text" id="name" name="name"><br> 文件:<input type="file" name="myFile"><br> <button type="su

2021-01-03 17:11:39 2766

原创 jQuery使用replace与正则实现局部,全局替换

<input type="text" id="name" value="1,2,3,4"><button type="button" onclick="replace()">替换</button>想把input中value的值的逗号都变成"-",首先使用jQuery的replace方法:function replace() { var value = $("#name").val(); var result = value.replace(',',

2020-12-30 20:47:36 832

原创 Springboot中的MatrixVariable注解(PathVariable的升级版)

MatrixVariable,翻译过来就是"矩阵变量":PathVariable主要用于获取URI中的单一变量,MatrixVariable可以获取复杂变量;规则:(1)URI中的参数与值使用key-value形式;(2)多个参数间使用分号隔开;(3)若一个参数有多个值,值与值之间使用逗号隔开举例:首先,因为Springboot默认不使用MatrixVariable绑定参数,我们需要添加配置类:@Configurationpublic class MyWebConfig impleme

2020-12-28 20:43:17 412

原创 Springboot中的PathVariable注解(URI变量与方法参数)

@PathVariable主要用来修饰方法参数,表示此参数为请求URI的变量;请求URI中的变量,会自动转换为方法参数的类型;例1:@RequestMapping("/test/{name}")public String testName(@PathVariable String name) { System.out.println(name); return "test";}(默认情况下,@PathVariable中的变量名称为name,因此该变量会与方法中名称为name.

2020-12-28 20:09:51 1099

原创 jQuery中length与size()的区别

length是属性,size()是方法;如果想获取元素个数,效果相同;如果想获取字符串长度、数组中元素个数,只能用length;length效率更高,因为size()是用length实现的;总之:用length更好

2020-12-27 17:00:19 136

空空如也

空空如也

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

TA关注的人

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