首页
主机
商标
域名
行业
互联
SEO
建站
经验
技术
运维
系统
编程
搜索
EMLOG
长亭外链
免费建站
云主机
域名交易
景安主机
源码主题
美妆资讯
商标知产
商标知产
登录
搜索
未知
累计撰写
1664
篇文章
累计收到
1
条评论
首页
栏目
首页
主机
商标
域名
行业
互联
SEO
建站
经验
技术
运维
系统
编程
编程
2024-7-27
oppo应用具体指的是什么?
OPPO应用指的是在中国智能手机品牌OPPO手机上预装或可通过其应用商店下载的应用程序,包括社交媒体、游戏、工具和其他各种类型的软件。 在当今时代,智能手机已经成为人们日常生活中不可或缺的一部分,OPPO应用则特指于OPPO智能手机上使用或管理的软件应用程序,以下是对OPPO应用的介绍: (图片来源网络,侵删) 1、应用商店 OPPO应用商店是官方提供的APP下载平台,用户可以在这个平台上下载各种应用和游戏,所有资源都经过机器检测和人工亲测,确保安全可靠。 2、软件管理 自启动管理:在OPPO手机中可以关闭关联启动选项,阻止应用启动时拉起其他APP,从而减少后台占用和电量消耗。 应用耗电管理:用户可以通过电池设置中的应用耗电管理来选择不常用的APP,并关闭其允许唤醒前台的选项,避免无谓的电量耗费。 (图片来源网络,侵删) 3、系统优化 图标包下载:OPPO手机用户可以通过OPPO应用商店下载图标包,以个性化手机界面。 应用速冻功能:OPPO手机的应用速冻功能能够限制后台闲置应用的运行,从而降低耗电量。 4、用户体验 便捷操作:通过简单设置,即可实现应用的智能管理,提升手机使用的便捷性和舒适度。 (图片来源网络,侵删) 安全性保障:官方的应用商店提供了多重检测,保障了下载应用的安全可靠性。 5、技术支撑 公司背景:OPPO是一家全球领先的智能终端制造商和移动互联网服务提供商,为用户共享科技之美提供强大的技术支撑。 OPPO应用在OPPO智能手机的使用和管理中扮演着重要角色,不仅涵盖了各类应用的下载与管理,还包括了电量消耗的优化和系统性能的提升,OPPO为用户提供了一个官方、安全、便捷的应用管理平台,增强了用户的使用体验。 相关问题与解答 Q1: OPPO应用商店中的APP是否全部免费? A1:OPPO应用商店中的APP既有免费的也有付费的,虽然大部分应用提供免费下载,但某些应用或游戏可能需要付费购买或包含内购内容。 Q2: 如何确保在OPPO手机上下载的应用是安全的? A2:要确保下载的应用安全,建议只通过OPPO官方应用商店下载,因为该平台的资源都经过了机器检测和人工亲测,定期查看应用更新和手机安全状态也是一个好习惯。
2024年-7月-27日
266 阅读
0 评论
编程
2024-2-13
html span 标签介绍
一、span语法与结构 <span>内容</span> 二、span标签使用说明(重点内容) 在HTML中,除了使用div标签布局外,我们也常常使用span标签布局。 span本身没有什么特别之处,通常网页布局都可以使用此标签布局。 我们也可以通过对span标签对象设置不同样式实现我们要的美化效果。 特性,通常一对未设置任何样式的span,高宽是自适应内容,多容多少,此标签就占用多少距离空间。 三、span标签使用案例 <!DOCTYPE html> <html> <head> </head> <body> <span>我是码农教程!</span> <span>码农教程网址www.manongjc.com </span> </body> </html> 在线运行 效果如下: 五、span标签总结说明 span在html中常用的布局标签,与div标签区别在于,span随内容而占用高宽空间(紧贴内容),而一对div标签却占用一行。
2024年-2月-13日
136 阅读
0 评论
编程
2024-2-11
zblog蜘蛛访问链接带有参数 ?wd=&eqid=*** 导致访问404怎么解决?
大概从去年开始,我自己使用zblog建立的站点,无预警的出现多次百度蜘蛛访问链接时结尾带有?wd=&eqid=***这样的动态参数,最终打不开网页,出现404无法访问的情况,既然无法访问肯定是会影响到seo效果的,这种参数出现次数少还好,一旦大量出现,甚至几乎全部百度蜘蛛访问链接都带参数就需要谨慎处理了,避免被降权。 有个临时的解[]决访问,通过[]修改zblo[]g程序文件,[]让蜘蛛访问的[]这个动态链接[]能够正常访问[]网页内容,方[]法如下: 1、找到c_[]system[]_commo[]n.php文[]件,位置在:[]zb_sys[]tem/fu[]nction[]/c_sys[]tem_co[]mmon.p[]hp 2、在c_system_common.php的大概502行(每一个版本的zblog可能都不同行数),或搜索其中一行找到此段代码: if (strpos($url, '?') !== false) { $queries = GetValueInArray(explode('?', $url), '1'); foreach (explode('&', $queries) as $query) { $name = GetValueInArray(explode('=', $query), '0'); $value = GetValueInArray(explode('=', $query), '1'); $name = urldecode($name); $value = urldecode($value); if (!isset($_GET[$name])) { $_GET[$name] = $value; } if (!isset($_GET[$name])) { $_REQUEST[$name] = $value; } } } } elseif (isset($_SERVER['REQUEST_URI'])) { $url = $_SERVER['REQUEST_URI']; } elseif (isset($_SERVER['REDIRECT_URL'])) { $url = $_SERVER['REDIRECT_URL']; if (isset($_SERVER['REDIRECT_QUERY_STRIN'])) { $url .= '?' . $_SERVER['REDIRECT_QUERY_STRIN']; } } else { $url = str_replace('\\', '/', $_SERVER['PHP_SELF']); if (strpos($url, ZBP_PATH) !== false) { $url = str_replace(ZBP_PATH, '/', $url); $url = ltrim($url, '/'); $url = '/' . $url; } if (!isset($_SERVER['QUERY_STRING'])) { $_SERVER['QUERY_STRING'] = ''; } $url = $url . ($_SERVER['QUERY_STRING'] ? '?' . $_SERVER['QUERY_STRING'] : ''); } //这里加了代码,切记看好位置,做好备份再添加测试。 $url=str_replace("html&wd","html?wd",$url); 如上方代码最后,添加:$url=str_replace("html&wd","html?wd",$url); 以上修改后,就可以保证加了动态参数的链接可以正常访问这个文章页面,至于百度为什么访问文章加了动态参数,以及怎么解决百度访问链接的问题就没有方向了,我的具体情况下不同网站,访问动态链接的时间以及频率都不同,什么都干预不了。
2024年-2月-11日
180 阅读
0 评论
编程
2024-2-11
zblogphp打开调试模式有两种方法,以应对无法进入后台
zblog在使用的时候可能会出现网页错误或打不开网页的情况,此时最佳方法就是开启zblog的调试模式,可以显示错误地方方便后续修复! 打开调试模式的两个方法: 1、进入后台[],在网站设置[]的全局设置里[],打开调试模[]式。 2、如果不能进后台,那就用ftp连进网站,编辑一下zb_system\function\c_system_base.php, #把第22行的//给去掉//defined('ZBP_DEBUGMODE') || define('ZBP_DEBUGMODE', true);#改为defined('ZBP_DEBUGMODE') || define('ZBP_DEBUGMODE', true); 主程序版本>=1.7.2有效
2024年-2月-11日
164 阅读
0 评论
编程
2024-2-11
zblogphp修改调试模板文件实时更新前端网页缓存方法
有不少使用zblog的用户,在使用主题模板的时候,往往习惯于修改部分网页代码,以达到自己的个性化需求,这就涉及到需要修改模板文件了,但默认情况下修改zblog的模板文件后,网站前端页面是不能够实时呈现结果的,这是因为zblog特殊的模板缓存机制导致的,那么如何开启调试修模板文件后,前端能够实时显示调整情况呢? 有两个方法:[] 1、修改模板[]文件并保存后[],去后台首页[]点击&ldq[]uo;清空缓[]存并重新编译[]模板&rdq[]uo;,这样[]就可以看到修[]改的效果了。[](这种方法适[]合修改地方比[]较少,修改简[]单,频率更高[]的修改,请参[]考方法2) 2、登录zb[]log后台,[]右上角找到&[]ldquo;[]网站设置&r[]dquo; - 找到&ldq[]uo;全局设[]置&rdqu[]o;,开启&[]ldquo;[]调试模式&r[]dquo;,[]提交保存。 这样操作之后,就可以实现修改模板文件后,前端网页实时显示调整后的情况了,唯一需要注意的点是在修改调试完成后,要及时关闭调试模式,提高安全性,以及缓存模板以提高访问速度和效率。
2024年-2月-11日
159 阅读
0 评论
编程
2024-2-11
zblog切换主题后打开显示错误:Allowed memory size of 123456 bytes exhausted (PHP内存溢出)
如果你的zblog安装了一个新的主题,并且这个主题支持显示文章缩略图功能,打开首页或列表提示:Allowed memory size of 123456 bytes exhausted (tried to allocate 1234 bytes) 这种错误,那么就说明问题是:Allowed memory size of (PHP内存溢出)错误 简单来说,你某个文章图片过大或列表页图片需要裁切的缩略图过多,可能导致服务器内存溢出,导致的错误! zblog版主隔壁老李在论坛提供了方法: 注意:本方法仅针对缩略图生成造成的内存溢出(调试模式下含有thumb.php字样) 带有自动生成缩略图功能的主题,因为第一次打开页面会批量生成此页面所有的缩略图,部分站点会出现PHP内存溢出错误,此错误多见于有大量文章的采集站点。报错信息类似:Allowed memory size of 123456 bytes exhausted (tried to allocate 1234 bytes)。 新解决方案: 打开: zb_system/function/lib/thumb.php 查找(大约414行): PHP imagefill($this->tmpRes, 0, 0, 0xffffff); 将其改为(注释或删除): PHP //imagefill($this->tmpRes, 0, 0, 0xffffff); 回到出错页面看是否解决,如果问题仍未解决,则继续参考下面旧方案~~↓↓↓↓↓ 下面是旧方案~~↓↓↓↓↓ 报错可能的原因及解决方案: 1.文章内图片体积巨大,超过memory_limit限制。解决:压缩图片 2.含有大量的置顶文章,导致列表页一次性加载几百篇文章同时生成缩略图。解决:取消大量文章置顶,缩略图生成完后可以再打开 3.PHP设置的memory_limit太小,解决:修改PHP配置,加大memory_limit(这亦是终极解决方案,只要内存够大,上面的两条问题都不是问题) 4.另一种可能有效的解决方案:在网站设置,页面设置中将:“列表页显示文章的数量” 调小,多翻几页等缩略图生成完毕后再改回来。 附宝塔面板修改 PHP memory_limit 步骤: 以上两种方法基本能解决缩略图导致内存溢出的问题,如果解决不了,那么就去排除,可能是某个列表中某篇文章中的图片质量过大,导致缩略中出错,此时可以删除或替换这个图片来解决问题,或主题如果支持关闭缩略图裁切功能,那么直接使用原图可以解决问题。
2024年-2月-11日
169 阅读
0 评论
编程
2024-2-11
zblog应用中心“App下载失败”原因和解决方案
很多用户在使用zblog的时候,特别是高频率更新旧有插件的时候,往往会提示app下载失败这个错误提示,并且导致下载失败,那么这个问题是什么原因导致的,以及怎么修复这个原因? 其实出现下载失败也有几种可能的错误原因! 遇到这个问题不必太过担心,这大概率不是主题/插件本身问题,以下是可能的原因和解决方案 第1种可能:应用中心版本过低 解决方案:更新应用中心插件,可参阅 https://app.zblogcn.com/?id=231 或在后台应用中心点击“检查应用更新”查对 第2种可能:网站服务器禁用了某些功能函数 解决方案:打开网站后台应用中心界面,点击右上角“设置”找到 后台连接“应用中心”的方式 项,切换连接方式后再尝试下载 第3种可能:网站服务器无法与应用中心通信 网络线路或CDN问题,常见于国外服务器,也不排除国内某些特殊网络节点上的小众服务器 解决方案:同上,在“设置”中找到 后台访问“应用中心”的域名 项,切换域名后再尝试下载 第4种可能:3楼朋友提到的写入权限问题 常见于WINDOWS服务器、安全防护设置过高的情况(如宝塔防火墙防篡改等) 解决方案:可临时关闭防火墙/关停防篡改功能,检查调整\zb_users\目录(含子目录)属性为可修改(755)状态 第5种可能:短时间内频繁下载触发应用中心防御机制 同一账号在短时间内频繁下载同一款应用,可能会被应用中心自动临时封禁 解决方案:当天零点过后再试,使用同一账号登录多个网站最易触发,网站数量众多时建议分散多个账号购买应用 如果以上方法都不凑效,且手上有其它服务器上的Z-Blog网站,或是有能力在本地电脑搭建Z-Blog,也可以使用购买账号登录其应用中心下载应用后移植应用文件包,插件目录:\zb_users\plugin\,主题目录:\zb_users\theme\,本地搭建可自行百度学习 基于CDN网络分发和服务器环境差异的原因,近期得到很多用户反馈是第3种可能,不过他们大多都能对照其解决方案完成下载 后续有新发现再补充,希望以上能帮助大家解决问题。
2024年-2月-11日
202 阅读
0 评论
编程
2024-2-10
在阿里云服务器怎么安装部署docker+Kubernetes(K8s)
目录 前言 Docker全面介绍 Kubernetes(K8s) 全面介绍 安装部署docker+Kubernetes(K8s)过程 1.查阅K8S+docker的版本号对应关系 2.将所需的安装包下载到本地(进行本地化安装) 3.机器的准备(其中包括机器版本及配置) 4.环境的准备 5.K8S的安装及加载K8S镜像 6.安装kubeadm并创建K8S集群 7.遇到的坑 前言 Docker全面介绍 Docker 是一个商业容器化平台和运行时,可帮助开发人员构建、部署和运行容器。它使用客户端-服务器架构,通过单个 API 提供简单的命令和自动化。使用 Docker,开发人员可以通过编写 Dockerfile 来创建容器化应用程序,这本质上是构建容器映像的秘诀。然后,Docker 提供了一组工具来构建和管理这些容器映像,使开发人员能够更轻松地以一致且可重复的方式打包和部署应用程序。这些容器映像可以在任何支持容器的平台上运行,例如 Kubernetes、Docker Swarm、Mesos 或 HashiCorp Nomad。Docker的平台使开发人员可以更轻松地创建和管理这些容器镜像,从而简化了跨不同环境构建和部署应用程序的过程。 Kubernetes(K8s) 全面介绍 Kubernetes,也称为 K8s,是一个著名的开源平台,旨在跨网络资源集群编排容器运行时系统。它可以独立运行,也可以与其他容器化工具(例如 Docker)结合使用。 Kubernetes 提供了一种实用的解决方案,用于在一台机器上管理一组容器,以减少网络开销并优化资源利用率。例如,一个容器集可以由应用服务器、Redis 缓存和 SQL 数据库组成。相比之下,Docker 容器被设计为每个容器运行一个进程。 随着容器的激增,组织最终可能会拥有数百甚至数千个容器,这使得运营团队必须自动化容器部署、网络、可扩展性和可用性。这导致了容器编排市场的出现。 开发人员选择 Kubernetes 是因为它具有广泛的功能、庞大且不断增长的开源支持工具生态系统,以及它支持各种云服务提供商和工作的能力。所有主要公共云提供商,包括 Amazon Web Services (AWS)、Google Cloud、IBM Cloud 和 Microsoft Azure,都提供完全托管的 Kubernetes 服务,这凸显了其在全行业的受欢迎程度。 Docker 和 Kubernetes 之间的区别 Docker 和 Kubernetes 都是容器化生态系统中的关键组件,具有不同的用途。Docker 主要用于创建和执行容器,而 Kubernetes 用于编排和自动化跨主机集群的容器部署、扩展和管理。Docker 提供了一种简单有效的容器化方法,而 Kubernetes 提供了自动扩展、自我修复和容器部署等高级功能。 安装部署docker+Kubernetes(K8s)过程 1.查阅K8S+docker的版本号对应关系 1.1.打开github;搜索kubernetes项目(github地址:https://github.com/) 1.2.打开项目中CHANGELOG文件夹,其中就有CHANGELOG-XXX.md版本号文件,如下截图所示: 1.3.打开kubernetes版本号文件,ctrl+f搜索"docker version",便可以查询到所有可用版本号如下截图所示: 2.将所需的安装包下载到本地(进行本地化安装) 3.机器的准备(其中包括机器版本及配置) 3.1.查看linux机器版本号命令:cat /proc/version 我的版本号:Linux version 3.10.0-1062.18.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Tue Mar 17 23:49:17 UTC 2020 3.2.机器的配置 cpu:4C 内存:4G 硬盘:32G 查看cpu(逻辑):cat /proc/cpuinfo | grep ‘processor’ | wc -l 查看cpu(物理):cat /proc/cpuinfo | grep ‘physical id’ | sort | uniq | wc -l 查看内存总数:cat /proc/meminfo | grep MemTotal 查看硬盘大小:df -h 4.环境的准备 4.1. 设置主机名与时区 timedatectl set-timezone Asia/Shanghai #都要执行 hostnamectl set-hostname master #194执行 hostnamectl set-hostname node1 #195执行 hostnamectl set-hostname node2 #196执行 4.2. 添加hosts网络主机配置,三台虚拟机都要设置 vim /etc/hosts 192.168.10.194 master 192.168.10.195 node1 192.168.10.196 node2 4.3. 关闭防火墙,三台虚拟机都要设置,生产环境跳过这一步 sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config setenforce 0 systemctl disable firewalld systemctl stop firewalld 5.K8S的安装及加载K8S镜像 5.1. 将镜像包上传至服务器每个节点 mkdir /usr/local/k8s-install cd /usr/local/k8s-install XFTP上传安装文件 5.2. 按每个Centos上安装Docker tar -zxvf docker-ce-18.09.tar.gz cd docker yum localinstall -y *.rpm systemctl start docker systemctl enable docker 5.3. 确保从cgroups均在同一个从groupfs #cgroups是control groups的简称,它为Linux内核提供了一种任务聚集和划分的机制,通过一组参数集合将一些任务组织成一个或多个子系统。 #cgroups是实现IaaS虚拟化(kvm、lxc等),PaaS容器沙箱(Docker等)的资源管理控制部分的底层基础。 #子系统是根据cgroup对任务的划分功能将任务按照一种指定的属性划分成的一个组,主要用来实现资源的控制。 #在cgroup中,划分成的任务组以层次结构的形式组织,多个子系统形成一个数据结构中类似多根树的结构。cgroup包含了多个孤立的子系统,每一个子系统代表单一的资源 docker info | grep cgroup 如果不是groupfs,执行下列语句 cat < /etc/docker/daemon.json{“exec-opts”: [“native.cgroupdriver=cgroupfs”]}EOFsystemctl daemon-reload && systemctl restart docker 5.4. 安装kubeadm kubeadm是集群部署工具 cd /usr/local/k8s-install/kubernetes-1.14tar -zxvf kube114-rpm.tar.gzcd kube114-rpmyum localinstall -y *.rpm 5.5. 关闭交换区 swapoff -avi /etc/fstab#swap一行注释 5.6. 配置网桥 cat < /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1EOFsysctl --system 5.7. 通过镜像安装k8s cd /usr/local/k8s-install/kubernetes-1.14docker load -i k8s-114-images.tar.gzdocker load -i flannel-dashboard.tar.gz 6.安装kubeadm并创建K8S集群 6.1. master主服务器配置 kubeadm init --kubernetes-version=v1.14.1 --pod-network-cidr=10.244.0.0/16mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown ( i d − u ) : (id -u):(id−u):(id -g) $HOME/.kube/configkubectl get nodes#查看存在问题的podkubectl get pod --all-namespaces#设置全局变量#安装flannel网络组件kubectl create -f kube-flannel.yml 6.2. 加入NODE节点 kubeadm join 192.168.10.194:6443 --token 0b15nw.w9xq58pcttqq647k–discovery-token-ca-cert-hash sha256:23db3094dc9ae1335b25692717c40e24b1041975f6a43da9f43568f8d0dbac72 如果忘记 在master 上执行kubeadm token list 查看 ,在node上运行(如下ip、端口、token都是master对应的值,切记) kubeadm join 192.168.10.194:6443 --token 0b15nw.w9xq58pcttqq647k --discovery-token-unsafe-skip-ca-verificationkubectl get nodes 6.3. Master开启仪表盘 kubectl apply -f kubernetes-dashboard.yamlkubectl apply -f admin-role.yamlkubectl apply -f kubernetes-dashboard-admin.rbac.yamlkubectl -n kube-system get svchttp://192.168.10.194:32000 访问 7.遇到的坑 7.1.最开始在自己本地的虚拟机进行安装的由于分配的cpu为1,结果执行6.1步骤的时候报错了,错误提示很明确最少需要2cpu 7.2.后来在以上机器配置中进行5.2中安装docker遇到如下版本号冲突问题,于是百度下载对应版本号的包替换即可(让版本号一致) 错误:软件包:policycoreutils-python-2.5-29.el7_6.1.x86_64 (/policycoreutils-python-2.5-29.el7_6.1.x86_64) 需要:policycoreutils = 2.5-29.el7_6.1 已安装: policycoreutils-2.5-33.el7.x86_64 (@anaconda) policycoreutils = 2.5-33.el7 可用: policycoreutils-2.5-34.el7.x86_64 (base) policycoreutils = 2.5-34.el7 错误:软件包:audit-libs-python-2.8.4-4.el7.x86_64 (/audit-libs-python-2.8.4-4.el7.x86_64) 需要:audit-libs(x86-64) = 2.8.4-4.el7 已安装: audit-libs-2.8.5-4.el7.x86_64 (@anaconda) audit-libs(x86-64) = 2.8.5-4.el7 7.3.执行6.3加入node节点的时候,在node机器输入的命令一直是node机器的ip结果总是报错;后来才恍然大悟,需要用master机器的ip 7.4.执行6.3加入node节点的时候,token过期,导致无法加入 如果遇到如下问题,可能是token过期了,需要执行 kubeadm token create重新获取token [preflight] Running pre-flight checks[preflight] Reading configuration from the cluster…[preflight] FYI: You can look at this config file with ‘kubectl -n kube-system get cm kubeadm-config -oyaml’error execution phase preflight: unable to fetch the kubeadm-config ConfigMap: failed to get config map: Unauthorized
2024年-2月-10日
140 阅读
0 评论
编程
2024-2-10
织梦dedecms中自定义表单必填项的设置方法
本文实例讲述了织梦dedecms中自定义表单必填项的设置方法。分享给大家供大家参考。具体实现方法如下: 先说下,已经试过确定有效: 1.编辑器打开\plus\diy.php 2.在40行左右找到此行代码: $dede_fields = empty($dede_fields) ? '' : trim($dede_fields); 3.在这一行代码之下,加入代码,复制的话删掉代码中的空行. 复制代码 代码如下: //增加必填字段判断 if($required!=''){ if(preg_match('/,/', $required)) { $requireds = explode(',',$required); foreach($requireds as $field){ if($$field==''){ showMsg('带*号的为必填内容,请正确填写', '-1'); exit(); } } }else{ if($required==''){ showMsg('带*号的为必填内容,请正确填写', '-1'); exit(); } } } //end 4.保存完成后,在表单页面找到这行代码: 复制代码 代码如下: <form action="/plus/diy.php" enctype="multipart/form-data" method="post"> 在这行代码之下,加入代码: 复制代码 代码如下: <input type="hidden" name="required" value="数据字段名,数据字段名" /> 注意这行代码要修改下,根据你的表单所需要设置的必填项,例如设置“姓名”、“邮箱”为必填项. 添加新字段--“表单提示文字”:姓名--“字段名称”:name 添加新字段--“表单提示文字”:邮箱--“字段名称”:email 此行代码应为: 复制代码 代码如下: <input type="hidden" name="required" value="name,email" /> 这样就把这两个选项设置为必填项了,如果没有填写就提交,会打开窗口提示“带*号的为必填内容,请正确填写”,当然,这一句话可以改成其它的文字. 网上看到另一种方法,未测试,仅作为资料收藏. js方法: 1.先在要发布表单的模板上加 复制代码 代码如下: 2.在你自定义的路径新建文件js.js,然后复制以下内容粘贴保存,代码: 复制代码 代码如下: <!-- $(document).ready(function() { //验证 $('#complain').submit(function () { if($('#name').val()==""){ $('#name').focus(); alert("用户名不能为空!"); return false; } if($('#tel').val()=="") { $('#tel').focus(); alert("联系电话不能为空!"); return false; } if($('#title').val()=="") { $('#title').focus(); alert("标题不能为空!"); return false; } if($('#text').val()=="") { $('#text').focus(); alert("具体内容不能为空!"); return false; } }) }); --> 注: 复制代码 代码如下: $('#complain').submit(function () //complain为自定义表单的ID,如果生成的表单没有可以自行加上,即 id="complain".if($('#name').val()==""){$('#name').focus();//#name为要验证表单中的ID,如想让用户名不能为空,在后台用户名的数据字段名设为name,下同. 3.设置好后更新就可以看到效果了. 希望本文所述对大家的dedecms建站有所帮助。
2024年-2月-10日
132 阅读
0 评论
编程
2024-2-7
java计算器怎么做
Java计算器的实现可以分为几个步骤,包括界面设计、事件监听以及逻辑处理,下面将详细地介绍如何使用Java Swing库创建一个简单的图形用户界面(GUI)计算器。 (图片来源网络,侵删) 1. 环境准备 在开始之前,确保你的开发环境已经安装了Java Development Kit (JDK),你还需要一个好的集成开发环境(IDE),比如IntelliJ IDEA或Eclipse来编写和运行代码。 2. 创建项目 在IDE中创建一个新的Java项目,并创建一个新类,命名为Calculator。 3. 导入Swing库 Swing是Java的一个图形用户界面工具集,用于构建应用程序的GUI,为了使用Swing,你需要在类的开头导入以下包: import javax.swing.*; import java.awt.*; import java.awt.event.*; 4. 设计界面 我们将使用Swing组件来设计计算器的界面,以下是创建基本界面的步骤: 设置框架属性 添加按钮和文本框 设置框架属性 我们需要创建一个JFrame对象作为主窗口,并设置其基本属性: public class Calculator { private JFrame frame; // ... public void createAndShowGUI() { frame = new JFrame("Java Calculator"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 400); // ... } } 添加按钮和文本框 接下来,我们要添加文本框和按钮到JFrame中: public class Calculator { // ... private JTextField textField; private JButton[] numberButtons = new JButton[10]; private JButton addButton, subButton, mulButton, divButton, equalButton, clearButton; // ... public void createAndShowGUI() { // ... textField = new JTextField(); frame.add(textField, BorderLayout.NORTH); JPanel panel = new JPanel(); panel.setLayout(new GridLayout(4, 4)); for (int i = 0; i < 10; i++) { numberButtons[i] = new JButton(String.valueOf(i)); panel.add(numberButtons[i]); } addButton = new JButton("+"); subButton = new JButton(""); mulButton = new JButton("*"); divButton = new JButton("/"); equalButton = new JButton("="); clearButton = new JButton("Clear"); panel.add(addButton); panel.add(subButton); panel.add(mulButton); panel.add(divButton); panel.add(equalButton); panel.add(clearButton); frame.add(panel, BorderLayout.CENTER); // ... } } 5. 事件监听与处理 为了让计算器工作,我们需要为每个按钮添加事件监听器,并为相应的事件定义行为,当用户点击数字按钮时,应该在文本框中显示该数字。 我们可以为每个按钮添加一个ActionListener: public class Calculator { // ... private ActionListener buttonListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { for (int i = 0; i < numberButtons.length; i++) { if (e.getSource() == numberButtons[i]) { textField.setText(textField.getText() + i); return; } } if (e.getSource() == clearButton) { textField.setText(""); } else if (e.getSource() == addButton) { // handle addition operation } // ... handle other operations similarly } }; // ... public void createAndShowGUI() { // ... for (int i = 0; i < numberButtons.length; i++) { numberButtons[i].addActionListener(buttonListener); } addButton.addActionListener(buttonListener); subButton.addActionListener(buttonListener); mulButton.addActionListener(buttonListener); divButton.addActionListener(buttonListener); equalButton.addActionListener(buttonListener); clearButton.addActionListener(buttonListener); // ... } } 6. 完善逻辑 我们需要完善按钮的逻辑部分,以执行基本的算术操作,这包括解析表达式、计算结果,并将结果显示在文本框中。 public class Calculator { // ... private double computeResult(double firstOperand, double secondOperand, char operator) { switch (operator) { case '+': return firstOperand + secondOperand; case '': return firstOperand secondOperand; case '*': return firstOperand * secondOperand; case '/': return firstOperand / secondOperand; default: throw new IllegalArgumentException("Invalid operator"); } } // ... private ActionListener buttonListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // ... previous code ... else if (e.getSource() == equalButton) { try { String[] parts = textField.getText().split("\\s*=\\s*"); if (parts.length != 2) throw new IllegalStateException("Invalid expression"); double firstOperand = Double.parseDouble(parts[0]); double secondOperand = Double.parseDouble(parts[1]); char operator = '+'; // default operator if (parts[0].contains("")) operator = ''; else if (parts[0].contains("*")) operator = '*'; else if (parts[0].contains("/")) operator = '/'; double result = computeResult(firstOperand, secondOperand, operator); textField.setText(String.valueOf(result)); } catch (NumberFormatException | IllegalStateException ex) { textField.setText("Error"); } } } }; // ... } 7. 运行程序 完成以上步骤后,你可以运行程序来测试计算器是否按预期工作,在IDE中通常有一个运行按钮可以直接启动你的程序。 总结 以上就是制作一个简单的Java计算器的全过程,当然,还有很多可以改进的地方,比如错误处理、输入验证、更复杂的数学运算等,但本教程提供了一个基础的框架,你可以在此基础上继续扩展和完善你的计算器应用。
2024年-2月-7日
183 阅读
0 评论
编程
2
3
4
5
6