这所平平无奇的双非大学,计算机也考408了!

“平平无奇”一词,是一个网络流行语,出自某电视剧,古天乐饰演的角色被人称作“平平无奇”。(古天乐年轻的时候是很好看的)

河北大学位于保定市,是一所双非大学,计算机学科评估C+,软件工程学科评估也是C+,在双非大学中排名中等偏上。

就这样一所大学,考试科目今年也今年也改成了408。

究竟哪些专业变化了?我们先来看一下招生目录:

2020考研(今年)招生目录

图片来源:河北大学官网

http://graduate.hbu.cn/sszsjz/1642.jhtml

2019考研(去年)招生目录

图片来源:河北大学官网

http://graduate.hbu.cn/sszsjz/1260.jhtml

从招生目录中可以看到,今年的变化还是非常大的。小编下面总结一下具体的变化:

1.  计算机专硕和软件工程专硕改名为电子信息。

2. 计算机学硕,计算机专硕,软件工程学硕,软件工程专硕的专业课都变为408!

各科的变化如下:

软件工程学硕

从 907数据结构 变为 408

软件工程专硕

从 835数据结构(含C语言) 变为 408

计算机学硕

从 862数据结构 变为 408

计算机专硕

从 893数据结构(含C语言) 变为 408

明明都考数据结构,却分了四种专业课,四个专业都不一样。不过转408之后,这几个专业面临的情形是一样的,增加了三门专业课。

同样是9月份才公布,开始复习408是肯定来不及了。

那会有多少复习408的考生,会报这所学校呢?

3. 网络空间安全学硕,专业课变化

从 853计算机网络(计)或862数据结构(计) 变为了 853计算机网络(计)

去掉了数据结构,只能选择考计算机网络了。

之前复习数据结构的同学,也只能换计算机网络来复习,或者换学校了。

这样,总体来看河北大学的专业课变化非常大,绝大部分同学都要换学校报考了。

20考研的QQ群,有各个学校的考研资料,欢迎加入

群号是 984844252


您还可以在以下平台找到我们

你点的每个在看,我都认真当成了喜欢

在Java开发中,一些看似简单的代码片段可能隐藏着严重的潜在问题,这些问题可能在短期内不会暴露,但一旦发生,往往会造成难以排查的后果。以下是一些常见的简单但容易引发问题的Java代码示例。 ### 3.1 单例模式中的双重检查锁定问题 在实现单例模式时,为了提高性能,开发者常使用双重检查锁定(Double-Checked Locking)模式。然而,如果不正确使用 `volatile` 关键字,可能会导致线程安全问题。 ```java public class LazySingleTon { private static LazySingleTon instance = null; private LazySingleTon(){} public static LazySingleTon getInstance() { if(instance == null){ synchronized (LazySingleTon.class){ if(instance == null){ instance = new LazySingleTon(); } } } return instance; } } ``` 在上述代码中,`instance` 没有使用 `volatile` 修饰,这可能导致指令重排序的问题,从而导致某些线程看到一个未完全构造的实例。为了防止这种问题的发生,应该使用 `volatile` 来修饰 `instance` 变量[^4]。 ### 3.2 使用 `ConcurrentHashMap` 时的复合操作问题 虽然 `ConcurrentHashMap` 是线程安全的集合类,但在执行一些复合操作时,仍然需要额外的同步机制来保证原子性。 ```java public class Cache<K, V> { private final ConcurrentHashMap<K, V> cache = new ConcurrentHashMap<>(); public V get(K key) { return cache.get(key); } public void put(K key, V value) { cache.put(key, value); } // 复合操作需要保证原子性 public V putIfAbsent(K key, V value) { V existing = cache.get(key); if (existing == null) { existing = value; cache.put(key, value); } return existing; } } ``` 在上述代码中,`putIfAbsent` 方法是一个复合操作,包含检查和更新两个步骤。由于 `ConcurrentHashMap` 不保证复合操作的原子性,多个线程同时调用该方法可能会导致数据不一致的问题。因此,应该使用 `ConcurrentHashMap` 提供的原子方法 `putIfAbsent` 来替代自定义实现[^5]。 ### 3.3 ABA 问题 在使用 `CAS`(Compare and Set)操作时,可能会遇到 ABA 问题。这个问题指的是一个值从 A 变成 B,又变回 A,此时 `CAS` 操作会认为该值没有发生变化,但实际上中间已经发生了修改。 ```java AtomicReference<Integer> atomicReference = new AtomicReference<>(1); new Thread(() -> { atomicReference.compareAndSet(1, 2); atomicReference.compareAndSet(2, 1); }).start(); new Thread(() -> { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } boolean success = atomicReference.compareAndSet(1, 3); System.out.println("CAS success: " + success); }).start(); ``` 在上述代码中,第一个线程将 `atomicReference` 的值从 1 改为 2,然后再改回 1。第二个线程在执行 `CAS` 操作时会成功,因为它无法感知到中间的变化。为了解决这个问题,可以使用 `AtomicStampedReference` 来为每次修改添加版本号,从而区分值是否真正发生变化[^3]。 ### 3.4 类型转换问题 在进行类型转换时,如果不进行类型检查,可能会导致 `ClassCastException`。 ```java Object obj = "Hello"; Integer i = (Integer) obj; // 抛出 ClassCastException ``` 在上述代码中,`obj` 是一个 `String` 类型的对象,尝试将其强制转换为 `Integer` 类型会导致运行时异常。为了避免此类问题,可以在转换前使用 `instanceof` 进行类型检查。 ```java if (obj instanceof Integer) { Integer i = (Integer) obj; } ``` ### 3.5 异常处理不当 在捕获异常时,如果直接捕获 `Exception` 或 `Throwable`,而没有进行适当的处理,可能会掩盖潜在的问题。 ```java try { // 可能抛出异常的代码 } catch (Exception e) { // 忽略异常 } ``` 在上述代码中,所有异常都被捕获并忽略,导致问题无法及时发现。正确的做法是捕获特定的异常,并记录日志或采取适当的恢复措施。 ```java try { // 可能抛出异常的代码 } catch (IOException e) { e.printStackTrace(); } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值