![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
Java相关技术
Shall潇
空空如也
展开
-
数据库连接池
c3p0:参考链接数据库连接池import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.util.LinkedList;/** * @Author shall潇 * @Date 2021/6/1 * @Description */public class MysqlPool { /*数据库连接池基本配置信息*/ private原创 2021-06-01 18:31:37 · 84 阅读 · 0 评论 -
Java---统计单词个数
一、单线程统计package JDBCstu.test;import java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.util.Map;import java.util.TreeMap;/** * @Author shall潇 * @Date 2021/5/31 * @Descrip原创 2021-05-31 21:41:38 · 2015 阅读 · 0 评论 -
FastJSON
文章目录一、导入依赖二、编写程序一、导入依赖<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.62</version></dependency>二、编写程序import com.alibaba.fastjson.JSON;import java.util.A原创 2021-05-27 18:53:18 · 84 阅读 · 0 评论 -
二叉树的遍历
树的遍历:广度遍历和深度遍历广度遍历:即层次遍历:一层一层遍历深度遍历:先序:双亲节点->左子树->右子树中序:左子树->双亲节点->右子树后序:左子树->右子树->双亲节点结果先序:1 2 4 6 7 8 3 5中序:4 7 6 8 2 1 3 5后序:7 8 6 4 2 5 3 1实现源码import java.util.Stack;/** * @Author shall潇 * @Date 2021/5/8 * @Descript原创 2021-05-08 15:34:44 · 102 阅读 · 0 评论 -
JVM---工作原理
转载链接:点这里转载 2021-04-07 19:26:27 · 62 阅读 · 0 评论 -
Java---设计模式
转载链接:点这里设计模式分类设计模式特点单例模式:某个类只能有一个实例,提供一个全局的访问点。简单工厂:一个工厂类根据传入的参量决定创建出那一种产品类的实例。工厂方法:定义一个创建对象的接口,让子类决定实例化那个类。抽象工厂:创建相关或依赖对象的家族,而无需明确指定具体类。建造者模式:封装一个复杂对象的构建过程,并可以按步骤构造。原型模式:通过复制现有的实例来创建新的实例。适配器模式:将一个类的方法接口转换成客户希望的另外一个接口。组合模式:将对象组合成树形结构以表示“”部分-整体“”转载 2021-04-07 15:53:45 · 59 阅读 · 0 评论 -
Java---实现连接HDFS
Java—实现连接HDFS【前提:开启hadoop】public class TestHDFS { public static void main(String[] args) { //1.创建Configuration Configuration conf = new Configuration(); try { //2.创建FS->分布式文件系统(URI:IP:9000,configuration,用户名)原创 2021-03-19 14:21:54 · 1410 阅读 · 0 评论 -
Java---斐波那契数列
Java—斐波那契数列/** * @Author shall潇 * @Date 2021/3/11 * @Description 斐波那契数列 */public class Fibonacci { public static void main(String[] args) { System.out.println("请输入一个正整数"); int num = new Scanner(System.in).nextInt();原创 2021-03-11 19:17:17 · 139 阅读 · 0 评论 -
JNDI
JNDIJNDI—Java Naming and Directory Interface,Java命名和目录接口JNDI 提供了一种统一的方式,可以用在网络上查找和访问服务。通过指定一个资源名称,该名称对应于数据库或命名服务中的一个记录,同时返回数据库连接建立所必须的信息一、配置好Tomcat1、配置/tomcat/conf/context.xml文件2、idea配置Tomcat具体操作可以看我之前的博客【注意:别忘记导入Tomcat和驱动Jar包】dao层package dao;i原创 2021-03-08 17:32:11 · 159 阅读 · 1 评论 -
JDBC---DAO模式
JDBC—(二)前言:之前讲的JDBC由于要反复创建连接、关闭资源等,很是麻烦,所以在之前的基础上,我们优化一下,利用接口、实现类和配置文件来实现JDBC【注意:以下代码可能有先后顺序】dao层package dao;public interface BaseDao { //声明一些会经常使用的方法 void getConn(String Driver,String url,String username,String passwd); //创键连接 void quer原创 2021-03-08 16:49:10 · 430 阅读 · 1 评论 -
单例模式
单例模式单例模式:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例单例模式。懒汉式饿汉式1、懒汉式:在使用时创建对象public class TestSingle1 { //1、私有静态变量 private static TestSingle1 t = null; //2.私有化构造器 private TestSingle1(){} //私有化构造器,在类外部时不可以直接new //3.提供一个公有方法,原创 2021-03-08 16:19:23 · 76 阅读 · 0 评论 -
JDBC
JDBC一、JDBC1、 JDBC访问数据库步骤加载驱动获取连接创建Statement,执行Sql语句返回查询结果关闭资源具体代码如下:Statement public static void main(String[] args) throws Exception { //1.加载驱动 Class.forName("com.mysql.jdbc.Driver"); //2.获取连接(url,username,password)原创 2021-03-05 14:28:07 · 135 阅读 · 2 评论 -
Java---判断一棵树是否是完全二叉树
Java—判断一棵树是否是完全二叉树思路:对于一棵完全二叉树采用广度优先遍历,从根节点开始,入队列,如果队列不为空,循环。遇到第一个没有左儿子或者右儿子的节点,设置标志位,如果之后再遇到有左儿子或者右儿子的节点,那么这不是一棵完全二叉树。这个方法需要遍历整棵树,复杂度为O(N),N为节点的总数。代码如下:import java.util.LinkedList; class Node { //创建二叉树的数据结构 int data; Node left; Node right;} pub原创 2021-03-04 20:03:38 · 1078 阅读 · 4 评论 -
Java---判断一棵树是否为平衡二叉树
Java—判断一棵树是否为平衡二叉树思路:从根节点开始,先判断左右子树的高度差是否超过1,然后接着判断左右子树是否是平衡二叉树代码实现:/** * @Author shall潇 * @Date 2021/3/4 * @Description 平衡二叉树就是左子树和右子树的高度差不能超过1,且左右子树必须是平衡二叉树 * */public class BinaryBalanceTree { public boolean isBalancedTree(Node root){//判断左右原创 2021-03-04 19:57:17 · 307 阅读 · 1 评论 -
Java---判断一棵树是否为二叉查找树BST
Java—判断一棵树是否为二叉查找树BST思路:对于一棵二叉树,最简单的方法就是中序遍历,看是不是一个递增数列,如果是,则是一棵二叉搜索树,如果不是,则不是二叉搜索树。在这里用一个lastVisit去记录上一次搜索的节点。这个过程就是先找到最左下角的节点,更新lastVisit为这个节点的值,然后按照中序遍历依次更新即可。代码实现:/** * @Author shall潇 * @Date 2021/3/4 * @Description */public class BinaryTree {原创 2021-03-04 19:42:19 · 506 阅读 · 3 评论 -
Java---判断一个数是否为回文数
Java—判断一个数是否为回文数闲来无事做小题—3/** * @Author shall潇 * @Date 2021/2/24 * @Description * 判断一个数是否为回文数 * 其实原型就是 翻转数,简单一点做的话可以用 int->String,StringBuffer中的reverse() 与 String进行 equals */public class HuiWenSubString { public static void main(String[] ar原创 2021-02-25 19:55:47 · 312 阅读 · 0 评论 -
Java---翻转数字
Java—翻转数字闲来无事做小题—2/** * @Author shall潇 * @Date 2021/2/24 * @Description * 翻转数字 123->321 ,0->0 */public class ReverseNum { public static void main(String[] args) { int num = new Scanner(System.in).nextInt(); if(num ==0 || n原创 2021-02-25 19:37:38 · 257 阅读 · 1 评论 -
Java---合并两个递增有序的数组
Java—合并两个递增有序的数组,结果逆序且不包含重复元素用的是数据结构思想做的闲来无事做做小练习/** * @Author shall潇 * @Date 2021/2/23 * @Description * 两个递增的数组合并,并删除重复元素,并逆序输出 * 利用数据结构思想 */public class MergeAB { public static void main(String[] args) { int[] a = {2,3,4,7,9,11};原创 2021-02-23 20:17:44 · 492 阅读 · 3 评论 -
Java---反射
Java—反射粗略的写一下,后面在更新获取类的三种方式://第一种Class aClass = Dog.class;//第二种Class bClass = Class.forName(“Reflect.Dog”);//第三种Dog dog = new Dog();Class cClass = dog.getClass();例子:Student类package Reflect.Test1;/** * @Author shall潇 * @Date 2021/2/19 * @D原创 2021-02-19 15:21:05 · 140 阅读 · 2 评论 -
Java---网络编程
Java—网络编程客户端发送信息给服务器举个例子:实现简单的登录功能User类package Socket;import java.io.Serializable;public class User implements Serializable { private String userName; //用户名 private String pwd; //密码 public User() { } public User(String userName, String pwd原创 2021-02-18 15:27:06 · 116 阅读 · 1 评论 -
Java---锁
Java—锁转载:https://tech.meituan.com/2018/11/15/java-lock.html下面只是简单地总结一下悲观锁和乐观锁悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。乐观锁:假定不会发生并发冲突,只在提交操作时检测是否违反数据完整性。(使用版本号或者时间戳来配合实现)共享锁和排它锁共享锁:如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排它锁。获准共享锁的事务只能读数据,不能修改数据。排它锁:如果事务T对数据A加上排它锁转载 2021-02-18 14:36:16 · 89 阅读 · 1 评论 -
Java高级---多线程
Java高级—多线程一、线程的概念再讲线程之前,那么又又又又又又又要提起进程。(这个又字看多了,好像不认识了)进程:程序的一次的执行过程。线程:操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。二、线程的实现和方法Thread thread = new Thread("线程1");//线程创建System.out.println(thread.getName());//获取线程名称thread.start(); //线程启动thread.setPrio原创 2021-02-18 14:04:34 · 179 阅读 · 1 评论 -
Java高级IO---深入理解BIO、NIO、AIO
Java核心(五)深入理解BIO、NIO、AIO转载:https://www.imooc.com/article/265871转载 2021-02-01 17:38:59 · 143 阅读 · 0 评论 -
Java高级---I/O
Java高级—I/O一、文件的创建File file = new File("D:\\soft\\ApiProject\\src\\IO20210129\\Test\\test.txt"); //文件路径二、File的主要方法1、创建:createNewFile() 在指定位置创建一个空文件,成功就返回true,如果已存在就不创建,然后返回false。mkdir() 在指定位置创建一个单级文件夹。mkdirs() 在指定位置创建一个多级文件夹。renameTo(File dest) 如果原创 2021-01-29 17:46:59 · 135 阅读 · 2 评论 -
Java高级---包装类
Java高级—包装类包装类是为了泛型而设计的,集合这边用的还是比较多的,如果默认不写的集合泛型的话,就是Object类型吗,每次都要强转,所里利用泛型解决这个问题,但是泛型需要的是包装类而不是普通基本数据类型。基本数据类型:byte,short,int,long,float,double,char,boolean对应包装类型:Byte,Short,Integer,Long,Float,Double,Character,Boolean实例:Integer a = 9; //自动装箱in原创 2021-01-27 21:13:28 · 134 阅读 · 1 评论 -
Java高级---实用类
Java高级—实用类一、Math类:double Pi = Math.PI;//常量PIdouble e = Math.E; //常量EMath.random(); //随机数0~1Math.round(34.3); //四舍五入Math.abs(-23.4); //绝对值Math.floor(23.4); //向下取整Math.ceil(345.6); //向上取整Math.sqrt(2); //根号Math.log(1); //原创 2021-01-27 14:02:17 · 148 阅读 · 2 评论 -
Java高级---Collections类
Java高级—Collections类Collections类和Collection接口是完全两个不同的东西,大家一定要清楚。Collections类和之前讲的Arrays类一样,都是工具类。一个对集合操作,一个对数组。一、Collections类中常用的方法:1.static void swap(List list, int i, int j) :将指定列表中的两个索引进行位置互换2.static void sort(List list) :按照列表中元素的自然顺序进行排序3.static原创 2021-01-26 21:39:44 · 175 阅读 · 0 评论 -
Java高级---集合
Java高级—集合首先建议看一下前一章的集合框架从这一章开始,我们正式进入Java高级技术部分集合:Collection 无序可重复一、List :有序,可重复1、ArrayList:一维数组作为底层存储特点:遍历、随机访问快、修改方便,其他慢 这里讲一下插入方法:add(Obj)和add(1,Obj) 插入数据元素的底层实现原理:【这里建议看Java源码】 插入前判断容量是否越界,如果越界,则扩容。 扩容后比数组最大长度大,则是int最大值 没有达到数组最大长度,就是数组最大长度原创 2021-01-25 16:39:10 · 292 阅读 · 3 评论 -
Java---集合框架
Java—集合框架转载:菜鸟教程转载 2021-01-25 12:33:05 · 81 阅读 · 0 评论 -
Java基础知识思维导图(二)
Java基础知识思维导图(二)面向对象篇:原创 2021-01-24 14:35:39 · 260 阅读 · 0 评论 -
打字游戏
打字游戏一、需求概述二、主要类1.玩家类(Player)2.游戏类(Game )3.级别类(Level)次要类:4.规则接口5.测试类三、具体步骤1、玩家类成员变量:private String name; //玩家名称private int currScore; //玩家当前级别积分(currScore)private long startTime; //当前级别开始时间(startTime)private long uesdTime ;原创 2021-01-23 23:56:18 · 201 阅读 · 0 评论 -
Java---异常
Java—异常所谓的异常,其实就是在程序执行的时候,产生的一种突发情况,进而产生已知或未知的问题。生活中就像我们开车去上班,突然某一天因为交通事故而造成堵车,是你无法按时到达公司,又或者你的车子半路抛锚,只能叫拖车。这样看,你还挺倒霉的呀,哈哈…好,我们回到代码中来,看一下下面的这段代码:一般情况下是没有问题的吧,可以正常运行,但是我们有没有考虑到分母不能为0的特殊情况,如果没有,就会出现下面这种报错:那么我们该如何解决呢?其实,以我们之前学到知识完全可以解决,但是代码臃肿,而且还要花精力去堵原创 2021-01-21 15:47:40 · 186 阅读 · 0 评论 -
Java---抽象类与接口
Java—抽象类与接口一、抽象类关键字abstract,继承:extends为什么会用抽象类?是因为:当父类的一个方法对于多个子类都要重写时,那父类的这个方法就没有写的必要了,所以为了偷懒,直接一个abstract 方法名();既然一个类中有抽象方法,那他必须是个抽象类。但是一个抽象类可以没有抽象方法这里要提一嘴:不是不能被实例化,只是一般不能,如果非要,可以用匿名内部类来实现。二、接口关键字interface,实现:implements为什么使用接口?原因是:当我们定义一个类时,不原创 2021-01-21 12:30:49 · 346 阅读 · 10 评论 -
Java三大特性---封装、继承、多态
Java三大特性—封装、继承、多态一、封装学完之前的内容,我们一般不会在意属性的修饰符对吧。顶多写个public 修饰一下,但绝大多数都是默认的。但是不推荐大家这么做,为什么?我们来看下面Dog dog = new Dog();dog.health =-190;考虑到安全和权限的问题,属性不能让你随意赋值和更改。所以,引入封装。封装的概念:举个例子:就是生活中的包装盒,为了保护隐私安全。具体步骤:代码实现public class Pet { //创建Pet类,下面全都改为p原创 2021-01-19 17:29:39 · 172 阅读 · 0 评论 -
Java中静态代码块、构造代码块、构造函数、普通代码块
Java中静态代码块、构造代码块、构造函数、普通代码块这篇由于别人写的比较好,所以就转载一下转载地址:[https://www.cnblogs.com/ysocean/p/8194428.html#_label1转载 2021-01-14 18:56:07 · 80 阅读 · 0 评论 -
Java基础---类和对象
Java基础—类和对象前言:再讲面向对象之前,我们首先要知道OOP,OOD,OOA的意思OOP:面向对象编程OOD:面向对象设计OOA:面向对象分析一、类的定义和申明其实我们之前一直在用,但我们并没有注意,已经定义了类这里就要详细的讲解一些类:类是对象的抽象,对象是类的具体说人话就是:类是一个种类,可以很大也可以很小。例如:水果,植物 等等而对象就是具体的一个事物,例如:香蕉,树木 等等。当然树木也可以当做一个类,这取决于你定的框架多大接下来,我们正式进入。类的定义:public c原创 2021-01-14 18:47:59 · 247 阅读 · 3 评论 -
Java基础知识思维导图
原创 2021-01-14 17:16:56 · 170 阅读 · 0 评论 -
排序
排序一、冒泡排序原版冒泡//原版冒泡排序//从前向后遍历//相邻两数比较,不满足顺序则交换int[] arr= new int[10];for (int i = 0; i < arr.length; i++) { arr[i] = (int)(Math.random()*100);}System.out.println(Arrays.toString(arr));for (int i = 0; i < arr.length-1; i++) { for(int原创 2021-01-13 19:51:06 · 194 阅读 · 0 评论 -
java---点餐系统
Java—点餐系统需求:分析:代码:package Demo20210113;import java.util.Scanner;/** * @Author shall潇 * @Date 2021/1/13 * @Description 点餐系统 */public class EatLeagueSystem { public static void main(String[] args) { Scanner sc = new Scanner(Sys原创 2021-01-13 17:09:06 · 1228 阅读 · 0 评论 -
Java基础---二维数组
Java基础—二维数组【前言:同理多重循环,数组也可以是二维,三维甚至更多,但一般不超过3层】一、二维数组的定义同一维数组一样只不过加个[],例如:1.int[][] a = new int[3][4];2.int[][] s = new int[4][];s[0][0] = 1;s[0][1] = 13;s[0][2] = 21;s[0][3] = 4;【注意:行一定要写,列可以不写】二、使用Arrays类三、常见问题求3个班级,每个班5人的成绩和和平均分int[][] ar原创 2021-01-12 20:17:36 · 245 阅读 · 0 评论