自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MyBatis框架

是一款优秀的,它简化了 Java 应用程序与关系数据库之间的交互。MyBatis 可以自动将 SQL 查询的结果映射到 Java 对象,并支持自定义 SQL、存储过程和高级映射功能。相比于 Hibernate 等全自动的 ORM 框架,MyBatis 提供了更灵活的 SQL 控制,同时也避免了 Hibernate 可能带来的过于复杂的自动化机制。它的核心是将 SQL 语句与 Java 对象之间进行手动的映射管理,允许开发者手动编写 SQL 语句,但同时也提供了简化的配置和查询方法。

2024-09-25 20:37:33 754 2

原创 Springboot2笔记核心技术——1.基础入门

您应该能看到 "Hello, Spring Boot!

2024-09-25 20:23:45 1071

原创 网络安全 加密编码进制

BASE64 编码:用于在文本格式中传输二进制数据,增加数据长度约 33%。URL 编码:用于将 URL 中的特殊字符转换为百分号编码格式,确保 URL 的安全传输。HEX 编码:将二进制数据转换为直观的十六进制字符表示,便于调试和数据分析。ASCII 编码:历史悠久的文本编码标准,适用于表示基础的英文字母和控制字符。这些编码方式各有其用途,选择合适的编码方式取决于具体的应用场景和数据类型。JS 前端代码加密:通常指代码混淆,通过工具减少代码可读性,但仍可被解码。JS 颜文字。

2024-08-31 14:16:08 1356

原创 网络安全抓包&封包&WEB

抓包技术在网络管理、故障排除、安全监控、性能优化、协议分析与开发、数据分析与合规性审计等领域具有重要应用意义。通过抓包,网络管理员和安全专家可以深入了解网络流量,快速定位和解决问题,增强网络安全,优化性能,确保合规性,并为数据驱动决策提供有力支持。抓包工具是实现这些目标的重要手段,选择合适的工具和方法,能够显著提升网络管理和安全工作的效率和效果。Charles 是一款跨平台的 Web 调试代理,适用于 macOS、Windows 和 Linux 系统。

2024-08-07 20:48:46 1692

原创 网络安全Web相关知识

RCE是一个严重的安全漏洞,可能导致系统完全被攻击者控制。通过对用户输入进行严格的验证和过滤、避免直接执行用户输入、及时打补丁以及遵循安全编码实践,可以有效防范RCE攻击。定期进行代码审查和安全测试,也是确保应用程序安全的重要措施。输入验证:对用户输入进行严格的验证和过滤。输出编码:在输出用户内容时,对特殊字符进行编码。使用安全API:避免直接拼接和输出用户输入。内容安全策略:配置CSP头,限制浏览器执行的资源类型。检测和测试:使用自动化工具、代码审查和渗透测试等方法检测和修复XSS漏洞。

2024-07-23 20:55:11 1302 1

原创 网络安全名词解释&操作系统

系统用户包括本地用户、网络用户和系统管理员,用于执行系统操作和管理任务。用户组用于将多个用户组织在一起,以便统一管理权限和资源访问。服务用户是专门为运行服务或应用程序创建的账户,需要根据服务的要求配置相应的权限。Windows Defender 防火墙(Windows 系统)(Linux 系统)pf(FreeBSD / macOS 系统)这些防火墙通常提供基本的网络保护功能,并允许用户配置详细的规则来控制流量。出站规则和入站规则分别控制从计算机发出的流量和进入计算机的流量。

2024-07-20 19:02:24 1471

原创 web的运行

浏览器/服务器(Browser/Server,简称B/S)结构是一种网络架构模型,它利用Web浏览器作为客户端,服务器则提供应用程序服务和数据处理。中间件是介于应用系统和系统软件之间的一类软件,就比如apache,nginx,tomcat,lis这些中间件,网站是一个装修好的房子,中间件就是装修房子的钢筋混泥土。1.输入网站,如www.baidu.com(http://www.baidu.com),http是协议,www是网络服务类型,baidu.com是域名。4.发送用户HTTP请求给服务器;

2024-07-19 17:43:20 1164

原创 java坦克大战1.0——敌人坦克发射子弹+敌人消失+爆炸

因为我们设置的坦克是矩形的也就说他是一个规则的形状,那么在判断子弹和坦克的接触时,我们可以判断坦克的方向获得坦克的坐标然后和子弹的坐标相匹配。从而得到子弹是否进入了我们坦克的区域然后标记我们的坦克和子弹,并将坦克移除集合。在初始化的时候,增加了一个bombs集合来存储爆炸的效果,以及设置一次爆炸所需要的gif图片,当然也可以是两个,三个去做这个爆炸效果。我们在MyPanel类里面的 paint方法里面加了判断子弹,以及绘制子弹动画并移除的语句。我们在初始化敌人坦克的时候,我们加入一颗子弹。

2024-04-26 16:27:10 1240 1

原创 java学习——IO流

FileInputStream:文件输入流BufferedInputStream:缓冲字节输入流ObjectInputStream:对象字节输入流(类的继承关系)通过打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统中的File对象file指定通过使用文件描述符fdObj创建一个FileInputStream,该文件描述符表示到文件系统中的某个实际文件的现有连接。

2024-04-26 16:26:34 1036 2

原创 java坦克大战1.0——发射子弹

在画板类里面我们增加了一个监听按键,以及监听j的按键为了启动子弹的线程。并在画板上面建立一个线程为了绘制子弹。这个线程是为了让画板在执行。因为如果不去为了画板开一个线程,那么子弹就会画了一次就结束了,后面线程虽然还在运行。因为这个子弹相对于坦克其实是相对独立的,所以我们把他单独一个类,并且做个线程处理。在run方法里面我们根据坦克的方向绘制出子弹的运动方向和轨迹。我们对于hero增加了一个方法,把坦克的参数传到子弹类里面去。并开启了shot的线程。在主进程里面加一个画板的进程开启就行了。

2024-04-20 15:09:58 773

原创 java学习——互斥锁

1.java语言里,引入了对象互斥锁的概念,来保证共享数据操作的完整性。2.每个对象都对应于一个可称为互斥锁的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。3.关键字synchronized来与对象的互斥锁联系,当某个对象用synchronized修饰时,表明该对象在任一时刻只能由一个线程访问。4.同步的局限性:导致程序的执行效率要降低。5.同步方法(非静态的)的锁可以是this,也可以是其他对象(要求是同一个对象)。6.同步方法(静态的)的锁是当前类本身。

2024-04-17 17:42:30 394 4

原创 java坦克大战1.0——实现上右下左+绘制敌人坦克

设置画布的大小,以及可视化方法setVisble(true),我们这里说一下setVisble和dispose在我们使用dispose()和setVisble(false)的时候,我们会发现结果都是一样的,但是对于dispose来说,他是对资源直接破坏并且释放资源到内存里去,而setVisble只是隐藏。然后再通过监听事件,去实现改变hero里面direct的值,从而改变坦克的方向。主要改动在于,我们利用Vetor集合去存敌人的坦克,利用for循环绘制敌方坦克。继承tank类,封装tank类。

2024-04-17 17:40:54 609

原创 java学习——线程死锁+释放锁

多个线程占用了对方放入锁资源,但不肯相让,导致了死锁,在编程里面是一定要避免死锁的发生。

2024-04-16 22:00:24 812 1

原创 java学习——线程的生命周期

我们new一个线程,那么线程就处于一个new被创建的状态,然后我们调用start()方法后,就是进入了可运行状态(Runnable 状态),Runnable状态细分为两个状态Ready状态和Running状态。下面就是我们的用户态。这里如果将Runnable状态细分为两个状态那么就是7个状态,不然就是上面写的六个。然后在运行过程中我们调用了不同的方法,我们会进入不同的状态。开始,我们从New状态,通过start方法 进入了RUNNABLE状态,然后我们可以看到在sleep的作用下,我们线程进入了超时等待。

2024-04-16 00:04:12 553 1

原创 java学习——守护线程

我们在这里调用setDaemon()方法,把一个线程设置为守护线程。守护线程是在进程中所有线程都结束的时候的结束。这里我们开启了一个子线程,并把这个子线程设置为守护线程。守护线程是在所有线程结束后自动结束。所以我们使用场景一般在垃圾回收机制。2.守护线程:一般是为工作线程服务的,当所有的用户线程结束,守护线程自动结束。1.用户线程:也叫工作线程,当线程的任务执行完成通知方式结束。我们可以看到,在主线程结束的时候,接下来,守护线程就结束了。3.常见的守护线程:垃圾回收机制。

2024-04-15 23:53:09 473 2

原创 java学习——线程的退出,中断,插队以及常用方法

1.setname()//设置线程的名字2.getname()//获得线程的名字3.start()//启动线程4.run()//重写线程执行的代码5.setPriority()//设置优先级6.getPriority()//获得优先级7.sleep()//休眠8.interrupt()//中断,不结束线程,只是中断某一次线程的执行9.join()//插队,暂时停止正在执行的线程,执行新的线程。

2024-04-15 20:46:37 513 1

原创 java学习——线程同步机制

2.也可以理解成:线程同步,即有一个线程在对内存进行操作时,其他线程都不能对这个内存地址进行操作,直到该线程完成操作,其他线程才能对该内存地址进行操作。1.在多线程编程里面,一些敏感数据不允许被多个线程同时访问,此时就使用同步访问技术,保证数据在任何时刻,最多有一个线程访问,以保证数据的完整性。然后,在num已经为0的情况下再执行--,所以这个时候我们实现同步机制,同步机制分为同步代码块和同步方法两种。同步机制解决的问题就是复用性的问题,也就是说,同一时间,同一份资源只能一个对象访问。

2024-04-11 20:26:25 429 1

原创 java学习——线程基本使用

他们都实现了同一个接口,我们在实现被代理类的时候,我们不直接调用,而是转到代理类里面,去实现,当然我们最后调用的还是被代理类的方法,但是我们可以用代理类对方法进行处理。我们用T1,T2两个类去分别实现两个线程的创建,子线程的创建我们用的是实现Runnable接口来创建,然后我们在main主线程里面启动两个子线程。上面的代码我们有三个步骤,第一重写了run方法,第二在run方法里面我们使用了Thread.sleep方法做延迟,第三在我们调用这个线程的时候,我们底层使用的是start0()方法。

2024-04-09 21:13:47 1112

原创 java坦克大战1.0——小球移动案例+事件处理机制

当事件发生时,产生事件的对象,会把此“信息”传递给“事件的监听者”处理,这里的信息就是java.awt.event事件类库里某个类所创建的对象,把它称为“事件的对象”对于tank游戏来说,第一个需要实现的功能就是移动,怎么让tank移动起来是我们首先要解决的问题,这里为了直观并易于理解我们用小球来举例,在移动小球的处理来说我们在这里引用了一个事件监听器叫做Keylistener。3.事件:事件就是承载事件源状态改变时的对象,比如键盘事件,鼠标事件,窗口事件等等。当一个组件隐藏,移动,改变大小时发生。

2024-04-06 22:18:29 603 1

原创 java坦克大战1.0——java绘图技术

这个方法可以在画板上画一条斜线,x1,y1和x2,y2分别是指起点和终点的坐标,以java坐标系为参考对象,例子如下。这个方法可以画出一个矩形边框,参数和画椭圆一样,x,y代表距离x轴y轴的宽度width和height表示宽和高。在绘制的过程中,我们一般默认边框或是填充的颜色都是黑色,我们通过这个方法可以改变颜色。用来绘制矩形填充图形,参数和上面矩形边框差不多。画个字符串,str是要输出的字符串,x,y是位置。椭圆填充函数,参数列表参考画椭圆边框。

2024-03-28 20:43:17 418 2

原创 JAVA坦克大战1.0——绘图入门和机制

但这里和平时不同的是,我们这里继承了一个JFrame类,这里的JFrame类是一个框架,所以我们这里理解起来就不要从底层代码来理解他这样会增加我们理解的难度。而我们的画板就是刚刚我们定义的MyPanel类,但是我们平时写代码并不会写公开类的构造函数(当然,这有可能是因为我之前写的代码比较简单),但这里为了把画板嵌入到框架里面去,我这里先定义了一个类对象指向画板,让通过this.add()把画板嵌入,然后用setSize()定义画框的大小,然后用setVisble(true)让内容可视化。

2024-03-28 16:12:31 1053 2

原创 深度学习笔记2——Tranforms的使用

对于tensor我们首先得有一个最简单的认识,那就是他是一种图片打开的类型,关于这种类型我们常用的有三种,一种是PIL他是由Image.open()打开的,第二章就是tensor他是用ToTensor()打开的图片类型,最后一种就是narrays是cv.imread()打开的,这里我们先讲Tensor的用法和数据结构。我们发现在这个类里只有三个函数,第一个是初始化函数,第三个是相当于java里面的toString方法,就是为了返回一个字符串,但造成上面的结果的第二个函数。的模块,并将其重命名为。

2024-03-27 21:53:07 997 1

原创 深度学习笔记1——Tensorboard的使用

这个函数的tag是标签和我们上面的writer.add_scalar()函数一样,但是第二个参数是图像数据,而这个数据是torch.Tensor, numpy.ndarray, or string/blobname对应的对象属性,所以我们这里需要将我们的图像文件通过numpy库转换数据类型。这里port是端口的意思,就在这个插件运行的时候会在默认端口6006生成一个网页,并且传递给你相应的网址,但对于6006默认端口,有时候我们会与其他线程冲突。我们想要生成对比图,可以用不同的标签,生成文件。

2024-03-24 20:26:36 1113 3

空空如也

空空如也

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

TA关注的人

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