- 浏览: 369574 次
- 性别:
- 来自: 福州
-
文章分类
最新评论
-
loveskey:
找了好久,可算是找到了。感谢
dx.jar dx.bat -
zhaoyi168:
可以把工程的代码发给我吗?
ZJLN1982@yahoo.co ...
Athrun Demo -
ergodic09:
請問樓主 我目前在porting AR6003但是無法自己產生 ...
009-Android平台开发-WIFI function porting-WIFI功能移植 -
iedj99fei:
...
androi中xliff:g
编译代码时,本目录下用mm,上级目录用mmm,如果加上参数-B则表示强制该目录下的所有文件。
如果编译时显示的编译信息有乱码情况,则需要在该终端export LANG=en 。
移植framework,hardware,wpa_supplicant,dhcpcd及system/core/init
一 修改framework
./frameworks/base/wifi/java/android/net/wifi/WifiStateTracker.java
将mInterfaceName = SystemProperties.get("wifi.interface", "tiwlan0");改成 mInterfaceName = SystemProperties.get("wifi.interface", "eth0");
编译生成
framework.jar
更新jar包:
adb push system/framework/framework.jar /system/framework
二 修改hardware
./hardware/libhardware_legacy/wifi/wifi.c
1 引用库文件:#include <unistd.h>
2 更改wifi接口,将#define WIFI_DEF_IFNAME "wlan0"改成 #define WIFI_DEF_IFNAME "eth0"(视项目具体情况而定)
3 更改驱动名及路径:将#define WIFI_DRIVER_MODULE_PATH "/system/lib/modules/wlan.ko"改成 #define WIFI_DRIVER_MODULE_PATH "/data/dhd.ko"
4 更改驱动模块名:将#define WIFI_DRIVER_MODULE_NAME "wlan" 改成 #define WIFI_DRIVER_MODULE_NAME "dhd"
5 更改wifi接口路径:将static const char IFACE_DIR[] = "/data/system/wpa_supplicant"; 改成 static const char IFACE_DIR[] = "/data/wpa_supplicant";
6 增加wifi上电,下电代码:
static const char CONFIG_UP_NAME[] = "wifi_up";
static const char CONFIG_DOWN_NAME[] = "wifi_down";
static const char WIFI_POWER_PATH[] = "/sys/devices/platform/bcm4319-pm/power_state";
static const char * off_state = "off";
static const char * on_state = "on";
static int set_wifi_power(int on) // on is 0: wifi down power, otherwise wifi up power.
{
int fd = -1;
int ret = -1;
char buf[6];
int len;
fd = open(WIFI_POWER_PATH, O_WRONLY);
//fd = open("/sys/devices/platform/bcm4319-pm/power_state", O_RDWR);
LOGE("set_wifi_power fd=%d\n", fd);
if (fd < 0) {
LOGE("open wifi file %s failed.", WIFI_POWER_PATH);
goto out;
}
if (on) {
len = sprintf(buf, "on");
} else {
len = sprintf(buf, "off");
}
len = write(fd, buf, len);
if (len < 0) {
LOGE("write wifi file %s failed.", WIFI_POWER_PATH);
goto out;
}
LOGE("set wifi power %s", WIFI_POWER_PATH);
LOGE("whether wifi is on : %s", buf);
close(fd);
return 0;
out:
if (fd >= 0) {
close(fd);
}
return ret;
}
在insmod方法中的free(module);后面增加如下代码:
if (0 == ret) {
property_set("ctl.start", CONFIG_UP_NAME);
}
在rmmod方法中的while循环后面增加如下代码:
if (0 == ret) {
property_set("ctl.start", CONFIG_DOWN_NAME);
}
在wifi_load_driver中调用set_wifi_power(1);
在wifi_unload_driver中调用set_wifi_power(0);
编译生成
libhardware_legacy.so
更新so文件
adb push system/lib/libhardware_legacy.so /system/lib
三 修改wpa_supplicant
./external/wpa_supplicant/wpa_supplicant.conf
将 ctrl_interface=wlan0 改成 ctrl_interface=/data/wpa_supplicant
编译生成
wpa_supplicant.conf
更新文件
adb push system/etc/wifi/wpa_supplicant.conf /system/etc/wifi
如果希望log中能打印出所有级别的log信息,则可以更改wpa_supplicant目录下的common.h文件。
将wpa_printf定义中的if ((level) >= MSG_INFO) 改成 if ((level) >= MSG_ERROR) 如下:
#define wpa_printf(level, ...) \
do { \
if ((level) >= MSG_ERROR) { \
android_printf((level), __VA_ARGS__); \
} \
} while (0)
编译生成
wpa_supplicant
更新bin文件
adb push system/bin/wpa_supplicant /system/bin
四 修改dhcpcd
1 ./external/dhcpcd/Android.mk
将以下代码打开
include $(CLEAR_VARS)
LOCAL_MODULE := dhcpcd.conf
LOCAL_MODULE_TAGS := user
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(etc_dir)
LOCAL_SRC_FILES := android.conf
include $(BUILD_PREBUILT)
2 ./external/dhcpcd/android.conf
将interface wlan0注释掉
3 ./external/dhcpcd/dhcp.c
将 return (const uint8_t *)dhcp_opt_buffer; 改成 return (const uint8_t *)&dhcp_opt_buffer;
4 ./external/dhcpcd/dhcpcd-hooks/20-dns.conf
在set_dns_props方法最后加上如下脚本代码:
for i in 1 2 3 4; do
setprop net.dns${i} ""
done
count=1
for dnsaddr in ${new_domain_name_servers}; do
setprop net.dns${count} ${dnsaddr}
count=$(($count + 1))
done
在unset_dns_props方法中加上如下脚本代码:
for i in 1 2 3 4; do
setprop dhcp.${interface}.dns${i} ""
done
for i in 1 2 3 4; do
setprop net.dns${i} ""
done
编译生成
dhcpcd,dhcpcd.conf, 20-dns.conf
更新文件
adb push system/bin/dhcpcd /system/bin
adb push system/etc/dhcpcd.conf /system/etc/dhcpcd
adb push system/etc/dhcpcd/dhcpcd-hooks/20-dns.conf /system/etc/dhcpcd/dhcpcd-hooks
五 修改system/core
./system/core/init/property_service.c
如下结构体内容:
struct {
const char *prefix;
unsigned int uid;
unsigned int gid;
} property_perms[] = {
{ "net.rmnet0.", AID_RADIO, 0 },
{ "net.gprs.", AID_RADIO, 0 },
{ "net.ppp", AID_RADIO, 0 },
{ "ril.", AID_RADIO, 0 },
{ "gsm.", AID_RADIO, 0 },
{ "persist.radio", AID_RADIO, 0 },
{ "net.dns", AID_RADIO, 0 },
{ "net.", AID_SYSTEM, 0 },
{ "dev.", AID_SYSTEM, 0 },
{ "runtime.", AID_SYSTEM, 0 },
{ "hw.", AID_SYSTEM, 0 },
{ "sys.", AID_SYSTEM, 0 },
{ "service.", AID_SYSTEM, 0 },
{ "wlan.", AID_SYSTEM, 0 },
{ "dhcp.", AID_SYSTEM, 0 },
{ "dhcp.", AID_DHCP, 0 },
{ "net.", AID_DHCP, 0 }, // add to avoid "permission denied" error
{ "net.dns", AID_DHCP, 0 }, // add to avoid "permission denied" error
{ "vpn.", AID_SYSTEM, 0 },
{ "vpn.", AID_VPN, 0 },
{ "debug.", AID_SHELL, 0 },
{ "log.", AID_SHELL, 0 },
{ "service.adb.root", AID_SHELL, 0 },
{ "persist.sys.", AID_SYSTEM, 0 },
{ "persist.service.", AID_SYSTEM, 0 },
{ "persist.security.", AID_SYSTEM, 0 },
{ "xec.", AID_SYSTEM, 0 },
{ "user.", AID_SYSTEM, 0 },
{ "media.", AID_MEDIA, 0 },
{ NULL, 0, 0 }
};
/*
* White list of UID that are allowed to start/stop services.
* Currently there are no user apps that require.
*/
struct {
const char *service;
unsigned int uid;
unsigned int gid;
} control_perms[] = {
{ "dumpstate",AID_SHELL, AID_LOG },
{ "pppd_gprs", AID_RADIO, AID_RADIO },
{ "pppd_gprs2", AID_RADIO, AID_RADIO },
{ NULL, 0, 0 }
};
编译生成
system/lib/libpixelflinger.so
system/bin/test-opengl-codegen
root/init
最后将以上文件更新到设备上
六 更新驱动
adb push dhd.ko /data
adb push fw_bcm4329.bin /data
adb push nvram.txt /data
注意:如果移植后出现设备不能启动,并且log中一直循环打印“NetId1.0......”时,则可以考虑编译环境是否正确,版本是否一致。
比如,你的设备上烧写的是最新的image,kernel等,而你在本地的老版本中更改文件后,编译出的是老版本的bin文件,jar包,
当push到设备中后出现版本不一致,最新版本中很多库文件或者设备的配置环境已经发生改变,造成设备不能正常启动。
发表评论
-
eclipse中安装插件地址
2014-03-07 15:08 767http://subclipse.tigris.org/up ... -
ubuntu13下载android源码
2014-02-27 18:23 662一、注意repo的正确地址 repo:curl " ... -
用例无法运行,报如下错:Exception during suite construction
2014-02-26 15:47 1288一 前提 1、 测试工程中的所有参数已配置好,如ins ... -
dx.jar dx.bat
2013-06-17 19:33 2287Android SDK中dx.jar, dx.bat文件的备份 ... -
Please ensure that adb is correctly located..... 问题
2013-04-16 09:44 986解决方法: 方法一、查毒杀毒,也许了病毒占用了adb ... -
PC端通过adb与设备端通信
2013-03-28 09:36 1553adb 全称Android Debug Bri ... -
Unable to execute dex: Multiple dex files define Lorg/taptwo/android/widget/Circ
2013-02-21 15:07 2596问题:[2013-02-21 15:01:02 - Dex ... -
android viewTree and decorView
2013-01-30 13:55 1711Android ViewTree and DecorView ... -
No active compatible AVD's or devices found. Relaunch this configuration after c
2013-01-29 10:56 8784问题:No active compatible AVD's ... -
代码对比工具
2013-01-24 15:33 682windows: http://www.scooterso ... -
android最新源码下载
2013-01-23 09:57 1059源码下载:https://source.android.co ... -
Run MonkeyTalk Scripts via Ant in Windows
2012-12-18 20:24 1309Run MonkeyTalk Scripts via ... -
Android中cpu,memory,Battery的计算
2012-11-20 19:59 66301 Memory的分配(RAM而非ROM) 网址: •ht ... -
http://code.taobao.org/p/TMTS/src/
2012-10-12 17:38 1047http://code.taobao.org/p/TMTS/s ... -
string.xml文件中的特殊符号转换符
2012-09-24 09:09 793strings.xml文件中需要对特殊符号(如%,'等)进行转 ... -
web server 中设置wifi代理
2012-09-24 09:07 910DefaultHttpClient httpClient = ... -
Android开发一些常见问题
2012-09-24 09:06 7531:当追踪问题时,代码中实在找不出问题所以,代码的逻辑完全正确 ... -
将log信息写入sdcard
2012-07-05 17:14 892File mFile; private void write ... -
string.xml文件中的特殊符号转换符
2012-06-19 19:39 1079strings.xml文件中需要对特殊符号(如%,'等)进行转 ... -
关于popupWindow的dismiss
2012-06-17 16:13 8610View contentView = LayoutInflat ...
相关推荐
9. 扩展功能:探索Cube MX支持的其他功能,如USB、CAN、Ethernet、WiFi等,了解如何在项目中集成这些功能。 10. 版本更新与兼容性:了解STM32 Cube MX的版本更新历史,以及如何处理不同版本间的兼容性问题。 11. ...
该资源为natsort-3.5.3.tar.gz,欢迎下载使用哦!
蓝桥杯c 蓝桥杯c C++个人备考复习资料
内容概要:本文详细介绍了如何使用FPGA进行无刷电机的旋变控制。首先讨论了旋变解码模块的设计,通过Verilog代码实现角度解算,并采用反正切查表法提高解算速度。接着探讨了PWM生成机制,展示了如何通过状态机实现高效的PWM波形生成,并强调了死区时间控制的重要性。然后深入讲解了闭环控制中的PID算法实现,特别是针对时钟对齐和防溢出处理进行了优化。此外,文章还涉及了旋变信号的硬核处理、CORDIC算法的应用以及速度观测器的设计。最后,通过对实际测试数据的分析,证明了FPGA方案相比传统DSP方案的优势,特别是在响应速度和角度解码精度方面。 适合人群:从事嵌入式系统开发、电机控制研究的技术人员,尤其是对FPGA感兴趣的工程师。 使用场景及目标:适用于需要高精度、快速响应的无刷电机控制系统设计。主要目标是通过FPGA的强大并行处理能力,实现更高效的旋变解码、PWM生成和闭环控制,从而提升系统的整体性能。 其他说明:文中提到多个具体的Verilog代码片段,帮助读者更好地理解和实现相关功能。同时,作者分享了许多实践经验,如调试过程中遇到的问题及其解决方案,有助于初学者少走弯路。
内容概要:本文详细介绍了利用粒子群优化(Particle Swarm Optimization, PSO)算法进行PID控制器参数整定的方法。首先阐述了传统PID参数整定方法如试凑法和Ziegler-Nichols法的局限性,然后重点讲解了PSO算法的基本原理及其在PID参数优化中的具体实现步骤。文中提供了多个实例,包括四旋翼无人机电机转速控制、直流电机转速控制以及一般工业控制系统的PID参数优化。通过与传统方法对比,展示了PSO算法在减少超调量、缩短响应时间和消除稳态误差方面的优越性能。此外,还讨论了适应度函数的选择、参数边界处理、惯性权重调整等关键技术细节,并给出了具体的Python和Matlab代码示例。 适合人群:自动化专业学生、从事自动控制相关工作的工程师和技术人员。 使用场景及目标:适用于各种需要精确控制的场合,特别是那些难以建立精确数学模型的复杂非线性系统。目标是提高控制系统的稳定性、快速性和准确性,降低人工调参难度。 其他说明:尽管PSO算法在大多数情况下表现出色,但在某些特殊应用场景(如嵌入式系统)中需要注意计算资源消耗问题。同时,在面对时变系统时,可能需要进一步研究改进算法以满足实时性要求。
内容概要:本文详细介绍了将西门子CPU224XP的三块功能板整合为单一PCB的设计过程和技术要点。首先,文章展示了如何利用FR4材料构建三明治结构的PCB,并通过KiCad进行精细的层叠配置。接着,讨论了BIN文件的生成方法,通过OpenOCD脚本实现固件的烧录。此外,文章还涉及了元件清单的自动化处理、电源模块的优化设计以及通信协议栈的重写。为了确保信号完整性和电磁兼容性,文中提供了具体的布线策略和热仿真脚本。最后,强调了生产过程中需要注意的事项,如贴片机设置、电源层铺铜和BIN文件的CRC校验。 适合人群:具备一定硬件设计和嵌入式开发经验的工程师,尤其是从事工业控制系统开发的技术人员。 使用场景及目标:适用于希望将多块功能板整合为单一高效PCB的设计项目,旨在提高系统的集成度、降低成本并增强性能。主要目标是掌握从PCB设计到固件烧录的全流程技术,确保最终产品能够满足严格的工业标准。 其他说明:文中提供的代码片段和设计思路不仅有助于理解和实施具体的技术细节,还可以作为类似项目的参考案例。
内容概要:本文详细介绍了ABB ACS510变频器在恒压供水系统中的应用及其优化配置方法。主要内容涵盖多泵轮换功能、固定变频泵模式、PID参数调整、触摸屏集成以及独立运行模式等方面的技术细节。文中不仅提供了具体的参数设置指导,还分享了许多实际调试经验和常见问题解决方案,如电流冲击减少、压力波动控制、通信协议配置等。 适合人群:从事自动化控制系统设计、安装和维护的技术人员,尤其是对恒压供水系统感兴趣的工程师。 使用场景及目标:适用于需要构建高效稳定的恒压供水系统的工程项目,旨在提高系统的稳定性和节能效果,降低维护成本。 其他说明:文章强调了实际操作中的注意事项和技术要点,对于理解和掌握ABB ACS510变频器的实际应用非常有帮助。此外,还提到了一些创新性的配置方法和优化技巧,有助于提升系统的性能表现。
内容概要:本文详细介绍了基于TMS320F28035芯片实现的同步机无传感滑膜观测器(SMO)和锁相环(PLL)模型的代码实现及其实际应用场景。首先,文章概述了SMO+PLL方案的工作原理,即通过滑膜观测器估计电机的反电动势,再由锁相环优化转速和位置的估计精度。接着展示了关键代码片段,包括电流采样与Clark变换、滑膜观测器核心算法、PLL算法以及坐标变换的细节。文中还特别强调了一些实用技巧,如Q格式运算提高效率、符号函数的实现方式、角度过零补偿等。此外,文章提到该代码已在实际项目中成功应用,具有较高的稳定性。 适合人群:从事电机控制领域的工程师和技术人员,尤其是对同步机无传感控制感兴趣的开发者。 使用场景及目标:适用于需要实现同步机无传感控制的工程项目,如伺服驱动、压缩机控制等。主要目标是帮助读者理解和掌握SMO+PLL方案的具体实现方法,从而应用于实际产品开发中。 其他说明:文中提及的一些细节,如Q格式运算、符号函数实现、角度过零补偿等,对于提高系统的性能至关重要。同时,作者提供了许多实践经验,有助于解决实际应用中的常见问题。
内容概要:本文详细介绍了利用MotorCAD进行32极36槽内转子永磁同步电机的设计过程,重点探讨了极槽配合选择、绕组设计、电磁场计算、磁钢布局以及散热系统的优化。通过合理的极槽配置(如32极配36槽),采用双层短距绕组和优化后的磁钢布局(如V型磁钢夹角92度),使得电机的功率密度达到5kW/kg,过载能力达2.5倍。同时,高效的冷却系统确保了电机在高负荷下的稳定运行,实测效率高达96.2%,过载至140%时仍能保持93.5%的效率。 适合人群:从事电机设计、电磁场分析及相关领域的工程师和技术人员。 使用场景及目标:适用于需要高功率密度和强过载能力的电动工程机械等领域,旨在帮助工程师理解和应用先进的电机设计理念和技术手段,提升产品性能。 其他说明:文中提供了详细的参数配置代码片段,便于读者复现设计过程。此外,还讨论了一些常见的设计挑战及其解决方案,如磁钢涡流损耗控制、绕组因数优化等。
内容概要:本文详细介绍了复盘的概念、操作手法、应用场景及其对企业及个人成长的重要性。复盘源自围棋术语,指对过去的经验进行回顾和反思,以从中学习和改进。文章阐述了复盘的五大核心要素:回顾目标、评估结果、分析原因、总结经验教训和提出改进建议。复盘不仅适用于个人成长,还广泛应用于企业管理和项目管理中,能够帮助企业提升执行力、改善决策流程、优化运营效率,并最终推动组织学习和发展。文中特别强调了复盘在军队、联想集团和英国石油公司(BP)中的成功实践。 适合人群:企业管理者、项目经理、团队领导者及希望提升自我反思和学习能力的职场人士。 使用场景及目标:①帮助个人和团队从过去的经历中吸取教训,避免重复错误;②通过系统的反思和总结,提升团队的协作效率和创新能力;③促进企业内部的知识共享和文化传播,构建学习型组织;④为企业战略调整提供数据支持,确保战略目标的有效落地。 其他说明:为了使复盘成为一种常态化的工作方法和习惯,组织应加强培训,培养专业的引导者,并将复盘融入日常管理流程中。此外,复盘的成功实施还需要营造开放、坦诚的文化氛围,鼓励全员积极参与。复盘不仅仅是回顾过去,更是面向未来的持续改进工具。
内容概要:本文详细介绍了将遗传算法与BP神经网络相结合用于短期电力负荷预测的方法及其优势。传统BP神经网络由于易陷入局部最优,预测误差较大,尤其是在节假日等特殊时段表现不佳。遗传算法通过引入全局搜索能力,优化了神经网络的权重初始化,显著提高了预测精度。文中展示了具体的编码、适应度计算、交叉变异等遗传算法步骤,并提供了Python代码实例。此外,作者分享了多个实战经验,如种群规模、迭代次数、变异概率等参数的设置技巧,以及如何避免过拟合等问题。 适合人群:从事电力系统相关工作的工程师和技术人员,尤其是对机器学习和优化算法有一定了解的人士。 使用场景及目标:适用于需要进行短期电力负荷预测的场合,如电网调度、工业用电管理等。主要目标是提高预测精度,减少因预测不准确带来的经济损失和调度困难。 其他说明:文中提到的技术不仅限于电力负荷预测,还可以应用于其他具有周期性和波动性的时序数据分析任务。同时,作者强调了在实际应用中需要注意的各种细节和潜在问题,如过拟合、过早收敛等。
# 雷电战机 (Raiden Space Shooter) A beautiful web-based space shooter game inspired by the classic Raiden series. ## Features - Smooth gameplay with keyboard controls - Multiple enemy types with different behaviors - Power-up system to enhance your ship - Beautiful visual effects - Score tracking and lives system ## How to Play ### Controls - Move: Arrow keys or WASD - Shoot: Space bar ### Power-ups - Green: Increases ship speed - Cyan: Increases fire rate - Red: Increases bullet damage - Yellow: Adds additional bullets ## Running the Game 1. Make sure you have Node.js installed 2. Navigate to the game directory 3. Run the server: ``` node server.js ``` 4. Open your browser and go to `http://localhost:3000` ## Development This game is built using vanilla JavaScript and HTML5
基于深度学习的系统
内容概要:本文详细介绍了如何使用ABAQUS进行路基及大坝分层填筑沉降模拟。首先讲解了材料定义,如使用Drucker-Prager模型模拟粘土,并强调了正确设置材料参数的重要性。接着讨论了分层施工的关键步骤,包括单元激活策略、接触面处理以及地应力平衡。文中还提供了多个Python脚本示例,用于自动化生成施工步、设置接触属性、提取沉降结果等。此外,文章分享了一些实用技巧,如避免常见错误、优化模型性能的方法,并通过实际案例展示了如何通过调整材料参数来更好地反映真实施工状况。 适合人群:从事土木工程仿真的工程师和技术人员,尤其是那些希望深入了解ABAQUS分层填筑模拟方法的人群。 使用场景及目标:适用于需要精确模拟路基和大坝分层填筑过程及其沉降行为的工程项目。主要目标是帮助用户掌握ABAQUS的具体操作流程,确保模拟结果的准确性,并提供解决常见问题的有效方法。 其他说明:文章不仅涵盖了理论知识,还包括大量实践经验,有助于读者将所学应用于实际工作中。同时提醒读者注意一些容易忽视的细节,如材料参数单位的一致性和接触面设置合理性等。
内容概要:本文详细介绍了西门子S7-200PLC(224XP型号)与MM420变频器之间的三种控制方式:数字量控制、模拟量控制以及USS通讯控制。首先,数字量控制通过PLC的开关量输出控制变频器的不同预设速度,涉及参数设置如P0701和P0702。其次,模拟量控制利用PLC自带的模拟量输出模块进行频率调节,需注意量程转换和参数P0756的设置。最后,USS通讯采用西门子专用协议实现复杂控制,强调了初始化参数、轮询机制和状态互锁的重要性。此外,文中还提供了关于MCGS触摸屏的应用技巧,如变量绑定和实时数据显示方法。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是熟悉西门子PLC和变频器产品的使用者。 使用场景及目标:适用于希望深入了解PLC与变频器联合控制系统的设计与实现的技术人员。主要目标是在实际工程项目中灵活运用这三种控制方式,提高系统的可靠性和效率。 其他说明:文中附带了详细的代码片段和调试建议,帮助读者更好地理解和实践相关技术。同时提醒读者关注参数设置的一致性和安全性,以避免潜在的风险。
本学习指南专为准备RH300考试,即红帽认证工程师(RHCE)考试的考生设计。书中详细介绍了考试内容,包括硬件和安装、配置和管理、内核服务、网络服务、X窗口系统、安全、路由器、防火墙、集群和故障排除。考试分为三个部分:调试、多项选择题和服务器安装及网络服务设置。书中还提供了硬件信息收集、系统配置、X窗口系统、Linux命令和工具、网络、系统管理和安全等方面的详细信息。
"基于MobileSensingSystem的电子硬件毕业设计资源整合,提供完整的硬件设计方案与实现方法。涵盖传感器选型、电路设计、嵌入式开发等关键技术,助力快速搭建移动传感系统。包含原理图、PCB设计、源码等实用资源,适合电子信息类专业学生参考使用。"(99字)
在端午节这个传统节日,我们可以通过搭建一个主题网站来弘扬和传承端午文化。本教程将带领大家使用 HTML、CSS 和 JavaScript 搭建一个简单的端午节主题网站。
流变学在结构工程中的应用:结构疲劳分析中的流变学考虑.zip