自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Java实战】被嵌套事务的一次折磨,让我刻骨铭心

好的,以上就是这次嵌套事务传播机制的卖惨,如果你觉得我们很惨,码友们动动小手指,一箭三连!助力我冲击中国码王!

2025-04-07 22:52:27 843

原创 [实战经验]Mybatis的Mapper中方法入参什么时候加@Param?

解释: 在这种情况下,入参是一个对象(User类),而且在XML中可以直接使用对象的属性名(id和name)来引用对象的属性,无需使用@Param注解,无需使用user.id,user.name的方法。当我们使用Mybatis的时候,mapper接口中方法里面的参数可能有单个,有多个,有对象,有基本类型,有集合,那什么时候需要加@Param注解,什么时候又不用加呢?解释: 当方法的入参是两个对象类型时,不需要使用 @Param 注解,可以直接在 XML 中使用对象的属性名引用对象属性。

2024-04-01 23:20:59 717

原创 [实战经验]Mybatis的mapper.xml参数#{para}与#{para, jdbcType=BIGINT}有什么区别?

Mybatis的mapper.xml参数#{para}与#{para, jdbcType=BIGINT}有什么区别?

2024-04-01 22:30:59 540

原创 [实战经验]在Java中如何估算对象集合的内存占用空间

String对象在java中为不可变对象,底层实现为char[],其内存占用计算通常为对象头(8字节)+int字段(4字节,记录字符数组长度)+字符数组长度(假设平均为20个字符,一个char是2个字节,所以为40字节)+对其填充(4字节)=56字节。场景:现在需要从三方同步组织信息到我方的平台,准备在内存中构建这颗组织树,使用HashMap存储,那应该怎么取估算这棵树的内存占用大小呢?思路:总的内存占用大小=每个组织节点的内存占用大小*组织节点个数。计算整棵树的内存占用大小。

2024-03-31 14:25:48 440

原创 【SQL】对表中的记录通过时间维度分组,统计出每组的记录条数

测试数据准备如下,50条DML语句,其中order_date分布在2023年1月到12月之间。有了以上测试数据,现在我们的需求:订单表在每月为单位的订单数、每天为单位的订单数。场景:一般用作数据统计,比如统计一个淘宝用户在年、月、日的维度上的订单数。按照这个格式化的日期进行分组,并使用COUNT(*)来统计每组的记录条数。准备一张订单表order,有一些常规属性,比如创建时间,订单号。对sql的解读:这里的关键是使用。

2024-01-09 23:42:05 1672 1

原创 【stream流】集合中每个对象的某属性值进行求和

在我们这个例子中,我们首先使用Arrays.stream将字符串数组转换为流,然后使用mapToInt将这个函数Product::getMoney的结果转换为对应的整数。最后,我们使用sum方法计算所有整数的和。这个例子中,Product::getMoney是一个函数,它将获取对象中的money值。这个函数会被应用到流中的每个元素,然后将结果放入一个新的IntStream中。综合起来,stream().mapToInt的目的是将一个集合(或流)中的元素映射为int类型,并返回一个IntStream。

2024-01-09 22:38:14 3762

原创 MySQL如何优雅处理批量新增和更新?ON DUPLICATE KEY UPDATE用它!

在批量新增员工信息的时候,id自增,工号是唯一的,不允许重复。再举一个例子,如果我们新增一个部门属性department_number,然后唯一索引变成唯一组合索引(department_number, work_number),此时sql应该变成什么样了呢?在该示例中,我们省略了 id 字段,因为它是自增的,数据库会自动为新插入的记录生成一个唯一的 id 值。在这个示例中,我们省略了 id 字段,因为它是自增的,数据库会自动为新插入的记录生成一个唯一的 id 值。而且是批量操作,比较繁琐,容易出错。

2023-09-28 23:10:09 1347

原创 [设计模式] 抽象工厂模式简易案例

这个示例演示了抽象工厂模式的用法,根据不同的工厂对象创建了不同风格的按钮和窗口组件,而不需要关心它们的具体实现类。这种方式有助于创建一组相关或依赖的对象,同时保持代码的灵活性和可维护性。痛点:当需要创建一组相关对象,例如操作系统的不同界面组件(按钮、文本框等)时,抽象工厂模式非常有用。以下是一个简单的抽象工厂模式的 Java 示例,假设你要创建不同类型的按钮和窗口组件。定义:提供一个接口来创建一系列相关或依赖对象,而无需指定其具体类。

2023-09-06 22:10:55 779

原创 [设计模式] 简单工厂模式简易案例

这个示例演示了一个简单的工厂模式,根据输入的类型参数创建不同的形状对象。工厂模式的主要好处是将对象的创建和使用分离,使代码更易于扩展和维护。如果需要添加新的形状类型,只需修改工厂类而不必修改使用该形状的代码。解决的痛点:当一个类不知道它必须创建哪个对象时,工厂模式可以用来创建特定类型的对象。以下是一个简单的工厂模式的 Java 示例,假设你要创建不同类型的形状对象。工厂模式是一种创建型设计模式,用于根据不同条件或参数创建不同类型的对象。

2023-09-06 22:03:10 824

原创 Java程序中常用的设计模式有哪些和该种设计模式解决的痛点

定义:定义一系列算法,将它们封装成独立的对象,并使它们可以互换使用,使算法的变化独立于使用它的客户端。设计模式是大量程序员智慧的结晶,是优秀的代码范式,是以前那些大佬程序员的编程经验总结,非常值得学习。痛点:当需要在运行时选择算法或者避免使用大量的条件语句来选择不同的算法时,策略模式有用。痛点:当需要定义一个算法的框架,但允许子类提供某些步骤的实现时,模板方法模式有用。定义:将一个复杂对象的构建过程与其表示分离,使同样的构建过程可以创建不同的表示。定义:定义一个创建对象的接口,但让子类决定实例化哪个类。

2023-09-05 23:45:24 940

原创 Java中double类型的数据,如何保留小数后两位

请注意,这些方法并不会改变 number 变量本身的值,而是返回一个格式化后的字符串。如果需要将格式化后的字符串转换回 double 类型的数字,可以使用 Double.parseDouble 方法或者 Double.valueOf 方法进行转换。在 Java 中,你可以使用 DecimalFormat 类或者 String.format 方法来将 double 类型的数字保留指定位数的小数。无论使用哪种方法,都会将 number 变量的值格式化为保留两位小数的字符串。

2023-09-05 23:33:48 2388

原创 如何利用stream流规避在循环中查库的危险操作?

使用 Java 8 中的流(Stream)可以帮助你规避在循环中进行数据库查询等危险操作,提高代码的可读性和性能。总之,使用流可以帮助你更优雅地进行数据库查询,减少循环中的危险操作,并提高代码的可读性和性能。根据具体的需求和场景,选择适合的流操作来优化你的查询操作。在CodeReview的时候,这个是作为初级程序员很容易犯的编程问题。

2023-09-05 23:30:08 559

原创 Java项目中遇到uv坐标如何转换成经纬度坐标

将UV坐标(通常指平面坐标,如二维地图坐标)转换为经纬度坐标(地理坐标)通常需要知道一个参考点的经纬度坐标,以及两者之间的比例关系。这是因为UV坐标通常用于在地图上绘制图形或标记点,而经纬度坐标用于表示地球上的位置。在这个示例中,我们假设UV坐标的范围是从0到1,然后使用已知的参考点的经纬度坐标和比例关系来计算目标点的经纬度坐标。请注意,这个示例中的比例关系和单位是随意设置的,实际上应该根据你的具体需求来设置。

2023-09-05 23:24:38 602

原创 JNA的内存对齐方式,简单案例介绍

Java本身并没有提供直接的内存对齐控制机制,因为Java是一种跨平台的语言,内存对齐通常由底层操作系统和硬件决定。如果你对内存对齐有特殊需求,通常是因为你需要与一个特定的本地库进行交互,而该库要求某种特定的内存对齐方式,你可以使用JNA的Structure类来控制内存对齐方式。在C/C++中,内存对齐通常是为了性能和内存访问的原因,确保数据结构的起始地址是某个特定值的倍数。在JNA中,你通常不需要担心内存对齐的问题,因为JNA会自动处理与本地库的交互。在大多数情况下,你不需要关心内存对齐。

2023-09-05 23:22:49 426

原创 线上调试神器Arthas的watch命令简易教程

watch 命令是阿里开源的 Java 诊断工具 Arthas 提供的一个功能,用于在运行时观察某个方法的参数和返回值,甚至可以观察方法的异常情况。通过 watch 命令,你可以实时监控指定方法的执行情况,从而帮助你诊断和分析问题。当你看到这篇文章的时候,我们默认你已经对Arthas有一定的了解和基础的使用。该文章只是对watch命令做一个简单的介绍以及附上案例。这样,你就可以在方法执行时观察参数和返回值,帮助你分析问题和调试代码。

2023-09-05 23:18:19 3903

原创 为什么要尽量规避循环里面查库?

为什么要尽量规避循环里面查库?

2023-09-05 23:05:18 2048

原创 MySQL编写建表语句,如何优雅处理创建时间与更新时间

在这个例子中,createTime 使用 CURRENT_TIMESTAMP 默认值,这将在插入数据时自动设置为当前时间戳。而 updateTime 使用 ON UPDATE CURRENT_TIMESTAMP 触发器,这将在更新数据时自动更新为当前时间戳。在 MySQL 中,可以使用 TIMESTAMP 或者 DATETIME 数据类型来存储日期和时间信息,并结合默认值和触发器来实现自动更新 createTime 和 updateTime 字段。

2023-08-30 22:49:37 1957 1

原创 JAVA项目如何调用C++库?JNA简易教程

以下是一个简单的例子,假设你有一个用C写的库mylibrary.dll(这里注意windows版本是dll文件,Linux系统是so文件),里面有一个函数 int add(int a, int b) 用来相加两个整数。这个简易教程和工作是实际使用起来,就跟小学算术和考研数学一样,坑得一匹。用这个东西就得和C++的同事对接,让我体会到了兰德里的折磨。想象一下你在玩积木,JNA就是帮助你把Java和C/C++的积木连接起来的工具。当你在写Java代码时,有时候需要调用一些用C或C++编写的库。

2023-08-30 22:42:13 892

原创 springboot项目,使用JNA框架调用C++库无法捕获异常的解决思路

使用 JNA(Java Native Access)框架调用 C++ 库时,如果出现问题导致进程直接结束而无法捕获异常,可能是因为底层库抛出了 C++ 异常,而 Java 无法直接捕获 C++ 异常。写在前面:这个东西真的坑,工作上遇到的和JNA项目的入门案例差别就像是二重积分与小学数学之间的差距,折磨!

2023-08-30 22:32:22 801

原创 FastJson:JSONObject如何转JSONArray

JSONObject如何转JSONArray

2023-08-30 22:25:21 1946

原创 List中的元素类型为Map,如何更新map中的内容

List中元素类型为map,如何更新map中的内容

2023-08-30 22:16:37 1765

原创 常用设计模式学习-构造者模式

常用设计模式学习-构造者模式

2022-12-15 22:40:03 131

原创 【Java】 打印图案

【Java】打印图案问题代码输出总结问题使用*打印一些常规的图案。比如,正方形、正三角、倒三角、等腰三角形、菱形。代码import java.util.Scanner;/** * 打印图案 */public class Main52 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt()

2021-11-03 17:15:30 3053

原创 [AMRNet] Adaptive Mixture Regression Network 复现过程记录

目录一、开发环境二、论文代码三、导入项目四、数据准备五、训练模型六、测试模型tips一、开发环境windows10+Anaconda3+Python3.6+CUDA10.0+Pytorch1.5+Pycharm二、论文代码AMRNet代码链接三、导入项目1、通过git下载或者zip网页下载,二选一2、导入项目至pycharm四、数据准备1、数据集从官网上下载数据集,并解压至目录 ./ProcessedDataShanghaiTech下载链接UCF-QNRF下载链接UCF_CC_

2021-03-17 21:25:53 2943 25

原创 AttributeError: module ‘torch‘ has no attribute ‘outer‘ 解决方法

结论:outer替换成ger即可pytorch1.7.0才出现的torch.outer与torch.ger功能等价都是计算向量间外积的方法如果你和我一样,使用的环境低于1.7.0。比如我的pytorch1.5,直接把outer替换成ger即可。ok各位,如果你觉得这篇笔记对你有所帮助求赞求收藏求评论求转发,别忘了点一个大大的关注,各位的支持就是我最大的动力,再见!邮箱:734140820@qq.com...

2021-03-03 15:54:39 2393 1

原创 离线安装python第三方库[.tar.gz文件/whl文件]

python三方库下载的网址python三方库下载步骤:通过库名搜索,比如搜索 opencv-python。点击第一个搜索条目,进入详情界面,可以查看历史版本,或者点击进入下载页面进入下载页面,根据自己系统平台和python版本进行选择下载whl文件在anaconda下某个需要安装该库的环境中从命令行界面进入上述whl文件的目录使用命令安装库:pip install xxxxx.whl还有一种情况,就是一些三方库没有whl文件,只有.tar.gz文件;或者没有你使用平台和python

2020-12-22 16:16:52 7681

原创 [CSRNet] CSRNet-pytorch 复现过程记录

目录一、开发环境二、论文代码三、操作步骤导入项目数据准备训练模型一、开发环境windows10+Anaconda3+Python3.6+CUDA10.0+Pytorch1.0+Pycharm二、论文代码CSRNet代码链接三、操作步骤导入项目1、通过git下载或者zip网页下载,二选一2、导入项目至pycharm数据准备1、数据集ShanghaiTech百度网盘:https://pan.baidu.com/s/1cC4wkHAWfJ15VKwG2qjJ6A提取码:i0xa2、

2020-12-22 10:44:58 9290 79

原创 [CAN] Context-Aware Crowd Counting 复现过程记录

目录一,开发环境二,论文代码三,操作步骤导入项目数据准备训练模型模型预测结果tips:一,开发环境windows10+Anaconda3+Python3.7+CUDA10.2+Pytorch1.5+Pycharm二,论文代码论文链接代码链接三,操作步骤导入项目1.通过git下载或者zip网页下载,二选一2.导入pycharm的目录结构数据准备1.数据集该demo使用的是ShanghaiTech Part B数据集百度网盘: http://pan.baidu.com/s/1nuA

2020-08-05 15:17:52 9147 49

原创 [MCNN] Crowd Counting 人群计数 复现过程记录

一、开发环境windows10Anaconda3-2020.02 下载链接,注意安装时添加PATH路径python3.7 (Anaconda自带有,可以不单独安装)CUDA10.2 下载链接,注意选择local版本Pytorch1.5 官网获取下载命令行(Stable(1.5),Windows,Conda,Python,10.2)注意换成清华源Pycharm 下载链接,注意选择community版本Matlab2017a 下载安装教程链接二、论文代码Github论文代码链接三、操

2020-05-22 11:59:10 8880 36

空空如也

空空如也

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

TA关注的人

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