杂记——在开发ByteTalk中遇到的困难以及解决
文章目录
- 关于git push报错:curl 55 The requested URL returned error: 401
- 关于portobuf 在 rpc 通信问题中 response 为nullptr 的问题
- 关于SSH连接云服务断连的问题:SSH connection failed: read ECONNRESET
- 关于MySQL远程连接失败的问题
- 关于telnet: Unable to connect to remote host: Connection refused
- 关于如何使用protobuf 在 C++服务端与 Java客户端通信
- 参考文献
2021-05-05更新内容
关于git push报错:curl 55 The requested URL returned error: 401
在正常git push的时候,回报以下错误,但是之前是没有遇到过这个错误的。
在google和StackOverflow上查询了半天,执行了以下方法:
- 清除账户密码信息,重新设置
- 提升push 缓冲区大小
- 修改客户端的push 验证
最后,在测试小文件上传的时候,可以成功。最后将文件分批上传,问题解决。
2021-04-23 更新内容
关于portobuf 在 rpc 通信问题中 response 为nullptr 的问题
今天用自己写的 rpc 框架向日志服务器打印日志,总是发生错误。
代码如下:
ik::LogRequest request;string name = "UserServer ";name += buffer;request.set_name(name);request.set_msg("zookeeper connect error!");stub_.Log_ERROR(nullptr, &request, nullptr, nullptr);
然后在运行过程中,zookeeper 服务端可以正常连接,然后就报段错误了。
ubuntu@VM-0-2-ubuntu:~/ByteTalk/UserService/bin$ ./UserService -i user_service.conf
172.17.0.2:2181
2021-04-23 18:49:21,419:1069(0x7f1d8fae7fc0):ZOO_INFO@log_env@726: Client environment:zookeeper.version=zookeeper C client 3.4.10
2021-04-23 18:49:21,419:1069(0x7f1d8fae7fc0):ZOO_INFO@log_env@730: Client environment:host.name=VM-0-2-ubuntu
2021-04-23 18:49:21,420:1069(0x7f1d8fae7fc0):ZOO_INFO@log_env@737: Client environment:os.name=Linux
2021-04-23 18:49:21,420:1069(0x7f1d8fae7fc0):ZOO_INFO@log_env@738: Client environment:os.arch=4.15.0-140-generic
2021-04-23 18:49:21,420:1069(0x7f1d8fae7fc0):ZOO_INFO@log_env@739: Client environment:os.version=#144-Ubuntu SMP Fri Mar 19 14:12:35 UTC 2021
2021-04-23 18:49:21,420:1069(0x7f1d8fae7fc0):ZOO_INFO@log_env@747: Client environment:user.name=ubuntu
2021-04-23 18:49:21,420:1069(0x7f1d8fae7fc0):ZOO_INFO@log_env@755: Client environment:user.home=/home/ubuntu
2021-04-23 18:49:21,421:1069(0x7f1d8fae7fc0):ZOO_INFO@log_env@767: Client environment:user.dir=/home/ubuntu/ByteTalk/UserService/bin
2021-04-23 18:49:21,421:1069(0x7f1d8fae7fc0):ZOO_INFO@zookeeper_init@800: Initiating client connection, host=172.17.0.2:2181 sessionTimeout=30000 watcher=0x55c7a35dc46c sessionId=0 sessionPasswd=<null> context=(nil) flags=0
2021-04-23 18:49:21,425:1069(0x7f1d8d8ad700):ZOO_INFO@check_events@1728: initiated connection to server [172.17.0.2:2181]
2021-04-23 18:49:21,428:1069(0x7f1d8d8ad700):ZOO_INFO@check_events@1775: session establishment complete on server [172.17.0.2:2181], sessionId=0x178fdac300f0058, negotiated timeout=30000
Segmentation fault (core dumped)
用 gdb 调试,发现报了错误:
Thread 1 "UserService" received signal SIGSEGV, Segmentation fault.
0x00007ffff7a495a8 in google::protobuf::MessageLite::ParseFromArray(void const*, int) () from /usr/lib/x86_64-linux-gnu/libprotobuf.so.10
(gdb)
这里是 ParseFromArray 这个函数报错,但是我真的对gdb的调试麻爪了,啥时候能像vs 2017的调试那么好用啊。
最后找到了错误:对于response来说,不能传空值,必须传一个对象,如果没有返回值,就构造google::protobuf::Empty
对象。
ik::LogRequest request;string name = "UserServer ";name += buffer;request.set_name(name);request.set_msg("zookeeper connect!");google::protobuf::Empty response;stub_.Log_ERROR(nullptr, &request, &response, nullptr);
关于SSH连接云服务断连的问题:SSH connection failed: read ECONNRESET
问题描述:博主在 vscode 上想要看另一个项目,于是就:
然后ssh就断连了,用 Windows 本地带的 cmd 也连不上云服务器,报的错误是:
SSH connection failed: read ECONNRESET
然后去排查错误,检查云服务器端口号是否放通、防火墙是不是允许本机 ip 访问。过了一会儿,它自己莫名其妙就好了。。。。
经过推测,应该超过云服务器的压力上限,启动保护程序不让访问了。
充钱!提升配置! 花了300大洋
问题解决。。。
2021-04-21 更新内容
关于MySQL远程连接失败的问题
在用数据库连接的时候发现只有 127.0.0.1
能连接上,其他公网地址:42.192.129.38
或者私网地址:172.17.0.2
然后百度了相关教程,emmmm,还是那个逼样。所幸我就写个全的:
- 先去数据库查看 mysql.user下是的host 是否是localhost,如果是,改成%(代码任意ip)
ubuntu@VM-0-2-ubuntu:~/ByteTalk/UserService/bin$ mysql -u ik -p123456 //登录数据库mysql> use mysql; //选择数据库
mysql> select user,host from user; //查看user以及host
+------------------+------------+
| user | host |
+------------------+------------+
| ik | % |
| debian-sys-maint | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+------------+
7 rows in set (0.00 sec)// ik:用户名;%:代表所有ip;123456:密码
//授予所有权限
mysql> grant all privileges on *.* to 'ik'@'%' identified by '123456' with grant option;
Query OK, 0 rows affected (0.00 sec)mysql>flush privileges;
- 然后这个时候我们就可以去查看权限了
mysql> show grants for 'ik'@'%';
+-----------------------------------------------------------+
| Grants for ik@% |
+-----------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'ik'@'%' WITH GRANT OPTION |
+-----------------------------------------------------------+
1 row in set (0.00 sec)
- 这个时候可以再次去尝试连接,如果还是失败的话,可以去检查 3306 端口是否开放
ubuntu@VM-0-2-ubuntu:/etc/mysql/mysql.conf.d$ netstat -an|grep 3306
如果打印如下信息,代表未打开
ubuntu@VM-0-2-ubuntu:~/ByteTalk/UserService$ netstat -an|grep 3306
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
- 然后我们再去修改 mysql 的配置文件(ubuntu系统)
//进入 /etc/mysql/mysql.conf.d
ubuntu@VM-0-2-ubuntu:~/ByteTalk/UserService$ cd /etc/mysql
ubuntu@VM-0-2-ubuntu:/etc/mysql$ ls
conf.d debian.cnf debian-start my.cnf my.cnf.fallback mysql.cnf mysql.conf.d
ubuntu@VM-0-2-ubuntu:/etc/mysql$ cd mysql.conf.d
ubuntu@VM-0-2-ubuntu:/etc/mysql/mysql.conf.d$ ls
mysqld.cnf mysqld_safe_syslog.cnf
// 修改配置文件mysqld.cnf
ubuntu@VM-0-2-ubuntu:/etc/mysql/mysql.conf.d$ sudo vim mysqld.cnf
注释掉这条信息
//重启mysql服务
ubuntu@VM-0-2-ubuntu:/etc/mysql/mysql.conf.d$ sudo service mysql restart
至此,基本解决了MySQL远程连接的问题。
关于telnet: Unable to connect to remote host: Connection refused
上一次bug解决的时候想用 telnet 去测试本机端口号,发现了这个报错,看了一个博主的博文,经本人验证没有问题。
直接放超链接了:
解决Ubuntu中telnet 127.0.0.1时Unable to connect to remote host: Connection refused的问题
2021-04-20 更新内容
关于如何使用protobuf 在 C++服务端与 Java客户端通信
问题是这样的,在java中序列化的数据,经过byte[]
发送给C++服务端,服务端这边是能打印出收到的数据,但是反序列化失败,一直为空。
例子:
java --> User 2021- 4-19
C++ <-- User
2021- 4-19
// C++代码:
void LogSend::send_file(const muduo::net::TcpConnectionPtr &conn,muduo::net::Buffer *buf,muduo::Timestamp stamp)
{cout << buf->retrieveAllAsString().c_str() << endl;ik::LogSendRequest request;request.ParseFromString(buf->retrieveAllAsString());...
}
按照正常来说,下面那一行应该打印../log/User/2021- 4-19_log.txt
,但是实际上是解析失败了。后来在StackOverflow上面查询了一下——Sending protobuf from C++ to Java
也算是有了一些点拨,尝试了一下用protobuf的 ParseFromArray
,发现成功了。
截图:
//C++代码:
void LogSend::send_file(const muduo::net::TcpConnectionPtr &conn,muduo::net::Buffer *buf,muduo::Timestamp stamp)
{string recv = buf->retrieveAllAsString().c_str();ik::LogSendRequest request;request.ParseFromArray(recv.c_str(),recv.size());
...
}
然后又去找了一下protobuf中关于ParseFromString的源码,发现调用的还是ParseFromArray:
inline bool ParseFromString(const string& data) {return ParseFromArray(data.data(), static_cast<int>(data.size()));}
emmmmmmm
最后找到了,是我代码的逻辑bug,看这两行代码:
cout << buf->retrieveAllAsString().c_str() << endl;ik::LogSendRequest request;request.ParseFromString(buf->retrieveAllAsString());
我从muduo的缓冲区中,拿出所有数据打印了一遍,然后又从缓冲区里面再拿数据,此时缓冲区为空了,是没有数据的,肯定会反序列化失败。
还是不仔细。。。
参考文献
[1] 配置MySQL开启远程连接的方法
[2] 在Ubuntu/Linux环境下使用MySQL:开放/修改3306端口、开放访问权限
[3]解决Ubuntu中telnet 127.0.0.1时Unable to connect to remote host: Connection refused的问题
杂记——在开发ByteTalk中遇到的困难以及解决相关推荐
- 棋牌游戏开发过程中遇到的困难 如何解决
近几年很多有远见的创业者选择棋牌游戏开发公司来定制一款属于自己的游戏,向大众运营推广,经历一番调研.代码.设计.服务器.测试等工作,好不容易上线后,却发现收获的效果微乎其微,顿时大受打击,产生退缩的心 ...
- 烧写linux系统到开发板中,Mini2440烧写Linux系统
按照国嵌课程在Linux系统下使用dnw软件烧写系统失败,开机白屏. 烧写步骤: 1.保持S2开关拨至nor flash开关处,连接串口线打开串口工具以便观察运行情况,打开电源开关. 2.使用jlin ...
- 支付宝生活号开发中所遇到的困难及解决记录
ヾ(๑╹◡╹)ノ" 写一篇文档记录下自己在支付宝生活号开发上遇到的一些困难. 作为一个第一次接触到支付宝生活号的小萌新,一开始是有点茫然无措的,啥都不懂怎么办呢? 当你是第一次开发生活号时, ...
- 在开发流程中嵌入安全测试
ContinuumSecurity创始人Stephen de Vries,在Velocity Europe 2014大会上提出了持续且可视化的安全测试的观点.Stephen表示,那些在敏捷开发过程中用 ...
- MBTI在软件开发团队中的应用
人绝不是一种资源.一方面我们不可能因人设岗,另一方面也不能忽略人性的差异.面对问题时,不要总是单纯地从人的态度或品德上查找问题,而是要反思人事安排和流程建设上的不足.奢望一个人改掉他的缺点,还不足充分 ...
- iphone开发 NSURL中fileURLWithPath和URLWithString的区别
2019独角兽企业重金招聘Python工程师标准>>> iphone开发 NSURL中fileURLWithPath和URLWithString的区别: 1.我做了如下实验:(摘抄) ...
- Thonny开发环境中显示数据曲线
▌01 开发MicroPython环境 1.简介 MicroPython 是一款运用在单片机上PYthon3 的版本,基于他对于MCU的开发就变成的非常容易.使用 安装 Thonny 软件环境开发PI ...
- java开发中遇到的问题及解决方法(持续更新)
java开发中遇到的问题及解决方法(持续更新) 参考文章: (1)java开发中遇到的问题及解决方法(持续更新) (2)https://www.cnblogs.com/LiuYanYGZ/p/6112 ...
- 开发中内存溢出问题及解决
开发中内存溢出问题及解决 参考文章: (1)开发中内存溢出问题及解决 (2)https://www.cnblogs.com/yangyi1024/p/6417874.html 备忘一下.
最新文章
- きゃらコレ! -ALICESOFT- 汉化补丁
- Invalid icon file 原因
- html中contentEditable属性
- 【操作系统】页置换算法
- 第一百七十四天 how can i 坚持
- neo4j的查询语法Cypher+python演示
- 单链表的逆置-C++实现(ok)
- AES-GCM加密算法
- xp系统计算机怎么连接到网络打印机,XP系统安装网络打印机教程(xp添加网络打印机步骤)...
- 2017 清北学堂 Day 6终极考试报告
- 美国信用评估机构遭黑客入侵,半数美国人受影响!
- MATLAB学习【第五部分】--第一节:矩阵的输入//冒号表达式矩阵---linspace函数生成向量---一般矩阵输入
- Matlab函数参考
- 2020西瓜直播弹幕协议版弹幕提取思路与实现py
- DYA8面向对象中--包与修饰符
- 道路软件质量:SourceMonitor
- xquartz paste
- mysql sdo geometry_c#读写SDO_GEOMETRY字段
- 阻感负载对于逆变器输出电流的影响
- ipixsoft swf to html5 converter,iPixSoft SWF to MOV Converter