201905月技术笔记

缘起

  • 有相关问题,还是得当天就整理下,总月末再整理总有点扯。当天有点忙的话,最迟第二天早上来整理好
  • 从20190508晚上整理开始。

Week 19

20190506

  • 在不该浪费时间的地方瞎折腾,定位代码知道是for(){while()}里while()没走到,一直在看for()里的值,也看到了,还怀疑有地方给改掉了,**没想到是while()里的sql语句没取到值。
  • 感觉任何地方都可以加|管道符啊env | HOME

20190507

  • 1、在makeall install时报错 “/usr/bin/ld: cannot find -lgtest”

    • 第一反应是搜答案,是lib目录下没这个文件,比如usr/lib。
    • 但后面实践来看,有可能是makefile中的问题,比如-L$PATH -lgmock,有可能是$PATH没有取得到值。
    • 解决方案:我后面这样的报错是,makefile里变量没取到值,给写成环境上的固定路径了。

20190508

  • 1、make是成功的,但最后提示 “make: 警告:检测到时钟错误。您的创建可能是不完整的。” (make: warning: Clock skew detected. Your build may be incomplete.)

    • 原因:上传到linux时,win上的时间与linux不一致
    • 解决方案touch一下上传的文件,再重新编译一下。
  • 2、make install时有时报错了但找错的提示行数不太容易,需要把屏幕输出的内容打印到txt文本里。

    • 解决方案 make install >a.txt 2>&1
  • 3、我一般是用chmod +x file,看了一下人家shell里写的是chmod u+x

    • 区别是:一个只是对当前用户给执行权限。

20190509

  • 1、类型输出不对,会core。现场碰到个问题,我就直接加日志了,不管啥类型用的是都是[%s],现场报了一个core,于是整理一下类型输出
  • 2、于是想到之前也遇到到size_t类型时,我用的是[%d],静态检查时报错了。

    • 解决方案:bool类型[%d],longlong类型[%lld],size_t类型用[%zu]

20190510

  • 1、gtest里也可以到源文件上下断点的,这样便于check一下流程里的输出值为啥与期待输出值不一样,可以单步。

    • 最开始自已有点蒙,只想着b 测试代码里断点,死活挂不上,问了一下大佬有两种方式,一种直接b 源代码,还有一种set args --gtest_filter=文件名.函数名

20190511

  • 环境搭好,代码也OK,但有几个期望输出不一样,周六就远程在家跑一下,遇到几个问题,记录一下。

    • 用winscp传文件时,提示4的错误 。竟然是服务器端空间满了
    • 在vi编辑时出现了假死情况,可能我在操作时误输了ctrl+s输入ctrl+q能通出假死,能继续保存了。
    • 想看一下保存到本地的刷屏日志的大小,还是用M单位看了爽。ls -l –block-size=M,之前用df -m查看的空间。

19周总结

  • 1、把gtest环境搞起来了,看起来很简单的几行命令,涉及到不同环境,要不断调makefile。
  • 2、远程支持了人家问题(至少2个),也暴露了自已解决问题不够快。

Week20

20190515

  • 1、编译器提示“error: multiple types in one declaration”,类或结构体没有加分号

20周总结

  • 本周没有太多可列的问题(主要是工作量不饱满)。

Week21

20190521

  • 1、有发心想看看安全,从事后实践看,也就搜集了下资料,内容根本没怎么看,今年还是要把C++撸完。

20190522

  • 1、现场过来问seq取不到的问题

    • 自已主观以为是自已知道的那个地方,折腾半天,才发现现场配置的地方不支持这个功能。
    • 还是要确认现场做了些啥,以及他想问啥

20190524

  • 1、其实算代码规范的问题,正常从网上找个例子,人家只会写memccpy(),觉得运行出结果就OK,看我们的规范和CodeReview被指出来的问题,完全就是没真正了解这个函数啊

    • 题外话:malloc()之前要有强转,本质是由于返回值的类型是void*

21周总结

  • 1、本周有发心开始重新看《C++Primer》,同时发现电脑里还有全书的视频,但最先开始看的竟然是《C和指针》,自已也开始在NAS上搞了个svn,往里提交学习代码,不然总没法check学了啥。
  • 运行结果OK的代码,并不一定就是好代码,还是要自已真的读懂每一行才行

Week22

20190527

  • 1、数据库函数确实掌握得不好,NUMber(16,5)是啥都不清楚。长度16,精度5

20190528

  • 1、现场传来一份core文件

    • 先跟现场确认一下做了啥操作,引起的core。数据迁移
    • file看一下哪个进程引起的,自已gdb 进程名 core,再bt下,没有上下文,基本上没找到有用的消息。
    • 让现场的操作一下,发了个截图回来,是OCITransRollback()调用处引起的,这是操作数据库的API,跟现场解释一下,就这么着吧,毕竟我无力解决。可以留着以后跟oracle提

20190530

  • 1、代码规范中,认识到自已一个知识盲区,对于任何没有初始化的代码,我都没有看到出来。(一定要初始化)。

20190531

  • 1、现场给了个截图“Login incorrect. invalid login name or password!”,确认说是用户名、密码是对的,我看了下代码处,觉得可能是是不是FTP服务器的IP地址配得不对

    • 先确认一下现场是不是新机器,如果是新机器可能是环境的配置问题。
    • 要来了一份详细的日志,在这个错之前,其实有个“Error:500”的错,同时之前有了220和331的返回码,说明之前是登录成功的。
    • 让现场尝试了一下“ftp 服务器地址”,然后putget是不是报错,没有问题。
    • “500 OOPS: cannot change directory”,网上说的改配置都是扯的,首先确认下后面的目录在服务器上是否存在
  • 2、另一台机器上报530,这个严重些,是一次都没有登录上过。

    • 未解决呢,目前现场也没联系,可能他自已在试吧,这个好像还真是配置的问题呢。
  • 参考资料

22周总结

履历

  • 20190513整理掉了19W遇到的一些问题。
  • 20190531下午整理的22W的问题,剩下的临时来了个任务没写。
  • 20190601补充完20和21W。
    原文作者:im天行
    原文地址: https://segmentfault.com/a/1190000019114394
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞