
【------------java学习--------】
大阳彼岸
这个作者很懒,什么都没留下…
展开
-
什么情况下会初始化类
都什么情况下会初始化类public class A { { System.out.println("block"); } static{ System.out.println("static"); } public void run(){ System.out.println("A run"); } public void service(){ System...原创 2018-09-07 23:31:41 · 236 阅读 · 0 评论 -
线程运行快慢测试
线程运行快慢测试public class ThreadA extends Thread { private int count = 0; public int getCount() { return count; } @Override public void run() { while (true) { count++; } }}public ...转载 2018-07-19 17:31:21 · 236 阅读 · 0 评论 -
javamail 收发邮件
邮件协议 1 收发邮件 发邮件大家都会吧!发邮件是从客户端把邮件发送到邮件服务器,收邮件是把邮件服务器的邮件下载到客户端。我们在163、126、QQ、sohu、sina等网站注册的Email账户,其实就是在邮件服务器中注册的。这些网站都有自己的邮件服务器。 2 邮件协议概述与HTTP协议相同,收发邮件也是需要有传输协议的。SMTP:(Simple Mail T...转载 2018-07-21 17:16:16 · 1937 阅读 · 0 评论 -
注解
1. 注解的使用 * 定义注解类:框架的工作 * 使用注解:我们的工作 * 读取注解(反射):框架的工作,tomcat利用反射,读取servlet 中的注解的3 Java中的注解Java中的觉注解:@Overrid:作用在方法上的注解。检查方法是不是父类继承的方法,当方法不是重写父类的方法时会报错; @Deprecated:作用在方法上。标记该方法为作废方法(已过时);...转载 2018-07-22 03:05:19 · 263 阅读 · 0 评论 -
工厂方法,工厂模式,抽象工厂模式主要解决的问题与源码分析
工厂方法:就是一个返回具体对象的方法。java.lang.Proxy#newProxyInstance()java.lang.Object#toString()java.lang.Class#newInstance()java.lang.reflect.Array#newInstance()java .lang.reflect.Constructor#newInst...转载 2018-07-26 10:50:04 · 390 阅读 · 0 评论 -
细说java线程的内存可见性
细说java线程的内存可见性可见性:一个线程对共享变量值(如果一个变量在多个线程的工作内存中都存在副本,那么这个变量就是在这几个线程的共享变量,这个里面的共享是指的是不是各线程都可以操作这个变量使这个变量在每个线程中都是同一个值,如果在每一个线程中的值是不同的话,那就是线程不安全的了)的修改,能够即使的被其他的线程看到线程的规定:线程对共享变量的所有操作必须在自己的内存中进行,不能直接...转载 2018-07-29 23:21:00 · 138 阅读 · 0 评论 -
高并发解决方案--负载均衡
高并发解决方案--负载均衡1,什么是负载均衡?当一台服务器的性能达到极限时,我们可以使用服务器集群来提高网站的整体性能。那么,在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台服务器的负载情况将请求分配给某一台后端服务器去处理。那么在这个过程中,调度者如何合理分配任务,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,...转载 2018-08-01 21:53:37 · 1011 阅读 · 0 评论 -
多线程入门,线程isAlive 方法,this与Thread.currentThread() 的区别,线程优先级,线程运行快慢测试
package test;public class Test { public static void main(String[] args) { System.out.println(Thread.currentThread().getName()); }} 只有thread 类才有start 方法public class MyRunnab...转载 2018-08-06 14:53:03 · 301 阅读 · 0 评论 -
守护线程,
java线程中有两种线程,一种是用户线程,另一种是守护线程守护线程是一种特殊的线程,他的特性有陪伴的含义,当进程中不存在非守护线程,则守护线程自动销毁,典型的守护线程就是垃圾回收线程,当进程中没有守护线程了,则垃圾回收线程也就没有存在的必要了,自动销毁,用比较通俗的比喻来解释一下,守护线程:任何一个守护线程都是整个jvm 中所有非守护线程的的保姆,只要当前JVM案例中存在任何一个费守护线程没有...转载 2018-08-06 16:19:25 · 123 阅读 · 0 评论 -
java类的初始化顺序
java的类的加载顺序对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。我们也可以通过下面的测试代码来验证这一点:public class InitialOrderTest {// 静态变量public static String staticField = '静态变量';// 变量public...转载 2018-08-07 13:22:28 · 320 阅读 · 0 评论 -
什么时候进行java类的初始化
当java程序首次通过下面6中方式来使用某个类或接口时,系统就会初始化该类或接口。 (1)创建类的实例。为某个类创建实例的方式包括:使用new操作符来创建实例,通过反射来创建实例,通过反序列化的方式来创建实例。 (2)调用某个类的类方法(静态方法)。 (3)访问某个类变量或为某个类变量。或为该变量赋值 (4)使用反射方式来强制创建某个类或接口对应的java....转载 2018-08-07 13:24:53 · 2029 阅读 · 0 评论 -
【io 流调优专题一】:io 流的分类,字节字符流的区别
转载于 https://blog.youkuaiyun.com/luchenh/article/details/79050105转载 2018-07-19 17:16:53 · 154 阅读 · 0 评论 -
io 的9种读取方式的快慢对比,io流完美解读
io 流完美解读重点看源码 https://blog.youkuaiyun.com/baobeisimple/article/details/1713797总结:复制文本文件有几种方式? 9种复制图片文件有几种方式? 4种他们各自的优缺点是什么?字符流按字符处理数据,速度较之于同原理的字节流快,但是使用范围较小,仅限文本文件;...转载 2018-07-19 13:37:37 · 8210 阅读 · 0 评论 -
threadlocal
线程范围内的共享变量package cn.itcast.heima2;import java.util.HashMap;import java.util.Map;import java.util.Random;public class ThreadScopeShareData { private static int data = 0; public static void ma...转载 2018-07-12 20:06:11 · 141 阅读 · 0 评论 -
策略(strategy)模式的原理以及应用范围
转载 https://blog.youkuaiyun.com/eson_15/article/details/52119001 策略模式的应用范围1 目前自己知道的策略模式在jdk中的应用有比较器Comparator和布局管理器LayoutManager2 springmvc 中的处理器映射器3 在spring中也有用到,通过注解@Resource就是使用该模式,注入哪个就使用哪个。 ...转载 2018-08-27 19:21:56 · 1451 阅读 · 0 评论 -
为什么学习责任链(chain of resposibility)和 责任链(chain of resposibility)主要解决的问题
转载 https://blog.youkuaiyun.com/eson_15/article/details/52126811 责任链模式,顾名思义,就是一条链。这个链到底是怎么运行的呢?它主要是将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能则处理,如果不能则传递给链上的下一个对象进行处理,以此类推。 比如说公司请假需要审批,举个不恰当的...转载 2018-08-27 19:20:29 · 360 阅读 · 0 评论 -
Java异常机制
1 异常的分类2 throw 和throws的区别3 自定义异常4 异常的转化(比如非运行时异常转化为运行时异常) try{ }catch(SQLException e){ throw new RuntimeException(e)//非运行时异常转化为运行时异常} 异常是程序运行过程中出现的错误。本文主要讲授的是Java语言的异常处理。Java语言的异...转载 2018-07-18 17:58:15 · 172 阅读 · 0 评论 -
生成UUID
package cn.itcast.uuid;import java.util.UUID;import org.junit.Test;import cn.itcast.commons.CommonUtils;public class UUIDTest { @Test public void fun1() { UUID uuid = UUID.randomUUID(); ...转载 2018-07-19 12:29:41 · 278 阅读 · 0 评论 -
生成动态图片(图片二维码)
package cn.itcast.image;import java.awt.Color;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.FileNotFoundException;import java.io.FileOu...转载 2018-07-19 12:56:14 · 1641 阅读 · 0 评论 -
回顾泛型
泛型1. 泛型类:具有一个或多个类型变量的类,称之为泛型类!class A<T> {} 泛型方法:具有一个或多个类型变量的方法,称之为泛型方法!class A<T> { public T fun(T t1) {}}fun()方法不是泛型方法!它是泛型类中的一个方法!public <T> T fun(T t1) {} --> 它...转载 2018-07-22 01:47:42 · 181 阅读 · 0 评论 -
java反射
java 反射的作用:1 1.作用:可以通过配置文件来动态配置和加载类,动态加载对象,以实现软件工程理论里所提及的类与类,模块与模块之间的解耦。反射最经典的应用是spring框架。 * 首先获取到Class类 - //获取Class类有三种情况 Class personClass = Person.class; Class personClas...转载 2018-08-01 18:27:53 · 150 阅读 · 0 评论 -
深入分析java 的序列化与反序列化(转载)
仅供个人学习序列化是一种对象持久化的手段。普遍应用在网络传输、RMI等场景中。本文通过分析ArrayList的序列化来介绍Java序列化的相关内容。主要涉及到以下几个问题:怎么实现Java的序列化为什么实现了java.io.Serializable接口才能被序列化transient的作用是什么怎么自定义序列化策略自定义的序列化策略是如何被调用的ArrayList对序列...转载 2018-07-02 12:43:41 · 132 阅读 · 0 评论 -
进程和线程区别,进程和线程的并发操作是不同的
线程和进程各自有什么区别和优劣呢? 1 进程是资源分配的最小单位,线程是程序执行的最小单位。 2 进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。 3 线程之间的...转载 2018-07-12 16:35:51 · 1086 阅读 · 0 评论 -
脏读可能出现的几种情况
脏读可能出现的情况1package entity;public class PublicVar { public String username = "A"; public String password = "AA"; synchronized public void setValue(String username, String password) { try { t...转载 2018-08-07 22:05:55 · 1554 阅读 · 0 评论 -
synchronized : 一半同步一半异步 2 方法内部的私有变量,则不存在非线程安全的问题 1 多个对象,多个锁 2 同步不具有继承性 3 证明线程锁是对象4 锁重入5 出现异常,锁自动释放
synchronized 实现同步的基础:1 普通同步方法,锁是当前实例对象2 静态同步方法,锁是当前类的class 对象3 同步方法块,锁括号里面的对象不在synchronized 就是异步执行的,在synchronized 块就是同步执行一半同步一半异步package mytask;public class Task { public void doLongTim...转载 2018-08-07 22:23:42 · 227 阅读 · 0 评论 -
java并发包(一): Lock和ReadWriteLock
一.synchronized的缺陷二.java.util.concurrent.locks包下常用的类三.锁的相关概念介绍 Lock 主要解决的问题2)Lock和synchronized有一点非常大的不同,采用synchronized不需要用户去手动释放锁,当synchronized方法或者synchronized代码块执行完之后,系统会自动让线程释放对锁的占用;...转载 2018-08-16 22:57:58 · 639 阅读 · 0 评论 -
java 并发包(二):线程池
package cn.itcast.heima2;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.TimeUnit;public class ThreadPoolTest { /** ...转载 2018-08-16 23:00:05 · 181 阅读 · 0 评论 -
java并发包:BlockingQueue
java并发包消息队列及在开源软件中的应用BlockingQueue也是java.util.concurrent下的主要用来控制线程同步的工具。主要的方法是:put、take一对阻塞存取;add、poll一对非阻塞存取。 插入: 1)add(anObject):把anObject加到BlockingQueue里,即如果BlockingQueue可以容纳,则...转载 2018-08-16 23:01:54 · 134 阅读 · 0 评论 -
java并发编程的一些总结
java并发编程的一些总结.1. 不应用线程池的缺点有些开发者图省事,遇到需要多线程处理的地方,直接new Thread(...).start(),对于一般场景是没问题的,但如果是在并发请求很高的情况下,就会有些隐患:新建线程的开销。线程虽然比进程要轻量许多,但对于JVM来说,新建一个线程的代价还是挺大的,决不同于新建一个对象资源消耗量。没有一个池来限制线程的数量,会导致线程的数量直...转载 2018-08-16 23:03:24 · 105 阅读 · 0 评论 -
并发大总结
在一个list中有过亿条的Integer类型的值,如何更快的计算这些值的总和?要学习的东西那么多!扶我起来。。转载 2018-08-18 10:54:17 · 181 阅读 · 0 评论 -
Java并发编程:同步容器
原创 2018-08-18 11:04:00 · 117 阅读 · 0 评论 -
CallableAndFuture
ExecutorService threadPool = Executors.newSingleThreadExecutor();Future<String> future =threadPool.submit( new Callable<String>() { public String call() throws Exception { ...转载 2018-08-20 15:25:13 · 138 阅读 · 0 评论 -
Semaphore
package cn.itcast.heima2;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Semaphore;public class SemaphoreTest { public static void m...转载 2018-08-23 16:31:34 · 111 阅读 · 0 评论 -
Java内存分配机制
classLoader 类加载器通过加载class 文件的二进制字码文件在堆中形成java.lang.Class 对象对象2 虚拟机就会为其分配内存来存放对象自己的实例变量及其从父类继承过来的实例变量(即使这些从超类继承过来的实例变量有可能被隐藏也会被分配空间)。在为这些实例变量分配内存的同时,这些实例变量也会被赋予默认值(零值)3 进行类初始化(实例变量初始化、实例代码块初始化 以及...转载 2018-08-14 16:49:43 · 3106 阅读 · 0 评论 -
并发编程总结
对于存储数据的容器或者对象,有线程安全和线程不安全之分1 对于线程不安全的容器或对象,一般可以通过加锁或者通过copy on write 的方法控制并发访问2 对于线程安全的容器和对象,我们就可以在多线程环境下直接使用他们了,在这些线程安全的容器和对象,有些是支持开发的,这种方式的效率回避简单的加互斥锁的实现更好,例如 java.util.concurrent 包中有很多这样的容器类3...转载 2018-08-11 21:27:32 · 221 阅读 · 1 评论 -
生产者消费者模式之 消息队列中间件ActiveMQ
消息队列中间件ActiveMQ高级应用 MQ(Message Queue)应用场景分析消息队列中间件是分布式系统中的重要组件,主要解决异步消息,应用解耦,流量削锋等问题,从而实现高性能,高可用,可伸缩和最终一致性的架构,使用较多的消息队列有ActiveMQ,RabbitMQ,Kafka,MetaMQ等 场景一:异步处理场景说明:用户注册后,需要发送注册邮件和注册短信。传...转载 2018-08-10 17:38:36 · 1081 阅读 · 0 评论 -
验证同步synchronized(this) 代码块是锁定当前对象的(synchronized 方法一样, synchronized(this) 也是锁定当前对象的)
与synchronized 方法一样, synchronized(this) 也是锁定当前对象的package mytask;public class Task { synchronized public void otherMethod() { System.out.println("------------------------run--otherMethod"); } p...转载 2018-08-07 23:30:47 · 1346 阅读 · 1 评论 -
synchronized关键字加到static静态方法和synchronized关键字加到非static静态方法不是同一个锁也不存在前者包含后者的关系
synchronized关键字加到static静态方法上是给Class类上锁而加到非static静态方法是给对象加锁为了验证不是同一个锁 验证代码如下package com.test.Thread.t10;/** * @author admin * 2017年4月20日 */public class Service { synchronized public sta...转载 2018-08-08 17:02:24 · 1080 阅读 · 0 评论 -
任意对象可以作为监视器(锁)和其他的锁不是一个类型的锁
锁非this对象 具有一定的优点,如果在一个类中有多个synchronized的方法,这是虽然能使先同步,单会受到阻塞,所以影响运行效率,但是如果使用同步代码块锁非this对象,则synchronized (非this) 代码块中的程序与同步方法是异步的,不予其他锁this 同步方法争抢this 锁,则可以大大的提高效率。package extthread;import service.S...转载 2018-08-08 23:12:50 · 573 阅读 · 1 评论 -
synchronized 数据类型String常量池特性
package extthread;import service.Service;public class ThreadA extends Thread { private Service service; public ThreadA(Service service) { super(); this.service = service; } @Override publi...转载 2018-08-08 23:28:57 · 298 阅读 · 0 评论