ava

Java对象为啥要实现Serializable接口

风流意气都作罢 提交于 2020-04-25 08:33:30
Serializable接口概述 Serializable是java.io包中定义的、用于实现Java类的序列化操作而提供的一个语义级别的接口。Serializable序列化接口没有任何方法或者字段,只是用于标识可序列化的语义。实现了Serializable接口的类可以被ObjectOutputStream转换为字节流,同时也可以通过ObjectInputStream再将其解析为对象。例如,我们可以将序列化对象写入文件后,再次从文件中读取它并反序列化成对象,也就是说,可以使用表示对象及其数据的类型信息和字节在内存中重新创建对象。 而这一点对于面向对象的编程语言来说是非常重要的,因为无论什么编程语言,其底层涉及IO操作的部分还是由操作系统其帮其完成的,而底层IO操作都是以字节流的方式进行的,所以写操作都涉及将编程语言数据类型转换为字节流,而读操作则又涉及将字节流转化为编程语言类型的特定数据类型。而Java作为一门面向对象的编程语言,对象作为其主要数据的类型载体,为了完成对象数据的读写操作,也就需要一种方式来让JVM知道在进行IO操作时如何将对象数据转换为字节流,以及如何将字节流数据转换为特定的对象,而Serializable接口就承担了这样一个角色。 下面我们可以通过例子来实现将序列化的对象存储到文件,然后再将其从文件中反序列化为对象,代码示例如下: 先定义一个序列化对象User:

AVA中CAS-ABA的问题解决方案AtomicStampedReference

梦想的初衷 提交于 2020-03-17 02:02:04
某厂面试归来,发现自己落伍了!>>> 了解CAS(Compare-And-Swap) CAS即对比交换,它在保证数据原子性的前提下尽可能的减少了锁的使用,很多编程语言或者系统实现上都大量的使用了CAS。 JAVA中CAS的实现 JAVA中的cas主要使用的是Unsafe方法,Unsafe的CAS操作主要是基于硬件平台的汇编指令,目前的处理器基本都支持CAS,只不过不同的厂家的实现不一样罢了。 Unsafe提供了三个方法用于CAS操作,分别是 public final native boolean compareAndSwapObject(Object value, long valueOffset, Object expect, Object update); public final native boolean compareAndSwapInt(Object value, long valueOffset, int expect, int update); public final native boolean compareAndSwapLong(Object value, long valueOffset, long expect, long update); value 表示 需要操作的对象 valueOffset 表示 对象(value)的地址的偏移量(通过

Ava split tests Into multiple files

谁说胖子不能爱 提交于 2019-12-20 05:58:40
问题 As ava documentation says I should create a file named test.js to my root's project. But having a single file for my tests seems a recipe for maintenance nightmares. Thus I want to split my tests into multiple files into a folder named tests and somehow run them from test.js file. For example let us suppose we have a test named ./tests/basic-tests.js and has this code: import test from ava; import {Calculator} from calculator; test('it calculates',t =>{ //Some test here }); And have an

Unit testing react actions - browserHistory is undefined

北慕城南 提交于 2019-12-12 11:05:12
问题 I writing tests for my actions, that using { browserHistory } from 'react-router'; And when i'm running my tests, imported browserHistory is undefined for unknown reasons. Therefore, test throws an error - "Cannot read property 'push' of undefined"; I don't know, why browserHistory is undefined, if it works in my app. Can somebody help me? 回答1: I will guess you are not using karma or any browser to run your test. The object browserHistory will be undefined if there is not a browser. You may

ava dynamic syntax import enable support

偶尔善良 提交于 2019-12-11 17:07:09
问题 I'm trying to enable dynamic import syntax in my ava config. I found that standard configuration (and other) from this subject doesn't work ava: SyntaxError: Unexpected token import. My project is really simple . ├── package.json ├── router │ └── index.js ├── test │ ├── order │ │ └── actions.spec.js │ └── setup.js ├── utils.js ├── webpack.config.ava.js ├── webpack.config.js └── yarn.lock package.json -many libs are not used yet but It's a part of bigger project so I'll need all dependencies

Supertest request with CSRF fails

拟墨画扇 提交于 2019-12-11 15:23:04
问题 I have an Express 4 application that makes user of csurf for CSRF protection on API routes. The application is working perfectly and CSRF protection is indeed working where requests without the csrf-token header will give the appropriate error. I make use of Ava for testing with supertest for testing routes. The following test fails when CSRF checking is enabled but passes if I remove the middleware: test('booking api no auth', async t => { t.plan(4) const server = await request(makeServer(t

java 数字保留2位小数 格式化为价格类型

旧时模样 提交于 2019-12-09 15:55:17
ava保留两位小数问题: 方式一: double f = 3.1516; BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); 方式一中使用BigDecimal中的设置精确值,会四舍五入 保留两位小数 --------------------------------------------------------------- 方式二: java.text.DecimalFormat df =new java.text.DecimalFormat("#.00"); df.format(你要格式化的数字); 例:new java.text.DecimalFormat("#.00").format(3.1415926) #.00 表示两位小数 #.0000四位小数 以此类推... 方式三: double d = 3.1415926; String result = String .format("%.2f",d); %.2f %. 表示 小数点前任意位数 2 表示两位小数 格式后的结果为f 表示浮点型 方式四: NumberFormat ddf1=NumberFormat.getNumberInstance() ; void

Problems with ava asynchronous tests when stubbing with sinon

家住魔仙堡 提交于 2019-12-06 01:31:27
问题 I have a couple of tests I'd like to run on the .then and .catch blocks of one of my dependencies. import test from 'ava'; import sinon from 'sinon'; // Fake dependency code - this would be imported const myDependency = { someMethod: () => {} }; // Fake production code - this would be imported function someCode() { return myDependency.someMethod() .then((response) => { return response; }) .catch((error) => { throw error; }); } // Test code let sandbox; test.beforeEach(() => { sandbox = sinon

Part 001: 并发编程面临的挑战

半腔热情 提交于 2019-12-04 18:37:22
并发编程的目的是为了让程序执行的更快,而不是启动更多的线程让程序最大幅度的并发执行。 1.上下文切换 CPU通过时间片分配算法来循环执行任务,任务从保存到再加载的过程就是一次上下文切换。 如何减少上下文切换:无锁并发编程,CAS算法,使用最少线程,协程。 无所并发编程:多线程竞争锁时,会引起上下文切换。为了避免锁,如将数据的ID按照Hash算法取模分段,不同线程处理不同段的数据。 CAS算法:Java的Atomic包使用CAS算法来更新数据,而不需要加锁。 使用最少线程:避免创建不需要的线程,如任务很少,但创建了许多线程,这样会导致大量线程处于等待状态。 协程:在单线程里实现多任务的调度,并在单线程里维持多个任务间的切换。 减少上下文切换方法: // 1.将线程信息dump到home/dumpfile/dumpmsg31212文件中 sudo -u admin /opt/software/java/bin/jstack 31212 > /home/dumpfile/dumpmsg31212 // 2.统计所有线程分别处于什么状态 grep ava.lang.Thread.State dumpmsg31212 | awk '{print $2$3$4$5}' | sort | uniq -c // 3.打开dump文件查看处于WAITING的线程在做什么 // 4

全面解读GMAT语法比较题知识点,掌握这些就够了

China☆狼群 提交于 2019-12-04 15:42:49
本文共分为六大部分,这六个部分分别为比较题的四大考点、主语比较、状语比较、宾语比较、介宾比较和其它常考比较题知识点。在这六大部分下面有详细讲解了具体的小分类,应该说这篇文章对 GMAT句子 改错常考的比较题的讲解时非常详细的。请同学们务必要认真阅读,差缺不漏,牢记并灵活运用自己还未掌握的知识点。 一、比较的四大考点 1、 比较中的平行省略 即比较的两个对象,什么该省略,什么时候助动词要补出,什么时候所有词都要补出等等,具体原则请看下面的“比较总原则“. 2、 比较中的逻辑平行 即被比较的两个对象要是同类同性质可比的,比如Tom和Anne就可以比,Tom的成绩和Anne就不能比。 3、固定搭配:例如the same,as„ 4、 倍数的应用. 比较总原则:判断是什么成分在作比较,同时注意相同成分的省略! 二、主语比较 (1)对主谓宾全的句型主语比较:A do sth than B do.AB为对等名词,加do是为了显示这是一个可以发出动作的名词,因而确定是主语,进而确定是主语对比。时态要据后定。There be 句型等同于一般的主谓宾俱全的句型。 (2)对只有主谓,没有宾语的句子,因为没有宾语,只可能有主语比较,因而不需要重复do来确认这是一个可发出动作的主语,所以其比较形式如下:如果主语有定语成分,必须要that/those来指代: I eat faster than you