- js对象常用方法和es6对象新增方法
含含要暴怒
对象解构:基本;有剩余值运算符...rest;有默认值;解析对象不分顺序(变量名要和键名一致);解构对象.png【对象】1.对象的简写(变量名和对象的键一致的时候才可以);2.对象属性表达式[];3.对象的拷贝合并Object.assign();4.对象扩展...{...a,...b}复制与合并对象;【对象数据类型的弱点】1.对象的键名只能是字符串或者symbol;2.对象没有顺序;3.对象的长度
- JavaScript高阶笔记总结(Xmind格式):第一天
星河路漫漫
JavaScript笔记总结原型模式javascript笔记
Xmind鸟瞰图:简单文字总结:js高阶知识总结:理解Object:1.返回一个由一个给定对象的自身可枚举属性组成的数组:Object.keys(对象名)2.in判断属性是否存在:"属性名"in对象名3.delete删除属性4.返回一个由指定对象的所有自身属性的属性名:Object.getOwnPropertyNames(对象名)属性的特征:访问器属性:get(访问),set(修改)定义属性特征:
- vue2开发心得
Albert.H.Holmes
vue.js前端javascript
1.computedcomputed是一个对象,它包含了一系列计算属性。计算属性是基于它们的依赖进行缓存的计算值。只有当依赖发生变化时,计算属性才会重新计算。这使得计算属性非常适合执行昂贵的计算或派生状态。computed中的属性是响应式的,这意味着当它们的依赖项发生变化时,Vue将自动更新依赖于这些计算属性的任何DOM。2.Object.assign()函数Object.assign()函数用于
- vue想对象里面添加键值对的方法
lucky*girl
vue前端
1、Vue.set(target,propertyName/index,value)Vue.set(要填加的数组名称,键,值)2、Object.assign('对象',{key:'value'}
- Object.entries 作用
yqcoder
javascript前端开发语言
一、将对象转换为键值对数组它返回一个给定对象自身可枚举属性的键值对数组。constobj={a:1,b:2,c:3};constentries=Object.entries(obj);console.log(entries);//[['a',1],['b',2],['c',3]]二、配合数组方法进行操作由于Object.entries()返回的是一个数组,可以结合数组的各种方法进行操作。const
- resetFields()失效
虾仁不眨眼ok
前端javascripthtmlvue
问题描述先点击新增,再取消弹窗。resetFields()正常运行,清空表单内容。先点击编辑,再新增,表单内容不能清空。解决方法在nextTick里赋值表单内容,因为弹窗会把第一次赋值的内容当成初始值,所以要在弹窗加载完之后再赋值constopenModal=(data)=>{base.visible=true;nextTick(()=>{base.formData=Object.assign({
- JavaScript进阶-内置构造函数
jl_3288
JavaScriptjavascript开发语言ecmascript
文章目录内置构造函数引用类型ObjectArray数组常见的实例方法-核心方法数组常见方法-其他方法数组常见方法-伪数组转换为正数组包装类型String常见实例方法Number内置构造函数引用类型Object用于创建普遍对象三个常用的静态方法:方法名:keys作用:获取对象中的所有属性(键)语法:Object.keys(对象名)注意:返回的是一个数组方法名:values作用:获取对象中的所有属性值
- 【es6】Map 和 Object 对象的区别
我有一棵树
es6前端ecmascript
对象ObjectObject是一个特殊的对象,它本身是一个顶级对象,同时还是一个构造函数,还可以使用字面量的方式声明一个对象本质上是键值对的集合,但是健只能是字符串或Symbol使用.[]去获取object的属性,不存在则返回undefined,而且可以获取到原型上的属性不是可迭代对象,只能用for...in迭代,且遍历顺序是不确定的,或者是使用Object.keys\Object.values\
- 【JavaScript】深浅拷贝
STATICHIT静砸
JavaScriptjavascript前端开发语言
JavaScript中复制对象有深拷贝和浅拷贝两种方式浅拷贝:浅拷贝只复制对象的第一层属性,而不复制嵌套对象的引用。这意味着如果原始对象包含嵌套对象,浅拷贝后的对象仍然会共享这些嵌套对象的引用。可以使用`Object.assign()`或展开运算符(`...`)来进行浅拷贝。//浅拷贝示例//1.使用Object.assignconstoriginalObj={a:1,b:{c:2}};const
- object.assign
peerben
Object.assign(target,...sources)如果目标对象中的属性具有相同的键,则属性将被源中的属性覆盖。后来的源的属性将类似地覆盖早先的属性。Object.assign方法只会拷贝源对象自身的并且可枚举的属性到目标对象。该方法使用源对象的[[Get]]和目标对象的[[Set]],所以它会调用相关getter和setter。因此,它分配属性,而不仅仅是复制或定义新的属性。如果合并
- 判断对象是否为空对象
一叶知秋_038b
vue有两个方法可用JSON.stringify(evtValue)=='{}'Object.keys(xxx).length==0js判断对象是否为空对象的几种方法1.将json对象转化为json字符串,再判断该字符串是否为"{}"vardata={};varb=(JSON.stringify(data)=="{}");alert(b);//true2.forin循环判断varobj={};va
- Vue3快速上手(七) ref和reactive对比
一掬净土
Vuevue3refreactive响应式对象对比
一、ref和reactive对比表格形式更加直观吧:项目refreactive是否支持基本类型支持不支持是否支持对象类型支持支持对象类型是否支持属性直接赋值不支持,需要.value支持是否支持直接重新分配对象支持,因为操作的.value不支持,需要使用object.assign()方法是否支持基本类型支持不支持响应式对象类型ref和reactive都是支持的。一般用哪种都是可以的。但是对于属性较多
- 对象方法用途记录
entries介绍这是一个静态方法,用于将对象转换为数组。该方法接受一个对象,然后返回一个数组,该数组的每个元素为一组对象的键名和键值。constarr=Object.entries({name1:'tom',name2:'lily'})console.log('arr',arr)//[['name1','tom'],['name2','lily']]用途用于结合map、filter、reduce
- 16.扩展运算符的作用及使用场景
叫我阿东就行
前端面试JS篇前端javascript开发语言
(1)对象扩展运算符对象的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中。letbar={a:1,b:2};letbaz={...bar};//{a:1,b:2}上述方法实际上等价于:letbar={a:1,b:2};letbaz=Object.assign({},bar);//{a:1,b:2}Object.assign方法用于对象的合并,将源对象(source)的所
- 记录下开发遇到的小错误
小小小小的人头
1.TypeError:Cannotvonverundefinedornulltoobject1、Object.keys()中传错了参数2、由于undefined和null无法转成对象,所以如果它们做为Object.assign()的参数(只有一个参数),也会报错
- JS对象 Object.assign()
长沙xtt
JS进阶javascript开发语言ecmascript
对象字面量JS中的对象:JavaScript对象是变量的内容放置变量或函数对象字面量是一种简单的键值对数据结构letobj={Pcode:{a:'1'},pName:'Apple',getData(){console.log(obj.Pcode,obj.pName);}};//添加属性//obj.Pcode=10001;//obj.pName='Apple';//obj.getData=funct
- Object.assign() 方法的使用详解
Army-海军
JavaScriptES6Object.assignobjectjs
Object.assign()方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。注意:会改变源对象语法:Object.assign(target,...sources)target目标对象。sources源对象。1.目标对象中的属性具有相同的键,则属性将被源对象中的属性覆盖。后面的源对象的属性将类似地覆盖前面的源对象的属性。2.Object.assign方法只会拷贝源
- Object.assign()
谬蓝
vue.js前端javascript
Object.assign()对象的拷贝Object.assign()方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。Object.assign(target,...sources)【target:目标对象】,【souce:源对象(可多个)】例子:constobject1={a:1,b:2,c:3};constobject2=Object.assign({c:4,d
- 【ES6】Object.assign方法与深浅拷贝
卡卡桃乐西
ES6javascript开发语言ecmascript
文章目录一、Object.assign二、用法详解1.Object.assign浅拷贝2.实现深拷贝3.自定义函数实现深拷贝总结一、Object.assignObject.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。Object.assign方法的第一个参数是目标对象,后面的参数都是源对象。注意,如果目标对象与源对象有同名属性,或多个源
- Object.assign()及深拷贝
jokren
语法:Object.assign(target,…sources)target:目标对象,sources:源对象用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。consttarget={a:1,b:2};constsource={b:4,c:5};constreturnedTarget=Object.assign(target,source);console.log(t
- 总结Object.assign()用法
贝塔贝卡贝
object
Object.assign(target,…source):用于将所有可枚举属性(enumerable:true)的值从一个或多个源对象(source)复制到目标对象(taget),并将返回目标对象。一、Object.assign()对象的拷贝注意:1.如果目标对象中的属性具有相同的键,则属性将被源对象中的属性覆盖。后面的源对象的属性将类似地覆盖前面的源对象的属性2.Object.assign()
- Object.assign用法
Smile_zxx
javascript前端typescriptvuevue.js
1、是什么Object.assign()方法用于将所有可枚举属性的值从一个或多个源对象分配到目标对象。它将返回目标对象。consta={name:'张三'}constb={age:'18',sex:'女'}constc=Object.assign(a,b)console.log(c)//{name:'张三',age:'18',sex:'女'}console.log(a)//{name:'张三',a
- 【JavaScript】遍历对象和数组
好久不见的流星
JavaScriptjavascript开发语言前端
文章目录1.遍历对象for...in循环Object.keys()Object.entries()2.遍历数组for循环forEach()for...of循环3.遍历多维数组4.总结在JavaScript中,遍历是一种常见的操作,用于访问对象和数组中的元素。本篇博客将将介绍JavaScript中遍历对象和数组的方法,以帮助你更好地理解和运用这些概念。1.遍历对象for…in循环letperson=
- 【JavaScript】创建和访问对象
好久不见的流星
JavaScriptjavascript开发语言前端
文章目录1.对象的创建字面量表示法构造函数Object.create()2.对象的访问点表示法方括号表示法this关键字3.对象的遍历for...in循环Object.keys()Object.values()4.总结在JavaScript中,**对象是一种复合值,可以包含多个属性和方法。**本篇博客将介绍JavaScript中对象的创建和访问,以帮助你更好地理解和运用这些概念。1.对象的创建字面
- 【JavaScript】对象的属性和方法
好久不见的流星
JavaScriptjavascript开发语言前端
文章目录1.对象的属性基本属性嵌套属性计算属性名2.对象的方法基本方法简化方法3.属性和方法的访问点表示法方括号表示法4.属性和方法的删除删除属性删除方法5.属性的遍历for...in循环Object.keys()6.总结在JavaScript中,对象是一种复合值,可以包含多个属性和方法。本篇博客将介绍JavaScript中对象的属性和方法,以帮助你更好地理解和运用这些概念。1.对象的属性对象的属
- 详细分析Object.assign()的用法(附Demo)
码农研究僧
前端js前端
目录前言1.基本知识2.基本操作3.深入理解3.1浅拷贝3.2深拷贝前言需要将一个或多个对象的属性合并到目标对象中时,Object.assign()是一个非常有用的工具以下是对Object.assign()的详细分析、概念解释和演示示例1.基本知识Object.assign()是JavaScript中一个用于复制一个或多个源对象自身可枚举的属性到目标对象的方法它的语法如下:Object.assig
- Object.defineProperty()方法使用随笔
雪映月圆
描述该方法允许精确添加或修改对象的属性。通过赋值操作添加的普通属性是可枚举的,能够在属性枚举期间呈现出来(for...in或Object.keys方法),这些属性的值可以被改变,也可以被删除。这个方法允许修改默认的额外选项(或配置)。默认情况下,使用Object.defineProperty()添加的属性值是不可修改的。语法Object.defineProperty(obj,prop,desc);
- javascript之Object.assign实现浅拷贝的原理以及实现
松宝写代码
es6JavaScriptObject.assign()浅拷贝的原理模拟实现浅拷贝
一、前言之前在前面一篇学习了赋值,浅拷贝和深拷贝。介绍了这三者的相关知识和区别。传送门:https://www.mwcxs.top/page/592.html本文会介绍浅拷贝Object.assign()的实现原理,然后咱们试着实现一个浅拷贝。二、浅拷贝Object.assign()什么是浅拷贝?浅拷贝就是创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。浅拷贝Object.assign(
- js对象利用object.assign实现递归深拷贝
qq_48378883
js常用库javascript前端开发语言
constdeepClone=(data)=>{varcloneobj=Object.assign({},data)//拷贝单层对象for(varkeyindata){//循环if(typeofcloneobj[key]==='object'){//判断对象cloneobj[key]=deepClone(cloneobj[key])//递归拷贝}}returncloneobj//返回深拷贝后的对象
- 【JavaScript 漫游】【009】Object 对象方法总结
皮皮伍同学
JavaScript漫游javascript前端
本文为【JavaScript漫游】专栏的第009篇文章,对ES5规范中Object对象的方法进行了总结。Object方法Object构造函数Object的静态方法,包括Object.keys和Object.getOwnPropertyNames方法Object的实例方法,包括Object.prototype.valueOf、Object.prototype.toString、Object.prot
- html页面js获取参数值
0624chenhong
html
1.js获取参数值js
function GetQueryString(name)
{
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
var r = windo
- MongoDB 在多线程高并发下的问题
BigCat2013
mongodbDB高并发重复数据
最近项目用到 MongoDB , 主要是一些读取数据及改状态位的操作. 因为是结合了最近流行的 Storm进行大数据的分析处理,并将分析结果插入Vertica数据库,所以在多线程高并发的情境下, 会发现 Vertica 数据库中有部分重复的数据. 这到底是什么原因导致的呢?笔者开始也是一筹莫 展,重复去看 MongoDB 的 API , 终于有了新发现 :
com.mongodb.DB 这个类有
- c++ 用类模版实现链表(c++语言程序设计第四版示例代码)
CrazyMizzz
数据结构C++
#include<iostream>
#include<cassert>
using namespace std;
template<class T>
class Node
{
private:
Node<T> * next;
public:
T data;
- 最近情况
麦田的设计者
感慨考试生活
在五月黄梅天的岁月里,一年两次的软考又要开始了。到目前为止,我已经考了多达三次的软考,最后的结果就是通过了初级考试(程序员)。人啊,就是不满足,考了初级就希望考中级,于是,这学期我就报考了中级,明天就要考试。感觉机会不大,期待奇迹发生吧。这个学期忙于练车,写项目,反正最后是一团糟。后天还要考试科目二。这个星期真的是很艰难的一周,希望能快点度过。
- linux系统中用pkill踢出在线登录用户
被触发
linux
由于linux服务器允许多用户登录,公司很多人知道密码,工作造成一定的障碍所以需要有时踢出指定的用户
1/#who 查出当前有那些终端登录(用 w 命令更详细)
# who
root pts/0 2010-10-28 09:36 (192
- 仿QQ聊天第二版
肆无忌惮_
qq
在第一版之上的改进内容:
第一版链接:
http://479001499.iteye.com/admin/blogs/2100893
用map存起来号码对应的聊天窗口对象,解决私聊的时候所有消息发到一个窗口的问题.
增加ViewInfo类,这个是信息预览的窗口,如果是自己的信息,则可以进行编辑.
信息修改后上传至服务器再告诉所有用户,自己的窗口
- java读取配置文件
知了ing
1,java读取.properties配置文件
InputStream in;
try {
in = test.class.getClassLoader().getResourceAsStream("config/ipnetOracle.properties");//配置文件的路径
Properties p = new Properties()
- __attribute__ 你知多少?
矮蛋蛋
C++gcc
原文地址:
http://www.cnblogs.com/astwish/p/3460618.html
GNU C 的一大特色就是__attribute__ 机制。__attribute__ 可以设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type Attribute )。
__attribute__ 书写特征是:
- jsoup使用笔记
alleni123
java爬虫JSoup
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.7.3</version>
</dependency>
2014/08/28
今天遇到这种形式,
- JAVA中的集合 Collectio 和Map的简单使用及方法
百合不是茶
listmapset
List ,set ,map的使用方法和区别
java容器类类库的用途是保存对象,并将其分为两个概念:
Collection集合:一个独立的序列,这些序列都服从一条或多条规则;List必须按顺序保存元素 ,set不能重复元素;Queue按照排队规则来确定对象产生的顺序(通常与他们被插入的
- 杀LINUX的JOB进程
bijian1013
linuxunix
今天发现数据库一个JOB一直在执行,都执行了好几个小时还在执行,所以想办法给删除掉
系统环境:
ORACLE 10G
Linux操作系统
操作步骤如下:
第一步.查询出来那个job在运行,找个对应的SID字段
select * from dba_jobs_running--找到job对应的sid
&n
- Spring AOP详解
bijian1013
javaspringAOP
最近项目中遇到了以下几点需求,仔细思考之后,觉得采用AOP来解决。一方面是为了以更加灵活的方式来解决问题,另一方面是借此机会深入学习Spring AOP相关的内容。例如,以下需求不用AOP肯定也能解决,至于是否牵强附会,仁者见仁智者见智。
1.对部分函数的调用进行日志记录,用于观察特定问题在运行过程中的函数调用
- [Gson六]Gson类型适配器(TypeAdapter)
bit1129
Adapter
TypeAdapter的使用动机
Gson在序列化和反序列化时,默认情况下,是按照POJO类的字段属性名和JSON串键进行一一映射匹配,然后把JSON串的键对应的值转换成POJO相同字段对应的值,反之亦然,在这个过程中有一个JSON串Key对应的Value和对象之间如何转换(序列化/反序列化)的问题。
以Date为例,在序列化和反序列化时,Gson默认使用java.
- 【spark八十七】给定Driver Program, 如何判断哪些代码在Driver运行,哪些代码在Worker上执行
bit1129
driver
Driver Program是用户编写的提交给Spark集群执行的application,它包含两部分
作为驱动: Driver与Master、Worker协作完成application进程的启动、DAG划分、计算任务封装、计算任务分发到各个计算节点(Worker)、计算资源的分配等。
计算逻辑本身,当计算任务在Worker执行时,执行计算逻辑完成application的计算任务
- nginx 经验总结
ronin47
nginx 总结
深感nginx的强大,只学了皮毛,把学下的记录。
获取Header 信息,一般是以$http_XX(XX是小写)
获取body,通过接口,再展开,根据K取V
获取uri,以$arg_XX
&n
- 轩辕互动-1.求三个整数中第二大的数2.整型数组的平衡点
bylijinnan
数组
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ExoWeb {
public static void main(String[] args) {
ExoWeb ew=new ExoWeb();
System.out.pri
- Netty源码学习-Java-NIO-Reactor
bylijinnan
java多线程netty
Netty里面采用了NIO-based Reactor Pattern
了解这个模式对学习Netty非常有帮助
参考以下两篇文章:
http://jeewanthad.blogspot.com/2013/02/reactor-pattern-explained-part-1.html
http://gee.cs.oswego.edu/dl/cpjslides/nio.pdf
- AOP通俗理解
cngolon
springAOP
1.我所知道的aop 初看aop,上来就是一大堆术语,而且还有个拉风的名字,面向切面编程,都说是OOP的一种有益补充等等。一下子让你不知所措,心想着:怪不得很多人都和 我说aop多难多难。当我看进去以后,我才发现:它就是一些java基础上的朴实无华的应用,包括ioc,包括许许多多这样的名词,都是万变不离其宗而 已。 2.为什么用aop&nb
- cursor variable 实例
ctrain
variable
create or replace procedure proc_test01
as
type emp_row is record(
empno emp.empno%type,
ename emp.ename%type,
job emp.job%type,
mgr emp.mgr%type,
hiberdate emp.hiredate%type,
sal emp.sal%t
- shell报bash: service: command not found解决方法
daizj
linuxshellservicejps
今天在执行一个脚本时,本来是想在脚本中启动hdfs和hive等程序,可以在执行到service hive-server start等启动服务的命令时会报错,最终解决方法记录一下:
脚本报错如下:
./olap_quick_intall.sh: line 57: service: command not found
./olap_quick_intall.sh: line 59
- 40个迹象表明你还是PHP菜鸟
dcj3sjt126com
设计模式PHP正则表达式oop
你是PHP菜鸟,如果你:1. 不会利用如phpDoc 这样的工具来恰当地注释你的代码2. 对优秀的集成开发环境如Zend Studio 或Eclipse PDT 视而不见3. 从未用过任何形式的版本控制系统,如Subclipse4. 不采用某种编码与命名标准 ,以及通用约定,不能在项目开发周期里贯彻落实5. 不使用统一开发方式6. 不转换(或)也不验证某些输入或SQL查询串(译注:参考PHP相关函
- Android逐帧动画的实现
dcj3sjt126com
android
一、代码实现:
private ImageView iv;
private AnimationDrawable ad;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout
- java远程调用linux的命令或者脚本
eksliang
linuxganymed-ssh2
转载请出自出处:
http://eksliang.iteye.com/blog/2105862
Java通过SSH2协议执行远程Shell脚本(ganymed-ssh2-build210.jar)
使用步骤如下:
1.导包
官网下载:
http://www.ganymed.ethz.ch/ssh2/
ma
- adb端口被占用问题
gqdy365
adb
最近重新安装的电脑,配置了新环境,老是出现:
adb server is out of date. killing...
ADB server didn't ACK
* failed to start daemon *
百度了一下,说是端口被占用,我开个eclipse,然后打开cmd,就提示这个,很烦人。
一个比较彻底的解决办法就是修改
- ASP.NET使用FileUpload上传文件
hvt
.netC#hovertreeasp.netwebform
前台代码:
<asp:FileUpload ID="fuKeleyi" runat="server" />
<asp:Button ID="BtnUp" runat="server" onclick="BtnUp_Click" Text="上 传" />
- 代码之谜(四)- 浮点数(从惊讶到思考)
justjavac
浮点数精度代码之谜IEEE
在『代码之谜』系列的前几篇文章中,很多次出现了浮点数。 浮点数在很多编程语言中被称为简单数据类型,其实,浮点数比起那些复杂数据类型(比如字符串)来说, 一点都不简单。
单单是说明 IEEE浮点数 就可以写一本书了,我将用几篇博文来简单的说说我所理解的浮点数,算是抛砖引玉吧。 一次面试
记得多年前我招聘 Java 程序员时的一次关于浮点数、二分法、编码的面试, 多年以后,他已经称为了一名很出色的
- 数据结构随记_1
lx.asymmetric
数据结构笔记
第一章
1.数据结构包括数据的
逻辑结构、数据的物理/存储结构和数据的逻辑关系这三个方面的内容。 2.数据的存储结构可用四种基本的存储方法表示,它们分别是
顺序存储、链式存储 、索引存储 和 散列存储。 3.数据运算最常用的有五种,分别是
查找/检索、排序、插入、删除、修改。 4.算法主要有以下五个特性:
输入、输出、可行性、确定性和有穷性。 5.算法分析的
- linux的会话和进程组
网络接口
linux
会话: 一个或多个进程组。起于用户登录,终止于用户退出。此期间所有进程都属于这个会话期。会话首进程:调用setsid创建会话的进程1.规定组长进程不能调用setsid,因为调用setsid后,调用进程会成为新的进程组的组长进程.如何保证? 先调用fork,然后终止父进程,此时由于子进程的进程组ID为父进程的进程组ID,而子进程的ID是重新分配的,所以保证子进程不会是进程组长,从而子进程可以调用se
- 二维数组 元素的连续求解
1140566087
二维数组ACM
import java.util.HashMap;
public class Title {
public static void main(String[] args){
f();
}
// 二位数组的应用
//12、二维数组中,哪一行或哪一列的连续存放的0的个数最多,是几个0。注意,是“连续”。
public static void f(){
- 也谈什么时候Java比C++快
windshome
javaC++
刚打开iteye就看到这个标题“Java什么时候比C++快”,觉得很好笑。
你要比,就比同等水平的基础上的相比,笨蛋写得C代码和C++代码,去和高手写的Java代码比效率,有什么意义呢?
我是写密码算法的,深刻知道算法C和C++实现和Java实现之间的效率差,甚至也比对过C代码和汇编代码的效率差,计算机是个死的东西,再怎么优化,Java也就是和C