自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 操作系统 面试题(二)

若有进程可以执行完毕,则收回该进程的资源,继续判断是否有进程可以执行完毕,直到所有进程都执行完毕,按照进程执行完毕的顺序,可以得到一个安全序列,使得系统处于安全状态,避免死锁。版本号机制:更新数据前,核对版本号,版本号代表数据更新次数,若最初读取数据时的版本号和提交更新时的版本号一致,则修改数据,且版本号加一。乐观锁认为每次访问共享数据时,其他线程不会修改该共享数据,所以不加锁,只在更新该共享数据时,检查该共享数据在此期间是否被修改。UDP协议没有流控制,没有应答确认机制,不能解决丢包,重发,乱序等问题。

2023-10-13 12:12:25 277

原创 C++ 基础知识 问答题(五)

若reserve要求的大小大于vector当前的capacity,那么会重新分配一块连续的存储空间,将vector原有的数据copy过去,这时vector的capacity增大了,但size不变。希尔排序是缩小增量的插入排序。仿函数又称函数对象,它并不是一个函数,但有类似函数的功能,可以像普通函数那样调用,传入参数,有返回值。[=a,&]:用值传递的方式捕获父作用域的a变量,用引用传递的方式捕获父作用域的其他变量。[&a,=]:用引用传递的方式捕获父作用域的a变量,用值传递的方式捕获父作用域的其他变量。

2023-10-10 22:18:43 600

原创 计算机网络 面试题

服务器端接受请求,发送接收请求的响应报文:SYN=1, ack = x+1, seq = y 表明接收到了客户端发来的报文,希望收到的下一个报文的数据的第一个字节为x+1。假如第一次握手可以携带数据,那么恶意攻击者可以在第一次握手时携带大量的数据,并且发送非常多的请求连接报文段,这样服务器端会一直在接收这些报文段,没有空处理正常的连接请求。NAT是网络地址转换,实现私网IP地址和公网IP地址之间的相互转换,将大量的私网IP地址转换为少量的公网IP地址,以减少对公网IP地址的占用。

2023-10-10 22:18:39 419

原创 操作系统 面试题

对于每个数据成员,取min(数据成员的大小,pragma pack(n) 中定义的n),数据成员的起始地址需要是这个数的倍数。内中断:异常,由CPU内部事件引发的中断,比如程序中断(除0,地址越界),CPU会暂停当前进程,区执行异常对应的处理程序。对于整个结构体,取min(最大的数据成员的大小,pragma pack n中定义的n),结构体的大小需要是这个数的倍数。fork()产生新进程的速度非常快,因为子进程并不会立刻复制一份原进程的内存空间,而是和原进程共享原进程的内存空间。防止孤儿进程一直占用资源。

2023-08-25 16:57:41 283

原创 笔面试题记录

在Python中,每个对象都有一个引用计数器,用于跟踪对象被引用的次数。在上述示例中,通过 `(ptr->*funcPtr)(42)` 的方式,使用成员函数指针 `funcPtr` 来调用 `ptr` 指向的对象的成员函数 `memberFunc`。上述示例中,通过 `obj.*ptr` 的方式,使用成员指针 `ptr` 来访问 `obj` 对象的成员 `member`。3. 垃圾回收器的实现:Python的垃圾回收机制是由解释器自身实现的,而Java的垃圾回收器是由Java虚拟机(JVM)提供的。

2023-08-16 21:07:41 115

原创 C++ 基础知识 问答题(四)

(唯一的例外是返回值协变)。当存在多继承,例如继承了N个类,且父类中都有虚函数,那么需要加N个父类的大小,和N个虚表指针,各指向包含了父类所有虚函数的虚表,其中第一个虚表包含了第一个继承的父类的虚函数和子类的虚函数。重定义(隐藏):不同作用域下(父类和子类中),函数名相同,当子类的对象调用同名函数时,默认调用子类的函数,隐藏父类的函数,除非加上了父类的域作用符 ::。当存在继承时,若父类中有虚函数,计算class大小时,需要加父类的大小,和一个虚表指针(4字节),指向包含了父类和子类所有虚函数的虚表。

2023-08-15 15:48:32 169

原创 数学类问题(Leetcode)

所以 m = log3(n) = log10(n) / log10(3),对m取余数来判断m是不是整数,m是整数,则说明n是3的幂。所以要计算5因子的数量,就是用n/5来计算5的倍数,再用n/25来计算25的倍数,一直计算,直到n/(5^x)为0。,可以知道1-100这100个数中每五个数,就有一个5的倍数,每二十五个数中,就有一个25的倍数。遍历大于1 且小于n的每个数的倍数,设置为非质数,剩下的就都是质数了。另一个解法是:如果n是3的幂,那么存在一个整数m,使得m^3 = n。3.阶乘的0 的个数。

2023-08-08 17:46:42 118

原创 C++ 基础知识 问答题(三)

realloc的参数是内存指针和新的要分配的字节数,在原来的内存块上缩小或扩大内存,如果原来的内存块上无法完成扩展了,那就在一块新的内存块上分配内存,并将原来内存块上的数据复制过去,之后程序员就是用realloc返回的指针来访问原先的数据。会造成菱形继承问题:类B和类C都继承了类A,此时类D多继承类B和类C,在类D中就有了两份的类A的成员变量,会造成内存浪费,也会造成歧义,当你调用类A的成员变量时,编译器不确定你调用的是类B中的,还是类C中的,只能加上类名调用(B::a)。

2023-08-06 15:48:49 165

原创 JavaWeb 项目实现(五) 用户管理功能

这两个方法是类似的,都是先写一个基础的查询语句,再根据参数,向查询语句中继续附加where中的条件。这里不仅要查用户表,还要查角色表,所以sql语句会比之前的更复杂一些。简单来说就是根据用户名和用户角色来查询,得到用户列表。根据户名和用户角色,获取用户数量和用户列表。3. Servlet实现。获取jsp页面传递的参数。

2023-08-03 15:21:23 532

原创 JavaWeb 项目实现(四) 验证旧密码

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它使用易于读写的文本格式来表示数据,通常用于在客户端和服务器之间传递数据。JSON格式由键值对组成,其中键是字符串,值可以是字符串、数字、布尔值、数组、对象或null。步骤很简单,从Session中取到当前密码,和修改密码界面得到的旧密码对比,判断是否相等。在使用Ajax的时候,我们看到了数据类型是json,所以来了解一下jason。JSON格式具有很多优点,例如易于读写、易于解析、轻量级、可读性好等。

2023-08-01 12:27:29 1336 1

原创 分治法 Divide and Conquer

分治法(Divide and Conquer)是一种常见的算法设计思想,它将一个大问题分解成若干个子问题,递归地解决每个子问题,最后将子问题的解合并起来得到整个问题的解。分治法的主要思想是将问题分解成若干个相互独立的子问题,通过递归地解决每个子问题,最后将子问题的解合并起来得到整个问题的解。这种思想可以应用于许多问题的解法中,如排序、搜索、图论、数学计算等等。所有我们可以用分治法,将问题从大到小拆解,先满足每个长度为1、2、3......的数组都是漂亮数组,这样最后长度为n的数组也是漂亮数组。

2023-07-31 20:57:58 224

原创 JavaWeb 项目实现(三) 修改密码功能

从JSP中获取新密码,从Session中获取用户id,调用Service的更新密码方法,然后show message,完成页面跳转。updateUserPassword方法里:写sql语句,执行sql语句。每个部分都有不同的职责和功能,以实现代码的分离和可维护性。获取数据库连接,把从Servlet层得到的参数,传给Dao。1.MVC架构在JavaWeb中的应用。2.代码分离,来完成修改密码的功能。

2023-07-31 14:05:24 2656

原创 JavaWeb 项目实现(二) 注销功能

在过滤器中,我们去Session中取用户信息,若为空,则重定向至错误页面。若不为空,则正常访问页面。实现登录功能的时候,我们是核对了用户名密码正确,再跳转主页。可是如果我们不登录,直接访问主页的url,也是可以进入的。所以我们要设置权限过滤器,保证只有登录用户才能访问主页。因为我们实现登录就是在Session中记录了用户信息。所以注销功能,就是在Session中移除用户信息。代码:删除Session中的用户信息,跳转登录页面。接前篇,实现了登录功能之后,实现注销功能。

2023-07-27 11:13:16 463

原创 C++ 基础知识 问答题(二)

表示class B和函数 func可以访问类A的私有成员,是类A的友元类和友元函数。如果不使用成员列表初始化,而在构造函数中对成员变量赋值,那么编译器会先调用默认构造函数来创建成员变量,再使用构造函数对成员变量赋值。如果基类的析构函数不是虚函数,那么基类指针指向子类对象时,执行删除功能时,会直接调用基类的析构函数,这样子类独有的成员就没有被释放掉。例如变量,数组变量,对象。动态多态:用virtual修饰成员函数,当基类指针指向派生类对象时,调用一个虚函数,会根据对象的实际类型发生动态绑定。

2023-07-22 20:58:16 128

原创 JavaWeb 项目实现(一) 登录功能

再在业务层使用UserServiceImpl类调用UserDaoIml类中的获取登录用户的方法:这里其实就是在UserDaoIml类上又封装了一层,因为这一层也会用到BaseDao类中的方法,servlet中不应该处理这类代码(不是servlet做不了,而是出于功能划分的目的)因为登录要用到的是User类,所以再实现一个UserDaoIml类,专门用来获取User对象。最底层是访问数据的基础Dao类,这个类可以被用来访问数据库中的所有类。最后再在web.xml中配置好servlet就可以了。

2023-07-22 14:32:03 856

原创 动态规划(八) 练习题

还有另一个写法dp[i]=max(dp[i],dp[j]*dp[i-j]),我感觉这可以算是第三种情况,就是j和(i-j)都取拆分。dp[i][j]表示数组[0...i]的组合和为j,所以等于数组组[0...i-1]的组合和为j-nums[i],加上数组组[0...i-1]的组合和为j+nums[i]的和。这时候,直觉地会有一个写法dp[i]=max(dp[i],dp[j]*(i-j)),这其实是和第二种情况重复了,i和i-j本质上是等价的。接下来再处理,就不会出现差值为零的情况了,只会大于0或者小于0。

2023-07-21 22:47:22 56

原创 JDBC 事务

事务是指在Java应用程序中使用JDBC API对数据库进行操作时,通过事务管理机制来保证一组操作的原子性、一致性、隔离性和持久性。JDBC(Java Database Connectivity)是Java语言中访问数据库的标准API,提供了一组访问关系型数据库的接口,使得Java应用程序能够通过标准的方式来连接和操作各种关系型数据库。最大的优点就是为java提供了一套统一的接口来访问不同的数据库,这样就不用针对不同的数据库编写不同的代码了。

2023-07-20 13:57:24 113

原创 MySQL 驱动报错 jdbc.Driver

这个错误就是字面意思,`com.mysql.cj.jdbc.Driver'代替了旧的 `com.mysql.jdbc.Driver',然后这个驱动是自动加载的,所以 Class.forName("com.mysql.jdbc.Driver");去掉了jdbc后的一个冒号,上面那行是5.x版本的写法,下面这行才是8.x版本的写法。

2023-07-20 10:59:27 817

原创 ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost:3306‘ (10061)

这是因为MySQL服务器没有启动,我打开任务管理器看了一下,确实没有启动,而且我在任务管理器右键启动MySQL,很快又会变成已停止。2.再次执行net start mysql和mysql -u root -p。1.删除之前自己创建的my.ini。这次就成功进入mysql了。

2023-07-19 15:22:24 348

原创 Andriod开发 报错及解决方案

通常情况下,这个错误是由于在调用setText()等方法时,传递了一个整数(int)类型的参数,而不是字符串类型的参数。在这种情况下,Android系统会尝试根据传递的整数参数查找对应的字符串资源ID,但是找不到对应的字符串资源,则会抛出Resources$NotFoundException异常。这个异常通常发生在尝试在非UI线程(例如后台线程或其他工作线程)中修改UI界面的视图,例如更新TextView的文本或更改ImageView的图像。1. 在非UI线程中修改UI界面的视图。

2023-07-17 19:34:09 270

原创 JavaWeb Filter应用

主页有一个注销功能,因为一个session一般直到关闭浏览器才会结束,所以要注销登录信息,回到未登录的状态。若登录成功,则在session设置属性表明用户已登录,且跳转至主页(sys/success.jsp)最后再加上Filter:若用户处于未登录状态,那么原本访问sys/*的请求就会直接重定向到错误页面。之前的博客提到了Filter可以在访问页面前对请求和响应进行拦截和处理。所以今天实现一个权限控制的应用:只有成功登录的用户可以访问主页。1.Filter应用。

2023-07-17 12:08:21 105

原创 Java 异步回调

回调函数是一个函数对象,可以在异步方法执行完毕后被调用,以便处理异步方法的执行结果。在上面的代码中,定义了一个`sendHttpRequest()`方法,该方法用于异步执行网络请求,并将`RequestCallback`对象作为参数传递给异步方法。在使用异步方法时,可以将`RequestCallback`对象作为参数传递给异步方法,以便在异步方法执行完毕后调用相应的回调方法。使用回调接口可以方便地处理异步方法的执行结果,并且可以将异步方法的执行和结果处理分离开来,使代码更加清晰和易于维护。

2023-07-16 22:14:59 869

原创 JavaWeb Listener 监听器

当Web应用程序启动时,容器会创建一个HttpSession对象,当用户关闭浏览器或Session过期时,容器会销毁该对象。监听器(Listener)是一种特殊的Java类,它可以用来监听Web应用程序中的事件,例如ServletContext、HttpSession和ServletRequest等的创建、销毁、修改等事件。通过监听器,我们可以在特定的事件发生时执行一些自定义的代码,以实现对应用程序的控制和管理。当我关闭其中一个浏览器后,还是显示有两个人在线。因为这里计算的是会话的个数。

2023-07-13 15:15:45 169

原创 JavaWeb Filter

Filter是一种可用于拦截请求和响应的技术,它能够在请求到达Servlet之前或者响应返回给客户端之前对请求和响应进行一些处理操作。方法中,将请求的编码设置为中文的编码,然后将请求和响应传递给FilterChain继续处理。Filter可以用于实现诸如身份验证、授权、日志记录、字符编码转换和性能监测等功能。这样请求和响应的编码已经被设置为指定的编码,从而避免了中文乱码等问题。表示所有路径在servlet下的请求,都会经过该过滤器,被过滤。2)配置web.xml。1)实现Fliter。

2023-07-13 12:15:47 85

原创 动态规划DP(七) 股票交易

代入 sell[i][j],得到 sell[i][j] = max(sell[i-1][j], buy[i-1][j-1]+prices[i],sell[i-1][j-1] -prices[i]+prices[i])比原本的 sell[i][j]多出了这一项:sell[i-1][j-1] -prices[i]+prices[i]所以buy[i][j] = max(buy[i-1][j], sell[i-1][j]-prices[i])就变成了 sell[i][j] = max(sell[i-1][j],

2023-07-12 16:30:55 127

原创 C++ 基础知识 问答题(一)

所以在C++中使用C代码时,为了正确编译C代码,可以使用extern "C"{}来包括C代码,这样编译器就知道要用C语言的规则来编译这段代码。当父类指针指向一个子类对象时,删除该对象,如果父类的析构函数不是虚函数,就会只调用父类的析构函数,不会调用子类的析构函数,造成内存泄漏。如果父类的析构函数是虚函数,那么当删除该对象时,就会根据对象的实际类型取调用析构函数,这样子类对象就会得到正确释放。const常量是常量声明,由编译器处理,有类型安全检查,系统会分配内存,保存在数据段,一旦声明不能取消。

2023-07-12 15:22:03 468

原创 MVC三层架构

MVC(Model-View-Controller)是一种常见的软件设计模式,用于组织和管理应用程序的代码和逻辑。- 模型通常包括数据模型(用于表示数据结构)、业务逻辑(用于处理数据操作和业务规则)以及数据访问层(用于与数据库或其他数据源进行交互)。需要注意的是,MVC是一种设计模式,可以在不同的编程语言和框架中实现。- 控制器接收用户的请求,根据请求调用适当的模型操作,并更新相应的视图来显示结果。- 控制器是模型和视图之间的中介,负责处理用户的输入、协调模型和视图之间的交互。

2023-07-12 14:49:26 2028 2

原创 JavaBean

JavaBean的主要目的是提供一种标准的方式来封装数据,并且可以通过访问器和修改器方法来控制对数据的访问。首先创建一个JavaBean类,遵循JavaBean规范,包含私有属性和公共的访问器和修改器方法。在JSP中使用JavaBean,JavaBean一般被看作一个对应数据库表的实体类。JavaBean是一种符合特定规范的Java类。接着在JSP使用JavaBean,有两种方法。

2023-07-12 11:23:14 87

原创 JavaWeb JSP标签 JSTL标签

JSTL(JSP Standard Tag Library)是一个标准的JSP标签库,为JSP页面提供了一组可重用的标签和函数,用于简化和增强JSP页面的开发。在JSTL中也不能直接使用内的java代码定义的变量,而是要把变量放到page或request或session或application中。JSTL标签的出现为了弥补HTML的不足,这些标签的功能和java代码一样。:JSP指令标签,用于指定页面的属性和配置信息,例如导入Java类、设置页面的编码等。

2023-07-10 13:17:23 469

原创 JavaWeb JSP 内置对象

从上图的JSP代码,我们可以看到pageContext,request,session,application都可以设置属性。application:保存的属性在服务器中有效,也就是打开服务器到关闭服务器的过程中有效。session:保存的属性仅在当前会话有效,也就是打开浏览器到关闭浏览器的过程中有效。一个用户可以多次使用这些数据。request:保存的属性仅在当前请求有效,如果进行请求转发,可以带去下一个页面。pageContext:保存的属性仅在当前页面有效,离开当前页面就无法再读取了。

2023-07-10 10:52:01 146

原创 C++ 基础知识 面试题(二)

内联是在编译期建议编译器内联,而虚函数的多态性在运行期,编译器无法知道运行期调用哪个代码,因此虚函数表现为多态性时(运行期)不可以内联。inline virtual唯一可以内联的时候是:编译器知道所调用的对象是哪个类(如Base::who()),这只有在编译器具有实际对象而不是对象的指针或引用时才会发生。

2023-07-09 20:48:30 164

原创 JavaWeb JSP基础语法和指令

include指令:用于在JSP页面中包含其他的JSP页面或静态资源。--html annotate-->会显示在客户端的源代码中。JSP是Java技术的一种应用,对Java所有的语法都支持,除此之外,还有一些扩充的语法。page指令:用于设置整个JSP页面的属性和配置。- `pageEncoding`:设置JSP页面的字符编码。- `contentType`:设置响应的内容类型。- `errorPage`:指定错误处理页面。- `import`:引入Java类或包。2) 执行java代码。

2023-07-09 17:36:26 231

原创 动态规划 DP (六) 字符串编辑

也可以在word1[i]后增加一个新字符word2[j],这样最后面的两个字符就相等了,但需要word1[0...i]与word2[0...j-1]是相等的,所以就是dp[i][j-1]加一。也可以删除掉word1[i],这样就需要word1[0...i-1]与word2[0...j]是相等的,所以就是dp[i-1][j]加一。dp[i][j] = dp[i-1][j-1] 如果s[i-1]与p[j-1]匹配成功 否则为false。基于这个假设,我设想的很复杂的c****,也是不合法的输入。

2023-07-08 22:38:20 349

原创 JavaWeb JSP

它是在Java Servlet技术的基础上发展而来的,通过在HTML页面中嵌入Java代码,可以实现动态内容的生成和交互。用户通过浏览器访问jsp页面,服务器首先找到.jsp文件,然后将其转换成一个.java文件(这个java中的类继承了HttpJspBase类),再编译成.class。,这个类和我们之前学习的Servlet的类是一样的,只是我们没有直接写这个类,是先写了jsp,然后自动转换的。service中也包括了自动转换的代码:将jsp中的内容转换成了java中的输出方法。

2023-07-08 12:01:17 436

原创 动态规划 DP (五) 背包问题

dp[i][j] = dp[i-1][j] || dp[i][j-nums[i]] 当j>nums[i]时,表示此时可以取nums[i],也可以不取nums[i],需要把这两种情况都考虑了,若有任何一种情况可以满足和为j,那么dp[i][j]就为true。这道题和上一题的最大区别就是多了一个背包,所以压缩前的算法就是多了一个维度,变成三维数组dp[i][j][k],第一维代表在[0,i]里来选择元素,第二个维度代表上限为j个零,第三个维度代表上限为k个零。目标是选择物品放入背包,使得总价值最大化。

2023-07-07 13:35:20 340

原创 JavaWeb Session

会话可以在客户端和服务器之间建立,并且在一段时间内保持活动状态,以便在多个请求和响应之间共享信息。Cookie通过在HTTP请求头中传递,将数据存储在客户端的Cookie文件中。在JavaWeb开发中,Session是一种用于跟踪用户状态和在多个请求之间共享数据的机制。性能开销:由于Session是存储在服务器端,因此在高并发环境下,大量的Session对象可能会占用服务器的内存资源。Session和Cookie是在Web开发中用于跟踪用户状态和在多个请求之间共享数据的机制,但它们有一些关键的区别。

2023-07-07 12:17:03 235

原创 JavaWeb Cookie

需要注意的是,由于Cookie是存储在用户的浏览器中的,因此可能存在一些安全风险,如跨站脚本攻击(XSS)和跨站请求伪造(CSRF)。- Cookie可以设置过期时间,可以是会话级别的(浏览器关闭后失效)或持久性的(在指定的过期时间之后失效)。如果想删除某个Cookie,可以new一个同名Cookie,设置有效时间为0,这样会直接覆盖原来的Cookie,达到了删除的目的。- 每个Cookie都与特定的域名和路径关联,只有在相同域名和路径下的请求中才会发送相应的Cookie。每次更新上次访问时间。

2023-07-06 21:11:38 256

原创 JavaWeb HttpServletRequest

请求转发可以携带请求参数和属性,并且共享同一个HttpServletRequest对象和HttpServletResponse对象,而重定向会创建新的HttpServletRequest对象和HttpServletResponse对象,请求参数和属性不会被共享。- 请求转发是直接将请求转发给目标资源处理,而重定向是通过浏览器发送新的请求到指定URL来间接地将请求转发给目标资源处理。它提供了访问HTTP请求的各种信息和功能,包括请求方法、请求URL、请求头、请求参数、请求体等。

2023-07-05 17:52:12 2101

原创 JavaWeb HttpServletResponse

当web服务器收到来自浏览器的请求后,针对这个请求,会自动创建一个代表请求的HttpServletRequest对象和一个代表响应的HttpServletResponse对象。这样在浏览器中输入地址后,就会自动重定向到新的地址,且浏览器地址栏中的地址改变了。(这就是重定向和转发的区别,转发的地址栏不会发生变化,因为浏览器始终只与原url发生通信)//注意地址不是/img二是默认路径后的路径。//输出的数据将以字节流的形式发送到客户端。//输出的数据将以字符流的形式发送到客户端。获取要下载的资源的绝对路径。

2023-07-05 11:38:55 2644

原创 动态规划 DP (四) 子序列问题

解题思路:两重遍历所有可能的字符串匹配结果,如果末尾元素相等,则为去掉末尾元素时的最长长度加1,否则是一个字符串保留末尾元素,另一个字符串去掉末尾元素的两种情况的最长长度中的最大值。解题思路:因为子序列,其实就意味着要进行两层遍历了,分别列举子序列的结尾坐标和开始坐标,这样才能遍历完所有子序列。然后遍历的时候,记录当前元素结尾的最长子序列长度。当当前子序列的开始元素大于前一个元素时,以为着存在一个更长的子序列,与现有长度进行比较,选择更长的子序列。

2023-07-02 17:23:16 131

空空如也

空空如也

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

TA关注的人

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