人的血液7年会全部替换一遍,鱼的记忆只有7秒。
首先安装docker,这里不做过多介绍#查看docker版本 docker --version #启动 systemctl start docker systemctl restart docker #查找redis镜像,并拉去最新的Redis docker search redis docker pull redis:latest #查看镜像 docker images # 无密码安装 docker run -itd --name redis -p 6379:6379 redis:latest # 有密码安装 docker run -itd --name redis -p 6379:6379 redis:latest --requirepass 123456 #查看状态 docker ps #测试Redis是否正常工作 # 进入容器,这里的redis6是容器的名字,可以替换为容器的id docker exec -it redis6 /bin/bash # 运行redis的客户端,进入命令行交互模式 redis-cli # 设置一个测试值 set test 1 # 退出容器 exit #当我们执行 set test 1 这个命令,得到OK的返回结果,就说明,我们的redis已经安装成功了。 #redis的相关文件在如下目录位置: /usr/local/bin/redis-benchmark /usr/local/bin/redis-server /usr/local/bin/redis-sentinel /usr/local/bin/redis-check-aof /usr/local/bin/redis-cli /usr/local/bin/redis-check-rdb 使用自定义配置文件使用docker安装redis有一个坑,就是docker容器里面是没有redis.conf这个文件的,因此如果自定义配置,就有点麻烦了。1)、第一步,先要下载一个标准的redis.conf文件,下载地址如下:各个版本配置文件下载:https://redis.io/topics/config6.0版本的配置文件下载:http://github.com/redis/redis/raw/6.0/redis.conf国内访问上述网站可能无法下载,因此可以使用下面地址进行下载:http://download.redis.io/redis-stable/redis.conf2)、第二步,把文件拷贝到宿主机的相应目录,然后执行下面命令:#创建Redis本机配置文件 mkdir /server/redis/config #把刚才上传的额config.conf文件上传到这里,然后挂载并启动 # 指定配置文件创建容器 docker run -p 6379:6379 \ --name redis \ -v /server/redis/config/redis.conf:/etc/redis/redis.conf \ -v /server/redis/data:/data \ -d redis:latest \ redis-server /etc/redis/redis.conf \ --appendonly yes命令解释说明:-p 6379:6379 端口映射:前表示主机部分,:后表示容器部分。--name myredis 指定该容器名称,查看和进行操作都比较方便。-v 挂载目录,规则与端口映射相同。-d redis 表示后台启动redisredis-server /etc/redis/redis.conf 指定配置文件运行在上述命令执行中,还可能出现错误,因为下载的redis.conf文件是最新的,和你的redis版本可能不一致,会导致启动失败。需要用使用如下命令查看日志:根据日志的错误,来修改配置文件即可。# 通过容器ID查看容器日志 docker logs b0f62c846a0a
查看详情首先安装docker,这里不做过多介绍#查看docker版本 docker --version #启动 systemctl start docker systemctl restart docker #搜索mysql镜像 docker search mysql docker pull mysql:latest #查看镜像 docker images 启动: docker run -itd \ --name mysql \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=123456 mysql # -p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。 # MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。 #进入MySQL: docker ps docker exec -it a469eb1589e bash #查看mysql版本: mysql --version #登录mysql mysql -uroot -p #查看数据库: show databases;#MySQL的安全设置 # 登录mysql mysql -u root -p # 修改root账号的密码,不同版本修改密码的SQL语句是不一样的 ALTER USER 'root'@'localhost' IDENTIFIED BY '456789'; # 添加远程登录用户 CREATE USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY '456789'; GRANT ALL PRIVILEGES ON *.* TO 'test'@'%'; # 刷新权限 # flush privileges; FLUSH PRIVILEGES; # 增加root用户的远程连接权限并指定密码 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '456789'; # 更新权限 flush privileges; ## 解决认证插件错误 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '456789'; flush privileges; #一般到这里就可以链接了 #因为现在是新版本8.0了 ,老版本的修改密码的语法已不再适用,mysql 5.7.9以后废弃了password字段和password()函数; #新版本的密码修改可以通过如下命令操作: use mysql; ALTER user 'root'@'localhost' IDENTIFIED BY 'newpassward' #-- 注意,这里的密码要用包含8位大写+小写+特殊字符+数字的密码 ALTER user 'root'@'%' IDENTIFIED BY 'shenma@521' FLUSH PRIVILEGES;指定配置文件和数据存放位置#创建本机数据和配置,日志等文件夹 mkdir -vp /server/mysql cd /server/mysql mkdir data logs conf #复制配置文件 docker cp mysql-test:/etc/mysql /server/mysql/conf #复制data文件 docker cp mysql-test:/var/lib/mysql /server/mysql/data #停止并删除容器 docker stop mysql-test docker rm -f mysql-test #重新启动容器 docker run -d -p 3306:3306 \ --name mysql \ --privileged=true \ --restart=unless-stopped \ -v /server/mysql/conf/mysql/conf.d:/etc/mysql/conf.d \ -v /server/mysql/logs:/var/log/mysql \ -v /server/mysql/data/mysql:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ mysql:latest
查看详情Docker库地址https://hub.docker.com/1.自动安装dockercurl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun #开机启动: systemctl enable docker2、手动安装docker,并拉镜像,运行进行测试教程地址:https://www.runoob.com/docker/centos-docker-install.html#查看docker版本 docker --version #启动 systemctl start docker systemctl restart docker #卸载: yum remove docker-ce docker stats --help #进入容器: docker exec -it nginx /bin/bash docker exec -it 7697977d2d88 /bin/bash #拉最新的Nginx docker pull nginx:latest #查看镜像 docker images #测试镜像 sudo docker run --name nginx -p 9091:80 -d nginx:latest docker ps //查看IP ifconfig http://192.168.0.1:90913、容器部署#本机创建目录,用于容器Nginx挂载出来出来 # 创建网站目录 mkdir -p /server/nginx/html # 创建日志目录 mkdir -p /server/nginx/logs # 创建配置目录 mkdir -p /server/nginx/conf ## 拷贝配置文件 docker cp nginx:/etc/nginx/nginx.conf /server/nginx/conf/nginx.conf docker cp nginx:/etc/nginx/conf.d /server/nginx/conf/conf.d ## 拷贝完配置文件后需要把测试运行的容器停掉,然后再删除容器 docker stop nginx docker rm nginx ## 如果因为权限问题,需要加上--privileged=true这个参数 ## 映射、挂载容器目录,启动容器 docker run -d -p 80:80 -p 443:443 --name nginx -v /server/nginx/html:/usr/share/nginx/html -v /server/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /server/nginx/logs:/var/log/nginx -v /server/nginx/conf/conf.d:/etc/nginx/conf.d --privileged=true nginx:latest #或者 docker run -d -p 80:80 -p 443:443 --name nginx \ -v /server/nginx/html:/usr/share/nginx/html \ -v /server/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /server/nginx/conf/conf.d:/etc/nginx/conf.d \ -v /server/nginx/logs:/var/log/nginx \ --restart=always nginx #新建测试test.conf server { listen 80; server_name 192.168.0.1; location / { #注意这里的root目录是容器的网站目录 root /usr/share/nginx/www_test_com; index index.html index.htm; } location /api/ { proxy_pass http://192.168.0.1:8080/; } } # 移动copy的conf.d目录中的文件到正确的位置: mv /mydata/nginx/conf.d/* /mydata/nginx/conf/conf.d /到这里Nginx就配置好了
查看详情phpStorm,这是一款功能十分强大的专业编程工具软件,而这次小编为大家分享的版本是PhpStorm系列中最新的一个版本,而且经过了汉化破解,界面完全显示中文界面,软件本身是完美的支持xml、json、html、css、JavaScrip等系列的代码的,可以进行一系列的编程工作~一、进入官网,下载最新版软件下载地址: https://www.jetbrains.com/phpstorm/1、下载本站提供的压缩包,得到jetbrains phpstorm 2023原程序,双击它开始安装。2、选择软件安装位置,点击Browser可自行更换安装路径。3、选择附加任务,自行选择需要的进行勾选。4、选择开始菜单文件夹,默认即可。5、正在安装中,请耐心等待一会。6、安装成功,点击Finish退出软件安装向导。二、破解百度搜索phpStorm最新版注册码,见下面博主链接,亲测可用。我用的是2023版,最新获取激活码如下,不行再根据下面链接重新获取(不是打广告,只是正好搜索可以用)FDXL1Y2811-eyJsaWNlbnNlSWQiOiJGRFhMMVkyODExIiwibGljZW5zZWVOYW1lIjoiQmVub2l0IE1lbmVuZGV6IiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2Vuc2VSZXN0cmljdGlvbiI6IiIsImNoZWNrQ29uY3VycmVudFVzZSI6ZmFsc2UsInByb2R1Y3RzIjpbeyJjb2RlIjoiRFBOIiwiZmFsbGJhY2tEYXRlIjoiMjAyMy0wMy0yNyIsInBhaWRVcFRvIjoiMjAyNC0wMy0yNiIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiREIiLCJmYWxsYmFja0RhdGUiOiIyMDIzLTAzLTI3IiwicGFpZFVwVG8iOiIyMDI0LTAzLTI2IiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJQUyIsImZhbGxiYWNrRGF0ZSI6IjIwMjMtMDMtMjciLCJwYWlkVXBUbyI6IjIwMjQtMDMtMjYiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IklJIiwiZmFsbGJhY2tEYXRlIjoiMjAyMy0wMy0yNyIsInBhaWRVcFRvIjoiMjAyNC0wMy0yNiIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiUlNDIiwiZmFsbGJhY2tEYXRlIjoiMjAyMy0wMy0yNyIsInBhaWRVcFRvIjoiMjAyNC0wMy0yNiIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJHTyIsImZhbGxiYWNrRGF0ZSI6IjIwMjMtMDMtMjciLCJwYWlkVXBUbyI6IjIwMjQtMDMtMjYiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IkRNIiwiZmFsbGJhY2tEYXRlIjoiMjAyMy0wMy0yNyIsInBhaWRVcFRvIjoiMjAyNC0wMy0yNiIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiUlNGIiwiZmFsbGJhY2tEYXRlIjoiMjAyMy0wMy0yNyIsInBhaWRVcFRvIjoiMjAyNC0wMy0yNiIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJEUyIsImZhbGxiYWNrRGF0ZSI6IjIwMjMtMDMtMjciLCJwYWlkVXBUbyI6IjIwMjQtMDMtMjYiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlBDIiwiZmFsbGJhY2tEYXRlIjoiMjAyMy0wMy0yNyIsInBhaWRVcFRvIjoiMjAyNC0wMy0yNiIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiUkMiLCJmYWxsYmFja0RhdGUiOiIyMDIzLTAzLTI3IiwicGFpZFVwVG8iOiIyMDI0LTAzLTI2IiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJDTCIsImZhbGxiYWNrRGF0ZSI6IjIwMjMtMDMtMjciLCJwYWlkVXBUbyI6IjIwMjQtMDMtMjYiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IldTIiwiZmFsbGJhY2tEYXRlIjoiMjAyMy0wMy0yNyIsInBhaWRVcFRvIjoiMjAyNC0wMy0yNiIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiUkQiLCJmYWxsYmFja0RhdGUiOiIyMDIzLTAzLTI3IiwicGFpZFVwVG8iOiIyMDI0LTAzLTI2IiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJSUzAiLCJmYWxsYmFja0RhdGUiOiIyMDIzLTAzLTI3IiwicGFpZFVwVG8iOiIyMDI0LTAzLTI2IiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJSTSIsImZhbGxiYWNrRGF0ZSI6IjIwMjMtMDMtMjciLCJwYWlkVXBUbyI6IjIwMjQtMDMtMjYiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IkFDIiwiZmFsbGJhY2tEYXRlIjoiMjAyMy0xMi0zMSIsInBhaWRVcFRvIjoiMjAyNC0wMy0yNiIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiUlNWIiwiZmFsbGJhY2tEYXRlIjoiMjAyMy0wMy0yNyIsInBhaWRVcFRvIjoiMjAyNC0wMy0yNiIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJEQyIsImZhbGxiYWNrRGF0ZSI6IjIwMjMtMDMtMjciLCJwYWlkVXBUbyI6IjIwMjQtMDMtMjYiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlJTVSIsImZhbGxiYWNrRGF0ZSI6IjIwMjMtMDMtMjciLCJwYWlkVXBUbyI6IjIwMjQtMDMtMjYiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IkRQIiwiZmFsbGJhY2tEYXRlIjoiMjAyMy0wMy0yNyIsInBhaWRVcFRvIjoiMjAyNC0wMy0yNiIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQREIiLCJmYWxsYmFja0RhdGUiOiIyMDIzLTAzLTI3IiwicGFpZFVwVG8iOiIyMDI0LTAzLTI2IiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBXUyIsImZhbGxiYWNrRGF0ZSI6IjIwMjMtMTItMzEiLCJwYWlkVXBUbyI6IjIwMjQtMDMtMjYiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUFNJIiwiZmFsbGJhY2tEYXRlIjoiMjAyMy0xMi0zMSIsInBhaWRVcFRvIjoiMjAyNC0wMy0yNiIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQUFMiLCJmYWxsYmFja0RhdGUiOiIyMDIzLTAzLTI3IiwicGFpZFVwVG8iOiIyMDI0LTAzLTI2IiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBDV01QIiwicGFpZFVwVG8iOiIyMDI0LTAzLTI2IiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBHTyIsImZhbGxiYWNrRGF0ZSI6IjIwMjMtMDMtMjciLCJwYWlkVXBUbyI6IjIwMjQtMDMtMjYiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUFBDIiwiZmFsbGJhY2tEYXRlIjoiMjAyMy0wMy0yNyIsInBhaWRVcFRvIjoiMjAyNC0wMy0yNiIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQUkIiLCJmYWxsYmFja0RhdGUiOiIyMDIzLTAzLTI3IiwicGFpZFVwVG8iOiIyMDI0LTAzLTI2IiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBTVyIsImZhbGxiYWNrRGF0ZSI6IjIwMjMtMTItMzEiLCJwYWlkVXBUbyI6IjIwMjQtMDMtMjYiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUlMiLCJmYWxsYmFja0RhdGUiOiIyMDIzLTAzLTI3IiwicGFpZFVwVG8iOiIyMDI0LTAzLTI2IiwiZXh0ZW5kZWQi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破解方法转载: https://www.ajihuo.com/php/4962.html
查看详情时间设置举例:$schedule->command(‘CommandTask’)->dailyAt("5:20");->cron(’* * * * * *’); //在自定义的 Cron 时间表上执行该任务 ->everyMinute(); //每分钟执行一次任务 ->everyFiveMinutes(); //每五分钟执行一次任务 ->everyTenMinutes(); //每十分钟执行一次任务 ->everyFifteenMinutes(); //每十五分钟执行一次任务 ->everyThirtyMinutes(); //每半小时执行一次任务 ->hourly(); //每小时执行一次任务 ->hourlyAt(18); //每小时的第 18 分钟执行一次任务 ->daily(); //每天午夜执行一次任务 ->dailyAt('13:00'); //每天的 13:00 执行一次任务 ->twiceDaily(2, 14); //每天的 2:00 和 14:00 分别执行一次任务 ->weekly(); //每周执行一次任务 ->monthly(); //每月执行一次任务 ->monthlyOn(5, '20:00'); //在每个月的第5天的 20:00 执行一次任务 ->quarterly(); //每季度执行一次任务 ->yearly(); //每年执行一次任务 ->timezone('America/New_York'); //设置时区
查看详情Carbon是php中对时间的一个封装。在内部通过使用DateTime实现了很多简单的方法。比如Carbon::now来说,使用echo Carbon::now()->toDateTimeString()可以直接获取到当前时间。使用DateTime你可能会需要echo (new DateTime())->format('xxxxx')包括其他对时间的操作,增加、减少天/秒/分/月,时间比较等等。 // 获取当前时间 echo Carbon::now(); // 2022-07-04 17:37:18 // 获取当前时间戳 echo Carbon::now()->timestamp; // 时间戳格式化 echo Carbon::now()->timestamp(1656928928)->toDateTimeString(); // 2022-07-04 18:02:08 echo Carbon::now()->timestamp(1656928928)->toDateString(); // 2022-07-04 // 昨天 echo Carbon::yesterday(); // 2022-07-03 00:00:00 // 今天 echo Carbon::today(); // 22022-07-04 00:00:00 // 明天 echo Carbon::tomorrow(); // 2022-07-05 00:00:00 // 获取当前时间的固定格式 echo Carbon::now()->format('Y-m-d'); // 2022-07-04 // 获取当前时间是几号 echo Carbon::now()->day; // 4号 // 获取当前时间是第几月 echo Carbon::now()->month; // 7月 // 获取今年年分 echo Carbon::now()->year; // 2022年 // 获取当前时间的小时 echo Carbon::now()->hour; // 17点 // 获取当前时间的分钟 echo Carbon::now()->minute; // 50分 // 将carbon对象转换成string类型 echo Carbon::now()->toDateTimeString(); // 2022-07-04 17:59:05 echo Carbon::now()->toDateString(); // 2022-07-04 echo Carbon::now()->toFormattedDateString(); // Jul 4, 2022 echo Carbon::now()->toTimeString(); // 18:00:37 echo Carbon::now()->toDayDateTimeString(); // Mon, Jul 4, 2022 6:01 PM // 获取前一天的开始时间 echo Carbon::now()->yesterday()->startOfDay(); // 2022-07-03 00:00:00 // 获取前一天的结束时间 echo Carbon::now()->yesterday()->endOfDay(); // 22022-07-03 23:59:59 // 上一周开始时间 (星期一) echo Carbon::now()->previous()->startOfWeek(); // 2022-06-27 00:00:00 // 上一周结束时间 (星期天) echo Carbon::now()->previous()->endOfWeek(); // 2022-07-03 23:59:59 // 获取这周开始时间 echo Carbon::now()->startOfWeek(); // 2022-07-04 00:00:00 // 获取这周开始时间 echo Carbon::now()->endOfWeek(); // 2022-07-10 23:59:59 // 获取上一月的开始时间 echo Carbon::now()->subMonth(1)->startOfMonth(); // 2022-06-01 00:00:00 // 获取上一月的结束时间 echo Carbon::now()->subMonth(1)->endOfMonth(); // 2022-06-30 23:59:59 // 这个月的第一天开始时间 echo Carbon::now()->startOfMonth(); // 2022-07-01 00:00:00 // 这个月的最后一天结束时间 echo Carbon::now()->endOfMonth(); // 2022-07-31 23:59:59 // 获取上一年的开始时间 echo Carbon::now()->subYear(1)->startOfYear(); // 2021-01-01 00:00:00 // 获取上一年的结束时间 echo Carbon::now()->subYear(1)->endOfYear(); // 2021-12-31 23:59:59 // 今年开始时间 echo Carbon::now()->startOfYear(); // 2022-01-01 00:00:00 // 今年结束时间 echo Carbon::now()->endOfYear(); // 2022-12-31 23:59:59 // 获取今天是当年的第多少天 echo Carbon::now()->dayOfYear; // 185 // 获取今天是这个月的第几周 echo Carbon::now()->weekOfMonth; // 1 // 获取今天是当年的第多少周 echo Carbon::now()->weekOfYear; // 27 // 获取今天是当前的第几季度 echo Carbon::now()->quarter; // 3 // 获取当月天数 echo Carbon::now()->daysInMonth; // 31 // 根据日期计算年龄 echo Carbon::createFromDate(1995, 1, 1)->age; // 27
查看详情在网上看了很多,都说自己搞的博客没人看,没人访问。10个博客9个夭折。首先说下为什么坚持写博客吧,对于我个人来说。写博客主要是是因为两点:第一点喜欢技术,第二点喜欢分享吧。最近想弄一个博客是因为学了Go语言,所以想自己搭个博客玩玩,不求多高的流量。自己发发文章,分享分享自己的东西。个人略懂一点SEO,算是一个皮毛,所以弄了博客以后,想着做做SEO,但是要到处找资料,这也算是一种成长吧。毕竟接触以前不关注的东西。我的博客技术栈:后端:go-zero + redis + mysql + sqlx,目前用的这些,后期可能尝试加一下消息队列(比如RabbitMq之类)前端:博客用的是nuxt3+Elment-plus,后台用的是vite3+vue3+ts+pinia+Elment-plus希望有机会一起交流!知乎链接:https://zhuanlan.zhihu.com/p/618294882
查看详情今天PHP爱好者给大家带来html5禁止横屏的方法:首先打开相应的HTML5代码文件;然后在head区域中添加“<meta name="screen-orientation" content="portrait">”即可禁止html5页面横屏。希望对大家有所帮助。//通用禁止横屏 <meta name="format-detection" content="telephone=no" /> //UC浏览器禁止横屏 <meta name="screen-orientation" content="portrait"> //QQ浏览器禁止横屏 <meta name="x5-orientation" content="portrait"> //JS横屏操作 <script> (function rotate() { var orientation = window.orientation; var pd = null; function createPd() { if (document.getElementById("preventTran") === null) { var imgData = "data:image/png;base64,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"; pd = document.createElement("div"); pd.setAttribute("id", "preventTran"); pd.style.position = "fixed"; pd.style.left = "0"; pd.style.top = "0"; pd.style.width = "100%"; pd.style.height = "100vh"; pd.style.overflow = "hidden"; pd.style.backgroundColor = "#2e2e2e"; pd.style.textAlign = "center"; pd.style.display = "flex"; pd.style.flexDirection = "column"; pd.style.justifyContent = "center"; pd.style.alignItems = "center"; document.getElementsByTagName("body")[0].appendChild(pd); var img = document.createElement("img"); img.src = imgData; pd.appendChild(img); img.style.marginBottom = "0.2rem"; img.style.width = "10%"; var br = document.createElement("br"); var p = document.createElement("p"); p.style.width = "100%"; p.style.height = "auto"; p.style.fontSize = "0.25rem"; p.style.color = "#626262"; p.style.lineHeight = "0.38rem"; p.style.textAlign = "center"; p.innerHTML = "为了您的良好体验"; p.appendChild(br); p.innerHTML += "请将手机/平板竖屏操作"; pd.appendChild(p); } } if (orientation == 90 || orientation == -90) { if (pd == null && document.getElementById("preventTran") === null) createPd(); document.getElementById("preventTran").style.zIndex = "9999"; } //H5新特性 监听用户水平或垂直翻转设备(即方向发生改变) window.onorientationchange = function () { if (pd == null && document.getElementById("preventTran") == null) { createPd(); document.getElementById("preventTran").style.zIndex = "-1"; rotate(); } else { location.reload(); } }; })(); </script>
查看详情如图所示:我们在前端研发过程中,在表单提交或者用户其他点击行为过程中,为了避免用户重复点击,我们有必要在这些可点击地方加上防抖操作 。一方面阻止用户重复请求后端接口,另一方面也提高了用户的体验性。let clickNum = 0; // 表单提交 $('.submit_btn').on('click', function () { if (clickNum == 0) { clickNum = 1; setTimeout(function () { clickNum = 0 }, 3000); //这里写需要执行的函数 }else{ layer.msg('请勿频繁操作!'); } })
查看详情在前端开发中,特别是手机端网页时候。经常会在手机网页底部自动加上类似于上面这种垃圾广告。这样会应该我们的站点,让人误以为是广告,所以我们要在代码中进行处理。这种情况基本上UC浏览器向我们页面插入了一段iframe代码。处理的方式有很多,下面是我们常用的一种方式,亲测可用。// 清除广告 var del_times = 0, deTimer = null; function adGo() { var iframe = document.getElementsByTagName("iframe")[0]; if (iframe) { var bodyNode = { tagName: "" }, iframeParent, targetNode = iframe.parentNode; while (bodyNode.tagName != "BODY") { bodyNode = targetNode; if (bodyNode.tagName != "BODY") { iframeParent = targetNode; targetNode = targetNode.parentNode; } } if (iframeParent) //如果iframe有父类 bodyNode.removeChild(iframeParent); else bodyNode.removeChild(iframe); } del_times++; if (del_times > 10) window.clearInterval(deTimer); } //抢先 删除 嵌入广告 (function () { adGo(); })(); deTimer = self.setInterval(adGo, 200); ///新版 首先需要在body结束之前插入一行HTML代码: <div id="lastOne"></div> 使用这个代码的目的是为了找到页面的最后一行标识。这行代码以后出现的代码都会被jQury删除掉。 UC广告使用了滚动触发的,所以我们需要这个写: $(document).scroll(function () { $("#lastOne").nextAll().remove(); });
查看详情人的血液7年会全部替换一遍,鱼的记忆只有7秒。