自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 由iframe引起的无法返回上一页的问题

使用的框架: vue页面里面嵌套了 iframe,在设置iframe的src后,不知道为什么使用 router.back() 无法跳转到上一页,必须使用 router.go(-2) 才可以。但问题是有的时候用 router.go(-1) 可以,有的时候却不行。因为iframe里面的内容对于我来说是黑盒,在内部可能进行了重定向操作而我不知道。

2023-09-20 17:00:44 1476

原创 印象笔记导出HTML再转markdown的方法

解决印象笔记导出的问题

2023-05-24 00:02:44 1143

原创 web-flash的登录验证与权限管理

该项目是一个很好的Springboot开源项目,从中我们能学习到很多东西,本文将着重讲解web-flash是如何实现后端登录验证与权限管理的项目采用的方案:JWT + Session + Shiro。

2023-03-26 17:39:57 582

原创 rabbitMQ通过Dockerfile安装延迟插件

我查到的教程是在建立好镜像后手动将插件拷贝到容器里再安装的,这种方式显然不合适有多个rabbitMQ的情况。我的思路是:重新生成一个安装了插件的镜像。

2023-03-11 17:42:44 266

原创 Nacos 集群一直报Nacos is starting...

我使用Docker-compose部署的,然后Nacos一直报这个,就是没启动成功。后来我发现是虚拟机内存不够用,我把虚拟机内存改到了 3g然后创建容器时加入了环境变量JVM_XMS=512m、JVM_XMX=512m、JVM_XMN=256m。

2023-02-23 20:07:35 1558

原创 矩阵初等变换整理

左乘行变换,右乘列变换Eij​Eij​Eij​Eij​(k)Eij​(k)Eij​(k)Ei​(k)Ei​(k)Ei​(k)第一和三种好理解,第二种不好理解,需要结合案例E为3阶矩阵,第1列的1倍加到第2列:AE21​(1)E为3阶矩阵,第3行的3倍加到第1行:E31​(3)A。

2022-09-17 10:39:42 2855

原创 判定完全二叉树的非递归方法(C语言)

我们设立一个标志位flag,初值为0,用来表示异常情况的发生,当发生异常情况以后,进行++flag。在层序遍历异常情况后继的结点时,我们采取层序遍历的方式遍历结点,我们遍历结点的时候会遇到下面几种情况。.........

2022-07-16 16:14:17 559

原创 汉诺塔问题思路的证明

汉诺塔问题思路的证明。汉诺塔问题思路很简单,但为什么可行?本文使用了数学归纳法来证明该解题思路的可行性

2022-07-02 16:27:20 537

原创 Ackerman的非递归算法思路讲解

Ackerman的非递归算法的思路

2022-07-01 19:38:09 1262

原创 sqlite 修改列类型

sqlite修改列数据类型的方法

2022-06-29 18:12:09 1431

原创 刷题分析工具

前些天刷高数题的时候,往往需要分析题目是否需要重新做,所以我做了一个工具专门用于进行这类的分析。

2022-06-25 16:06:55 217

原创 将二维数组方阵顺时针旋转90°

将二维数组方阵顺时针旋转90°

2022-06-20 17:18:58 1352

原创 C++ 模拟键鼠详细总结

简介需要使用user32.dll#include <Windows.h>鼠标输入官方例程键鼠状态查询虚拟键码// 获取鼠标位置POINT p;GetCursorPos(&p);qDebug() << "cur mouse:" << p.x << "," << p.y;// 判断鼠标左键是否被按下if((GetAsyncKeyState(VK_LBUTTON)& 0x8000)? 1:0){ qDeb

2022-05-03 23:37:11 3583

原创 QT 使用全局钩子监听鼠标事件和键盘事件

简介include <windows.h>本版本使用的LL版,提供了获取虚拟键码,鼠标坐标等方法,比较全面。重要文档SetWindowsHookExA键盘监听: WH_KEYBOARD_LLLPARAM: PKBDLLHOOKSTRUCT鼠标监听: WH_MOUSE_LLLPARAM: PMSLLHOOKSTRUCThookhelper.h 和 hookhelper.cpp 考虑了移植性和多线程,所以写的复杂了许多,但是功能是全面的,且做成DLL也是比

2022-05-03 12:28:41 2345 4

原创 C++ HOOK实现全局键盘钩子的详细过程

1 简介工具:VS2019目的:写一个动态链接库(全局键盘钩子的注册和注销),然后在MFC项目中调用,MFC中有两个按钮,一个用于注册全局钩子,一个用于销毁全局钩子。注册全局钩子后,按下键盘的按钮,被按下的按钮会被记录到F:\key.txt 文件中。2 编写DLL动态链接库新建DLL项目不要勾选【将解决方案和项目放在同一目录中(D)】不要动建立好的项目中的其他文件在项目中新建Keyboard.cpp文件注意PROJECT_NAME这个宏,要和最后导出的DLL文件名一致/

2022-05-03 12:06:00 8695 1

原创 QT 通过动态加载DLL实现插件化

简介本文只针对Windows应用程序,因为需要显式加载插件,如果对移植有要求可以不看本篇文章了。Windows.h 文件中提供了显式加载DLL文件的方法,我们可以像JAVA一样规定一个接口,该接口为一个类,类内部全是虚方法,而该类的实现类及具体方法由DLL文件实现。这样,我们就可以动态更换或添加新的功能了。DLL项目的写法新建项目后,把 xxx_global.h文件中的内容拷贝到 另一个.h文件开头拷贝后把 xxx_global.h 文件删除掉.h文件的写法示例(dlllib.h)

2022-04-30 20:28:35 3185 2

原创 通过js脚本处理剪切板(简单而强大的效率工具)

一直以来,我们在复制数据都时候往往需要对数据进行处理。我用WPF 做了一个工具,只要你提供一个 js 文件作为函数库,则可以动态调用js脚本去处理剪切板的内容。

2022-04-26 00:55:22 1445 2

原创 C++的.dll文件和.lib文件的使用

讲述了C++项目如何使用.dll和.lib文件的

2022-04-24 19:20:58 1069

原创 mysql复杂的多表查询优化的案例

简介这几天要搬运老项目中的报表查询语句,并且是从oracle数据库里搬过来,一路上总结了一些优化经验,写下来给大家参考一下原查询语句这个也不算最初的查询,最初的查询是oracle的语句,先得翻译成mysql的语句。这里简单讲一下翻译的步骤:1.所有带有(+),转成mysql的时候变成外连接2.所有的在mysql中有区别的函数要转换3.Start with 树形结构查询的语句在mysql中没有对应的查询方式,最后是手动先进行这种关联查询后,再把查询的结果放置在大的sql语句当中。这是转换后的结果

2022-04-16 07:36:28 1549

原创 深度解读基于commons-compress解压文件——7z与常规解压

java解压文件的方式有很多种,Apache官方提供了一个工具,可以用来解压很多类型的文件。该工具可以解压和压缩带密码的7z文件,并支持ar, arj, cpio, dump, tar, zip 等文件的压缩和解压。本文将带你深入common-compress底层来探究底层是如何解压文件的。

2022-04-05 17:42:37 5729

原创 springcloud+zookeeper 的服务发现与服务集群的搭建方式

使用Zookeeper 代替 Eureka 实现服务注册、服务发现、服务集群的功能

2022-03-06 22:59:11 620

原创 springMVC+mybatis的文件上传与下载

前言这些资料我查了半天,结果最后是我自己尝试出来的一套方案如果你想要把文件直接存储到mysql数据库中,可以使用我这一套方案。或者你可以把文本文件用base64编译以后再存储到数据库中首先要注意数据库的格式!①TinyBlob类型 最大能容纳255B的数据②Blob类型 最大能容纳65KB的③MediumBlob类型 最大能容纳16MB的数据④LongBlob类型 最大能容纳4GB的数据文件上传前端前端我使用的是elementUI+Vue注意,要是用el-upload自带的上

2021-09-08 10:38:18 444 1

原创 支付宝和微信的支付记录整合

1 简介最近想整理一下账单,发现微信每次只能导出3个月的账单。。。支付宝导出的时间更长一点。为了把这些账单整合,我写了一个python的程序。使用本程序之前,不要修改导出的账单的文件名!码云2 思路第一步:选择账单文件(官方导出的csv文件),程序会循环调用文件对话框,每次只能选择一个文件,直到没有选择文件为止。第二步:如果第一步中有选择文件,则弹出保存文件对话框,选择保存的位置。如果没有,则程序直接结束第三步:处理每一个csv文件,一行一行地读取,将数据行按照逗号分隔开,然后取自己需

2021-06-19 16:59:15 2470 2

原创 Python文件对话框(win32ui)

1 简介python中使用打开文件对话框或者保存文件对话框。这里以打开文件对话框举例子安装# 安装pip install pypiwin322 简单示例import win32ui dlg= win32ui.CreateFileDialog(False)# False表示打开文件对话框# 设置打开文件对话框中的初始显示目录dlg.SetOFNInitialDir('E:/Python')dlg.DoModal()# 等待获取用户选择的文件filename = dlg.GetP

2021-06-19 13:06:42 7561 1

原创 electron-vue 的路径问题

1 问题来源在使用sqlite3的时候,需要创建数据库表时,这时候很容易出现这个问题!!!提示:SQLITE_CANTOPEN unable to open database filenodejs中内置了变量__dirname,electron-vue中内置了变量__static。在开发阶段的过程中,使用这两个变量来创建文件是没有问题。例如当我使用path.join(__static,‘password.db’),然后想要创建这个password.db文件时,在开发阶段是没有问题,会成功创建。程序也能

2021-06-05 03:10:14 2177 5

原创 最详细的码表基础知识(UNICODE编码与国标编码)——UTF8,UTF16,UTF32,GBK,GB2312

C++基础4.1——码表的基础知识1 简介Unicode系列的编码和国标的编码的理念是不一样的!2 Unicode系列ASCII、UNICODE、UTF-8、UTF-16、UTF-32字符集为每一个「字符」分配一个唯一的 ID(学名为码位 / 码点 / Code Point)UNICODE就是一个字符集编码规则将「码位」转换为字节序列的规则2.1 Unicode码与UTF-32Unicode为世界上所有字符都分配了一个唯一的数字编号,这个编号范围从 0x0

2021-05-18 17:52:04 5466 1

原创 斐波那契搜索优化版

1 简介该算法是对二分法的改进。处理的数组是已经排序过的数组。斐波那契数列 int a[] = {1,1,2,3,5,8,13,21,34,55,89……}相邻的两个数越大,比例越接近黄金比例 0.618:1可以观察到 a[i] = a[i-1] + a[i-2]根据这个特点,每次以 a[i-1] 为分界线划分原数组,mid = arr[a[i-1]] 。如果 mid 比要查找的数大,则 i = i-1。如果 mid 比要查找的数小,则 i = i-2优点:时间复杂度为 l

2021-03-01 20:29:54 129 4

原创 详细讲解vuecli中的vue组件化与父子通信

1 简介vuecli 中提供一种简单的方式进行组件化开发。注意引入 js 模块和引入 vue 模块是不一样的。引入 js 模块是全局引入,而引入 vue 模块是局部引入。在不同模块下引入相同的 js 模块,当修改js模块中的变量时,会在全局影响,所有引入该模块的文件都能察觉该改动。但是修改 vue 模块中的变量,是不会影响全局的。2 定义组件组件可以使用ES6模块化规范的写法,通过 import 引入其他vue或者js模块。data 部分必须是方法而不是json对象!<te

2021-02-22 21:19:27 185

原创 WPF使用MaterialDesign样式库详解

1 简介该库提供了很多的样式,我们可以直接调用GitHub官网2 安装官方快速入门教程我这里使用的是 VS2019,注意,建立的WPF项目的.NET框架必须在.NET4以上(不含.NET4),否则会报一堆错误【工具】-【NuGet 包管理器】-【程序包管理器控制台】输入Install-Package MaterialDesignThemes如果你的解决方案里有多个项目,注意要给当前项目安装打开App.xaml在Application 中添加属性<Appli

2021-02-06 14:14:12 14459

原创 C# 键盘钩子和鼠标钩子的使用详解

1 简介C# 使用钩子的方式和C++基本上是一样的,因为直接使用了静态链接库user32.dll我把鼠标钩子和键盘钩子封装成了两个工具类,有兴趣的朋友可以参考一下。项目的链接使用的时候需要给定委托,委托的返回参数你可以参考DLL包下的两个类中的常量。注意,给定的委托函数内部不要写复杂的程序,委托的函数内部修改某个变量,然后外部开辟一个循环任务进行读取。如果委托函数内部的逻辑过于复杂,则读取数据的时候可能会有问题。2 全局鼠标钩子2.1 工具类调用win10内置的DLL"user32.dll

2021-01-24 20:19:28 3855 1

原创 java手写队列和栈(数组实现,自动扩容)

1 简介队列:先进先出栈:后进先出栈是比较好实现的,队列实现起来有点麻烦2 栈不保证线程安全,如果想要线程安全,可以在所有方法前加synchronized动态扩增的原理:当数组满的时候,自动创建新的数组,并把原数组的内容复制到新数组中。package data.structure.stack;/** * 数组实现栈结构 * 要求: * 1.实现动态扩增 * 2.后进先出 * @Author :吴用 * @Date :2021-01-20 19:20 * @Versio

2021-01-20 21:43:18 457

原创 JAVA 使用JNI与C++交互的详细过程

1 简介网上有很多教程,但是很多都没有一个完整的实例,我在学习的时候,踩了不少坑。我们使用JNI的目的,无非就是想要用调用C++的接口,并且最好JAVA也能为C++提供一个接口(用于回调),这两个目的都很重要。尤其后面那个目的,如果要实现异步操作,那么java必须能给C++提供接口2 类型的映射关系JNI 它通过类型映射,把JAVA中的基本数据类型,映射到了C++中,这个映射关系记录在了jni.h文件里(该文件在JDK根路径/include下)所以,在C++中,为了兼容JNI,你要尽量使用j

2021-01-18 22:21:58 5365 4

原创 C++实现DLL注入的完整过程

1 简介网上确实有关于DLL注入的过程,但是很多写的都不全,或者内容有点老旧。DLL文件注入的原理是:接管被注入应用的控制权,并在应用程序运行的内存中开辟一条线程运行DLL文件中的入口函数的代码。项目需求:向一个.txt文件注入dll,然后会自动弹出一个窗口工具:VS20192 DLL动态链接库的编写在VS2019中新建项目-选择【动态链接库(DLL)】不要勾选:【将解决方案和项目放在同一目录中】创建完项目后,会有四个文件framework.hpch. hdllmain.

2021-01-17 20:02:42 13075 5

原创 使用 java 手写事件驱动模型

1 介绍本文将手写一个事件驱动的模型案例。事件驱动:EventManager 事件管理者单独运行一个线程,循环遍历事件队列(阻塞队列)。内部有一个Map集合,用于存放事件和用户之间的关系。当事件产生后,事件会被放置到阻塞队列中,而EventManager的子线程就会获取到该事件的相关信息,并提醒与之相关的用户,执行响应的方法Event 事件事件的具体内容,可以有四部分组成。事件的来源、事件的目标、事件的种类、事件的消息。 对一个事件而言,知晓事件的种类是必要的,其他数据可以不给定。

2021-01-07 23:50:44 228

原创 springboot2.x 的骚操作——解决运行顺序以及Bean对象注入顺序的问题

通过指定接口,重写指定方法,可以在Bean对应的生命周期方法中执行相应的程序本文将分析几个Bean对象,为它们设置优先级(通过@Order),然后再打断点调试,测试各种生命周期方法的运行的顺序在项目当中最让人头疼的就是bean对象不被注入的问题,通过本文,你可以很好的解决这个问题。

2021-01-05 10:21:31 521 3

原创 SunnyUI 学习1.3——图表

1 简介UIBarChartUIBarChartExUIDoughnutChatUILineChartUIPieChart2 UIBarChart柱状图,与Echart的用法类似可以修改主题颜色barChart.ChartStyleType = UIChartStyleType.Default;//默认颜色barChart.ChartStyleType = UIChartStyleType.Plain; // Plain型BarChart.ChartStyleType = UI

2021-01-01 16:59:19 12708 9

原创 SunnyUI 学习1.2——主题

1 简介主题的用法,官方介绍的比较详细,我就不过过多赘述,只提取其中的用法。主题用法教程2 使用将UIStyleManager拖到主界面中通过修改它的属性可以控制很多组件的颜色主题但是,注意主布局必须继承SunnyUI提供的七种布局中的一种,这在我的上一篇文章中有描述子组件的StyleCustomMode 属性必须设置为False之后就可以愉快的使用了。...

2021-01-01 15:09:01 4730 1

原创 SunnyUI 学习1.1——简介与界面布局的使用

1 简介SunnyUI官网基于Winform的开源的控件库,用它可以快速开发好看的windows应用程序网上关于该控件库的说明较少,所以我准备写点东西留给后人一些简单的如Button、Label、CheckBox、RadioButton等控件大家自己试试吧,有点Winform基础的同学应该都会使用。我来说说有点难弄的,又不好找到资料的组件。2 安装可以参考官网的教程3 布局模式3.1 有哪些布局查看官方例程,有7种布局模式以下是其中布局的图片UIAsideHeade

2021-01-01 14:59:26 38287 9

原创 反射的使用与动态代理

1 简介* JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。* 注意,Class.forName(“全限定类名”) 会对类进行加载,会执行类中的静态代码块2 反射的基础用法2.1 通过反射构造对象try { // 空参构造 Class clazz = Class.forName("pojo.Country"); Country c

2020-11-22 01:04:50 137

原创 java的线程安全问题总结

1 简介看本文前,请先了解 JMM,本文大部分参考《JAVA并发编程实战》本质原因:某一个线程在观察和修改一个变量的过程中,另一个线程修改了变量的值,导致本线程的观测结果无效,进而使得计算结果无效,所以本线程修改变量会出问题。2 示例问题:如果有两个线程同时使用了这个函数,则a的结果在每次程序运行后,结果都不一样!原因:a++分为三步,1)从内存中提取a的值;2)计算a+1;3)修改a的值。如果线程1观测了a的值后,线程2修改了a的值。此时,线程 1观测的结果无效,导致计算结果是错误的

2020-11-14 18:07:01 142

空空如也

空空如也

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

TA关注的人

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