wordpress模板文件结构超详解
wordpress网站建设中,主题的制作是最为核心的环节。了解模板文件结构是模板制作的第一步,本文所讲的模板文件结构包括两部分,一是指以文件名为概念的文件结构,二是指文件内容的代码结构。
一、如何使模板文件起作用 ↑
wordpress模板文件夹放置于/wp-content/themes/下,开发者只需将自己的模板文件全部置于一个文件夹中,将文件夹置于该目录下,wordpress系统就会自动检测,发现模板文件可用时就会在后台“主题”中列出该模板。
我们创建一个文件夹,命名为mytheme,在mytheme中创建两个文件,分别是style.css,index.php,functions.php,用文本编辑器编辑这两个文件。在style.css首置入如下代码:
/*
Theme Name: utubon.com
Theme URI: http://www.phpstudio.info/
Description: PHP网站建设工作室
Author: PHP网站建设
Version: 1.0
License:
License URI:
Tags: 工作室
*/
保存即可。然后将mytheme文件夹放入到wordpress主题目录中,进入后台查看,是否有了一个新的主题。
其实wordpress对主题的检测紧限于style.css,index.php,有了这两个文件和上面的声明,即可在后台检测到新的主题。现在开始你可以在index.php中写网页结构,在style.css中写样式,在functions.php中添加新的函数和功能了。
你会问,其他的主题中,为什么会有这么多文件呢,如sidebar.php,page.php,single.php,category.php等。wordpress使用模板通过函数的调用,让模板之间形成完整的整体,例如在index.php中你会看到get_header()即调用文件名为header.php的模板文件, get_footer()亦然。get_template_part( 'loop', 'index' );则是调用模板loop-index.php。wordpress并非傻瓜的像include()函数一样包含这些文件,而是对文件的存在与否要进行判断,如果不存在该文件将用对应的相关文件代替,这需要你查看开发文档中该函数的具体解释。
二、一般情况下模板文件列表和对应的函数 ↑
我们查看所有的模板都会获悉该主题所拥有的模板文件,一般情况下,模板文件拥有下面的这些文件,他们分别对应了自己的调用函数,一并列出:
文件名 | 一般作用 | 对应的函数 | 备注(使用技巧) |
style.css | 样式表 | <?php bloginfo( 'stylesheet_url' ); ?>调用地址 | |
index.php | wordpress识别首页 | 自动识别 | |
functions.php | 包含增函数和新功能 | 自动识别 | |
header.php | 头部 | get_header() | |
footer.php | 尾部 | get_footer() | |
sidebar.php | 边侧栏 | get_sidebar('foot')(无参数则调用sidebar.php) | 参数foot指文件sidebar-foot.php类推 |
loop.php content.php | 内容循环 | get_template_part( 'loop', 'index' )和sidebar一样 | 参数的意思是调用模板loop-index.php类推如果get_template_part( 'content','single' ); |
404.php, search.php, page.php, single.php | 分别是404页,搜索页,单独页面,文章内容页 | 自动识别,和index.php一样,使用上述函数,没有该文件的话用index.php | |
archive.php, category.php, tag.php, author.php | 分别是归档页,分类页,标签页,作者页 | 同上,但如果只有archive.php或category.php没有其他页,其他页用archive.php代替或category.php代替 |
除了上面这些页面之外,当然还会有主题特殊的文件,如主题自身的图片,js代码screenshot.png是主题预览图片,自动检测并在后台显示。上面没有提到的文件不一定不存在,如loop-tag-cloud.php,你可以用get_template('loop','tag-cloud')来调用,这是一类上述衍生文件。其他特殊文件如果没有特定的说明或功能,也可用include()等php函数将其包含。上面的文件除了style.css,index.php都是可选文件,例如模板中没有很多文件。
三、文件代码结构:写一个最简单的模板 ↑
正如文章开头提到,最简单的模板就只有style.css和index.php这两个文件,接下来就用这个最简单的模板来讲解模板文件代码结构。如果你懂得html网页设计,并对wordpress函数有一些了解,制作自己的模板并不困难,完全可以仿照别人的模板,慢慢完成自己的模板。
这里强烈建议你采用标准的网页设计方法,放弃table布局,认真学习css,采用div+css布局。
请先自己设计出html代码(一个页面,首页),加入一些测试的文章、图片、特效等,然后按照本文的方法进行修改。然后将所有代码拷贝到index.php中,这时你甚至可以不用理会style.css。在index.php中,我给出的基本框架如下:
<html>
<head>
<title>wordpress</title>
<style type="text/css" media="screen">
html { margin-top: 28px !important; }
* html body { margin-top: 28px !important; }
</style>
</head>
<body>
<div id="wapper">
<div id="header"></div>
<div id="container">
<div id="left"></div>
<div id="right"></div>
</div>
<div id="footer"></div>
</div>
</body>
</html>
上面的只是最基本的框架,通过css样式控制页面的宽度、呈现颜色、表现形式等。
我们将头部定义到<div header>的地方,头部中既包含了网页的css、meta声明,也包含了网页顶部的一些元素,如导航条、logo、公告等。在头部中,我们需要修改一些内容:
1、引入style.css:<link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo( 'stylesheet_url' ); ?>" />
2、引入wordpress本身需要添加的代码:
<?php
if ( is_singular() && get_option( 'thread_comments' ) )
wp_enqueue_script( 'comment-reply' );
wp_head();
?>
3、用下面的代码替换<title>的内容,以显示网页标题
<?php
global $page, $paged;
wp_title( '|', true, 'right' );
bloginfo( 'name' );
$site_description = get_bloginfo( 'description', 'display' );
if ( $site_description && ( is_home() || is_front_page() ) )
echo " | $site_description";
if ( $paged >= 2 || $page >= 2 )
echo ' | ' . sprintf( __( 'Page %s', 'twentyten' ), max( $paged, $page ) );
?>
以上是网站声明部分,这些内容作为wordpress应该拥有的内容,最好不要缺少,当然你也可以根据自己的需要和想法替换为自己想要的内容。例如在wp_title()后面添加echo '你想要添加的内容';从而增加你的网页标题的信息。
4、修改你的<div header>的内容,导航可以使用wordpress后台菜单用wp_nav_menu()函数来实现,要想使用该功能,还需要在functions.php中预先初始化主题,让主题支持后台菜单功能。或用分类列表代替用wp_list_categories()函数来实现,这些函数需要你慢慢学习他们的使用方法。
接下来是内容的部分,我们将文章在首页的呈现列表放在<div left>中,用下面的代码来实现文章列表的呈现。
<?php while(has_posts()) : the_post(); ?>
<div id="post">
<div id="post-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></div>
<div id="post-content"><?php the_content(); ?></div>
</div>
<?php endwhile; ?>
以上是最最简单的文章循环了,将列出对应条数的最新文章标题和内容。作为开发者,你需要根据自己的想象和需要,结合js效果、css样式,实现自己最终想要的结果。
接下来是sidebar,我们将sidebar放在<div right>中,使用下面这段代码,实现在后台放置widget:
<?php if(is_active_sidebar('sidebar-widget-area-primary')): ?>
<div id="primary">
<?php dynamic_sidebar( 'sidebar-widget-area-primary' ); ?>
</div><!--//end of primary-->
<?php endif; // end primary widget area ?>
不过目前这还是无法实现的,我们需要在functions.php中定义一个widget,这样才能实现后台小工具的使用,并在这里表现出来。
网页footer尾部可以由你自由发挥,等你慢慢熟练了wordpress模板的写作之后,可以实现很多调用和特效,例如在底部放入友情链接等。
四、functions.php的初始化定义 ↑
虽然style.css和index.php就可以让主题工作,但这样的主题是没有任何功能的,在前文中你已经发觉这个问题。怎样让主题拥有一些功能呢,如小工具widget的使用,菜单的使用,特色图片的使用等等。你可以在网络上其他文章中发现这些功能如何激活,本文只是做一个最简单的解释,丰富的功能需要你自己慢慢学习。
add_action( 'after_setup_theme', 'twentyten_setup' );
if (!function_exists( 'twentyten_setup')):
function twentyten_setup() {
add_editor_style();
add_theme_support( 'post-formats', array( 'aside', 'gallery' ) );
add_theme_support( 'post-thumbnails' );
add_theme_support( 'automatic-feed-links' );
load_theme_textdomain( 'twentyten', TEMPLATEPATH . '/languages' );
$locale = get_locale();
$locale_file = TEMPLATEPATH . "/languages/$locale.php";
if ( is_readable( $locale_file ) )
require_once( $locale_file );
register_nav_menus( array(
'primary' => __( 'Primary Navigation', 'twentyten' ),
) );
add_custom_background();
if ( ! defined( 'HEADER_TEXTCOLOR' ) )
define( 'HEADER_TEXTCOLOR', '' );
if ( ! defined( 'HEADER_IMAGE' ) )
define( 'HEADER_IMAGE', '%s/images/headers/path.jpg' );
define( 'HEADER_IMAGE_WIDTH', apply_filters( 'twentyten_header_image_width', 940 ) );
define( 'HEADER_IMAGE_HEIGHT', apply_filters( 'twentyten_header_image_height', 198 ) );
set_post_thumbnail_size( HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT, true );
if ( ! defined( 'NO_HEADER_TEXT' ) )
define( 'NO_HEADER_TEXT', true );
}
endif;
if(function_exists('register_sidebar')){
register_sidebar(array(
'name'=>'上部边栏',
'id' => 'sidebar-widget-area-primary',
'description' => '',
'before_widget' => '<div>',
'after_widget' => '</div>',
'before_title' => '<h3><span>',
'after_title' => '</span></h3>',
));
register_sidebar(array(
'name'=>'下部边栏',
'id' => 'sidebar-widget-area-secondary',
'description' => '',
'before_widget' => '<div>',
'after_widget' => '</div>',
'before_title' => '<h3><span>',
'after_title' => '</span></h3>',
));
register_sidebar(array(
'name'=>'边栏右边',
'id' => 'sidebar-widget-area-right',
'description' => '一般放分类列表',
'before_widget' => '<div>',
'after_widget' => '</div>',
'before_title' => '<h3><span>',
'after_title' => '</span></h3>',
));
}
这段代码是我从tweentyten主题中抄袭和稍加修改过来的,你可以将这段代码拷贝到你的functions.php中,进入后台看看是否已经激活了不少功能。
接下来的工作就是要添加新的函数了,用新的函数来实现很多新的wordpress系统没有的功能。由于wordpress模板开发是一个巨大的工程,无法用一篇文章讲完,因此,本文只是稍加点讲,无法深入,你可以看其他文章,以获取新的信息。
五、构建完整的模板体系 ↑
通过上文的讲解加上你坚持不懈的学习,应该对wordpress模板的初浅知识有了较为深刻的体会。接下来你就将拥有一个庞大复杂但逻辑合理成系统体系的模板了。
我们利用之前制作好的index.php文件将其分割,将我所指的头部全部剪切到一个新的header.php文件中,置于mytheme下,在index.php被剪切的地方用<?php get_header(); ?>代替,将<div container>全部剪切到新的loop.php中用<?php get_template_part('loop','index'); ?>代替,将尾部全部剪切到footer.php中用<?php get_footer(); ?>代替。这样一来你就发现你的index.php只留下了三条php语句了,在运行你的博客试试,是否跟刚才的效果一模一样呢?再将loop.php中的<div right>剪切到sidebar.php中用<?php get_sidebar(); ?>代替。这下是不是觉得你的主题文件夹内就丰富了好多。
新建一个category.php,将index.php中的内容拷贝过来,修改<?php get_template_part('loop','index'); ?>为<?php get_template_part('loop','category'); ?>,新建一个loop-category.php并在里面编写分类页想要呈现的表现形式。
按照这个思路,很快你的模板文件就会有很多,而且随着你对模板文件之间调用关系的理解,很快可以自由编写文件了。
六、总结 ↑
编写wordpress模板是一个比较繁杂的过程,对于初学者是很难一下获得成功的,只有慢慢学习和敢于挑战才能获取成功。wordpress模板的关键主要体现在:
1、模板样式:模板的外观决定了模板的成败,一个好的模板首先体现在另读者很舒服的外观上,而作为程序员,往往被设计难倒;要向拥有令人眼前一亮的wordpress模板,学好设计和css是必不可少的网编基础。
2、模板功能:模板的功能是体现模板开发者水平的衡量标准,一个功能丰富的模板,能给用户一种权威的感觉,无论是个人站还是企业站,华丽的网站功能让用户觉得站长是用心做站的人。
3、模板的设计理念:开发者根据自己的目标设计符合自身需要的模板,不盲目追求,不刻意回避,而是以需求为目标,以用户体验为设计动力。
因此,其实开发wordpress到后期问题不是在wordpress模板的代码逻辑和函数编写上,而是在于天才的开发思路和高雅的审美观念上。
相关文章:
wordpress模板文件结构超详解
wordpress网站建设中,主题的制作是最为核心的环节。了解模板文件结构是模板制作的第一步,本文所讲的模板文件结构包括两部分,一是指以文件名为概念的文件结构,二是指文件内容的代码结构。 一、如何使模板文件起作用 ↑ wordpres…...
大脑神经网络与机器神经网络的区别
大脑神经网络(生物神经网络)与机器神经网络(人工神经网络,ANN)虽然名称相似,但在结构、功能、学习机制等方面存在显著差异。以下是两者的主要区别: 1. 基础结构与组成 大脑神经网络: 由 生物神经元(约860亿个)通过突触连接形成动态网络。 神经元通过电化学信号(动作…...
【H5自适应】高端科技类pbootcms网站模板 – 三级栏目、下载与招聘功能支持
(H5自适应)高端大气的科技类pbootcms网站模板 带三级栏目、下载和招聘功能 后台地址:您的域名/admin.php 后台账号:admin 后台密码:123456 为了提升系统安全,请将后台文件admin.php的文件名修改一下。修改之后,后台…...
SQL-leetcode—1661. 每台机器的进程平均运行时间
1661. 每台机器的进程平均运行时间 表: Activity ----------------------- | Column Name | Type | ----------------------- | machine_id | int | | process_id | int | | activity_type | enum | | timestamp | float | ----------------------- 该表展示了一家工厂网站的…...
C++ Primer 跳转语句
欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...
清华大学:DeepSeek 如何赋能职场应用(35 页 PDF)
原来已经分享过清华大学的 DeepSeek:从入门到精通(100页PDF) 现在又来第二弹:《DeepSeek 如何赋能职场应用?从提示语技巧到多场景应用》 PDF里介绍了 DeepSeek 这一人工智能工具及其在职场中的应用,从基础…...
idea 错误: 找不到或无法加载主类 @C:\Users\admin\AppData\Local\Temp\idea_arg_file1549212448
idea 错误: 找不到或无法加载主类 C:\Users\admin\AppData\Local\Temp\idea_arg_file1549212448 该错误往往和左下角爱弹出的如下提示是一个意思 Error running ‘PayV3Test1.testTransferBatchesBatchId’ Error running PayV3Test1.testTransferBatchesBatchId. Command lin…...
开发指南098-logback-spring.xml说明
可执行的工程src\main\resources目录有logback-spring.xml文件用于配置日志。配置日志有些容易犯晕的地方,这里列出: 1、<logger>标签的优先级高于<root>标签:所以,如果<logger>标签指定了某个具体的包或类的…...
【SpringBoot3.x+】slf4j-log4j12依赖引入打印日志报错的两种解决方法
最开始引入了1.7.5版本的slf4j-log4j依赖包,但是控制台不报错也不显示日志 在https://mvnrepository.com/找到最新的2.0.16版本之后出现报错: 进入提示的slf4j网站中可以找到从2.0.0版本开始,slf4j-log4j已经被slf4j-reload4j取代࿱…...
【STM32】H743的以太网MAC控制器的一个特殊功能
调试743的MAC,翻阅手册的时候,发现了一个有意思的功能 混杂模式 H743的MAC控制器,可以设置为混杂模式,这就意味着它可以做一些网络监控的应用,譬如连接具备端口镜像功能的交换机,然后直接代替PC实现网络数据…...
Java LinkedList(单列集合)
LinkedList 是 Java 中实现了 List 接口的一个类,它属于 java.util 包。与 ArrayList 不同,LinkedList 是基于双向链表实现的,适合于频繁进行插入和删除操作的场景。 1. LinkedList 的基本特性 基于链表实现:LinkedList 使用双向…...
docker compose快速部署kafka-connect集群
先部署kafka集群,启动 参考:docker compose部署kafka集群-CSDN博客 创建timezone文件,内容填写Asia/Shanghai 再部署kafka-connect集群 networks: net: external: true services: kafka-connect1: restart: always image:…...
docker 部署nginx,nginx 504
遇到问题 原因: 因为用的docker 部署nginx, docker 应用与服务之间的端口未开放,导致访问不到服务。...
RealClip正式发布:重新定义轻量化数字内容交互体验
在移动互联网流量红利逐渐见顶的当下,用户对即时性、碎片化娱乐与交互体验的需求持续攀升。轻量化小游戏、VR互动、数字孪生、工业仿真等内容形态迅速崛起,但开发者却面临两大核心矛盾:如何将高性能互动内容轻量化嵌入现有应用中?…...
SQLMesh系列教程-2:SQLMesh入门项目实战(上篇)
假设你已经了解SQLMesh是什么,以及其他应用场景。如果没有,我建议你先阅读《SQLMesh系列教程-1:数据工程师的高效利器-SQLMesh》。 在本文中,我们将完成一个小项目或教程,以帮助你开始使用SQLMesh。你可以选择一步一步…...
把 DeepSeek1.5b 部署在显卡小于4G的电脑上
这里写自定义目录标题 介绍准备安装 Ollama查看CUDA需要版本安装CudaToolkit检查Cuda是否装好设置Ollama环境变量验证是否跑在GPU上ollama如何导入本地下载的模型安装及配置docker安装open-webui启动open-webui开始对话 调整gpu精度 介绍 Deepseek1.5b能够运行在只用cpu和gpu内…...
#渗透测试#批量漏洞挖掘#29网课交单平台 SQL注入
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章读。 目录 1. 漏洞原理 2. 漏洞定位 3. 攻击验证示…...
试试DeepSeek写prompt+stable diffusion生成漫画
#deepseek #stable diffusion 模型:dreamshaperXL_v21TurboDPMSDE.safetensors 一、情节拟定 漫画情节由deepseek自编自导,画幅为四张。 Prompt 1: 魔法觉醒 "一个平凡的少年在阁楼发现一本古老的魔法书,书页散发着微弱的蓝光。画…...
java面试题之 int和Integer的区别
int和Integer的区别 1、Integer是int的包装类,int则是java的一种基本数据类型 2、Integer变量必须实例化后才能使用,而int变量不需要 3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;…...
Spring Bean的生命周期
1、对象实例化 2、属性设置 3、初始化 4、使用 5、销毁 示例代码如下: import org.springframework.stereotype.Component;Component public class SpringBeanA {public SpringBeanA() {System.out.println("第一步:实例化(spring对象&#x…...
Vue 发送 PDF 文件链接到 WinForm 程序进行打印
Vue 发送 PDF 文件链接到 WinForm 程序进行打印的完整流程如下: 1. Vue 端 Vue 通过 fetch 或 axios 发送 PDF 文件的 URL 给 WinForms 程序(WinForms 需要开启一个本地 API)。 <template><div><button click"sendPri…...
Vue笔记(十)
一、AI的基本认知 二、ChatGPT的基本使用 三、AI插件--Copilot入门 1.Copilot是由OpenAI和GitHub合作开发的AI编程辅助插件,基于大量代码训练,能根据上下文自动生成代码建议。 2.安装与配置:在常用代码编辑器(如Visual Studio Cod…...
使用LangChainV3.0加载PDF文件并进行总结
LangChain目前已经更新到了V3版本,之前一直使用的V1版本,有很多方法都需要自己去封装,这次重新看了V3版本的API文档,很多方法都十分便利,调用方法简单明了十分方便,下面就来展示下这次对于PDF文件加载的优化…...
玩转大语言模型——使用Kiln AI可视化环境进行大语言模型微调数据合成
系列文章目录 玩转大语言模型——使用langchain和Ollama本地部署大语言模型 玩转大语言模型——三分钟教你用langchain提示词工程获得猫娘女友 玩转大语言模型——ollama导入huggingface下载的模型 玩转大语言模型——langchain调用ollama视觉多模态语言模型 玩转大语言模型—…...
EasyRTC智能硬件:小体积,大能量,开启音视频互动新体验
在万物互联的时代,智能硬件正以前所未有的速度融入我们的生活。然而,受限于硬件性能和网络环境,许多智能硬件在音视频互动体验上仍存在延迟高、卡顿、回声等问题,严重影响了用户的使用体验。 EasyRTC智能硬件,凭借其强…...
vue知识点5
1.如何让组件里的样式与其他组件互相不干扰 scope范围的意思 <style scope> </style> 2.vue的生命周期 创建 挂载 更新 销毁 3.vue的四个生命周期详解 创建beforeCreate,created 挂载 beforeMount,mounted 更新 beforeUpdate,updated 销毁 beforeDest…...
qt的QSizePolicy的使用
使用 QSizePolicy 设置控件的伸缩因子 在 Qt 中,QSizePolicy 控制 控件如何在布局中伸缩。如果想要影响控件的大小调整行为,可以通过 QSizePolicy::setHorizontalStretch() 和 QSizePolicy::setVerticalStretch() 设置伸缩因子。 基本用法 假设我们有一个…...
基于 FFmpeg 和 OpenGLES 的 iOS 视频预览和录制技术方案设计
基于 FFmpeg 和 OpenGLES 的 iOS 视频预览和录制技术方案设计 在 iOS 上实现一个基于 FFmpeg 和 OpenGLES 的视频预览和录制功能,需要结合 FFmpeg 的强大音视频处理能力和 OpenGLES 的高效图形渲染能力。以下是一个完整的技术方案设计,包含项目的架构设计、模块划分、技术选…...
如何保障 MySQL 和 Redis 的数据一致性
在现代分布式系统中,确保不同数据存储(如 MySQL 和 Redis)之间的一致性是一个常见的挑战。MySQL 是一种关系型数据库管理系统,而 Redis 是一种内存中的键值存储系统,通常用于缓存和快速访问数据。本文将详细介绍几种保…...
【LeetCode Hot100 子串】和为 k 的子数组、滑动窗口最大值、最小覆盖子串
子串 1. 和为 k 的子数组题目描述解题思路主要思路步骤 时间复杂度与空间复杂度代码实现 2. 滑动窗口最大值题目描述解题思路双端队列的原理:优化步骤: Java实现 3. 最小覆盖子串题目描述解题思路滑动窗口的基本思路:具体步骤:算法…...
【CLIP系列】4:目标检测(ViLD、GLIP)
目录 1 ViLD2 GLIP2.1 前言2.2 损失计算2.3 模型框架 1 ViLD OPEN-VOCABULARY OBJECT DETECTION VIA VISION AND LANGUAGE KNOWLEDGE DISTILLATION 从标题就能看出来,作者是把CLIP模型当成一个Teacher,去蒸馏他自己的网络,从而能Zero Shot去…...
vue-谷歌浏览器安装vue-devtools插件
文章目录 一、谷歌浏览器安装vue-devtools1.1、方式一:直接下载crx并安装 本文讲解谷歌浏览器安装vue-devtools插件的步骤。 注意:以下vue-devtools插件都是vue2版本的。 一、谷歌浏览器安装vue-devtools 1.1、方式一:直接下载crx并安装 …...
【安全测试】0基础新手学Web安全测试笔记(一)
文章目录 一、关于账号密码的漏洞二、关于验证码的漏洞三、Burp工具的使用四、渗透测试1. 渗透测试类型2. 脆弱性评估 五、常见的应用安全风险1. 注入2. 失效的身份认证3. 敏感数据泄露4. XML外部实体(XXE)5. 失效的访问控制6. 安全配置错误7. 跨站脚本:(XSS)8. 不安全的反序列…...
初窥强大,AI识别技术实现图像转文字(OCR技术)
⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据、人工智能领域创作者。目前从事python全栈、爬虫和人工智能等相关工作,主要擅长领域有:python…...
JDK 14,15,17的一些新特性(部分常用)
1:instanceof(后,使用不再需要墙转) 2:switch语句增强 1:支持lmbda,自动防击穿,有返回值 2:支持case多个值,复杂逻辑结果支持yield返回 3:字符串…...
架构设计系列(二):CI/CD
一、概述 CI/CD 是 持续集成(Continuous Integration) 和 持续交付/持续部署(Continuous Delivery/Continuous Deployment) 的缩写,是现代软件开发中的一套核心实践和工具链,旨在提高软件交付的效率、质量…...
二十六、使用docsify搭建文档管理平台
特性 无需构建,写完文档直接发布容易使用并且轻量 (~19kB gzipped)智能的全文搜索提供多套主题丰富的 API...
SpringMVC学习使用
一、SpringMVC简单理解 1.1 Spring与Web环境集成 1.1.1 ApplicationContext应用上下文获取方式 应用上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件) 方式获取的,但是每次从容器中获得Bean时都要编写new ClasspathXmlApplicationContext(sp…...
MySQL | MySQL安装教程
MySQL | MySQL安装教程(压缩包(ZIP)安装-详细版) 🪄个人博客:https://vite.xingji.fun MySQL概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,MySQL AB公司被Sun公司收购,Sun公…...
Vite入门指南
一、什么是Vite? Vite(法语意为"快速")是由Vue作者尤雨溪开发的新型前端构建工具。它基于原生ES模块(ESM)实现,具有以下核心优势: 极速启动:冷启动时间比Webpack快10-10…...
DeepSeek 助力 Vue 开发:打造丝滑的进度条
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
左移架构 -- 从攒批,湖仓到使用数据流的实时数据产品
编辑导读: 这篇文章翻译自 Kai Waehner的 《The Shift Left Architecture – From Batch and Lakehouse to Real-Time Data Products with Data Streaming》。文章通过数据产品的概念引出了如何创建可重复使用的数据产品使企业能够从当前和未来的数据中获得价值。基于构建数据产…...
用java实现word(docx)转换为pdf格式文档(简单版)
导入依赖 <dependency> <groupId>com.documents4j</groupId> <artifactId>documents4j-local</artifactId> <version>1.0.3</version> </dependency> <dependency>…...
【云安全】云原生- K8S etcd 未授权访问
什么是etcd? etcd 是一个开源的分布式键值存储系统,主要用于存储和管理配置信息、状态数据以及服务发现信息。它采用 Raft 共识算法,确保数据的一致性和高可用性,能够在多个节点上运行,保证在部分节点故障时仍能继续提…...
【Elasticsearch】字符过滤器Character Filters
在 Elasticsearch 中,字符过滤器(Character Filters)是文本分析器的重要组成部分,用于在分词之前对原始文本进行预处理。它们可以对字符流进行转换,例如添加、删除或更改字符。Elasticsearch 提供了三种内置的字符过滤…...
网络工程师 (35)以太网通道
一、概念与原理 以太网通道,也称为以太端口捆绑、端口聚集或以太链路聚集,是一种将多个物理以太网端口组合成一个逻辑通道的技术。这一技术使得多个端口能够并行工作,共同承担数据传输任务,从而提高了网络的传输能力和可靠性。 二…...
浏览器网络请求全流程深度解析
一、核心流程概述 现代浏览器的网络请求过程是一个分层协作的精密系统,涉及应用层协议、传输层协议、操作系统内核及网络基础设施的协同工作。整个过程可抽象为以下关键阶段: 请求构建与初始化DNS解析与寻址TCP连接建立HTTP协议交互响应处理与资源解析…...
arduino扩展:Arduino Mega 控制 32 个舵机(参考表情机器人)
参考:表情机器人中使用22个舵机的案例 引言 在电子制作与自动化控制领域,Arduino 凭借其易用性和强大的扩展性备受青睐。Arduino Mega 作为其中功能较为强大的一款开发板,具备丰富的引脚资源,能够实现复杂的控制任务。舵机作为常…...
时间盲注,Boolean盲注
什么是SQL注入(SQL Injection) SQL注入是指攻击者通过构造恶意SQL语句来操控数据库,通常发生在Web应用程序未对用户输入进行充分验证的情况下。 什么是盲注(Blind SQL Injection) 盲注就是通过使用巧妙的SQL语句&am…...
小程序canvas2d实现横版全屏和竖版逐字的签名组件(字帖式米字格签名组件)
文章标题 01 功能说明02 效果预览2.1 横版2.2 竖版 03 使用方式04 横向签名组件源码4.1 html 代码4.2 业务 Js4.3 样式 Css 05 竖向签名组件源码5.1 布局 Html5.2 业务 Js5.3 样式 Css 01 功能说明 技术栈:uniapp、vue、canvas 2d 需求: 实现横版的全…...