自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

txx_laughing的博客

你看到的永远只是天空的一角

  • 博客(35)
  • 收藏
  • 关注

原创 JS内存管理

内存分配32位操作系统给V8执行引擎分配的内存空间是700Mb;64位操作系统给V8执行引擎分配的内存空间是1.4GbJS把内存空间分为栈,堆和池(也叫栈中)栈(stack)主要用于存储JS中的基本数据类型,包括Boolean、Number、String、undefined、null,以及引用类型的指针。栈是一个线性排列的内存空间,存储的内容都是空间大小已知或者有有范围上限的,如基本类型的值、堆内存空间块的起始地址等,算作一种简单存储。特点:内存空间由系统自动分配和自动释放;线性存

2020-05-22 16:19:39 209

原创 H5移动端适配方案

在讨论适配方案之前,先熟悉几个概念:设备像素/物理像素:设备实际物理像素点,是显示设备中一个最微小的物理部件,每个像素可以根据操作系统设置自己的颜色和亮度。任何设备的物理像素的数量都是固定的。例如(iphone6 750 * 1337) (iphone6plus 1960 * 1080)。注意:设备像素不等于CSS像素像素密度:屏幕上每英寸可以显示的像素点的数量,单位是PPI屏幕分...

2020-04-21 14:24:29 2111

原创 React diff 算法 & Virtual DOM

将Virtual DOM(虚拟Dom)树转换成Actual DOM(真实Dom)树的最少操作的过程,叫作调和。diff算法是调和的具体实现,将O(n^3)复杂度 转化为 O(n)复杂度。diff算法原则:分层同级比较,不跨层比较;相同的组件生成的DOM结构类似;分组内的同级节点通过唯一的id进行区分(key)不同类型节点比较逐层比较,不同类型节点直接替换,组件经历unmount,m...

2020-03-26 13:54:47 218

原创 npm / cnpm / yarn

npm官网[https://www.npmjs.com/]常用命令## 1,初始化npm包$ npm init## 2,安装node依赖$ npm install//简写:npm i## 3,安装插件$ npm install 包名@版本号 [-g/--save/--dev/--save-dev]//-g表示全局安装,默认安装在当前目录//--save表示安装在生产环境(...

2020-03-17 09:37:01 204

原创 快速搭建node服务

Express搭建web服务器安装express和express应用生成器$ mkdir webServer$ cd webServer$ cnpm install express --save$ cnpm install express-generator -g初始化项目$ express -e server//-e 表示采用ejs模板引擎安装依赖并启动服务$...

2020-03-17 09:35:17 378

原创 axios / fetch / ajax

ajax传统 Ajax 指的是 XMLHttpRequest(XHR), 最早出现的发送后端请求技术,隶属于原始js中,核心使用XMLHttpRequest对象,多个请求之间如果有先后关系的话,就会出现回调地狱。最常用的是jquery的ajax api,对原生XHR请求的封装,添加了对JSONP的支持。$.ajax({ type: 'POST', url: url, data...

2020-03-17 09:33:30 139

转载 jQuery的defer对象

jQuery的deferred对象详解一、什么是deferred对象?开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组),它们都不是立即能得到结果的。通常的做法是,为它们指定回调函数(callback)。即事先规定,一旦它们运行结束,应该调用哪些函数。但是,在回调函数方面,jQuery的功

2017-11-11 17:12:14 1004

原创 JavaScript 匿名函数自调

我们知道一个HTML文件在被加载的时候是从根标签html依次往下的,在遇到link,script等标签引入的外部资源时,下载外部资源,并执行外部资源。在js中,表达式会被立即执行,也就是说,不管是引入的外部js文件还是嵌入在html文件中的js脚本,其中的表达式都会被立即执行。 函数名是一个指向函数的指针。在JavaScript中,定义函数有常见的两种形式:函数声明和函数直接量(或者叫函数表达式)

2017-11-10 21:02:43 5270

原创 JavaScript this指针

this指针,在Java EE等开发语言中叫做“上下文对象”,但是在JavaScript中情况完全不同,不能把Java EE中对this的理解带到JavaScript中来。 言归正传,在JavaScript中,this代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。也就是说this跟函数的声明没有任何关系,只有在函数或者方法被调用时才知道this的值。this关键字会根据环境变化,但是

2017-11-10 19:32:25 404

原创 javaweb国际化

软件开发国际化是一个很常规的需求,实现国际化的方法也比较多,比如前端国际化方法jQuery.i18n.properties,现在介绍采用ResourceBundle和Local对象实现Javaweb国际化。 ResourceBundle是一个资源包,包含不同区域(Local)的资源集合,只要向ResouceBundle提供一个特定的Locale对象,ResouceBundle就会把相应的资源返回给

2017-10-21 14:04:14 434

原创 js闭包

闭包是JavaScript中的一个难点,比较难理解。在讨论闭包之前先明确几个概念: 1、作用域:顾名思义,函数(对象)的可访问范围 2、执行环境:函数被调用时创建,并被推入环境栈中;函数执行完成,弹出该执行环境,把控制权返回给上一层执行环境。全局执行环境是window 3、变量对象:与执行环境一一对应,执行环境中的变量和函数保存在变量对象中,函数的变量对象叫活动对象 4、作用域链:各执行环境

2017-10-19 13:49:22 224

原创 JavaScript对象创建与继承总结

JavaScript中的每个元素都是一个对象,都继承自Object对象,因此可以说Object是JavaScript的根对象。首先说说JavaScript中创建对象的几种常见方式: 1、对象字面量创建对象,如:var myObject = { name: '张三', sex: '男', age: 25}//等价于 var myObject = new Object()

2017-10-18 19:13:56 231

原创 关于JavaScript中的构造函数和对象中的构造属性

JavaScript和面向对象语言(例Java)一样,在创建对象都是通过调用构造函数,但是又与面向对象语言有所区别。初学JavaScript时,总把函数的构造属性和对象的构造属性弄混淆,总结下面几点。 1、constructor属性始终指向创建当前对象的构造函数1 // 等价于 var foo = new Array(1, 56, 34, 12); 2 var arr = [1, 56, 34

2017-10-16 19:22:49 4110

原创 加载并解析XML DOM

前端开发中经常会遇见浏览器兼容性问题,为此,在写业务逻辑之前进行浏览器类型判断很有必要,下面给出几种常用游览器判断:function isIE() { if(navigator.userAgent.indexOf("MSIE") > 0 || (navigator.userAgent.toLowerCase().indexOf("trident") > -1 && navigator.use

2017-06-23 19:22:33 255

原创 jsonp解决跨域访问受限问题

json和jsonp是两个很容易混淆的概念,再介绍跨域访问之前简单介绍一下这两个概念吧。 1、json是一种应用广泛,而且很简单的数据描述格式,或者说是规则。 优点:1、基于纯文本,跨平台传递极其简单; 2、JavaScript原生支持,后台语言几乎全部支持; 3、轻量级数据格式,占用字符数量极少,特别适合互联网传递; 4、容易编写和解析,当

2017-06-23 16:03:00 672

原创 websocket与Java实例

websocket是H5里新增的一种技术,主要用于web客户端与服务端之间建立双工通信通道,进行实时消息传输。在websocket之前,web客户端与服务器之间传递消息都是基于HTTP协议,总所周知,HTTP是一种无状态的协议,web客户端与服务端传递消息必须由客户端主动request,然后服务端返回response结果,服务端无法主动推送消息给客户端。为此,出现了轮询(polling)和Comet

2017-04-27 14:56:25 1463

原创 Log4J使用

一、Log4j介绍 Log4j中有三个主要的组件,它们分别是 Logger、Appender和Layout Logger:日志记录器,设置日志的类型(优先级),Appender的名字,一个logger可以设置多个Appender; Appender:日志信息的输出目的地; Layout:日志信息的输出格式;二、Log4j的配置 Log4j配置可以在Java代码中配置,也可以采用配置文件,一

2017-04-24 18:01:30 207

原创 synchronized 与 Lock区别

在上一篇文章中,我们谈到了采用synchronized来实现多线程同步,在Java中还一种实现多线程同步的方法,那就是Lock。下面主要谈谈这两种多线程同步的区别。 1、synchronized是在JVM层面实现的,系统可以监控锁的释放与否。 2、ReentrantLock使用代码实现的,系统无法自动释放锁,需要在代码中finally子句中显式释放锁lock.unlock()。 3、相对于sy

2017-03-16 17:54:39 1038

转载 synchronized同步锁

synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象; 2. 修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象; 3. 修改一个静态的方法,其作用的范围是整个静态方法,作用的对象是这个类的所有对

2017-03-16 17:18:22 289

原创 Hibernate操作数据库总结

初次使用Hibernate框架的时候,只知道用HQL和原生SQL操作数据库,后来发现竟然还有几种更方便的方法,在此做个总结。 1、使用HQL语句和Query接口,HQL语句语法是:select c from Cat c where … 其中Cat是一个实体类,c是实体类对象,查询类对象属性,用“.”。如果存在不同包中有同名类,则必须指明包,如com.hibernate.entity.Cat,HQ

2017-03-13 17:39:00 314

原创 hibernate框架搭建

作为一个Java工程师,对现在主流的SSH框架不能说不熟悉,于是自己花点时间研究了一下hibernate框架。 hibernate是一种ORM框架,主要用来与各种数据库、SQL语句打交道,是目前市面上数据持久化最常用的方法。Java开发中采用hibernate框架的好处是,开发者不需要自己再去编写SQL语句操作各种数据库,且实体类发生变化时,也不需要花很大的工作量去修改SQL语句,hibernat

2017-03-13 16:21:52 304

原创 ip地址0.0.0.0与127.0.0.1的区别

最近在项目开发中发现一个奇怪的问题,当服务器与客户端在同一台机器上时,用服务器ip(本地主机ip)192.168.1.xxx、127.0.0.1以及0.0.0.0都能登陆服务器,于是找点资料研究一下。 其实,最开始是发现服务器ip填0能登陆成功,后来知道了系统自动补全ip地址,什么意思呢,就是如果你填0或0.0或0.0.0,系统都会自动补全ip为0.0.0.0。下面就简要介绍一下这三种ip的区别。

2017-02-28 10:24:06 26771 3

原创 采用Ant打包

好久没更博了,最近研究了一下Ant打包机制,作一下记录。首先简要介绍一下Ant。 Ant是一个基于Java的生成(在软件开发中用来将源代码和其他输入文件转换为可执行文件的形式)工具,最常用的就是用Ant打包war文件。在使用Ant打包之前需要搭建一个ant环境,大致分为一下几步: 1、安装jdk并配置环境变量(JAVA_HOME、CLASSPATH、PATH); 2、下载Ant并解压; 3、

2017-02-10 13:50:56 897

原创 js实现仿百度地图拖动

最近在项目中需要用到仿百度地图拖动特效,于是花点事件研究了一下,发现通过scrollLeft和scrollTop方法改变滑块的位置可以实现类似效果,下面把研究结果拿出来分享一下。<div id="emap-panel" style="position: relative; overflow: hidden;"> <img id="emap-image"/></div>overflow: h

2016-12-28 14:05:11 6162 1

原创 监听鼠标滚轮事件

鼠标滚轮在web开发中是比较常用的,比如地图的放大缩小,改变select框的值等,今天就这个写一下。 首先,不同的浏览器有不同的滚轮事件。大致分为两种:onmousewheel(除Firefox以外的浏览器支持)和DOMMouseScroll(只有Firefox支持)。在使用滚轮前首先要注册滚轮事件,注册方法也不同,Firefox采用addEventListener监听,其他浏览器直接采用onmo

2016-12-28 11:13:16 5415

原创 js 右键弹出自定义菜单

近期在项目中有一个右键菜单的需求,发现很多实现都比较复杂,于是自己花了一点时间稍微研究了一下,下面提供一个简洁的实现方法。 js声明部分://创建右键菜单var epMenu={ create:function(point,option){ var menuNode=document.getElementById('epMenu'); if(!menuNo

2016-11-24 17:17:06 7917

原创 在js中实现页面跳转

js方式的页面跳转 1.window.location.href方式 window.location.href="target.aspx"; 2.window.navigate方式跳转 window.navigate("target.aspx"); 3.window.loction.replace方式实现页面跳转,注意跟第一种方式的区别

2016-11-09 15:29:07 991

原创 关于Java内存溢出问题

最近开发的时候发现了一个list.add()方法导致内存溢出的问题,花了一上午才搞定,想想还是有必要写下来分享一下。 首先说一下导致内存溢出的原因: 1、内存中加载的数据量过于庞大,如一次从数据库取出过多数据; 2、集合类中有对对象的引用,使用完后未清空,使得JVM不能回收; 3、代码中存在死循环或循环产生过多重复的对象实体; 4、使用的第三方软件中的BUG; 5、启动参数内存值设定的过

2016-10-28 17:43:53 395

原创 Java中使用JNA调用其他语言编写的动态链接库

在开发中有时需要跨平台跨语言,用Java调用其它语言编写的动态链接库,例如编译好的dll文件,这是就需要用到JNA(Java Native Access ),JNA是建立在经典的JNI的基础之上的一个跨平台框架,下面简单介绍一下在Java中如何使用JNA调用其他语言编写dll动态链接库文件。大致可以分为一下几步: 1、下载jna.jar包,并导入到Java项目中; 下载地址:https://gi

2016-10-25 16:37:36 849

原创 关于tomcat注册成一个服务,并修改启动类型

一般来说tomcat都会提供两个版本,一个绿色版,下载下来直接解压即可用,一个安装版,需要用户安装的。安装版就不作介绍了,主要是绿色版,在bin目录下点击startup.bat文件就可启动tomcat服务器,但是系统不会为服务器创建一个service,用户每次重启计算机都需要去手动启动tomcat,这样很不方便。于是就想到为tomcat创建一个系统service,并设置成自启动模式,这样开机就自启动

2016-10-25 10:48:49 3596

原创 Java class.getClassLoader().getResource("")获取资源路径

在开发中经常需要获取资源文件路径,例如读写配置文件等。Java也提供很多方法来获取这些路径,下面就几种常用到的作一下讨论区分: 1、xxx.class.getClassLoader().getResource(“”).getPath(); 获取src资源文件编译后的路径(即classes路径) 2、xxx.class.getClassLoader().getResource(“文件”).get

2016-10-21 11:16:42 21501

原创 关于properties配置文件读写,追加以及中文乱码问题

在开发中常用properties文件来存储系统配置信息,下面就properties文件的读写,信息追加作简要介绍,顺便也解决乱码问题。 1、首先介绍一下properties类 properties类继承自Hashtablepackage com.gmi.client.util;import java.io.BufferedInputStream;import java.io.BufferedR

2016-10-19 16:24:24 6370

原创 Ajax应用,Struts2

ajax是目前js中web前台请求后台数据的主流方法,下面简单介绍一下。 在jQuery中使用ajax,首先在function一个方法,在方法中采用$.ajax({});使用ajax请求数据,如:function isHigherVersion(){ var newversion; //本地控件当前版本 var version = WebClient

2016-10-18 17:25:51 245

原创 Struts2文件下载(版本更新)

虽然通过超链的href属性直接指定要下载的资源也可以实现文件下载,但遇到中文文件名、下载前的权限检查这些问题,超链都处理不了,还得Struts2来进行文件下载。采用Struts2提供的stream结果类型来支持文件下载。在stream结果类型的结果中需指定一个inputName参数,参数值指定了一个文件下载入口的输入流。废话不多说,下面分步介绍Struts2支持文件下载的过程: 1、创建一个文件下

2016-10-18 15:04:28 436

原创 uploadify控件上传文件and后台Struts2框架

带进度条的文件上传控件uploadify和Struts2框架

2016-10-18 10:47:26 958

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除