当前位置: 首页 > news >正文

PHP安全开发

安全开发

请添加图片描述

PHP

基础

增:insert into 表名(列名 1, 列名 2) value(‘列 1 值 1’, ‘列 2 值 2’);

删:delete from 表名 where 列名 = ‘条件’;

改:update 表名 set 列名 = 数据 where 列名 = ‘条件’;

查:select * from 表名 where 列名=‘条件’;

mysqli_connect() 打开一个到 MySQL 的新的连接。

mysqli_select_db() 更改连接的默认数据库。

mysqli_query() 执行某个针对数据库的查询。

mysqli_fetch_row() 从结果集中取得一行,并作为枚举数组返回。 mysqli_close() 关闭先前打开的数据库连接。

参考:https://www.runoob.com/php/php-ref-mysqli.html

全局变量参考:https://www.w3school.com.cn/php/php_superglobals.asp#google_vignette

$_SERVER[‘PHP_SELF’]返回当前执行脚本的文件名。
$_SERVER[‘GATEWAY_INTERFACE’]返回服务器使用的 CGI 规范的版本。
$_SERVER[‘SERVER_ADDR’]返回当前运行脚本所在的服务器的 IP 地址。
$_SERVER[‘SERVER_NAME’]返回当前运行脚本所在的服务器的主机名(比如 www.w3school.com.cn)。
$_SERVER[‘SERVER_SOFTWARE’]返回服务器标识字符串(比如 Apache/2.2.24)。
$_SERVER[‘SERVER_PROTOCOL’]返回请求页面时通信协议的名称和版本(例如,“HTTP/1.0”)。
$_SERVER[‘REQUEST_METHOD’]返回访问页面使用的请求方法(例如 POST)。
$_SERVER[‘REQUEST_TIME’]返回请求开始时的时间戳(例如 1577687494)。
$_SERVER[‘QUERY_STRING’]返回查询字符串,如果是通过查询字符串访问此页面。
$_SERVER[‘HTTP_ACCEPT’]返回来自当前请求的请求头。
$_SERVER[‘HTTP_ACCEPT_CHARSET’]返回来自当前请求的 Accept_Charset 头( 例如 utf-8,ISO-8859-1)
$_SERVER[‘HTTP_HOST’]返回来自当前请求的 Host 头。
$_SERVER[‘HTTP_REFERER’]返回当前页面的完整 URL(不可靠,因为不是所有用户代理都支持)。
$_SERVER[‘HTTPS’]是否通过安全 HTTP 协议查询脚本。
$_SERVER[‘REMOTE_ADDR’]返回浏览当前页面的用户的 IP 地址。
$_SERVER[‘REMOTE_HOST’]返回浏览当前页面的用户的主机名。
$_SERVER[‘REMOTE_PORT’]返回用户机器上连接到 Web 服务器所使用的端口号。
$_SERVER[‘SCRIPT_FILENAME’]返回当前执行脚本的绝对路径。
$_SERVER[‘SERVER_ADMIN’]该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。
$_SERVER[‘SERVER_PORT’]Web 服务器使用的端口。默认值为 “80”。
$_SERVER[‘SERVER_SIGNATURE’]返回服务器版本和虚拟主机名。
$_SERVER[‘PATH_TRANSLATED’]当前脚本所在文件系统(非文档根目录)的基本路径。
$_SERVER[‘SCRIPT_NAME’]返回当前脚本的路径。
$_SERVER[‘SCRIPT_URI’]返回当前页面的 URI。

身份验证-Cookie 使用

1、客户端向服务器发送 HTTP 请求。

2、服务器检查请求头中是否包含 cookie 信息。

3、如果请求头中包含 cookie 信息,则服务器使用该 cookie 来识别客户端,否则服务 器将生成一个新的 cookie。

4、服务器在响应头中设置 cookie 信息并将其发送回客户端。

5、客户端接收响应并将 cookie 保存在本地。

6、当客户端发送下一次 HTTP 请求时,它会将 cookie 信息附加到请求头中。

7、服务器收到请求并检查 cookie 的有效性。

8、如果 cookie 有效,则服务器响应请求。否则,服务器可能会要求客户端重新登录。

setcookie(): 设置一个 cookie 并发送到客户端浏览器。

unset(): 用于删除指定的 cookie。

身份验证-Session 使用

1、客户端向服务器发送 HTTP 请求。

2、服务器为客户端生成一个唯一的 session ID,并将其存储在服务器端的存储器中 (如文件、数据库等)。

3、服务器将生成的 session ID 作为一个 cookie 发送给客户端。

4、客户端将 session ID 保存为一个 cookie,通常是在本地浏览器中存储。

5、当客户端在发送下一次 HTTP 请求时,它会将该 cookie 信息附加到请求头中,以便 服务器可以通过该 session ID 来识别客户端。

6、服务器使用 session ID 来检索存储在服务器端存储器中的与该客户端相关的 session 数据,从而在客户端和服务器之间共享数据。

session_start(): 启动会话,用于开始或恢复一个已经存在的会话。

$_SESSION: 用于存储和访问当前会话中的所有变量。

session_destroy(): 销毁当前会话中的所有数据。

session_unset(): 释放当前会话中的所有变量。

Session 存储路径:PHP.INI 中 session.save_path 设置路径

唯一性判断-Token 使用

1、生成 Token 并将其存储在 Session

2、生成 Token 并将其绑定在 Cookie 触发

3、尝试登录表单中带入 Token 验证逻辑

示例

gbook.php

<script src="/ueditor/ueditor.config.js">/*引入配置文件*/</script>
<script src="/ueditor/ueditor.all.js">/*引入源码文件*/</script><form id="form1" name="form1" method="post" action="">用户名:<input type="text" name="username" maxlength="2000"><br>内容:<textarea id="content" rows="10" cols="70" name="content" style="border:1px solid #E5E5E5;"></textarea><script type="text/javascript">UE.getEditor("content");//实例化编辑器传参,id为将要被替换的容器。</script><input type="submit" name="submit" id="submit" value="提交"></form><?php
include 'config.php';function add_gbook($con){$u = @$_POST['username'];if (isset($u)) {$c = @$_POST['content'];$i = @$_SERVER['REMOTE_ADDR'];$ua = @$_SERVER['HTTP_USER_AGENT'];$sql = "insert into gbook(`username`, `content`,`ipaddr`,`uagent`) value('$u', '$c','$i','$ua');";if (mysqli_query($con, $sql)) {echo "<script>alert('留言成功!')</script>";}}
}function show_gbook($con,$del){$sql1="select * from gbook";$data=mysqli_query($con,$sql1);while ($row=mysqli_fetch_row($data)) {echo '<hr>';echo '用户名:'.$row[0].'<br>';echo '内容:'.$row[1].'<br>';echo 'IP地址:'.$row[2].'<br>';echo 'UA浏览器:'.$row[3].'<br>';if($del=='del'){echo "<a href='gbook-admin.php?del=$row[0]'>删除</a>";}}
}add_gbook($con);
show_gbook($con,'x');//if (!$con)
//{
//    die("连接错误: " . mysqli_connect_error());
//}else{
//    $u=@$_POST['username'];
//    if(isset($u)){
//        $c=@$_POST['content'];
//        $i=@$_SERVER['REMOTE_ADDR'];
//        $ua=@$_SERVER['HTTP_USER_AGENT'];
//        $sql="insert into gbook(`username`, `content`,`ipaddr`,`uagent`) value('$u', '$c','$i','$ua');";
//        if(mysqli_query($con,$sql)){
//            echo "<script>alert('留言成功!')</script>";
//            $sql1="select * from gbook";
//            $data=mysqli_query($con,$sql1);
//            while ($row=mysqli_fetch_row($data))
//            {
//                echo '<hr>';
//                echo '用户名:'.$row[0].'<br>';
//                echo '内容:'.$row[1].'<br>';
//                echo 'IP地址:'.$row[2].'<br>';
//                echo 'UA浏览器:'.$row[3].'<br>';
//            }
//
//        }else{
//            echo "<script>alert('留言失败!')</script>";
//        }
//
//    }
//
//}?>

demo01

<?php
$dbip='localhost';
$dbuser='root';
$dbpass='123456';
$dbname='demo01';
$con=mysqli_connect($dbip,$dbuser,$dbpass,$dbname);

gbook-admin.php

<?php
include '../config.php';
include '../gbook.php';show_gbook($con,'del');$delstr=@$_GET['del'];
if(isset($delstr)){$sql2="delete from gbook where username = '$delstr';";if(mysqli_query($con,$sql2)){echo "<script>alert('删除成功!')</script>";}
}

文件管理模块-上传-过滤机制

$_FILES:PHP 中一个预定义的超全局变量,用于在上传文件时从客户端接收文件,并将其保存到服务器上。它是一个包含上传文件信息的数组,包括文件名、类型、大小、临时文件名等信息。

$_FILES["表单值"]["name"] 获取上传文件原始名称

$_FILES["表单值"]["type"] 获取上传文件 MIME 类型

$_FILES["表单值"]["size"] 获取上传文件字节单位大小

$_FILES["表单值"]["tmp_name"] 获取上传的临时副本文件名

$_FILES["表单值"]["error"] 获取上传时发生的错误代码

move_uploaded_file() 将上传的文件移动到指定位置的函数

is_dir() 函数用于检查指定的路径是否是一个目录

opendir() 函数用于打开指定的目录,返回句柄,用来读取目录中的文件和子目录

readdir() 函数用于从打开的目录句柄中读取目录中的文件和子目录

open_basedir:PHP.INI 中的设置用来控制脚本程序访问目录

文件包含:

include() 在错误发生后脚本继续执行

require() 在错误发生后脚本停止执行

include_once() 如果已经包含,则不再执行

require_once() 如果已经包含,则不再执行

示例

<?php$name=$_FILES['f']['name'];
$type=$_FILES['f']['type'];
$size=$_FILES['f']['size'];
$tmp_name=$_FILES['f']['tmp_name'];
$error=$_FILES['f']['error'];//echo $name."<br>";
//echo $type."<br>";
//echo $size."<br>";
//echo $tmp_name."<br>";
//echo $error."<br>";
//if(move_uploaded_file($tmp_name,'upload/'.$name)){
//    echo "文件上传成功!";
//}//上传文件后缀过滤 黑名单机制
//$black_ext=array('php','asp','jsp','aspx');
xxx.jpg xxx.png
//$fenge = explode('.',$name);
//$exts = end($fenge);
//if(in_array($exts,$black_ext)){
//    echo '非法后缀文件'.$exts;
//}else{
//    move_uploaded_file($tmp_name,'upload/'.$name);
//    echo '<script>alert("上传成功")</script>';
//}//上传文件后缀过滤 白名单机制
//$allow_ext=array('png','jpg','gif','jpeg');
xxx.jpg xxx.png
//$fenge = explode('.',$name);
//$exts = end($fenge);
//if(!in_array($exts,$allow_ext)){
//    echo '非法后缀文件'.$exts;
//}else{
//    move_uploaded_file($tmp_name,'upload/'.$name);
//    echo '<script>alert("上传成功")</script>';
//}//MIME文件类型过滤
$allow_type=array('image/png','image/jpg','image/jpeg','image/gif');
if(!in_array($type,$allow_type)){echo '非法后缀文件';
}else{move_uploaded_file($tmp_name,'upload/'.$name);echo '<script>alert("上传成功")</script>';}
?>

filemange.php

<?php
ini_set('open_basedir',__DIR__);
$path=$_GET['path'] ?? './';
$action = isset($_GET['a'])?$_GET['a']:'';
$path = isset($_GET['path'])?$_GET['path']:'.';
if(is_file($path))
{//获得文件名$file = basename($path);//获得路径$path = dirname($path);
}
//判断,不是目录
elseif(!is_dir($path))
{echo '我只会吃瓜!';
}
function getlist($path){$hd=opendir($path);while(($file_name=readdir($hd) )!== false){if($file_name != '.' && $file_name != '..'){$file_path = "$path/$file_name";$file_type = filetype($file_path);}$list[$file_type][] = array( //$file_type = dir 和 file $list['dir'] 和  $list['file']'file_name'=>$file_name, //文件名存储键值file_name'file_path'=>$file_path, //文件路径存储键值file_path'file_size'=>round(filesize($file_path)/1024), //通过换算文件大小存储键值file_path'file_time'=>date('Y/m/d H:i:s',filemtime($file_path)), //获取文件时间并存储键值file_path);}closedir($hd);return $list;
}$list=getlist($path);//接受方法 判断是怎么操作
//echo $action;
switch ($action){case 'del':unlink($file);//$cmd="del $file";//system($cmd);//echo $cmd;break;case 'down':header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=\"" . $file . "\"");header("Content-Length: " . filesize($file));readfile($file);break;case 'edit':$content=file_get_contents($file);echo '<form name="form1" method="post" action="">';echo "文件名:".$file."<br>";echo "文件内容:<br>";echo '<textarea name="code" style="resize:none;" rows="100" cols="100"">'.$content.'</textarea><br>';echo '<input type="submit" name="submit" id="submit" value="提交">';echo '</form>';break;
}//检测编辑后提交的事件 进入文件重新写入
if(isset($_POST['code'])){$f=fopen("$path/$file",'w+');fwrite($f,$_POST['code']);fclose($f);
}?><table width="100%" style="font-size: 10px;text-align: center;"><tr><th>图标</th><th>名称</th><th>日期</th><th>大小</th><th>路径</th><th>操作</th></tr><?php  foreach ($list['dir'] as $v): ?><tr><td><img src="./img/list.png" width="20" height="20"></td><td><?php echo $v['file_name']?></td><td><?php echo $v['file_time']?></td><td>-</td><td><?php echo $v['file_path']?></td><td><a href="?path=<?php echo $v['file_path']?>">打开</a></td></tr><?php endforeach;?><?php  foreach ($list['file'] as $v): ?><tr><td><img src="./img/file.png" width="20" height="20"></td><td><?php echo $v['file_name']?></td><td><?php echo $v['file_time']?></td><td><?php echo $v['file_size']?></td><td><?php echo $v['file_path']?></td><td><a href="?a=edit&path=<?php echo $v['file_path']?>">编辑</a><a href="?a=down&path=<?php echo $v['file_path']?>">下载</a><a href="?a=del&path=<?php echo $v['file_path']?>">删除</a></td></tr><?php endforeach;?></table>

相关文章:

PHP安全开发

安全开发 PHP 基础 增&#xff1a;insert into 表名(列名 1, 列名 2) value(‘列 1 值 1’, ‘列 2 值 2’); 删&#xff1a;delete from 表名 where 列名 ‘条件’; 改&#xff1a;update 表名 set 列名 数据 where 列名 ‘条件’; 查&#xff1a;select * from 表名 wher…...

【大模型从入门到精通32】开源库框架LangChain RAG 系统中的问答技术2

这里写目录标题 探索高级问答链类型MapReduce 和 Refine 技术 实用建议和最佳实践解决 RetrievalQA 限制结论进一步阅读和探索理论问题实践问题 探索高级问答链类型 MapReduce 和 Refine 技术 MapReduce 和 Refine 是设计用来规避由语言模型 (LM) 上下文窗口大小所导致的限制…...

MySQL 数据库管理

在 MySQL 中&#xff0c;数据库管理是非常基础但又至关重要的技能。无论是创建新的数据库、选择当前使用的数据库&#xff0c;还是查看数据库的相关信息&#xff0c;这些操作都是日常数据库管理中不可或缺的一部分。本文将详细介绍 MySQL 数据库管理的基本操作&#xff0c;包括…...

屏幕录制了一个视频,发现有些部分是不需要的,那么我们就用到视频剪辑的工具,利用必剪去删除中间的一部分视频,并且导出,然后利用格式工厂去压缩mp4文件的过程。

1、我们经常会去做一些视频教程或者软件的使用说明等等&#xff0c;做完了以后&#xff0c;会有增加字幕&#xff0c;或者去掉不需要一段视频。 2、打开必剪软件 3、点击【开始制作】 先将视频拖动到1的位置&#xff0c;然后将播放区中的视频&#xff0c;拖到2的区域&#xff…...

代码随想录跟练第六天——LeetCode

第454题.四数相加II 力扣题目链接(opens new window) 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) &#xff0c;使得 A[i] B[j] C[k] D[l] 0。 为了使问题简单化&#xff0c;所有的 A, B, C, D 具有相同的长度 N&#xff0c;且 0 ≤ N ≤…...

【Qt】常用控件QCalendarWidget的使用

常用控件QCalendarWidget的使用 QCalendarWidget表示一个日历 核心属性 属性说明 selectDate 当前选中的⽇期 minimumDate 最⼩⽇期 maximumDate 最⼤⽇期 firstDayOfWeek 每周的第⼀天(也就是⽇历的第⼀列) 是周⼏. gridVisible 是否显⽰表格的边框 selectionMode…...

Nginx: 配置项之main段核心参数用法梳理

概述 我们了解下配置文件中的一个全局段&#xff0c;有哪些配置参数&#xff0c;包括后面的 events 字段&#xff0c;有哪些配置参数这里面也有一些核心参数, 对于我们Nginx运行的性能也是有很重要的帮助我们现在首先关注整个 main 段的一个核心参数用法所谓 main 段&#xff…...

密码学之RSA算法

文章目录 1. RSA算法介绍1.2 算法历史与发展1.3 算法应用场景 2. RSA密钥生成2.1 选择素数2.2 计算公钥和私钥2.3 密钥长度与安全性 3 算法原理3.1 加密原理3.2 加密方法3.3 加密示例3.4 代码实现 4. 总结 1. RSA算法介绍 1.2 算法历史与发展 RSA算法由Ron Rivest、Adi Shami…...

教你学习企业高性能web服务器-nginx

一、web服务介绍 1、Apache的三种模型 &#xff08;1&#xff09;Apache prefork 预派生模式&#xff0c;有一个主控制进程&#xff0c;然后生成多个子进程&#xff0c;使用select模型&#xff0c;最大并发1024每个子进程有一个独立的线程响应用户请求相对比较占用内存&…...

封装通用第三方平台用户表(微信开放平台)

文章目录 一. 注册微信开放平台1.1 开发者资质认证1.2 应用申请1.3 配置应用 二.通用数据库表设计三.入库实体类四. 对接第三方平台4.1 微信开放平台VO对象4.2 通用方法 我们的系统可能要对接很多第三方系统&#xff0c;为了便利用户授权使用和对多平台账户的管理。有必要设计通…...

【C++】_string类字符串详细解析(1)

假如没有给你生命&#xff0c;你连失败的机会都没有。你已经得到了最珍贵的&#xff0c;还需要抱怨什么!&#x1f493;&#x1f493;&#x1f493; 目录 ✨说在前面 &#x1f34b;知识点一&#xff1a;什么是string&#xff1f; •&#x1f330;1.string类的概念 •&#x1…...

【Linux】——进程概念(万字解读)

一 冯诺依曼体系结构 在此之前&#xff0c;我们先要理解我们计算机的冯诺依曼体系结构&#xff0c;因为是进程的基础 我们所有的操作其实都是基于这样一个模型&#xff0c;比如你在qq上&#xff0c;和别人发送消息&#xff0c;这个消息肯定是先通过输入设备进行输入&#xf…...

03 serv00搭建WordPress

第一步 下载 serv00 官方教程 按官方教程下载 WordPress 压缩包&#xff0c;解压&#xff0c;将 WordPress 项目文件夹重命名为 public_html&#xff08;先删除原来的 public_html&#xff09; ‍ 第二步 安装 完成以上步骤后访问你的网站&#xff0c;开始安装 WordPress …...

伪共享问题如何解决?

伪共享问题是多核处理器环境下常见的性能瓶颈之一&#xff0c;特别是在多线程编程中。想要解决它&#xff0c;就必须先了解缓存行的概念。 缓存行 缓存行是指在 CPU 缓存中最小的数据单位&#xff0c;通常包含一定数量的字节&#xff08;例如&#xff0c;常见的缓存行大小为 …...

基于web框架的协同过滤的美食推荐系统【数据爬虫、管理系统、数据可更新、样式可调整】

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍研究背景研究的目的与意义协同过滤算法基于用户的协同过滤算法定义基于物品的协同过滤算法的定义 数据库设计db_food&#xff08;美食信息表&#xff09;db_collect&#xff08;美食…...

Eureka中的多实例配置:如何处理微服务实例动态扩展与缩减

Eureka中的多实例配置&#xff1a;如何处理微服务实例动态扩展与缩减 1. 引言 在微服务架构中&#xff0c;服务的动态扩展与缩减是确保系统弹性和高可用性的关键因素。Eureka&#xff0c;作为一个服务注册和发现的组件&#xff0c;扮演着至关重要的角色。它由Netflix开源&…...

Ubuntu 22.04使用 IPTables 配置防火墙

网络安全管理是服务器安全的重要组成部分。在这将介绍在 Ubuntu 22.04 中使用名为 iptables 的软件包管理工具设置防火墙的过程。 IPTables简介 IPTables是一个功能强大的软件包管理工具&#xff0c;可用于大多数Linux发行版&#xff0c;包括Ubuntu 22.04。该工具允许管理员定…...

Java语言程序设计——篇十三(1)

&#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 欢迎大家&#xff1a;这里是我的学习笔记、总结知识的地方&#xff0c;喜欢的话请三连&#xff0c;有问题可以私信&#x1f333;&#x1f333;&…...

GB/T 5023.3-2008额定电压450/750V及以下聚氯乙烯绝缘电缆

聚氯乙烯绝缘电缆产品分为固定布线用无护套电缆、固定布线用护套电缆、轻型无护套软电缆、一般用途护套软电缆、安装用电线和屏蔽电线、特殊用途护套软电缆、聚氯乙烯绝缘阻燃/耐火电缆等产品。 GB/T 5023.3-2008额定电压450/750V及以下聚氯乙烯绝缘电缆 第3部分&#xff1a;固…...

深入单例模式

1. 饿汉模式 饿坏了&#xff0c;上来就先实例化一个对象&#xff0c;好处是代码简单&#xff0c;坏处是这个对象后面如果一直用不到&#xff0c;就是个浪费。 public class A{ private static A a new A(); private A(){} public static A getInstance(){ return a; } } 2. 懒…...

MongoDB 单机和集群环境部署教程

目录 一、MongoDB 单机环境部署1. 环境准备2. 安装 MongoDB2.1 在 Ubuntu 上安装 MongoDB2.2 在 CentOS 上安装 MongoDB2.3 启动 MongoDB 服务2.4 验证 MongoDB 安装2.5 MongoDB 基本安全设置 3. 单机部署注意事项 二、MongoDB 集群环境部署1. 环境准备2. MongoDB Replica Set …...

【学习笔记】Day 20

一、进度概述 1、机器学习常识12-18&#xff0c;以及相关代码复现 二、详情 12、SVM&#xff08;support vector machines&#xff0c;支持向量机&#xff09; 实际上&#xff0c;支持向量机是一种二分类模型&#xff0c;它将实例的特征向量映射为空间中的一些点&#xff0c;…...

StringBuffer与StringBuilder 2024-8-21 22-13

目录 一、StringBuffer二、StringBuilder三、总结 一、StringBuffer StringBuffer是一个可变的字符序列&#xff0c;它的存在是为了解决频繁操作字符串时产生大量临时对象的问题。 构造方法&#xff1a; StringBuffer()&#xff1a;创建一个空的字符串缓冲区&#xff0c;初始容…...

会声会影剪辑视频收费吗,会声会影最新破解版

会声会影2024&#xff1a;引领视频创作新时代的创新之旅** 在数字时代的浪潮中&#xff0c;视频创作已成为连接世界、表达创意的重要方式。随着技术的不断进步&#xff0c;一款名为“会声会影2024”的视频编辑软件横空出世&#xff0c;它不仅继承了前代产品的优秀传统&#xf…...

在Windows11强制开启copilot

在 Windows 11 上启用自带的基于 GPT-4 的 Copilot 功能。以下是具体步骤&#xff1a; 更新系统&#xff1a; 确保你的 Windows 11 系统已经更新到最新版本&#xff08;23H2 或更高版本&#xff09;。你可以在“设置” > “Windows 更新”中检查并安装最新更新。 更改区域和…...

基于Java的开源CMS有哪些推荐,各自特点是什么

最强大、最易用的CMS&#xff0c;向大家做一个简要介绍。 01 Alfresco Alfresco是一个开源的企业网站内容管理系统&#xff0c;它提供了文档管理、多人协作、记录管理、知识管理网页内容和图像管理等功能。它使用Spring、 Hibernate、 Lucene 和JSF等最新java技术构建了模…...

IPC进程通信以及网络通信

一、IPC 进程间通信方式 共享内存 //最高效的进程间通信方式 不需要把用户的东西再复制到内核 他们与内核进行绑定 共享内存&#xff1a; 1、是一块&#xff0c;内核预留的空间 2、最高效的通信方式 //避免了用户空间到内核空间的数据拷贝 IPC通信方式 ---操作流程类似的…...

【脏数据 bug 解决】ValueError: mean must have 1 elements if it is an iterable, got 3

问题描述&#xff1a; 在训练模型的过程中&#xff0c;出现 clip_image_processor 无法处理数据的问题&#xff0c;说明数据集中很可能出现了脏数据。本文使用的数据为 LAION-Aesthetics-V2-6.5plus&#xff0c;从 https://dagshub.com/DagsHub-Datasets/LAION-Aesthetics-V2-…...

【Vue3】集成 Ant Design Vue

【Vue3】集成 Ant Design Vue 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗…...

如何处理前端项目中的SEO优化:从SPA到SSR与SSG

如何处理前端项目中的SEO优化&#xff1a;从SPA到SSR与SSG 在前端开发的日常工作中&#xff0c;你可能经常会遇到这样的情况&#xff1a;辛辛苦苦写了一个功能丰富、界面炫酷的单页应用&#xff08;SPA&#xff09;&#xff0c;但上线后发现搜索引擎的表现却不尽如人意。页面内…...

做外贸现在一般都通过哪些网站/网络营销方法

最近看完了空间计量经济学的理论部分&#xff0c;因此打算开始学习一下实战&#xff0c;实战所使用的主要是GEODA家族的软件包们&#xff0c;首先还是打算先学习python的pysal包&#xff0c;毕竟还是更喜欢代码&#xff0c;而且相较于GEODA和GEODASPACE&#xff0c;写代码还是会…...

网站设计公司/sem优化是什么意思

这张图我相信基本上对JVM有点接触的都应该很熟悉&#xff0c;可以说这是JVM入门的第一课。其中的“堆”和“虚拟机栈&#xff08;栈&#xff09;”更是耳熟能详。下面将围绕这几张图对JVM的运行时数据区做一个简单介绍。程序计数器&#xff08;Program Counter Register&#x…...

网站系统商城/seo发贴软件

在eclipse中 如果直接在resources文件夹下建立子文件夹 那么新建立的子文件夹会跑到根目录 怎么呢? 很简单 1在resource子目录中新建一个子目录 2在弹出的对话框中修改路径为resuorce下 两步操作过后 就发现 新建立的文件夹 跑到resources目录下了 注意: 刷新项目是没有用的...

网站设计开发软件有哪些/新闻稿在线

QT怎么自动一次性修改、替换程序中所有变量名? 熟悉的编译器都有这个功能&#xff0c; 初学QT&#xff0c;搜索无果&#xff0c;找了一会儿&#xff0c;分析给大家。 最直接的办法&#xff1a;选中变量名&#xff0c;CtrlShiftr &#xff0c;变成红色之后即可更改。. 选中变…...

广西南宁网站建设/指数工具

首先是用java来实现简单的Server端(http的请求内容格式可以参考msdn:http://msdn.microsoft.com/zh-cn/library/hh202945(vvs.92)): /*** 推送toast通知* param uriString 推送服务通知uri* param title toast标题* param content toast内容* param param 页面跳转参…...

电子邮箱怎么申请/上海seo公司排名

pyse 更名为 seldom WebUI automation testing framework based on Selenium and unittest. 基于 selenium 和 unittest 的 Web UI自动化测试框架。 特点 提供更加简单API编写自动化测试。提供脚手架&#xff0c;快速生成自动化测试项目。自动生成HTML测试报告生成。自带断言方…...