javascript
(def p [])
stand your ground!
展开
-
js对象序列化和反序列化json,支持循环引用
//代码从MDN拷贝,修改了一下,添加堆循环引用的支持//https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSONlet JSONUtil = { parse: function(jsonStr,resolveCircular=true) { let res = eval('(' + jsonStr + ')') let cache = [] let tasks = []原创 2020-09-26 16:00:53 · 583 阅读 · 0 评论 -
对java调用javascript的封装
maven依赖<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <原创 2018-09-19 12:23:26 · 707 阅读 · 0 评论 -
leetcode-8. 字符串转整数 (atoi)
/** * @param {string} str * @return {number} */var myAtoi = function(str) { let max = Math.pow(2,31)-1; let min = -max-1; let reg = /^\s*([-+]?\d+).*$/igm; let arr = reg.exec(str);...原创 2018-09-19 12:37:03 · 237 阅读 · 0 评论 -
leetcode-14. 最长公共前缀
一般求公共前缀可以用trie树解决。但是如果是朴素trie树,则会消耗大量空间,如果是double-array-trie,则编码相当复杂。所以这里就不用trie树,直接用遍历的方式解决。当然还可以用递归等其他方式。/** * @param {string[]} strs * @return {string} */var longestCommonPrefix = function...原创 2018-09-24 19:14:09 · 615 阅读 · 0 评论 -
leetcode-5.最长回文子串
/** * @param {string} s * @return {string} */var longestPalindrome = function(s) { let chs = [...s]; let res = []; for(let i=0;i<chs.length;i++){ let s1 = f1(chs,i); ...原创 2018-09-15 16:03:00 · 127 阅读 · 0 评论 -
leetcode-11. 盛最多水的容器
var maxArea = function(height) { let max = Math.min(height[0],height[1]) for(let i=2;i<height.length;i++){ for(let j=0;j<i;j++){ let h = Math.min(height[i],height[j])...原创 2018-09-22 21:07:57 · 187 阅读 · 0 评论 -
java版js数组
背景:java数组、列表的抽象程度不够,操作起来相对麻烦。相比而言,js数组方便很多。于是参考js的数组api,对java数组(列表)进行抽象,可以非常方便地进行平常的一些操作。依赖:只是在toString方法中依赖了fastjson,所以就不贴pom.xml了。代码:1、接口package org.jsirenia.array;import java.util.Comparato...原创 2018-12-05 20:32:57 · 365 阅读 · 0 评论 -
用js实现鸟语
const map = { '~':'~', '[':'#', ']':'$', '!':'!', '<':'&', '|':'*', '>':'@'}const rMap = {}for(let k in map){ rMap[map[k]]=k}//待转换文本let s = '你好啊'function transform(text){ c...原创 2019-02-16 12:46:00 · 347 阅读 · 0 评论 -
js实现java字符串的hashCode方法
java的int类型占4个字节。在计算字符串的hashcode时,可能会溢出。这种溢出属于正常情况。在js中,所有数字都是以64位浮点数形式储存。其表示范围要远远超过java32位的int。所以在js要实现java字符串的hashCode方法,就需要主动让其值产生溢出效果。有什么用呢?更深入理解java字符串的hashCode方法理解数值计算的溢出处理连接js和java字符串处理ja...原创 2019-09-24 23:09:02 · 2453 阅读 · 0 评论 -
leetcode-6. Z字形变换
/** * @param {string} s * @param {number} numRows * @return {string} */var convert = function(s, numRows) { if(numRows==1){ return s; } let chs = [...s]; let res = []; ...原创 2018-09-15 17:53:23 · 153 阅读 · 0 评论 -
nodejs实现bitmap/bitset
代码在github上面有最新版 https://github.com/zhoujiaping/doc/blob/master/nodenode/algol/bitset.js/** * Bitmap算法(java中叫BitSet,作为javascript,还是跟着java老大哥叫bitset吧) * http://www.cnblogs.com/huangxincheng/archive...原创 2018-05-15 22:26:53 · 2282 阅读 · 2 评论 -
javascript高级培训
华苏javascript培训@author:zhoujiaping @date:2017-08-01一 目的使开发人员对javascript语言有较深入的理解,提升开发人员的js功底,在以后的项目中更准确、高效的使用js,编写出高质量的js程序。二 解释型动态类型弱类型多范式语言2.1语言按各种方法可以分为各种类型,按编译执行过程,可以分为编译型语言和解释型语言。...原创 2018-03-15 10:20:19 · 3731 阅读 · 0 评论 -
实现js尾递归优化的代码
在学习数据结构和算法的时候,我们都知道所有的递归都是可以优化成栈+循环的。 对于特定的递归函数,一般我们都是手动对它们进行优化的。 在学习scala的时候,接触到尾递归的概念。我们只要将递归写成尾递归方式,编译器会自动帮助我们优化。 ps:并不是所有的递归都可以改写成尾递归 在js中,尾递归通常会被解释器优化。然而,并不是所有的js解释器都支持尾递归优化。 对于不支持尾递归优化的环境,我...原创 2018-03-15 10:54:39 · 1775 阅读 · 0 评论 -
nodejs实现最大堆
nodejs实现最大堆/** * 最大堆 * 一般采用数组实现,否则计算节点太复杂,因为树并不是完全有序的。 * 为了计算方便,第一个元素不用。 * https://baike.baidu.com/item/%E5%AE%8C%E5%85%A8%E4%BA%8C%E5%8F%89%E6%A0%91/7773232?fr=aladdin * https://blog.csdn.net/...原创 2018-05-12 00:45:09 · 788 阅读 · 1 评论 -
trie树
/** * trie树(字典树,前缀树,键树) https://blog.csdn.net/hyman_yx/article/details/54410619 https://blog.csdn.net/jiutianhe/article/details/8076835 朴素trie树,字符集a-z 这种结构,空间复杂度真的恐怖。一般不直接使用,而是使用其优化版本double array...原创 2018-05-19 17:29:48 · 120 阅读 · 0 评论 -
前端传嵌套对象参数给spring mvc
在使用springmvc开发web应用时,感觉springmvc的controller方法能自动将参数注入到方法的参数对象中,极大的方便了开发。但是,在遇到有嵌套对象的时候,比如订单对象有个属性是用户对象,就不好处理了。一种情况是,传递的参数都是作为post方法的请求体,我们可以用RequestBody注解。但是当条件不满足的时候,这种方式就没法用了。很多人喜欢用的方法是将对象序列化为json字符...原创 2018-05-20 21:21:36 · 4402 阅读 · 1 评论 -
js日期解析和格式化相关函数
js日期格式化和解析相关函数/** 日期格式化为字符串 */let formatDate = function(date,fmt){ var o = { "M+" : date.getMonth() + 1, // 月份 "d+" : date.getDate(), // 日 "H+" : date.getHours(), // 小时..原创 2018-05-20 21:28:35 · 567 阅读 · 0 评论 -
js生成时间序列
/** * 生成时间序列,例如['00:00','00:01',...'23:59'],小时和分钟的分隔符可以自定义。常用于页面报表展示的时间序列的计算。 * opts:{ * slot:时间序列的间隔,1-59, * seperator:小时和分钟的分隔符, * maxValue:时间序列的最大值 * } * */let timeSeq = functio...原创 2018-05-20 21:35:44 · 1345 阅读 · 0 评论 -
ECMA-262理解
ECMA-262是ECMAScript5.1的规范。规范文档描述了ECMAScript的原理、相关定义、规则、标准。要精通javascript,必须要能够读懂该规范的对应内容。与《你不知道的javascript上》、《你不知道的javascript中》、《javascript高级程序设计》、《javascript权威指南》对比之后发现,所有的这些书籍,讲的都不太对,都有问题,都不能引入原创 2017-07-06 16:14:12 · 3137 阅读 · 2 评论