推荐几款好用的markdown编辑器
arkdown编辑器
Markdown 其实在 2004 年就有了,不过之前一直很小众,这几年随着相关应用平台的发展,Markdown以其独到的优势迅速火起来了。Markdown编辑器使用一套格式标记语言来对文档内容进行排版和格式显示。而Markdown的标记很少,常用的也就十个左右,它是一种非常轻量的标记语言。
Markdown编辑器深受技术人员的喜爱,Markdown可以用来编写说明文档,用它写的文档很多技术平台都能通用;Markdown可以用来写技术博客,可以使说明部分和代码都非常清晰易读;Markdown格式转换方便,还可以轻松地将文本转换为 html、pdf等。
Markdown编辑器分类
按照Markdown编辑器的使用环境,可以将它们归纳为三类。
- 平台集成工具:各大在线博客、社区平台自带的写作工具,比如CSDN、博客园、简书等。
- 独立软件类:下载到自己机器上使用的独立产品,可以编辑本地文件,比如Mou、MarkdownEditor、Haroopad等。
- 插件类:他自己本身是不能独立使用的,可以在你现有的主流编辑器安装,使你现有的编辑器具有Markdown的功能,比如Atom、WebStorm、Sublime Text等。
这三类软件分别面向三类Markdown用户,大家可以根据自己的需求来选择使用。
下面是我收集的一些业界比较受欢迎的Markdown编辑器,喜欢用Markdown的朋友可以一起看看,一起探讨。
1 Mou
Mou 是一款由国人开发的Markdown 编辑器,支持实时预览,但是仅支持 苹果操作系统,可以说是目前最好用的免费 Markdown 编辑器,对汉字兼容性非常好。提供语法高亮、在线预览、同步滚动、全屏模式,支持自定保存、自动匹配,允许自定义主题等等。支持 CSS,HTML 和 PDF 导出等功能。
Mou是独立的软件。
更多介绍及下载:http://25.io/mou/
2 MarkdownPad
MarkdownPad被很多人称赞为windows下最好用的Markdown编辑器之一,不过仅支持windows。它有免费版和收费版(MarkdownPad Pro),一般情况下免费版就够用了,想用pro版的可以自行网上下载,强大的国人crack无处不在的~ ~。
MarkdownPad支持键盘快捷键和工具栏操作,即可添加标记也可移除,支持即时HTML预览、支持自定义配色方案、字体、大小和布局、支持音乐视频,可以导出HTML和PDF。
MarkdownPad是独立的软件。
更多介绍及下载:http://markdownpad.com/
3 Typora
Typora也是非常用名,非常好用的markdown编辑器,它的设计理念很不一样,是真正的即时预览型编辑器,不同于左右两个窗口的编辑器。Typora的设计理念就是极致简洁,它将「写字」和「预览」这两件事情合并了。
如果要修改已经写好的markdown标记可以点击切换到“源代码模式”。
Typora 同样支持 Windows、OS X 和 Linux多个操作系统,支持数学编辑,可与 Word 直接格式转换,可以进行多种文档格式转换。Typora 流畅度和反应速度很快,特别适合那些手速快的人。
Typora是独立的软件。
更多介绍及下载:https://www.typora.io/
4 Atom
Atom 可以说是专门为程序员推出的一个文本编辑器,界面简洁,支持实时预览。功能非常多,除了Markdown同时支持CSS,HTML,JavaScript等网页编程语言,还支持宏定义,自动分屏功能等。Atom还具有语义输入模式,比例输入code即会自动开启代码模式。
Atom支持windows、苹果、linux等多种操作系统。Atom是由著名的github平台出品的。
Atom是独立的软件,也支持插件方式。
更多介绍及下载:https://atom.io/
5 Haroopad
Haroopad也是一款非常流行的编辑器,来自韩国。Haroopad支持 Windows、Mac OS X 和 Linux三大操作系统。Haroopad的特色是主题样式丰富,语法高亮支持无数种编程语言,几乎你能想到的编程语言他都支持。Ubuntu/Linux 用户使用该工具比例很高,Haroopad 也是开源免费的。Haroopad也支持导出HTML、PDF,也支持数学公式和流程图。
Haroopad是独立的软件。
更多介绍及下载:http://pad.haroopress.com/user.html
6 SublimeText
SublimeText界面简约大方,定位专业,功能强大,并具有良好的扩展功能。SublimeText是收费软件,支持windows、苹果、linux三大操作系统。支持的编程语言有十几种,并可通过第三方插件无限扩充。
SublimeText默认不能实时预览,但通过 Markdown Preview 的插件来实现该功能。SublimeText屏幕右边有一个文档缩略图,可以看到文档全貌。
SublimeText是独立的软件,也支持插件方式。
更多介绍及下载:http://www.sublimetext.com/
7 Cmd Markdown
Cmd Markdown是一款不错的写作工具,同时也兼顾博客等写作平台,国内作业部落出品,同时支持Windows、苹果、Linux操作系统,也有 Web 在线创作平台,界面很舒服。
Cmd Markdown是独立的软件、也有平台集成版本。
更多介绍及下载:https://www.zybuluo.com/mdeditor
8 Byword
Byword。一款轻量级的 Markdown 编辑器,比较容易上手,适合新手使用。支持苹果系列系统,包括台式机、iPad和iPhone,收费软件。
Byword是独立的软件。
更多介绍及下载:https://bywordapp.com/
9 CuteMarkEd
CuteMarkEd 是一个基于qt5的Markdown 编辑器,开源免费,支持windows、苹果、linux多种系统平台,提供实时 HTML 预览、数学表达式、代码高亮和PDF导出。
CuteMarkEd是独立的软件。
更多介绍及下载:https://cloose.github.io/CuteMarkEd/
10 Dillinger
Dillinger是国外的 Markdown 编辑器,Web在线创作。漂亮强大,支持md、 html、pdf 文件导出,支持Dropbox、Bitbucket、Github、Google Drive、Onedrive 一键保存,也可以编写本地文件。支持实时预览,跨平台,浏览器打开。
Dillinger是平台集成工具,不是独立的软件。
更多介绍及下载:https://dillinger.io/
11、EpicEditor
EpicEditor 是个嵌入式 JavaScript Markdown 编辑器,可以全屏编辑,在线预览,自动草稿保存,支持离线等功能。对于开发者有很大吸引力,很容易集成在自己的系统中,并很容易自定义,也支持主题自定义。
EpicEditor属于插件类的API工具。
更多介绍及下载:http://ww1.epiceditor.com/
12 MarkdownEditor
MarkdownEditor是一款基于浏览器的 Markdown 编辑器,虽然他是独立软件,但该软件内嵌一个浏览器。功能非常简单实用、反应速度很快,号称是Markdown领域的NotePad(记事本)。MarkdownEditor还有拼写检查功能。
MarkdownEditor有两个版本,都是国人开发的,都是开源免费的。
MarkdownEditor是独立的软件、也有在线Web集成版。
更多介绍及下载:http://jbt.github.io/markdown-editor/
13 MarkPad
MarkPad是免费开源的 Markdown 编辑器,界面风格与window系统类似,同时只支持Window。支持实时预览,开放直接保存到你的博客或github的接口,有语法检查,支持代码高亮。
MarkPad是独立的软件。
更多介绍及下载:http://code52.org/DownmarkerWPF/
14 Marxico
Marxico中文名马克飞象,有桌面版、Chrome App插件,也支持Web集成版。这款编辑器的特点是可以直接把文本存到印象笔记平台中,另外还有导出HTML时可以将其中的图片自动转成base64保存。其他的实时预览、语法高亮也都支持。
不过这款软件是收费的~ ~
Marxico是独立的软件、同时有Chrome App插件,也支持Web集成。
更多介绍及下载:http://marxi.co/
实在太困了,就先介绍这么多吧~ ~ ~ (PS:刚接触写博客,发现还真是个累活呀:-P)
最后
markdown编辑器产品非常多,以上只是本人接触过的一些,相信还有很多很好的markdown存在,其实也没必要全都试一遍,只有最适合自己的,才是最好的。
如果你用过其中的一种,或者你用过其他好用的markdown编辑器,欢迎交流分享。
TTP 基本概念
1. 什么是 HTTP?HTTP 的作用是什么?
HTTP 全称:HyperText Transfer Protocol ,超文本传输协议。
HTTP 从客户端到服务器端等一系列运作流程提供规范,是目前互联网上使用的最广泛的一种规范。
- HTTP 协议用于客户端和服务器端之间的通信
- 通过请求和相应的交换达成通信
- HTTP 是一种不保存状态的协议
- HTTP 通过使用 URI 来定位互联网的资源
2. 什么是 TCP/IP?
- 计算机与网络设备通信,须基于一定的方法规范来进行。确定通信对象、通信语言选择、开始结束通信方式、不同操作系统或者硬件之间如何通信,这些都是需要制定的规则协议。
- TCP/IP 协议就是由这些多种互联网通信相关协议组合而成,HTTP 为期子集。大部分常用的互联网网络,均通过 TCP/IP 协议族来进行。
- TCP/IP 协议族常见的协议还包括:TCP、IP、HTTP、FDDI、FTP、DNS、UDP、SNMP 等。
- TCP/IP 也是指 TCP 和 IP 这两种协议,是在 IP 协议的通行过程中,使用到的协议族的统称。
3. TCP/IP 协议族分几层?
TCP/IP 协议族可以分为 4 层,分别是应用层、传输层、网络层和链路层。
1. 应用层:应用服务之间的通信协议规范,如 FTP、DNS 和 HTTP 都在这层。
2. 传输层:传输层对应用层传输两台计算机之间的数据。传输层主要使用以下两种协议:
- 传输控制协议 TCP(数据传输的单位是报文段)
- 用户数据报协议 UDP(数据传输的单位是用户数据报),不保证提供交付的可靠性。
3. 网络层:网络层对传输层提供的数据包进行传送。用来处理网络上流动的数据包,使用无连接的网际协议 IP 和许多种路由选择协议。网络层还有另一个任务就是选择合适的路由。
4. 链路层(数据链路层):硬件上的处理均在链路层的范围内。如:操作系统、硬件设备的驱动、网卡等。
4. TCP/IP 协议族分层有什么优点?
TCP/IP 协议族分层的优点是:
- 改动方便:如果仅使用一个协议,那么当其中的某一部分发生改变的时候,就需要把整体全部替换掉。
- 设计简单:使用分层时候,仅需要替换改变的层的内容,只需要把每层之间的接口部分定义规划好,那么各层内部就可以随意改变,更加灵活自由,在设计上也简单很多。
5. TCP/IP 分层与 OSI 分层对比
TCP/IP 协议族按层次分为以下 4 层:应用层、传输层、网络层和数据链路层。
OSI 则分为 7 层:应用层、表示层、会话层、运输层、网络层、数据链路层和物理层。
对应关系如下:
6. 什么是 TCP/IP 通信传输流?
通过 TCP/IP 协议通信方式,会遵循分层的顺序与对方进行通信
- 发送端的顺序是:应用层 -> 传输层 -> 网络层 -> 链路层;
- 接受端的顺序是:链路层 -> 网络层 -> 传输层 -> 应用层。
7. TCP/IP 协议族中的 IP 协议
IP 网际协议处于网络层,用于传送数据包。它通过 IP 地址和 MAC 地址将数据包传送到指定的位置。
其中 IP 地址指明了分配给节点的地址,可变化;MAC 地址指明了所属网卡的固定地址,不可变化。
IP 之间的通信是依赖于 MAC 地址的,在网络通信的过程中,根据 ARP (一种地址解析协议)协议,通过 IP 反查出对应 MAC 地址,再通过 MAC 地址来搜索中转目标。
8. TCP/IP 协议族中的 TCP 协议是什么?
TCP 协议提供可靠的字节流服务,主要是通过采用三次握手的策略来确保传输数据的准确性的。
用 TCP 协议将数据包发送之后,它会向对方确认是否成功送达。握手过程中使用了 TCP 的标志(flag)——SYN(synchronize)和 ACK(acknowledgement)。
- 发送端 A 发送 SYN 标志的数据包给信息接收方 B。
- B 收到后数据包之后,回传 SYN/ACK 标志的数据包,表示确认信息。
- 发送端 A 再回传一个 ACK 标志的数据包,代表“握手”结束。
- 若在握手过程中某个阶段莫名中断,TCP 协议会再次按照相同顺序发送相同的数据包。
9. 请介绍一下 TCP/IP 协议中的 DNS
DNS 全称为 Domain Name System。
DNS 协议与 HTTP 一样位于应用层,主要负责将域名和 IP 之间的相互解析。
10. IP、TCP、DNS 和 HTTP 的关系
11. URI 和 URL
- URI (统一资源标识符):用字符串标识互联网上的某一资源。
- URL (统一资源定位符):表示网络资源所在的位置。由上可见,URL 是 URI 的一个子集。
12. HTTP 向服务器传递信息的方法
方法名称含义GET(获取资源)请求访问已被 URI 标识的资源。响应返回经服务器解析后的内容POST(传输实体主题)GET 和 POST 都可以传输实体的主题,但一般使用 POST 方法来传输。区别在意 POST 的主要目的并不是获取响应的主体内容。PUT(传输文件)用来传输文件。将文件内容放到请求报文的主题之中,然后放到请求的 URI 中HEAD(获得报文首部)HEAD 方法和 GET 方法一样,但不返回报文主体的部分。用于确认 URI 是否有效及更新资源的时间等。DELETED(删除文件)用来删除文件,与 PUT 方法相反。DELETED 根据请求删除 URI 内指定的资源OPTIONS(询问支持的方法)查询根据请求 URI 指定的资源支持方法TRACE(路径追踪)让 Web 服务器端将之前的请求返回个客户端的方法CONNECT(用隧道协议连接代理)与代理服务器通信时建立隧道,使用 SSL 和 TLS 协议把加密后的通信内容经网络隧道进行传输。
13. 什么是持久连接?为什么要持久连接?
在使用 HTTP 协议建立通信之后,在没有提出要断开连接的时候,TCP 将一直保持连接状态。
持久连接好处是减少了 TCP 连接的重复建立和断开所造成的的额外开销,减轻了服务器端的负载。而且减少重复建立连接的时间可以使 HTTP 请求和相应更早的结束,这样 Web 页面的加载速度也相应提高了。
14. Cookie 的作用是什么?它是怎样工作的?
- Cookie 技术将 Cookie 写入请求信息和响应报文中,以此来控制和管理客户端的状态。
- Cookie 是通过由服务器端发出响应报文中的 SetCookie 的首部字段的信息,告知客户端需要保存 Cookie 的。当客户端再次发送请求的时候,会在请求报文中加入 Cookie 值。服务器端在接收到带有 Cookie 值的请求后,就会去查连接请求的来源,对比服务器存储的记录,然后得到之前的状态信息。
15. 什么是 HTTP 报文?
HTTP 协议交互的信息被称为 HTTP 报文。报文大致可以分为报文首部和报文主体两块,两者由空行(CR+LF)来划分,报文主体可以不要。
报文首部服务器端或者客户端需要处理的请求或响应的内容及属性空行(CR+LF)CR(回车)+ LF(换行)报文主体应被发送的数据(可以不要
1. 客户端的 HTTP 报文被称为请求报文
2. 服务器端的 HTTP 报文为响应报文
由上可知,请求报文和相应报文都是由请求行、状态行、首部字段和其他组成。
16. HTTP 传输数据的方式有哪些?
- HTTP 可以直接按照数据的原貌进行传输,也可以在传输的过程中对数据进行编码来提升传输的速率。但是在提高传输速率的同时,编码操作会占用更多的 CPU 等资源。
- 可以采用压缩传输内容的编码方式提高传送速率。采用将主题编码分割成块,然后进行编码传输的分块传输编码形式,这种操作可以提高用户的使用体验。
注意:通常报文主体等同于实体主体。但是如果在传输的过程中进行编码操作,实体主体的内容将发生变化,会导致它和报文主体产生差异。
17. 怎样发送多种数据的多部分对象集合?
- 在 HTTP 报文中使用多部分对象集合时,需要在首部字段里加上 Contenttype。
- 通过字符串 boundary 来切分各类实体,这些实体是由多部分对象集合指定的。
18. 怎样获取部分内容的范围请求?
可以通过首部字段 Range 来指定资源的 byte 的范围。
1. 1001~2000 字节
?Range:bytes=1001-2000
2. 1001 以后的所有字节
Range:bytes=1001-
3. 从开始到 1000 字节和 2001~5000 的多重范围
?Range:bytes=0-1000,2001-5000
?针对范围请求,响应会返回状态码为 206 的响应报文。而对于多重范围的范围请求,响应会在首部字段 ContentType 标明 multipart/byteranges 后返回响应报文。
19. 什么是内容协商?有哪些类型?
内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为适合的资源。内容协商会以响应资源的语言、字符集、编码方式等作为判断的基准。其内容包含在首部以下字段中:Accept、Accept-Charset、Accept-Encoding、Accept-Language、Content-Language。
内容协商包括:服务器驱动协商、客户端驱动协商和透明协商三种。
- 服务器驱动协商:由服务器端进行内容协商。以请求的首部字段为参考,在服务器端自动处理。但对用户来说,以浏览器发送的信息作为判定的依据,并不一定能筛选出最优内容。
- 客户端缺东协商:?由客户端进行内容协商的方式。用户从浏览器显示的可选项列表中手动选择。还可以利用 JavaScript 脚本在 Web 页面上自动进行上述选择。比如按 OS 的类型或浏览器类型,自行切换成 PC 版页面或手机版页面。
- 透明协商:是服务器驱动和客户端驱动的结合体,是由服务器端和客户端各自进行内容协商的一种方法。
20. 基于 HTTP 的功能追加的协议有哪些?
- 消除 HTTP 瓶颈的 SPDY 协议
- 通过浏览器进行全双工通信的 WebSocket
- 成长了的 HTTP 2.0
- Web 服务器管理文件的 WebDAV
21. 构建 Web 内容的技术有哪些?
- HTML:Web 页面几乎都是由 HTML 写成的。
- 动态 HTML:是指使用客户端脚本语言将静态 HTML 变为动态的 HTML 的技术的总称。例如:客户端脚本语言 JavaScript 和指定于发生动态变化的 HTML 的 DOM 等。
- Web 应用:如通过 Web 功能提供的应用程序;与 Web 服务器及程序协作的 CGI;因 Java 而普及的 Servletv 等。
- 数据发布格式及语言:如可扩展标记语言 XML;发布更新信息的 RSS 和 Atom;JavaScript 衍生的轻量级易用 JSON 等。
22. HTTP 协议无状态指什么?怎么才能将状态保存?
HTTP 协议无状态在一个会话里面,不同的两次请求彼此是不了解。
但是通过 Cookie 或者 Session 可以将状态保存,后续访问可能利用到前面的信息。
23. GET 和 POST 的区别是什么?
- 从服务器获取信息一般使用 GET,想服务器发送信息一般用 POST。
- GET 和 POST 数据提交方式不同,GET 通过在 URL 请求后面增加 filed=value 的封装形式来进行;POST 则利用协议 BODY 来进行数据的封装。
- GET 传输数据量比较小,效率也不高;而 POST 可以传输比较大的数据量。
- GET 不安全,可以被外部看见,造成信息泄露的风险,POST 相对来说安全一些。
24. HTTP 2.0 与 HTTP 1.1 的区别
- HTTP 2.0 没有采用文本格式,采用的是二进制格式。
- HTTP 2.0 采用的是完全多路复用机制,而非有序并阻塞的。
- HTTP 2.0 将报头进行压缩,降低了成本。
- HTTP 2.0 服务器主动将响应“推送”到客户端的缓存里面。
HTTP 状态码详解
1. 什么是 HTTP 状态码?
HTTP 状态码全称:HTTP Status Code。表示服务器在响应超文本传输协议访问的时候返回的状态 3 位数字代码。例如,当客户端向服务端进行 HTTP 请求的时候,服务器会返回一个代码数据来回应请求,这个代码数据就是: HTTP 状态码。
2. 请介绍一下常用的 HTTP 状态码?并解释一下分别表示什么含义
- 200:OK,基于 HTTP 协议的访问在服务端被正常处理并返回。
- 302:临时重定向,表示请求的网页临时移动到其他的 URI。
- 404:表示服务器上无法找到访问的资料员。
- 500:表明服务器端访问响应发生了错误。可能是后台 BUG,也可能是机器故障导致。
3. 状态的主要类别有哪几种?分别表示什么含义?
- 1XX Informational(信息性状态码): 服务器正在处理当前的请求。
- 2XX Success(成功状态码):请求被服务器正确接收,并正确执行。
- 3XX Redirection(重定向状态码):需要再次操作,才能完成整个访问操作。
- 4XX Client Error(客户端错误状态码):客户端的请求出现问题,服务端无法响应(例如,访问不存在的资源)。
- 5XX Server Error(服务器错误状态码):服务器内部处理访问请求的时候出现异常。
HTTP 报文解析
1. HTTP 报文首部包含哪些内容?
HTTP 协议的请求和响应报文中必定包含 HTTP 首部。首部内容为客户端和服务器分别处理请求和响应提供所需要的信息。
在请求中,HTTP 报文由方法、URI、HTTP 版本、HTTP 首部字段等部分构成。
在响应中,HTTP 报文由 HTTP 版本、状态码(数字和原因短语)、HTTP 首部字段 3 部分构成。
2. 介绍一下 HTTP 首部字段,以及构成方式
首部字段的主要作用:给浏览器和服务器提供一些必要信息,如报文主体 SIZE、语言类型、认证方式等内容。它是 HTTP 报文的组成要素之一。
首部字段构成方式:由字段名称和字段值组成,用冒号“:”分隔。例如:Content-type:text/html。首部字段可以有多个值组成。
3. 请介绍一下 HTTP 首部字段的类型有哪几种
首部字段类型总共分为四类。如下所示:
- 通用首部字段(General Header Fields)
- 请求首部字段(Request Header Fields)
- 响应首部字段(Response Header Fields)
- 实体首部字段(Entity Header Fields)
3. HTTP 协议首部字段
通用首部字段
(请求报文与响应报文
都会使用的首部字段)Date创建报文时间Connection连接的管理Cache-Control缓存的控制Transfer-Encoding报文主体的传输编码方式请求首部字段
(请求报文会使用的首部字段)Host请求资源所在服务器Accept可处理的媒体类型Accept-Charset可接收的字符集Accept-Encoding可接受的内容编码Accept-Language可接受的自然语言响应首部字段
(响应报文会使用的首部字段)Accept-Ranges可接受的字节范围Location令客户端重新定向到的 URIServerHTTP 服务器的安装信息实体首部字段
(请求报文与响应报文的实体
部分使用的首部字段)Allow资源可支持的 HTTP 方法Content-Type实体主类的类型Content-Encoding实体主体适用的编码方式Content-Language实体主体的自然语言Content-Length实体主体的的字节数Content-Range实体主体的位置范围,一般用于发出部分请求时使用
HTTPS 的使命
1. HTTP 的缺点及解决方案
缺点:
- 明文形式通信(未进行加密操作),极可能被盗取数据。
- 没有验证访问者的合法身份,会遇到被伪装欺骗可能。
- 报文完整性无法进行验证,所以内容信息会被篡改的可能。
解决方案:
1. 加密处理预防窃听
- 通信加密:HTTP 协议加密机制缺失,但利用 SSL(SecureSocketLayer,安全套接层)或 TLS(TransportLayerSecurity,安全传输层协议)共同作用,加密 HTTP 的传输信息。
- 内容加密:HTTP 协议不提供加密操作,因此 HTTP 协议传输的数据本身加密,把 HTTP 报文里所含的数据进行加密操作。但数据传输的过程中仍有数据被篡改的可能。
2. 使用 SSL 可以验证对方身份。SSL 除了具备加密处理能力,还使用了称为证书的方法,可用于确定通信方。
3. 可以使用 MD5 和 SHA1 等散列值校验的方法,以及用来确认文件的数字签名方法。
非常可惜的是,以上的一些方法仍然存在很大的风险,如果想要有效地保证信息的安全性,则需要使用 HTTPS。
2. 什么是 HTTPS
HTTP + 加密 + 认证 + 完整性保护=HTTPS
1. HTTP 加上加密处理和认证以及完整性保护后即是 HTTPS
2. HTTPS 是身披 SSL 外壳的 HTTP
3. 什么是相互交换密钥的公开密钥加密技术
公开密钥加密处理起来比共享密钥加密方式更为复杂,因此若在通信时使用公开密钥加密方式,效率就很低。
1. 使用公开密钥加密方式,安全地交换在稍后的共享密钥加密中要使用的密钥
2. 确保交换的密钥是安全的前提下,使用共享密钥加密方式进行通信。
4. 请介绍一下 HTTPS 的安全通信机制
- 利用对称秘钥原理,服务器端生成对称秘钥,私钥自己保存,公钥发送到外部。
- 客户端向一个权威的服务器检查证书的合法性,如果合法,客户端生成随机数,这个数字就是通信的秘钥,用公钥加密这段随机数,然后发送到服务器。
- 服务器使用密钥解密获取对称密钥,然后,双方就可以安全通信了。
5. HTTP 与 HTTPS 的区别是什么?
- 安全性质不同:HTTP 是不安全的,而 HTTPS 是安全的。
- URL 开头不同:HTTP 以 http:// 开头,HTTPS 以 https:// 开头。
- 标准端口不同:HTTP 标准端口是 80 ,HTTPS 的标准端口是 443。
- 加密要求不同:HTTP 无需加密,而 HTTPS 对传输的数据进行加密。
- 证书要求不同:HTTP 无需证书,而 HTTPS 需要 SSL 证书。
安全及漏洞全面解析
1. 什么是 SQL 注入?
SQL 注入是一种注入攻击。攻击者通过将破坏性 SQL 代码进行数据库查询,使攻击者能够完全控制数据库资源。
2. 如何防止 SQL 注入攻击?
- 不要使用动态 SQL,使用完整的语句和参数化方式来查询。
- 合理设置数据库的权限。
- 禁止直接向用户显示数据库错误。
- 对访问数据库的 Web 服务,使用 Web 应用程序防火墙。
3. 什么是 XSS?
XSS 全称:跨站脚本攻击(Cross Site Scripting)。是将前端脚本代码插入 Web 页面中,当用户浏览页面时,会执行嵌套在 Web 页面里面的脚本代码,从而达到攻击用户的目的。
XSS 类型包括:
- 存储型 XSS:存入了数据库,再取出来时导致的 XSS
- 反射型 XSS:在网址 URL 后输入 XSS 代码,如 <script> alert(1)</script>,然后访问时导致 HTML 页面加载这段代码即可达到弹框效果。
4. 如何防止 XSS 漏洞
- 在信息提交或者 url 参数传递前,对需要的参数进行过滤
- 过滤用户输入,检查用户输入的内容中是否有非法内容。如 <>(尖括号)、""(引号)、''(单引号)
5. 请介绍一下 CSRF 是什么?
CSRF:Cross-site request forgery 跨站请求伪造。
cookie 是网站利用来识别用户的,用户成功登陆之后浏览器就会得到一个 cookie 来标识其身份,在不关闭浏览器或者退出登录,以后访问这个网站会带上这个 cookie。
- 登录某一受信任网站 X,并生成本地 Cookie。
- 如果此时用户也访问了网站 B,访问者在网站 A 的数据就会被 B 使用用户 cookie 假冒更新。
6. CSRF 怎么防御?
- 验证码与二次验证
- 对请求的 referer 进行检测
- 添加随机 token 校验
- 本样式对齐文本text-align属性用于指定文本块的对齐方式,可选值包括: 1)start:内容对齐开始边界,默认; 2)end:内容对齐结束边界; 3)left:内容左对齐; 4)right:内容右对齐; 5)center:内容居中对齐; 6)justify:内容两端对齐。当text-align属性使用了justify值时,可以使用text-justify属性指定文本添加空白的方式,这个属性...
- 了解了包的概念,就可以系统的介绍Java中的访问控制级别。在Java中,针对类、成员方法和属性提供了四种访问级别,分别是private、default、protected和public。 权限访问修饰符(权限从大到小依次往右排) public(公共) protected(受保护) default(缺省) private(私有) 同一个类 √ √...
- Rust 提供了代码封装的机制。可以通过crate (等同于Java中的package)创建相对独立的module模块,模块中封装了可以重复使用的功能函数。当创建了自己的 lib 库或者要使用第三方的库的时候(这些库就是一些事先写好的crate)需要将这些库中的module 模块引用到当前的环境中。Rust提供了以下几种引用方式:一、使用 extern crate在使用这些Module的文件中,通过...
- 填空题: 他______牺牲生命_______出卖组织? 据数据统计,不同年代的同学回复的最多的是….. 60后,他宁可牺牲生命,也不出卖组织。 70后,他害怕牺牲生命,所以出卖组织。 80后,他与其牺牲生命,不如出卖组织。 90后,他即使牺牲生命,也要出卖组织。 00后,他白白牺牲了生命,忘了出卖组织。 上边的案例,引发了大家对”自我与企业关系的思考”. 能力与欲望...
- 历届试题 国王的烦恼 时间限制:1.0s 内存限制:256.0MB 问题描述 C国由n个小岛组成,为了方便小岛之间联络,C国在小岛间建立了m座大桥,每座大桥连接两座小岛。两个小岛间可能存在多座桥连接。然而,由于海水冲刷,有一些大桥面临着不能使用的危险。 如果两个小岛间的所有大桥都不能使用,则这两座小岛就不能直接到达了。然而,只要这两座...
- go test命令参数问题在使用go test对go代码进行单元测试的时候,遇到关于命令参数的问题,google了一下,没有找到很好的说明,其实就是一些细节而已。问题是这样的,在进行单元测试的时候,我希望输入一些命令行参数来控制程序的运行。 参考go官方文档,只需要在go test后面加上-args和参数就可以了 例如 go test -args -classpath E:\testcase...
- 阿里云OSS-使用经验总结,存储,账号-权限,分页,缩略图,账号切换最近项目中,需要使用云存储,最后选择了阿里云-对象存储服务OSS。总的来说,比较简单,但是仍然遇到了几个问题,需要总结下。1.OSS总的使用介绍 https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/...
- WEB应用图片的格式,以及各自的特点和优化(一) by FungLeo前言12年前我入行三天.用table布局做了一个非常粗糙的网页.我说了一句话,”网页就是表格加文字加图片,图片分两种,插入图片和背景图片”.这句话在今天看来,当然是一个笑话.但是当时我说出这句话的时候,当时的那些前辈都非常认可我的总结,并且认为我很有从事网络发展的潜力啊.哎,要不是他们的鼓励,说不定我早转行了……扯远了.说回正题,...
- 1. 单表数据的导出针对单表数据的导出操作,MongoDB 提供了 mongoexport 命令。mongoexport 既可以将数据导出为 CSV 格式的文件,也可以导出 JSON 格式的文件。这两者之间的区别是:JSON 是 mongoexport 默认的导出格式,不需要指定,而要导出 CSV 格式的话需要明确指定;导出 CSV 格式必须显式指定各属性名,而导出 JSON 格式不需要。由此可见...
- 商业智能对于中小企业来说,由于其高昂的费用和运行维护技术水平要求高,往往难以承受,商业智能SAAS系统平台+模块的创新模式的出现能帮助中小企业走上商业智能之路。...
- stack.sh给出了一个非常好的例子,关于学习openstack创建 1.检查devstack文件,检查bash4.2以上,检查用户,不能是root2.准备环境,导入函数3.检查local.conf和localrc是否都存在,如果存在使用localrc4.检查是否已经运行devstack5.代理设置和禁用无效服务6.配置sudo7.配置distro库8.配置目标目录,创建目标目录9.配置主机、日...
- 博客地址:http://blog.csdn.net/FoxDave本文介绍如何利用SharePoint客户端对象模型(.NET)逐级获取Office 365网站中List的内容,仅仅是示例,没有讲究太多东西。代码如下:ClientContext ctx=new ClientContext(""); ctx.Credentials=new SharePointOn...
- 题外话Atom,风风雨雨走过一年多了.,目前最新版本是V1.7.0 .社区还是相当活跃;体验也改善了很多;但是性能上还是欠缺;今天我再来介绍自己常用的一款插件git-control插件介绍 官方介绍页面 作者: jacogr Github地址 我的介绍 就是命令行的GUI版本,,有些类似sourcetree,但是不如它强大,日用满足使用在编辑器下加载git版本的工作目录;工具默认启用快捷键...
- 安装devstack后,如果没有设置参数,执行openstack命令是不成功的。1.登录到horizon页面,使用admin登入,进入project->compute-> Access&Security -> API Access,记录下Service Endpoint。或选择download OpenStack RC File按钮,下载demo-openrc.sh文件2.将demo-openrc...
- 对于这样的问题,看到第一眼就是暴力破解,所以也就递归找到所有情况,再筛选出合格的小明被劫持到X赌城,被迫与其他3人玩牌。 一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。 这时,小明脑子里突然冒出一个问题: 如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?思路: 首先无论怎么取,手牌为13张的时候结束.也就是递归结束标...
- 网红和粉丝经济,是最近几年流行起来的概念。 截至目前,有一些初步的认识,整理成文。 粉丝,最早是明星的跟随者比较多。 我的理解是,对于一个人物、动物、运动等,有着共同的兴趣,从而建立多个人和一个人之间的关系,比如粉丝和明星。 粉丝经济,大获成功的标志是,雷军和小米科技。在创业早期,就把粉丝经济和社交传播结合在一起,低成本地实现了全网营销。从此以后,各大手机厂商等很多领域的企业,都...
- 关于android端apk退出方式的设计,现在大体只有下面几种:1,有退出和取消按钮;2,一定时间内两次返回为退出;3,一次返回就是退出。首先可以看到这两个用按钮的,退出都在左侧,设计者肯定没有看过十年前雅虎研究院出的web端设计指导,下一步的操作一定是在右侧,而返回上一步的操作是在左侧。但是到了移动端应该考虑用户是左手还是右手使用,也就是说,如果是左手使用,这个位置设计没有问题,反之就不用说了。...
- 写在最前:本文主要描述在网站的不同的并发访问量级下,Mysql架构的演变可扩展性架构的可扩展性往往和并发是息息相关,没有并发的增长,也就没有必要做高可扩展性的架构,这里对可扩展性进行简单介绍一下,常用的扩展手段有以下两种Scale-up : 纵向扩展,通过替换为更好的机器和资源来实现伸缩,提升服务能力Scale-out : 横向扩展, 通过加节点(机器)来实现伸缩,提升服务能力对于互联网的高并...
- angular.js中,指令是最基础的也是最重要的工具之一。angular.js指令指的是以ng为前缀的HTML属性。在之前的ng-app、ng-model等,都属于指令。 angular.js中的基本指令包括如下内容: · 1.ng-app/ng-model ng-app指令用于声明angular,js的作用范围,ng-model用于声明模型。这些在之前都已经进行过详细介绍。 2.ng-...
- java编码 当你的字节序列是某种编码时,这个时候想把字节序列变成 字符串,也需要用这种编码方式,否则会出现乱码 文本文件就是字节序列 可以是任意编码的序列,如果在中文机器上直接创建文本文件,那么该文本文件 只认识ANSI编码 案例: public class Bianma { public static void main(Strin...
- 调试JDK源码-一步一步看HashMap怎么Hash和扩容调试JDK源码-ConcurrentHashMap实现原理调试JDK源码-HashSet实现原理调试JDK源码-调试JDK源码-Hashtable实现原理以及线程安全的原因 ConcurrentHashMap线程安全的总结是我从源码分析出来的:ConcurrentHashMap所谓线程安全是哈希冲突的时候新增的节点是线程安全的,而 Conc...
- 对于后台系统的搜索进行UI自动化,主要是比对页面查询结果是否与预期一致(即数据库查询结果) search.py# -*- coding:utf8 -*- import HTMLTestRunner import time import unittest import public from selenium import webdriver class Search(unittest.TestCa...
- ajax 的全称是Asynchronous(异步的意思) JavaScript and XML,是一种创建交互式网页应用的网页开发技术 ajax技术的流行得益于google的大力推广,正是由于google产品对ajax技术的广泛应用,使得ajax流行起来了。 Ajax其核心有JavaScript、XMLHTTPRequest、DOM对象组成,通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用JavaScript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请...
- 一、SpringMVChttp://blog.csdn.net/evankaka/article/details/45501811Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简...
- 概念: 优化策略:字段选择性 选择性较低索引 可能带来的性能问题索引选择性=索引列唯一值/表记录数;选择性越高索引检索价值越高,消耗系统资源越少;选择性越低索引检索价值越低,消耗系统资源越多;查询条件含有多个字段时,不要在选择性很低字段上创建索引可通过创建组合索引来增强低字段选择性和避免选择性很低字段创建索引带来副作用;尽量减少possible_keys,正确索引会提高sql查询速度,过多索引...
- 一. 什么是Spark? Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需...
- 相比之前的增改查,删除就显得简单的多了。 这里的request的type为delete,删除成功的status为204,404则是要删除的记录不存在 var id='BAD90A95-7FEA-E511-9414-ADA183AB6249'; $.ajax({ async: false, type: "DELETE ", co...
- 关于JPush极光推送是国内的服务厂商提供的一站式push服务(同时支持iOS、android),后面也加入了即时通讯的能力供app使用。致力于打造简单、可靠、价格有竞争力的服务(简单功能全免费,高级版才收费),让应用开发商可以聚焦业务开发,push相关的技术实现全部通过极光推送来解决,仅需调用极光推送的api即可。正因为如此,开发者小伙伴们对其的评价相当不错。笔者的app新增了从服务器往移动客户端...
- Mapreduce初析 Mapreduce是一个计算框架,既然是做计算的框架,那么表现形式就是有个输入(input),mapreduce操作这个输入(input),通过本身定义好的计算模型,得到一个输出(output),这个输出就是我们所需要的结果。 重点就是这个计算模型的运行规则。在运行一个mapreduce计算任务时候,任务过程被分为两个阶段:map阶段...
- Jquery对象常用的方法:$(”p”).addClass(css中定义的样式类型); 给某个元素添加样式 $(”img”).attr({src:”test.jpg”,alt:”test Image”}); 给某个元素添加属性/值,参数是map $(”img”).attr(”src”,”test.jpg”); 给某个元素添加属性/值 $(”img”).attr(”title”, function(...