EagleBear2002 的博客

这里必须根绝一切犹豫,这里任何怯懦都无济于事

摘要

本文介绍了基于 NJU-Table 协同表格的新生车辆入校审批系统的需求明细、视图展示和部分设计细节,并记录了系统上线运行后得到的反馈。在新生学院七个书院十余位老师的共同支持下,该系统在开学两天内顺利调度一千二百余辆私家车错峰入校,展示了后疫情时代信息化行政的强大潜力。该系统的开发涉及到 NJU-Table 向非专业开发者提供的绝大多数功能,为学习使用 NJU-Table 提供了良好范例。

需求明细

  • 新生扫描二维码或点击链接,在移动端或 PC 端通过表单提交姓名、学号、所在书院、车牌号,选择停泊时间
  • 新生只能在书院规定的报道时间内选择停泊时间
  • 仅书院负责审核的辅导员可在相应视图(如“健雄书院审核视图”)对本书院的提交完成审核
  • 要求填写者承诺在填写的停泊时间结束前离开学校
  • 申请被审核后新生可在系统中收到通知(目前无法使用微信、邮件等第三方通知)
  • 新生可查看已提交的申请的审核情况
  • 可以自动检测一人多填,保证每个人最多只能填写一个有效表单
  • 系统自动限制每个时间段的停泊数量

系统视图展示

阅读全文 »

下载

Github 上的 clash 官方仓库已经删库跑路,本文介绍的是一个目前可行的解决方案。

https://github.com/doreamon-design/clash/releases 下载与自己系统架构符合的安装包。一般选择 [clash_2.0.24_linux_amd64.tar.gz](https://github.com/doreamon-design/clash/releases/download/v2.0.24/clash_2.0.24_linux_amd64.tar.gz)

安装

gzip -d clash_2.0.24_linux_amd64.tar.gz # 在安装包所在路径解压安装包
chmod +x clash_2.0.24_linux_amd64.tar.gz # 给解压后的文件赋予执行权限
mv clash_2.0.24_linux_amd64 /usr/local/bin/clash # 移动文件位置
clash -v # 查看是否成功安装
阅读全文 »

本文是 2023 年南京大学软件学院推免经验分享内容。

南软学硕基本信息

2024 年招生 学术硕士(软件工程 083500) 专业硕士(软件工程 085405,原电子信息)
学制 三年 两年(待定)
学费 5000 元/年 20000 元/年
招收总人数(考研+保研) 17(10 个保研) 227
住宿条件 2023 级提供鼓楼(23 级在陶一)或浦口宿舍 不提供宿舍
奖学金 奖学金比较多 奖学金比较少(而且基数大)
专业认可度 考公考编可选岗位较多 电子信息可选岗位受限,085405 和 083500 几乎相同
转博政策 2+4,硕士成果计入毕业要求 2+4,硕士成果不计入毕业要求

登录南京大学研招网查看当年权威信息:https://yzb.nju.edu.cn/main.htm

我为什么选择学硕:进可转博,退可尽快毕业

阅读全文 »

哪些人的理性会受挫?

进电影院前的我:

夫未战而庙算胜者,得算多也,未战而庙算不胜者,得算少也。多算胜,少算不胜,而况于无算乎!吾以此观之,胜负见矣。(《孙子兵法》)故曰:善战者无赫赫之功(曹操)。

看完电影后的我:

人算不如天算:行人是,知天命,可以无悔矣。

阅读全文 »

原文链接:通俗易懂 强一致性、弱一致性、最终一致性、读写一致性、单调读、因果一致性 的区别与联系 - 知乎 (zhihu.com)

提到分布式架构就一定绕不开“一致性”问题,而“一致性”其实又包含了数据一致性事务一致性两种情况,本文主要讨论数据一致性(事务一致性指 ACID)。

复制是导致出现数据一致性问题的唯一原因。

如果只用一台数据库来处理所有的写入和读取请求,就一定不存在数据一致性的问题。 但在中大型项目中,我们却经常需要将一份数据存储在超过一台数据库中(即复制),原因有三:

  1. 即使一部分数据库出现故障,系统也能正常工作(高可用)
  2. 使数据与用户在地理上接近(降低延迟)
  3. 扩展可以处理读请求的机器数量(可扩展性、提高读取吞吐量)
阅读全文 »

再读《没有银弹》

  1. 软件开发有很多困难,但是本质难题是
    1. 不可见性:软件项目是一个逻辑实体
    2. 复杂性:实体数量众多
    3. 可变性
    4. 一致性
  2. 进一步分析
    1. 三个本质难题因项目而异
    2. 四大本质难题相互促进
    3. 本质难题变化带动软件方法(过程)演变
  3. 本质难题无法彻底解决

软件发展三大阶段

  1. 软硬件一体化阶段(50 年代~70 年代)
    1. 软件完全依附于硬件
    2. 软件作坊
  2. 软件成为独立的产品(70 年代~90 年代)
  3. 网络化和服务化(90 年代中期迄今)
阅读全文 »

引入

  1. 软件在改变(定义?颠覆?)我们的世界
  2. 软件自身的变化:
    1. 规模
    2. 比例

软件危机

  1. 软件的四大本质困难和挑战
    1. 复杂性
    2. 不可见性
    3. 可变性
    4. 一致性
  2. 人月神话

软件危机 vs. 软件工程

阅读全文 »

相关术语

  1. Man-Machine Interaction (MMI) / Human-Machine Interaction (HMI)
    1. “Man-Machine Interaction” politically incorrect
    2. Study of the ways how humans use machines
  2. Man-Computer Interaction (MCI) / Human-Computer Interaction (HCI)
  3. Computer-Human Interaction (CHI)
  4. User-Centered Design (UCD)
  5. Human Factors (HF) / Ergonomics
  6. Usability

什么是人机交互 Human-Computer Interaction

  1. HCI is a discipline concerned with the design, evaluation and implementation of interactive computing systems for human use and with the study of major phenomena surrounding them
  2. HCI 是一门涉及人类使用的交互式计算系统的设计、评估和实施以及围绕它们的主要现象的研究的学科
  3. 信息技术发展中交互的重要性:让信息技术的使用变得更自然、更便捷、更透明!
  4. 为什么要考虑用户?信息发展趋势
    1. 用户:热爱技术的专业人员->缺乏耐心的消费者
    2. 场景:更多样的终端和任务、更频繁的人机对话
    3. 人机交互能够让计算机更懂“人”,让人机对话更加“自然”

以下哪些工作属于人机交互的研究范畴:全部是

阅读全文 »

\[ \def\po{\mathsf{\textcolor{\red}{po}}} \def\so{\mathsf{\textcolor{\purple}{so}}} \def\wr{\mathsf{\textcolor{\green}{wr}}} \def\co{\mathsf{\textcolor{\orange}{co}}} \]

摘要

现代应用程序,如社交网络系统和电子商务平台,以大规模数据库为核心,用于存储和检索数据。对数据库的访问通常封装在事务中,允许对共享数据进行的计算与其他并发计算隔离,并具有容错性。现代数据库以性能为代价来交换隔离程度。隔离级别越低,数据库允许表现出的行为就越多,而开发人员需要确保他们的应用程序能够容忍这些行为。

在这项工作中,我们提出了一种基于动态偏序归约的无状态模型检查算法,用于研究依赖于多种常见弱隔离级别的应用程序的正确性,包括读已提交、因果一致性、快照隔离和可串行化。我们展示了这些算法在所有情况下都是完备的、正确的和最优的,并且在所有情况下都具有多项式内存消耗。我们报告了这些算法在 Java Pathfinder 环境中的实现,应用于分布式系统和数据库文献中的一些具有挑战性的应用程序。

原文:Ahmed Bouajjani, Constantin Enea, and Enrique Román-Calvo. 2023. Dynamic Partial Order Reduction for Checking Correctness against Transaction Isolation Levels. Proc. ACM Program. Lang. 7, PLDI, Article 129 (June 2023), 26 pages. https://doi.org/10.1145/3591243

阅读全文 »