Entry

http请求工具-OkHttp用法

十年热恋 提交于 2020-05-05 18:03:45
OKHttp介绍 okhttp是一个第三方类库,用于android中请求网络。这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和LeakCanary) 。用于替代HttpUrlConnection和Apache HttpClient(android API23 里已移除HttpClient)。 okhttp有自己的官网,官网网址: OKHttp官网 如果想了解原码可以在github上下载,地址是: https://github.com/square/okhttp 在AndroidStudio中使用不需要下载jar包,直接添加依赖即可: compile ‘com.squareup.okhttp3:okhttp:3.4.1’ 在开发中我们会经常需要用到http请求,这里简单介绍一个http请求工具okHttp的用法 1、导入jar包 1 <dependency> 2 <groupId>com.squareup.okhttp3</groupId> 3 <artifactId>okhttp</artifactId> 4 <version>3.9.1</version> 5 </dependency> 2、为了便于以后使用,这里封装一个OkHttpUtil的工具类 get请求 1 /** 2 * get请求 3 * @param

cubic spline interpolation 概念解释和实现

元气小坏坏 提交于 2020-05-05 14:36:53
博客参考: https://blog.csdn.net/flyingleo1981/article/details/53008931 样条插值是一种工业设计中常用的、得到平滑曲线的一种插值方法,三次样条又是其中用的较为广泛的一种。本篇介绍力求用容易理解的方式,介绍一下三次样条插值的原理,并附C语言的实现代码。 1. 三次样条曲线原理 假设有以下节点 1.1 定义 条曲线 是一个分段定义的公式。给定n+1个数据点,共有n个区间,三次样条方程满足以下条件: 在每个分段区间 (i = 0, 1, …, n-1,x递增), 都是一个三次多项式 满足 (i = 0, 1, …, n ) ,导数 ,二阶导数 在[a, b]区间都是连续的,即 曲线是光滑的。 所以n个三次多项式分段可以写作: ,i = 0, 1, …, n-1 其中ai, bi, ci, di代表4n个未知系数。 1.2 求解 已知条件 n+1个数据点[xi, yi], i = 0, 1, …, n 每一分段都是三次多项式函数曲线 节点达到二阶连续 左右两端点处特性(自然边界,固定边界,非节点边界) 根据定点,求出每段样条曲线方程中的系数,即可得到每段曲线的具体表达式。 插值和连续性: , 其中 i = 0, 1, …, n-1 微分连续性: , 其中 i = 0, 1, …, n-2 样条曲线的微分式: 将步长

Linux内存初始化(二)identity mapping和kernel image mapping

 ̄綄美尐妖づ 提交于 2020-05-05 13:48:50
一、前言 本文没有什么框架性的东西,就是按照__create_page_tables代码的执行路径走读一遍,记录在初始化阶段,内核是如何创建内核运行需要的页表过程。想要了解一些概述性的、框架性的东西可以参考 内存初始化 文档。 本文的代码来自ARM64,内核版本是4.4.6,此外,阅读本文最好熟悉ARMv8中翻译表描述符的格式。 二、create_table_entry 这个宏定义主要是用来创建一个中间level的translation table中的描述符。如果用linux的术语,就是创建PGD、PUD或者PMD的描述符。如果用ARM64术语,就是创建L0、L1或者L2的描述符。具体创建哪一个level的Translation table descriptor是由tbl参数指定的,tbl指向了该translation table的内存。virt参数给出了要创建地址映射的那个虚拟地址,shift参数以及ptrs参数是和具体在哪一个entry中写入描述符有关。我们知道,在定位页表描述的时候,我们需要截取虚拟地址中的一部分做为offset(index)来定位描述符,实际上,虚拟地址右移shift,然后截取ptrs大小的bit field就可以得到entry index了。tmp1和tmp2是临时变量。create_table_entry的代码如下: .macro create

JDK1.7-LinkedList循环链表优化

旧城冷巷雨未停 提交于 2020-05-05 13:42:48
最近在看jdk1.7的时候,发现LinkedList 和1.6中的变化。 首先,简单介绍一下LinkedList: LinkedList是List接口的双向链表实现。由于是链表结构,所以长度没有限制;而且添加/删除元素的时候,只需要改变指针的指向(把链表断开,插入/删除元素,再把链表连起来)即可,非常方便,而ArrayList却需要重整数组 (add/remove中间元素)。所以LinkedList适合用于添加/删除操作频繁的情况。 --------------------------------the code -------------------------------- 在JDK 1.7之前(此处使用JDK1.6来举例),LinkedList是通过headerEntry实现的一个循环链表的。先初始化一个空的Entry,用来做header,然后首尾相连,形成一个循环链表: 在LinkedList中提供了两个基本属性size、header。 private transient Entry<E> header = new Entry<E>( null , null , null ); private transient int size = 0; 其中size表示的LinkedList的大小,header表示链表的表头,Entry为节点对象。 private static

2020面试题(答案上)

淺唱寂寞╮ 提交于 2020-05-05 12:51:03
(1)java面试题(基础+进阶)(必须) java中==和equals和hashCode的区别 ==是运算符,用来比较两个值、两个对象的内存地址是否相等; equals是Object类的方法,默认情况下比较两个对象是否是同一个对象,内部实现是通过“==”来实现的。 如果想比较两个对象的其他内容,则可以通过重写equals方法, hashCoed也是Object类里面的方法,返回值是一个对象的哈希码,同一个对象哈希码一定相等,但不同对象哈希码也有可能相等。 1、如果两个对象equals,Java运行时环境会认为他们的hashcode一定相等。 2、如果两个对象不equals,他们的hashcode有可能相等。 3、如果两个对象hashcode相等,他们不一定equals。 4、如果两个对象hashcode不相等,他们一定不equals。 int、char、long各占多少字节数(笔试题多出现) Int:4字节 chat:2字节 long\double:8字节 int与integer的区别 (笔试) 1、Integer是int的包装类,int则是java的一种基本数据类型 2、Integer变量必须实例化后才能使用,而int变量不需要 3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值 4

基于 Jepsen 来发现几个 Raft 实现中的一致性问题(2)

非 Y 不嫁゛ 提交于 2020-05-05 12:49:00
Nebula Graph 是一个高性能、高可用、强一致的分布式图数据库。由于 Nebula Graph 采用的是存储计算分离架构,在存储层实际只是暴露了简单的 kv 接口,采用 RocksDB 作为状态机,通过 Raft 一致性协议来保证多副本数据一致的问题。Raft 协议虽然比 Paxos 更加容易理解,但在工程实现上还是有很多需要注意和优化的地方。 另外,如何测试基于 Raft 的分布式系统也是困扰业界的问题,目前 Nebula 主要采用了 Jepsen 作为一致性验证工具。之前我的小伙伴已经在《 Jepsen 测试框架在图数据库 Nebula Graph 中的实践 》中做了详细的介绍,对 Jepsen 不太了解的同学可以先移步这篇文章。 在这篇文章中将着重介绍如何通过 Jepsen 来对 Nebula Graph 的分布式 kv 进行一致性验证。 强一致的定义 首先,我们需要什么了解叫强一致,它实际就是 Linearizability,也被称为线性一致性。引用《Designing Data-Intensive Applications》里一书里的定义: In a linearizable system, as soon as one client successfully completes a write, all clients reading from the

基于 Jepsen 来发现几个 Raft 实现中的一致性问题(2)

微笑、不失礼 提交于 2020-05-05 12:48:03
Nebula Graph 是一个高性能、高可用、强一致的分布式图数据库。由于 Nebula Graph 采用的是存储计算分离架构,在存储层实际只是暴露了简单的 kv 接口,采用 RocksDB 作为状态机,通过 Raft 一致性协议来保证多副本数据一致的问题。Raft 协议虽然比 Paxos 更加容易理解,但在工程实现上还是有很多需要注意和优化的地方。 另外,如何测试基于 Raft 的分布式系统也是困扰业界的问题,目前 Nebula 主要采用了 Jepsen 作为一致性验证工具。之前我的小伙伴已经在《 Jepsen 测试框架在图数据库 Nebula Graph 中的实践 》中做了详细的介绍,对 Jepsen 不太了解的同学可以先移步这篇文章。 在这篇文章中将着重介绍如何通过 Jepsen 来对 Nebula Graph 的分布式 kv 进行一致性验证。 强一致的定义 首先,我们需要什么了解叫强一致,它实际就是 Linearizability,也被称为线性一致性。引用《Designing Data-Intensive Applications》里一书里的定义: In a linearizable system, as soon as one client successfully completes a write, all clients reading from the

2018年Android面试题含答案--适合中高级(上)

时间秒杀一切 提交于 2020-05-05 12:06:53
这些面试题是我在今年年初换工作的时候整理,没有重点。包括java基础,数据结构,网络,Android相关等等。适合中高级工程师。由于内容过多,将会分为上下两部分。下部分跳转链接: https://xiaozhuanlan.com/topic/6132940875 希望能够帮到一些朋友,如果帮助到你,希望能够点个赞。没有单独分出来,面试题目都是穿插的。因为有些事外面试过程中遇到的,我就又加上去了。总之你弄懂了这些,基本是没有问题了。如果是bat那些企业,你还得准备算法,jvm这些知识。好了,废话不多说了。 1、java中==和equals和hashCode的区别 基本数据类型的==比较的值相等. 类的==比较的内存的地址,即是否是同一个对象,在不覆盖equals的情况下,同比较内存地址,原实现也为 == ,如String等重写了equals方法. hashCode也是Object类的一个方法。返回一个离散的int型整数。在集合类操作中使用,为了提高查询速度。(HashMap,HashSet等比较是否为同一个) 如果两个对象equals,Java运行时环境会认为他们的hashcode一定相等。 如果两个对象不equals,他们的hashcode有可能相等。 如果两个对象hashcode相等,他们不一定equals。 如果两个对象hashcode不相等,他们一定不equals。 2

2018年Android面试题含答案--适合中高级(上)

若如初见. 提交于 2020-05-05 12:06:37
这些面试题是我在今年年初换工作的时候整理,没有重点。包括java基础,数据结构,网络,Android相关等等。适合中高级工程师。由于内容过多,将会分为上下两部分。下部分跳转链接: https://blog.csdn.net/u014644594/article/details/105920946 希望能够帮到一些朋友,如果帮助到你,希望能够点个赞。没有单独分出来,面试题目都是穿插的。因为有些事外面试过程中遇到的,我就又加上去了。总之你弄懂了这些,基本是没有问题了。如果是bat那些企业,你还得准备算法,jvm这些知识。好了,废话不多说了。 1、java中==和equals和hashCode的区别 基本数据类型的==比较的值相等. 类的==比较的内存的地址,即是否是同一个对象,在不覆盖equals的情况下,同比较内存地址,原实现也为 == ,如String等重写了equals方法. hashCode也是Object类的一个方法。返回一个离散的int型整数。在集合类操作中使用,为了提高查询速度。(HashMap,HashSet等比较是否为同一个) 如果两个对象equals,Java运行时环境会认为他们的hashcode一定相等。 如果两个对象不equals,他们的hashcode有可能相等。 如果两个对象hashcode相等,他们不一定equals。 如果两个对象hashcode不相等

PriorityQueue和PriorityBlockingQueue

巧了我就是萌 提交于 2020-05-05 07:41:51
[toc] PriorityQueue和PriorityBlockingQueue 简介 Queue一般来说都是FIFO的,当然之前我们也介绍过Deque可以做为栈来使用。今天我们介绍一种PriorityQueue,可以安装对象的自然顺序或者自定义顺序在Queue中进行排序。 PriorityQueue 先看PriorityQueue,这个Queue继承自AbstractQueue,是非线程安全的。 PriorityQueue的容量是unbounded的,也就是说它没有容量大小的限制,所以你可以无限添加元素,如果添加的太多,最后会报OutOfMemoryError异常。 这里教大家一个识别的技能,只要集合类中带有CAPACITY的,其底层实现大部分都是数组,因为只有数组才有capacity,当然也有例外,比如LinkedBlockingDeque。 只要集合类中带有comparator的,那么这个集合一定是个有序集合。 我们看下PriorityQueue: private static final int DEFAULT_INITIAL_CAPACITY = 11; private final Comparator<? super E> comparator; 定义了初始Capacity和comparator,那么PriorityQueue的底层实现就是Array