字符串转换为JSON

1、var json = eval('(' + str + ')');

2、var json = (new Function("return " + str))();

3、var json = JSON.parse(str);

使用JSON.parse需严格遵守JSON规范,如属性都需用引号引起来,如下

复制代码代码如下:
var str = '{name:"jack"}'; 
var obj = JSON.parse(str); // --> parse error 

name没有用引号引起来,使用JSON.parse所有浏览器中均抛异常,解析失败。而前两种方式则没问题。

Oracle数据库重复数据删除

比如,某个表要按照id和name重复,就算重复数据

delete from 表名 where rowid not in (select min(rowid) from 表名 group by id,name);
commit;

数据库根据时间字段查询

字段为:日期时间类型(date)

SELECT * FROM testdatetime t WHERE t.startdate = to_date('2011-07-01','yyyy-MM-dd');  
 
JSON.stringify(geometry)报错Converting circular structure to JSON
查看之前的代码发现是循环引用出现了问题
var geometry =obj.geometry(或者var geometry.xx = geometry)
改为 var test = obj.geometry就可以解决了。  

Arrays.copyof(···)与System.arraycopy(···)区别

首先观察先System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)的声明:

  1. public static native void arraycopy(Object src,  int  srcPos,
  2. Object dest, int destPos,
  3. int length);

src - 源数组。 
srcPos - 源数组中的起始位置。 
dest - 目标数组。 
destPos - 目标数据中的起始位置。 
length - 要复制的数组元素的数量。

该方法是用了native关键字,调用的为C++编写的底层函数,可见其为JDK中的底层函数。

  1. //复杂数据类型
  2. public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) {
  3. T[] copy = ((Object)newType == (Object)Object[].class)
  4. ? (T[]) new Object[newLength]
  5. : (T[]) Array.newInstance(newType.getComponentType(), newLength);
  6. System.arraycopy(original, 0, copy, 0,
  7. Math.min(original.length, newLength));
  8. return copy;
  9. }
  10. public static <T> T[] copyOf(T[] original, int newLength) {
  11. return (T[]) copyOf(original, newLength, original.getClass());
  12. }

由U类型复制为T类型?
original - 要复制的数组 
newLength - 要返回的副本的长度 
newType - 要返回的副本的类型

  1. //基本数据类型(其他类似byte,short···)
  2. public static int[] copyOf(int[] original, int newLength) {
  3. int[] copy = new int[newLength];
  4. System.arraycopy(original, 0, copy, 0,
  5. Math.min(original.length, newLength));
  6. return copy;
  7. }

观察其源代码发现copyOf(),在其内部创建了一个新的数组,然后调用arrayCopy()向其复制内容,返回出去。 
总结: 
1.copyOf()的实现是用的是arrayCopy(); 
2.arrayCopy()需要目标数组,对两个数组的内容进行可能不完全的合并操作。 
3.copyOf()在内部新建一个数组,调用arrayCopy()将original内容复制到copy中去,并且长度为newLength。返回copy;

 

原理


  1)Java数组对象的大小是固定不变的,数组对象是不可扩容的。


  2)利用数组复制方法可以变通的实现数组扩容。


  3)System.arraycopy()可以复制数组。


  4)Arrays.copyOf()可以简便的创建数组副本。


  5)创建数组副本的同时将数组长度增加就变通的实现了数组的扩容。

运用后缀表达式进行计算的具体做法:后缀转中缀

建立一个栈S 。从左到右读表达式,如果读到操作数就将它压入栈S中,如果读到n元运算符(即需要参数个数为n的运算符)则取出由栈顶向下的n项按操作符运算,再将运算的结果代替原栈顶的n项,压入栈S中 。如果后缀表达式未读完,则重复上面过程,最后输出栈顶的数值则为结束。

例 : 6 5 2 3 + 8 * + 3 + *

  • 先将前面的数字入栈

    栈 :6 5 2 3

  • 遇到 ” + ” 取栈顶的两个操作数做加法, 2 + 3 = 5 , 入栈

    栈 :6 5 5

  • 遇到 ” 8 ” 入栈

    栈 :6 5 5 8

  • 遇到 ” * ” 取栈顶的两个操作数做乘法, 5 * 8 = 40 , 入栈

    栈 :6 5 40

  • 遇到 ” + ” 取栈顶的两个操作数做加法, 5 + 40 = 45 , 入栈

    栈 :6 45

  • 遇到 ” 3 ” 入栈

    栈 :6 45 3

  • 遇到 ” + ” 取栈顶的两个操作数做加法, 45 + 3 = 48 , 入栈

    栈 :6 48

  • 遇到 ” * ” 取栈顶的两个操作数做加法, 6 * 48 = 288 , 入栈

    栈 :288


中缀表达式转后缀表达式的方法:
1.遇到操作数:直接输出(添加到后缀表达式中)
2.栈为空时,遇到运算符,直接入栈
3.遇到左括号:将其入栈
4.遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,左括号不输出。
5.遇到其他运算符:加减乘除:弹出所有优先级大于或者等于该运算符的栈顶元素,然后将该运算符入栈
6.最终将栈中的元素依次出栈,输出。
例如
a+b*c+(d*e+f)*g ----> abc*+de*f+g*+

遇到a:直接输出:
后缀表达式:a
堆栈:空

遇到+:堆栈:空,所以+入栈
后缀表达式:a
堆栈:+
遇到b: 直接输出
后缀表达式:ab
堆栈:+
遇到*:堆栈非空,但是+的优先级不高于*,所以*入栈
后缀表达式: ab
堆栈:*+
遇到c:直接输出
后缀表达式:abc
堆栈:*+
遇到+:堆栈非空,堆栈中的*优先级大于+,输出并出栈,堆栈中的+优先级等于+,输出并出栈,然后再将该运算符(+)入栈
后缀表达式:abc*+
堆栈:+
遇到(:直接入栈
后缀表达式:abc*+
堆栈:(+
遇到d:输出
后缀表达式:abc*+d
堆栈:(+
遇到*:堆栈非空,堆栈中的(优先级小于*,所以不出栈
后缀表达式:abc*+d
堆栈:*(+
遇到e:输出
后缀表达式:abc*+de
堆栈:*(+
遇到+:由于*的优先级大于+,输出并出栈,但是(的优先级低于+,所以将*出栈,+入栈
后缀表达式:abc*+de*
堆栈:+(+
遇到f:输出
后缀表达式:abc*+de*f
堆栈:+(+
遇到):执行出栈并输出元素,直到弹出左括号,所括号不输出
后缀表达式:abc*+de*f+
堆栈:+
遇到*:堆栈为空,入栈
后缀表达式: abc*+de*f+
堆栈:*+
遇到g:输出
后缀表达式:abc*+de*f+g
堆栈:*+
遇到中缀表达式结束:弹出所有的运算符并输出
后缀表达式:abc*+de*f+g*+
堆栈:空

2017/6Summary的更多相关文章

  1. CI Weekly #10 | 2017 DevOps 趋势预测

    2016 年的最后几个工作日,我们对 flow.ci Android & iOS 项目做了一些优化与修复: iOS 镜像 cocoapods 版本更新: fir iOS上传插件时间问题修复: ...

  2. 猖獗的假新闻:2017年1月1日起iOS的APP必须使用HTTPS

    一.假新闻如此猖獗 刚才一位老同事 打电话问:我们公司还是用的HTTP,马上就到2017年了,提交AppStore会被拒绝,怎么办? 公司里已经有很多人问过这个问题,回答一下: HTTP还是可以正常提 ...

  3. iOS的ATS配置 - 2017年前ATS规定的适配

    苹果规定 从2017年1月1日起,新提交的 app 不允许使用NSAllowsArbitraryLoads来绕过ATS(全称:App Transport Security)的限制. 以前为了能兼容ht ...

  4. 深入研究Visual studio 2017 RC新特性

    在[Xamarin+Prism开发详解三:Visual studio 2017 RC初体验]中分享了Visual studio 2017RC的大致情况,同时也发现大家对新的Visual Studio很 ...

  5. Xamarin+Prism开发详解三:Visual studio 2017 RC初体验

    Visual studio 2017 RC出来一段时间了,最近有时间就想安装试试,随带分享一下安装使用体验. 1,卸载visual studio 2015 虽然可以同时安装visual studio ...

  6. Microsoft Visual Studio 2017 for Mac Preview 下载+安装+案例Demo

    目录: 0. 前言 1. 在线安装器 2. 安装VS 3. HelloWorld 4. ASP.NET MVC 5. 软件下载 6. 结尾 0. 前言: 工作原因,上下班背着我的雷神,一个月瘦了10斤 ...

  7. Create an offline installation of Visual Studio 2017 RC

    Create an offline installation of Visual Studio 2017 RC ‎2016‎年‎12‎月‎7‎日                             ...

  8. .NET Core 2.0版本预计于2017年春季发布

    英文原文: NET Core 2.0 Planned for Spring 2017 微软项目经理 Immo Landwerth 公布了即将推出的 .NET Core 2.0 版本的细节,该版本预计于 ...

  9. 卡巴斯基2017激活教程_卡巴斯基2017用授权文件KEY激活的方法

    原创:天诺时空 更新时间:2016-11-09   2016年9月7日,卡巴斯基2017版全新上市,卡巴斯基依旧为大家奉上满足您所有需求的安全软件产品,为不同年龄层.不同人群给予全方位保护,同时延续卡 ...

随机推荐

  1. angularjs 异步请求无法更新数据

    angularjs 有个问题就是第二次ajax请求数据再次赋值给 $scope.data,需要更新视图数据的时候,却不能更改视图数据,这个是因为angularjs的$watch不能监听到JS对$sco ...

  2. 2017年蓝桥杯省赛A组c++第7题(正则问题)

    /* 描述:正则问题 考虑一种简单的正则表达式: 只由 x ( ) | 组成的正则表达式. 小明想求出这个正则表达式能接受的最长字符串的长度. 例如 ((xx|xxx)x|(x|xx))xx 能接受的 ...

  3. wpf数据绑定:xml数据绑定

    wpf中可以通过XmlDataProvider,来实现xml数据的绑定.它通过XmlDataProvider来绑定外部资源,需要命名一个 x:Key 值,以便数据绑定目标可对其进行引用,Source设 ...

  4. [daily][editer] 二进制编辑工具 hyx

    用了众多之后,终于发现了一个好用的二进制编辑工具: hyx https://yx7.cc/code/ https://en.wikipedia.org/wiki/Comparison_of_hex_e ...

  5. git 将本地仓库提交至github

    -or create a new repository on the command line touch README.md git init git add README.md git commi ...

  6. JRE vs OpenJDK vs Oracle JDK

    JRE vs OpenJDK vs Oracle JDK 在我们继续了解如何安装Java之前,让我们快速地了解JRE.OpenJDK和Oracle JDK之间的不同之处. JRE(Java Runti ...

  7. 洛谷P4363 一双木棋chess [九省联考2018] 搜索+hash

    正解:记搜+hash 解题报告: 传送门! 因为看到nm范围特别小,,,所以直接考虑爆搜(bushi 先考虑爆搜之后再想优化什么的嘛QwQ 首先对这种都要最优的,就可以直接把答案设为针对某一方,然后题 ...

  8. 洛谷P4823 拯救小矮人 [TJOI2013] 贪心+dp

    正解:贪心+dp 解题报告: 传送门! 我以前好像碰到过这题的说,,,有可能是做过类似的题qwq? 首先考虑这种显然是dp?就f[i][j]:决策到了地i个人,跑了j个的最大高度,不断更新j的上限就得 ...

  9. 重读《深入理解Java虚拟机》六、Java泛型 VS C#泛型 (伪泛型 VS 真泛型)

    一.泛型的本质 泛型是参数化类型的应用,操作的数据类型不限定于特定类型,可以根据实际需要设置不同的数据类型,以实现代码复用. 二.Java泛型 Java 泛型是Java1.5新增的特性,JVM并不支持 ...

  10. mvn install package区别

    package是把jar打到本项目的target下,而install时把target下的jar安装到本地仓库,供其他项目使用