进阶的科技花园~

Time will say.

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

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

2018-09-06 11:33:30

阅读数 117

评论数 0

Java中遍历Map的几种方法

  java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下具体的用法以及各自的优缺点 先初始化一个map public class TestMap { public static Map&am...

2018-07-16 17:41:49

阅读数 42

评论数 0

高效并发之锁优化

自旋----优化---->适应性自旋(Adaptive Spinning):用于线程占用共享数据时间很短的情况下。锁消除(Lock Elimination):用于实际上不需要加锁的情况。锁粗化(Lock Coarsening):用于频繁加锁解锁的情况。轻量级锁(Lightwe...

2018-06-25 22:36:18

阅读数 83

评论数 0

高效并发之线程安全

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

2018-06-25 22:21:47

阅读数 67

评论数 0

被synchronized修饰的方法特别之处

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

2018-06-12 22:07:43

阅读数 54

评论数 0

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

字符串拼接的三种方法:① 加号 "+"② concat()方法 ③ StringBuilder(或StringBuffer)的append()方法一般来讲,拼接速度:3>2>1原因:1、对+号来说每趟循环都会创建一个S...

2018-06-11 22:08:51

阅读数 551

评论数 0

线程

        并发不一定要依赖多线程(如PHP中很常见的多进程并发)。但是Java里面谈论并发,大多数都与线程脱不开关系。每个已经执行start()且还未结束的java.lang.Thread类的实例就代表了一个线程。Thread类的所有关键方法都是声明为Native的。在Java API中,一...

2018-06-10 18:48:47

阅读数 38

评论数 0

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

Java内存模型(Java Memory Model,JMM)的主要目标是定义程序各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。JMM规定所有变量都存储在主内存(Main Memory)中,线程间变量值的传递均需要通过主内存来完成。内存间交互操作JMM定义了8种...

2018-06-04 22:41:18

阅读数 164

评论数 0

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

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

2018-05-30 22:21:36

阅读数 122

评论数 0

IT部分小知识点笔记

1、存取速度比较L3高速缓存>内存>SSD固态硬盘>7200转硬盘2、进程的特性动态性    进程的实质是进程实体的一次执行过程,由创建而产生,由调度而执行,由撤销而消亡。并发性    引入进程的目的正是为了使其能和其他进程实体并发...

2018-05-23 21:36:56

阅读数 492

评论数 0

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

Sun JDK监控和故障处理工具:jps(JVM Process Status Tool)  虚拟机进程状况工具,显示指定系统内所有的HotSpot虚拟机进程jstat(JVM Statistics Monitoring Tool)  虚拟机统计信息监视工具,用于收集HotSpot虚拟机各方面的运...

2018-05-05 19:13:49

阅读数 37

评论数 0

GC回收之三:内存分配

自动内存管理主要解决了两个问题:给对象分配内存和回收分配给对象的内存。对象的内存分配,主要是在堆上分配(有些可能经过JIT编译后被拆散为标量类型并间接地在栈上分配),对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配。少数情况下也可能会直接分配在老年代中,...

2018-05-05 15:54:02

阅读数 54

评论数 0

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

本文主要介绍4种垃圾收集算法及8种垃圾收集器:垃圾收集算法1、标记-清除算法(Mark-Sweep)“标记-清除”算法是最基础的算法,分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。它主要由两个缺点:一个是效率问题,标记和清除过程的效率都不高;...

2018-05-04 10:06:22

阅读数 2397

评论数 0

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

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

2018-05-01 21:51:17

阅读数 770

评论数 0

内存溢出异常(OutOfMemoryError)

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

2018-04-27 10:18:55

阅读数 263

评论数 0

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

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

2018-04-26 16:43:50

阅读数 1591

评论数 1

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

一、JVM运行时数据区域其中方法区、堆是由所有线程共享的数据区,虚拟机栈、本地方法栈、程序计数器是线程隔离的数据区。1、程序计数器(Program Counter Register)      它是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里(仅是...

2018-04-26 16:02:06

阅读数 282

评论数 1

线程同步机制

现在流行的进程线程同步互斥的控制机制,其实是由最原始的、最基本的四种方法(临界区、互斥量、信号量、事件)实现的。1)临界区(Critical Section):通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。2)互斥量(Mutex):为协调对一个共享资源的单独访问而设计,只...

2018-04-25 10:31:16

阅读数 30

评论数 0

进程与线程的区别

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

2018-04-24 17:05:37

阅读数 35

评论数 0

JD Intern 2.1 Java的优点

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

2018-04-23 11:34:48

阅读数 31

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭