java
康康的博客
摸鱼小能手
展开
-
java继承中new子类对象的执行顺序
下面测试代码块,静态代码块,构造器的初始化顺序public class TestExtends {public static void main(String[] args) {A a = new A(5);/*输出结果:* B constructorA.draw(), radius = 0A constructorA.draw(), radius = 5转载 2017-05-13 19:55:10 · 1813 阅读 · 0 评论 -
synchronized 和java.util.concurrent.locks.Lock的异同
Lock是Java 5以后引入的新的API,和关键字synchronized相比主要相同点:Lock 能完成synchronized所实现的所有功能;主要不同点:Lock有比synchronized更精确的线程语义和更好的性能,而且不强制性的要求一定要获得锁。synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且最好在finally 块中释放(这是释放外部资源的最好的地方转载 2017-07-04 00:56:49 · 341 阅读 · 0 评论 -
Java 8 lambda表达式
例1、用lambda表达式实现Runnable我开始使用Java 8时,首先做的就是使用lambda表达式替换匿名类,而实现Runnable接口是匿名类的最好示例。看一下Java 8之前的runnable实现方法,需要4行代码,而使用lambda表达式只需要一行代码。我们在这里做了什么呢?那就是用() -> {}代码块替代了整个匿名类。123转载 2017-06-14 11:04:17 · 302 阅读 · 0 评论 -
java中插入排序,选择排序,冒泡排序
java中插入排序,选择排序,冒泡排序package test.kang;import java.util.Arrays;public abstract class Test04_sort { public static void main(String[] args) { int[] arr=new int[]{31,24,3,74,2,34,45,原创 2017-06-28 11:34:05 · 244 阅读 · 0 评论 -
java的io流使用
package test.kang;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;/* 1)一类是基本byte数据的处理 Buff原创 2017-06-28 15:30:12 · 197 阅读 · 0 评论 -
java定时器使用
package test.kang;import java.util.Date;import java.util.Timer;import java.util.TimerTask;/*定时器 * * */public class Test18 { public static void main(String[] args) { //创建定时器// Timer time原创 2017-06-28 15:42:19 · 311 阅读 · 0 评论 -
final关键字
1.final修饰的类不可以被继承2.final修饰的变量不能二次赋值(即值不能被改变),并且只能在初始化时被赋值3.final修饰方法不能被重写4.final修饰的对象引用不能改变,值可以变原创 2017-05-15 12:18:42 · 198 阅读 · 0 评论 -
nio使用之netty框架
1.官网上下载相应的jar包http://netty.io/downloads.html当然,使用maven更方便,直接添加相应的依赖就行2.创建工程,将下载好的包导入进去这个是我的目录结构服务器端:1.创建HelloServerpackage kang.server;import io.netty.bootstrap.ServerBootstr转载 2017-10-23 16:08:07 · 317 阅读 · 0 评论 -
Java并发编程-同步辅助类之CountDownLatch
Java并发编程-同步辅助类之CountDownLatch CountDownLatch是Java concurrent包下提供的同步辅助类。在完成一组正在其他线程中执行的操作之前,它允许线程一直等待,可以用来设置同步点。 和Semaphore类似,它使用一个整数进行初始化,Semaphore中的计算表示可以同步访问共享数据的线程数,CountDownLatch中的计算表示线程要等待的操作数数转载 2017-12-12 10:37:10 · 194 阅读 · 0 评论 -
悲观锁和乐观锁
乐观锁( Optimistic Locking ) 相对悲观锁而言,乐观锁机制采取了更加宽松的加锁机制。悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性。但随之而来的就是数据库性能的大量开销,特别是对长事务而言,这样的开销往往无法承受。而乐观锁机制在一定程度上解决了这个问题。乐观锁,大多是基于数据版本( Version )记录机制实现。何谓数据版本?即为数据增加一个转载 2018-03-31 11:16:21 · 152 阅读 · 0 评论 -
Java线程安全的实现方法
1.互斥同步 互斥同步(Mutual Exclusion&Synchronization)是常见的一种并发正确性保障手段。同步是指在多个线程并发访问共享数据时,保证共享数据在同一个时刻只被一个(或者是一些,使用信号量的时候)线程使用。而互斥是实现同步的一种手段,临界区(Critical Section)、互斥量(Mutex)和信号量(Semaphore)都是主要的互斥实现方式。因此,在这4个...转载 2018-03-31 11:24:07 · 748 阅读 · 0 评论 -
Java中Volatile关键字详解
阅读目录一、基本概念二、Volatile原理一、基本概念先补充一下概念:Java 内存模型中的可见性、原子性和有序性。可见性: 可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉。通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情。为了确保多个线程之间对内存写入操作的可见性,必须使用同步机制。 可见性,是指线程之间的可见性,一个线程修改的状态...转载 2018-03-31 12:53:13 · 192 阅读 · 0 评论 -
算法复杂度
算法复杂度是指算法在编写成可执行程序后,运行时所需要的资源,资源包括时间资源和内存资源。应用于数学和计算机导论。通常,对于一个给定的算法,我们要做 两项分析。第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式、数学归纳法等。而在证明算法是正确的基础上,第二部就是分析算法的时间复杂度。算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能...转载 2018-03-31 13:10:11 · 9519 阅读 · 0 评论 -
java线程池Executor
一.创建线程池Executors类,提供了一系列工厂方法用于创先线程池,返回的线程池都实现了ExecutorService接口。public static ExecutorService newFixedThreadPool(int nThreads)创建固定数目线程的线程池。public static ExecutorService newCachedThreadPool()转载 2017-07-03 22:40:54 · 208 阅读 · 0 评论 -
java线程
package test.kang;/*创建线程两种方式 * 1.实现Runnable接口 * 2.继承Thread类 *线程的五种状态 * 1.new 新建状态,start()方法时,线程启动,进入Runnable状态 * 2.Runnable可运行(就绪)状态 ,当线程获取了CPU,则进入Running状态执行run方法 * 3.Running运行状态,调用yield()方法原创 2017-06-28 15:39:10 · 174 阅读 · 0 评论 -
java自动装箱和拆箱
7.int和Integer有什么区别?答:Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换。Java 为每个原始类型提供了包装类转载 2017-06-10 20:49:13 · 239 阅读 · 0 评论 -
static关键字
1.static修饰的变量1.1 static修饰的变量共享,且类变量在类加载的时候初始化,而且只被初始化一次1.2 final+static修饰的叫静态常量,属性值不可变,名称习惯大写2.static修饰的景静态方法2.1 只能调用其他的static 方法,不能调用普通方法2.2 它们只能访问static数据。2.3 它们不能以任何方式引用this 或super。原创 2017-05-15 12:43:30 · 224 阅读 · 0 评论 -
String用法
先看下API中String相关方法char charAt(int index) 返回指定索引处的 char 值。 int codePointAt(int index) 返回指定索引处的字符(Unicode 代码点)。 int codePointBefore(int index) 返回指定索引之前的字符(原创 2017-05-16 18:02:26 · 181 阅读 · 0 评论 -
java的正则匹配
1.验证字符串是否匹配的方式: 1.String 的.matches(regex)方法 2.Pattern类//1.输入正则表达式 Pattern pattern=Pattern.compile(compile); //2.要匹配的字符 Matcher matcher=pattern.matcher(match);原创 2017-05-18 16:41:07 · 866 阅读 · 0 评论 -
java利用Comparator与Collections.sort对List排序
如果List中Object实现了Comparator接口,便可以直接用以下的方式对List进行排序还有另外一种Collections.sort(list, comparator),需要自定义匿名类package test.kang;import java.util.ArrayList;import java.util.Collections;import jav原创 2017-06-14 00:13:47 · 1251 阅读 · 0 评论 -
java卖票线程问题synchronized
package test.kang;import test.kang.TicketSystem.Person;import test.kang.TicketSystem2.Person2;public class Test20 { /*线程异步容易出现的问题:线程并发造成的,这就是线程安全问题 * 解决办法:加锁 synchronized * */ public stat原创 2017-06-28 15:50:02 · 496 阅读 · 0 评论 -
java中mongodb使用
package kang;import java.util.ArrayList;import java.util.List;import org.bson.Document;import com.mongodb.MongoClient;import com.mongodb.MongoCredential;import com.mongodb.ServerAddress;impo转载 2017-06-29 16:44:27 · 459 阅读 · 0 评论 -
java反射创建对象
package reflect_;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;public class Reflect{ public static void main(String[] args) { // test1(); test2("reflec原创 2017-06-21 14:55:38 · 243 阅读 · 0 评论 -
java的switch表达式支持的类型
一般格式:switch (表达式){case 值1:执行语句1;break;case 值2:执行语句2; break;…case 值n:执行语句n;break;default: 执行语句default;}JDK1.6(及之前版本)支持byte,char,short,intJDK1.7新特性支持了String类型原创 2017-06-21 15:09:40 · 1083 阅读 · 0 评论 -
java使用jdbc连接数据库步骤
// 1.加载驱动类,这里是用oracle数据库的驱动Class.forName("oracle.jdbc.driver.OracleDriver");// 2.获取连接Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "账号", "密码");// 3.原创 2017-06-21 15:21:22 · 1193 阅读 · 0 评论 -
java日期操作
java获取日期package test.kang;import java.text.SimpleDateFormat;import java.time.Clock;import java.time.LocalDate;import java.time.format.DateTimeFormatter;import java.util.Calendar;import ja原创 2017-06-13 17:01:40 · 240 阅读 · 0 评论 -
java中equal和hashCode方法
package test.kang;import java.util.HashMap;public class Test25 { public static void main(String[] args) { /*一般如果使用java中的Map对象进行存储时,他会自动调用hashCode方法来比较两个对象是否相等。 * 当Apples类不重写hashCode方法原创 2017-06-10 20:45:26 · 615 阅读 · 0 评论 -
jacoco生成覆盖率报告的几种方式
1.本地跑maven项目集成jacoco获取单元测试代码覆盖率,在pom.xml的build标签里面增加该插件 <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin<...原创 2018-12-19 17:08:10 · 14657 阅读 · 0 评论