自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 帆软报表实现通过js查询数据库设置表格数据

最近做的一直在做报表相关的需求,自己也是一边学一边做。有一个有意思的需求是在表格中某个单元格在编辑完以后其它的表格中的数据自动填充,当也是根据一定的规则与数据来源才能填充的。先来点基础概念,就是帆软给我们提供了这个编辑后的事件或者说是一些按钮事件。

2024-04-21 17:54:19 492 1

原创 帆软报表踩坑日记

首先是表格中的扩展,就是当我们根据数据库查询数据然后放到表格上的时候使用需要表格做扩展,有很横向和纵向这两种方式。最近公司项目要是使用报表,公司使用的是帆软这个国产软件,自己也是学习使用,在使用的过程中记一下问题以及解决方式。通过设置单元格的扩展方向来决定数据要如何扩展,公司使用的是帆软8这个版本,比较老了。—先写到这,后期我继续补充。

2024-03-29 20:49:20 297

原创 Java集合为什么不能使用foreach删除元素

相信各位程序猿在开发的过程中都用过foreach循环,简单快捷的遍历集合或者数组,但是在通过foreach进行集合操作的时候就不可以了,这是为什么?这里先把问题提出来,接着往下看。

2024-02-06 10:33:10 1116 1

原创 redis布隆过滤器(Bloom)详细使用教程

的过滤器,这个过滤器的配置都是一些基础的配置,比如初始容量是100 错误率是0.01也就是百分之一的错误率,这个过滤明显不能满足我们的需要因为过滤器的工作原理就是通过多个哈希函数对key进行计算然后记录下来,那么容量就决定了在计算的过程中发生碰撞的概率大小了,所以我们在使用的时候一定要去手动创建过滤器以确保满足自己的需要。它以较小的空间占用和高效的查询时间著称。解释一下:bf.add 是安装布隆过滤器后才可以使用的命令,这是添加一个key的命令,user是过滤器的名字,而tese就是我们要去添加的key。

2024-02-03 21:00:46 2515

原创 spring-data-redis自定义实现看门狗机制

项目中使用redis分布式锁解决了点赞和楼层排序得问题,所以这里就对这个redis得分布式锁进行了学习,一般使用得是redission提供得分布式锁解决得这个问题,但是知其然更要知其所以然,所以自己就去找了一些资料以及也实践了一下就此记录分享一下。配置redis连接以及基础配置在Spring Boot的配置类中创建一个RedisTemplate的Bean:实现redis分布式锁工具类这个类是一个用于实现分布式锁的工具类,主要提供了以下功能: 方法:定时检查并更新 Redis 锁的过期时间。该方法

2024-02-02 09:27:46 756

原创 【Java】Java JSR303应用解决数据校验问题,解放双手

在实体类上标注校验注解的时候,可以给groups属性进行赋值,然后在需要校验的controller类的方法中的实体类前加上@Validated注解,先附上代码再细细说明。这里id和sort这两个字段添加了注解,当在AddGroup分组下的id才会生效,而在UpdateGroup分组下只有sort的校验会生效。当我调用test1方法时对数据进行校验字段只有id会生效,而当我调用test2方法时对数据进行校验字段只有sort生效,可以看一下效果。这两个接口的作用就是仅用于标记,不需要有任何的方法声明。

2024-01-24 17:24:24 950

原创 MySQL中的行锁、临建锁、间隙锁和表锁中的意向锁

通过临建锁可以解决幻读的问题。每个数据行上的非唯一索引列上都会存在一把临键锁,当某个事务持有该数据行的临键锁时,会锁住一段左开右闭区间的数据。需要强调的一点是,InnoDB 中行级锁是基于索引实现的,临键锁只与非唯一索引列有关,在唯一索引列(包括主键列)上不存在临键锁。可以看到将5–11这些数据都锁住了,这种情况下其它的事务想要去在这个1到11的id区间内做数据修改是会被阻塞的,知道我们将事务提交或者回滚将锁释放才行。锁和页锁,行级锁的粒度更小,因此在处理高并发事务时,能提供更好的并发性能和更少的。

2024-01-24 09:35:38 1111

原创 JUC——8锁问题

当关键字用于方法或代码块时,它可以用来实现对象级别的锁和类级别的锁。当用于非静态方法时,锁对象是调用该方法的实例对象。即每个对象实例都有自己的锁。当用于代码块时,锁对象可以是任意的Java对象。通常情况下,我们使用某个共享资源作为锁对象。无论是方法级别的锁还是代码块级别的锁,同一时间只能有一个线程获得锁并执行同步代码,其他线程需要等待锁释放。当用于静态方法时,锁对象是当前方法所属的类对象(Class对象)。类级别锁是针对整个类的所有对象实例生效的,不同实例之间共享这个锁。

2024-01-16 11:17:57 881

原创 Linux Docker安装

编写 Dockerfile 文件,定义构建过程和容器配置。执行构建命令,例如:docker build -t 镜像名:版本 .其中,表示 Dockerfile 文件所在的目录。

2024-01-16 10:36:35 828

原创 项目应用多数据源动态切换(动态切换数据库连接)

最近公司的权限项目要实现多租户的功能,于是就要做数据隔离以确保每个租户的数据的安全性,但是项目中也要动态的提供能够添加租户和删除租户的功能,这就需要动态的添加数据源(数据库连接地址。。),于是就去找了找相关的资料,今天就整理总结一下如何实现这个功能。

2023-11-13 20:47:11 340

原创 spring boot+redis整合基础入门

最近项目中有用到redis进行一些数据的缓存,于是就想写一篇springboot集成redis的基础入门,也是给自己留一个可查看的地方,时刻能够提醒自己吧,后续应该会写一下进阶的redis的使用对于redis的简单使用springboot已经帮助我们做了集成,给我们封装了很多的api,只要借助提供的api就可以快速入门,但是到入土还需要一些时间。

2023-09-13 22:14:55 338

原创 redis安装部署

命令,如果系统中已经安装了 C++ 编译器,则会显示 C++ 编译器的版本信息。如果未找到该命令,说明系统中没有安装 C++ 编译器。命令,如果系统中已经安装了 make 工具,则会显示 make 工具的版本信息。如果未找到该命令,说明系统中没有安装 make 工具。查看进程确保服务启动正常,redis的服务端口默认是6379,记得安装完成后服务器的端口要开发才行,不然项目连接不上。命令,如果系统已经安装了 GCC,则会显示 GCC 的版本信息。如果未找到该命令,说明系统中没有安装 GCC。

2023-09-12 21:49:01 202

原创 Spring-Cloud GateWay+Vue 跨域方案汇总

在开发Spring Cloud和Vue的项目时,涉及到前后端分离的情况下,跨域成为一个常见的问题。本文将介绍跨域问题的背景,并提供了一些解决方案。跨域(Cross-Origin Resource Sharing,CORS)是一种浏览器的安全机制,用于限制从一个源(域、协议或端口)加载的Web页面上的资源如何与来自其他源的资源进行交互。当一个 Web 应用程序尝试从一个源加载来自不同源的资源时,浏览器将执行跨域检查。跨域限制的目的是保护用户隐私和安全,防止恶意网站通过跨域请求来获取用户的敏感信息。

2023-09-12 11:58:37 788

原创 编程要搞明白的东西(二)

一直在学习设计模式和面向对象,对于这个过程中发现,一直少不了封装继承多态这些东西,于是就总结一下。面向对象编程(Object-Oriented Programming, OOP)是一种常用的编程范式,它将程序设计问题分解成对象,通过对象之间的交互来解决问题。在面向对象编程中,将现实世界中的实体抽象为对象,每个对象都有自己的状态和行为。面向对象编程的基本概念包括封装、继承和多态。其中,封装指的是将数据和方法封装在对象中,隐藏实现细节,并提供公共接口与外部交互。

2023-09-09 22:39:30 6993

原创 @Autowired和@Resource

Autowired和@Resource是Java Spring框架中用于依赖注入的注解。本文将介绍它们的定义、使用方式以及区别,帮助读者正确使用这两个注解。@Autowired是一个Spring特有的注解,用于自动装配Bean。它可以标记在字段、构造方法、Setter方法或者普通方法上,告诉Spring容器需要自动注入相关的依赖。@Qualifier注解是Spring框架提供的用于解决依赖注入歧义性的注解。

2023-09-09 21:57:11 219

原创 Java中什么是序列化,哪里有所应用

序列化(Serialization)是将对象状态转换为可保存或传输的形式的过程。在Java中,序列化的主要目的是用于网络传输对象、保存对象到文件等。Java序列化是一种对象序列化的机制,它允许将实现了Serializable接口的Java对象转换为字节序列,这些字节序列可以保存在磁盘上,或通过网络传输,以达到对象状态持久化和传输的效果。return age;@OverrideSystem.out.println("开始执行自定义的序列化方法:writeExternal");

2023-09-09 21:04:12 381

原创 DockerFile打包项目实战解析,一文读懂dockerfile打包

现在项目部署都不在是简单的打包推送了,而是容器化管理这样也便于扩充服务动态运维。很是优雅,所以呢对于现在经常使用的docker打包项目进行部署就写一篇详解,这里呢是我们项目很早就用上docker了,所以我就以一个简单的demo进行说明。DockerFile使用一系列指令来定义构建步骤,每个指令占据一行并以大写字母开头。Docker和Dockerfile是现代化软件开发和部署的重要工具。通过使用Docker,可以实现快速、可靠和可移植的应用部署。

2023-09-09 20:19:19 1495

原创 MySQL触发器详解保证入土

数据库触发器是一种在特定数据操作(如插入、更新或删除)发生时自动执行的动作。本文将介绍MySQL触发器的基础知识和使用方法。BEGIN-- 触发器逻辑END;:触发器的名称,你可以根据需要自定义。:指定触发器在数据操作之前(BEFORE)或之后(AFTER)执行。:指定触发器在哪种类型的数据操作时触发,可以是插入数据(INSERT)、更新数据(UPDATE)或删除数据(DELETE)。table_name:指定触发器所属的表名。:确保触发器逻辑应用于每一行受影响的数据。BEGIN和END。

2023-09-09 15:42:27 1560

原创 Java泛型

Java泛型是一种类型参数化的机制,可以让我们在编写代码时通过参数指定数据类型,提高代码的可重用性和类型安全性。// 泛型方法的实现Java泛型是一种强大的编程机制,通过参数化类型可以提高代码的可重用性和类型安全性。掌握泛型的基本语法和特性,能够更好地应用于实际开发中。

2023-09-08 23:01:19 92

原创 Java中IO类扫盲篇

Java IO概述:Java的IO(输入/输出)是用于处理与外部设备、文件和网络资源之间数据传输的机制。它提供了一套丰富的类和方法,用于读取和写入数据,并提供了灵活的处理方式。IO模型和IO流的概念:IO模型是指描述程序与外部设备进行数据交换的方式,主要有阻塞IO模型和非阻塞IO模型。阻塞IO模型是指程序在进行IO操作时会阻塞等待返回结果,而非阻塞IO模型是指程序在进行IO操作时可以继续执行其他任务,不需要等待返回结果。IO流是Java中用来处理输入和输出的抽象概念。

2023-09-08 22:20:33 309

原创 C#数据类型:object、var和dynamic的比较与应用

dynamic类型提供了动态类型检查和绑定的能力,适用于需要在运行时进行类型操作的场景。同时,需要根据实际需求和项目要求,权衡不同数据类型的优势和限制,选择最适合的类型来达到预期的效果。它是一种通用的引用类型,可以存储任何类型的值。由于object类型是所有类型的父类,因此可以将任何类型的值赋给object类型的变量。dynamic类型的变量可以在运行时表示任何类型的值,并且可以调用该类型的成员,而无需进行编译时检查。var是C#中的隐式类型推断关键字,它允许编译器根据变量的初始化值自动推断变量的类型。

2023-09-08 21:40:16 1462 2

原创 Java多线程4种拒绝策略

在Java多线程编程中,我们通常使用线程池来管理和调度任务。线程池由一组预先创建的线程组成,可以重复利用这些线程来执行多个任务,避免频繁地创建和销毁线程而带来的性能开销。当线程池中的任务队列已满且无法再接受新的任务时,就需要采取拒绝策略来处理这种情况。拒绝策略定义了当无法再接受新的任务时如何处理这些被拒绝的任务。Java提供了四种常见的拒绝策略:AbortPolicy(抛出异常):默认的拒绝策略。当任务无法被提交给线程池时,会直接抛出RejectedExecutionException异常。

2023-09-08 21:28:58 1797

原创 ForkJoinPool的使用及基本原理

ForkJoinPool是Java中的并行执行框架,用于实现任务的拆分和合并。它基于工作窃取算法(Work Stealing)和分治策略(Divide and Conquer),可以有效地利用多核处理器的性能,提升任务的执行效率。分布式计算与并行计算的关系并行计算是指将一个大任务拆分成多个子任务,并且这些子任务可以同时执行,从而加快整体任务的完成速度。分布式计算是指将任务分配到多个计算节点上进行并行计算,节点之间通过网络进行通信和协调。

2023-09-08 21:11:12 341

原创 Java线程池新手入门完全足够

在计算机编程中,线程池是一种预先创建的线程集合,用于执行多个任务。线程池可以提高线程的利用率,避免频繁地创建和销毁线程。线程池的一些基础概念掌握对于使用线程池是一个很好的开始,因为当每个参数都明白其意义后在什么场景下使用什么样的线程池就显得游刃有余了。当然本人也是在学习的过程中,如有哪些遗漏还请指出。

2023-09-08 16:21:11 58

原创 Elasticsearch实现词云效果Demo

最近项目中使用Elasticsearch在做快速查询的功能,然后就想到了之前的一个项目中有一个词云的功能,就想用Elasticsearch实现一下词云的效果,实现思路很简单,目前这个demo已经写完了,透露一下很简陋,如何想要在项目中实际应用还需要改进。关于使用这个es实现的这个效果,个人认为这只是一种方案,还有其它的,这里是直接使用的分词工具包,es上还可以安装分词插件,所以我的这种不一定是最好的,这是一种简单的方案希望大家不要被我的这种给迷惑了。

2023-09-08 10:41:59 731

原创 Spring Boot集成Elasticsearch实战

最近项目中要使用Elasticsearch所以就去简单的学习了一下怎么使用,具体的一些在高级的功能暂时展示不了,能力目前有点限,不过一些基本的需求还是可以满足的。所以就写了一篇整理一下也希望能够指出不足之处})0\"}}")el的使用就和我们使用的一些orm框架一样,所以spring提供的这个和el交互的包放在了data下。

2023-09-07 16:16:08 858

原创 EF框架基础应用入门

什么是Entity Framework(EF)框架Entity Framework(EF)框架是微软提供的一种对象关系映射(ORM)框架,用于简化与数据库的交互和数据访问操作。它允许开发人员使用面向对象的方式来操作数据库,而无需编写大量的SQL语句。EF框架的主要作用是将数据库中的表和表之间的关系映射到.NET平台上的对象模型中,使开发人员可以使用面向对象的编程技术进行数据库操作。它提供了一组强大的API,包括通过LINQ进行数据查询、插入、更新和删除等常见的数据操作。EF框架的作用和优势。

2023-09-06 20:31:29 893

原创 Docker Compose具体应用

Docker Compose的概述Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。它使用YAML文件来配置应用程序需要的服务、网络和卷等资源。容器化应用程序的优势和挑战容器化应用程序可以更快速地部署、测试和交付。然而,多个容器之间的管理和通信也带来了一定的挑战和复杂性。Docker Compose 是一个用于定义和管理多容器应用程序的工具,它允许你使用简单的 YAML 文件来描述应用程序的各个组件、服务之间的依赖关系以及运行时的配置参数。

2023-09-05 17:17:39 417

原创 Elasticsearch——Docker单机部署安装

Elasticsearch是一个开源的分布式搜索和分析引擎,使用Lucene库来实现全文搜索功能。本文将介绍如何使用Docker在单机上部署和安装Elasticsearch。你也可以根据需要自定义Elasticsearch镜像的配置。这里以Docker Compose为例,创建一个services:ports:通过将 privileged 设置为 true,容器将获得主机的特权权限,可以执行特权操作。

2023-09-05 16:48:27 1456

原创 Activiti基础入门

方法创建一个查询对象,然后可以根据不同的条件进行过滤和排序,例如根据作业的ID、作业的状态、作业的类型等进行查询。方法创建一个查询对象,然后可以根据不同的条件进行过滤和排序,例如根据流程实例的ID、流程定义的Key等进行查询。方法创建一个查询对象,然后可以根据不同的条件进行过滤和排序,例如根据流程实例的ID、流程定义的Key等进行查询。方法创建一个查询对象,然后可以根据不同的条件进行过滤和排序,例如根据任务的ID、任务的负责人等进行查询。在 Activiti 中,表用于存储与流程相关的数据和元数据。

2023-09-04 09:52:56 138

原创 设计模式行为型-模板模式

模板方法设计模式是一种行为型设计模式,它定义了一个算法的骨架,在其中某些步骤由具体子类来实现。模板方法设计模式通过将算法通用部分放在抽象类中,具体实现留给具体子类来完成,以提高代码的复用性和可维护性。抽象类是模板方法设计模式的核心角色,它定义了模板方法和一系列抽象方法,描述算法的结构和步骤。具体类是抽象类的子类,负责实现抽象类中的抽象方法,完成算法的具体实现。在抽象类中定义具体方法,这些方法在模板方法中被调用。这些方法通常是私有或受保护的,不允许子类直接调用。

2023-09-02 10:07:41 804

原创 设计模式-建造者(生成器)模式

在本文中,我们将介绍建造者模式的概念、作用和优势,并探讨它与其他设计模式的关系。建造者模式通过将对象的构建过程封装起来,使得建造过程和表示分离,并提供灵活的配置选项。通过抽象建造者、具体建造者和指挥者的协作,客户端可以获得不同的产品表示。然而,建造者模式增加了代码量,并对构建顺序有一定要求。

2023-09-02 09:19:46 822

原创 手写Openfeign实现原理——极简版

最近开发cloud项目,里面涉及到服务间调用,最后使用的openfeign解决的,于是对于openfeign的底层原理有些兴趣了,提前透露一下底层无非就是使用一些http调用的工具帮助我们实现了请求调用创建两个自定义注解,分别用于在启动类和接口上添加@Import(OpenInstantiationAwareBeanPostProcessor.class)//这个类重点注意@Component代理类中有一个RestTemplate 用于发送请求@Override//首先获取对象Class<?

2023-09-01 20:13:22 346

原创 Hibernate(Spring Data)抓取策略

本文将深入讨论Hibernate中的抓取策略,介绍不同类型的抓取策略以及它们的使用场景和注意事项。即时加载策略可以通过设置@ManyToOne@OneToOne等注解来实现,默认情况下Hibernate会使用即时加载进行关联对象的加载。延迟加载策略可以通过设置@ManyToOne@OneToOne等注解来实现,默认情况下Hibernate会使用延迟加载进行关联对象的加载。子查询加载策略通过执行子查询来加载关联的实体集合对象,适用于一对多或多对多关系。

2023-08-31 21:53:16 384

原创 Hibernate(Spring-Data)3种实体继承创建表方式指南

实体继承是面向对象编程中常见的概念,它允许通过扩展现有实体类来创建新的实体类。在Hibernate中,实体继承主要用于处理对象之间的继承关系,同时能够有效地映射到数据库表结构中。单表继承策略将所有相关实体类映射到一个数据库表中,通过添加一个列来区分不同的实体类型。具体类继承策略将每个具体的实体类映射到独立的数据库表中,每个表都有自己的主键。映射超类策略将共同属性放在一个超类中,并将超类映射到独立的数据库表,每个子类只映射自己特有的属性。

2023-08-31 17:06:38 643

原创 MySQL 5种索引应用

在本篇文章中,我们将学习MySQL中5种不同类型的索引及其应用场景,以及它们的优缺点。MySQL的索引对于数据库的性能和效率有非常重要的作用。在使用MySQL索引时,需要注意以下几个方面:合适的索引类型:MySQL支持多种类型的索引,如普通索引、唯一索引、主键索引、组合索引和全文索引等。不同的索引类型适用于不同的查询场景,选择合适的索引类型可以减少查询时间和IO操作,提高数据检索速度。建立索引的列:建立索引的列应该选择具有高选择性的列,它们的值分布范围应该尽可能地大,这样可以减少索引查找的次数。

2023-08-31 15:32:15 1132

原创 设计模式-迭代器

迭代器模式是一种行为型设计模式,它允许客户端逐个访问聚合对象中的元素,而不用暴露聚合对象的内部表示。迭代器模式通常在需要遍历一个聚合对象中的元素,并且不想暴露其内部结构时使用。例如,Java 中的集合框架就使用了迭代器模式来遍历集合中的元素。

2023-08-31 14:58:44 1424

原创 设计模式-装饰模式

装饰模式是一种结构型设计模式,它允许动态地向对象添加额外的功能。装饰模式通过包装对象实现功能的动态拓展,使得系统具有更高的灵活性和可扩展性。它应用广泛,在动态添加功能、避免子类爆炸等场景都很有价值。同时,要注意使用装饰模式时,保持透明性和安全性的平衡,确保装饰器和组件具有一致的接口。

2023-08-31 14:37:01 967

原创 设计模式-适配器

设计模式概述设计模式是软件开发中常用的解决问题的经验总结,它们提供了一种被广泛接受的最佳实践。设计模式可以帮助开发人员更好地组织和设计代码,提高代码的可读性、可维护性和可扩展性。适配器模式介绍适配器模式(Adapter Pattern)是一种常用的结构型设计模式。它主要用于将一个类的接口转换成另一个类所期望的接口,以解决不兼容的接口之间的问题。适配器模式可以使得原本不兼容的类能够协同工作。适配器模式的核心思想是创建一个适配器类,该适配器类实现目标接口,并持有一个被适配的对象。

2023-08-31 10:50:56 1655

原创 设计模式-单例模式

懒汉式是一种常用的单例模式实现方式。它与饿汉式不同,饿汉式在类加载时就立即创建实例,而懒汉式则是在第一次使用时才创建实例。双重检查锁(Double-Checked Locking)是一种在懒汉式基础上改进的单例模式实现方式。它通过使用双重检查来减少锁的使用次数,提高了性能。静态内部类是一种常用的单例模式实现方式。它利用了类加载机制和静态内部类的特性来实现延迟加载和线程安全。枚举类是一种特殊的类,用于定义一组有限的常量。在单例模式中,使用枚举类来实现单例是一种简洁、安全和可序列化的方式。

2023-08-31 10:42:15 878

spi-Demo.rar

spi的demo

2023-07-22

spi-Demo.rar

spi的demo

2023-07-22

空空如也

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

TA关注的人

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