- 博客(55)
- 资源 (6)
- 收藏
- 关注
原创 docker在linux下简单部署项目
1. 编写dockerfile文件2. 将jar包和docker文件放到服务器上执行mvn clean package docker:build3.执行docker images查询是否存在镜像4.启动方式放在下面写。
2023-07-18 11:40:45
1289
原创 模板模式加策略模式加工厂模式 解耦业务中多活动创建
多个子级接口继承ActivityAbstractExecuto 实现策略模式 由于是继承父类 每个子级接口可决定是否实现父类接口。ActivityAbstractExecutor抽象类实现决策接口对每个决策创建模板 完成模板模式。模板模式简述:创建模板接口 父类实现模板接口 子类继承父类 子类决定是否采用父类模板内容。策略模式简述:创建一个决策类 多个子类继承或实现父类同一接口 由决策类决定采用那个子接口。工厂模式:多个子类继承父类 根据子类名称向上转换父类 实现子类方法。
2023-03-26 11:56:51
406
原创 mysql第四章事务隔离和mvcc
事务的使用场景最经典的例子就是银行转账,用户从a账户转200元到b账户,那么就会产生3个操作 1.检查a账户余额是否够200元 2.a账户减少200元 3.b账户增加200元。这些操作必须保证是一体的,负责用户就会根据时间差进行多次转账。具体sql实现如下:mysql的四种隔离级别读未提交 一个事务还未提交,它做的变更就能被别人看到读提交 一个事务提交后,它做的变更才会被其他人看到可重复读 一个事务执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的。串行化 对同一行记录,写会加
2022-03-10 17:40:34
865
原创 mysql第三章sql的更新
mysql更新流程更新与查询流程基本相同,分析器会通过词法和语法解析知道这是一条更新语句。优化器决定要使用ID这个索引。然后,执行器负责具体执行,找到这一行,然后更新。不同的是更新流程涉及到两个重要的日志模块redolog(重做日志)和biglog(归档日志)。redo log在MySQL里,如果每一次的更新操作都要写进磁盘,然后磁盘也要找到对应的那条记录,然后再更新,整个过程IO成本、查找成本都很高。为了解决这个问题,MySQL 的设计者就用了**WAL(Write-Ahead Logging)*
2022-03-10 10:38:40
1069
原创 mysql第二章一条查询sql语句的一生
一 SQL查询语句是如何被执行的mysql架构图大体来说 mysql分为Server层和存储引擎层两部分Server层Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学、和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。不同存储引擎共用一个Server层。引擎层存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持InnoDB、MyISAM、Memory等多个存储引擎。现
2022-03-08 15:13:33
687
1
原创 java 实现评论多层楼层合并为二层楼层(父级评论的子级及其嵌套子级)
论坛实现类似b站评论楼层思路:1.先用递归的方式将所有数据查出2.再用递归的方式将父级评论的子级及其嵌套子级上代码:1.递归查询所有评论实体类 自己写吧 public void recursiveCommonReplyList(List<CourseCommentDto> courseCommonList){ for(CourseCommentDto cd :courseCommonList){ List<CourseCommentDto> courseCo
2021-10-21 13:34:17
883
原创 mysql的基本认识
一、mysql创建索引的方式1.创建表时创建索引2.使用alert table add 方式添加索引二、mysql有哪几种索引1.普通索引 用来加速数据查询速度而建立的索引。多建立在经常查询的字段上和经常用于排序的字段上 创建方式:alert table add index index_name(column) 2.主键索引 1.主键索引不可以为空 2.一张表中只能有一个主键索引 3.主键索引中的值不能重复 4.主键索引不可以做外键**主键索引和唯一索引的区别:主键索引为一种约束和
2021-10-14 16:20:52
160
原创 二叉树与红黑树
二叉树的形成二叉树是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树组成二叉树特点由二叉树定义以及图示分析得出二叉树有以下特点:1)每个结点最多有两颗子树,所以二叉树中不存在度大于2的结点。2)左子树和右子树是有顺序的,次序不能任意颠倒。3)即使树中某结点只有一棵子树,也要区分它是左子树还是右子树3.3 二叉树性质1)在二叉树的第i层上最多有2i-1 个节点 。(i>=1)2)二叉树中如果深度为k
2021-09-13 13:42:43
3020
1
原创 springboot整合swagger-bootstrap-ui
官网路径:https://doc.xiaominfo.com/knife4j/1.先导入pom文件<!--swagger-api 依赖开始--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </d
2021-09-08 13:26:49
292
原创 ReentrantLock
ReentrantLock二、过程1.非公平锁过程2.公平锁过程# 一、AQS(AbstractQueuedSynchronizer)当获得锁的线程需要等待某个条件时,会进入 condition 的等待队列,等待队列可以有多个。当 condition 条件满足时,线程会从等待队列重新进入同步队列进行获取锁的竞争。ReentrantLock 就是基于 AQS 实现的,如下图所示,ReentrantLock 内部有公平锁和⾮公平锁两种实现,差别就在于新来的线程是否⽐已经在同步队列中的等待线程更早获
2021-09-06 14:25:05
119
原创 synchronize、volatile与lock区别
Synchroniezd、volatile与lock区别一、Synchroniezd1.使用场景2.锁升级2.特性二、Volatile1.使用场景2.如何保证安全性3.与Synchronize的区别三、与Lock区别一、Synchroniezdjvm中对象放在堆内存中的,对象大致可以分为三个部分,分别是对象头,实例变量和填充字节对象头,主要包括两部分1. Mark Word (标记字段),2.Klass Pointer(类型指针)。Klass Point 是对象指向它的类元数据的指针,虚拟机通过这个
2021-09-03 17:01:52
399
原创 理解ArrayList和linkedList
文章目录一、使用场景二、ArrayList初始化过程三、arrayList和linkedList区别1.arrayList增删慢原因2.linkedList增删快原因3.linkedList查询慢原因3.ArrayList是否适合做队列一、使用场景插入数量较多使用linkedList 查询使用ArrayList 保证线程安全使用Vector二、ArrayList初始化过程 1.7之前ArrayList默认长度为10,1.7之后在调取add方法时才将长度初始化为10 扩容规则 length+le
2021-09-02 14:12:39
253
原创 搞懂HashTable与ConcurrentHashMap
搞懂HashTable与ConcurrentHashMap前言一、如何处理HashMap在多线程中的安全问题二、如何实现线程安全1.HashTable2.ConcurrentHashMap3.Collections.synchronizedMap(Map)三、HashTable与ConcurrentHashMap get与put过程1.HashTable的get:2.HashTable的put:3.ConcurrentHashMap的get:4.ConcurrentHashMap的put:四、1.8进行了什
2021-09-01 15:43:47
399
原创 彻底搞懂HashMap
彻底搞懂HashMap提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录彻底搞懂HashMap一、HashMap结构二、扩容1.扩容原因2.扩容条件3.扩容方法三、插入1.插入方法2.尾插原因三、多线程中使用hashMap四、为什么重写equals方法要重写hashCode结尾一、HashMap结构 数组加链表key通过hashCode得到数组位置,因为哈希本身存在概率性,哈希值相同的值会插入到相同的数组索引下形成链表二、扩容1.扩容原因 因为数组长度是有限的
2021-08-31 11:27:18
474
原创 java 网页下载oss文件
直接上代码/*** *浏览器下载oss文件 *@param fileName 文件名称 *@return: void *@author: 小清新 *@Date: 2021/7/16 10:34 **/ @Override public void downWebOssFile(String fileName, HttpServletResponse response) throws IOException { // 填写Object的完整路径。Object完整路径中
2021-07-17 14:51:22
1401
2
原创 java 合并excel单元格
直接上代码public static HSSFWorkbook getHSSFWorkbookTitle(String startTime,String sheetName,String [][]values, HSSFWorkbook workbook) throws IOException { // 第一步,创建一个HSSFWorkbook,对应一个Excel文件 if(workbook == null){ workbook = new HSSF
2021-06-29 16:00:04
3757
原创 java list做为参数传递返回为null的情况
java 函数中参数传递分为值传递和引用值传递 当list作为参数传递时 普通情况将堆中地址进行传递 单list为null时堆中不存在地址值导致返回的list为null如图所示:1为list值为null路径2为new list路径...
2021-06-29 13:28:26
1890
原创 java读写不同redis数据库
@Autowired private StringRedisTemplate stringRedisTemplate; JedisConnectionFactory jedisConnectionFactory = (JedisConnectionFactory) stringRedisTemplate.getConnectionFactory(); jedisConnectionFactory.setDatabase(1); ValueOperations valueOperations = s.
2021-06-08 13:34:57
496
原创 java springboot根据sessionId获取session(根据sessionId无法获取session)
java已经不支持通过sessionId直接获取session 所以只能自己建立session监听类来存储和取session监听类import javax.servlet.annotation.WebListener;import javax.servlet.http.HttpSession;import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener;import java.ut
2021-06-02 13:41:10
3794
原创 java word excel ppt 图片转pdf
第一步将jar导入mvn库下载地址 0积分https://download.youkuaiyun.com/download/qq_35908944/18549670mvn install:install-file -DgroupId=com.aspose -DartifactId=aspose-words -Dversion=18.8 -Dpackaging=jar -Dfile=E:/wordpdf/aspose-words-18.6-jdk16.jarmvn install:install-file -D
2021-05-10 15:03:04
250
原创 解决mybatis拦截器注入service为null的问题
第一步以静态变量保存Spring ApplicationContext, 可在任何代码任何地方任何时候中取出ApplicaitonContext.上源码/** * @author Administrator * @PACKAGE_NAME: com.ewaytek.edf.web.modules.plugins * @company: * @USER:小清新 * @date: 2021年04月25日 10:12 * @PROJECT_NAME: CGCP **/import org.
2021-04-26 16:06:54
1456
1
原创 mybatis拦截mysql并获取sql语句
第一步添加拦截器在mybatis.xml配置文件中加入拦截器扫描 <plugins> <plugin interceptor="**.***.PaginationResultSetHandlerInterceptor"/> </plugins>拦截器文件源码/** * @PACKAGE_NAME: com.ewaytek.edf.orm.plugins * @company:北京恩洪教育公司 * @USER:小清新 * @dat
2021-04-26 16:03:09
1919
1
原创 java设计模式之责任链模式(过滤器模式)
责任链概念:使多个对象都有机会处理同一个请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。项目中实际应用场景:当一条数据需要经过不同接口进行处理,利用责任链模式可进行解耦灵活添加不同接口。例如 oa中请假 张三请假天数不同需要经过不同领导审批。下面demo以为一张考卷添加不同类型试题为demo...
2021-03-22 14:06:50
468
原创 springboot整合activit在web端画流程图
git地址:https://github.com/hewenping/springboot-activiti-demo
2021-03-16 14:19:34
702
原创 mysql 根据某个字段截取并模糊查询 根据某个字段值去修改另一个字段
SELECT wac2.id as id FROM web_area_school wac2 WHERE wac2.id NOT IN ( SELECT was.id FROM web_base_school wbs, ( SELECT CASE (LEFT(wac.area_code, 4)) WHEN 1100 THEN 110 WHEN .
2021-03-11 14:09:36
780
原创 Java线程概述
1.线程的概念:一个程序中不同的执行路径就叫做线程2.线程中run和start的区别:调用start方法方可启动线程,真正实现了多线程;而run方法只是thread的一个普通方法调用还是在当前线程里执行,并没有增加线程的数量;代码演示:import java.util.concurrent.TimeUnit;public class T01_WhatIsThread { private static class T1 extends Thread { @Override
2021-02-25 15:06:52
104
1
原创 python学习第二天
python函数1.调用函数函数网站:http://docs.python.org/3/library/functions.html#abs2.定义函数定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回如果想定义一个什么事也不做的空函数,可以用pass语句函数参数说明*会把接收到的参数形成一个元组,而**则会把接收到的参数存入一个字典demo例子def product(x, *y): a=0 fo
2021-02-23 14:25:38
55
原创 java 通过string对堆栈详解
java 内存结构1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.一条指令分为 操作+地址在执行一条指令的时候,先把指令存内存取到DR,然后再取到IR,然后再交给指令译码器来转换指令,再向操作控制器发出对应的信号为了保证程序的顺利执行,所以才 需要PC来保存 下一条指令的地址,由于大部分指令地址都是连续的,所以+1即可2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)3
2021-02-22 10:41:18
869
原创 python学习第一天
Python基础学习1.工具的安装http://c.biancheng.net/view/5804.html学习版https://www.jianshu.com/p/175666779e3a2.python环境安装http://c.biancheng.net/view/4161.htmlpython基础遍历listhttps://blog.youkuaiyun.com/whatday/article/details/100557888函数记录isinstance() 函数案例实践L = [
2021-02-20 17:38:07
117
原创 java1.8 最全stream集合demo
/** * @PACKAGE_NAME: com.ewaytek.edf.web.controllers.jdk1_8demo * @USER:小清新 * @date: 2021年02月02日 13:34 * @PROJECT_NAME: CGCP **/import java.util.*;import java.util.stream.Collectors;import static java.util.stream.Collectors.toList;public class
2021-02-02 17:05:49
276
1
原创 springboot 事务应用
Spring 提供一个 @EnableTranscationManagement 注解在配置类上来开启声明式事务的支持。使用了 @EnableTranscationManagement 后,Spring 容器会自动扫描注解 @Transactional 的方法与类。@EnableTranscationManagement 的使用方式如下:@Configuration@EnableTranscationManagementpublic class AppConfig{}springboot具体应用
2021-01-05 16:58:07
165
原创 java redis工具类
直接上代码import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.stereotype.Component;import org.springframework.util.CollectionUtils;import java.util.List;import
2020-12-29 17:05:38
158
原创 springboot利用aop生成操作日志
1.知识点通知(Advice)通知描述了切面要完成的工作以及何时执行。比如我们的日志切面需要记录每个接口调用时长,就需要在接口调用前后分别记录当前时间,再取差值。前置通知(Before):在目标方法调用前调用通知功能;后置通知(After):在目标方法调用之后调用通知功能,不关心方法的返回结果;返回通知(AfterReturning):在目标方法成功执行之后调用通知功能;异常通知(AfterThrowing):在目标方法抛出异常后调用通知功能;环绕通知(Around):通知包裹了目标方法,在目
2020-12-24 14:28:31
232
原创 java后台将html转换为图片
方法一:利用springboot的freemark生成 要考虑样式兼容问题1.pom引入对应的包<!-- html生成图片--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> <de
2020-12-08 10:21:53
3790
10
原创 java批量下载多个阿里云视频
直接上代码@RequestMapping(value = "/downVideoList", method = RequestMethod.GET)@ResponseBodypublic void downVideoList() throws Exception { // 下载列表 查询阿里云id集合 List<vo> listFile = detailService.findListFile(); //阿里云视频集合 Vector<vo> do
2020-12-02 15:06:10
739
2
原创 java压缩多个文件为zip
直接上代码import cn.jiguang.common.utils.StringUtils;import java.io.*;import java.util.ArrayList;import java.util.List;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;/** * 生成压缩文件 (zip,rar 格式) */public class CompressUtil { /**
2020-12-02 14:59:35
881
原创 mysql利用java创建对应年工作日节假日与调休日
先创建表CREATE TABLE config_calendar (rep_date date NOT NULL COMMENT ‘日期’,rep_year int(8) NOT NULL COMMENT ‘年号’,rep_month int(8) NOT NULL COMMENT ‘月’,rep_day int(8) NOT NULL COMMENT ‘天’,rep_week int(8) NOT NULL COMMENT ‘周’,rep_status int(8) DEFAULT ‘0’
2020-11-03 10:43:14
466
原创 java查询某个日期后的7个工作日
直接上代码 public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { //传入的日期+7 int dayStart=1; int dayNum=7; Date date = sdf.parse("2020-9-30");
2020-10-28 11:36:27
1161
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人