随笔分类 - 基础概念
摘要:1.安全 之前做的一个在校项目,没有用 https 之前是明文传输账号密码的,被校内安全检测部门责令整改...... 用了 https 也可能因为用户操作不慎,被中间人攻击,这时候就算是 账号密码被加密,但是加密用的公钥是攻击者的,私钥也在攻击者那里 所以也会被破解。 需要和前端协商好加密的方式 和
阅读全文
摘要:继上一篇的 IO 多路复用之后,我们已经从操作系统的层面上,解决了 IO 不必要等待的问题 不用再写类似的代码了: while (true) { if (socket.isReadable) { doRead(sockert); } sleep(); } 本质上是驱动程序通过中断通知我们,有数据来到
阅读全文
摘要:来年代的回收可分为 标记-压缩回收 和 标记清理回收 前者会将存活对象在对象头中打标,回收的时候,把被打标的对象复制到一块,使得存活对象在内存上是连续分布的。 需要注意的是,这里说的连续分布,不是物理意义上的,因为JVM向操作系统申请老年代和年轻代这样的大块内存时,使用的是mmap系统调用,操作系统
阅读全文
摘要:相关链接 : 递归和栈的关系 以树的遍历为例 先序遍历: 伪代码 void preView(Node node){ print(node.value); // 1 if(node.left != null){ preView(node.left); // 2 } if(node.right != n
阅读全文
摘要:说起进制间的转换,可能除留取余法(我自己编的名字,没找到原来叫什么名字...)是用的最普遍的了,但是我们是否想过,使用得最普遍的方法的原理到底是什么呢? 就像下面这张图的进制转换,我们知道十进制1348转八进制,只要把他一直除8直至商为0,并且把最后的余数倒过来就是我们想要的结果了。 但为什么不去怀
阅读全文
摘要:上一篇 : 栈论 : 递归与栈式访问,如何用栈实现所有递归操作(幼儿园题目篇,题目2) 题目3 这一题,乍一看和之前题目间明显的区别是什么呢?没错,聪明的你可能已经想到了,子函数要和父函数通信了,子函数需要告诉父函数a或b在不在自己这里,自己有没有找到a或b。 如果我们把二叉树的每个节点都抽象成一个
阅读全文
摘要:上一篇 : 栈论 : 递归与栈式访问,如何用栈实现所有递归操作(幼儿园题目篇) 题目2 题目2和题目1最大的不同点是访问顺序变了。 我们对应的伪代码应该如下: 1,2,3表示的是先递归读取左子树,再是右子树,最后读取自己 void postOrderRead(BiTree tree){ if(tre
阅读全文
摘要:重大错误说明 : 栈顶的指针始终是指向最后一个入栈元素的位置的,不是最后一个入栈元素的位置上面!请读者留意 (PS : 后来又看了一下,好像也不是什么大问题...) 上一篇 : 栈论 : 递归与栈式访问,如何用栈实现所有递归操作(基础知识篇) 2.函数调用底层篇(了解递归调用的硬件实现) 一开始,m
阅读全文
摘要:1.基础知识(了解栈结构) 先回顾一下关于栈的最简单知识; 本文主要涉及线性栈假如我们不考虑栈底,栈底是固定不动的,只考虑栈顶,那么栈就像一只放在桌子上的空杯,杯底固定贴在桌子上。而如果我们往这个杯子里放方糖,先放进去的方糖总是被后放进去的方糖压在下面,也就是说要先取出后放进去的方糖才能取出先放进去
阅读全文
摘要:长文预警,可以先上个厕所,然后在桌子上放杯白开,静下心来看。 虽然文章长,但看完文章相信会为聪明得你带来不少收获。 重大错误说明 : 栈顶的指针始终是指向最后一个入栈元素的位置的,而不是最后一个入栈元素的位置上面!请读者留意(PS : 后来又看了一下,好像也不是什么大问题...) 1.基础知识 先回
阅读全文