作者归档:yanjingang

Docker容器内连接宿主机Mysql

今天用docker部署一个web服务时遇到总是连不上宿主机mysql数据库的问题,报SQLSTATE[HY000] [2002] Connection refused,经过测试,宿主机用相同配置可以连上,登入docker容器内就连不上,初步判断容器内通过localhost或127.0.0.1是连不上宿主机的。具体原因和解决方法如下: 阅读全文

C++线程池ThreadPool实现解析

C++带有线程操作,异步操作,就是没有线程池。一般而言,当你的函数需要在多线程中运行,但是你又不能每来一个函数就开启一个线程,所以你就需要根据资源情况固定几个线程来执行,但会出现有的线程还没有执行完,有的又在空闲,如何分配任务呢?这时你就需要封装一个线程池来完成这些操作,有了线程池这层封装,你就只需要告诉它开启几个线程,然后直接往里塞任务就行,并通过一定的机制获取执行结果。 阅读全文

C++内存管理

内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者C#,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权,还放弃了C++超绝的性能。本期专题将从内存管理、内存泄漏、内存回收这三个方面来探讨C++内存管理问题。 阅读全文

机器人操作系统ROS—使用激光雷达RpLidar A1进行SLAM定位建图

移动机器人在环境中获取障碍物的具体位置、房间的内部轮廓等信息都是非常必要的,这些信息是机器人创建地图、进行导航的基础数据。考虑成本,买了一个SLAMTEC公司的低成本二维激光雷达RpLidar A1进行初步的学习,它可以最快10hz的频率检测360度范围内的障碍物信息,最远检测距离12米,适合室内移动机器人使用。本文讲解如何使用它感知周围环境。 阅读全文

机器人操作系统ROS—树莓派Pi4环境(Raspberry Pi OS + ROS Melodic)

新入手一个Pi4,4核1.5GHz 64位A72处理器、8G内存(想起我的第一台电脑,赛扬处理器+512M内存…),用来做机器人的控制中心。由于树莓派4暂时还无法使用Ubuntu MATE,本文讲解给它安装Raspberry Pi OS系统 + ROS Melodic的过程。 阅读全文

机器人操作系统ROS—入门

上次我们通过机器人操作系统ROS—初探了解了ROS的基本概念和运行机制,并用内置的小龟模拟器进行了测试。本文我们开始学习如何编写自定义的Service/Client节点进行指定msg格式通信、尝试bag的录制和回放、并简单了解下三维可视化。

一、创建ROS msg消息和srv服务格式

参考:Creating a ROS msg and srv

温习一下,上一次我们了解到topic里的Message、ROS Services概念:

消息(msg):

 msg文件就是一个描述ROS中所使用消息类型的简单文本。它们会被用来生成不同语言的源代码。 阅读全文

机器人操作系统ROS—初探

一直听到ROS这个名字,很好奇它为什么在机器人领域这么出名,所以从今天起我将从零开始学习一下,看看它到底有哪些神奇之处。本文作为初探篇会先带大家了解ROS的基本概念,通过安装和创建/运行程序包了解Nodes节点、Topics/Msg、Service服务/参数服务器、几个常见的工具。

ROS (Robot Operating System, 机器人操作系统) 提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、库函数、可视化、消息传递和软件包管理等诸多功能。ROS遵守BSD开源许可协议。

ROS的官网:https://ros.org/

ROS 图(graph)概念:

  • Nodes:节点,一个节点即为一个可执行文件,它可以通过ROS与其它节点进行通信。 阅读全文

技术面试要点

一、面试基本要求

1.技术面试应关注技术能力和项目经验识别多听、少说、多问

2.面试过程中应树立公司技术专业、尊重他人的形象,避免不恰当的情绪和言词对公司造成负面影响;

3.技术面试禁止进行候选人的薪资沟通

4.面试评价应避免个人主观喜好,客观公正的对候选人回答情况进行评估

5.面试过程必须有具体面试记录(提问问题+候选人回答要点总结),并在面试后同步到下一轮面试官;

二、各轮面试要点

每轮面试结束后,在面试群里简单同步下综合评价(技术水平、优点、不足),供下一轮面试官参考。

一面考核要点

代码能力
(类C语言/Java/脚本类/前端web相关/网络编程/多线程编程/数据库编程等)
数据结构和算法
(对常用算法、数据结构的掌握程度,包括算法的原理和应用)
专业知识
(人工智能/数据挖掘/信息检索/数学分析/统计建模)
系统知识
(Linux系统/网络知识/操作系统/分布式计算/硬件等)
项目经验
(项目本身的复杂程度,和公司的相关性,面试者在项目里面的职责,软件工程相关意识和能力等等)

二面观察考核要点

技术基础、知识面综合评定
编程能力、算法能力综合评定
项目经验
(项目本身的复杂程度,和公司的相关性,面试者在项目里面的职责,软件工程相关意识和能力等等)
系统设计能力、系统把握能力
逻辑思维能力
包括个人对于问题的分析、归纳、推理和判断等
沟通,交流以及表达能力
聪明程度、理解能力、反应速度、
主动性、学习能力、培养潜质

三面观察考核要点

项目经验 项目本身的复杂程度,和公司的相关性,面试者在项目里面的职责,软件工程相关意识和能力等
逻辑思维 思路清晰,对事件描述符合逻辑、严密、有条理;工作经验是否系统性全面
理解能力
学习能力
积极地获取与工作有关的信息和知识,并对其进行加工和理解,以不断更新知识结构、提高能力
主动性 工作积极主动,善于获得资源来解决问题。
责任心 回答问题诚实、负责,办事自信,对以往的工作负责
压力承受 有耐心、韧劲,在遇到批评、指责、压力或受到冲击时,能够克制、容忍、理智地对待
自我认知
进取心
能够客观、正确地评价自己的优势和不足,并努力改进
适应性 能够根据变化采取灵活的应对方式,达成目标
沟通协作
团队合作
能够有效倾听,清晰地表达自己的观点;愿意帮助或协助他人做事、喜欢集体活动,与周围人和谐相处
管理经验 管理项目或团队的时间、规模、跨度、绩效等
离职原因 是否入职后也存在相同的问题