JAVA中equals,== 和 hashcode 的区别
(一) == java中数据类型分为两类:(1)基本数据类型:byte,char,short,int,float,double,long,boolean。当比较基本数据类型的时候用 == 比较的是他们的值。(2)引用类型(类,数组,接口):当用等号比较这三种类型的时候比较的是内存中存放的地址。 对象是存放在堆中的,栈中存放的是对象的引用地址,所以用 == 比较时比较的时栈中存放的值。...
java内存分析详解
java虚拟机的内存可以分为三个区域:栈stack,堆heap,方法区method area(方法区也在堆里)(一)栈的特点: (1)栈描述的是方法执行的内存模型。每个方法被调用都会创建一个栈帧(存储局部变量,操作数,方法出口等) (2)JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数,局部变量等) (3)栈属于县城私有,不能实现线程间的共享 (4)栈的存储特性是...
shiro学习笔记(一)
本节主要对shiro进行介绍,然后实现一个helloworld实例。shiro介绍:Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。三个核心组件:Subject, SecurityManager 和 Realms. Su...
ES6学习笔记12 Promise
Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。
所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。
Promise对象具有两个特点:
(1)对象的状态不受外界影响。其具有三个状态:Pending(进行中)、Fulfilled...
ES6学习笔记13 Iterator 和 for...of 循环
Iterator接口简介
遍历器(Iterator)是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署 Iterator 接口,就可以完成遍历操作(即依次处理该数据结构的所有成员)。遍历器接口可供for...of使用,循环遍历某种数据结构
Iterator 的遍历过程:
(1)创建一个指针对象,指向当前数据结构的起始位置。也就是说,遍历器对象本质上,就是一个指针对象。
...
ES6学习笔记14 Generator 函数
简介
Generator 函数有多种理解角度。语法上,首先可以把它理解成,Generator 函数是一个状态机,封装了多个内部状态。
执行 Generator 函数会返回一个遍历器对象,也就是说,Generator 函数除了状态机,还是一个遍历器对象生成函数。返回的遍历器对象,可以依次遍历 Generator 函数内部的每一个状态。
形式上,Generator 函数是一个普通函数,但是有两个...
ES6学习笔记15 Generator 函数的异步应用
异步
所谓”异步”,简单说就是一个任务不是连续完成的,可以理解成该任务被人为分成两段,先执行第一段,然后转而执行其他任务,等做好了准备,再回过头执行第二段。
回调函数
JavaScript 语言对异步编程的实现,就是回调函数。所谓回调函数,就是把任务的第二段单独写在一个函数里面,等到重新执行这个任务的时候,就直接调用这个函数。回调函数的英语名字callback,直译过来就是”重新调用”。...
郝夫曼(Huffman)树及其应用
1. 基本概念
路径长度:树中一个结点到另一个结点路径上的分支数目。
树的路径长度:从树根到每一结点的路径长度之和。
带权路径长度:结点到树根之间的路径长度与结点上权的乘积。
树的带权路径长度(WPL):树中所有叶子结点的带权路径长度之和。
郝夫曼树(最优二叉树):对于一棵有n个叶子结点的二叉树,带权路径长度最小的二叉树。
第一棵树 WPL=7*2+5*2+2*2+4*2=36
二维数组中的查找(JS实现)
题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路
数组是有序的,那么我们可以先找到正确的行,先将目标和数组左下角的数比较,若目标较小,则上移一行,直至找到正确行。之后,再依次左移进行比较。
function Find(target,...
windows平台下weex项目Android打包生成apk流程
安装 weex-toolkit
我们使用weex-toolkit进行weex项目的打包,直接全局安装,如果出现权限错误,则加上sudo命令
npm install -g weex-toolkit
网上有人说使用 cnpm 淘宝镜像安装后,weex有问题。我自己使用后安装也失败了,最后还是卸载了重新用 npm 安装
安装完成后在命令行输入weex,若出现各种命令选项介绍,则安装成功
可以参...
二分查找、插值查找、斐波那契查找
1 概念
在有序表中,取中间记录作为比较对象,将其与给定值相比较,若其等于给定值,则查找成功;若其小于给定值,则在中间记录的右半区继续查找;若其大于给定值,则在中间记录的左半区继续查找。不断重复以上过程,直到查找成功或无匹配记录。
使用该查找方法的前提条件在于,线性表中的数据必须有序,且必须采用顺序存储的方式。
2 代码
var array = [1,2,3,4,5,6,7,8,9...
阿里面试题 树的深度优先遍历
前几天内推阿里的前端,自己本来就是菜鸟,面试官让做一道编程题,20分钟。我看到编程题,树的深度优先遍历,这名字让我想到了图的深度优先遍历,心想完了,完了,图的算法我根本不熟悉啊,于是心态就崩了,最后面试也失败了。
后来自己静下心来看这道题,发现并不难,题目如下:
//请使用 JavaScript 编写一个树的深度优先遍历函数(节点最深的最先访问到,依次类推),满足以下测试用例:
// 假...
重建二叉树(JS实现)
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
/* function TreeNode(x) {
this.val = x;
this.left = null;
this.right...
C++动态库的制作和调用
1、dll的有点
代码复用是提高软件开发效率的重要途径。一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用。比较常见的例子是各种应用程序框架,ATL、MFC等,它们都以源代码的形式发布。由于这种复用是“源码级别”的,源代码完全暴露给了程序员,因而称之为“白盒复用”。“白盒复用”的缺点比较多,总结起来有4点。
暴露了源代码;多份拷贝,造成存储浪费;
容...
用两个栈实现队列(JS实现)
题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型
思路
假设两个栈分别为 stack1 和 stack2,将stack1用于入队操作,将stack2用于出队操作。当stack2为空时,将stack1的元素弹出并推入stack2中。每次出队操作,就是对stack2的弹出操作。
var stack1=[];
var stack2=[];
f...
cookie 购物车
数据应该是后台传来,在这我是用数组模拟的,根据数组长度生成对应的数据,代码会用到封装好的cookie,我把cookie上传到资源里了,需要的可以下
商品页代码:(这些代码是写在script标签内的)
//数组中存储的数据,图片路径根据自己的修改即可
var data = [{
"id":10001,
"title":"蒙牛&quot
史上最简单的无缝衔接轮播图
网上有大量关于使用原生js编写轮播图的例子,不得不说,他们的文章很棒,但是我发现一个缺点,就是他们的轮播图组件太过于完整,添加了很多按钮功能,代码量较大。掩盖了轮播图的最基本也是最重要的实现原理,很容易让新手摸不着头脑。
这篇文章的目的就是想用最少的代码,来讲解轮播图的实现原理,实现最基本的功能。等你学会了轮播图的实现后,至于之后怎么丰富轮播图,就是小菜一碟了
效果
思路
将图...
今日推荐
周排行