- 博客(128)
- 收藏
- 关注
原创 DMZ区域
摘要:DMZ(隔离区)是位于外网与内网之间的缓冲子网,通过双层防火墙实现安全隔离。其核心作用是为需要对外服务的服务器(如Web、邮件服务器)提供独立区域,即使被攻击也不会影响内网安全。DMZ采用严格的访问控制策略:允许外网访问DMZ但禁止访问内网,允许内网访问外网和DMZ,同时禁止DMZ主动访问内网。这种架构通过源地址转换等技术,有效保护内网数据安全,是企业网络安全防护的重要方案。
2025-12-20 23:25:21
425
原创 Caused by:com.microsoft.sqlserver.jdbc.SQLServerException: 通过端口 1433 > 连接到主机 localhost 的 TCP/IP 连接失败
SQL Server连接1433端口失败的解决方法:首先检查端口监听情况(netstat命令),确认是否为默认实例(服务名判断),临时关闭防火墙排查。关键步骤是通过SQL Server配置管理器启用TCP/IP协议,设置IPAll的TCP端口为1433并重启服务。对于JFinal框架需确保连接字符串包含encrypt=false和trustServerCertificate=true参数,并验证账号密码正确性。终极方案包括修复SQL Server安装、改用127.0.0.1地址或查看错误日志。问题通常由TC
2025-12-14 23:14:05
843
原创 使用Kaptcha插件实现算术验证码的生成
Kaptcha是一个开源验证码生成库,用于Web应用安全防护。它通过生成包含扭曲文字或数学公式的图片,要求用户识别输入,有效防御自动化攻击。Kaptcha支持自定义配置,包括字体、颜色、干扰元素等,生成的验证码存储在Session中。实现过程包括引入依赖、配置生成器、创建验证码图片并返回Base64编码。该方案提升了用户体验和系统安全性,是防止恶意机器操作的常用解决方案。
2025-12-07 17:39:54
675
原创 PostgreSQL在Linux中的部署和安装教程
本文详细介绍了PostgreSQL 12.5在Linux系统上的安装与配置流程。主要内容包括:从官网下载相应版本,通过FinalShell/XFTP等工具上传到虚拟机;解压安装包并配置安装路径;创建postgres用户和数据目录,设置权限;配置环境变量并初始化数据库;修改监听端口和访问权限;最后介绍了数据库基本操作命令和卸载方法。文中还提供了常见报错解决方案和相关参考文档,涵盖了从安装到管理的完整操作指南。
2025-10-12 19:47:50
1208
原创 文件类型的数据后端应该如何获取
文章摘要:本文主要讨论了前端传递Base64编码的处理方法,强调了纯Base64编码(不含MIME前缀)的传输方式。同时提供了Base64编码示例,展示了如何通过代码实现编码的传递。此外,还涉及了前端与后端交互时对Base64数据的处理建议,确保数据传输的完整性和正确性。文章内容简洁明了,重点突出Base64编码在前端应用中的实际使用场景和注意事项。
2025-09-21 22:06:16
1602
原创 Java8的新特性
2.设计很差 − Java的日期/时间类的定义并不一致,在java.util和java.sql的包中都有日期类,此外用于格式化和解析的类在java.text包中定义。新的java.time包涵盖了所有处理日期,时间,日期/时间,时区,时刻(instants),过程(during)与时钟(clock)的操作。1.非线程安全 − java.util.Date 是非线程安全的,所有的日期类都是可变的,这是Java日期类最大的问题之一。事实上,这并不是语言层面上的改变,更多的是编译器的技巧,底层的原理保持不变。
2025-03-14 23:05:36
970
1
原创 Java并发编程11--线程池
有助于避免 this 逃逸问题。this 逃逸:在构造函数返回之前其他线程就持有该对象的引用. 调用尚未构造完全的对象的方法可能引发令人疑惑的错误。Executor 框架不仅包括了线程池的管理,还提供了线程工厂、队列以及拒绝策略等,Executor 框架让并发编程变得更加简单如果当前同时运行的线程数量达到最大线程数量并且队列也已经被放满了任务时:抛出 RejectedExecutionException来拒绝新任务的处理。:调用执行自己的线程运行任务,也就是直接在调用execute。
2025-02-18 22:15:08
1326
原创 Java并发编程10--AQS
AQS 的全称为(AbstractQueuedSynchronizer),这个类在包下面AQS 是一个用来构建锁和同步器的框架,使用 AQS 能简单且高效地构造出应用广泛的大量的同步器。
2025-02-18 12:56:51
1063
原创 Java并发编程9--线程间的通信
类型的变量副本,每个线程对其副本的操作互不影响。首先获取对象的锁,然后调用对象的。方法,放弃锁并进入对象的等待队列。随后获取对象的锁,并调用对象的。为每个线程维护了一个独立的。
2025-02-18 10:04:39
896
原创 Java并发编程8--线程
进入等待状态的线程需要依靠其他线程的通知才能够返回到运行状态,而超时等待状态相当于在等待状态的基础上增加了超时限制,也就是超时时间到达时将会返回到运行状态。现代操作系统调度的最小单元是线程,也叫轻量级进程(Light Weight Process),在一个进程里可以创建多个线程,这些线程都拥有各自的计数器、堆栈和局部变量等属性,并且能够访问共享的内存变量。通过调用线程的start()方法进行启动,随着run()方法的执行完毕,线程也随之终止。方法执行完毕),即便该线程在终结前被中断过,调用该线程对象的。
2025-02-17 21:58:24
416
原创 Java并发编程7--双重检查锁定
在Java程序中,有时候可能需要推迟一些高开销的对象初始化操作,并且只有在使用这些对象时才进行初始化。此时,程序员可能会采用迟。但要正确实现线程安全的延迟初始化需要一些技巧,否则很容易出现问题。在早期的JVM中,(甚至是无竞争的)存在巨大的性能开销。因此, 人们想出了一个聪明的技巧:双重检查锁定(人们想通过双重来降低同步的开销。假设A线程执行代码1的同时B线程执行代码2。此。
2025-02-17 21:21:57
807
原创 Java并发编程5--Java内存模型的基础
JMM(Jlava Memory Model)Java内存模型:定义了共享内存中多线程程序读写操作的行为规范,通过这些规则来规范对内存的读写操作从而保证指令的正确性。面试题:什么是JMM?JMM(Jlava Memory Model)Java内存模型:定义了共享内存中多线程程序读写操作的行为规范,通过这些规则来规范对内存的读写操作从而保证指令的正确性JMM把内存分为两块,一块是私有线程的工作区域(工作内存),一块是所有线程的共享区域(主内存)
2025-02-17 19:31:33
512
原创 Java并发编程4--Java并发机制的底层实现原理
JMM(Jlava Memory Model)Java内存模型:定义了共享内存中多线程程序读写操作的行为规范,通过这些规则来规范对内存的读写操作从而保证指令的正确性。在不同的硬件和不同的操作系统下,内存的访问是有一定的差异的,这种差异会导致相同的代码在不同的硬件和不同的操作系统下有着不一样的行为,而 Java 内存模型就是解决这个差异,统一相同代码在不同硬件和不同操作系统下的差异的。所有的变量(实例变量和静态变量)都必须存储在主内存中,每个线程也会有自己的工作内存。
2025-02-13 19:59:02
990
原创 JVM的类加载器
JVM只会运行二进制文件,类加载器的作用就是将字节码文件加载到JVM中,从而Java程序能够启动起来。加载某一个类,先委托上一级的加载器进行加载,如果上级加载器也有上级,则会继续向上委托如果该类委托上级没有被加载,子加载器尝试加载该类加载:查找和导入class文件验证:保证加载类的准确性准备:为类变量分配内存并设置类变量初始值解析:把类中的符号引用转换为直接引用初始化:对类的静态变量,静态代码块执行初始化操作使用:JVM 开始从入口方法开始执行用户的程序代码。
2025-02-12 20:58:11
1550
原创 JVM组成
Java堆是一个线程共享的区域:主要用来保存对象实例,数组等,当堆中没有内存空间可分配给实例,也无法再扩展时,则抛出OutOfMemoryError的异常保存类信息,静态变量,常量,编译后的代码。Java Virtual machine Stacks(java 虚拟机栈)每个线程运行时所需要的内存,称为虚拟机栈,先进后出每个栈由多个栈帧(frame)组成,对应着每次方法调用时所占用的内存每个线程只能有一个活动栈帧,对应着当前正在执行的那个方法方法区(Method Area)
2025-02-12 19:55:46
1379
原创 Java并发编程3--多线程程序的创建及安全性问题
这段 Java 代码主要的功能是创建 10000 个线程,每个线程会计算从 0 到 1000 的整数之和,然后将这个和累加到类的静态变量result中。最后,主线程等待 10 秒后输出result的值。
2025-02-11 21:45:42
698
原创 Java并发编程2--死锁和银行家算法
是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。称此时系统处于死锁状态或系统产生了死锁。称这些永远在互相等待的进程为死锁进程。
2025-02-11 18:46:36
1172
原创 Java并发编程1--并发的挑战+任务调度算法
综合考虑了等待时间和运行时间,当等待时间相同时,要求服务时间短的优先(SJF 算法的优点);当要求服务时间相同时,等待时间长的优先(FCFS 算法的优点)。对于长作业来说,随着等待时间越来越久,其响应比也会越来越大,从而避免了长作业饥饿的问题。
2025-02-11 17:00:40
1238
原创 Lambda表达式以及Steam操作
在Java中,Steam流是一种强大的数据处理工具,它允许我们对集合进行各种操作,如筛选、过滤、映射、分组等。这些操作可能是中间操作,返回一个Steam流,也可能是终端操作,返回一个结果。与传统的集合操作相比,Steam流具有一些独特的优势。首先,Steam流的操作不会影响原始集合,也不会存储数据。这意味着我们可以在不改变原始数据的情况下对数据进行处理。在传统的集合操作中,我们通常需要将数据复制到另一个集合中,这可能会导致额外的内存开销。
2025-02-11 08:21:13
943
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅