java基础
文章平均质量分 86
huangshanchun
机会比实力重要,实力不够的时候,肯定会流失机会。
展开
-
java多线程面试常见问题
0 问题1.synchronized 和ReentrantLock 底层实现&重入机制2.锁的四种状态和升级过程3.CAS 是什么,如何解决ABA问题4.volatile的可见性和指令重排是如何实现的5.java 一个对象创建的过程6.对象在内存布局,Object o=new Object()在内存中占了多少字节7.DCL单例为什么要加volatile…如果你能够回答以上问题,后面文章你可以不用看了volatile 关键字作用?保证线程可见性禁止指令重排...原创 2021-10-31 11:16:32 · 103 阅读 · 0 评论 -
细说ThreadLocal
维持线程封闭性的一种更规范的方法是使用ThreadLocal,这个类使得访问某个变量的每个线程都拥有自己的局部变量,它独立于初始化副本。原创 2017-07-12 00:52:11 · 252 阅读 · 0 评论 -
java并发编程的基础
0 概述要编写正确的并发程序,关键问题在于:在访问共享的可变状态时需要进行的正确的管理。原创 2017-09-10 14:51:59 · 297 阅读 · 0 评论 -
反射获取静态属性
通过反射获取java静态属性原创 2017-10-22 11:19:31 · 9337 阅读 · 2 评论 -
java 实现excel生成
0 在实际工作我们希望能够下载到相应数据表格,比如Excel形式,本文主要实现Excel 表格生成&下载。原创 2017-11-05 12:40:33 · 1362 阅读 · 0 评论 -
深入理解java闭锁实现
闭锁是一种同步工具类,可以延迟线程的进度直到其到达终止状态。闭锁可以用来确保某些活动直到其他活动都完成后才继续执行。CountDownLatch是一种灵活的闭锁实现,它可以使一个或者多个线程等待一组事件发生。闭锁状态包括一个计数器,该计数器初始化一个正数,表示需要等待的数量。countDown方法递减计数器,表示一个事件已经发生了,而await方法等待计算器达到零,即所有的事件已经完成。原创 2017-11-12 20:50:38 · 1323 阅读 · 2 评论 -
合理的设置线程池队列长度
在实际工作中,经常会用到线程池,那么如何设置线程池队列长度,如果长度设置的不合理就无法发挥出多线程的威力。那么队列长度究竟应该设置多大呢?其实要取决于使用场景?比如你是全程异步的系统你的队列设置为0,coreSize设置cpu核数。本文主要通过研究tomcat、Dubbo等业界成熟的产品是如何设置线程队列的。原创 2017-11-18 13:04:49 · 38078 阅读 · 3 评论 -
JDK线程池源码分析
线程池,从字面的含义来看,是指管理一组工作线程(Worker Thread)的资源池。线程池是与工作队列(Work Queue)密切相关的,其中在工作队列中保存了需要执行的任务。工作线程的任务很简单:从任务队列中取出一个任务,执行任务,然后返回线程池并等待下一个任务。原创 2017-11-16 22:10:32 · 1255 阅读 · 0 评论 -
HashMap 源码分析(JDK1.8)
HashMap是Java程序员使用频率最高的容器之一,主要原因它的查询效率比较高,本文基于JDK1.8,深入探讨HashMap的结构实现和功能原理。原创 2017-12-30 16:05:50 · 1161 阅读 · 1 评论 -
谈谈Java异常
对于java工程师来说,是经常和异常打交道的,本文主要来谈一谈java中的异常。原创 2018-01-10 19:00:37 · 312 阅读 · 0 评论 -
基于ConcurrentMap实现loadingCache
0 概述一般的缓存策略是缓存没有命中的时候,直接去获取数据然后再放入缓存,这样可能会出现多个请求同时没有命中缓存某个key,同时去取数据,造成资源浪费,loadingCache就是为了解决这个问题。本文基于ConcurrentMap实现loadingCache。1 具体实现/** * Created by apple on 18/2/23. */public class ...原创 2018-02-24 08:30:45 · 505 阅读 · 0 评论 -
Graphics2D 写图片中文乱码问题
0 概述由于工作的需求,需要往图片写字,写中文的时候出现了乱码,网上找了很多资料都不行,后来自己不断尝试,最终发现由于Font 的name设置问题导致的乱码。1 问题原因&解决字形类Font用于规范组件所使用的字形大小、样式和字体等。其构造函数: public Font(String name,int style,int size); name表示本地可获取字体名称...原创 2018-03-04 18:05:13 · 9649 阅读 · 2 评论 -
java动态编译实现
本文主要实现java code 动态编译,并使用自定义的ClassLoader加载动态编译生成的字节码。1 代码DynamicCompile 类主负责调用JDK API 实现动态编译以及使用ClassLoader加载编译后生成的字节码。原创 2017-06-01 21:55:42 · 2584 阅读 · 5 评论 -
java程序执行shell脚本Demo
本文给出如何使用java程序执行shell 脚本的demo原创 2017-05-24 22:48:04 · 4846 阅读 · 1 评论 -
List<T> 属性排序
由于需要,按照不同字段对List中对象进行排序,就学习了下反射和JDK中相关接口就写了个排序工具类。目前支持对象属性排序:字符串类型,Integer、Long基本类型的排序。如果需要其它类型比较可以根据自己需求进行扩展。原创 2017-03-03 09:19:11 · 914 阅读 · 0 评论 -
java Annotation(注解)(一)
1.认识注解注解也被称为元数据,那什么是元数据?所谓的元数据就是用来定义数据的数据,如类的属性和方法等这些都是类的元数据。注解想当与在代码做一些特殊的标记原创 2016-04-24 11:24:04 · 693 阅读 · 0 评论 -
java之yield(),sleep(),wait()等区别
1、sleep()使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据。注意该方法要捕捉异常。例如有两个线程同时执行(没有synchronized)一个线程优先级为MAX_PRIORITY,另一个为MIN_PRIORITY,如果没有Sleep()方法,只有高优先级的线程执行转载 2015-07-05 22:15:28 · 657 阅读 · 0 评论 -
java中的匿名内部类总结
原文出自:http://www.cnblogs.com/nerxious/archive/2013/01/25/2876489.htmljava中的匿名内部类总结匿名内部类也就是没有名字的内部类正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 实例1:不使用匿名内部类来实现抽象方法转载 2014-12-23 13:47:01 · 731 阅读 · 0 评论 -
java 反射之泛型
由于java 泛型擦除机制,无法通过反射直接获取泛型的类型。但是,Java反射可以通过class获取父类泛型类型 泛型被擦除Demo:public class Test { public static void main(String[] args) throws Exception { List<Integer> integerList=new ArrayList();原创 2016-11-20 12:14:37 · 525 阅读 · 0 评论 -
java 反射之属性和方法
反射是java被视为动态语言的关键,反射机制允许程序在执行期间借助于反射的API取得任何类的内部信息,并能直接操作操作对象内部属性和方法, java的反射机制主要提供以下功能 - 在运行的时候构造任意类的对象 - 在运行时候获取任意一个类所具有的成员变量和方法 - 在运行时候调用任何对象的方法 - 生成动态代理 student 类public class原创 2016-11-14 23:31:18 · 443 阅读 · 0 评论 -
java 多线程技术基础
0 概述线程是进程中一个独立控制单元,其控制着进程执行。一个进程中至少包含一个线程。 对于java程序来说都是jvm上运行的,运行java程序时候jvm就会启动一个进程,该进程中至少有一线程负责java程序执行,该线程运行的代码存在于main方法中,因此也称当前线程为主线程。下图给出了线程的几种状态。 1 线程创建1.1第一种方式继承Thread类,要覆写其run方法。 覆写run方法的原因:原创 2017-03-12 20:13:04 · 333 阅读 · 0 评论 -
基于队列多任务处理
最近学习了线程池和队列相关知识,基于队列和线程池实现的多任务多处理器的任务处理器。原创 2017-03-06 22:31:06 · 1171 阅读 · 0 评论 -
java 反射基础
反射在框架中非常常见,只要写底层都会涉及反射。一.Class 对象首先看下Class类,它是final类型的,不允许被继承的,其构造函数是私有的,说明其是单列的。public final class Class implements java.io.Serializable, GenericDeclaration,原创 2016-11-13 15:46:14 · 372 阅读 · 0 评论 -
Java 实现当当网泄露数据快速检索
一、实验说明1. 环境登录无需密码自动登录,系统用户名shiyanlou,密码shiyanlou2. 环境介绍本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到桌面上的程序:a. LX终端(LXTerminal): Linux命令行终端,打开后会进入Bash环境,可以使用相关Linux命令 b.桌面eclipse开发工具二、项目介绍1.项目说明网站原创 2015-12-22 09:14:36 · 1136 阅读 · 2 评论 -
对于继承的理解
对于继承理解以及继承体系理解。原创 2015-10-18 09:39:05 · 1230 阅读 · 0 评论 -
java 命令行编译错误解决
0 概述本文主要解决使用java命令行编译和执行出错的问题。1 实例两个简单的类package com.hsc.study;/** * Created by hsc on 17/5/13. */public class TestMain { public static void main(String[] args) { TestPackage testPackage=原创 2017-05-13 14:30:09 · 1226 阅读 · 0 评论 -
java多线程通信之等待唤醒机制
0概述多线程间通信,其实就是多个线程操操作同一个资源,但是操作方式不同。典型实例有生产者和消费者。原创 2017-03-14 23:01:41 · 487 阅读 · 0 评论