
java
没有梦想何必远方。
如需要源码,请加VX:yuanchengruanjian
展开
-
多线程--synchronized同步锁用法及作用范围
Java 中的 synchronized 关键字可以在多线程环境下用来作为线程安全的同步锁。synchronized 关键字主要有以下几种用法:非静态方法的同步;静态方法的同步;代码块。下面分对象锁和类锁来分别说明 synchronized 用法:1.对象锁 对象锁在一个类中可以有很多个案例1:两个线程同时访问一个对象里的用synchronized关键字修饰的方 法packa...原创 2019-01-23 22:22:11 · 1118 阅读 · 0 评论 -
Java对象的序列化与反序列化
序列化与反序列化序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。一般将一个对象存储至一个储存媒介,例如档案或是记亿体缓冲等。在网络传输过程中,可以是字节或是XML等格式。而字节的或XML编码格式可以还原完全相等的对象。这个相反的过程又称为反序列化。Java对象的序列化与反序列化在Java中,我们可以通过多种方式来创建对象,并且只要对象没有被回收我们都...原创 2019-01-25 18:42:01 · 140 阅读 · 0 评论 -
高并发--volatile关键字
1.首先弄清楚几个基础概念1.什么是cpu:中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。2.OS(操作系统)操作系统(英语:operating system,缩写作 OS)是管理计算机硬件与软件资源的计算机程序...原创 2019-01-28 21:59:14 · 187 阅读 · 0 评论 -
Synchronized粒度问题 同步方法和同步代码块的区别
主要区别就是同步方法 把整个方法的内容都同步了 把一些前置逻辑和后置逻辑 不需要同步的代码都同步了 这样显然是不行的。而同步代码块则只需要在需要同步的地方使用同步代码块 不影响方法里的其他代码。...原创 2019-01-28 23:18:22 · 575 阅读 · 0 评论 -
高并发--ReentrantLock重入锁
ReentrantLock重入锁是concurrent包下的案例1:m1方法执行完 才会执行m2package com.zhu.threaddemo.reentrantlock;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * ReentrantL...原创 2019-01-29 14:21:06 · 135 阅读 · 0 评论 -
高并发--ThreadLocal
那么模板类到底采用什么方法来解决线程安全的难题呢?那么ThreadLocal是如何做到为每一个线程维护一份独立的变量副本的呢?ThreadLocal则为每一个线程提供了一个变量副本,从而隔离了多个线程访问数据的冲突,ThreadLocal提供了线程安全的对象封装,在编写多线程代码时,可以把不安全的代码封装进ThreadLocal。概括的说,对于多线程资源共享的问题,线程同步机制采取了时间换空间的方...原创 2019-01-29 15:54:08 · 349 阅读 · 0 评论 -
数组去重和List去重
1.数组去重: public static void main(String[] args) { String[] array = {"a","b","c","c","d","e","e","e","a"}; Object[] objects= arrayTest(array);原创 2019-03-04 16:34:28 · 738 阅读 · 0 评论 -
字符串倒序和替换
1.字符串倒序://利用StringBuffer的reverse方法 String foo = "i am a string"; StringBuffer stringBuffer =new StringBuffer(foo); StringBuffer reverse= stringBuffer.reverse(); System.out....原创 2019-03-04 16:53:03 · 536 阅读 · 0 评论 -
判断101-200之间有多少个素数,并输出所有素数。素数为一个大于1的自然数,除了1和它本身外,不能被其他自然数整除。(素数也称质数)
package com.example.springboot.caipiao;public class ZhiShu { public static void main(String[] args) { for (int i=101;i<200;i+=2) { boolean a=false; //M...原创 2019-03-04 16:57:58 · 4612 阅读 · 0 评论 -
对比synchronized与java.util.concurrent.locks.Lock (重入锁 ReentrantLock)的异同
1.Lock能完成几乎所有synchronized的功能,并有一些后者不具备的功能,如锁投票、定时锁等候、可中断锁等候等2.synchronized 是Java 语言层面的,是内置的关键字;Lock 则是JDK 5中出现的一个包,在使用时,synchronized 同步的代码块可以由JVM自动释放;Lock 需要程序员在finally块中手工释放,如果不释放,可能会引起难以预料的后果(在多线程环...原创 2019-03-04 17:42:52 · 376 阅读 · 0 评论 -
java.lang包下的常用类和方法
1.包装类Integer包装类: // int id= Integer.valueOf("0101",2); System.out.println(id); int id1= Integer.parseInt("0101",2); System.out.println(id);2.Object类:hashCode()e...原创 2019-03-11 19:46:38 · 4102 阅读 · 0 评论 -
java.util包下的常用类和方法(工具包)
java学习–java.util包中常用类java.util包被称为java工具包,里面包含大部分的工具类:包括:1.Random类产生随机数:Random 类作为JAVA中用于产生的随机数 ,new Random(10) :10是种子数。注意:Random 的一个特点是:相同种子数的Random对象,对应相同次数生成的随机数字是完全相同的。1):Random生成随机数: Ran...原创 2019-03-11 21:14:29 · 11046 阅读 · 0 评论 -
JAVA JVM
jdk是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。Java SE、Java EE和Java ME有什么区别?Java现在已不仅仅是一种语言,从广义上说,它代表了一个技术体系。该体系根据应用方向的不同主要分为Java SE、Java EE和Java ME的3个部分。1998年12月份Sun公司公布的Java 1.2版本,同时将它的名字改称为“Java...转载 2019-01-15 17:06:14 · 198 阅读 · 0 评论 -
java IO流
java IO流面试总结:1.什么是比特(Bit),什么是字节(Byte),什么是字符(Char),它们长度是多少,各有什么区别答案Bit最小的二进制单位 ,是计算机的操作部分 取值0或者1Byte是计算机操作数据的最小单位由8位bit组成 取值(-128-127)Char是用户的可读写的最小单位,在Java里面由16位bit组成 取值(0-65535)Bit 是最小单位 计算机 只能...原创 2019-01-15 16:59:50 · 177 阅读 · 0 评论 -
各种排序
1.冒泡排序 int[] its= new int[5]; its[0]=6; its[1]=4; its[2]=2; its[3]=9; its[4]=3; for (int i=0;i<its.length;i++) { for (int j=i+1;...原创 2019-01-19 16:44:49 · 91 阅读 · 0 评论 -
Http协议
HTTP简介:HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。...原创 2019-01-19 23:02:38 · 99 阅读 · 0 评论 -
jdk1.8的新特性
1、default关键字 在java里面,我们通常都是认为接口里面是只能有抽象方法,不能有任何方法的实现的,那么在jdk1.8里面打破了这个规定,引入了新的关键字default,通过使用default修饰方法,可以让我们在接口里面定义具体的方法实现,如下。public interface NewCharacter { public void test1(); ...原创 2019-01-19 23:09:12 · 105 阅读 · 0 评论 -
多线程的基本概念
Java多线程面试问题进程和线程之间有什么不同?一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用。而线程是在进程中执行的一个任务。Java运行环境是一个包含了不同的类和程序的单一进程。线程可以被称为轻量级进程。线程需要较少的资源来创建和驻留在进程中,并且可以共享进程中的资源。多线程编程的好处是什么?在多线程程序中,多个线程被并发的执行以...原创 2019-01-19 23:13:21 · 110 阅读 · 0 评论 -
多线程之线程池
19:线程池:为什么要用线程池:我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?在Java中可以通过线程池来达到这样...原创 2019-01-19 23:14:36 · 114 阅读 · 0 评论 -
线程的生命周期
线程生命周期:摘要:当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)5种状态。尤其是当线程启动以后,它不可能一直"霸占"着CPU独自运行,所以CPU需要在多条线程之间切换,于是线程状态也会多次在运行、阻塞之间切换新建状态,当...原创 2019-01-19 23:15:31 · 101 阅读 · 0 评论 -
sleep和wait的区别
对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。sleep()方法让当前线程进入阻塞状态,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了会回到就绪状态等待再次被调度在调用sleep()方法的过程中,线程不会释放对象锁。而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对...原创 2019-01-19 23:16:54 · 102 阅读 · 0 评论 -
线程间协作的两种方式
具体地址 https://www.cnblogs.com/dolphin0520/p/3920385.htmlJava并发编程:线程间协作的两种方式:wait、notify、notifyAll和ConditionJava并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典...原创 2019-01-19 23:18:26 · 248 阅读 · 0 评论 -
创建线程的两种方式(案例)
------------------------继承Thread类创建线程---------------------通过继承Thread类来创建并启动多线程的一般步骤如下1】d定义Thread类的子类,并重写该类的run()方法,该方法的方法体就是线程需要完成的任务,run()方法也称为线程执行体。2】创建Thread子类的实例,也就是创建了线程对象3】启动线程,即调用线程的start()...原创 2019-01-20 16:03:11 · 135 阅读 · 0 评论 -
安装jdk
安装jdk下载jdkwin10怎么配置环境变量:PATH:JDK路径到bin移到最上层新建 JAVA_HOME:JDK路径不到bin测试是否安装好:java-version 或者javac原创 2019-01-15 16:03:47 · 89 阅读 · 0 评论 -
集合List/Set/Map
集合List/Set/Map1.List:有序 可重复的List的实现类:ArrayList 内部是数组数据结构,线程不安全。替代了Vector。查询的速度快 增删效率低LinkedList 内部是链表数据结构,线程不安全。增删元素的速度很快。(链表数据结构)排序:Collections.reverse(); List倒序Collections.sort();List正序底层实现:1...转载 2019-01-15 16:17:00 · 227 阅读 · 1 评论 -
java.io包下的常用类和方法以及和nio的区别
1.Java中I/O相关的两个包是java.io和java.nio,它们的最重要的区别就是java.io里面的类是面向流的(stream oriented),java.nio里面的类是面向缓存的(buffer oriented)。面向流意味着一次读取一个或者一些字节,然后处理这些字节,在读取和处理这些字节时当前线程是阻塞的,不能干其他事情。面向缓存意味着把一些字节读到缓存里面,选择了读取的字节之...原创 2019-03-11 21:35:12 · 553 阅读 · 0 评论