- 博客(12)
- 收藏
- 关注
原创 设计模式之适配器模式
适配器模式是用来解决两个接口不兼容的问题。适配器模式一般有两种实现方式。一是类适配器,这种实现方式是需要适配器继承适配者,耦合度较高。第二种是对象适配器模式,这种实现方式是将适配者作为类的成员,通过适配器对适配者间接访问,实现适配。1.类适配器//适配者public class USBMouse { public void connect_usb(){ System.out.println("USB鼠标连接"); }}public interface
2021-07-28 05:48:26
149
原创 设计模式之原型模式
原型(Prototype)模式:将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例。具体操作就是在对象上实现一个Cloneable接口,然后重写clone方法。但是这种方式是浅拷贝,基本数据类型与包装类型以及字符串没有问题,但是对象类型,比如list就会出现引用地址相同的情况,这种深拷贝需要实现Serializable接口,然后通过流的方式重写clone方法。1.浅拷贝class PrototypeClass implements Cloneable{ private
2021-07-25 22:42:32
115
原创 设计模式之建造者模式
建造者模式是将一个复杂的对象分解为多个相对简单的部分,然后根据不同的需要创建它们,最后再构建成复杂对象。public interface Thing { public String name(); public double weight();}public class Food implements Thing { @Override public String name() { return "food"; } @Overri
2021-07-24 21:32:40
116
原创 设计模式之工厂模式
工厂模式是一种创建型的模式,它可以使创建对象时不会对客户端暴露创建逻辑。工厂模式有两种,一种是简单工厂模式,一种是抽象工厂模式,抽象工厂模式又可以称作是工厂模式的工厂,即在工厂之上再建立一个创建工厂的抽象类。1.简单工厂public interface Car { public void show();}public class CheapCar implements Car { @Override public void show() { Sy
2021-07-23 23:38:58
91
原创 框架那些事:①MyBatis之快速上手
1.什么是mybatis?mybatis 是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。mybatis通过xml或注解的方式将要执行的各种 statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句。最后mybatis框架执行sql并将结果映射为java对象并返回。采用ORM思想解决了实体和数据库映射的问题,对jd
2021-07-21 10:44:32
92
原创 mybaits注解开发动态sql异常:Cause: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 758; 元素内容必须由格式
先来看下异常信息:org.apache.ibatis.builder.BuilderException: Could not find value method on SQL annotation. Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xm...
2021-07-13 09:12:41
4802
7
原创 Jvm之DirectMemory(堆外内存)大揭秘
最近在读周志明老师所著《深入了解JVM虚拟机。。》一书,在谈到DirectMemory时,我产生了许多疑问,书中只是简单的提了它并不是JVM运行时数据区的一部分,所以我很费解。因为据我所了解,一个进程运行在操作系统下,比如32位的操作系统,那么它的虚拟内存空间一定是4G,而进程用户空间一般只能用2G,包括JVM进程也是如此。我带着这个疑问看了许多博客,查了许多资料,未果,只是看好多文章画了...
2020-03-06 22:40:09
2297
1
原创 Windows保护模式段机制与分页机制详解
操作系统将物理内存虚拟化,从而管理内存,将每个进程的运行空间隔离,形成多任务的操作系统。物理内存虚拟化后,在操作系统的基础上有以下几个名词概念,需要深刻理解,网络上很多博客和帖子常常对此解释出现误差、混淆。我在这里澄清一下(献丑):1.物理地址物理地址就是物理内存的真实地址,它是在硬件上真实存在的。由于操作系统的管理,在操作系统之上,用户是感觉不到物理内存的存在的。一个进程在操作系统中...
2019-02-02 11:04:28
727
原创 DLL注入之使用SetWindowsHookEx注入
原理分析:本次介绍的是使用全局钩子的方式进行注入。在Windows中可以使用SetWindowsHookEx来设置消息钩子,这个函数除了可以设置当前进程的钩子之外,它还可以设置全局钩子。全局钩子,顾名思义,即当前正在运行的进程都会被设置相应的钩子。//dwThreadId 设置为0,则是全局钩子。HHOOK SetWindowsHookExA( int idHook,...
2019-01-30 21:51:19
5256
原创 DLL注入之使用远程线程注入
原理分析:远程线程注入是很常见且古老的注入方式之一。其原理是根据Win32函数CreateRemoteThread在目标进程中创建一个线程,然后加载注入DLL。无巧不成书,创建线程的所需的回调函数恰恰与LoadLibrary声明结构几乎一模一样。//Thread PROCDWORD WINAPI ThreadProc(_In_ LPVOID lpParameter);//显式加载D...
2019-01-27 14:08:01
1086
原创 windows驱动之踩坑之旅
2018/12/8 写读驱动练手设备名定义出错,导致使用DriverMonitor时加载失败,报error(3) 正确定义:\\Device\\xxx 注意格式,前面不能打错,xxx为设备名称 卸载驱动例程发生蓝屏 引用了空指针read例程里使用RtlFillMemory导致蓝屏,它和memset参数shun顺序不一致...
2018-12-08 22:57:50
405
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人