自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Qt 项目Mingw编译器转换为VS编译器时的错误及解决办法

在.pro文件中添加上述代码之后不会报格式问题了,但是会报报错C1189 #error: "No Target Architecture"的问题,对此解决方案是在.pro文件上加上_AMD64_宏定义,如下图所示。在 .pro 文件中添加以下代码(我添加在了 CONFIG 和 SOURCES之间有用,但具体位置可能不唯一,可以自己试一下,有用即可)目录下是否有qsqlmysql.dll和qsqlmysqld.dll,如果没有,就说明Qt没有相应的mysql驱动。第一种:无MySQL驱动。

2023-07-26 15:19:56 960

原创 【Qt】QCustomPlot组件跟随鼠标显示xy轴坐标位置

​自定义一个继承QCustomPlot类的实现类,重写mouseMove虚函数实现,从而获取鼠标位置,然后计算出点的坐标值,再利用QToolTip显示点坐标。

2023-02-01 16:18:13 2754 2

原创 【QT】error: LNK2019: 无法解析的外部符号 “__declspec(dllimport) public:

QT:error: LNK2019: 无法解析的外部符号 “__declspec(dllimport) public:错误原因以及解决方案

2022-12-13 14:02:10 5150

原创 【Qt】解决QScrollBar调用setValue()方法会自动发送valueChanged问题

调用Qt组件QScrollBar的setValue()方法时,程序会自动执行valueChanged()信号的槽函数,如何屏蔽掉这一事件呢?

2022-11-29 15:41:17 1354

原创 VTK & QT QVTKWidget自定义鼠标和键盘交互事件

VTK & QT 实现QVTKWidget自定义鼠标和键盘交互事件

2022-11-28 14:16:37 3094 1

原创 HTTP & RPC接口参数校验

一、 HTTP/HTTPS接口对于这种前端请求,现在参数校验的方法极其多,比较省事的就是使用spring-boot的@Validated注解来校验,如果数据异常则会统一抛出异常,方便异常中心统一处理。比如我们判断一个输入参数是否合法,可以用如下方式。1. 在controller上声明需要对数据进行校验@PostMapping("/addDelivery") public MlcBaseResult<Boolean> addDelivery(@RequestBody @Val

2021-09-09 21:22:01 1242

原创 Java在内存中做String类型字段的模糊查询/模糊匹配

方法一:String的contains方法这个是String自带的子串匹配方法,其实其内里实现就是方法三,下面详细讲。方法二:正则表达式几个方法的定义与使用Pattern.compile():Pattern构造器是私有的,不能通过new创建Pattern对象,可以通过Pattern调用静态方法compile返回Pattern实例,其内部实现是new Pattern(regex, 0)。Pattern.complie(String regex,int flag):它接收一个标记参数,调整匹

2021-09-09 21:18:09 10726

原创 orcle数据库order by 按字符串NVARCHAR2类型字段排序时顺序错误

唉,真得是,有事没事地总会遇到点奇奇怪怪的bug不多说了,看图REGISTRATION_ID字段是NVARCHAR2类型的,当我以此进行降序排序时,发现序列似乎是按左对齐排的,从第一位开始比较,第一位大的排在前面,如果第一位相同则继续比较第二位,上面这种情况,“34093”虽然数值比较小,但是首位数字大,所以排在的前面。这是orcle内部排序规则的问题,mysql也同样如此。如果想要按数值大小进行排序,就需要先将其转化为数值类型。1. 使用To_Number转化函数。2. 直接.

2020-12-07 18:58:51 418

原创 救命sql语句----navicat for oracle 误操作恢复语句

今天在公司因为写错了一个update语句,把基础表的数条语句的多个字段改掉了,瞬间慌到不行,还好找到了orcle的闪回功能!!!oracle 有一个闪回功能查询该时间段 这个表的状态select * from 表名 as of timestamp to_timestamp('2019-05-24 13:00:00', 'yyyy-mm-dd hh24:mi:ss');开启闪回alter table 表名 enable row movement;把表的状态闪回到这个时间段flashb..

2020-12-02 14:16:08 1079 1

原创 css实现斜线效果以及vue自带插件打印背景色

在开发过程中遇到了一个很奇葩的问题,问题要求总结有如下三点:页面分三部分,上半部分高度不确定,下半部分高度确定,中间部分需要填充除了上半部分和下半部分的区域。填充方式为斜线。该页面需要打印出来。这三个要求随便一个单独实现都不难,难得是全部满足。首先,中间部分要填充剩下的区域,我采用弹性盒模型去实现。<div style="height:180mm;display:flex:flex-direction:column"> <div class="top-div" style

2020-11-10 18:57:17 1100

原创 修改antd vue组件a-table的默认样式

antd vue的组件固然简单好用,但是其默认样式有时是并不符合我们的需求的,我在开发过程中遇到一个问题:a-table表格padding过宽如图所示而我需要将这个表格进行打印,因此需要在保证样式美观的同时最大限度地利用纸张,所以我想把padding调小一点,这里就用到了vue的样式穿透。 <a-table class="AStockOutDetailTable" style="margin-top: -5px;"

2020-11-10 11:40:21 7069 2

原创 springboot 手动回滚事务

关于springboot手动回滚事务有这样一个应用场景:SpringBoot事务注解@Transactional 事物回滚、手动回滚事物上面一篇文章是介绍了利用手动回滚事务解决“如果异常被try{}catch{}了,事务就不回滚了”这一问题,而我在项目开发过程中发现了它的另一应用场景,如下是在serviceImpl中写的一个方法 @Override @Transactional public Result saveMain(SingleOutpatientPrescription sing

2020-10-14 21:06:53 1104 2

原创 Java关于checked以及Unchecked异常的详细理解

挖个坑,周末写。

2020-10-12 09:35:23 421 1

原创 关于BigDecimal精度的几个讲解比较详细的帖子

【超详细】解释BigDecimal精度的坑:https://blog.csdn.net/gege87417376/article/details/79550749源码级讲解BigDecimal源码解析:https://blog.csdn.net/yinghuananhai/article/details/81260327BigDecimal源码分析:https://blog.csdn.net/en_joker/article/details/86589691...

2020-09-28 13:39:54 280

原创 LeetCode169.多数元素、229.求众数II、JZ28出现次数超过一半的数字

JZ28.出现次数超过一半的数字题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。LeetCode169.多数元素题目描述给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [3,2,3]输出:

2020-09-13 19:31:45 290

原创 关于二进制存储以及位运算符的一些Tips

二进制存储数字在计算机当中是以二进制的形式来进行存储的。比如说,我们都知道,int型的取值范围为-2147483648到+2147483647,即 -231~(231-1),为什么呢?这是因为,计算机中规定int型的存储空间为4个字节,也就是32位,考虑到数字有正负之分,所以取最高位作为符号位,0表示正数,1表示负数,剩下31位为数值位。而正数和负数在数值位上的表示也有不同。正数在计算机中是以原码的形式存储的,即最小正整数为1(0-000 0000 0000 0000 0000 0000 0000

2020-08-29 17:16:41 474

原创 JZ11:二进制中1的个数

题目描述输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。解题思路搬运牛客网题目评论里一个巨牛的解题思路:https://www.nowcoder.com/questionTerminal/8ee967e43c2c4ec193b040ea7fbb10b8?f=discussion如果一个整数不为0,那么这个整数至少有一位是1。如果我们把这个整数减1,那么原来处在整数最右边的1就会变为0,原来在1后面的所有的0都会变成1(如果最右边的1后面还有0的话)。其余所有位将不会

2020-08-28 08:46:45 179

原创 解决JS加减乘除四则运算结果不准确以及精度丢失的问题

问题描述在做公司库存数量的逻辑时踩到的大坑,如果对于浮点数,直接在JavaScript中进行加减乘除四则运算会出现很大的误差。问题产生的原因在于,计算机中是将十进制的数据转化为二进制来进行计算的,而对于浮点型的数据,转化成二进制之后可能会变成一个无限循环的数字,而计算机中是不允许无限循环的存在的,那就要做截断,而截断后的数据运算之后再转成十进制就可能会产生极大的误差。其实并不是只JS存在这种问题,Java、C++也都如此,只不过他们内部都有封装好的方法来解决这个问题。JS是一门弱语言,没有做类似的操

2020-08-14 17:27:56 2495

原创 Java虚拟机的垃圾回收器介绍

一、GC分类与性能指标二、不同的垃圾回收器概述三、Serial回收器:串行回收四、ParNew回收器:并行回收五、Parallel回收器:吞吐量优先六、CMS回收器:低延迟七、G1回收器:区域化分代式八、垃圾回收器总结九、GC日志分析十、垃圾回收器的新发展...

2020-08-14 08:39:08 446

原创 JZ48:不用加减乘除做加法

不用加减乘除做加法剑指Offer上遇到的一个题,还蛮有意思的。算法描述:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。解题思路:看到不用四则运算符号的时候第一反应就是将其转化为二进制的位运算。在计算机中,整数n是用补码进行存储的【补码:如果n为正数,则原码=反码=补码,如果n为负数,则补码=反码+1】。s=a+b其实就是a和b的补码无进位和+进位的结果,其中,无进位和为a+b补码的异或运算结果,进位为两数补码的按位与运算结果左移一位。举例说明:对于2(010)+ 4

2020-08-07 08:31:35 362

原创 垃圾回收相关概念

一、System.gc()的理解在默认情况下,通过System.gc()或者Runtime.getRuntime().gc()的调用(其实System.gc()的底层实现方法就是Runtime.getRuntime().gc()),会显示触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。然而System.gc()调用附带一个免责声明,无法保证对垃圾收集器的调用。JVM实现者可以通过System.gc()调用来决定JVM的GC行为。而一般情况下,垃圾回收应该是自动进行

2020-07-23 20:48:57 477

原创 JVM垃圾回收的相关算法

大厂面试题什么是垃圾?垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。

2020-07-20 19:16:13 432

原创 Redis高级——删除策略

Redis中的数据特征Redis是一种内存级数据库,所有数据均存放在内存中,内存中的数据可以通过TTL指令获取其状态 XX : 具有时效性的数据 -1 : 永久有效的数据 -2 : 已经过期的数据(过期数据并不是过了期就立马被删除了,而是等待合适的时机被删除) 或 被删除的数据 或 未定义的数据数据删除策略数据删除策略定时删除 惰性删除 定期删除时效性数据的存储结构注意,setex、setnx一定不要混了,其用法和区别可参考我的另一篇文章https://blog.csdn.

2020-07-03 13:00:57 208

原创 Redis中set、setex、setnx的用法和区别

SET key value含义: 将字符串值 value 关联到 key 。 如果 key 已经持有其他值, SET 就覆写旧值,无视类型。SETEX key seconds value该命令相当于将下面两行操作合并为一个原子操作SET key valueEXPIRE key seconds # 设置生存时间含义(setex = set expire): 将值 value 关联到 key ,并将 key 的生存时间...

2020-07-03 10:07:05 31994 1

原创 Redis事务、事务锁

事务一旦成功所有的成功,一个失败,所有一些列连续动作都失败事务的基本操作开启事务multi作用 设定事务的开启位置,此指令执行后,后续的所有指令均加入到事务中 执行事务exec作用 设定事务的结束位置,同时执行事务。与multi成对出现,成对使用注意:加入事务的命令暂时到任务队列中,并没有立即执行,只有执行exec命令才开始执行事务定义过程中发现问题,怎么办?取消事务discard作用 终止当前事务定义,发生在multi之后,exec之前.

2020-07-03 09:29:02 181

原创 StringTable

String的基本特性String:字符串,使用一对""引起来表示String s1 = "Juno99"; //字面量的定义方式String s2 = new String("Juno99");String声明为final,是不可被继承的 String实现了Serializable接口,表示字符串是支持序列化的;实现了Comparable接口,表示String可以比较大小。 String在jdk8及以前内部定义了final char[] value用于存储字符串数据。jdk9时改为by

2020-07-01 19:07:01 577

原创 Redis持久化(RDB & AOF)

持久化简介什么是持久化利用永久性存储介质将数据进行保存,在特定的事件将保存的数据进行恢复的工作机制称为持久化为什么要持久化防止数据的意外丢失,确保数据安全性持久化的过程保存什么将当前数据状态进行保存,快照形式,存储数据结果,存储而是简单,关注点在数据 -----》RDB 将数据的操作过程进行保存,日志形式,存储操作过程,存储格式复杂,关注点在数据的操作过程 ------》AOFRDBRDB启动方式谁,什么事件,干什么事情?谁:redis操作者(用户) 什么时间.

2020-07-01 10:30:18 327

原创 Jedis

Jedis是Redis官方推荐的Java链接工具使用前导入,下面的测试建议也导入测试的Maven依赖包 <!-- jedis的包--> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <versio...

2020-06-27 22:10:02 172

原创 Redis通用命令

Key通用命令特征key是一个字符串,通过key获取redis中保存的数据key应该设计那些操作?对于key自身状态的相关操作,例如:删除,判定存在,获取类型等 对于key有效性控制相关操作,例如:有效期设定,判定是否有效,有效状态的切换等 对于key快速查询操作,例如:按指定策略查询keykey基本操作删除指定keydel key获取key是否存在exists key获取key的类型type keykey扩展操作(时效性控制)为指定key设置有效.

2020-06-26 10:55:55 193

原创 执行引擎的作用及工作过程

执行引擎概述执行引擎是Java虚拟机核心的组成部分之一。 “虚拟机”是一个相对于“物理机”的概念,这两种极其都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。 JVM的主要任务是负责装载字节码到其内部,但字节码并不能够直接运行在操作系统之上,因为字节码指令并非等价于本地机器指令,它内部包含的仅仅只是一些能够被JVM所识别

2020-06-22 16:57:29 1257

原创 Redis数据类型

数据存储类型介绍业务数据的特殊性作为缓存使用原始业务功能设计 秒杀 618活动 双十一活动 排队购票 运营平台监控到的突发高频访问数据 突发市政要闻,被强势关注围观 高频、复杂的统计数据 在线人数 投票排行榜附加功能系统功能优化或升级单服务器升级集群 Session管理 Token管理Redis 数据类型(5种常用)可以把这五种数据类型结合Java中的相关数据结构来理解string --> String hash --> Hashmap l

2020-06-20 11:04:25 320

原创 Redis入门以及基本操作命令

基本概述概念:Redis(REmote DIctinary Server)是用C语言开发的一个开源的高性能键值对(key-value)数据库特征:数据间没有必然的关联关系 内部采用单线程机制进行工作 高性能。官方提供测试数据,50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s。 多数据类型支持:string(字符串类型)、list(列表类型)、hash(散列类型)、set(集合类型)、sorted_set(有序集合类型) 持久化支持。可以进行数据灾难

2020-06-19 11:14:37 220

原创 深入理解Java虚拟机之直接内存

直接内存概述不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。 直接内存是Java堆外的,直接向系统申请的内存空间。 来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存。 通常,访问直接内存的速度要优于Java堆。即读写性能高。因此出于性能考虑,读写频繁的场合可能会考虑使用直接内存。Java的NIO库允许Java程序使用直接内存,用于数据缓冲区。如何去理解这一点呢?可以看下面两张图,既解释为什么访问直接内存的速度要优于Java堆,也解释了I

2020-06-18 16:20:34 588

原创 对象的实例化内存布局与访问定位

对象的实例化创建对象的方式:从创建对象的执行步骤来分析 对象的创建过程:判断对象对应的类是否加载、链接、初始化。虚拟机遇到一条new指令,首先去检查这个指令的参数能付在Metaspace的常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化(即判断类元信息是否存在)。如果没有,那么在双亲委派模式下,使用当前类加载器以ClassLoader+包名+类名为key进行查找对应的.class文件。如果没有找到文件,则抛出ClassNotFoundExcepti

2020-06-18 09:28:39 416

原创 深入理解Java虚拟机之方法区

栈、堆、方法区的交互关系方法区就是元空间,文章中可能会交替使用,不做赘述。从线程共享与否的角度来区分,如下图所示。从内存结构上来看的话,如下图所示。以一句最常用的代码——声明一个对象举例来看Person这个对象类型,也就是整个类的结构——.class文件是放在方法区的,而新new出来的这个对象是放在堆空间当中的,这一行代码如果是在方法中写的,那这个person就是一个引用类型的局部变量,是放在虚拟机栈中该方法的栈帧当中的。方法区在哪里《Java虚拟机规范》中明确说明.

2020-06-17 08:08:36 575

原创 如何解决OOM(OutOfMemoryError)

1.要解决OOM异常或者heap space的异常,一般的手段是首先通过内存映像分析工具(比如Java自带的VisualVM)对dump出来的堆转储快照进行分析,重点是确认内存中的对象是否是必要的,也就是要先分清楚到底是出现了内存泄露(Memory Leak)还是内存溢出(Memory Overflow)。2.如果是内存泄漏,可进一步通过工具查看泄漏对象到GC Roots的引用链。于是就能找到泄露对象是通过怎样的路径与GC Roots相关联并导致垃圾收集器无法自动回收他们的,掌握了泄漏对象的类型信息,以

2020-06-12 18:24:08 463

原创 Java虚拟机之堆空间

核心概述一个JVM实例值存在一个堆内存,堆也是Java内存管理的核心区域。Java堆区在JVM启动的时候就被创建了,其空间大小也就确定了,是JVM管理的最大一块内存空间。《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的。所有的线程共享Java堆,在这里还可以划分线程私有的缓冲区(TLAB,Thread Local Allocation Buffer)。《Java虚拟机规范》中对Java堆的描述是:所有的对象实例以及数组都应当在运行时分配在堆上(

2020-06-10 16:48:42 1397

原创 深入理解Java虚拟机之虚拟机栈

出现背景由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。内存中的栈和堆栈是运行时的单位,堆是存储的单位。即,栈解决程序的运行问题,即程序如何执行,或者说如何处理数据。堆解决的是数据存储的问题,即数据怎么放,放在哪里。Java虚拟机栈是什么?Java虚拟机栈,早期也叫Java栈,每个线程在创建是都会创建一个虚拟机栈,其内部保存一个个的栈

2020-06-03 11:23:35 588

原创 JVM虚拟机栈中关于方法的调用

在JVM中,将符号引用转换为调用方法的直接引用与方法的绑定机制有关。静态链接与动态链接静态链接:当一个字节码文件被装载进JVM内部时,如果被调用的目标方法在编译期可知,且运行期保持不变时,这种情况下将调用方法的符号引用转换为直接引用的过程称之为静态链接。动态链接:如果被调用的方法在编译期无法被确定下来,也就是说,只能够在程序运行期将调用方法的符号引用转换为直接引用,由于这种引用转换过程具备动态性,因此也就被称之为动态链接。对应的方法的绑定机制:早期绑定和晚期绑定早期绑定:早期绑定就是指被

2020-06-02 19:02:38 499

原创 关于PC寄存器的两个问题

PC寄存器概念每个线程启动的时候,都会创建一个PC(Program Counter,程序计数器)寄存器。PC寄存器用来存储指向下一条指令的地址,也即,将要执行的指令的代码,又执行引擎来读取下一条指令。 每一个线程都有它自己的PC寄存器,也是该线程启动时创建的,是线程私有的,就是一个指针。 是一个非常小的内存空间,几乎可以忽略不记。也是运行速度最快的存储区域。也是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域。 这块内存区域很小,它是当前线程所执行的字节码的行号指

2020-05-26 12:37:03 2322

qt5.12.11、5.14.2、5.15.2版本所需的编译好的适配mysql5.7的64位库

qt5.12.11、5.14.2、5.15.2三个版本所需的编译好的适配mysql5.7的64位库,直接放到相应的plugins文件夹的sqldrivers里面即可。

2023-10-11

空空如也

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

TA关注的人

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