嵌入式工程师的自我修养

2023-05-16

文章目录

  • 前言
  • 一. 认知的四个阶段
    • 1. 不知不知
    • 2. 知道不知
    • 3. 知道己知
      • 3.1 软硬件
      • 3.2 网络
      • 3.3 安全技术(换成你自己的领域)
      • 3.4 真正知道的三个阶段
        • 3.4.1 会用
        • 3.4.2 了解怎么实现
        • 3.4.3 明白为什么这么实现
    • 4. 不知已知
  • 二. 升级打怪
  • 三. 一点点建议
    • 3.1 博览群书
    • 3.2 慢慢的爬,聪明的爬
    • 3.3 多重构

前言

大家好呀,我是科岩,做嵌入式工程师9年多了,目前在一家物联网创业公司任联合创始人,聊聊我眼中嵌入式工程师的自我修养。

首先我想说的是不问出身,做嵌入式的同学,基本都是计算机科学、电子信息、通信类专业。刚毕业的本科生,就学到的知识,名校与非名校在起点上相差不多,大家在校园里学的都是那几科,看的书也都差不多,如果不是很小就接触计算机写代码,那毕业时的代码量也都差不多。

而对于工程作业来说,对学术能力的要求没那么高,只要有一定的学习能力,技术是很容易掌握的,大可不必对自己的学历不够自信。

对于嵌入式软件工程师,一般是分成两类,嵌入式Linux、嵌入式单片机,我这里只讲单片机的部分,Linux的部分有机会再聊。

一. 认知的四个阶段

1. 不知不知

在刚工作的第一年,基本是一个学习的过程,很难有有效的产出,这个阶段是完成从一个生涩毕业生到企业员工的身份转换,如果校园里接触过比较多的代码,看过类似Linux源码那种级别的代码,对你快速学习还是很有用的。

这时你写的代码,也能正确的点亮一个led灯,能实现老板的需求,可日后来看,肯定是惨不忍睹的,说难听点,就是“像屎一样”。但这时你还不知道这些,你甚至“不知道自己不知道”,你觉得自己表现的还不错,可能偶尔会冒出“这个代码这样写会不会更好”之类的念头。

每个人都可能冒出这样的念头,不同的是,有的人念头一过就去干别的了,刷刷剧玩玩手机也是一天;有些人,没有让念头溜走,顺着念头走了下去,去找“这个代码换一种写法会不会更好”的答案。

2. 知道不知

找答案无非3个方式:问其他人(包括搜索引擎)、看书、看源码。

你当然可以问其他人,但你不能总问其他人,而且其他人不一定什么都能解决。

你开始看源码,你会发现,源码看不懂,随便打开个开源项目,一行都看不懂。

你一定会吓到,你想找本书来压压惊,随便翻一翻,竟然发现自己“这个也不知道”,“那个也不知道”

这也是好事,至少你已经“知道自己不知道”了。

问人是最快最具体的;看源码不能一蹴而就,大师的代码我等凡人刚开始都是看不懂的,没关系慢慢来,多看几遍;看书是最系统的,如果你能带着问题去看书中的具体章节当然就更好啦。

现在,你有了学习的动力,你要做的,是开始填补知识空白,还等什么,快开始吧!

3. 知道己知

上面列举的三种方式,最系统也最有效的,当属看书了,我这里推荐几本书。

对于语言层面,当然最多用的是C语言,学校学的教材比如谭本《C程序设计》只介绍语法不说,还有很多误导,坚决不要看了。我推荐你读K&R版本的《C程序设计语言》,Bryant,R.E.的《深入理解计算机系统》,接着就是Andrew Koenig的《C陷阱与缺陷》、KennethA.Reek的《c和指针》、LinDen,P.V.D的《C专家编程》,对于C语言基础,这些已经够了。

看完这些,你最起码了解了计算机程序到底是怎么一步步生成的,对语言、对系统又有了进一步更详细的认识。

与此同时,可以看些实用性强的书,W. Richard Stevens的《UNIX环境高级编程》、《UNIX网络编程》,把语言上的所学的进行实践,了解编译器编译流程、Linux的基础命令,固件的交叉编译。注意,这2本书都很厚,不用强迫自己全看。

下一步,开始看你的专业相关,你所在公司总有一个具体的方向,音视频、图像处理、家电等等,笔者从事物联网安全行业,当然最关注的是嵌入式软硬件、网络、安全技术,那就要针对这3个方面找书了。

3.1 软硬件

做软件工程师也应该知道些硬件知识,模电、数电的基础还是要了解的。

硬件架构,笔者用arm比较多,推荐看Joseph Yiu的《ARM Cortex-M3与Cortex-M4权威指南》,然后就是各个芯片的芯片手册了,我还记得第一次看芯片手册的感受,“天书!” 写的都是啥,全然看不懂——后来我发现所有的芯片手册竟然都是一个套路,只要看完一个手册,再看其他的就很快了。

我还推荐你学习些FPGA的知识,用Verilog尝试做些简单的硬件设计,会让你更深入的了解硬件的工作原理。

操作系统是一切软件的地基,对于嵌入式操作系统的学习,推荐左忠凯的《FreeRTOS源码详解与应用开发》和FreeRTOS、RT-Thread的源码。

3.2 网络

先扫一遍《TCP/IP详解卷1》,这些本科课程学过就扫一遍,没学过就仔细看看了。

接着可以看实现,笔者用lwip比较多,推荐看朱升林的《嵌入式网络那些事》,配合lwip源码一起看。这本书看完,可以看看《TCP/IP详解卷2》和《TCP/IP详解卷3》,这2本也都是神级科学家W. Richard Stevens的著作,超级厚,还是那样不要强迫自己全读完,有选择的看。

3.3 安全技术(换成你自己的领域)

我这里只推荐一本密码学入门,结城浩的《图解密码技术》,写的通俗易懂,又不是特别深入,适合初学者,其他就要去找更加具体的资料了,读者们从事各个领域,自然知道要找什么书来看。

对于与这些书,我希望你能带着问题看,解决问题就合上,只看你感兴趣的部分,其他的章节偶尔翻翻混个眼熟就好;另外,很多书都是翻译过来的,有些表述并不准确,读起来不是那么容易,我也没有什么好办法,只能劝你静下心来慢慢看,反复看,多看几遍;最后,希望你能边看边实践,确认书中说的是对的,实践了才能内化成自己的。

为什么要“混个眼熟”?就是你要知道这本书还讲了什么,以后有类似的问题,就可以来有目的的翻阅了。

笔者认为,真正学的学会一样东西,有以下3个阶段,这3个阶段可能不是线性的,尤其第三个,可能是你很久以后恍然大悟才能达到。

3.4 真正知道的三个阶段

3.4.1 会用

比如那些网络接口函数,硬件驱动接口,你可以利用它们写出没有bug的代码,完成了项目任务,那就是会用了。

3.4.2 了解怎么实现

会用之后就是学习它背后是怎么实现的,这时你就要去查深入些的资料,看深入些的代码了,幸运的是,我们目前所能接触到的问题,大部分在互联网上都有答案,很容易就能找到,那些热爱求知的前辈们早已经为我们准备好了答案。

了解了实现,你就可以对之前写的代码进行优化了,你之前只能保证写出的代码没有bug,现在你知道它为什么没有bug了,遇到难搞的问题,你的思路会很开阔,马上找到问题点。

3.4.3 明白为什么这么实现

第三个阶段,就是你不单单要知道它怎么实现,你还要探求它为什么这么实现。

比如TCP/IP,为什么要分那么多层,还有没有其他的网络协议栈,几种协议栈不同之处在哪里,为什么其他协议栈就没这么普及呢?

比如各类嵌入式操作系统,为什么都宣称自己又快又小,他们的性能怎么评估,技术上实现的不同点在哪里,各个系统的作者为什么要那么实现?

当你能「评估」一类方案/技术的几种实现形式,说出各个形式的好坏差别,你就能做到融会贯通,在项目层面,你就知道如何取舍选择了。

以上是认知的第三个阶段,即不断的学习,真正的学会。这个阶段应当是贯穿整个职业生涯的始末,别人问一个问题,你第一时间的反应是”知道自己知道“,然后脑子里搜索答案。

4. 不知已知

买过很多书,看过很多书,你就形成了买书的习惯,看到一本新书,发现一本你没看过的书,你就想买来看。

买来新书,抱着学习的激情翻看目录,扫一遍,找到你感兴趣的章节开始读,边读边发现,咦,这说的不就是xxx原理吗,在xxx那本书中介绍过啊,这作者怎么换了个说法又讲一遍,这书真是买的多余。这时你其实不用怪作者,而是应该恭喜自己,恭喜你来到认知的第四个境界“不知道自己知道”。

你已经不需要再过多的看基础技术图书了,遇到一个问题,你自然有自己的解法,你不知不觉将之前从很多书中吸收的知识融汇贯通,任意组合,付与实践,而这些都是自然而然的事,你在解决问题时,不知道自己已经在用那些曾经学习到的知识了!


对于嵌入式领域的认知,笔者这里引入一个问题,这是笔者认为的嵌入式技术里的终极问题,这一个问题能知道你处于上面哪个状态,这一个问题也足够让你“学海无涯苦做舟”了,如果能把这个问题详详细细说的明明白白,你的嵌入式能力已经炉火纯青,至少不会遇到技术层面无法解决的问题了。

“有2个嵌入式设备A、B,通过网络连通可交互数据,其中A有外接按键,B有小显示屏,2个设备实现这样的程序:A键盘上按下某个按键,B显示屏将按键值显示出来。

请问:从A按下按键那一刻起,到B显示屏看到按键值,”按键值“这个数据是怎么从A的按键传输到B的显示屏的?

二. 升级打怪

写了这么多,是不是学完这些就可以独步天下了?

当然不是!这只是万里长征的小小一步,这小小的一步在我看来,一般需要5-10年左右的时间,有些人只是有着一个念头但从没有抬起脚。

这一步什么时候迈都不晚,最难的是你有勇气抬起脚。

迈过来后什么什么样的世界呢?我引用吴军博士的五级工程师划分来说明你的职业规划。

如图,吴军博士在他的很多书里提到这个五级工程师的划分,我们刚刚说的,完成那些学习与解决问题后,基本可以说,你已经站在这个金字塔的最底层了。五级工程师,你好,你看这塔,一点也不高。

在这里插入图片描述

这个时候你该做的,不单单只是一心沉浸在技术的海洋知识的海洋里了,因为我们毕竟是工程师,而非科学家,要开始运用知识,解决实际问题,再解决更大的实际问题了。

解决更大的实际问题就要向着四级工程师迈进,这时你不单单要自己懂技术,还要想办法尽快把你的”鱼“和”渔“授给其他人。

你还要学习管理知识,掌握与上、下级沟通的技巧,如何推动自身和团队快速进步是你的挑战。

对于三级工程师,除了具备4级工程师的能力,还需要能够紧跟时代,预判市场,懂得营销,不单单做得出产品,还能卖得出产品。

二级工程师是指能做出先前没有的东西,世界会因为这多少有点不同,吴军博士举了这两人作为例子:北极光风投的创始人邓锋、Google云计算的发明人迪恩(Jeff Dean)。笔者见识有限,所知甚少,嵌入式领域我能想到的人包括大疆的汪滔,柔宇的刘自鸿,这里大胆激进的把他们放在第二级。

第一级是开创一个产业的人,包括爱迪生、福特、贝尔等人。

各位应该好奇笔者处于第几级呢,我给自己定在4.5级,目前笔者可以独立完成老板交代的任务,也在努力学习提高自己团队的整体效率,产出更具创造性的成果。

三. 一点点建议

由于笔者实际经验有限,也在探索如何爬这个塔,不敢妄加定义,引人入歧途,下面只说一些个人看法,权当抛砖。

3.1 博览群书

计算机专业的同学不要只专研技术,也要看看经济、政治、生物、天文、地理、艺术、医学、历史等等,要知道,计算机这门学问,诞生不过几十年,放在人类历史长河中,比前面那些学科简直就是沧海一粟。

看杂书多的人理解力要比看的少的人强,看的多了,就会有一种「类比」的能力。

比如对于“面向对象”,如果在学习面向对象之前,你了解过亚里士多德的唯实论和他对「共相」的阐述,你就会理解的很快,跟本不用老师教思想,只用学学语法就行了,而且你免不了会在心里嘀咕,面向对象的设计者是否正是受亚里士多德「共相」启发而设计出了这样的软件开发方法?

3.2 慢慢的爬,聪明的爬

爬金字塔呢,就是攒的过程,很多人浮躁,学知识只学一半;有些人自以为聪明,总想找捷径;有些人勤奋刻苦,但不得其法。

文章一开始我说过,工程作业不比科学家,是不是名校,成绩好不好都不是大问题,想想你本科接受的教育也才4年,况且4年只是有那么一丁点基础知识,而工作是一场人生马拉松,可不单单要跑4年的。

只要一个人有学习能力,就可以解决大部分遇到的问题,区别无非学的快慢、攒的快与慢。

有些攒的快些,N年后,他们被称为「神」,这个比例是1%;

有些人攒的慢些,N年后,他们被称为「牛」,这个比例是9%;

有些人基本没攒什么,N年后,他们仍是「农」,这个比例有90%。

N ≥ 20

不好意思,上面这个比例是笔者杜撰的,我故意把「农」的比例增大,目的是警惕自身,也希望读者能警惕不要成为那90%。

进入那9%的「捷径」就是慢慢积累,我们普通人只要坚持学习积累,就一定能达到。

进入那1%可能就比较有挑战了,据我所知,好的工程师年薪会到百万美金以上(股票+奖金),注意这仅仅是工程师,这个层次能达到最好,达不到也不要强求。

3.3 多重构

总结是使人加速进步、聪明进步的很好的手段,对程序员来说,对代码最好的总结就是重构。

重构代码能带来至少两个好处,一个是对公司的,优化代码,易于维护,日后有其他人接手会更快上手;另一个就是对个人了,谁重构谁获益,这是学习的最佳手段,如果你写了10个项目,没有重构过一次,那你第11个项目用的数据结构、模块划分方式可能和第1个项目是还是一样的。

而如果你但凡重构过哪怕一次,当你写下一个项目时会更加得心应手高屋建瓴。

重构,不单单是为了优化过去,更大的好处是指引未来。

这就是爬金字塔的方法,不断的重复:学习-->实践-->总结,这个闭环。

全文完,希望你能从文中得到或多或少的启发。

我是科岩,知其然,知其所以然,我们下期见!


文中提到的几本书我都找到了电子版,网络上很多版本质量非常差,有的字根本看不清,我花了很大的力气找来这些高清版,有些书已经绝版,是我充了xx会员才得到的,都分享给大家,希望能对你有些帮助。

https://pan.baidu.com/s/16ub9T7BSJySnTHEjqmKoxg 提取码: kqds

欢迎微信搜索「 科岩成果 」,关注这个点灯工程师。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌入式工程师的自我修养 的相关文章

  • LLVM/clang & lib路径 & 测试代码

    部分转载自 xff1a Ubuntu编译安装llvm clangUbuntu14 04 Linux安装LLVM clang 3 7 xff08 带有标准库 libc 43 43 xff0c libc 43 43 abi xff09 所需即所
  • Flask+python 爬虫制作股票查询、历史数据、股评词云网页

    自学python的数据分析 xff0c 爬虫后 xff0c 花了几天时间学习Flask做了一个简单的股票查询网页 本想着加入其它的分析板块 xff0c 不过发现部署到服务器还要花钱 xff0c 于是先到此为止 xff0c 后面可能会继续加入
  • 海量数据处理总结

    当数据量变大的时候 xff0c 一些适用较小量数据的算法可能不适用了 xff0c 需要重新考虑具体处理措施 何谓海量数据处理 xff1f 所谓海量数据处理 xff0c 无非就是基于海量数据上的存储 处理 操作 何谓海量 xff0c 就是数据
  • 流媒体之DirectShow——视频采集

    文章目录 一 xff1a 介绍二 xff1a 设备枚举三 xff1a Video Graph3 1 视频预览3 2 录制视频到AVI文件3 3 录制视频到Windows Media File ASF 3 4 录制视频到其他文件格式3 5 录
  • Linux 平台驱动程序与 单片机程序 的异同

    不知不觉 xff0c 已经接触Linux 操作系统四年多 xff0c 对于什么是Linux 下的驱动 xff0c 这件事需要说明一下 1 什么是driver 驱动 首先 xff0c 需要有计算机组成原理的知识 xff0c 才方便了解驱动这个
  • STM32移植FreeRTOS无法启动任务的解决方法

    STM32移植FreeRTOS无法启动任务的解决方法 在实验过程中将FreeRTOS源码全部包含在了STM32F103的项目中 xff0c 但是在实验的过程发现创建的任务无法启动 xff0c 任务创建程序如下 xff1a span clas
  • 荣耀V10手机如何在非华为电脑上实现“多屏协同”?

    去年底 xff0c 华为发布了EMUI10版本 xff0c 在mate30系列手机上以及使用麒麟990和麒麟980的华为荣耀手机 xff0c 手机与windows系统华为或荣耀电脑上可实现 多屏协同 功能 所谓 多屏协同 xff0c 是一种
  • docker容器启动时会报 socket permission denied或者listen tcp port failed 等错误的原因

    最近在deepin系统上装了个snap xff0c 应该是给启用了apparmor这个东东 xff0c 导致原本运行正常的docker 容器在在使用socket监听网络端口时会报 socket permission denied或者 lis
  • VirtualBox+CentOS安装增强功能

    VirtualBox 43 CentOS安装增强功能 1 启动安装在 VirtualBox 中的 CentOS 5 5 虚拟机 xff0c 点击 设备 61 gt 安装增强功能 这个时候你就可以看到有一个 光盘 已经挂载到 CentOS 5
  • 设置yum的源为iso镜像文件

    默认的 yum 是以网络来安装的 xff0c 在没有网络或者网速不佳的情况下 xff0c 通过 yum 来安装软件是意见非常痛苦的事情 其实对于CentOSDVD来说 xff0c 里面提供的软件就足以满足我们的需要了 xff0c 而且DVD
  • make: *** /lib/modules/2.6.18-164.el5/build: No such file

    错误显示 没有 lib modules 2 6 18 164 el5 build 这个目录 xff0c 确认当前内核是这个版本么 xff0c 是的话安装 kernel devel kernel headers 软件包
  • centos6下配置softap需关闭NetworkManager服务

    最近在linux上使用了 fast 150us无线网卡 在网上找了一大堆资料 找到了8188eu驱动 安装成功 在配置hostapd服务时 xff0c 老是启动不起来 xff0c 或者是启动之后别的机器连不上热点 xff0c 当我将Netw
  • 不重新编译为PHP安装MySQL模块

    当初安装PHP的源码目录我没有删除 xff0c 直接在此基础上安装 xff1a 1 进入php ext mysql xff1a cd php ext mysql 2 执行phpize命令 xff0c 这个命令一定得在php的模块目录下执行
  • Linux 下 netbeans 字体抗锯齿正解

    在netbeans安装目录找到 etc 目录下的 netbeans conf 文件 xff0c 用你喜欢的编辑器打开这个文件 xff0c 在其中加入这个选项 J Dawt useSystemAAFontSettings 61 on 这里你要
  • 如何在CentOS系统中安装字体

    以linux下安装宋体 xff0c 黑体为例 xff0c 介绍字体安装方法 xff1a 第一步 拷贝 把对应字体的的ttf文件拷到 usr share fonts 的任意目录下 xff0c 假设宋体已拷贝到 usr share fonts
  • Intel CPU简介

    现在Intel已然成了CPU的代名词 xff0c 但当年的Intel并没有现在这么风光 从1978年发布的8086到2013年的四代i7 xff0c 整整35年 xff0c 她见证了从PC到互联网 移动互联网的几次巨变 xff1b 这些年的
  • 让AndroidX86竖屏显示

    以VirtualBox为例 xff0c Android X86的下载地址可以百度搜索 这种界面非常不爽 xff0c 尤其在调试程序时 xff0c 如何才能显示成竖屏呢 xff1f 先把AndroidX86装到硬盘上 然后进行下面设置 1 完
  • Call to undefined function imagettftext()

    今天将公司官网弄到本地测试到时候 xff0c 发现验证码无法显示 xff0c 公司的官网以前是用dede做的 xff0c 找到dede中的include vdimgck php 单独运行 xff0c 没有报错 xff0c 也不显示 顺着文件
  • 在linux下安装glut包

    转自 xff1a http blog csdn net delacroix xu article details 5478429 在linux下opengl编程 xff0c 首先需要安装glut包 1 安装glut xff08 1 xff0
  • configure: error: could not find working GL library

    plib1 8 3下载地址 xff1a http pkgs fedoraproject org repo pkgs plib plib 1 8 3 tar gz de10b19dfcee5da7115ee2a69656f34c plib 1

随机推荐

  • 一篇关于su和sudo以及visudo的很好的介绍性文档

    一 使用 su 命令临时转换用户身份 1 su 的适用条件和威力 su命令就是转换用户的工具 xff0c 怎么理解呢 xff1f 比如我们以普通用户beinan登录的 xff0c 但要添加用户任务 xff0c 执行useradd xff0c
  • 微信公众号开发中的openid值并不是固定的

    在做微信开发时 xff0c 今天犯了一个错误 xff0c 检查了半天才检查出来 微信在向第三方推送信息时会带上一个openid 这是发送信息者的唯一标识 xff0c 看文档说是唯一标识 就以为这个id只与微信号有关 xff0c 而今天才发现
  • linux下单独编译安装Apache rewrite_module

    转自 xff1a http blog chinaunix net uid 25266990 id 145266 html Apache已经编译安装完了 xff0c 上传程序 xff0c 发现必须得用rewrite xff0c 重新上载模块
  • linux 下安装php的openssl扩展

    1 安装openssl 解压php的源码包 tar zxvf php 5 3 8 tar gz cd soft php 5 3 8 ext openssl mv config0 m4 config m4 否则报错 xff1a 找不到conf
  • php安装 出现Sorry, I cannot run apxs. ***错误解决方法

    tar zvxf php 5 1 2 tar gz cd php 5 1 2 configure prefix 61 usr local php with mysql 61 usr local mysql with apxs2 61 usr
  • linux下mysql的root密码忘记解决方

    1 xff0e 首先确认服务器出于安全的状态 xff0c 也就是没有人能够任意地连接MySQL数据库 因为在重新设置MySQL的root密码的期间 xff0c MySQL数据库完全出于没有密码保护的 状态下 xff0c 其他的用户也可以任意
  • Pandas DataFrame

    http pandas pydata org pandas docs stable api html dataframe 构造函数 方法描述DataFrame data index columns dtype copy 构造数据框 属性和数
  • Apache域名自动指向虚拟主机目录

    用apache做项目时 xff0c 是经常需要在httpd vhost conf文件中配置虚拟主机 xff0c 用于单独的项目 xff0c 每新开一个项目就需要重新加一个配置 xff0c 着实麻烦 xff0c apache2其实是支持在配置
  • CentOS上升级PHP5.3至PHP5.5

    最近想玩玩儿symfony2 发现自己CentOS上的PHP版本还是5 3不符合要求 xff0c 所以想升级至5 5 但是 CentOS通过yum更新的源最新版本是5 3 无法升级 xff0c 通过网上查找资料 发现 更新下yum的源后 可
  • 启动docker web服务时 虚拟机端口转发 外部无法访问

    centos 7 docker 启动了一个web服务 但是启动时 报 WARNING IPv4 forwarding is disabled Networking will not work 网上查询了下 需要做如下配置 解决办法 xff1
  • CentOS7下docker启动报Error starting daemon: Error initializing network controller: could not delete ...v

    前一天晚上强制关闭了虚拟机 CentOS7 导致早上启动docker 报Error starting daemon Error initializing network controller could not delete ve endp
  • 在ubuntu1404下安装PHP AMQP拓展 并进行docker容器封装

    有项目用到过rabbitmq 是技术负责人搭建好环境 xff0c 今天自己在本地 ubuntu 开发 xff0c 重新搞了下 xff0c 在网上查了下资料 xff0c 把安装重点记录下来 项目开发语言PHP 需要与一台rabbitmqser
  • centos7下将docker的storage 由loop-lvm 更改为 direct-lvm

    本机服务器环境是centos7 xff08 vbox虚拟机 xff09 安装docker后 运行正常 xff0c 某次强行关闭了虚拟机 导致后续docker运行不起来 xff0c 发现报错是与storage有关 xff0c 所以网上查原因是
  • ubuntu1604下添加自启动项 开机启动docker开发环境

    在win7下安装的vbox虚拟机 xff0c 虚拟机起了一个ubuntu1604作为宿主机 xff0c 安装的docker服务 通过vbox的挂载工具将win7下的程序开发目录挂载到了ubuntu下 作为共享目录 docker安装的开发环境
  • apache2自签名证书开启ssl

    生成私钥文件 需要输入密码 openssl genrsa des3 out apache key 1024 防止APACHE启动 读取私钥文件也需要输入密码 去除密码输入 openssl rsa in apache key out apac
  • alpine 下编译php5.4的源码报Invalid configuration `x86_64-linux-musl'错误

    Invalid configuration 96 x86 64 linux musl 39 system 96 musl 39 not recognized configure error bin bash 在alpine3 7上编译php
  • golang GRPC安装

    1 下载protoc编译器 https github com protocolbuffers protobuf releases 将protoc exe放到系统环境变量设置的目录下 2 安装golang相关的package go get g
  • reStructuredText

    段落 段落必须由空行代替 段落1 段落2 内联标记 span class hljs emphasis 斜体 span span class hljs strong 粗体 span span class hljs code 96 96 代码块
  • win10下安装kubernets

    win10下安装docker for windows后 xff0c 新版是有一个kubernets选项 xff0c 选择启动后 xff0c 一直报 kubernets is starting 的错误 xff0c 原因是 xff0c kube
  • 嵌入式工程师的自我修养

    文章目录 前言一 认知的四个阶段1 不知不知2 知道不知3 知道己知3 1 软硬件3 2 网络3 3 安全技术 xff08 换成你自己的领域 xff09 3 4 真正知道的三个阶段3 4 1 会用3 4 2 了解怎么实现3 4 3 明白为什