不要一上来就学框架

不要把精力消耗在别人规定的规则和框架下 远离底层竞争模式 阅读详情

问:有两年多前端经验,但感觉自己对后端知之甚少,没有安全感。但是后端语言又多,不知道学哪一门性价比好一些,求教。

语言不是重点,尤其是你已经会一门语言的情况下,后端编程最最基本的技术是这些:

1.浏览器和服务器是怎么打交道的? 

重点就是HTTP协议。

2. 理解url 和 代码之间的关联, 例如 www.xxx.com?action=login  这样的url 是怎么和后端的业务代码关联起来的? 

这样的规则是在哪里定义的?用代码、注解还是配置文件?

后端的业务代码是怎么组织的?相信现在不会有人把业务逻辑都写到Servlet当中了,  所以需要很多MVC 框架像Struts , SpringMVC 来组织代码,让系统清晰易懂。

3.数据的验证、转换和绑定

如何保证浏览器发过来的数据是符合要求的?例如不能为空、不超过8个字符、两个密码必须相等....  , 出错了得给出错误提示。

浏览器发过来的数据都是形如username=liuxin&password=123456这样简单的文本, 但是后台程序却有着丰富的数据类型,什么String, Date ,Integer等等。所以需要把文本变成指定语言的类型,如何做转换?

类型转换以后, 后端的业务代码怎么才能有效的使用呢?

最简单的就是弄一个key : value 这个样的Map 出来, 业务代码直接用map.get(key) 即可,但是这样做缺乏“契约”,非常难以理解。

高级一点的可以把页面发来的数据直接绑定到对象的属性上, 并且支持数组,嵌套等复杂的结构。

例如user.name=liuxin&user.password=123456  可以绑定到一个叫User的对象, 其中有两个属性userName和password。 

4. 数据库访问

这一块是比较麻烦的, 毕竟面向对象(OO)世界和关系(Relational)数据库之间存在着天然的鸿沟。 

对于简单的应用, 直接写点JDBC就够用了,只需要掌握Connection, Statement , Resultset这三个基础。 

复杂点的需要用O/R Mapping 框架来搞定,例如 Hibernate, MyBatis  ,还有RoR的ActiveRecord。

这其中比较棘手的就是表之间的关联, 就是所谓的一对多, 一对一, 多对多这样的关系, 如何在面向对象的世界里描述。

扩展开去,还需要处理连接池, 事务,锁 等各种烦人问题。

5. 业务代码的执行

把业务代码放到哪里?代码该怎么组织?用事务脚本还是领域模型?贫血还是充血?

6.如何把对象变成json和其他格式,让前端使用。

原来的后端会用模板(JSP,Veloctiy ,FreeMaker等)生成页面,现在基本上是通过API提供数据了,需要把Java/Python对象变成JSON等格式来传输到前端。

搞定了前面这几点,就搞定了一个基本的网站后端了。

如果你仅仅是想了解下后端编程是什么样子,可以直接去学学框架,Java可以直接学Springboot,MyBatis, Python可以学Django,  Flask,这些框架的抽象程度和封装程度都非常高,把上面所说的技术点都给屏蔽了,只要会用,就能开发后端程序。

如果你想深入学习后端编程,强烈建议:不要一上来就学框架。

要先用这些语言提供的最基本的能力,把这些技术点自己做一下,然后进入框架的世界,这样理解会非常深刻。 

例如Java, 它提供了Web开发最最基本的功能:Servlet 和JDBC,Python也是类似,有WSGI, PyMySQL可以直接使用,用他们就可以做URL和代码的映射,数据的转换和绑定,数据库的访问。 

从实践上来讲,可以用项目驱动的方法,做个博客之类的小项目,和你的前端编程结合起来。

接下来就是高并发,海量数据相关的东西了:

用ngnix做负载均衡和反向代理,用redis做缓存,用es做搜索,用mq来解耦,削峰填谷。每一点都够你挖掘很久。 

上面这些软件都支持分布式下的高可用性,单点不够了就搞分布式,拆分数据库,拆分应用,搞微服务,限流/降级,部署的时候用docker,用k8s管理。

在分布式环境下很容易出现各种问题:数据一致性,同步操作,事务。这又会引发分布式锁,又需要通过分布式锁,BASE, TCC等技术来解决。

写了这么多,我想说的是:后端广阔天地,大有可为 !就看你想前进到哪一步了 !

640?wx_fmt=gif

这篇文章来自于我的知识星球“码农翻身”的一个问答, 类似的精华文章在星球中还有很多,你看到的只是冰山一角。 

我是刘欣, 拥有15年以上的软件行业从业经验,前IBM系统架构师,擅长企业应用架构和设计,领导过多个企业级应用架构设计和开发工作。

敏捷软件开发专家,敏捷教练,曾经给多家企业做过敏捷咨询和培训,包括华为杭州研发中心,工商银行广州开发中心,工商银行北京开发中心,鼎桥科技等。

强烈推荐我的星球“码农翻身”, 我会在其中分享我的所思所想,和大家近距离交流。

640?wx_fmt=png

数据分析学习总结笔记02:聚类分析及其R语言实现 ** 数据分析学习总结笔记02:聚类分析Cluster Analysis ** 1. 聚类分析概述 1.1 聚类分析的直观理解 在科学研究、社会调查或日常生活中,通过观察个体的特征,将群体中的个体归为不同的族群/簇(Cluster)。 2. 聚类分析的方法 3. 聚类分析的应用 3.1 市场营销——精准营销 在市场营销中,基于消费者的历史交易信息、消费者背景等对消费者进行划分,从而对不同类型的消费... 阅读详情

相关推荐

Sigrity IBIS建模实战:如何用T2B工具快速转换SPICE模型(附避坑指南)

本文详细介绍了如何使用Sigrity T2B工具将SPICE模型高效转换为IBIS模型,涵盖从环境配置、模型预处理到转换流程和验证策略的全过程。通过实战案例和避坑指南,帮助硬件工程师掌握高速电路设计中的IBIS建模技术,提升信号完整性分析效率。

weixin_29243279的博客 393

作为程序员不要一上来就学框架

语言不是重点,尤其是你已经会一门语言的情况下,后端编程最最基本的技术是这些: 1.浏览器和服务器是怎么打交道的? 重点就是HTTP协议。 2. 理解url 和 代码之间的关联,例如 www.xxx.com?action=login 这样的url 是怎么和后端的业务代码关联起来的? 这样的规则是在哪里定义的?用代码、注解还是配置文件? 后端的业务代码是怎么组织的?相信现在不会有人把业...

阚荣华的程序人生 466

合规批量下载美国上市公司年报数据的一些经验和总结

本文总结了使用Python脚本批量下载和处理美国上市公司SEC报告的技术经验。通过CIK代码查询SEC EDGAR系统,生成特定日期和报告类型的URL,并使用Selenium和Requests库下载报告内容。流程包括数据获取、文件下载、Excel处理和多线程优化,确保高效处理几百条数据。关键技术挑战包括SEC访问限制、动态网页内容和数据完整性,解决方案包括设置合规的User-Agent、使用Selenium模拟浏览器行为以及错误日志记录。最佳实践包括模块化设计、多线程优化和严格遵守SEC合规性。该自动化流程

jyfool的博客 1635

程序员,请停止学习框架

今天无意间看到了这篇文章,自己也是深受启发,框架只是工具,我们只需要拿来用,但是真正需要学习的,是底层的原理,以及脱离框架后类似功能的实现方法。技术,就像时尚,在以光速在变化着,为了赶上它,我们需要跑的非常快,但是这个跑道上没有终点,所以没有赢家。 在看原文的时候,我也看了很多人的评论,也觉得很有意思,部分截图如下: 每过几年都有类似的文章出现,然而程序员却依然疲于学习新的框架,看完此文希望...

门心叼龙的专栏 3987

电商产品组合策略:引流品与利润品的实战方法论

在电商运营中,产品组合策略是提升流量转化与利润增长的核心技术。其基本原理是通过数据化选品构建产品矩阵,利用引流品吸引用户流量,再通过利润品实现商业变现。这种策略不仅能优化广告投放的ROAS(广告投入产出比),还能显著提升客单价。技术实现上需要结合Google Analytics等工具进行归因分析,并运用动态库存管理模型控制风险。该方案特别适用于Amazon、Shopify等电商平台,能有效解决跨境电商业内流量获取与利润创造的平衡难题。通过实战案例可见,合理的产品组合可使客单价提升30-50%,是电商运营必备

weixin_42522009的博客 350

嵌入式:简单的service框架

在嵌入式中,我们获取一个资源、设置一个变量、更新数据的话最直接的方式就是直接调用一个函数。这样的写法也可以满足基本的功能,前提是这个系统是只要一个任务,只有一个while(1)如图1.1。图1.1当有两个或者两个以上的任务的时候,同时调用一个函数(设置一个状态值、操作同一个资源、操作指针等行为)的流程如图1.2。图1.2当两个任务同时操作一个资源的时候,就会有重入的问题,会导致想不到的异常问题(数据不对、指针异常等)。

stupid的博客 986

DevOps生命周期,小码农也有大梦想,干货满满!

今年互联网形式依旧严峻,再次爆发几次大规模裁员潮。我决定把这篇文章分享出来帮助那些对前途感到迷茫的朋友。 在猎头的眼里,我已不是根正苗红的程序员。何为根正苗红?计算机专业毕业,从毕业起就从事特定方向的开发工作,这才是猎头眼中的香饽饽。 毕业之后的那段岁月,可以用悲惨形容,每当和人提起,我总会有点自嘲的说“睡过凌晨一点的办公室,吃过凌晨三点的便利店,做过凌晨五点的首班车”。但是回头想想,我却要感谢那不堪的经历,让我找到了适合自己的方向。 作为技术人员,我一直有个疑问,什么是你引以为傲的资本?面对已经来临..

m0_56037919的博客 587

两层板如何做阻抗控制呢

两层板如何做阻抗控制呢? 这个问题可能很多人都会碰到,有的人在此等需要做阻抗控制的情况都选择做多层板。诚然,多层板在阻抗控制,EMC等等方面都有着天然的优势。然而,在价格上和周期上,两层板就有着绝对优势了。 对于成本非常敏感而又不是太复杂的产品,尽管对于我们硬件工程师而言,有一堆的理由要求使用多层板。然而在面对毛都不懂的老板“别人能做,你为什么不能做?”这个问题时只得低下我们高傲的头颅。 好...

weixin_42005993的博客 2万+

学java直接上框架行不_JAVA小白,早Get到这条学习路线就对了!

原标题:JAVA小白,早Get到这条学习路线就对了!#程序员#程序员这个这个岗位到今天都一直是热门岗位,到目前我相信想转行想做Java的也非常多,但是应该怎么做? 虽然说Java如今的市场虽不如从前那么火爆,但是依旧竞争力很大,工资也是非常高,相对的标准也不低,想要胜任一份高薪的工作不是那么容易,只有掌握最新的行情才能更好了解Java,才能更好在这个行业发展。那么我就来告诉给想转行程序员或者有兴趣...

weixin_42523975的博客 1491

改进的U-Net在视网膜血管分割上的应用

为了提高算法在血管边界的分割能力,在编码部分采用全局卷积网络(GCN)和边界细化(BR)替换传统的卷积层;在跳跃连接部分引入改进的位置注意模块(PA)和通道注意模块(CA),目的是增加血管与背景之间的对比度,使网络更好地将血管与背景分割开;此外,为了提高网络的性能,在编码部分的最后一层使用密集卷积网络解决网络过拟合问题,同时为了在一定程度上解决梯度爆炸、梯度消失的问题,在解码部分的每一层使用卷积长短记忆网络提升网络获取特征信息的能力。替换传统的卷积操作来解决血管边界非血管像素误分为血管的问题。

weixin_70923796的博客 783

第六部分:VTK进阶(第182章 体素化与隐式建模)

本文系统介绍了基于点云构建有符号距离场(SDF)的核心原理与VTK实现方法。主要内容包括:1)SDF的基本概念与算法原理,通过体素网格隐式表达几何表面;2)关键参数配置指南,如体素分辨率、边界范围和影响半径的选择;3)点云法向估计、SDF计算与等值面提取的完整工作流程;4)常见问题解决方案与性能优化建议。文中提供了详细的C++代码示例,展示从随机点云生成SDF并重建曲面的完整过程,特别强调了法向估计、参数调优和后处理等关键环节。该方法适用于点云表面重建、几何处理等应用场景。

仰望星空的博客 528

java框架直接学spring_Java 框架学习之 Spring

一. Spring 框架介绍。Spring 框架是 一个基于 IoC 和 AOP 的 J2EE 框架。IoC(控制反转,也叫作依赖注入) 是实现 Spring 的基础。IoC的作用是将控制权交给调用方,由调用方决定到底应该创建那个具体的实例。IoC 在 Spring 框架中的作用是将以前程序员手动自己通过 new 创建对象交由 Spring 容器来进行。AOP (面向切面编程) 即将需要实现的功能...

weixin_39929635的博客 268

YOLOv11改进策略【独家融合改进】| 模型轻量化二次改进:StarNet + FreqFusion,极限降参,适用专栏内所有轻量化模型

FreqFusion是一种旨在解决密集图像预测任务中特征融合问题。

Limiiiing的博客 2123

程序员朋友们,为什么我不建议你一上来就学框架!

点击上方 "程序员小乐",关注公众号8点20分,第一时间与你相约每日英文Is there such guy that once made you madly think ...

吧主 1330

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

这黑客你就学吧,一学一个不吱声

网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。

2402_84205067的博客 880

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java 程序员如何转型 AI 方向?不要一上来就学 Python

今天这篇,我们不讲焦虑,只说一条被验证过的、属于 Java 程序员的 AI 转型路径。

huang9604的博客 421

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

哎,为什么就学不会GIN 框架?

gin项目实战

chenangdaka的博客 710

为什么我不建议你一开始就学PyTorch?——给AI小白的血泪避坑指南

memoize# 复杂的动态路由计算...这段代码涉及Python装饰器、参数缓存、内存管理等进阶特性,而PyTorch官方示例中大量使用的nn.Module其实已经封装了这些细节。但当你需要实现自定义分布式训练框架时,这些底层能力将决定代码的健壮性。

2501_91798322的博客 1653

不懂咱就学,记不住多看几遍(一)

1、引入项目的配置依赖2、创建xxxService类,完成相关的操作逻辑if(str1!= null){3、 定义xxxProperties类,属性配置类,完成属性配置相关的操作,比如设置属性前缀,用于在application.properties中配置//指定项目在属性文件中配置的前缀为str,即可以在属性文件中通过 str.str1=springboot,就可以改变属性类字段 str1 的值了。

窦再兴的博客 943

小白一看就学废的Spring基础面试题合集

Spring 框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶。毋庸置疑,Spring 早已成为 Java 后端开发的行业标准,无数的公司选择 Spring 作为基础的开发框架,大部分Java 后端程序员在日常工作中也会接触到 Spring。很多研发人员把 Spring 看作心目中最好的 Java 项目,没有之一。所以这是重点也是难点,工作中必须会,面试时肯定考。其实也不用担心Spring Boot面试题答案解析,1、不同版本的 Spring Framework 有哪些主要功能?2、

hahazz233的博客 216

小柏一看就学废的Spring基础面试题合集

前言 Spring 框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶。 毋庸置疑,Spring 早已成为 Java 后端开发的行业标准,无数的公司选择 Spring 作为基础的开发框架,大部分Java 后端程序员在日常工作中也会接触到 Spring。 很多研发人员把 Spring 看作心目中最好的 Java 项目,没有之一。 所以这是重点也是难点,工作中必须会,面试时肯定考。 其实也不用担心Spring Boot面试题答案解析, Spring 面试题 1、不...

m0_68850571的博客 129

本科就学人工智能有意义吗?

可以发现近两年国内外的顶尖大学都在本科开设了人工智能专业,但是研究人工智能一定是需要过硬的算法基础的,很多人问,本科就学人工智能有意义吗?本篇来为大家答疑解惑。本科就学人工智能有意义吗?当然是有意义的,大人,时代变了。首先,人工智能领域的专业人才培养一直以研究生教育为主,但是随着人工智能领域的快速发展,相关人才的缺口越来愈大,为了解决这一问题,一部分重点高校率先在本科阶段设立了人工智能专业,相信未来会有更多的高校跟进,这也是当前一个比较明显的发展趋势。所以本科阶段选择人工智能专业是完全可以的,原因有三个方面

gu1857035894的博客 2177

从零讲JAVA ,给你一条清晰地学习道路!该学什么就学什么!!

点击上方“后端技术精选”,选择“星标公众号”技术文章第一时间送达!作者:nbalive2001cnblogs.com/nbalive2001/p/6418069.html...

Java笔记虾 1万+

初学 Java Web 开发,请远离各种框架,从 Servlet 开发

初学 Java Web 开发,请远离各种框架,从 Servlet 开发 OSCHINA 软件库有一个分类——Web框架,该分类中包含多种编程语言的将近500个项目。 Web框架是开发者在使用某种语言编写Web应用服务端时关于架构的最佳实践。很多Web框架是从实际的Web项目抽取出来的,仅和Web的请求和响应处理有关,形成一个基础,在开发别的应用项目的时候则可以从

autumn20080101的专栏 654

32岁后端转Agent两年,我发现很多人一开始就学错了

转型这事儿,难的从来不是技术。是学反了顺序——先学理论不敢动手,方向反了;先学框架不碰裸API,层次错了。越努力越偏,越偏越焦虑,越焦虑越不敢动。是思维没转过来——Java的确定性思维碰上LLM的概率模型,总觉得"一定是哪里配错了"。有些问题不是bug,是LLM的固有特性,你得围绕它做工程兜底,而不是试图消灭它。但你做了6年后端,你的工程化能力、系统设计能力、排查问题的直觉——这些东西到了Agent项目里一个都没白费。别人还在学怎么搭Demo,你已经知道怎么给一个不靠谱的东西做确定性兜底了。

qkh1234567的博客 229
上一篇: 需求变更,丧心病狂
下一篇: VS Code为什么能这么牛?
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值