如何用java编程实现将数据从Access数据库导入到Oracle, 求java详细代码和解释!

如何用java编程实现将数据从Access数据库导入到Oracle, 求java详细代码和解释!

1个回答

package com.yinhai.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.StringTokenizer;

public class AccessToOracleSql {

// Access的数据源配置 
public static String urlAccess = "jdbc:odbc:jgyl"; 
public static String usrAccess = "admin"; 
public static String pwdAccess = "xxxxx"; 

// Oracle的配置 
public static String urlOracle = "jdbc:oracle:thin:@10.62.xxx.xxx:1521:xxxx2"; 
public static String usrOracle = "chenzw"; 
public static String pwdOracle = "chenzw"; 

// 常量 
public static final int CONNECTION_ORACLE = 1; 
public static final int CONNECTION_ACCESS = 0; 

// access中需要迁移的表名 

 public static String accessTables = "00C'C00^01C'C01^1997C'JF1997^1998C'JF1998^1999C'JF1999^2000C'JF2000^" + 
        "2001年表C'JF2001^2002缴费表'JF2002^2003缴费表'JF2003^2004缴费表'JF2004^2005缴费表'JF2005^2006缴费表'JF2006^" + 
        "2007缴费表'JF2007^2008缴费表'JF2008^2009缴费表'JF2009^2009缴费表(备份)'JF2009BAK^2010缴费表'JF2010^" + 
        "2011缴费表'JF2011^2012缴费表'JF2012^97C'C97^98C'C98^99C'C99^" + 
        "单位表'DANWEIBIAO^缴费转移记录'JFZYJL^失业缴费'SYJF^养老缴费表'YLJF^员工名单'YGMD^粘贴错误'ZTCW^转入人员历史缴费'ZRRYLSJF"; 


// typeAccessToOracle   
public static String typeAccessToOracle = "COUNTER'NUMBER(10)^VARCHAR'VARCHAR2(300)^DOUBLE'NUMBER(10,4)^" 
        + "BIT'NUMBER(4)^REAL'NUMBER(10,4)^INTEGER'NUMBER(10,4)^DATETIME'VARCHAR2(20)"; 

public static Map oracleTableFromAccess; 
// 加载驱动 
static { 
    oracleTableFromAccess = AccessToOracleSql.transStringToMap(accessTables); 
    String driver_Access = "sun.jdbc.odbc.JdbcOdbcDriver"; 
    String driver_Oracle = "oracle.jdbc.driver.OracleDriver"; 
    try { 
        Class.forName(driver_Access); 
        Class.forName(driver_Oracle); 
    } catch (Exception e) { 
        e.printStackTrace(); 
    } 
} 

// 获得连接 
public static Connection getConnection(int connectType) { 
    Connection con = null; 
    try { 
        switch (connectType) { 
        case 0: 
            con = DriverManager.getConnection(urlAccess, usrAccess, 
                    pwdAccess); 
            break; 
        case 1: 
            con = DriverManager.getConnection(urlOracle, usrOracle, 
                    pwdOracle); 
            break; 
        } 
    } catch (Exception e) { 
        e.printStackTrace(); 
    } 
    return con; 
} 

// 得到Oracle的建表语句 
public static Map getOracleSql(ResultSet resultSet, String TableName) { 
    Map resultMap = new HashMap(); 
    Map transColNameMap = new HashMap(); 
    try { 
        Map map = transStringToMap(typeAccessToOracle); 
        StringBuffer sb = new StringBuffer(); 
        ResultSetMetaData meta = resultSet.getMetaData(); 
        sb.append("create table " + TableName + "(\n"); 
        int cols = meta.getColumnCount(); 
        while (resultSet.next()) { 
            for (int i = 1; i <= cols; i++) { 
                String oracleColName = Pinyin4j.getPinYin(alterNameAddQ(meta.getColumnName(i))).replace("(", "").replace(")", "").replace("%", ""); 
                sb.append(" " + oracleColName + " "); 
                sb.append(transType(meta.getColumnTypeName(i))); 
                transColNameMap.put(meta.getColumnName(i),oracleColName); 
                sb.append(i == cols ? "\n" : ",\n"); 
            } 
            break; 
        } 
        sb.append(")"); 
        resultMap.put("oracleSql", sb.toString()); 
        resultMap.put("transColNameMap", transColNameMap); 
        return resultMap; 
    } catch (Exception e) { 
        e.printStackTrace(); 
    } 
    return null; 
} 

// 如果第一个字母为数字的话,则在前面加Q 
public static String alterNameAddQ(String tableName) { 
    String beginChar = tableName.substring(0, 1); 
    if (beginChar.matches("[0-9]")) { 
        return "Q" + tableName; 
    } 
    return tableName; 
} 

// 关闭连接 
public static void close(ResultSet rs, Statement stmt, Connection con) { 
    try { 
        if (rs != null) 
            rs.close(); 
    } catch (Exception ex) { 
        ex.printStackTrace(); 
    } 
    try { 
        if (stmt != null) 
            stmt.close(); 
    } catch (Exception ex) { 
        ex.printStackTrace(); 
    } 
    try { 
        if (con != null) 
            con.close(); 
    } catch (Exception ex) { 
        ex.printStackTrace(); 
    } 
} 

// 转码 
public static String transType(String type) { 
    return (String) transStringToMap(typeAccessToOracle).get(type); 
} 

/**
 * 方法名称:transStringToMap 传入参数:mapString 形如 username'chenziwen^password'1234
 * 返回值:Map
 */ 
public static Map transStringToMap(String mapString) { 
    Map map = new HashMap(); 
    java.util.StringTokenizer items; 
    for (StringTokenizer entrys = new StringTokenizer(mapString, "^"); entrys 
            .hasMoreTokens(); map.put(items.nextToken(), items 
            .hasMoreTokens() ? ((Object) (items.nextToken())) : null)) 
        items = new StringTokenizer(entrys.nextToken(), "'"); 
    return map; 
} 

// 主方法 
public static void main(String[] args) throws Exception { 
    java.util.Map.Entry entry; 
    for(Iterator iterator = oracleTableFromAccess.entrySet().iterator(); iterator.hasNext();){ 
        entry = (java.util.Map.Entry)iterator.next(); 
        String accessTableName = (String)entry.getKey(); 
        String oracleTableName = (String)entry.getValue(); 
        Connection connAccess = getConnection(AccessToOracleSql.CONNECTION_ACCESS); 
        Connection connOracle = getConnection(AccessToOracleSql.CONNECTION_ORACLE); 
        Statement stAccess = connAccess.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); 
        ResultSet rsAccess = null; 
        PreparedStatement psOracle = null; 
        String createTableSql = "select * from " + accessTableName; 
        //TODO 删除 
        System.out.println("查询Access表:"+createTableSql); 
        String dropTableSql = "drop table "+ oracleTableName; 
        rsAccess = stAccess.executeQuery(createTableSql); 
        Map map = getOracleSql(rsAccess, oracleTableName); 
        //TODO 删除 
        System.out.println("删除Oracle的表:"+dropTableSql); 
        psOracle = connOracle.prepareStatement(dropTableSql); 
        try { 
            psOracle.execute(); 
        } catch (Exception e) { 
            System.out.println("异常错误:"+e.getMessage()); 
        } 
        psOracle = connOracle.prepareStatement((String) map.get("oracleSql")); 
        psOracle.execute(); 
        Map transColNameMap = (Map)map.get("transColNameMap"); 
        // 循环结果集,将数据插入到Oracle中 
        ResultSetMetaData meta = rsAccess.getMetaData(); 
        int cols = meta.getColumnCount(); 
        while (rsAccess.next()) { 
            StringBuffer sbBeginHalf = new StringBuffer(); 
            StringBuffer sbEndHalf = new StringBuffer(); 
            sbBeginHalf.append("insert into " + oracleTableName + "("); 
            for (int j = 1; j <= cols; j++) { 
                sbBeginHalf.append((String)transColNameMap.get(meta.getColumnName(j))); 
                sbBeginHalf.append(j<cols?",":""); 
                if(("VARCHAR".equals(meta.getColumnTypeName(j))||"DATETIME".equals(meta.getColumnTypeName(j)))&&null!=rsAccess.getString(j)){ 
                    sbEndHalf.append("'"+rsAccess.getString(j)+"'"); 
                }else{ 
                    sbEndHalf.append(rsAccess.getString(j)); 
                }  www.2cto.com
                sbEndHalf.append(j<cols?",":""); 
            } 
            sbBeginHalf.append(") values ("); 
            sbEndHalf.append(")"); 
            String insertSql = sbBeginHalf.append(sbEndHalf.toString()).toString(); 
            psOracle = connOracle.prepareStatement(insertSql); 
            psOracle.execute(); 
        } 
        //TODO 删除 
        System.out.println("插入oracle的表数据:"+oracleTableName); 
        // 关闭连接 
        close(rsAccess, stAccess, connAccess); 
        close(null, psOracle, connOracle); 
    } 
} 

}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java如何查询access的数据插入到oracle中
两个数据库一个access,一个为oracle,分别在两台机器上,如何用java将access的数据 插入到oracle中?
c# 代码怎么实现access数据库文件导入oracle数据库
怎么用c#代码将.accdb或者.mdb数据库导入Oracle数据库?数据量很大,不能读一条记录插入一条记录
vc++6.0中更换数据库oracle9i为access 2007数据库。
在vc++6.0编的程序中使用的是oracle 9i数据库,如果换成access2007数据库需要更换哪些代码啊?
access数据库收缩问题
用cdaodatabase操作access数据库,定时清理数据库中数据。求问清理数据后如何编程收缩数据库,减小数据库体积。
求ACCESS VBA数据库编程代码:在窗体中进入某个字段
求ACCESS VBA数据库编程代码:ACCESS (OFFICE 365家庭版) 在窗体中进入某个字段,出现一个查询向导,我要编写一些代码使查询向导的第二列按照某个值筛选。
Java如何远程连接access数据库?
Java如何远程连接access数据库? 不能使用共享文件夹的方式,也不能用磁盘映射的方式,也不能给客户机安装rmi_jdbc.jar的方式 以上的方式,客户都不会让用 还有什么其他的方式可以连接access吗,而且连接方式要相对安全点
如何将access数据库中的某项数据导入到excel
如何将access数据库中的某项数据导入到指定excel的工作薄中
java操作其它机器共享的access数据库
做插入操作的时候报错:java.sql.SQLException [microsoft] [ODBC Microsoft Access Driver] 操作必须使用一个可更新的查询
java 连接access2007数据库问题!
求各位大神解惑! 我是连接一个放在公共盘的数据库。这样做的应用谁都能用。 public class ConnectAccess { private static String strurl; public void setStrurl(String strurl,int pwd){ this.strurl="jdbc:odbc:driver={Microsoft Access Driver (*.accdb)};DBQ="+strurl+";pwd="+pwd; } public ConnectAccess(String strurl,String pwd){//构造方法 ConnectAccess.strurl="jdbc:odbc:driver={Microsoft Access Driver (*.accdb)};DBQ="+strurl+";pwd="+pwd; //System.out.println(ConnectAccess.strurl); //strurl = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=D:\\ScannerList.accdb;pwd=3759"; } public ConnectAccess(){} public static void main(String[] args){ ConnectAccess ca =new ConnectAccess("\\\\huafile01\\WH\\20_REC\\02.RMA & MRO\\database\\ScannerList.accdb","3759"); ca.tryConnect(); } public boolean tryConnect(){ boolean falg=false; //String sql="select * From USERinfo where [USER]=\""+user+"\"" ; String sql="select * From PART_MPN "; Connection conn = null; Statement stmt = null; ResultSet rs = null; try { Class cc=Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); System.out.println("驱动: "+cc); System.out.println("strurl: "+strurl); conn = DriverManager.getConnection(strurl);//此句报错空指针! System.out.println("conn: "+conn); stmt = conn.createStatement(); System.out.println("stmt: "+stmt); rs = stmt.executeQuery(sql); System.out.println("sql: "+sql); System.out.println("rs: "+rs); falg=rs.next(); }catch (Exception e) { System.err.println(e); }finally{ try { rs.close(); } catch (Exception ex) { } try { stmt.close(); } catch (Exception ex) { } try { conn.close(); } catch (Exception ex) { } } return falg; } 这是一个测试连接的 之前用一个本地盘的jdk1.6 都一切正常。后来换了个C 盘的jdk 1.8 之后就在红色部分报错空指针。用本地盘的jdk 做出来的应用 打包成jre 之后一直无法加载驱动。就是Class.forName没结果。网上找了好多没有能解决的。 换了驱动索性把工作路径也设置在了公共盘。但是这样就是在连接数据库Connection时总是出错!求解惑。 页面设计都设计好了。本来用的D盘的jdk1.6 一切无问题都测试好了。 结果用myeclipse 导出成jre 就是无法加载驱动。 用电脑自带的c盘的jdk1.8 就是无法连接数据库。 说一下我这里的开发环境; 1公司的电脑。我做个应用要给很多电脑用。公司电脑有公共盘。单个电脑无权限连接别的电脑。所有只有借助公共盘放数据库 2 个人电脑的C盘个人无权限增删改。只可读。公司装的系统每台机都有jdk。 就在C:\Program Files\Java\jre1.8.0_40 。 3 我下载下来了一个JDK 但是无法安装到公共盘去。 没有权限。 到底怎样才能正常加载驱动连接数据库工作啊 !
java 连接 access数据库问题
方法如下: public List<Map<String, String>> queryProject(String path) throws SQLException { //加载驱动 try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch (ClassNotFoundException e) { e.printStackTrace(); return null; } String dbUrl = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + path; Connection conn = DriverManager.getConnection(dbUrl); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("select InstanceID, name from Project"); List<Map<String, String>> results = new ArrayList<Map<String,String>>(); while(rs.next()){ Map<String, String> rst = new HashMap<String, String>(); rst.put("InstanceID", rs.getString(1)); rst.put("name", rs.getString(2)); results.add(rst); //System.out.println(rs.getString(1)+"-->"+rs.getString(2)); } rs.close(); stmt.close(); conn.close(); return results; } 断点调试,发现在执行Connection conn = DriverManager.getConnection(dbUrl);代码时,报如下错误: java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 超出系统资源。 at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957) at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114) at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3073) at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323) at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174) at java.sql.DriverManager.getConnection(DriverManager.java:582) at java.sql.DriverManager.getConnection(DriverManager.java:207) 这个问题该如何解决呢?
求ACCESS VBA数据库编程代码,在窗体中进入某个字段,出现一个查询向导
求ACCESS VBA数据库编程代码:ACCESS (OFFICE 365家庭版) 在窗体中进入某个字段,出现一个查询向导,我要编写一些代码使查询向导的第二列按照某个值筛选。
关于将access数据库改为mysql数据库
我有一个基于Java用NetBeans平台写的图书管理系统,连接的是access数据库,哪位大神能帮我改为连接mysql数据库。感激不尽。
sql server转换成access数据库
如果我有一个系统是java语言和sql server数据库,想转换成access数据库,怎么办
请问ACCESS数据库怎么把一个数据库中更新的文件添加到另外一个数据库中
两个access数据库A.mdb和B.mdb,里面分别有几个数据表分别为a,b,c, B数据库中的a,b,c中仅有一个字段与A不同且需要随时更新。 其中A数据库在不断添加新的内容,怎么把新加入的数据添加到B数据库对应的数据表中?
java odbc access 连接数据库失败
public class ConnectionPool { private String jdbcDriver = "sun.jdbc.odbc.JdbcOdbcDriver"; private String dbPath = ""; private String dbUrl ="jdbc:odbc:driver={Microsoft Access Driver (*.mdb, *.accdb)};" + "DBQ=D:\\Workspaces\\MyEclipse 10\\test\\src\\org\\wuhang\\app\\db\\db1.mdb"; private String dbUsername = ""; private String dbPassword = ""; private String testTable = "cate"; private int initialConnections = 5; private int incrementalConnections = 5; private int maxConnections = 10; private Vector connections = null; 出现了 Failed connecting to the Database!
用insert语句从matlab导出数据到access数据库为什么出错呢
![图片说明](https://img-ask.csdn.net/upload/201503/29/1427606794_961108.png) ![图片说明](https://img-ask.csdn.net/upload/201503/29/1427606803_690080.png) ![图片说明](https://img-ask.csdn.net/upload/201503/29/1427606765_23738.png) 数据连接是对的 就是想用insert插入两个数字到表里的第一行里面(图1) 对应Iset和t的值 但是一直显示错误 如上 请教一下到底是哪里错了呢...没怎么学过数据库 不太清楚它说的主键不能为空是什么意思 也不清楚insert语句哪里出错了...是在网上看的教程. 是因为我自己建的那个表的格式不对么? 谢谢了..!
Excel删除表头导入Access
![图片说明](https://img-ask.csdn.net/upload/201501/04/1420331320_301154.jpg) 如图所示,我在把Excel数据导入到ACCESS数据库时,怎么把前3行的表头删除然后从第四行数据导入Excel
Java web开发中要是用jdbc连接access数据库,连接url怎么写相对位置
Java web开发中要是用jdbc连接access数据库,连接url怎么写相对位置,注意这里是jdbc方法连接 而不是jdbc-odbc 例如access数据库就在项目中(project文件夹下) 代码为: try { // 加载jdbc - odbc驱动 Class.forName("com.hxtt.sql.access.AccessDriver"); // 根据url创建连接实例 aConnection = DriverManager.getConnection("jdbc:Access://./BookStore.mdb"); // 创建statement实例 aStatement = aConnection.createStatement(); } catch (ClassNotFoundException e) { System.out.println(e); } catch (SQLException e) { System.out.println(e); } 我在做java的时候一直这样用就没问题 当时access数据库也是在项目文件夹下面,在 java web中为什么就会出错啊
Java怎么把 连接access数据库的路径改成相对路径
import java.awt.event.*; import javax.swing.*; import java.awt.*; import java.awt.Container; import java.util.*; import java.sql.*; class BookBrower implements ActionListener { JFrame f; Container cp; JPanel jpS,jpanelWest; JButton jbt1,jbt2;//按钮,查询、取消、修改 JLabel label,L; //标签 //定义文本框 JTable table;//用来接收数据库中返回的信息 Object columnName[]={"图书名","图书号","单价","作者","出版社","入库时间"}; Object ar[][] =new Object[80][6]; String sno; String count="xx"; BookBrower() { f=new JFrame(); cp=f.getContentPane(); // 初始化面板、按钮、标签、文本框 jpS=new JPanel(); jpanelWest=new JPanel(); //------------------------------------------------ jbt1=new JButton("确定"); jbt2=new JButton("返回"); //------------------------------------------------ label=new JLabel("<html><font color=#CC00FF size='4'>图书概览</font>",SwingConstants.CENTER); label.setForeground(Color.blue); L=new JLabel("书库现在共有图书"+count+"本"); //------------------------------------------------ table=new JTable(ar,columnName);//ar存放表中的数据,columnname表示列名 JScrollPane scrollpane = new JScrollPane(table); //------------------------------------------------ //布局,添加控件 jpS.add(jbt1); jpS.add(jbt2); JPanel jpanel=new JPanel(); jpanel.add(label); JPanel pp4=new JPanel(); JPanel jpE=new JPanel(); cp.add(jpanel,"North"); JPanel jp=new JPanel(); //jp.add(scrollpane); JPanel p=new JPanel();//用来放两个表 p.setLayout(new BorderLayout()); p.add(L,"North"); p.add(scrollpane); cp.add(pp4,"West"); cp.add(p,"Center"); cp.add(jpS,"South"); cp.add(jpE,"East"); //------------------------------------------------ Toolkit kit=Toolkit.getDefaultToolkit(); Dimension screen=kit.getScreenSize(); int x=screen.width; /*取得显示器窗口的宽度*/ int y=screen.height; /*取得显示器窗口的高度*/ f.setSize(1200,450); int xcenter=(x-1200)/2; int ycenter=(y-350)/2; f.setLocation(xcenter,ycenter);/*显示在窗口中央*/ f.setVisible(true); //------------------------------------------------- jbt1.addActionListener(this);//注册监听器 jbt2.addActionListener(this); /* f.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } } );*/ } //------------------------------------------------ int i=0; public void showRecord() { while(i>=0) { ar[i][0]=""; ar[i][1]=""; ar[i][2]=""; ar[i][3]=""; ar[i][4]=""; ar[i][5]=""; i--; } i=0; try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");} try{ String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=g:/111/222/aaa.accdb";//直接使用当前类目录下的数据库文件 Connection con=DriverManager.getConnection(url); String s="select * from book "; Statement sql=con.createStatement(); ResultSet rs=sql.executeQuery(s); while(rs.next()) { String bname=rs.getString(1); String bno=rs.getString(2); String price=rs.getString(3); String writer=rs.getString(4); String publish=rs.getString(5); String indate=rs.getString(6); ar[i][0]=bname; ar[i][1]=bno; ar[i][2]=price; ar[i][3]=writer; ar[i][4]=publish; ar[i][5]=indate; i++; } count=""+i+""; L.setText("书库现在共有图书"+count+"本"); f.repaint(); con.close(); }catch(SQLException g) { System.out.println("E Code"+g.getErrorCode()); System.out.println("E M"+g.getMessage()); } } public void actionPerformed(ActionEvent e) { String cmd=e.getActionCommand(); if(cmd.equals("确定")) { f.hide(); } if(cmd.equals("返回")) f.hide(); } public static void main(String []arg){ BookBrower a=new BookBrower(); a.showRecord(); } }
相见恨晚的超实用网站
搞学习 知乎:www.zhihu.com 简答题:http://www.jiandati.com/ 网易公开课:https://open.163.com/ted/ 网易云课堂:https://study.163.com/ 中国大学MOOC:www.icourse163.org 网易云课堂:study.163.com 哔哩哔哩弹幕网:www.bilibili.com 我要自学网:www.51zxw
花了20分钟,给女朋友们写了一个web版群聊程序
参考博客 [1]https://www.byteslounge.com/tutorials/java-ee-html5-websocket-example
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
引言 本文主要是记录一下面试字节跳动的经历。 三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
Python 基础(一):入门必备知识
目录1 标识符2 关键字3 引号4 编码5 输入输出6 缩进7 多行8 注释9 数据类型10 运算符10.1 常用运算符10.2 运算符优先级 1 标识符 标识符是编程时使用的名字,用于给变量、函数、语句块等命名,Python 中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。 以下划线开头的标识符有特殊含义,单下划线开头的标识符,如:_xxx ,表示不能直接访问的类属性,需通过类提供
这30个CSS选择器,你必须熟记(上)
关注前端达人,与你共同进步CSS的魅力就是让我们前端工程师像设计师一样进行网页的设计,我们能轻而易举的改变颜色、布局、制作出漂亮的影音效果等等,我们只需要改几行代码,不需...
国产开源API网关项目进入Apache孵化器:APISIX
点击蓝色“程序猿DD”关注我回复“资源”获取独家整理的学习资料!近日,又有一个开源项目加入了这个Java开源界大名鼎鼎的Apache基金会,开始进行孵化器。项目名称:AP...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
编写Spring MVC控制器的14个技巧
本期目录 1.使用@Controller构造型 2.实现控制器接口 3.扩展AbstractController类 4.为处理程序方法指定URL映射 5.为处理程序方法指定HTTP请求方法 6.将请求参数映射到处理程序方法 7.返回模型和视图 8.将对象放入模型 9.处理程序方法中的重定向 10.处理表格提交和表格验证 11.处理文件上传 12.在控制器中自动装配业务类 ...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
求小姐姐抠图竟遭白眼?痛定思痛,我决定用 Python 自力更生!
点击蓝色“Python空间”关注我丫加个“星标”,每天一起快乐的学习大家好,我是 Rocky0429,一个刚恰完午饭,正在用刷网页浪费生命的蒟蒻...一堆堆无聊八卦信息的网页内容慢慢使我的双眼模糊,一个哈欠打出了三斤老泪,就在此时我看到了一张图片:是谁!是谁把我女朋友的照片放出来的!awsl!太好看了叭...等等,那个背景上的一堆鬼画符是什么鬼?!真是看不下去!叔叔婶婶能忍,隔壁老王的三姨妈的四表...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
相关热词 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片 c# 图片颜色调整 最快 c#多张图片上传 c#密封类与密封方法
立即提问