2 Pikaqiu_li

尚未进行身份认证

暂无相关描述

等级
TA的排名 16w+

2019携程校园招聘编程题(2)取满足条件订单号

/***6找出满足给定范围的订单号*输入:*订单数N*给定入店时间*订单号1入店时间1离店时间1*订单号2入店时间2离店时间2*订单号3入店时间3离店时间3*...*订单号N入店时间N离店时间N**输出:*升序排...

2018-09-06 11:33:30

Java中遍历Map的几种方法

 java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8Lambda,让我们一起来看下具体的用法以及各自的优缺点先初始化一个mappublicclassTestMap{publicstaticMap<Integer,Integer>map=newHashMap<Integer,Int...

2018-07-16 17:41:49

高效并发之锁优化

自旋----优化---->适应性自旋(AdaptiveSpinning):用于线程占用共享数据时间很短的情况下。锁消除(LockElimination):用于实际上不需要加锁的情况。锁粗化(LockCoarsening):用于频繁加锁解锁的情况。轻量级锁(LightweightLocking):相对于使用互斥量的传统锁,轻量级锁并不是用来代替重量级锁的。他的本意是在没有多线程竞争的前...

2018-06-25 22:36:18

高效并发之线程安全

高效并发:首先需要保证并发的正确性,然后在此基础上实现高效。1、Java语言中的线程安全不可变绝对线程安全相对线程安全线程兼容线程对立2、线程安全的实现方法互斥同步非阻塞同步无同步方案...

2018-06-25 22:21:47

被synchronized修饰的方法特别之处

synchronized关键字修饰一个方法,可以保证多线程状态下,该方法的调用对象是同步变化的。如下例所示:两个线程同时调用vector的remove方法对vector变量进行操作,vector的长度是连续变化的。(Vector是线程安全的,Vector类中的方法都被synchronized修饰,当然包括remove()方法)publicclass_Main{ privatestati...

2018-06-12 22:07:43

字符串拼接:String 的“+”、concat()方法 VS StringBuilder( or StringBuffer) 的append()方法

字符串拼接的三种方法:①加号"+"②concat()方法 ③StringBuilder(或StringBuffer)的append()方法一般来讲,拼接速度:3>2>1原因:1、对+号来说每趟循环都会创建一个StringBuilder对象;每次执行完毕都会调用toString方法将其转换为字符串。不适用于循环操作。Stringstr="Mynameis";st...

2018-06-11 22:08:51

线程

        并发不一定要依赖多线程(如PHP中很常见的多进程并发)。但是Java里面谈论并发,大多数都与线程脱不开关系。每个已经执行start()且还未结束的java.lang.Thread类的实例就代表了一个线程。Thread类的所有关键方法都是声明为Native的。在JavaAPI中,一个Native方法往往意味着这个方法没有使用或无法使用平台无关的手段来实现(也可能是为了执行效率而使用...

2018-06-10 18:48:47

Java内存模型(JMM)、“先行发生”原则

Java内存模型(JavaMemoryModel,JMM)的主要目标是定义程序各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。JMM规定所有变量都存储在主内存(MainMemory)中,线程间变量值的传递均需要通过主内存来完成。内存间交互操作JMM定义了8种操作来完成主内存与工作内存之间的交互,这8种操作具有原子性、不可再分性(对于double、long类型...

2018-06-04 22:41:18

早期(编译期)优化(一)----编译过程

编译过程大致分为三个过程:解析与填充符号表过程插入式注解处理器的注解处理过程分析与字节码生成过程下面详细说明这三个过程的主要内容1.解析与填充符号表过程1.2解析结果包括词法分析和语法分析,词法分析是将源代码的字符流转变为标记(Token)集合语法分析是根据Token序列来构造抽象语法树的过程,抽象语法树(AST,AbstractSyntaxTree)是一种用来描述程序代码语法结构的树形表示方...

2018-05-30 22:21:36

IT部分小知识点笔记

1、存取速度比较L3高速缓存>内存>SSD固态硬盘>7200转硬盘2、进程的特性动态性    进程的实质是进程实体的一次执行过程,由创建而产生,由调度而执行,由撤销而消亡。并发性  引入进程的目的正是为了使其能和其他进程实体并发执行独立性  进程实体是一个能独立运行、独立分配资源和独立接收调度的单元,凡未建立PCB(进程管理块)的程序都不能作为一个独立的单元参与运行异步性...

2018-05-23 21:36:56

GC回收之四:JDK主要命令行工具 & 可视化工具

SunJDK监控和故障处理工具:jps(JVMProcessStatusTool) 虚拟机进程状况工具,显示指定系统内所有的HotSpot虚拟机进程jstat(JVMStatisticsMonitoringTool) 虚拟机统计信息监视工具,用于收集HotSpot虚拟机各方面的运行数据jinfo(ConfigurationInfoforJava)Java配置信息工具,显示...

2018-05-05 19:13:49

GC回收之三:内存分配

自动内存管理主要解决了两个问题:给对象分配内存和回收分配给对象的内存。对象的内存分配,主要是在堆上分配(有些可能经过JIT编译后被拆散为标量类型并间接地在栈上分配),对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配。少数情况下也可能会直接分配在老年代中,分配的具体规则取决于当前使用的是哪一种垃圾收集器,还有虚拟机中与内存相关的参数的设置。下面介绍几条最...

2018-05-05 15:54:02

GC回收之二:4种垃圾收集算法及7种垃圾收集器

本文主要介绍4种垃圾收集算法及8种垃圾收集器:垃圾收集算法1、标记-清除算法(Mark-Sweep)“标记-清除”算法是最基础的算法,分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。它主要由两个缺点:一个是效率问题,标记和清除过程的效率都不高;另一个是空间问题,标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致当程序在以后的运行过程...

2018-05-04 10:06:22

GC回收之一:判断对象存活算法、四种引用、回收方法区

    当需要排查各种内存溢出、内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,就需要对GC和内存分配的技术实施必要的监控和调节。判断对象是否存活的算法:1、引用计数算法   给对象添加一个引用计数器,当有一个地方引用它时,计数器值就加1;当引用失效时,计数器就减1;任何时候计数器都为0的对象就是不可能再被使用的。引用计数器算法(ReferenceCounting)实现简单...

2018-05-01 21:51:17

内存溢出异常(OutOfMemoryError)

   在Java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError(OOM)异常的可能。虚拟机启动参数的设置:    如果使用控制台命令来执行程序,那么直接跟在Java命令之后书写即可。    如果使用EclipseIDE,则可以在Debug/Run页签设置(DebugConfigurations->Arguments-&gt...

2018-04-27 10:18:55

访问对象两种方式--句柄和直接指针

      由于reference类型在Java虚拟机规范里只规定了一个指向对象的引用,并没有定义这个引用应该通过哪种方式去定位,以及访问到Java堆中的对象的具体位置,因此不同虚拟机实现的对象访问方式会有所不同,主流的访问方式有两种:使用句柄和直接指针。1、使用句柄访问方式如果使用句柄访问方式,Java堆中会划分出一块内存来作为句柄池,reference中存储的就是对象的句柄地址,而句柄中包含了...

2018-04-26 16:43:50

JVM运行时数据区域、直接内存

一、JVM运行时数据区域其中方法区、堆是由所有线程共享的数据区,虚拟机栈、本地方法栈、程序计数器是线程隔离的数据区。1、程序计数器(ProgramCounterRegister)   它是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时就是通过改变这个计数器的值来...

2018-04-26 16:02:06

线程同步机制

现在流行的进程线程同步互斥的控制机制,其实是由最原始的、最基本的四种方法(临界区、互斥量、信号量、事件)实现的。1)临界区(CriticalSection):通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。2)互斥量(Mutex):为协调对一个共享资源的单独访问而设计,只有拥有互斥量的线程才有权限去访问系统的公共资源,因为互斥量只有一个,所以能够保证资源不会同时被多个线程...

2018-04-25 10:31:16

进程与线程的区别

程序       程序是一组指令的有序结合。进程      进程是具有一定独立能力的程序关于某个数据集合上的一次运行活动,他是系统进行资源分配和调度的一个独立单位。例如,用户运行自己的程序,系统就创建一个进程,并为他分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等,然后该进程被放入到进程的就绪队列,进程调度程序选中它,为它分配CPU及其他相关资源,该进程就被运行起来。 ...

2018-04-24 17:05:37

JD Intern 2.1 Java的优点

Java能获得如此广泛的认可,主要有以下几个原因:1、拥有一门结构严谨、面向对象的编程语言(封装、继承、多态)2、摆脱了硬件平台的束缚,实现了“一次编写、到处运行”的思想(JVM虚拟机)3、提供一种相对安全的内存管理和访问机制,避免了绝大部分的内存泄漏和指针越界问题4、实现了热点代码检测和运行时编译及优化,这使得Java应用能随着运行时间的增加而获得更高的性能5、拥有一套完善的应用程序接口,还有无...

2018-04-23 11:34:48

查看更多

勋章 我的勋章
    暂无奖章