懒羊羊闲话2
前言:
笔者谈不上是某个领域的高手,也不是大厂的某个神秘高手,一直游离于小型公司,写下这篇文章献给那些无法接触到好的学习环境,苦恼自己原地踏步的coder。
1、如何快速熟悉某个行业
作为一个编码多年的程序员,我们要认识到仅仅会编码是不够的。老板愿意付给我们薪水,并不是表扬我们的编码水平,老板也大多数不太懂技术的细节。老板关心的只是我们的投入产出比,就是说付给程序员那么多工资,我们能给公司带来多大效益。这就决定了编码是为了实现业务,为了卖钱的,并不是单纯的炫技!
所以,作为一个老鸟,熟悉一个行业是非常重要的!这样才能把我们的技术最大化产出。新进一个行业如何快速熟悉呢?
100个行业关键词,找出这行业里的100个关键词,反复把它弄懂,这样我们就有可以有了和其它同事沟通的基础。
买2~3行业的经典书籍,反复精读!如果仅仅是靠请教同事,今天学一点,明天学一点,就不能有效形成自己的知识体系。
和该行业的专家聊天,因为前面我们已经有了准备,再多和行业的专家聊天,有助于把书本上知识变成我们的认知。知识转化为我们所用才有价值,如果仅仅知道得很多,却运用不起来,很快会被大脑给遗忘!
2、如何成为某个领域的专家
脑科学告诉我们,成为一个领域的专家没有捷径的。因为脑神经建立链路,并且能达到快速自如的效果没有10万个小时是不行的。看过很多名人传记,他们说别人认为他们是天才,而他们觉得自己仅仅是更努力而已。
《认知觉醒》里的复利曲线也是这个道理,前面可能我们努力了8万个小时,往往觉得自己很多东西都似懂非懂,可能我们再努力突破某个临界值之后,后面的进步就大为迅速,有点像是打通任督二脉那样。
所以大家知道了大脑的原理之后,就应该守住本分,而不应该半途而废。打退堂鼓造成的后果就是本来脑神经已经建立很多链接,因为得不到进一步地固化,后续就慢慢消失了!
3、如何写出稳定可控的代码
Don't repeat! 不要重复自己,绝大部分新手写代码都喜欢遇到问题解决问题,许多新手写代码,喜欢到处复制黏贴,像贴狗皮膏药那样,只求能把功能完成就可以了,从来不会停顿下来思考一样代码有什么可以共用的地方。我见过一个项目里,光是xml解析库就有4~5种,而且每个库都是有各自缺陷的。
不懂得把该行业所涉及的技术切割成不能再切割的技术点,然后为这些技术点打磨工具箱。导致的问题呢就是每次做一个新项目,又反复地去查找解决技术方案,这样我们曾经的积累就约等于0!这样行为一个最大的问题点就是每个新项目都疲于奔命,为了赶进度又疯狂加班,形成一种恶性循环。
天下文章一大抄,严格按照经典书籍的原则写代码,一开始不懂不要紧,先照抄,抄久了总有会明白的一天。
测试先行,前面说到我们准备自己的技术点工具箱,那么应该自己测试好自己的工具箱,而不是随便搞搞就丢到工具箱里,那样相当于我们给自己制造一大堆生锈的工具。写大型代码的时候也是一样,应该写一个小系统,等测试稳定之后再往大系统里加,而不是边加边测,出了问题再大改!
防御式编程:
1)禁用跨模块的全局变量,慎用单例模式
2)学会分割小函数,经调用,代码的bug和函数的行数成一定的比例关系,函数过长越容易出现问题
3)仔细检测每个函数传入的参数,断言和异常处理要做好!我也是花了很长时间才明白断言和异常处理的区别。
断言是帮助程序员在调试阶段避免粗心导致的程序出错,
举个例子我们断言传参的指针不为空指针,只要我们精神状态好的时候,不会说故意传个空指针让程序崩溃,但是人总是会有状态坏的时候,加功能的时候不小心就传入了空指针。这样断言就能够在调试阶段提前预警!
断言和异常处理是形影相随的兄弟,并不是说我们做了断言,就不需要再去做异常处理了。因为断言只能在调试阶段帮我们避免错误,运行阶段还是要靠异常处理的,比方说参数不对了,我们就应该函数直接返回,而不是继续往下运行业务。
4)日志,适当的日志配合异常处理,是我们解决问题的最有力工具。若是软件已经运行在电脑上了,我们大多数能依靠的就是日志了。因为不管测试多么努力,程序员多么努力,BUG是不可能消除干净的,这个时候日志就是最后一道防火墙了!
其实还是有很多很多写出高质量代码的规则,我就不再一一列举,我只是把我认为比较重要的几项挑出来给大家讲讲,若是你们能看懂1~2点,你们也就渐渐能掌握写出稳定的代码了!
4、如何学习编程
很多新手在学习一门新的语言的时候,往往听到别人说某些本书籍经典,就赶紧网购好几本回来。然后在几个阳光灿烂的周末翻一翻,闻一闻,不出几天就觉得书本晦涩难懂,远不如打几把游戏来得舒服,后面就渐渐地把它们束之高阁!
我们决定学习某本书之前,应该先翻翻,自己是否有触动,是否太难,还是太容易。若是理解太困难,证明这本书在目前这个阶段不适合自己学习。如果太容易,再看它就纯粹是浪费自己的时间!
我们应该凭感觉学习,就是一本书不要求把所有的知识点掌握,只要它能给我们带来触动,然后我们能够运用到实际工作中,这本书就值得了。但是大部分新手还是保持以前应试教育的习惯,力求把书中所有的知识看一遍,也不看看这些知识点和自己的工作生活是否有关联!
不能关联的知识点即使你学了,也很快会忘记的,更谈不上运用它了。
所以我们不关联不学习,不触动不学习,只要学习到的1~2点知识能够实践。远比知道20个知识点更重要。就像是珍珠螺那样,一层一层加厚我们的认知圈!假如时日,一定能形成复利曲线!
相关文章:
懒羊羊闲话2
前言: 笔者谈不上是某个领域的高手,也不是大厂的某个神秘高手,一直游离于小型公司,写下这篇文章献给那些无法接触到好的学习环境,苦恼自己原地踏步的coder。 1、如何快速熟悉某个行业 作为一个编码多年的程序员&#…...
多路转接(上)——select
目录 一、select接口 1.认识select系统调用 2.对各个参数的认识 二、编写select服务器 1.两个工具类 2.网络套接字封装 3.服务器类编写 4.源文件编写 5.运行 一、select接口 1.认识select系统调用 int select(int nfds, fd_set readfds, fd_set writefds, fd_set ex…...
基于SSM的图书管理借阅系统设计与实现
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...
Python的内存优化
在Python中,内存管理和优化是一个复杂的话题,因为它涉及到Python解释器的内部机制,特别是Python的垃圾收集和内存分配策略。Python通过自动垃圾收集机制管理内存,主要包括引用计数和标记-清除算法。 Python内存管理机制ÿ…...
蓝桥杯-回文日期[Java]
目录: 学习目标: 学习内容: 学习时间: 题目: 题目描述: 输入描述: 输出描述: 输入输出样例: 示例 1: 运行限制: 题解: 思路: 学习目标: 刷蓝桥杯题库日记 学习内容: 编号498题目回文日期难度…...
acwing算法基础之搜索与图论--树与图的遍历
目录 1 基础知识2 模板3 工程化 1 基础知识 树和图的存储:邻接矩阵、邻接表。 树和图的遍历:dfs、bfs。 2 模板 树是一种特殊的图(即,无环连通图),与图的存储方式相同。 对于无向图中的边ab,…...
前端uniapp请求真是案例(带源码)
目录 案例一案例二最后 案例一 <template><view class"box"><!-- <view class"title-back" click"backPrivious"><</view> --><!-- <view class"title-back" click"backPrivious"…...
MySQL -- mysql connect
MySQL – mysql connect 文章目录 MySQL -- mysql connect一、Connector/C 使用1.环境安装2.尝试链接mysql client 二、MySQL接口1.初始化2.链接数据库3.下发mysql命令4.获取执行结果5.关闭mysql链接6.在C语言中连接MySQL 三、MySQL图形化界面推荐 使用C接口库来进行连接 一、…...
如何用AI帮你下载安卓源码
以Android 11源码下载流程图如下所示: 1. 安装Git和Repo工具 2. 创建一个工作目录 3. 初始化仓库并下载源码 4. 切换到指定的分支 5. 编译源码 具体步骤如下: 安装Git和Repo工具:在Linux或Mac上,可以通过终端运行以下命令安装Gi…...
第三章:人工智能深度学习教程-基础神经网络(第三节-Tensorflow 中的多层感知器学习)
在本文中,我们将了解多层感知器的概念及其使用 TensorFlow 库在 Python 中的实现。 多层感知器 多层感知也称为MLP。它是完全连接的密集层,可将任何输入维度转换为所需的维度。多层感知是具有多个层的神经网络。为了创建神经网络,我们将神…...
Python的版本如何查询?
要查询Python的版本,可以使用以下方法之一: 1.在命令行中使用python --version命令。这会显示安装在计算机上的Python解释器的版本号。 # Author : 小红牛 # 微信公众号:wdPython2.在Python脚本中使用import sys语句,然后打印sy…...
Git的高效使用 git的基础 高级用法
Git的高效使用 git的基础 高级用法 前言 什么是Git 在日常的软件开发过程中,软件版本的管理都离不开使用Git,Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 也是Linus Torvalds为了帮助管理Linu…...
关于主表和子表数据的保存
业务需求: 投注站信息保存在表A里,投注站下的设备信息保存在表B里, 一个投注站会有多个设备,要在一个表单里进行投注站和设备信息的填写,保存,回填,修改。 思路: 1)将…...
如何在后台执行 SwiftData 操作
文章目录 前言Core Data 私有队列上下文SwiftData 并发支持使用 ModelActor合并上下文更改的问题通过标识符访问模型总结 前言 SwiftData 是一个用于处理数据操作的框架,特别是在 Swift 语言中进行并发操作。本文介绍了如何在后台执行 SwiftData 操作以及与 Core D…...
TCP和UPD协议
一)应用层协议简介:根据需求明确要传输的信息,明确要传输的数据格式; 应用层协议:这个协议,实际上是和程序员打交道最多的协议了 1)其它四层都是操作系统,驱动,硬件实现好了的,咱们是不需要管 2)应用层:当我…...
MySQL:锁机制
目录 概述三种层级的锁锁相关的 SQLMyISAM引擎下的锁InnoDB引擎下的锁InnoDB下的表锁和行锁InnoDB下的共享锁和排他锁InnoDB下的意向锁InnoDB下的记录锁,间隙锁,临键锁记录锁(Record Locks)间隙锁(Gap Locks࿰…...
软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】
软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】 课本里章节里所有蓝色字体的思维导图...
【Git】安装和常用命令的使用与讲解及项目搭建和团队开发的出现的问题并且给予解决
目录 Git的简介 介绍 Git的特点及概念 Git与SVN的区别 图解 编辑 命令使用 安装 使用前准备 搭建项目环境 编辑 团队开发 Git的简介 介绍 Git 是一种分布式版本控制系统,是由 Linux 之父 Linus Torvalds 于2005年创建的。Git 的设计目标是为了更好地管…...
Python进行数据可视化,探索和发现数据中的模式和趋势。
文章目录 前言第一步:导入必要的库第二步:加载数据第三步:创建基本图表第四步:添加更多细节第五步:使用Seaborn库创建更复杂的图表关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Pyth…...
2023年中国自然语言处理行业研究报告
第一章 行业概况 1.1 定义 自然语言处理(Natural Language Processing,简称NLP)是一门交叉学科,它结合了计算机科学、人工智能和语言学的知识,旨在使计算机能够理解、解释和生成人类语言。NLP的核心是构建能够理解和…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
C++实现分布式网络通信框架RPC(2)——rpc发布端
有了上篇文章的项目的基本知识的了解,现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...
