从《编程之美》中的一道面试题谈谈位操作

[TOC] 我们知道在计算机内部数据都是使用二进制表示的,而对于计算机来说,进行基于二进制的位操作,效率要比进行除法、取余等操作高很多。最常见的对代码的优化就包含将乘除 2 的幂操作改为左右移位操作,很多时候编译器也会对代码自动执行这个优化。 我第一次在算法题的代码里见到位操作应该是在高二的时候,某个晚自习不想学习然后跑到机房去乱翻别人的博客发现这个,顿时就感觉如沐春风出神入化,所以一直印象挺深刻的。这个学期开学后不久在图书馆发现了《编程之美》这本书,虽然里面的好多内容都看不懂,其中有一道题感觉还蛮有趣的,就想稍微整理一下有关的一些 Naïve 的位操作。 题目是这样的: 2.1 求二进制数中 »

关于同源策略与跨域问题

同源策略是现代浏览器安全里一个非常重要的机制,它通过限制客户端脚本读写不同源网站资源的权限来保护用户的信息安全。但是随着应用的复杂程度越来越高以及开发者的需求逐渐增多,很多时候又需要通过数据的跨域传输实现一些功能。 常用的跨域实现方式有 JSONP、CORS 或者服务器代理等。JSONP 依靠的是一些特殊 HTML 标签如 <img>、<script>、<link> 等可以加载非同源资源的特性,毕竟很多时候外码需要依靠单独的 CDN 服务器来减少对这些静态资源的请求时间,而 »

班门弄斧之谈谈 Web 密码安全

[TOC] 起因 去年暑假在整理一个辣鸡项目的代码的时候,思考到用户密码存储相关的问题,然后也去找了点资料。我当时最开始用的是 SHA256 算法生成哈希值,然后更新的时候就强化了一下关于密码储存和验证的模块。后来其实也一直想写这篇文章出来,因为我发现很多不管是用户还是开发者都不太注重密码安全这个问题,甚至还有在数据库里明文存密码的。刚好在写完了挖坑不到一半停下的 百步梯技术部 2017 级 Web 后端进阶 之后,也把这篇文章的坑填上。 传输安全 我们先来看看用户密码从在输入框输入到写入数据库以及后续的验证操作会经过哪些阶段。 注册时的流程当然是前端把数据传送给服务端,然后服务端接收后进行一些处理写入数据库。验证时取出这个处理后的值,然后处理刚刚的验证请求发来的密码, »

百步梯技术部 2017 级 Web 后端进阶

[TOC] 写在前面 这篇文章是面向百步梯技术部 2017 级后端组的同学们的,结合目前大家的学习进度以及时间安排,并参考去年同期的我们接下来所需要的知识储备,整理出下面这些内容。鉴于大家现在也没有上手使用后端框架,写这篇文章的时候就完全没有考虑框架相关的内容了,比如配置等方面的东西如果是用框架的话这里就没有必要讲了。 文章的大部分都是关于后端安全的,并且由于主要偏向的是安全意识这块的内容,就没有给出太多实际的代码,只是希望大家能了解在后端的开发过程中需要注意哪些问题,在接下来的锻炼中我相信大家也会更深刻地理解重视这些问题的意义和作用。 虽然标题是“进阶”,但实际上也只是相对“入门”而言在难度方面有一小部分提高,距离真正的进阶其实还有挺长的路,不过不要太担心啦 2333,踏踏实实走下去才是坠重要的。以及, »

整理和分享一些数据结构作业用到的 LaTeX 排版技巧

[TOC] Background 上个学期修了数据结构课程,作业要求是手写拍照或者电子版都行,最后上传到教学在线,然后呢我看了看感觉好像可以顺便用来锻炼 LaTeX 的样子,于是就一直用它来完成书面作业了。过程中碰到蛮多有意思的东西,特别是到后期对一些数据结构的描述和图形绘制,现在一起整理分享一下。所有的代码和对应生成的 PDF 文件都放在了 GitHub 上。 格式约定 除了最开始的 封面 部分,文中的区块 LaTeX 代码都是截取的片段,对于这些代码片段,会在开头以注释代码( »