@

前言

很久之前整理的小东西,这个是从我个人博客网站拷过来的地址

下面是源码

Plane

package com.trhsy.cn.plane;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.io.IOException; /**
* @ClassName Plane
* @Description todo
* @Author Administrator
* @Date 2020/3/24 002415:03
**/
public class Plane {
/**
* @Author fan
* @Description //TODO 定义一个飞机
* @Date 15:07 2020/3/24 0024
* @Param
* @return
**/
Image planeImage = null;
public int x = 300;
public int y = 700;
public int lifeCount = 5; /**
* @return
* @Author fan
* @Description //TODO 给飞机附图片
* @Date 15:19 2020/3/24 0024
* @Param []
**/
public Plane() {
try {
planeImage = ImageIO.read(Plane.class.getClassLoader().getResourceAsStream("images/plane.png"));
} catch (IOException e) {
e.printStackTrace();
}
} public void draw(Graphics g) {
// 画飞机图片
g.drawImage(planeImage, x, y, null);
// 飞机移动
this.move();
// 血条
if (lifeCount > 0) {
g.setColor(Color.WHITE);
g.fillRect(20, 80, 100, 10);
g.setColor(Color.red);
g.fillRect(20, 80, (100 / 5) * lifeCount, 10);
g.setColor(Color.blue);
g.setFont(new Font("幼圆", Font.BOLD, 30));
g.drawString("Score:" + Play.count, 20, 60);
}
} public void move() {
if (isUP && !isDown && !isLeft && !isRight) {
//上
y = y - 5;
} else if (!isUP && isDown && !isLeft && !isRight) {
//下
y = y + 5;
} else if (!isUP && !isDown && isLeft && !isRight) {
//左
x = x - 5;
} else if (!isUP && !isDown && !isLeft && isRight) {
//右
x = x + 5;
} else if (isUP && !isDown && isLeft && !isRight) {
//左上
x = x - 5;
y = y - 5;
} else if (!isUP && isDown && isLeft && !isRight) {
//左下
x = x - 5;
y = y + 5;
} else if (isUP && !isDown && !isLeft && isRight) {
//右上
x = x + 5;
y = y - 5;
} else if (!isUP && isDown && !isLeft && isRight) {
//右下
x = x + 5;
y = y + 5;
}
} boolean isUP = false;
boolean isDown = false;
boolean isLeft = false;
boolean isRight = false; /**
* @return void
* @Author fan
* @Description //TODO 按下
* @Date 15:21 2020/3/24 0024
* @Param [e]
**/
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
if (keyCode == KeyEvent.VK_RIGHT || keyCode == KeyEvent.VK_D) {
isRight = true;
} else if (keyCode == KeyEvent.VK_LEFT || keyCode == KeyEvent.VK_A) {
isLeft = true;
} else if (keyCode == KeyEvent.VK_UP || keyCode == KeyEvent.VK_W) {
isUP = true;
} else if (keyCode == KeyEvent.VK_DOWN || keyCode == KeyEvent.VK_S) {
isDown = true;
}
} /**
* @return void
* @Author fan
* @Description //TODO 松开
* @Date 15:24 2020/3/24 0024
* @Param [e]
**/
public void keyReleased(KeyEvent e) {
int keyCode = e.getKeyCode();
if (keyCode == KeyEvent.VK_RIGHT || keyCode == KeyEvent.VK_D) {
isRight = false;
} else if (keyCode == KeyEvent.VK_LEFT || keyCode == KeyEvent.VK_A) {
isLeft = false;
} else if (keyCode == KeyEvent.VK_UP || keyCode == KeyEvent.VK_W) {
isUP = false;
} else if (keyCode == KeyEvent.VK_DOWN || keyCode == KeyEvent.VK_S) {
isDown = false;
}
} public Rectangle getRectangle() {
return new Rectangle(x, y, planeImage.getWidth(null), planeImage.getHeight(null));
} }

PlaneStatus类

package com.trhsy.cn.util;

/**
* @ClassName PlaneStatus
* @Description todo 0 游戏开始前 1 第一关 -1 游戏结束
* @Author Administrator
* @Date 2020/3/24 002415:28
**/
public class PlaneStatus {
public static int roleNum = 1;
public static int playStatus = 0;
}

Power类

package com.trhsy.cn.power;

import javax.imageio.ImageIO;
import java.awt.*;
import java.io.IOException; /**
* @ClassName Power
* @Description todo 血瓶类
* @Author Administrator
* @Date 2020/3/24 002415:29
**/
public class Power {
Image PowerImage = null;
//初始位置
int x = 20;
int y = 0; public Power() {
this.x = (int) (Math.random() * 540) + 20;
try {
PowerImage = ImageIO.read(Gift.class.getClassLoader()
.getResourceAsStream("images/power.png"));
} catch (IOException e) {
e.printStackTrace();
}
} public void draw(Graphics g) {
// 画血瓶图片
g.drawImage(PowerImage, x, y, null);
// 血瓶移动
y++;
} public Rectangle getRectangle() {
return new Rectangle(x, y, PowerImage.getWidth(null), PowerImage.getHeight(null));
} }

Gift

package com.trhsy.cn.power;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.io.IOException;
import javax.imageio.ImageIO; public class Gift {
Image GiftImage = null;
int x = 20;
int y = 0; public Gift() {
this.x = (int) (Math.random() * 540) + 20;
try {
GiftImage = ImageIO.read(Gift.class.getClassLoader()
.getResourceAsStream("images/blood.png"));
} catch (IOException e) {
e.printStackTrace();
}
} public void draw(Graphics g) {
// 画血瓶图片
g.drawImage(GiftImage, x, y, null);
// 血瓶移动
y++;
} public Rectangle getRectangle() {
return new Rectangle(x, y, GiftImage.getWidth(null), GiftImage.getHeight(null));
}
}

Diji

package com.trhsy.cn.plane;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.io.IOException;
import javax.imageio.ImageIO; public class Diji {
Image dijiImage = null;
public int y = -20;
/**
*20 ~ 760
**/
public int x = 10;
int r; public Diji() {
this.x = (int) (Math.random() * 540) + 40;
try {
r = (int) (Math.random() * 3) + 1;
dijiImage = ImageIO.read(Diji.class.getClassLoader()
.getResourceAsStream("images/diji_" + r + ".png"));
} catch (IOException e) {
e.printStackTrace();
}
} public void draw(Graphics g) {
//画 敌机图片
g.drawImage(dijiImage, x, y, null);
//敌机移动
if (r == 1) {
y += 4;
} else if (r == 2) {
y += 4;
} else if (r == 3) {
y += 7;
}
} public Rectangle getRectangle() {
return new Rectangle(x, y, dijiImage.getWidth(null), dijiImage.getHeight(null));
}
}

play类

package com.trhsy.cn.plane;

import com.trhsy.cn.bullet.DijiZiDan;
import com.trhsy.cn.bullet.MyZiDan;
import com.trhsy.cn.power.Gift;
import com.trhsy.cn.power.Power;
import com.trhsy.cn.util.PlaneStatus; import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* @ClassName Play
* @Description todo
* @Author Administrator
* @Date 2020/3/24 002415:40
**/
public class Play {
static int count = 0;
Image bgImage = null;
/**
* @Author fan
* @Description //TODO 战机
* @Date 16:11 2020/3/24 0024
* @Param
* @return
**/
Plane plane = new Plane();
/**
* @Author fan
* @Description //TODO 战机子弹
* @Date 16:11 2020/3/24 0024
* @Param
* @return
**/
List<MyZiDan> mzds = new ArrayList<MyZiDan>();
/**
* @Author fan
* @Description //TODO 敌机
* @Date 16:11 2020/3/24 0024
* @Param
* @return
**/
List<Diji> dijis = new ArrayList<Diji>();
/**
* @Author fan
* @Description //TODO 敌机子弹
* @Date 16:11 2020/3/24 0024
* @Param
* @return
**/
List<DijiZiDan> dijizidans = new ArrayList<DijiZiDan>();
/**
* @Author fan
* @Description //TODO 血瓶
* @Date 16:11 2020/3/24 0024
* @Param
* @return
**/
List<Gift> gifts = new ArrayList<Gift>(); List<Power> powers = new ArrayList<Power>(); public Play() {
try {
bgImage = ImageIO.read(Play.class.getClassLoader().getResourceAsStream("images/bg_01.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
} int bgY1 = 0;
int bgY2 = -600;
int fireTime = 0;
boolean flag = false; public void draw(Graphics g) {
// 画背景图片
g.drawImage(bgImage, 0, bgY1, null);
bgY1 += 5;
bgY1 = 0;
g.drawImage(bgImage, 0, bgY2, null);
bgY2 += 5;
if (bgY2 >= 0) {
bgY2 = -600;
}
// 清理战机子弹
for (int i = 0; i < mzds.size(); i++) {
MyZiDan myZidan = mzds.get(i);
if (myZidan.x > 800) {
mzds.remove(i);
}
}
// 添加子弹
if (isFire1 == true && flag == false) {
if (fireTime % 8 == 0) {
mzds.add(new MyZiDan(plane.x + 25, plane.y + 0));
}
fireTime++;
}
if (isFire1 == true && flag == true) {
if (fireTime % 4 == 0) {
}
mzds.add(new MyZiDan(plane.x + 8, plane.y + 0));
mzds.add(new MyZiDan(plane.x + 52, plane.y + 0));
}
fireTime++;
// 画战机子弹
for (int i = 0; i < mzds.size(); i++) {
MyZiDan myZidan = mzds.get(i);
myZidan.draw(g);
}
// 清理敌机
for (int i = 0; i < dijis.size(); i++) {
Diji dj = dijis.get(i);
if (dj.x < -100) {
dijis.remove(i);
}
}
// 抽奖:添加敌机
dijis.add(new Diji()); // 抽奖:添加血瓶
if ((int) (Math.random() * 1000) == 5) {
gifts.add(new Gift());
}
for (int i = 0; i < gifts.size(); i++) {
Gift gift = gifts.get(i);
gift.draw(g);
}
//抽奖:添加power
if ((int) (Math.random() * 1000) == 5) {
powers.add(new Power());
}
for (int i = 0; i < powers.size(); i++) {
Power power = powers.get(i);
power.draw(g);
}
// 画敌机
for (int i = 0; i < dijis.size(); i++) {
Diji dj = dijis.get(i);
dj.draw(g);
}
// 画飞机
plane.draw(g);
// 判断战机相撞
for (int i = 0; i < dijis.size(); i++) {
// 先得到每一个敌机
Diji dj = dijis.get(i);
Rectangle r1 = dj.getRectangle();
Rectangle r2 = plane.getRectangle();
if (r1.intersects(r2)) {
dijis.remove(i);
plane.lifeCount = plane.lifeCount - 1;
if (plane.lifeCount > 0) {
flag = false;
}
if (plane.lifeCount < 1) {
PlaneStatus.playStatus = -1;
}
}
// 判断战机和血瓶相撞
for (int q = 0; q < gifts.size(); q++) {
// 先得到每一个血瓶
Gift gift = gifts.get(q);
Rectangle rectangle = gift.getRectangle();
Rectangle rectangle1 = plane.getRectangle();
if (rectangle.intersects(rectangle1)) {
gifts.remove(q);
}
if (plane.lifeCount < 5) {
} plane.lifeCount = plane.lifeCount + 1;
//// 判断战机和Power相撞
for (int w = 0; w < powers.size(); w++) {
// 先得到每一个power
Power power = powers.get(w);
Rectangle rectangle2 = power.getRectangle();
Rectangle rectangle3 = plane.getRectangle();
if (rectangle2.intersects(rectangle3)) {
powers.remove(w);
flag = true;
}
}
// 判断敌机在中弹
for (int e = 0; e < mzds.size(); e++) {
// 得到每个战机子弹
MyZiDan myzidan = mzds.get(e);
Rectangle rectangle2 = myzidan.getRectangle();
for (int j = 0; j < dijis.size(); j++) {
// 每一个敌机
Diji diji = dijis.get(j);
Rectangle rectangle3 = diji.getRectangle();
if (rectangle2.intersects(rectangle3)) {
mzds.remove(i);
dijis.remove(j);
count++;
}
}
}
}
} } boolean isFire1 = false;
boolean isFire2 = false; public void keyPressed(KeyEvent e) {
plane.keyPressed(e);
if (e.getKeyCode() == KeyEvent.VK_J) {
isFire1 = true;
} /*if (e.getKeyCode() == KeyEvent.VK_K) { isFire2 = true; }*/
} public void keyReleased(KeyEvent e) {
plane.keyReleased(e);
if (e.getKeyCode() == KeyEvent.VK_J) {
isFire1 = false;
fireTime = 0;
} /*if (e.getKeyCode() == KeyEvent.VK_K) { isFire2 = false; fireTime = 0; }*/
if (e.getKeyCode() == KeyEvent.VK_P) {
for (int i = 0; i < dijis.size(); i++) {
dijis.remove(i);
}
}
}
}

over类

package com.trhsy.cn.util;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.io.IOException; /**
* @ClassName Over
* @Description todo
* @Author Administrator
* @Date 2020/3/24 002416:03
**/
public class Over {
Image obg=null;
Image ng=null;
public Over() {
try {
obg=ImageIO.read(Before.class.getClassLoader().getResourceAsStream("images/obg.jpg"));
ng=ImageIO.read(Before.class.getClassLoader().getResourceAsStream("images/ng.png")); } catch (IOException e) {
e.printStackTrace();
}
}
public void draw(Graphics g){
g.drawImage(obg, 0, 0, null);
g.drawImage(ng, 120,100, null);
g.setColor(Color.black);
g.setFont(new Font("幼圆", Font.BOLD, 40));
g.drawString("游戏结束啦!",200 ,600 );
}
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
}

MainFrame主类

import com.trhsy.cn.plane.Play;
import com.trhsy.cn.util.Before;
import com.trhsy.cn.util.Over;
import com.trhsy.cn.util.PlaneStatus; import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent; /**
* @ClassName MainFrame
* @Description todo
* @Author Administrator
* @Date 2020/3/24 002416:04
**/
public class MainFrame extends JFrame{
private static final long serialVersionUID = 1L;
Before before =new Before();
Play play = new Play();
Over over = new Over();
public MainFrame() {
//设 置标题
this.setTitle(" 让子弹飞一会~");
//设置大小
this.setSize(600, 800);
//定位居中
this.setLocationRelativeTo(null);
//添加关闭操作
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//禁止重置大小z
this.setResizable(false);
//添加键盘监听器 KeyListener -->KeyAdapter
this.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if(PlaneStatus.playStatus == 0){
before.keyPressed(e);
}else if(PlaneStatus.playStatus ==1){
play.keyPressed(e);
}else if(PlaneStatus.playStatus==-1){
over.keyPressed(e);
}
}
@Override
public void keyReleased(KeyEvent e) {
if(PlaneStatus.playStatus == 0){
before.keyReleased(e);
}else if(PlaneStatus.playStatus ==1){
play.keyReleased(e);
}else if(PlaneStatus.playStatus==-1){
over.keyReleased(e);
}
}
}); //启 动一个线程:每隔20 毫秒执行一次
new Thread(){
public void run(){
while(true){
MainFrame.this.repaint();
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start(); //显示
this.setVisible(true);
}
Image bufferImage =null;
/**
* @Author fan
* @Description //TODO 这个方法也是20毫秒执行一次
* @Date 16:10 2020/3/24 0024
* @Param [g]
* @return void
**/
@Override
public void paint(Graphics g){
if(bufferImage==null){
bufferImage = this.createImage(600, 800);
}
Graphics g4Image = bufferImage.getGraphics();
g4Image.setColor(Color.BLACK);
g4Image.fillRect(0, 0, 600, 800);
this.draw(g4Image);
g.drawImage(bufferImage, 0, 0, null);
}
public void draw(Graphics g){
if(PlaneStatus.playStatus == 0){
before.draw(g);
}else if(PlaneStatus.playStatus ==1){
play.draw(g);
}else if(PlaneStatus.playStatus==-1){
over.draw(g);
}
}
public static void main(String[] args) {
new MainFrame();
} }

MyZiDan

package com.trhsy.cn.bullet;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.io.IOException;
import javax.imageio.ImageIO; public class MyZiDan {
Image zidanImage = null;
public int x;
public int y; public MyZiDan(int x, int y) {
this.x = x;
this.y = y;
try {
zidanImage = ImageIO.read(MyZiDan.class.getClassLoader().getResourceAsStream("images/zidan.png"));
} catch (IOException e) {
e.printStackTrace();
}
} public void draw(Graphics g) {
// 画我军子弹图片
g.drawImage(zidanImage, x, y, null);
// 我的飞机子弹移动速度
y -= 20;
} public Rectangle getRectangle() {
return new Rectangle(x, y, zidanImage.getWidth(null), zidanImage.getHeight(null));
}
}

DijiZiDan

package com.trhsy.cn.bullet;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.io.IOException;
import javax.imageio.ImageIO; public class DijiZiDan {
Image zidanImage = null;
int x;
int y;
int fangxiang = 0; public DijiZiDan(int x, int y) {
this.x = x;
this.y = y;
fangxiang = (int) (Math.random() * 5);//0 ~ 7
try {
zidanImage = ImageIO.read(DijiZiDan.class.getClassLoader()
.getResourceAsStream("images/dijizidan.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
} public void draw(Graphics g) {
//画 敌机子弹图片
g.drawImage(zidanImage, x, y, null);
//移动
this.move();
} public void move() {
if (fangxiang == 0) {
//下
y = y + 2;
} else if (fangxiang == 1) {
//左
x = x - 2;
} else if (fangxiang == 2) {
//右
x = x + 2;
} else if (fangxiang == 3) {
//左下
x = x - 2;
y = y + 2;
} else if (fangxiang == 4) {
// 右下
x = x + 2;
y = y + 2;
}
} public Rectangle getRectangle() {
return new Rectangle(x, y, zidanImage.getWidth(null), zidanImage.getHeight(null));
}
}

Before

package com.trhsy.cn.util;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyEvent;
import java.io.IOException;
import javax.imageio.ImageIO; /**
* @Author fan
* @Description //TODO 游戏开始之前加载
* @Date 16:07 2020/3/24 0024
* @Param
* @return
**/
public class Before {
Image bg = null;
Image wfeiji = null;
Image kdiji1 = null;
Image kdiji2 = null;
Image kdiji3 = null; public Before() {
try {
bg = ImageIO.read(Before.class.getClassLoader().getResourceAsStream("images/bg.jpg"));
wfeiji = ImageIO.read(Before.class.getClassLoader().getResourceAsStream("images/feiji_1.png"));
kdiji1 = ImageIO.read(Before.class.getClassLoader().getResourceAsStream("images/kdiji_01.png"));
kdiji2 = ImageIO.read(Before.class.getClassLoader().getResourceAsStream("images/kdiji_02.png"));
kdiji3 = ImageIO.read(Before.class.getClassLoader().getResourceAsStream("images/kdiji_03.png"));
} catch (IOException e) {
e.printStackTrace();
}
} int time = 0; public void draw(Graphics g) {
if (PlaneStatus.roleNum == 1) {
// 画妹妹
g.drawImage(bg, 0, 0, null);
g.drawImage(wfeiji, 260, 600, null);
g.drawImage(kdiji1, 200, 50, null);
g.drawImage(kdiji1, 400, 50, null);
g.drawImage(kdiji1, 150, 480, null);
g.drawImage(kdiji1, 400, 480, null);
g.drawImage(kdiji2, 100, 200, null);
g.drawImage(kdiji2, 300, 100, null);
g.drawImage(kdiji2, 480, 200, null);
g.drawImage(kdiji3, 300, 300, null);
g.drawImage(kdiji3, 70, 400, null);
g.drawImage(kdiji3, 510, 400, null);
//画回车符
time++;
g.setColor(Color.YELLOW);
g.setFont(new Font("幼圆", Font.BOLD, 30)); }
if (time <= 10) {
g.drawString("[Enter]>>", 50, 750);
} else if (time <= 20) {
g.drawString("[Enter] >>", 50, 750);
} else if (time <= 30) {
g.drawString("[Enter] >>", 50, 750);
if (time == 30) {
time = 0;
}
}
} public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
if (keyCode == KeyEvent.VK_ENTER) { }
if (keyCode == KeyEvent.VK_LEFT || keyCode == KeyEvent.VK_RIGHT) {
PlaneStatus.roleNum = 3 - PlaneStatus.roleNum;
//1~2 互换
}
} public void keyReleased(KeyEvent e) { } }

java版飞机大战代码的更多相关文章

  1. java版飞机大战 实战项目详细步骤.md

    [toc] 分析 飞机大战 首先对这个游戏分析,在屏幕上的物体都是飞行物,我们可以把建一个类,让其他飞行物继承这个类.游戏中应有英雄机(也就是自己控制的飞机).敌人.而敌人应该分为打死给分的飞机(就是 ...

  2. python版飞机大战代码简易版

    # -*- coding:utf-8 -*- import pygame import sys from pygame.locals import * from pygame.font import ...

  3. 微信5.0 Android版飞机大战破解无敌模式手记

    微信5.0 Android版飞机大战破解无敌模式手记 转载: http://www.blogjava.net/zh-weir/archive/2013/08/14/402821.html 微信5.0 ...

  4. 微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js)

    微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js) 微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞 ...

  5. 微信小游戏 demo 飞机大战 代码分析 (三)(spirit.js, animation.js)

    微信小游戏 demo 飞机大战 代码分析(三)(spirit.js, animation.js) 微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞机大战 代码 ...

  6. 微信小游戏 demo 飞机大战 代码分析 (二)(databus.js)

    微信小游戏 demo 飞机大战 代码分析(二)(databus.js) 微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞机大战 代码分析(三)(spirit. ...

  7. 微信小游戏 demo 飞机大战 代码分析 (一)(game.js, main.js)

    微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞机大战 代码分析(二)(databus.js) 微信小游戏 demo 飞机大战 代码分析(三)(spirit. ...

  8. java版第一个代码——HelloWorld!

    java版第一个代码--HelloWorld! 今天来接触一下java代码: 事前准备 jdk的配置(推荐jdk8或jdk11) notepad++或idea软件 开始编写 建立文件夹存放代码 建立j ...

  9. Python版飞机大战

    前面学了java用java写了飞机大战这次学完python基础后写了个python版的飞机大战,有兴趣的可以看下. 父类是飞行物类是所有对象的父类,setting里面是需要加载的图片,你可以换称自己的 ...

随机推荐

  1. golang 爬取百度贴吧绝地求生页面

    package main import ( "github.com/antchfx/htmlquery" "io" "net/http" & ...

  2. rabbitmq之后台管理和用户设置

    前言 前面介绍了erlang环境的安装和rabbitmq环境安装,接下来介绍rabbitmq的web管理和用户设置. 启用后台管理插件 通过后台管理插件我们可以动态监控mq的流量,创建用户,队列等. ...

  3. composer 打印美化

    { "name": "brady_frmwork", "description":"php framwork", &qu ...

  4. centos8:linux平台查看线程(ps/pstree/top)

    一,ps/pstree/top命令所属的rpm包 pstree所属的包 [root@blog ~]# whereis pstree pstree: /usr/bin/pstree /usr/bin/p ...

  5. vue知识点16

    1. 数组用下标改变,或者对象增加属性,这样的改变数据   是不能触发视图更新的,要用 Vue.set(对象,属性,值) 或this.$set(对象,属性,值) 2. this.$forceUpdat ...

  6. 渗透测试全流程靶机vulnhubDC-1完成笔记

    镜像下载地址 https://www.vulnhub.com/entry/dc-1-1,292/ 信息收集 1.可以使用netdiscover -i eth0 发现二层网络信息 发现两个设备(103是 ...

  7. Glide缓存图片

    是用Glide加载网络图片可以自动缓存到磁盘 添加依赖: implementation 'com.github.bumptech.glide:glide:4.9.0' implementation ' ...

  8. vue-cli 工程目录结构介绍 详细介绍

    vue-cli目录结构: vue-cli目录解析: build 文件夹:用于存放 webpack 相关配置和脚本.开发中仅 偶尔使用 到此文件夹下 webpack.base.conf.js 用于配置 ...

  9. axb_2019_heap-format_string + off-by-one

    axb_2019_heap 简单题,格式化字符串泄漏栈地址 算上rsp,格式化字符串参数是栈顺序+6-1 edit有off by one 构造unlink chunk0 chunk1 chunk2 构 ...

  10. ATOM基础教程一使用前端插件emmet(16)

    emmet简介 http://blog.csdn.net/zsl10/article/details/51956791 emmet的前身是Zen coding,从事Web前端开发的工程师对该插件并不陌 ...