- 博客(45)
- 收藏
- 关注
原创 day05-常用API(二):Lambda、方法引用详解
java里面带有s的基本上是工具类之前toString是要重写,现在不用重写是因为别人已经帮我门封装好了:拷贝:扩容:修改数组数据再存入:数组排序:重写Comparable:自带比较器:
2025-05-27 18:19:23
145
原创 java基础(面向对象进阶高级)内部类
内部类创建对象:一定要继承外部类对象,才能创建内部类对象。拓展:成员内部类访问外部类的成员特点:成员内部类中,是否可以直接访问外部类的实例成员??当然可以啊,因为是继承外部类的对象,当然可以直接访问外部类的实例成员在这里,new Heart()先去找内部类的show(),然后到People,this.heartBeat(),
2025-05-26 18:43:38
221
原创 java基础(面向对象高级部分)
下面有两千行代码,不可能重写写吧,可以直接把Student更换掉,这样子是不是更方便。2.多态下,父类类型作为方法的形参,可以接收一切子类对象,方便更便利。3.多态下存在的一个问题:不能直接调用子类独有的功能(类型转化解决)。比如People p1 = new Student();我把对象调给你,然后你又用对象调用我方法。1.多态下,右边对象是解耦合的。
2025-05-25 22:46:07
238
原创 java基础(面向对象进阶)
1.静态方法中可以直接访问类的静态成员,不可以直接访问实例成员。2.实例方法中既可以直接访问静态成员,也可以直接访问实例成员。
2025-05-24 12:30:12
186
原创 java基础(方法)
就像这个图一样main先进入,后续在main中的方法study方法加载进去,然后再study方法中有eat和sleep方法,后续再加载进去。到栈内存时,由main先进入,后续的方法后进入。但是先进入的后出,后进入的先出。首先main会先进入方法区,后续sum方法进去(由上往下排列)。方法分别在方法区、栈内存和堆内存(使用引用数据类型)执行。方法在计算机中的执行原理。
2025-05-22 13:01:06
183
原创 17.thinkphp的分页功能
1.不管是数据库操作还是模型操作,都使用paginate()方法来实现(第一种方式);9. 也可以设置分页的页码为简洁分页,就是没有1,2,3,4这种,只有上下页;3.分页功能还提供了一个固定方式,实现分页按钮,只需要设置相应的CSS即可;7. 如果你使用模型方式分页,则可以通过获取器修改字段值,而分页本身也可以;2.创建一个静态模版页面,并使用{volist}标签遍历列表;8. 可以限定总记录数,比如,限定总记录数只有10条的页码;5. 也可以单独赋值分页的模版变量;6. 也可以单独获取到总记录数量;
2025-05-08 17:07:13
437
原创 16.thinkphp的验证码功能
7. 配置文件在config/captcha.php中,直接进行参数配置即可;1.验证码功能不是系统内置的功能了,需要通过composer引入进来;2.引入进来之后,我们在模版中,验证一下验证码是否能正常显示;这个../code/check是用于控制器判断结果的映射页面。8. 我们可以自定义一个验证器,创建一个verify方法生成;3.创建一个模版页面,设置一个验证码和文本框提交比对;4.使用validate验证器来对验证码进行检测;5.也可以使用助手函数直接进行判断验证;创建一个from.html。
2025-05-08 16:37:41
334
原创 15.thinkphp的上传功能
3. 使用Filesystem::putfile()方法,来实现上传文件,并写入指定目录;5. 如果想更改上传文件的默认配置,在config/filesystem.php中配置;8. 批量上传,使用image[]作为名称,并使用foreach()遍历上传;6. 默认规则下,上传的文件是以日期和微秒生成的方式:date;4. 上传后返回的结果$info,可以输出当前上传文件的地址;9. 结合之前的验证器,我们写一个针对upload的独立验证;默认保存到storage目录下。默认保存到storage目录下。
2025-05-08 15:50:46
479
原创 14.thinkphp的缓存
10. ::pull()方法,先获取缓存值,然后再删除掉这个缓存,无数据返回null;11. ::remember()方法,如果数据不存在,则写入数据,可以依赖注入;13. ::tag()标签,可以将多个缓存归类到标签中,方便统一管理,比如清除;6. ::get()方法,从缓存中获取到相应的数据,无数据返回null;7. ::inc()和::dec()实现缓存数据的自增和自减操作;4. ::set()方法,可以设置一个缓存,参数三为过期时间;5. ::has()方法,判断缓存是否存在,返回布尔值;
2025-05-08 14:56:58
330
原创 13.thinkphp的Session和cookie
2. TP6.0不支持原生$_SESSION的获取方式,也不支持session_开头的函数;5. ::has()判断是否赋值,::delete()删除,::pull()取值后删除;7. ::flash()方法,设置闪存数据,只请求一次有效的情况,再请求会失效;3. 直接使用::set()和::get()方法去设置Session的存取;4. ::get()第二参数,可以设置当不存在值的时候,设置一个默认值;6. ::clear()清空整个session;session('没有值就获取所有')
2025-05-08 13:42:51
406
原创 12.thinkphp验证
1. 验证器的使用,我们必须先定义它,系统提供了一条命令直接生成想要的类;2. 这条命令会自动在应用目录下生成一个validate文件夹,并生成User.php类;3. 自动生成了两个属性:$rule表示定义规则,$message表示错误提示信息;4. 如果不设置$message定义的话,将提示默认的错误信息;5. 验证器定义好了之后,我们需要进行调用测试,创建一个Verify.php控制器;6. 默认情况下,出现一个错误就会停止后面字段的验证,我们也可以设置批量验证;
2025-04-25 12:10:35
1081
原创 11.thinkphp的模板
1. MVC中,M(模型)和C(控制器)是前面我们所了解的内容,而V(视图)就是页面;2. TP6.0默认不自带TT模版引擎,它作为一个可选的扩展给开发人员安装;3. 也就是说,并不一定非要使用模板引擎的语法规则来开发V(视图)部分;4. 如果不用模版引擎,可以在控制器通过require()方法引入PHP文件混编即可;那么有很多数据,怎么和前端通信呢?解决:也可以通过依赖注入:5. 如果要使用模版引擎,先创建一个用于测试模板引擎的控制器:Show.php;
2025-04-23 15:53:12
884
原创 10.thinkphp的响应
如果需要特别的自定义响应输出,可以自定义一个Response子类,并且在控制器的操作方法中直接返回。又或者通过设置响应参数的方式进行响应设置输出。1. 使用redirect()方法可以实现页面重定向,需要return执行;2. 站内重定向,直接输入路由地址或相对地址即可,第二参数状态码;3. 使用url自动生成跳转地址,普通地址或路由地址;4. 附加session信息,并跳转重定向;5. 重定向还提供了,记住上一次的url,和跳转到上一次url的功能;flag')) {return '死机警告';
2025-04-19 13:38:17
1096
原创 9.thinkphp的请求
你可以在项目里面自定义Request对象,修改已有的方法或者增加新的方法,默认已经在项目里面为你准备了类,你只需要直接修改该类就可以为你的项目单独自定义请求对象。自定义请求对象不支持为多应用的某个应用自定义,只能是全局自定义,如果你需要为某个应用定义不同的请求对象,可以在入口文件里面修改。// 执行HTTP应用并响应。
2025-04-14 21:31:45
1070
原创 8.thinkphp路由(2)
7. GET访问模式下:index(blog),create(blog/create),read(blog/:id) edit(blog/:id/edit)然后'create'就是请求方法,'/:id:add'就是控制器,'add'就是方法。17.使用嵌套资源路由,可以让上级资源对下级资源进行操作,创建Comment资源;18.使用嵌套资源路由,可以让上级资源对下级资源进行操作,创建Comment资源;20.嵌套资源生成的上级资源默认id为:blog_id,可以通过vars更改;
2025-04-13 19:23:18
868
原创 7.thinkphp的路由
一.路由简介 1. 路由的作用就是让URL地址更加的规范和优雅,或者说更加简洁;2. 设置路由对URL的检测、验证等一系列操作提供了极大的便利性;3. 路由是默认开启的,如果想要关闭路由,在config/app.php配置;// 是否启用路由 'with_route' => false,4. 路由的配置文件在config/route.php中,定义文件在route/app.php;配置文件是指的是配置相关的属性,定义文件是定义路由规则。
2025-04-12 22:03:50
1239
原创 6.thinkphp的增删改查
还可以直接静态调用create和save方法不同的是,create方法返回的是当前模型的对象实例。create支持replace新增数据的最佳实践原则:使用create方法新增数据,使用saveAll批量新增数据。
2025-04-12 18:29:40
755
原创 5.thinkphp模型的定义方式
一.定义模型1.定义一个和数据库表向匹配的模型;2.模型会自动对应数据表,并且有一套自己的命名规则;3.模型类需要去除表前缀(tp_),采用驼峰式命名,并且首字母大写;tp_user(表名) =>User tp_user_type(表名) =>UserType4.创建空模型后,我们可以在控制器调用,创建控制器DataModel.php;5.可以直接使用模型的名称User::*调用查询方法,比如select()等;6.如果没有代码提示,请和上一节一样,把5.1的注释复制过来;think_
2025-04-12 14:34:14
945
原创 4.thinkphp多个数据库
6. 本地测试,会优先采用.env的配置信息,我们和database配置对应上即可;10. 默认的数据库连接名称为:'mysql',再复制一组数据库链接信息:'demo'切换;7. 可以通过删除改变.env的配置,或删除.env来验证database的执行优先级;8. 在database.php配置中,default表示设置默认的数据库连接;9. connections 配置数据库连接信息,可以是多个数据库,便于切换;3. 使用数据库的第一步,就是连接你的数据库;然后在控制器中周末切换数据库呢?
2025-04-12 12:54:20
548
原创 3.thinkphp的基础.空.多级控制器
2.基础控制器仅仅提供了控制器验证功能,并注入了think\App和think\Request;2.我们在controller目录下建立group目录,并创建Blog.php控制器;1.所谓多级控制器,就是在控制器controller目录下再建立目录并创建控制器;一.基础控制器 1.一般来说,创建控制器后,推荐继承基础控制器来获得更多的方法;1.在单应用模式下,我们可以给项目定义一个Error控制器类,来提醒错误;3.这两个对象后面会有章节详细讲解,下面我们继承并简单使用一下;
2025-04-11 12:38:59
214
原创 2.thinkphp的控制器定义
5. 在Test类创建两个方法index(默认)和hello,访问URL如下: http://localhost/tp6/public/test/ http://localhost/tp6/public/test/hello。2. 如果想改变系统默认的控制器文件目录,可以在config下route.php配置: 'controller_layer' => 'controller123',$data = array('a'=>1, 'b'=>2, 'c'=>3);halt('中断测试');
2025-04-11 11:39:56
218
原创 1.thinkphpURL的访问模式(单应用)
14. 此时,路径变更为: http://localhost/tp6/public/test/hello/value/world。2. 多应用:http://serverName/index.php/应用/控制器/操作/参数/值…3. 单应用:http://serverName/index.php/控制器/操作/参数/值…6. index.php 这个文件,是根目录下public/下的index.php(入口文件);9. 操作就是控制器类里面的方法,比如:index(默认免写)或hello(必写);
2025-04-11 11:19:00
182
原创 1.php的URL访问
2. 如果上面那种形式的URL不支持的话,可以使用兼容模式的方式来访问: http://localhost/tp6test3/public/?14. 此时,路径变更为: http://localhost/tp6/public/test/hello/value/world。2. 多应用:http://serverName/index.php/应用/控制器/操作/参数/值…3. 单应用:http://serverName/index.php/控制器/操作/参数/值…
2025-04-06 22:32:06
436
原创 php的PDO
PDO::FETCH_ASSOC PDO::FETCH_ASSOC 是一个常量,作为 fetch() 方法的参数,用于指定返回数据的格式。当使用 PDO::FETCH_ASSOC 时,fetch() 方法会以关联数组的形式返回结果集中的一行数据,关联数组的键是结果集中的列名,值是对应列的值。在 PHP 的 PDO(PHP Data Objects)扩展中,setAttribute 方法用于设置 PDO 对象或 PDOStatement 对象的属性,以此来控制 PDO 的行为。
2025-03-29 17:06:38
795
原创 PHP基础1
1.用define()函数定义常量:define(常量名,值,[是否区别大小写]) true表示不区分大小写,默认是false常量名前没有$符常量名推荐使用大写php//定义常量//定义常量,不区分大小写//true表示不区分大小写,默认是区分大小写的。2.定义常量可以用特殊字符,但是在调用的时候必须用constant关键字调用//通过constant获取特殊字符作为常量名的常量3、判断常量是否定义,通过defined()判断常量是否已经定义if(!echo NAME;//berry。
2025-03-29 11:02:13
852
原创 Mysql数据库的基本操作
普及英语小课堂:创建 => create数据库 => database创建 + 数据库 = create database 数据库名称(字母+数字+下划线组成,以字母开头,不能出现中文以及特殊字符)特别注意:在MySQL中,当一条SQL语句编写完毕后,一定要使用分号;进行结尾,否则系统认为这条语句还没有结束。案例:创建数据库的相关案例扩展:编码格式,常见的gbk(中国的编码格式)与utf8(国际通用编码格式)
2025-02-19 14:37:35
277
原创 Apache Hadoop YARN
Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统和调度平台,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。可以把yarn理解为相当于一个分布式的操作系统平台,而mapreduce等运算程序则相当于运行于操作系统之上的应用程序,Yarn为这些程序提供运算所需的资源(内存、cpu)。yarn。
2025-01-16 15:58:25
580
原创 MapReduce
MapReduce最大的亮点在于通过抽象模型和计算框架把需要做什么(what need to do)与具体怎么做(how to do)分开了,为程序员提供一个抽象和高层的编程接口和框架。既然是做计算的框架,那么表现形式就是有个输入(input),MapReduce操作这个输入(input),通过本身定义好的计算模型,得到一个输出(output)。对许多开发者来说,自己完完全全实现一个并行计算程序难度太大,而MapReduce就是一种简化并行计算的编程模型,降低了开发并行应用的入门门槛。
2025-01-16 01:30:41
1089
原创 一、Apache HDFS入门
首先是一个==文件系统==,就是用来存储文件、存储数据。是大数据最底层一个服务。或者说一个==成熟的分布式==文件系统应该要具备哪些属性、功能呢?其次是一个==分布式的文件系统==。分布式意味着多台机器存储。,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。,用于存储文件,通过统一的命名空间目录树来定位文件;场景互动:如何模拟实现分布式文件系统。1.分布式多台机器存储。首先,它是一个文件系统。4.副本机制(备份)
2025-01-15 20:39:36
1037
原创 一:Hadoop集群搭建
集群简介集群简介HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起。HDFS集群负责海量数据的存储,集群中的角色主要有:YARN集群负责海量数据运算时的资源调度,集群中的角色主要有:那mapreduce是什么呢?它其实是一个分布式运算编程框架,是应用程序开发包,由用户按照编程规范进行程序开发,后打包运行在HDFS集群上,并且受到YARN集群的资源调度管理。Hadoop部署方式分三种,(独立模式)(伪分布式模式)
2025-01-14 19:15:04
652
原创 drf:django restframework(二)
内部处理机制是,最后的一个时间和前面的用户标识时间做比较,就如下面的一样,1小时只能访问5次。意思就是,如果是true的话就会继续往下读取限流类,如果是false的话,也是会继续限流类,但要设置另外一种throttle_failure方法了,不可能总是返回fasle.2.返回False,表示当前限流类不允许访问,继续执行后续的限流类。所有的限流类执行完毕后,读取所有不允许的限流,并计算还需等待的时间。然后这个类是用来抛出状态码的,里面的两个其实不重要,我们可以直接pass。
2025-01-13 19:13:29
410
原创 drf:django restframework(一)
自从UserView继承了APIView后,request已经不是之前django的request了,就把它重新封装到了request里面了并且添加了其它数据,def get(self, request, *args, **kwargs):。如果是想获取request.method的话,也是可以直接使用,因为它内部做了调整,也就是说request.method=self._request.method。如果你项目比较大,需要些很多的视图类,在每一个类中都写一遍会比较麻烦,所有drf中也支持了全局配置。
2025-01-11 20:28:50
1259
原创 Django的分页器Paginator
原理:在导航栏的page的参数值中,前端的模板语法获取当前页数的page值,然后再前端模板语法中把page值加颜色深,之后就在前端中可以看到页数的值加深。但是有存在的问题,就是到达第一页的时候,再点击上一页会报错,这是因为该方法有检查上一页是否有值,如果没有值那么就会报错。顾名思义,page_range就是一个列表,我们可以for循环它,来展示我们的页数。在前端和后端中添加页数的按钮,不可能让用户在导航栏输入page吧?我在前端的a标签里面添加我们的路径,i变量为页数。添加上一页和下一页的功能。
2025-01-09 16:53:58
426
空空如也
thinkphp打不开
2025-04-11
爬虫selenium,不可迭代?
2024-02-14
python为什么我爬取的是一个[]
2024-01-22
爬虫的url与parse方法
2024-01-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人