斩乱麻

整整一天如同荆棘中穿过。回想起来惨不忍睹,如果每天如此,还能有progress?

晚上听完EMC关于EMC的课程,回到座位上,继续修改着料号与Connector,以及经Buyer核算后更合理的方案,风扇控制换成ENE的DC/AC方案,Cardreader也要换成32pin更加合理,BlueTooth换一个模组可以节省USD1.00……硬件是一场不断与成本斗争的行业,而今成本控制只局限于更便宜的物料,很少用到更科学合理的电路方案,而后者才是王道

晚餐时闲聊,测试的老大哥J请H给他简化一个OVP电路,测试老大布置给他一个专利的任务,他想来想去只有这么一个点子,用一个IC来取代现在电路中普遍存在的几个电容电阻三极管……H和君都提出异议:如此说来,只是别人(IC厂商)的想法,按照别人的想法、已经成熟的方案,连接成电路,岂可谓专利耶?可恨我等百般“刁难”,J终于不再辩驳:藕是要让人看到,我提出过专利……只是没通过审核罢鸟!

 

-----------------------------------------之乎者也的分割线--------------------------------------------

 

每天总有些时间该留给思考的:

 

1.做了《Lapetus硬件总体设计方案》

有模板可循,在相应栏填出所选用器件,主要与采购、CE确认物料是否是最合理(便宜&可用)的,对于不同方案,列出各自优缺点。这个很简单吧。只不过相比以前的项目,采购动作相当大,许多零件物是人非,要么我们弃用XX厂商的产品,要么XX厂商狂打价格战,把自己搞破产了——以上,R&D都需要把原理图中对应的东西换过来(注意Footprint)

《系统总体方案》的评审相对严格:列于其中的物料,都必须在EVT、DVT阶段测试,比如DDR3诸多供应商产品,比如硬盘等等

 

这一步骤,主要与Buyer、PM确认器件,书面形式。以免后面糊涂账。

 

2.学习Uranus S× DSP Datasheet

 

无话可讲。只是看看他们讲了些什么,这些IC datasheet 只抓住其中重要部分看即可,注意培养一种读datasheet的敏锐,知哪些地方该注意,哪些地方可以忽略

 

3.同一信号在不同IC间:IC电平可能不一致,在原理图不同页面中……那么滴,要注意加分压电阻使两边电平一致。这里,要搞清楚那边是输出,哪边是输入。今天因为没有仔细看好一个powergood信号为输出,结果闹出了笑话

 

4.Capture的使用:许多连接点处,圆圈打得挺漂亮,殊不知没有连接在一起。layout在布线时发现问题,及时告予。若他们也忽略了呢?在连接线时,须多拉几次,确保线路确实连接上了(use: select entire net)

 

5.方式方法:关于一个Footprint(minipcie)向S请教了两次,隐隐记得3天前问过他一次,但没有记录下来。虽说再去问,也是工作态度之谨慎,但如果当时及时记住(记在记录本上),那么也不至于再给别人添麻烦。做工作,需要逐渐训练一步到位的工作方法(细致、全面)——即使许多事情并不能一步到位

 

干货:MiniPCIE分0、1、2 Nut的三种,带debug触点的又加三种,共6种

### 针对乱码问题的深度排查与解决方案 如果已经按照上述方法排查仍然出现乱码,可能是以下几个深层原因导致: --- ### 1. 文件被其他程序占用或损坏 在写入或读取过程中,如果文件被其他程序占用(例如文本编辑器打开未关闭),会导致读写失败或数据损坏。 ✅ **解决方案:** - 确保文件未被其他程序打开。 - 在读写之前检查文件是否可访问: ```java File file = new File(filePath); if (!file.canRead() || !file.canWrite()) { System.out.println("文件不可读或不可写"); return; } ``` --- ### 2. 数据读写顺序不一致 `DataInputStream` 和 `DataOutputStream` 必须严格按照写入的顺序读取数据,否则会因为类型不匹配产生乱码。 ✅ **解决方案:** - 确保读取顺序与写入顺序完全一致。 - 写入顺序: ```java dos.writeInt(100); dos.writeBoolean(true); dos.writeChar('a'); dos.writeDouble(3.14); dos.writeUTF("数据流"); ``` - 读取顺序必须相同: ```java dis.readInt(); dis.readBoolean(); dis.readChar(); dis.readDouble(); dis.readUTF(); ``` --- ### 3. 文件未完全写入即读取 可能在写入完成后,程序未正确关闭流或刷新缓冲区,导致部分数据未写入文件。 ✅ **解决方案:** - 手动调用 `flush()` 确保数据写入磁盘: ```java dos.writeInt(100); dos.flush(); // 确保数据立即写入磁盘 ``` --- ### 4. 文件编码格式不兼容 虽然 `writeUTF()` 和 `readUTF()` 使用的是 Modified UTF-8 编码,但如果手动处理文本文件并使用 `FileReader`/`FileWriter` 时未指定编码格式,可能会导致乱码。 ✅ **解决方案:** - 使用 `InputStreamReader` 和 `OutputStreamWriter` 时,显式指定编码: ```java InputStreamReader isr = new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8); OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8); ``` --- ### 5. 使用了不支持的字符集 在某些系统中,默认字符集可能不是 UTF-8,可能导致中文显示乱码。 ✅ **解决方案:** - 在程序开始时显式设置字符集: ```java System.setProperty("file.encoding", "UTF-8"); ``` --- ### 6. 使用非二进制方式查看二进制文件 使用文本编辑器查看 `.txt` 文件时,如果文件是二进制格式(由 `DataOutputStream` 写入),会显示为乱码。 ✅ **解决方案:** - 不要使用普通文本编辑器打开二进制文件。 - 如果想查看文件内容,应使用 `DataInputStream` 读取并打印到控制台。 --- ### 7. JVM 启动参数设置 有时候控制台输出中文也显示乱码,这与 JVM 的启动参数有关。 ✅ **解决方案:** - 在运行程序时添加如下 JVM 参数: ``` -Dfile.encoding=UTF-8 ``` --- ### 总结:建议的完整调试流程 1. 打印文件路径并确认是否存在。 2. 确保写入顺序与读取顺序完全一致。 3. 显式关闭流或使用 try-with-resources。 4. 使用 `flush()` 确保数据写入磁盘。 5. 设置 JVM 字符编码为 UTF-8。 6. 不使用文本编辑器查看二进制文件内容。 7. 捕获并打印异常信息。 --- ### 知识点 1. **数据读写顺序一致性** - 读取顺序必须与写入顺序完全一致,否则会导致乱码。 2. **字符编码设置** - 确保写入和读取时使用一致的字符编码(如 UTF-8)。 3. **流的关闭与刷新** - 使用 `flush()` 确保数据及时写入磁盘,避免缓冲区问题。 --- 如果仍然乱码,请提供以下信息以便进一步定位问题: - 控制台输出的乱码内容截图或文本 - 操作系统和Java版本(如 `java -version`) - 是否使用IDE运行程序?具体是哪个IDE? - 文件是否能正常创建?文件大小是多少? 我可以继续协助你定位具体问题根源。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值