Fork me on GitHub

程序员相关的纪录片

原文地址:

有哪些值得推荐的纪录片? - 夏萌吓懵瞎蒙的回答 - 知乎
https://www.zhihu.com/question/19956869/answer/55577331

作为一只程序猿,特来安利老本行的纪录片

希望各位geek码农有技术情怀或者怀着一颗仰慕geek之心的萌妹子们喜欢

首先是家喻户晓的乔帮主和比尔盖茨

硅谷传奇

电影改编自那本让雷军同学热血沸腾的《硅谷之火》,微软和苹果的发家史,本片片名还有一个翻译叫《硅谷有贼》 = = 高级黑?2333

还有一部题材类似的,也是两大巨头的故事

书呆子的胜利:意外帝国的崛起

软粉果粉都满足了,自然谷粉不能落下

谷歌与世界头脑

如今谷歌已经无处不在,正如片尾

There is no way out,or around,or throught.

接下来是各位程序员同学都熟悉的Linus Torvalds,非技术类的同学可能不太清楚,不要紧,他的自我介绍足以让你过目不忘

My name is Linus Torvalds and I am your god.

是的,你正在看的知乎,天天用的互联网就是跑在他一手开发维护并作为社区领袖二十多年来辛勤耕耘的Linux系统上的

代码

这部纪录片既是他的自传也是Linux的发展史,配合他本人的自传看口味更佳(Just for Fun (豆瓣))正如他自传的书名,他用一生都在诠释——编程不过是just for fun。我们的池建强同学还特地为该书写过一篇读后感:

Linus Torvalds 传记 By 池建强

说到Linux自然绕不开开源,下面这部电影用更广阔的视角展现了开源运动的点滴

操作系统革命

片中采访了一系列的开源先驱,从大胡子领袖RMS到Eric Raymond再到Linus,各位码农们看到这么多大牛必将大呼过瘾。豆瓣排行第一的影评出自

Fenng:操作系统的革命(Revolution OS) 操作系统的革命(Revolution OS) (操作系统革命 影评)

和上面这些生命力旺盛的巨头相比,还有一些辉煌昙花一现。下面这部电影讲的就是上世纪90年代市值曾一度超过苹果的Netscape

代码奔腾

读过吴军老师《浪潮之巅》的同学一定对这段历史印象深刻,除了记录历史,影片还对网景公司员工和创始人的生活做了鲜活的呈现。阮一峰同学也在看完本片后交出了一篇优秀的观后感:痛苦造就性格(也许还造就产品)

这部个人的传奇故事,令人扼腕叹息

互联网之子

天才少年总是命途多舛,一言难尽,详细的介绍可以看耗子哥 陈皓 的这篇博文:互联网之子

和上面那部一样,下面这部影片也是政治味道浓烈

维基解密的抗争

公平公正,维基和我们孜孜以求

从事设计工作的同学一定知道这个字体 https://zh.wikipedia.org/wiki/Helvetica

传奇字体

这部电影就是讲的Helvetica 的故事,很少有这样一部以一种字体为题材的电影,同样值得一看

最后一部,讲述前些日子震惊全球的棱镜门

第四公民

ARTS-3

ARTS是由左耳朵耗子陈皓在极客时间专栏《左耳听风》中发起的一个每周学习打卡计划。

1
2
3
4
5
6
7
Algorithm:至少做一个 LeetCode 的算法题。主要为了编程训练和学习。

Review :阅读并点评至少一篇英文技术文章。主要为了学习英文,如果你英文不行,很难成为技术高手。

Tip:学习至少一个技术技巧。主要是为了总结和归纳你日常工作中所遇到的知识点。

Share:分享一篇有观点和思考的技术文章。主要为了输出你的影响力,能够输出你的价值观。

Algorithm(算法)

Leetcode 将有序数组转换为二叉搜索树

leetcode 108: https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode sortedArrayToBST(int[] nums) {
if (nums.length == 0) return null;
TreeNode head = helper(nums, 0, nums.length - 1);
return head;
}

public TreeNode helper(int[] nums, int low, int high) {
// Done,边界条件
if (low > high) return null;
// 取中间值作为根节点
int mid = (low + high) / 2;
TreeNode node = new TreeNode(nums[mid]);
// 使用递归方法构建左右子树
node.left = helper(nums, low, mid - 1);
node.right = helper(nums, mid + 1, high);
return node;
}
}

Review(点评)

原文地址: 伟大的开发者永远不会停止学习

❶ - 阅读的艺术

图书

博客

推特

❷ - 从Avid Reader到Avid Writer

教是两次学习 - 约瑟夫·朱伯特

阅读更多...

使用Spring Boot搭建简单GraphQL服务

原作者: Swathi Prasad

原文地址

译者: ClamorousKun

译文链接: https://juejin.im/post/5d61397bf265da03c92703a3

GraphQL 是一种用于 API 的查询语言,使得客户端能够准确地获得它需要的数据,而且没有任何冗余。GraphQL是一种强类型协议,所有数据操作都会根据 GraphQL Schema 来进行校验。

在本文中,我们将使用Spring Boot构建一个简单的GraphQL服务器。

添加Maven依赖项

创建示例Spring Boot应用程序并添加以下依赖项。

  • graphql-spring-boot-starter

    1
    2
      用于启用 GraphQL 控制器,并使其在 path/graphql 中可用。它将初始化GraphQL Schema bean。
    复制代码
  • graphql-java

    1
    2
      可以使用易于理解的Graphql Schema 语言来编写 schema。
    复制代码
  • graphiql-spring-boot-starter

    1
    2
      提供图形界面,我们可以使用它来测试 GraphQL 查询和查看查询定义。
    复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<dependency>
<groupId>com.graphql-java</groupId>
<artifactId>graphql-spring-boot-starter</artifactId>
<version>5.0.2</version>
</dependency>
<dependency>
<groupId>com.graphql-java</groupId>
<artifactId>graphql-java-tools</artifactId>
<version>5.2.4</version>
</dependency>
<dependency>
<groupId>com.graphql-java</groupId>
<artifactId>graphiql-spring-boot-starter</artifactId>
<version>5.0.2</version>
</dependency>

以下完整的POM文件内容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.techshard.graphql</groupId>
<artifactId>springboot-graphql</artifactId>
<version>1.0-SNAPSHOT</version>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath />
</parent>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.graphql-java</groupId>
<artifactId>graphql-spring-boot-starter</artifactId>
<version>5.0.2</version>
</dependency>
<dependency>
<groupId>com.graphql-java</groupId>
<artifactId>graphql-java-tools</artifactId>
<version>5.2.4</version>
</dependency>
<dependency>
<groupId>com.graphql-java</groupId>
<artifactId>graphiql-spring-boot-starter</artifactId>
<version>5.0.2</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<optional>true</optional>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

创建JPA实体和存储库

接下来让我们创建一个名为Vehicle的简单实体和相应的JPA存储库。我们将使用Lombok来编写,这样可以避免编写诸如getter和setter等等的样板文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package com.techshard.graphql.dao.entity;

import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.persistence.*;
import java.io.Serializable;
import java.time.LocalDate;

@Data
@EqualsAndHashCode
@Entity
public class Vehicle implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@Column(name = "ID", nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;

@Column(name = "type", nullable = false)
private String type;

@Column(name = "model_code", nullable = false)
private String modelCode;

@Column(name = "brand_name")
private String brandName;

@Column(name = "launch_date")
private LocalDate launchDate;

private transient String formattedDate;

// Getter and setter
public String getFormattedDate() {
return getLaunchDate().toString();
}
}

然后是相应的JPA存储库。

1
2
3
4
5
6
7
package com.techshard.graphql.dao.repository;
import com.techshard.graphql.dao.entity.Vehicle;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface VehicleRepository extends JpaRepository<Vehicle, Integer> {
}

GraphQL Schema

GraphQL 用有自己的独特语言来编写GraphQL Schema,称为Schema Definition Language(SDL)。schema 的定义,是由端点上所有可用的 API 功能组成的。

GraphQL架构的典型示例如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
type Vehicle {
id: ID!,
type: String,
modelCode: String,
brandName: String,
launchDate: String
}

type Query {
vehicles(count: Int):[Vehicle]
vehicle(id: ID):Vehicle
}

type Mutation {
createVehicle(type: String!, modelCode: String!, brandName: String, launchDate: String):Vehicle
}

接下来,在 src/main/resources 下创建一个文件夹,名为 graphql,并在该文件夹下创建vehicleql.graphqls文件。复制上面的内容并将其粘贴到vehicleql.graphqls文件中。需要注意的是,文件名称是可自定义的。以.graphqls作为文件扩展名即可。

阅读更多...

走向中级程序员的路上,我们给你总结出了一条捷径

原作者: Saurabh Maurya

译者: 核子可乐

译文地址: https://www.infoq.cn/article/3EzkoEAlgktTAm4Rz0pT

我们逐渐在工作当中找到了状态,部署生命周期不再是神秘的难题,代码审查的速度也终于超过了代码编写。最重要的是,我们开始发布真正能够运行的成果。

但是接下来,我们可以松懈吗?当然不行!对知识的探索,永远是我们时刻追求的目标。

在克服惰性方面,一种务实的方法是坚持学习那些能够帮助我们在面试中表现更好的知识。

如此一来,我们就会拥有一种明显的进步以及值得始终坚守的目标。

请关注以下五个方面——

  1. 低级 / 库设计
  2. 系统设计
  3. 并发
  4. 设计模式
  5. 一般编码惯例

我在本文中给出的资源主要与 Java 相关,但大家肯定也能找到针对其他语言的类似资料。无论如何,这里提到的大部分设计理念与语言无关。

低级 / 库设计

如果大家回顾一下 Uber、亚马逊等企业在第 2/3 轮软件开发工程师面试当中提出的问题,就会发现其中至少会有一轮主要涉及此类低级设计方向。我听说过的两大常见场景分别是:

  1. 设计一套记录器库
  2. 使用 Java 语言实现流框架

我特别喜欢这个关于记录器的问题;因为根据求职者的业务水平,大家可能会想到多种多样的答案。
这里大家可以先着手试试。在完成之后,请各位思考以下几个问题:

  • 您是否将实现分解为不同的接口?或者说使用了一个超类来涵盖一切?
  • 您是否考虑到类当中的线程安全问题?
  • 您的记录器是单体的吗?采用懒惰加载还是急切加载?为什么?
  • 它具备可插拔性吗?第三方可以利用其它实现来扩展您的库吗?
  • 垃圾收集机制是如何实现的?您是否创建了过多对象?

Log4j2 是一套设计上极为出色的记录工具,感兴趣的朋友可以点击此处参考它的实现思路。
我暂时没找到其它更好的低级设计资源。如果各位有什么好主意,请在评论中不吝赐教。

系统设计

开发人员们可能更熟悉“设计问题”这种表述。我听说过的具体案例包括:

  1. 设计一套 URL 缩短系统
  2. 设计 Twitter 的 NewsFeed 系统

这里我向大家推荐 Donne Martin 的《设计入门》。虽然篇幅很长,但这确实是一种优秀的广度优先方法,能够帮助大家快速熟悉系统设计原理。
至少,大家应该熟悉以下知识:

  1. 异步与同步写入;消息队列
  2. 一致性模式——特别是最终一致性
  3. 数据库类型(SQL 与 NoSQL)以及规模伸缩
  4. 不同级别的缓存
  5. 将问题陈述分解为不同的独立服务

这里我要向大家推荐《深入理解系统设计访谈》。其中详细探讨了系统设计的具体问题,包括我之前提到的两个例子。虽然属于付费资源,但绝对物有所值。

并发

并发性是初级工程师与高级工程师之间的一大核心区别。很多朋友可能想象不到,并发实际上非常难以实现。
这里推荐大家阅读《Java 并发实践(Java Concurrency in Practice)》一书。在读完之后,大家应该会对以下问题拥有更深刻的理解:

  1. Java 的内存模型
  2. 发生前关系
  3. 虚假唤醒调用
  4. 易失性与同步性
  5. 线程安全、等待与通知等

如果大家使用的是其他编程语言,也请参考对应的书籍。总之,如果没能彻底掌握相关概念,我们将很难对竞争条件进行调试。
Educative 的《Java 多线程与并发( Java Multithreading and Concurrency )》 也是很好的资源,推荐大家阅读其中的概念,而后结合常见的面试问题进行理解。

设计模式

虽然面试一般不会问到这些问题,但在研究不同的设计用例时,大家或多或少都会接触到。
而在了解了相关概念之后,我们就会意识到这些模式无处不在。举几个例子:

  1. Adapter — Arrays.asList()
  2. Decorator — Collections.synchronizedCollection(new ArrayList<>())
  3. Prototype — Immutables.copyOf()
  4. Command — Runnable interface
  5. Strategy — java.util.Comparator#compare()

StackOverflow 中列出一份长长的 Java 核心库模式清单,推荐大家了解一下。
我也尝试过阅读经典的《设计模式:可重用面向对象软件中的元素(Design Patterns: Elements of Reusable Object-Oriented Software)》,但我承认我真的啃不下来。

但我也试过《深入浅出谈设计模式(Head First Design Patterns)》,这看起来不像是技术读物,但却给我带来了巨大的帮助。

这本书里的故事选得很好,清晰梳理出了类似模式之间的微妙差别。我花了一个周末读完了它,真的是干货多多又有趣。
过一阵子我想再回去啃啃《可重用面向对象软件中的元素》,这本书同样极具价值,只是比较硬核、对开发经验的要求更高。

一般编码惯例

看书、看书、再看书

《高效 Java(Effective Java)》。这是大家熟悉 Java 表达与最佳实践的理想方法。其中分为 90 个独立的主题,每个主题都长达数页。因此,我们可以选择与当前工作内容相关性最强的部分。
《清洁代码(Clean Code)》——有了这本书的帮助,大家能够更快更方便地阅读并审查其他人编写的代码。与《高效 Java》类似,我同样推荐大家有选择地阅读这本书中的对应章节。

熟练掌握您的 IDE

好吧,这一点跟面试没什么关系。但说真的,熟练掌握 IDE 能够极大提升编程的效率与趣味性!

我个人使用 IntelliJ,还安装了一款“Key Promoter X”插件。每当我使用了能够通过快捷键实现的鼠标操作时,它都会发出提醒。只需要几周,大家就能掌握快捷键操作并让自己看起来专业万分~当然,这都是被提示磨出来的。如果大家使用的是其他 IDE,也可以试试类似的小工具。但我还是强烈推荐 IntelliJ,真的很棒。

《42 项 IntelliJ 提示与技( 42 IntelliJ Idea Tips and Tricks )》是 YouTube 上的一段讲座,大家可以通过这种有趣的方式熟悉 IntelliJ 中提供的各种常用功能。

这份清单挺长的,不过大家不用着急,阅读的意义不在于读完,而在于借此改善自己在日常工作中的体验。加油!

顺便说一句,这份清单主要面向已经拥有 0 到 4 年开发经验的人群。如果各位还没开始工作,请先从 Leet Code 入手,等有了一定积累之后再阅读这份书单。

一般来说,直到接触现实场景中的实际系统之后,大家才会遇到设计概念层面的问题。

相关书籍

下面,我再立足各个基础方向推荐一本好书,尽可能把它们组织成一个学习体系。

  1. Effective Java — Java 最佳实践入门,阅读难度很低。
  2. Clean Code — 助您快速掌握编码中的经验法则。
  3. Java Concurrency In Practice — 用于掌握并发机制的基础书籍。
  4. Head First Design Patterns — 有趣、有效的面向对象设计思维学习方式。
  5. Designing Data Intensive Applications — 我见过的最高级别的技术类书籍,包含极为丰富的系统设计知识——但也非常难啃,建议大家一次读一点慢慢消化。

原文链接:
Growing pains — Becoming an Intermediate developer

《极客与团队》读书笔记

豆瓣地址: 极客与团队

原文地址: https://book.douban.com/subject/21372237/

天才程序员神话

本章重点:软件开发是一项集体活动。要在工程团队中获得成功,需要根据谦虚、尊重和信任组织自己的行为。 这其实也是全书基石。

  1. 不要隐藏自己的工作:克服不安全感,勇于让同事看到未成熟的工作,尽早发现错误、改善设计。
  2. 接受批评与自我批评。
  3. 快速失败,并从失败中总结。
  4. 留出学习的时间。
  5. 学会忍耐。

打造团队文化

团队文化很重要,如果不打造和维护团队文化,那么强个性的人会在团队中培养自己的文化(也就是说,一种掌控团队的文化氛围是无可避免的)。团队中每一个人都应该参与到定义、维护团队文化当中。如果有明确的团队文化,那么团队会选择合适自己的人。

成功的团队文化重视沟通,一个通用的准则是:人少时使用同步沟通,人多时使用异步沟通。所有信息都应该存在项目文档中。

高效会议的几点原则:

  1. 只邀请必需的人;
  2. 草拟议程并提前发出;
  3. 完成会议目标即散会;
  4. 保持会议议程;
  5. 尽量安排在中断点附近;

什么是文化 27

为什么要关心它 30

文化和人 33

优秀团队文化中的沟通模式 36

高层面同步 38

每日进行的讨论 46

使用bug跟踪系统 50

沟通也是工程的一部分 50

说到底真正重要的还是代码本身 55

群龙不可无首

本章的重点:传统的经理关系如何做事,而领导者关系做什么事(并相信团队知道如何实现)……

自然界没有真空地带 57

@deprecated manager 59

主管才是新的经理 60

唯一要担心的就是……好吧,所有的事情 62

仆人式领导 64

反模式 65

领袖的处事之道 71

人是植物 89

内部激励和外部激励 91

应对有害之人

如何应对对团队有害的外部因素(不良用户等)以及内部因素。

最有可能受到影响的因素是团队的注意力和专注力

优先考虑消除有害的行为,而不是针对人。

组织操纵的艺术

这一章没啥好说的,就是一堆办公室政治。

优点、缺点和策略 113
理想的情况:团队在公司里应该是怎么运作的 114
现实的情况:当环境成为成功路上的绊脚石 117
操纵你的组织 124
b计划:走为上 138
不要放弃 140

用户也是人

三个简单概念:

  1. 市场营销:了解人们对软件的看法,决定用户会不会使用;
  2. 产品设计:容易尝试、速度快、友好;
  3. 客户服务:与用户建立长期的良好关系;

总结

总而言之,HRT(谦虚、尊重和信任)是最核心的原则

谦虚

年纪越大,就越知道自己的局限。知识越丰富,越知道自己的无知。绝大部分时候,我们的想法和行为只是历史洪流中微小的一部分。对自己和对外界的看法,依赖于我们的认知地层,后者又依赖于学识和阅历。回顾过去,当时认为重要的东西,现在看来价值有限。曾经自认为的独一无二的想法,原来只是千万个类似想法中的一个。

尊重

“出身”很重要。一个人的发展,很难超越自己的出身太多。总要付出一整个青春的努力,才能进入更高一点的阶层。位于阶层顶部的人,往往是经过了几代人的奋斗,一点一点积累而来。我们的优秀,建立在先辈们的优秀之上。所以和别人比没有意义,起点不同。要和自己比,和先辈们比,看有没有通过努力让自己站得更高,走得更远。

一人一个活法。每个人有自己的世界观价值观,以自己的狭隘妄自评判别人的生活,是幼稚的。每个人至少能比别人更知道自己想要什么,想过什么样的生活。哪怕想法一样,同样的努力,最终结果也会大相径庭,各有各的难处。成熟的一个表现就是接受差异,尊重不同。

信任

人总有长处和短处,哪怕都是长处,时间精力也不能让我们事必躬亲。科学技术的发展,每一件事背后的复杂性大大增加,要做成一件事,越来越依靠协作。组织制度健全程度的一个评判方法,就是你对陌生人有多信任。公司内部也是如此,如果别人辜负了你的信任,最终给对方带来的损失比你自己的更大。

请相信时间的力量

原作者: 李永乐

原文地址: 又到开学时,请相信时间的力量

不用在乎一时的得失成败,更不追求一时的成绩突飞猛进,只要持之以恒,就能获得巨大的收获

去年9月开学前,我写了一篇文章《相信时间的力量》。如今又到了开学季,有同学升入了初中高中,也有同学即将面临中考、高考。我再把这篇文章发出来,希望能给同学们一点启示。

在我十年的教学生涯中,教过许许多多的学生,经历了许多次开学第一课。我曾经利用第一课讲物理学的发展史、讲科学到底是什么,也曾经用第一课讲三国,分析孙刘联军为什么能打赢曹操。现在,又要开学了,我想给同学们上的第一课是:相信时间的力量。

我们不妨从一部电影《当幸福来敲门》说起……

《当幸福来敲门》宣传海报

克里斯•加纳 是一名推销员,他用尽全部积蓄买下了高科技治疗仪,到处向医院推销,可是价格高昂,接受的人不多。就算他多努力都无法提供一个良好的生活环境给妻儿,妻子最终选择离开家。从此他带着儿子克里斯托夫相依为命。

父子俩流落街头

一个偶然的机会,克里斯争取来一个股票投资公司的实习机会,但是他有6个月的实习期,实习期里没有报酬,实习期结束后也只会从20个人中选一个人成为正式员工。

股票投资公司实习

为了自己的理想,他必须在更短的时间里做出比别人更好的成绩。他默默努力着,白天连续拨打着一个又一个电话,为了节约上厕所的时间甚至不喝水,晚上与儿子住在教堂的收容所里,或者躲在地铁站里的公共厕所里……

子俩躲在厕所

他坚信,幸福明天就会来临。最终,当他获知自己被公司录用时,默默的流着泪为自己鼓掌。这一幕感动了无数观众。

为自己鼓掌

这部电影中有一个情节,克里斯带着他的儿子打篮球,他的儿子打得不好,克里斯说:“也许你永远也打不好篮球了。”他的儿子听了非常泄气,准备放弃篮球。

克里斯突然对儿子说:“你有梦想的话,就要去捍卫它。别让别人告诉你,你成不了材,就算是我也不行。

父子对话

进入新学期,每个同学都会有自己的目标。但是也许在长时间学习和偶尔遇到挫折的时候,我们不免会产生一种心理:是不是我无论如何努力,也不能追上班里的学霸了?是不是我无论如何努力,也无法竞争过大城市名校的学生考入理想的大学了?是不是我脑子太笨了,智商不行,无论如何努力也都不会有效果呢?

其实,在600万年前,人类和黑猩猩有着共同的祖先,人类在600万年前开始一天天学会了劳动,一天天产生了语言,一天天学会了相互扶持,学会了用每天一点点的进步改变自己,也许一年两年过去了,人类并没有发现自己跟黑猩猩有什么区别,然而就是这每天一点点地进步,使人类穿上衣服,住进房子,学会耕种和放牧,使人类出现了牛顿爱因斯坦这样伟大的科学家,孔子孟子这样伟大的思想家。

人类和黑猩猩

我希望同学能够记住这句话:你有梦想的话,就要去捍卫它,时间就是最厉害的武器。

也许每天我们只能前进一小步,一天两天一个月两个月过去了,你都不会发现自己有什么提高,但你永远不知道如果你每天努力一点点,300天后会有多么惊人的进步。

我见过太多在高三成绩发生飞跃的学生了,他们在高二毕业的时候好多课成绩不好,到了高考的时候考到了重点大学。新的学期,拼搏和努力不需要理由,自我放纵自甘堕落成为黑猩猩,才需要理由。成功之道就在于不要去想能否成功,而要把通向成功的每一步都走好。

在这个过程中,我们不用在乎一时的得失成败,更不追求一时的成绩突飞猛进,只要持之以恒,就能获得巨大的收获****。投资大师巴菲特其实每年的利润增长也并不高,但是他做到了40年持续的投资回报,资产从100美元变成了160亿美元。这就是时间的力量。

巴菲特

也许有同学要问:我在去年就每天都熬夜学习,为什么最终也没什么进步呢?

我要说的是,有些人并没有努力学习300天,而是学习了一天,重复了300次。

学习和思考同样重要,我们每天都要反思:自己今天是不是比昨天有进步?又弄懂了哪些问题?避免了哪些错误?明天又应该通过什么方式补充自己的不足?而不是只为了完成作业,或者熬夜到12点,以祈求自己心理上的安慰。这种学习方式表面上是勤奋,实际是懒惰和对自己的不负责。

如果有人问:人生最大的幸福是什么?同学们的回答会有很多种。我想跟大家说说我的理解:人生最大的幸福就是拥有为自己的梦想而奋斗和拼搏的机会,中学生们正处于这种幸福之中。

许多成年人都很怀念青少年时代,我们希望回到过去那个无忧无虑的日子,希望回到那个白天上学下课踢球,骑着一辆破自行车回家,拿一块钱买个冰淇淋自己舍不得吃送给班里女生的日子。

同学们,老师真的很羡慕你们!你们处于花季雨季,你们的未来有无限的可能!

我忠心的希望他们好好享受现在的生活,只要你们努力过,奋斗过,那么无论结果如何,当他们长大了,回顾自己的学习生活,都无怨无悔,你会对他的师弟师妹说,那段日子是我一生中最美好的日子,我没有因为虚度年华而悔恨,也没有因为因为碌碌无为而羞愧。

福楼拜说:人生最辉煌的时刻不是功成名就之时,而是战胜痛苦和绝望,从自卑走向自信的时候。我希望新学期的第一天就是各位同学新的起点,把学习生活当作你的爱人,去爱慕她,追求她,拥有她,享受她,为她努力和拼搏,这一切不妨就从今天,从现在开始。

顺便一说,《当幸福来敲门》是根据真人真事改编的,故事的原型叫做加纳徳,他曾经经历了电影中的各种悲惨遭遇,但是没有向命运低头,如今他是一个千万富翁。电影中他也客串了一个龙套角色。

加纳德

他经常对别人说:“你可能会贫穷潦倒,但最终怎样取决于你自己。****”

如何设计一个良好的接口

作者:Alan_beijing

www.cnblogs.com/wangjiming

在设计接口时,有很多因素要考虑,如接口的业务定位,接口的安全性,接口的可扩展性、接口的稳定性、接口的跨域性、接口的协议规则、接口的路径规则、接口单一原则、接口过滤和接口组合等诸多因素,本篇文章将简要分析这些因素。

一 规范性建议

1.职责原则

在设计接口时,必须明确接口的职责,即接口类型,接口应解决什么业务问题等

2.单一性原则

在明确接口职责的条件下,尽量做到接口单一,即一个接口只做一件事,而非两件以上。很多非资深接口设计者,在设计接口时,总认为接口所做的事越多,越牛叉,这是非常严重的错误认识。

3.协议规范

在设计接口时,应明确接口协议,是采用HTTP协议,HTTPS协议还是FTP协议,要根据具体情况来定。

  • FTP协议(File Transfer Protocol,简称FTP),是一套标准的文件传输协议,用于传输文件,如.txt,.csv等,一般文件传输,采用FTP协议
  • HTTP协议,适用一般对安全性要求比较低或没要求的业务情景
  • HTTPS=HTTP+SSL,适用于对安全性要求较高的业务情景

4.路径规则

由于api获取的是一种资源,所以网址中尽量为名词,而非动词

/api/v1.0/Pruduct/2019
/api/v1.0/Users/2019

5.http请求方式

接口基本访问协议:get(获取),post(新增),put(修改)和delete(删除)

  • get /users:列出所有用户
  • get /users/id:根据id获取用户
  • post /user:新增用户
  • put /user/id:根据用户id更新用户
  • delete /user/id:根据用户id删除用户

6.域名

一般地,域名分为主域名和专有域名,主域名适合api长期不变或变化较少的业务,专有域名是解决具体的专有业务的

以百度举例:

(1)主域名:www.baidu.com

(2)产品服务类

(3)市场活动类

7.跨域考虑

在明确域名的情况下,一定要考虑接口是否跨域,以及跨域应采用的技术手段等。

8.api版本

对于接口的url,应加版本号http://api.demo.com/v{d}/,如 ,其中d表示版本号,如v1.0,v2.0

例子:获取产品号为2019,版本号为v1.0的版本号的产品信息

/api/v1.0/Pruducts/2019

阅读更多...

社会的两大矛盾,文科思维和理科思维(原创)

以下观点只是很粗略的思考 🤔,可能不太严谨,只是个人的一些想法和思索。

工作已经 1 年多了,愈发的感觉社会其实存在着两大基本矛盾,即文科思维和理科思维

文科思维讲人文,讲集体,有些对应共产主义。

理科思维讲科学,讲个人,有些对应资本主义。

哪种转变最好?

这两者其实都会趋向结合,即文科思维会逐渐理科化,理科思维会逐渐文科化,逐渐中和,但源头总归占大头,全然转变是不可能的,那哪个思维向哪个思维转变其实是最好的呢?

我觉得是理科思维向文科思维转变是最好的转变方式。

比如工作上,理科比文科是更要好找工作的,因为社会很现实,追逐利益是社会不变的主题,我们应该先有一技之长吃饱穿暖才能进一步发展,先生存再思考。

恰完饭才能追逐梦想,过于理想主义会过的遍体鳞伤。

那文科思维有用处吗,有,有大用处,技术让我们活下来,而文化让我们成为一个人而不是动物。

比如有谁会记得 10 年前某个普通程序员(大佬除外)写的软件对人类的意义,而文学可以,文学记录了人的思想和价值,是可以长久流传的。

两种思维在经济上的影响

科技的快速进步会压制文学,会有一段时间的反弹,科技会进入一个小的滞停期 (经济危机的由来?😆),但人类的发展潮流终归是技术进步,因此总会进入下一个科技发展爆发期。

美国 1995年至2001年间出现互联网泡沫后,互联网进入快速发展期

中国 2018-至今 出现的互联网寒冬,其实可能也预示着中国下一阶段的科技爆发期,在这个时期应该更多的提高个人技能,才能在下一波红利中获利。

##理科思维向文科思维转变在日常生活的应用

先实践再理论 (学习上先实践,再学习知识)

先业务后技术 (程序上先实现业务功能,再考虑技术优化)

先实现后深化 (先实现功能,再迭代进化)

先简单后复杂 (先实现简单的功能,逐渐组合实现复杂系统)

思考 🤔

总感觉程序员和哲学家有些地方是共通的,哲学家思考社会,程序员思考程序设计,也许要两者兼具,才能成为大佬吧。

不想做哲学家的程序员不是好程序员(哈哈😼)

对马云和马斯克对话的思考🤔

1. 思考 🤔

今天看新闻,2019 世界人工智能大会于八月二十九日在上海举世博中心举行,马云马斯克进行关于ai 发展的对话

看了新闻视频感觉很有意思,用主持人的话说,这就是地球和卫星的对话

马云的思维很符合中国人的思想内涵,而马斯克符合美国人的思维想法

马斯克关心宇宙,马云关心地球

马斯克忧虑AI发展,马云对人的优势迷之自信

马斯克从技术来推理,马云用玄学来解释

— sosence

总体感觉,马云的观点更注重人文,马斯克观点更注重技术,文科生和理科生的相爱相杀 😼

有点像《流浪地球》电影讨论时,中国人选择带着地球流浪,美国人会选择乘飞船离开地球 🌐。中国人比较注重家国思想,而美国人崇尚个人主义。

不论对错,这是一场思维的碰撞 💥,很有意思,推荐大家看一下

2. 视频地址:

3. 马云 VS 马斯克对话全文实录

原文地址: 马云 VS 马斯克对话全文实录

2019 世界人工智能大会(WAIC)上,自嘲为「火星人」的马云和「未来的火星人」埃隆 · 马斯克(Elon Musk)针对人工智能、宇宙、教育、人类命途等话题上演了一场精彩对话。

以下是现场对话全文 (视频点这里):

话题一:AI

马斯克:我们先看看 AI 这个关键词,我听说 AI 是「爱」的意思,是这个意思吗?

马云:我特别不喜欢把 AI 叫做人工智能,我把它称之为「阿里巴巴智能」。

马斯克:我也这么感觉。一般大家都会低估人工智能的能力,他们觉得可能就像是聪明人而已。实际上,人工智能比这个厉害得多,可能比最聪明的人还要聪明。面对这个状况我们应该做什么呢?我也不知道,我也不确定,但我希望 AI 会是好东西。

有一句老话,如果打不过他们就和他们组成团队吧。我所开发的公司就是这样,目的就是让我们加入到 AI 战队里面。现在我们已经和手机、电脑连在一块了,我们已经成为带有机器特征的人了,机器在你生命相当于你生命的延伸,你离开了手机像少了一个手臂。

与人的思维速度相比,现在的人工智能太慢了。假定一个计算机多几个服务点的计算能力,每个毫秒在计算机来说是极大进步,对于我们来说这不算什么。理解人类的自然语言对于计算机来说非常短,像鲸鱼在发的声音,每秒钟最多一百个字节左右的信息对于电脑来说太慢太短了。计算机可以超过你几十万倍数字通量的方式进行对话,机器人看到人应该会特别无聊,我想机器会比人聪明得多。这是我想说的人和计算机的差别。

马云:我特别惊讶于你对于科技的愿景。我不是搞高科技的人,我是讲生活的,我觉得 AI 能够给全世界,给社会打开一个新的篇章,让大家更好的理解自己,而不是完全理解外部的世界。

今天要预测未来很难,特别难。99.9% 的预测都是错的,只有 0.001% 的预测是对的。为什么对呢?那是运气好,很多情况 80% 的数据是错的。

对于人工智能,对于阿里巴巴的智能,我很高兴它们能够更好的理解人类的本质。很多人担心人工智能,他们需要对自己有更多的自信。今天很多问题没有解决方案,但是未来会有,青年人会有解决方案。

AI 的未来很难预测,历史上,人们对未来的 99.99% 的预测后来都被证明是错的。人们应该有更多的自信,AI 不是一个威胁,也不是恐怖的东西,人类也可以学会。

我很乐观,我不觉得 AI 是一种威胁,我不认为人工智能是很恐怖的东西,因为人类很聪明。我觉得 AI 很好很有意思,我们会拥抱它。

马斯克:告诉大家一个事实,现在电脑进步的速度是惊人的。比如玩电子游戏,往前看 40 年 50 年,可能你会有两个方块的单机游戏,但是现在可以很多人在一个游戏平台上一起打游戏,进步巨大。越来越多的游戏做得越来越真实。科技在未来仍然会有非常巨大的发展。

人类文明有 7000 年历史,这个人类文明史从文明角度来看高低起伏非常厉害。我不是个天然的乐观或者悲观的人,但未来科技发展将会超越我们理解它的能力。我不知道这样是好事还是坏事。

话题二:火星

马云:听说你要去火星?我对火星没有兴趣,我刚从火星回来。我对地球上发生的一切更感兴趣,为什么大家对火星这么好奇。

对于火星,我们需要采取行动。我没有考虑过外星人。外星人在哪里,这是一个问题。为什么没有找到外星人,有些人找到外星人,说去过 51 区吗?我说别开玩笑了,有外星人我一定知道。

马斯克:我觉得我们需要更进一步了解宇宙的本质,以确保我们能够进入到不同的行星生活。这并不是因为我觉得地球没有希望了,但毕竟存在这种可能,即使我们尽了最大的努力,地球还是有可能会发生人类无法控制的事情,外部力量或者内部事物导致文明被毁灭或者我们受到足够的威胁以至于我们只能搬到另外一个星球去生活。

换句话说,地球 45 亿年的历史中,现在第一次有可能让生命离开地球生活,之前是没有可能的。但是这个机会窗口会有多久,长或者短都有可能。假定机会窗口不长,我们需要尽快抓住机会窗口。这是我的观点。

阅读更多...
  • Copyrights © 2015-2023 高行行
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信