JDK

R 读取xls/xlsx文件

被刻印的时光 ゝ 提交于 2020-11-02 20:15:23
包 readxl install.packages('readxl',repois='https://mirrors.utsc.edu.cn/CRAN/) library(readxl) # read_excel()自动识别xls/xlsx # read_xls()读取xls # read_xlsx()读取xlsx data <- read_xlsx("d:/data/ch01.xlsx",na="NA") 包 xlsx 依赖 rJava ,需要JAVA环境(JDK或JRE) install.packages('xlsx',repois='https://mirrors.utsc.edu.cn/CRAN/) library(xlsx) #一般会报错 一般地,如果Windows系统中已经安装了JDK或JRE,32位的用32位的R,64位的用64位的R,不会报错。 JRE的jvm.dll位于/bin/client文件夹中。JDK的位于/JRE/server文件夹中。有人建议将jvm.dll所在的文件夹加入系统路径,如下操作(本计算机中已经安装了JRE1.8.0_131(32位),jvm.dll位于"client"文件夹中): 我的计算机-右键-高级系统设置-环境变量,编辑“系统变量”中的Path,在前面加入"C:\Program Files (x86)\Java\jre1.8.0

synchronized和lock两种悲观锁的比较

。_饼干妹妹 提交于 2020-11-02 19:41:31
synchronized和lock 都属于悲观锁,都是采取加锁的机制进行同步。 1. synchronized和lock的性能比较 在JDK1.5中,synchronized是性能低效的。因为这是一个重量级操作,它对性能最大的影响是阻塞的是实现,挂起线程和恢复线程的操作都需要转入内核态中完成,这些操作给系统的并发性带来了很大的压力。相比之下使用Java提供的Lock对象,性能更高一些。在资源竞争不是很激烈的情况下,Synchronized的性能要优于ReetrantLock,但是在资源竞争很激烈的情况下,Synchronized的性能会下降几十倍,但是ReetrantLock的性能能维持常态; 到了JDK1.6,发生了变化,对synchronize加入了很多优化措施,有自适应自旋,锁消除,锁粗化,轻量级锁,偏向锁等等。导致在JDK1.6上synchronize的性能并不比Lock差。官方也表示,他们也更支持synchronize,在未来的版本中还有优化余地,所以还是提倡在synchronized能实现需求的情况下,优先考虑使用synchronized来进行同步。 2.synchronized和lock的用法比较 基本语法上,ReentrantLock与synchronized很相似,它们都具备一样的线程重入特性。synchronized是在JVM层面上实现的

LeetCode算法题-Can Place Flowers(Java实现)

て烟熏妆下的殇ゞ 提交于 2020-11-02 14:26:17
这是悦乐书的第 272 次更新,第 287 篇原创 <br/> 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第140题(顺位题号是605)。假设你有一个花坛,其中一些地块是种植的,有些则不是。 然而,花不能种植在相邻的地块,因为它们会争夺水,两者都会死亡。给定一个花坛(表示为包含0和1的数组,其中0表示空,可以种植,1表示不为空,不能种植)和数字n,如果可以在其中种植n个新花而不违反无邻花规则则返回true。例如: 输入:花坛=[1,0,0,0,1],n = 1 输出:true 输入:花坛=[1,0,0,0,1],n = 2 输出:false 注意: 输入数组不会违反无邻花规则。 输入数组大小在[1,20000]范围内。 n是一个非负整数,不会超过输入数组大小。 本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。 <br/> 02 第一种解法 要想种花,即当前地块是可以种植的(值为0),需要满足两个条件:当前地块的前一个地块是可以种植的(值也为0),当前地块的后一个地块也是可以种植的(值也为0),把满足这些条件的地块数加起来,判断与给定的花数量的大小,来返回true或者false。在这里,我们使用三个布尔值来判断,第二个布尔值与第三个布尔值表示了刚刚分析的两种情况,第一个布尔值是初始条件

LeetCode算法题-Flood Fill(Java实现)

*爱你&永不变心* 提交于 2020-11-02 13:56:56
这是悦乐书的第 306 次更新,第 325 篇原创 <br/> 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第173题(顺位题号是733)。图像由二维整数数组表示,每个整数表示图像的像素值(从0到65535)。给定表示泛洪填充的起始像素(行和列)的坐标(sr,sc)和像素值newColor,进行“泛洪填充”图像。 要执行“泛洪填充”,请考虑起始像素,以及与起始像素相同颜色的起始像素4向连接的任何像素,以及与这些像素4向相连的任何像素(也使用与起始像素),依此类推。用newColor替换所有上述像素的颜色。最后,返回修改后的图像。例如: 输入:image = [[1,1,1],[1,1,0],[1,0,1]] sr = 1,sc = 1,newColor = 2 输出:[[2,2,2],[2,2,0],[2,0,1]] 说明:从图像的中心(位置(sr,sc)=(1,1)),连接所有像素通过与起始像素相同颜色的路径用新颜色着色。 <br/> 注意: 图像和图像[0]的长度将在[1,50]范围内。 给定的起始像素将满足0 <= sr <image.length和0 <= sc <image [0] .length。 image [i] [j]和newColor中每种颜色的值将是[0,65535]中的整数。 本次解题使用的开发工具是eclipse

netty案例,netty4.1中级拓展篇七《Netty请求响应同步通信》

我的梦境 提交于 2020-11-02 13:56:08
前言介绍 在我们实现开发RPC框架的时候,需要选择socket的通信方式。而我们知道一般情况下socket通信类似与qq聊天,发过去消息,什么时候回复都可以。但是我们RPC框架通信,从感觉上类似http调用,需要在一定时间内返回,否则就会发生超时断开。这里我们选择netty作为我们的socket框架,采用future方式进行通信。 Dubbo:国内最早开源的 RPC 框架,由阿里巴巴公司开发并于 2011 年末对外开源,仅支持 Java 语言。 Motan:微博内部使用的 RPC 框架,于 2016 年对外开源,仅支持 Java 语言。 Tars:腾讯内部使用的 RPC 框架,于 2017 年对外开源,仅支持 C++ 语言。 Spring Cloud:国外 Pivotal 公司 2014 年对外开源的 RPC 框架,仅支持 Java 语言 gRPC:Google 于 2015 年对外开源的跨语言 RPC 框架,支持多种语言。 Thrift:最初是由 Facebook 开发的内部系统跨语言的 RPC 框架,2007 年贡献给了 Apache 基金,成为 Apache 开源项目之一,支持多种语言。 hprose:一个MIT开源许可的新型轻量级跨语言跨平台的面向对象的高性能远程动态通讯中间件。它支持众多语言:nodeJs, C++, .NET, Java, Delphi,

哈KK成长之路--集合框架

北城余情 提交于 2020-11-02 13:09:14
认识集合以及常用方法 认识集合 Java集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection接口又有三种子类型,List,Set和Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList , LinkedList HashSet ,LinkedHashSet, HashMap ,LinkedHashMap等等。 以下是集合框架体系图 ArrayList 常用方法 如何遍历输出一个ArrayList集合中的元素是十分重要且经常要用到的方法 ArrayList alist = new ArrayList ( ) ; alist . add ( 31 ) ; alist . add ( "rapper虫儿飞" ) alist . add ( "哦哈" ) //循环遍历 for ( int i = 0 ; i < alist . size ( ) ; i ++ ) { System . out . print ( alist . get ( i ) + "\t" ) ; } System . out . println ( "--------------------------" ) ; //增强for 循环 for ( Object o : alist ) { System

13 张图解 Java 中的内存模型

倖福魔咒の 提交于 2020-11-02 12:58:16
作者 | Carson_Ho 来源 | juejin.im/post/6844903677279338509 前言 了解Java中的对象、变量等存放的内存区域十分重要 本文将全面讲解Java虚拟机中的内存模型 & 分区,希望你们会喜欢 目录 1. 内存模型 & 分区 Java虚拟机在运行Java程序时,会管理着一块内存区域:运行时数据区 在运行时数据区里,会根据用途进行划分: Java虚拟机栈(栈区) 本地方法栈 Java堆(堆区) 方法区 程序计数器 下面,我将详细介绍每个内存模型分区 2. Java堆 简介 3. Java虚拟机栈 简介 4. 本地方法栈 简介:十分类似Java虚拟机栈,与Java虚拟机区别在于:服务对象,即Java虚拟机栈为执行 Java 方法服务;本地方法栈为执行 Native方法服务 5. 方法区 简介 注:其内部包含一个运行时常量池,具体介绍如下: 6. 程序计数器 简介 7. 额外知识:直接内存 定义:NIO类(JDK1.4引入)中基于通道和缓冲区的I/O方式 通过使用Native函数库 直接分配 的堆外内存 特点:不受堆大小限制 不属于虚拟机运行时数据区的一部分 & 不在堆中分配 应用场景:适用于频繁调用的场景 通过一个 存储在Java堆中的DirectByteBuffer对象 作为这块内存的引用 进行操作,从而避免在 Java 堆和

Python安装教程

假装没事ソ 提交于 2020-11-02 06:41:53
因为电脑重装了 Win7系统,所以又重新百度了一把Python的安装教程,真是好记性不如烂笔头,这次将安装步骤记录下来,以便今后方便查找。 第一步:我选择安装Python2.7,因为Python2.7是之前的版本与3.0的过渡,而且目前3.0又有许多不支持的库啊等等,所以Python2.7不失为一个很好的选择。 Python最新源码,二进制文档,新闻资讯等可以在Python的官网查看到: Python官网: http://www.python.org/ 你可以在一下链接中下载Python的文档,你可以下载 HTML、PDF 和 PostScript 等格式的文档。 Python文档下载地址: www.python.org/doc/ Window 平台安装 Python: 以下为在 Window 平台上安装 Python 的简单步骤: 打开WEB浏览器访问 http://www.python.org/download/ 在下载列表中选择Window平台安装包,包格式为: python-XYZ.msi 文件 , XYZ 为你要安装的版本号。 要使用安装程序 python-XYZ.msi , Windows系统必须支持Microsoft Installer 2.0搭配使用。只要保存安装文件到本地计算机,然后运行它,看看你的机器支持MSI。Windows XP和更高版本已经有MSI

Java学习笔记之集合

狂风中的少年 提交于 2020-11-02 05:32:37
概述: List , Set, Map都是接口,前两个继承至Collection接口, Map为独立接口, 2, Set下有HashSet,LinkedHashSet,TreeSet 3,List下有ArrayList,Vector,LinkedList 4, Map下有Hashtable,LinkedHashMap,HashMap,TreeMap 5,Collection接口下还有个Queue接口,有PriorityQueue类 注意: 1,Queue接口与List、Set同一级别,都是继承了Collection接口。 2, 看图你会发现,LinkedList既可以实现Queue接口,也可以实现List接口.只不过呢, LinkedList实现了Queue接口。Queue接口窄化了对LinkedList的方法的访问权限 (即在方法中的参数类型如果是Queue时,就完全只能访问Queue接口所定义的方法 了,而不能直接访问 LinkedList的非Queue的方法),以使得只有恰当的方法才可以使用。 3,SortedSet是个接口,它里面的(只有TreeSet这一个实现可用)中的元素一定是有序的。 Connection接口: ======================================== ArrayList(1) 有序,可重复 初始容量10 加载因子 1 扩容1

IntegerCache的妙用和陷阱!

别说谁变了你拦得住时间么 提交于 2020-11-01 18:24:25
考虑下面的小程序,你认为会输出为什么结果? public class Test { public static void main(String[] args) { Integer n1 = 123; Integer n2 = 123; Integer n3 = 128; Integer n4 = 128; System.out.println(n1 == n2); System.out.println(n3 == n4); } } 答案如下,请选择刮开: true false 是否和你预想的一致? 我们知道==比较的是对象的引用,那这里为什么会这出这种情况呢? 原理 首先这是JDK在1.5版本中添加的一项新特性,把-128~127的数字缓存起来了,用于提升性能和节省内存。所以这个范围内的自动装箱(相当于调用valueOf(int i)方法)的数字都会从缓存中获取,返回同一个数字,所以现在你理解为什么了吧。同时这也会给我们开发带来预想不到的陷阱,直得注意!! 而我们通过new Integer(1)这样就不会从缓存中获取,大家可以自行测试。 我们来翻看下jdk中Integer的源码 上面是IntegerCache的源码,把从-128~high放在缓存中 上面是valueOf的源码,先从缓存中获取,获取不到再new一个返回 从源码里面我们可以看到最小边界是-128,最大边界可以通过