lyq
昨天 a961eaed898beaa4d91689204c3387042f669286
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
 
 
 
 
=========================================================
            bug或者难点
            
        1、客户端 
            界面卡顿的问题
            其实就是主线程被阻塞了,被耗时任务阻塞了
            解决--把耗时的业务、任务放到子线程中去执行
            再将结果以信号槽的方式和界面主线程进行交互
            --描述时,要结合具体的模块来展开--最好结合自己负责的模块
            【只要把大数据量的操作放到子线程中就行】
            
            实时展示:多点--单点;
                每个单点存的数据固定了长度,当长度满了之后,再来新数据
                最新的放后面,最老的删掉
                使用哪个容器更加效率:vector list deque
                
        
        
        2、服务端
            网络通信: tcp长连接--心跳检测--能做到断线重连
                                粘包处理--加数据头--包含包长--按长度收包解包
                                安全问题--更改-校验:CRC、MD5校验
                            安全:    敏感数据[密码、核心数据] 加密处理
                                    用双向非对称加解密算法--RSA算法[随机密钥]
            数据库:安全问题--防注入--对SQL语句进行校验
            
            日志-- 单例模式--线程安全--异步写入--文件翻滚
            
            性能问题:想办法从同步--升级为异步处理
                    网络通信调用业务API的时候,解耦收包、解包处理
                    单一线程--升级为线程复用--线程池
                    
                    数据库连接--复用--连接池
            -----------------------------------------
            核心业务:
                AI相关的--拟合问题--过拟合、欠拟合的解决
                        说白了就是提升模型精度的问题--就是去控制图片的质量和数量
                        想办法降噪、去干扰、使图片高清等手段
                
                数据库查询--单表数据量很大--SQL语句优化:加索引、避免全表扫描、分表等操作
        ==========================================================
        所有的难点或者bug一定要结合你负责的模块来展开描述
        描述时,要先说现象,再说解决的方案
        ----------------------------------------------------------
            
        1、总结一下自己负责的模块,都还有哪些难点,罗列出来
 
注册登录:
难点 :密码明文传输
现象:LoginReq 结构体直接通过 strcpy 将明文密码写入网络包,网络抓包可直接获取用户密码,严重安全漏洞。
解决方案:服务端存储密码哈希值而非明文;
 
权限管理:
难点 :权限修改无二次确认
现象:点击“修改权限”按钮后直接发送请求,无用户确认弹窗,误操作导致权限配置错误,影响系统安全。
解决方案:
在 按钮槽中添加 QMessageBox::warning() 二次确认。
    
实时大屏显示
难点:内存无限增长
现象:EnvInfoShow::showEnvDataSlot() 将每个监测点数据存入 QMap<QString, QList<EnvInfoReq>> m_nameDatas,仅限制单点 100 条,监测点数量动态增加时,m_nameDatas 内存持续增长。
解决方案:
设置全局最大监测点数量,超限时移除最旧监测点;
    
历史查询分析:
难点:长时间运行后,历史查询响应变慢
现象:全局粘包缓冲区 g_allBuffer 只增不减;
解决方案:
不把未解析的数据存起来,利用 QTcpSocket 的内部缓冲区,按需读取完整包。
 
警报管理:
 难点:阈值输入框接受非法字符
现象:
在“最大温度”输入框中输入字母 abc 或留空,点击“修改温度”,程序不报错,但发送了无效值
解决方案:在阈值输入框初始化时,统一设置 QDoubleValidator 限制输入范围,禁止字母、符号或空值,从源头杜绝非法输入。