
JAVA
呜啦啦、
一蓑烟雨任平生
展开
-
synchronized与Lock的区别
类别 synchronized Lock 存在层次 Java的关键字,在jvm层面上 是一个类 锁的释放 1、以获取锁的线程执行完同步代码,释放锁 2、线程执行发生异常,jvm会让线程释放锁 在finally中必须释放锁,不然容易造成线程死锁 锁的获取 假设A线程获得锁,B线程等待。如果A线程阻塞,B线程会一直等待 分...转载 2019-03-19 11:49:10 · 291 阅读 · 0 评论 -
设计模式——适配器模式
起到转接的作用,类似于 插头的 转接头/转换器 public class 适配器模式 {}interface 和尚{ public void 念经(); public void 撞钟(); public void 习武();}//中间类起到这样的一个转换作用。abstract class 天罡星 implements 和尚{ //使用...原创 2019-01-03 14:48:43 · 150 阅读 · 0 评论 -
设计模式——简单工厂模式
简单工厂模式:又名静态工厂模式,它定义一个具体的工厂负责创建一些类的实例优点:客服端不需要再负责对象的创建,从而明确了个各类的职责缺点:这个静态工厂类负责所有工厂的创建,如果有新的对象添加,或者某些对象的创建方式不同, 就需要不断的修改工厂,不利于后期维护实例:写一个简单的 创建 动物的工厂模式public class Test { public stat...原创 2019-01-03 09:12:17 · 156 阅读 · 0 评论 -
一个数恰好等于它的因子之和, 这个数就称为”完数”. 例如 6 = 1+2+3。编程找出1000 以内的所有完数。
一个数如果恰好等于它的因子之和, 这个数就称为”完数”. 例如 6 = 1+2+3。编程找出1000 以内的所有完数。 Java代码实现:import java.util.LinkedList;public class Test { public static void main(String[] args) { for (int i = 2; i <...原创 2019-01-12 10:50:25 · 1800 阅读 · 0 评论 -
Java如何计算程序运行时间
long startTime = System.currentTimeMillis(); //获取开始时间doSomething(); //测试的代码段long endTime = System.currentTimeMillis(); //获取结束时间System.out.println("程序运行时间:" + (endTime - startTime) + "m...转载 2018-12-26 10:46:21 · 491 阅读 · 0 评论 -
用servlet记录用户访问次数
网站的计数器功能,浏览者每访问一次网站,计数器就累加一次。实现计数器主要是在servlet中应用ServletContext接口,Servlet容器在启动一个Web应用时,会为它创建一个ServletContext对象。当Servlet容器终止一个Web应用时,ServletContext对象也会被销毁,所以该对象与Web应用程序有同样的生命周期。也就是说,整个Web应用的组件可以共享Servle...转载 2019-01-10 20:25:29 · 1714 阅读 · 0 评论 -
No suitable driver found for jdbc—我的解决方法
今天出现编码出现了No suitable driver found for jdbc,又是找遍了网上的资料,基本上都说是三个问题: 一是:连接URL格式出现了问题(Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/XX","root","XXXX") 二是:驱动字符串出错(com.mys...转载 2019-01-04 17:50:17 · 23682 阅读 · 1 评论 -
模拟多个人通过一个山洞:这个山洞每次只能通过一个人,每个人通过山洞的时间为5秒,随机生成10个人,同时准备过此山洞,显示一下每次通过山洞人的姓名。
模拟多个人通过一个山洞:这个山洞每次只能通过一个人,每个人通过山洞的时间为5秒,随机生成10个人,同时准备过此山洞,显示一下每次通过山洞人的姓名。public class 十人过山洞 { public static void main(String[] args) { people p = new people(); new Thread(p, "1...原创 2019-01-04 09:13:34 · 1705 阅读 · 0 评论 -
JDBC 中preparedStatement和Statement
一、概念PreparedStatement是用来执行SQL查询语句的API之一,Java提供了 Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程。同时PreparedState...转载 2018-12-24 20:19:02 · 627 阅读 · 0 评论 -
HashSet集合好像是有序的?
我们知道,Set集合是无序集合,即存取顺序不一致,但在JDK1.8中存取顺序好像是一致的,看下面的例子: 运行结果如下: 在知乎上看到了一篇比较合理的解答,大致是说JDK1.8的中HashSet实现变了,又因为插入HashSet的是Integer,其hashCode()实现就返回int值本身。所以在对象hashCode这一步引入了巧合的“按大小排序”。然后HashMap.has...转载 2018-12-29 09:48:54 · 1300 阅读 · 0 评论 -
java 获取随机数的三种方法
1 //方法1 (数据类型) 2 //(最小值+Math.random()*(最大值-最小值+1)) 3 // 例: 4 (int)(1+Math.random()*(10-1+1)) //从1到10的int型随数 5 6 方法2 获得随机数 7 for (int i=0;i<30;i++) 8 { 9 System.out.println((int)(1+Mat...转载 2018-12-29 09:16:35 · 991 阅读 · 0 评论 -
Java 求1000 阶乘 中所有0 的个数,和尾部0 个数
求1000的阶乘结果中所有0的个数,以及尾部0的个数 (10200 中所有0有3个,尾部0的个数是2个)分析:1000的阶乘太大,结果不能使用int 要用BigInteger尾部0 的个数,可以通过字符串反转。 public class test8 { public static void main(String[] args) { Demo1...原创 2018-12-28 16:29:04 · 453 阅读 · 0 评论 -
Java 玩约瑟夫环
今天遇到这样一个一题,杀人游戏一个国王拉来了一百位死囚犯,让他们围成一个圈,然后选择一个开始报数,报到3 (或者其他数字)就杀掉,然后又重一开始,这样一直循环的杀 直到最后一个无罪释放,问 哪一个幸运儿 一开应该站在几号 位置。 public class test { public static void main(String[] args) { S...原创 2018-12-28 15:55:55 · 292 阅读 · 0 评论 -
Java 模板设计/方法模式
模板设计模式:就是定义一个算法的骨架,而具体的算法延迟到子类中来实现。优点:使用模板方法模式,在定义算法骨架的同时,可以灵活的实现具体的算法,满足用户灵活多变的需求缺点:如果算法骨架要修改的话,则需要修改抽象类。 实例: 计算一个程序的运行时间。public class test6 { public static void main(String[] args...原创 2018-12-28 14:50:16 · 143 阅读 · 0 评论 -
判断一个数是否是2的n次方
输入一个数,判断这个数是否是2的n次方?Java 代码实现:import java.util.Scanner;public class test { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.printl...原创 2019-01-08 09:22:40 · 269 阅读 · 0 评论 -
计算一个数的二进制中有多少个 1
输入一个整数,计算这个数的二进制表示中有多少个 1Java 代码实现:public class test { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入一个正整数"); ...原创 2019-01-08 13:39:10 · 362 阅读 · 0 评论 -
jvm,jre以及jdk三者之间的关系?
JDKJDK是java开发工具包,在其安装目录下面有六个文件夹、一些描述文件、一个src压缩文件。bin、include、lib、 jre这四个文件夹起作用,demo、sample是一些例子。可以看出来JDK包含JRE,而JRE包含JVM。bin:最主要的是编译器(javac.exe)include:java和JVM交互用的头文件lib:类库jre:java运行环境(注意:这里的bi...转载 2019-03-12 10:02:22 · 1293 阅读 · 0 评论 -
idea热部署debug自动编译
https://blog.youkuaiyun.com/z15732621582/article/details/79439359?tdsourcetag=s_pctim_aiomsg#commentBox原创 2019-03-19 14:36:45 · 2117 阅读 · 0 评论 -
Java同步三种实现方式
Java中同步的几种实现方式1.使用synchronized关键字修饰类或者代码块;2.使用Volatile关键字修饰变量;3.在类中加入重入锁。代码示例:非同步状态下:public static void main(String[] args){ Increase increase = new Increase(); int count ...转载 2019-03-06 16:45:39 · 529 阅读 · 0 评论 -
Java中多线程实现的方式(四种)
Java多线程实现的方式有四种1.继承Thread类,重写run方法2.实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函数的target3.通过Callable和FutureTask创建线程4.通过线程池创建线程前面两种可以归结为一类:无返回值,原因很简单,通过重写run方法,run方式的返回值是void,所以没有办法返回结果...转载 2019-03-06 15:45:30 · 265 阅读 · 0 评论 -
JDBC 连接Oracle
首先要导入驱动包,可以网上下对应数据库版本的驱动包,也可以使用自带的,我就使用自带的,我的目录:C:\Oracle11g\product\11.2.0\dbhome_1\jdbc\lib\ojdbc6.jar。为了代码逻辑好看,都把异常抛出去,连接:原始方法public class BaseDao { //定义数据库连接属性 private static Stri...原创 2019-02-27 09:59:45 · 645 阅读 · 0 评论 -
遍历List集合的三种方法
List<String> list = new ArrayList<String>();list.add("aaa");list.add("bbb");list.add("ccc");方法一:超级for循环遍历for(String attribute : list) { System.out.println(attribute);}方法二:对于Arr...转载 2019-03-02 13:55:01 · 271 阅读 · 0 评论 -
Java中instanceof关键字的理解
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。用法: result = object instanceof class 参数: Result:布尔类型。 Object:必选项。任意对象表达式。 Class:必选项。任意已定义的对象类。 说明: ...转载 2019-02-18 16:14:07 · 214 阅读 · 0 评论 -
jsp之九大内置对象与四大域对象
一,什么是内置对象?在jsp开发中会频繁使用到一些对象,如ServletContext HttpSession PageContext等.如果每次我们在jsp页面中需要使用这些对象都要自己亲自动手创建就会特别的繁琐.SUN公司因此在设计jsp时,在jsp页面加载完毕之后自动帮开发者创建好了这些对象,开发者只需要使用相应的对象调用相应的方法即可.这些系统创建好的对象就叫做内置对象.在ser...转载 2019-02-22 20:02:24 · 296 阅读 · 0 评论 -
Java 中 List,Set,Map 简单总结
List 和 Set 是存储单列数据的集合,Map 是存储键和值这样的双列数据的集合;List 中存储的数据是有顺序,并且允许重复;Set 中存储的数据是无序的,且不允许有重复Map 中存储的数据是没有顺序的,其键是不能重复的,它的值是可以有重复的,List 接口有三个实现类:ArrayList 底层结构是数组,底层查询快,增删慢。LinkedList 底层结构是链表型的,...原创 2019-02-17 16:07:58 · 305 阅读 · 0 评论 -
java中,普通集合、同步的集合、并发集合。
在Java中,有普通集合、同步的集合(即线程安全的集合)、并发集合。并发集合常见的有ConcurrentHashMap、ConcurrentLinkedQueue、ConcurrentLinkedDeque等。并发集合位于java.util.concurrent包下,是在JDK1.5之后才有的。普通集合通常性能最高,但是不保证多线程的安全性和并发的可靠性;线程安全集合仅仅是给集合添加了s...转载 2019-02-17 15:52:59 · 427 阅读 · 0 评论 -
ArrayList 内部实现简单理解
ArrayList是基于数组的, 内部是用 Object[]实现的当new 一个空参 ArrayList 的时候,系统生成一个长度为0的Object数组。当new一个有参的ArrayList的时候,该值作为数组的长度值。如果该值小于 0,则抛出一个运行时异常。如果等于 0,则使用一个空数组,如果大于 0,则创建一个长度为该值的新数组。当向集合添加的且长度不够时,把原来的数组Copy到一...原创 2019-02-17 15:39:48 · 444 阅读 · 0 评论 -
Java中== 和 equals
先总结后分析:总结: 1)对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等; 如果作用于引用类型的变量,则比较的是所指向的对象的地址 2)对于equals方法,注意:equals方法不能作用于基本数据类型的变量 如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址; 诸如String、Date等类对e...转载 2019-02-22 11:37:23 · 242 阅读 · 0 评论 -
简单理解简单集合,同步集合,并发集合
在Java中,有普通集合、同步的集合(即线程安全的集合)、并发集合。并发集合常见的有ConcurrentHashMap、ConcurrentLinkedQueue、ConcurrentLinkedDeque等。并发集合位于java.util.concurrent包下,是在JDK1.5之后才有的。普通集合通常性能最高,但是不保证多线程的安全性和并发的可靠性;线程安全集合仅仅是给集合添加了s...转载 2019-02-10 21:09:44 · 406 阅读 · 0 评论 -
Java 获取指定目录下指定后缀名的文件名称
前面我们学习了File获取指定路径下的所有文件或者文件夹的名称,还有获取指定路径下所有的文件对象。这篇,我们分别利用这两个方法来做一个练习题,例如输出桌面文件中所有的png文件名称。最后简单看看文件过滤器的使用,也通过解决这个问题。1. 文件名称方法如果你桌面没有png文件,你可以换成jpg,或者docx,或者pdf,MP4等。package file;import java.i...转载 2018-12-10 17:07:39 · 8829 阅读 · 3 评论 -
Java 中Map 遍历
关于java中遍历map具体哪四种方式,请看下文详解吧。方式一 这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。 1 2 3 4 Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for (Map.Entry&...转载 2018-12-26 21:01:10 · 164 阅读 · 0 评论 -
Java Final 总结
final修饰变量:常量,初始化就不再被改变成员变量: 声明的时候要赋值 声明的之后在构造方法中赋值 静态成员变量声明的时候必须赋值 基本类型变量,值不可变 引用类型变量,引用不可变,引用所指的对象是可变的局部变量: 不可变final 修饰方法: 不允许被重写 效率:内嵌调用final修饰类 ...原创 2018-11-23 19:57:11 · 190 阅读 · 0 评论 -
Java 两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人
两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。方法一:(个人认为方法二更好理解)for(char i ='x';i<='z';i++){ for(char j ='x';j<='z';j++){ if(i!...原创 2018-11-16 19:47:56 · 7883 阅读 · 0 评论 -
Java 求两个日期之间的天数,最原始方法
import java.util.Scanner;public class first { public static void main(String[] args) { Scanner input_date = new Scanner(System.in); System.out.print("请输入第一个日期:"); //小日...原创 2018-11-16 19:28:38 · 328 阅读 · 0 评论 -
Java 输入一个正整数,将其用中文打印出来
输入一个正整数,将其用中文打印出来。使用java 实现import java.util.Scanner;public static void main(String[] arge){ boolean flag = true;Scanner input = new Scanner(System.in);System.out.print("请输入一个正整数:")...原创 2018-11-16 17:50:23 · 1727 阅读 · 0 评论 -
Java 10个小孩围成一圈分糖果,老师顺次分给每个人的糖块数为12,2,8,22,16,4,10,6, 14,20。
10个小孩围成一圈分糖果,老师顺次分给每个人的糖块数为12,2,8,22,16,4,10,6, 14,20。然后按下列规则调整,所有小孩同时把自己的糖果分一半给右边的小孩,糖块数变为奇数的人,再向老师补要一块,问经过多少次调整后,大家的糖块一样多,且每人多少块。int[] arr = {12,2,8,22,16,4,10,6,14,20}; int[] temp = n...原创 2018-11-21 10:42:52 · 4780 阅读 · 0 评论 -
Java 抓阄游戏
题目描述:将本班员工姓名存储在一维数组中,当按回车键抓住一个员工,抓过的员工下次不能再被抓住 String[] arr_name = new String[15]; //假设15人,灵活变动 for(int i = 0; i < arr_name.length; i++){ arr_name[i] = ("name"+i); }Syste...原创 2018-11-20 19:16:44 · 1354 阅读 · 0 评论 -
Java 实现 十进制转二进制,十进制转十六进制
/** * 十转二 * @param a * @return String 型的二进制 */ public static String ten_two(int a){ int length = 1; int b = a; while(true){ int x = b % 2...原创 2018-11-20 19:01:01 · 768 阅读 · 0 评论 -
Java 中 Math.sqrt()方法
Java Math.sqrt()方法描述java.lang.Math.sqrt(double a) 返回正确舍入的一个double值的正平方根。特殊情况: 如果参数是NaN或小于为零,那么结果是NaN. 如果参数是正无穷大,那么结果为正无穷大. 如果参数是正零或负零,那么结果是一样的参数. 否则,其结果是最接近真正的数学平方根的参数值的double值。声明...转载 2018-11-14 16:36:48 · 19875 阅读 · 0 评论 -
JAVA往字符串中某位置加入一个字符串
String a = “hello”; StringBuffer sb = new StringBuffer(); 1、 sb.append(a).insert(2,”aaa”); 结果sb.toSring()为”heaaallo” 2、 sb.append(a).replace(1, 3, “aaa”); //下标从第一开始,到第三个结束 结果sb.toSring()为”haaal...转载 2018-11-15 17:35:36 · 3605 阅读 · 0 评论