出错修复与技巧集锦

由于一些小知识点不能单独成文,而又常用,故集锦并分享于此。

Chrome 插件

ublacklist 禁用内容农场

订阅
https://raw.githubusercontent.com/cobaltdisco/Google-Chinese-Results-Blocklist/master/uBlacklist_subscription.txt
https://raw.githubusercontent.com/arosh/ublacklist-github-translation/master/uBlacklist.txt
https://raw.githubusercontent.com/dallaslu/penzai-list/main/uBlacklist.txt
https://raw.githubusercontent.com/liubiantao/uBlacklist-Websites/master/uBlacklist.txt
https://raw.githubusercontent.com/arosh/ublacklist-stackoverflow-translation/master/uBlacklist.txt

Windows

Windows 11

Win11 22H2 无网络安装办法

安装系统时在提示需要网络的界面,按 Shift + F10 进入 CMD 窗口,
输入以下命令:
OOBE\BYPASSNRO
系统重新启动,按提示操作即可。

Linux

Ubuntu

Nvidia驱动失联

在内核自动升级后Nvidia的驱动有时候会找不到,俗称“掉驱动”。

NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver

方法一:
安装dkms
sudo apt install dkms

查看dkms的状态
dkms status

使用dkms挂载nvidia
dkms nvidia

使用dkms自动安装
sudo dkms autoinstall

方法二:
如果 nvcc -V 可以找到驱动

step1:sudo apt-get install dkms

step2: sudo dkms install -m nvidia -v 410.48

其中step2 中的410.48是NVIDIA的版本号,进入/usr/src目录中,可以看到里面有nvidia文件夹,后缀就是其版本号

禁用Super键

Win(Windows) = Command(MacOS) = Super(Ubuntu)

安装 dconf-editor
sudo apt install dconf-editor

运行
dconf-editor

找到/org/gnome/mutter/overlay-key
把下面的Use default value关掉
把Custom value里面的内容删掉
点击下面弹出来的小条条的OK即可

代理

apt

1
2
3
4
5
6
7
#临时使用代理
sudo apt -o Acquire::http::proxy="socks5h://10.10.10.10:1080/" update

#永久使用代理
#在/etc/apt/apt.conf.d下新建proxy.conf

printf 'acquire {\n http::proxy "socks5h://10.10.10.10:1080";\n https::proxy "socks5h://10.10.10.10:1080";\n socks::proxy "socks5h://10.10.10.10:1080"; } \n' | sudo tee /etc/apt/apt.conf.d/proxy

pip

1
pip install streamlit --proxy='socks5h://10.10.10.10:1080'

Kali

Arch / Manjaro

macOS

Others

扬州大学2017年新锦成就业创业教育平台视频观看时长自动化方法 - From 82Flex

扬州大学新锦成自动化学习方法

又双叒叕到了一年一度锦成网创业教育学习的时间啦!~

同学们开不开森!

但是要学习这么多的视频,还不能加速、快进真的很难受啊~虽然没有广告这点还算良心。

但是我们是谁?之前就有学长为普渡天下苍生,公布了失传已久的武林秘籍,然而原网页404失踪多时,故小弟在此将其抄录,以供大家传阅。

大家在享受幸福生活的同时,勿忘学长无私奉献。

ps: 视频中的习题,常识题,不会百度即可;课后习题,点开后右键网页,查看源代码,Ctrl+F搜索table,然后你就能看到答案了


学长的秘籍如下:

半自动考试助手

https://pan.baidu.com/s/12TSvpgQ0DRLdOwh-svb0Yg 密码:pdqh

使用方法:

运行程序,在地址栏中填写自己学校的锦成网分站地址,进入期末考试页面。
点击左下角分析答案,稍等片刻后答案会出现在左侧,按顺序填写并提交试卷即可。

刷视频代码

1
**javascript:eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('n=c;1=4();i=3;e=0;5(i--){6.7({8:"9",b:"/2/d.f"+"?"+1,g:"h",j:k,l:m(a){o(a);e++;p(e>q){r.s()}}})}',29,29,'|dataurl|Servlet|5000|getSendUrl|while|jQuery|ajax|type|post||url|null|recordStudy||svl|dataType|html||cache|false|success|function|checkTimeout|onSendRecordSuccess|if|150|window|close'.split('|'),0,{}))**

使用方法:
登录 http://yzu.njcedu.com/,选择视频打开,开始播放后,在地址栏粘贴代码。回车,若干秒后视频自动关闭,刷新任务,视频已看完。课间习题拖动进度条到指定位置,题目会自己蹦出来。

注意事项:

  • 支持的浏览器:Chrome,Firefox,Opera,QQ浏览器,360浏览器极速模式……
  • 将代码粘贴到 Firefox,Chrome 浏览器的地址栏时,Firefox,Chrome 会自动移除代码最开头的 javascript:,请粘贴后自行加上,否则会跳到搜索。
  • 键入代码后回车会导致视频卡住但声音继续,可能会持续 5 - 30 秒左右,视频标签自动关闭后即代表刷视频完成。
  • 如果键入代码回车后视频卡住超过 30 秒,标签仍未关闭,则表明刷视频失败。

原理:

该劫持手段利用了后端数据库记录验证时:

  1. 比较的时间精确度不足(可在1秒钟内插入多条数据)。
  2. 没有限制客户端请求频率。
  3. 提交报告时间基准及终止时间计算逻辑有误。

缺点在于,刷视频过程中会向服务器后端发送大量垃圾请求,造成服务器负载加重,易被运维察觉。

解决方案:

限制来自客户端的请求频率。

由结构化程序设计思想引发的思考

扬州大学 2015-2016 秋季 《C语言程序设计》 课程读书报告

正文

在互联网上查阅了结构化程序设计的相关资料,感触颇深。由于刚刚完成N-S流程图课题任务,对SP方法虽有了解,但还是云里雾里的。这次再去有针对的搜索后,这才有了一点自己的感悟与思考。

随着计算机硬件和通讯技术的飞速发展,计算环境的变迁和不断增长的软件需求对程序设计方法学提出了种种挑战。计算机发展经历了3个重要阶段:大型主机——客户/服务器——网络计算。与此类似,软件工程的程序设计方法大致可分成4代:面向过程——面向模块——面向对象——面向智体。

近年,程序设计学从结构化程序设计逐步向面向对象设计过渡,特别是当设计一个较大规模的应用程序时,面向对象设计思路成为首选。纵观计算机软件技术的发展,在局部功能的实现上及功能模块的设计上,结构化程序设计仍然有其不可替代的独特魅力。在结构化程序设计中(以C语言为例),巧妙地运用一些设计技巧,对增强程序的稳定性和可靠性,简化程序操作步聚,提高程序的运行效率十分有效。

结构化程序设计(Structured Programming)是以模块功能和处理过程设计为主的详细设计为基本原则,它是“面向过程”的,所以结构化程序设计是过程式程序设计的一个子集。它对写入的程序使用逻辑结构,使得理解和修改更有效更容易。
该概念最早由荷兰计算机科学家E.W.Dijikstra在1965年提出的,是软件发展的第三个里程碑,其影响比前两个里程碑(子程序、高级语言)更为深远。它的主要观点是采用自顶向下(Up-Down)、逐步求精、结构化编码及模块化的程序设计方法;使用三种基本控制结构(顺序、选择、循环)构造程序。它主要强调程序的易读性。

该方法的要点是:

  1. 使用三种基本结构来嵌套连结成具有复杂层次的“结构化程序”。严格控制了臭名昭著的GOTO语句使用。一个结构化程序就是用高级语言表示的结构化算法,那么这样组成的必然是结构化程序。
  2. “自顶而下,逐步求精”的设计模型,其出发点是从问题的总体目标开始,抽象低层的细节,先专心构造高层的结构,再将整个程序结构映射到单个小部分,然后一层一层地分解具体化,达到“分而治之”。使开发员更好地把握主题,高屋建瓴,使设计过程简单明了,结果也容易做到正确可靠。我们对比另一种“自下而上”的设计模型,这种模型一开始就陷入复杂的细节中,并将问题逐步积累,造成“滚雪球”现象。把某一简单的问题搞的越来越复杂,不便于人们操作。
  3. 引申法廓清思路,选准目标。“引申法”就是通过对某一结论的合理引申,结合已经解决的问题,因势利导,在此基础上解决相关联的其他问题。“引申法”可以培养人们在程序设计方面的发散思维,提高程序设计的应变能力。问题是活的,但程序是有章可循的;语法是有限的,可解决的问题是无限的。程序设计相当一部分工作是分析问题,找到解决问题的方法,再以相应的语言写出代码。要熟练掌握一些简单的算法,根据不同的问题,再灵活应用。我们可使初学者对函数设计的关键问题有清晰的认识,利于从统筹全局的角度去考虑问题,体现了程序设计逐步求精的思路。
  4. 程序编写时,所有模块的功能通过相应的子程序(函数或过程)的代码来实现。程序的主体是子程序层次库,它与功能模块的抽象层次相对应。这意味着,代码能够更有效的载入存储器,模块能在其它程序中再利用。模块单独测试之后,与其它模块整合起来形成整个程序组织。这种编码原则使得程序流程简洁、清晰,极具可读性。
  5. “独立功能,一入一出”的模块结构,减少模块的相互联系使模块可进行插件式或积木式开发扩展,这样程序的静态描述与执行时的控制流程易对应,便于理解程序的动作,降低程序的复杂性而不会出现死循环,便于独立地理解某一部分。
  6. 主程序员组。进行团队设计中整体思路清楚,目标明确。工作中阶段性非常强,有利于系统开发的总体管理和控制,有利于人员分配任务。

其中(1)、(2)强调程序设计风格和程序结构规范化,提倡清晰的结构;(3)(4)(5)强调将大划小,将难化简的求解方法;(6)强调解决软件开发的人员组织结构问题。

但是该方法也有缺点,特别是上世纪80年代末后逐渐暴露不足:

  1. 难以适应大型软件设计。在多文件系统中,随着数据量增大,由于数据与数据处理相对独立,这使得程序越来越难以理解,文件之间的数据沟通也变得困难,还容易产生意想不到的“副作用”。
  2. 程序的可重用性差。结构化程序设计的方法不具备“软件部件”的工具,即使是面对老问题,数据类型的变化或处理方法的改变都必将导致重新设计。这种额外开销与可重用性相左,造成重复投入,使得系统的开发周期长、用户的要求难以在系统分析阶段准确定义从而造成在交付使用时产生问题。

总之,结构化程序设计方法在解决实际问题过程中仍有许多技巧可以应用,这需要我们对算法和数据结构展开深入分析,寻找最佳结合点,有的放矢,对症下药;更需要在实践中不断总结和积累。在编写过程中我们觉得有些程序没什么问题,但是一上机调试,就出现这样或那样的问题,这说明程序还不完善,还需要调整或改进。当今,高效率和快节凑的生活与工作方式对程序的设计提出了更高的要求和更苛刻的标准,我们只有不断创新设计理念和方法,才能编制出更多高质量、高性能、低故障的优质程序。

参考文献

  1. 《Classics in software engineering》Structured programming.E Dijkstra,1970,ACM
  2. 《结构化程序设计方法与面向对象的程序设计方法的比较》 王德军 郝永芳
  3. 《C程序设计》第2章 算法 清华大学出版社,谭浩强
  4. 《结构化程序设计》添美科技,软件开发资讯
  5. 《计算机科学引论·基于C的结构化程序设计方法(英文第三版)》工业出版社
  6. 《结构化程序设计方法中的核心问题》《淮北煤炭师范学院学报》 2006年02期
  7. 《浅析结构化程序的设计技巧》广东省中山市技师学院

2015年10月5日

乙未八月廿三

于扬州大学扬子津校区