当前位置: 首页 > news >正文

懒羊羊闲话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内存管理机制&#xff…...

蓝桥杯-回文日期[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源码下载流程图如下所示&#xff1a; 1. 安装Git和Repo工具 2. 创建一个工作目录 3. 初始化仓库并下载源码 4. 切换到指定的分支 5. 编译源码 具体步骤如下&#xff1a; 安装Git和Repo工具&#xff1a;在Linux或Mac上&#xff0c;可以通过终端运行以下命令安装Gi…...

第三章:人工智能深度学习教程-基础神经网络(第三节-Tensorflow 中的多层感知器学习)

在本文中&#xff0c;我们将了解多层感知器的概念及其使用 TensorFlow 库在 Python 中的实现。 多层感知器 多层感知也称为MLP。它是完全连接的密集层&#xff0c;可将任何输入维度转换为所需的维度。多层感知是具有多个层的神经网络。为了创建神经网络&#xff0c;我们将神…...

Python的版本如何查询?

要查询Python的版本&#xff0c;可以使用以下方法之一&#xff1a; 1.在命令行中使用python --version命令。这会显示安装在计算机上的Python解释器的版本号。 # Author : 小红牛 # 微信公众号&#xff1a;wdPython2.在Python脚本中使用import sys语句&#xff0c;然后打印sy…...

Git的高效使用 git的基础 高级用法

Git的高效使用 git的基础 高级用法 前言 什么是Git 在日常的软件开发过程中&#xff0c;软件版本的管理都离不开使用Git&#xff0c;Git是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理从很小到非常大的项目版本管理。 也是Linus Torvalds为了帮助管理Linu…...

关于主表和子表数据的保存

业务需求&#xff1a; 投注站信息保存在表A里&#xff0c;投注站下的设备信息保存在表B里&#xff0c; 一个投注站会有多个设备&#xff0c;要在一个表单里进行投注站和设备信息的填写&#xff0c;保存&#xff0c;回填&#xff0c;修改。 思路&#xff1a; 1&#xff09;将…...

如何在后台执行 SwiftData 操作

文章目录 前言Core Data 私有队列上下文SwiftData 并发支持使用 ModelActor合并上下文更改的问题通过标识符访问模型总结 前言 SwiftData 是一个用于处理数据操作的框架&#xff0c;特别是在 Swift 语言中进行并发操作。本文介绍了如何在后台执行 SwiftData 操作以及与 Core D…...

TCP和UPD协议

一)应用层协议简介:根据需求明确要传输的信息&#xff0c;明确要传输的数据格式&#xff1b; 应用层协议:这个协议&#xff0c;实际上是和程序员打交道最多的协议了 1)其它四层都是操作系统&#xff0c;驱动&#xff0c;硬件实现好了的&#xff0c;咱们是不需要管 2)应用层:当我…...

MySQL:锁机制

目录 概述三种层级的锁锁相关的 SQLMyISAM引擎下的锁InnoDB引擎下的锁InnoDB下的表锁和行锁InnoDB下的共享锁和排他锁InnoDB下的意向锁InnoDB下的记录锁&#xff0c;间隙锁&#xff0c;临键锁记录锁&#xff08;Record Locks&#xff09;间隙锁&#xff08;Gap Locks&#xff0…...

​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​

软考-高级-系统架构设计师教程&#xff08;清华第2版&#xff09;【第1章-绪论-思维导图】 课本里章节里所有蓝色字体的思维导图...

【Git】安装和常用命令的使用与讲解及项目搭建和团队开发的出现的问题并且给予解决

目录 Git的简介 介绍 Git的特点及概念 Git与SVN的区别 图解 ​编辑 命令使用 安装 使用前准备 搭建项目环境 ​编辑 团队开发 Git的简介 介绍 Git 是一种分布式版本控制系统&#xff0c;是由 Linux 之父 Linus Torvalds 于2005年创建的。Git 的设计目标是为了更好地管…...

Python进行数据可视化,探索和发现数据中的模式和趋势。

文章目录 前言第一步&#xff1a;导入必要的库第二步&#xff1a;加载数据第三步&#xff1a;创建基本图表第四步&#xff1a;添加更多细节第五步&#xff1a;使用Seaborn库创建更复杂的图表关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Pyth…...

2023年中国自然语言处理行业研究报告

第一章 行业概况 1.1 定义 自然语言处理&#xff08;Natural Language Processing&#xff0c;简称NLP&#xff09;是一门交叉学科&#xff0c;它结合了计算机科学、人工智能和语言学的知识&#xff0c;旨在使计算机能够理解、解释和生成人类语言。NLP的核心是构建能够理解和…...

终极指南:如何用Universal x86 Tuning Utility免费解锁电脑隐藏性能

终极指南&#xff1a;如何用Universal x86 Tuning Utility免费解锁电脑隐藏性能 【免费下载链接】Universal-x86-Tuning-Utility Unlock the full potential of your Intel/AMD based device. 项目地址: https://gitcode.com/gh_mirrors/un/Universal-x86-Tuning-Utility …...

S32K146实战:手把手教你用EIM模块给SRAM注入ECC故障(附完整代码)

S32K146实战&#xff1a;深入解析EIM模块在SRAM ECC故障注入中的应用 1. 嵌入式系统中的SRAM与ECC机制 在现代汽车电子系统中&#xff0c;内存可靠性直接关系到功能安全。S32K146作为NXP面向汽车电子推出的微控制器&#xff0c;其内置的SRAM模块配备了强大的ECC&#xff08;纠错…...

避坑指南:在Linux下玩转NVIDIA GPU Direct时,那些关于IOMMU和地址映射的‘坑’与最佳实践

避坑指南&#xff1a;Linux下NVIDIA GPU Direct的IOMMU与地址映射实战解析 当你在凌晨三点盯着屏幕上那条令人窒息的NVRM: GPU at PCI:0000:3B:00.0: GPU does not support NvLink报错时&#xff0c;就会明白——高性能计算从来不是简单的apt-get install就能解决的。本文将带你…...

Qt Quick布局避坑指南:为什么我的RowLayout子项不显示?5个常见锚点冲突案例解析

Qt Quick布局避坑指南&#xff1a;为什么我的RowLayout子项不显示&#xff1f;5个常见锚点冲突案例解析 当你在Qt Quick项目中精心设计了RowLayout布局&#xff0c;却发现某些子项神秘消失时&#xff0c;那种挫败感就像在黑暗房间里寻找不存在的电灯开关。本文将带你深入五个典…...

高阶导数的核心概念与工程应用解析

1. 高阶导数基础概念解析在微积分教学中&#xff0c;二阶导数往往是我们接触到的第一个"高阶"概念。当我在大学第一次讲授这个内容时&#xff0c;发现学生们普遍存在一个认知断层——他们能熟练计算一阶导数&#xff0c;却对二阶导数的物理意义感到困惑。这促使我重新…...

Pixel Language Portal应用场景:跨境SaaS产品实时多语种客户支持响应

Pixel Language Portal应用场景&#xff1a;跨境SaaS产品实时多语种客户支持响应 1. 跨境业务中的语言挑战 在全球化的商业环境中&#xff0c;跨境SaaS产品面临的最大挑战之一就是语言障碍。当客户来自不同国家和地区时&#xff0c;如何提供及时、准确的多语言支持成为企业必…...

C++26反射在现代框架开发中的革命性应用(LLVM/Clang 19.0实测源码揭秘)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;C26反射特性在元编程中的应用概览 C26 正式引入静态反射&#xff08;static reflection&#xff09;作为核心语言特性&#xff0c;通过 std::reflexpr 和配套的反射查询接口&#xff0c;使编译期获取类…...

Kurtosis封装AutoGPT:一键部署AI智能体,告别环境依赖地狱

1. 项目概述&#xff1a;当AutoGPT遇见Kurtosis如果你在AI应用开发领域摸爬滚打过一阵子&#xff0c;尤其是尝试过那些前沿的自主智能体项目&#xff0c;那你大概率听说过AutoGPT。这个项目在去年掀起了一阵不小的风浪&#xff0c;它展示了让一个AI智能体自主拆解复杂任务、调用…...

HyperOpt自动化机器学习:贝叶斯优化与scikit-learn集成

1. 自动化机器学习与HyperOpt简介 在机器学习实践中&#xff0c;模型选择和超参数调优往往是最耗时的环节。传统的手动调参不仅需要丰富的领域知识&#xff0c;还需要大量的试错时间。这正是自动化机器学习&#xff08;AutoML&#xff09;技术应运而生的背景。 HyperOpt是一个…...

ECOC多分类方法:原理、实现与优化策略

1. 理解错误校正输出编码&#xff08;ECOC&#xff09;的核心思想在机器学习领域&#xff0c;多分类问题一直是个有趣的挑战。想象一下&#xff0c;你手头有一堆专门解决"是或否"问题的工具&#xff08;比如逻辑回归、支持向量机&#xff09;&#xff0c;但现在需要处…...