为了账号安全,请及时绑定邮箱和手机立即绑定
新浪微博

咱们打开新浪微博,然后随便找个带皇冠的,按下F12键(Mac用户按command+option+i)然后选中控制台的箭头,再点击皇冠:再点开这个图片可以发现:可以看到那些大 V 图标皇冠图标以及各种微博认证等图标,都是放在了一张雪碧图里(即使再牛的大 V,身份标志也是放在雪碧图中的)。

5. 信息综合搜索

信息的搜集往往不是单一的,是由类似上面列举的很多方式的组合。我们经常听到一个词 人肉搜索,大家都很惊讶网络神人技术太强,其实主要还是因为我们散布在网上的资料信息太多了。这些零碎的资料拼一拼还是能获得很全的信息的。搜索引擎随便输入你的名字,或者外加几个关键词可能查到你在哪所学校,参加了某某活动,获得了某某名次的奖励你在哪所公司,缴交的一些社保信息你在某个网站的评论根据你的昵称到 QQ 上面搜索,同一个昵称到处用概率还是很大的,如果有手机号那就更加准确了,紧接着可以根据你的 QQ 空间获取更多你私人的信息。(这以前是非常好查的,现在腾讯也一直在完善信息安全这块)也可能是到其他平台去搜索:微博,头条,人人网,58同城 等照片网上搜索相似百度搜索引擎就有根据图片搜索到功能到政府的一些网站,如 信用xx ,上面根据法人名字也能搜索不少有价值的东西。

4. 模板方法模式

模板方法模式是定义一个操作中的算法的骨架,从而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。通常对于一些重要的复杂方法和多个子类共有的方法且逻辑相同的情况下会使用模板方法模式。比如用户第三方用户认证的时候就比较适合使用模板方法。我们来看一个例子:假设我们现在需要用到微信、微博的第三方用户授权来获取用户的信息。//使用模板方法模式描述获取第三方用户信息的过程 public abstract class Authentication{ public void checkUserAuthentication(){ checkIdentity(); fetchInfo(); } ​ protected abstract void checkIdentity(); protected abstract void fetchInfo(); } ​ //微信用户 public class WechatAuthenication extends Authentication{ @Override protected void checkIdentity() { System.out.println("获得微信用户授权"); } ​ @Override protected void fetchInfo() { System.out.println("获取微信用信息"); } } ​ //微信用户 public class WeiboAuthenication extends Authentication{ @Override protected void checkIdentity() { System.out.println("获得微博用户授权"); } ​ @Override protected void fetchInfo() { System.out.println("获取微博用信息"); } } ​ //调用模板方法 public class Demo{ public static void main(String...s){ Authentication auth = new WechatAuthenication(); auth.checkUserAuthentication(); auth = new WeiboAuthenication(); auth.checkUserAuthentication(); } }输出结果:获得微信用户授权 获取微信用信信息 获得微博用户授权 获取微博用信信息现在我们使用 Lambda 表达式换个角度来思考模板方法模式。如果我们用函数式接口来组织模板方法中的调用过程,相比使用继承来构建要显得灵活的多。//定义一个处理接口,用来处理一项事务,如授权或者获取信息。 public interface Processer{ public void process(); } ​ //封装调用过程 public class Authentication{ private final Processer identity; private final Processer userinfo; public Authentication(Criteria identity,Criteria userinfo){ this.identity = identity; this.userinfo = userinfo; } ​ public void checkUserAuthentication(){ identity.process(); userinfo.process(); } } ​ //使用模板方法 public class Demo{ Authentication auth = new Authentication(()->System.out.println("获得微信用户授权"), ()->System.out.println("获取微信用户信息")); auth.checkUserAuthentication(); auth = new Authentication(()->System.out.println("获得微博用户授权"), ()->System.out.println("获取微博用户信息")); auth.checkUserAuthentication(); }输出结果:获得微信用户授权 获取微信用信信息 获得微博用户授权 获取微博用信信息此时,我们的模板方法得到了大幅的简化,同时通过函数接口让模板方法获得了极大的灵活性。

3.1 微信小程序 API

uni-app 的 API 与微信小程序 API 基本一致。掌握微信小程序 API 对后面的开发很有帮助。微信小程序 API 文档:https://developers.weixin.qq.com/miniprogram/dev/api/

5. 查找你公司的工作空间

当你用公司邮箱登录 Postman 时,你会看到很多可选择的团队工作空间可供加入:

2. 为什么要做这门面试教程?提升面试能力与了解市场现状

就业市场和所有的市场相同,影响就业指标的关键就是供需关系。在互联网行业,供需主要分为两类,需求方是作为招聘方的互联网公司,供给方则是作为候选人的程序员。如果互联网公司对于程序员的需求大于市场上流动的人员数量,此时求职的程序员就会有更大的议价能力,这种情况一般发生在每年的金三银四时间段。如果程序员数量过剩,互联网公司则会普遍提高选拔指标,尝试筛选出更符合条件的候选人。从供给侧来看,根据 2021 年高考填报志愿的统计数据,计算机和金融已经明显成为两大金砖专业,越来越多的高水平学生流入到计算机专业,以及观察考研数据,可以发现计算机已经是最受欢迎的目标专业。从需求侧来看,国内互联网经历了 2010 年之后的移动互联网流量大爆炸时期,增速已经逐渐放缓,各种大厂的竞争也从寻找增量的用户转为到存量市场博弈,例如在电商领域继淘宝和京东之后出现的拼多多、唯品会等各种细分应用,或者从企业微信、阿里钉钉以及字节跳动飞书的办公软件领域的竞争都可以看出存量市场竞争的激烈。蛋糕已经很难做大,所以大家都开始花精力研究如何分到更多的蛋糕。所以未来的趋势很明显,互联网的供给增速飞快,但是需求增速放缓,作为找工作的一方,不管是应届在校生还是工作时间不长的程序员,都需要提高自己的核心专业素养。

3.1 打包为微信小程序

注册微信小程序账号,获取到 AppID,我们后面配置的时候会用到。在 HBuilderX 工具栏,点击发行,选择小程序-微信。输入小程序名称和 AppID,单击发行就可以了。这样我们就会获得一个微信小程序的打包文件,接下来我们来发布微信小程序项目,打开微信小程序开发者工具,导入刚刚生成的微信小程序项目的打包文件,在微信小程序开发者工具中先测试一下,项目运行是否正常,项目测试没有问题后,点击右上角>>按钮,上传代码就可以发布微信小程序了,最后等待微信团队审核通过,别人就可以在线上访问到你的项目了。

4.1 主要泄漏信息

IP 地址,物理地址网站后台访问地址,密码信息家庭成员信息,电话信息生日(很多人的秘密是生日日期)公司信息,同事信息

SSL 协议与 TLS 协议

在软件发展过程中,有很多东西一开始都只是某个技术能力突出的公司研发出来的,在被大众认可取得一定市场后有可能被官方收编,成为行业内的一种标准。SSL 最早是 Netscape 公司研发的,后来被采纳成为标准后取名为 TLS。

2.1 同类产品概述

正所谓货比三家,学习也是一样,Dreamweaver 同样也有一些同类软件。比较出名的主要有:微软公司出品的 FrontPage,Visual Studio ,网景公司的 Netscape 编辑器和 Jbuilder。

1.1 什么是私有仓库

顾名思义,就是你的私人代码仓库,而不是开源出去让大家都能看到并参与开发的项目。私有仓库可以进行权限控制,只有拥有权限的人才能访问并修改它,也就是我们所说的合作者。在早些版本的 GitHub ,使用私有仓库是需要付费的,而被微软收购后,随即就宣布了对于合作者在3人以内的私有仓库可以免费使用。而就在前不久,GitHub 再次宣布,对私有项目无协作人数限制,也就是现在不管有多少合作者,使用私有仓库都是免费。不得不说,微软让 GitHub 真香。1.2 使用场景私有仓库是个好东西,那么我们一般什么时候会使用它呢?以我个人经验,总结出了如下几点常见的使用场景:1.私人项目,不希望被别人看到,比如你闲暇时候接的一些活之类的;2.暂时不想开源,由于项目只开发了一小部分,想等成熟之后再开源;3.公司项目,有些公司是直接使用 GitHub 来进行项目管理的,公司内部就会使用私有仓库。

1. 前言

上一节我们介绍了「密码认证」的实现方法,本节我们讨论如何通过 OAuth2.0 方式直接从第三方机构获取用户身份信息的方法。OAuth(开放授权)是一个开放标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容,OAuth2.0 是 OAuth 协议的延续版本,但不向后兼容 OAuth1.0 即完全废止了 OAuth1.0。除了自建认证中心外,常用的互联网 OAuth2.0 认证中心还包括:QQ、微信、微博、Github 等,例如 imooc.com 的登录选项里,我们能看到「微博登录」、「微信登录」和「QQ 登录」,这些其实就是对 OAuth2.0 认证的应用。慕课网登录页面 /center>本节将以 Github 作为第三方认证中心为例,讨论如何使用 Spring security 实现 OAuth2 登录的功能。本节开发环境JDK 1.8Maven 3.5.3 依赖项:spring-security-config:5.3.2.RELEASEspring-security-oauth2-client:5.3.2.RELEASEspring-security-oauth2-jose:5.3.2.RELEASEspring-boot-starter-thymeleaf:2.3.0.RELEASEspring-boot-starter-web:2.3.0.RELEASEthymeleaf-extras-springsecurity5:3.0.4.RELEASE

2.1 管理代码

试想一下,当我们在公司做某个项目,代码写到一半,回到家以后想用自己的电脑,继续写剩下的代码,那怎么办呢?当然你可以把代码拷贝下来,然后安装到自己的电脑上面,或者借助 QQ、微信、网盘等文件传送方式传送到你自己的电脑上(这里只是举例子,实际工作中一定要遵守公司规定,不要把公司重要代码随意上传或者打包带走)。这样做未免有些繁琐,因为你每次上传都需要传全部的代码,而有些项目的代码还有各种各样的依赖包,实际所占内存会很大,传送也浪费时间。通过 GitHub 我们就能完美解决这个问题,只需要将代码上传到 GitHub 仓库,回家后再拉去一下代码就好了。具体是什么原理,我们后面会讲到。

1. 前言

有些同学乍一听九宫格可能不知道是什么,但其实它在我们的日常生活中很常见:顾名思义,九宫格通常为如图这种三行三列的布局。微信客户端就用到了这种布局方式:大家最熟悉的朋友圈也采用了九宫格:还有微博:

1.3 什么是 Python 办公自动化?

明白了办公自动化,就是解决了我们在办公过程中,提高工作效率、简化工作流程的方法。那 Python 办公自动化又是指什么呢?首先 Python 作为一种跨平台的计算机程序设计语言,在最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。Python 中有强大的内置库和丰富的第三方库,所有你能想到的功能都可以利用 Python 快速、高效的解决,所以 Python 也越来越成为办公自动化的首选。简而言之,Python 办公自动化就是通过 Python 编写程序来解决办公过程中所遇到的问题。如果看到这里你还不太理解 Python 办公自动化是什么,那可以想象以下场景:需要你将 1000 个 Excel 文件中的数据进行统计;打开有 10W+ 条数据的一份 Excel 文件进行数据的统计;根据已有数据快速制作大量图表到 PPT 中;已经完成的 1000 份 Word 文件中,公司名称变更,需要批量更改;对于上述的工作场景,如果不通过编程的方式我们怕不是要一条条数据,一个个文件进行修改,既费时又费力。而使用了 Python 之后上面这些场景很可能只需要短短几行代码就能快速完成。

3. 查看签名信息

我们打完包之后如何查看签名信息呢?有以下 2 种方法:方法一:其实 Gradle 默认给我们内置了很多任务,里面就包含查看应用签名的任务 signingReport。我们执行这个任务就可以看到应用的签名了。方法二:第二种方法就是直接使用命令查看签名信息,我们在控制台输入下面的命令keytool -list -v -keystore "[签名文件路径]"就可以看到签名信息了,包括我们之前写的组织/公司,省份,国家等。 Tips: 我们对于签名文件的注意点就只有下面一点,设置签名的 key 和密码时不要太过复杂,不然在看签名信息的时候,输入密钥库口令时看不到输入的内容,很容易输入错误。

PyCharm 简介

PyCharm 是 Python 最著名的集成开发环境 IDE 之一,由大名鼎鼎的 JetBrains 公司开发,如果你用过该公司其它产品,像 Intellij IDEA 或者 WebStorm,你将对 PyCharm 驾轻就熟,该公司旗下产品在功能布局及设置等方面都保持了很好的一致性。

1. Java 的历史

1995 年 5 月 23 日,Sun Microsystems 公司宣布 Java 语言诞生, 当时使用 Java 的总人数还不到 30 人,可能包括 Java 语言之父詹姆斯·高斯林在内的大多数联合创始人都无法预想,Java 在未来的二十年间,居然会给互联网乃至我们的生活带来如此深远的影响。目前 Java 提供以下三个版本:Java Platform, Enterprise Edition(Java EE:Java 平台企业版);Java Platform, Standard Edition(Java SE:Java 平台标准版);Java Platform, Micro Edition(Java ME:Java 平台微型版)。2006 年,SUN 公司在 JavaOne 大会上,宣布在 GNU 通用公共协议(GPL)的构架下向开源世界贡献 Java 平台,这次开放的 Java 版本包括了其标准版(Standard)、微型版(Micro)以及企业版(Enterprise)。这是一个具有 “历史性意义” 的改变。

1. 开篇词

据不完全统计(其实就统计了自己身边的朋友和同事),在刨除抖音或快手这一类短视频 APP 后,每天在手机上花费时间最长的就是刷微博和逛朋友圈。在刷微博和逛朋友圈的时候经常会看到这种东西:它有一个高大上的名字:九宫格。它在移动端的运用十分的广泛,而且不仅仅是在移动端的运用,它甚至还运用到了一些面试题中,因为九宫格可以很好的考察面试者的 CSS 功底。有些同学可能觉得九宫格看上去非常的简单,但实际上一些边框问题却还是很考验人的。借助市面上已有的 CSS 库,我们可以很轻易的做到九宫格布局,尤其是可以用到中文关键字,这非常有利于我们的记忆,它就是 chinese-layout。然后我们再用一个中文渐变色的CSS库来美化我们的界面:chinese-gradient。

4.2 测试效果

点击工具栏–运行–运行到内置浏览器,测试H5平台。点击工具栏–运行–运行到小程序模拟器–微信开发者工具,测试微信小程序平台。

5.2 测试效果

点击工具栏–运行–运行到内置浏览器,测试H5平台。点击工具栏–运行–运行到小程序模拟器–微信开发者工具,测试微信小程序平台。

2.4 私服

私服也是属于远程仓库的一种,相对公共仓库而言属于某个公司或者某个开发团队私有的远程仓库。通常部署在某个局域网内,提供局域网的内部用户使用。那私服有什么好处呢?更快的下载速度:由于是局域网内部的请求,因此下载构件的速度是可以保证的;更稳定的构建:想象一下,如果我们依赖某个外部的远程仓库,当这个仓库出现不可能用的情况,哪怕是网络的波动,都有可能会造成我们的构建失败;部署第三方构件:如果一个公司使用了微服务架构,那么公共仓库是肯定没办法获取这些私有的构件的。当我们需要一个构件的时候,Maven 会先去请求私服,如果发现私服中,没有该构件,那么就会去配置了的远程仓库中寻找,并且缓存到我们的私服中,为后续的下载请求提供服务。

5. 公平锁与非公平锁

分类:根据线程获取锁的抢占机制,锁可以分为公平锁和非公平锁。公平锁:表示线程获取锁的顺序是按照线程请求锁的时间早晚来决定的,也就是最早请求锁的线程将最早获取到锁。非公平锁:非公平锁则在运行时闯入,不遵循先到先执行的规则。ReentrantLock:ReentrantLock 提供了公平和非公平锁的实现。ReentrantLock 实例://公平锁ReentrantLock pairLock = new ReentrantLock(true);//非公平锁ReentrantLock pairLock1 = new ReentrantLock(false);//如果构造函数不传递参数,则默认是非公平锁。ReentrantLock pairLock2 = new ReentrantLock();场景介绍:通过模拟一个场景假设,来了解公平锁与非公平锁。假设线程 A 已经持有了锁,这时候线程 B 请求该锁将会被挂起;当线程 A 释放锁后,假如当前有线程 C 也需要获取该锁,如果采用非公平锁方式,则根据线程调度策略,线程 B 和线程 C 两者之一可能获取锁,这时候不需要任何其他干涉;而如果使用公平锁则需要把 C 挂起,让 B 获取当前锁,因为 B 先到所以先执行。Tips:在没有公平性需求的前提下尽量使用非公平锁,因为公平锁会带来性能开销。

8. 自定义配置文件

有时候参数太多,都放到一个配置文件中太乱了,我们会希望将配置分到不同文件中,然后每个文件保存不同配置。例如上面微信公众号配置,我们单独建立一个 wxmp.properties 文件,内容如下:实例:# wxmp.properties配置文件# 公众号的appidwxmp.appid=111# 公众号的secretwxmp.secret=222WxMpParam 代码如下:实例:/*** 微信公众号参数*/@Component // 注册为组件@PropertySource(value = "classpath:wxmp.properties", encoding = "utf-8") // 指定配置文件及编码public class WxMpParam { @Value("${wxmp.appid}") private String appid; @Value("${wxmp.secret}") private String secret;}

2.1 微框架

Flask 是一个 Python 实现的 Web 开发微框架,但是这个“微”并不代表着 Flask 功能比较简陋、有所欠缺。微框架中的 “微” 意味着:Flask 旨在保持核心简单而易于扩展;Flask 不会替用户做出太多决策,比如使用何种数据库;Flask 的选项(比如使用何种模板引擎) 通常有多个,用户很容易替换。默认情况下,Flask 不包含数据库抽象层、模板引擎、身份认证或其它任何已有多种库可以胜任的功能,如下图所示。然而,Flask 支持用扩展来给应用添加这些功能,应用程序可以很方便的集成这些扩展。众多的扩展提供了数据库集成、表单验证、上传处理、各种各样的开放认证技术等功能。

2.4 需求分析

需求分析一般包含可行性分析、业务需求、数据项分析。实例 4:需求分析实例。# 第二章 需求分析## 2.1 可行性分析### 2.1.1 技术可行性同类产品技术解决方案:- XX 公司实现的产品,用了 XX 技术;- XX 公司实现的产品,用了 XX 技术;- XX 公司实现的产品,用了 XX 技术。### 2.1.2 经济可行性​```mermaidpie title 市场分析 "已改造" : 386 "未改造" : 85​```<center>图1:市场分析图</center>### 2.1.3 管理可行性## 2.2 需求分析### 2.2.1 功能需求- 功能点1 - 子功能点 1-1 - 子功能点 1-2 - 子功能点 1-3- 功能点2 - 子功能点 2-1 - 子功能点 2-2- 功能点3### 2.2.2 环境需求| 需求项 | 需求指标 || -------- | --------- || 操作系统 | CentOS 7 || 数据库 | Mysql 5.7 || 内存 | 8G || 硬盘 | 100G |## 2.3 数据项分析数据表整理| 数据对象 | 简述 | 来源 | 核心数据项 | 主键 || -------- | ------------------ | -------- | ------------ | ------ || 管理员表 | 保存系统管理员信息 | 注册 | 登录名 | 登录名 || 学生表 | 保存学员信息 | 批量导入 | 姓名、学号 | 学号 || 老师表 | 保存教职工信息 | 批量导入 | 姓名、职工号 | 职工号 || 部门表 | 保存部门、班级信息 | 批量导入 | 名称、编号 | 编号 |其渲染效果如下:

4.2 通过更少的步骤轻松设置网站。

利用起始模板更快地启动并运行您的网站,您可以通过自定义这些模板来构建 HTML 电子邮件、“关于”页面、博客、电子商务页面、新闻稿和作品集。—Adobe 公司中国区官网这里的意思是说 Dreamweaver 这个软件本身提供了很多“成熟例子”供你选择使用。这些“例子”不但设计成熟,而且能适应你常见的用途,比如网页、博客、电商网站、新闻页面等。这一点好用到甚至你在刚开始学习 Dreamweaver 的时候,就能挥手间创造出市面上很成熟的页面,毕竟 Dreamweaver 自带的模版都是符合当下主流设计风格的网页。

2.1 公式的声明

Markdown 中的数学公式也分为「行中公式」和「独立公式」两种。2.1.1 行中公式行中公式使用两个单独的「美元符 $」表示。实例 1:$1 + 1 = 2$其渲染效果如下:2.1.1 独立公式独立公式的写法是将公式两边用两个连续的「美元符 $$」包裹,换行通过在行尾添加 \\ 实现。实例 2:$$x + y = 10 \\x - y = 6 \\2x = 16 \\x = 8 \\y = 2$$其渲染效果如下:

2.2 同类技术优缺点分析

2.2.1 微软的 FrontPage 和 Visial Studio相比于 Dreamweaver 中重量级设计软件,FrontPage 就显得更加轻巧,因此可以把它定义为一款轻量级的网页设计软件,甚至可以称作一种工具。这个软件的优点是它可以和熟悉微软 office 办公套件中 word 的同学和谐相处。由于它的操作方式和 word 十分相似,大家可以在熟悉微软 office-word 基础上,轻松入门上手 FrontPage。它同样具有 Dreamweaver 所见即为所得的特点,且具有强大的站点管理功能。支持 CGI 脚本,支持 CSS,提供了各种类型的模版。缺点目前来看,对云办公的支持便捷性可能不如 Adobe 公司的 Dreamweaver,而且需要对微软公司的相关组件支持比较好的系统才有可能更好的运行这一软件。而 Visual Studio 则是一款重量级的集网页开发,设计,部署的软件。以目前软件行业的现状来看,Visual Studio 已经成为了众多前后端开发工程师的首选利器,它具备前沿的设计理念和交互方式,充分服务于一般性质的开发,也完美支持特殊种类的开发。Visual Studio(简称VS)的优点是显而易见的,那就是集成化功能强大。但是这个优点有的时侯可能对于某些用户来说会成为缺点:入门难度高,灵活运用存在一定难度。但不得不承认的是,相比 Dreamweaver ,微软的 VS 这款产品具备更加广的受众面。但和 Dreamweaver 不能比拟的是:使用 Dreamweaver 你可以在 PS,AI,PR 等Creative Cloud 平台软件中无缝切换。但使用 VS,大概率下将享受不到这种便利。2.2.2 网景公司的 Netscape 编辑器网景公司在今天大家已经很少能看到它的足迹。它的这款工具类产品,却在当初的浏览器历史上有着很出名的应用。这是一款非常复古的网页编辑器,而且多数出现在Netscape浏览器中,在浏览器浏览网页的时候,你只需要点击编辑按钮,就可以显示网页源代码,进而实现对网页的编辑。而且它的使用方式有些地方是和 FrontPage 很像的。Netscape 编辑器更像是一个轻量级的网页编辑工具,如果你是初学者,从这里入门也是不错的选择。它的优点是操作编辑,在浏览器里操作,对于用户较为友好。缺点是功能比不上大型的开发环境,应用场景受限等。2.2.3 JbuilderJava 开发程序员可能用过这款网页设计软件,它更像是为 JSP 量身定做的一款开发工具。JSP 是一种Java 服务器端页面,可以提供交互非常广泛的网页,曾经倍受 Java 开发工程师的宠爱。但近几年已经基本抛弃了直接开发 JSP 页面的开发模式。Jbuilder 优点就是适合 Java 程序员,对 Java 语言有着很友好的支持。缺点就是它更适合高级开发人员,有一定门槛。

5. 公平锁与非公平锁

分类:根据线程获取锁的抢占机制,锁可以分为公平锁和非公平锁。公平锁:表示线程获取锁的顺序是按照线程请求锁的时间早晚来决定的,也就是最早请求锁的线程将最早获取到锁。非公平锁:非公平锁则在运行时闯入,不遵循先到先执行的规则。ReentrantLock:ReentrantLock 提供了公平和非公平锁的实现。我们本节只做介绍,后续章节会对 ReentrantLock 进行深入的讲解。

首页上一页1234567下一页尾页
直播
查看课程详情
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号