自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 【ROS实战】04-自定义消息并实现ROS服务

接下来,我们需要定义自定义的服务消息文件。创建一个名为srv的文件夹,在其中定义服务消息。在包内创建srv在新建的srv文件夹下创建并编辑服务消息文件int64 aint64 b---int64 sum请求部分:包含两个整数a和b,表示我们要相加的两个数字。响应部分:包含整数sum,表示两个数字的和,以及字符串info,准备同步返回一个格式化的信息(例如:“10 + 20 = 30”)。我们成功地在 ROS Noetic 中自定义了一个服务消息,并实现了一个简单的服务和客户端。

2025-04-01 18:05:14 756

原创 【ROS实战】03-从零实现小车运动控制的 ROS 功能包

本教程将从带你创建一个包含两个节点的 ROS 包:一个用键盘控制小车方向,另一个接收控制信息并解析动作。本章使用ROS Noetic版本,如果对ROS背景,ROS主题,ROS架构和工作空间概念不了解的读者,可以先阅读我的专栏中的前两篇文章《01-ROS安装详细指南》和《02-ROS架构介绍》

2025-03-26 12:16:04 528

原创 【ROS实战】02-ROS架构介绍

你是否曾有过这样的疑问:我按照文档安装了ROS,依照要求写了一些示例节点(node)、消息(msg)和话题(topic),但觉得过程既麻烦又繁琐。也许你开始怀疑:为什么需要ROS?它到底帮我解决了什么问题?本文将通过一个简单的例子,介绍ROS的架构,阐明它解决了哪些问题,以及它如何帮助我们简化开发流程。

2025-03-21 15:39:27 1273

原创 【ROS实战】01-ROS安装详细指南

这里,我们选择了ROS Noetic,这是ROS 1系列中最新且最稳定的版本,且仍在持续维护中(文章更新于2025年3月)。虽然一些最新特性仅在ROS 2中可用,但ROS Noetic已经被当前市场上的硬件和开源框架广泛支持,不论是学习,还是追求稳定可靠的运行和支持,ROS Noetic目前都是不错的选择。此外,从ROS 1迁移到ROS 2的学习成本也不高。国内用户在安装ROS时,建议替换为本地源以解决网络问题,提升下载速度和稳定性,否则直接按照官方文档,可能会由于网络问题遇到各类不可预期的错误。

2025-03-12 21:25:52 526

原创 Undefined 与 Null:究竟有何不同?

undefined未初始化的变量:声明但未初始化的变量将具有undefined值。缺失的函数返回:如果函数没有明确返回值,则默认返回undefined。不存在的对象属性或数组元素:访问不存在的对象属性或数组元素会导致undefined。null是JavaScript中表示任何对象值故意缺失的特殊值。指示“无值”null明确表示变量或对象属性应该没有值。重置或清除变量:使用null来重置变量或移除其对对象的引用。

2025-03-05 18:47:23 321

原创 为什么要用 const 和 let,而不是 var?

避免使用varvar具有不直观的作用域和提升机制,容易引发错误。优先使用const:当变量值不会改变时,使用const,它能清晰表达你的意图并避免修改错误。使用let:当变量值需要改变时,使用let,它提供了块级作用域。

2025-02-21 22:17:06 314

原创 JavaScript的诞生与进化

JavaScript 从一个简单的客户端脚本语言,逐步演化成现代 Web 开发中不可或缺的编程语言。通过不断的标准化和版本迭代,JavaScript 增强了其功能和性能,支持了从客户端到服务器的各种复杂应用。今天,JavaScript 依然是 Web 开发的核心技术之一,并且随着新的标准不断推出,它的生态和影响力也将继续扩大。

2025-02-17 21:19:20 803

原创 编程世界的AI依赖症:自救与反思

技术带来了便利,但如何在享受这些便利的同时,保持并发展程序员的核心技术能力,确实是一个值得深思的问题。

2025-02-10 16:11:44 203

原创 欧洲程序员薪资分析:从爬虫数据看各国薪资差异

在全球化的科技发展背景下,程序员的薪资差异已成为了一个不可忽视的话题。为了更好地了解欧洲各国程序员的薪资水平,我爬取了网站的欧洲薪资地图,分析了该平台提供的各个国家程序员薪资数据。本文将展示获得的数据,并通过转换为人民币进行对比分析,进一步探讨这些薪资数字背后的意义。

2025-01-24 19:56:53 679

原创 ROS主流版本与适用场景建议

在机器人开发中,ROS(Robot Operating System)是当前最流行的开发框架。随着ROS 1和ROS 2的推出,开发者可以选择不同的ROS版本来满足各种需求。ROS的版本与操作系统(如Ubuntu版本)以及Linux内核的兼容性密切相关。本文将探讨ROS 1和ROS 2的主要版本、生命周期以及如何根据Ubuntu版本和Linux内核选择最合适的组合,并提供一些具体的应用场景建议。

2025-01-18 16:39:27 1937

原创 为什么GPU如此强大,CPU依然不可或缺?

最近,一段2009年的老视频在推特上重新火了起来,旨在向观众直观展示CPU与GPU之间的差异。视频的核心思想是:CPU和GPU进行了一场绘画对决。它们连接到一个喷射彩弹的机器上,CPU花费了30秒钟画出一个简单的笑脸。而GPU则在瞬间画出了蒙娜丽莎。从这个视频中得出的一个结论是:CPU很慢,而GPU很快。虽然这有一定的道理,但实际上,背后还有更多的细节和复杂性。

2025-01-10 18:45:11 810

原创 软件版本命名新趋势:“自豪”与“羞愧”版本

在软件开发中,版本命名至关重要,它帮助开发者和用户了解软件的更新历史和功能变化。传统的版本号命名方式通常包括主版本号、次版本号和修订号,分别对应不同级别的更新。然而,这种方法有时并不能清晰地表达版本更新的实际意义,尤其是在边界定义上。为此,Nikitonsky 提出了一种新的版本命名模式:“自豪”与“羞愧”版本控制,这种方法试图通过情感的维度来更直观地反映软件版本的变化。

2025-01-04 17:19:31 323

原创 网页精准跳转技巧:通过链接直接定位到指定内容

文本片段是现代Web平台中的一个强大功能,它允许我们精确地链接到网页中的特定文本,而无需添加锚点!该功能由CSS伪元素配合使用,后者提供了一种样式化高亮文本的方式。文本片段通过在URL末尾附加特殊语法来工作;就像我们以前在哈希符号(#)后附加ID一样。浏览器会解析URL的这一部分,搜索页面中指定的文本,并在浏览器支持文本片段的情况下,滚动并高亮显示该文本。如果用户尝试通过按Tab键导航文档,焦点将移到文本片段后面的下一个可聚焦元素。最初,以为这是Chrome特有的功能,而不是更广泛的Web标准。

2024-12-25 19:07:17 1464

原创 深入理解并发、并行与 JavaScript

在我们的日常生活中,任务的执行方式有时是顺序的,有时是并发的,也有时是并行的。这些概念同样适用于计算机科学。**并发**和**并行**是实现多任务的一种方式,但它们之间有一些细微但重要的区别。

2024-12-20 18:59:54 718

原创 计算机编程的哲学:从古代哲学到现代实践

计算机编程和软件开发不仅仅是技术实现,更是哲学思考的产物。从亚里士多德的本质与附属复杂性,到奥卡姆的简约原则,再到笛米特法则的模块解耦,每一条哲学原则都能为我们的编程实践提供宝贵的启示。理解并遵循这些哲学原则,能够帮助我们写出更高效、可维护和可扩展的代码。

2024-12-11 18:42:25 820

原创 DRY(Don‘t Repeat Yourself)原则在软件开发中的应用与实践

在软件开发的早期,重复的代码和冗余的资源分散在项目的各个方面。每当我们需要修改某个功能时,我们不得不在多个地方做相同的修改。这种做法不仅浪费了时间,也带来了出错的风险,尤其是在大型项目中,频繁的重复操作可能会导致难以追踪的 bug 或更新失效。DRY原则的核心思想就是:尽量将信息源集中管理,避免在多个地方重复相同的内容。通过重构和抽象,我们可以将信息和逻辑提取到统一的地方,减少冗余,提高代码的可维护性和可扩展性。

2024-12-04 23:31:01 519

原创 常见压缩格式与工具使用

压缩和解压文件在Linux中是一个常见的操作,选择适当的工具可以提高效率。若只是打包文件,使用tar。若想要较高的压缩比,可以选择gzipbzip2xz。若需要跨平台支持和更多功能,选择.zip或.7z是不错的选择。掌握这些基本命令,能够让你在Linux系统中高效处理文件和目录的压缩、解压任务。最后附上各工具的文档地址。工具名称官方文档地址targzipbzip2xzzipZip Manualunzip7zrarRAR Manualp7zip。

2024-11-28 20:03:06 844

原创 为什么没有更多人选择使用Linux?

几周前,我看到一条推特问道:“如果Linux这么好,为什么没有更多的人使用它?Linux是免费的,那么如果它真那么好,是什么阻止人们广泛使用它呢?它是一种操作系统,需要你投入比微软和苹果的商业操作系统更多的精力。因此,使用Linux就像是一个修行道场,让你更好地理解计算机。健身并不是消防的目的,但却是前提。粗俗地说,在一个充满廉价、空洞热量的世界里,变得懒惰和无知比变得健康和知识渊博要容易得多。通过使用Linux,他们可以更好地掌握互联网的基本功,不再害怕在没有云服务保护的情况下将计算机连接到互联网。

2024-09-25 19:43:13 240 1

原创 如何通过“20人+14天”完成Google Play封闭测试

至少有 20 名测试人员在过去至少 14 天内持续参与测试。满足此要求后,开发者即可申请正式版发布权限。本文详细介绍 Google Play 封闭测试的操作步骤,帮助开发者顺利通过测试阶段。如果在操作过程中遇到困难或需要测试人员支持,欢迎联系咨询或合作。通过上述步骤,个人开发者可以高效利用 Google Play 的封闭测试功能,提升应用质量和用户体验。如果您在操作过程中遇到困难或有测试需求,欢迎咨询或合作。

2024-07-09 19:27:23 1251

原创 生动详细的HTML网页知识基础入门

本文可能看起来像是无尽的HTML元素列表介绍,实际上也确实如此。但归根结底,HTML其实很简单。网页由HTML元素组成,每个元素为其包含的文本添加不同的含义,并且元素可以互相嵌套。我们在本文所做的是网页开发过程的第一步——您需要定义您想说什么(HTML)再定义您想怎么说(CSS)。希望我们在本文中创建的文件将作为核心HTML元素的有用快速参考。

2024-01-24 20:32:51 1054

原创 【ElasticSearch系列连载】7. 关于ES数据读写那点事儿

如果数据本身有自己的唯一标记,那么在建立索引时可以使用id来指定文档的id。如下,使用curl在your_index索引下写入一个id=1001的文档。{"field": "内容"}'返回如下{}可以看到除了index, type和id字段,还有一个version字段。在ES中每个文档都有一个自己的version编号,每当文档发生变化时,version就会增长。...

2022-08-13 18:13:58 901

原创 【ElasticSearch系列连载】6. ES的分布式原理

聊一聊前端程序员的现状与挑战

2022-08-13 18:13:05 545

原创 聊一聊前端程序员的现状与挑战

聊一聊前端程序员的现状与挑战

2022-06-26 22:50:24 2640

原创 【ElasticSearch系列连载】5. ES入门基础与常见操作

【ElasticSearch系列连载】5. ES入门基础与常见操作

2022-06-22 14:08:34 282

原创 【ElasticSearch系列连载】4. 与ES通信的两种方式

常见的与ES通信的两种方式

2022-06-19 10:50:27 643

原创 【ElasticSearch系列连载】3. 如何安装符合生产环境要求的ES集群

本文对ES集群的搭建进行详细图文讲解,解决持久化存储(包括数据文件与配置文件)、可视化管理(kibana)和加密(ES+Kibana)等问题。.

2022-06-14 17:58:09 726

原创 了解Unix的历史与现状

目前市面上大部分的操作系统都可以分为两类:一类是基于微软Windows NT内核的操作系统,而剩余其他几乎所有的操作系统的祖先都是Unix。比如Linux,Ubuntu,Mac OS X,安卓Andoird,iOS,Chrome OS以及PS4上面的Orbis OS,这些跑在各种各样硬件上面的操作系统,它们的祖先都是Unix操作系统,所以通常也被叫做“类Unix”操作系统。...

2022-06-04 21:31:03 3881

原创 【ElasticSearch系列连载】2. 如何本地安装与调试ES

理解ES最简单的方式就是实际上手使用一把,所以这一节主要介绍如何在本地搭建一套可以随心所欲操作、使用的ES环境。1 安装选型说明1.1 ES版本选择考量本系列使用ES 7.10版本作为讲解样例截止到目前撰稿日期,已经推出了ES 8.0版本,有众多的改动和新特性,考虑到:目前ES 7.11 之后开源协议进行了变更,不再适合企业大规模商用在未来一段时间,市面上目前6.x 和 7.x 仍然是主流所以本系列使用ES 7.10的版本作为讲解样例,一方面是:7.x是先进且主流的版本,具有所需要的绝

2022-05-29 22:19:23 302

原创 【ElasticSearch系列连载】1. ES版本与开源简介

诞生背景现有的技术在数据的结构化和存储方面已经做的很好了,但是在硬盘上的原始数据并不能充分发挥数据的价值,尤其是当你需要基于这些数据做一些实时的决策时,就更容易出现使用上的困难。ES是一个 分布式,可扩展,实时 的搜索与数据分析引擎,能够有效解决在全文搜索 或者 结构化数据的实时分析问题。不只是大型企业,如Wikipedia,Guardian,Stack Overflow,GitHub在使用。它也可以在你的笔记本上运行,或者扩展到几百台服务器,服务数PB的数据。ES带来了革命,但是ES并没有使用或者

2022-05-22 14:25:06 2256

原创 我们为什么需要幂等

幂等(Idempotence)指的是如果我们反复执行一个方法,如果方法的输入不变,那么第一次执行的结果和第n次执行的结果应该是一样的。在数据处理和计算过程中这是一个非常重要的概念,是确保整个数据处理流程健壮性的关键要素之一,也是保证整个过程可重现可追溯的重要特性。在现实生活中,也有很多符合幂等特性的例子与场景,比如电梯的楼层按钮,比如路口的行人过街按钮都是幂等的:不论重复执行(按下/点亮)多少次,结果都是固定且稳定的。1 幂等在数据一致性上的重要性1.1 数据写入比如我们在数据库具有如下的数据:

2022-05-18 23:29:06 348

原创 谈谈数据的增量更新

谈谈数据的增量更新在数据同步的过程中,必然会遇到数据增量更新的需求。但如果没有一个有效的数据增量更新的设计与机制,可能每次上游数据更新时,你都需要将全量的数据同步一遍,即使只有1%的数据发生了更新。全量数据同步在数据首次同步的时候是需要的,而且定期的全量同步也能够修复一些偶发的数据不完整的问题。但是全量同步作为定期的增量数据更新方式并不是十分合适的,因为:耗时长:对于具有一定规模的数据量,全量同步通常需要较长的时间,比如几个小时,几天甚至几周,所以全量同步经常无法提供实时或者准实时的数据更新服务.

2022-05-16 00:40:03 2709

原创 一文带你快速了解常用的CSS选择器场景

说明近期做了一个小测验,上面设计的题目能够覆盖较多的CSS选择器的场景,特此将其总结记录出来可以更直观的参考。1 定位到ul元素中的第一个li元素<ul> <li></li> ⭐ <li></li> <li></li></ul>实现li:first-child参考语法说明CSS/:first-child2 定位到div元素中没有class的p元素<div> &

2022-03-31 12:29:21 236

原创 一文带你了解CSRF与SameSite

什么是Cookie为了解释CSRF与SameSite的成因、关系与历史,我们首先需要对Cookie有一个基础的了解。我们知道,HTTP请求本身是无状态的,正常来说,服务端收到请求后并不知道请求者是谁;所以为了记录用户的标识信息,来提供更好更便捷的网络服务,Cookie应运而生。就好像我们使用ATM服务(HTTP服务)一样,没有插入银行卡(Cookie)之前,机器并不知道面前的人是谁,有多少余额,甚至不让你使用大部分的功能;但是当你插入之前银行发售(SetCookie)给你的银行卡(Cookie)之后

2022-03-12 23:49:05 854

原创 完美解决Chrome Cookie SameSite跨站限制

问题背景在前后端分离的大趋势下,如果没有额外的配置部署方案,前端地址和后台API地址是不一样的。比如在本地开发调试阶段,前端地址为http://localhost:3000,后台API地址为http://api.server.com/api/list。那么地址不一样会有什么问题呢?如果你请求的后台API需要携带Cookie进行鉴权,那么在这种地址不一样的情况下,会因为浏览器的Cookie SameSite的跨站限制,导致Cookie不会被正确传递,进而导致请求API接口总是报错没有认证或者权限不足。

2022-03-10 20:24:46 7513 4

原创 不小心删除了docker容器怎么恢复?

如果不小心执行了docker rm 容器A,通过查找到docker volumes中删除容器的数据,将其挂载到新启动的容器中,即可恢复应用+状态+数据。背景docker作为优秀的开源容器引擎,能够像集装箱一样以一种非常标准化、轻量、可移植的方式帮助我们进行开发、交付和运行应用程序。当镜像运行起来成为容器时会需要相关的存储资源来支撑软件服务的运行,如存储的日志文件,用户传入的数据,伴随运行生成的文件等。由于docker运行程序实在是太便利了,在有些时候,一些用于调试的docker项目(自研、开源)

2022-03-01 12:21:56 17153

原创 如何在MacOS中进行声音内录

问题背景在MacBook, iMac, Mac Pro, Mac mini等设备中,使用QuickTime Player进行屏幕录制时,只能录制麦克风的声音,无法对电脑本身播放的声音进行录制。当遇到一些录音或者录屏场景需要录制电脑内部声音时就很不方便。此时,就需要通过一些工具,来让QuickTime Player支持录制电脑内部的声音。软件安装步骤1-下载下载方式1: 我已经提前注册下载好安装包,可以直接点击这里下载下载方式2: 官网下载 (需要翻墙,填写下邮箱,选择16ch版本)步骤

2022-02-05 10:56:16 9158 2

原创 定义更好用的CSS Reset

如果你不定义html元素的默认css样式,那么浏览器自己就会用它自己的默认样式;但由于不同浏览器的默认样式是不一样的,会导致你开发的页面在不同的浏览器上会看上去不太一样;所以,为了避免页面在不同的浏览器上有不同的效果,我们通常需要显示地对html元素的css样式进行一些默认设置,来将“浏览器自带的设置”重置掉,这个就叫做CSS Reset

2022-01-20 13:15:56 196

原创 生活中的正向与反向代理

先举几个正向代理与反向代理在现实生活中的例子正向代理生活举例1. 代购A买不到C店的商品,B能买到C店的商品,A让B帮忙买A是需求方,B是代理方,C店是受理方特征1:A授权B代表自己去C店购买(A=>B=>C) 特征2:C不知道实际是A在购买2. 捐款A想捐款给C,但是没有门路,A请B机构捐款给CA是需求方(表达温暖的需求),B是代理方,C是受理方 特征1:A授权B代表自己去给C送钱送温暖(A=>B=>C) 特征2:C不知道实际是A..

2022-01-11 12:10:11 871

原创 《13+1体系-打造持续健康的组织》读书笔记

笔记思路记录顺序和层次和书籍一致,抓大(重点)放小(案例故事),能够快速理解和回忆出核心重点。书籍背景本书于2020年底出版,系统讲解了一套人才与组织的管理经验和方法,一共13个模块,和1个领导力,故简称为13+1体系。书籍由曾任阿里HRVP的黄旭撰写,书中的经验理论在麦当劳、沃尔玛、华润等外企、国企、民营、传统行业等领域成功落地。建议当企业人数接近百人时便需要引入一套标准的方法论来进行管理,13+1是一个不错的选择。书籍结构说明书籍自顶向下分为四个层级,一共13..

2022-01-09 21:59:44 3534

原创 如何一键搭建hexo私人博客

Github地址Docker仓库地址Demo地址本文提供了一个开箱即用的hexo私人博客解决方案,并且集成了高人气的next主题通过使用docker镜像,在免去了繁杂的环境配置和安装的同时,也提供了简单但灵活的主题配置方式和博客更新打包方式所有的依赖只有docker快速启动只需要执行如下命令,即可启动你自己的hexo博客docker run -d -p 3000:4000 josiahzhao/docker-hexo-next:latest 如果需要对博客内容..

2022-01-08 09:03:05 789

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除