
个人思考与感悟
个人思考与感悟
zzd2018
笔记、总结与感悟
展开
-
关于后端参数验证的思考
因为有些前端传来的参数的验证是涉及到业务逻辑的,所以应该不太可能让框架来完成全部参数的准确性验证,也就是参数验证不存在通用的解决方案(存疑),必须要对应的接口实现来对参数进行验证。或者说,对参数的验证过程本身就是业务逻辑的一部分。 我之前写后端逻辑的确疏忽了参数验证这个过程。可能有时候有一些验证,但是并不是刻意为之的,而是随意发挥的。总之,以后写后端代码,一定要时刻记着前端传来的参数并不可信,一定要验证过后才能使用。...原创 2020-07-31 13:28:17 · 290 阅读 · 0 评论 -
netty与muduo
我个人觉得netty和muduo是同一种东西,都是网络编程库。只不过,netty是Java的,而muduo是C++的。原创 2020-03-26 20:48:29 · 707 阅读 · 0 评论 -
计算机与二进制
我之前一直在思考为什么现在的计算机要采用二进制。现在我把我思考的结果和查阅的资料写下来。 首先,我认为二进制实际上只是一种计数制,说白了就是用0,1两个符号来编码一切数值。而二进制与计算机的本质一点关系都没有,我觉得计算机的本质是通用图灵机,与什么二进制、布尔代数都没有关系(这两者只是制造计算机的一种方式而已)。 至于为什么采用二进制,我觉得最重要的原因就是能稳定保持两种...原创 2018-11-09 20:25:11 · 4893 阅读 · 1 评论 -
关于计算的一些感悟
数学运算本身就是一种信息变换的过程(从一些数学符号变换到另外一些数学符号),其变换的规则由数学家研究出来,其中最为基本的就是四则运算的规则。这些规则有一个更为知名的名字——算法。这也表明,数学运算只是计算的一个子集。而数学运算的作用非常大,因为正是由于人类对快速进行数学运算的需求,激发了人类创造出更好的计算工具的欲望,而这就最终让聪明的人类发明了计算机这种终极的计算工具。而在发明计算机的过程中,...原创 2018-07-10 13:06:25 · 369 阅读 · 0 评论 -
感叹
本科期间,理论强迫太严重,我整天都追求要理解计算机、理解计算、理解为何要分为软件和硬件之类的,所以整天看什么图灵机之类的文章,企图把计算机的本质搞明白。又因为没有学过计算理论,所以基本都是囫囵吞枣,啥也没看明白,只是了解到一些基本概念。这就导致了我虽然把很多时间都花在了学习上,但是并没有什么成效。这在我找工作期间就体现出来了,面试要问的重点知识其实都是与项目、与实践非常相关的,而这恰恰是我...原创 2018-11-10 11:10:51 · 273 阅读 · 0 评论 -
软件能完全用硬件来实现吗?
下面记录一个问题,和相应的回答。问题:请问所有软件是否均可用硬件来实现?如果不计成本和开发难度。 因为一台机器最底层的是硬件,其上有固件(硬化的软件),再向上是软件。而软件的概念来自于硬件,目的应该是对硬件的功能进行充分利用,软件无非就是硬件运行的逻辑,硬件应该可以本身就可以实现这种逻辑。但是全部用硬件来实现的话,硬件就会非常复杂,开发难度很大,成本也非常高。 我的观点正确吗?请各抒己...原创 2018-11-13 20:08:16 · 5431 阅读 · 0 评论 -
逻辑与抽象
我觉得程序员最重要的两个能力就是逻辑能力与抽象能力。 就目前而言,我觉得逻辑能力的代表就是算法能力。 而抽象能力就是工程能力,就是如何通过合适的抽象来更简便的建造一个复杂的软件系统。其实,我觉得计算机系统中的分层思想就是一种抽象思想,把一个复杂的计算过程分为几个层次,每个层次专注于本层的计算逻辑,并通过适当的抽象向上层提供API,于是上层基于这些API来完成上层的计算逻...原创 2018-11-15 12:11:24 · 1529 阅读 · 0 评论 -
TCP的接收缓冲区满了,收到数据后会向发送方发送ACK吗?该怎么解决
问题:TCP的接收缓冲区满了,收到数据后会向发送方发送ACK吗?TCP的发送缓冲区中的数据,如果收不到接收方的ACK就不会删除,导致发送缓冲区溢出。如果接收方的缓冲区满了,收到数据后会不会向发送方发ACK呢?如果不发ACK,那么就没有接收缓冲区溢出的概念了,只要控制住发送方,就不会丢包;如果发ACK,那发送方就没办法控制是否继续发送了,接收缓冲区就会造成溢出,导致丢包。事实是怎样的呢?我这样理...转载 2020-03-13 19:47:35 · 4246 阅读 · 1 评论 -
对IO多路复用的理解
原来啊,所谓的IO多路复用,就是单纯的指一个线程负责处理多个连接的IO,注意这里就仅仅是IO,是不包括业务处理的。实际的业务处理还是要另一个线程池来处理,而且一个业务线程一次只能处理一个业务逻辑,不是能同时处理多个业务逻辑。我以前一直对IO多路复用的作用理解错了,一直以为一个线程一次处理多个请求,其实只是一个线程负责多个IO而已。还有Java的NIO基本就可以理解为IO多路复用。这么看的话...原创 2020-04-08 11:43:14 · 225 阅读 · 0 评论 -
对Netty的理解
最近对netty有了新的理解,就是netty这个框架只是负责网络IO的。你的业务逻辑如何执行,netty是不关心的。其实,netty的worker group是负责处理网络IO的线程池,而不是负责业务处理的(boss group负责创建连接)。当然了,对于一些简单的业务逻辑,可以直接放在IO线程中执行,但是复杂的逻辑还是要自建业务线程池进行处理。过多的业务ChannelHandler会带来开发...原创 2020-04-08 11:44:59 · 314 阅读 · 0 评论 -
微服务、分布式与集群
现在我觉得用微服务,或者说分布式服务,而不是用集群的原因是,随着业务越来越多、越来越复杂,程序变得非常臃肿,难以维护,而且也不方便更新。因此还是选择把程序根据业务进行拆分,从而变成微服务架构,使得单个程序比较轻便简单。不一定对啊,还有待日后研究,先把基础知识补完。。。...原创 2020-04-16 16:43:27 · 189 阅读 · 0 评论 -
关于后端的思考
我现在感觉,后端大概可以分为两类,一个是web后端(http后端),另一个是游戏后端。游戏后端和web后端是有很多不同的,所以并不存在通用的后端技术选型,只能根据业务需求来做出相应的决定,我以前一直以为有通用的技术选型,而且还以为是C++(笑~)。只是在互联网应用中,显然是web后端的使用更为广泛,因为大部分互联网应用其实都只是CRUD操作而已。因此,我选择了搞web后端。...原创 2020-07-04 11:25:37 · 232 阅读 · 1 评论