1.JVM的内存结构和管理机制: JVM实例:一个独立运行的java程序,是进程级别 JVM执行引擎:用户运行程序的线程,是JVM实例的一部分 JVM实例的诞生 当启动一个java程序时.一个JVM实例就诞生了,任何一个拥有public static void main(string[] args)的函数都可以作为实例的运行启点 2. JVM实例运行 main作为程序初始化线程的起点,任何其他线程由其启动. JVM有两种线程:守护线程和非守护线程.守护线程由JVM使用.main启动后将是非守护线…
java中的时间操作不外乎这四种情况: 1.获取当前时间 2.获取某个时间的某种格式 3.设置时间 4.时间的运算 好,下面就针对这四种情况,一个一个搞定. 一.获取当前时间 有两种方式可以获得,第一种,使用Date类. j2SE的包里有两个Date类,一个是java.sql.Date,一个是java.util.Date 这里,要使用java.util.Date.获取当前时间的代码如下 Date date = new Date(); date.getTime(); 还有一种方式,使用System…
申明: 实习生的肤浅理解,如发现有错误之处.还望大牛们多多指点 废话 事实上我写java的后台操作,我每次都会遇到一条语句:List<XXXXX> list = new ArrayList<XXXXX>(); 可是我只不过了解,list这个类是一个可变长用来存储的对象实例的类.我甚至认为这个List对象能够理解成数组.可是却又与java中咱们正常理解的数组非常多的不同.比方说.他的长度能够随着须要自己主动增长,比方说,实例化一个List类就和咱们声明数组的时候是不一样的. 今天的实…
一.简述 JAVA中通过Jedis操作Redis连接与插入简单库 二.依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> <…
今天,学到的是java中的文件操作. Java.IO.File Java中操作文件用到RandomAccessFile类,既可以读取文件内容,也可以向文件输出数据,但不同与普通输入/输出流的是RandomAccessFile支持“随机访问”的方式,即程序可以跳转到文件的任意地方来读写数据. 局限:只能读写文件,不能读写其他IO节点 了解 (1)Java文件模型 在硬盘上是byte byte byte 储存的,是 数据的集合 (2)打开文件 两种常用模式“rw”读写方式 “r”读 (3)写方法 R…
版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/CringKong/article/details/80533917 这几天准备梳理一下Java多线程和并发的相关知识,主要是系统的梳理一下J.U.C包里的一些东西,特别是以前看过很多遍的AQS和实现类,还有各种并发安全的集合类.最重要的就是这个CAS操作,可以说是整个J.U.C包的灵魂之处. 文章目录 1.什么是CAS? 2.JAVA中的C…
一.前言 刚开始学习Java时,作为只会C语言的小白,就为其中的字符串操作而感到震撼.相比之下,C语言在字节数组中保存一个结尾的\0去表示字符串,想实现字符串拼接,还需要调用strcpy库函数或者自己手动去复制数组,非常麻烦,更别提其他复杂操作,而Java通过String类让字符串操作变得十分简单和方便.除此之外,还有stringbuilder等这些类的辅助,那么本文就从String,StringBuiler和StringBuffer的区别开始,去探讨Java中的字符串操作. 二.String,…
目录 Java中的IO操作和缓冲区 一.简述 二.IO流的介绍 什么是流 输入输出流的作用范围 三.Java中的字节流和字符流 字节流 字符流 二者的联系 1.InputStreamReader 2.OutputStreamWriter 字节流和字符流的区别 读取单位不同 执行效率不同 使用对象不同 缓冲区的使用 四.效率测试 代码测试 输入测试 输出测试 主测试类 测试结果 结果分析 五.字节序 类型 C语言中的二进制和文本文件的读取效率比较 测试代码 测试结果 结果分析 六.思考总结 参考链…
IO流是用来处理设备之间的数据传输,Java对数据的操作是通过流的方式进行,而操作流的对象都封装到java.io包中.根据操作数据的种类可以把IO流分为字节流(InputStream,OutputStream)和字符流(Reader,Writer)或者根据流的流向分为输入流(InputStream,Reader)输出流(OutputStream,Writer) 字符流中继承体系结构: 字节流中的继承体系结构: FileWriter:字符输出流专门写入文本数据,使用后需要调用flush()方法,在…
//JAVA中对arrayList的初始化,能够分配空间,不能之间让一个ArrayList赋值给另外一个ArrayList,这样是引用赋值,当一个改变时候,另外一个也改变 List<String> tmp = new ArrayList<String>(Arrays.asList(new String[sub.size()])); //python中List.append(另外一个list),当另外一个List值改变时候,List也会改变,所以一般会先声明一个list变量,将另外一…
一.InputStream重用技巧(利用ByteArrayOutputStream) 对同一个InputStream对象进行使用多次. 比如,客户端从服务器获取数据 ,利用HttpURLConnection的getInputStream()方法获得Stream对象,这时既要把数据显示到前台(第一次读取),又想把数据写进文件缓存到本地(第二次读取). 但第一次读取InputStream对象后,第二次再读取时可能已经到Stream的结尾了(EOFException)或者Stream已经close掉了…
一.GC Roots Tracing的基本思路:通过一系列名为"GC Roots"的对象作为起始点,从这些节点开始向下搜索,搜索所经过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链(用图论来说就是GC Roots到这些对象不可达)时,证明这些对象已经不可用二.Java中,可以作为GC Roots的对象包括以下几种1 虚拟机栈(桢栈中的本地变量表)中的引用的对象2 方法区中的类静态属性引用的对象3 方法区中的常量引用的对象4 本地方法栈中J…
Java的IO流是实现输入/输出的基础,它可以方便地实现数据的输入\输出操作,在Java中把不同的输入\输出源抽象为"流",通过流的方式允许Java程序使用相同的方式来访问不同的输入/输出源.stream是从起源(source)到接收(sink)的有序数据. Java把所有传统的流类型(类或抽象类)都放在java.io包中,用以实现输入\输出功能. JavaAPI 1.6中java.io包 1.子节流  * 输入字节流 * -------------|InputStream 所有输入字…
在使用计算机编程中,常常会用到对于文件的操作,以下是我对于Java中文件的相关内容学习之后的一个总结和在学习过程中遇到的一些问题. 一.什么是文件 对于文件进行操作,首先我们要知道什么是文件.在此之前,我们要知道,计算机其实就是一个文件系统.在计算机中,我们能在硬盘中看到的所有东西都叫文件.由此看来,计算机中文件是一个很广的范围.事实上,计算机中文件被分为了3种,一个是标准文件,一个是目录文件,还有一个就是虚拟内存文件. 这三种对于文件的分类没有一个明确的定义,后缀名是(.txt..doc..m…
1. 如何实现乐观锁(CAS)?如何避免ABA问题? 答:1)读取内存值的方式实现了乐观锁(比如:SVN系统),方法:第一,比较内存值和期望值:第二,替换内存值为要替换值.        2)带参数版本来避免aba问题,在读取和替换的时候进行判定版本是否一致 2. 读写锁可以用于什么应用场景? 答: 读写锁可以用于 “多读少写” 的场景,读写锁支持多个读操作并发执行,写操作只能由一个线程来操作        ReadWriteLock对向数据结构相对不频繁地写入,但是有多个任务要经常读取这个数据…
总结一些,C++ 和Java 中的一些常用操作对比,就当是自己的查询工具书啦.(暂时按随笔的更新时间排序) [Stack] c++ V.S. Java (2015.04.27) [Map]   c++ V.S. Java (2015.04.29)…
在日志中常用的记录当前时间及程序运行时长的方法: public void inject(Path urlDir) throws Exception { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); long start = System.currentTimeMillis(); LOG.info("InjectorJob: starting at " + sdf.format(…
因为对Python很熟悉,看着Java的各种字符串操作就不自觉的代入Python的实现方法上,于是就将Java实现方式与Python实现方式都写下来了. 先说一下总结,Java的字符串类String本身定义了一些简单的字符串操作, 字符串常用操作有: 1. 取某一字符第一次出现/最后一次出现的索引 2. 取字符串某一位置的字符 3. 字符串截取 4. 去除首尾空格 5. 字符串字符替换 6. 判断两个字符串是否相等 7. 大小写转换 下面开始: 1.取某一字符第一次出现/最后一次出现的索引 JA…
1.什么是jvm?(1)jvm是一种用于计算设备的规范,它是一个虚构出来的机器,是通过在实际的计算机上仿真模拟各种功能实现的.(2)jvm包含一套字节码指令集,一组寄存器,一个栈,一个垃圾回收堆和一个存储方法域.(3)JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行.JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行. 2.jdk.jre.jvm是什么关系?(1)JRE(Java…
一.java操作l流有关的类和接口 1.File 文件类 2.RandomAccessFile 随机存储文件类 3.InputStream 字节输入流 4.OutputStream 字节输出流 5.Reader 字符输入流 6.Writer 字符输出流 二.流的概念和作用 流是一组有顺序的.有起点和终点的字节集合,是对数据传输的总称活抽象.即数据在两设备之间传输称为流 流的本质是数据传输,根据数据传输特性,将流抽象为各种类,方便只管的进行数据操作 三.IO流的分类 1.根据处理数据类型的不同 分…
Java中有多种方式操作XML文件,目前讲一讲以SUN公司提供的DocumentBuilderFactory工厂类对象操作XML. 使用XML基本操作就是需要CRUD(增删改查),那么首先通过一个查询展示方法来说明JAXP的使用. public static void run1() throws Exception{ //获取解析器工厂类对象(DocumentBuilderFactory不能直接new,需要调用newInstance()方法创建实例对象) DocumentBuilderFacto…
在使用io操作之前,先看一下java中的文件类File如何使用.File包括文件和目录,对文件和目录的操作是新建目录mkdir,新建文件createNewFile,删除文件和目录delete,以及其他的一些操作. package zaojiahua; import java.io.File; import java.io.IOException; /* 对文件类的操作 */ public class Test { public static void main(String[] args) th…
在日志中常用的记录当前时间及程序运行时长的方法: public void inject(Path urlDir) throws Exception { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); long start = System.currentTimeMillis(); LOG.info("InjectorJob: starting at " + sdf.format(…
这是java高并发系列第21篇文章. 本文主要内容 从网站计数器实现中一步步引出CAS操作 介绍java中的CAS及CAS可能存在的问题 悲观锁和乐观锁的一些介绍及数据库乐观锁的一个常见示例 使用java中的原子操作实现网站计数器功能 我们需要解决的问题 需求:我们开发了一个网站,需要对访问量进行统计,用户每次发一次请求,访问量+1,如何实现呢? 下面我们来模仿有100个人同时访问,并且每个人对咱们的网站发起10次请求,最后总访问次数应该是1000次.实现访问如下. 方式1 代码如下: pack…
1.知识点 1.1.课程回顾 1.2.本章重点 1.2.1  io操作 1.2.2  对象的序列化与反序列化 2.具体内容 2.1.Java IO 2.1.1.什么是IO IO其实就是输入.输出 I InputStream 输入流 O OutputStream 输出流 Java IO即Java输入输出系统.不管我们编写何种应用,都难免和各种输入输出相关的媒介打交道,其实和媒介进行IO的过程是十分复杂的,这要考虑的因素特别多,比如我们要考虑和哪种媒介进行IO(文件.控制台.网络),我们还要考虑具体…
一.Map 名值对存储的. 常用派生类HashMap类 添加: put(key,value)往集合里添加数据 删除: clear()删除所有 remove(key)清除单个,根据k来找 获取: size()获取元素的数量 get(key)根据key获取该数据 containsKey(key)根据key查找集合中有没有该内容,有返回true ,没有返回false containsValue(value)根据value查找集合中有没有改内容,有返回true,没有返回false public stat…
前言 在Java中,有很多封装好的类可以用来操纵数组(排序,复制等等),使得数组使用起来非常的方便.这就是高级语言带来的好处. 代码示例 - 一维数组 package test; import java.util.Arrays; public class Test { public static void main(String[] args) { int []a = {1, 3, 5, 2, 4, 6}; // 将数组转换为字符串输出 System.out.println(Arrays.toS…
http://www.cnblogs.com/nerxious/archive/2013/01/03/2842910.html 正则表达式在处理字符串的效率上是相当高的 关于正则表达式的使用,更多的是自己的经验,有兴趣可以参阅相关书籍 这里主要写一下java中的正则操作方法 实例1:匹配 import java.util.Scanner; class Demo { public static void main(String[] args) { Scanner sc = new Scanner(…
import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; import java.util.ArrayList; import java.util.regex.Matc…
在shell工具中,有专门的getopt函数,使用方法如下所示: while getopts "d:t:vh" opt; do case "${opt}" in "d") DATE="${OPTARG}" ;; "t") ID="${OPTARG}" ID2=`echo $ID | awk -F "_" '{print $2}'` ;; "v")…