Advertisement

牛客刷题心得总结.docx

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:DOCX


简介:
该文档详细记录了作者在牛客网进行编程练习的心得体会和解题技巧,涵盖算法优化、代码效率提升等多个方面,旨在帮助读者提高编程能力和面试水平。 牛客刷题总结 本资源主要涵盖了 Java 语言的基础知识点、设计模式以及事务处理的介绍。 一、Java 基础知识: 1. 在一个 Java 源程序中只能存在一个公共类,且该类名需与文件名称一致。这是因为 Java 程序从 main 方法开始执行,public 类为加载器提供入口点并找到其中的主方法来运行代码。如果源码中有多个 public 类,则编译器将无法确定应从哪个类启动程序。 2. 内部类可以被声明为公共(public),因为它们是外部类的一部分成员。 3. Math.floor() 方法返回小于参数的最大整数,例如 Math.floor(-4.2) 的结果为 -5.0。 4. 使用 Math.ceil() 可以得到大于给定数值的最小整数。如:Math.ceil(5.6) 等于 6.0。 5. 利用 Math.round() 方法可以实现对小数进行四舍五入,例如 Math.round(-4.6) 的结果为 -5。 6. Java 中数组被视为对象而非基本数据类型,它们占用连续的内存空间,并且一旦创建其大小便不可更改。因此,若要调整数组长度,则需要重新定义一个新数组并复制原数组内容至新的位置。 二、设计模式: 1. MVC(模型-视图-控制器)是一种软件架构样式,它将应用程序划分为三个主要部分:业务逻辑处理的模型层;数据展示与用户交互的视图层;以及负责协调两者之间的控制层。这种结构使得界面和用户体验可以独立于业务规则进行修改而不必重新编写后端代码。 三、重载和重写: 1. 重载指的是在一个类中定义多个具有相同名称但参数列表不同的方法,这些方法可以通过传递给它们的参数类型或数量来区分使用哪一个。这体现了多态性。 2. 当子类覆盖父类的方法时(即两者名字、返回值及输入参数一致),称为重写。此外,在实现此功能的过程中必须保持或者增加原有访问控制权限。 四、多态: 1. 多态是指不同对象接收相同的调用却能执行不同的操作,通过继承和方法的重新定义来达成。 2. 当我们对同一指令(即同名函数)实施时,根据被引用的对象类型决定具体行为方式。 3. 实现这一特性的条件包括:必须存在类之间的继承关系;子类需重写父类的方法以提供不同的实现。 五、事务处理: 1. 传播行为定义了方法调用的上下文环境中的事务边界。一共有七种这样的策略,如:PROPAGATION_MANDATORY, PROPAGATION_NESTED, PROPAGATION_NEVER等。 2. 隔离级别影响着数据库操作期间可能出现的问题类型,包括脏读(Dirty Read)、不可重复读(Non-repeatable Read)和幻象数据(Phantom Reads)。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • .docx
    优质
    该文档详细记录了作者在牛客网进行编程练习的心得体会和解题技巧,涵盖算法优化、代码效率提升等多个方面,旨在帮助读者提高编程能力和面试水平。 牛客刷题总结 本资源主要涵盖了 Java 语言的基础知识点、设计模式以及事务处理的介绍。 一、Java 基础知识: 1. 在一个 Java 源程序中只能存在一个公共类,且该类名需与文件名称一致。这是因为 Java 程序从 main 方法开始执行,public 类为加载器提供入口点并找到其中的主方法来运行代码。如果源码中有多个 public 类,则编译器将无法确定应从哪个类启动程序。 2. 内部类可以被声明为公共(public),因为它们是外部类的一部分成员。 3. Math.floor() 方法返回小于参数的最大整数,例如 Math.floor(-4.2) 的结果为 -5.0。 4. 使用 Math.ceil() 可以得到大于给定数值的最小整数。如:Math.ceil(5.6) 等于 6.0。 5. 利用 Math.round() 方法可以实现对小数进行四舍五入,例如 Math.round(-4.6) 的结果为 -5。 6. Java 中数组被视为对象而非基本数据类型,它们占用连续的内存空间,并且一旦创建其大小便不可更改。因此,若要调整数组长度,则需要重新定义一个新数组并复制原数组内容至新的位置。 二、设计模式: 1. MVC(模型-视图-控制器)是一种软件架构样式,它将应用程序划分为三个主要部分:业务逻辑处理的模型层;数据展示与用户交互的视图层;以及负责协调两者之间的控制层。这种结构使得界面和用户体验可以独立于业务规则进行修改而不必重新编写后端代码。 三、重载和重写: 1. 重载指的是在一个类中定义多个具有相同名称但参数列表不同的方法,这些方法可以通过传递给它们的参数类型或数量来区分使用哪一个。这体现了多态性。 2. 当子类覆盖父类的方法时(即两者名字、返回值及输入参数一致),称为重写。此外,在实现此功能的过程中必须保持或者增加原有访问控制权限。 四、多态: 1. 多态是指不同对象接收相同的调用却能执行不同的操作,通过继承和方法的重新定义来达成。 2. 当我们对同一指令(即同名函数)实施时,根据被引用的对象类型决定具体行为方式。 3. 实现这一特性的条件包括:必须存在类之间的继承关系;子类需重写父类的方法以提供不同的实现。 五、事务处理: 1. 传播行为定义了方法调用的上下文环境中的事务边界。一共有七种这样的策略,如:PROPAGATION_MANDATORY, PROPAGATION_NESTED, PROPAGATION_NEVER等。 2. 隔离级别影响着数据库操作期间可能出现的问题类型,包括脏读(Dirty Read)、不可重复读(Non-repeatable Read)和幻象数据(Phantom Reads)。
  • 大全
    优质
    《牛客刷题总结大全》是一份全面汇总和解析编程题目解答技巧的资料,旨在帮助程序员通过大量实践提升解题能力和技术水平。 关于牛客刷题总结的全部内容如下: 本资源主要概述了 Java 语言的基本概念、设计模式(特别是 MVC 模式)、数学函数的应用、方法重载与重写的区别,多态的概念以及数组的特点等知识要点。 一、Java 基础 1. 在一个 Java 文件中只能有一个 public 类,并且该类的名称必须和文件名一致。 2. 程序执行从 main 方法开始。main 方法作为程序入口点被加载器识别并启动,然后运行主方法中的代码逻辑。 二、设计模式:MVC 模式 1. MVC 即模型-视图-控制器,是一种软件架构规范。它将应用程序的业务规则(模型)、用户界面表示(视图)和用户交互功能(控制器)分离,使开发人员能够同时改进和定制显示与用户体验而不必重新编写业务逻辑。 三、数学函数 1. floor 函数:返回小于给定参数的最大整数值。 2. ceil 函数:返回大于或等于给定值的最小整数结果。 3. round 函数:对数字进行四舍五入处理后给出的结果。 四、重载与重写 1. 重载发生在同一个类中,方法名相同但参数列表不同(包括数量和类型)的情况;与此相反的是重写,即子类覆盖父类的方法时需要保持签名一致。 2. 若要实现多态性,则需满足三个条件:存在继承关系、方法必须被覆写以及使用父类型的引用指向子对象。 五、多态 1. 多态允许不同对象对同一消息做出不同的响应。这要求有层次结构(即类的继承)、特定函数在派生类中重新定义和通过基类型来操控具体实例。 2. 有关于实现这一特性的规则,包括但不限于上述提到的要求。 六、数组 1. Java 中数组被视为一种对象,并非原始数据类型;它们存储在同一内存块内且一旦创建其大小就不可更改。由于是对象,因此存放在堆中。 2. 数组的长度在初始化时确定下来后就不能再改变。若需调整大小,则需要通过新建一个具有适当尺寸的新数组并将旧数组中的元素复制过来以实现。 七、静态成员与方法 1. 使用 static 关键字声明的变量或函数可以由类名直接访问,也可以使用对象引用。 2. 非静态定义的功能只能通过特定的对象实例来调用。然而,对于静态成员和方法来说,则可以直接利用类名称进行操作。 八、事务属性 1. 传播行为决定了当一个带有事务的方法被另一个具有或没有活动事务的方法所调用时的行为方式。 2. 关于传播行为的几个重要选项包括:PROPAGATION_MANDATORY(强制性)、PROPAGATION_NESTED(嵌套式)、PROPAGATION_NEVER(禁止启动新事务)等。
  • 我的CTF笔记和
    优质
    我的CTF刷题笔记和心得总结记录了作者在网络安全竞赛中的学习历程与实战经验,涵盖各类解题技巧、策略分析及团队合作等多方面内容。 ### CTF刷题WP笔记解析 #### 1. SWPUCTF 2021 新生赛 —— whitegive_pwnV1 本题目聚焦于一个典型的CTF比赛中的二进制漏洞利用挑战,名为“whitegive_pwnV1”。通过对题目描述的解读,我们可以深入分析其中涉及的重要概念和技术细节。 ##### 一、背景介绍 - **题目概述**:“whitegive_pwnV1”是SWPUCTF 2021新生赛的一个二进制漏洞利用题目。题目给出的二进制程序大小为0x10+0x8,旨在覆盖rbp(基址指针),然后寻找返回地址来定位一个可利用的漏洞。 - **关键概念**: - **rBP**: 在函数调用过程中用于标记栈帧的顶部,是栈帧边界的一个标志。 - **返回地址**: 函数调用后返回的地址,通常位于函数调用现场保存的栈中。 - **GOT表**: Global Offset Table(全局偏移表),在ELF格式的程序中用于存储外部函数和变量的地址,以便于动态链接时进行重定位。 - **PLT表**: Procedure Linkage Table(过程链接表),包含了一些特殊的指令,用于实现动态链接过程中的跳转。 ##### 二、技术细节解析 - **公共漏洞**:“public vuln”在这里指的是公开的漏洞,即程序中存在的已知安全缺陷,这些缺陷可能被攻击者利用来进行未授权访问或数据破坏。 - **GOT表泄露攻击原理**: - **动态链接原理**: 在程序运行时,对于外部调用如`printf`等函数,编译时不知道具体的地址,只知道其在`.plt`表中的位置。当第一次调用这些函数时,程序会通过`.plt`表跳转到`.got.plt`中存储的地址,并完成重定位。 - **攻击思路**: 攻击者可以通过控制输入使返回地址被覆盖指向`.plt`中的某个条目,从而控制程序流并利用泄露的信息。 ##### 三、具体技术应用 - **泄露GOT表**:通过某种方式修改程序的返回地址使其指向前述位置以达到泄露目的。 - **重定位机制**: 在加载时,`.got`中存放的是需要进行重定位的地址信息。对于外部函数调用,除了`.got`外还需要通过`.plt`条目完成跳转。 - **利用LibcSearcher库**:为了确定libc版本及其基址,攻击者会使用该库搜索并匹配libc中的函数地址以计算出其在内存中的基地址。 ##### 四、示例代码解析 - **pwntools函数**: `recvuntil`用于接收socket数据直到遇到特定字符串。例如`data.recvuntil(bx7f)`表示从`data`接收数据直至遇到字节`x7f` - **数据处理**: 从接收到的数据中提取最后六个字节,并将其左对齐扩展至8字节,不足部分用0填充。 - `[-6:]`: 获取最后六个字节 - `.ljust(8, bx00)`: 将字符串左对齐并扩展为8个字节 “whitegive_pwnV1”题目不仅考察参赛者的二进制漏洞利用能力,还要求他们掌握GOT表泄露、动态链接和pwntools等关键技术。通过上述知识点的了解,参赛者可以更好地理解和解决此类问题。
  • 2048游戏.docx
    优质
    本文档为作者对经典数字益智游戏《2048》的心得体会进行系统性回顾与总结,分享了游戏技巧、策略及个人感悟。 标题中的“2048个人总结.docx”指的是一个关于使用Java进行2048小游戏开发的个人项目总结,并且明确这是针对Android平台的开发工作。“java android”的标签表明该项目结合了Java语言与Android开发技术。 在开发过程中,需要准备以下工具: 1. JDK(32位版本),用于编写和运行Java程序。 2. Eclipse,一个开源的集成环境,支持Java代码编辑及项目管理。 3. ADT插件,专门针对Eclipse进行Android应用开发设计。 4. SDK(Android 4.0及以上版),包含了一系列工具以帮助开发者构建、测试和发布应用程序。 需求分析阶段中确定了2048游戏的功能包括: 1. 左右滑动操作,使相邻的数字相加或移动; 2. 游戏重置功能,允许玩家重新开始。 3. 显示当前得分及最高分。 4. 随着数值变化调整方块颜色。 在详细设计阶段中,开发者完成了以下工作: 1. 设计了Card类,用于储存每个方格的数值和布局信息; 2. 创建GameView类来处理游戏界面滑动操作、动态计算卡片尺寸以及随机数生成,并判断游戏是否结束。 3. 在MainActivity类里包含游戏状态(如分数及最高分)、重新开始按钮等元素,实现分数显示与更新功能。 在代码实现过程中,例如向左移动的操作会遍历矩阵中的每一对相邻方块。如果左侧的方格非空,则将右侧方格值移至左边,并清空右边位置;若两侧数值相同,则合并并将其更新为两倍大小的新值。每次操作后都会检查是否有新的数字生成空间,如果没有则判断游戏是否结束。此外还实现了重新开始的功能。 开发2048小游戏不仅涉及到了Java编程基础和Android SDK的应用,还需要掌握自定义视图、用户交互处理以及游戏逻辑实现等技术要点。这是一项很好的实践项目,有助于提升在Android平台上进行游戏开发的能力。
  • 88E1111调试.docx
    优质
    本文档记录了作者在进行88E1111芯片调试过程中的心得体会和经验总结,包括遇到的问题、解决方法及优化建议等内容。 这是我对自己在设计88E1111过程中的总结,包括了设计过程中常见的错误以及调试时需要注意的事项,希望能对硬件工程师有所帮助。
  • WEB学习
    优质
    本文章整理了作者在WEB开发领域的学习经验与心得体会,涵盖了技术框架、编程语言及项目实战等方面的内容,旨在为初学者提供指导和建议。 这是比较基础的Web学习资源,有助于理解Web开发。
  • Python实战
    优质
    《Python实战心得总结》是一篇基于作者实践经验的文章,涵盖了编程技巧、项目开发和问题解决策略等内容,旨在帮助读者提高Python编程技能。 Python常用技巧和技术框架总结
  • Hadoop学习
    优质
    《Hadoop学习心得总结》是一篇系统梳理Hadoop技术框架与应用实践的文章,分享了作者在深入研究和项目实践中积累的经验、技巧及心得体会。适合初学者快速入门和进阶读者优化提升使用。 Hadoop学习总结:通过系统地研究和实践Hadoop框架及其生态系统组件,我掌握了分布式数据处理的核心技术,并对大数据解决方案有了深入的理解。在整个过程中,我对MapReduce、HDFS以及YARN等关键技术点进行了详细的探索与应用练习,不仅提升了理论知识水平,也增强了实际操作能力。 此外,在项目实践中运用所学技能解决具体问题时,我发现将复杂的数据集进行高效处理和分析是实现业务价值的关键所在。因此,持续优化算法以提高计算效率,并确保数据的安全性和可靠性成为了我学习的重点方向之一。 总之,这次Hadoop的学习经历使我对大数据技术有了全面的认识与掌握,在未来的工作中能够更好地应对相关挑战并推动技术创新发展。
  • Hadoop学习
    优质
    简介:本文档是作者在深入学习Hadoop过程中的心得体会和经验总结,涵盖了技术原理、实践应用及优化建议等内容。 Hadoop学习资料与经验总结对于初学者来说非常重要。通过阅读相关书籍、文档以及参与线上社区的讨论,可以更好地理解Hadoop的核心概念和技术细节。同时,实践经验也是不可或缺的一部分,例如搭建本地开发环境进行测试,或者在实际项目中应用所学知识来解决具体问题。这样的过程不仅能够加深对技术的理解,还能提高解决问题的能力。
  • CCNA实验
    优质
    本文章记录了作者在学习和实践CCNA(Cisco Certified Network Associate)认证过程中所遇到的问题、解决方法及心得体会。通过详细描述实验过程与技巧分享,帮助读者更好地理解和掌握网络配置与管理的基础知识。适合准备考取该证书或对计算机网络感兴趣的人群阅读参考。 **CCNA实验总结** 在计算机网络领域,Cisco Certified Network Associate(CCNA)认证是入门级网络工程师必备的技能证明。这个认证涵盖了网络基础知识、IP路由、交换机操作、网络安全等重要概念。以下是针对CCNA实验的详细总结,旨在帮助学习者深入理解并掌握这些关键知识点。 1. **网络基础知识** - IP地址:了解IPv4和IPv6地址结构,包括A、B、C类地址分类以及私有IP地址范围。 - 子网掩码与子网划分:通过子网掩码确定网络和主机位,并学习如何进行有效的子网划分以优化网络资源分配。 - 默认网关:理解其在网络通信中的作用,及配置和验证方法。 2. **路由器操作** - CLI命令行接口:熟悉Cisco路由器的命令行界面,包括基本导航、配置模式以及查看运行配置和启动配置等的操作。 - 配置接口:学习如何设置路由器接口的IP地址、速度、双工模式,并掌握开启或关闭接口的方法。 - 路由协议:理解静态路由与动态路由的区别,如RIP(Routing Information Protocol)、OSPF(Open Shortest Path First)等不同协议的配置和应用。 3. **交换机操作** - VLAN:了解虚拟局域网的概念,并掌握创建、删除及配置VLAN的方法以及实现VLAN间通信的技术。 - STP(Spanning Tree Protocol):理解STP的作用,防止网络中的环路问题及其基本命令的配置方法。 - VTP(VLAN Trunking Protocol):学习通过VTP同步不同交换机间的VLAN配置。 4. **IP路由** - 路由表:了解路由表的结构,并掌握查看和解析其中条目的技巧。 - 路由过程:探索路由器如何选择最佳路径,理解度量标准如跳数、带宽及延迟的影响。 - 动态路由协议:比较RIP、OSPF(开放式最短路径优先)、EIGRP等不同动态路由协议的工作原理和优缺点。 5. **网络设备互联** - 物理连接:了解不同类型网络线缆的使用场景,例如直通线、交叉线及光纤。 - Telnet与SSH:学习远程登录路由器和交换机的方法,并比较其安全性差异。 - NAT(Network Address Translation):理解NAT的工作原理及其配置方法以解决IP地址短缺的问题。 6. **网络故障排查** - Ping和Traceroute工具的使用来检测网络连通性和路径问题。 - 层次化诊断法:按照OSI模型七层结构分析并定位网络中的具体问题。 - 日志记录:了解如何启用及解析路由器与交换机的日志,以便更好地进行故障排除。 通过上述实验内容的学习和实践操作,你可以逐步熟悉CCNA认证的相关知识,并提升实际应用能力。理论结合实践是掌握这些技能的关键,请多做实验以巩固理解。希望本总结能为你的学习之路提供有价值的指导。