- 博客(95)
- 收藏
- 关注
原创 Servlet 学习笔记4
HttpServletReponse类和HttpServletRequest类一样,每次请求进来,Tomcat服务器都会创建一个Response对象,传递给Servlet程序去使用,HttpServletRequest表示请求过来的信息,HttpServletReponse表示所有响应的信息。如果需要设置返回给客户端的信息,都可以通过HttpServletReponse对象进行设置。
2022-09-09 22:59:23
347
原创 Servlet 学习笔记3
每次只要有请求进入Tomcat服务器,Tomcat服务器就会把请求过来的HTTP协议信息解析好封装到Request对象中,然后传递到service,doGet,doPost方法中。我们可以通过HttpServletRequest对象,获取到所有请求的信息。
2022-09-09 21:37:42
417
原创 Servlet学习笔记2
1、ServletContext是一个接口,表示servlet上下文对象2、一个web工程只有一个ServletContext对象实例3、ServletContext对象是一个域对象4、ServletContext对象是在web工程部署启动的时候创建,在web工程停止的时候销毁【域对象】域对象是可以向像Map一样存取数据的对象,叫域对象。这里的域指的是存取数据的操作范围,为整个web工程。
2022-09-08 21:20:26
259
原创 Servlet学习笔记1
1、Servlet是JavaEE规范之一,规范就是接口2、Servlet是JavaWeb三大组件之一,分别是Servlet程序,Filter过滤器和Listener监听器3、Servlet是运行在服务器上的一个java小程序,
2022-09-08 00:09:50
180
原创 Tomcat 学习笔记及常见问题解决
1、bin目录下双击startup.bat2、cmd中进入到Tomcat的bin目录,输入命令 catalina run1、没有配置好JAVA_HOME系统变量进入电脑目录:控制面板程序和功能,双击:启动或停止windows功能在internet信息服务下,勾选这三个选项。再去浏览器输入:http://localhost访问就能出现loaclhost的访问页面。
2022-09-07 20:08:19
3355
原创 MySQL——数据库设计三范式
建立在第二范式的基础之上,要求所有非主键字段直接依赖主键,不要产生传递依赖。设计范式是数据库表的设计依据,如何进行数据库表的设计。要求任何一张表必须有主键,每一个字段原子性不可再分。要求所有非主键字段完全依赖主键,不要产生部份依赖。
2022-08-19 23:35:04
485
原创 MySQL——索引
索引是在数据库表的字段上添加的,是为了缩小扫描范围,提高查询效率的机制。一张表的一个字段可以添加一个索引,多个字段联合起来也可以添加索引主键和UNIQUE字段会自动添加索引。如果没有索引,mysql将进行全表扫描。索引也需要排序,在mysql中索引是一个B-Tree数据结构,遵循左小右大原则存放,中序遍历取数据。
2022-08-19 17:59:02
1196
原创 Java设计模式 | 饿汉&懒汉单例设计模式
开发中很多类只需要一个对象,如虚拟机对象,任务管理器对象,对象越多越占内存。4、通过一个静态方法返回单例对象,判断对象不存在才创建一个返回。一个类中永远只存在一个对象,不能创建多个对象。3、定义一个静态成员变量用于存储一个对象。3、定义一个静态成员变量用于存储一个对象。4、定义一个静态方法返回单例对象。2、把类的构造器私有。2、把类的构造器私有。...
2022-08-09 19:02:06
236
原创 Java | ThreadLocal学习笔记
ThreadLocal,它可以在一个线程中传递同一个对象学习链接:使用ThreadLocal - 廖雪峰的官方网站eg:public class ThreadLocalDemo { public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread(new StudentThread("甄嬛",17, 98)); Thread t2 = n
2022-05-15 17:41:24
296
原创 IDEA导入commons-logging-1.2.jar包
一、官网下载commons-logging-1.2.jar包下载链接:Apache Commons Logging - Download Apache Commons Logging二、IDEA中导入jar包1、复制commons-logging-1.2.jar文件2、打开IDEA新建一个package3、把jar包复制到刚创建的包下4、添加到Library中出现有下拉选项表示成功eg:import or...
2022-04-17 14:20:53
4726
原创 Java | Stream流
一、Stream流生成方式1、生成流通过数据源(集合、数组)生成流常见生成方式:(1)Collection体系的集合可以使用默认方法stream()生成流(2)Map体系的集合间接的生成流(3)数组可以通过Stream接口的静态方法of(T…valus)生成流public class StreamDemo { public static void main(String[] args) { List<String> list = new Ar
2022-04-08 11:33:19
251
原创 Java | 函数式接口
函数式接口:有且仅有一个抽象方法的接口eg:@FunctionalInterfacepublic interface MyInterface { void show();}
2022-04-06 21:03:51
441
原创 Java | 方法引用符
方法引用符——双冒号 ::其所在的表达式称为方法引用,方法引用是Lambda的孪生兄弟一、常见的引用方法1、引用类方法(类的静态方法)类名::静态方法public class ConverterDemo { public static void main(String[] args) { //Lambda useConverter(s -> Integer.parseInt(s)); //方法引用 u
2022-04-01 23:54:33
685
原创 Java | 匿名内部类和Lambda表达式的区别
1、所需类型和使用限制不同匿名内部类:有任意数量抽象方法的接口 / 抽象类 / 具体类Lambda表达式:有且仅有一个抽象方法的接口2、实现原理不同匿名内部类:编译之后,会产生一个单独的新的.class字节码文件;Lambda表达式:编译之后,没有单独的.class字节码文件,对应的字节码会在运行时动态生成EatableDemo.javapackage h220331;public class EatableDemo { public static void...
2022-03-31 21:52:38
748
原创 数据结构与算法【Python实现】(十一)RSA加密算法
一、密码与加密传统密码:加密算法是秘密的现代密码系统:加密系统是公开的,密钥是秘密的对称加密(加密解密过程使用一个密钥)非对称加密(加密解密过程使用不同密钥)二、RSA非对称加密系统公钥:用来加密、是公开的私钥:用来解密,是私有的1、RSA加密算法过程p = 53q = 59n = p*qnOut[5]: 3127fai = (p-1)*(q-1)faiOut[7]: 3016e = 3d = 2011(...
2022-01-27 13:27:20
1671
原创 数据结构与算法【Python实现】(十)欧几里得算法
约数:如果整数a能被整数b整除,那么a叫做b的倍数,b叫做a的约数给定两个整数a,b,两个数所有公约数中的最大值即为最大公约数如何计算两个数的最大公约数:欧几里得——辗转相除法#递归算法def gcd(a, b): if b == 0: return a else: return gcd(b, a % b)#非递归算法def gcd_2(a, b): while b > 0: r = a % b
2022-01-26 23:54:55
1507
原创 数据结构与算法【Python实现】(八)贪婪算法
一、贪心算法贪心算法,又称贪婪算法。是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解贪心算法并不保证会得到最优解,但是在某些问题上,贪心算法的解就是最优解。要会判断一个问题能否用贪心算法来计算。eg1:找零问题假设商店老板需要找零n元钱,钱币面额有:100元、50元、20元、5元、1元,如何诏令使得所需钱币张数最少?t = [100, 50, 20, 5, 1]def change(t,n):
2022-01-21 12:15:13
626
原创 数据结构与算法【Python实现】(七)平衡二叉搜索树/AVL树
一、AVL树概念AVL树:AVL树是一棵自平衡的二叉搜索树AVL树具有以下性质:根的左右子树的高度之差的绝对值不能超过1根的左右子树都是平衡二叉树balance factor:记录左右子树高度之差二、AVL树的旋转动画:Binary Search Tree, AVL Tree - VisuAlgo插入一个节点可能会破坏AVL树的平衡,可以通过旋转操作来修正插入一个节点后,只有从插入节点到根节点的路径上的节点的平衡可能被改变。我们需要找出第一个...
2022-01-19 13:05:16
1059
原创 数据结构与算法【Python实现】(六)二叉树、二叉搜索树
一、树树是一种可以递归定义的数据结构。树是由n个节点组成的结合:如果n=0,是一颗空树;如果n>0,那么一定存在一个节点作为树的根节点,其他节点可以分为m个集合,每个集合本身又是一棵树。树的实例:模拟文件系统class Node: def __init__(self, name, type="dir"): self.name = name self.type = type #"dir" or "file" self.child
2022-01-17 17:11:56
974
原创 数据结构与算法【Python实现】(五)哈希表
一、哈希表哈希表是一个通过哈希函数来计算数据存储位置的数据结构,通常支持如下操作:insert(key,value):插入键值对(key,value)get(key):如果存在键为key的键值对则返回其value,否则返回空delete(key):删除键为key的键值对直接寻址表:key为k的元素放到k位置上改进直接寻址表:哈希 Hashing构建大小为m的寻址表Tkey为k的元素放到h(k)位置上h(k)是个函数,将k...
2022-01-14 16:53:48
1147
原创 数据结构与算法【Python实现】(三)栈和队列应用——迷宫问题
一个二维列表表示迷宫(0表示通道,1表示围墙),给出算法,求一条走出迷宫的路径1、使用栈——深度优先搜索回溯法 一条路走到黑,不行就回退思路:从一个节点开始,任意找下一个能走的点,当找不到能走的点时,退回上一个点寻找是否有其他方向的点使用栈存储当前路径,没有路时出栈maze = [ [1,1,1,1,1,1,1,1,1,1], [1,0,0,1,0,0,0,1,0,1], [1,0,0,1,0,0,0,1,0,1], [1,0,0,0,0,1,1,.
2022-01-13 00:05:20
855
1
原创 数据结构与算法【Python实现】(三)列表、栈、队列
数据结构指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成简单来说,数据结构就是设计数据以何种形式保存在计算机中。程序 = 数据结构 + 算法数据结构按照逻辑结构可以分为线性结构、树结构和图结构线性结构:数据结构中的元素存在一对一的相互关系树结构:存在一对多的相互关系图结构:存在多对多的相互关系一、列表(数组)列表(其他语言称数组)是一种基本数据类型1、列表中的元素是如何存储的?数组如何查找:32位机器上,一个整数占4个字节。按照列
2022-01-11 23:14:19
992
原创 数据结构与算法【Python实现】(二)其他排序
一、其他排序1、希尔排序一种分组插入排序算法首先取一个整数 d1=n/2 ,将元素分为 d1 个组,每组相邻两元素之间距离为 d1 ,在各组内进行直接插入排序,相当于分组插入排序取第二个整数 d2 = d1/2,重复上述分组排序,直到 d1=1,即所有元素在同一组内进行直接插入排序希尔排序每趟并不使某些元素有序,而是使整体数据越来越接近有序;最后一趟排序使所有数据有序。def insert_sort_gap(li,gap): for i in range(gap, len(
2022-01-07 22:13:56
980
原创 数据结构与算法【Python实现】(一)查找和基础排序
一、汉诺塔问题def hanoi(n,a,b,c): #从a经过b移动到c if n>0: hanoi(n-1,a,c,b) #从a经过b移动到c print("盘%d moving from %s to %s" %(n,a,c)) hanoi(n-1,b,a,c) #从b经过a移动到chanoi(2,'A','B','C')递推式 h(x)=2h(x-1)+1 约等于2的n次方二、顺序查找...
2022-01-04 22:08:37
957
原创 vi / vim——常用命令
一、重复次数 在命令模式下,先输入一个数字,再跟上一个命令,可以让该命令重复执行指定次数二、移动和选择 vi之所以快,关键在于能够快速定位到要编辑的代码行 移动命令能够和编辑操作命令组合使用方向键:j、k、h、l(下上左右)1、移动(文本)(1)行内移动(2)行数移动(3)屏幕移动2、移动(程序)(1)段落移动在程序开发时,通常一段功能相关的代码会写在一起——之间没有空行(2)括号切换...
2021-12-29 13:07:57
897
原创 vi——终端中的编辑器
如果要对服务器上的文件进行简单的修改,可以使用ssh远程登录到服务器上,并使用vi进行快速的编辑即可。常见要修改的文件包括: 源程序 配置文件,如ssh的配置文件~/.ssh/config在没有图形界面的环境下,要编辑文件,vi是最佳选择一、vi和vim在很多Linux发行版中,直接把vi做成vim的软连接(快捷方式)vivi是visual interface的简称,是Linux中最经典的文本编辑器vi的核心设计思想——让程序员的手指始终保...
2021-12-28 13:00:41
1517
原创 Python | eval 函数
eval()函数:将字符串当成有效的表达式 求值并返回计算结果eg:eval计算器input_str = input("请输入计算题:")print(eval(input_str))不要滥用eval:在开发时不要使用 eva l直接转换 input 的结果eg:如果在eval中输入system方法,可以执行任何的终端命令,会造成危险,如:#查看了当前目录下的所有文件__import__('os').system('ls') #在当前目录下新建了文件__import__
2021-12-23 00:34:58
279
原创 Python | 文本编码
文本文件存储的内容是基于字符编码的文件,常见的编码有ASCII码、UNICODE编码等1、ASCII编码一个ASCII编码在内存中占用1个字节的空间,计算机中只有256个ASCII字符 (2的8次方)2、UNICODE编码计算机中使用1-6个字节来表示一个UTF-8字符,涵盖了地球上几乎所有地区的文字大多数汉字会使用3个字节标识UTF-8是UNICODE的一种编码格式<python2默认使用ASCII,python3默认使用UNICODE>如何在pyt..
2021-12-22 21:39:03
913
原创 Python | 文件操作、os模块
一、操作文件的步骤 打开文件、读/写文件、关闭文件二、操作文件的函数方法open打开文件,并返回文件操作对象read将文件内容读取到内存write 将指定内容写入文件close关闭文件open函数负责打开文件,并返回文件对象read/write/close三个方法都需要通过文件对象来调用1、read方法——读取文件open函数 的第一个参数是要打开的文件名(区分大小写) 如果文件存在,返回文件操作对象;如果不存...
2021-12-22 16:05:54
216
原创 Python | 包、发布模块
一、包的概念包是一个包含多个模块的特殊目录目录下有一个特殊的文件__init__.py优点:使用 import 包名可以一次性导入包中的所有模块__init__.py要在外界使用 包 的模块,需要在__init__.py中指定对外界提供的模块列表eg:from . import send_messagefrom . import receive_message二、发布模块如果希望自己开发的模块,分享给别人,可以按照以下步骤1、制作发布压缩包的步骤(
2021-12-22 12:36:38
552
1
原创 Python | 模块
一、模块的两种导入方法1、import 模块名导入后,使用模块提供的工具——全局变量、函数、类为模块起别名:import 模块名1 as 别名2、from 模块名 import 工具名导入后,不需要通过模块名,可以直接使用模块提供的工具——全局变量、函数、类如果两个模块存在同名的函数,那么后导入模块的函数会覆盖掉先导入的函数一旦发现冲突,可以用as关键字给其中一个工具起一个别名3、from 模块名 import * (不推荐使用)导入后,不需要通过.
2021-12-21 19:44:29
87
原创 Python | 异常
一、异常程序在运行时,如果解释器遇到一个错误,会停止程序的执行,并且提示一些错误信息,这就是异常。程序停止执行并提示错误信息 这个动作,称之为 抛出(raise)异常。程序开发时,很难将所有的特殊情况都处理的面面俱到,通过 异常捕获 可以针对突发事件做集中的处理,从而保证程序的稳定性和健壮性二、捕获异常1、简单的捕获异常语法在程序开发中,如果对某些代码的执行不确定是否正确,可以增加 try 来捕获异常try: 尝试执行的代码except: 出现错误处理t.
2021-12-21 16:41:19
310
原创 Python | 单例模式、new方法
一、单例设计模式1、设计模式 设计模式是前人工作的总结和提炼,通常,被人们广泛流传的设计模式都是针对 某一特定问题的成熟的解决方案 使用 设计模式 是为了可重用代码,让代码更容易被让人理解,保证代码可靠性2、单例设计模式 目的——让 类 创建的对象,在系统中只有唯一的一个实例 每一次执行 类名( ) 返回的对象,内存地址是相同的,如音乐播放器 同时只能播放一首歌。二、__new__方法使用类名() 创建对象时,...
2021-12-21 13:14:23
862
原创 Python | 静态方法
一、静态方法在开发时,如果需要在类中封装一个方法,这个方法: 既 不需要 访问 实例属性 或 调用实例方法 也 不需要 访问 类属性 或 调用类方法就可以将这个方法封装成一个 静态方法语法如下:@staticmethoddef 静态方法名(): pass静态方法 需要使用修饰器@staticmethod 标识,来告诉解释器这是一个静态方法通过类名,调用静态方法eg:class Dog(object): dog_cou...
2021-12-20 22:00:34
516
原创 Python | 类属性和类方法
一、实例1、使用面向对象开发。第一步是设计类2、使用 类名() 创建对象,其动作有两步: a.在内存中为对象分配空间 b.调用初始化方法__init__为对象初始化3、对象创建后,内存中就有了一个对象的实实在在的存在——实例通常把创建出来的对象叫做类的实例,对象的属性叫做实例属性在程序执行时,对象各自拥有自己的实例属性,调用对象的方法,可以通过self.【每个对象都有自己独立的内存空间,保存各自不同的属性】【多个对象的方法,在内存中只有一份...
2021-12-20 21:53:38
488
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人