《刘慈欣的思想实验室》笔记

本文探讨了太空开发对生活的深远影响,从太空资源开发到太空战争的可能性,再到虚拟现实社会体制的构想。提出了技术改造人类身份的疑问,以及在人类寿命延长、新人类诞生后的社会割裂。同时,讨论了《流浪地球》中人类秩序的维系,以及科学的目的和技术对人类进化的思考。

本文是喜马拉雅的一个音频笔记。

我认为科幻的魅力是让人驰骋在想象的空间和时间中。而好的问题是打开想象的钥匙,因此整理出一些个人觉得好玩的问题。

 

太空开发对我们生活的影响?

比IT产业要大得多

 

太空开发做什么?

太空矿藏、殖民地开发等

 

太空初期开发是否会像大航海时代一样,比如发生对资源和殖民地的掠夺?

 

太空国际法是否会继续被大家遵守?

 

外星文明和人类接触的设想?

外星文明的形态、目的,第一次接触要怎么做

 

世界各国面对外形文明的时候,会联合一致吗?

如果外星文明和我们同一层次,愿意交流,人类必定四分五裂。

如果外星文明高于我们,人类会团结一致。

 

虚拟现实的世界里,会有怎样的社会体制?

 

被技术改造后的人还是人吗?

谁来定义人。

完全被升级人领导的时代,肯定会到来。

 

当人类战胜死亡时,我们会建立一种怎样的文化和哲学?

 

新人类诞生后,一定会产生的割裂

现代人类,基因相差几户不到1%。但新人类,由于生物技术的选择,人可以有很大程度的差异。

 

太空中的战争可能的情形?

飞船战斗

现有人类军对和某种力量的战争,比如反叛的人工智能,外星人。

 

《流浪地球》中,未来人类社会是另外一副景象,未来人类的秩序和行为,将靠什么来维护和约束?

流浪地球中,技术是进步的,但社会政治层面上,是退步的。因为人类社会的体制,是要适应人类所处的环境。只有在某种环境下的,最有效的最好的社会体制。

 

《流浪地球》中,如何塑造一个反派人物?

地球刚起航这一段时间,一小股团体,为了自己的利益,置全人类利益而不顾。例如,用飞船逃生,几个人把飞船都悄悄开走了,把所有物资都带走了。

流浪地球的整个过程中,2500多年,这个反派可能是一个暴君,建立了一个极端专制黑暗的社会,为了维护自己的统治,他用手段阻碍科学技术的发展。再比如他割裂历史,把地球在太阳系曾经有过的历史全部抹杀掉,让整个地球人觉得现状是天经地义的。

 

科学的目的是什么?

1 认识宇宙

1 促进技术发展

 

在当今技术时代,如何思考人类的进化?

 

技术可以如何改造人类?

 

人类对自身的改造,会彻底颠覆我们今天习以为常的社会结构么?

如果人类的婴儿普遍接受定制和优化设计,那传统的家庭结构还需不需要存在,会变成什么样?

如果人类通过脑机融合会快速掌握知识,那传统的学校教育系统将会怎样?

如果人类的寿命得到巨大的延长,那人类的职业培训和劳动周期会变成什么样?

如果人类可以实现思维联网,那人类社会现在的社交活动,群体活动,组织形式甚至是国家都还会存在么?那时候的人类社会会出现什么样的治理体系呢?

信息直接发送导致语言的消失,信息共享导致个体消失。

 

人生的意义?

当前有太多其他的问题亟待解决,因此这个问题就没那么重要。但当人类全面升级,技术飞速发展,无需做任何努力就可以很好生活的时候,这个问题就成了一个致命的问题。

 

科幻小说中有哪些文明被毁灭的情节?

1 宇宙中的灾难,彗星撞地球。

2 外星文明的威胁。

3 传染病

4 核灾难

5 人工智能的反击

 

人类为何着迷于灾难电影?

因为现在没有大的灾难

### 问题分析 在 SQL 查询过程中,当出现 `java.sql.SQLDataException: Cannot determine value type from string '刘慈欣'` 异常时,通常表示数据库查询结果无法正确映射到目标 Java 类型。MyBatis 在处理构造函数注入时,会根据查询结果的列顺序与构造函数参数顺序进行匹配,并尝试通过 `TypeHandler` 将数据库值转换为对应的 Java 类型。如果构造函数参数类型与实际查询结果列的数据类型不匹配,就会导致该异常。 例如,构造函数中第一个参数是 `String` 类型,而查询结果的第一个字段是 `BIGINT` 或 `LONG` 类型,MyBatis 会尝试调用 `TypeHandler` 进行转换,但由于类型不匹配,最终抛出 `Cannot determine value type from string` 异常[^3]。 ### 解决方案 #### 1. 确保构造函数参数与查询字段顺序及类型一致 构造函数参数的顺序必须与查询结果列的顺序完全一致,并且类型必须匹配。例如: ```java public class Author { private Long id; private String name; public Author(Long id, String name) { this.id = id; this.name = name; } } ``` 对应的 SQL 查询应为: ```sql SELECT id, name FROM author WHERE name = '刘慈欣'; ``` 如果 SQL 查询顺序为 `name, id`,而构造函数参数为 `Long id, String name`,则会导致类型不匹配,从而引发异常[^3]。 #### 2. 使用 `@Param` 注解或别名明确字段映射关系 如果构造函数参数较多或顺序难以控制,建议使用 `@Param` 注解或在 SQL 查询中使用别名来明确字段与构造函数参数的映射关系。例如: ```java public Author(@Param("id") Long id, @Param("name") String name) { this.id = id; this.name = name; } ``` 对应的 SQL 查询: ```sql SELECT id AS id, name AS name FROM author WHERE name = '刘慈欣'; ``` 这样可以避免因字段顺序不一致导致的类型转换问题[^3]。 #### 3. 自定义 `TypeHandler` 处理复杂类型转换 如果字段类型与构造函数参数类型存在隐式不兼容(如数据库字段为字符串,而构造函数参数为枚举类型),可以自定义 `TypeHandler` 来处理特定类型的转换。例如: ```java public class StringToEnumTypeHandler extends BaseTypeHandler<AuthorType> { @Override public void setNonNullParameter(PreparedStatement ps, int i, AuthorType parameter, JdbcType jdbcType) throws SQLException { ps.setString(i, parameter.name()); } @Override public AuthorType getNullableResult(ResultSet rs, String columnName) throws SQLException { return AuthorType.valueOf(rs.getString(columnName)); } } ``` 然后在 MyBatis 配置文件中注册该 `TypeHandler`,以支持自定义类型转换[^4]。 #### 4. 避免使用 Lombok 的 `@Builder` 或 `@AllArgsConstructor` 构造不可变对象 如果使用 Lombok 的 `@AllArgsConstructor` 自动生成构造函数,可能会导致字段顺序与查询结果列顺序不一致,从而引发类型映射错误。建议手动定义构造函数并明确字段顺序,以确保类型匹配[^5]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值