
JavaSE
文章平均质量分 79
Bugggget
记下是个好习惯
展开
-
Java synchronize原理和锁优化
什么是锁优化?JDK1.5为了解决synchronize效率问题,出现了Lock锁。(Lock锁源码分析看这篇文章Java8 Lock锁详解(AQS,CAS))JDK1.6对synchronize进行了大量优化,让synchronize能够和和Lock锁性能不相上下。synchronize锁优化策略自适应自旋锁自旋就是在获取锁失败之后循环进行尝试,自适应是指动态的对循环次数进行调整。举个例子,在自适应时,如果尝试了5次能够获取到锁,且尝试5次的时间比阻塞的时间段,则使用10作为自旋次数。如果尝试了原创 2020-07-02 21:01:14 · 491 阅读 · 0 评论 -
Java8 Lock锁详解(AQS,CAS)
什么是Lock锁?Lock锁提供了的比synchronized关键字更加灵活的锁操作,是代码层面的锁操作。为什么要使用Lock锁?Lock锁和synchronized关键字的对比类型synchronized关键字Lock锁获取锁无超时时间,未获取到则阻塞等待(占用cpu资源),且无法被中断非阻塞,可以被中断,未获取到则排队,中断,可以自定义超时时间共享锁不支持读写锁ReadWriteLock支持释放锁必须在当前代码块中,因为synchronized是以{原创 2020-07-01 15:04:32 · 3835 阅读 · 0 评论 -
ForkJoin框架源码分析(详细)
ForkJoin框架是CompletableFuture和java8 stream,ConsurrentHashMap等并发包中使用到的框架。主要用于分片处理的场景。原创 2020-06-30 15:55:02 · 6140 阅读 · 0 评论 -
[ JavaIO ] JavaIO
JavaIO概述:JavaIO大体分为两个流:字符流和字节流,其他各种流操作都是对这两个流的装饰或者继承。字节流的超类:InputStream(输入流)和OutputStream(输出流)字符流的超类:Reader(输入流)和 Writer(输出流)要区分输入输出流,就要站在程序的角度看,输入流意思就是向程序里面输入数据,把东西从外部读到程序。输出流就是将程序里面的东西写到外部的某个载体上,比如写...原创 2018-05-18 12:03:21 · 578 阅读 · 0 评论 -
Java多线程-FutureTask的get方法阻塞问题
FutureTask类中get方法阻塞的问题:get方法的实现: /** * @throws CancellationException {@inheritDoc} */ public V get() throws InterruptedException, ExecutionException { int s = state;原创 2018-04-27 15:13:22 · 20132 阅读 · 0 评论 -
Java泛型的应用-双链表
泛型双向链表原创 2018-04-27 15:45:20 · 466 阅读 · 0 评论 -
Java多线程-模拟售票
java多线程买票原创 2018-04-27 16:35:54 · 484 阅读 · 0 评论 -
Java多线程
多线程和单线程的区别:单线程程序执行是顺序的,比如在一个聊天程序中,发送消息的时候不能接收消息,在接收消息的时候不能发送消息。多线程程序各个线程看起来是并发的,在发送消息的时候可以同时接收消息。接收消息的同时可以发送消息。多线程和多进程的区别:首先看一下进程和线程的区别:进程是程序在内存中的表现形式。是程序的执行环境,创建一个进程之后就自动创建了一个线程。一个进程中有一个到多个线程,所以进程是线程...原创 2018-04-27 12:40:50 · 227 阅读 · 0 评论 -
JavaIO流-文件操作类
在Java.io包之中,File类是唯一一个与文件本身操作(创建、删除、取得信息..)有关的程序。以下是一些操作文件的常用方法:File.separator:控制文件分隔符,由于linux下是/,windows下是\\, File.separator可以避免平台的原因出现的文件分隔符的区别。创建文件对象:File file = new File(path);file.exists()判断文件是否存...原创 2018-05-13 23:08:45 · 375 阅读 · 0 评论 -
Java-反射
什么是反射?通过反射可以在运行时获得程序或程序集中每一个类型的成员和成员的信息。程序中一般的对象的类型都是在编译期就确定下来的,而Java反射机制可以动态地创建对象并调用其属性,这样的对象的类型在编译期是未知的。所以我们可以通过反射机制直接创建对象,即使这个对象的类型在编译期是未知的。 反射的核心是JVM在运行时才动态加载类或调用方法/访问属性,它不需要事先(写代码的时候或编译期)知道运行对象是谁...原创 2018-04-29 23:31:02 · 399 阅读 · 0 评论 -
Java-线程同步与等待机制练习
使用线程同步与等待机制打印如下: *Thread-0#Thread-1@Thread-2 * Thread-0#Thread-1@Thread-2 *Thread-0#Thread-1@Thread-2 * Thread-0#Thread-1@Thread-2 *Thread-0#Thread-1@Thread-2 *Thread-0#Thread-1@Thread-2代码如下:class Fla...原创 2018-05-08 16:50:32 · 501 阅读 · 0 评论 -
[ Java多线程 ] synchronize全局锁和对象锁的区别
对象锁:/** * 全局锁,对象锁的区别 * @author Z7M-SL7D2 * */class Person{ private static int COUNT = 10; // 同一时间只允许一个线程吃 public synchronized void eat() { System.out.print("开始吃 "); COUNT--; System...原创 2018-05-08 17:27:55 · 2431 阅读 · 0 评论 -
[ JavaSE ]集合类
Java类集(放对象): 类集实际上就属于动态对象数组,在实际开发之中,数组的使用出现的几率并不高,因为数组本身有一个最大的缺陷:数组长度是固定的。由于此问题的存在,从JDK1.2开始,Java为了解决这种数组长度问题,提供了动态的对象数组实现框架--Java类集框架。Java集合类框架实际上就是java针对于数据结构的一种实现。而在数据结构之中,最为基础的就是链表。类集结构:...原创 2018-05-30 14:29:05 · 338 阅读 · 0 评论 -
JVM学习-Java内存布局
了解java内存使用的必要性:Java内存是由Java虚拟机控制的,一旦出现了内存泄漏或内存溢出,排查错误将会非常艰难。Java虚拟机所管理的内存包含以下几个运行时的内存区域。原创 2018-05-30 16:14:42 · 297 阅读 · 0 评论 -
JVM学习-Java内存处理
Java堆内存异常:内存异常分为内存泄漏和内存溢出。内存泄漏:leak,☞创建的对象不需要了,永远也用不到了,但是一直有引用指向这个对象,让其一直无法被垃圾回收,而且增大堆内存无法解决的异常。内存溢出:对象还需要,但是内存不够了,出现这种问题,可以通过增大内存来解决。(或者缩短对象存活时间)虚拟机栈的内存异常:StackOverFlowError:只会发生于单线程环境下。指当前...原创 2018-05-30 16:58:12 · 437 阅读 · 0 评论 -
微Chat(多线程聊天室)
实现聊天室需要具备的知识和用到的API:端口号:一个应用程序对应一个端口号,比如http服务器的默认端口号80,tomcat服务器默认端口号为8080.数据库服务器的默认端口号为3306。服务端:创建一个SocketServerSocket serverSocket = new ServerSocket("127.0.0.1",6666);阻塞直到有客户端连接,返回一客户端...原创 2018-06-06 22:59:15 · 1665 阅读 · 0 评论 -
[ JavaIO ]统计文件夹下的代码行数
在Java.io包中,File类是唯一一个与文件本身操作(创建,删除,取得信息。。)有关的类。、下面是实现代码行数的思路:使用File file = new File("C:\\path");来获取一个文件对象。使用File[ ] files = file.listFiles();列出文件下所有的文件。使用LineNumberReader lnr。lnr.skip(Long.MAX_VALUE);...原创 2018-05-11 17:57:23 · 743 阅读 · 0 评论 -
Java反射与注解入门
反射中的5大类:Class,Constructor,Method,Field,Annotation.Class:用来描述一个类 |_______Constructor:用来描述一个类的构造函数 |_______Method:用来描述一个类的方法 |_______Field:用来描述一个类的成员变量 ...原创 2018-05-11 17:37:30 · 488 阅读 · 0 评论 -
Java类加载机制
ClassLoader类加载器类加载器的作用:类加载器用于加载编译生成的 *.class 文件内容(每一个类在编译之后都会生成一个.class文件)。Java有以下几种类加载器:Bootstrap(启动类加载器,C++实现):用于加载%JAVA_HOME%/lib目录下(或者被Xbootclasspath参数指定路径中)能被虚拟机识别的类库加载到JVM内存中,启动类加载器是由C++实现的,所以无法...原创 2018-05-11 13:44:32 · 225 阅读 · 0 评论 -
Java数据库连接池和dbutils的使用
数据库连接池的作用:数据库连接池的原理:Dbutils的使用原创 2018-01-25 18:18:02 · 2366 阅读 · 0 评论 -
Java 50行代码开发跳一跳辅助
java跳一跳辅助原创 2018-01-20 13:33:21 · 3054 阅读 · 0 评论 -
java爬虫
Java爬虫原创 2018-01-20 14:21:52 · 5843 阅读 · 10 评论 -
JavaWeb-Json的使用
1. 浏览器发送json数据到服务器:(1)先将提交的数据封装成js对象。再使用JSON.stringfiy(对象名)转换为json对象,再通过ajax发送就好了;indexfunction loadXMLDoc(){var xmlhttp;if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome,原创 2018-04-14 11:49:01 · 923 阅读 · 1 评论 -
Java实现单链表面试题
Java链表面试题原创 2018-04-07 18:37:19 · 632 阅读 · 0 评论 -
Java双向链表
双向链表 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。应用场景:发布订阅机制,客户端维护,列表键底层实现之一,等等java双链表实现:DLinkList.javapackage cn.ltp.dlinklist;/**原创 2018-04-15 14:09:13 · 563 阅读 · 0 评论 -
JavaSE--面向对象下
面向对象下原创 2018-04-03 14:11:58 · 265 阅读 · 0 评论 -
JavaSE--接口
1.说出下面程序的执行结果interface InterfaceA { String S = "good "; void f(); } abstract class ClassA { abstract void g(); } class ClassB extends ClassA implements InterfaceA { void g() { System.out.原创 2018-04-03 15:49:59 · 594 阅读 · 0 评论 -
CentOS6.5 yum安装jdk和jre
centos配置java开发和运行环境yum安装原创 2018-03-01 17:55:13 · 3221 阅读 · 0 评论 -
eclipse构建JavaWeb工程报端口被占用的问题
tomcat提示端口号被占用原创 2018-02-28 14:31:40 · 1035 阅读 · 0 评论 -
JavaSE--可变参数
java可变参数原创 2018-02-28 11:02:11 · 363 阅读 · 0 评论 -
XML解析&XML约束文件
DTD约束和SCHEMA约束,以及XML解析,XML语法规则原创 2018-01-29 15:40:36 · 1493 阅读 · 0 评论 -
Java面向对象三大类及异常处理
Java包的作用:解决类名重复的问题访问控制权限:同包同类:4同包不同类:3 无private不同包子类:2 无默认不同包中非子类:1 无protectedjar命令:先编译,后打包class文件。命令jar -cvf Test.jar *.classString类:实例化方式:方式1:String str1 = "hello";方式原创 2018-04-12 22:25:55 · 1119 阅读 · 0 评论 -
JavaSE-泛型
泛型类泛型方法通配符泛型擦除原创 2018-04-26 13:16:44 · 271 阅读 · 0 评论 -
Java60行代码实现swing+mysql学生信息管理系统
swing+mysql实现的学生信息管理系统:数据处理:student类。。。界面显示:swing界面。对数据库做增删改查的4个5个函数入下声明:添加学生信息:public boolean addStuInfo(int sNum, String sName, String sClass, String sProfessional)删除学生信息:public boolean deleteStuInf...原创 2018-01-23 17:25:50 · 17514 阅读 · 13 评论