![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java学习
yaonga
这个作者很懒,什么都没留下…
展开
-
java性能监控
java性能监控jdk命令行工具监控jps -l显示系统运行的所有java进程,以及对应进程的打包的包名或者主程序入口类名称jinfo + pid显示对应的java进程的系统配置和JVM参数jstat查看java进程的class加载信息,编译信息,gc信息gc统计:jstat -gc 6285 250 4 (每隔250ms打印4次)S0C、S1C、S0U、S1U...原创 2020-04-03 10:43:36 · 481 阅读 · 0 评论 -
AbstractQueuedSynchronizer源码分析
https://yq.aliyun.com/articles/601071转载 2019-11-29 15:28:50 · 88 阅读 · 0 评论 -
平衡查找树之红黑树
平衡查找树之红黑树转载转载 2019-10-24 14:48:15 · 113 阅读 · 0 评论 -
jdk8 lambda表达式
lambda表达式旨在简化语法。1 简单应用1.1 应用举例传统写法: Integer[] array = new Integer[]{1,2,3,4}; //匿名内部类方式 Arrays.sort(array, new Comparator<Integer>() { @Override public int compare(Integer o1,...原创 2019-10-24 14:24:13 · 163 阅读 · 0 评论 -
LinkedList添加元素链表操作过程
LinkedList添加元素链表操作过程1.LinkedList实现(基于jdk1.8)2.示例操作1.LinkedList实现(基于jdk1.8)底层通过操作双向链表实现数据存储,每个元素都包含有value值,指向前一节点和后一几点的引用; private static class Node<E> { E item; Node<E&g...原创 2019-02-01 16:16:38 · 6212 阅读 · 0 评论 -
java生产者与消费者
生产者与消费者模式直接上代码 public class StoreHouse { private int capacity; private AtomicInteger size = new AtomicInteger(0); private BlockingQueue<Integer> queue; public StoreHouse(int ca...原创 2018-10-19 15:41:29 · 120 阅读 · 0 评论 -
简单自定义AOP实现
自定义实现AOP动态代理(动态代理,反射)AOP是什么面向切面编程,是一种思想AOP解决了什么对已有类进行功能增强AOP自定义定义代理实现类ProxyFactoryBeanpublic class ProxyFactoryBean { public Object getTarget() { return target; } public void s...原创 2018-10-12 10:47:44 · 1822 阅读 · 0 评论 -
spring使用笔记
spring使用:导入spring包,mybatis包,tomcat插件等* org.springframework spring-beans 5.0.7.RELEASE org.springframework spring-co...原创 2018-09-26 10:14:48 · 89 阅读 · 0 评论 -
LinkedList和ArrayList的对比
LinkedList和ArrayList的对比转载https://www.cnblogs.com/xrq730/p/5005347.html老生常谈的问题了,这里我尝试以自己的理解尽量说清楚这个问题,顺便在这里就把LinkedList的优缺点也给讲了。1、顺序插入速度ArrayList会比较快,因为ArrayList是基于数组实现的,数组是事先new好的,只要往指定位置塞一个数据就好了;Li...转载 2019-06-12 14:12:05 · 94 阅读 · 0 评论 -
CopyOnWriteArrayList
1.线程安全的list:CopyOnWriteArrayList,CopyOnWriteArrayList,顾名思义,Write的时候总是要Copy(将原来的array复制到新的array),也就是说对于CopyOnWriteArrayList,任何可变的操作(add、set、remove等等)都是通过ReentrantLock 控制并发并伴随复制这个动作。底层实现机制:public boo...原创 2019-06-12 14:22:37 · 1933 阅读 · 0 评论 -
HashMap
转载https://www.cnblogs.com/xrq730/p/5030920.html转载 2019-06-12 15:50:54 · 110 阅读 · 0 评论 -
ArrayList
@[TOC]ArrayList1.ArrayList特点数据允许为null,可重复,读取数据的顺序和存放数据的顺序一致,非线程安全2.ArrayList底层实现private transient Object[] elementData;private int size;底层由数组实现,由于增加元素可能需要进行扩容,调用到的是Arrays的copyOf方法,将元素组里面的内容复制到新的...原创 2019-06-12 11:39:29 · 81 阅读 · 0 评论 -
jvm字节码指令
1.示例package com.yalong.jvmclass;public class Test{ public static void main(String[] args) { int a = 1; int b = 2; int c = a + b; System.out.println(c); ...原创 2019-08-14 16:41:26 · 124 阅读 · 0 评论 -
java泛型
一.为什么使用泛型 1.之前没使用的情况 在泛型出现之前,一旦把一个对象丢进集合中,集合就会忘记对象的类型,把所有的对象当成object类型来进行处理。当程序从集合中取出对象后,就需要进行强制类型转换,这会让代码变得臃肿,同时类型转换的时候也有可能会出现,ClassCastException异常 ArrayList collection1 = new ArrayList(...转载 2018-08-17 13:38:46 · 99 阅读 · 0 评论 -
java泛型
https://blog.csdn.net/s10461/article/details/53941091转载 2018-08-03 10:02:25 · 111 阅读 · 0 评论 -
java线程池常用类
1.概述:学习理解线程池常用类 2.生成相关: a.Executor(接口),抽象出执行所提交的Runnable对象,与任务调度分离; Executor 接口并没有严格地要求执行是异步,可以结合调度方式:class SerialExecutor implements Executor { final Queue<Runnable> tasks = new ArrayDeque<Ru转载 2017-05-25 11:13:21 · 357 阅读 · 0 评论 -
java多线程之共享变量的可见性、原子性
1.概述: 提到多线程,就不可避免地涉及到数据争用的问题。这包括了多线程对共享变量的可见性和原子性操作;(共享变量:如果一个变量在多个线程的工作内存(工作内存:每个线程都有自己的工作内存)中都存在副本,那么这个变量就是这几个线程的共享变量) 在java内存模型中, a.所有变量都存储在主内存中 b.每个线程都有自己的独立工作内存,里面保存该线程使用到的变量的副本(也就是主内存中该变量的一份拷原创 2017-05-26 09:33:03 · 3119 阅读 · 0 评论 -
Java 7之多线程- CountDownLatch
public class CountDownLatchDemo { public static void main(String[] args) { try { CountDownLatch downLatch = new CountDownLatch(3); for (int i = 0; i < 3; i++) {原创 2017-05-26 14:35:14 · 291 阅读 · 0 评论 -
Java 之多线程 - Semaphore
1.信号量: Semaphore用于保存当前允许通过的线程数量 2.实例 public class Test {public static void main(String[] args) throws Exception { Test test = new Test(); for (int i = 0; i < 10; i++) { new Thread(ne原创 2017-05-26 14:09:16 · 257 阅读 · 0 评论 -
java 线程协作 wait(等待)与 notiy(通知)
一.wait()、notify()和notifyAll()为了更好的支持多线程之间的协作,JDK提供了三个重要的本地方法 复制代码//调用某个对象的wait()方法能让当前线程阻塞,并且当前线程必须拥有此对象的锁. public final void wait() throws InterruptedException { wait(0); } //调用某个对象的转载 2017-05-26 17:05:49 · 435 阅读 · 0 评论 -
java多线程---读写锁的应用
1.概述:为了提高性能,Java提供了读写锁,在读的地方使用读锁,在写的地方使用写锁,灵活控制,如果没有写锁的情况下,读是无阻塞的,在一定程度上提高了程序的执行效率。 2.构建一个缓存示例:public class CacheReadWriteLock { private Map<String, Object> map = new HashMap<String, Object>();原创 2017-06-01 14:04:23 · 371 阅读 · 0 评论 -
android调用jni
1.概述:JNI(Java Native Interface,Java本地接口),用于打通Java层与Native(C/C++)层. 2.系统调用jni: 过程:app启动–>Kernel创建init进程–>init进程fork出Zygote进程–>Zygote进程在AndroidRuntime.cpp中创建javaVM(一个app进程对应一个虚拟机实例)实例–>虚拟机注册系统JNI方法 注:原创 2017-06-29 17:29:58 · 453 阅读 · 0 评论 -
java之String
声明String str1="abc"; String str2=new String("abc"); 区别?在栈中声明str1引用,指向栈中的内容“abc”; 在栈中声明str2引用,指向堆中的内容“abc”;String str1 = "abc";String str2 = "abc";System.out.println(str1==str2); //true可以看出str1原创 2017-07-03 10:47:51 · 390 阅读 · 0 评论 -
java之File用法
1.//封装文件或者文件夹File file = new File("D:\\Project"); if(file.exists()) { if(file.isDirectory()) { System.out.println(file+" isDirectory");原创 2017-07-04 11:38:12 · 361 阅读 · 0 评论 -
java基础(IO流学习)
1.io流分为输入流和输出流,输入流和输入流都是相对于程序原创 2014-11-07 13:45:57 · 257 阅读 · 0 评论 -
java常用进制转换
2进制、10进制、16进制基本转化方式内容java进制转换java中进行二进制,八进制,十六进制,十进制间进行相互转换 十进制转成十六进制:Integer.toHexString(int i)十进制转成二进制Integer.toBinaryString(int i)十六进制转成十进制Integer.valueOf(“FFFF”,16).toString()原创 2018-02-02 17:19:24 · 178 阅读 · 0 评论 -
java反射
http://chuansong.me/n/2333577351514转载 2018-07-26 09:54:32 · 93 阅读 · 0 评论 -
ClassLoader和双亲委派
ClassLoader 类加载器用来将Java类加载到JVM中,Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码,并转换成 java.lang.Class 类的一个实例。(一份内存中的字节码对应一个Class类,多个类对象的字节码在内存中只有一份) 双亲委派机制 某个特定的类加载器在...转载 2018-07-26 11:34:30 · 255 阅读 · 0 评论 -
java动态代理
一.概述 动态:jvm通过Proxy.newInstance动态生成代理类; 代理:通过代理类可实现对目标类方法的执行时间/过滤机制/日志代理等额外的代理操作; 二.实现 1.声明一个接口public interface IUserService { void setName(String name); int setAge(int age);}2.然后,利...原创 2018-08-02 10:30:47 · 131 阅读 · 0 评论 -
JAVA线程
JAVA线程- 1.实现一种是继承Thread类; 实现Runnable接口; 实现Callable接口,该接口中的call方法可以在线程执行结束时产生一个返回值:public class ThreadFuture { public static void main(String[] args) throws Exception { ExecutorService servi转载 2017-02-16 10:19:23 · 193 阅读 · 0 评论