qq_43851684的博客

私信 关注
炎黄子孙__
码龄2年

星辰大海

  • 24,862
    被访问量
  • 40
    原创文章
  • 146,067
    作者排名
  • 18
    粉丝数量
  • 于 2018-11-28 加入CSDN
获得成就
  • 获得28次点赞
  • 内容获得12次评论
  • 获得115次收藏
荣誉勋章
TA的专栏
  • C++
    2篇
  • 算法
    1篇
  • 前端
    1篇
  • C#
    5篇
  • Java
    17篇
  • C++逆向工程
    2篇
  • springboot
    1篇
  • SunnyUI
    3篇
  • winform
    2篇
  • Matlab专题
    10篇
  • STM32Cube专题
    1篇
  • Stm32专题
    2篇
  • 学习方法
    2篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

斐波那契搜索优化版

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
原创
13阅读
0评论
1点赞
发布博客于 1 月前

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

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

WPF使用MaterialDesign样式库详解

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

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

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

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

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

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

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

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

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

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

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

使用 java 手写事件驱动模型

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

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

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

SunnyUI 学习1.3——图表

1 简介UIBarChartUIBarChartExUIDoughnutChatUILineChartUIPieChart2 UIBarChart柱状图,与Echart的用法类似可以修改主题颜色barChart.ChartStyleType = UIChartStyleType.Default;//默认颜色barChart.ChartStyleType = UIChartStyleType.Plain; // Plain型BarChart.ChartStyleType = UI
原创
450阅读
0评论
1点赞
发布博客于 3 月前

SunnyUI 学习1.2——主题

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

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

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

反射的使用与动态代理

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

java的线程安全问题总结

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

java使用RXTX的详细总结

1 简介项目要求:读取串口信息,并输出展示相应的图像,本篇文章不深入谈前端的内容着重于后端遇到的问题。2 开发阶段2.1 RXTX包的使用1)下载该包2)由于手动导入的时候我遇到了点问题,所以选择先将 RXTXcomm.jar 导入到本地仓库,然后在maven项目中引入手动导入的指令mvn install:install-file -DgroupId=gnu.io -DartifactId=rxtx -Dversion=2.1.7 -Dpackaging=jar -Dfile=“G:\迅雷下
原创
748阅读
2评论
1点赞
发布博客于 7 月前

JDBC操作SQLite的工具类(已经对操作进行了很大程度的简化)

1 简介SQLite 作为数据库特别小,Android系统中自带,Windows中使用也特别方便。2 工具类2.1 ResultSetMapperpackage com.wu.port.utils.sqlite;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.sql.ResultSet;import java.sql.ResultSetMetaData
原创
82阅读
0评论
1点赞
发布博客于 7 月前

shiro SecurityUtils.getSubject().getPrincipal()得到null 的解决方法

1 问题的由来自定义的Realm 继承 AuthorizingRealm ,本想在doGetAuthenticationInfo 认证方法中通过Object o = SecurityUtils.getSubject().getPrincipal() 得到前端传来的信息的,然后通过instanceof 判断 o 的到底是什么类,来判断到底是用户登录还是管理员登录。结果发现SecurityUtils.getSubject().getPrincipal() 得到的是null2 解决方法采用装饰类的思路解决
原创
1133阅读
0评论
1点赞
发布博客于 8 月前

MD5 标准算法详解

1 简介目的:将任意长度的明文,转化为128位的哈希值例如将 123456 转化成 e10adc3949ba59abbe56e057f20f883e (16进制)特点:1)不可逆,相同数据的MD5值肯定一样,不同数据的MD5值不一样2)抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。3)弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。4)强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。
原创
318阅读
0评论
1点赞
发布博客于 8 月前

matlab使用万能函数求解自定义无约束函数的极小值

1 简介万能函数:fminunc1)自定义的函数写在一个文件里面,可以是任意的函数,也允许携带参数。2)重点是把函数封装到句柄里面,这样既可以给函数传递参数,也可以指明变量3)坑:最坑的地方是你自定义的函数中,作为函数变量的只能有一个!!!!如果是多元函数的话,那么这个变量是一个向量!!!比如函数变量为x1,如果是二元函数的话,你需要用x1(1)和x1(2)来调用函数变量2 实例1)写一个自定义多元函数的文件customFunc.m注意,多元函数只能有一个变量,该变量为向量,存储着每一个变量
原创
263阅读
0评论
0点赞
发布博客于 10 月前

Tomcat 配置全局错误页的注意事项

1 web.xml在Tomcat的conf文件夹下的web.xml文件中根元素下添加以下内容,分别对应错误代码号和错误的网址,建议把错误网页放置在ROOT目录下。这样就直接可用’/'前缀指定该网页了。 <error-page> <error-code>400</error-code> <location>...
原创
233阅读
0评论
0点赞
发布博客于 1 年前

java 动态代理的方法及其缺陷

本文部分原创,大部分为黑马程序员课程的提炼1 动态代理简介特点:字节码随用随创建,随用随加载作用:不修改源码的基础上对方法增强,在此过程中会建立一个新的类对象。分类:基于接口的动态代理、基于子类的动态代理2 基于接口的动态代理: 涉及的类:Proxy 提供者:JDK官方创建代理对象的要求:被代理类最少实现一个接口,如果没有则不能使用,新建的对象必须为接口。如何创建代理对象...
原创
130阅读
0评论
0点赞
发布博客于 1 年前

Java思想1——简单工厂模式

本文内容基于《大话设计模式》——程杰,建议大家读读原著1 我们要考虑什么?1)为了提高程序的可维护性,需要对各个模块之间进行解耦,要让它们之间的关联尽可能地小。避免修改其中一个模块的时候,需要对另一个模块大动干戈。2)前端与后端要尽可能地分离解耦,原因还是与1)相同,提高程序的可维护性。前端是程序展示在用户面前的界面,而后端是每一个按钮或者是效果的具体实现。3)对于前端的校验。这一块是基于...
原创
84阅读
0评论
0点赞
发布博客于 1 年前

Android 教你如何写蓝牙程序2——获取目标信息

上文讲解了如何启动蓝牙功能。现在我们已经启动了蓝牙功能,接下来要做的是获取要连接的对象的蓝牙信息。上文连接:https://blog.csdn.net/qq_43851684/article/details/1042364231 获取已存储的蓝牙连接对象我们先将简单的,现在单纯要获取已存储的蓝牙连接对象信息。//获取蓝牙适配器BluetoothAdapter mBluetoothAdap...
原创
187阅读
0评论
0点赞
发布博客于 1 年前

Android 教你如何写蓝牙程序1——消息传递、启动蓝牙

参考资料:蓝牙的资料:Android 蓝牙开发(1)Android 蓝牙开发(2)Android 蓝牙开发(3)Android的消息传递机制Android的消息机制(一)Android的消息机制(二)...
原创
1616阅读
0评论
2点赞
发布博客于 1 年前

Java基础1.2.2——jar包中的MANIFEST.MF

该文件记录了jar包的重要信息例子Manifest-Version: 1.0Created-By: Apache Ant 1.5.1Extension-Name: Struts FrameworkSpecification-Title: Struts FrameworkSpecification-Vendor: Apache Software FoundationSpecificat...
转载
33阅读
0评论
0点赞
发布博客于 1 年前

Java基础1.2.1——运行程序与打包

1 利用cmd运行程序打开代码编辑器,把上面的代码添加进去;把文件名保存为:HelloWorld.java;打开 cmd 命令窗口,进入目标文件所在的位置,假设是 C:在命令行窗口输入 javac HelloWorld.java 按下回车键编译代码。如果代码没有错误,cmd 命令提示符会进入下一行(假设环境变量都设置好了)。再键输入 java HelloWorld 按下回车键就可以...
原创
53阅读
0评论
0点赞
发布博客于 1 年前

Java基础1.1——环境搭建

Java_JDK:https://www.runoob.com/java/java-environment-setup.html#win-installJava_IDE:https://blog.csdn.net/rothschild666/article/details/829146001 安装环境2 建立工程1)新建Java Project2)新建Package3)新...
原创
42阅读
0评论
0点赞
发布博客于 1 年前

STM32编写时的技巧(适用于新手)

本文是我在知乎上的一篇回答,有兴趣的朋友可以参考下面的链接,不过两篇文章是一样的。https://www.zhihu.com/question/66634764/answer/696095626本文适用于初学者。硬件功能方面,十分建议学习好TIM,systick,GPIO,USART,NVIC这几个东西,最好能深入理解,因为这几个东西常常是出现在很多个项目当中的,非常重要的东西。一,环境的...
原创
771阅读
0评论
0点赞
发布博客于 2 年前

对于学习方法的总结

1 学习的资源其实,我的学习动力都是来源于我对于知识的好奇心,而不是为了考试,毕竟我目前没打算去考研,所以没有什么心理压力。当我觉得有必要学习一门知识的时候,我就会去搜索关于它的资料,包括视频资料、书籍资料、论文等等。其中,视频资料对于长期坚持学习而言是最有价值的,因为一套视频的录制和传递,往往是经过了制作者对于教材的精心筛选,网友们对于优质内容口口相传,以及各个网友在视频下方的积极讨论而形成...
原创
49阅读
0评论
0点赞
发布博客于 2 年前

matlab除去NaN空值,并且保证矩阵一定的形状的方法

一,起源由于导入excel文件数据的时候,空数据部分会被NaN代替,所以我就想用一种办法删除掉这些NaN。我看见的一种办法是:b=a(~isnan(a));这种办法确实能删除NaN,但是会把原来的数组变成列向量,损坏了原来的结构。在结构不遭破坏的基础上,删除掉NaN的位置。此方法需要保证对于每列而言,NaN所在的行索引是相同的。为保证这个条件在导入前需要观察数据分布。二,思路及编程假设我们...
原创
4207阅读
3评论
2点赞
发布博客于 2 年前

印象笔记的使用技巧总结

一,前言我已经用了两年的印象笔记了,存储了将近950篇的笔记内容,以下是我在使用印象笔记当中所使用的技巧希望大家有所收获。二,编写格式在印象笔记中,我采取的是这种编写格式,主题在加粗,而次级题目用1,2,3表示出来,这个在一般情况下是够用的。但如果编写的层级过多,那就不好用了。那个时候,建议使用1,1.1,1.1.1这种表示形式表达层次关系快捷键在这里,我只说我常用的快捷键...
原创
5128阅读
0评论
1点赞
发布博客于 2 年前

STM32程序移植专题

一,概括程序的移植包括以下几步1.观察待移植程序调用了哪些文件,将这些文件放入移植的工程当中2.在keil当中添加这些文件,并且添加.h文件的路径3.处理头文件及软件版本匹配的问题二,详解步骤一:1.观察待移植程序调用了哪些文件,将这些文件放入移植的工程当中。2.最好是新建一个文件夹专门存储这些文件。3.不建议移植STM32系统文件,可以将系统的头文件改成移植工程当中的系统文件。...
原创
1180阅读
0评论
2点赞
发布博客于 2 年前

STM32Cube学习一——简介、工程建立、代码输出

一,简介STM32Cube是专门为STM32设计的方便编程的软件,它可以输出MDK,IAR等编写工具的工程文件,生成之后,可以利用这些工具进行修改。这里我说一下Cube的弊端,它使用的库是HAL和LL库,而我一开始是从源享科技的刘凯老师那里学的stm32,用的是标准固件库。如果你会用标准固件库,其实HAL和LL库编程的逻辑与标准固件库差不多。但是,缺点是,没有中文的固件库手册。这就令人头疼了。...
转载
445阅读
0评论
1点赞
发布博客于 2 年前

Matlab学习5.2——其他高级变量类型

一,table类型参考资料: https://www.ilovematlab.cn/article-52-1.html1.简介1)可以存储多种类型的变量2)可以利用列名和行名进行索引2.构建该对象的方法:1)data=readtable('文件名')2)通过列向量构造table对象构建多个列向量y1,y2,y3建立一个行向量x,用于存放每列的名字A=table(y1,y2,y3,'Vari...
原创
82阅读
0评论
0点赞
发布博客于 2 年前

Matlab学习5.1——变量、结构体

一,变量和语句1.变量命名字母开头,包括字母、数字、下划线,区分大小写不声明,不定义,拿来即用* 2.语句回车则表示一句结束,末尾无分号时,则输出该句执行官结果;末尾有分号时,只执行,不输出注释以%开头表示一行写不开,用…续行,否则默认这一句已经完毕* 3.赋值变量=表达式表达式前者将表达式的值赋值给=前的变量,后者将表达式的值赋值给默...
原创
1249阅读
0评论
0点赞
发布博客于 2 年前

Matlab学习5.0——搜索路径、输出

一,查询函数的说明help 函数名例子:help isfielddoc rmfiled可以打开帮助文件二,搜索路径通过搜索路径来确定工具箱的位置。想要matlab运行快,可以把用不到的工具删除,常用的工具放在上层。需要使用的函数1.path输入path,在命令行窗口会显示D:\software\Matlab\toolbox下的所有文件夹的名称2.cd显示当前目录3.userp...
原创
139阅读
0评论
1点赞
发布博客于 2 年前

Matlab学习4——Matlab常用函数库

Matlab学习4——Matlab常用函数库注意:doc 函数%用于查看帮助文档help 函数%用于在命令窗口显示帮助文档如何将帮助文档修改成中文的?点击:主页——预设——帮助将文档位置设置成:在网站上语言设置成:简体中文常用函数含义函数注意错误提示,返回wrongerror('wrong')将a的小数部分删除,只保留整数。fix(a)用于判断空数据的位置。isnan(x)...
原创
697阅读
0评论
1点赞
发布博客于 2 年前

Matlab学习3——单元数组与结构体

一,单元数组>>clear A % 保证赋值的单元数组名称不重名>>%按单元索引法赋值>>A(1,1)={[1 3 5;2 4 6; 1 4 7]};>>A(1,2)={3+5i};>>A(2,1)={'Tsinghua in Beijing'};>>A(2,2)={0:pi/5:pi};>>AA=...
原创
192阅读
0评论
0点赞
发布博客于 2 年前

Matlab学习2——基本语句及其应用

一,输入输入数值:x=input(‘Please enter x:’);在’'中间输入的内容会被输出到界面上,然后操作者输入数字以后会被赋值到x上面。输入字符串x=input(‘Please input a string’,‘s’);;的作用当一句话后面加;时,这句话不会出现在命令运行窗口中。二,输出输出显示disp();输出()内的内容。按照格式输出fprintf(‘表...
原创
75阅读
0评论
0点赞
发布博客于 2 年前

Matlab学习1.1——对于文件的操作

一,对文件的基本操作1.edit 新建一个.m文件2.如何使文件中几行代码单独运行?选中语句按F9,或者右键——执行所选内容3.发布功能:用于将文本转化成doc或者其他格式的文件。4.运行节每个节之间利用%%进行分割,可以单独运行一下节。二,读取和写入文件excel专题1.读取excel文件——xlsread1)只含有数值变量的Excel表格num=xlsread(‘fi...
原创
69阅读
0评论
0点赞
发布博客于 2 年前

Matlab学习1——基础操作,命令及特殊符号

矩阵实验室利用Matlab可以进行简单计算。一,对文件的操作1.edit 新建一个.m文件2.如何使文件中几行代码单独运行?选中语句按F9,或者右键——执行所选内容3.发布功能:用于将文本转化成doc或者其他格式的文件。4.运行节每个节之间利用%%进行分割,可以单独运行一下节。二,基本命令及特殊符号功能命令说明/对窗口的操作/清空屏幕clc退回到上一个命令小键盘↑关...
原创
208阅读
0评论
0点赞
发布博客于 2 年前