首页
关于
留言
壁纸
更多
直播
统计
友链
Search
1
好用的软件分享
452 阅读
2
最新Navicat 15 for MySQL破解+教程 正确破解步骤
278 阅读
3
面试常见问题100问
247 阅读
4
一个人要走的时候,千万别问原因
194 阅读
5
直击心灵的唯美句子
163 阅读
日常记录
后端
PHP
NodeJs
Python
Java
前端
JavaScript
数据库
MySQL
服务器
美文
微信开发
微信公众号
微信小程序
编程
登录
Search
标签搜索
mysql
面试
python
django
express
axios
thinkphp
PHP
励志
哲理
九九乘法表
node
cors
跨域
唯美句子
美文
文件上传
ajax
算法
jwt
公子初心
累计撰写
79
篇文章
累计收到
12
条评论
首页
栏目
日常记录
后端
PHP
NodeJs
Python
Java
前端
JavaScript
数据库
MySQL
服务器
美文
微信开发
微信公众号
微信小程序
编程
页面
关于
留言
壁纸
直播
统计
友链
搜索到
35
篇与
的结果
2023-06-25
python豆瓣,清华镜像源地址
由于pip是连接的国外的网站进行包的下载,所以有的时候会速度很慢。我们可以通过如下命令,让其连接国内的网站进行包的安装:pip install pygame -i https://pypi.douban.com/simple/pip install pygame -i https://pypi.tuna.tsinghua.edu.cn/simple
2023年06月25日
83 阅读
0 评论
0 点赞
2023-06-19
Python设计之禅~Python的设计哲学
一、Python之禅翻译Python之禅,即Python Zen,是由Python社区创造的一种简洁哲学理念,它强调了面向对象、简洁、明确、可读性和美学等方面的设计思想。Python之禅的翻译在不同的版本中略有不同,下面是最流行的一种翻译版本:优美胜于丑陋明了胜于晦涩简洁胜过复杂复杂胜过凌乱扁平胜过嵌套间隔胜过紧凑可读性很重要特殊情况并不特殊到足以违反常规尽管实用性胜过纯粹性,但特例也并不可豁免除非明确沉默面对模棱两可,拒绝猜测的诱惑应该拥有一个,最好只有一个,显而易见的解决方案虽然这个方案一开始可能并不是那么显而易见,除非你是莫名其妙现在总比永远不好虽然永远不比现在好这些原则有效地促进了Python代码的创作和开源精神,使得Python代码不仅易于编写和阅读,而且具有模块化、可重用性和易于维护的优点。二、Python之禅命令在Python中,我们可以直接运行Python之禅,只需要在终端输入import this,即可得到Python之禅的内容输出:import this优美胜于丑陋明了胜于晦涩简洁胜过复杂复杂胜过凌乱扁平胜过嵌套间隔胜过紧凑可读性很重要……三、Python之禅怎么打如果你想手动输入Python之禅的所有内容,你可以按照下面的代码示例来打印Python之禅:import this四、Python之禅什么意思Python之禅是一种关于Python编程哲学的概括,它描述了Python代码应该具备的特点,比如简洁、明了、可读性等方面。Python之禅不仅有助于程序员编写易于阅读和维护的Python代码,还鼓励程序员尊重编程的美学,并倡导开源精神和文化。
2023年06月19日
42 阅读
0 评论
0 点赞
2022-12-15
thinkphp框架之Excel导入导出,jwt使用
1.Excel 上传(thinkPHP6)public function upload(){ $file = request()->file(request()->post("file")); // // 上传到本地服务器 $savename = \think\facade\Filesystem::disk('public')->putFile(request()->post("path"), $file); // // 将上传后的文件位置返回给前端 return json(['code' => 0,"savename"=>$savename]); }2.Excel 导入(thinkPHP6)public function readExcel(){ $filename = "upload/".request()->get("savename"); $obj = PHPExcel_IOFactory::load($filename); $data['major_id'] = Db::name("major")->where("major_name",$obj->getSheetNames()[0])->value("id"); $data['create_time'] = date("Y-m-d H:i:s"); // 导入时间 $sheet = $obj->getSheet(0);// 获取第0个sheet $lesson_list = $sheet->toArray();//把表格的数据转换为数组,注意:这里转换是以行号为数组的外层下标,列号会转成数字为数组内层下标,坐标对应的值只会取字符串保留在这里,图片或链接不会出现在这里。 /* * 0 => array:5 [ 0 => "序号" 1 => "课程阶段" 2 => "课程名称" 3 => "课程编号" 4 => "课程内容" ] 1 => array:5 [ 0 => "第1周" 1 => "第一阶段" 2 => "Logic JAVA" 3 => "LogicJAVA-1" 4 => "课程架构分析,java发展史,java特性,java平台版本,dos命令,jdk下载与安装,开发环境搭建,第一个HelloWorld程序" ] * */ for($i=1;$i<count($lesson_list);$i++){ $data['lesson_stage'] = $lesson_list[$i][1]; // 课程阶段 $data['lesson_name'] = $lesson_list[$i][2]; // 课程名称 $data['lesson_number'] = $lesson_list[$i][3];// 课程编号 $data['lesson_content'] = $lesson_list[$i][4];// 课程内容 Db::name("normal_lesson")->insertGetId($data); } }3.Excel导出(thinkPHP6)//导出功能 public function export(){ // 获取班级名称 $class_name = request()->get("class_name"); // 根据班级名称查询此班级对应的专业名称 $major_name = Db::name("class_name") ->alias("cn") ->field("m.major_name") ->join("major m","cn.major_id=m.id") ->where("cn.class_name",$class_name) ->value("m.major_name"); // 根据班级名称获取所有属于这个班级的数据 $excel_name = $class_name.".xlsx"; //实例化PHPExcel类,类似于在桌面上新建一个Excel表格 $PHPExcel = new PHPExcel(); //获得当前活动sheet的操作对象 $PHPSheet = $PHPExcel->getActiveSheet(); //给当前活动sheet设置名称 $PHPSheet->setTitle($excel_name); // 1.逐个单元格去填充数据,适合数据量较大的情况 //给当前活动sheet填充数据,数据填充是按顺序一行一行填充的,假如想给A1留空,可以直接setCellValue('A1',''); // $PHPSheet->setCellValue('A1','姓名')->setCellValue('B1','分数'); // $PHPSheet->setCellValue('A2','张三')->setCellValue('B2','50'); // 2.一次性填充数据,适合数据量较小的情况 // 根据当前考场的id 查询当前考场的所有考生信息 $title = ["编号","日期","星期","班级","教室","计划进度","讲师进度","讲师姓名","课时","讲师提交时间","备注"]; $normal_teacher_lesson = Db::name("normal_teacher_lesson") ->field("id,progress_date,progress_week,class_name,room_name,lesson_number,teacher_progress,teacher_name,class_hour,teacher_create_time,remark") ->where("class_name",$class_name) ->order("id asc") ->select() ->toArray(); // 添加表头 array_unshift($normal_teacher_lesson,$title); $PHPSheet->fromArray($normal_teacher_lesson); // //按照指定格式生成Excel文件,'Excel2007'表示生成2007版本的xlsx, $PHPWriter = PHPExcel_IOFactory::createWriter($PHPExcel,'Excel2007'); // header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');//告诉浏览器输出07Excel文件 // //header('Content-Type:application/vnd.ms-excel');//告诉浏览器将要输出Excel03版本文件 // //告诉浏览器输出excel名称 header("Content-Disposition: attachment;filename=$excel_name"); header('Cache-Control: max-age=0');//禁止缓存 $PHPWriter->save("php://output"); dd(); }4.jwt thinkphpcomposer require firebase/php-jwt use Firebase\JWT\ExpiredException; use Firebase\JWT\JWT AS JWTUtil; use Firebase\JWT\Key;5.jwt 生成token// jwt生成token function createToken($user=[],$exptime=0){ $key = md5(Config::get('app.jwt_secret_key')); // jwt 的签发秘钥 $time = time(); // 签发时间 $expire = $time + $exptime; // 过期时间 $token = array( $user, "iss"=>"yunhedata", //签发组织 "aud"=>"zhangxuhui",//签发作者 "iat"=>$time, "nbf"=>$time, "exp"=>$expire ); $jwt = JWTUtil::encode($token,$key,'HS256'); return $jwt; }6.jwt校验token//jwt校验 function verifyToken($token){ // jwt 的密钥 $key = md5(Config::get('app.jwt_secret_key')); // jwt 的签发秘钥 try{ $jwtAuth = json_encode(JWTUtil::decode($token,new Key($key, 'HS256'))); $authInfo =json_decode($jwtAuth,true); return ['code'=>0,'msg'=>'token正常','data'=>$authInfo[0]]; }catch (ExpiredException $e){ return ['code'=>1,'msg'=>'token过期','data'=>[]]; }catch (\Exception $e){ return ['code'=>2,'msg'=>'token错误','data'=>[]]; } }
2022年12月15日
46 阅读
0 评论
0 点赞
2022-09-21
express解决跨域问题
1.原始方式app.use((req, res, next) => { res.header('Access-Control-Allow-Origin', '*') res.header('Access-Control-Allow-Headers', 'Authorization,X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method' ) res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PATCH, PUT, DELETE') res.header('Allow', 'GET, POST, PATCH, OPTIONS, PUT, DELETE') next(); });2.express使用cors来解决跨域问题2.1 js主程序// 1.使用npm安装cors npm -i cors // 2.引入cors模块 // 3.在路由之前配置cors中间件解决跨域问题 const express = require('express') const router = require('./route') const qs = require("querystring") const app = express() const cors = require("cors") app.use(express.urlencoded({extended:false})) app.use(express.json()) app.use(cors()) app.use(router) app.listen(80,()=>{ console.log("http://127.0.0.1") })2.2 路由模块 const express = require("express") const router = express.Router() router.get('/',(req,res)=>{ console.log(req.query); res.send(req.query) }) router.post('/',(req,res)=>{ console.log(req.body); res.send(req.body) }) module.exports = router2.3 前端使用axios发起get,post请求<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script src="axios.js"></script> </head> <body> <button id="btnGet">get请求</button> <button id="btnPost">post请求</button> <script> let btnGet = document.querySelector("#btnGet") let btnPost = document.querySelector("#btnPost") btnGet.addEventListener("click",()=>{ axios.get("http://127.0.0.1",{ params:{ id:123, name:'hello' } }).then(res=>{ console.log(res.data); }); }) btnPost.addEventListener("click",()=>{[ axios.post('http://127.0.0.1', {id:1,name:"laobai"}) .then(function(ret){ console.log(ret.data) }) ]}) </script> </body> </html>
2022年09月21日
61 阅读
0 评论
1 点赞
2022-09-14
使用formidable模块上传文件的一些问题
本文介绍formidable模块保留上传文件的扩展名问题(有可能上传文件成功后无法保存文件扩展名)当前的版本为"formidable": "^2.0.1",{dotted startColor="#ff6c6c" endColor="#1989fa"/}前端代码: <div class="form-group"> <label for="exampleInputFile">文章封面</label> <input type="file" name="file" id="file"> <div class="thumbnail-waper"> <img class="img-thumbnail" src="" id="thumb" width="100"> </div> </div>服务器端代码:{dotted startColor="#ff6c6c" endColor="#1989fa"/}// 引入formidable模块 const formidable = require('formidable'); // 引入路径模块 const path = require('path'); // 第三种写法需要引入这个 const {IncomingForm} = require('formidable'); module.exports = (req, res) => { //1.第一种写法 const form = new formidable.IncomingForm(); form.multiples = true, // 设置上传文件的保存路径 form.uploadDir = path.join(__dirname,'public','uploads'); // 保留原来文件扩展名 测试没有生效 form.keepExtensions = true; // 2.第二种写法 const form = formidable({ multiples:true, uploadDir: path.join(__dirname, "../", "../", 'public', 'uploads'), keepExtensions: true }) // 3.第三种写法 const form = IncomingForm({ multiples:true, uploadDir: path.join(__dirname, "../", "../", 'public', 'uploads'), keepExtensions: true }) form.parse(req,(err,fields,files)=>{}) }第二种,第三种都可以保留文件扩展名图片上传的预览效果:{dotted startColor="#ff6c6c" endColor="#1989fa"/} var file = document.querySelector('#file'); file.onchange = function(){ // 1.创建文件读取对象 var reader = new FileReader(); // 2.读取文件 reader.readAsDataURL(this.files[0]) console.log(this.files[0]); // 3.监听onload事件 reader.onload = function(){ console.log(reader.result); $('#thumb').attr('src',reader.result) } }
2022年09月14日
55 阅读
0 评论
0 点赞
1
...
3
4