java
记录自己学习java的过程
dugeyang0520
这个作者很懒,什么都没留下…
展开
-
Java什么时候使用接口,什么时候使用抽象类
在java中,接口与抽象类的区别在校招面试时会被经常问的,理论上的知识作为面试经典大家也都背的很好,但是前几天我面试诺瓦科技的时候,面试官给我来了这么一个问题,“在工作中,什么时候要用接口,什么时候要用抽象类”。这一下把我问懵了。于是乎我面试完查了一些资料,还咨询了其他人这个问题怎么回答,终归是没有一个特定的答案,更多的时候两者确实可以互相替换,只能说是有了几年工作经验后慢慢感觉吧。接下来我先来从查阅到的资料中找出接口和抽象类不能替换的地方写吧。接口中全都是抽象的,抽象的东西就是用来限制、规范的原创 2021-08-10 14:28:59 · 3423 阅读 · 4 评论 -
Java将一个小图放到大图中(第三方只识别一半文字)
在使用文本识别的时候,发现如果文本离图片边界太近,就会导致调用第三方识别时,出现一行文本只识别了一部分的情况,这是因为第三方本身也会对文本做一次检测,检测边框大于图片中文本与图片边界的距离时,就会导致识别出错,所以我的想法就是,把本身的图片给他加一些边框,为第三方留有足够的检测距离我采用的方法是,构造一个更大的图,然后把当前的图放置于大图中间,这也就和加边框一样了public static BufferedImage cutTextArea(BufferedImage srcImage, Li原创 2021-08-06 11:07:13 · 274 阅读 · 0 评论 -
Java图像切分(规则的不规则的都行)
在处理图像时遇到了一些问题,需要从一个大图中切分出小的图形,当然,提前需要目标检测或者提前知道要切在哪里今天使用下面这个图片先来说说规则图形的切法(一般就是切个矩形)public static void main(String[] args) throws IOException { String totalPath = "C:\\Users\\dugey\\Desktop\\pictrue\\picturepython.jpg"; File fil..原创 2021-07-28 16:46:34 · 699 阅读 · 0 评论 -
JavaWeb 重定向和请求转发的区别
相同点:页面都会实现跳转不同点:请求转发,URL不会变化重定向,URL会变化当客户端向服务器要东西时;请求转发是‘我去给你拿’,重定向是‘联系别人去,那个人住在。。。’...原创 2021-04-07 21:58:10 · 91 阅读 · 0 评论 -
JavaWeb Response验证码实现
今天就来实现一个简单的图片验证码package main.java;import javax.imageio.ImageIO;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.awt.原创 2021-04-07 21:14:55 · 65 阅读 · 2 评论 -
JAVA 反射的性能测试
反射是一个重要的知识点,我们来测试一下循环十亿次,普通方法,反射方法和关闭检测的反射方法运行时间有什么不同import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;//测试反射性能public class Test02 { //普通方法 public static void test01(){ User user = new User();原创 2021-03-18 19:43:38 · 171 阅读 · 2 评论 -
JAVA 和MySQL使用JDBC连接
今天来使用JDBC连接以下JAVA和MySQL首先我们在MySQL中创建一个新的数据库和表,然后插入一些信息CREATE DATABASE jdbctest CHARACTER SET utf8 COLLATE utf8_general_ci;USE jdbctest;CREATE TABLE users( id INT PRIMARY KEY, NAME VARCHAR(40), PASSWORD VARCHAR(40), email VARCHAR(60), birthday原创 2021-03-17 19:30:32 · 177 阅读 · 8 评论 -
JAVA UDP简单实现实时发送消息
今天来实现一个UDP发送消息的代码,本次只写了发送端发送,接收端接受,没有实现双向来看一下发送端import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetSocketAddress;public cla原创 2021-03-17 16:43:36 · 286 阅读 · 0 评论 -
JAVA 简单实现UDP demo
之前写了JAVA的TCP,今天来写一下UDP的小demo当然也是需要服务器与客户端先来写服务器端的:import java.net.DatagramPacket;import java.net.DatagramSocket;//还要等待客户端连接public class Udpserverdemo01 { public static void main(String[] args) throws Exception{ //开放端口 Datagra原创 2021-03-12 22:11:47 · 493 阅读 · 0 评论 -
JAVA 线程同步机制 synchronized
之前有一个买票的案例,当时多个线程之间不是安全的,这是我们遗留的问题,今天来解决它我们之前提到,线程不安全主要是资源被每个对象都可以使用,导致了多个线程在抢夺一份资源时,都误以为自己拿到了那么我们就需要给这个资源加一把锁 来使用以下 synchronized//安全的买票public class UnSafe { public static void main(String[] args) { BuyTicket station = new BuyTicket()..原创 2021-03-10 20:24:47 · 64 阅读 · 1 评论 -
JAVA Lock锁
这个加锁是显示定义的,比较简单,来看一下它怎么用import java.util.concurrent.locks.ReentrantLock;public class TestLock { public static void main(String[] args) { TestLock2 testLock2 = new TestLock2(); new Thread(testLock2).start(); new Thread(test原创 2021-03-10 19:57:40 · 122 阅读 · 4 评论 -
JAVA 线程死锁
程序比人笨多了,死锁就是两个线程在抢对方的资源,但是都不愿意先放手自己的资源,而人就会一手交钱一手交货,多好的来看看死锁产生的条件: 1.互斥: 一个资源每次只能被一个进程用 2.请求保持:一个进程因请求资源而阻塞时,对已获得的资源保持不放 3.不剥夺: 进程已获得资源,在未使用完之前,不能强行剥夺 4.循环等待:若干进程之间形成一种头尾相接的循环等待资源关系这四个条件,只要有一个打破了,就可以避免死锁发生来看看死锁是什么...原创 2021-03-10 12:16:47 · 75 阅读 · 3 评论 -
JAVA 简单实现TCP demo (2)
之前我们写过一个简单的实现,这次再来写一个可以传文件的先来服务器端的:import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;public class TCPserverdemo02 { public static v原创 2021-03-08 21:43:42 · 214 阅读 · 1 评论 -
JAVA 守护线程 Deamon
这有一个有意思的东西,叫守护线程,平时用的少,但是不代表你没接触过,我们先来看看代码//测试守护线程//eg:上帝守护你public class TestDeamon { public static void main(String[] args) { God god = new God(); Yourself yourself = new Yourself(); Thread thread = new Thread(god);原创 2021-03-08 21:35:45 · 110 阅读 · 0 评论 -
JAVA 线程状态与优先级
写过几篇关于多线程的文章了,来观测一下线程的状态,看看它们是什么样的public class TestState { public static void main(String[] args) throws InterruptedException { Thread thread = new Thread(()->{ for (int i = 0; i < 5; i++) { try {原创 2021-03-08 21:30:01 · 149 阅读 · 0 评论 -
JAVA 线程休眠 sleep 与 线程礼让 yield
sleep使用的比较多的了,可以来看一下为什么要休眠还是用之前那个抢票的代码//模拟延时public class Testsleep implements Runnable{ private int ticketnumber = 10; @Override public void run() { while (true){ if (ticketnumber <= 0){ break;原创 2021-03-06 22:03:57 · 174 阅读 · 6 评论 -
JAVA 线程停止
之前使用过sleep来停止线程我们这次使用别的方法来停止线程//测试线程停止//1.建议线程正常停止-----利用次数,不建议死循环//2.建议使用标志位-------设置一个标志位//3.不要使用stop,destroy等过时或JDK不建议的方法public class TestStop implements Runnable{ //设置一个标志位 private boolean flag = true; @Override public void run原创 2021-03-06 21:40:50 · 92 阅读 · 1 评论 -
JAVA Lambda表达式
这玩意是个希腊字母,叫个烂姆达在代码中可以使用它,就是为了避免匿名内部类定义过多,本质属于函数式编程的概念首先来理解以下函数式接口,这是学习JAVA8 lambda关键函数式接口:·任何接口,如果只包含一个抽象方法,那这就是函数式接口//暂时假定Runnable就长这样public interface Runnable{ public abstract void run();}·对于函数接口我们可以使用lambda来写,可以简化我们的代码,来吧展示一段public原创 2021-03-06 18:26:32 · 255 阅读 · 2 评论 -
JAVA 静态代理模式
之前在学习Thread和Runnable时,我们看到了有代理出现现在我们来了解以下什么是代理以你结婚和婚庆公司为例,婚庆公司就是为你的婚礼做了个代理//静态代理模式://真是对象和代理对象都要实现 同一个接口//代理对象要代理真实角色public class Staticproxy { public static void main(String[] args) { You you = new You();//创建一个真实对象 WeddingCom原创 2021-03-06 17:30:40 · 78 阅读 · 1 评论 -
JAVA 并发问题
前面有多线程的简单尝试,接下来我们就要研究一下并发的问题先看代码(我们使用Runnable来实现线程对象)//多个线程同时操作一个对象 买火车票的例子public class TestThread4 implements Runnable{ private int ticketnumber = 10; @Override public void run() { while (true){ if (ticketnumber <原创 2021-03-05 13:34:52 · 81 阅读 · 4 评论 -
JAVA 多线程Runnable实现
之前我们使用了继承Thread类来实现多线程这次我们使用实现Runnable接口来实现多线程基本代码差不多,具体的不同可以和之前Thread文章代码进行对比//创建线程方式2:实现runnable接口,重写run方法,执行线程需要丢入runnable接口实现类,调用start方法public class TestThread3 implements Runnable{ @Override public void run() { //run方法线程体原创 2021-03-05 12:50:16 · 359 阅读 · 0 评论 -
JAVA 多线程初探 Thraed
首先我们要知道线程是一个什么 ·线程就是独立的执行路径 ·程序运行时,没有创建线程,后台也会有多个线程,比如:主线程,gc线程等等 ·main()主线程,为系统的入口有三种创建线程的方式 ·Thread类---继承Thread类 ·Runnable接口---实现Runnable接口 ·Callable接口---实现Callable接口接下来看一下使用继承Thread类怎么样简单写一个多线程代码首先是大概流程:...原创 2021-03-05 11:04:57 · 146 阅读 · 5 评论 -
JAVA 简单实现TCP demo
今天来使用JAVA实现以下简单的TCP使用TCP是一个面向连接的,可靠的,面向字节流的传输层通信协议。分别需要编写客户端和服务器两个先上客户端代码:import java.io.IOException;import java.io.OutputStream;import java.net.InetAddress;import java.net.Socket;public class Tcpclientdemo01 { public static void main(Str原创 2021-03-04 20:05:49 · 711 阅读 · 5 评论