- 博客(33)
- 收藏
- 关注
原创 网游和3A类型游戏的CPU选择分析
更大的L3缓存可以显著提高游戏的运行效率,减少CPU从主内存读取数据的次数,因此在大型游戏中,尤其是资源密集型的3A游戏中,缓存的大小对性能影响很大。新一代的架构通常会通过改进的工艺和设计,提供更好的性能和能效。AMD的Zen架构和Intel的Alder Lake架构都是各自系列中的佼佼者。许多游戏,尤其是老款或简单的游戏,对单核性能的依赖性较大。单核性能对于需要快速反馈的游戏尤其重要,而多核性能在处理复杂和资源密集的场景中则显得格外重要。一些游戏,尤其是现代的3A大作,已经开始全面利用多核处理器的优势。
2024-09-25 17:05:39 2032
原创 String、StringBuffer、StringBuilder的区别和用法
特性String不可变性是否否线程安全是是否性能较低(频繁操作时)较高更高使用场景少量操作多线程环境单线程环境。
2024-09-08 22:48:37 391
原创 性能测试的重要性与实施策略
在当今数字化时代,软件应用程序和系统的性能直接影响到用户体验和业务效率。因此,性能测试作为软件开发生命周期中不可或缺的一部分,其重要性愈发凸显。
2024-07-25 21:12:41 1023
原创 自动化测试:提升软件质量的利器
自动化测试是指利用专门的测试工具和脚本,自动执行测试用例,以验证软件系统的功能和性能是否满足预期要求。与传统的手动测试相比,自动化测试更加高效、准确,能够重复执行同样的测试用例,不受人为因素影响。
2024-07-25 21:06:13 829
原创 JVM 内存结构、垃圾回收机制与并发容器
在现代程序设计中,Java 语言以其强大的功能和广泛的应用被广泛采用。理解 Java 虚拟机(JVM)的内存结构、垃圾回收机制以及并发容器,能够帮助开发人员有效管理内存、提升性能,并编写高效的并发程序。本文将深入探讨这些主题,以期帮助读者更好地理解 Java 的内在机制。
2024-07-24 21:55:43 839
原创 测试用例的设计方法
在软件测试过程中,测试用例的设计是确保软件质量的重要环节。良好的测试用例不仅能够有效发现软件中的缺陷,还能提升测试的效率。在众多的测试用例设计方法中,等价类划分、边界值分析和因果图法是三种非常关键且广泛应用的技术。本文将详细探讨这三种方法的原理、应用及其优缺点。
2024-07-24 21:47:41 1049
原创 DNS劫持
DNS劫持:一种网络安全威胁的深入分析在当今网络日益发达的时代,互联网已经成为了人们日常生活中不可或缺的一部分。然而,随着网络技术的进步,网络安全问题也愈发突出。其中,DNS劫持作为一种常见的网络攻击方式,越来越引起了人们的关注。本文将对DNS劫持的工作原理、常见形式、影响及防范措施进行深入探讨,以帮助读者更好地理解这一网络安全威胁。
2024-07-23 22:55:35 1085
原创 SQL注入
若应用程序未实施严格的输入验证,攻击者将可以通过构造特定的输入数据,直接操控SQL查询。例如,当用户输入用户名和密码时,如果应用程序仅简单地将这些输入嵌入SQL查询中,而未加以处理,攻击者就可以利用这一点进行攻击。SQL注入是指攻击者通过向应用程序的输入字段中插入恶意的SQL代码,从而干扰数据库的正常运行,甚至直接获取、篡改或删除数据库中的信息。在处理用户输入时,应当进行严格的验证和清理。在这种方法中,SQL语句与用户输入的数据是分开的,程序在执行查询时会首先定义SQL命令,然后通过参数传递输入值。
2024-07-23 22:45:34 773
原创 七大基于比较的排序算法
基于比较的排序算法是指通过比较元素之间的大小关系来确定元素的排列顺序的算法。这类算法的时间复杂度下界为O(n log n)。根据不同的策略和实现,常见的基于比较的排序算法包括插入排序、选择排序、冒泡排序、归并排序、快速排序、堆排序以及希尔排序。以下对这七种排序算法进行详细介绍。
2024-07-22 22:48:43 1350
原创 时间和空间复杂度
时间复杂度是用来描述算法执行所需时间与输入规模之间关系的函数。换句话说,时间复杂度衡量的是算法在最坏情况下所需的时间。通常,时间复杂度用大O符号表示,例如O(n)、O(log n)等。空间复杂度是用来描述算法在执行过程中所需空间(内存)与输入规模之间关系的函数。空间复杂度同样是利用大O符号表示。
2024-07-22 22:28:54 424
原创 对JVM及Java并发编程的简单了解
在现代软件开发中,Java作为一种广泛使用的编程语言,其运行在Java虚拟机(JVM)上的特性,使得其在跨平台、内存管理以及并发编程方面展现出了强大的优势。Java还提供了一些原子变量类,如AtomicInteger、AtomicReference等,这些类通过使用底层的CAS(Compare and Swap)算法,提供了一种轻量级的并发控制机制,极大地简化了多线程编程的复杂性。通过线程池,可以有效地控制线程的最大数量、任务的调度和执行,从而降低线程创建和销毁的开销,实现高效的资源利用。
2024-07-21 22:25:36 777
原创 网络编程:UDP数据报套接字编程与TCP流套接字编程
网络编程是现代计算机科学和工程领域中一个极为重要的主题。无论是构建分布式系统,还是编写互联网应用程序,网络编程的基本原理都潜移默化地影响着系统的架构、性能和可靠性。在这一领域,套接字(Socket)是实现网络通信的基础,特别是UDP(用户数据报协议)和TCP(传输控制协议)的使用,成为了开发者日常工作中的核心内容。本文将深入探讨UDP数据报套接字和TCP流套接字的编程方法及其各自的特点与应用场景。
2024-07-21 22:11:14 962
原创 网络原理:TCP 连接与释放、网络模型结构及常用网络协议
传输控制协议(Transmission Control Protocol,简称 TCP)是一种面向连接的、可靠的传输层协议,广泛应用于现代网络通信中。TCP 提供了数据的可靠传输、流量控制和拥塞控制等功能,确保数据在不稳定的网络环境中也能准确无误地到达接收方。
2024-07-21 21:51:36 1137
原创 Java面向对象程序三大特性:封装、继承、多态
通过合理地运用这三大特性,开发者能够将复杂的问题分解为更小的、易于管理的单位,大大提升了软件开发的效率和质量。封装是面向对象程序设计的基础,指的是将对象的状态和行为封装在一起,并对外提供访问接口。在该示例中,Manager类继承自Employee类,拥有Employee类的所有属性和方法,并能够重写work()方法来实现自己的行为。简化接口:通过封装,用户只需关注对象提供的接口,而不必关心其具体实现,降低了程序的复杂性。3.多态性:通过继承支持多态特性,使得同一接口可以有不同的实现,增强了系统的灵活性。
2024-07-20 22:54:37 937
原创 Java 语言及其常用集合类的操作,以及反射机制与注解
Java 语言由 James Gosling 等人于 1995 年首次发布,并在 Sun Microsystems (后被 Oracle 收购) 的支持下迅速传播。Java 的设计理念是“一次编写,到处运行”。这一理念帮助开发者编写不依赖于特定平台的代码,利用 Java 虚拟机 (JVM) 的跨平台特性,使得 Java 成为了企业级应用的首选语言之一。Java 语言在语法上与 C++ 相似,但它设计得更为简洁,省略了指针和多重继承等复杂特性,同时引入了自动垃圾回收机制,极大地减少了内存管理的复杂性。
2024-07-20 22:44:10 975
原创 对Spring、SpringMVC、MyBatis框架的介绍与解释
在现代软件开发中,框架的使用极大地提高了开发效率和维护性。特别是在Java生态系统中,Spring、SpringMVC和MyBatis这三个框架因其强大的功能和灵活性而广泛应用于企业级应用开发。本文将对这三个框架进行详细介绍与解释,分析它们的特性及各自的适用场景。Spring框架是一个为Java平台提供全面基础设施支持的开源框架,其核心理念是通过控制反转(IoC)和面向切面编程(AOP)来简化企业级应用程序的开发。Spring的设计目标是促进松耦合、提高可测试性并简化配置。
2024-07-19 20:20:59 1333
原创 总结 File 类的用法和 InputStream, OutputStream 的用法
在Java编程中,File类和InputStream、OutputStream类是处理文件和数据流的重要工具。在本文中,我将总结这些类的用法,以帮助我们更好地理解和应用它们。首先让我们来看看File类。File类用于表示文件和目录的抽象路径名。我们可以使用File类来创建、删除、重命名文件或目录,以及获取文件属性等操作。
2024-07-19 19:59:54 498
原创 TCP连接与释放
主要状态包括:CLOSED(关闭)、LISTEN(监听)、SYN_SENT(同步已发送)、SYN_RCVD(同步已接收)、ESTABLISHED(已建立)、FIN_WAIT_1(FIN已发送)、FIN_WAIT_2(FIN已接收)、TIME_WAIT(等待重启)、CLOSE_WAIT(关闭等待)和LAST_ACK(最后确认)。例如,当一方发送FIN后进入FIN_WAIT_1状态,如果在规定时间内没有收到对方的ACK,就会进入TIME_WAIT状态,等待一段时间后才会彻底关闭连接。
2024-07-18 20:22:37 1288
原创 乐动网介绍
该网站主要实现了以下几个功能:1. 登录 2. 上传⾳乐 3. 删除指定⾳乐 4. 批量删除选中的⾳乐 5. 查询你想要的⾳乐 6. 添加⾳乐⾄喜欢的列表 7. 移除喜欢的⾳乐。在管理自己的音乐资源时,用户难免会遇到需要删除某些音乐的情况。乐动网贴心地提供了删除指定音乐的功能,用户可以快速定位并删除不需要的音乐文件,维护自己的音乐库。
2024-07-18 08:31:15 447
原创 【项目】星辰博客介绍
用户登录成功之后,携带Cookie(里面有SessionId)继续执⾏查询操作,比如查询博客列表.此时请求转发到了第⼆台机器,第⼆台机器会先进⾏权限验证操作(通过SessionId验证⽤⼾是否 登录),此时第⼆台机器上没有该⽤⼾的Session,就会出现问题,提示用户登录,这是我们不能忍受的。1. 用户登录 用户登录请求,经过负载均衡,把请求转给了第⼀台服务器,第⼀台服务器进⾏账号密码 验证,验证成功后,⽣成⼀个令牌,并返回给客⼾端.log.error("token校验失败,token:",token);
2024-07-17 23:14:51 1289
原创 Session 和 Cookie的区别
总结,Cookie 通常用于在客户端存储少量信息,而 Session 则用于在服务器端管理用户会话信息。开发人员可以根据具体场景和需求选择使用 Cookie、Session 或两者结合来实现用户数据的存储和管理。Session 和 Cookie 是用于在 Web 开发中存储和管理用户数据的概念。
2024-07-17 20:24:47 294
原创 总结 IO、存储、硬盘、文件系统相关常识
在计算机科学领域中,IO(输入/输出)、存储、硬盘以及文件系统是非常重要的概念。在本篇博客中,我们将重点讨论文件系统的相关知识,并对IO、存储和硬盘等概念进行总结和梳理。
2024-04-28 23:18:22 855 1
原创 HashTable, HashMap, ConcurrentHashMap 之间的区别
在选择适合的哈希表实现时,我们需要根据具体的需求和场景来决定。如果应用程序是单线程的,可以选择 HashMap 来提高性能;如果需要在多线程环境下使用,可以考虑使用 ConcurrentHashMap 来确保线程安全性和性能;而如果需要线程安全性且不关心性能问题,可以选择 HashTable。无论选择哪种哈希表实现,都应该根据具体的情况来权衡各种因素,并了解它们之间的区别,以便做出最合适的选择。哈希表是常用的数据结构之一,对于高效地存储和检索键值对数据非常重要。!!希望多多指出不足之处!!!
2024-04-15 15:33:19 817 1
原创 synchronized 和 ReentrantLock 之间的区别
在 JDK 1.6 之后,synchronized 关键字在实现上进行了很多优化,性能已经得到了很大的改善,因此在低并发情况下,synchronized 的性能可能会比 ReentrantLock 稍微好一些。这是因为 ReentrantLock 提供了更多的灵活性和控制,例如提供了可中断的锁获取、超时的锁获取、公平性选择等功能,使得在高并发环境下能够更好地控制线程的调度和性能。synchronized是隐式的,即编译器会自动添加锁的获取和释放操作,希望大家多多指出不足之处!
2024-04-15 14:43:25 532 1
原创 解读synchronized关键字
在Java编程中,synchronized是一个关键字,用于实现线程同步。在多线程环境下,如果不加以控制,可能会导致数据竞争和不确定的结果。因此,synchronized关键字是非常重要的,可以确保多个线程之间的协调和互斥。
2024-04-15 06:00:00 816 1
原创 锁策略, cas 和 synchronized 优化过程
在并发编程中,锁策略是非常重要的一环。正确的锁策略可以提高程序的性能和并发能力,而错误的锁策略可能导致死锁和性能下降。在Java中,常见的锁策略有CAS和synchronized两种。本文将总结这两种锁策略的优化过程。
2024-04-14 17:33:37 304 1
原创 悲观锁和乐观锁
总的来说,悲观锁适用于写操作频繁的场景,能够确保数据的一致性;而乐观锁适用于读操作频繁的场景,能够提高并发性能。在实际应用中,需要根据具体的业务场景和需求选择合适的锁策略。悲观锁和乐观锁是在并发编程中用于处理多线程访问共享资源时的两种不同策略。
2024-04-14 17:31:08 511 1
原创 Java 标准库线程池的创建方式
Java 标准库线程池的创建方式总共有三种:1. 使用 Executors 类中的静态方法创建线程池;2. 使用 ThreadPoolExecutor 类手动创建线程池;3. 使用 ScheduledThreadPoolExecutor 类创建定时任务线程池。
2024-04-13 18:02:38 887
原创 线程池的优点
降低线程创建和销毁的开销:线程池会提前创建一定数量的线程,当需要处理任务时直接从线程池中获取已经创建好的线程,避免了频繁地创建和销毁线程所带来的开销。控制并发线程数量:线程池可以限制同时执行的线程数量,避免因过多线程导致系统资源耗尽或性能下降的问题。提高系统稳定性:线程池可以有效地管理线程的生命周期,避免因线程失控导致系统崩溃的情况。提高响应速度:线程池中的线程可以复用,减少了线程创建的时间,提高了任务的响应速度。综上所述,线程池的优点在于提高了系统的性能、稳定性和资源利用率。
2024-04-09 21:59:36 303
原创 理解Java Thread类的基本用法
简单来说,直接调用run()方法不会创建新线程,代码在当前线程中执行;而调用start()方法会创建新线程,并在新线程中执行代码,实现多线程并发执行的效果。
2024-03-28 23:13:42 718 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人