PHP网约车H5源码改造指南:路由重构、状态机与微信V3支付落地
简介这是一套基于PHP开发的H5网约车平台完整源码面向Web全栈开发者、毕业设计学生及中小型出行类项目创业者提供乘客端与司机端双角色功能闭环解决在线叫车、订单调度、实时定位、在线支付与服务评价等核心业务场景。资源共2000个文件涵盖442个JavaScript前端交互逻辑、207个HTML页面结构、169个JSON接口定义、75个CSS样式文件、36个SQL数据库脚本及591个Markdown文档说明包体大小为147.04MB结构清晰、模块解耦便于二次开发与功能扩展。已有292人学习下载适合深入理解O2O类Web应用架构设计、PHP后端高并发处理机制及H5跨端适配实践。源码内置SSL加密传输、防SQL注入防护、常用地址自动保存、消息实时推送等生产级特性并附带Symfony调试组件与Bootstrap多版本样式资源可直接部署验证业务流程与安全策略。1. 这不是个“拿来就能上线”的H5打车源码而是一套需重写路由、重构状态管理、重配支付回调的PHP双端骨架你搜到这个“PHP网约车H5打车系统源码 分为乘客端和司机端.zip”大概率是某外包团队2018–2020年交付的定制项目残留包或某培训机构压缩打包的毕业设计合集。它不是SaaS平台开箱即用的成品也不是LaravelVue那种现代工程化脚手架——它本质是一套基于原生PHPjQuery少量Bootstrap的单页应用SPA雏形前后端未分离所有逻辑挤在/index.php?mpassengeraorder这类URL里session全靠$_SESSION硬扛支付回调裸写file_get_contents(php://input)解析微信通知。我去年接手过3个同源压缩包无一例外乘客下单后司机收不到推送WebSocket缺失、微信JSAPI签名总失败时间戳与noncestr生成逻辑错乱、订单状态机跳变status2→status5跳过status3验车环节。它适合两类人想快速理解传统网约车核心状态流转的新手后端或需要在低预算、无云服务、仅有一台CentOS服务器上跑通最小闭环的本地出行服务商。不适合直接部署生产但极适合作为“状态驱动型业务系统”的教学切片——把订单从创建、匹配、接单、行程中、完成、评价这条链路一行行抠出来重写。2. 拆包即踩坑从解压到能跑通登录的4个硬性前置动作这套源码的致命问题是环境强耦合。它默认要求PHP 7.2 MySQL 5.6 Apache mod_rewrite开启 allow_url_fopenOn而当前主流云服务器镜像多为PHP 8.1、MySQL 8.0直接unzip后php -S会报17处致命错误。必须先做四件事缺一不可。2.1 精确锁定PHP版本并禁用不兼容语法源码中大量使用mysql_connect()PHP 7.0已废弃、create_function()PHP 7.2移除、$arr[key]未判空直接取值PHP 8.0严格模式报Warning。不能简单降级PHP全局版本——这会影响其他业务。我的做法是在项目根目录新建php.ini.local仅对本项目生效; php.ini.local —— 放在项目根目录Apache需通过SetEnv PHP_INI_SCAN_DIR指定路径 error_reporting E_ALL ~E_DEPRECATED ~E_NOTICE display_errors On allow_url_fopen On extensionmysqli extensioncurl date.timezone Asia/Shanghai ; 关键关闭严格模式兼容老代码 zend.assertions -1提示Apache需在虚拟主机配置中加SetEnv PHP_INI_SCAN_DIR /path/to/your/projectNginx则需在fastcgi_param中指定-c /path/to/your/project/php.ini.local。不配这个phpinfo()里看不到生效。2.2 修复MySQL连接层从mysql_*到mysqli的最小改造源码中所有数据库操作散落在各模块文件里如/driver/login.php中// 原始代码PHP 7.2直接Fatal Error $conn mysql_connect($host, $user, $pass); mysql_select_db($db, $conn); $result mysql_query(SELECT * FROM driver WHERE phone$phone);必须全局替换为mysqli面向过程写法不改类结构避免牵一发而动全身// 替换后保留原有变量名最小侵入 $conn mysqli_connect($host, $user, $pass, $db); if (!$conn) die(DB Connect Error: . mysqli_connect_error()); $result mysqli_query($conn, SELECT * FROM driver WHERE phone . mysqli_real_escape_string($conn, $phone) . );参数说明mysqli_real_escape_string()必须包裹所有用户输入字段否则SQL注入漏洞直接暴露。别信注释里写的“已过滤”我审计过12个同源包9个漏了phone和token字段的转义。2.3 重写URL路由把index.php?mxxxayyy变成真实路径源码依赖mod_rewrite将/passenger/order重写为index.php?mpassengeraorder但.htaccess里规则写死了RewriteBase /而实际部署常放在子目录如/taxi/。直接导致所有AJAX请求404。解决方案放弃.htaccess用PHP内置路由兜底。在index.php顶部插入?php // index.php 开头插入 —— 统一入口路由 $request_uri parse_url($_SERVER[REQUEST_URI], PHP_URL_PATH); $routes [ /passenger/login mpassengeralogin, /passenger/order mpassengeraorder, /driver/map mdriveramap, /api/order/status mapiastatus ]; $path rtrim($request_uri, /); if (isset($routes[$path])) { $_GET array_merge($_GET, parse_str($routes[$path], $tmp)); include index.php; exit; } // 兜底静态资源直出 if (preg_match(/\.(js|css|png|jpg|gif|woff|ttf)$/i, $request_uri)) { return false; // 让Web服务器处理 } // 其他路径返回404 http_response_code(404); echo Route not found; exit;逻辑说明此方案绕过Apache重写所有请求先经PHP判断路径再模拟$_GET参数注入。好处是Nginx/Apache通用坏处是每次请求多一次字符串匹配——但对日活500的本地车队系统TPS压测显示延迟增加0.8ms可接受。2.4 补全司机端定位坐标转换高德坐标系纠偏必须硬编码源码中司机上报位置用navigator.geolocation获取WGS84坐标但直接存入MySQL的POINT字段导致地图上司机图标集体偏移300–500米典型GCJ-02偏移。它没调用高德API做纠偏而是把lat/lng当百度坐标存——这是最危险的玄学操作。必须在司机端JS里插入纠偏函数// driver/js/location.js 中 replace 原有 getPos() 函数 function getPos() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition( function(pos) { const wgs84 [pos.coords.longitude, pos.coords.latitude]; // 高德GCJ-02纠偏开源算法精度±2米 const gcj02 wgs84_to_gcj02(wgs84[0], wgs84[1]); // 发送纠偏后坐标 $.post(/api/driver/update_pos, { lng: gcj02[0], lat: gcj02[1], token: getCookie(driver_token) }); } ); } } // wgs84_to_gcj02 函数复制粘贴即可无需外部库 function wgs84_to_gcj02(lng, lat) { const a 6378245.0; const ee 0.006693421622965943; const dLat transformLat(lng - 105.0, lat - 35.0); const dLng transformLng(lng - 105.0, lat - 35.0); const radLat lat / 180.0 * Math.PI; const magic Math.sin(radLat); const sqrtMagic Math.sqrt(magic); const dLat2 -100.0 2.0 * dLat 3.0 * sqrtMagic; const dLng2 300.0 dLng 2.0 * sqrtMagic; return [lng dLng2 * 0.001, lat dLat2 * 0.001]; } // transformLat/transformLng 函数略源码包内driver/js/common.js已有完整实现参数说明wgs84_to_gcj02()是公开算法非调用高德API无Key限制、无QPS限制。别用网上那些“调用高德逆地理编码API再返回坐标”的方案——那会把司机定位请求卡在API队列里导致位置更新延迟超20秒。3. 乘客端下单流程从表单提交到订单生成的7层校验链乘客端看似一个/passenger/order页面实则背后横跨7层校验前端JS防重复提交 → PHP输入过滤 → 地理围栏判定 → 司机池实时筛选 → 价格预计算 → 库存锁防止超卖→ 订单落库消息广播。漏掉任何一层都会出现“乘客付了钱司机没收到单”这种生产事故。3.1 前端防抖Token双保险解决F5刷新重复下单原始源码只用onclickreturn false阻止按钮多次点击但用户长按Enter或用Postman重放请求仍能刷单。必须加服务端Token// passenger/js/order.js function submitOrder() { const token getCookie(order_token) || ; if (!token) { alert(请刷新页面重试); return; } $.post(/api/order/create, { token: token, from: $(#from).val(), to: $(#to).val(), // ...其他字段 }, function(res) { if (res.code 0) { // 成功后立即清空Token防止重放 document.cookie order_token; expiresThu, 01 Jan 1970 00:00:00 GMT; path/;; } }); } // 页面加载时生成Token $(function() { $.get(/api/token/generate, function(res) { if (res.token) { document.cookie order_token res.token ; path/;; } }); }// api/token/generate.php session_start(); $token bin2hex(random_bytes(16)); $_SESSION[order_token] $token; echo json_encode([code0, token$token]);逻辑说明Token存在Session里每次下单前校验并销毁。比UUID更安全——UUID可预测Session ID由PHP生成且绑定IPUserAgent。3.2 地理围栏硬编码用MySQL 5.7的ST_Contains做实时圈选源码把城市边界写死在config.php里一堆经纬度数组既难维护又无法做空间查询。正确做法是建city_boundary表存POLYGONCREATE TABLE city_boundary ( id int(11) NOT NULL AUTO_INCREMENT, city_name varchar(50) DEFAULT NULL, boundary polygon NOT NULL, PRIMARY KEY (id), SPATIAL KEY boundary (boundary) ) ENGINEInnoDB; -- 插入上海外环线简化版 INSERT INTO city_boundary (city_name, boundary) VALUES (shanghai, ST_GeomFromText(POLYGON((121.1 31.1,121.2 31.1,121.2 31.2,121.1 31.2,121.1 31.1))) );下单时校验// api/order/create.php $point POINT({$lng} {$lat}); $sql SELECT id FROM city_boundary WHERE ST_Contains(boundary, GeomFromText($point)); $result mysqli_query($conn, $sql); if (mysqli_num_rows($result) 0) { die(json_encode([code1, msg不在服务范围内])); }参数说明ST_Contains()是MySQL原生空间函数比PHP循环判断快10倍以上。注意GeomFromText()的坐标顺序是lng lat不是lat lng反了会永远返回空。3.3 司机池实时筛选用Redis Sorted Set实现距离优先派单源码用SELECT * FROM driver WHERE status1 ORDER BY distance LIMIT 10查司机但distance字段是静态值没实时更新。正确方案是司机APP每10秒上报位置PHP写入Redis Sorted Setscore为距离单位米member为driver_id// driver/api/update_pos.php $driver_id $_POST[driver_id]; $lng floatval($_POST[lng]); $lat floatval($_POST[lat]); // 计算到市中心假设距离单位米 $center_lng 121.47; $center_lat 31.23; $distance round(6371000 * acos( cos(deg2rad($lat)) * cos(deg2rad($center_lat)) * cos(deg2rad($center_lng) - deg2rad($lng)) sin(deg2rad($lat)) * sin(deg2rad($center_lat)) )); // 写入Redis有效期2分钟 $redis-zAdd(driver:online, $distance, $driver_id); $redis-expire(driver:online, 120);下单时取最近3个司机// api/order/create.php $drivers $redis-zRange(driver:online, 0, 2); // score最小的3个 if (empty($drivers)) die(json_encode([code2, msg暂无可用司机]));避坑点Redis Sorted Set的score必须是数字不能是字符串。我见过有人写$redis-zAdd(driver:online, $distance, $driver_id)导致排序失效——PHP自动把字符串转成0。4. 司机端接单黑匣子WebSocket心跳、订单状态机、离线补偿的三重保障司机端最大的痛点不是UI丑而是状态不同步乘客看到“司机已接单”司机手机还显示“待接单”或者司机划走APP订单就石沉大海。这源于源码用轮询setInterval拉取订单网络抖动时必然丢帧。4.1 用Workerman实现轻量级WebSocket网关不推荐用Swoole需编译扩展运维复杂Workerman纯PHPcomposer require workerman/workerman即可// ws-server.php use Workerman\Worker; use Workerman\WebServer; use Workerman\Lib\Timer; require_once ./Workerman/Autoloader.php; $ws_worker new Worker(websocket://0.0.0.0:2346); $ws_worker-count 1; $ws_worker-onMessage function($connection, $data) { $msg json_decode($data, true); switch($msg[type]) { case bind: $connection-uid $msg[uid]; // 司机ID $connection-driver_type $msg[type]; // driver break; case ack_order: // 司机点击“确认接单” $order_id $msg[order_id]; // 更新数据库状态 mysqli_query($GLOBALS[conn], UPDATE orders SET status2 WHERE id$order_id); // 广播给乘客 broadcastToPassenger($order_id, [status2]); break; } }; Worker::runAll(); function broadcastToPassenger($order_id, $data) { global $connections; // 查乘客连接实际应查Redis缓存 $passenger_conn getPassengerConn($order_id); if ($passenger_conn) { $passenger_conn-send(json_encode($data)); } }逻辑说明Workerman监听2346端口司机APP用new WebSocket(ws://your-domain.com:2346)直连。bind阶段绑定司机UID后续所有消息带UID上下文。比轮询省90%流量延迟从3–8秒降至200ms内。4.2 订单状态机用MySQL事务状态转移表防脏写源码用UPDATE orders SET status2 WHERE id123硬更新高并发下会出现“司机A和B同时点接单订单状态被覆盖为2但只有A收到通知”。必须用状态机约束CREATE TABLE order_status_flow ( from_status tinyint NOT NULL, to_status tinyint NOT NULL, allowed tinyint(1) DEFAULT 1, PRIMARY KEY (from_status,to_status) ) ENGINEInnoDB; INSERT INTO order_status_flow VALUES (1,2,1), -- 待接单→已接单 (2,3,1), -- 已接单→行程中 (3,4,1), -- 行程中→已完成 (1,5,1); -- 待接单→已取消接单时// api/driver/accept.php $order_id intval($_POST[order_id]); $driver_id $_SESSION[driver_id]; // 用事务状态校验双重保险 mysqli_begin_transaction($conn); $result mysqli_query($conn, UPDATE orders SET status2, driver_id$driver_id WHERE id$order_id AND status1 ); if (mysqli_affected_rows($conn) 0) { mysqli_rollback($conn); die(json_encode([code1, msg订单状态已变更请刷新])); } mysqli_commit($conn);参数说明WHERE status1是关键确保只更新当前为“待接单”的订单。配合order_status_flow表后续可扩展为状态变更审计日志。4.3 离线补偿机制司机断网后订单自动转派司机APP断网时WebSocket连接断开但订单还在“待接单”状态。源码没处理导致乘客干等。必须加定时任务补偿# crontab -e */2 * * * * /usr/bin/php /var/www/taxi/cli/compensate.php /var/log/compensate.log 21// cli/compensate.php // 查找2分钟前创建、状态仍为1、且对应司机WebSocket已断开的订单 $sql SELECT o.id, o.from, o.to FROM orders o JOIN driver d ON o.driver_id d.id WHERE o.status 1 AND o.create_time DATE_SUB(NOW(), INTERVAL 120 SECOND) AND d.last_online DATE_SUB(NOW(), INTERVAL 30 SECOND); $result mysqli_query($conn, $sql); while ($row mysqli_fetch_assoc($result)) { // 转派给其他司机复用3.3节Redis逻辑 $new_driver $redis-zRange(driver:online, 0, 0)[0] ?? null; if ($new_driver) { mysqli_query($conn, UPDATE orders SET status1, driver_idNULL WHERE id{$row[id]}); // 通知新司机 notifyDriver($new_driver, $row[id]); } }避坑点last_online字段必须在司机心跳时实时更新不能依赖WebSocket onclose事件——该事件在APP退后台时不会触发。正确做法是司机APP每30秒发一次心跳包PHP更新driver.last_online NOW()。5. 支付与结算微信JSAPI V3签名、分账、发票的落地细节源码里的支付模块是微信JSAPI V2老接口2023年已全部下线。必须升级V3且要处理分账司机分70%平台收30%、电子发票乘客开票、退款原子性。5.1 微信JSAPI V3签名用官方SDK而非手搓curl别信网上那些“50行代码搞定V3签名”的博客——他们漏了证书序列号校验、响应验签、敏感字段AES加密。直接用wechatpay-phpSDKcomposer require wechatpay/wechatpay// passenger/api/pay.php use WeChatPay\WeChatPay; $config [ app_id wx1234567890, mch_id 1234567890, mch_cert_pem file_get_contents(/path/to/apiclient_cert.pem), mch_key_pem file_get_contents(/path/to/apiclient_key.pem), notify_url https://your-domain.com/api/pay/notify, ]; $wechat new WeChatPay($config); $result $wechat-transactionsJsapi([ description 网约车订单 # . $order_id, out_trade_no $order_id, amount [total $price * 100, currency CNY], payer [openid $openid], scene_info [device_id $_SERVER[HTTP_USER_AGENT]] ]); echo json_encode([code0, data$result[payment]]);参数说明apiclient_cert.pem和apiclient_key.pem必须从微信商户平台下载且mch_key_pem内容开头必须是-----BEGIN PRIVATE KEY-----不是-----BEGIN RSA PRIVATE KEY-----否则签名失败。5.2 分账先授权再分最后查询结果V3分账需司机提前在微信开放平台授权源码没做这步。生产环境必须司机首次登录时跳转微信OAuth2获取authorization_code后端用code换取access_token调用/v3/merchant/fundauth/authorize接口授权分账下单成功后调用/v3/merchant/fund/transfers分账// driver/api/auth_fund.php // 步骤1生成授权链接 $auth_url https://mp.weixin.qq.com/cgi-bin/authorize?appid{$appid}redirect_uri . urlencode(https://your-domain.com/driver/callback) . response_typecodescopesnsapi_base; // 步骤2回调地址处理code $code $_GET[code]; $token $wechat-getAccessToken($code); // 封装好的方法 $auth_result $wechat-fundAuthAuthorize([ appid $appid, sub_mchid $driver_mchid, // 司机子商户号 authorize_scene MERCHANT_FUND_TRANS, fund_relation_type MERCHANT_FUND_TRANS ]);避坑点分账接口要求sub_mchid必须是微信二级商户号不是普通商户号。个人司机无法申请必须让司机注册个体户并开通微信支付商户。5.3 电子发票乘客开票后平台自动同步给司机乘客在H5端点击“开发票”调用微信/v3/ecommerce/fill-invoice接口但源码没把发票信息同步给司机。需在发票开具成功后主动推送// passenger/api/invoice.php $result $wechat-fillInvoice([ sub_mchid 1234567890, transaction_id $transaction_id, invoice_data $invoice_data ]); if ($result[code] 0) { // 同步发票信息到司机端 $driver_id getOrderDriver($order_id); $redis-publish(invoice:channel, json_encode([ order_id $order_id, invoice_url $result[data][invoice_url] ])); }注意微信电子发票接口返回的invoice_url是PDF链接有效期2小时需及时存库或推送给司机。6. 部署与监控Nginx配置、慢SQL追踪、订单漏单排查的血泪经验最后一步不是“上线”而是让系统在真实流量下不翻车。我见过太多团队解压即部署结果第3天发现订单丢失率12%、司机定位漂移、支付回调丢失——全是监控缺失导致。6.1 Nginx最小安全配置防爬虫、防CC、防目录遍历源码包里.htaccess规则在Nginx下无效必须重写server { listen 80; server_name taxi.your-domain.com; root /var/www/taxi; index index.php; # 禁止访问敏感目录 location ~ ^/(config|data|logs|backup)/ { deny all; } # 禁止PHP文件在上传目录执行 location ~ ^/uploads/.*\.php$ { deny all; } # 防CC同一IP每秒最多5个请求 limit_req zonecc burst10 nodelay; # 静态资源缓存 location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { expires 1y; add_header Cache-Control public, immutable; } # PHP处理 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }逻辑说明limit_req防CC攻击burst10允许突发流量nodelay不排队直接拒绝。别用limit_conn——它按连接数限而H5是短连接效果差。6.2 慢SQL追踪用MySQL慢日志pt-query-digest分析源码里SELECT * FROM orders WHERE status1没加索引订单量超1万后查询超2秒。开启慢日志SET GLOBAL slow_query_log ON; SET GLOBAL long_query_time 1; SET GLOBAL slow_query_log_file /var/log/mysql/slow.log;用Percona Toolkit分析pt-query-digest /var/log/mysql/slow.log --limit 10 /tmp/slow_report.txt报告会指出# Query 1: 0.02 QPS, 1.25x avg, 123.45k rows, 123.45k bytes # Scores: V/M 0.000 # Time range: 2023-10-01 00:00:00 to 2023-10-01 23:59:59 # Attribute pct total min max avg 95% stddev median # # Count 42 12345 # Exec time 78 123s 10ms 12s 100ms 500ms 500ms 100ms # Lock time 0 0 0 0 0 0 0 0 # Rows sent 0 0 0 0 0 0 0 0 # Rows examine 99 123456789 10000 1234567 10000 1234567 1234567 10000 # Query_time distribution # 1us # 10us # 100us # 1ms # 10ms ################################################################ # 100ms ######################################### # 1s ##### # 10s # EXPLAIN SELECT * FROM orders WHERE status1\G立刻加索引ALTER TABLE orders ADD INDEX idx_status (status);血泪经验别信“加了索引就快”要EXPLAIN看是否走索引。我遇到过status字段类型是VARCHAR(10)而查询用WHERE status1数字导致索引失效——必须改成WHERE status1。6.3 订单漏单排查用ELK构建订单全链路追踪漏单不是代码bug而是异步环节断链。比如乘客下单→写库成功→WebSocket广播失败→司机没收到。必须给每个订单打唯一TraceID贯穿所有服务// passenger/api/order/create.php $trace_id TR . date(ymdHis) . str_pad(rand(0,9999),4,0,STR_PAD_LEFT); error_log([$trace_id] Order create start: from{$from}, to{$to}\n, 3, /var/log/taxi/trace.log); // 写库后 mysqli_query($conn, INSERT INTO orders (id, trace_id, ...) VALUES (...)); error_log([$trace_id] Order saved to DB\n, 3, /var/log/taxi/trace.log); // WebSocket广播后 $ws_result $ws_client-send(json_encode([typenew_order, trace_id$trace_id])); error_log([$trace_id] WS broadcast result: . ($ws_result ? success : failed) . \n, 3, /var/log/taxi/trace.log);用Filebeat收集/var/log/taxi/trace.logLogstash过滤trace_idKibana查TR2310011234565秒内定位到哪一步失败。后悔药上线前用grep TR231001 /var/log/taxi/trace.log | wc -l统计当日订单总数再SELECT COUNT(*) FROM orders WHERE create_time 2023-10-01对比差值就是漏单数。别等用户投诉才发现。我坚持在每个新项目上线前用这套TraceID机制跑满24小时压力测试把漏单率压到0.02%以下才敢放量。不是追求完美而是知道——乘客等3分钟没车下次就不会打开你的APP。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Universal Ctags 解析 reStructuredText 代码块:从 RST 文档中提取嵌入 C 代码标签的完整实战

Universal Ctags 解析 reStructuredText 代码块:从 RST 文档中提取嵌入 C 代码标签的完整实战

开发工具CLI 【免费下载链接】ctags A maintained ctags implementation 项目地址: https://gitcode.com/gh_mirrors/ct/ctags 点击查看 免费下载 reStructuredText(reST)是 Python 生态与 Sphinx 文档系统广泛采用的标记语言,其…

2026/10/4 1:41:27 阅读更多 →
微信小游戏 wasm 水印插件:Unity WebGL 转换小游戏的代码溯源防护指南

微信小游戏 wasm 水印插件:Unity WebGL 转换小游戏的代码溯源防护指南

游戏开发移动开发WebAssembly 【免费下载链接】minigame-unity-webgl-transform 微信小游戏Unity引擎适配器文档。 项目地址: https://gitcode.com/GitHub_Trending/mi/minigame-unity-webgl-transform 点击查看 免费下载 在微信小游戏生态中,Unity 游戏…

2026/10/4 1:41:27 阅读更多 →
两道C入门题:scanf多组输入怎么判断,最大最小值怎么初始化

两道C入门题:scanf多组输入怎么判断,最大最小值怎么初始化

这两道题来自我学习 C 时做的牛客入门练习:BC49 判断两个数的大小、BC95 最高分与最低分之差。题目本身不复杂,但多组输入和初始化值得单独说清楚。 1. 判断两个数:我的原解法为什么是 2 每组读两个整数,输出它们的大小关系。我的…

2026/10/4 1:40:27 阅读更多 →

最新新闻

MR25H40CDF与STM32F427ZI:工业级SPI MRAM存储方案实践

MR25H40CDF与STM32F427ZI:工业级SPI MRAM存储方案实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 2:38:08 阅读更多 →
在 Intel 设备上加速部署 ChatGLM3-6B:IPEX-LLM 与 OpenVINO 双路径实战指南

在 Intel 设备上加速部署 ChatGLM3-6B:IPEX-LLM 与 OpenVINO 双路径实战指南

大模型人工智能微调本地部署AI AgentRAG 【免费下载链接】ChatGLM3 ChatGLM3 series: Open Bilingual Chat LLMs | 开源双语对话语言模型 项目地址: https://gitcode.com/gh_mirrors/ch/ChatGLM3 点击查看 免费下载 ChatGLM3-6B 是一个开源的双语对话大语言模型&am…

2026/10/4 2:38:08 阅读更多 →
MRAM替换EEPROM/Flash:基于MR25H40CDF与dsPIC33EP的工业存储方案

MRAM替换EEPROM/Flash:基于MR25H40CDF与dsPIC33EP的工业存储方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 2:38:08 阅读更多 →
Git 实战指南:从安装配置到分支冲突解决,一文掌握高效工作流

Git 实战指南:从安装配置到分支冲突解决,一文掌握高效工作流

在代码世界摸爬滚打这些年,如果说哪个工具每天都要打交道、怎么避都避不开,那一定是git。无论是个人项目、团队协作还是开源贡献,git几乎就是现代软件开发的“水电基础”。很多人刚接触时觉得它不过是个“代码备份工具”,用得多了…

2026/10/4 2:38:08 阅读更多 →
Vben Admin 国际化之旅 : 新增维吾尔语(ug-CN)全流程总结

Vben Admin 国际化之旅 : 新增维吾尔语(ug-CN)全流程总结

Vben Admin 新增维吾尔语(ug-CN)全流程总结一、背景 项目技术栈:Vue 3 Vben Admin(pnpm monorepo) 目标:为系统新增维吾尔语 ug-CN,使 Vben 框架层、Ant Design Vue、vxe-table、业务页面全部支…

2026/10/4 2:38:08 阅读更多 →
PLUS模型实战指南:土地利用变化模拟从数据到精度验证

PLUS模型实战指南:土地利用变化模拟从数据到精度验证

手头有两期土地利用数据,想产出未来十年的土地利用变化模拟图,放在五年前大概会被人推荐CA-Markov或者FLUS。但最近这几年,越来越多论文和课题转向了PLUS模型。原因不复杂:PLUS把“扩张规则学习”和“斑块生成”拆成两个独立模块&…

2026/10/4 2:37:08 阅读更多 →

日新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:35 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:36 阅读更多 →