持续更新中。。。。1.String,StringBuffer与StringBuilder的区别? String底层是final修饰的byte数组,属于不可变的对象,但是可以通过反射改变它的值。操作String时会生成新的String对象,不仅效率低下,而且会浪费有限的内存空间。为了应对经常的字符串操作,就引入了StringBuilder类和StringBuffer类。 StringBuilder与StringBuffer类的方法和功能完全是等价的,都继承于AbstractStringBuilder。StringBuffer是线程安全的...
垃圾回收如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断的分配内存空间而不进行回收。除非内存无限大,我们可以任性的分配而不回收,但是事实并非如此。垃圾回收其实做了两件事:1、发现无用的对象;2、回收无用对象占用的内存空间。垃圾回收算法1、应用计数法对象中添加一个引用计数器,每当一个地方引用这个对象时,计数器值+1;当引用失效时,计数器值-1。任何时刻计数值为0的对象就是不可能再被使用的。这种算法使...
javacpp-ffmpeg系列:javacpp-FFmpeg系列之1:视频拉流解码成YUVJ420P,并保存为jpg图片javacpp-FFmpeg系列之2:通用拉流解码器,支持视频拉流解码并转换为YUV、BGR24或RGB24等图像像素数据javacpp-FFmpeg系列之3: 图像数据转换(BGR与BufferdImage互转,RGB与BufferdImage互转)前言:第一篇中视频解码成YUVJ420P图像像素数据(以下简称YUV或YUV数据),只是YUV在流媒体协议中用的较多(数据少,节省流量带宽),在图像处理应用较...
一、新建maven项目 二、引入spring jar包<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>wjxiaoqiao</groupId><artifactId>wj</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>wj Mave...
一 Timer类与TimerTask类 在Java中要实现定时执行某项任务就需要用到Timer类和TimerTask类。其中,Timer类可以实现在某一刻时间或某一段时间后安排某一个任务执行一次或定期重复执行,该功能需要与TimerTask类配合使用。TimerTask类表示由Timer类安排的一次或多次重复执行的那个任务。 Timer类中的常用方法:方法描述void cancel()终止此计时器,丢弃所有当前已安排的任务,对当前正在执行的任务没有影响int purge()从此...
一. 泛型概念的提出(为什么需要泛型)?首先,我们看下下面这段简短的代码:publicclass GenericTest {publicstaticvoid main(String[] args) {List list = new ArrayList();list.add("qqyumidi");list.add("corn");list.add(100);for (int i = 0; i < list.size(); i++) {String name = (String) list.get(i); // 1System.out.println("name:" + name);}} }View Code定义了一个List类型的集合,先向其中加入了两个字符串类型的值...
转自:http://www.cnblogs.com/skywang12345/p/3509954.html概要在前面一章"Java多线程系列--“JUC线程池”02之 线程池原理(一)"中介绍了线程池的数据结构,本章会通过分析线程池的源码,对线程池进行说明。内容包括:线程池示例参考代码(基于JDK1.7.0_40)线程池源码分析 (一) 创建“线程池” (二) 添加任务到“线程池” (三) 关闭“线程池”转载请注明出处:http://www.cnblogs.com/skywang12345/p/3509954.html 线程池示...
一、线程的生命周期及五种基本状态关于Java中线程的生命周期,首先看一下下面这张较为经典的图: 上图中基本上囊括了Java中多线程各重要知识点。掌握了上图中的各知识点,Java中的多线程也就基本上掌握了。主要包括:Java线程具有五中基本状态新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread();就绪状态(Runnable):当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就...
Java天生骄傲系列-8 函数的应用(重点掌握)如何定义函数 例1: package test.myeclipse; publicclass test1 { publicstaticvoid main(String[]args) { intSum = getSum(); System.out.println("Sum="+Sum); } ...
51、ArrayList 与 LinkedList 的不区别? 最明显的区别是 ArrrayList 底层的数据结构是数组,支持随机访问,而LinkedList 的底层数据结构书链表,不支持随机访问。使用下标访问一个元素,ArrayList 的时间复杂度是 O(1),而 LinkedList 是 O(n)。52、用哪两种方式来实现集合的排序? 你可以使用有序集合,如 TreeSet 或 TreeMap,你也可以使用有顺序的的集合,如 list,然后通过 Collections.sort() 来排序。53、Java 中怎么...
个人胡说 类是面向对象的核心概念,在目前我得理解来说,其实就是提供了一种将数据结构和对应的服务封装,而面向对象,除了高深的面向对象思想,再者便是与类相关的一系列相关技术的支持,比如多态等。为什么面向对象编程会成为目前主流的编程?我看来一是这种编程相对于数据流(面向过程编程)来说,面向对象更加符合人类的思维习惯和事物的一些本质,另外就是它强大繁多的库。当然,如果面向过程语言自然也可以实现代码复...
原文链接 作者:Jakob Jenkov 译者:浪迹v 校对:丁一Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。下面是本文所涉及到的主题列表:为什么使用Selector?Selector的创建向Selector注册通道SelectionKey通过Selector选择通道wakeUp()close()完整的示例 为什么使用Selector?仅用单个线程来处理多个Chan...
多线程中级,包含控制线程的几种方法、线程的同步、线程组,有返回值的线程、线程之前的通信、线程池和线程的几个相关类线程同步当多个线程访问同一资源时,加synchronized对资源进行加锁synchronized可以修饰代码块,修饰方法只对可以改变竞争资源的方法加锁只有多线程才会出现线程安全问题释放锁的条件同步方法、代码块结束出现未处理的异常调用wait,将本线程置为就绪状态sleep或者yield、suspend不会释放同步锁同步锁(Lock),...
死锁: 是指两个或者两个以上的进程(或线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,他们都将无法推进下去 产生死锁的原因: 互相争夺共享资源产生死锁的必要条件:互斥条件:共享资源被一个线程占用请求与保持条件(占有且等待):一个进程因请求资源而阻塞时,对已获得的资源保持不释放不剥夺条件:进程已获得资源,在未使用完之前,不能强行剥夺循环等待条件:多个线程之前循环等待资源,必须是循...
package ***;import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.security.MessageDigest;import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; imp...