java实现简单控制台通讯录

 更新时间:2018年02月22日 10:34:30   作者:侪哥哥  
这篇文章主要为大家详细介绍了java实现简单控制台通讯录,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

通过主菜单对各级子菜单进行控制,并实现添加记录,查找记录,删除记录,修改记录,排序记录,以及退出系统功能的实现。一共六部分的功能模块。

这里写图片描述

上面的图就是每个模块具有的功能,而且还用到了正则表达式判断输入的是否符合规则,这个系统体现了MVC的设计模式,分工调用很清晰。

主要包含了下面几个类:

这里写图片描述

APP类:程序的主函数类,程序开始的入口
Menu类:里面都是简单页面显示的效果,没有功能的实现。
TelNoteRegex类:正则表达式,判断是否输入合格,都在这个方法中。
Operate类:业务逻辑类,全部功能的实现基本都集中在这个类中。
Person类:封装数据。

这里写图片描述

具体的实现代码:

App类的实现代码:

package com.bjsxt.iphone;
public class App {
 public static void main(String[] args) {
  new App().start();
 }
 public void start(){
  Menu m=new Menu();
  Operate o=new Operate();
  TelNoteRegex reg=new TelNoteRegex();
  while(true){
   m.mainMenu();
   int key=reg.menuRegex(1, 6);
   switch(key){
   case 1:
    o.addLogic();
    break;
   case 2:
    o.searchLogic();
    break;
   case 3:
    o.modifyLogicLogic();
    break;
   case 4:
    o.deleteLogic();
    break;
   case 5:
    o.orderLogic();
    break;
   case 6:
    System.exit(0);
    break;
   }
  }
 }
}

Person类具体的实现代码:

package com.bjsxt.iphone;
public class Person {
 private int id;//用户ID属性
 private String name;//用户姓名属性
 private String age;//用户年龄属性
 private String sex;//用户性别属性
 private String telNum;//用户电话号码属性
 private String address;//用户地址属性
 public Person(){}
 public Person(int id,String name,String age,String sex,String telNum,String address){
  this.id=id;
  this.name=name;
  this.age=age;
  this.sex=sex;
  this.telNum=telNum;
  this.address=address;
 }
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id=id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getAge() {
  return age;
 }
 public void setAge(String age) {
  this.age = age;
 }
 public String getSex() {
  return sex;
 }
 public void setSex(String sex) {
  this.sex = sex;
 }
 public String getTelNum() {
  return telNum;
 }
 public void setTelNum(String telNum) {
  this.telNum = telNum;
 }
 public String getAddress() {
  return address;
 }
 public void setAddress(String address) {
  this.address = address;
 }
}

TelNoteRegex类具体代码:

package com.bjsxt.iphone;
import java.util.Scanner;
public class TelNoteRegex {
 //对菜单项校验
 @SuppressWarnings("resource")
 public int menuRegex(int min,int max){
  String regex="[0-9]{1}";
  Scanner sc=new Scanner(System.in);
  while(true){
   String input=sc.nextLine();
   //根据合法性的校验
   if(input.matches(regex)){
    int key=Integer.parseInt(input);
    if(key>=min && key<=max){
     return key;
    }else{
     System.out.println("输入的菜单项不符合要求!");
    }
   }else{
    System.out.println("输入内容不正确!");
   }
  }

 }

 //用户输入姓名的验证
 @SuppressWarnings("resource")
 public String nameRegex(String name){
  String pattern ="[\\u4e00-\\u9fa5]+";
  String str=name;
  Scanner sc=new Scanner(System.in);
  while(true){
   if(str.matches(pattern)){
    return str;
   }else{
    System.out.println("输入不合法字符,请重新输入中文汉字");
    str=sc.nextLine();
    continue;
   }
  }
 }
 //用户输入年龄的验证
 @SuppressWarnings("resource")
 public String ageRegex(String age){
  String pattern ="^([0-9]|[0-9]{2}|100)$";
  String str=age;
  Scanner sc=new Scanner(System.in);
  while(true){
   if(str.matches(pattern)){
    return str;
   }else{
    System.out.println("输入不合法字符,请重新输入数字");
    str=sc.nextLine();
    continue;
   }
  }
 }
 //用户性别的验证
 @SuppressWarnings("resource")
 public String sexRegex(String sex){
  String pattern ="[男女MmFf]";
  String str=sex;
  Scanner sc=new Scanner(System.in);
  while(true){
   if(str.matches(pattern)){
    return str;
   }else{
    System.out.println("输入不合法字符,请重新输入男女MmFf");
    str=sc.nextLine();
    continue;
   }
  }
 }
 //用户输入电话号码的验证
 @SuppressWarnings("resource")
 public String telNumRegex(String telNum){
  String pattern ="[0-9]{11}";
  String str=telNum;
  Scanner sc=new Scanner(System.in);
  while(true){
   if(str.matches(pattern)){
    return str;
   }else{
    System.out.println("输入不合法字符,请重新输入11位的手机号码");
    str=sc.nextLine();
    continue;
   }
  }
 }
 //用户输入地址的验证
 @SuppressWarnings("resource")
 public String addressRegex(String address){
  String pattern ="[a-zA-Z[0-9]]{1,15}";
  String str=address;
  Scanner sc=new Scanner(System.in);
  while(true){
   if(str.matches(pattern)){
    return str;
   }else{
    System.out.println("输入不合法字符,请重新输入1到15个英文大小写或是数字");
    str=sc.nextLine();
    continue;
   }
  }
 }
}

Menu类代码的具体实现:

package com.bjsxt.iphone;
public class Menu {
 //主界面
 public void mainMenu() {
  System.out.println("*************************");
  System.out.println("**  1 添加记录  **");
  System.out.println("**  2 查找记录  **");
  System.out.println("**  3 修改记录  **");
  System.out.println("**  4 删除记录  **");
  System.out.println("**  5 排序记录  **");
  System.out.println("**  6 退出系统  **");
  System.out.println("*************************");
 }

 //添加界面
 public void addMenu () {
  System.out.println("*************************");
  System.out.println("**  1 添加新记录  **");
  System.out.println("**  2 查看全记录  **");
  System.out.println("**  3 返回上一级  **");
  System.out.println("*************************");
 }

 //查找界面
 public void searchMenu () {
  System.out.println("*************************");
  System.out.println("**  1 按姓名查找  **");
  System.out.println("**  2 按年龄查找  **");
  System.out.println("**  3 按性别查找  **");
  System.out.println("**  4 按号码查找  **");
  System.out.println("**  5 按住址查找  **");
  System.out.println("**  6 查看全记录  **");
  System.out.println("**  7 返回上一级  **");
  System.out.println("*************************");
 }

 //修改界面
 public void modifyMenu () {
  System.out.println("*************************");
  System.out.println("**  1 查看全记录   **");
  System.out.println("**  2 修改指定记录  **");
  System.out.println("**  3 返回上一级   **");
  System.out.println("*************************");
 }
 //修改子界面
 public void subModifyMenu () {
  System.out.println("*************************");
  System.out.println("**  1 修改姓名    **");
  System.out.println("**  2 修改年龄    **");
  System.out.println("**  3 修改性别    **");
  System.out.println("**  4 修改号码    **");
  System.out.println("**  5 修改住址    **");
  System.out.println("**  6 返回上一级  **");
  System.out.println("*************************");
 }

 //删除界面
 public void deleteMenu () {
  System.out.println("*************************");
  System.out.println("**  1 查看全记录  **");
  System.out.println("**  2 删除指定记录 **");
  System.out.println("**  3 删除全部记录 **");
  System.out.println("**  4 返回上一级  **");
  System.out.println("*************************");
 }
 //排序界面
 public void orderMenu () {
  System.out.println("*************************");
  System.out.println("**  1 按姓名排序   **");
  System.out.println("**  2 按年龄排序  **");
  System.out.println("**  3 按性别排序  **");
  System.out.println("**  4 查看全部记录 **");
  System.out.println("**  5 返回上一级  **");
  System.out.println("*************************");
 }
}

Operate类的具体实现:

package com.bjsxt.iphone;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

public class Operate{

 private List<Person> list=new ArrayList<Person>();
 //用户添加信息业务逻辑控制
 public void addLogic(){
  Menu m=new Menu();
  TelNoteRegex reg=new TelNoteRegex();
  while(true){
   m.addMenu();
   int key=reg.menuRegex(1, 3);
   switch(key){
   case 1:
    addOperation ();
    break;
   case 2:
    showAll();
    break;
   case 3:
    return;
   }
  }
 }

 //用户查询信息业务逻辑控
 public void searchLogic(){
  Menu m=new Menu();
  TelNoteRegex reg=new TelNoteRegex();
  while(true){
   m.searchMenu();
   int key=reg.menuRegex(1, 7);
   switch(key){
   case 1:
    searchByName();
    break;
   case 2:
    searchByAge();
    break;
   case 3:
    searchBySex();
    break;
   case 4:
    searchByTelNum();
    break;
   case 5:
    searchByAdd();
    break;
   case 6:
    showAll();
    break;
   case 7:
    return;
   }
  }
 }
 //修改信息业务逻辑控制
 public void modifyLogicLogic(){
  Menu m=new Menu();
  TelNoteRegex reg=new TelNoteRegex();
  while(true){
   m.modifyMenu();
   int key=reg.menuRegex(1, 3);
   switch(key){
   case 1:
    showAll();
    break;
   case 2:
    modifyLogicLogic1();
    break;
   case 3:
    return;
   }
  }
 }
 //修改有三层跳转
 public void modifyLogicLogic1(){
  Menu m=new Menu();
  TelNoteRegex reg=new TelNoteRegex();
  while(true){
   m.subModifyMenu();
   int key=reg.menuRegex(1, 6);
   switch(key){
   case 1:
    nameModify();
    break;
   case 2:
    ageModify();
    break;
   case 3:
    sexModify();
    break;
   case 4:
    telNumModify();
    break;
   case 5:
    addressModify();
    break;
   case 6:
    return;
   }
  }
 }
 //删除信息业务逻辑控制
 public void deleteLogic(){
  Menu m=new Menu();
  TelNoteRegex reg=new TelNoteRegex();
  while(true){
   m.deleteMenu();
   int key=reg.menuRegex(1, 4);
   switch(key){
   case 1:
    showAll();
    break;
   case 2:
    delete();
    break;
   case 3:
    deleteAll();
    break;
   case 4:
    return;
   }
  }
 }

 //排序信息业务逻辑控制
 public void orderLogic(){
  Menu m=new Menu();
  TelNoteRegex reg=new TelNoteRegex();
  while(true){
   m.orderMenu();
   int key=reg.menuRegex(1, 5);
   switch(key){
   case 1:
    orderName();
    break;
   case 2:
    orderAge();
    break;
   case 3:
    orderSex();
    break;
   case 4:
    showAll();
    break;
   case 5:
    return;
   }
  }
 }

 //添加新用户信息
 @SuppressWarnings("resource")
 public void addOperation (){
   TelNoteRegex reg=new TelNoteRegex();
   Scanner sc=new Scanner(System.in); 
   System.out.println("请输入联系人id:");
   String id=sc.nextLine(); 
   System.out.println("请输入要添加的姓名:");
   String name=sc.nextLine();
   name=reg.nameRegex(name);
   System.out.println("请输入要添加的年龄:");
   String age=sc.nextLine();
   age=reg.ageRegex(age);
   System.out.println("请输入要添加的性别:");
   String sex=sc.nextLine();
   sex=reg.sexRegex(sex);
   System.out.println("请输入要添加的手机号码:");
   String telNum=sc.nextLine();
   telNum=reg.telNumRegex(telNum);
   System.out.println("请输入要添加的地址:");
   String address=sc.nextLine();
   address=reg.addressRegex(address);
   int personId=Integer.parseInt(id);
   Person p=new Person(personId,name,age,sex,telNum,address);
   list.add(p);

 }
// //判断序号是否已经存在插入成功失败
//   @SuppressWarnings("resource")
//   public String judgeId(String id){
//    Scanner sc=new Scanner(System.in);
//    Iterator<Person> it=list.iterator();
//    String newId=id;
//    while(it.hasNext()){
//     Person p=(Person)it.next();
//     if(newId.equals(p.getId())){
//      System.out.println("此序号已经存在,请重新输入序号");
//      newId=sc.nextLine();
//      continue;
//     }else{
//      return newId;
//     }
//    }
//    return id;
//   }

 //查询全部用户信息
 public void showAll(){
  System.out.println("序号\t\t"+"姓名\t\t"+"年龄\t\t"+"性别\t\t"+"手机号\t\t"+"地址");
  Iterator<Person> it=list.iterator();
  while(it.hasNext()){
   Person p=(Person)it.next();
   System.out.println(p.getId()+"#"+"\t\t"+p.getName()+"\t\t"+p.getAge()+"\t\t"+p.getSex()+"\t\t"+p.getTelNum()+"\t\t"+p.getAddress());
  }
 }
 //按姓名查询用户信息
 @SuppressWarnings("resource")
 public void searchByName(){
  TelNoteRegex reg=new TelNoteRegex();
  System.out.println("输入你要查询的姓名:");
  Scanner sc=new Scanner(System.in);
  String name=sc.nextLine();
  name=reg.nameRegex(name);
  Iterator<Person> it=list.iterator();
  while(it.hasNext()){
   Person p=(Person)it.next();
   if(name.equals(p.getName())){
    System.out.println(p.getId()+"#"+"\t\t"+p.getName()+"\t\t"+p.getAge()+"\t\t"+p.getSex()+"\t\t"+p.getTelNum()+"\t\t"+p.getAddress());
   }
  }
 }
 //按年龄查询用户信息
 @SuppressWarnings("resource")
 public void searchByAge(){
  TelNoteRegex reg=new TelNoteRegex();
  System.out.println("输入你要查询的年龄:");
  Scanner sc=new Scanner(System.in);
  String age=sc.nextLine();
  age=reg.ageRegex(age);
  Iterator<Person> it=list.iterator();
  while(it.hasNext()){
   Person p=(Person)it.next();
   if(age.equals(p.getAge())){
    System.out.println(p.getId()+"#"+"\t\t"+p.getName()+"\t\t"+p.getAge()+"\t\t"+p.getSex()+"\t\t"+p.getTelNum()+"\t\t"+p.getAddress());
   }
  }
 }
 //按性别查询用户信息
 @SuppressWarnings("resource")
 public void searchBySex(){
  TelNoteRegex reg=new TelNoteRegex();
  System.out.println("输入你要查询的性别:");
  Scanner sc=new Scanner(System.in);
  String sex=sc.nextLine();
  sex=reg.sexRegex(sex);
  Iterator<Person> it=list.iterator();
  while(it.hasNext()){
   Person p=(Person)it.next();
   if(sex.equals(p.getSex())){
    System.out.println(p.getId()+"#"+"\t\t"+p.getName()+"\t\t"+p.getAge()+"\t\t"+p.getSex()+"\t\t"+p.getTelNum()+"\t\t"+p.getAddress());
   }
  }
 }
 //按电话号码查询用户信息
 @SuppressWarnings("resource")
 public void searchByTelNum(){
  TelNoteRegex reg=new TelNoteRegex();
  System.out.println("输入你要查询的电话号码:");
  Scanner sc=new Scanner(System.in);
  String telNum=sc.nextLine();
  telNum=reg.telNumRegex(telNum);
  Iterator<Person> it=list.iterator();
  while(it.hasNext()){
   Person p=(Person)it.next();
   if(telNum.equals(p.getTelNum())){
    System.out.println(p.getId()+"#"+"\t\t"+p.getName()+"\t\t"+p.getAge()+"\t\t"+p.getSex()+"\t\t"+p.getTelNum()+"\t\t"+p.getAddress());
   }
  }
 }
 //按地址查询用户信息
 @SuppressWarnings("resource")
 public void searchByAdd(){
  TelNoteRegex reg=new TelNoteRegex();
  System.out.println("输入你要查询的地址:");
  Scanner sc=new Scanner(System.in);
  String address=sc.nextLine();
  address=reg.addressRegex(address);
  Iterator<Person> it=list.iterator();
  while(it.hasNext()){
   Person p=(Person)it.next();
   if(address.equals(p.getAddress())){
    System.out.println(p.getId()+"#"+"\t\t"+p.getName()+"\t\t"+p.getAge()+"\t\t"+p.getSex()+"\t\t"+p.getTelNum()+"\t\t"+p.getAddress());
   }
  }
 }
// //修改指定记录信息
// public void modify(){
//  System.out.println("请输入你要修改的信息:");
//  
// }
 //修改姓名信息
 @SuppressWarnings("resource")
 public void nameModify(){
  TelNoteRegex reg=new TelNoteRegex();
  System.out.println("请输入你要修改的序号:");
  Scanner sc=new Scanner(System.in);
  String num=sc.nextLine();
  int id=Integer.parseInt(num);
  System.out.println("请输入你要修改的姓名:");
  String name=sc.nextLine();
  name=reg.nameRegex(name);
  Iterator<Person> it=list.iterator();
  while(it.hasNext()){
   Person p=(Person)it.next();
   if(id==p.getId()){
    p.setName(name);
    System.out.println(p.getId()+"#"+"\t\t"+p.getName()+"\t\t"+p.getAge()+"\t\t"+p.getSex()+"\t\t"+p.getTelNum()+"\t\t"+p.getAddress());
   }else{
    System.out.println("修改失败,请重试!");
   }
  }

 }
 //修改年龄信息
 @SuppressWarnings("resource")
 public void ageModify(){
  TelNoteRegex reg=new TelNoteRegex();
  System.out.println("请输入你要修改的序号:");
  Scanner sc=new Scanner(System.in);
  String num=sc.nextLine();
  int id=Integer.parseInt(num);
  System.out.println("请输入你要修改的年龄:");
  String age=sc.nextLine();
  age=reg.ageRegex(age);
  Iterator<Person> it=list.iterator();
  while(it.hasNext()){
   Person p=(Person)it.next();
   if(id==p.getId()){
    p.setAge(age);
    System.out.println(p.getId()+"#"+"\t\t"+p.getName()+"\t\t"+p.getAge()+"\t\t"+p.getSex()+"\t\t"+p.getTelNum()+"\t\t"+p.getAddress());
   }else{
    System.out.println("修改失败,请重试!");
   }
  }
 }
 //修改性别信息
 @SuppressWarnings("resource")
 public void sexModify(){
  TelNoteRegex reg=new TelNoteRegex();
  System.out.println("请输入你要修改的序号:");
  Scanner sc=new Scanner(System.in);
  String num=sc.nextLine();
  int id=Integer.parseInt(num);
  System.out.println("请输入你要修改的性别:");
  String sex=sc.nextLine();
  sex=reg.sexRegex(sex);
  Iterator<Person> it=list.iterator();
  while(it.hasNext()){
   Person p=(Person)it.next();
   if(id==p.getId()){
    p.setSex(sex);
    System.out.println(p.getId()+"#"+"\t\t"+p.getName()+"\t\t"+p.getAge()+"\t\t"+p.getSex()+"\t\t"+p.getTelNum()+"\t\t"+p.getAddress());
   }else{
    System.out.println("修改失败,请重试!");
   }
  }
 }
 //修改号码信息
 @SuppressWarnings("resource")
 public void telNumModify(){
  System.out.println("请输入你要修改的序号:");
  Scanner sc=new Scanner(System.in);
  String num=sc.nextLine();
  int id=Integer.parseInt(num);
  System.out.println("请输入你要修改的电话号码:");
  String telNum=sc.nextLine();
  Iterator<Person> it=list.iterator();
  while(it.hasNext()){
   Person p=(Person)it.next();
   if(id==p.getId()){
    p.setTelNum(telNum);
    System.out.println(p.getId()+"#"+"\t\t"+p.getName()+"\t\t"+p.getAge()+"\t\t"+p.getSex()+"\t\t"+p.getTelNum()+"\t\t"+p.getAddress());
   }else{
    System.out.println("修改失败,请重试!");
   }
  }
 }
 //修改地址信息
 @SuppressWarnings("resource")
 public void addressModify(){
  TelNoteRegex reg=new TelNoteRegex();
  System.out.println("请输入你要修改的序号:");
  Scanner sc=new Scanner(System.in);
  String num=sc.nextLine();
  int id=Integer.parseInt(num);
  System.out.println("请输入你要修改的地址:");
  String address=sc.nextLine();
  address=reg.addressRegex(address);
  Iterator<Person> it=list.iterator();
  while(it.hasNext()){
   Person p=(Person)it.next();
   if(id==p.getId()){
    p.setAddress(address);
    System.out.println(p.getId()+"#"+"\t\t"+p.getName()+"\t\t"+p.getAge()+"\t\t"+p.getSex()+"\t\t"+p.getTelNum()+"\t\t"+p.getAddress());
   }else{
    System.out.println("修改失败,请重试!");
   }
  }
 }

 //删除指定用户信息
 @SuppressWarnings("resource")
 public void delete(){
  System.out.println("请输入你要删除的id:");
  Scanner sc=new Scanner(System.in);
  String num=sc.nextLine();
  int id=Integer.parseInt(num);
  Iterator<Person> it=list.iterator();
  while(it.hasNext()){
   Person p=(Person)it.next();
    if(id==p.getId()){
     list.remove(id);
     System.out.println("删除成功");
    }else{
     System.out.println("删除失败");
    }

  }

 }
 //删除全部用户信息
 public void deleteAll(){
  list.clear();
  System.out.println("删除成功");
 }
 //按用户姓名排序信息
 public void orderName(){
  Comparator<Person> comparator=new Comparator<Person>(){
   @Override
   public int compare(Person o1, Person o2) { 
    return o1.getName().compareTo(o2.getName());
   }
  };
  Collections.sort(list,comparator);
  showAll();
 }
 //按用户年龄排序信息
 public void orderAge(){
  Comparator<Person> comparator=new Comparator<Person>(){
   @Override
   public int compare(Person o1, Person o2) { 
    return o1.getAge().compareTo(o2.getAge());
   }
  };
  Collections.sort(list,comparator);
  showAll();
 }
 //按用户性别排序信息
 public void orderSex(){
  Comparator<Person> comparator=new Comparator<Person>(){
   @Override
   public int compare(Person o1, Person o2) { 
    return o1.getSex().compareTo(o2.getSex());
   }
  };
  Collections.sort(list,comparator);
  showAll();
 }
}

总结:这个项目让我很清晰可以明白什么是面向对象,为什么说是java是面向对象的编程语言,程序的代码都是对象在调用,也明白一个项目应该如何分工明确进行书写,功能和视图要分开,每个类都有自己特定的功能,各个类的功能不要相互卸载一起,这样的代码基本是复用不高的,如果分开明确,以后再添加功能模块的时候,只需要增加功能,无需修改之前的代码,很好的体现了开闭原则,对功能开发,对修改内容关闭,这个项目也体现了MVC的设计模式,对我而言,这个项目让我受益匪浅。

相关文章

  • Maven脚手架如何基于jeecg实现快速开发

    Maven脚手架如何基于jeecg实现快速开发

    这篇文章主要介绍了Maven脚手架如何基于jeecg实现快速开发,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • JAVA自定义注解实现接口/ip限流的示例代码

    JAVA自定义注解实现接口/ip限流的示例代码

    本文主要介绍了JAVA自定义注解实现接口/ip限流的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Java实现赫夫曼树(哈夫曼树)的创建

    Java实现赫夫曼树(哈夫曼树)的创建

    给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度(WPL)达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。这篇文章主要就是为大家介绍如何通过Java实现赫夫曼树,需要的朋友可以参考一下
    2021-12-12
  • struts升级到2.5.2遇到的问题及解决方案(推荐)

    struts升级到2.5.2遇到的问题及解决方案(推荐)

    原来的版本是2.3.x,由于安全原因需要升级到2.5.2。但是在升级过程中遇到各种各样的问题,下面小编给大家带来了struts升级到2.5.2遇到的问题及解决方案,需要的朋友参考下吧
    2016-11-11
  • JAVA面试题 start()和run()详解

    JAVA面试题 start()和run()详解

    这篇文章主要介绍了JAVA面试题 启动线程是start()还是run()?为什么?,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • MyBatis传入集合 list 数组 map参数的写法

    MyBatis传入集合 list 数组 map参数的写法

    这篇文章主要介绍了MyBatis传入集合 list 数组 map参数的写法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • Java、C++中子类对父类函数覆盖的可访问性缩小的区别介绍

    Java、C++中子类对父类函数覆盖的可访问性缩小的区别介绍

    这篇文章主要给大家介绍了关于Java、C++中子类对父类函数覆盖的可访问性缩小的区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-01-01
  • Java @SentinelResource全面介绍

    Java @SentinelResource全面介绍

    在实际应用过程中,我们可能需要限流的层面不仅限于接口。可能对于某个方法的调用限流,对于某个外部资源的调用限流等都希望做到控制。对此,我们需要学习使用@SentinelResource注解,灵活的定义控制资源以及如何配置控制策略
    2022-08-08
  • Java并发J.U.C并发容器类list set queue

    Java并发J.U.C并发容器类list set queue

    这篇文章主要为大家介绍了Java并发,J.U.C并发容器类list set queue,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Spring Boot应用启动时自动执行代码的五种方式(常见方法)

    Spring Boot应用启动时自动执行代码的五种方式(常见方法)

    Spring Boot为开发者提供了多种方式在应用启动时执行自定义代码,这些方式包括注解、接口实现和事件监听器,本文我们将探讨一些常见的方法,以及如何利用它们在应用启动时执行初始化逻辑,感兴趣的朋友一起看看吧
    2024-04-04

最新评论