C#使用Oracle.ManagedDataAccess.dll

1、添加引用

在网上下载一个Oracle.ManagedDataAccess.dll,引用即可,操作不受操作系统的位数限制,服务器也不Oracle客户端;

2、web.config字串

    <appSettings>
    <add key="hrp" value="Data Source= (DESCRIPTION =(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.100.153)(PORT = 1521)))(CONNECT_DATA = (SERVICE_NAME = orcl)));User ID=jdkq2012to2017;Password=1;Min Pool Size=0;Max Pool Size=10;Connection Timeout=600;Incr Pool Size=5;Decr Pool Size=2;" />
    </appSettings>

3、程序中添加

using Oracle.ManagedDataAccess.Client;

4、使用如下类

using Oracle.ManagedDataAccess.Client;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;


    /// <summary>
    /// Oracle数据库操作类
    /// </summary>
public static class OracleHelper
{

    public static string connstr = System.Configuration.ConfigurationManager.AppSettings["hrp"];
    public static string connectionZCString = System.Configuration.ConfigurationManager.AppSettings["zc"].ToString();
    //public static string connectionRJSSString = System.Configuration.ConfigurationManager.AppSettings["HIS3"].ToString();

    public static OracleConnection connF(string connectionString)
    {
        switch (connectionString)
        {
            //case "HIS4":
            //    connectionString = connectionHIS4String;
            //    break;
            case "zc":
                connectionString = connectionZCString;
                break;
            default:
                connectionString = connstr;
                break;
        }

        OracleConnection connection = new OracleConnection(connectionString);
        return connection;
    }

    /// <summary>  
    /// 执行数据库非查询操作,返回受影响的行数  
    /// </summary>  
    /// <param name="connectionString">数据库连接字符串</param>
    /// <param name="cmdType">命令的类型</param>
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前操作影响的数据行数</returns>  
    public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
    {
        OracleCommand cmd = new OracleCommand();
        using (OracleConnection conn = connF(connectionString))
        {
            PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
            int val = cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            return val;
        }
    }
    /// <summary>  
    /// 执行数据库非查询操作,返回受影响的行数  
    /// </summary>  
    /// <param name="connectionString">数据库连接字符串</param>
    /// <param name="cmdType">命令的类型</param>
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前操作影响的数据行数</returns>  
    public static int ExecuteNonQuery(string connectionString, string cmdText, params OracleParameter[] cmdParms)
    {
        OracleCommand cmd = new OracleCommand();
        using (OracleConnection conn = connF(connectionString))
        {
            PrepareCommand(cmd, conn, null, CommandType.Text, cmdText, cmdParms);
            int val = cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            return val;
        }
    }
    /// <summary>  
    /// 执行数据库非查询操作,返回受影响的行数  
    /// </summary>  
    /// <param name="connectionString">数据库连接字符串</param>
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <returns>当前操作影响的数据行数</returns>  
    public static int ExecuteNonQuery(string connectionString, string cmdText)
    {
        OracleCommand cmd = new OracleCommand();
        using (OracleConnection conn = connF(connectionString))
        {
            PrepareCommand(cmd, conn, null, CommandType.Text, cmdText, (OracleParameter[])null);
            int val = cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            return val;
        }
    }

    public static int ExecuteNonQuery(string cmdText)
    {
        OracleCommand cmd = new OracleCommand();
        using (OracleConnection conn = connF(""))
        {
            PrepareCommand(cmd, conn, null, CommandType.Text, cmdText, (OracleParameter[])null);
            int val = cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            return val;
        }
    }


    /// <summary>  
    /// 执行数据库事务非查询操作,返回受影响的行数  
    /// </summary>  
    /// <param name="transaction">数据库事务对象</param>  
    /// <param name="cmdType">Command类型</param>  
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前事务操作影响的数据行数</returns>  
    public static int ExecuteNonQuery(OracleTransaction trans, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
    {
        OracleCommand cmd = new OracleCommand();
        PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, cmdParms);
        int val = cmd.ExecuteNonQuery();
        cmd.Parameters.Clear();
        return val;
    }
    /// <summary>  
    /// 执行数据库事务非查询操作,返回受影响的行数  
    /// </summary>  
    /// <param name="transaction">数据库事务对象</param>  
    /// <param name="cmdType">Command类型</param>  
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前事务操作影响的数据行数</returns>  
    public static int ExecuteNonQuery(OracleTransaction trans, string cmdText, params OracleParameter[] cmdParms)
    {
        OracleCommand cmd = new OracleCommand();
        PrepareCommand(cmd, trans.Connection, trans, CommandType.Text, cmdText, cmdParms);
        int val = cmd.ExecuteNonQuery();
        cmd.Parameters.Clear();
        return val;
    }
    /// <summary>  
    /// 执行数据库事务非查询操作,返回受影响的行数  
    /// </summary>  
    /// <param name="transaction">数据库事务对象</param>  
    /// <param name="cmdType">Command类型</param>  
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前事务操作影响的数据行数</returns>  
    public static int ExecuteNonQuery(OracleTransaction trans, string cmdText)
    {
        OracleCommand cmd = new OracleCommand();
        PrepareCommand(cmd, trans.Connection, trans, CommandType.Text, cmdText, (OracleParameter[])null);


        int val = cmd.ExecuteNonQuery();
        cmd.Parameters.Clear();
        return val;
    }

    public static bool ExecuteTransactionBySqls(List<string> sqlArray)
    {
        bool isSuccess = false;
        using (OracleConnection conn = connF(""))
        {
            try
            {
                conn.Open();
                OracleTransaction transaction = conn.BeginTransaction();
                foreach (var itemSql in sqlArray)
                {
                    using (OracleCommand cmd = new OracleCommand())
                    {
                        cmd.Connection = conn;
                        cmd.CommandText = itemSql.ToString();
                        cmd.Transaction = transaction;
                        cmd.ExecuteNonQuery();
                    }
                }
                transaction.Commit();
                conn.Close();
                isSuccess = true;

            }
            catch
            {
                conn.Close();
            }
        }
        return isSuccess;
    }

    /// <summary>  
    /// 执行数据库非查询操作,返回受影响的行数  
    /// </summary>  
    /// <param name="connection">Oracle数据库连接对象</param>  
    /// <param name="cmdType">Command类型</param>  
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前操作影响的数据行数</returns>  
    public static int ExecuteNonQuery(OracleConnection connection, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
    {
        if (connection == null)
            throw new ArgumentNullException("当前数据库连接不存在");
        OracleCommand cmd = new OracleCommand();
        PrepareCommand(cmd, connection, null, cmdType, cmdText, cmdParms);
        int val = cmd.ExecuteNonQuery();
        cmd.Parameters.Clear();
        return val;
    }

    /// <summary>  
    /// 执行数据库查询操作,返回OracleDataReader类型的内存结果集  
    /// </summary>  
    /// <param name="connectionString">数据库连接字符串</param>
    /// <param name="cmdType">命令的类型</param>
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前查询操作返回的OracleDataReader类型的内存结果集</returns>  
    public static OracleDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
    {
        OracleCommand cmd = new OracleCommand();
        OracleConnection conn = connF(connectionString);
        try
        {
            PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
            OracleDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            cmd.Parameters.Clear();
            return reader;
        }
        catch
        {
            cmd.Dispose();
            conn.Close();
            throw;
        }
    }
    /// <summary>  
    /// 执行数据库查询操作,返回DataSet类型的结果集  
    /// </summary>  
    /// <param name="connectionString">数据库连接字符串</param>
    /// <param name="cmdType">命令的类型</param>
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前查询操作返回的DataSet类型的结果集</returns>  
    public static DataSet ExecuteDataSet(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
    {
        OracleCommand cmd = new OracleCommand();
        OracleConnection conn = connF(connectionString);
        DataSet ds = null;
        try
        {
            PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
            OracleDataAdapter adapter = new OracleDataAdapter();
            adapter.SelectCommand = cmd;
            ds = new DataSet();
            adapter.Fill(ds);
            cmd.Parameters.Clear();
        }
        catch
        {
            throw;
        }
        finally
        {
            cmd.Dispose();
            conn.Close();
            conn.Dispose();
        }

        return ds;
    }

    /// <summary>  
    /// 执行数据库查询操作,返回DataSet类型的结果集  
    /// </summary>  
    /// <param name="connectionString">数据库连接字符串</param>
    /// <param name="cmdType">命令的类型</param>
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <returns>当前查询操作返回的DataSet类型的结果集</returns>  
    public static DataSet ExecuteDataSet(string connectionString, CommandType cmdType, string cmdText)
    {
        return ExecuteDataSet(connectionString, cmdType, cmdText, (OracleParameter[])null);
    }
    /// <summary>  
    /// 执行数据库查询操作,返回DataSet类型的结果集  
    /// </summary>  
    /// <param name="connectionString">数据库连接字符串</param>
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <returns>当前查询操作返回的DataSet类型的结果集</returns>  
    public static DataSet ExecuteDataSet(string connectionString, string cmdText)
    {
        return ExecuteDataSet(connectionString, CommandType.Text, cmdText, (OracleParameter[])null);
    }

    /// <summary>  
    /// 执行数据库查询操作,返回DataTable类型的结果集  
    /// </summary>  
    /// <param name="connectionString">数据库连接字符串</param>
    /// <param name="cmdType">命令的类型</param>
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前查询操作返回的DataTable类型的结果集</returns>  
    public static DataTable ExecuteDataTable(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
    {
        OracleCommand cmd = new OracleCommand();
        OracleConnection conn = connF(connectionString);
        DataTable dt = null;

        try
        {
            PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
            OracleDataAdapter adapter = new OracleDataAdapter();
            adapter.SelectCommand = cmd;
            dt = new DataTable();
            adapter.Fill(dt);
            cmd.Parameters.Clear();
        }
        catch
        {
            throw;
        }
        finally
        {
            cmd.Dispose();
            conn.Close();
            conn.Dispose();
        }

        return dt;
    }
    /// <summary>  
    /// 执行数据库查询操作,返回DataTable类型的结果集  
    /// </summary>  
    /// <param name="connectionString">数据库连接字符串</param>
    /// <param name="cmdType">命令的类型</param>
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前查询操作返回的DataTable类型的结果集</returns>  
    public static DataTable ExecuteDataTable(string connectionString, string cmdText, params OracleParameter[] cmdParms)
    {
        OracleCommand cmd = new OracleCommand();
        OracleConnection conn = connF(connectionString);
        DataTable dt = null;

        try
        {
            PrepareCommand(cmd, conn, null, CommandType.Text, cmdText, cmdParms);
            OracleDataAdapter adapter = new OracleDataAdapter();
            adapter.SelectCommand = cmd;
            dt = new DataTable();
            adapter.Fill(dt);
            cmd.Parameters.Clear();
        }
        catch
        {
            throw;
        }
        finally
        {
            cmd.Dispose();
            conn.Close();
            conn.Dispose();
        }

        return dt;
    }
    /// <summary>  
    /// 执行数据库查询操作,返回DataTable类型的结果集  
    /// </summary>  
    /// <param name="connectionString">数据库连接字符串</param>
    /// <param name="cmdType">命令的类型</param>
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前查询操作返回的DataTable类型的结果集</returns>  
    public static DataTable ExecuteDataTable(string connectionString, string cmdText)
    {
        OracleCommand cmd = new OracleCommand();
        OracleConnection conn = connF(connectionString);
        DataTable dt = null;
        try
        {
            PrepareCommand(cmd, conn, null, CommandType.Text, cmdText, (OracleParameter[])null);
            OracleDataAdapter adapter = new OracleDataAdapter();
            adapter.SelectCommand = cmd;
            dt = new DataTable();
            adapter.Fill(dt);
            cmd.Parameters.Clear();
        }
        catch
        {
            throw;
        }
        finally
        {
            cmd.Dispose();
            conn.Close();
            conn.Dispose();
        }

        return dt;
    }
    /// <summary>  
    /// 执行数据库查询操作,返回结果集中位于第一行第一列的Object类型的值  
    /// </summary>  
    /// <param name="connectionString">数据库连接字符串</param>
    /// <param name="cmdType">命令的类型</param>
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前查询操作返回的结果集中位于第一行第一列的Object类型的值</returns>  
    public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
    {
        OracleCommand cmd = new OracleCommand();
        OracleConnection conn = connF(connectionString);
        object result = null;
        try
        {
            PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
            result = cmd.ExecuteScalar();
            cmd.Parameters.Clear();
        }
        catch
        {
            throw;
        }
        finally
        {
            cmd.Dispose();
            conn.Close();
            conn.Dispose();
        }

        return result;
    }

    /// <summary>  
    /// 执行数据库事务查询操作,返回结果集中位于第一行第一列的Object类型的值  
    /// </summary>  
    /// <param name="trans">一个已存在的数据库事务对象</param>  
    /// <param name="commandType">命令类型</param>  
    /// <param name="commandText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前事务查询操作返回的结果集中位于第一行第一列的Object类型的值</returns>  
    public static object ExecuteScalar(OracleTransaction trans, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
    {
        if (trans == null)
            throw new ArgumentNullException("当前数据库事务不存在");
        OracleConnection conn = trans.Connection;
        if (conn == null)
            throw new ArgumentException("当前事务所在的数据库连接不存在");

        OracleCommand cmd = new OracleCommand();
        object result = null;

        try
        {
            PrepareCommand(cmd, conn, trans, cmdType, cmdText, cmdParms);
            result = cmd.ExecuteScalar();
            cmd.Parameters.Clear();
        }
        catch
        {
            throw;
        }
        finally
        {
            trans.Dispose();
            cmd.Dispose();
            conn.Close();
            conn.Dispose();
        }

        return result;
    }

    /// <summary>  
    /// 执行数据库查询操作,返回结果集中位于第一行第一列的Object类型的值  
    /// </summary>  
    /// <param name="conn">数据库连接对象</param>  
    /// <param name="cmdType">Command类型</param>  
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前查询操作返回的结果集中位于第一行第一列的Object类型的值</returns>  
    public static object ExecuteScalar(OracleConnection conn, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
    {
        if (conn == null) throw new ArgumentException("当前数据库连接不存在");
        OracleCommand cmd = new OracleCommand();
        object result = null;

        try
        {
            PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
            result = cmd.ExecuteScalar();
            cmd.Parameters.Clear();
        }
        catch
        {
            throw;
        }
        finally
        {
            cmd.Dispose();
            conn.Close();
            conn.Dispose();
        }

        return result;
    }

    /// <summary>  
    /// 执行数据库命令前的准备工作  
    /// </summary>  
    /// <param name="cmd">Command对象</param>  
    /// <param name="conn">数据库连接对象</param>  
    /// <param name="trans">事务对象</param>  
    /// <param name="cmdType">Command类型</param>  
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    private static void PrepareCommand(OracleCommand cmd, OracleConnection conn, OracleTransaction trans, CommandType cmdType, string cmdText, OracleParameter[] cmdParms)
    {
        if (conn.State != ConnectionState.Open)
            conn.Open();

        cmd.Connection = conn;
        cmd.CommandText = cmdText;

        if (trans != null)
            cmd.Transaction = trans;

        cmd.CommandType = cmdType;

        if (cmdParms != null)
        {
            foreach (OracleParameter parm in cmdParms)
                cmd.Parameters.Add(parm);
        }
    }

    /// <summary>  
    /// 将.NET日期时间类型转化为Oracle兼容的日期时间格式字符串  
    /// </summary>  
    /// <param name="date">.NET日期时间类型对象</param>  
    /// <returns>Oracle兼容的日期时间格式字符串(如该字符串:TO_DATE('2007-12-1','YYYY-MM-DD'))</returns>  
    public static string GetOracleDateFormat(DateTime date)
    {
        return "TO_DATE('" + date.ToString("yyyy-M-dd") + "','YYYY-MM-DD')";
    }

    /// <summary>  
    /// 将.NET日期时间类型转化为Oracle兼容的日期格式字符串  
    /// </summary>  
    /// <param name="date">.NET日期时间类型对象</param>  
    /// <param name="format">Oracle日期时间类型格式化限定符</param>  
    /// <returns>Oracle兼容的日期时间格式字符串(如该字符串:TO_DATE('2007-12-1','YYYY-MM-DD'))</returns>  
    public static string GetOracleDateFormat(DateTime date, string format)
    {
        if (format == null || format.Trim() == "") format = "YYYY-MM-DD";
        return "TO_DATE('" + date.ToString("yyyy-M-dd") + "','" + format + "')";
    }

    /// <summary>  
    /// 将指定的关键字处理为模糊查询时的合法参数值  
    /// </summary>  
    /// <param name="source">待处理的查询关键字</param>  
    /// <returns>过滤后的查询关键字</returns>  
    public static string HandleLikeKey(string source)
    {
        if (source == null || source.Trim() == "") return null;

        source = source.Replace("[", "[]]");
        source = source.Replace("_", "[_]");
        source = source.Replace("%", "[%]");

        return ("%" + source + "%");
    }
    /// <summary>
    /// 执行存储过程
    /// </summary>
    /// <param name="connection">SqlServer数据库连接对象</param>  
    /// <param name="storedProcName">存储过程名</param>
    /// <param name="parameters">存储过程参数</param>
    /// <returns>SqlDataReader对象</returns>
    public static OracleDataReader RunStoredProcedure(OracleConnection connection, string storedProcName, IDataParameter[] parameters)
    {
        OracleDataReader returnReader = null;
        connection.Open();
        OracleCommand command = BuildSqlCommand(connection, storedProcName, parameters);
        returnReader = command.ExecuteReader(CommandBehavior.CloseConnection);
        return returnReader;
    }
    /// <summary>
    /// 执行存储过程
    /// </summary>
    /// <param name="connection">SqlServer数据库连接对象</param>  
    /// <param name="storedProcName">存储过程名</param>
    /// <param name="parameters">存储过程参数</param>
    /// <returns>SqlDataReader对象</returns>
    public static OracleDataReader RunStoredProcedure(string connectionString, string storedProcName, IDataParameter[] parameters)
    {
        OracleDataReader returnReader = null;
        OracleConnection conn = connF(connectionString);
        conn.Open();
        OracleCommand command = BuildSqlCommand(conn, storedProcName, parameters);
        returnReader = command.ExecuteReader(CommandBehavior.CloseConnection);
        return returnReader;
    }

    /// <summary>
    /// 构建SqlCommand对象
    /// </summary>
    /// <param name="connection">数据库连接</param>
    /// <param name="storedProcName">存储过程名</param>
    /// <param name="parameters">存储过程参数</param>
    /// <returns>SqlCommand</returns>
    private static OracleCommand BuildSqlCommand(OracleConnection connection, string storedProcName, IDataParameter[] parameters)
    {
        OracleCommand command = new OracleCommand(storedProcName, connection);
        command.CommandType = CommandType.StoredProcedure;
        foreach (OracleParameter parameter in parameters)
        {
            command.Parameters.Add(parameter);
        }
        return command;
    }
}

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

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

相关文章

Iceberg 基础知识与基础使用

1 Iceber简介 1.1 概述 为了解决数据存储和计算引擎之间的适配的问题&#xff0c;Netflix开发了Iceberg&#xff0c;2018年11月16日进入Apache孵化器&#xff0c;2020 年5月19日从孵化器毕业&#xff0c;成为Apache的顶级项目。 Iceberg是一个面向海量数据分析场景的开放表格…

能卷死同行的收银系统源码--服装店收银系统+进销存、PHP+mysql

涉及零售服装门店收银系统源码 超市务管理系统源码 便利店收银系统源码 进销存erp/scrm的供应链订货系统源码 saas门店连锁加盟收银系统源码 走过路过不要错过。 整理采用ThinkPHPmysql&#xff0c;二开门槛低&#xff0c; 模块化设计&#xff0c;前后端分离。 前端&…

python图像处理 ——几种图像增强技术

图像处理 ——几种图像增强技术 前言一、几种图像增强技术1.直方图均衡化2.直方图适应均衡化3.灰度变换4.同态滤波5.对比拉伸6.对数变换7.幂律变换&#xff08;伽马变换&#xff09; 前言 图像增强是指通过各种算法和技术&#xff0c;改善或提高数字图像的质量、清晰度、对比度…

图解系列--理解L3交换机的性能与功能

04.01 何为 L3 交换机 L3交换机是一种在L2 交换机的基础上增加了路由选择功能的网络硬件&#xff0c;能够通过基于ASIC 和 FPGA 的硬件处理高速实现网络功能和转发分组。L2 是指 OSI 参考模型中的L2, 也就是数据链路层。L2 交换机能够基于该层主要编址的 MAC 地址&#xff0c;…

005 Linux 冯诺依曼体系与操作系统的理解

前言 本文将会向您介绍冯诺依曼体系与操作系统的概念 文章重点 理解冯诺依曼体系为什么到现在也如此流行理解操作系统的概念以及操作系统是如何控制软硬件资源的 冯诺依曼体系结构 常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;…

CoCa论文笔记

摘要 计算机视觉任务中&#xff0c;探索大规模预训练基础模型具有重要意义&#xff0c;因为这些模型可以可以极快地迁移到下游任务中。本文提出的CoCa&#xff08;Contrastive Captioner&#xff09;&#xff0c;一个极简设计&#xff0c;结合对比损失和captioning损失预训练一…

解决vmware安装ubuntu虚拟机显示不全以及无法实现windows与虚拟机之间无法相互复制粘贴问题

01、存在问题 02、解决方案 sudo apt-get autoremove open-vm-tools sudo apt-get install open-vm-tools sudo apt-get install open-vm-tools-desktop reboot //重启在这里插入图片描述 存在Bug 如果遇到一下问题&#xff0c;请先执行下列命令&#xff0c;然后…

【QT】基本的绘图操作和高级绘图

基本绘图 新建项目 重新绘图事件 画基本图形 #include "widget.h" #include "ui_widget.h" #include <QPainter>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }/…

MATLAB ROS Toolbox 官网教程

系列文章目录 文章目录 系列文章目录前言一、ROS 2 入门1.1 ROS 2 术语1.2 启动 ROS 2 网络1.3 话题和服务质量策略1.4 消息1.5 从 ROS 2 网络断开连接1.6 DDS 和 RMW 实施 二、连接到 ROS 2 网络2.1 在默认域中创建 ROS 2 节点2.2 在不同域上创建 ROS 2 节点2.3 更改默认域 ID…

Leetcode—1588.所有奇数长度子数组的和【简单】

2023每日刷题&#xff08;十九&#xff09; Leetcode—1588.所有奇数长度子数组的和 直接法实现代码 int sumOddLengthSubarrays(int* arr, int arrSize){int i 1;int sum 0;int left 0, right;int k;int j 0;while(i < arrSize) {for(left 0; left < arrSize; lef…

虽然许多人表示对Windows 11的透明任务栏不满,但有时效果还是挺好的

Windows 11支持透明任务栏&#xff0c;这项功能可以在几秒钟内启用&#xff0c;但许多人表示他们对它的工作方式不满意。 在今天的指南中&#xff0c;我们将向你展示如何使用此功能&#xff0c;并通过一些技巧进一步自定义任务栏。 如何在Windows 11中使任务栏透明 使用个性…

FMC+DAM驱动LVGL刷屏

前提条件 使用FMC驱动LCD刷屏 LVGL移植 开启DMA 需要开启MEMTOMEMDMA。 开启MPU 有MPU时需要 使能I-cache D-cache时 使用DMA传输数据时要保证数据的完整行和准确性 修改代码 逻辑 等待DMA传输完成然后再刷屏。 修改 在DMA初始化函数中最后添加 注册DMA传输完成调用函…