- 博客(32)
- 收藏
- 关注
原创 自己手写tomcat项目
在Servlet(接口中)有:1.init():初始化servlet2.getServletConfig():获取当前servlet的配置信息3.service():服务器(在HttpServlet中实现,目的是为了更好的匹配http的请求方式)4.getServletInfo():获取servlet当前运行过程中的信息5.destroy():销毁,回收内存在I/O中应包含:1.请求头(f12+网络) 2.请求方式(get/post) 3.请求内容。
2025-05-17 17:01:31
1235
原创 Java代理
2.控制访问:通过代理对象的方法间接访问目标对象,防止直接访问目标对象给系统带来不必要的复杂性。什么是Java代理模式:给目标对象提供一个代理对象,并且由代理对象控制对目标对象的引用。动态代理两种实现:1.jdk2.cglib(不进行学习)下面是最简单的代理实现(这只是一个演示会报错)1.功能增强:通过代理业务对原有业务进行增强。上面的代码就实现了第二个功能。下面的图相当于实现的路线。三、静态代理和动态代理。二、代理中的核心功能。
2025-05-10 16:58:26
290
原创 Java中的队列
LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。LinkedList链表。peek/element:查看头部元素;如果队列为空,peek返回null,element报异常。poll/remove:删除;如果队列为空,poll返回null,remove报异常。队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。offer/add:添加;如果满了之后,offer返回false,add报异常。
2025-05-08 10:10:54
154
原创 MySQL框架
以上信息是默认配置,其注释意思是说,MYSQL的查询缓存用于缓存select查询结果,并在下次接收到同样的查询请求时,不再执行实际查询处理而直接返回结果,有这样的查询缓存能提高查询的速度,使查询性能得到优化,前提条件是你有大量的相同或相似的查询,而很少改变表里的数据,否则没有必要使用此功能。当mysql服务器启动(mysql服务器就是一个进程),等待客户端连接,每一个客户的连接请求,服务器都会创建一个新的线程处理(如果是线程池的话,则是分配一个空的线程),每个线程都是独立的,拥有各自的内存处理空间。
2025-05-08 10:09:03
592
原创 MySQL第一部分
总结:一个数据库的服务器中包含多个数据库,一个数据库中有多张表,一个表中包含多个字段(字段和JavaBean的 属性是对应),表中存放是数据,一行数据和一个JavaBean实体对象是对应的。如果插入数据的时候,字符值为空,字段的值就是空了。insert into stu values (2,'聪聪',18,13,16);insert into stu values (5,'欧阳锋',74,93,56);insert into stu values (1,'美美',78,93,56);
2025-05-08 10:07:16
458
原创 MySQL进阶
insert into emp values (null,'陈冠希',100,null);insert into emp values (null,'张柏芝',200,null);insert into emp values (null,'陈冠希',100,null);insert into emp values (null,'张柏芝',200,null);insert into emp values (null,'如花',8000,null);
2025-05-08 10:04:37
661
原创 MySQL基础
SELECT 学生.*,name,score from 学生 join 课程表 join 选课表 on 学生.id=选课表.s_id and 课程表.id=选课表.c_id。SELECT 学生.*,name,score from 学生,课程表,选课表 where 学生.id=选课表.s_id and 课程表.id=选课表.c_id。SELECT * from 学生,课程表,选课表 where 学生.id=选课表.s_id and 课程表.id=选课表.c_id。
2025-05-08 10:02:14
610
原创 在登录页面上添加验证码
这里使调整图片的大小和验证码的来源,以及点击验证码的图片就可以刷新,避免看不清验证码无法输入的问题。这是一个简单的登录页面,里面必须通过验证码通过之后才能够进入页面。创建一个servlet(验证码的)在之前创建过的js中实现它。在html中也加入相关内容。
2025-05-08 09:48:57
322
原创 利用过滤器使实现登录之后再进入页面
在上一个创建完进行登录的页面后,当人们知道了你的登录之后进入页面的网址之后,在地址栏直接输入网址就能够进入了。首先创建一个Filter文件,创建完成之后要是需要在下面的位置写你想要拦截的资源。要是想要使其必须登录之后再进入就要使用过滤器。这样就必须通过登录之后才能进行主页面了。
2025-05-08 09:41:54
215
原创 利用session在html和MySQL实现登录
在创建一个相应的servlet文件(Studentlogin.java)}判断登录成功之后跳转的页面。首先先创建一个登录页面(login.html)这样就能够利用session进行登录判断了。if(value=="登录成功"){并且在相对应的位置上创建js文件。
2025-05-08 09:35:11
428
原创 在html中添加图片
想要让修改时头像回显出来,在修改的查找的Servlet中加入imgurl字段。在AddServlet中改写sql语句,加入有关imgurl的内容。在进行查找的SearchServlet中加入有关imgurl的内容。并在修改的html中加入于添加的html中一样的内容。在修改的Servlet中同样加入imgurl字段。同样在修改的js中添加imgurl相关的内容。这样点击修改之后就能够在回显中看到当下的图片。在添加的html中先加入头像这一行。在添加的js中加入图片上传的功能。在首页的js中加入下面的内容。
2025-04-23 10:34:15
298
原创 git使用基础
在组长的库里面将项目拉取到自己的库中,点击上面的Forked,这样就拉取下来了,要是不进行拉取直接将代码复制下来的话,在后面的提交新内容是。在进行小组的项目创建时,组长将基础的内容传送到git的组长自己的库中,等待组长邀请进入到git库中。这样在自己的git库中就能看到两个仓库,一个是自己的一个是组长的。在自己想要将项目放在的那个文件夹选择GIt Bash Here。之后在自己的库里面进行克隆,选择第二个代码进行复制。点击后右键Paste复制,回车运行就可以了。这样就加入到了组长的库中。
2025-04-22 10:29:00
258
原创 git使用进阶
git push -u origin master 推送到自己库里属于自己项目的master分支上。使用git add . 将所有的新内容加入到工作区内。再次查看成功后为绿色。git commit -m '' 在''里面写新加入了什么内容。新建之后就能够看到要传的内容和从自己的分支传到对应的分支。将自己的电脑上更新的代码使用git传给组长的git。使用git status查看自己新增加的内容。这时在自己的上面就能够看到刚刚提交的内容。将新的内容传送到组长的主git中。先进入到自己的项目的目录下面。
2025-04-22 10:05:37
324
原创 UEditor文档在项目上的应用
在修改的js文件中也要在首行写入var ue = UE.getEditor('container')并在修改查找的SearchByid的Servlet中进行添加instroduce字段。首先在修改的html中进行上面add.html的内容增加。这样再次进入添加页面就好了,也可以成功添加内容了。在修改的里面同样添加instroduce字段。在原本的add.js中添加下面内容。在add.html中添加下面内容。
2025-04-22 09:21:24
244
原创 UEditor文档在html中使用
找到这个文件夹下面的config.json(这个文件的注释可能会报错,可以删除,也可以不用管)右击Peoperties出现。创建一个html,并写入下面的代码切记记得将配置文件和编辑器源码文件中的src改为自己的路径,然后运行即可。这个页面将最后的Text file encoding改为UTF-8。并将lib文件夹下的jar包放到自己工作下的lib中。下载下面的包并且解压在自己的工作路径下面。utf8-jsp为解压完后的文件。运行成功的页面为下图。这样就可以进行编写了。
2025-04-22 09:04:11
379
原创 Javaweb2
cookie:客户端技术,把状态保存在客户端,是服务器创建的,通过响应发送给客户端,发送但用户浏览器并保存在本地的一小块信息。请求转发:服务器行为,当客户端请求到达后,服务器进行转发,此时会将请求对象进行保存,地址栏中的url地址不会发生改变。得到响应后,服务器将请求发送给客户端(客户端只发起一次请求)首先客户端发起第一个请求,被服务器接受处理后给客户端一个新的响应(一个新的地址),客户端接收到响应后,根据发来的地址再次发起请求。跳servlet(请求携带的参数在两个servlet里面共享)
2025-04-20 14:12:43
138
原创 Javaweb
type:请求方式 (get通常做查找 post通常做查找之外的)请求失败:发起到服务器出错 调数据库出错 返回给success出错。客户端用jquery+ajax向服务端发起请求。如果需要操作数据库则进数据库,不需要直接跳过。tomcat随时随地等待请求的到来。
2025-04-20 14:11:18
160
原创 Java反射
2.方法:getDeclaredMethods()获取所有权限的成员变量、getDeclaredMethod(”height“)获取指定成员的变量、getMethods()获取所有公共访问权限的成员变量、getMethod("height")获取指定公共访问权限的成员变量 执行方法invoke(),获取方法名getName(),setAccessible(true)暴力反射,忽略访问权限符的安全检查。反射的本质就是在解析这个类。在下面代码中将解释并且实现。
2025-04-19 19:40:02
315
原创 Java基础总结this、static、重写和重载的区别
static可以修饰代码块,代码块可以有static也可以没有static,被static修饰的代码块叫静态代码块,静态代码块在类加载时就已经开始执行了,静态代码块只执行一次,后面无论你创建多少的对象就不执行了,而且被static修饰的代码块只能放在类下面不能放在方法里面,被static修饰的代码块主要是用来初始化的静态数据。方法中可以有this,方法中谁调的this就修饰谁。this.方法,一个普通的方法想去调另一个方法用的使this.方法名(this可以省略,被static修饰的不能用this)。
2025-04-13 20:16:43
179
原创 Java基础第五章多态
equals() 方法判断是否为用一个对象(在object中) hashCode() 方法判断是否为同一类 大部分情况下在重写equals方法时会重写hashCode方法。如两个对象hashCode的值相同(存在哈希冲突),他们可能相同可能不同(equals方法可能返回true,可能返回false)如果两个对象不同(equals方法返回false) 那么它们的 hashCode值可能相同,可能不相同。2.getClass() 获取类的信息,用在反射领域。equals()和hashCode()方法的关系。
2025-04-13 17:37:10
250
原创 Java基础第五章
继承链:如果一个子类的父类中,父类也继承了父类的父类,则子类也可以用父类的父类中的方法;每个类只能有一个父亲,但是父类可以用很多个子类;
2025-04-13 17:35:09
74
原创 Java基础第四章
父类的静态 > 子类的静态 > 父类非静态 > 父类构造方法 > 子类非静态 > 子类构造方法。这个里面只有x1去执行静态方法,当x1都按照顺序执行完毕后,x2执行时不会执行静态方法。当属性在代码块下面时,代码块里打印这个属性打印,会报错,因为此时属性还没有去开辟空间。静态代码块 = 静态属性 > 代码块 = 属性 > 构造方法执行。创建多个对象时,静态方法只执行一次,之后的对象不会在执行静态方法。方法重载:方法名一样,入参不一样(是参数的数量,类型)3.构造器中可以没有参数也可以有多个参数。
2025-04-13 17:33:21
110
原创 Java基础-内存图
所以当进行交换操作时,当change在main方法中执行时,但change方法先执行出栈,则交换失败,交换是值传递。7.如果在方法里定义重新定义了已经定义过的变量,则需将新的变量重新开辟一个空间,并使变量重新指向新的地址。2.如果是静态变量则加入到静态常量池中,如果同一个静态变量有两个赋值,则按照第二个值来。4.字符串赋值后需要在字符串常量池中写入数据,并为它们写地址,链接。当main方法执行完成出栈后,在堆区里面关于main的数据会删除掉。属性(变量)(基本类型,引用类型) public访问权限修饰符。
2025-03-29 19:16:21
359
原创 java基础
基本类型(8个): 整数(4个:byte(8bit)、short(16bit)、int(32bit)、long(64bit):后面加一个L)、浮点数(2个:float(32bit):在后面加f,有效位数6-7位、double(64bit))、布尔型boolean(32bit)、字符型char(8(ascii)/16(unicode)/24(utf-8)/32(utf-32) 根据编码类型决定)十六进制:54a = 5*100+4*10+10*1=5*16^2+4*16^1+10*16^0。
2025-03-25 16:06:36
307
原创 数据结构B树与B+树
优点1.都包含key和value,只要找到key就能立马找到value 2.用于磁盘。优点:1.叶子节点仅具有索引的作用。非叶子节点只能存key不能存value。5.在内存相同的情况下,能存放更多的key值,树的高度越低。2.所有叶子节点构成有序的链表,叶子节点相连。B树:有二节点、三节点、四节点、五节点。6.区间查找简单,用于数据库底层。key值给每一个文件进行标号。M阶B树M个叉M-1个数据。有value值和key值。3.非叶子节点只有索引值。4.存的key值比B树多。
2025-03-23 11:24:52
223
原创 数据结构中的树
3.父节点:一个节点的上级节点叫做它的父节点。4.子节点:一个节点的下级节点叫做它的子节点。删除叶子节点:1.找到要删除的节点 target 2.找到要删除节点的父节点 parent 3.考虑有没有父节点 : a.如果没有父节点,那target为根节点 直接root=null b.如果有父节点讨论parent和target的关系:target是父节点的左孩子 直接parent.left = null target是父节点的右孩子 直接parent.right = null.
2025-03-22 22:17:49
433
原创 前端javascriptjs
创建元素:创建:从无到有的创建 var newNod = document.createElement()创建出来的格式 newNod.innerText = "新添加的元素" newNod.className ="新添加的classname" newNod.style.color = "格式"改内容:obj.innerHTML="新内容1" (会随着标签的变化变化格式) obj.innerText = "新内容2"(不会随着标签的变化变化格式,直接改成新内容2内容) value。
2025-03-22 22:09:05
420
原创 前端css层叠|级联样式单
justify-content 控制弹性盒子内子元素的分布方式(justify-content:后面的指令) flex-start 排列方向上的开始位置 flex-end 排列方向上的位置结束 center 居中 space-between 空隙放于元素之间 space-around 空隙放于元素两侧 space-evenly 空隙均匀分布。边框区 border 复合属性(多方面共同作用) border-color颜色 border-width宽度 bored-style样式 solid(实线)
2025-03-22 22:01:48
382
原创 若依前后端分离笔记
Win+r 输入cmd,打开cmd窗口,输入:node -v(显示node的版本) npm -v(显示npm的版本)右键ry-vue点击新建数据库,输入数据库名,字符集选择utf8 规则为utf8_general_ci,点击确定。可能会出现点击之后闪退的情况,此时可能是关掉窗口之后,程序没有完全的关闭,导致了闪退的情况。之后右击此电脑,点击属性,点击高级系统设置,进去后点击环境变量,下面的系统变量。点击链接,选择mysol,里面的连接名随便起,输入自己的密码点击确定。
2025-03-22 21:54:31
497
原创 数据结构排序
先排序个位,之后是十位、百位......个位数是几,就将数字放入对应的桶中,之后从桶中取数据,先从0号桶中取,谁先进去的谁先出来。把后面数据都向后移动一位,直到新数据插入的位置没有数据。删除:用后面的数据把删除的数据覆盖掉(连续的数从前往后删不干净,所以从后往前)6.以基准数为起点,分成左右两部分,重复上述所有,直到数据都被拆开为止。基数排序:不能排负数,只能排正数(数据量非常庞大,但数据的位数都不高)4.i和j指向的数值交换,重复234继续找,直到ij相遇。拆分,从中间位置拆开,直到数据独立为止。
2025-03-22 08:48:00
268
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人