们将在这个小小的城镇中相互扶持,共同生活下去
今宵之月,绝不西沉。只此美梦,不再苏醒。从今往后,生生世世,长相厮守,为你立誓。
我们不能让这次冒险之旅没有意义没有收获
我们的本质就是血,一层层地重复,然后世代脉脉相传的血才是黑血的真实
当你知道自己被爱著的时候就不会自卑了asd
不要哭,我还没有努力到要哭的程度,不甘心就可以了das
既不回头,何必不忘;既然无缘,何必誓言;今日种种,似水无痕
空谈之类,是谈不久,也谈不出什么来的,它终必被事实的镜子照出原形,拖出尾巴而去
只愿涤荡四方,护得一世之隅。
你看你浪费了多少流星,哈哈……不牵个手也很浪费这样的夜晚呢
有形的东西迟早会凋零,但只有回忆是永远不会凋零的
已经无法回来的东西,得到和舍弃都很痛苦
Pain past is pleasure.11222
我因为后来离开村子,在远处看见这一村庄人的火焰。看见他们比熄灭还要寂静的那一场燃烧。我像一根逃出火堆的干柴,幸运而孤独地站在远处。
河川,激流逆流顺流回流,犹如人生前后进退往复不息
首页
统计
免费Chat GPT
关于
更多
友链
每日新闻
视频
高清壁纸
Search
1
2023彩虹易支付最新原版开源网站源码,完整的易支付源码,无后门
465 阅读
2
ThinkPHP6的常见问题解答
387 阅读
3
Spring Boot之七牛云分片上传
241 阅读
4
小狐狸ChatGPT付费创作系统V2.4.9独立版 +WEB端+ H5端 + 小程序端(支持分享朋友圈、破解弹窗)
230 阅读
5
国内最好用的六款虚拟机软件
212 阅读
技术分享
源码分享
课程分享
号卡套餐
移动专区
电信专区
联通专区
广电专区
软件仓库
电脑软件
安卓软件
活动线报
值得一看
Search
标签搜索
技术分享
源码
源码分享
css
安卓软件
活动线报
软件
课程分享
号卡
电脑软件
PHP
值得一看
HTML
js
教程
chatgpt
AI
小程序
ThinkPHP
联通
老K博客
累计撰写
420
篇文章
累计收到
338
条评论
今日撰写
0
篇文章
首页
栏目
技术分享
源码分享
课程分享
号卡套餐
移动专区
电信专区
联通专区
广电专区
软件仓库
电脑软件
安卓软件
活动线报
值得一看
页面
统计
免费Chat GPT
关于
友链
每日新闻
视频
高清壁纸
用户登录
登录
搜索到
117
篇与
的结果
2023-10-19
Docker总结(命令、镜像、容器、数据卷、DockerFile、网络、Compose)
Docker常用命令帮助命令docker version # 显示docker的版本信息 docker info # 显示docker的系统信息,包括镜像和容器的数量 docker 命令 --help # 帮助命令帮助文档地址:https://docs.docker.com/engine/reference/commandline/docker/镜像命令docker images 查看所有本机的主机上的镜像[root@FanJunyang /]# docker images REPOSITORY hel1o-world TAG latest IMAGE ID bf756fb1ae65 CREATED 4 months ago SIZE 13.3kB #解释 REPOSITORY 镜像的仓库源 TAG 镜像的标签 IMAGE ID 镜像的id CREATED 镜像的创建时间 SIZE 镜像的大小 #可选项 -a, --all #列出所有镜像 -q, --quiet #只显示镜像的iddocker search 搜索镜像docker search mysql # 可选项,搜索过滤 --filter=STARTS=3000 # 过滤星数不少于3000的 docker search mysql --filter=STATRS=3000docker pull 下载镜像# docker pull 镜像名[:tag] # 如果不写tag,默认就是latest(最新版) # 指定版本下载 docker pull mysql:5.7 # 必须官网上有docker rmi 删除镜像[root@FanJunyang /]# docker rmi -f 容器id #删除指定的容器 [root@FanJunyang /]# docker rmi -f 容器id容器id容器id容器id # 删除多个容器 [root@FanJunyang /]# docker rmi -f $(docker images -aq) # 删除全部的容器容器命令说明:我们有了镜像才可以创建容器, linux ,下载一个centos镜像来测试学习docker pull centos新建容器并启动docker run [可选参数] image #参数说明 --name="Name" 容器名字 tomcat01 tomcat02,用来区分容器 -d 后台方式运行 -it 使用交互方式运行,进入容器查看内容 -р 指定容器的端口-p 8080:8080 -p ip:主机端口:容器端口 -p主机端口:容器端口(常用) -p容器端口 容器端口 -p 随机指定端口 # 测试,启动并进入容器 docker run -it centos /bin/bash ls # 查看容器内的centos,与外界的已隔离开列出所有的运行的容器docker ps #列出当前正在运行的容器 -a #列出当前正在运行的容器+带出历史运行过的容器 -n=? #显示最近创建的容器 -q #只显示容器的编号 举例: docker ps -aq退出容器exit # 直接容器停止并退出 Ctrl + P + Q # 容器不停止退出删除容器docker rm 容器id # 删除指定的容器,不能删除正在运行的容器,如果要强制删除,需加 -f 参数 docker rm -f $(docker ps -aq) # 删除所有的容器 docker ps -a -q|xargs docker rm # 删除所有的容器启动和停止容器的操作docker start 容器id # 启动容器 docker restart 容器id # 重启容器 docker stop 容器id # 停止容器 docker kill 容器id # 强制停止当前容器常用其他命令后台启动容器#命令docker run -d 镜像名 [root@FanJunyang /]# docker run -d centos #问题docker ps,发现centos停止了 # 常见的坑, docker容器使用后台运行,就必须要有要一个前台进程, docker发现没有应用,就会自动停止 # nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了查看日志docker logs docker logs -f -t --tail 容器id,没有日志 docker logs --help # 查看帮助 #自己编写一段she11脚本 [root@FanJunyang /# docker run -d centos /bin/sh-c "while true; do echo kuangshen;sleep 1;done" #[root@FanJunyang /]# docker ps CONTAINER ID dce7b86171bf IMAGE centos # 显示日志 -tf # 显示日志 --tail number # number要显示日志条鼓 [root@FanJunyang /]# docker logs -tf --tail 10 dce7b86171bf查看容器中的进程信息docker top 容器id查看镜像的元数据docker inspect 容器id进入当前正在运行的容器#我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置 # 方式一 docker exec -it 容器id /bin/bash # 方式二 docker attach 容器id # 正在执行当前的代码 # docker exec 进入容器后开启一个新的终端,可以在里面操作(常用) # docker attach 进入容器正在执行的终端,不会启动新的进程!注:不管容器有没有启动,拷贝命令都是生效的从容器内拷贝文件到主机上docker cp 容器id:容器内路径 目的的主机路径 # 测试 docker cp 容器id:/home/test.js /home从主机内拷贝文件到容器里docker cp 主机路径/文件名 容器名(或者id):容器路径
2023年10月19日
44 阅读
0 评论
0 点赞
2023-10-11
利用微信公众号提供的素材存储当免费图床用
当自己开发小程序时,特别是电商类的小程序,会存储很多图片,图片多的话存储成本就会增大,特别是当用户访问增多后,宽带、流量也是不堪负重。想法微信公众平台提供了一个素材管理,里面可以上传图片、视频、音频等类型的素材,那么是否可以将图片素材上传上去,获取到url作为自己小程序项目的图片服务器呢?当然没问题!根据开发文档的说法:永久图片素材新增后,将带有URL返回给开发者,开发者可以在腾讯系域名内使用(腾讯系域名外使用,图片将被屏蔽)。简单来说就是你只能在腾讯的平台使用这个图片素材URL,否则无法展示,因为有防盗链。开发根据微信公众平台开发文档提供的【新增永久素材】接口可知,分为以下几个步骤实现上传图片素材到微信服务器。获取access_token调用新增永久素材接口进行上传素材获取到素材的永久URL代码如下<?php // 返回JSON header("Content-type:application/json"); // 允许上传的图片后缀 $allowedExts = array("jpeg", "jpg", "png"); // 后缀名 if ($allowedExts[0] == 'jpeg') { $hzm = 'jpg'; }else{ $hzm = $allowedExts[0]; } // 获取选择的文件 $temp = explode(".", $_FILES["file"]["name"]); // 获取文件后缀名 $extension = end($temp); if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) && ($_FILES["file"]["size"] < 10485760) && in_array($extension, $allowedExts)){ if ($_FILES["file"]["error"] > 0){ $result = array( 'code' => 201, 'msg' => '上传失败'.$_FILES["file"]["error"] ); }else{ // 重命名 $new_file = date("Y-m-d")."-".rand(10000,99999).".".$hzm; // 上传到自己的服务器 move_uploaded_file($_FILES["file"]["tmp_name"], "upload/".$new_file); // 获取真实地址 $filepath = realpath(dirname(__FILE__)); $upload_filepath = $filepath."/upload/".$new_file; // 上传到微信服务器 $imgurl = upload_img($upload_filepath); // 验证上传结果 if(strpos($imgurl,'http') !== false){ // 上传成功 $result = array( 'code' => 200, 'msg' => '上传成功', 'url' => $imgurl ); // 删除本地素材 unlink($upload_filepath); }else{ // 上传失败 $result = array( 'code' => 202, 'msg' => '上传失败' ); } } } // 获取access_token function getToken(){ // appid和secret $appid='填写你公众号的appid'; $appsecret='填写你公众号的appsecret'; // 读取access_token include './access_token.php'; // 判断是否过期 if (time() > $access_token['expires']){ // 如果已经过期就得重新获取并缓存 $access_token = array(); $access_token['access_token'] = getNewToken($appid,$appsecret); $access_token['expires']=time()+7000; // 将数组写入php文件 $arr = '<?php'.PHP_EOL.'$access_token = '.var_export($access_token,true).';'.PHP_EOL.'?>'; $arrfile = fopen("./access_token.php","w"); fwrite($arrfile,$arr); fclose($arrfile); // 返回当前的access_token return $access_token['access_token']; }else{ // 如果没有过期就直接读取缓存文件 return $access_token['access_token']; } } // 获取新的access_token function getNewToken($appid,$appsecret){ $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsecret}"; $access_token_Arr = https_request($url); return $access_token_Arr['access_token']; } // curl请求函数 function https_request ($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $out = curl_exec($ch); curl_close($ch); return json_decode($out,true); } // 上传图片素材到微信服务器 function upload_img($realpath){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://api.weixin.qq.com/cgi-bin/material/add_material?access_token='.getToken().'&type=image'); $data = array( 'media' => new CURLFile($realpath) ); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $upimg = curl_exec($ch); return json_decode($upimg)->url; curl_close($ch); } // 返回JSON对象 echo json_encode($result,JSON_UNESCAPED_UNICODE); ?>请求返回{"media_id":"8IZhZUPXxsG_omeA5giO5By8VyHnjk7_oy0Co9jVWwxpgm-sqhx_Hkz_9rLVF9Ws","url":"http:\/\/mmbiz.qpic.cn\/mmbiz_png\/5zLSKyuEW2Kt5ZGZg7XUx05QyGOVFCpHqKic74qQP4gxzQJYXjwN4aGEiadtfUXax4fCXXV5ia1UnvSwdqxuqLCqA\/0?wx_fmt=png","item":[]}代码解释首先要将图片从客户端(小程序端)上传到你自己的服务器的upload目录然后调用新增永久素材接口从upload目录上传到微信的服务器需要配置公众号的appid和appsecret获取access_token新增永久素材接口需要传入access_token才可以调用access_token有效期是2小时,每天最多获取2000次access_token,超过次数就获取不到,为了能够保证一直都能获取到新的token,不能每上传一次就获取一个新的access_token,量大的话一下子就把2000次用完了。access_token只要在2小时内都可以随便使用,所以需要进行缓存access_token。getToken()这个函数就是缓存access_token的步骤(如果access_token已经超过2小时就获取新的access_token并缓存到本地,如果access_token还没超过2小时直接读取本地缓存的access_token)获取access_token接口需要在公众号后台的安全中心配置白名单ip地址注意图片链接只能在腾讯域名的平台使用,在自建网站无法显示,本文主要将的是小程序调用永久图片素材,是可以用的!扩展如果需要在非腾讯域名下使用永久图片素材的URL,需要搭配反防盗链图片跳板,类似http://xxx.com/?imgurl=永久图片素材URL来绕过防盗链,简单来说就是一个图片服务器代理吧。也可以本地存储一份,两个链接做一个对应,本地只做存储,不做访问,之后别的平台还能用,微信的部分只在微信用,减少流量的访问。
2023年10月11日
52 阅读
0 评论
0 点赞
2023-07-13
typecho伪静态去掉index.php的方法
typecho去掉index.php的方法:首先配置服务器的rewrite规则;然后修改nginx以及apache配置;最后在后台配置typecho伪静态即可。typecho开启伪静态,去掉那个讨厌的index.php Typecho默认会在文章或独立页面后加上index.php,很多人都接受不了。例如如下网址:https://www.laokbk.cn/index.php/archives/60/,但我们希望最终的形式是这样:http://www.laokbk.cn/archives/60/。那么我们如何做到这样的效果?1.配置服务器的重写规则如果在保存上述配置的时候,typecho无法自动配置,那么你可能需要手动配置服务器的rewrite规则。Linux Apache 环境 (.htaccess):<IfModule mod_rewrite.c> RewriteEngine On # 下面是在根目录,文件夹要修改路径 RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php/$1 [L] </IfModule> Linux Apache 环境(Nginx): location / { index index.html index.php; if (-f $request_filename/index.html) { rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php) { rewrite (.*) $1/index.php; } if (!-f $request_filename) { rewrite (.*) /index.php; } } Windows IIS 伪静态 (httpd.ini): [ISAPI_Rewrite] # 3600 = 1 hour CacheClockRate 3600 RepeatLimit 32 # 中文tag解决 RewriteRule /tag/(.*) /index\.php\?tag=$1 # sitemapxml RewriteRule /sitemap.xml /sitemap.xml [L] RewriteRule /favicon.ico /favicon.ico [L] # 内容页 RewriteRule /(.*).html /index.php/$1.html [L] # 评论 RewriteRule /(.*)/comment /index.php/$1/comment [L] # 分类页 RewriteRule /category/(.*) /index.php/category/$1 [L] # 分页 RewriteRule /page/(.*) /index.php/page/$1 [L] # 搜索页 RewriteRule /search/(.*) /index.php/search/$1 [L] # feed RewriteRule /feed/(.*) /index.php/feed/$1 [L] # 日期归档 RewriteRule /2(.*) /index.php/2$1 [L] # 上传图片等 RewriteRule /action(.*) /index.php/action$1 [L]...nginx配置server { listen 80; server_name yourdomain.com; root /home/yourdomain/www/; index index.html index.htm index.php; if (!-e $request_filename) { rewrite ^(.*)$ /index.php$1 last; } location ~ .*\.php(\/.*)*$ { include fastcgi.conf; fastcgi_pass 127.0.0.1:9000; } access_log logs/yourdomain.log combined; }...Apache 配置<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1] </IfModule>...2.后台配置类型伪静态如图,在typecho后台,开启伪静态,并选择你喜好的url形式: 具体操作,根据本人实际操作如下我的虚拟主机是apache的,在网站根目录找到.htaccess,有的没有可能是设置了隐藏文件,显示隐藏文件就能看到了。然后编辑.htaccess文件,加入上文中对应的apache配置代码保存。然后去typecho程序后台,设置>永久链接,按照上文中图片的设置,保存即可。用宝塔面板的直接开启配置的伪静态规则即可。
2023年07月13日
54 阅读
7 评论
0 点赞
2023-06-16
一个简单实用的网站访客统计PHP源码
简介一个简单统计网站访客的PHP源码,实现前端网页显示访问量,采用PV统计方式,单个用户连续点击N篇文章,记录N次访问量,源码会自动生成TXT记录文档,记录的访问量可以自行修改源码在网站根目录新建一个名为FKTJ.php的文件,然后写入以下代码<?php $n=file_get_contents('FKTJ.txt'); $n++; file_put_contents('FKTJ.txt',$n); echo "document.write($n);"; ?>...在需要显示的地方添加以下调用代码你是第<script type=text/javascript src=FKTJ.php></script>位访问者 ...注意加入调用代码后打开网页,会在后台生成一个名为FKTJ.txt的记录文件,编辑此文件可以实现修改访问量,如需统计次目录下的单页访问量,可以在次目录下新建FKTJ.php文件,然后添加调用代码即可
2023年06月16日
38 阅读
0 评论
0 点赞
2023-06-15
Mybatis-plus的使用
Mybatis-plus的使用一、简介{card-describe title=""}Mybatis-plus的基于mybatis的,简化了单表mybatis的操作。注意:它并没有提升性能,只是简化了开发过程。{/card-describe}二、在springboot中的基本使用{card-describe title=""}1、倒入依赖{/card-describe}<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.0</version> </dependency> ...{card-describe title=""}2、添加相应的数据库配置(application.properties){/card-describe}# 数据库驱动: spring.datasource.driver-class-name=com.mysql.jdbc.Driver # 数据库连接地址 spring.datasource.url=jdbc:mysql://localhost:3306/books?useUnicode=true&characterEncoding=utf-8 # 数据库用户名&密码: spring.datasource.username=root spring.datasource.password=root # mapper的路径 mybatis-plus.mapper-locations=classpath*:/mapper/**/*.xml ...{card-describe title=""}3、在Application类上添加dao接口的路径扫描{/card-describe}@SpringBootApplication @MapperScan("com.qf.day15.dao") public class Day15Application { public static void main(String[] args) { SpringApplication.run(Day15Application.class, args); } } ...{card-describe title=""}4、编写实体类{/card-describe}// 如果表名和实体类的名称一致,如果属性名和数据库表中字段名一致,可以不配置任何实体相关内容 @Data public class User { private Long id; private String name; private Integer age; private String email; } ...{card-describe title=""}5、编写dao接口{/card-describe}public interface UserDAO extends BaseMapper<User> { } ...{card-describe title="}6、测试使用{/card-describe}@SpringBootTest class Day15ApplicationTests { @Resource private UserDAO userDAO; @Test void contextLoads() { List<User> list = userDAO.selectList(null); System.out.println(list); } } ...三、常用配置1、实体类配置当实体类与表名不一致,字段名与属性名不一致时,需要相应的配置@TableName 一般用来配置实体类对应的表名,resultMap,以及忽略的属性名(3.3.1以上的版本)等。用在类上。@TableId一般用来配置主键的增长方式,并且配置表中的主键字段的名称。相当于id标签@TableField 一般用来配置表中列的名称。相当于result标签@Version乐观锁标记。@Data @TableName("tb_user") public class User { @TableId(value = "u_id", type = IdType.AUTO) private Long id; @TableField("u_name") private String name; @TableField("u_age") private Integer age; @TableField("u_email") private String email; } ...四、常用方法// 添加 int insert(T entity); // 根据id删除 int deleteById(Serializable id); int deleteByMap(@Param("cm") Map<String, Object> columnMap); // 根据where条件删除 int delete(@Param("ew") Wrapper<T> wrapper); // 批量根据ids删除 int deleteBatchIds(@Param("coll") Collection<? extends Serializable> idList); // 根据id修改 int updateById(@Param("et") T entity); // 根据where条件修改 int update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper); // 根据id查询对象 T selectById(Serializable id); // 根据一组ids查询集合 List<T> selectBatchIds(@Param("coll") Collection<? extends Serializable> idList); List<T> selectByMap(@Param("cm") Map<String, Object> columnMap); // 根据添加查询单个对象 T selectOne(@Param("ew") Wrapper<T> queryWrapper); // 根据添加查询数量 Integer selectCount(@Param("ew") Wrapper<T> queryWrapper); // 根据添加查询集合 List<T> selectList(@Param("ew") Wrapper<T> queryWrapper); List<Map<String, Object>> selectMaps(@Param("ew") Wrapper<T> queryWrapper); List<Object> selectObjs(@Param("ew") Wrapper<T> queryWrapper); // 分页查询 <E extends IPage<T>> E selectPage(E page, @Param("ew") Wrapper<T> queryWrapper); <E extends IPage<Map<String, Object>>> E selectMapsPage(E page, @Param("ew") Wrapper<T> queryWrapper); ...构造查询条件Wrapper具体参考:https://mybatis.plus/guide/wrapper.html#inpublic List<User> findAll(int age){ QueryWrapper wrapper = new QueryWrapper(); wrapper.gt("u_age", age); return userDAO.selectList(wrapper); } ...五、关联查询的实现mybatis-plus对于关联查询本身需要mybatis来支持,所以可以写mapper.xml来实现。@Data @TableName("book_type") public class BookType { @TableId(value = "id", type = IdType.AUTO) private Integer id; private String name; } @Data @TableName(value = "books", resultMap = "bookMap") // 关联xml中的resultMap配置 public class Book { @TableId(value = "id", type = IdType.AUTO) private Integer id; private String name; private String author; @TableField("book_desc") private String bookDesc; @TableField("create_time") private Date createTime; private BookType type; @TableField("img_path") private String imgPath; } ...<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.qf.day15.dao.BookDAO"> <resultMap id="bookMap" type="com.qf.day15.entity.Book"> <association property="type" column="type_id" select="com.qf.day15.dao.BookTypeDAO.selectById"></association> </resultMap> </mapper> ...
2023年06月15日
43 阅读
0 评论
0 点赞
1
...
22
23
24
CC BY-NC-ND