自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 nc/netcat使用

netcat是一个基于命令行的网络调试和开发工具。对于windows和linux操作系统中都有适配的程序包,程序文件短小精悍。在网络编程的世界里,有 “瑞士军刀” 的美誉。

2023-06-08 11:26:51 1118

原创 DebugView的使用

DebugView是windows下的一款调试工具,可以捕获程序输出的日志,分为64位和32位,支持应用层和内核层的日志捕获,利用它排除bug是个不错的选择。本文主要关注应用层面的使用。一般程序日志记录可以输出到文件进行查看,但是使用DebugView不会自动输出到文件,它的日志信息是驻留在进程内存中。

2023-06-07 14:54:44 2688

原创 MySQL触发器的使用

各种主流数据库,都集成了触发器的功能。触发器提供了一种机制,允许开发者在对数据库表的插入、更新、删除的前后捕获相应的数据行。从而针对数据行实现特定的逻辑。结合具体的例子来看,比如有多个应用系统都对数据库某张表进行了插入操作,现在需要对该表的某个字段进行修改。我们可以怎么做呢,如果是倾向于在应用系统中改变逻辑从而实现目标,那么我们就需要同时修改两套应用系统;而如果是倾向于使数据库的话我们只需要针对这个表的相应触发器进行操作即可。显然两者都能达到目的,但是实际的应用场景并不总是如我们所愿。

2023-06-04 12:11:13 1410

原创 使用rundll32.exe运行dll函数

windows操作系统下,exe文件双击即可执行,而dll文件则不可以。这样的话在调试dll中函数的时候就会很不方便,所以可以借助于额外的启动器。当然这个启动器可以自己实现,但是使用操作系统自带的rundll32.exe就能满足要求。日常使用的控制面板中的一些功能都是通过rundll32.exe来启动的。这样的话,就可以双击rundll.bat文件来运行dll中的入口函数了。下面通过一个DEMO来介绍rundll32.exe的使用方法。可以看到控制台打印的信息。

2023-06-02 16:42:50 733

原创 浅谈windows文件拷贝

windows下拷贝命令盘点

2023-05-14 22:36:08 4757 1

原创 ProcessMonitor实现进程文件和注册表监控

对于文件、网络等监控亦是如此,进程的启动和执行离不开对于文件的读写,,相信很多人都碰到DLL文件找不到但是却又不知道DLL放在哪个路径的问题,而这个工具能捕获进程的所有文件读写信息,正好解决了这种问题。一般我们监控指定进程可以使用processName和PID,以谷歌浏览器为例,它的进程名是chrome.exe,那么就可以根据 "processName is chrome.exe"来监控所有的chrome.exe进程了,因为chrome.exe一般是多进程模式,如果定位单个进程,那么就需要指定PID了。

2023-05-14 12:45:28 5405

原创 jdk工具jvisualvm的使用

它通过集成一系列可视化的插件来实现强大的功能并支持拓展。选中一个java.io.File对象进入详细页面,可以查看该对象的所有字段信息和该对象的引用关系,“字段”区域包括java.io.File类以及其所有父类的字段以及对应字段的值,"引用"区域包括引用该File对象的对象。使用jvisualvm对java进程数据的监控,能够帮助我们提升排查Bug的效率。我们可以通过堆dump功能来判断一个类对象是否已经被垃圾回收器回收,还可以通过一个类对象的引用分析调用关系,对深入理解运行库的原理都很有帮助。

2023-05-13 12:37:10 3154

原创 java使用HSDB输出内存中定义的类

众所周知,java类原始的字节码数据一般存储在磁盘中。在文件被载入内存之后,可以通过ClassLoader类的DefineClass将字节码数组转换成一个java类,所以也可以通过在内存中定义一个字节数组直接去定义一个java类。HSDB是jdk安装目录下面的jar包文件,文件位于jdk安装目录\lib下面 ,它以独立进程的形式存在,能够以无侵入式的方式在java进程外获取java的运行时的信息。首先通过反射获取ClassLoader类的DefineClass方法,再反射调用该方法定义类。

2023-05-12 10:38:27 202

原创 系统化思维

不管是工作还是学习,不管是面对有生命的动物,还是面对没有生命的设备,我们的任何行为都可以看成是系统性的行为了,只是这些系统性的行为组成的层次和深度决定了系统的影响能力。因为很多时候我们的决定都是轻率而单一的,因为没有经过缜密的运算,没有数字化的支撑,所以才会盲目。因为系统是整体的,具有严密的思维逻辑,每个步骤都是有特定顺序的,而我们在解决普通问题的时候,思维常常具有跳跃性。所以这就需要系统发挥作用了。而我们要做的就是强化自己的系统思维,有意识的去构建我们的系统框架,并且抽时间不断的去完善、去改进它。

2023-05-09 18:17:20 120

原创 VirtualBox使用心得

vmware虽然也很强大,但是有些版本的vmware还是收费的,而且相应的安装包还贼大,反观virtualbox更小巧精致,而且免费,而且跨平台安装也比较方便。可以把 windows系统中相应的虚拟机导出成 一个ova文件,然后在linux系统中相同版本的virtualbox中导入这个ova文件即可,因为迁移改变了网络连接,所以需要在Linux系统的virtualbox中导入虚拟机之后重新配置一下网卡信息即可。需要指定虚拟机名称和对应的网卡名称,网卡enp9s0也就是linux主机其中的一块网卡。

2023-04-18 18:39:13 565

原创 浅谈标准输入输出流

上面A与B交互的过程则是信息交换的过程,上面A和B打招呼通过语言,通过声音的形式完成信息的交换。以cmd.exe为例,我们在执行某些任务的时候,需要与控制台进行必要的交互,这个交互过程需要我们在控制台中进行一系列的输入来响应程序的执行,此时这个输入的过程可以认为是标准输入,此时对进程而言,完成输入的是用户,也就是计算机的使用者。对B而言,A是输入,而对A而言,B是输出。标准输出是相对标准输入而言,我们在控制台输入指令之后,计算机程序可能会对我们的输入会有一定的反馈,它会在控制台打印出 响应信息。

2023-04-16 22:56:18 620

原创 像电脑一样工作

为什么有的时候觉得做的软件系统太烂并且极其难用,因为可能需要需要过多的人工的参与。如果一个软件流程过于复杂,那么就会消耗人大量的精力,首先眼睛看需要消耗能量,因为眼睛看是一个主动采集信息的过程,如果这个任务过程看成是一个独立的线程,那么线程就是在不断的轮询,手在点击鼠标的时候也做运动消耗能量。从数据层面上看一个人诉说自己的想法就可以看成是向外拷贝数据了,人的眼睛可以看成是高速的扫描仪,在很短的时间内就可以捕获大量的数据,但是人光靠大脑进行持久化存储的能力似乎不是那么可靠。大概是你的思维习惯和行为习惯吧。

2023-04-07 20:30:04 63

原创 漫谈环境变量

不管是日常开发还是使用电脑的过程中,我们几乎无法避免与环境变量打交道,这是因为环境变量在系统的运行中发挥着不可或缺的作用,它作为系统的运行时参数,保存了一些进程运行时所需的信息。如上图所示,当系统环境变量、用户环境变量、进程环境变量中存在相同名称的环境变量时该如何取舍呢,很显然,进程环境变量会覆盖用户环境变量,用户环境变量会覆盖系统环境变量。区别于系统环境变量和用户环境变量,它的作用域更小,它只在进程内有效。一般的,父进程在创建子进程的时候,如果不指定环境变量,那么子进程将继承父进程的环境变量。

2023-02-17 15:28:10 1424

原创 jar包打包实践

作为java程序员,打包是一项基础性的技能。开发工具一般都集成了相应的打包功能,似乎不用我们投入过多的关注。但是开发工具的打包功能也不是万能的,也不一定能适合所有的场景。就好比交通工具,虽然有汽车,但是在交通拥堵的路面也许不如自行车灵活方便。所以我们还是有必要去了解一下如何使用JDK自带的工具进行打包。3.非springboot项目如何使用springboot的打包方式。1. 不打包运行java应用程序。2.命令行打包的几种方式。

2023-02-15 12:11:35 4082

原创 JVMTI 实现统计Java类对象实例个数

上述回调函数的第三个参数class_tag可以用来进行对Class进行分组,相同的class_tag对应相同的类对象,从而在FollowReferences的回调函数中完成Class对象实例个数的累加和所占用空间大小的计算。Java没有提供很直接优雅的方式让我们能够去轻易的去获取类对象的实例的数量,也许是出于性能的考虑,也许是这种事情本身没有显示出多大的价值,毕竟不那么常用。当Class参数值为空的时候,返回虚拟机中已装载的类的统计信息集合,当Class参数值不为空的时候,返回该Class的统计信息。

2023-02-13 21:22:31 1114

原创 URLClassLoader 加载同名类

URLClassLoader作为最常用、使用最广泛的类加载器,在java世界中扮演着举足轻重的角色。问题还是出在类加载器身上,由于双亲委托机制的存在,对于包含相同类名的jar包,class类实例只会选择优先被加载的jar包,后者则会被无视。一般的,系统类加载器是AppClassLoader,当然也可以通过jvm选项Djava.system.class.loader。一般通过在URLClassLoader的类构造器中指定URL数组来初始化路径的加载,当然也可以使用反射的方式来动态加载路径。

2023-02-11 19:57:21 1178

原创 Elasticsearch painless脚本中使用java自定义类函数

并且在使用http api的过程中,集成了各种脚本引擎,极大的提升了数据批量操作的效率以及灵活性,并且允许开发者按照接口规范按照实际需要对脚本引擎进行拓展。比如遇到一些较为复杂的数据处理逻辑时,为了避免在在脚本中使用过长过多的表达式,因为可能容易出现语法上的错误,而且在脚本中加入过多的表达式可能不容易进行调试。可以发现java.lang.String类开放了大部分的方法,java.lang.System类只开放了有限的几个方法,脚本语法简单易上手。这些方法主要是static方法,在脚本中调用的时候使用 "

2023-02-10 19:01:01 570 1

原创 Java代理agent实践

比如我们常用的开发工具idea就可以通过在jvm虚拟机参数中加入了 -javaagent 选项来实现破解,因为idea启动的时候装载了一个jvm进程,这也是破解的前提。这个包功能非常强大,jdk常用的工具在这个包中都有对应的实现,比如javac,jinfo,jar等。这两个方法参数时一致的,在调用loadAgent或者命令行参数指定-javaagent的时候jvm会将控制权转移到这两个方法,在这里,类似的在idea中运行java程序的时候从控制台的命令行参数中也可以找到javaagent的影子。

2023-02-08 22:45:46 1278

原创 修改jdk 运行时类

为了不影响rt.jar的正常使用,我们可以对rt.jar的副本进行替换操作。未修改之前java.net.URLClassLoader类位于 C:\Program Files\Java\jdk1.8.0_181\jre\lib\rt.jar 中。修改之后的java.net.URLClassLoader类位于F:\git26\bootclasspath\rt.jar。对于不同的jar包包含相同的类文件,classloader只会加载前者,所以有了上面的差异。以jdk1.8为例,它的运行时rt.jar位于。

2023-02-07 21:42:04 573

原创 谷歌浏览器调试vue项目

众所周知,在项目过程中我们常常遇到的一个问题就是本地调试的时候没问题但是发布到线上的时候就不行了。在时间充裕的情况下,我们当然可以慢慢调试,但是那是不可能的。选择完文件夹之后右键点击已打开的test.html标头 选择 "save for overrides" 将test.html保存到我们选的文件夹中。它能够实现 在不改动源码且不用重新打包发布就能改变前端脚本的执行逻辑,这样就大大减少了排错的时间。page页列出了当前浏览器中已打开的网站以及网站的页面文件,此时可以切换到Overrides选项卡。

2023-02-07 18:11:46 4815

原创 java多线程环境下使用v8脚本引擎初探

相比之下,由于省去了诸如C++,C#,java等编译型语言编译的环节,极大的提升了程序的修改与部署效率。我们还可以找到很多类似的场景去应用脚本引擎的这些优点,比如我们可以通过在java后台集成脚本引擎实现程序的动态部署和热更新。在实际应用的时候,可能还需要继续进行完善的封装,比如说把脚本代码放在单独的文本文件之中进行集中统一管理。众所周知,v8脚本引擎是一门优秀的脚本语言,它的特点就是执行效率高。而且在上述脚本中实现了对java对象的植入,将console对象的log方法注册到了脚本引擎的上下文之中。

2023-01-08 13:22:36 1127

原创 windows下使用jdbc读写excel文件

使用java读写excel的方法不胜枚举,这里介绍的把excel文件当作一个数据库来对待并使用jdbc连接去读写它。还是那句话,存在就是合理的。每种读写excel的方法都有其优点和缺点,都有它所侧重的地方,都有适合它的应用场景。多掌握一种方法可能就意味着多一种选择,可能恰恰有的场景下这种解决方法就是最优的。当然勤于发现,善于发现就能看到更多的好处。jdbc早已经成为一种标准,正是因为它是一种标准,所以你如果掌握了这种标准就以为着你可以用最小的学习成本去学习这一类的东西。比如你只会写sql或者擅长写sql,那

2022-05-03 18:10:07 1897 2

原创 使用javassist改写类实现拦截sql语句输出实操

众所周知,javassist能够在字节码层面去重新构建一个已经存在的类,同时结合java虚拟机代理Instrumentation 根据类的字节码重定义类的能力。我们可以去动态改写一个类的方法,这个粒度可以精确到代码行。一般我们重定义类,可能希望增加或者减少字段,增加或者减少方法。但是结合我们常用的hotspot虚拟机具体实现,只对重写方法体逻辑生效,也就是我们只能重构类里面已经存在的方法。虽然虚拟机的实现只能局限于这种程度,但是并不意味着它的用途的狭隘,我们仍然能够利用这种支持做最大化的应用。只重写方法体的

2022-05-02 13:21:40 1604

原创 Java中feign的独立使用

独立应用feign能够帮助我们解决什么样的问题或者带来什么好处呢。一方面是优雅,优雅的代码总是具有更好的可读性,这将意味着可能具有更好的维护性。另一方面是独立,独立意味着它可以不依赖繁琐的框架,意味着能够在更多的环境中得到应用。1、建立一个基于maven的普通的Java项目,pom.xml配置如下<dependencies> <dependency> <groupId>io.github.openfeign</groupId>

2022-04-30 12:32:54 3399

原创 Java中使用webview内嵌vue页面

技术服务于业务,在什么情况下我们需要使用webview去内嵌vue页面呢。众所周知webview作为一个组件,可以看成是一个微型浏览器内核。那么如果在我们的程序中集成webview,那么我们的程序是不是也可以看成是一个定制版本的微型浏览器呢。如果只是纯粹的web应用也就是不需要参与过多的与本地化资源交互,我们只需要在浏览器中使用前端就可以了。虽说B/S模式已经大行其道但是毕竟还是得益于浏览器本身丰富的能力,当遇到一些特殊的需求,比如说在浏览器中调用本机程序等等,此时浏览器本身的能力已经无法满足需求的时候,我

2022-04-30 10:39:37 4775 3

原创 windows使用detours实现进程拦截实操

Detours是微软开发的一个函数库,可用于捕获系统API。可以从github下载源码并编译。Detours通过更改被拦截的API函数的跳转地址为用户自定义的函数地址来实现拦截。比如我们知道要拦截API函数A,我们需要自定义一个函数B,在实现拦截之前,此时函数A所在的线程正常调用A。开始拦截的时候,Detours库函数将A的入口地址修改为B的函数指针。此前线程对函数A的调用将会被替换为被函数B的调用,当然前提是函数A和函数B的函数签名完全一致。在将函数A的入口地址修改函数B的地址时已经保留了函数A的原始地址

2022-04-26 00:04:26 2271

原创 windows下mysql 自定义函数 之http 实操

有没有遇到这种场景呢,当使用mysql做复杂字符串处理的时候总感觉mysql内置的函数不够用呢。比如做字符串切割,解析xml等。而这个时候你恰恰对编写mysql函数或者存储过程缺乏一定的经验积累、而你擅长的可能是c/c++,java、c#或者其它编程语言。当然,你也可以把数据库中的数据加载到应用程序中去处理,然后利用应用程序灵活复杂的字符串处理函数实现功能。当然这也是可以的的,只不过注意力需要做切换,因为有的时候可能你想的是只对数据库操作就实现你的目标。再比如我想把现有mysql数据库中的数据同步到其它数据

2022-04-25 12:58:13 2255 2

原创 windows下c/c++创建Java虚拟机加载可执行jar包

一般的,我们使用java.exe或者javaw.exe来执行我们的java应用程序。但是实际上这两个可执行程序只是java虚拟机的启动器,使用java.exe将会创建一个控制台窗口用于输出,而javaw则不会创建控制台窗口。如果你讨厌黑乎乎的控制台窗口,那么就使用javaw.exe去加载。java虚拟机的主要实现包含在 java.dll 和 jvm.dll这两个动态链接库之中。我们以jdk1.8.0_181为例,java.dll 位于C:\Program Files\Java\jdk1.8.0_181.

2022-04-24 22:05:47 2719

原创 window下进程通信之共享内存初探

一、内存存储的好处1、两个进程之间进行数据交换,一般可以通过文件或者数据库。使用文件或者数据库作为存取介质的,一般是对运行效率可能没有太高的要求。对于结构稍微复杂的数据使用文件存储似乎不是一个太好的选择,结构化存储格式诸如xml或者json是可以满足需求的。但是需要多线程读取文件的时候又需要手动去实现控制线程之间的同步,而数据库正是一种解决了多线程并发读写数据的产品。但是这并不意味数据库一定比文件好用,这仍然取决于具体的应用场景。就好像如果只是一个人搬家可能只需要一辆小车子,可是如果是公司搬家可能就需要

2022-04-23 21:59:43 875

原创 window下Java诊断工具arthas 实操心得

1、使用 jad命令反编译java类得到源代码文件 此时注意路径中斜杠只能使用反斜杠jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.java2、使用mc内存编译命令编译源文件mc /tmp/UserController.java -d /tmpMc 编译对于tomcat来说仍然可能会失败Mc –c 类的classloaderhash或classloader全限

2022-04-19 18:18:09 468

原创 windows系统下vc调用v8脚本引擎执行javascript初探

一、众所周知,v8引擎在谷歌浏览器中大放异彩,这得益于v8引擎对于js脚本的无与伦比的执行效率。谷歌浏览器作为v8引擎的宿主,它也只不过是一个普通的桌面程序。当然我们也可以结合实际应用场景编写应用程序去充分利用v8引擎提供给我们的高效的脚本执行效率。合理的用脚本去做一些数据处理和逻辑处理的工作可以去节省大量的时间。试想一下如果我们的应用程序的编译时间很长或者重启的时间很长,这个时候如果我们对代码只是做一些微调的话就要重新编译的话、是不是黄花菜都凉了。这时候就是需要脚本登场的时候了,很显然我们更倾向于选择优秀

2022-04-18 00:14:10 1577

原创 C#轻量级 restful http 服务实践初探

1、有的时候遇到一些应用场景就要求快速编写几个简单的http接口,这时候使用轻量化的服务器就是非常不错的一个选择。简约是一种美,追求极简化就是追求这种美,毕竟重量级的服务可能依赖多、不利于快速部署。话不赘述、直接上图上代码。打开vs2017,创建一个控制台应用 使用的是经典的.NET Framework4编写两个类文件Program.cs 和 PersonInfoQuery.csusing System;using System.Collections.Generic;using S

2022-04-16 18:20:14 922

原创 dnspy调试神器在IIS中无源码调试c#程序

1、Download dnSpy 6.1.8dnSpy分32位和64位,根据需要进行下载。下载完dnSpy压缩包之后解压如下建议右键使用管理员权限运行dnSpy.exe此时选择菜单项 调试 > 附加到进程 并弹出以下界面,在搜索框输入w3wp,w3wp.exe是iis进程映像名称 如果搜索列表为空,可以尝试多点几次刷新按钮筛选完成之后 点 右下角附加按钮此时主窗口标题栏 显示 调试中此时选择 调试->窗口->模块将会列出 这个进程的所有托管...

2022-04-16 00:47:56 1460

原创 linux下使用自解压sh脚本一键离线安装docker环境

涉及到的文件有 1) shell脚本 docker)服务描述文件 3)docker离线安装包shell自解压脚本(ins.sh)#!/bin/bashpreline=14line=`wc -l $0|awk '{print $1}'`line=`expr $line - $preline`echo *****************extract docker**************echo must use -zxv ,dont use tar zxvfrm -rf docker

2022-04-09 02:53:26 679

原创 浅谈Java中DefineClass方法以及ClassLoader

一、反射调用ClassLoader类的defineClass方法直接根据字节数组定义一个类package org.hope;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.net.URL;import java.net.URLClassLoader;public class Main2{ public static void main(St

2022-04-04 13:20:17 4499

原创 window下nginx实现图片缩放实操

一、nginx测试版本1.15.9找了很久,本来试图使用最新版nginx(当前最新版1.21)中使用图片剪裁,也就是缩放控制。可是windows版本的一直没有找到。后面也发现了一些问题,就是在nginx.conf加载动态模块,由于找不到独立的image-filter包,于是花一块钱在csdn下载了一个定制版本的nginx,也就是1.15.9版。测试图片的缩放功能,亲测有效,加载速度大大减少。只需要依赖一个动态链接库文件 libgd.dll,这个文件放在和nginx.exe同目录下即可。使用.

2022-04-03 14:26:53 2835 1

原创 oracle expdp impdp 自动创建directory的一键导入导出批处理脚本

导入脚本 @echo offpushd %~dp0if exist tempdir rd tempdirif exist start.sql del start.sqlif exist drop.sql del drop.sqlmd tempdirset td=%cd%\tempdirset tn=tempdir%random%echo create directory %tn% as '%td%' >> start.sql;echo grant read,write on

2022-04-03 13:05:30 2636

原创 使用jdk工具jdb调试Java应用程序

一、使用jdb调试的应用场景。1、一般开发阶段调试bug可以使用开发工具(idea、eclipse)自带的调试插件进行本地调试和远程调试。使用开发工具自带的调试插件固然很方便、但是多掌握一门调试工具意味着能够多应对一种应用场景。、但是当java程序处于受限环境下运行,比如应用服务器是隔离的内网环境,这时候在服务器上安装开发工具就显得那么繁琐。由于jdb是jdk自带的命令行调试工具,它本身是轻量级的,也省去了额外的安装环节。二、jdb调试jar包1、运行 java -Xdebug -Xr.

2022-03-31 10:39:59 6743

原创 Windows环境下在Java中内嵌MySQL数据库初探

一、以下测试程序包含两个类 com.suntown.Main 和 com.suntown.EmbedMySqlServer,依赖的jar包有mysql-connector-mxj-gpl-6-0-11-db-files.jar 对应的mysql版本为 6.0.11-alpha-communitypackage com.suntown;import java.sql.Connection;import java.util.Properties;public class Main ...

2022-03-29 16:48:05 1781 1

原创 前端jQuery实现子元素在父元素中鼠标拖动改变大小

<script type="text/javascript" src="jquery-3.4.1.min.js"></script><style>.container{ position:absolute; left:1%; top:1%; width:98%; height:98%; border:1px solid black;}.item{ position:absolute; left:20...

2022-03-29 12:40:59 295

linux系统网卡配置文件模板

linux系统网卡配置文件静态基础配置模板

2023-06-05

dlj.ai OCR macOS依赖文件

dlj.ai库 OCR识别在macOS系统中的依赖文件

2023-06-05

ProcessMonitor进程监控工具

ProcessMonitor进程监控工具程序包,可以监控文件、注册表信息、以及网卡信息

2023-06-05

javafx实现推箱子程序 源码加可执行程序

使用javafx实现,jdk1.8编译,使用批处理可快速启动

2023-06-05

空空如也

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

TA关注的人

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