2021焦糖工作室招新

焦糖工作室是干什么的

是一个西点屋

焦糖工作室(Jotang Studio)是电子科技大学信软学院创新工坊的一个学生技术团体,主要活动地点在电子科技大学沙河校区三教507

焦糖工作室全部由本科生组成,在这里可以拓宽技术的视野,和小伙伴们一起开展课程安排中没有的技术实践,焦糖的目标是让每一位成员都能得到成长

2021招新活动安排

工作室永远欢迎对技术和团队热爱的新人!无论你是大一还是大二,都可以加入这次技术马拉松赛,并在这个过程中掌握技能和探索自己的方向,相信你自己,很多事情没有那么难。

  1. 为期一个月的技术马拉松赛 从 2021.9.15 开始,到 2021.10.14(23:59) 截止
  2. 工作室招新面试阶段:在技术马拉松中达到通过标准的同学可进入工作室面试阶段
  3. 本次招新的所有重要通知都会以邮件形式发送至各位同学的邮箱当中,所以请时刻关注邮箱通知。

如果你不是萌新,可以将简历发送到邮箱admin@jotang.club,我们将组建专业团队对简历进行评析并在3个工作日内给与答复。

规则

  • 完成任意题目后请将需要提交的内容放到新文件夹(命名格式为:题目序号-姓名,如#2-段衍凯),最终将所有文件打包(命名格式为:2021焦糖招新-姓名,如2021焦糖招新-段衍凯)并发送至邮箱 admin@jotang.club
  • 题目提交次数不限,以 最后提交版本 为准。 马拉松截止时间为2021.10.14(23:59)
  • 每道题都需要提交记录了学习过程的markdown文件,如果要求代码,请上传至Github并将访问链接一同提交。如果你还不知道什么是Markdown和Github,请先做科普福利题#1 啥是Git#2 Markdown
  • 招新对题目数量不做硬性要求,你可以深入一题,体现你的技术深度,也可以“我全都要”,探索自己的兴趣方向。
  • 如果需要与我们交流(比如题目太简单了,题目出现错误等等),请同样写下你的具体想法发送邮件到上述邮箱。
  • 截止日期后约半个月的时间里,我们会根据 题目的完成度 和在 Markdown文档记录与细节 给出评分表,并将其汇总为一个总评分表,达到通过标准的同学可以进入面试阶段
  • 科普福利向题目是帮助同学们热身和入门学习的,请一定至少选择一道代码技能向题目完成,题目的完成度最重要
  • 当你发现有些帖子打不开或者下载不了,建议更改域名中的“d.jotang.party”为“d.jotang.club”,这是我们论坛迁移的bug,正在修复,请您谅解
  • PS:
    • 诚信是Jotanger的底线,一旦我们发现解答中存在严重的copy现象,无论技术力如何,我们都将拒绝您的加入
    • 在马拉松过程中,如若题目有表述不清或其他问题和疑问,请及时反馈给出题者。出题者在招新群中统一以 2021#题号-姓名 (如2021#1-段衍凯)命名
    • 焦糖时刻欢迎各位萌新在群里提问,也鼓励同学间互帮互助。但焦糖依然希望同学们养成在提问前先自行百度谷歌的习惯,因而对于一些能直接百度出来的答案,焦糖学长们可能不会全部解答,望理解。

题目类型

2 Likes

#0 Let’s Warm Up!

你好,欢迎来到这里!这个部分是 JoTang Studio 招新的一系列预热题目!焦糖工作室为 2021 级的同学精心准备了兴趣引导和前置技能题目。但是不要担心,我们的题目难度已经过严谨考虑和调整,并且我们并不要求全部完成。焦糖工作室希望,你可以通过这些题目,初探开发和软件的世界,并能够发现自己感兴趣的方向。

萌新:这引导看不懂啊?这链接为啥打不开?这些名词啥意思啊?这报错了咋整啊?
dalao:Let me Google that for you
萌新:…卒

不要慌嘛,焦糖是一个萌新友好型工作室,我们会先带你点亮前置技能点。

搜索

对于不同领域的问题,需要灵活运用不同的搜索引擎。

比如我们推荐使用 Google 作为通用搜索引擎,使用必应/百度作为中文搜索引擎。

这里推荐一个聚合的搜索引擎网站:虫部落快搜

如果你想掌握更高级的搜索技巧,这篇文章也很简单易懂:搜索引擎的一些高级搜索指令

但除此之外,我们也可以发起针对性的搜索。

比如如果你在编程过程中遇到了奇奇怪怪的难以修复的BUG,你可以考虑使用国内的CSDN论坛搜索,也可以使用StackOverflow它们都是优秀的开发者社区

如果你对于“为什么无法访问 Google”有疑问,欢迎看看我们为你准备的科普文档:深入理解GFW

提问

虽然搜索引擎的效率远逾言辞,但有时,光靠它的能力也有未能解决的问题,我们需要向别人提问。如果是在社区提问,为了更高效地获得可靠的回答,你可以需要一些提问的技巧:
ryanhanwu/How-To-Ask-Questions-The-Smart-Way
本文原文由知名 Hacker Eric S. Raymond 所撰寫,教你如何正確的提出技術問題並獲得你滿意的答案。 - ryanhanwu/How-To-Ask-Questions-The-Smart-Way

你的任务

  • 迅速获得获得一台计算机的使用权。
  • F**k the GFW.(获取Google等网站的访问权限)
  • 闷声发大财,本题无需提交。

划重点

  1. 如果同学你没有办法回到家中,你可以考虑去网吧(一起来网吧编程!)。如果你不太想去网吧,那么你可以考虑一下购买一块树莓派+外接屏幕和键鼠的方式练习使用Linux系统。如果你想尝试用平板/手机代替电脑。你的下一台电脑,何必是电脑,也欢迎与我们交流。
  2. 我们强烈建议你马上拥有一台个人笔记本,赢在起跑线!赢在人生路!(逃
1 Like

#1 啥是Git

背景

第五次收到某同学 QQ 发来的的 debug 请求和压缩包时,我陷入了沉思,于是有了这道题。

在你还在写 C 语言习题的时候可能很难意识到 Git 的作用,因为每一道习题只对应一段代码,并且只有你一个人在编辑(一般也只有你一个人会看),这时使用 Git 很难让你有什么颠覆性的体验。但是对于一个多人参与的项目来说,没有版本控制工具是难以想象的。想象一下下面这些场景:

  • 当你需要编辑一个文件时,如果不想产生冲突,其他人需要避免操作这个文件,那么多人协作事实上被降格为了小范围内的单线程操作。
  • 当对方修改了项目后,你也很难准确地得知修改的位置,和其对你目前任务可能造成的影响。
  • 当你的更改需要进行取舍的时候,可能需要在多个版本的完整代码中比对,这无疑令人绝望。
  • 当你进行的更改导致了严重的bug,或是不得不放弃,你也很难快速地回溯到原先的状态。

显然没有版本控制系统,这些都会在项目开发过程中频繁出现,严重影响我们的开发效率和身心健康。

所以痛心疾首地安利 Git 之后,希望每一位同学都能够掌握 Git,并且习惯使用它来管理自己的代码。

准备

1. 初识 Github

如果你还没有 Github 账号,注册一个。可以顺便把 Github Student Developer Pack 领了,领取流程可以参考我们以前写的攻略。

img 【福利&Tips】萌新的补给箱 经验分享

学生福利 一、正版微软产品 使用正版软件是应该的,但还有很多人因为各种原因仍在使用盗版或是试用版的 Windows 和 Office,如果是经济原因的话,在电子科大,学校已经为所有同学购买了部分教育版微软产品,包括Office 2007~2016,Windows 7~10,还有Office 2016 on Mac。 PS:WPS由于一些历史上一些兼容问题,被很多老师所抵触,现在有所改善,但涉及作业之类的最好不要用。 微软正版化产品 「需要用校园网登录」 二、GitHub Student Developer Pack Github是世界上最大的代码存放网站和开源社区,如果你还没有Github账户,强烈建议注册一个:Github官网 很多时候,尤其在无法使用Facebook和Twitter账号的时候,使用Github账号登录网站十分方便。另外,焦糖工作室的论坛也支持绑定Github账户登录。 言归正传,当你获得学校提供的学生邮箱就可以申请现在你需要通过上传英文版在校证明或者学生证来申请这个大礼包(选择 I don’t have a school-issued mail)…

如果你没有使用过 Github,可以在 lab.github.com 74 上完成一些入门课程,很快就能明白啦。

2. 掌握 Git 的基本操作

我们推荐看看 Git-Tower 这份精美的教程(反正不要钱)。

(当然你也可以去看官方的 Git-Book 2

有时你会对许多命令的作用感到困惑,比如 rebase,那么你可以试试这个有趣的沙盒式教程 ——

倒腾一遍会让第一次接触 Git 的你心里踏实许多。

如果你感觉纯命令行让人困惑,想要更直观地操作 Git 分支,可以下载一个 SourceTree 8 试试,可能会友好一些(它是免费的)。

任务

  1. 有自己的博客是一件多么令人兴奋的事情啊~ ,通过 GitHub pages 免费搭建一个博客吧!
  2. 玩一下 https://learngitbranching.js.org/ 52高级话题1-多次 Rebase 这一关。然后在 Github 中创建一个存储库,自己构造 commit 模拟出这个关卡的初始状态,并在真实的 Github 存储库中像游戏里一样操作,完成这个关卡的内容并 push,具体 commit 内容和 commit message 不作要求。

如果你更喜欢搭建包揽前后台以及数据库的动态页面博客,比如这样的 36(强行给学姐博客打广告🤣),可以自行探索~

题外话

  • Github 的 private repo(私有存储库)已经对个人用户免费了,所以不用害羞哦!
  • 本题旨在带你了解 Git 和 Github,发现更大的世界。哪怕对 Git 和博客不感兴趣,也希望你能注册并探索一下 Github 这个世界上最大的开发者社区,没事多逛逛 Trending 11 ,star 些你感兴趣的项目。
  • 提交的时候记得附上你的 Github 主页和博客链接哦!

#2 Markdown

背景

多年以后,小原寒再一次打开邮箱,还会想到那个与工作室小伙伴们兴高采烈地打开招新题收件箱的那个遥远的下午,在看到满屏幕的.doc格式的word文档陷入了沉思,欲哭无泪的表情在他脸上久久不能散去(误

不是吧阿sir,你还在用Word?

Markdown 是一种轻量版文本标记语言(萌新:什么是文本标记语言?)

Markdown可以让你用写txt记事本的写法写文章,但却可以生成不亚于word文档的好看的排版,在计算机世界中,遍地是markdown格式的文档,无论是Github里各个项目的README,还是优秀的工程师的博客,都是由Markdown书写,除此之外,markdown在简书、知乎以及很多论坛中得到应用。

Markdown并不是一个软件,你可以使用任何编辑器书写markdown文档

注意:本次技术马拉松中你提交的所有文档都应该是markdown格式哦

一起来学习Markdown吧!

#3 Linux / WSL

题目背景

学期开始,想要加入 Jotang 工作室的小马面对各种招新题,早已跃跃欲试。为了完成招新题,小马先是安装配置了 Python 开发环境;转头捣鼓 Java 时,又配置好了 JDK;配置好了 Go 的开发环境后又去安装了 Node 包管理器。

问题来了:

不同的框架兼容不同版本的开发环境出现兼容问题时,这时小马看着已经变成各种语言各种版本号形状的环境变量参数,早已欲哭无泪。而 Windows 又是平时的生产环境,不方便全盘清空重装,这时要怎么办呢?

这时 WSL2 闪亮登场,他能够在 Windows 环境下虚拟出一个带有完整 Linux 内核的开发环境

问题又来了:

WSL2GUI 配置困难,而且有的同学就是喜欢用带有 GUI 的发行版。命令行虽好,但是同时拥有 GUI 不香吗?

显然此时只有完整的虚拟机能满足小马的需求了,在虚拟机下,小马得到了:

  1. 便于配置各种语言的开发环境
  2. Linux下更方便地处理不同开发环境的版本兼容
  3. 便于试错,配置炸了的话随时可以清空整个环境不用担心生产环境数据丢失
  4. 满足小马的洁癖与强迫症

至此,小马可以开开心心地做各种招新题目,再也不用担心他心爱的 Windows 环境变成各种形状了!

题目内容

任务(二选一)

  1. 安装配置 WSL2 的 Ubuntu 发行版
  2. 在虚拟机软件中安装配置 Ubuntu 发行版

选择哪条分支根据个人兴趣以及需求来即可。

加分项

  1. 通过 VScodeRemote 插件连接至你的虚拟机 / WSL2
  2. 配置好基于 SSH 密钥的免密的远程服务器登陆
  3. 开发出简易的 Shell 小程序

提交内容

  • 每一步的截图
  • 文字说明
  • 个人感想

以上内容通过 Markdown 格式的文档提交

#4 产品设计

题目背景

临近期末,面对还未开始的复习(预习)大业,平时没有记笔记、不知道重难点的你已经面临崩溃。在熬夜通宵复习的恍惚瞬间,你大吼一声:“为什么焦糖工作室没有课程经验分享平台APP!”很好,在一旁努力的小糊听见了,“在做了在做了!”

题目内容

old JoTangers希望这个App有以下功能:①主功能需要一个笔记板块,在这里可以上传笔记、看见别人的笔记。②还需要一个选课板块,可以在这里讨论课程(例如焦糖老师的课程给的分高事还少)。 ③还要一个ppt/word/pdf课程资料分享板块,经验代代传。④为了联系到广大JoTanger,我们需要好友和消息系统。

任务一

为这个JoTanger的APP设计一个logo

  • 具有焦糖特色
  • 创新简洁,工具不限
  • 导出为.png格式并与源文件一同提交

任务二

攥写需求分析文档,需要体现软件功能、业务逻辑等。

任务三

设计一个APP,满足JoTanger的需求。

  • 绘制原型,展现良好的交互
  • 在JoTanger需求基础上可以增加一些功能模块
  • 机型不限

参考资料

提交内容

完成后请提交logo设计源文件、导出png、需求文档word/pdf、原型文件

#5 爬虫?做正义使者!

一个平平无奇的早上,某嘉心糖打开了@嘉然今天吃什么的最新动态准备发病正常观看,这时,一条刺眼的评论吸引了他的眼球:

枝网文本复制检测报告(简洁)
查重时间: 2021-08-20 19:34:05
总文字复制比: 100.00%
相似小作文: https://t.bilibili.com/493102519492158079/#reply4143986206
作者:彩芽Ayame
发表时间:2021/02/18 19:42

查重结果仅作参考,请注意辨别是否为原创

他知道,这看似高大上的查重结果背后,实际上是每个嘉心糖小学二年级就能掌握的 爬虫 知识。

网络爬虫 (web crawler),也叫网络蜘蛛(spider),是一种用来自动浏览万维网网络机器人。其目的一般为编纂网络索引 这听起来并不像人话 让我们通俗点解释一下,如果将因特网比作一张错综复杂的交错巨网,那么爬虫就是这张网上的一只只小蜘蛛,这些小蜘蛛会将他们探下的路的踪迹和在路上抓到的资源反馈给我们。

总而言之,爬虫就是一段可以自动抓取互联网上对于我们有价值的信息的程序。 既然说到了程序和编程,接下来就开启冒险,让我们来谈谈这次的通关任务吧。

任务一(基础版)

作为优秀的信软学子,为了守护全世界最好的圣嘉然,让我们以电子科技大学信息与软件学院官网的通知版块作为敲门砖,开启我们的爬虫之旅吧~

要求

  • 基本任务一:爬取 新闻标题详细内容发布时间
  • 基本任务二:爬取详细内容中的图片、附件等;
  • 基本任务三:选择合适的文件结构将数据保存在本地文件夹,要求有至少50条新闻数据;

任务一(探索版)

由于出题人错估了计算机学院的技术力orz,现将原题改为隐藏副本:

要求

  • 思考原链接采用了什么手段进行反爬,在提交文档中记录下你的学习过程;
  • 尝试通过已学习到的知识,对链接中的数据进行爬取;
  • 本任务不强制要求完成,建议大二同学多进行一些思考(代码嫌麻烦可以不写);
    依旧ps链接中有大量远多于信软学院的竞赛信息,学有余力的同学可以多多关注哦~

任务二

好了,相信现在,你已经完全掌握了爬虫这门手艺,那么,请——

  1. 数据爬取 爬取 链接 中的评论(至少100条),并将相关信息存到数据库中(可以先从存到本地开始)。 要求
  • 基本任务一:和上述枝网查重结果类似,需要包括 评论内容链接作者发布时间点赞数 等信息;
  • 基本任务二:尝试将评论者的空间链接、头像图片也存储下来。
  1. 数据存储及查询 学习简单&基本的 sql语句 和数据库设计,能够进行数据的 增删改查 (数据库请自行选择)。 要求
  • 基本任务一:设计合适的数据库结构,将数据存储到数据库中;
  • 基本任务二:实现对自选小作文的 数据查询 ,不一定要求模糊查询反正嘉心糖只会复制粘贴
  • 进阶任务:模仿 枝网查重 实现一个展示窗口,最好对其进行部署,或者实现对任意文本的查重检测等,多多益善啦~

Tips

  1. 爬虫,Python requests re bs4 库 作基本学习, Scrapy 框架较适合本题;
  2. 爬虫,如果熟悉web或者想少写点代码或者想看可视化界面可以尝试 node-red ;
  3. 数据库,常用的 MySQL MongoDB 较为推荐,当然其他数据库肯定也都可;
  4. 部署, docker 真香,docker可视化工具 portainer 也相当推荐,不想花W的话可以尝试 白嫖一个阿里云学生服务器
  5. 不要求全部做出来,基本任务必须完成,进阶任务多多益善
  6. 一点小提示:很多网站会采用时间戳来表示时间

提交内容

任务一:将尝试爬取的过程整理到 markdown 中,连同代码 github链接 、爬到的 数据文件存储结构说明 ,打包发给我们;

任务二:将尝试爬取的过程和数据库设计的想法整理到 markdown 中,连同代码 github链接 、爬到的 数据数据库运行截图 ,打包发给我们;

#6 Android

背景

一天TV在尝试写一个iOS聊天软件,但他愤怒地发现苹果开发者账号年费¥688。 安卓!我要做安卓!

题目要求

  • 兴趣是最好的老师
  • 对于没有基础的 大一新生 ,我们推荐进行入门的学习并 至少完成任务一二
  • 对于 大二学生 或较感兴趣的大一同学,我们希望你能 完成任务一二三 并在已有要求上增添 个性化内容
  • 要求将学习与开发过程以及部分任务完成情况 记录在Markdown文档中
  • 评分 不仅仅依赖于最终结果 ,我们同时关注你努力学习探索的过程

准备

安卓学习 安卓开发主要采用Java语言,所以需要你首先对Java有一定程度的掌握。 安卓入门学习基本知识点: 四大组件如何使用、如何创建Service、如何进行布局、简单的自定义View、动画等常见技术。 安卓进阶学习: 了解四大组件的大概工作流程、了解Http通信、掌握Handler机制、学会使用OkHttp等多种安卓网络框架、熟悉设计模式。 参考资料

安卓开发官网 安卓菜鸟教程 推荐书籍:《第一行代码——Android》

任务一:配置环境

背景

如何迈出安卓开发第一步呢? 我们推荐主流安卓开发IDE—— Android Studio ,并且使用as进行虚拟机配置后你可以随时运行你的程序。

任务

下载安装Android Studio并配置环境,配置安卓虚拟机,配置虚拟机联网并显示焦糖官网界面,同时将截图记录在MD文档中。

任务二:安卓组件使用

背景

你已经配置好了AS开发环境,那我们尝试进行简单的组件使用

任务

开发一个app,要求:

  • 创建三秒的 开启动画 (动画任意),创建三个能 滑动切换 的页面
  • 第一个页面做一个简单的个人介绍(如果你已有个人网站,可以设置一个跳转到你的网站的按钮)
  • 第二个页面上方 逐秒 显示当前时间,下方制作一个 简单 转盘
  • 第三个页面设置一个按钮,点击则在通知栏显示通知,内容任意( 广播

任务三:登录模块开发

背景

你已经学会了组件的简单使用,我们现在进行登陆模块的初步开发,此任务为本地开发不要求后端知识。

任务

完成注册与登录功能

  • 使用 SharedPreferences 本地存储
  • 注册界面要求完成 用户名、密码、再次输入密码、性别、手机号的注册
  • 要求检测 用户名是否存在两次密码是否相同 ,手机号选填
  • 然后在登录界面正确输入用户名与密码时,跳出 图片验证码 界面,需要正确输入验证码
  • 完成登录进入主界面(第一个页面)

提交内容

  1. 一份记录着每个任务学习过程的.md文件与一条Github链接
  2. 编译好的apk文件

#7 Python数据分析+Browser初步探索

某天,焦糖工作室的兔子姐姐和小倪正在考虑一个有趣的问题。既然我们在互联网上遨游了这么久,可不可以使对于我们的浏览记录做一个分析呢?浏览器中,其实有好多好多的学问等待我们探索。例如人见人爱的刷课脚本,科学上网的工具等orz。回到上面的题目,小倪和兔子姐姐就在探索,浏览器有没有将我们在互联网上的行踪记录下来呢?如果记录下来了,记录的过程,原理又是什么呢?经过一番刻苦的学习,小倪和兔子姐姐对于浏览器有了更加深入的认识,这么有趣的经历,小倪和兔子姐姐希望小萌新们都能体验一下~浏览器有好多好多的功能和骚操作,大家在学习过程中,也可以积极探索,不仅限于题目嗷!!!

任务一

每个人都有自己的浏览记录和浏览习惯,我和小倪希望你能够找到浏览器缓存历史记录的本地文件,了解相关原理和存储过程。通过python对于缓存历史记录的本地文件进行数据分析,并列出最常浏览的20个网站。如果觉得自己的浏览记录不够正常,那就还需要各位小萌新们,对于不正常的数据进行过滤QAQ。

任务二

使用python进行数据可视化(matplotlib和ggplot等库都可以使用),对于最常浏览的20个网站进行数据可视化(需要使用matplotlib库)。让结果更加的直观,如下图所示:

img

以上饼状图仅供参考,大家也可以选择别的图来进行可视化哦。(我和小倪都希望上面这幅图不要限制了你们的思维和兴趣,可视化的效果越爆炸炫酷越好嗷!!!)

Tips:

  1. 很多面试的小朋友们可能还没有安装Chrome浏览器,本题推荐使用Google的Chrome浏览器完成(当然使用Edge或Firefox等也不是不行啦!),友情赠送Chrome浏览器下载地址。此外,很多浏览器的插件会在小萌新们例如科学上网,水课刷题等正当用途的过程中起到意想不到的作用,欢迎大家加深对于浏览器的骚操作的理解,并且记录下来。
  2. 对于Python环境和版本没有固定要求,只要能够达到题目所述效果即可。小萌新们如果完成了Anaconda和Python编译器相应的配置,这里会有额外的加分哦~

提交内容

  1. 一份记录着每个任务学习过程的.md文件与一条项目的Github链接

#8 Go: 任务看起来不少,可我真的很简单!

写在最前面:
  • 任务一 :建议 大一同学大二同学 完成
  • 任务二 :建议 大二同学感兴趣的大一同学 完成
  • 任务三 :建议 感兴趣的大二同学 完成
  • 三个任务不设置下限门槛,有能力的同学,可以全部完成哦~
  • 标注有 (需要你的Code) 的任务为 必须 动手写代码完成的部分
  • 整个任务的完成情况记录在你的 Markdown 中,要求实现程序的部分,建议同时使用 截图展示执行结果(* 不要把截图弄成本地路径了哦!*)
  • 哪怕没有完成任务也没有关系,一定要把你 尝试和努力的过程 写在你的Markdown内并提交哦!评分 并不只关注结果 ~

背景一

有一天, 人见人爱的高金鱼 得到了一个巨大的文本文件。

她听说,只要能把这个文件全部读取出来,就能找到焦糖布丁的美味秘诀!这让身为吃货的她感到非常的激动。

可是这个文件实在是太太太太大了,高金鱼用记事本打开它,密密麻麻的文字让她和她的电脑都产生了怯意,为此她一筹莫展。

你看见她对着自己的头发一通乱抓,询问马特应该怎么办, 愚蠢的马特 也对着自己的头发一通乱抓,

然后转向了正在读这段话的你:

你能帮帮我吗?

任务一:Go是甚摸东西?

Go是人见人爱的fps游戏CSGO一门新兴的轻量语言,号称有 非常强大 的并发能力和极高的性能

有一位 计算机界的牛牛 如此评价Go:

Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。

对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。

马特:哇,你说的这个Go语言它 太厉害 了,那你能帮帮我吗?

为了帮助马特,从而获得 焦糖布丁的美味秘诀 ,你的任务是:

  1. 了解Go/Golang是什么
  2. 学习如何使用Go语言编写程序这里给出一个菜鸟教程的参考资料:菜鸟教程-Go除此之外,网络上还有很多更优秀的Go语言教程,好好利用好常用的搜索引擎哦!
  3. 了解Go语言文件读取的过程
  4. 使用Go实现一个简单的读取文本文件的程序, 救救马特 !(需要你的Code)具体要求:
  5. 逐行读取给出的示例文件
  6. 将读取的文件每 1000 行存入一个新文件里(比如 sample_01.outsample_02.out …)

示例文件:点我开始下载哦 (该文件为随机生成的文件,其中包含行号(从0开始)和随机字符串,你可以利用这个特性来检查你的代码是否正确哦)

Tips: 建议使用Goland来编写代码 ,因为VScode的配置会比较复杂。 Goland的下载链接:Goland-Download

你可以将你的学习过程记录在Markdown中,详实认真,举一反三的学习笔记会成为很好的加分项哦~~

其他参考资料:

背景二

高金鱼拿着你的Go语言学习笔记和你写好的程序,多亏了Go语言直接编译成机器码的特性,不需要下载乱七八糟的库就能直接使用它

高金鱼开心的打开了程序,这个程序老老实实地开始读取文件的每一行信息,

她看到一行行的信息正在被读取,非常开心的坐下开始等待读取的完成。

······

高金鱼醒来的时候以为自己在飞机跑道上,程序还在勤勤恳恳老老实实的运行,噢,原来是风扇转的飞快

不知道过去了多少个小时,这个文件仍然没有被读取完,高金鱼感到束手无策,给了 不争气的马特 一拳,马特擦了擦泪水,

然后再次转向了正在读这一段话的你:

你能帮帮我吗?

任务二:一个人干活慢,那就大家一起来!

细心的马特发现,这个程序运行的过程中, 内存的占用一直很小 ,是不是可以用很多的程序一起运行来加快速度捏?

马特虽然细心,但是还是没有摆脱愚蠢,这样运行显然是没有用的,很多程序一起从同一个起点出发是没有办法加快速度的~

但是不争气的愚蠢马特为我们提供了一个思路, 既然一个人干活慢,那就大家一起来!

  1. 了解什么是 并发 &&如何使用Go语言的并发特性自行百度、Google喽~
  2. 思考,如何并发的读取文件并设计可能的方法Tips: 这一部分可以记录在你的Markdown中,即使没有想出很多方法也没有关系,一定要把探索的历程尽量记录下来哦~
  3. 使用Go语言实现一个并发读取文件的程序, 救救马特 !(需要你的Code)具体要求:
  4. 可以不使用逐行读取
  5. 自行划分每个并发单位要读取的文本大小(不以行为单位,使用字符数作为单位)Tips: 如果你坚持使用行为单位,实现成功也会是加分项~
  6. 自行设置需要的并发数Tips: 并发数不是越高越好哦~
  7. 将这些文本按照任务一要求的形式存储到对应的文件中

你可以将你的学习过程记录在Markdown中,详实认真,举一反三的学习笔记会成为很好的加分项哦~~

背景三

人见人爱的高金鱼在你的帮助下终于得到了焦糖布丁的美味秘诀,她向你表示了感谢并且赠送给你了一打焦糖布丁。

后来,高金鱼又获得了许多的超级大大大大大的文本,它们都包含着更复杂的美食的美味秘诀,高金鱼想要把它们都得到,于是使用你的程序一个一个获得它们

可是在这个时候,你的程序占据了巨大的内存,运行非常迟缓,高金鱼不得不每次都逮住愚蠢的马特,每次运行都调整一次并发的数目和每个并发单位要读取的文本大小,这实在是太麻烦了!

懒惰的马特 非常郁闷,心想,要是可以程序自己去看情况自己修改参数就好了!

马特迟迟不能完成高金鱼完成的任务,害怕又要遭受一波毒打,眼泪汪汪的转向了你:

你能帮帮我吗?

任务三:自己心里有B数的代码动态调整的并发

  1. 了解什么是 协程池
  2. 自己实现一个简单的协程池(需要你的Code)只需要实现限制协程数量的功能(Tips: 搜索 WaitGroup )
  3. 了解使用Ants库(使用很简单功能很强大的库,非常滴好哦)Ants库介绍:Ants
  4. 实现依据内存占用修改并发数目和并发单位要读取的文本大小, 救救马特 !(二者有一个就够啦)
  5. 使用Ants库
    1. 思考:要使用阻塞式提交Or并发式提交?
    2. 自己实现(需要你的Code)
  6. 自己实现 (选做,属于加分项)(需要你的Code)

提交要求

任务一

  1. 学习Golang的学习笔记 (Markdown)
  2. 尝试编写代码的过程 (Markdown)
  3. 读文件程序 的代码及编译好的程序(Code&Program)

任务二

  1. 学习并发 (Markdown)
  2. 尝试编写代码的过程 (Markdown)
  3. 实现 并发读取文件 的代码及编译好的程序(Code&Program)

任务三

  1. 学习协程池、Ants库等的过程 (Markdown)
  2. 尝试使用Ants库或自行实现协程池的过程 (Markdown)
  3. 动态调节的并发程序 的代码及编译好的程序(Code&Program)

参考资料

The Go Programming Language

A Tour To Go

菜鸟教程-Go语言基础

#9 Java后端

任务一(必做):来一台属于自己的服务器

背景

一天马特在解决BUG,终于找到了心仪的解决方案,于是马特想记录下来以供回顾。但是马特并不乐意在CSDN或是博客园上记录(广告删不掉,想回顾还要先登账号,逼格就显现不出来),于是自己来了台服务器,配上自己的域名,搭建了第一个属于自己的博客。

当然,一台服务器能做的绝不仅是搭建博客,你能用来深入理解计算机网络这张大网的运转逻辑,你也能用来储存并统一管理所有资料信息,甚至网络攻击然后进局子,等等。

其实,无论是前后端,运维安全等方向,拥有一台服务器并熟练使用几乎是每一位程序员的入门技能。

准备

1、获取一台服务器 如果你已经有了一台服务器,可跳过此过程。如果没有,请往下看: 你可以在高校学生免费算力 - 飞天加速计划 (aliyun.com)中免费领取一台2C4G的云服务器,请完成领取流程并领取,最后在阿里云控制台中找到你的服务器并截图( 注意给必要的隐私信息如密码、用户名打码

当然你也可以通过其他渠道获取,服务器具体配置不做要求,最后只需要一张截图以证明是你自己的服务器

2、Linux基本指令 请登入你的服务器(推荐使用 XShell 登入),并实操一些基本的Linux指令,别忘了将学习过程记录下来。以下为推荐教程: Linux 常用命令学习 | 菜鸟教程 (runoob.com) Linux基础知识——Linux常用命令大全-阿里云开发者社区 (aliyun.com)

加分项

  1. 为自己的服务器绑定域名
  2. 更深入了解vim编辑器
  3. 通过分辨 cd .cd ..cd ~ 等指令了解到Linux的目录结构和文件路径

任务二:Java后端

背景

马特在阅览网页的时候,不禁思考这么一个问题:当用户在登录时网站是如何知晓并核对账号密码的?一个登录功能会由什么构成?在登录界面的背后还存在着什么?

无论你是否曾思考过这些问题,都请你带着这些疑问去了解一个词——后端。如果说前端是与用户打交道,那么后端则是与服务器打交道。后端联通了前端与服务器,后端赋能于前端。

以登录功能为例,前端向后端传输账号密码信息,经由后端交付至数据库,核对后返还登录状态给前端。好了,现在你已经熟练掌握了后端知识了,那么实践起来,实现一个最简单的登录功能吧。

准备

一言概之,后端即是一套数据处理与规范的逻辑。而这套逻辑早已被整理成了各式后端框架,如Python的Django、Flask,Java的SpringBoot,PHP的Laravel等等。但在此,我更为建议以Servlet+JSP+JDBC作为Java后端的第一门课。请以Servlet为起始点,逐渐了解JSP和JDBC在一个网页中所扮演的角色。以下为推荐参考资料:

【千锋】Servlet教程-Servlet入门 哔哩哔哩 bilibili

2020最新JDBC视频教程 哔哩哔哩 bilibili

【千锋】一天学会 MySQL 数据库 哔哩哔哩 bilibili

于初学者而言,Servlet及关联知识并不需要完全掌握,能完成任务即可

任务

实现一个登录功能,通过前端网页的表单输入账号密码,设置“登录”按钮。点击按钮后Servlet接收数据并与MySQL预先存有的数据进行核对,如核对成功,前端界面弹出“Sucess!!”弹窗,否则弹出“Fail。。”弹窗。

加分项

  1. 登录成功后以重定向方式跳转到成功页面,登录失败后以转发方式跳转至失败页面,五秒后重定向到登录页面。
  2. 明白为什么会出现SQL注入,在JDBC的哪一环节出的问题?

任务三:Shiro

背景

马特终于完成了一个登入程序,但他内心的正义感告诉他不能就这么将用户的密码明文地存放在数据库中。如果数据被盗窃,所有用户的信息都会被窃取。而且,如果直接输入主页的路径就会跳过用户登入的步骤。不行!这个登入程序太不安全了!!

可一想到要在原有基础上再添加拦截器,密码加密的程序,手就不想动了。这时,Shiro闪亮登场

Apache Shiro 是一个强大灵活的开源安全框架,可以完全处理身份验证、授权、加密和会话管理。总之,以上的需求点都可以通过Shiro这一中间件完美解决。

准备

这道题建议大二有SpringBoot开发基础的同学做,如果没能完成Shiro与SpringBoot整合,我们也会根据Shiro的学习情况适当给分。

【编程不良人】2020最新版Shiro教程

Apache Shiro 中文文档 - Apache Shiro 1.5.3 Reference Documentation | Docs4dev

任务

在已完成的登录程序基础上:

  1. 实现访问拦截,未经认证的访问行为都会被回退到登录界面
  2. 实现加密:添加注册功能,新用户的明文密码通过MD5加密储存到数据库

加分项

  1. 添加Shiro的授权功能。

    规定usersuper两种角色,user角色登入成功后跳转成功页面,但页面只有"Success!!",super角色登入成功后跳转的页面还有一条指向焦糖官网的超链接

  2. 实现MD5+Salt+Hash散列进行密码加密,Salt通过UUID的前五位生成。

提交内容

任务一:

  1. 一张能基本概括服务器信息的截图(隐私信息打码)
  2. 记录了Linux学习过程的.md文件

在md文件插入图片时注意不要使用本地路径,请通过图床等工具转成网络路径再插入,否则我们无法看到图片。如果无法解决该问题,则把图片单独打包

任务二:

  1. 记录Servlet及关联知识的学习过程的.md文件以及一条可访问的GitHub项目链接

任务三:

  1. 记录Shiro学习过程的.md文件以及一条可访问的GitHub项目链接

#10 机器学习题目

题目要求

如果你是全新的大一同学,我们推荐从任务一开始不断学习和练习,尽自己的努力尽量提高题目的完成度

如果你已有知识储备,或者你是大二的同学,我们期望你能完成任务二,并尽力达成进阶要求

任务一

你已经完成了python环境的安装吧(建议python3.7后续任务需要,或使用annaconda创建该环境的虚拟环境),以下任务二选一:

  1. 利用神经网络完成mnist数据集分类任务(即使用多层感知机完成该任务)
  2. 利用CNN完成mnist数据集分类任务并调整参数 (例如网络层数、维度) 并观察效果

必备工具

手撸神经网络是一件非常困难的事情,现成的工具包能对实现有很大的帮助。建议在如下的包当中选择函数实现给定的功能(任选其一即可)

  • sklearn
  • Pytorch
  • Tensorflow
  • Keras

模型安利

为了顺利完成上述的任务,我们安利了最基本的模型以供参考 (欢迎抄网上源码,重点的是理解为什么要这么做)

  • SVM 支持向量机(模型准确率达到80%)
  • MLP 多层感知机(模型准确率达到96%)
  • Lenet (模型准确率达到97%)

对应模型未达到对应准确率则被视为不合格 (跑代码需要大概10min,请闹心等待结果)

参考资料

学习关键字

MLP,CNN,layer,mnist(请自行查找如何下载和使用mnist数据集)

任务二

现在你已经初步学习了机器学习的一些知识,不要担心,这些知识已经足够你可以独当一面的解决问题了,当这个问题你能够完全解决时,恭喜你已经成为了一个 可以水论文的数据科学家,机器学习的各个领域是相对独立而又互相联系的,这里我们介绍一个相对冷门的领域:图神经网络,该领域具有在非结构化数据上的良好表现,而现实世界许多数据都是非结构化的,例如社交网络、知识图谱、复杂的文件系统等,接下来的问题我们就围绕这个实际问题展开吧!

以下是一些你可能用得到的知识

你需要做的事情:

  1. 弄懂GCN里面的几个比较常见的数据集,请尽量搞懂原始数据集里面的 ‘y’ , ‘ty’ , ‘ally’ , ‘x’ , ‘tx’ , ‘allx’ , ‘graph’ 是什么,希望你能够 将这个数据集处理成便于理解的邻接矩阵形式(建议文件名.edge)以及每个节点的特征矩阵(.feature)和每个节点的标签矩阵(.lable),数据集链接如下链接:PubMed数据集,提取码:jota 以及参考输出文件格式及示例,提取码:jota
  2. 简单了解AM-GCN的框架,并且搞清楚代码代码结构(细节和原理看不懂也没关系)这是你调参的基础
  3. 没有做出第一题没有关系,请你跑通AM-GCN的代码,这里考虑到同学的电脑配置问题只提供了最小的已经处理过的acm数据集,如果你的电脑没有显卡,请看代码进行一点修改即可运行AM-GCN代码,提取码:jota,并且希望你能够直接对该网络的结构进行修改,并画图或做简要说明修改内容和运行结果

进阶要求

如果你能够轻松完成以上内容,那么这里还有一些小任务给你

  1. 将AM-GCN中使用的attention机制的方法转化成对比学习的方式Contrastive Learning(提示:AM-GCN中的feature graph和Topology Graph可以生成两个loss)

  2. 如果你完成了上列内容,恭喜你这里有一个网络框架设计,也是应用了对比学习的思路,用到了解决平滑问题的MADGap,MADGap代码,请你尝试复现他

    image-20210831193309794image-20210831193309794795×592 17.6 KB

以下是一些你可能用得到的知识

提交内容

任务一:把你对该实验的学习过程和方法以及收获记录到.md文件并提交

任务二:

目标1:提交已经清洗好的PubMed数据集

目标2:把你对这个模型的理解写到.md文件,请注意不要照抄网上解释,我们希望了解你的思维

目标3:修改的网络的模型结构的图片放在.md文件,并提出你的修改原因,你的训练结果截图并放在.md文件,并且提交一份可访问的GitHub文件

进阶任务:

目标一:画出你的网络模型结构图,你的训练结果截图并放在.md文件,并且提交一份可访问的GitHub文件

目标二:画出你的网络模型结构图,你的训练结果截图以及你对该实验的学习过程和方法以及收获记录记录到.md文件,并且提交一份可访问的GitHub文件

#11 前端

题目要求

如果你是新入门的大一同学,我们推荐从任务一开始不断学习和练习,尽自己的努力尽量提高题目的完成度

如果你已有知识储备,或者你是大二的同学,我们期望你能完成任务二,并尽力达成进阶要求

我们将以题目完成度、实现思路和个人思考、学习历程文档完整度等标准对你的回答评分

任务一

学习 HTML 和 CSS,搭建一个简单的页面吧,内容包括:

  1. 个人介绍,包括但不限于你的兴趣爱好,你对未来的想法等等
  2. 照片和头像,如果你不愿意放自己的图片可以换成你喜欢的图片哦
  3. 你的学习记录,在这个阶段里你学到的东西,你遇到的困难都可以记录在这里,也可以加上在学习的过程中写的代码

最后使用 Netlify 部署你的页面,让大家都能看到吧

参考资料

学习关键字

HTML、CSS、DOM、Netlify

任务二

现在你已经认识到我们看到的五花八门的网页的基本构成了,那么我们进入下一个阶段,开始写真正の代码!

我们现在需要使用 Javascript 的力量来创造一个有交互功能的页面。

Javascript 代码可以运行在浏览器环境中,你不需要额外安装其他环境或者 IDE 就可以编写和调试 JS 代码,在你的浏览器里按 F12 试试吧!

这里有一些基础教程,你可能用的到:

需要学习的内容可能会很多,我们需要一个 TodoList 来管理自己的学习进度和粒度,正好我们就用自己的知识来实现一个 TodoList 吧

基本要求如下:

  • 使用 git 管理代码
  • 能增加和删除 Todo 项
  • 记录每条 Todo 创建的时间,可以根据日期进行正序 or 倒序排列
  • 每条 Todo 项 应当有【未完成】和【已完成】两种状态,可以在这两种状态之间切换
  • 能够隐藏【已完成】的 Todo 项 和展示【所有】的 Todo 项
  • 提供一次性清空所有【已完成】Todo 的功能
  • 提供白天模式和夜晚模式的切换功能
  • TodoList 应当用某种方式存储下来,存储方式不限。没有服务端可供交互的情况下,推荐使用浏览器自身的存储能力。如果你能有和服务端的交互环节,那真的是再好不过了
  • 页面应当有合理的布局和样式

学习关键字:

  • Javascript
  • 浏览器事件
  • 浏览器的的存储机制
    • Local Storage
    • Session Storage
    • Cookies

进阶要求:

如果你觉得以上的要求太过于简单,那我们觉得这个 Web App 可以继续完善下去

  • node 环境和浏览器环境都可以运行 js 代码,大致了解这两者的区别
  • 了解 npm 或 yarn 的常用命令,了解 package.json 的作用
  • 使用 Vue、React、Angular 等框架来搭建项目
  • 引用第三方的组件库,让页面更美观,交互的体验更好
  • 提供分类功能。新增一个左侧侧边栏,用户可以根据自己的需要新增和删除分类,每个分类单独管理所属的 Todo 项。点击侧边栏上对应的分类以查看和管理不同分类组的 Todo
  • 增加 Todo-Detail,点击对应的 Todo 项,能够查看此 Todo 的细节描述。
  • 使用 Electron 打包项目,让你的“页面”变成桌面应用程序吧!
  • Todo 项总有优先级,用户有进行排序的需要。使用拖动来进行排序是最符合使用直觉的交互方式,那实现一个拖动排序吧,让产品变得好用起来!(尽量不使用第三方库,尝试自己去实现这样一个简单要求的拖动排序会更好)

学习关键字:

nodejs、npm、Electron

参考:

tips:

  • 实现 Todo 的基本功能没有难度陡坡需要攻克。有关 Todo 的实现,在互联网上能找到很多现成的源码。新同学在学习的时候看这些经验分享的帖子完全没有问题,但严禁直接抄袭,请同学们用自己的能力去完成
  • 本题目没有提供原型图、UI 图,所以具体的交互和样式没有规定,但基本原则是交互合理体验流畅。请同学们细心考虑,尽量提供优秀的交互体验。
  • 进阶要求没有严格的先后依赖顺序

提交方式

  • 任务一:请提交能够访问的链接
  • 任务二:请提交 github 的地址,并写好 README.md

#12虚幻引擎:歪歪滴S

写在最前面

  • 本题仅面向大一新生(若不是新生但想学点虚幻,或许可以参考一下?)
  • 由于这个方向在焦糖宇宙(真有这样甜蜜的宇宙嘛)只是初有 勇士 当咪探索,因此 本题权重不高!仅作为趣味题目 ,以供大家探索兴趣,只做这道题和基础福利题可不太行哦。

马特刚走进工作室,就看见小糊又在打电动,说道:又在打电动噢,休息一下吧,定个方向好不好。小糊急了,说:前端我也丝毫提不起兴趣,后端看起来又好枯燥,这个互联网公司职位图上就没有我感兴趣的位置嘛。这时小糊 思 路 打 开,既然这里面的职位没有感兴趣的,那就换一类公司去嘛,他想起了小时无数个梦想当中的一个——做游戏。

ONE THOUSAND YEARS LATER,

不愧是糊,一下就学了一堆杂七杂八的皮毛,很快就能在虚幻4引擎中 基于BUG 运行一些小功能了

虚幻引擎,是:“全球最开放、最先进的实时3D创作工具”,它不仅高效、全能,还能 直接预览开发效果

总之,就是个很适合开发3D游戏的引擎啦。

那么跟着小糊一起来学虚幻吧!

目标

  • 实现任意基于 蓝图 的游戏功能!
  • 尝试蓝图间通信!

推荐教程:

幸运的是!不像很多很多技术那样,有着厚厚的语言壁垒,虚幻不仅官网有中文教程,著名学习视频网站BiliBili也有很多好用的教学视频哦。

官方教程:

谌嘉诚是一位优秀的虚幻引擎教程制作者,为虚幻引擎官方认证教师,相信许多虚幻引擎初学者是看他的视频学习的 :partying_face:
【虚幻4】UE4初学者系列教程合集-全中文新手入门教程-BiliBili

提交内容

  • 若你只是尝试实现了一些功能(推荐),在本题目只需提交一个视频,相关蓝图的 清晰 截图和一个md文件——用以记录你的尝试心得或作出一些补充声明。
  • 若你真的做出了一个游戏(真没必要,附加趣味题而已),那就提交视频,游戏打包后的文件吧(注意管理游戏资源,初学者制作的游戏理应不该超过1GB。哦,还有一个md文件, 如上所述:用以记录你的尝试心得或作出一些补充声明。

# 13 嵌入式

嵌入式?

又有硬件,又有软件,怎么学啊?

答案只有一个字——肝。

其实学什么东西不是肝呢?

若干年后,lx(不是陆鑫)看到自己发光的头顶,心中在思考,当初为什么要学这种玩意?

都是主人的任务罢了(笑)

硬件篇和软件篇的任务是独立的,你可以自由选择,也可以都做。

注意:

务必将自己的学习轨迹或心得以及任务的答案记录在一个 md 文档中!!!

13.1 硬件篇

题目要求

对于没有基础的大一新生,我们推荐进行入门的学习并至少完成任务一。

对于大二学生,我们希望你能完成任务一二并且给出原理图。

参考资料
立创开源平台
立创EDA
数据手册下载
数据手册也可从厂家官网下载,数据手册就是最好的参考资料

任务一

请设计一个室内环境监测嵌入式系统的原理框图或原理图,要求框图信息详细,如供电模式,主控选择,采集方式等,最后简要说明一下。

任务二

低碳环保很重要,控制好嵌入式系统的功耗使你的设计锦上添花,请将上一题的框图加入功耗控制的相关设计,并且说出这样做的理由理由。

13.2 软件篇

大一的学生请尝试完成任务1,大二的学生请尝试完成全部任务。

参考资料:

嵌入式系统设计

C语言

慕课

CSDN、百度、菜鸟教程、bilibili……

资料不是必须全部读完,只需要挑选自己需要的部分进行阅读学习(如果你有大把时间的话可以多读)

如果有能力, 可以参照教材搭建 STM32Cubemx + keil 的开发环境进行开发,可以作为加分项。

任务的要求比较具体,你可以根据自己的理由做出改变,但理由必须合理

任务1

你拥有一辆小车,参照小车的文档例程,编写如下的小车控制接口函数

/** @介绍 控制小车的速度
  * @参数  speed 
  *       指定具体的速度值,为简化问题,可以取值为
  *       1:小车前进
  *       -1:小车后退
  *       0:小车停止
  * @返回值 None
  */

void controlSpeed(int speed);

/** @介绍 控制小车的方向
  * @参数  direction
  *       指定小车的方向,相对小车前进方向取值,取值范围为-45~45,单位为度数,负表示向左偏移,正表示向右偏移
  * @返回值 None
  */
  
void controlDirection(int direction);

任务2

小车并不是一个很精密的设备,即使前进路线是一条直线,它也可能会出现跑偏的现象,为了解决这个问题,你找到了一个GPS定位仪,它可以以合适的频率上传当前所在的定位信息。

每上传一次数据,就会触发一个“中断”,然后系统自动调用“回调函数”,你可以在中断的“回调函数”里决定中断完成后需要进行什么操作。

学习“PID算法”,适当编写回调函数,利用任务1中的接口函数和GPS定位仪的数据,让小车能按一条相对理想的直线行驶。假设GPS定位仪的数据已经过处理。

/** @介绍 包含GPS定位仪上传的数据的结构体,全局变量
  * @参数  xvalue 坐标x值
  *       yvalue 坐标y值
  *       direction 车头方向,取值为0-359,以正北方向为极轴,顺时针方向为角度增加方向
  */
  struct CoordinateNode{
    int xvalue;
    int yvalue;
    int direction;
  }coor;
  
/** @介绍 回调函数
  * @参数  None
  * @返回值 None
  */
  void callbackFunction();

# 14 网络安全

写个背景

盘仔刚从坑里爬出来,感叹到:“这里怎么这么多坑。”说罢,盘仔走向下一个集装箱。这个集装箱里放了世界上最好的语言,盘仔在其中玩得不亦乐乎。走出这个端口,盘仔惊呼:“这就是CTF!”

做点什么

你可能会问:

什么是ctf?

有什么靶场平台?

有推荐的书籍吗?

  • 《白帽子讲Web安全》: 是很全面的一本好书涉及的方面比较全,在对应的文件夹中附带了一些思维导图,可以帮助来阅读这本书。
  • 《Web安全深度剖析》 :这本书主要是对各种类型的web安全漏洞做了介绍,并且也涵盖了渗透测试手法,很基础和实践的一本书。
  • 《CTF特训营:技术详解,解题方法与竞赛技巧》,《从0到1:CTFer成长之路》:都是打CTF能看的书,前面那本我忘了,后面那本是NU1L战队写的。
  • 《内网安全攻防:渗透测试实战指南》:打内网看的。
  • 《黑客秘笈:渗透测试使用指南》:也是关于渗透测试讲的很全面的一本书。
  • 《加密与解密》:二进制方向必看书,问谁基本都会推荐的。
  • 《Machine Learning and Security》:比较系统的介绍了机器学习和安全之间的联系和实操。
  • 《数据驱动安全》:安全数据分析入门。

题目在哪

AegisRecruit(网站先不上,后续可能有改动)

可以来群里问问噢: 813838052

先恰个 公告题 ,让自己 熟(榜)悉(上)一(有)下(名)