精华内容
下载资源
问答
  • 在成千上万的计算机中,为什么一台计算机能够准确着寻找另外一台计算机,并且把数据发送给它呢? 可能很多人都听说过网络通信的 5 层模型,但是可能并不是很清楚为什么需要五层模型,五层模型负责的任务也有可能...

    帅地:用心写好每一篇文章!

    前言

    天各一方的两台计算机是如何通信的呢?在成千上万的计算机中,为什么一台计算机能够准确着寻找到另外一台计算机,并且把数据发送给它呢?

    可能很多人都听说过网络通信的 5 层模型,但是可能并不是很清楚为什么需要五层模型,五层模型负责的任务也有可能经常混淆。下面是网络通信的五层模型

    说实话,五层模型的具体内容还是极其复杂的,不过今天这篇文章,我将用最简洁的模式,通过网络通信的五层模型来讲解一台计算机是如何找到另外一台计算机并且把数据发送给另一台计算机的,就算你没学过计算机网络,也能够听的懂。

    1. 物理层

    一台计算机与另一台计算机要进行通信,第一件要做的事是什么?当然是要把这台计算机与另外的其他计算机连起来啊,这样,我们才能把数据传输过去。例如可以通过光纤啊,电缆啊,双绞线啊等介质把他们连接起来,然后才能进行通信。

    也就是说,物理层负责把两台计算机连起来,然后在计算机之间通过高低电频来传送0,1这样的电信号。

    2. 数据链路层

    前面说了,物理层它只是单纯着负责把计算机连接起来,并且在计算机之间传输0,1这样的电信号。如果这些0,1组合的传送毫无规则的话,计算机是解读不了的。一大堆0,1谁知道是什么鬼啊。

    因此,我们需要制定一套规则来进行0,1的传送。例如多少个电信号为一组啊,每一组信号应该如何标识才能让计算机读懂啊等等。

    于是,有了以太网协议。

    1. 以太网协议

    以太网协议规定,一组电信号构成一个数据包,我们把这个数据包称之为。每一个桢由标头(Head)和数据(Data)两部分组成。

    帧的大小一般为 64 - 1518 个字节。假如需要传送的数据很大的话,就分成多个桢来进行传送。

    对于表头和数据这两个部分,他们存放的都是一些什么数据呢?我猜你眯着眼睛都能想到他们应该放什么数据。 毫无疑问,我们至少得知道这个桢是谁发送,发送给谁的等这些信息吧?所以标头部分主要是一些说明数据,例如发送者,接收者等信息。而数据部分则是这个数据包具体的,想给接守者的内容。

    大家想一个问题,一个桢的长度是 64~1518 个字节,也就是说桢的长度不是固定的,那你觉得标头部分的字节长度是固定的吗?它当然是固定的啊,假如不是固定的,每个桢都是单独发的,那计算机怎么知道标头是几个字节,数据是几个字节呢。所以标头部分的字节是固定的,并且固定为18个字节。

    把一台计算的的数据通过物理层和链路层发送给另一台计算机,究竟是谁发给谁的,计算机与计算机之间如何区分,,你总得给他们一个唯一的标识吧?

    于是,MAC 地址出现了。

    文章首发于公众号『苦逼的码农』,更多经常文章欢迎搜索关注,已有150多篇原创。

    2. MAC 地址

    连入网络的每一个计算机都会有网卡接口,每一个网卡都会有一个唯一的地址,这个地址就叫做 MAC 地址。计算机之间的数据传送,就是通过 MAC 地址来唯一寻找、传送的。

    MAC地址 由 48 个字节所构成,在网卡生产时就被唯一标识了。

    3. 广播与ARP协议

    (1). 广播

    如图,假如计算机 A 知道了计算机 B 的 MAC 地址,然后计算机 A 想要给计算机 B 传送数据,虽然计算机 A 知道了计算机 B 的 MAC 地址,可是它要怎么给它传送数据呢?计算机 A 不仅连着计算机 B,而且计算机 A 也还连着其他的计算机。 虽然计算机 A 知道计算机 B 的 MAC 地址,可是计算机 A 却不知道知道计算机 B 是分布在哪边路线上,为了解决这个问题,于是,有了广播的出现。

    在同一个子网中,计算机 A 要向计算机 B 发送一个数据包,这个数据包会包含接收者的 MAC 地址。当发送时,计算机 A 是通过广播的方式发送的,这时同一个子网中的计算机 C, D 也会收到这个数据包的,然后收到这个数据包的计算机,会把数据包的 MAC 地址取出来,与自身的 MAC 地址对比,如果两者相同,则接受这个数据包,否则就丢弃这个数据包。这种发送方式我们称之为广播,就像我们平时在广场上通过广播的形式呼叫某个人一样,如果这个名字是你,你就理会一下,如果不是你,你就当作听不见。

    (2). ARP 协议

    那么问题来了,计算机 A 是如何知道计算机 B 的 MAC 地址的呢?这个时候就得由 ARP 协议这个家伙来解决了,不过 ARP 协议会涉及到IP地址,我们下面才会扯到IP地址。因此我们先放着,就当作是有这么一个 ARP 协议,通过它我们可以知道子网中其他计算机的 MAC 地址。

    3. 网络层

    上面我们有说到子网这个关键词,实际上我们所处的网络,是由无数个子网络构成的。广播的时候,也只有同一个子网里面的计算机能够收到。

    假如没有子网这种划分的话,计算机 A 通过广播的方式发一个数据包给计算机 B , 其他所有计算机也都能收到这个数据包,然后进行对比再舍弃。世界上有那么多它计算机,每一台计算机都能收到其他所有计算机的数据包,那就不得了了。那还不得奔溃。 因此产生了子网这么一个东西。

    那么问题来了,我们如何区分哪些 MAC 地址是属于同一个子网的呢?假如是同一个子网,那我们就用广播的形式把数据传送给对方,如果不是同一个子网的,我们就会把数据发给网关,让网关进行转发。

    为了解决这个问题,于是,有了 IP 协议。

    1. IP协议

    IP协议,它所定义的地址,我们称之为IP地址。IP协议有两种版本,一种是 IPv4,另一种是 IPv6。不过我们目前大多数用的还是 IPv4,我们现在也只讨论 IPv4 这个版本的协议。

    这个 IP 地址由 32 位的二进制数组成,我们一般把它分成4段的十进制表示,地址范围为0.0.0.0~255.255.255.255。

    每一台想要联网的计算机都会有一个IP地址。这个IP地址被分为两部分,前面一部分代表网络部分,后面一部分代表主机部分。并且网络部分和主机部分所占用的二进制位数是不固定的。

    假如两台计算机的网络部分是一模一样的,我们就说这两台计算机是处于同一个子网中。例如 192.168.43.1 和 192.168.43.2, 假如这两个 IP 地址的网络部分为 24 位,主机部分为 8 位。那么他们的网络部分都为 192.168.43,所以他们处于同一个子网中。

    可是问题来了,你怎么知道网络部分是占几位,主机部分又是占几位呢?也就是说,单单从两台计算机的IP地址,我们是无法判断他们的是否处于同一个子网中的。

    这就引申出了另一个关键词————子网掩码。子网掩码和IP地址一样也是 32 位二进制数,不过它的网络部分规定全部为 1,主机部分规定全部为 0.也就是说,假如上面那两个IP地址的网络部分为 24 位,主机部分为 8 位的话,那他们的子网掩码都为 11111111.11111111.11111111.00000000,即255.255.255.0。

    那有了子网掩码,如何来判端IP地址是否处于同一个子网中呢。显然,知道了子网掩码,相当于我们知道了网络部分是几位,主机部分是几位。我们只需要把 IP 地址与它的子网掩码做与(and)运算,然后把各自的结果进行比较就行了,如果比较的结果相同,则代表是同一个子网,否则不是同一个子网。

    例如,192.168.43.1和192.168.43.2的子码掩码都为255.255.255.0,把IP与子码掩码相与,可以得到他们都为192.168.43.0,进而他们处于同一个子网中。

    2. ARP协议

    有了上面IP协议的知识,我们回来讲一下ARP协议。

    有了两台计算机的IP地址与子网掩码,我们就可以判断出它们是否处于同一个子网之中了。

    假如他们处于同一个子网之中,计算机A要给计算机B发送数据时。我们可以通过ARP协议来得到计算机B的MAC地址。

    ARP协议也是通过广播的形式给同一个子网中的每台电脑发送一个数据包(当然,这个数据包会包含接收方的IP地址)。对方收到这个数据包之后,会取出IP地址与自身的对比,如果相同,则把自己的MAC地址回复给对方,否则就丢弃这个数据包。这样,计算机A就能知道计算机B的MAC地址了。

    可能有人会问,知道了MAC地址之后,发送数据是通过广播的形式发送,询问对方的MAC地址也是通过广播的形式来发送,那其他计算机怎么知道你是要传送数据还是要询问MAC地址呢?其实在询问MAC地址的数据包中,在对方的MAC地址这一栏中,填的是一个特殊的MAC地址,其他计算机看到这个特殊的MAC地址之后,就能知道广播想干嘛了。

    假如两台计算机的IP不是处于同一个子网之中,这个时候,我们就会把数据包发送给网关,然后让网关让我们进行转发传送

    3. DNS服务器

    这里再说一个问题,我们是如何知道对方计算机的IP地址的呢?这个问题可能有人会觉得很白痴,心想,当然是计算机的操作者来进行输入了。这没错,当我们想要访问某个网站的时候,我们可以输入IP来进行访问,但是我相信绝大多数人是输入一个网址域名的,例如访问百度是输入 www.baidu.com 这个域名。其实当我们输入这个域名时,会有一个叫做DNS服务器的家伙来帮我们解析这个域名,然后返回这个域名对应的IP给我们的。

    因此,网络层的功能就是让我们在茫茫人海中,能够找到另一台计算机在哪里,是否属于同一个子网等。

    文章首发于公众号『苦逼的码农』,更多经常文章欢迎搜索关注,已有150多篇原创。

    4. 传输层

    通过物理层、数据链路层以及网络层的互相帮助,我们已经把数据成功从计算机A传送到计算机B了,可是,计算机B里面有各种各样的应用程序,计算机该如何知道这些数据是给谁的呢?

    这个时候,**端口(Port)**这个家伙就上场了,也就是说,我们在从计算机A传数据给计算表B的时候,还得指定一个端口,以供特定的应用程序来接受处理。

    也就是说,传输层的功能就是建立端口到端口的通信。相比网络层的功能是建立主机到主机的通信。

    也就是说,只有有了IP和端口,我们才能进行准确着通信。这个时候可能有人会说,我输入IP地址的时候并没有指定一个端口啊。其实呢,对于有些传输协议,已经有设定了一些默认端口了。例如http的传输默认端口是80,这些端口信息也会包含在数据包里的。

    传输层最常见的两大协议是 TCP 协议和 UDP 协议,其中 TCP 协议与 UDP 最大的不同就是 TCP 提供可靠的传输,而 UDP 提供的是不可靠传输。

    5. 应用层

    终于说到应用层了,应用层这一层最接近我们用户了。

    虽然我们收到了传输层传来的数据,可是这些传过来的数据五花八门,有html格式的,有mp4格式的,各种各样。你确定你能看的懂?

    因此我们需要指定这些数据的格式规则,收到后才好解读渲染。例如我们最常见的 Http 数据包中,就会指定该数据包是 什么格式的文件了。

    文章首发于公众号『苦逼的码农』,更多经常文章欢迎搜索关注,已有150多篇原创。

    总结

    五层模型至此讲到这里。对于有些层讲的比较简洁,就随便概况了一下。因为如果我说的详细一点的话,篇幅肯定会特别特别长,我着已经是尽最大的努力以最简洁的方式来讲的了。如果你想详细去了解,可以去买计算机网络相应的资料,强烈推荐《计算机网络:自顶向下》这本书。希望我的讲解能让你对计算机之间数据的传输有个大概的了解。

    **最后,给大家推荐一个珍藏已久的 github,改 github 上收藏了几百本常用电子书,并且还提供了下载的地址。**部分截图如下
    在这里插入图片描述
    例如数据结构与算法有哪些呢?
    在这里插入图片描述

    地址在这里:点击前往Github

    兄dei,如果觉得我写的不错,不妨帮个忙

    1、关注我的原创微信公众号「帅地玩编程」,每天准时推送干货技术文章,专注于写算法 + 计算机基础知识(计算机网络+ 操作系统+数据库+Linux),听说关注了的不优秀也会变得优秀哦。

    2、给俺点个赞呗,可以让更多的人看到这篇文章,顺便激励下我,嘻嘻。

    作者简洁

    作者:大家好,我是帅地,从大学、自学一路走来,深知算法计算机基础知识的重要性,所以申请了一个微星公众号『帅地玩编程』,专业于写这些底层知识,提升我们的内功,帅地期待你的关注,和我一起学习。 转载说明:未获得授权,禁止转载

    展开全文
  • 老婆有个习惯,就是不开心的时候去看搞笑视频,昨天她又不开心了,要我给她讲讲程序员的搞笑事情,于是就把这篇文章的草稿给她看,结果她笑自己肚子疼,直言“终于懂你们程序员的痛苦了”… 今天分享给...

    我老婆有个习惯,就是不开心的时候去看搞笑视频,昨天她又不开心了,要我给她讲讲程序员的搞笑事情,于是我就把我这篇文章的草稿给她看,结果她笑到自己肚子疼,直言“我终于懂你们程序员的痛苦了”…

    今天分享给你们,希望你们在工作或者不开心的时候也能笑口常开!
    在这里插入图片描述

    1.一个小时前刚写好的代码,一个小时后产品经理又来改需求…(这个很推荐)

    程序员和产品经理的日常撕逼,笑死不偿命!

    2.当我第一次测试我的代码时(惨不忍睹)
    在这里插入图片描述

    3.下班时间快到了,保存一下代码赶紧下班,结果还是漏了…
    在这里插入图片描述
    4.测试刚写完的代码
    在这里插入图片描述
    5.当我以为解决完这个bug就OK了,想到的是…还有新的
    在这里插入图片描述

    6.原以为这个模块很简单,当我去重构的时候才发现…深不可测
    在这里插入图片描述
    7.编译时有警告但没错误?管它呢,能跑起来就完事了
    在这里插入图片描述
    8.当我信誓旦旦跟老板说这个项目2个星期就能完成,而到了提交项目那天,我的队友想起了还有几个功能没添加…
    在这里插入图片描述

    9.一个大家都在纠结的bug,我以为我分分钟解决。
    在这里插入图片描述

    10.当轻量级架构被不断叠加需求之后
    在这里插入图片描述

    11.当公司开会内容没有技术部门什么事情,早早就退场时…
    在这里插入图片描述

    12.代码总算写完了,赶紧测试一下,结果…
    在这里插入图片描述

    13.当轻量级架构遇到重量级需求时
    在这里插入图片描述
    14.刚准备下班,测试又来了一句有bug,整个人是这样的:
    在这里插入图片描述

    15.我设计的接口和别人调用我的接口
    在这里插入图片描述

    粉丝专属福利

    在这里插入图片描述

    展开全文
  • 我讲完GET、POST原理,面试官给倒了杯卡布奇诺

    万次阅读 多人点赞 2020-04-19 19:22:55
    和熊猫的感情很好,毕业后他去了上海而开始北漂,但每次过节回老家俩都会和朋友们一起吃饭,这次回家过年也不例外,我们朋友几个去了枣庄出名的小板凳酱骨头,饭后他给我们聊了聊4年前来这家公司的面试经历,...

    我有一个老朋友,我们叫他熊猫。发际线及将触碰到后脑勺,大框金丝眼镜也掩盖不住那黝黑的眼圈,显得格外的“程序员”;穿着也非常“不拘一格”,上半身是衬衣西服,下半身是牛仔裤配拖鞋。

    我和熊猫的感情很好,毕业后他去了上海而我开始北漂,但每次过节回老家我俩都会和朋友们一起吃饭,这次回家过年也不例外,我们朋友几个去了枣庄出名的小板凳酱骨头,饭后他给我们聊了聊4年前来这家公司的面试经历,据说跟面试官有着一番精彩的博弈;我们听得津津有味。

    以下是熊猫和面试官刘经理的对话。


    面试官:小李啊,你们常用的HTTP请求方法都有哪些啊?
     

    熊猫:是这样的,HTTP/1.1协议中共定义了八种方法,有时也叫“动作”,来表明Request-URL指定的资源不同的操作方式

    • 在HTTP1.0中,定义了三种请求方法: GET, POST 和 HEAD方法。
    • 在HTTP1.1中,新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法

    但我们常用的一般就是GET和POST请求。


    面试官:嗯,那你说说GET和POST请求都有哪些区别呢?(果然进套了,看你小子有几斤几两)

    熊猫:(其实这就是三十六计第十七计抛砖引玉。我昨晚专门看了陈哈哈的博客,问到上面问题就给面试官放个钩儿,果然上钩了。。好,先给他来波官方标准答案,看他怎么说
     

    熊猫:这个。。。没有太关注过,以我的理解,大概有这么几种区别吧:

    1. GET请求在URL中传送的参数是有长度限制的,而POST没有。
    2. GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。而POST数据不会显示在URL中。是放在Request body中。
    3. 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
    4. GET请求参数会被完整保留在浏览器历史记录里;相反,POST请求参数也不会被浏览器保留。
    5. GET请求只能进行url编码(application/x-www-form-urlencoded),而POST支持多种编码方式。
    6. GET请求会被浏览器主动缓存,而POST不会,除非手动设置。
    7. GET在浏览器回退时是无害的,而POST会再次提交请求。



    面试官:(没关注过,那你还背的一条不差。跟我搁这儿装B呢?看我怎么教育你。)

    面试官: 那Get请求有Request body么?如果有的话参数可以像Post请求一样放在里面么?
     

    熊猫:(吼吼,看来有机会把我昨天精心准备的东西给他扯半小时了[手动挠头]  让开,我要装波B了)


    熊猫:其实吧,GET和POST在本质上没有区别,都是HTTP协议中的两种发送请求的方法。而HTTP呢,是基于TCP/IP的关于数据如何在万维网中如何通信的协议。 

    万维网:简称WWW,是World Wide Web的简称,也称为Web、3W等


    HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接

    GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。 

    举个例子吧:

    TCP就像汽车,我们用TCP来运输数据,它很可靠,从来不会发生丢件少件的现象。

    但是如果路上跑的全是看起来一模一样的汽车,那这个世界看起来是一团混乱,送急件的汽车可能被前面满载货物的汽车拦堵在路上,整个交通系统一定会瘫痪。

    为了避免这种情况发生,交通规则HTTP诞生了。HTTP给汽车运输设定了好几个服务类别,包括GET, POST, PUT等等,

    HTTP规定,当执行GET请求的时候,要给汽车贴上GET的标签(设置method为GET),而且要求把传送的数据放在车顶上(url中)以方便记录。

    如果是POST请求,就要在车上贴上POST的标签,并把货物放在车厢里(request body中)。

    当然,你也可以在用GET的时往车厢内偷偷藏点货物,但这并不不光彩;也可以在POST的时候在车顶上也放一些数据,也会让人觉得傻乎乎的。

    HTTP只是个行为准则,而GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。


    面试官:(哎呀,这小子还真的了解这块儿啊,看来是我误会他了,难道遇到了大佬?)


     

    面试官:小李,你说的不错,那你刚才说的URL中传送参数的长度限制在Get和Post中都是怎么样的呢?


    熊猫:其实在Web中啊,还有另一个重要的角色:运输公司。

    不同的浏览器Client端(发起http请求)和服务器server端(接受http请求)就是不同的运输公司。

    虽然理论上,你可以在车顶上无限的堆货物(url中无限加参数)。但是运输公司可不傻,装货和卸货也是有很大成本的,他们会限制单次运输量来控制风险,数据量太大对浏览器和服务器都是很大负担。

    业界不成文的规定是,(大多数)浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url。

    超过的部分,恕不处理。如果你用GET服务,在request body偷偷藏了数据,不同服务器的处理方式也是不同的,有些服务器会帮你卸货,读出数据,有些服务器直接忽略。

    所以,虽然GET可以带request body,却不能保证一定能被接收到。

    示例:
    我之前处理过一个bug,用户反应查询没有响应,同事查了日志后才发现有几个参数都是undefined,很奇怪,最后发现原来是因为Get请求第一个查询参数太长了,导致URL后面的部分服务器无法接收 ,后来把请求改成post,将参数放在request body后就可以了。 


    面试官:(看来理论确实是掌握的不错,让我考考他实际应用)
    面试官:那GET 方法参数写法是固定的吗?


    熊猫:在约定中,我们的参数是写在 ? 后面,用 & 分割。如下:

    http://ip:port/project/getUserInfo?username=chenhhaha&age=26&sex=2

    我们知道,解析报文的过程是通过获取 TCP 数据,用正则等工具从数据中获取 Header 和 Body,从而提取参数。

    比如header请求头中添加token,来验证用户是否登录等权限问题。

    也就是说,我们可以自己约定参数的写法,只要服务端能够解释出来就行,万变不离其宗。

    面试官:那么说来,是不是POST 方法比 GET 方法更安全呢?


    熊猫:有人说POST 比 GET 安全,因为数据在地址栏上不可见。

    然而,从传输的角度来说,他们都是不安全的,因为 HTTP 在网络上是明文传输的,只要在网络节点上捉包,就能完整地获取数据报文。

    其实,要想安全传输,就只有加密,也就是 HTTPS。


    面试官:嗯,不错小李,看来你对HTTP协议这块儿还是有一定了解的,那么你知道Get、Post请求发送的数据包有什么不同吗?
     

    熊猫:(看来这面试官是非要是把我问倒才满意啊?可惜可惜。看我套路他一波)


    熊猫: 实不相瞒,我上家公司加班比较多,昨天刚签完离职,贵公司是我面得第一家公司,所以准备的不充分,这样吧,我大致谈谈我的理解吧,不对的地方您见谅。


    面试官:没关系,按你的理解聊聊就行。(这小子没准备就说成这样,我的好好考虑一下,别错失了先机,失去一个能为公司“加班”的人才)

     

    熊猫: 嗯嗯,是这样的,GET请求时产生一个TCP数据包;POST请求时产生两个TCP数据包。

    • GET:浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
    • POST:浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 OK(返回数据)。

    就像是GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“老铁,我等下要送一批货来,你们准备接收一下哈”,然后再回头把货送过去。

    因为POST需要两步,理论上时间上消耗的要多一点,看起来GET比POST更有效。但并不是,后来发现原来是个坑。在我看来:

    1. GET与POST都有自己的语义,不能随便混用。
    2. 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
    3. 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。我去年用Chrome浏览器测试发现也是只发送一次,所以我认为Get、POST性能差可以人为忽略。

     

    学习技术的朋友们就到此为止了,感觉学到东西的记得帮忙点个赞哦,么么哒。



    面试官:小李,你说的很不错,你等一等啊;

    熊猫:(溜了??不应该啊,我这波操作难道还不香么?难道,他也看了陈哈哈的博客,被识破了?? -_-''|)

     

    五分钟后,面试官拿着一杯饮料进来。。。。

    面试官:小李啊,你尝尝这咖啡味道如何?(自古套路得人心,学好了)


    熊猫喝了一口,竖起大拇指说到:刘经理,这是正宗的卡布奇诺啊,我平时就喜欢喝,可惜太贵了。。

    咦?我进来之前没有看到你们这有咖啡店呀,这是?

    面试官嘴角上翘,微微一笑,露出了洁白的两颗大门牙:小李,我看你简历说你爱喝咖啡,巧了,我们公司有专门的水吧,福利之一就是是每天免费一杯咖啡或饮料。以后你可以经常喝了。
    面试官:(这个福利,其实是因为我们公司加班多才提出的。别问,问我也不会说~~)

    熊猫:刘经理意思是,我面试过了是么,太好了!

    熊猫:对了水吧每天几点下班呐?跟开发一个点儿么?(不会是因为经常加班才免费喝咖啡吧,我得试探试探)
     

    面试官:(这问题我听了无数次了,看我滴水不漏的模糊作答 ---- 真·老油子)
    面试官:哈哈是啊,水吧一直都是按点下班,咱们公司如果有人加班的话,可以自己去水吧做着喝就行,加班时间都是免费的。


    面试官:小李,你这儿没问题的话,我看下周一就入职吧。

    熊猫:(听他话的意思公司应该只是偶尔加班啊,这简直让我无法拒绝啊!咦,总感觉不太对。。)
    熊猫:好的刘经理,那咱们下周见。

    展开全文
  •  最近跟朋友一起用餐,他突然跟说:“你知道吗,我们认识的那个XXX,他拿了一个投资合同,那个合同之不合理,...”然后他大概花了五分钟跟我讲了一部分不平等条款,还好他只了五分钟,不然的心情应该会更沉重。

    转自http://www.gameres.com/msg_259465.html

      最近跟朋友一起用餐,他突然跟我说:“你知道吗,我们认识的那个XXX,他拿了一个投资合同,那个合同之不合理,就好像他完全没有看内容就签了。”然后他大概花了五分钟跟我讲了一部分不平等条款,还好他只讲了五分钟,不然我的心情应该会更沉重。

      我想每个创业者融资的目的应该都是事业成功、梦想实现,最重要的就是可以掌握自己更多的时间去完成自己梦想与人生目标。但问题就在于,多数人根本就不懂投资,这还不打紧,最惨的是就算不了解不询问也不会去判断信息的对错及真实性,所以投资人跟你讲什么,你就听什么;或者操之过急,大牌机构不投,你就找野路子。

      以拿到钱为终极目标,是创业者可能犯的错误中最难以纠正的。“先拿到钱开工,就走上了正路,其他问题将来再说”,每个人都这么想。同样,不时也有人来咨询“公司快要被投资人搞死了,怎么办”这样的问题。

      以金融投资来比喻的话,对于99%的散户来说,一辈子最佳的投资策略就是:不碰任何价格会波动的金融商品,努力的工作、储蓄,然后带家人去户外走走,才是投资报酬率和收益期望值都最高的策略,但多数人就是讲不听、教不会、赔不怕、死不完,所以一般人一辈子最关键的转折点就是:什么时候认清自己就是个散户?这段话听起来令人难过,但这又是这么的真实。

      创业者通常从事多年专业性工作,怎么能期待自己只花工作之余的些许时间接触了几个投资机构,就能够保证跳开将来必然后悔的坑?所以,我们应该做的是,试着去换位思考,自己也需要做一定程度的功课,不随便选择投资,不轻易期待奇迹。

      下面这些错误大部分是观察所得,少部分是亲身经历,血的教训:

    1、高估帮忙的价值

      大家都知道好的投资人应该是帮忙不添乱。有些投资者尤其是战略投资者,最喜欢罗列他们拥有的资源和帮助。但往往到最后发现,资源是共用的,派过来帮忙的人是外行,其他诉求石沉大海,最后还得靠自己。

    2、低估添乱的影响

      业内有一些老资历公司,是公认的害虫,尽管在被投资公司中占小股,但发号施令,天天骚扰,董事会上从不配合,让你日日胸闷。就因为他最早找到你,就因为他不断引诱你,就因为不拿白不拿,就因为钱快烧完,总之你拿了缺乏共识的投资人的钱。最终,听他的可能把公司搞成四不像,不听他的他又去外面放话,让你陷入人间炼狱。

    3、把投资人等同于身后的机构

      不靠谱的机构,人多半不靠谱;但靠谱的机构,不一定各个都靠谱。有的人虽然在产生过很多明星公司的机构,但完全水货一个,好的案子跟他无关,坑爹的案子干过不少。擦亮眼睛,去评判投资人的专业程度,而不要被所谓品牌蛊惑。

    4、宁做凤尾,不做鸡头

      这指的是孵化器的情形。很多团队一窝蜂往明星孵化器钻,也不肯加入一个新开设的孵化器。然而,孵化器的好坏区别在于它资源的大小,好的孵化器,能支持数十个团队都得到支援,单薄的孵化器则只能支援数个,甚至一个。即便你假如一个不知名的孵化器,但如果你表现得最好,起码你可以得到再次融资的机会。至于只提供办公场地的孵化器,我只想说:我很幸福。

    5、过早稀释股权

      因为不熟悉融资的游戏规则,因为你听信了“重要的是赚钱了以后分钱” ,你在第一轮或者第二轮融资中就稀释了40%、60%甚至80%的股权。被别人控制公司导致失败、分裂或难以发展倒不算痛心,万一发展得很好,结果前面稀释的越多,后面融资的选择就越少,当你被稀释到只剩10%、5%,这还算是你的公司吗?

    6、用错误的结构融资

      为了赶快把钱拿进来,跟投资人签夸张的分成方式、管理机制、对赌条款、完全不平等的清算条款等非常另类的合同,或是用非国际惯例的结构设计特别股。这里面的道理很简单,没想过共赢做大的投资人也没能力让公司发展壮大。乱七八糟的资本结构和合同,只会吓跑后面想投资的机构。

    7、早期融资轻视投资人

      很多人融了天使资金以后,闷头封闭,再也不和投资机构接触。如果你选择了一家优秀的投资机构,这是大大的浪费。投资机构积累了大量成败案例和商业判断以及其他企业的友好关系,如果不去交流和利用,和拿土壕的钱有何区别?

    8、后期融资高估投资人

      公司发展起来之后,很多人在选择下轮投资的时候,总倾向于大牌、知名的机构,但越大牌的机构,手中积累的优秀公司越多,他绝不会为你的生死去赌上身家。发展方向是否一致,反而是唯一的判断标准。

    9、选择不靠谱的战略投资

      但凡投资部门没有独立于业务部门的战略投资方,都是耍流氓。有一些大公司(不点名)投资了一堆团队,不要说成功,连产品影子都没看到。为何?因为负责投资部门的高管是无实权的存在,或者兼任着其他业务部门。投资的成败要么无足轻重要么只是他汇报业绩时候的锦上添花。你们的死活,与他们无干。

    10、选择关注自己多于创业者的投资人

      总在说自己多牛逼、公司多牛逼,却不细细询问创业者情况的投资人,是典型的投机者,一旦谈成投资,他多半人间蒸发,忙着另外一些让他“更牛逼”的事情。于是,你不过是他投机过程中的问路石或者垫脚石。

    11、选择一头热的投资人

      当然投资人必须对你的团队、产品,或商业模式有一定的热情,但投资毕竟是很理性的工作,如果他过分热情,却没有想清楚自己为什么要投资你的公司,那也是非常危险的结合。 新创公司往往必须酝酿多年才能到达被收购或上市的彼岸,在这漫漫长路上,创业团队的财务状况常常是忽高忽低。 现在一头热的投资人,未来随时可能会受不了这云霄飞车,转而成为难搞的恐怖股东。

    12、选择内部权力结构不稳定的投资人

      有一种投资人,投资的时候都很好,刚开始成为股东时也合作非常愉快。但突然间股东的公司内部出现斗争、权力大幅转移,导致股东代表换成了当初反对这样投资的一方,接着便开始处处找团队麻烦。碰到这样情况新创公司当然是哑巴吃黄莲,不过如果一开始对方的权力结构就不太稳定,那么拿他的钱之前恐怕还是要三思。如何评价一个公司乱不乱,看高管是不是走马灯就知道了,我也不多说了!

    13、选择没有投资过同样业务的投资人

      这是先有鸡还是先有蛋的问题,但当小白鼠的人总是风险比较大。我的经验是,第一次投资某业务的股东,投资后在董事会上大概要12-18个月才能真的上轨道,到了第二次投资以后,情况就会好很多。所以有选择的话,还是尽量倾向于已经投过相关业务公司的人。

    14、选择基金将要到期的投资人

      最后,这指的是中后期融资所发生的情况。基金通常有7-10年的寿命,因此到了后期,负责管理基金的投资人(所谓GP)会受到他们的股东(所谓LP)越来越大的压力,要赶快出脱持股、获利了结。所以假设他投资你时基金还有4、5年寿命,那你可以想像2、3年后,他会开始感受到压力,因此推动你往退出方向走的力度会不断的增加,这时可能会让公司陷入困难的抉择。

    结语

      选择投资方并不是赌博,它是需要认真决策的事情。创业者总是需要从错误中学习,但有些错误会造成长期、不可逆的苦果,仍须提前注意、警惕。说了这么多,我相信还是会有源源不绝的受害者。即便没有看到本文也没有关系,因为总是有些人要自己跌一次跤才知道痛,跌了很多次跤才知道梦会醒。虽然讲的很残酷,但真相总是那么让人难以接受。希望我的建言,能够让一些人的侥幸心态早点清醒,也希望这个世界上真的有心想要帮助创业者的人,能够再多一些。


    展开全文
  • 因为以后有想从事IT教育的计划,我到某青鸟应聘。 在Boss直聘上经过简单的沟通,然后发送简历,最后远程试讲了两次课程。 第一次粗的SSM,第二次细的Spring。完后,说:对教育感兴趣,会一直进行下去...
  • start_fun(fun) # 首先是调用外层函数,然后内层函数暂时是不会执行的,因为没有调用。然后外层函数的调用等于内层函数的返回值 # 那么现在外层函数的返回值就是就是内层函数的函数对象,内层...
  • 学渣爬虫之Python爬虫从入门出门(第三

    千次阅读 热门讨论 2018-01-13 13:23:28
    这一将会为大家讲解稍微复杂一点的爬虫,即动态网页的爬虫。 学渣爬虫之Python爬虫从入门出门第三 动态网页技术介绍 动态网页爬虫技术一之API请求法 动态网页爬虫技术二之模拟浏览器法 安装selenium...
  • 本人之前用的都是Caffe框架,...回忆当初配置Caffe时的血泪史,的内心其实是拒绝的,但好就好在MXNet依赖项不多,难度跟Caffe不在一个等级。 废话不多说,博主用的是Ubuntu系统,而且之前已经配好了CUDA、CUDNN、OPEN
  • 今天这篇文章,通过对话的形式,让你由浅入深着知道,为什么 Https 是安全的。 一、对称加密 ...当然,如果客户端给服务器发送数据,也是采用这把密钥来加密,这里为了方便,采用单方向...
  • Java线程池,你五分钟完,而和面试官聊了半小时 找Java工作的时候,线程池是一个必问的知识点,面试时,有的人只能五分钟,而有些人可以半个小时,差别在哪?在于知识的深度。下面几个面试高频题,你会吗?...
  • 40 PPT 把故事给你听

    千次阅读 2018-08-20 08:04:48
    为什么做PPT 做了好的工作还不够,更重要的是分享给别人看 试想一下: 你做了很多工作,现在参加决赛答辩 下面坐了一排评委,以及满满一大片的围观群众 你只有10分钟,如何尽可能完整地展示你的工作,抓住...
  • 上个星期,老总决定使用mysql 8.0 的json函数来操作数据,于是去网上下了个mysql 8.0示例,将原来mysql5.6 的数据移植了这个数据库,解决了外部访问数据库的权限问题后,就把接下来的与原项目的整合问题交给了...
  • 同样是学习,听别人和给别人完全是两种不同的收获!  下面是自己讲解的正规式以及自己总结出的做正规式 题的规律:    正规式 1正规式是描述程序语言单词的表达式,对于字母∑,其上的正规式及其表示的...
  • 我要多少数据你就给我多少数据(非常人性化,由认为控制) # print(gen.__next__()) # 1 # print(gen.__next__()) # 2 # 通过next()函数来获得 # print(next(gen)) # 1 # print(next(gen)) # 2 # print(next(gen...
  • 背包九

    万次阅读 2017-08-02 23:17:32
    第一 背包问题 第二 完全背包问题 第三 多重背包问题 第四 混合三种背包问题 第五 二维费用的背包问题 第六 分组的背包问题 第七 有依赖的背包问题 第八 泛化物品 第九 背包问题问法的...
  • 第1 前言:本书什么;如何使用本书; 第2 初始SLAM:引子-小萝卜的例子;经典视觉SLAM框架;SLAM问题的数学表述;实践-编程基础; 第3 三维空间刚体运动 旋转矩阵;实践-Eigen;旋转向量和欧拉角;四元数...
  • 一个程序员如何副业月赚三万的真实故事

    万次阅读 多人点赞 2020-03-05 22:00:00
    loonggg读完需要3分钟速读仅需 1 分钟大家好,是你们的校长。之前过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...
  • 作者:小傅哥 ... 沉淀、分享、成长,让自己和他人都能有所收获! 一、前言 ...同样是拿了一本 谭浩强 的《Java 2 实用教程》,也同样有一台笔记本电脑,和一个宿舍一张床。 说说自己,刚上大一编程...
  • 飘了,在B站Java

    万次阅读 多人点赞 2021-05-13 19:15:43
    现在需要做的就是加快自己的录制速度了,但是如果你没有录制过视频教程的话,你可能体会不,录制一个视频教程其实蛮费劲的,的确比预想中的有难度,不过做起来很有趣,一定都能坚持下去! 是的,在录制...
  • 周五了,这几周遇到一个让很头疼的问题,接口文档里写着: 尼玛!看着就头疼,这写的什么呀,完全看不懂呀! 于是乎,一番百度,似乎有了点头绪,下面讲讲不是来概念的,直接切入正题,图片的...
  • 安全攻防技能38

    千次阅读 2020-08-14 12:29:58
    01 | 安全的本质:数据被窃取后,你能意识问题来源吗? 02 | 安全原则:我们应该如何上手解决安全问题? 03 | 密码学基础:如何让你的密码变得“不可见”? 04 | 身份认证:除了账号密码,我们还能怎么做身份认证...
  • 用户的订单一段时间后肯定是在后端删除的,删除以后在历史记录里就查不了。想让用户点击按钮,可以将订单内容生成图片保存在手机里,这样后端将订单删除后,用户也不担心了。目前基本的思路是将view中的内容传...
  • 2020张宇高数36PDF

    万次阅读 2019-08-06 17:37:12
    2020张宇高数18PDF 2020张宇线代9pdf 2020张宇概率论与数理统计9pdf 资料链接:https://shimo.im/docs/kJYcJYHQkgtkhqyK/ 数学者,天下学问之基础也!如果有人问,人类历史上最伟大的两门学科是什么,会...
  • 我肯定一把推开,但是我女儿,只好展现我作为父亲慈祥的一面,我跟她说做完给你玩,如果连的过爸爸,就给你玩多几盘,但是现在不能,等我做完我们来比赛,她这才答应不捣乱,打断我写代码的思路,我要抓狂的,不知...
  • 用俗话讲讲卡尔曼滤波与粒子滤波

    万次阅读 多人点赞 2016-07-24 21:34:15
    卡尔曼滤波可以根据一些已知的量来预测未知的量,这些量受的干扰必须得近似高斯噪声。这个东西可以用来干什么呢?例如我们可以用来预测明天,后天,未来好几天的温度。我们可以在前几天用温度计记录下一系列的温度...
  • dd大牛的背包九-背包问题汇总

    万次阅读 多人点赞 2016-12-09 20:59:26
    本文转载自https://blog.csdn.net/m0_37809890/article/details/83153974,若有侵权,请联系会及时删除 背包九 目录 第一 01背包问题 第二 完全背包问题 第三 多重背包问题 第四 混合三种背包问题 ...
  • 之前发了好几篇区块链的,还有同学说不懂,今天就试试用最少的话明白挖矿,背景知识可以参考下之前发的内容。 先说下哈希是啥,哈希就是每个东西的唯一标识,比如x的哈希:hash(x)=ga8e9hea7h8ae89h78aeh...
  • 如何好一个故事(6个要素)

    万次阅读 2017-11-30 17:23:41
    如何好一个故事

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,339,113
精华内容 535,645
关键字:

我要讲到的