assert

SQLite入门与分析(五)---Page Cache之并发控制

对着背影说爱祢 提交于 2019-12-29 03:02:33
写在前面:本节主要谈谈SQLite的锁机制,SQLite是基于锁来实现并发控制的,所以本节的内容实际上是属于事务处理的,但是SQLite的锁机制实现非常的简单而巧妙,所以在这里单独讨论一下。如果真正理解了它,对整个事务的实现也就理解了。而要真正理解SQLite的锁机制,最好方法就是阅读SQLite的源码,所以在阅读本文时,最好能结合源码。SQLite的锁机制很巧妙,尽管在本节中的源码中,我写了很多注释,也是我个人在研究时的一点心得,但是我发现仅仅用言语,似乎不能把问题说清楚,只有通过体会,才能真正理解SQLite的锁机制。好了,下面进入正题。 SQLite的并发控制机制是采用加锁的方式,实现非常简单,但也非常的巧妙,本节将对其进行一个详细的解剖。 请仔细阅读下图,它可以帮助更好的理解下面的内容。 1、RESERVED LOCK RESERVED锁意味着进程将要对数据库进行写操作。某一时刻只能有一个RESERVED Lock,但是RESERVED锁和SHARED锁可以共存,而且可以对数据库加新的SHARED锁。 为什么要用RESERVED锁? 主要是出于并发性的考虑。 由于SQLite只有库级排斥锁(EXCLUSIVE LOCK),如果写事务一开始就上EXCLUSIVE锁,然后再进行实际的数据更新,写磁盘操作,这会使得并发性大大降低。而SQLite一旦得到数据库的RESERVED锁

Is assert evil? [closed]

走远了吗. 提交于 2019-12-29 02:18:44
问题 As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance. Closed 7 years ago . The Go language creators write: Go doesn't provide assertions. They are undeniably convenient, but our experience has been that

java 英文单词纠正校验框架(Word Checker)

一世执手 提交于 2019-12-29 02:14:55
Word Checker 本项目用于单词拼写检查。 项目简介 word checker 用于单词拼写检查。 Github 地址 特性说明 支持 i18n 错误提示支持 i18N 支持英文的单词纠错 可以迅速判断当前单词是否拼写错误 可以返回最佳匹配结果 可以返回纠正匹配列表,支持指定返回列表的大小 后续将会添加的新功能 英文单词支持自行定义 中文单词的拼写是否正确功能添加 快速开始 JDK 版本 JDK1.7 及其以后 入门例子 maven 引入 本项目已经上传到 maven 仓库,直接引入即可 <dependency> <groupId>com.github.houbb</groupId> <artifactId>word-checker</artifactId> <version>0.0.1</version> </dependency> 测试案例 Main.java public static void main(String[] args) { final String result = EnWordChecker.getInstance().correct("speling"); System.out.println(result); } 结果为 spelling 英文拼写纠错功能介绍 备注 所有方法为 EnWordChecker 类下。 功能 方法 参数 返回值 备注

Hotspot 垃圾回收之BarrierSet(二) 源码解析

ぃ、小莉子 提交于 2019-12-28 20:18:41
目录 一、CardTableExtension 1、定义 2、resize_covered_region 二、G1SATBCardTableLoggingModRefBS 1、write_ref_field_pre_work /write_ref_array_pre 2、set_card_claimed /g1_mark_as_young /mark_card_deferred 三、G1SATBCardTableLoggingModRefBS 1、构造方法和initialize 2、G1SATBCardTableLoggingModRefBSChangedListener 3、write_ref_field_work /write_region_work /write_ref_array_work /invalidate 4、resize_covered_region 本篇继续上一篇 《Hotspot 垃圾回收之BarrierSet(一) 源码解析》 探讨BarrierSet其他的子类的实现。 一、CardTableExtension 1、定义 CardTableExtension的定义在hotspot/src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.hpp中

在Python中使用“assert”有什么用?

Deadly 提交于 2019-12-28 16:42:57
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 我一直在阅读一些源代码,在一些地方我已经看到了 assert 的用法。 这究竟是什么意思? 它的用途是什么? #1楼 断言语句有两种形式。 简单的形式, assert <expression> ,相当于 if __​debug__: if not <expression>: raise AssertionError 扩展形式 assert <expression1>, <expression2> 等同于 if __​debug__: if not <expression1>: raise AssertionError, <expression2> #2楼 这是一个简单的例子,将其保存在文件中(假设为b.py) def chkassert(num): assert type(num) == int chkassert('a') 和 $python b.py 时的结果 Traceback (most recent call last): File "b.py", line 5, in <module> chkassert('a') File "b.py", line 2, in chkassert assert type(num) == int AssertionError #3楼 断言是一种系统的方法

Freeing memory allocated in a different DLL

喜欢而已 提交于 2019-12-28 06:33:06
问题 I have an EXE file using a DLL file which is using another DLL file. This situation has arisen: In DLL file 1: class abc { static bool FindSubFolders(const std::string & sFolderToCheck, std::vector< std::string > & vecSubFoldersFound); } In DLL file 2: void aFunction() { std::vector<std::string> folders; std::string sLocation; ... abc::FindSubFolders(sLocation, folders) } In release mode, everything works fine. But in debug mode, I come up with an assertion failure in the destructor of one of

org.junit.Assert中的assertEquals(long,long)

懵懂的女人 提交于 2019-12-28 03:29:16
首先使用这个方法的前提是要导入Junit的包,这样就可以使用@Test单元测试了 idea自动导入Junit方法 在方法头上编写org.junit.Test然后根据快捷键的提示导入相关包 这样Junit就导进来啦 其次就开始使用assertEquals(long,long)方法,这个方法有很多种,这里就介绍这一种 导入Assert包----->import org.junit.Assert; Assert.assertEquals(long,long); 下面介绍方法的使用: 该方法的作用是比较两个long类型的数值是否相等,所以该方法的两个参数为long类型.当然也可以为long的包装类 返回值 1.如果传入的两个参数为long类型,且值相等,那么该方法没有返回值. 2.如果传入的两个参数的值不相等,那么最终将会返回不相等的结果,返回的结果大致意思是两个参数最终不相等 3.如果传入的两个参数的值相等,但是类型不同,那么最终将会返回经过底层方法比较后的结构,返回的结果大致意思就是值相等但是类型不同 第一层比较,如果这两个参数的数值相等,就不会进入该if判断,不会再向下执行,所以由此得出,如果向该方法中传入两个相等的参数那么该方法不会做出任何的返回值. otherwise 还存在两种情况 case one:传入的参数的类型不同但是在第一层比较中失败

Reliably determine the number of elements in an array

a 夏天 提交于 2019-12-28 02:55:06
问题 Every C programmer can determine the number of elements in an array with this well-known macro: #define NUM_ELEMS(a) (sizeof(a)/sizeof 0[a]) Here is a typical use case: int numbers[] = {2, 3, 5, 7, 11, 13, 17, 19}; printf("%lu\n", NUM_ELEMS(numbers)); // 8, as expected However, nothing prevents the programmer from accidentally passing a pointer instead of an array: int * pointer = numbers; printf("%lu\n", NUM_ELEMS(pointer)); On my system, this prints 2, because apparently, a pointer is twice

排序---归并排序

我们两清 提交于 2019-12-27 19:10:52
写在前面的话: 一枚自学Java和算法的工科妹子。 算法学习书目:算法(第四版) Robert Sedgewick 算法视频教程:Coursera A lgorithms Part1&2 本文是根据《算法(第四版)》的个人总结,如有错误,请批评指正。 一、归并排序介绍 归并排序 (Mergesort)是建立在归并操作上的一种有效的排序算法,该算法是采用 分治法 (Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 归并过程 :比较a[i]和a[j]的大小,若a[i]≤a[j],则将第一个有序表中的元素a[i]复制到aux[k]中,并令i和k分别加上1;否则将第二个有序表中的元素a[j]复制到aux[k]中,并令j和k分别加上1,如此循环下去,直到其中一个有序表取完,然后再将另一个有序表中剩余的元素复制到aux中从下标k到下标t的单元。归并排序的算法我们通常用递归实现,先把待排序区间[s,t]以中点二分,接着把左边子区间排序,再把右边子区间排序,最后把左区间和右区间用一次归并操作合并成有序的区间[s,t]。 分治法 解题的一般步骤: (1)分解,将要解决的问题划分成若干规模较小的同类问题; (2)求解,当子问题划分得足够小时,用较简单的方法解决;

「译」JUnit 5 系列:环境搭建

僤鯓⒐⒋嵵緔 提交于 2019-12-27 14:32:33
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 原文地址: http://blog.codefx.org/libraries/junit-5-setup/ 原文日期:15, Feb, 2016 译文首发: Linesh 的博客:环境搭建 我的 Github: http://github.com/linesh-simplicity 2015年11月, Junit Lambda 团队发布了该项目的 第一版原型 。此后,该项目把名称改成了 JUnit 5 并独立了出来,随后在2016年2月份的时候发布了一个 alpha 版本。本篇打算以一系列文章,简短地探索一下以下几个方面: 环境搭建 基础入门 架构体系 扩展模型(Extension Model) 条件断言 注入 动态测试 ... (如果不喜欢看文章,你可以 戳这里看我的演讲 ,或者 看一下最近的 vJUG 讲座 ,或者 我在 DevoxxPL 上的 PPT 。 本篇将介绍 JUnit 5 的环境搭建,看完之后你应该能够使用新的 API 来撰写测试,并且使用你喜欢的 IDE 或构建工具来跑这些测试了。 概述 本系列文章都基于 Junit 5发布的先行版 Milestone 2 。它可能会有变化。如果有新的里程碑(milestone)版本发布,或者试用版正式发行时,我会再来更新这篇文章。