首页
关于
留言
友情链接
推荐
粽子SHOP
Search
1
粽子SHOP即时到账 微信插件(MyWechat)
5,574 阅读
2
PS人像美颜插件 DR5.0增强版 一键人像磨皮/美白/高低频
4,927 阅读
3
Windows Navicat Premium16.3.2 免安装 绿色汉化版
4,360 阅读
4
彩虹聚合登录API源码/上元二开 QQ互联分发
3,639 阅读
5
LayuiTable导出所有数据,无需修改后端代码
2,759 阅读
程序源码
PHP源码
HTML源码
精品程序
易语言源码
Python源码
活动资讯
技术分享
实用代码
实用工具
学习笔记
PHP笔记
前端笔记
uniapp
Python
逆向
docker
Dify
thinkPHP
登录
Search
标签搜索
python
docker
typescript
swoole
thinkphp6
php
R语言
composer
composer命令
tp6
tp中间件
vue
node.js
粽子shop
thinkSwoole
微信监控
dify
timi
王者荣耀
王者荣耀ios扫码
烂掉的ay
累计撰写
109
篇文章
累计收到
1,267
条评论
首页
栏目
程序源码
PHP源码
HTML源码
精品程序
易语言源码
Python源码
活动资讯
技术分享
实用代码
实用工具
学习笔记
PHP笔记
前端笔记
uniapp
Python
逆向
docker
Dify
thinkPHP
页面
关于
留言
友情链接
推荐
粽子SHOP
搜索到
109
篇与
EN
的结果
2023-09-01
Pycharm运行js文件、配置Node.js 详细教程
教程为Mac系统,windows系统大同小异安装node.js没有安装的先去下载安装,配置好环境变量在终端查询版本,出现版本号即表示成功在Pycharm中安装node插件在Pycharm中配置node.js一般都会自动添加路径,如果没有自己配置即可创建 1.js 文件,输入 console.log("123") ,右键运行 1.js即可在控制台看到代码输出
2023年09月01日
429 阅读
0 评论
0 点赞
2023-09-01
设计模式 - 工厂模式
简单工厂模式(Simple Factory Pattern)简单工厂模式是指由一个工厂类根据传入的参数决定创建哪一种产品类的实例。这一模式虽然简单,但它违背了开放封闭原则,因为每添加一个新产品就需要修改工厂类逻辑代码。工厂方法模式(Factory Method Pattern)工厂方法模式是指将具体产品的创建延迟到具体的工厂子类中进行,由抽象工厂定义产品对象的创建接口,而具体工厂负责产生具体的产品。抽象工厂模式(Abstract Factory Pattern)抽象工厂模式是指针对一系列相关或相互依赖的产品组成的一个产品族,提供一个统一的接口来创建这些产品。抽象工厂模式可以用于创建一组具有同样约束的产品,同样,这一模式也存在着开放封闭原则问题,新增产品可能导致所有相关工厂类的修改。普通的实现interface Car { public function getModel(); } class BMW implements Car{ public function getModel() { return "BMW"; } } class Audi implements Car{ public function getModel() { return "Audi"; } } class CarFactory { public static function createCar($type) { switch ($type) { case "BMW": return new BMW(); case "Audi": return new Audi(); default: throw new Exception("Invalid car type specified."); } } } $car1 = CarFactory::createCar("BMW"); echo $car1->getModel(); // BMW $car2 = CarFactory::createCar("Audi"); echo $car2->getModel(); // Audi在上面的代码中,我们定义了两个汽车类,BMW和Audi。我们还定义了一个CarFactory类,该类根据传递给它的参数返回所需的汽车类的实例。 我们可以使用这个工厂类轻松创建不同类型的汽车对象。在这个例子中,我们使用工厂模式创建了一个BMW实例和一个Audi实例。更加优雅的实现但是上面的代码用到了Switch显然不太优雅,我们可以借助PHP中的反射更好的实现工厂模式。反射可以为我们提供在运行时动态加载类的机制,这意味着我们可以使用反射来自动获取类名并实例化对象,而不需要在工厂类中显式指定要创建的类的名称。请看下面的代码。。<?php // 创建一个工厂类 class CarFactory { public static function createCar($carType) { $className = ucfirst($carType).'Car'; // 构建类名 if(class_exists($className)) { // 如果类存在 $reflectionClass = new ReflectionClass($className); // 创建反射类 return $reflectionClass->newInstance(); // 返回实例化后的对象 } throw new Exception('Invalid car type.'); // 如果类不存在则抛出异常 } } // 定义两个车型的类 class BenzCar {} class BMWCar {} // 调用工厂方法创建对象 $benz = CarFactory::createCar('benz'); $bmw = CarFactory::createCar('bmw');上述代码中,我们使用ReflectionClass类来反射获取类,然后使用newInstance方法实例化对象。这样,当有新的车型类被添加到系统中时,我们无需修改工厂类的代码,仍然可以使用相同的方法进行实例化。
2023年09月01日
260 阅读
0 评论
0 点赞
2023-08-23
2023可用Jetbrains激活 支持win、mac、linux
某宝售卖的Jetbrains激活教程+工具,附带详细教程以及常见问题解决方法!支持windows、mac、linux。包括idea,clion,pycharm,datagrip等软件仅供学习参考,支持正版: https://www.jetbrains.com/{cloud title="夸克网盘" type="default" url="https://pan.quark.cn/s/d7674cad5f32" password="ApFR"/}
2023年08月23日
522 阅读
0 评论
1 点赞
2023-08-16
Vue3 将字符串下载为txt文件
vue 前端有一段字符串,然后点击按钮,将字符串保存到 txt 文件下载到电脑。首先需要安装一下依赖:npm install file-saver --save安装完成,在需要下载txt文件的页面引入一下库import { saveAs } from 'file-saver';点击按钮执行下面保存 txt 文件的代码:downloadTxt() { let str = 'Vue字符串保存到txt文件下载到电脑案例' let strData = new Blob([str], { type: 'text/plain;charset=utf-8' }); saveAs(strData, "测试文件下载.txt"); },
2023年08月16日
266 阅读
0 评论
0 点赞
2023-06-03
uniapp uniCloud登陆 使用uni-id-co登陆
可以在onload中调用,也可以事件调用,不跳转到uni-id-pages提供的页面,使用uniCloud uni-Id登陆。//微信小程序 const uniIdCo = uniCloud.importObject('uni-id-co') uni.login({ provider: 'weixin', success: function(loginRes) { if (loginRes.code) { uniIdCo.loginByWeixin({ code:loginRes.code }).then(res=>{ if(res.errCode == 0){ mutations.updateUserInfo() } }) } }, fail(err) { uni.showModal({ content: err.message || '请求服务失败', showCancel: false }) } });token过期判断let token_expired = uni.getStorageSync('uni_id_token_expired')||0 let currTime = new Date().getTime(); let hostUserInfo = uni.getStorageSync('uni-id-pages-userInfo')||{} // token是否过期 if(token_expired < currTime) hostUserInfo = {} const data = { userInfo: hostUserInfo, hasLogin: Object.keys(hostUserInfo).length != 0 }
2023年06月03日
622 阅读
0 评论
0 点赞
2023-06-01
uniapp+php 微信小程序登录 获取openid
uniapp+php 微信小程序登录 获取openid前端 uni.login(wx.login) 获取code后端 jscode2session 验证code并获取openid参考、非完整demouniapp代码:const BASE_URL = "http://127.0.0.1/api/"; //接口地址 /** * 封装请求 */ export const myRequest = (options)=>{ return new Promise((resolve,rejecj)=>{ uni.request({ url:BASE_URL + options.url, method:options.method || 'GET', data:options.data || {}, dataType:"json", header: { "Content-Type": "application/x-www-form-urlencoded", }, success: (res) => { resolve(res) }, fail: (err) => { uni.showToast({ title:'请求接口失败', icon:"error" }) rejecj(err) } }) }) } /** * 微信小程序登录并获取用户信息 */ export const wxlogin = ()=>{ return new Promise((resolve,rejecj)=>{ uni.login({ provider: 'weixin', //使用微信登录 success: function (loginRes) { if(loginRes.code){ let data = {code:loginRes.code}; myRequest({ url:"api.php?act=getWxInfo", data, method:"POST" }).then(res=>{ resolve(res) }).catch(err=>{ rejecj(err) }); } },fail(err) { rejecj(err) } }); }) }php代码:接收到code后获取openid /** * jscode2session * 通过 wx.login 接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程 * https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-login/code2Session.html */ public function jscode2session($code = ""){ $api = "https://api.weixin.qq.com/sns/jscode2session?appid={$this->appid}&secret={$this->secret}&js_code={$code}&grant_type=authorization_code"; $reslut = file_get_contents($api); $reslut_arr = json_decode($reslut,true); if(!is_array($reslut_arr)){ return ['errcode' => -9999,'errmsg' => $reslut]; } return $reslut_arr; }
2023年06月01日
521 阅读
0 评论
0 点赞
2023-05-18
粽子SHOP 虚拟卡商与微商的解决方案
粽子SHOP是一款虚拟卡商与实物微商的一站式解决方案程序。它拥有物品展示与自动收款的功能,帮助您更便捷智能的展开工作,,轻松获得行业竞争优势。{mtitle title="介绍"/}核心功能虚拟卡密自动发卡实物物流跟踪SKU多规格设置购物车选购付款多模板一键切换、模板风格自由搭配多等级用户制度、消费自动升级、推广、提现可关联商品的文章系统SUP货源对接(直客、卡易信、同系统)支付功能易支付官方支付当面付自带即时到账系统其他阿里云OSS图片存储彩虹聚合快捷登陆邮件通知附件管理运费设置自定义下单输入框后台一键更新{mtitle title="获取"/}购买http://shop.0en.cn/下载http://shop.auth.qzoner.cn/售后源码更新解答程序使用相关问题(不包括服务器问题)免费更换授权域名(自助修改)不可转让授权使用规范与免责声明禁止上架违法违规内容禁止用于违法违规途径一经查实立马封禁(不解封、不退款)产生的法律纠纷自行承担模板预览{tabs}{tabs-pane label="模板1"}{/tabs-pane}{tabs-pane label="模板2"}{/tabs-pane}{tabs-pane label="模板3"}{/tabs-pane}{tabs-pane label="模板4"}{/tabs-pane}{tabs-pane label="模板5"}{/tabs-pane}{/tabs}后台功能预览{tabs}{tabs-pane label="后台首页"}{/tabs-pane}{tabs-pane label="主题配色后台修改"}{/tabs-pane}{tabs-pane label="自带即时到账功能"}{/tabs-pane}{tabs-pane label="多级分类"}{/tabs-pane}{tabs-pane label="订单管理"}{/tabs-pane}{tabs-pane label="订单分析统计"}{/tabs-pane}{tabs-pane label="用户充值"}{/tabs-pane}{tabs-pane label="用户中心"}{/tabs-pane}{/tabs}
2023年05月18日
1,176 阅读
11 评论
2 点赞
2023-05-09
Python 调用执行js代码库 execjs
## 介绍 execjs库的作用和重要性是在Python中执行JavaScript代码。它允许开发者在Python环境下调用JavaScript逻辑和功能,从而实现Python与JavaScript之间的交互。通过execjs,Python开发者可以利用JavaScript的强大功能和现有库,拓展Python应用的能力,实现跨语言的灵活互动,以及进行前后端开发的联动与测试。因此,execjs在Python开发中具有重要的功能和价值。安装PyExecJSpip install PyExecJS -i https://pypi.tuna.tsinghua.edu.cn/simple/创建1.js文件function foo(num){ return num*100; }创建1.py文件 import execjs # 读取js代码 with open("1.js") as f: js_code = f.read() f.close() # 对js代码编译 js_compile = execjs.compile(js_code) # 调用 js_compile.call("函数名",参数) ret = js_compile.call("foo",12.12) print(ret)执行1.py文件
2023年05月09日
294 阅读
0 评论
0 点赞
2023-05-02
PHP-Swoole 异步执行任务 task
在 Server 程序中如果需要执行很耗时的操作,比如一个聊天服务器发送广播,Web 服务器中发送邮件。如果直接去执行这些函数就会阻塞当前进程,导致服务器响应变慢。Swoole 提供了异步任务处理的功能,可以投递一个异步任务到 TaskWorker 进程池中执行,不影响当前请求的处理速度。<?php $http = new Swoole\Http\Server('0.0.0.0', 9501); //设置异步任务的工作进程数量 $http->set([ 'task_worker_num' => 4 ]); ////此回调函数在worker进程中执行 $http->on('Request', function ($request, $response) use($http) { echo "来了!".PHP_EOL; $response->header('Content-Type', 'text/html; charset=utf-8'); $http->task("广播任务"); $http->task("列队任务"); $http->task("邮件任务"); $response->end('<h1>Hello Swoole. #' . rand(1000, 9999) . '</h1>'); }); //处理异步任务(此回调函数在task进程中执行) $http->on('Task', function ($serv, $task_id, $reactor_id, $data) { $sle = rand(1,5); echo "New AsyncTask[id={$task_id}] sleep:{$sle}".PHP_EOL; sleep($sle); //返回任务执行的结果 $serv->finish("{$data} -> OK"); }); //处理异步任务的结果(此回调函数在worker进程中执行) $http->on('Finish', function ($serv, $task_id, $data) { echo "AsyncTask[{$task_id}] Finish: {$data}".PHP_EOL; }); $http->start(); 在终端中运行该php文件 php test.php 在浏览器访问 IP:9501 即可。浏览器显示 <h1>Hello Swoole. #8511</h1> 终端显示:当 任务数量 大于 异步任务的工作进程数量 时在上面设置的 异步任务的工作进程数量 = 4,当执行的任务数量多于4时,是怎样的呢?$http->on('Request', function ($request, $response) use($http) { echo "来了!".PHP_EOL; $response->header('Content-Type', 'text/html; charset=utf-8'); //6个任务 $http->task("广播任务"); $http->task("列队任务"); $http->task("邮件任务"); $http->task("广播任务2"); $http->task("列队任务2"); $http->task("邮件任务2"); $response->end('<h1>Hello Swoole. #' . rand(1000, 9999) . '</h1>'); });执行结果
2023年05月02日
294 阅读
0 评论
0 点赞
2023-05-01
PHP Swoole小试牛刀
文档https://wiki.swoole.com/#/environment安装安装太麻烦了,直接在宝塔里面选择php版本,安装swoole扩展查看当前php命令版本php -v如果不是刚刚安装swoole的版本,就设置一下ln -sf /www/server/php/74/bin/php /usr/bin/php最后查看swoole有没有安装成功php -mTCP协议创建 服务端test1.php、客户端test1.php{tabs}{tabs-pane label="test1.php"}<?php //创建Server对象,监听 127.0.0.1:9501 端口。 $server = new Swoole\Server('127.0.0.1', 9501); //监听连接进入事件。 $server->on('connect', function ($server, $fd) { echo "客户端连接上了.\n"; }); //监听数据接收事件。 $server->on('receive', function ($server, $fd, $reactor_id, $data) { echo "客户端发送过来的消息:{$data} \n"; $server->send($fd, "收到{$fd}的消息:{$data} \n"); }); //监听连接关闭事件。 $server->on('close', function ($server, $fd) { echo "客户端离开.\n"; }); //启动服务器 $server->start();{/tabs-pane}{tabs-pane label="test2.php"}<?php //创建客户端 $client = new Swoole\Client(SWOOLE_SOCK_TCP); if (!$client->connect('127.0.0.1', 9501, -1)) { exit("connect failed. Error: {$client->errCode}\n"); } $client->send("hello world\n"); echo $client->recv(); $client->close();{/tabs-pane}{/tabs}创建终端执行命令,运行服务端php test1.php运行结果客户端连接上了. 客户端发送过来的消息:hello world 客户端离开.再创建终端执行命令,运行客户端php test2.php运行结果收到1的消息:hello world UDP协议{tabs}{tabs-pane label="test1.php 服务端"}<?php /** * UDP协议 */ //创建Server对象 $server = new Swoole\Server('127.0.0.1', 9501,SWOOLE_PROCESS, SWOOLE_SOCK_UDP); //监听数据接收事件 $server->on('Packet', function ($server, $data, $clientInfo) { echo $data; echo "\n"; var_dump($clientInfo); echo "\n"; $server->sendto($clientInfo['address'], $clientInfo['port'], "Server:{$data}"); }); //启动服务器 $server->start();{/tabs-pane}{tabs-pane label="test2.php 客户端"}<?php $client = new Swoole\Client(SWOOLE_SOCK_UDP,SWOOLE_SOCK_SYNC); $client->sendto('127.0.0.1', 9501,"hello world\n"); echo $client->recv(); $client->close(); /* $client = new Swoole\Client(SWOOLE_SOCK_UDP); $client->connect('127.0.0.1', 9501); $client->send("hello world\n"); echo $client->recv(); $client->close(); */{/tabs-pane}{/tabs}同样的先启动服务端test1.php,再启动客户端test2.php访问服务端php test1.php php test2.php{message type="success" content="网络协议是计算机网络中进行交换数据而建立的规则、标准、或约定的集合。"/}TCP/UDP协议区别TCP协议:面向连接,发送数据前需要连接提供可靠的服务,通过tcp协议传输数据,不丢失,无差错,不重复且按序到达对系统资源要求较多UDP协议:无连接,发送数据前无需连接udp协议尽力交付,但不保证交付具有较好的实时性,工作效率比tcp高。适用于高速传输和实时性较高的通信和广播通信对系统资源要求较少{dotted startColor="#ff6c6c" endColor="#1989fa"/}Http协议<?php $http = new Swoole\Http\Server('0.0.0.0', 9502); $http->on('Request', function ($request, $response) { echo "来了!!"; $response->header('Content-Type', 'text/html; charset=utf-8'); $response->end('<h1>Hello Swoole. #' . rand(1000, 9999) . '</h1>'); }); $http->start();浏览器访问 IP:端口 websocket{tabs}{tabs-pane label="websocket.php"}<?php //websocket.php //创建WebSocket Server对象, $ws = new Swoole\WebSocket\Server('0.0.0.0', 9501); //监听WebSocket连接打开事件 $ws->on('Open', function ($ws, $request) { $ws->push($request->fd, "hello, {$request->fd},welcome\n"); }); //监听WebSocket消息事件 $ws->on('Message', function ($ws, $frame) { echo "Message: {$frame->data}\n"; $ws->push($frame->fd, "server: {$frame->data}"); }); //监听WebSocket连接关闭事件 $ws->on('Close', function ($ws, $fd) { echo "client-{$fd} is closed\n"; }); $ws->start();{/tabs-pane}{tabs-pane label="index.html"}<!doctype html> <html> <head> <meta charset="utf-8"> <title>恭喜,创建成功!</title> </head> <body> <script> var wsServer = 'ws://IP:9501'; var websocket = new WebSocket(wsServer); websocket.onopen = function (evt) { console.log("Connected to WebSocket server."); }; websocket.onclose = function (evt) { console.log("Disconnected"); }; websocket.onmessage = function (evt) { console.log('Retrieved data from server: ' + evt.data); }; websocket.onerror = function (evt, e) { console.log('Error occured: ' ,evt); }; </script> </body> </html>{/tabs-pane}{/tabs}运行 php websocket.php 打开浏览器,F12并访问 index.html websocket在线测试工具:http://www.websocket-test.com/
2023年05月01日
406 阅读
0 评论
0 点赞
1
...
4
5
6
...
11