在IDEA中用三个jar包链接MongoDB数据库——实现增删改查
安装Robo 3T连接MongoDB数据库教程:https://blog.csdn.net/baidu_39298625/article/details/98845789
使用Robo 3T操作MongoDB数据库教程:https://blog.csdn.net/baidu_39298625/article/details/99654596
在网上搜的用IDEA链接MongoDB数据库都是通过插件链接的,期初我以为在IDEA中无法实现用JAR包链接MongoDB数据库,我还在CSDN中发了个帖子询问,但是过了十多天也没人回我。。。
额。。。
最后发现JAR包导入方式有问题,而且需要用到三个,当时我就只有一个还是个错的。。。
首先下载三个JAR包,分别是:mongodb-driver-X.X.X.jar,bson-X.X.X.jar,mongodb-driver-core-X.X.X.jar
X.X.X是版本号,尽量保证版本号一致,否则运行会报错,在这我使用的是3.11.0的版本,
下载链接:https://pan.baidu.com/s/1K4lvvEGRISfCSP2NRYySLA
提取码:id93
如果你觉得导JAR包麻烦,你可以创建一个MAVEN项目,在pom.xml文件中添加相关配置,让MAVEN项目自己导包
- <dependencies>
- <dependency>
- <groupId>org.mongodb</groupId>
- <artifactId>mongo-java-driver</artifactId>
- <version>3.11.0</version>
- </dependency>
- </dependencies>
一.给项目导入上面三个JAR包
1.file->Project Structure...
2.选择Modules 再点击右侧的添加按钮
3.选择三个JAR包添加至Modules中,尽量先把JAR拷贝到项目的lib文件夹(自己手动创建)里,再引入,避免以后JAR位置移动,项目找不到JAR包就会报错。
二.建立链接
1.编写MongoDB数据库链接类
- import com.mongodb.MongoClient;
- import com.mongodb.MongoClientURI;
- import com.mongodb.MongoCredential;
- import com.mongodb.ServerAddress;
- import com.mongodb.client.FindIterable;
- import com.mongodb.client.MongoCollection;
- import com.mongodb.client.MongoCursor;
- import com.mongodb.client.MongoDatabase;
- import org.bson.Document;
- import java.util.ArrayList;
- import java.util.List;
- public class MongoDBConnection {
- //不认证直接链接数据库
- public MongoClient getConn(){
- MongoClient mongoClient = new MongoClient("localhost",27017);
- //也可使用MongoClientURI
- // MongoClientURI mongoClientURI = new MongoClientURI("mongodb://localhost:27017");
- // MongoClient mongoClient = new MongoClient(mongoClientURI);
- return mongoClient;
- }
- //通过用户密码认证链接数据库
- public MongoClient getConnByCredit(){
- String name = "test";//用户名
- String dbName = "Test";//数据库名
- char [] pwd = "test".toCharArray();//用户密码(将字符串转换成字符数组)
- List<ServerAddress> addresses = new ArrayList<>();
- //服务器地址:链接地址,端口号
- ServerAddress address = new ServerAddress("localhost",27017);
- addresses.add(address);
- List<MongoCredential> credentials = new ArrayList<>();
- //认证方法需要三个参数,用户名,数据库名,用户密码
- MongoCredential credential = MongoCredential.createScramSha1Credential(name,dbName,pwd);
- credentials.add(credential);
- //创建链接对象
- MongoClient mongoClient = new MongoClient(addresses,credentials);
- return mongoClient;
- }
- //测试是否连接成功
- public static void main(String[] args) {
- MongoDBConnection mongoDBConnection = new MongoDBConnection();
- MongoDatabase mongoDatabase = null;
- MongoClient mongoClient = mongoDBConnection.getConn();
- // MongoClient mongoClient = mongoDBConnection.getConnByCredit();
- //查询所有数据库名称
- MongoIterable<String> dbNameList = mongoClient.listDatabaseNames();
- System.out.println("查询所有数据库名称:");
- for(String dbName : dbNameList)
- System.out.println(dbName);
- //创建数据库对象
- mongoDatabase = mongoClient.getDatabase("Test");
- //查询Test数据库中所有集合名称
- MongoIterable<String> colNameList = mongoDatabase.listCollectionNames();
- System.out.println("查询Test数据库中所有集合名称:");
- for(String colName: colNameList)
- System.out.println(colName);
- //关闭连接
- mongoClient.close();
- }
- }
- }
输出结果:
九月 11, 2019 4:31:16 下午 com.mongodb.diagnostics.logging.JULLogger log
信息: Cluster created with settings {hosts=[localhost:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
查询所有数据库名称:
九月 11, 2019 4:31:16 下午 com.mongodb.diagnostics.logging.JULLogger log
信息: Cluster description not yet available. Waiting for 30000 ms before timing out
九月 11, 2019 4:31:16 下午 com.mongodb.diagnostics.logging.JULLogger log
信息: Opened connection [connectionId{localValue:1, serverValue:23}] to localhost:27017
九月 11, 2019 4:31:16 下午 com.mongodb.diagnostics.logging.JULLogger log
信息: Monitor thread successfully connected to server with description ServerDescription{address=localhost:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[4, 0, 11]}, minWireVersion=0, maxWireVersion=7, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=2393400}
九月 11, 2019 4:31:16 下午 com.mongodb.diagnostics.logging.JULLogger log
信息: Opened connection [connectionId{localValue:2, serverValue:24}] to localhost:27017
Test
admin
config
local
查询Test数据库中所有集合名称:
user
九月 11, 2019 4:31:16 下午 com.mongodb.diagnostics.logging.JULLogger log
信息: Closed connection [connectionId{localValue:2, serverValue:24}] to localhost:27017 because the pool has been closed.
2.遇到的问题
编写MongoDB数据库连接类时,我尝试去用try-catch去捕获连接中可能会出现的异常,但是发现try-catch语句并没有任何作用,即使你真的把端口号或者服务器地址改错,也不会在连接环节抛出任何异常,只有到后边真正用到数据库内容时才会报错。所以在这里也没有再多余使用try-catch语句,等到后边进行具体操作数据的时候再使用。
三.对数据库进行CRUD操作
原始数据:
{
"_id" : ObjectId("5d554f1e5306e8e23cbe5956"),
"user_id" : "1",
"user_name" : "aaa",
"user_pwd" : "aaa"
}
{
"_id" : ObjectId("5d554f1e5306e8e23cbe5959"),
"user_id" : "2",
"user_name" : "bbb",
"user_pwd" : "bbb"
}
{
"_id" : ObjectId("5d554f1e5306e8e23cbe595c"),
"user_id" : "3",
"user_name" : "123",
"user_pwd" : "123"
}
1.集合查询
- //查询指定数据库中所有集合
- public void selectCollection(MongoDatabase database){
- try{
- //查询Test数据库中所有集合名称
- MongoIterable<String> colNameList = database.listCollectionNames();
- for(String colName: colNameList)
- System.out.println(colName);
- System.out.println("[INFO] : Select collection success!");
- }catch(MongoException e){
- e.printStackTrace();
- System.out.println("[ERROR] : Select collection field!");
- }
2.新建集合
- //新建集合
- public void createCollection(MongoDatabase database){
- try{
- //创建新集合
- database.createCollection("testCol");
- System.out.println("[INFO] : Create collection success!");
- }catch(MongoException e){
- e.printStackTrace();
- System.out.println("[ERROR] : Create collection field!");
- }
- }
3.删除集合
- //删除集合
- public void deleteCollection(MongoDatabase database){
- try{
- //删除集合
- MongoCollection mongoCollection = database.getCollection("testCol");
- mongoCollection.drop();
- System.out.println("[INFO] : Drop collection success!");
- }catch(MongoException e){
- e.printStackTrace();
- System.out.println("[ERROR] : Drop collection field!");
- }
- }
4.查询文档数据:
- //查询文档数据
- public void selectData(MongoDatabase database){
- try{
- //获取数据库中的user集合
- MongoCollection<Document> collection = database.getCollection("user");
- //获取user集合中的文档
- FindIterable<Document> iterable = collection.find();
- //通过迭代器遍历找到的文档中的信息
- MongoCursor<Document> iterator = iterable.iterator();
- while(iterator.hasNext()){
- System.out.println(iterator.next().toJson());
- }
- System.out.println("[INFO] : Select data success!");
- }catch(MongoException e){
- e.printStackTrace();
- System.out.println("[ERROR] : Select data field!");
- }
- }
{"_id": {"$oid": "5d554f1e5306e8e23cbe5956"}, "user_id": "1", "user_name": "aaa", "user_pwd": "aaa"}
{"_id": {"$oid": "5d554f1e5306e8e23cbe5959"}, "user_id": "2", "user_name": "bbb", "user_pwd": "bbb"}
{"_id": {"$oid": "5d554f1e5306e8e23cbe595c"}, "user_id": "3", "user_name": "123", "user_pwd": "123"}
[INFO] : Select data success!
5.向集合中插入数据
(单数据插入和多数据插入,可以通过Robo 3T去看数据库的变化,在这单个方法里边不想再写多余的查询语句,下边的修改删除也一样,分开写太麻烦,了解过程就可以了)
- //插入数据
- public void insertData(MongoDatabase database){
- try {
- MongoCollection mongoCollection = database.getCollection("user");
- //一次插入一条数据
- Document document = new Document("user_id","4")
- .append("user_name","test")
- .append("user_pwd","test");
- mongoCollection.insertOne(document);
- //一次插入多条数据
- Document document1 = new Document("user_id","5")
- .append("user_name","test")
- .append("user_pwd","test1");
- Document document2 = new Document("user_id","6")
- .append("user_name","test")
- .append("user_pwd","test2");
- List<Document> documents = new ArrayList<>();
- documents.add(document1);
- documents.add(document2);
- mongoCollection.insertMany(documents);
- System.out.println("[INFO] : Insert data success!");
- }catch(MongoException e){
- e.printStackTrace();
- System.out.println("[ERROR] : Insert data field!");
- }
- }
6.根据条件修改集合中的数据
- //修改数据
- public void updateData(MongoDatabase database){
- try {
- MongoCollection mongoCollection = database.getCollection("user");
- //修改满足条件的第一条数据
- mongoCollection.updateOne(Filters.eq("user_name","test"),new Document("$set",new Document("user_pwd","tttt")));
- //修改满足条件的所有数据
- mongoCollection.updateMany(Filters.eq("user_name","test"),new Document("$set",new Document("user_pwd","tttt")));
- System.out.println("[INFO] : Update data success!");
- }catch(MongoException e){
- e.printStackTrace();
- System.out.println("[ERROR] : Update data field!");
- }
- }
7.根绝条件删除集合中的数据
- //删除数据
- public void deleteData(MongoDatabase database){
- try {
- MongoCollection mongoCollection = database.getCollection("user");
- //删除满足条件的第一条记录
- mongoCollection.deleteOne(Filters.eq("user_name","test"));
- //删除满足条件的所有数据
- mongoCollection.deleteMany(Filters.eq("user_name","test"));
- System.out.println("[INFO] : Delete data success!");
- }catch(MongoException e){
- e.printStackTrace();
- System.out.println("[ERROR] : Delete data field!");
- }
- }
8.全部代码及所有操作运行结果
- package September_9;
- import com.mongodb.MongoClient;
- import com.mongodb.MongoException;
- import com.mongodb.client.*;
- import com.mongodb.client.model.Filters;
- import org.bson.Document;
- import java.util.ArrayList;
- import java.util.List;
- public class DBOperation {
- /**
- * 操作数据库集合:
- * 查询、新建、删除
- * @param database
- */
- //查询指定数据库中所有集合
- public void selectCollection(MongoDatabase database){
- try{
- //查询Test数据库中所有集合名称
- MongoIterable<String> colNameList = database.listCollectionNames();
- for(String colName: colNameList)
- System.out.println(colName);
- System.out.println("[INFO] : Select collection success!");
- }catch(MongoException e){
- e.printStackTrace();
- System.out.println("[ERROR] : Select collection field!");
- }
- }
- //新建集合
- public void createCollection(MongoDatabase database){
- try{
- //创建新集合
- database.createCollection("testCol");
- System.out.println("[INFO] : Create collection success!");
- }catch(MongoException e){
- e.printStackTrace();
- System.out.println("[ERROR] : Create collection field!");
- }
- }
- //删除集合
- public void deleteCollection(MongoDatabase database){
- try{
- //删除集合
- MongoCollection mongoCollection = database.getCollection("testCol");
- mongoCollection.drop();
- System.out.println("[INFO] : Drop collection success!");
- }catch(MongoException e){
- e.printStackTrace();
- System.out.println("[ERROR] : Drop collection field!");
- }
- }
- /**
- * 操作数据库数据:
- * 查询、插入、修改、删除
- * @param database
- */
- //查询文档数据
- public void selectData(MongoDatabase database){
- try{
- //获取数据库中的user集合
- MongoCollection<Document> collection = database.getCollection("user");
- //获取user集合中的文档
- FindIterable<Document> iterable = collection.find();
- //通过迭代器遍历找到的文档中的信息
- MongoCursor<Document> iterator = iterable.iterator();
- while(iterator.hasNext()){
- System.out.println(iterator.next().toJson());
- }
- System.out.println("[INFO] : Select data success!");
- }catch(MongoException e){
- e.printStackTrace();
- System.out.println("[ERROR] : Select data field!");
- }
- }
- //插入数据
- public void insertData(MongoDatabase database){
- try {
- MongoCollection mongoCollection = database.getCollection("user");
- //一次插入一条数据
- Document document = new Document("user_id","4")
- .append("user_name","test")
- .append("user_pwd","test");
- mongoCollection.insertOne(document);
- //一次插入多条数据
- Document document1 = new Document("user_id","5")
- .append("user_name","test")
- .append("user_pwd","test1");
- Document document2 = new Document("user_id","6")
- .append("user_name","test")
- .append("user_pwd","test2");
- List<Document> documents = new ArrayList<>();
- documents.add(document1);
- documents.add(document2);
- mongoCollection.insertMany(documents);
- System.out.println("[INFO] : Insert data success!");
- }catch(MongoException e){
- e.printStackTrace();
- System.out.println("[ERROR] : Insert data field!");
- }
- }
- //修改数据
- public void updateData(MongoDatabase database){
- try {
- MongoCollection mongoCollection = database.getCollection("user");
- //修改满足条件的第一条数据
- mongoCollection.updateOne(Filters.eq("user_name","test"),new Document("$set",new Document("user_pwd","tttt")));
- //修改满足条件的所有数据
- mongoCollection.updateMany(Filters.eq("user_name","test"),new Document("$set",new Document("user_pwd","tttt")));
- System.out.println("[INFO] : Update data success!");
- }catch(MongoException e){
- e.printStackTrace();
- System.out.println("[ERROR] : Update data field!");
- }
- }
- //删除数据
- public void deleteData(MongoDatabase database){
- try {
- MongoCollection mongoCollection = database.getCollection("user");
- //删除满足条件的第一条记录
- mongoCollection.deleteOne(Filters.eq("user_name","test"));
- //删除满足条件的所有数据
- mongoCollection.deleteMany(Filters.eq("user_name","test"));
- System.out.println("[INFO] : Delete data success!");
- }catch(MongoException e){
- e.printStackTrace();
- System.out.println("[ERROR] : Delete data field!");
- }
- }
- public static void main(String[] args) {
- DBOperation dbOperation = new DBOperation();
- MongoDBConnection mongoDBConnection = new MongoDBConnection();
- //新建链接
- MongoClient mongoClient = mongoDBConnection.getConn();
- //新建数据库对象
- MongoDatabase mongoDatabase = mongoClient.getDatabase("Test");
- //查询指定数据库中的所有集合
- System.out.println("原始集合:");
- dbOperation.selectCollection(mongoDatabase);
- //创建新集合
- dbOperation.createCollection(mongoDatabase);
- System.out.println("新建集合后,再次查询数据库中的所有集合:");
- dbOperation.selectCollection(mongoDatabase);
- //删除集合
- dbOperation.deleteCollection(mongoDatabase);
- System.out.println("删除集合后,再次查询数据库中的所有集合:");
- dbOperation.selectCollection(mongoDatabase);
- //查询指定集合中的所有数据
- System.out.println("原始数据:");
- dbOperation.selectData(mongoDatabase);
- //向指定集合中插入数据
- dbOperation.insertData(mongoDatabase);
- System.out.println("插入数据后:");
- dbOperation.selectData(mongoDatabase);
- //根据条件修改集合中的数据
- dbOperation.updateData(mongoDatabase);
- System.out.println("修改数据后:");
- dbOperation.selectData(mongoDatabase);
- //根据条件删除集合中的数据
- dbOperation.deleteData(mongoDatabase);
- System.out.println("删除数据后:");
- dbOperation.selectData(mongoDatabase);
- //关闭连接
- mongoClient.close();
- }
- }
运行结果:
原始集合:
user
[INFO] : Select collection success!
[INFO] : Create collection success!
新建集合后,再次查询数据库中的所有集合:
testCol
user
[INFO] : Select collection success!
[INFO] : Drop collection success!
删除集合后,再次查询数据库中的所有集合:
user
[INFO] : Select collection success!
原始数据:
{"_id": {"$oid": "5d554f1e5306e8e23cbe5956"}, "user_id": "1", "user_name": "aaa", "user_pwd": "aaa"}
{"_id": {"$oid": "5d554f1e5306e8e23cbe5959"}, "user_id": "2", "user_name": "bbb", "user_pwd": "bbb"}
{"_id": {"$oid": "5d554f1e5306e8e23cbe595c"}, "user_id": "3", "user_name": "123", "user_pwd": "123"}
[INFO] : Select data success!
[INFO] : Insert data success!
插入数据后:
{"_id": {"$oid": "5d554f1e5306e8e23cbe5956"}, "user_id": "1", "user_name": "aaa", "user_pwd": "aaa"}
{"_id": {"$oid": "5d554f1e5306e8e23cbe5959"}, "user_id": "2", "user_name": "bbb", "user_pwd": "bbb"}
{"_id": {"$oid": "5d554f1e5306e8e23cbe595c"}, "user_id": "3", "user_name": "123", "user_pwd": "123"}
{"_id": {"$oid": "5d79d9f21781915b8368c25f"}, "user_id": "4", "user_name": "test", "user_pwd": "test"}
{"_id": {"$oid": "5d79d9f21781915b8368c260"}, "user_id": "5", "user_name": "test", "user_pwd": "test1"}
{"_id": {"$oid": "5d79d9f21781915b8368c261"}, "user_id": "6", "user_name": "test", "user_pwd": "test2"}
[INFO] : Select data success!
[INFO] : Update data success!
修改数据后:
{"_id": {"$oid": "5d554f1e5306e8e23cbe5956"}, "user_id": "1", "user_name": "aaa", "user_pwd": "aaa"}
{"_id": {"$oid": "5d554f1e5306e8e23cbe5959"}, "user_id": "2", "user_name": "bbb", "user_pwd": "bbb"}
{"_id": {"$oid": "5d554f1e5306e8e23cbe595c"}, "user_id": "3", "user_name": "123", "user_pwd": "123"}
{"_id": {"$oid": "5d79d9f21781915b8368c25f"}, "user_id": "4", "user_name": "test", "user_pwd": "tttt"}
{"_id": {"$oid": "5d79d9f21781915b8368c260"}, "user_id": "5", "user_name": "test", "user_pwd": "tttt"}
{"_id": {"$oid": "5d79d9f21781915b8368c261"}, "user_id": "6", "user_name": "test", "user_pwd": "tttt"}
[INFO] : Select data success!
[INFO] : Delete data success!
删除数据后:
{"_id": {"$oid": "5d554f1e5306e8e23cbe5956"}, "user_id": "1", "user_name": "aaa", "user_pwd": "aaa"}
{"_id": {"$oid": "5d554f1e5306e8e23cbe5959"}, "user_id": "2", "user_name": "bbb", "user_pwd": "bbb"}
{"_id": {"$oid": "5d554f1e5306e8e23cbe595c"}, "user_id": "3", "user_name": "123", "user_pwd": "123"}
[INFO] : Select data success!
在IDEA中用三个jar包链接MongoDB数据库——实现增删改查的更多相关文章
- Java通过JDBC连接数据库的三种方式!!!并对数据库实现增删改查
前言 java连接数据库完整流程为: 1,获得驱动(driver),数据库连接(url),用户名(username),密码(password)基本信息的三种方式. 2,通过获得的信息完成JDBC实现连 ...
- python链接oracle数据库以及数据库的增删改查实例
初次使用python链接oracle,所以想记录下我遇到的问题,便于向我这样初次尝试的朋友能够快速的配置好环境进入开发环节. 1.首先,python链接oracle数据库需要配置好环境. 我的相关环境 ...
- JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(三):两个Viewmodel搞定增删改查
前言:之前博主分享过knockoutJS和BootstrapTable的一些基础用法,都是写基础应用,根本谈不上封装,仅仅是避免了html控件的取值和赋值,远远没有将MVVM的精妙展现出来.最近项目打 ...
- MyBatis学习(三)MyBatis基于动态代理方式的增删改查
1.前言 上一期讲到MyBatis-Statement版本的增删改查.可以发现.这种代码写下来冗余的地方特别多.写一套没啥.如果涉及到多表多查询的时候就容易出现问题.故.官方推荐了一种方法.即MyBa ...
- AD 域服务简介(三)- Java 对 AD 域用户的增删改查操作
博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 Java 获取 AD 域用户, ...
- 1019 JDBC链接数据库进行修删改查
package com.liu.test01; import java.sql.Statement; import java.sql.Connection; import java.sql.Drive ...
- JDBC快速入门(附Java通过jar包连接MySQL数据库)
•通过jar包连接mysql数据库 •下载jar包 Java 连接 MySQL 需要驱动包,官网下载地址为MySQL驱动包官网下载,选择适合的jar包版本进行安装 (记得安装的地址,下面导入包时会用到 ...
- 在C#的控制台应用中使用Dapper链接MySQL并执行一些增删改查
一.首先先创建一个C#的控制台应用 二.然后添加上必要的命名空间 using System;using System.Collections.Generic;using MySql.Data.MySq ...
- nodejs链接mongodb数据库
nodeJs链接mongodb数据库有两种方式,第一种是利用官方自己开发的npm包mongodb链接,第二种是利用第三方npm包mongoose链接:这里如果是window操作系统,建议用mongoo ...
随机推荐
- 解决UE4缓存使C盘膨胀的问题
使用UE4的时候会发现C盘越来越小了,那是因为UE4引擎的缓存文件默认保存在C盘的缘故. 概述 一.出现的问题:UE4的缓存文件会导致C盘膨胀. 二.解决的方式:请严格按照下列步骤来执行.1. 更改U ...
- 关于ajax已经成功了,却报404的错误的问题
经分析是请求没有返回状态码,这是因为我用的是SpringMVC框架,前后端使用JSON传递数据,因为返回的是对象,而忘记了添加 @ResponseBody 注解,所以 Spring对我的返回值进行了映 ...
- ElasticSearch设置用户名密码访问
版本号:7.3.1 1.需要在配置文件中开启x-pack验证, 修改config目录下面的elasticsearch.yml文件,在里面添加如下内容,并重启. xpack.security.enabl ...
- sql优化的几种方式
一.为什么要对SQL进行优化 我们开发项目上线初期,由于业务数据量相对较少,一些SQL的执行效率对程序运行效率的影响不太明显,而开发和运维人员也无法判断SQL对程序的运行效率有多大,故很少针对SQL进 ...
- WebService的开发手段
一.WebService的开发手段 目前有关webService的开发手段有2种 1.JDK开发(jdk必须是1.6及以上版本,因为jdk是在1.6版本中引入并支持webservice开发的); 2. ...
- 「每日一题」有人上次在dy面试,面试官问我:vue数据绑定的实现原理。你说我该如何回答?
关注「松宝写代码」,精选好文,每日一题 时间永远是自己的 每分每秒也都是为自己的将来铺垫和增值 作者:saucxs | songEagle 来源:原创 一.前言 文章首发在「松宝写代码」 2020. ...
- Head First 设计模式 —— 03. 装饰器 (Decorator) 模式
思考题 有如下类设计: 如果牛奶的价钱上扬,怎么办?新增一种焦糖调料风味时,怎么办? 造成这种维护上的困难,违反了我们之前提过的哪种设计原则? P82 取出并封装变化的部分,让其他部分不收影响 多用组 ...
- Java中常用修饰符浅谈
一.public.protected.default和private修饰符的作用域 public:在java程序中,如果将属性和方法定义为 public 类型,那么此属性和方法所在的类和及其子类,同一 ...
- Kafka 探险 - 架构简介
Kafka 探险 - 架构简介 这个 Kafka 的专题,我会从系统整体架构,设计到代码落地.和大家一起杠源码,学技巧,涨知识.希望大家持续关注一起见证成长! 我相信:技术的道路,十年如一日!十年磨一 ...
- linux下的文件类型
在Linux中一切设备皆文件,首先来看一下Linux下的文件都有哪些分类,也就是文件类型 文件类型:普通文件(包括shell脚本,文档,音频,视频).目录文件.设备文件(又细分为字符设备文件和块设备文 ...