自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 解决Address localhost:1099 is already in use端口号被占用问题

问题运行web项目时,tomcat报错分析这个报错就是端口号被占用了,需要关闭占用这个端口的程序解决1.通过端口找到PID(PID就是各进程的身份标识,程序一运行系统就会自动分配给进程一个独一无二的PID。进程中止后PID被系统回收,可能会被继续分配给新运行的程序):win+R打开dos命令。输入下面的命令找到PIDnetstat -ano | find "1099"可以看到PID为92802.通过PID找到进程:输入下面的命令找到进程tasklist | find "9280"

2021-10-25 10:58:58 3297 1

原创 分析开源项目

观察开源项目先在Gitee上找到想要使用的项目,分析是否前后端分离?是否有数据库?先对这个项目做一个简单的分析开源项目下载从Gitee上直接下载zip到本地,然后解压,解压完成后先别着急运行,观察:1.用了哪些技术;2.是否有数据库;3.你的环境是否匹配观察完之后,再想办法运行跑起来是第一步安装数据库,执行sql:用notepad++查看项目里的sql文件,然后复制粘贴到mysql里,观察有没有建库的语句,如果没有的话还需要自己先把库建起来,建完库之后把项目里的sql语句全选、运行前端需要跑

2021-10-21 11:27:03 171

原创 Git相关

版本控制版本控制是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术实现跨区域多人协同开发追踪和记载一个或者多个文件的历史记录组织和保护你的源代码和文档统计工作量并行开发,提高开发效率跟踪记录整个软件的开发过程减轻开发人员的负担,节省时间,同时降低人为错误简单说就是用于管理多人协同开发项目的技术没有进行版本控制或者版本控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,如软件代码的一致性、软件内容

2021-10-20 19:53:33 180

原创 多线程(下)

线程同步机制并发:同一个对象被多个线程同时操作100人同时抢1张票,要是都成功了,那后台就变成-99张票了两个人同时取一张卡上的钱,一个在A网点取,一个在B网点取,要是都成功了,银行余额就变成负数了线程同步:现实生活中,我们会遇到“同一个资源,多个人都想使用”的问题,比如食堂排队打饭,每个人都想吃饭,最天然的解决办法就是,排队,一个一个来。处理多线程问题时,多个线程访问同一个对象,并且某些线程还想修改这个对象。这时候我们就需要线程同步。线程同步其实就是一种等待机制,多个需要同时访问此对象

2021-10-19 17:28:39 725 1

原创 多线程(中)

线程状态线程五大状态线程常用方法方法说明setPriority(int newPriority)更改线程的优先级static void sleep(long millis)在指定的毫秒数内让当前正在执行的线程休眠void join()等待该线程终止static void yield()暂停当前正在执行的线程对象,并执行其他线程void interrupt()中断线程,别用这个方式boolean isAlive()测试线程是否处于活动

2021-10-18 15:59:50 72

原创 循环体的快捷生成

比如要写一个循环100次的循环体for (int i = 0; i < 100; i++) { }直接写100.for然后回车就可以,ide工具会自动生成

2021-10-18 15:38:45 64

原创 多线程(上)

线程、进程、多线程普通方法调用:只有主线程一条执行路径,效率低;多线程:多条执行路径,主线程和子线程并行交替执行,效率高在操作系统中运行的程序就是进程,比如你的QQ,播放器,游戏,IDE等等;进程的单词是Process一个进程可以有多个线程,比如视频中同时听声音,看图像,看弹幕,等等;线程的单词是Thread程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程则是执行程序的一次执行过程,它是一个动态的概念,是系统资源分配的单位。通常在一个进程中可以包含若干个线程,当然一个

2021-10-18 09:45:02 103

原创 HTML5

初识HTML什么是HTML:Hyper Text Markup Language(超文本标记语言),超文本包括文字、图片、音频、视频、动画等HTML5,提供了一些新的元素和一些有趣的新特性,同时也建立了一些新的规则。这些元素、特性和规则的建立,提供了许多新的网页功能,如使用网页实现动态渲染图形、图表、图象和动画,以及不需要安装任何插件直接使用网页播放视频等W3C标准World Wide Web Consortium(万维网联盟)成立于1994年,是Web技术领域最权威和具影响力的国际中立性技术

2021-09-29 23:29:19 102

原创 进制的运算

八进制计算下面的结果:2+3=52*3=64+5=114*5=24运算的本质就是查数,先列出八进制的若干个数0 1 2 3 4 5 6 710 11 12 13 14 15 16 1720 21 22 23 24 25 26 272+3就是从2开始往后查3个数,数出来是52*3就是2个3,数出来是到64+5就是从4开始往后查5个数,数出来是114*5就是4个5,数出来是24八进制计算下面的结果:277+333=632276*54.

2021-09-28 18:33:27 526

原创 注解和反射(下)

获取类的运行时结构获取运行时类的完整结构通过反射获取运行时类的完整结构Field、Method、Constructor、Superclass、Interface、Annotation实现类的全部接口所继承的父类全部的构造器全部的方法全部的Field注解…package com.zcf.reflection;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.l

2021-09-28 10:48:41 69

原创 注解和反射(中)

得到Class类的几种方式对象照镜子后可以得到的信息:某个类的属性、方法和构造器、某个类到底实现了哪些接口。对于每个类而言,JRE都为其保留一个不变的Class类型的对象。一个Class对象包含了特定某个结构(class/interface/enum/annotation/primitive type/void/[])的有关信息Class本身也是一个类Class对象只能由系统建立对象一个加载的类在JVM中只会有一个Class实例一个Class对象对应的是一个加载到JVM中的一个.class文

2021-09-27 17:29:50 64

原创 注解和反射(上)

什么是注解注解的英文单词是Annotation,注释的英文单词是CommentAnnotation是从JDK5.0开始引入的新技术Annotation不是程序本身,可以对程序作出解释(这一点和注释Comment没有区别),也可以被其他程序(比如编译器等)读取Annotation的格式:注解是以“@注释名”在代码中存在的,还可以添加一些参数值,比如:@SuppressWarnings(value=“unchecked”)Annotation在哪里使用:可以附加在package,class,meth

2021-09-27 17:27:15 66

原创 网络编程实战

概述网络编程从大的方面说就是对信息的发送到接收,中间传输为物理线路的作用。网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的。中间最主要的就是数据包的组装,数据包的过滤,数据包的捕获,数据包的分析,当然最后再做一些处理,代码、开发工具、数据库、服务器架设和网页设计这5部分你都要接触。网络编程不同于网页编程。javaweb做的是网页编程,是B/S架构;TCP/IP做的是网络编程,是C/S架构网络通信的要素

2021-09-15 15:55:42 786

原创 下拉框、列表框、文本框、密码框、文本域

下拉框import javax.swing.*;import java.awt.*;public class ComboBoxTest extends JFrame { public ComboBoxTest() { Container container = this.getContentPane(); JComboBox jComboBox = new JComboBox(); jComboBox.addItem("即将上映");

2021-09-14 11:27:19 208

原创 gui实现贪吃蛇

前期准备创建一个名为Snake的packageSnake下new一个名为statics的package把静态素材(7张png)放在statics中header.pngfood.pngbody.pngup.pngdown.pngleft.pngright.pngData.java用于管理图片素材package Snake;import javax.swing.*;import java.net.URL;//数据中心public class Data {

2021-09-07 19:14:39 140

原创 图片按钮、单选框、多选框

图片按钮import javax.swing.*;import java.awt.*;import java.net.URL;public class JButtonTest extends JFrame { public JButtonTest() { Container container = this.getContentPane(); //将一个图片变为图标 URL resource = JButtonTest.class.getRe

2021-09-07 14:19:54 98

原创 JPanel、JScroll&文本域

import javax.swing.*;import java.awt.*;public class JPanelTest extends JFrame { public JPanelTest(){ Container container = this.getContentPane(); container.setLayout(new GridLayout(2,1,10,10));//后面参数是间距 JPanel jPanel = new

2021-09-07 10:55:44 148

原创 标签及图片标签

Iconimport javax.swing.*;import java.awt.*;public class IconTest extends JFrame implements Icon { private int width; private int height; public IconTest(){} public IconTest(int width,int height){ this.height = height; t

2021-09-07 10:09:24 81

原创 idea工具new对象后自动补全的快捷键

ImageIcon imageIcon = new ImageIcon(url);比如上面这一句,只需要写:new ImageIcon(url).var也就是new对象后,写一个.var然后回车,前面的东西idea工具会自动帮我们生成

2021-09-07 09:44:15 7573 3

原创 JDialog弹窗

import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;//主窗口public class DialogTest extends JFrame{ public DialogTest(){ this.setVisible(true); this.setSize(500,500);

2021-09-07 08:46:46 94

原创 Swing之JFrame窗体

import javax.swing.*;import java.awt.*;public class JFrameTest{ public static void main(String[] args) { new MyJFrame().init(); }}class MyJFrame extends JFrame { public void init() { this.setVisible(true); this.set

2021-09-06 17:00:40 50

原创 键盘监听事件

import java.awt.*;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;public class KeyListenerTest { public static void main(String[] args) { new MyFrame7(); }}class MyFrame7 extends Frame{ public MyFrame7(){

2021-09-06 16:18:23 76

原创 窗口监听事件

import java.awt.*;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class WindowListenerTest { public static void main(String[] args) { new MyFrame6(); }}class MyFrame6 extends Frame { public MyFrame6()

2021-09-06 16:00:53 76

原创 可以无限画点的简易画板

用画笔在画板上画几个固定图形import java.awt.*;public class PaintTest { public static void main(String[] args) { new Mypaint().loadFrame(); }}class Mypaint extends Frame{ public void loadFrame(){ setBounds(200,200,600,500); setVi

2021-09-06 15:14:28 154

原创 gui写的实现加法功能的计算器

实现一个最简单的加法计算器import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class SimpleCalculator { public static void main(String[] args) { new Calculator(); }}//计算器类class Calculator extends Frame

2021-09-06 14:11:00 417

原创 事件监听及示例

按钮的监听事件import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class ActionListenerTest1 { public static void main(String[] args) {

2021-09-06 13:42:37 243

原创 三种布局管理器及布局嵌套

流式布局:FlowLayout(默认)import java.awt.*;public class FlowLayoutTest { public static void main(String[] args) { Frame frame = new Frame("FlowLayout"); //new按钮组件 Button button1 = new Button("button1"); Button button2 = new

2021-09-05 23:01:15 353

原创 panel面板

import java.awt.*;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class PanelTest { public static void main(String[] args) { //panel可以看成是一个空间,但是不能单独存在 Frame frame = new Frame(); Panel panel = new

2021-09-05 23:00:36 170

原创 第一个Frame窗口

画出一个单独的Frame窗口import java.awt.*;public class Test01 { public static void main(String[] args) { Frame frame = new Frame("第一个frame窗口"); //设置可见性 frame.setVisible(true); //设置窗口大小 frame.setSize(400,400); /

2021-09-05 23:00:08 120

原创 异常与自定义异常

异常假设要捕获多个异常,记得要从小到大排列,不然直接被第一个最大范围的异常捕获就没后面的代码什么事了选中代码块,ctrl+alt+t,快捷生成try/catch/finallythrow用于主动抛出异常,一般用在方法体中,比如:throw new ArithmeticException();如果在方法体中处理不了某个异常的话,需要用throws在方法上抛出异常,比如:public void test(int a,int b)throws ArithmeticException{}

2021-09-05 00:06:24 41

原创 抽象类和接口

抽象类abstract关键字修饰的类就是抽象类,抽象类中可以定义抽象方法。抽象方法没有方法体,只有修饰符、返回类型以及方法名和参数列表。反之,普通类中不能存在抽象方法抽象类中可以写普通方法,普通类中不能写抽象方法抽象类不能new出来,只能靠子类去extends,所以抽象类必须被继承。其子类有几个算几个,都必须实现这个抽象父类的抽象方法,除非子类也是抽象类在java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类可以实现多个接口抽象类也存在构造器,但是构造方法和类

2021-09-04 23:27:54 41

原创 static关键字和静态代码块

static关键字当一个类中有一个static静态属性和一个非静态属性时,比如在Student类中有两个属性:private static int age;private double score;静态属性可以直接用类名去调用,也可以实例化对象后使用,而非静态属性只能在实例化对象后使用:System.out.println(Student.age);Student s1 = new Student();System.out.println(s1.age);System.out.prin

2021-09-04 23:27:35 84

原创 java三大特性之多态

多态多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的示例而执行不同操作,是对象多种表现形式的体现。现实中,比如我们按下F1键这个动作,如果当前在Flash界面下弹出的就是AS3的帮助文档;如果当前在Word下弹出的就是Word帮助;在Windows下弹出的就是Windows帮助和支持。也就是说,同一个事件发生在不同的对象上会产生不同的结果。多态存在的三个必要条件继承重写父类引用指向子类对象:Parent p = new Child();图例解释clas

2021-09-04 23:27:15 85

原创 java三大特性之继承

继承继承是类和类之间的一种关系。继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示。extends的意思是“扩展”。子类是父类的扩展。子类和父类之间,从意义上来讲应该具有“is a”的关系java中类只有单继承,没有多继承(一个儿子只能有一个爸爸,一个爸爸可以有多个儿子)ctrl+h可以打开查看继承关系java中所有的类都默认直接或者间接继承objectprivate修饰的私有的东西

2021-09-04 23:26:47 74

原创 java三大特性之封装

该露的露,该藏的藏程序设计要求“高内聚,低耦合”,高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合就是仅暴露少量的方法给外部使用。封装(数据的隐藏)通常,应该禁止直接访问一个对象中数据的实际表示,而应该通过操作接口来访问,这称为信息隐藏。记住这句话就够了属性私有,get/set封装的意义提高程序的安全性,保护数据隐藏代码的实现细节统一接口系统可维护性增加了...

2021-09-04 23:26:25 59

原创 构造方法相关

构造器名要和类名相同没有返回值,void也不能写new对象的时候本质是在调用构造方法构造方法可以初始化对象的值定义了有参构造方法后,如果要使用无参构造,必须手动写一个无参构造方法出来(因为自己不写构造方法时,系统默认生成一个无参构造方法,但是自己写了一个有参构造方法时,系统不再没默认生成,需要自己以方法重载的方式写一个无参构造方法)alt+insert快捷生成构造器,如果想生成无参构造方法,选择第二项Select None;如果想生成有参构造方法,选择参数后,直接点击ok...

2021-09-04 23:26:01 35

原创 方法的调用

一个类想要调用另一个类的方法,比如Test类想调用Student类中的say()方法,有两种方式:static静态方法:在Test类中直接类名.方法名:Student.say();非静态方法:在Test类中实例化Student对象,然后对象名.方法名:Student st = new Student();st.say();需要指出的是,就算是一个类调用自己类中的方法,如果是static静态方法,可以直接调用;如果是非静态方法,也和上边一样,要不改为静态方法,要不就要实例化对象。.

2021-09-04 23:24:39 483

原创 数组相关知识及示例

数组的声明和创建首先必须声明数组数量,才能在程序中使用数组,声明数组变量的语法为:dataType[] arrayRefVar;java使用new操作符来创建数组,语法为:dataType[] arrayRefVar = new dataType[arraySize];数组的元素是通过索引访问的,数组索引从0开始获取数组长度:arrays.length数组的四个基本特点:其长度是确定的。数组一旦被创建,其大小就是不可改变的其元素必须是相同类型,不允许出现混合类

2021-09-04 12:55:21 75

原创 可变参数及示例

JDK1.5开始,java支持传递同类型的可变参数给一个方法在方法声明中,在指定参数类型后加一个省略号(…)一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明例子:public static void printMax(double...numbers){ if(numbers.length==0){ System.out.println("No argument passed"); return; } .

2021-09-04 00:00:28 78

原创 递归及示例

递归就是:A方法调用A方法,就是自己调用自己利用递归可以用简单的程序来解决有些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。递归结构包括两个部分:递归头:什么时候不调用自身方法。如果没有头,将陷入死循环递归体:什么时候需要调用自身方法例子(实现阶乘):public static int f(int n){ .

2021-09-04 00:00:15 100

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除