- 博客(116)
- 资源 (1)
- 收藏
- 关注
原创 《Java基础》变量和数据类型
在开始学习变量之前,我们思考一下为什么需要使用变量。首先我们从小开始学习加法减法的时候,后来我们再学更难的东西就是代数,其中的x和y是我们要求解的内容,这些内容就是变量。
2024-10-10 11:14:23 316
原创 Java学习内容总结
把单词按照语法组成句子,然后把句子通过一定的含义组成文章。在计算机中,我们将这种写成的文章称之为程序。浏览器的作用是进行交互,用户与服务器之间数据交互的一个通道。渲染:使用JavaScript引擎将后端传输的数据进行实时渲染。浏览器内核是指支持浏览器运行的最核心的程序,分为两个部分,一个是渲染引擎,另一个是JS引擎。渲染引擎在不同的浏览器中也不是都相同的。CS架构是client - server架构。从一个财务软件的故事开始:曾经在40年前,当时的工作还是包分配的,那时候我的成绩很好。
2024-10-08 20:33:22 1231
原创 (分治算法7)leecode 109将有序链表转换成二叉搜索树
由876.链表的中间节点这道题,可以找到链表的中间节点mid,然后我们根据这个mid来创建TreeNode节点,这时候同样需要分出左右区间,也就是将mid的前一个节点pre,pre->next = null;这样就可以把链表断开了,接下来只需要递归的执行上述过程就可以了。给定一个单链表的头结点head,其中的元素按升序排序,将其转换为平衡二叉搜索树。方法1:可以将问题转换成数组,然后在进行求解。
2024-06-18 16:22:10 216
原创 (分治算法6) leecode 108 将有序数组转换成二叉搜索树
我们可以选择中间数字作为二叉搜索树的根节点,这样分给左右子树的数字个数相同或者只相差1,可以使得树保持平衡。如果数组长度是奇数,则根节点的选择是唯一的,如果数组的长度是偶数,则可以选择中间位置左边的数字作为根节点或者选择根节点位置右边的数字作为根节点。确定了平衡二叉搜索树的根节点之后,其余数字分别位于平衡二叉树的左子树和右子树中,左子树和右子树分别也是平衡二叉搜索树,因此可以通过递归的方式创建平衡二叉树。给定一个单链表的头节点 head ,其中的元素 按升序排序 ,将其转换为平衡二叉搜索树。
2024-06-18 10:33:08 212
原创 (分治算法5)leecode 106 从中序和后续遍历序列构成二叉树
从中序遍历中可以找到root的坐标(无重复元素),那么中序遍历中该坐标的左边就是root中左子树的中序遍历序列,右边就是root右子树的中序遍历序列。1)使用递归,因为树或者子树的后序遍历和中序遍历序列在数组中都是连续的,所以我们可以使用边界来标记序列的长度。而在后序遍历中,可以依据中序遍历中得到的左子树序列长度切分出root左子树和右子树的后序遍历序列;这样我们就分别得到了root的左子树的后序序列,中序序列,以及root右子树的后序序列以及中序序列。空间复杂度:O(n+log(n))
2024-06-17 16:42:20 450
原创 (分治算法4) leecode 105 从前序与中序遍历构建二叉树
给定两个整数数组preorder和inorder,其中preorder是二叉树的先序遍历,inorder是同一棵树的中序遍历,请构造二叉树并且返回其根节点。然后从子树中,前序遍历的第一个元素就是左子树的根节点,这样的话我们就可以利用分治算法来构建二叉树。前序遍历的第一个就是根节点,根据根节点的位置,我们可以在中序遍历中知道这棵树的左子树和右子树。
2024-06-17 16:20:46 275
原创 (分治算法3)leecode 53 最大子数组和(最大子段和)
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。对于跨越两个数组的情况,我们可以从中间一定要包含左边界的数字或者右边界的数字,只需要一次遍历就可以了。这个问题可以分成从左半边数组找最大子段和从右半部分找最大子段和。子数组是数组中的一个连续部分。
2024-06-17 16:08:44 235
原创 (分治算法2)leecode 23 合并k个升序链表
因为是要合并K个有序列表,可以采用归并排序,先把第一个和第二个合并成功,合并完成的再和第三个合并。合并完成的再和第四个合并,合并完成的再和第五个合并。如果我们每次合并的数组尽可能的短,则我们的方法可以在更快地速度合并完所有数组,因此我们将所有的链表均分,然后将均分后的链表继续均分。请你将所有链表合并到一个升序链表中,返回合并后的链表。给你一个链表数组,每个链表都已经按升序排列。时间复杂度是O(nlogk)的。然后逐一合并两个链表。
2024-06-17 15:50:25 382
原创 (分治算法1)leecode第四题--寻找两个正序数组的中位数
然后比较一下上面的第3个数字和下面的第3个数字到底哪个更小。更小的那个,包括他前面的一定不可能是中位数,就不需要了。简单粗暴,先将两个数组合并,两个有序数组的合并排序也是归并排序的一部分,然后根据是奇数个还是偶数个,返回中位数。我们需要找的就是这两个数组中第7小的数字。其实,我们不需要真的将两个数组合并,我们只需要找到中位数在什么地方就可以了。空间复杂度:开辟了一个数组,保存合并后的两个数组 O(m+n)那么就可以找上面的和下面的第7/2=3(向下取整)的数字。我们只需要合并到中位数的位置就可以停止了。
2024-06-17 15:06:32 170
原创 《Unity5.x游戏开发基础》课后题-第一章
游戏引擎为了游戏设计者提供了图形图像渲染功能,物理模拟功能、碰撞检测功能、音频控制功能、程序脚本编写、动画系统、人工智能系统、网络系统、流处理、内存管理、线程管理等游戏开发所必须要的功能。传统的软件开发不涉及资源,物体贴图等功能,如果每次重新设计这些就得重新造轮子,因此选择一款游戏引擎就变得极为重要。UNITY圣典http://www.vfkjsd.cn/unity/Manual/index.html。首先一定是大众选择使用的,具有足够完善的社区和文档,第二个是好上手。这里面大都要钱,不缺钱可以看看。
2023-12-19 18:34:30 199
原创 JAVAnote多线程相关知识
并行:在同一时刻,在多个CPU上同时运行,二核四线程的话就是一次可以运行4个线程数据。并发:在同一个时刻,有多个指令在单个CPU上交替运行。1、拷贝、迁移大文件。2、加载大量的资源文件。3、利用callable接口的方式进行。2、实现Runable接口的方式进行。1、继承Thread类的方式实现。
2023-10-12 10:13:30 143
原创 原神启动原神启动原神启动原神启动
这些测试用例将有助于确保游戏抽卡场景的功能稳定、安全,玩家能够享受到正常的抽卡体验。在进行测试时,务必覆盖各种情况以捕获潜在的问题,并在测试过程中记录和跟踪问题,以便进行及时修复。28.测试在高负载下,例如多个玩家同时进行抽卡操作时,系统的性能是否仍然可接受。30.测试在系统崩溃或宕机后,用户是否能够正确恢复其抽卡历史和获得的物品或角色。17.测试使用不同类型的游戏货币进行抽卡,如虚拟货币、免费抽卡券等。5.检查游戏的抽卡机制,例如抽中稀有物品的概率、保底奖励等。15.验证保底机制是否按照游戏内规则运作。
2023-09-25 14:31:26 9745 8
原创 软件测试整理
目的 从质量特性的不同方面,对软件进行测试,检测该软件是否实现了SRS中所有显示和隐式的需求 利用不同的逻辑率到达某种程度的代码覆盖率(考虑全部程度的代码覆盖率会增加本)黑盒测试不检查内部的代码,因而无法清除所有的缺陷,当遗留的缺陷很多时会造成很大的影响,因此需要添加更为彻底的白盒测试。o 负载测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的前提下,系统所能承受的最大负载量;• 明确正在测试的项目,要测试的特性,要执行的测试任务,每个任务的负责人,以及与计划相关的风险。
2023-09-25 12:31:47 173
原创 谷歌软件测试之道笔记
Goole在平台方面有特定的目标,就是保持简单且统一,开发工作机和生产环境的机器都保持统一的Linux发行版本;开发团队在寻求测试帮助的时候,有义务让测试人员相信他们的产品是令人兴奋且充满希望的。理想情况下,对于开发人员来说,需要在开发的时候就考虑边界值。公共的代码库,和谐的工程工具、公司范围内的资源共享,成就了丰富的Google内部共享代码库与公共服务。在童话的世界里,软件测试开发工程师,我们可以考虑如何去破坏软件开发人员设计的代码。在设计阶段,SET在推进项目的同时也可以简化相关项目成员的工作。
2023-09-19 15:53:03 84
原创 JavaNote_1.0.4_对象序列化
Java中的序列化是指将一个Java对象“转换”为一串连续的byte字节(字节数组或者流),以便写入文件或者通过socket(套接字)发送出去。这一串字节码包括了对象的数据,以及其成员变量的类型信息(元信息)等。反序列化:将文件或者socket中读取字节,还原回Java对象。我们可以设计一种对象序列化的ObjectSerializer接口。链接。
2023-05-24 19:26:59 616
原创 JavaNote_1.0.3_动态代理
Java6 提供了Java Compiler API来动态编译Java代码。我们可以先生成java类的字符串或者文件,再使用Java Compiler API来动态编译Java类,最后再通过自定义ClassLoader来装载编译得到的字节码。需要依赖JDK的tools.jar。Java Compiler API的内容比较多,我们只需要关注下面两个主要的东西即可。
2023-05-24 19:24:26 113
原创 CodeNote_1.1.2_自定义序列化中,实现对int类型数据的加密和解密操作
每一个类都继承自Object类。其中的writeObject和readObject函数可以进行序列化和反序列化,重写的话,可以对数据进行加密。
2023-05-24 17:18:33 150
原创 CodeNote_1.1.1_Java序列化读取过程
Java自带序列化函数,其优点是安全可靠,兼容性好,缺点是无法跨语言,序列化后的流太大,性能很差。
2023-05-24 14:41:41 605
原创 CodeNode_1.1.0_Java序列化接口
Java中的序列化是指将一个Java对象“转换”为一串连续的byte字节(字节数组或者流),以便写入文件或者通过socket(套接字)发送出去。这一串字节码包括了对象的数据,以及其成员变量的类型信息(元信息)等。反序列化:将文件或者socket中读取字节,还原回Java对象。// 将指定对象序列化为字节数组 byte [ ] serialize(Object obj) throws IOException;
2023-05-24 13:39:02 73
原创 CodeNote_1.2.0_spring中bean的基本配置
在上述配置中,myFactoryBean 是 FactoryBean 的实例,通过 class 属性指定了实现类 com.example.MyFactoryBean。myProduct 是由 myFactoryBean 创建的产品对象,通过 factory-bean 属性指定了工厂 bean 的 ID,通过 factory-method 属性指定了工厂方法名 getObject。需要注意的是,FactoryBean 本身也是一个 Bean,因此需要给它定义一个唯一的 ID,并在其他地方引用它。
2023-05-21 07:20:58 474
原创 JavaNote_1.0.2_Spring
控制反转和面向切面编程是它的核心功能。一套全新的基础框架,用来快速搭建Spring应用,简化其配置和开发过程。Spring Cloud 是一系列分布式组件的集成框架。它基于Spring Boot为我们快速集成、搭建和部署分布式系统提供支持,包括服务发现与注册、配置管理、负载均衡、消息总线、服务熔断、服务监控等一系列组件功能。基于Spring Cloud的大数据处理开发框架,为基于微服务的分布式流处理和批处理数据通道开发提供了一系列编程模型和最佳实践。
2023-05-20 17:39:18 593
原创 CodeNode_1.0.9_单例模式
单例模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一对象的方式,可以直接访问,不需要实例化该类对象。
2023-05-20 17:33:13 98
原创 CodeNote_1.0.8_观察者模式相关代码
观察者模式(Observer Pattern)是一种行为型设计模式,用于在对象之间建立一种一对多的依赖关系,当一个对象的状态发生变化时,其依赖的其他对象会自动收到通知并进行相应的更新。:也称为被观察者或可观察对象,它维护一组观察者对象并提供注册、删除和通知观察者的方法。主题通常包含一个状态,当状态发生变化时会通知观察者。:也称为订阅者或监听者,它定义了一个接口或抽象类,用于接收主题的通知,并执行相应的操作。观察者通过订阅主题来表达对主题状态变化的兴趣。
2023-05-20 17:09:33 600
原创 CodeNote_1.0.7_SpringBean的三种注册方法
通过bean元素来配置Bean,其中id属性指定了Bean的唯一标识符,class属性指定了Bean的类名。在上述示例中,我们通过AnnotationConfigApplicationContext类加载了AppConfig配置类,并通过getBean()方法从容器中获取了MyBean的实例。在实际使用中,你可以根据自己的项目和类的结构来配置beans.xml文件,并根据需要定义更多的Bean和配置。使用@Bean注解来定义Bean的方法,方法名即为Bean的名称,方法返回值为Bean的实例。
2023-05-20 15:22:04 561
原创 CodeNote_1.0.6_反射用法实例
接着,使用get()方法获取了属性的值,并打印输出。然后,我们使用反射获取该类的构造函数Constructor对象,通过构造函数的newInstance()方法创建了MyClass类的实例。然后,我们创建了MyClass类的实例,并使用invoke()方法动态执行了printMessage()方法。此外,反射动态执行方法通常在需要动态地调用方法时使用,但在普通的编程场景中,直接调用方法更为常见和简单。请注意,使用反射可以动态地操作类的成员和方法,但要谨慎使用,因为它增加了复杂性并可能影响性能。
2023-05-18 21:33:30 67
原创 CodeNote_1.0.5_动态代理
最后,在DynamicProxyExample类中,我们使用Proxy.newProxyInstance()方法创建了动态代理对象,并将目标对象和代理对象绑定在一起。动态代理的好处之一是它可以在不修改原始类代码的情况下,为原始类添加额外的功能。在上述示例中,我们通过动态代理在方法执行前后添加了日志,而无需修改原始的CalculatorImpl类。此外,动态代理还可以实现面向切面编程(AOP),通过将一些通用的横切关注点(如日志、事务、安全等)从业务逻辑中分离出来,提供了更好的代码组织和维护性。
2023-05-18 20:29:23 72
原创 CodeNote_1.0.3_使用Exchanger中的exchange进行交换
名字上来说就是交换。Exchanger用于在两个线程之间进行数据交换,线程会阻塞在exchanger上,直到另一个线程也进入了Exchanger中的exchange方法。
2023-05-18 19:59:42 80
原创 CodeNote_1.0.2_使用循环屏障CyclicBarrier进行线程阻截,实现多核排序功能
循环屏障,可以协同多个线程,让多个线程在屏障前等待。直到所有线程都达到这个屏障的时候,再一起执行后面的动作。
2023-05-18 19:35:04 70
原创 CodeNote_1.0.1_使用CountDownLatch对多核机器上的数据进行排序
CountDownLatch方法可以等待所有的线程全部countDown,执行完变成0,然后再执行其他程序。
2023-05-18 19:21:12 63
原创 JavaNote1.0.1_Java中间件技术
今天要写的内容是分布式系统的构建、大型网站的构建以及Java中间件的基础知识。分布式系统的定义:A distributed system is one in which components located at networked computers communicate and coordinate their actions only by passing messages.分布式系统有两个重点,一个是组件分布在网络计算机上,第二是组件之间仅通过消息传递来通信并协调行动。
2023-05-17 22:09:02 542
原创 PAniC-3D: Stylized Single-view 3D Reconstruction from Portraits of Anime Characters
我们提出了PAniC-3D系统,可以直接从插画(肖像)中重建具有风格化的3D角色头部。我们的动漫风格领域对于单视角重建提出了独特的挑战;与人类头部的自然图像相比,角色肖像插画具有更复杂和多样化的头发和配件几何形状,并且使用非真实感轮廓线进行着色。此外,缺乏适合训练和评估这个模糊的风格化重建任务的3D模型和肖像插画数据。面对这些挑战,我们提出的PAniC-3D架构通过线条填充模型跨越插画到3D领域的差距,并使用体积辐射场来表示复杂的几何形状。
2023-04-02 02:09:31 2908
原创 mybatis最全面试题
数据持久化将内存数据存到磁盘里,或者磁盘到内存。比如,文件的存储、数据的读取等。数据模型可以是任何数据结构或者对象的模型,XML、二进制流。我们的CRUD都是数据持久化操作。mybatis框架是一个开源的持久层框架它的内部封装了JDBC访问数据库操作,支持普通的SQL查询、存储过程和高级映射,几乎消除了所有JDBC代码,以及手工设置以及结果集检索。mybatis作为持久层框架,其主要思想是程序中大大量SQL语句剥离出来,配置在配置文件当中,实现SQL的灵活配置。
2022-09-21 22:01:53 379
原创 【DDD】领域驱动设计1 DP
假设现在需要对手机号注册时的身份信息和入参中的用户名进行一致性校验,(获取手机号注册时的身份信息是一个外部依赖项)如果在PhoneNumber内部实现,让phoneNumber内依赖其他查询服务似乎是不合适的,那么,这部分逻辑该怎么抽象怎么写?我们定义了一个User类,一个注册接口的具体实现类,注册方法中先对参数进行校验,然后通过手机号获取归属地编号和运营商编号,存到user中,我们新型的基本单元不仅有属性,还有属性相关的职责,是充血模型的一种,如何把握。将客户群体分组,分配给相应的销售组,...
2022-07-18 14:41:28 548
原创 滴滴面试题-1
我们都知道Hash表的结构是数组加链表,有时候我们甚至可以把每个元素称为“桶”。在插入元素的时候,首先通过对传入的键进行hash处理。 hashMap并不是线程安全的,因为扩容容易导致数据丢失。hashMap是由 数组+链表组成的数据结构,1.8 数组加链表+红黑树,数组的每个地方都存了key-value这样的对象,1.7是hashEntry 在1.8中叫做node。 当链表长度大于8的时候为了提高查询效率会转换成红黑树(链表定位数据的时间复杂度是O(N) 红黑树是O(logN))。HashMap的扩容机
2022-06-16 23:18:21 251
原创 JAVA面试题1-1
继承:复用的概念多态:多态是父亲生产儿子,但是是儿子在使用封装:也是增加了复用性ArrayList 是基于数组来底层实现的。可以O(1)的时间随机访问LinkedList插入,添加,删除操作速度更快,不需要像数组那样重新计算大小或者更新索引。Vector hashtable 一开始为了保证线程安全:使用synchronized修饰方法缺点:效率低下ArrayList 、HashMap线程不安全,但是性能好,用来代替vector和hashtable需要线程安全的时候:Collections.syn
2022-06-07 21:51:21 131
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人