迈瑞BC系列出图汇总

news2024/12/23 15:07:29

迈瑞的几个仪器出图需要画图,搞的很费劲,没办法,厂商自己不改,明明有图发Base64串的,就非两个图要自己画,画的方法又描述不清。每个LIS厂商都要浪费很多时间,没什么必要浪费在这种没意义的事情上,共有5800系列,BC3000系列,2600系列,分享给大家。

示例代码和程序

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
6800型号

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using LIS.BLL.ImageCore;
using System.Drawing;
using System.Data;
using System.IO;
using System.Drawing.Drawing2D;
namespace LIS.Mach.ImageDeal
{
    ///<summary  NoteObject="Class">
    /// [功能描述:M调用绘图测试] <para/>
    /// [创建者:zlz] <para/>
    /// [创建时间:2018年03月22日] <para/>
    ///<说明>
    ///  [说明:[功能描述:M调用绘图测试,配合M处理仪器绘图]<para/>
    ///</说明>
    ///<修改记录>
    ///    [修改时间:本次修改时间]<para/>
    ///    [修改内容:本次修改内容]<para/>
    ///</修改记录>
    ///<修改记录>
    ///    [修改时间:本次修改时间]<para/>
    ///    [修改内容:本次修改内容]<para/>
    ///    M端触发代码,其他的和监听程序一样
    ///    s retObj=##Class(wbsLisMsgAsyncHandler.LISMsg.wbsLisDrawImageAsyncHandlerSoap).%New()
    ///    s ret=retObj.DrawImage("1","绘图数据","仪器","处理M","传输次数","其他参数","LIS.Mach.ImageDeal.ImageDealTest,LIS.Mach.ImageDeal")
    ///    s ret=$$DealImage^MI.MIF000(epis,"RBC绘图数据串",mi,"和监听一样的有保存图片的M类","-1","Histogram#RBC#RBC######10#10#320#138","LIS.Mach.ImageDeal.Imagebc6800,LIS.Mach.ImageDeal")
    ///    s ret=$$DealImage^MI.MIF000(epis,"RBC带背景绘图数据串",mi,"和监听一样的有保存图片的M类","-1","Histogram#RBC#RBCH.bmp######10#10#320#138","LIS.Mach.ImageDeal.Imagebc6800,LIS.Mach.ImageDeal")
    ///    s ret=$$DealImage^MI.MIF000(epis,"PLT绘图数据串",mi,"和监听一样的有保存图片的M类","-1","Histogram#PLT#PLT######10#10#320#138","LIS.Mach.ImageDeal.Imagebc6800,LIS.Mach.ImageDeal")
    ///    s ret=$$DealImage^MI.MIF000(epis,"PLT带背景绘图数据串",mi,"和监听一样的有保存图片的M类","-1","Histogram#PLT#PLT.bmp######10#10#320#138","LIS.Mach.ImageDeal.Imagebc6800,LIS.Mach.ImageDeal")
    ///    s ret=$$DealImage^MI.MIF000(epis,"DIFF绘图数据串",mi,"和监听一样的有保存图片的M类","-1","DiffPlot#DIFF#######10#10#320#138","LIS.Mach.ImageDeal.Imagebc6800,LIS.Mach.ImageDeal")
    ///    s ret=$$DealImage^MI.MIF000(epis,"Baso绘图数据串",mi,"和监听一样的有保存图片的M类","-1","DiffPlot#Baso#######10#10#320#138","LIS.Mach.ImageDeal.Imagebc6800,LIS.Mach.ImageDeal")
    ///</修改记录>
    ///</summary>
    public class Imagebc6800 : IDrawImage
    {
        /// <summary>
        /// 绘图方法
        /// </summary>
        /// <param name="epis">流水号</param>
        /// <param name="result">结果</param>
        /// <param name="machID">仪器ID</param>
        /// <param name="dealProcess">处理M</param>
        /// <param name="index">-1认为传到最后</param>
        /// <param name="otherPara">其他参数</param>
        /// <param name="dealClass">C#处理类格式:类全名,不带后缀的动态库名</param>
        /// <returns>是否成功</returns>
        public bool DrawImage(string epis, string result, string machID, string dealProcess, string index, string otherPara, string dealClass)
        {
            //string epis = row["Epis"].ToString();
            //1.1从其他参数中获取所需要的参数
            string[] paraList = otherPara.Split('#');
            string graphType = "";
            string imgClass = "";
            string label = "";
            string title = "";
            string maxDot = "";
            string maxValue = "";
            string memo = "";
            string foreColor = "";
            string top = "";
            string left = "";
            string width = "";
            string height = "";
            if (paraList.Length > 1)
            {
                graphType = paraList[0];
                imgClass = paraList[1];
            }
            else
            {
                return true;
            }
            if (paraList.Length > 11)
            {
                title = paraList[2];
                label = paraList[3];
                maxDot = paraList[4];
                maxValue = paraList[5];
                memo = paraList[6];
                foreColor = paraList[7];
                top = paraList[8];
                left = paraList[9];
                width = paraList[10];
                height = paraList[11];

            }
            //#2.1校验必要参数是否存在
            if (String.IsNullOrEmpty(width))
            {
                width = "330";
            }
            if (String.IsNullOrEmpty(height))
            {
                height = "140";
            }
            if (String.IsNullOrEmpty(foreColor))
            {
                foreColor = "0";
            }
            //#2.2取得画图所需要的元素
            double imageWidth = Convert.ToDouble(width);
            double imageHeight = Convert.ToDouble(height);
            
            //#2.3分不同类型的图形来进行绘图
            //画直方图
            if (graphType == "Histogram")
            {
                //先把串转比特数组
                byte[] imageBytes = Convert.FromBase64String(result);
                float[] dot = new float[imageBytes.Length];
                int imgMaxDot = 0;
                float imgMaxValue = 0;
                for (int j = 0; j < imageBytes.Length; j++)
                {
                    dot[j] = imageBytes[j];
                    if (dot[j] > imgMaxValue)
                    {
                        imgMaxValue = dot[j];
                    }
                    imgMaxDot++;
                }
                Bitmap image = null;
                //使用背景画图
                if (title == "PLT.bmp" || title == "RBCH.bmp")
                {
                    image = CreateImage(title, imgMaxValue, dot, null);
                }
                else
                {
                    Dictionary<int, string> xshow = new Dictionary<int, string>();
                    if (imgClass == "RBC")
                    {
                        xshow.Add(10, "0");
                        xshow.Add(60, "50");
                        xshow.Add(110, "100");
                        xshow.Add(160, "150");
                        xshow.Add(210, "200");
                        xshow.Add(260, "250");
                        xshow.Add(310, "fL");
                    }
                    if (imgClass == "PLT")
                    {
                        xshow.Add(10, "0");
                        xshow.Add(50, "5");
                        xshow.Add(100, "10");
                        xshow.Add(150, "15");
                        xshow.Add(200, "20");
                        xshow.Add(250, "25");
                        xshow.Add(300, "fL");
                    }
                    //按十进制结果画图
                    Histogram histogram = new Histogram(label, title, imgMaxDot, imgMaxValue, foreColor, Convert.ToInt32(width), Convert.ToInt32(height), xshow);
                    histogram.Values = dot;
                    image = histogram.CreateImage();
                }
                //判断C盘trak是否存在
                string tmpPath = @"c:\trak\tmpMach";
                if (!Directory.Exists("C:\\trak"))
                {
                    Directory.CreateDirectory("C:\\trak"); //新建文件夹   
                    if (!Directory.Exists(tmpPath))
                    {
                        Directory.CreateDirectory(tmpPath); //新建文件夹   
                    }
                }
                //先删除临时目录里面的所有文件
                DeleteFolder(tmpPath);
                image.Save(tmpPath + "\\" + imgClass + epis + ".bmp");
                image.Dispose();
                string ftpPath = "";
                //FtpService ftp = GetFtpHelper(machID, dealProcess, out ftpPath);
                //上传图片
                //ftp.Upload(tmpPath + "\\" + imgClass + epis + ".bmp");
                //保存图片
                //SaveImg(machID, epis, imgClass, ftpPath.Split('^')[3] + imgClass + epis + ".bmp", dealProcess);
            }
            //散点图就是图片的Base64串表示,直接还原
            else if (graphType == "DiffPlot")
            {
                Bitmap image = null;
                try
                {
                    byte[] arr = Convert.FromBase64String(result);
                    MemoryStream ms = new MemoryStream(arr);
                    image = new Bitmap(ms);
                    ms.Dispose();
                    ms.Close();
                    Bitmap imgTMP = new Bitmap(image.Width, image.Height);
                    Graphics g = Graphics.FromImage(imgTMP);
                    g.DrawImage(image, 0, 0, image.Width, image.Height);
                    image.Dispose();
                    image = imgTMP;
                    //判断C盘trak是否存在
                    string tmpPath = @"c:\trak\tmpMach";
                    if (!Directory.Exists("C:\\trak"))
                    {
                        Directory.CreateDirectory("C:\\trak"); //新建文件夹   
                        if (!Directory.Exists(tmpPath))
                        {
                            Directory.CreateDirectory(tmpPath); //新建文件夹   
                        }
                    }
                    //先删除临时目录里面的所有文件
                    DeleteFolder(tmpPath);
                    //反转底色
                    GraphUtil.GrayReverse(image);
                    image.Save(tmpPath + "\\" + imgClass + epis + ".bmp", System.Drawing.Imaging.ImageFormat.Bmp);
                    image.Dispose();
                    string ftpPath = "";
                    //FtpService ftp = GetFtpHelper(machID, dealProcess, out ftpPath);
                    //上传图片
                    //ftp.Upload(tmpPath + "\\" + imgClass + epis + ".bmp");
                    //保存图片
                    //SaveImg(machID, epis, imgClass, ftpPath.Split('^')[3] + imgClass + epis + ".bmp", dealProcess);
                }
                catch (Exception ex)
                {
                    throw new Exception("Base64String到图片转换失败\n异常:"+ex.Message);
                }
            }
            return true;
        }


        /// 清空指定的文件夹,但不删除文件夹
        /// </summary>
        /// <param name="dir"></param>
        public static void DeleteFolder(string dir)
        {
            foreach (string d in Directory.GetFileSystemEntries(dir))
            {
                if (File.Exists(d))
                {
                    FileInfo fi = new FileInfo(d);
                    if (fi.Attributes.ToString().IndexOf("ReadOnly") != -1)
                        fi.Attributes = FileAttributes.Normal;
                    File.Delete(d);//直接删除其中的文件  
                }
                else
                {
                    DirectoryInfo d1 = new DirectoryInfo(d);
                    if (d1.GetFiles().Length != 0)
                    {
                        DeleteFolder(d1.FullName);递归删除子文件夹
                    }
                    Directory.Delete(d);
                }
            }
        }

        /// <summary>
        /// 获得图片流
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public Stream GetImageStram(string name)
        {
            return this.GetType().Assembly.GetManifestResourceStream("iMedicalLISBCIMage.Image." + name);
        }

        /// <summary>
        /// 画图逻辑
        /// </summary>
        public Bitmap CreateImage(string bgName, float MaxValue, float[] Values, Bitmap imageold)
        {
            //#1.画坐标系,先简单画两条线,暂时不做细节
            Bitmap img = null;
            //#1.2获得画图句柄
            Graphics g = null;
            if (imageold != null)
            {
                img = imageold;
                g = Graphics.FromImage(img);
            }
            else
            {
                Image imgtmp = Image.FromStream(GetImageStram(bgName)) as Bitmap;
                img = new Bitmap(imgtmp.Width, imgtmp.Height);
                g = Graphics.FromImage(img);
                g.Clear(Color.White);
                //+抗锯齿
                g.SmoothingMode = SmoothingMode.AntiAlias;
                g.DrawImage(imgtmp, 0, 0, img.Width, img.Height);
            }

            int Height = img.Height;
            //#1.3偏移
            int x = 1;
            int y = 20;
            //画横纵坐标线
            Pen pen = new Pen(Color.Black);
            pen.Width = 2;
            //#3.开始进点的数据,进行绘图
            double radix = (img.Width - 30) * 1.0 / Values.Length;
            if (Values.Length == 256)
            {
                radix = radix * 2;
            }
            float preY = -1;
            int curindex = 0;
            double radiy = 1;
            if (MaxValue != 0)
            {
                radiy = (Height - 40) * 1.0 / MaxValue;
            }
            foreach (var d in Values)
            {
                if (preY == -1)
                {
                    pen = new Pen(Color.Black);
                    pen.Width = 1;
                }
                else
                {
                    pen = new Pen(Color.Black);
                    pen.Width = 1;
                    if (10 + x * radix > img.Width)
                    {
                        continue;
                    }
                    if (Height - d * radiy - y > img.Height || Height - d * radiy - y < 0)
                    {
                        continue;
                    }
                    g.DrawLine(pen, 10 + (int)(x * radix), Height - (int)(d * radiy) - y, 10 + (int)((x - 1) * radix), preY - y);
                }
                preY = Height - (int)(d * radiy);
                x += 1;
                curindex++;
            }
            return img;
        }
    }
}

BC3000型号

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using LIS.BLL.ImageCore;
using System.Drawing;
using System.Data;
using System.IO;
using System.Drawing.Drawing2D;
namespace LIS.Mach.ImageDeal
{
    ///<summary  NoteObject="Class">
    /// [功能描述:M调用绘图测试] <para/>
    /// [创建者:zlz] <para/>
    /// [创建时间:2018年03月22日] <para/>
    ///<说明>
    ///  [说明:[功能描述:M调用绘图测试,配合M处理仪器绘图]<para/>
    ///</说明>
    ///<修改记录>
    ///    [修改时间:本次修改时间]<para/>
    ///    [修改内容:本次修改内容]<para/>
    ///</修改记录>
    ///<修改记录>
    ///    [修改时间:本次修改时间]<para/>
    ///    [修改内容:本次修改内容]<para/>
    ///    M端触发代码,其他的和监听程序一样
    ///    s retObj=##Class(wbsLisMsgAsyncHandler.LISMsg.wbsLisDrawImageAsyncHandlerSoap).%New()
    ///    s ret=retObj.DrawImage("1","绘图数据","仪器","处理M","传输次数","其他参数","LIS.Mach.ImageDeal.ImageDealTest,LIS.Mach.ImageDeal")
    ///    s ret=$$DealImage^MI.MIF000(epis,"整个BC3000的数据,绘图自己提取绘图数据",mi,"和监听一样的有保存图片的M类","-1","","LIS.Mach.ImageDeal.ImageDealBC3000Plus,LIS.Mach.ImageDeal")
    ///</修改记录>
    ///</summary>
    public class ImageDealBC3000Plus : IDrawImage
    {
        /// <summary>
        /// 绘图方法
        /// </summary>
        /// <param name="epis">流水号</param>
        /// <param name="result">结果</param>
        /// <param name="machID">仪器ID</param>
        /// <param name="dealProcess">处理M</param>
        /// <param name="index">-1认为传到最后</param>
        /// <param name="otherPara">其他参数</param>
        /// <param name="dealClass">C#处理类格式:类全名,不带后缀的动态库名</param>
        /// <returns>是否成功</returns>
        public bool DrawImage(string epis, string result, string machID, string dealProcess, string index, string otherPara, string dealClass)
        {
            if (result.Length > 2304)
            {
                string imgStr = result.Substring(result.Length - 2304, 2304);
                
                //每个图256*3表示  依次是WBC RBC PLT
                for (int i = 0; i < 3; i++)
                {
                    string oneImgStr = imgStr.Substring(i*768,768);
                    float maxVal = 0;
                    float [] points = new float[256];
                    for (int j = 0; j < 256; j++)
                    {
                        string onePoint = oneImgStr.Substring(j*3,3);
                        float curVal = Convert.ToInt32(onePoint);
                        if(maxVal<curVal)
                        {
                            maxVal=curVal;
                        }
                        points[j]=curVal;
                    }
                    //图片类别
                    string imgClass = "";
                    if (i == 0)
                    {
                        imgClass = "WBC";
                    }
                    else if (i == 1)
                    {
                        imgClass = "RBC";
                    }
                    else if (i == 2)
                    {
                        imgClass = "PLT";
                    }
                    Dictionary<int, string> xshow = new Dictionary<int, string>();
                    if (imgClass == "RBC")
                    {
                        xshow.Add(10, "0");
                        xshow.Add(60, "50");
                        xshow.Add(110, "100");
                        xshow.Add(160, "150");
                        xshow.Add(210, "200");
                        xshow.Add(260, "250");
                        xshow.Add(310, "fL");
                    }
                    if (imgClass == "PLT")
                    {
                        xshow.Add(10, "0");
                        xshow.Add(50, "5");
                        xshow.Add(100, "10");
                        xshow.Add(150, "15");
                        xshow.Add(200, "20");
                        xshow.Add(250, "25");
                        xshow.Add(300, "fL");
                    }
                    //按十进制结果画图
                    Histogram histogram = new Histogram("", imgClass, 256, maxVal, "0", 329, 128, xshow);
                    histogram.Values = points;
                    Bitmap img = histogram.CreateImage();


                    //判断C盘trak是否存在
                    string tmpPath = @"c:\trak\tmpMach";
                    if (!Directory.Exists("C:\\trak"))
                    {
                        Directory.CreateDirectory("C:\\trak"); //新建文件夹   
                        if (!Directory.Exists(tmpPath))
                        {
                            Directory.CreateDirectory(tmpPath); //新建文件夹   
                        }
                    }
                    
                    //先删除临时目录里面的所有文件
                    DeleteFolder(tmpPath);
                    img.Save(tmpPath + "\\" + imgClass + epis + ".bmp");
                    img.Dispose();
                }
            }
            return true;
        }


        /// 清空指定的文件夹,但不删除文件夹
        /// </summary>
        /// <param name="dir"></param>
        public static void DeleteFolder(string dir)
        {
            foreach (string d in Directory.GetFileSystemEntries(dir))
            {
                if (File.Exists(d))
                {
                    FileInfo fi = new FileInfo(d);
                    if ((DateTime.Now - fi.CreationTime).Minutes > 10)
                    {
                        if (fi.Attributes.ToString().IndexOf("ReadOnly") != -1)
                        {
                            fi.Attributes = FileAttributes.Normal;
                        }
                        File.Delete(d);//直接删除其中的文件  
                    }
                }
                else
                {
                    DirectoryInfo d1 = new DirectoryInfo(d);
                    if (d1.GetFiles().Length != 0)
                    {
                        DeleteFolder(d1.FullName);递归删除子文件夹
                    }
                    Directory.Delete(d);
                }
            }
        }

    }
}

BC2600型号

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using LIS.BLL.ImageCore;
using System.Drawing;
using System.Data;
using System.IO;
using System.Drawing.Drawing2D;
namespace LIS.Mach.ImageDeal
{
    ///<summary  NoteObject="Class">
    /// [功能描述:M调用绘图测试] <para/>
    /// [创建者:zlz] <para/>
    /// [创建时间:2018年03月22日] <para/>
    ///<说明>
    ///  [说明:[功能描述:M调用绘图测试,配合M处理仪器绘图]<para/>
    ///</说明>
    ///<修改记录>
    ///    [修改时间:本次修改时间]<para/>
    ///    [修改内容:本次修改内容]<para/>
    ///</修改记录>
    ///<修改记录>
    ///    [修改时间:本次修改时间]<para/>
    ///    [修改内容:本次修改内容]<para/>
    ///    M端触发代码,其他的和监听程序一样
    ///    s retObj=##Class(wbsLisMsgAsyncHandler.LISMsg.wbsLisDrawImageAsyncHandlerSoap).%New()
    ///    s ret=retObj.DrawImage("1","绘图数据","仪器","处理M","传输次数","其他参数","LIS.Mach.ImageDeal.ImageDealTest,LIS.Mach.ImageDeal")
    ///    s ret=$$DealImage^MI.MIF000(epis,"整个BC3000的数据,绘图自己提取绘图数据",mi,"和监听一样的有保存图片的M类","-1","","LIS.Mach.ImageDeal.ImageDealBC3000Plus,LIS.Mach.ImageDeal")
    ///</修改记录>
    ///</summary>
    public class ImageDealBC2600 : IDrawImage
    {
        /// <summary>
        /// 绘图方法
        /// </summary>
        /// <param name="epis">流水号</param>
        /// <param name="result">结果</param>
        /// <param name="machID">仪器ID</param>
        /// <param name="dealProcess">处理M</param>
        /// <param name="index">-1认为传到最后</param>
        /// <param name="otherPara">其他参数</param>
        /// <param name="dealClass">C#处理类格式:类全名,不带后缀的动态库名</param>
        /// <returns>是否成功</returns>
        public bool DrawImage(string epis, string result, string machID, string dealProcess, string index, string otherPara, string dealClass)
        {
            result = result.Replace(" ","").Replace("\n","");
            string[] paraList = otherPara.Split('#');
            string imgClass = "";
            if (paraList.Length > 1)
            {
                imgClass = paraList[1];
                if (imgClass == "PLT")
                {
                    result = result.Substring(0,result.Length/2);
                }
            }
            float[] dot = new float[result.Length / 2];
            float imgMaxValue = 0;
            int indexD = 0;
            for (int i = 0; i < result.Length - 2; i = i + 2)
            {
                dot[indexD] = Convert.ToInt32(result[i] + "", 16) * 16 + Convert.ToInt32(result[i + 1] + "", 16);
                if (dot[indexD] > imgMaxValue)
                {
                    imgMaxValue = dot[indexD];
                }
                indexD++;
            }
            Dictionary<int, string> xshow = new Dictionary<int, string>();
            if (imgClass == "RBC")
            {
                xshow.Add(10, "0");
                xshow.Add(60, "50");
                xshow.Add(110, "100");
                xshow.Add(160, "150");
                xshow.Add(210, "200");
                xshow.Add(260, "250");
                xshow.Add(310, "fL");
            }
            if (imgClass == "WBC")
            {
                xshow.Add(10, "0");
                xshow.Add(60, "50");
                xshow.Add(110, "100");
                xshow.Add(160, "150");
                xshow.Add(210, "200");
                xshow.Add(260, "250");
                xshow.Add(310, "fL");
            }
            if (imgClass == "PLT")
            {
                xshow.Add(10, "0");
                xshow.Add(50, "5");
                xshow.Add(100, "10");
                xshow.Add(150, "15");
                xshow.Add(200, "20");
                xshow.Add(250, "25");
                xshow.Add(300, "fL");
            }
            Histogram histogram = new Histogram("", imgClass, dot.Length, imgMaxValue, "0", 339, 130, xshow);
            histogram.Values = dot;
            Bitmap img = histogram.CreateImage();

            //判断C盘trak是否存在
            string tmpPath = @"c:\trak\tmpMach";
            if (!Directory.Exists("C:\\trak"))
            {
                Directory.CreateDirectory("C:\\trak"); //新建文件夹   
                if (!Directory.Exists(tmpPath))
                {
                    Directory.CreateDirectory(tmpPath); //新建文件夹   
                }
            }

            //先删除临时目录里面的所有文件
            DeleteFolder(tmpPath);
            img.Save(tmpPath + "\\" + imgClass + epis + ".bmp");
            img.Dispose();
            return true;
        }


        /// 清空指定的文件夹,但不删除文件夹
        /// </summary>
        /// <param name="dir"></param>
        public static void DeleteFolder(string dir)
        {
            foreach (string d in Directory.GetFileSystemEntries(dir))
            {
                if (File.Exists(d))
                {
                    FileInfo fi = new FileInfo(d);
                    if ((DateTime.Now - fi.CreationTime).Minutes > 10)
                    {
                        if (fi.Attributes.ToString().IndexOf("ReadOnly") != -1)
                        {
                            fi.Attributes = FileAttributes.Normal;
                        }
                        File.Delete(d);//直接删除其中的文件  
                    }
                }
                else
                {
                    DirectoryInfo d1 = new DirectoryInfo(d);
                    if (d1.GetFiles().Length != 0)
                    {
                        DeleteFolder(d1.FullName);递归删除子文件夹
                    }
                    Directory.Delete(d);
                }
            }
        }

    }
}

提倡一下分享精神

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

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

相关文章

Cannot find tomcat-9.0.0.M21/bin/setclasspath.sh

问题描述&#xff1a;将linux上的tomcat直接拷贝到以一个路径下&#xff0c;执行sh startup.sh 报错 解决&#xff1a;修改全局变量配置文件 1、vim /etc/profile &#xff08;主要修改如下图所标记的值 &#xff09; 2、source /etc/profile &#xff08;设置环境变量立即…

JMeter之事务控制器实践

目录 前言 事务控制器 JMeter控制器添加路径&#xff1a; Generate parent sample 1、不勾选任何选项&#xff1a; 2、勾选【Generate parent sample】 3、Include duration of timer and pre-post processors in generated sample 小结 前言 在JMeter中&#xff0c;事…

最牛整理,selenium自动化测试-鼠标/键盘操作(实战详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 selenium鼠标操作…

python爬虫快速入门

Python有其简洁明了&#xff0c;功能强大的优势&#xff0c;特别是在网络爬虫的应用上。接下来&#xff0c;我将分享一个适合Python初学者的爬虫快速入门教程。 一、Python爬虫简介 网页爬虫&#xff0c;是一种自动从互联网上获取信息的程序。在Python语言中&#xff0c;requ…

总结STM32嵌入式面试知识点

一、STM32F1和F4的区别&#xff1f; 内核不同&#xff1a;F1是Cortex-M3内核&#xff0c;F4是Cortex-M4内核&#xff1b;主频不同&#xff1a;F1主频72MHz&#xff0c;F4主频168MHz&#xff1b;浮点运算&#xff1a;F1无浮点运算单位&#xff0c;F4有&#xff1b;功能性能&…

Android Studio实现内容丰富的安卓汽车租赁平台

如需源码可以添加q-------3290510686&#xff0c;也有演示视频演示具体功能&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动。 项目编号101 1.开发环境 android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.查看公告 3.查…

css重点学习

一、选择器 1.标签名选择器 div{border: 5px blue dotted;color: aquamarine;font-size: 20px;} <body><div id"div001">div标签1</div><div id"002">div标签2</div> </body> //只写出了重点部分 2.id选择器 #div0…

IMS:Activity和View处理InputEvent

IMS:Activity和View处理InputEvent 1、IMS服务处理2、Activity的DecorView界面添加3、Activity和View处理InputEvent3.1 InputEventReceiver接收InputEvent3.2 处理KeyEvent3.3 处理MotionEvent android12-release 1、IMS服务处理 关键流程EventHub -> InputReader -> In…

【BUUCTF-REVERSE刮开有奖】详解版

这道题是BUUCTF-REVERSE中的一道题目 拿到题目我们直接拖到Exeinfo_PE中查看&#xff0c;发现没有加壳&#xff0c;32位应用程序&#xff0c;打开应用程序看看&#xff1a; 打开是这样&#xff0c;我是没有找到编辑框&#xff0c;那直接拖到IDA中打开看看吧&#xff1a; 打开I…

使用python-opcua 实现modbus网关(2)

我们继续来研究如何使用python-opcua 实现opcua/modbus 网关。 opcua 开发包包含了大量的函数&#xff0c;通过研究opcua/modbus 网关的实现&#xff0c;可以了解这些函数的使用方法。由于函数过多&#xff0c;文章中函数的使用方式可能不尽合理&#xff0c;或者存在错误。希望…

从不同视角绘制三维散点图

import numpy as np from matplotlib import pyplot as plt positive_data arr_feature_pca[y_dbscan_pred ! -1, :] negative_data arr_feature_pca[y_dbscan_pred -1, :] # --------------------------------------- 定义绘图函数 ----------------------------------- d…

华为云函数工作流FunctionGraph新手操作指南

函数工作流&#xff08;FunctionGraph&#xff09;是华为云提供的一款无服务器&#xff08;Serverless&#xff09;计算服务&#xff0c;无服务器计算是一种托管服务&#xff0c;服务提供商会实时为你分配充足的资源&#xff0c;而不需要预留专用的服务器或容量&#xff0c;真正…

CRM的哪些功能对企业最有用?

企业如何在竞争激烈的市场环境中&#xff0c;提高销售效率&#xff0c;管理客户关系&#xff0c;实现业绩增长&#xff1f;适合的CRM客户管理系统就可以帮助很多。Zoho CRM是一款SaaS云端CRM系统&#xff0c;它能够帮助企业管理客户关系&#xff0c;提高销售效率&#xff0c;获…

springboot集成camunda

1、相关软件下载Camunda流程引擎快速入门——Hello World示例 2、由于camunda-modeler最新版本为5.12.0.界面不太一样。 可以安装历史版本4.12.0camunda-bpm camunda-modeler等历史版本下载 3、汉化Camunda Modeler汉化添加简体中文和繁体中文支持 4、集成如何实现Springbootca…

Android Studio实现内容丰富的安卓高校评教系统

如需源码可以添加q-------3290510686&#xff0c;也有演示视频演示具体功能&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动。 项目编号114 1.开发环境 android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.查看公告 3.查…

口语理解任务源码详解系列(一)数据集构建

口语理解任务源码详解系列&#xff08;一&#xff09;数据集构建 写在前面 本系列从零开始构建口语理解项目&#xff0c;整个项目分为意图分类与槽位填充两个子任务。项目采用的数据集为ATIS航空领域口语理解数据集&#xff0c;项目源码请传送到&#xff1a;github 一、处理数据…

网络编程1—— IP地址 + 端口号 +TCP/IP协议 + 协议分层的封装与应用

文章目录 前言一、网络发展各阶段二、网络通信的三大要素1.IP地址2.端口号3.网络协议 三、TCP/IP五层网络模型各层级的用处网络设备所在分层 四、封装和分用封装分用网络传输的实际情况 总结 前言 本人是一个刚刚上路的IT新兵,菜鸟!分享一点自己的见解,如果有错误的地方欢迎各…

搞懂推荐系统中的评价指标NDCG(CG、DCG、IDCG)

这些指标都是衡量搜索引擎算法的指标。搜索引擎一般采用PI&#xff08;peritem&#xff09;的方式进行评测&#xff0c;简单地说就是逐条对搜索结果进行分等级的打分。假设我们现在在Google上搜索一个词&#xff0c;然后得到5个结果。我们对这些结果进行3个等级的区分&#xff…

cmd可以用node但是vscode报错--node : 无法将“node”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

原因&#xff1a;环境变量配置错误 解决&#xff1a; a.如果不想配置环境变量&#xff0c;可用管理员方式运行vscode后&#xff0c;重启编译器&#xff1a; 若以上方法不行&#xff0c;需要老老实实配置环境变量&#xff1a; b.配置 系统环境变量&#xff08;S&#xff09; 即…

机器学习20:嵌入-Embeddings

嵌入&#xff08;Embeddings&#xff09;是一个相对低维的空间&#xff0c;我们可以将高维向量转换到其中。嵌入使得对大型输入&#xff08;例如表示单词的稀疏向量&#xff09;进行机器学习变得更加容易。理想情况下&#xff0c;嵌入通过将语义相似的输入紧密地放置在嵌入空间…