Bunny's Code Burrow

this is a JS world


  • Home

  • About

  • Archives

  • Tags

  • Search

heap and stack

Posted on 2020-03-02

Heap and Stack

Stack栈 是用来静态分配内存的。
Heap堆是动态分配内存的。都是计算机内存中。

栈的分配是在程序编译的时候完成的,直接存在内存中,接触内存很快。栈是后进先出的顺序,最后被申请的快是最先被释放,这样很容易跟踪到栈,释放栈的过程简单到仅仅是移动下指针就能完成。
堆的分配是在程序运行时完成,分配速度较为缓慢,但是堆的可用空间非常多大。堆中的元素相互之间没有关联,各自都可以被任何时候随机访问。我们可以任何时候申请和是否一块内存,这样会使得我们很难随时随地跟踪到堆中的某个位置被分配了还是被释放了。

程序运行的场所是内存,堆和栈是进程的虚拟内存中的两个部分区域。

当程序被执行时,程序代码,创建的变量,常量都会被压入栈空间里,栈是程序的执行区域。栈的内存地址是连续的且被一一记录,比如int var =1 ,可以通过var这个变量来访问变量的内容。这里的var 存放在栈,地址已经被编译器计算和了。更直观的感受是数组,数组的元素在栈里是连续排放的,相邻的两个元素地址相差1.

而堆是不同于栈的另一部分区域。系统会给每个程序分配一个部分。
堆不属于程序,是独立的,公用的。

有栈,为什么要用堆?

栈里面的东西是有生命周期的,变量作用域。
而堆里面的东西是独立于程序,会一直存在。

每一个线程有一个私有资源就是栈,函数调用的时候,把返回地址和参数入栈,被调函数执行时把参数取出来,赋予形参。被调函数执行完之后要把返回地址取出来。栈是自动实现的,不需要程序员干预。

CSS pattern

Posted on 2020-02-28

通用css样式模板

模板一

@charset "utf-8";
/* ------------------------------------全局定义---------------------------------------- */
/* 将具有默认margin和padding的标记置零,所有标记的margin、padding都在使用时具体定义 */
*{ margin:0;padding:0;}

/* 修正IE5.x和IE6的斜体溢出bug */
* html body{ overflow:visible;}
* html iframe, * html frame{ overflow:auto;}
* html frameset{ overflow:hidden;}

/* 常用标签,基本标签默认样式取消,HTML标签,取消基本标签默认样式,防止不同浏览器显示效果不同,text-align:center; 解决不同浏览器居中问题 */
body{ color:#000; background:#FFF; font:12px/22px Verdana,Arial,sans-serif,"Times New Roman",宋体; text-align:center;}
body,ul,ol,li,p,h1,h2,h3,h4,h5,h6,form,fieldset,table,td,img,div,tr{ margin:0; padding:0;}
input,select{ font-size:12px; vertical-align:middle;}
Read more »

prototype

Posted on 2020-02-28

Prototype

class
-constructor 属性和方法
class名称以大写字母开头

Read more »

xss attack

Posted on 2020-02-26

Cross Site Script

页面被注入恶意代码
-

  • 通常页面中包含的用户输入内容都在固定的容器或属性内,以文本的形式展示
  • 攻击者利用这些页面的用户输入片段拼接特殊格式的字符串,突破原有位置的限制
  • 攻击者通过在目标网站上注入脚本,使之在用户的浏览器上运行,从而引发潜在风险。
  • 通过HTML 转义可以防止xss攻击(并没有如此easy),因为不仅仅是特殊字符,就是JavaScript的字符串如果出现在特定的位置也会引发xss攻击。
  • 对于链接跳转,如 <a href=”xxx” 或者localtion.href=”xxx”.要检验其内容,禁止以JavaScript:开头的链接,和其他非法的scheme

    allowSchemes =["http","https"];
    valid = isValid(getParameter("redirect_to"),allowSchemes);
    if (valid){
        <a href="<%= escapeHTML(getParameter("redirect_to"))%>">
            跳转...
        </a>
        }else{
            <a href="/404">
            </a>
        }
    
  • 当JSON中包含U+2020或者U+2020这两个字符时,不能作为Javascript的字面量使用,否则会抛出语法错误

  • 当JSON中包含字符</script>时,当前的script标签将会被闭合,后面的字符串内容浏览器会按照HTML进行解析,通过增加下一个<script>标签等方法完成注入。

    Read more »

typeof

Posted on 2020-02-25

Typeof

变量类型和计算
-
题目:

-typeof 能判断哪些类型

-何时使用=== 和==

-值类型和引用类型的区别

-手写深拷贝

知识点:

  • 值类型和引用类型
let a = 100
let b = a
a = 200
console.log(b)

//引用类型

let a = {age:20}
let b = a 
b.age =21
console.log(a.age)

对于对象,是a指向了内存地址1, 内存地址1是{age:20},接下来也是给b指向了内存地址1,所以当b.age更改为21的时候,a.age也会更改

Read more »

data format

Posted on 2020-02-21

Data format

JS的数据格式化

Read more »

csssprite

Posted on 2020-02-20

CSS Sprite

How to realise CSS Sprite
为啥要使用Sprite,减少HTTP请求数量,加速内容显示,因为每请求一次,就会和服务器建立一次链接,而建立链接是需要额外的时间。

Read more »

lucky roll

Posted on 2020-02-20

Lucky roll

请写一个抽奖程序 ,已有参与抽奖的员工工号组成的数组 staffIds。
规则1:同一员工不可重复中奖
规则2:每轮执行抽奖程序,入参是本轮要抽取的中奖人数n,将中奖人工号打印出来

Read more »

set

Posted on 2020-02-19

Set

ES6提供的一种新的数据结构Set。和数组类似但是成员的值都是唯一不重复的,本身是一个构造函数,用来生成Set 数据结构。

const s = new Set();
[2,3,4,5,6,7,2,2].forEach(x=>s.add(x));
for (let i of s){
    console.log(i);
}
//2,3,4,5,6,7

通过add()方法向Set结构加入成员,结果表明Set结构不会添加重复值。

Read more »

how to solve hover problem

Posted on 2020-02-18

How to solve hover problem


The hover banner used to be as above.
The reason was due to the height of those elements.
To solve it, just go to /Themes/CustomMicroAnalytix/View/Catalog, modify the TopMenu.cshmtl as below

The key code here is to amend

if (subCategoryCounter <= 3) 

TO

if (subCategoryCounter <= 2)
Read more »
1…567…16
Jenny Zeng

Jenny Zeng

Loving code ,especially javascript, React Native

155 posts
37 tags
GitHub Linkedin
© 2020 Jenny Zeng
Powered by Hexo
Theme - NexT.Pisces