黑马程序员_Java基础GUI

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

GUI:Graphical User Interface(图形用户接口)

很实用的两个包:

java.Awt:(Abstract Window ToolKit抽象窗口工具包)需要调用本地系统方法实现功能.属重量级控件,跨平台性不是很好.
javax.Swing: 在AWT的基础上,建立的一套图形化几面系统.其中提供了更多的组件,而且完全有Java实现,增强了可一致性,属轻量级控件
顺便说一下,eclipse的界面用的包是java.xawt

简单说一下体系
Component(构件,组件)
 |--Container(容器,特殊的子类)这个组件作为一个组件,里面可以继续添加组件
  |--Window(窗口)
   |--Frame(框架,窗体)
   |--Dialog(对话框)
    |--FileDialog(文件对话框)
  |--Panel(面板)
 //下面与Container同级,但是不能添加组件
 |--Button(按钮)
 |--Label(标签,作用在于封装文字)
 |--Checkbox(复选框)
 |--TextComponent(文本组件)
  |--TextArea(文本框)
  |--TextFileld(文本域)
GUI-布局管理器
容器中的组件的排放方式,就是布局
常见的布局管理器:
FlowLayout(流式布局管理器)
 总左到右的顺序排列;
 Panel默认的布局管理器
BorderLayout(边界布局管理器)
 东南西北中
 Frame默认的布局管理器
GridLayout(网格布局管理器)
 规则的矩阵
GardLayout(卡片布局管理器)
 选项卡
GridBagLayout(网格布局管理器)
 非规则的矩阵
GUI-Frame

//创建图形化界面:
1,创建frame窗体;
2,对窗体进行基本设置,
 比如:大小,位置,布局;
3,定义组件;
4,将组件通过窗体的add方法添加到窗体中.
5,让窗体显示,通过setVisible(true)

//创建图形化界面
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;

class AwtDemo {
 public static void main(String[] args)
 {
  Frame f = new Frame("my awt");
  
  //设置窗体大小
  f.setSize(500,400);
  
  //设备位置位置,距左面300,上面200xp
  f.setLocation(300,20);
  
  //设置布局管理(流式布局管理)
  f.setLayout(new FlowLayout());
  
  //按钮
  Button b = new Button("我是一个按钮");
  
  //将按钮添加到窗体当中
  f.add(b);
  
  //显示窗体
  f.setVisible(true);
  
  
 }
}

GUI-事件监听机制

事件监听机制的特点:
1,事件源
2,事件
3,监听器
4,事件处理方式

事件源:就是awt包或者swing包中的那些图形界面组件

事件:每一个事件源都有自己特有的对应事件和共性事件.

监听器:可以出发某一个事件的动作(不止一个动作)都已经封装到了监听器中

以上三者在java中都已经定义好了,直接获取其对象来用就可以了.
我们需要做的事情是:就是对产生的动作进行处理.
GUI-窗体事件

package demo;
//创建图形化界面
import java.awt.*;
import java.awt.event.*;

class AwtDemo {
 public static void main(String[] args)
 {

  Frame f = new Frame("my awt");
  
  //设置窗体大小
  f.setSize(500,400);
  
  //设备位置位置,距左面300,上面200xp
  f.setLocation(300,20);
  
  //设置布局管理(流式布局管理)
  f.setLayout(new FlowLayout());
  
  //按钮
  Button b = new Button("我是一个按钮");
  
  //将按钮添加到窗体当中
  f.add(b);
  
  //f.addWindowListener(new MyWin());
  //可以写个匿名内部类
  f.addWindowListener(new WindowAdapter()
    {
     //关闭窗口
     public void windowClosing(WindowEvent e)
     {
      System.out.println("我关");
      System.exit(0);
     }
     //窗体前置
     public void windowActivated(WindowEvent e)
     {
      System.out.println("我活了..");
     }
     //窗体打开
     public void windowOpened(WindowEvent e)
     {
      System.out.println("我被打开了");
     }
    });
  
  
  //显示窗体
  f.setVisible(true);

 }
}
//应为WindowListener的子类windowASdapter已经实现了WindowListener接口.
//并覆盖了其中的所有方法.那么我只需要继承自WindowAdapter覆盖我需要的方法即可
class MyWin extends WindowAdapter
{
 public void windowClosing(WindowEvent e)
 {
  System.out.println("window closing");
  System.exit(0);
 }
}

/*
class MyWin implements WindowListener
{
 //覆盖了7个方法,可是我只用到了关闭的动作.
 //其它的动作都没有用到,可是必须复写
}
*/
GUI-Action事件

//按钮中添加事件
import java.awt.*;
import java.awt.event.*;

class FrameDemo {
 //定义该图形中所需的组件的引用.
 private Frame f;
 private Button but;
 FrameDemo()
 {
  init();
 }
 
 //对图形界面初始化
 public void init()
 {
  f = new Frame("my frame");
  //对frame进行基本设置
  //setBounds(int x,int y,int width,int height)
  f.setBounds(300,100,500,400);
  f.setLayout(new FlowLayout());
  
  but = new Button("my button");
  
  //将组件添加到窗体中
  f.add(but);
  
  //加载一下窗体上的事件
  myEvent();
  //显示窗体
  f.setVisible(true);
 }
 //将事件添加到这里
 public void myEvent()
 {
  f.addWindowListener(new WindowAdapter(){
   public void windowClosing(WindowEvent e)
   {
    System.exit(0);
   }
  });
  //让按钮具备退出程序的功能
  /*
   * 按钮就是事件源
   * 那么选择哪一个监听器呢?
   * 通过关闭窗体示例了解到想要知道哪个组件具备什么样的特有监听器.
   * 需要查看该组件对象的功能
   * 通过查询Button的描述,发现按钮支持一个特有监听addActionListener,活动监听
   */
  but.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    System.out.println("按钮干的");
    System.exit(0);
   }
  });
 }
 
 
 
 public static void main(String[] args)
 {
  new FrameDemo();
 }
}

GUI-鼠标事件
//鼠标事件
import java.awt.*;
import java.awt.event.*;

class MouseEventDemo {
 private Frame f;
 private Button but;
 MouseEventDemo()
 {
  init();
 }
 
 //对图形界面初始化
 public void init()
 {
  f = new Frame("my frame");
  
  f.setBounds(300,100,500,400);
  f.setLayout(new FlowLayout());
  
  but = new Button("my button");
  
  f.add(but);
  
  myEvent();
  f.setVisible(true);
 }
 
 public void myEvent()
 {
  //窗口关闭
  f.addWindowListener(new WindowAdapter()
  {
   public void windowClosing(WindowEvent e)
   {
    System.exit(0);
   }
  });
  //按钮的活动事件,如果想要这个按钮键盘鼠标都能操作,建议用活动事件
  but.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    System.out.println("活动事件");
   }
  });
  //鼠标事件
  but.addMouseListener(new MouseAdapter()
  {
   int count = 1;
   int clickcount = 1;
   //鼠标进入事件
   public void mouseEntered(MouseEvent e)
   {
    System.out.println("鼠标进入该按钮"+count++);
   }
   public void mouseClicked(MouseEvent e)
   {
    //getClickCount()获取鼠标连击次数
    if(e.getClickCount()==2)
    System.out.println("鼠标双击事件"+clickcount++);
   }
  });
   
 }

 public static void main(String[] args)
 {
  new MouseEventDemo();
 }
}


GUI-键盘事件
package demo8;
//键盘事件
import java.awt.*;
import java.awt.event.*;

class KeyDemo{
 private Frame f;
 private Button but;
 private TextField tf;
 KeyDemo()
 {
  init();
 }
 public void init()
 {
  f = new Frame("my frame");
  but = new Button("my button");
  
  tf = new TextField(20);//创建文本框
  
  f.setBounds(300,100,300,500);
  f.setLayout(new FlowLayout());
  f.add(tf);
  f.add(but);
  
  myEvent();
  f.setVisible(true);
 }
 public void myEvent()
 {
  //窗口活动事件
  f.addWindowListener(new WindowAdapter()
  {
   public void windowClosing(WindowEvent e)
   {
    System.exit(0);
   }
  });
  
  tf.addKeyListener(new KeyAdapter()
  {
   public void keyPressed(KeyEvent e)
   {
    int code = e.getKeyCode();
    if(!(code>=KeyEvent.VK_0 && code<= KeyEvent.VK_9))
    { 
     e.consume();//不会按照原事件执行
     System.out.println(code+"您输入的是非法的");
     
    }
   }
  });
  
  //给but添加一个监听
  but.addKeyListener(new KeyAdapter()
  {
   public void keyPressed(KeyEvent e)
   {
    //组合按键,ctrl+enter
    if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)
     System.exit(0);

    //如果按键是esc就退出
    //if(e.getKeyCode()==KeyEvent.VK_ESCAPE)
    // System.exit(0);
    
    
    //KeyEvent.getKeyText(e.getKeyCode())打印输入内容
    //System.out.println(KeyEvent.getKeyText(e.getKeyCode())+"...."+e.getKeyCode());
   }
  });
  
  
  
 }
}

class KeyEventDemo {
 public static void main(String[] args)
 {
  new KeyDemo();
 }
}

GUI-对话框Dialog

package demo10;
//GUI-练习, 列出指定目录内容
import java.awt.*;
import java.awt.event.*;
import java.io.File;
class MyWindow
{
 private Frame f;
 private Button but;
 private TextField tf;
 private TextArea ta;
 
 private Dialog d;//误操作提示框
 private Label lab;//
 private Button okBut;
 MyWindow()
 {
  init();
 }
 //画界面
 public void init()
 {
  //创建f窗体,but按钮,tf文本框,ta文本域
  f = new Frame();
  f.setBounds(300,100,600,500);//窗体坐标以及窗体大小
  f.setLayout(new FlowLayout());//布局方式
  
  //创建错误滴那个东东的窗体
  d = new Dialog(f,"提示信息-self",true);//true,不关闭此窗口,后面的窗口操作不了,false后面的窗口可以继续操作
  d.setBounds(400,200,240,150);
  d.setLayout(new FlowLayout());
  lab = new Label();//封装错误信息滴
  okBut = new Button("确定");
  
  d.add(lab);
  d.add(okBut);
  
  but = new Button("转到");
  tf = new TextField(60);
  ta = new TextArea(25,70);//行,列
  
  f.add(tf);
  f.add(but);
  f.add(ta);
  
  myEvent();
  f.setVisible(true);
  
 }
 public void myEvent()
 { 
  //按钮退出
  but.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    showDir();
   }
  });
  //弹出对话框的按钮事件
  okBut.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    d.setVisible(false);
   }
  });
  
  tf.addKeyListener(new KeyAdapter()
  {
   public void keyPressed(KeyEvent e)
   {
    if(e.getKeyCode()==KeyEvent.VK_ENTER)
     showDir();
   }
  });
  
  
  
  //弹出对话框的窗体事件
  d.addWindowListener(new WindowAdapter()
  {
   public void windowClosing(WindowEvent e)
   {
    d.setVisible(false);
   }
  });
  
  //f的窗口事件
  f.addWindowListener(new WindowAdapter()
  {
   public void windowClosing(WindowEvent e)
   {
    System.exit(0);
   }
  });
 }
 public void showDir()
 {
  String dirPath = tf.getText();
  File dir = new File(dirPath);//封装成对象
  if(dir.exists() && dir.isDirectory())//dir存在,并且是目录
  {
   ta.setText("");//清空上一次查询
   String[] names = dir.list();
   for(String name : names)
   {
    ta.append(name+"\r\n");
   }
  }
  else
  {
   //错误提示信息
   String info = "您输入的信息是:"+dirPath+"错误滴,请重新输入";
   lab.setText(info);
   d.setVisible(true);
  }
 }
}


class MyWindowDemo {
 public static void main(String[] args)
 {
  new MyWindow();
 }
}

GUI-菜单
Menu();//菜单,菜单既可以添加菜单,也可以添加菜单条
MenuItem();//菜单条

mb.add(m);//添加"文件"
m.add(subMenu);//文件下面添加子惨淡
subMenu.add(subItem);//子条目
m.add(closeItem);
文件Menu
|--子菜单Menu
  |--子条目MenuItem
|--退出MenuItem


//菜单
import java.awt.*;
import java.awt.event.*;
class MyMenuDemo {
 private Frame f;
 private MenuBar mb;//菜单栏
 private Menu m,subMenu;//菜单
 private MenuItem closeItem,subItem;//子菜单
 
 MyMenuDemo()
 {
  init();
 }
 public void init()
 {
  f = new Frame();
  f.setBounds(100,100,500,600);
  f.setLayout(new FlowLayout());
  
  mb = new MenuBar();
  m = new Menu("文件");
  closeItem = new MenuItem("退出");
  subItem = new MenuItem("子条目");
  subMenu = new Menu("子菜单");

  f.setMenuBar(mb);//添加菜单
  mb.add(m);//添加"文件"
  m.add(subMenu);//文件下面添加子菜单
  subMenu.add(subItem);//子条目
  m.add(closeItem);
  
  myEvent();
  f.setVisible(true);
 }
 public void myEvent()
 {
  //f的窗口事件
  f.addWindowListener(new WindowAdapter()
  {
   public void windowClosing(WindowEvent e)
   {
    System.exit(0);
   }
  });
  closeItem.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    System.exit(0);
   }
  });
 }

 public static void main(String[] args)
 {
  new MyMenuDemo();
 }
}
GUI-练习-打开文件

package test11;
//练习-打开文件
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class MyMenuTest {
 private Frame f;
 private MenuBar bar;//菜单栏
 private Menu fileMenu;//菜单
 private MenuItem openItem,saveItem,closeItem;//子菜单
 private FileDialog openDia,saveDia;//打开,保存
 private TextArea ta;//文本区域
 
 MyMenuTest()
 {
  init();
 }
 public void init()
 {
  f = new Frame();
  f.setBounds(100,100,500,600);
  //f.setLayout(new FlowLayout());
  
  bar = new MenuBar();
  fileMenu = new Menu("文件");
  closeItem = new MenuItem("退出");
  openItem = new MenuItem("打开");
  saveItem  = new MenuItem("保存");
  ta = new TextArea();
  
  f.setMenuBar(bar);//添加菜单
  bar.add(fileMenu);//添加"文件"
  fileMenu.add(openItem);
  fileMenu.add(saveItem);
  fileMenu.add(closeItem);
  f.add(ta);//文本区域
  
  
  openDia = new FileDialog(f,"我要打开",FileDialog.LOAD);
  saveDia = new FileDialog(f,"我要保存",FileDialog.SAVE);
  
  myEvent();
  f.setVisible(true);
 }
 public void myEvent()
 {
  //打开的事件
  openItem.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    openDia.setVisible(true);//显示
    String dirPath = openDia.getDirectory();//路径
    String fileName = openDia.getFile();//名字
    //System.out.println(dirPath+fileName);
    if(dirPath==null || fileName==null)//如果有一个为空的话,那么就返回
     return ;
    ta.setText("");//添加下个文件之前先清空文本区域
    File file = new File(dirPath+fileName);
    try
    {
     BufferedReader bufr = new BufferedReader(new FileReader(file));
     String line = null;
     while((line=bufr.readLine())!=null)
     {
      ta.append(line+"\r\n");
     }
     bufr.close();
    }
    catch(IOException es)
    {
     throw new RuntimeException("读取失败");
    }
   }
  });
  //保存的事件
  saveItem.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    saveDia.setVisible(true);
   }
  });
  
  
  //f的窗口事件
  f.addWindowListener(new WindowAdapter()
  {
   public void windowClosing(WindowEvent e)
   {
    System.exit(0);
   }
  });
  closeItem.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    System.exit(0);
   }
  });
 }

 public static void main(String[] args)
 {
  new MyMenuTest();
 }
}

GUI-保存文件

package test11;
//练习-打开文件
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class MyMenuTest {
 private Frame f;
 private MenuBar bar;//菜单栏
 private Menu fileMenu;//菜单
 private MenuItem openItem,saveItem,closeItem;//子菜单
 private FileDialog openDia,saveDia;//打开,保存
 private TextArea ta;//文本区域
 private File file;
 
 MyMenuTest()
 {
  init();
 }
 public void init()
 {
  f = new Frame();
  f.setBounds(100,100,500,600);
  //f.setLayout(new FlowLayout());
  
  bar = new MenuBar();
  fileMenu = new Menu("文件");
  closeItem = new MenuItem("退出");
  openItem = new MenuItem("打开");
  saveItem  = new MenuItem("保存");
  ta = new TextArea();
  
  f.setMenuBar(bar);//添加菜单
  bar.add(fileMenu);//添加"文件"
  fileMenu.add(openItem);
  fileMenu.add(saveItem);
  fileMenu.add(closeItem);
  f.add(ta);//文本区域
  
  
  openDia = new FileDialog(f,"我要打开",FileDialog.LOAD);
  saveDia = new FileDialog(f,"我要保存",FileDialog.SAVE);
  
  myEvent();
  f.setVisible(true);
 }
 public void myEvent()
 {
  //保存的事件
  saveItem.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    //弹与不弹就看文件存不存在..
    if(file==null)
    {   //弹出
     saveDia.setVisible(true);
    
    String dirPath = saveDia.getDirectory();//路径
    String fileName = saveDia.getFile();//名字
    if(dirPath==null || fileName==null)//如果有一个为空的话,那么就返回
     return ;
    file = new File(dirPath+fileName);
    }
    try
    {
     BufferedWriter bufw = new BufferedWriter(new FileWriter(file));
     
     String text = ta.getText();
     bufw.write(text);
     bufw.close();
    }
    catch(IOException ex)
    {
     throw new RuntimeException();
    }
   }
  });
  
  
  
  //打开的事件
  openItem.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    openDia.setVisible(true);//显示
    String dirPath = openDia.getDirectory();//路径
    String fileName = openDia.getFile();//名字
    System.out.println(dirPath+fileName);
    if(dirPath==null || fileName==null)//如果有一个为空的话,那么就返回
     return ;
    ta.setText("");//添加下个文件之前先清空文本区域
    file = new File(dirPath+fileName);
    try
    {
     BufferedReader bufr = new BufferedReader(new FileReader(file));
     String line = null;
     while((line=bufr.readLine())!=null)
     {
      ta.append(line+"\r\n");
     }
     bufr.close();
    }
    catch(IOException es)
    {
     throw new RuntimeException("读取失败");
    }
   }
  });
   
  //f的窗口事件
  f.addWindowListener(new WindowAdapter()
  {
   public void windowClosing(WindowEvent e)
   {
    System.exit(0);
   }
  });
  closeItem.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    System.exit(0);
   }
  });
 }

 public static void main(String[] args)
 {
  new MyMenuTest();//实例一个菜单窗体
 }
}


GUI-jar包双击执行
jar -cvf my.jar mymenu

1,创建一个文档,内容如下
Main-Class: 包名.类名"回车"
例如:
Main-Class: mymenu.MyMenuTest

2,执行命令如下:
jar -cvfm 自定义.jar 配置文件名 包名
jar -cvfm my.jar 1.txt mymenu

3,必须要注册到本地才能用,javaw

 

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

转载于:https://www.cnblogs.com/yun45/archive/2013/05/14/3077699.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261699.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Maven中使用本地JAR包

为什么80%的码农都做不了架构师&#xff1f;>>> 在Maven项目中使用本地JAR包有两种方法&#xff1a; 1、使用system scope <dependencies><dependency><groupId>org.richard</groupId><artifactId>my-jar</artifactId><ver…

python文件读取方法read(size)的含义是_在Python中可使用read([size])来读取文件中的数据,如果参数size省略,则读取文件中的()。(4.0分)_学小易找答案...

【单选题】文本文件存储的是(),由若干文本行组成,通常每行以换行符 \n 结尾。(4.0分)【单选题】()属性是返回被打开文件的访问模式。(4.0分)【单选题】重力坝是由砼或( )修筑而成的大体积档水建筑物。【单选题】模式()的用途是打开一个文件用于追加。如果该文件已存在,文件指针…

折半查找法(二分查找法)

一.举例 二.算法时间复杂度 假设一共有n个元素 第一次折半元素个数变为n/2; 第二次折半元素个数变为n/4; 第三次折半元素个数变为n/8&#xff1b; 。。。。。 第k次折半元素个数变为n/2^k; 。。。。。 假设k次找到&#xff0c;即为n/2^k1&#xff1b; klog2(n); 三.函数实现 …

团队大事件-团队历程-团队记录~

团队名称&#xff1a; 河北大学信管团队 成立时间&#xff1a; 2010年7月8日 团队成员&#xff1a; 05&#xff1a;朱胜贤 07&#xff1a;孙旭峰 08&#xff1a;水亚亚 张文元 项玥 09&#xff1a;谢静 吕芳 吴凡 李亚慧 10&#xff1a; 第一组&#xff1a; 陈泰衡、李志伟…

Ubuntu链接ubuntu服务器

以前在windows下用ssh工具putty连接 linux服务器&#xff0c; 很简单&#xff0c;在linux下要连接linux的服务器&#xff0c; 找了下&#xff0c;果然putty在linux中也行1&#xff0c;sudo apt-get install putty安装后从applications中找到打开即可2. 直接用ssh登录ssh -l dev…

添加类iOS cocos2d 2游戏开发实战(第3版)

这两天一直在学习添加类之类的问题,现在正好有机会和大家讨论一下. 第1章 简介 1 1.1 第3版中的新增内容 2 1.2 选择ios版cocos2d的来由 3 1.2.1 收费 3 1.2.2 开源 4 1.2.3 objective-c 4 1.2.4 2d游戏引擎 4 1.2.5 物理引擎 4 1.2.6 技术难度较低 5 1.2.7 依然需要编…

悬浮截图软件_Windows最好用截图工具,QQ第一,它第二

大家平时可能都有自己惯用截图工具&#xff0c;比如 Snipaste、PickPick、QQ 截图&#xff0c;还有 Windows 自带的 WinShiftS 截图快捷键等等。如果你不是工具控&#xff0c;那一般来说 QQ 截图和 Windows 快截键就是最简单方便的两个截图工具了。但是真要说简单方便&#xff…

[摘记]数值方法04——函数求值

注&#xff1a;以下来自《C数值算法一书》&#xff0c;仅对章节内容做摘要&#xff0c;为的是给自己扫盲&#xff0c;不涉及算法。 这里只讨论一些最清晰明了的一般方法。 1. 级数与其收敛性 思想&#xff1a;解析函数可在某点x0的邻域内展开成级数&#xff1a;。用这个级数可以…

求两个数的最大公约数

一.基础款 #include <stdio.h> int main() {int m 0;int n 0;int i 0;int temp 0;int min 0;scanf_s("%d %d", &m, &n);if (m > n)min n;elsemin m;for (i 1; i < min / 2; i){if (m % i 0 && n % i 0)temp i;}printf("…

java文件处理之压缩,分割

http://blog.csdn.net/ycg01/article/details/1366648 java文件处理之压缩,分割 标签&#xff1a; javaexceptionimportnullbytefile2006-11-05 00:30 1574人阅读 评论(1) 收藏 举报分类&#xff1a;点滴&#xff08;12&#xff09; 版权声明&#xff1a;本文为博主原创文章&am…

成功通过pmp_这就是你为啥要学PMP!!!

好多学员一开始就会问&#xff0c;我为什么要学PMP&#xff0c;学这个对我到底有啥用啊&#xff1f;带着疑问&#xff0c;今天小编带你一起走进PMP&#xff01; PMP 证书价值&#xff1a; 1、很多国际国内公司要求项目经理持证上岗&#xff08;企业的投资、战略目标的实现多是依…

C# 判断给定大数是否为质数,目标以快速度得到正确的计算结果。

标题是一个测试题。在看到这道题的时候&#xff0c;第一反应这是一道考程序复杂度的题&#xff0c;其次再是算法问题。 我们先来看看质数的规则: Link&#xff1a;http://en.wikipedia.org/wiki/Prime_number C#求质数代码&#xff1a; 1 public bool primeNumber(int …

Hook KiUserExceptionDispatcher参数指针错误的问题

跟了一个晚上,终于解决了 大概要实现的是用这个函数替换ntdll中的KiUserExceptionDispatcher,实现方法如下: VOID NTAPI KiUserExceptionDispatcher(PEXCEPTION_RECORD pExcptRec,PCONTEXT pContext) { DWORD retValue; if (RtlDispatchException(pExcptRec,pContext)) { retVa…

Docker image Introduce

Docker 的image是运行的基本.例如我们build一个image时, 在Dockerfile每条指令会产生一个可读写的image, 下一条指令使用上一条指令产生的image为基础, 继续产生image(然后删除上一个image), 如果指令没有对image有修改的动作, 那么可以使用image cache. 所有的指令执行完, 生成…

vue 筛选组件_记一个复杂组件(Filter)的从设计到开发

此文前端框架使用 rax&#xff0c;全篇代码暂未开源&#xff08;待开源&#xff09;原文链接地址&#xff1a;Nealyang/PersonalBlog前言貌似在面试中&#xff0c;你如果设计一个 react/vue 组件&#xff0c;貌似已经是司空见惯的问题了。本文不是理论片&#xff0c;更多的是自…

Adobe称Flash技术遭排斥 呼吁政府介入

据国外媒体昨日报道&#xff0c;Adobe在一份提交给美国证交会的申报文件中抱怨称&#xff0c;Flash技术遭到苹果的全面排斥&#xff0c;这有可能对Adobe的业务产生影响。一位业内人士指出&#xff0c;此举彰显出Adobe可能要求政府机构的介入。 呼吁政府介入苹果旗下iPod Touch、…

python的正则表达式 re

2019独角兽企业重金招聘Python工程师标准>>> 原文发表在&#xff1a; http://luy.li/2010/05/12/python-re/ 延伸阅读&#xff1a;python的 内建函数 和 subprocess 。此文是本系列的第三篇文章了&#xff0c;和之前一样&#xff0c;内容出自官方文档&#xff0c;但…

python爬取图书信息_Python3 爬虫爬取中国图书网(淘书团) 记录

本人为一名刚开始学Python爬虫的小白&#xff0c;开贴仅为记录下自己的学习历程&#xff0c;方便做review要爬取链接&#xff1a;http://tuan.bookschina.com/要爬取内容&#xff1a; 图书名称&#xff0c; 图书价格&#xff0c; 以及对应预览图的link本文用到py packages: req…

求1到100中9的个数

个位9的数目十位9的数目 #include<stdio.h> int main() {int num 0;int count 0;for (num 1; num < 100; num){if (num % 10 9) //个位9的个数count;if (num / 10 9)//十位9的个数count;}printf("%d", count);return 0; }

Android 核心已经从 Linux kernel 代码库中删除

Greg Kroah-Hartman Novell 的开发人员&#xff0c;他主要负责维护 Linux 操作系统的启动&#xff0c;USB和驱动核心&#xff0c;近日他表示谷歌 Android 系统的驱动核心 已经从 Linux kernel 2.6.33 代码库中删除。Greg Kroah-Hartman 也是一个 Android 手机系统的爱好者&…