Java
若依微服务版本集成积木报表
一、项目结构 新建报表微服务模块,这是我的项目结构图。 二、执行初始化数据脚本 运行积木报表的初始化脚本,创建相关表结构,github速度太慢,推荐使用 gitee地址。选择你要建表的数据库,我是跟业务库放到了一起,执行完后会新增以下这几张表。 三、pom中引入积木报表依赖 在顶级父pom中声明积木报表的版本号: 在报表微服务模块添加积木报表的依赖: 四、启动类添加积木扫描目录 在报表微
Spring IoC有什么好处呢?
来源 https://www.zhihu.com/question/23277575?utm_id=0 Spring IoC有什么好处呢? 作者:Mingqi链接:https://www.zhihu.com/question/23277575/answer/169698662来源:知
SpringCloud http大文件断点续传上传
第一点:Java代码实现文件上传 FormFile file = manform.getFile(); String newfileName = null; String newpathname = null; String fileAddre = "/numUp"; try { InputStream
从2PC和容错共识算法讨论zookeeper中的Create请求
最近在读《数据密集型应用系统设计》,其中谈到了zookeeper对容错共识算法的应用。这让我想到之前参考的zookeeper学习资料中,误将容错共识算法写成了2PC(两阶段提交协议),所以准备以此文对共识算法和2PC做梳理和区分,也希望它能帮助像我一样对这两者有误解的同学。 1. 2PC(两阶段提交协议) 两阶段提交 (two-phase commit) 协议是一种用于实现 跨多个节点的
macbook m1 使用 brew 安装 nginx + 多版本 php
目录macbook m1 使用 brew 安装 nginx + 多版本 php安装 多个 php 版本1. 配置php 仓库2. 安装多版本 php3. 配置 php-pfm 的端口4. 启动 php-pfm 服务5. 切换 php-cli 命令行的版本安装 nginx1. 安装2. 配置站点和对应的 php 版本 macbook m1 使用 brew 安装 nginx + 多版本 php 在 F
zabbix5.0安装和部署笔记
zabbix版本5.0,操作系统版本Ubuntu 18.04 版本5.0,操作系统版本Ubuntu 18.041.安装mysql2.解压这个包tar -xvf mysql-5.7.30-1.el7.x86_64.rpm-bundle.tar3.rpm所有程序sudo apt install rpmrpm -Uvh *.rpm --nodeps --forceerror while l
Java学习笔记(十六)
1.什么是线程? 线程是指操作系统中的一种执行单元,它是进程中的一部分,可以看作是轻量级的进程。与进程不同的是,线程共享同一进程的地址空间和系统资源,如打开文件和信号处理等,但每个线程都有自己的程序计数器(PC)和栈,用于执行代码和存储局部变量等数据。 2。线程和进程有什么区别? 线程和进程都是操作系统中的执行单元,但它们有以下区别: (1)资源占用:进程是系统中分配资源的基本单位,每个进程都有自
js节流函数与防抖函数
防抖函数和节流函数都是为了解决JavaScript中频繁触发事件而导致的性能问题,但它们的实现方式和使用场景有所不同。 一、防抖函数 防抖函数的作用是在事件触发后一定时间内没有再次触发该事件时,才执行处理方法。简单来说,就是在最后一个事件被触发后,还要等待一段时间,如果这段时间内没有再次触发事件,才执行相应的处理方法。 实现防抖函数的关键点在于设置一个定时器,在事件被触发时先清除之前设置的定时器,
[转]Java如何对一个对象进行深拷贝
介绍 在Java语言里,当我们需要拷贝一个对象时,有两种类型的拷贝:浅拷贝与深拷贝。浅拷贝只是拷贝了源对象的地址,所以源对象的值发生变化时,拷贝对象的值也会发生变化。而深拷贝则是拷贝了源对象的所有值,所以即使源对象的值发生变化时,拷贝对象的值也不会改变。如下图描述: 了解了浅拷贝和深拷贝的区别之后,本篇博客将教大家几种深拷贝的方法。 拷贝对象 首先,我们定义一下需要拷贝的简单对象。 &n
记一次Nacos漏洞的复现 --> 身份认证绕过漏洞(QVD-2023-6271)
前记 端午前两天,遇到公司某客户的站点是Nacos,随后就是网上搜一波漏洞,搜到 QVD-2023-6271,故做以下记录 漏洞复现 漏洞描述 漏洞原理为开源服务管理平台 Nacos在默认配置下未对 token.secret.key 进行修改,导致远程攻击者可以绕过密钥认证进入后台造成系统受控等后果。 漏洞信息 漏洞类型:身份认证绕过漏洞等级:高危漏洞编号:NVDB-CNVDB-202367420
docker 安装 jenkins 以及安装插件出现的问题解决方式
使用docker-compose 然后出现这个问题 查了很多解决办法: 什么更改路径,去掉https都扯淡,就安装下面的这个插件妥妥的好用: 必须解决: 直接下载这个插件 引用博客 https://blog.csdn.net/shaojiayong/article/details/118488129
图文示例二叉树的编码实现过程
前言 在上一篇文章中,带大家一起学习认识了树型数据结构的定义和特点,并特别介绍了二叉树的遍历操作,分别有:前序遍历、中序遍历、后序遍历。前中后的核心区别是根据根节点在遍历过程中的位置决定的,即:根节点在最前面的称之为中序遍历,根节点在中间的称之为中序遍历,根节点在最后的称之为后序遍历。需要大家掌握根据树形结构写出对应的遍历序列结果的能力。 全文大约【3700】 字,不说废话,只讲可以让你学到技术
2023 年 macbook m1 使用 brew 安装 nginx 遇到的坑
2023 年 macbook m1 使用 brew 安装 nginx 遇到的坑 1. brew 安装后默认端口是 8080 因为非 root 无法启动 80 端口,所以 brew 中的 nginx 默认端口是 8080 2. brew services start nginx 在使用 brew install nginx 安装后的 nginx,然后使用 brew services start ng
1. SpringMVC简介
SpringMVC 是隶属于 Spring 框架的一部分,主要是用来进行 Web 开发,是对 Servlet 进行了封装。 对于 SpringMVC 主要学习如下内容: SpringMVC 简介 请求与响应 REST 风格 SSM 整合(注解版) 拦截器 SpringMVC 是处于 Web 层的框架,所以其主要的作用就是用来接收前端发过来的请求和数据然后经过处理并将处理的结果响应给前端,
java反射之-InvocationHandler使用
InvocationHandler 是 Java 中的一个接口,是 Java 反射 API 的一部分。与 Proxy 类一起使用,用于动态创建接口的代理实例。 在 Java 中使用 Proxy 类创建代理对象时,需要提供一个 InvocationHandler 实现来定义代理对象的行为。InvocationHandler 接口只有一个方法,即 invoke() 方法,它负责处理对代理对象的方法调用
Hibernate持久化时,持久化enum属性,带字符串
Hibernate持久化时,持久化enum属性,带字符串 如果不带字符串,在从数据库到对象的转换中会转换失败,且在数据库存放的内容为其在enum中的下标(0,1,2) 首先定义一个enum类,总共有四个状态 持久化的字段: 然后加上注解,持久化字符串 enumType可选的有
设计模式之适配器模式--新能源的发展
前言 本文主要讲述适配器模式,文中使用通俗易懂的案例,使你更好的学习本章知识点并理解原理,做到有道无术。 一.什么是适配器模式 适配器模式是23种设计模式中结构型模式的一种,将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 二.生活中的适配器模式 1.太阳能 太阳能、风能、水能这类自然能是大自然赐予我们的礼物。比如说太阳能板就能够把
巧用AJAX的BEFORESEND 提高用户体验,避免重复数据
jQuery是经常使用的一个开源js框架,其中的$.ajax请求中有一个beforeSend方法,用于在向服务器发送请求前执行一些动作。具体可参考jQuery官方文档:http://api.jquery.com/Ajax_Events/ $.ajax({ beforeSend: function(){ // Handle the beforeSend event },
h2database BTree 设计实现与查询优化思考
h2database 是使用Java 编写的开源数据库,兼容ANSI-SQL89。 即实现了常规基于 BTree 的存储引擎,又支持日志结构存储引擎。功能非常丰富(死锁检测机制、事务特性、MVCC、运维工具等),数据库学习非常好的案例。 本文理论结合实践,通过BTree 索引的设计和实现,更好的理解数据库索引相关的知识点以及优化原理。 BTree 实现类 h2database 默认使用的 MV
死锁面试题(什么是死锁,产生死锁的原因及必要条件)
什么是死锁? 所谓死锁,是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。 因此我们举个例子来描述,如果此时有一个线程A,按照先锁a再获得锁b的的顺序获得锁,而在此同时又有另外一个线程B,按照先锁b再锁a的顺序获得锁。如下图所示: 产生死锁的原因? 可归结为如下两点: a. 竞争资源 系统中的资源可以分
java实际开发中接口文档是自己写还是架构师写?
软件工程的两种方法下,由后端决定接口都是不对的。 第一种软件工程的方法:瀑布模型,自顶而下,逐步细化。 接口会变,但是接口要提前设计。接口不是后端开发完成之后才“自然”产生的,那不是自然,而是无序。 前后端分离的开发,应该是面向“API”的开发。API的设计并不能由前端或后端一方决定或主导,而是需要一个前后端都熟悉的人,这个人叫架构师。 随着最近几年前端技术的高速发展和浏览器性能的提升,前端能够实
JavaScript program to check if a given year is leap year Javascript判断是否是闰年
A year is leap year if following conditions are satisfied: Year is multiple of 400. Year is multiple of 4 and not multiple of 100. Approach: Get the value of input field by using document.ge
教你学会使用Angular 应用里的 export declare const X Y
摘要:export declare const X: Y语法用于在Angular应用程序中声明一个具有指定类型的常量变量,并将其导出,以便在其他文件中使用。 本文分享自华为云社区《关于 Angular 应用里的 export declare const X Y 的用法》,作者:Jerry Wang。 最近做 Spartacus 的 Angular 开发时,遇到下面这种 TypeScript 代码:
fabricjs实现虚线流动动画效果
要在 Fabric.js 中实现虚线流动的动画效果,你可以使用 Fabric.js 的动画功能来改变虚线的位置或属性。 以下是一个示例代码,展示了如何在 Fabric.js 中实现虚线流动的动画效果: // 创建画布 var canvas = new fabric.Canvas('canvas'); // 创建虚线对象 var dashedLine = new fabric.Line([50,