c++ reserve, resize 区别
需求 cpp 里面的容器,reserve() 和 resize() 使用时有什么区别? 解决 reserve 只是增加了 capacity,没有增加 size; resize 增加了 capacity 和 size reserve 增加的容量里面没有相应的对象。resize 增加的是实实在在的对象,可以直接通过 at 来使用的。 参考 C++ vector中resize()和reserve()区别
需求 cpp 里面的容器,reserve() 和 resize() 使用时有什么区别? 解决 reserve 只是增加了 capacity,没有增加 size; resize 增加了 capacity 和 size reserve 增加的容量里面没有相应的对象。resize 增加的是实实在在的对象,可以直接通过 at 来使用的。 参考 C++ vector中resize()和reserve()区别
需求 c/cpp 字符串长度,使用 length(), size(), strlen() 结果区别? 解决 strlen() 会查找 string 中的 ‘\0’,如果找到了,那么就是结束 length() 和 size() 其实一样,都是 string 实际的长度,不管其中是否有 ‘\0’ 参考 C++ string 成员函数 length() size() 和 C strlen() 的区别
需求 stm32 使用 hal 设置 rtc 时间之后,再读出来发现,年的数据不对,其他数据是正常的。 解决 经过多次调试,发现问题是出现在 weekend 的设置上面。如果不设置 weekend,会导致随即值在左移的时候,会干扰的年份。 在寄存器中 weekend 只有3位,如果 weekend 中的随即值超过 8,就会干扰年份了。 解决的方法也很简单,要不就是用公式计算出 weekend,要不就是直接设置 weekend 为 0 即可。 参考 stm32 - HAL_SetDate 将年份设置为错误的值 使用HAL的RTC库出现年、小时不准确的问题 关于HAL库读写RTC——时间错乱问题整改
需求 c/cpp 在一些嵌入式应用中,使用 time() 时,编译会报警告 warning: _gettimeofday is not implemented and will always fail 解决 这个警告的原因其实是因为,嵌入式环境中,有些是没有实现 _gettimeofday(), 所以就需要自己来实现这个函数,实现从 rtc 时间到秒之间的转换。 int _gettimeofday(struct timeval *tv, struct timezone *tz) { Rtc::Date date; Rtc::Time time; Rtc::GetRtcValue(date, time); tm time_tm {time.second, time.minute, time.hour, date.day, date.month - 1, date.year - 1900}; time_t time_second = mktime(&time_tm); tv->tv_sec = time_second; tv->tv_usec = 0; // tz->tz_minuteswest = 480; // tz->tz_dsttime = DST_NONE; return 0; } 参考 _gettimeofday_r error come while i am building with latest stm cube ide STM32 之 时间戳的解析与生成 STM32CubeMX使用(六)之RTC及制作时间戳 mktime很慢就自己去实现一个吧 linux几种时间函数总结 时间获取相关函数mktime()、gmtime() 【c/c++】linux时间获取与时间转换函数总结 杂谈:Linux时间管理之gettimeofday实现 gettimeofday()函数的使用方法 linux中time, ctime, gmtime, localtime, gettimeofday和strftime C语言的时间函数(1)gettimeofday,timeval,timezone linux系统中struct timeval结构体、struct timezone结构体以及gettimeofday函数 C 标准库 - <time....
需求 使用 STM32U575 主控芯片,使用 QSPI 读写 W25Q128,简单的读写测试没有问题。但是在后面调试中发现,当按照 11 个字节一组进行读写,从 4352 这个地址开始写,写入到 4605 的时候,就超时状态了。 HAL_OSPI_STATE_ERROR 然后我单独从 4605 写入 11 个字节,确实会超时,但是前面写入并没有超时,很奇怪。 然后,我测试了一下,从0开始写,每次写 11 个字节,当从 1023 开始写入 11 个字节会超时。感觉好像是在 256字节的页边界出写入会出问题,但是又不是每个 256 边界都会出问题。 解决 先使用 16个字节为一组进行测试,没有跨界问题。然后又使用了4字节写入,写入了 400多万组,也没有任何问题。 这基本就说明了,是软件或者库的某个层面,因为32位对齐产生的这个 bug. 解决的方法也很简单,我原来写入 11 个字节是对结构体使用了 pragma pack(1) ,只要不用这个字节对齐命令,编译器会自动进行 32位对齐,重新测试,数据就可以正常读写,没有问题了。 参考 stm32: QSPI flash driver concurrent access issue STM32L4使用QSPI驱动spiFLASH(W25Q64) {SPI/QSPI} 正确理解STM32H7驱动QSPI W25Q手册中时钟后缀1-2-2,1-4-4等代表的含义 AN4760 Quad-SPI interface on STM32 microcontrollers and microprocessors HAL_QSPI_AutoPolling() fail when polling the SR of NOR flash in QPI mode Stm32h7 Hal qspi autpolling timeout stm32u575rit6 qspi driver ST external loader learning w25q flash series part 8 quadspi external loader
需求 使用 mysql 在删除数据表时,报错: =“Cannot delete or update a parent row: a foreign key constraint fails” = 解决 这个问题其实很简单,就是需要删除的表关联到了其他副表,想要删除无非就几种方法: 先把其他相关联的副表中的内容给删除掉,再回头删除主表中的内容 先禁用外键约束,等删除好了,再启用外键约束 SET FOREIGN_KEY_CHECKS=0; -- 禁用外键约束 SET FOREIGN_KEY_CHECKS=1; -- 启用外键约束 外键约束中,删除也选择 CASCADE 级联约束。 参考 mysql 删除数据表报错 表删除时 Cannot delete or update a parent row: a foreign key constraint fails 异常处理 删除数据提示1451:cannot delete or update a parent row:a foreign key constraint fails 删除带外键的表【foreign key constraint fails】报错 Mysql - 删除表时出现: Cannot delete or update a parent row: a foreign key constraint fails
需求 如何去香港办理银行卡 解决 记录一下这次去香港开户的大概流程,总共开了两家,一个中银,一个汇丰。 预约 中银预约比较简单,直接中银官网即可,提前8天进行预约,有些分行放号比较少,手快有,手慢无。 汇丰预约比较麻烦,必须公众号先提交申请,然后预约中心回访,和你确认你想预约的分行,但是注意预约中心不知道分行的排队情况,所以不要选择人气比较旺的分行;大概过了几天时间,具体的分行会打电话给你,告诉你当前排队排到哪天了,然后你确认好时间和地点。如果你不能接受分行的时间,那你就重新在微信上提交申请,再来一轮。 注意:强烈建议先预约汇丰,先把汇丰的时间敲定在至少8天以后,然后再去中银官网预约,这样可以一次搞定。其实在汇丰预约好之后,你就可以开始规划你的行程了,进行订票了。 出发前准备: 身份证,通行证,信用卡账单,工牌。(建议大家如果能准备一个英文的地址就更好了) 手机下载 bochk, hsbc。 bocpay 可下可不下,建议下载一个,用起来比较方便。 换汇取现 2000 港币。 (这里建议大家取现 2100港币,零头的100可以在香港吃饭之类的花掉) 开户 中银 需要身份证,通行证,小票,地址证明。取了预约号之后,会给你一张流程单,你按照流程单使用 bochk 填写信息。填完之后,等待即可。办理时,说是投资港股,给出相关材料,掏出工卡,实话实说,也没问什么太多的东西,没有看工资单,也没有看股票账户,然后很快就办理下来了。 当场下卡,然后自己先去取款机激活,再去存款机存 1000港币。 美股开不了,需要英文地址证明,而国内的信用卡 app 上面只能中文地址,美股开户失败,需要等后面有了英文地址证明后,在 app 上面开户美股。 往来支票账户开不了,具体原因办理人员也没多说。 注意:别忘了和银行要汇款用的地址,编号等相关文件。 汇丰 需要身份证,通行证,小票,地址证明。在预约的时间到,不需要取号,你先填写信息,然后直接就给你办理。办理时,说是投资港股,给出相关材料,掏出工卡,实话实说即可,汇丰会看一下你的股票账户,但也只是瞄了一眼,我怀疑他都没有去看,只是走个流程。汇丰的服务非常棒,直接用你的手机帮你一路操作,必要的时候再还你自己操作,而且你拿出1000港币,他直接帮你存款进去。 当场下卡,然后去取款机改下密码即可。 港股和美股现场开不了,需要等收到汇丰的一封信,然后才能在 APP 上开通港股。美股还要等港股开通之后,才能开通。。。 往来支票账户在取款机上面能看到,估计应该可以用。 注意:别忘了和银行要汇款用的地址,编号等相关文件。 ZA 直接手机APP 开户即可,注意拍身份证,一定要按照说明放好了拍,否则一直不通过。然后我在 ZA 上面好像没有看到 八达通卡,不知道是现在不送了还是什么情况。 总结 这次去开户还是很顺利的,大概的几个印象是: 香港的电信流量信号不好,很多时候需要靠 WIFI 续命。 一般可以选择 711 或者 高铁。 汇丰的服务态度相比中银要高一个档次 一定要自信,实话实说。老实说,你大大方方的,对面也能感觉到,大家会在一个非常放松的情况下去进行互动。 香港很多人听不懂普通话,你沟通起来比较困难,只要会非常简单的英语就会方便很多。比如我找公厕的时候,说其他的都听不懂,最后说 washroom,他们就懂了,然后给我指路; 还有银行APP填职业时,没特别合适的,去和银行业务人员沟通,也是需要用英语简单的沟通。。。 bocpay 在一些能扫码的地方可以用,但是大多数地方只能接受现金或者八达通。。。所以建议根据需要提前先换好所需的港币。 参考 干货|办理香港银行开户需要的「地址证明」到底是什么? 香港银行开户住址证明是怎么办理的? - 粉橙密语的回答 - 知乎 怎么取得香港认可的内地住址证明? - 行走的Root的回答 - 知乎 香港银行开户要求提供的地址证明是什么? - 君林天下企业管理(深圳)有限公司的文章 - 知乎 香港银行开户住址证明是怎么办理的? - IrisYiu的回答 - 知乎
需求 threadx 低功耗模式? 解决 threadx 可以使用 tickless 低功耗模式, 具体可以参考附录。 参考 【STM32H7】第23章 ThreadX低功耗之tickless模式 {ThreadX全家桶} ThreadX低功耗tickless问题
需求 使用 mysql,建立了多张表,表之间使用外键进行关联,现在需要通过视图进行多表联查。 多表内容 reagent key_id project type 1 coag gbact itemrange key_id fk_reagent item 1 1 act 2 1 cr 3 1 pf filereportdata key_id fk_item value strip 1 2 1.1 sid01 2 1 2.2 sid02 3 3 3.3 sid03 多表关系 filereportdata.fk_item = itemrange.key_id itemrange.fk_reagent = reagent.key_id 期望结果 strip project type item value sid01 coag gbact cr 1.1 sid02 coag gbact act 2.2 sid03 coag gbact pf 3.3 解决 多表查询 SELECT f....
需求 android 需要监听网线插拔广播 解决 NetworkStateBroadcastReceiver.java package com.tianze.platform.network; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Build; import android.widget.Toast; import androidx.annotation.RequiresApi; import com.tianze.coagulationanalyzer.MainActivity; import com.tianze.platform.log.DLog; public class NetworkStateBroadcastReceiver extends BroadcastReceiver { private static final String TAG = "NetworkStateBroadcastReceiver"; public static final String ACTION_NETWORK_PLUG_STATE = "com.android.example.NETWORK_PLUG_STATE"; private boolean plugIn = false; private NetworkHelper helper; private boolean exceptionUnplugged = false; @RequiresApi(api = Build.VERSION_CODES.M) @Override public void onReceive(Context context, Intent intent) { String action =intent.getAction(); switch (action) { //接受到自定义广播 case "android....