Java基础
文章平均质量分 61
一包大豫竹
做好每一件小事
展开
-
常见的单例模式之饱汉模式+饥汉模式浅析
写一个Singleton出来。第一种:饱汉模式public class SingleTon {private SingleTon(){}//实例化放在静态代码块里可提高程序的执行效率,但也可能更占用空间private final static SingleTon instance = new SingleTon();public static SingleT原创 2017-09-28 22:45:47 · 2378 阅读 · 0 评论 -
JVM内存模型与内存溢出异常
本文摘自深入理解Java虚拟机 JVM高级特性与最佳实践 第2版 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范(Java SE 7版)》的规定,Java虚拟机所管理的内存将会包含以下几个运行时数据区域。...原创 2018-04-09 15:33:42 · 216 阅读 · 0 评论 -
接口和抽象类的区别
接口:方法完全抽象的,并且方法必须是public,如果写成其他的编译时会报错,如果不写,则默认方法是public abstract 子类用implements来实现接口,子类需要实现接口中的所有方法 接口不可以new操作符实例化一个接口,但可以声明一个接口变量 接口可以继承一个或者多个接口 接口可以有变量,但是这个变量是不可以变的变量,它会自动的变为public static fina...原创 2018-04-03 14:51:50 · 150 阅读 · 0 评论 -
i++是线程安全的吗
不是!!(经典的内存不可见问题) 因为每个线程都有自己的工作内存,每个线程需要对共享变量操作的时候必须先把共享变量从主内存load到自己的工作内存,登完成对共享变量的操作时再保存到主内存。如果一个线程运算完成后还没刷到主内存,此时这个共享变量的值被另一个线程从主内存读取到了,这个时候读取的数据就是脏数据了,他会覆盖其他线曾程计算的值。 注意:使用volatile 让内存可见也无法解决...原创 2018-07-04 11:49:27 · 1020 阅读 · 0 评论 -
装箱和拆箱
涉及概念: 基本数据类型:byte ,short,int,long….共八种 包装类型:Byte,Short,Integer, Double…等八种 其中基本数据类型和包装类型一一对应装箱:把基本数据类型转换成包装类型 拆箱:把包装类型转换成基本数据类型(手动)拆/装箱与自动拆/装箱 区别:自动拆装箱是在编译时调用相应的方法来完成拆装箱。 手动拆装箱是手工调用相应方法来完...原创 2018-07-06 16:35:41 · 181 阅读 · 0 评论 -
手撕HashMap(原理)
package com.david;public interface Map<K,V> { //向HashMap中插入值 public V put(K k,V c); //根据Key获取HashMap中的值 public V get(K k); //获取集合中的元素个数 public int size(); //获取几何...原创 2018-07-14 07:28:19 · 1335 阅读 · 0 评论 -
JAVA类加载器包括几种?它们之间的关系是怎么样的?双亲委派机制是什么意思?有什么好处?
JAVA类加载器包括几种?引导类加载器 bootstrap class loader 启动类加载器主要加载的是JVM自身需要的类,这个类加载使用C++语言实现的,是虚拟机自身的一部分,它负责将 /lib路径下的核心类库或-Xbootclasspath参数指定的路径下的jar包加载到内存中,注意必由于虚拟机是按照文件名识别加载jar包的,如rt.jar,如果文件名不被虚拟机识别,即使把...原创 2018-07-27 16:17:43 · 9107 阅读 · 0 评论 -
你知道哪些或者你们线上使用什么GC策略? 它有什么优势,适用于什么场景?
GC 策略Serial收集器 一个单线程的收集器,在进行垃圾收集时候,必须暂停其他所有的工作线程直到它收集结束。 特点:CPU利用率最高,停顿时间即用户等待时间比较长。 适用场景:小型应用 通过JVM参数-XX:+UseSerialGC可以使用串行垃圾回收器。Parallel收集器 采用多线程来通过扫描并压缩堆 特点:停顿时间短,回收效率高,对吞吐量要求高。 适用场景:大型应用,科学计算,...原创 2018-07-27 16:21:26 · 1599 阅读 · 0 评论 -
Java中Lambda表达式和stream的使用
Java中Lambda表达式和stream的使用 转自 [*https://www.cnblogs.com/franson-2016/p/5593080.html*] 简介(译者注:虽然看着很先进,其实Lambda表达式的本质只是一个”语法糖“,由编译器推断并帮...转载 2018-08-28 10:43:05 · 356 阅读 · 0 评论 -
Volatile关键字详解
在多线程的定义之中,volatile关键字主要是在属性上使用的,表示此属性为直接数据操作,不会进行副本的拷贝处理。 在正常进行变量处理的时候往往会经历如下几个步骤: 1、获取变量原有的数据内容副本 2、利用副本为变量进行数学计算 3、将计算后的变量,保存到原始空间之中 如图; 如果一个属性上追加了volatile关键字,表示的就是直接操作原始变量,相当于节约了拷贝副本,...原创 2018-09-03 15:55:11 · 260 阅读 · 0 评论 -
java中(基于链表)队列的实现
关于链表已在另一篇博客中有所描述: https://blog.csdn.net/qq_33583322/article/details/79757044首先队列的特性:先进先出,请自行脑补食物在身体内。。。。。呕~class Queue{ Node first, last; public void enqueue(Node n){ if(first ==...原创 2018-03-30 14:36:00 · 292 阅读 · 0 评论 -
java中栈的两种实现
栈是先进后出的一种数据结构,如图(来自百度): 好,概念不多说,下面我们来看栈基于链表的实现。 什么是链表?如下public class Node { int val; Node next; Node(int x) { val = x; next = null; }}请自行脑补自行车链子,就是一种仅定义前后关系的...原创 2018-03-30 14:17:46 · 1243 阅读 · 0 评论 -
你的简历能帮你争取到面试机会吗?
最近我在帮朋友的公司招人,招人的第一步是要筛选简历,在这过程中,我发现虽然能收到很多简历,但实际能通过筛选能进入到技术面试流程的简历不多,估计10份里不会超过4份能通过筛选。如果没法通过技术面试,那么候选人尚且能收集面试题,回家继续准备,毕竟他和面试官也交流过,也不算没收获,但对于这些没法通过筛选的简历,简历的主人往往是无从得知的(公司不会主动通知),所以他们依然会混混沌沌,可以预想,在不短的...转载 2018-03-12 11:28:07 · 196 阅读 · 0 评论 -
Java中的集合
在Java中有一套设计优良的接口和类组成了Java集合框架,使程序员操作成批的数据或对象元素极为方便。所有的Java集合都在java.util包中。 在编写程序的过程中,使用到集合类,要根据不同的需求,来决定使用哪种集合类,比如,要经常遍历集合内元素,就要使用List,如果要保证集合中不存在重复的数据,就要用Set;如果要通过某一键来查找某一值,就要使用Map。 1)转载 2017-09-22 19:18:18 · 245 阅读 · 0 评论 -
java多线程
林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka 目录(?)[-]一扩展javalangThread类二实现javalangRunnable接口三Thread和Runnable的区别四线程状态转换五线程调度六常用函数说明使用方式为什么要用join方法七常见线程转载 2017-09-22 19:22:14 · 208 阅读 · 0 评论 -
java中的IO
初学java,一直搞不懂java里面的io关系,在网上找了很多大多都是给个结构图草草描述也看的不是很懂。而且没有结合到java7 的最新技术,所以自己来整理一下,有错的话请指正,也希望大家提出宝贵意见。首先看个图:(如果你也是初学者,我相信你看了真个人都不好了,想想java设计者真是煞费苦心啊!) 这是java io 比较基本的一些处理流,除此之外我们还会提到一些比转载 2017-09-22 19:23:24 · 193 阅读 · 0 评论 -
HashSet和HashMap的区别
什么是HashSetHashSet实现了Set接口,它不允许集合中有重复的值,当我们提到HashSet时,第一件事情就是在将对象存储在HashSet之前,要先确保对象重写equals()和hashCode()方法,这样才能比较对象的值是否相等,以确保set中没有储存相等的对象。如果我们没有重写这两个方法,将会使用这个方法的默认实现。public boolean add(Object原创 2017-09-22 20:16:10 · 223 阅读 · 0 评论 -
java中构造函数和一般函数的区别
构造方法特点:1.方法名称和类名相同2.不用定义返回值类型3.不可以写return语句作用:给对象初始化构造方法的细节:当一个类中没有定义构造函数时,系统会默认添加一个无参的构造方法。当在类中自定义构造方法之后,默认的无参构造方法消失(如果需要无参构造方法需手动添加)。构造方法与一般方法在写法上的不同:构造方法转载 2017-09-24 13:50:00 · 1220 阅读 · 0 评论 -
java线程同步工具类总结
本文可作为传智播客《张孝祥-Java多线程与并发库高级应用》的学习笔记。Semaphore这个东西和之前的synchronized干的事差不多。 synchronized保证了,我管理的那部分代码同一时刻只有一个线程能访问 Semaphore保证了,我管理的那部分代码同一时刻最多可以有n个线程访问import java.util.concurrent.ExecutorService; imp原创 2017-12-04 17:43:08 · 322 阅读 · 0 评论 -
使用Session完成用户登录/注销
*思路: 1、获取表单提交数据 2、与后台数据库校验用户名密码是否存在且正确 3、校验完成后,设置session,跳转到首页 4、注销,删除session,跳转到登录页面* 目录结构: web.xml配置文件:<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javae原创 2018-01-24 16:29:55 · 2256 阅读 · 0 评论 -
通过java反射机制调用类中方法
import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;public class ClassReflectTestDemo { public static void main(String[] args) throws原创 2018-02-07 16:52:31 · 321 阅读 · 0 评论 -
什么是线程安全?
线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。 线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据================================================================原创 2018-03-16 14:24:55 · 196 阅读 · 0 评论 -
记一次WebService调用踩的坑
问题描述:由于公司最近引进了某公司A的网络管理软件,需要使用A提供的WebService接口。遇到问题如下:1、接口文档不规范。WebSerivce 接口有安全性校验要求,需要在 SOAP 头部增加相应的用户名和密码作为安全配置。2、依赖冲突、Bug等解决方法:1、、拿到接口肯定是先测试,看能不能通,我也是这么干的,然,以前没使用过WebService (工作一年见的少)都是使用Rest...原创 2019-03-06 10:10:34 · 970 阅读 · 0 评论