
编程与应用开发
文章平均质量分 81
编程与应用开发
夏天又到了
微信号 magicHawaii
展开
-
PHP的JIT编译器
PHP是一种广泛使用的脚本语言,被用于构建各种规模的Web应用程序。然而,由于其解释执行的本质,PHP在处理大量计算密集型任务时可能会遇到性能瓶颈。为了解决这个问题,PHP 8引入了一个令人激动的新特性—JIT(即时编译)编译器。JIT(Just-In-Time)编译器是一种在运行时将解释的代码转换为机器码的技术。这种转换可以显著提高代码的执行速度,使得PHP在处理复杂算法和大数据集时表现更出色。本节将深入探索PHP 8的JIT编译器,了解其工作原理、优势和使用技巧。原创 2025-02-11 11:05:21 · 363 阅读 · 0 评论 -
ThinkPHP 8 操作JSON数据
上例中,$jsonAssoc属性是用来控制JSON字段的返回类型,其默认值为false,返回对象形式,我们可以将$jsonAssoc属性设置为true,使其通过数组方式操作JSON字段。$jsonType字段和$type字段类似,用来指定JSON子字段的数据类型,在不指定的情况下,默认都视为STRING。在示例中,$user->address['code']中的“->”是访问模型的address属性,['code']是使用数组形式访问address这个JSON属性的code字段。原创 2025-01-24 13:20:53 · 668 阅读 · 0 评论 -
ThinkPHP 8模型与数据的插入、更新、删除
模型的数据字段和对应数据表的字段是对应的,默认会自动获取(包括字段类型),但自动获取会导致增加一次查询(可以开启字段缓存功能),因此需要在模型中明确定义字段信息以避免多一次查询的开销。模型字段用来指定模型属性的数据类型,推荐每个模型类都进行定义,ThinkPHP 8默认会自动获取数据表的字段类型(需要查询一次数据库)。使用模型插入数据和查询构造器插入数据,最大的不同是模型会执行修改器、自动完成等逻辑,而数据库操作只是单纯的数据插入。默认情况下,模型类名是去除表前缀的数据表名称,采用大驼峰命名法。原创 2025-01-23 17:01:58 · 1217 阅读 · 0 评论 -
ThinkPHP 8请求处理-获取请求对象与请求上下文
ThinkPHP 8提供了Request对象用于封装HTTP请求。下面我们一起来学习如何在ThinkPHP 8中进行请求处理,比如获取请求参数、校验请求参数等。原创 2025-01-22 17:05:13 · 931 阅读 · 0 评论 -
Linux C\C++编程-文件位置指针与读写文件数据块
先复习一下C语言中的文件指针定位函数fseek(),其声明如下:;其中,fp是文件指针;offset是相对于origin规定的偏移位置量;当offset是向文件末尾方向偏移的时候,无论偏移量是否超出文件末尾,fseek都返回0,当偏移量没有超出文件末尾的时候,文件指针指向正常的偏移地址;当偏移量超出文件末尾的时候,文件指针指向文件末尾,并不会返回表示偏移出错的-1值。当offset向文件头方向偏移的时候,如果偏移量没有超出文件头,就是正常偏移,文件指针指向正确的偏移地址,fseek返回值为0;原创 2025-01-21 14:02:48 · 1316 阅读 · 0 评论 -
Linux C\C++方式下的文件I/O编程
在旧头文件里的fstream.h,如果使用ifstreamfile的默认参数声明一个输入文件流,当这个要读的file文件不存在时,会自动创建一个空文件,从而给判断文件是否存在造成了很多麻烦。因为C++兼容C,所以C中的输入输出函数依然可以在C++中使用,但是很显然,直接把C的那套输入输出搬到C++中肯定无法满足C++的需求,更重要的一点是,C中的输入输出有类型要求,只支持基本类型,因此C++设计了易于使用的并且多种输入输出流接口统一的I/O类库,并且支持多种格式化操作,还可以自定义格式化操作。原创 2025-01-20 13:23:42 · 3054 阅读 · 0 评论 -
ThinkPHP 8的多对多关联
多对多关联属于比较复杂的关联,需要借助一个中间表实现,在模型中使用belongsToMany定义。在介绍ThinkPHP8的多对多语法之间,我们先来看一个例子,以加深对多对多关联的理解。比如我们开发一个博客系统,每篇文章可以关联多个标签,每个标签可以关联多篇文章,涉及的数据表如表8-1~表8-3所示。如果我们需要查询ThinkPHP教程这篇文章关联了哪些标签,可以用文章ID从文章标签关联表获得标签ID列表[1,2],再从标签表查询[1,2]的标签得到PHP和ThinkPHP。原创 2025-01-20 13:15:43 · 666 阅读 · 0 评论 -
ThinkPHP 8的一对多关联
每个主模型都有多个关联模型,一般在关联模型添加一个外键实现,在模型中使用hasMany定义。上面2个模型1个控制器完成后,运行服务器,在浏览器中访问http://localthost:8000/user/one2many,可以关联查询出id为1的用户所有游玩过的省份。由于只有同一个数据库的数据表可以与表相连,因此在分库分表的场景下,笔者建议使用with查询两次的方法。和一对一关联相同,一对多关联也使用together方法删除关联数据。使用关联模型的saveAll方法保存关联数据。原创 2025-01-17 16:55:25 · 532 阅读 · 0 评论 -
Spring MVC拦截器完成用户登录权限验证的示例
从图14.5所示的流程图可以看出,只有登录后的用户才能访问管理主页,如果没有登录而直接访问页面,拦截器就会将请求拦截,并转发到登录页面,同时在登录页面中给出提示信息。当已登录的用户在管理主页中单击“退出”链接时,同样会回到登录页面。从图14.6所示的结果可以看出,当用户未登录而直接访问主页面时,访问请求会被登录拦截器拦截,从而跳转到登录页面,并提示用户未登录信息。如果在“登录名”输入框中输入“zhangsan”,“密码”输入框中输入“123456”,当单击“登录”按钮后,浏览器的显示结果如图14.7所示。原创 2025-01-16 10:09:40 · 1161 阅读 · 0 评论 -
Spring MVC复杂数据绑定-绑定集合
将图12.10所示页面中的用户名zhangsan改为tom,lisi改为rose,并勾选两项数据前面的复选框,然后单击“修改”按钮后,浏览器会跳转到success.jsp页面中。此时控制台的打印信息如图12.11所示。针对这种情况,可以使用集合数据绑定,即在包装类中定义一个包含对象类的集合,然后在接收方法中将参数类型定义为该包装类的集合。注意:在使用集合数据绑定时,后台方法中不支持直接使用集合形参进行数据绑定,所以需要使用包装POJO作为参数,然后在包装POJO中包装一个集合属性。原创 2025-01-15 11:00:54 · 982 阅读 · 0 评论 -
ThinkPHP 8的一对一关联
每个主模型有一个关联模型,可以选择在主模型添加外键或者在关联模型添加外键,在模型中使用hasOne方法定义。比如下面的示例中,如果有10个$users,将产生11条查询(1条查询主模型列表,10条查询用户资料),这就是著名的数据库N+1问题。上面2个模型1个控制器完成后,运行服务器,在浏览器中访问http://localthost:8000/user/one2one,可以查询出id为1的用户的电子邮箱。上面的示例中,我们是基于主模型进行查询的,那么也可以根据关联模型进行查询。4. 根据关联数据查询。原创 2025-01-14 16:25:09 · 676 阅读 · 0 评论 -
Spring MVC复杂数据绑定-绑定数组
在实际项目开发中,除简单数据类型外,还会经常遇到一些比较复杂的数据绑定问题,比如数组的绑定、集合的绑定,本节将具体讲解数组绑定和集合绑定的使用。原创 2025-01-14 16:17:15 · 782 阅读 · 0 评论 -
Spring MVC数据绑定POJO类型
这样所有的请求信息都会以UTF-8的编码格式进行解析。注意:在前端请求中,难免会有中文信息传递,例如,在图12.4所示的用户名和密码输入框中输入用户名“张三”和密码“123”时,虽然浏览器可以正确跳转到结果页面,但是在控制台中输出的中文信息会出现乱码。在使用简单数据类型绑定时,可以很容易地根据具体需求来定义方法中的形参类型和个数,然而在实际应用中,客户端请求可能会传递多个不同类型的参数数据,如果还使用简单数据类型进行绑定,就需要手动编写多个不同类型的参数,这种操作显然比较烦琐。图12.5 运行结果。原创 2025-01-13 11:35:05 · 1263 阅读 · 0 评论 -
《Spring Boot企业级开发实战(视频教学版)》简介
#好书推荐##好书奇遇季#《Spring Boot企业级开发实战(视频教学版)》,京东当当天猫都有发售。书非常厚,定价119元,网店打折销售其实没多少钱。本书配套PPT课件、示例源码与同步教学视频。本书各章节按照Spring框架组件的出现时间来设计,先讲解Spring核心组件IoC和AOP,然后是Spring MVC,最后展开讲解Spring Boot。本书主要针对Spring Boot,采用由浅入深的方式,将讲解和案例练习相结合,符合读者的学习曲线。从初体验、基本源码分析、Web应用、数据访问这些基本原创 2022-04-08 12:02:17 · 259 阅读 · 0 评论 -
《Spring Boot整合开发案例实战》简介
《Spring Boot整合开发案例实战》,案例书,介绍实战项目(包括员工管理系统、二手房管理系统、购物车管理、用户权限管理系统、小程序上报用户信息、模拟聊天室)开发。定价89元。本书配套配套示例源代码、PPT课件,作者是资深Web应用开发工程师。 本书内容随着JavaWeb项目的发展,各种开发框架与组件层出不穷,项目的配置越来越烦琐,项目部署也需耗费大量时间,给开发人员带来了诸多不便。Spring Boot的出现将开发人员从烦琐的项目配置中解放出来,让开发人员更专注于业务的实现,提高了开发效率。本书从Sp原创 2023-03-21 16:53:29 · 151 阅读 · 0 评论 -
Spring Boot上传文件功能的开发
Spring Boot使用Servlet 3的API javax.servlet.http.Part来支持文件上传。Spring Boot在类MultipartAutoConfiguration中定义文件上传组件的自动配置,这个自动配置在使用Spring MVC框架时默认开启。3.3.1 POM文件配置在开启Web模块时,文件上传功能自动开启,所以pom.xml中只需配置spring-boot-starter- web,配置代码如下:<dependency> <grou..原创 2022-02-17 12:16:19 · 438 阅读 · 0 评论 -
《Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统》前后端分离架构示例源码免费下载
#好书推荐##好书奇遇季#《Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统》当当京东天猫均有发售。本书讲解前后端分离架构,为广大开发者量身打造,从项目实践出发,选用当前各种主流的技术,手把手、心贴心地带着读者从零开始,一步一步地实现一个完整的后台权限管理系统。通过整个管理系统的开发和实践,让读者在学成之后能够熟悉和掌握当前的一些主流技术和方向,且在后续的工作中拥有自主搭建开发环境和完成整个系统开发的能力。关于本书后台权限管原创 2021-12-03 08:56:50 · 2695 阅读 · 0 评论 -
《Spring Boot从零开始学(视频教学版)》快速入门书
#好书推荐##好书奇遇季#《Spring Boot从零开始学(视频教学版)》,目前为止较好的一本Spring Boot入门书。京东当当天猫都有发售。本书配套示例代码、课件与教学视频。定价75元。本书配套示例源码、PPT课件与同步教学视频。Spring是Java开发必不可少的框架,是一个庞大的生态系统,Spring Boot正是在Spring这一片肥沃的土壤中生长出来的快速应用开发框架。Spring Boot定义了大量的自动配置,能够根据环境、条件自动配置项目的组件,使用Spring Boot来开发可原创 2022-01-27 15:03:47 · 557 阅读 · 0 评论 -
三本书带您快速深入掌握Spring Boot应用开发
#好书推荐##好书奇遇季#三本书带您快速深入掌握Spring Boot应用开发《Spring Boot从零开始学(视频教学版)》《Spring Boot应用开发实战》《深入浅出Spring Security》,京东当当天猫都有发售。《Spring Boot从零开始学(视频教学版)》配套源码、PPT课件与同步教学视频,带领读者快速入门。《Spring Boot应用开发实战》解析博客系统、聊天服务、在线商城、个人云盘四个实战项目,巩固Spring Boot应用开发。《深入浅出Spring Sec原创 2022-01-26 09:27:30 · 1842 阅读 · 1 评论 -
最近一些Spring技术书的代码资源下载
《Spring+Spring MVC+MyBatis从零开始学》https://pan.baidu.com/s/1-Cv_Q7zEz_RpLDN27_0dyA 提取码:nwp2《Spring Boot+Vue全栈开发实战》https://pan.baidu.com/s/1SYxcHPFe2HfhlVoHklcB1w《Spring Boot+Spring Cloud+Vue+Eleme...原创 2019-06-13 17:18:01 · 1104 阅读 · 3 评论 -
松哥写的《深入浅出Spring Security》真不错
安全管理是Java应用开发中无法避免的问题,目前主流的安全管理框架就是SpringSecurity和Shiro,其中Shiro一直以使用简单和轻量级著称。然而,随着SpringBoot和微服务的流行,SpringSecurity受到越来越多开发者的重视,因为SpringSecurity在和SpringBoot整合时具有先天优势。目前市面上缺少系统介绍SpringSecurity的书籍,网上的博客内容又比较零散,这为很多初次接触SpringSecurity的Java工程师学习这门技术带来诸多...转载 2021-10-25 17:06:44 · 1117 阅读 · 0 评论 -
《SSM+Vue.js 3全栈开发实战》简介
本书共分18章,内容包括Spring基础、Spring中的Bean、Spring AOP、Spring的数据库开发、Spring的事务管理、初识MyBatis、MyBatis的核心配置、动态SQL、MyBatis的关联映射、MyBatis与Spring的整合、Vue.js 3入门、Spring MVC入门、Spring MVC数据绑定、JSON数据交互和RESTful支持、拦截器、SSM框架整合、新闻发布管理系统实战、图书管理系统实战。本书配套示例源码、PPT课件、作者答疑服务。原创 2023-03-21 16:31:43 · 321 阅读 · 0 评论 -
Spring MVC简单数据绑定
为了方便查看结果,将获取的参数进行输出打印,最后返回一个名为success的视图,Spring MVC会通过视图解析器在WEB-INF/jsp路径下寻找success.jsp文件。例如,如果要编写一个对用户操作的控制器类,可以将控制器类命名为UserController,然后在该控制器类中就可以编写任何有关用户操作的方法。在WEB-INF目录下创建一个名为jsp的文件夹,然后在该文件夹中创建页面文件success.jsp,该页面只作为正确执行操作后的响应页面,没有其他业务逻辑,如文件12.4所示。原创 2025-01-10 11:41:19 · 838 阅读 · 0 评论 -
PHP与ThinkPHP连接数据库示例
连接数据库PHP支持的数据库类型非常广泛,包括MySQL、Oracle、SQL Server、MongoDB、Redis、PostgreSQL、SQLite等。以连接MySQL数据库为例,通常使用mysqli扩展或PDO(PHP Data Objects)扩展,这两个扩展需要在PHP安装目录下的php.ini中进行配置。首先打开php.ini,找到“;extension=php_mysqli”和“;extension=pdo_mysql”语句,去掉这两条语句前的分号“;原创 2025-01-09 17:35:08 · 1262 阅读 · 0 评论 -
ThinkPHP 8高效构建Web应用-响应处理
在ThinkPHP框架中,Response是一个用于处理HTTP响应的类。它提供了一系列的工具方法,这些方法可以方便我们创建和修改响应内容。一般情况下,我们可以通过表6-4所示的工具方法生成Response对象,这样可以在不直接实例化Response类的情况下返回响应。下面是工具方法的一些使用示例。原创 2025-01-08 09:27:53 · 464 阅读 · 0 评论 -
第一个Spring MVC 6入门示例
本文通过一个简单的入门示例来演示Spring MVC的使用。原创 2025-01-07 08:22:48 · 1099 阅读 · 0 评论 -
ThinkPHP 8高效构建Web应用-获取请求对象
Request对象由ThinkPHP 框架实例化,开发者需要手动实例化Request对象。ThinkPHP 框架提供了4种方法来获取Request对象,读者可以根据自己的项目要求或者个人习惯,固定使用一种获取方式,并保持一致性以提高开发效率。原创 2025-01-07 08:14:53 · 965 阅读 · 0 评论 -
ThinkPHP 8高效构建Web应用-控制器
在上面的示例中定义了一个User控制器,当用户访问http://localhost:8000/user/login或者http://localhost:8000/index.php/user/login时,就会执行User控制器中的login方法后返回login字符串。在某些场景下,控制器名称可能和模型名称冲突,比如已经有一个User的模型类,而控制器名称也为User,那么就会产生冲突,此时我们可以打开config目录下route.php中的控制器名称后缀开关。,输出login字符串。原创 2025-01-02 10:34:19 · 636 阅读 · 0 评论 -
使用Composer初始化ThinkPHP 8应用
Composer是PHP用来管理依赖关系的工具。它使用JSON格式的配置文件来描述项目的依赖关系,然后根据配置文件自动下载并安装所需的依赖。Composer工具的使用可以大大提高PHP项目的开发效率,并确保项目的依赖关系始终保持一致。原创 2024-12-31 17:23:31 · 962 阅读 · 0 评论 -
ThinkPHP 8高效构建Web应用-第一个简单的MVC应用示例
再次访问http://localhost:8000/test/show,结果如图3-2所示。注意,在这两个url链接中,test为控制器名,get和show为控制器类中的方法名;这个示例虽然简单,但是基本上可以看出,MVC模式是怎么分层处理数据、业务逻辑并展示视图的。本示例使用第1章搭建环境时创建的tp项目。在tp根目录执行php think run命令启动服务器,打开浏览器访问http://localhost:8000/test/get,结果如图3-1所示,说明我们第一个MVC应用示例已经成功实现。原创 2024-12-30 11:20:46 · 891 阅读 · 0 评论 -
使用VS Code开发ThinkPHP项目
安装完Visual Studio Code后,需要再浏览器中打开https://www.devsense.com/en链接,在页面上单击“Install”按钮,可自动在Visual Studio Code中安装PHP扩展,如图1-2、图1-3所示。然而,需要注意的是,PHP内置的Web服务器仅适用于开发和测试环境。PHPStorm是一个专为PHP开发者设计的集成开发环境,提供了许多针对PHP开发的高级功能和工具,如代码自动完成、调试器、版本控制等(注意,PHPStorm需要付费使用)。原创 2024-12-27 08:19:15 · 1244 阅读 · 0 评论 -
ThinkPHP 8开发环境安装
在Windows系统中安装composer,打开下载网址https://getcomposer.org/Composer-Setup.exe,选择需要下载的文件Composer-Setup.exe,下载完成后,在当前用户根目录下执行,之后会打开安装向导,读者可按照向导提示一步一步进行操作即可,最后将生成3个文件,结果如图1-5所示。我们在浏览器中输入地址http://localhost:8000/,将会看到欢迎页面,如图1-9所示,说明ThinkPHP可以正确运行了。命令执行结果如图1-8所示。原创 2024-12-26 14:44:55 · 855 阅读 · 0 评论 -
Spring事务管理概述
Spring的事务管理简化了传统的事务管理流程,并且在一定程度上减少了开发者的工作量。原创 2024-12-26 08:43:48 · 1078 阅读 · 0 评论 -
AspectJ开发
在Spring的配置文件中,切入点是通过元素来定义的。注意:在AOP的配置信息中,使用配置的后置通知和使用配置的最终通知,虽然都是在目标方法执行之后执行的,但它们是有区别的。在Spring的配置文件中,配置切面使用的是元素,该元素会将一个已定义好的Spring Bean转换成切面Bean,所以要在配置文件中先定义一个普通的Spring Bean(如上述代码中定义的myAspect)。原创 2024-12-04 09:48:20 · 925 阅读 · 0 评论 -
【图书介绍】案例可借鉴的Spring应用开发书
本书共分18章,内容包括Spring基础、Spring中的Bean、Spring AOP、Spring的数据库开发、Spring的事务管理、初识MyBatis、MyBatis的核心配置、动态SQL、MyBatis的关联映射、MyBatis与Spring的整合、Vue.js 3入门、Spring MVC入门、Spring MVC数据绑定、JSON数据交互和RESTful支持、拦截器、SSM框架整合、新闻发布管理系统实战、图书管理系统实战。)框架的基础知识和应用,并结合大量的示例和综合案例,帮助读者快速理解。原创 2024-11-01 08:51:26 · 766 阅读 · 0 评论 -
MyBatis入门之多对多关联关系(示例)
在元素中使用了元素来映射多对多的关联关系,其中property属性表示课程持久化类中的学生属性,ofType属性表示集合中的数据为Student类型,而column的属性值会作为参数执行StudentMapper.xml中定义的id为findStudentById的执行语句,来查询课程中的学生信息。在实际项目开发中,多对多的关联关系是非常常见的。以学生和课程为例,一个学生可以选修多门课程,而一门课程又可以被多个学生选修,学生和课程就属于多对多的关联关系。原创 2024-10-24 17:54:24 · 1337 阅读 · 0 评论 -
MyBatis入门之一对多关联关系(示例)
【示例9-2】在了解了MyBatis处理一对多关联关系的元素和方式后,接下来以班级和学生之间的这种一对多关联关系为例,详细讲解如何在MyBatis中处理一对多关联关系,具体步骤如下。在com.ssm.mapper包中创建班级实体映射文件BanjiMapper.xml,并在文件中编写一对多关联映射查询的配置,如文件9.9所示。注意:上述示例从班级的角度出发,班级与学生之间是一对多的关联关系,但如果从单个学生的角度出发,一个学生只能属于一个班级,即一对一的关联关系。在实际应用中,应用更多的关联关系是。原创 2024-10-23 08:46:42 · 624 阅读 · 0 评论 -
MyBatis入门之一对一关联关系(示例)
在上述两个映射文件中,使用了MyBatis中的嵌套查询方式进行学生及其关联的学生证信息查询,因为返回的学生对象中除基本属性外,还有一个关联的studentIdCard属性,所以需要手动编写结果映射。在映射文件中,MyBatis关联映射的元素和元素中都已经默认配置了延迟加载属性,即默认属性fetchType="lazy"(属性fetchType="eager"表示立即加载),所以在配置文件中开启延迟加载后,无须在映射文件中再进行配置。其具体实现步骤如下。原创 2024-10-22 10:51:26 · 672 阅读 · 0 评论 -
MyBatis入门程序之客户添加、更新与删除
在上述配置代码中,传入的参数是User类型的。在该类型的参数对象被传递到语句中时,#{username}会查找参数对象User的username属性(#{jobs}和#{phone}也是一样的),并将其属性值传入SQL语句中。要测试删除操作的配置十分简单,只需使用SqlSession对象的delete()方法传入需要删除数据的id值即可。与添加用户的方法相比,更新操作的代码增加了id属性值的设置,并调用SqlSession的update()方法对id为4的用户的jobs属性值进行了修改。原创 2024-10-21 09:03:22 · 547 阅读 · 0 评论 -
MyBatis入门程序之查询用户
本节将通过一个用户信息管理的入门示例来讲解MyBatis框架的查询操作。在实际开发中,查询操作通常都会涉及单条数据的精确查询以及多条数据的模糊查询。那么使用MyBatis框架是如何进行这两种查询的呢?接下来,本小节将讲解如何使用MyBatis框架,以及。原创 2024-10-18 11:11:28 · 944 阅读 · 0 评论