c#和matlab混合编程时遇到了一点问题,求帮助

是这样的,正在做一个数字图像处理的项目,在matlab里实现了一个去雾算法,然后想用c#调用它,把这个算法编译成了一个dll加到工程里,现在发现程序一打开,就没有什么反应,一开始以为是调用matlab的DLL会慢一些,没想到等了半天还是没动静,因为是第一次接触matlab和.net的混合编程,所以也不知道问题出在什么地方,求大虾解救。

4个回答

最直接的办法就是把matlab代码转成 C#的,即有了代码,有学到了理论!

这里上代码
这是matlab的代码:
function [J]=defog(img)

kenlRatio = .01;
minAtomsLight = 240;
%figure,imshow(uint8(img)), title('src');

sz=size(img);

w=sz(2);

h=sz(1);

dc = zeros(h,w);

for y=1:h

for x=1:w

dc(y,x) = min(img(y,x,:));

end

end

winodwsize = floor(max([3, w*kenlRatio, h*kenlRatio]));

dc2 = minfilt2(dc, [winodwsize,winodwsize]);

dc2(h,w)=0;

t = 255 - dc2;

t_d=double(t)/255;

A = min([minAtomsLight, max(max(dc2))]);

J = zeros(h,w,3);

img_d = double(img);

r = winodwsize*4;
eps = 10^-6;

filtered = guidedfilter_color((double(img))/255, t_d, r, eps);

t_d = filtered;

J(:,:,1) = (img_d(:,:,1) - (1-0.95*t_d)*A)./t_d;

J(:,:,2) = (img_d(:,:,2) - (1-0.95*t_d)*A)./t_d;

J(:,:,3) = (img_d(:,:,3) - (1-0.95*t_d)*A)./t_d;

J=enhancement(J);

img_d(1,3,1)

J=uint8(J);

end
这段代码已经测试过没有问题。。把它编译成了一个DLL加到了工程里

这是c#的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Drawing.Imaging;
using MathWorks.MATLAB.NET.Arrays;
using defog;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
Bitmap bm = new Bitmap(@"C:\Users\User\Desktop\sample.bmp");
byte[, ,] myImage = ImageToBytes(bm);

defog.Class1 output = new defog.Class1();
MWNumericArray img = new MWNumericArray(myImage);
MWNumericArray result = (MWNumericArray)output.defog(img);
MessageBox.Show("succeed");
DisposeImage(myImage, bm);
pictureBox1.Image = bm;

}

private byte[,,] ImageToBytes(Bitmap img)
{
Rectangle lockRect = new Rectangle(0, 0, img.Width, img.Height);
BitmapData imgData = img.LockBits(lockRect, ImageLockMode.ReadOnly, img.PixelFormat);

byte[,] rband = new byte[img.Height, img.Width]; // 彩色图片的R、G、B三层分别构造一个二维数组
byte[,] gband = new byte[img.Height, img.Width];
byte[,] bband = new byte[img.Height, img.Width];
int rowOffset = imgData.Stride - img.Width * 3;

unsafe
{
byte* imgPtr = (byte*)imgData.Scan0.ToPointer();

for (int i = 0; i < img.Height; ++i)
{
for (int j = 0; j < img.Width; ++j)
{
rband[i, j] = imgPtr[2]; // 每个像素的指针是按BGR的顺序存储的
gband[i, j] = imgPtr[1];
bband[i, j] = imgPtr[0];

imgPtr += 3; // 偏移一个像素
}
imgPtr += rowOffset; // 偏移到下一行
}
}

img.UnlockBits(imgData);
byte[, ,] myImage = new byte[img.Height, img.Width, 3];

for(int i=0;i<img.Height;i++)
{
for(int j=0;j<img.Width;j++)
{
myImage[i, j, 0] = rband[i, j];
myImage[i, j, 1] = gband[i, j];
myImage[i, j, 2] = bband[i, j];
}
}

return myImage;
}

private void DisposeImage(byte [,,] myImage,Bitmap img)
{
Rectangle lockRect = new Rectangle(0, 0, img.Width, img.Height);
BitmapData imgData = img.LockBits(lockRect, ImageLockMode.ReadOnly, img.PixelFormat);

int rowOffset = imgData.Stride - img.Width * 3;

unsafe
{
byte* imgPtr = (byte*)imgData.Scan0.ToPointer();

for (int i = 0; i < img.Height; ++i)
{
for (int j = 0; j < img.Width; ++j)
{
imgPtr[2] = myImage[i, j, 0];
imgPtr[1] = myImage[i, j, 1];
imgPtr[0] = myImage[i, j, 2];

imgPtr += 3; // 偏移一个像素
}
imgPtr += rowOffset; // 偏移到下一行
}
}
img.UnlockBits(imgData);

}
}
}
这段代码注释掉那部分dll调用的部分也是测试过没有问题的实在是没辙了,求大虾拯救

把代码换成C#程序代码

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c#与matlab混合编程,用c#读表作为参数传入matlab运算的速度要远小于matlab自己读表
关于c#与MATLAB混合编程(dll打包引用),MATLAB算法的参数 是通过读取excel表得到的,参数是一组向量,但是通过MATLAB程序读表和通过c#读表再以参数的形式传入MATLAB,两者的速度差异非常大,差距是好几倍。这里必须用c#读表,要不matlab读表的程序打包在dll里面修改起来太麻烦。请问这是怎么个情况,为什么用c#读表会慢那么多呢。我调试过,在c#中创建那个算法的对象不需要多久,时间就长在计算上,请问应该怎么改进
C#与matlab混合编程并实现实时交互的困惑
最近在开发一个石油(测井)方面的软件,需要绘制常规的九条曲线,考虑到matlab的强大绘图功能,像3D绘图等,因此想在C#中通过调用matlab来绘图,但由于缺乏这方面的编程经验,所以没法下手(我还在校学习),在网上查了相关的资料,但始终没能调试成功,在这里希望大家能帮助我,如果有相关的资料或者代码,希望大家能够传给我一份,谢谢,还有一个问题就是调用完成绘图完成后最好能够进行实时交互,像matlab中绘图能够360度旋转观看之类的……谢谢大家……
matlab和C#混合编程,C#如何读取matlab函数返回的矩阵
在matlab中m文件中写一个函数返回一个矩阵,在C#中怎么读取该矩阵中的值?
C# 调用matlab regress 函数报错
今天研究C# 调用 matlab 编译的动态库,在将简单加法运算在C# 中调用成功后,满怀开心的心情进一步的调用matlab中regress 函数,结果灾难的报错了,经过半天的奋斗各种百度,谷歌,未能找到解决方案。 .m文件如下: ``` function c = MtRegress( y,x ) r=x'; t=y'; c=regress( t,r ); end ``` c# 如下: ``` MatClass matClass = new MatClass(); MWNumericArray x = new double[] { 1, 2, 3, 4, 5, 6 }; MWNumericArray y = new double[] { 1, 3, 4, 10, 20, 30 }; var data = matClass.MtRegress(y, x); ``` 报错如下: “System.Exception”类型的未经处理的异常在 MWArray.dll 中发生 其他信息: ... MWMCR::EvaluateFunction error ... 未定义与 'double' 类型的输入参数相对应的函数 'regress'。 Error in => MtRegress.m at line 6. ... Matlab M-code Stack Trace ... at file C:\Users\ADMINI~1\AppData\Local\Temp\Administrator\mcrCache8.3\MatLib0\MatLib\MtRegress.m, name MtRegress, line 6. 求大神给出解决方案!
matlab 和 c#混合编程 奔溃了!求救...
MATLAB has encountered an internal problem and needs to close. MATLAB crash file:C:\Users\ASUS\AppData\Local\Temp\matlab_crash_dump.8888-1: ------------------------------------------------------------------------ Unhandled C++ exception detected at Sun Jul 09 19:06:28 2017 ------------------------------------------------------------------------ Configuration: Crash Decoding : Disabled Crash Mode : continue (default) Default Encoding : GBK Host Name : ASUS-PC MATLAB Architecture : win64 MATLAB Root : D:\MATLAB MATLAB Version : 9.0.0.341360 (R2016a) Operating System : Microsoft Windows 8.1 中文版 Processor ID : x86 Family 6 Model 60 Stepping 3, GenuineIntel Virtual Machine : Java 1.7.0_60-b19 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode Window System : Version 6.3 (Build 9600) Fault Count: 1 Abnormal termination: Unhandled C++ exception Register State (from fault): RAX = 0000000007c980f8 RBX = 00000000fd90c880 RCX = 000000000adf6b10 RDX = 00000000fd66b79e RSP = 000000000ee1f900 RBP = 000000000ee1fa40 RSI = 000000000ee1fcc0 RDI = 000000000ee1fa70 R8 = 00000000fd683db9 R9 = 000000000000007f R10 = 0000000000000083 R11 = 000000000adf7310 R12 = 0000000000000000 R13 = 0000000000000000 R14 = 000000000ee1fea0 R15 = 0000000000000000 RIP = 00007ffd834195fc EFL = 00000206 CS = 0033 FS = 0053 GS = 002b Stack Trace (from fault): [ 0] 0x00007ffd834195fc C:\Windows\system32\KERNELBASE.dll+00038396 RaiseException+00000108 [ 1] 0x00007ffd716bef63 D:\MATLAB\bin\win64\MSVCR120.dll+00388963 CxxThrowException+00000179 [ 2] 0x00000000fd62549c D:\MATLAB\bin\win64\mlutil.dll+00087196 cmddistributor::RuntimeException::rethrow+00000044 [ 3] 0x0000000005e128de D:\MATLAB\bin\win64\MVMLocal.dll+00141534 mvm_server::inproc::LocalMVM::terminate+00001566 [ 4] 0x0000000005e15fef D:\MATLAB\bin\win64\MVMLocal.dll+00155631 mvm_server::inproc::LocalFactory::findMVM+00000287 [ 5] 0x0000000005e26b0a D:\MATLAB\bin\win64\MVMLocal.dll+00224010 mvm_server::inproc::LocalFactory::terminate+00060762 [ 6] 0x0000000005e262fd D:\MATLAB\bin\win64\MVMLocal.dll+00221949 mvm_server::inproc::LocalFactory::terminate+00058701 [ 7] 0x0000000005e2a2be D:\MATLAB\bin\win64\MVMLocal.dll+00238270 mvm_server::inproc::LocalFactory::terminate+00075022 [ 8] 0x00007ffd72e5b903 D:\MATLAB\bin\win64\boost_thread-vc120-mt-1_56.dll+00047363 boost::thread::swap+00000083 [ 9] 0x00007ffd71684f7f D:\MATLAB\bin\win64\MSVCR120.dll+00151423 beginthreadex+00000263 [ 10] 0x00007ffd71685126 D:\MATLAB\bin\win64\MSVCR120.dll+00151846 endthreadex+00000402 [ 11] 0x00007ffd857013d2 C:\Windows\system32\KERNEL32.DLL+00005074 BaseThreadInitThunk+00000034 [ 12] 0x00007ffd862354e4 C:\Windows\SYSTEM32\ntdll.dll+00087268 RtlUserThreadStart+00000052 If this problem is reproducible, please submit a Service Request via: http://www.mathworks.com/support/contact_us/ A technical support engineer might contact you with further information. Thank you for your help.
未经处理的异常: System.TypeLoadException: 未能从程序集“……”
在C#和MATLAB混合编程时,需要引用生成的.dll文件,但是当VS运行程序的时候,就提示 以下内容:“未经处理的异常: System.TypeLoadException: 未能从程序集“TestAdd, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null ”中加载类型“testAdd.Add”。 ![图片说明](https://img-ask.csdn.net/upload/201609/05/1473034783_973783.png) 请有经验或者是知道情况的同仁们和我说明以下,感激不尽啊。
VS2017调用MATLAB2015的dll文件出错
求助大神!我现在做C#和matlab的混合编程,按博客里面对方法调用matlab文件后, 运行时提示“MathWorks.MATLAB.NET.Arrays.MWArray”的类型初始值设定项引发异常。”还有”DllNotFoundException: 无法加载 DLL“mclmcrrt9_0.dll”: 找不到指定的模块。” MWCharArray filepath ="C:\\Users\\parter\\Desktop\\G12508\\7.15.xlsx"; BS1.Class1 c = new Class1(); MWNumericArray id1= null; id1 = (MWNumericArray)c.BS1(filepath); double[,] l1 = (double[,])id1.ToArray(MWArrayComponent.Real); 程序如上,错误提示在第一行。我试过直接添加引用matlab runtime里的mclmcrrt9_0.dll但显示错误无法添加。请问这个问题要怎么解决呢?
求看一下这个Matlab&c++混合编程的代码实现的是什么功能?
RT,程序代码如下: ``` #include <math.h> #include<omp.h> #include <sys/types.h> #include "mex.h" #define INF 1E20 typedef signed int int32_t; /* * Generalized distance transforms based on Felzenswalb and Huttenlocher. */ static inline int square(int x) { return x*x; } void dt1d(float *src, float *dst, int *ptr, int step, int n, double a, double b) { int *v = new int[n]; float *z = new float[n+1]; int k = 0; v[0] = 0; z[0] = -INF; z[1] = +INF; for (int q = 1; q <= n-1; q++) { float s = ((src[q*step] - src[v[k]*step]) - b*(q - v[k]) + a*(square(q) - square(v[k]))) / (2*a*(q-v[k])); while (s <= z[k]) { // Update pointer k--; s = ((src[q*step] - src[v[k]*step]) - b*(q - v[k]) + a*(square(q) - square(v[k]))) / (2*a*(q-v[k])); } k++; v[k] = q; z[k] = s; z[k+1] = +INF; } k = 0; for (int q = 0; q <= n-1; q++) { while (z[k+1] < q) k++; dst[q*step] = a*square(q-v[k]) + b*(q-v[k]) + src[v[k]*step]; ptr[q*step] = v[k]; } delete [] v; delete [] z; } // matlab entry point // [M, Ix, Iy] = dt(vals, ax, bx, ay, by) void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { if (nrhs != 5) mexErrMsgTxt("Wrong number of inputs"); if (nlhs != 3) mexErrMsgTxt("Wrong number of outputs"); if (mxGetClassID(prhs[0]) != mxSINGLE_CLASS) mexErrMsgTxt("Invalid input"); const int *dims = mxGetDimensions(prhs[0]); float *vals = (float *)mxGetPr(prhs[0]); double ax = mxGetScalar(prhs[1]); double bx = mxGetScalar(prhs[2]); double ay = mxGetScalar(prhs[3]); double by = mxGetScalar(prhs[4]); mxArray *mxM = mxCreateNumericArray(2, dims, mxSINGLE_CLASS, mxREAL); mxArray *mxIx = mxCreateNumericArray(2, dims, mxINT32_CLASS, mxREAL); mxArray *mxIy = mxCreateNumericArray(2, dims, mxINT32_CLASS, mxREAL); float *M = (float *)mxGetPr(mxM); int32_t *Ix = (int32_t *)mxGetPr(mxIx); int32_t *Iy = (int32_t *)mxGetPr(mxIy); float *tmpM = (float *)mxCalloc(dims[0]*dims[1], sizeof(float)); int32_t *tmpIx = (int32_t *)mxCalloc(dims[0]*dims[1], sizeof(int32_t)); int32_t *tmpIy = (int32_t *)mxCalloc(dims[0]*dims[1], sizeof(int32_t)); int coreNum = omp_get_num_procs(); int threadNum=coreNum; if (threadNum > dims[1]) threadNum = dims[1]; if (threadNum > dims[0]) threadNum = dims[0]; omp_set_num_threads(threadNum); #pragma omp parallel for schedule (guided) for (int x = 0; x < dims[1]; x++) dt1d(vals+x*dims[0], tmpM+x*dims[0], tmpIy+x*dims[0], 1, dims[0], -ay, -by); #pragma omp parallel for schedule (guided) for (int y = 0; y < dims[0]; y++) dt1d(tmpM+y, M+y, tmpIx+y, dims[0], dims[1], -ax, -bx); // get argmins and adjust for matlab indexing from 1 for (int x = 0; x < dims[1]; x++) { for (int y = 0; y < dims[0]; y++) { int p = x*dims[0]+y; Ix[p] = tmpIx[p]+1; Iy[p] = tmpIy[tmpIx[p]*dims[0]+y]+1; } } mxFree(tmpM); mxFree(tmpIx); mxFree(tmpIy); plhs[0] = mxM; plhs[1] = mxIx; plhs[2] = mxIy; } /* %%% DEBUGGING CODE %%% N = 500; A = rand(N,N); w = rand(4,1); tic; [res,ix,iy] = dt(A,w(1),w(2),w(3),w(4)); toc; tic; [res2,ix2,iy2] = dt2(A,w(1),w(2),w(3),w(4)); toc; norm(res(:) - res2(:)) mean(ix(:) ~= ix2(:)) mean(iy(:) ~= iy2(:)) */ ``` 不太清楚这里的dt1d是从哪里来的?
关于makefile.win32的问题 稀疏编码相关作者主页上下载的matlab程序
MEX = C:\MATLAB6p5\bin\win32\mex.bat #mex NRFDIR = ./nrf MEXT = dll all: cgf_sc.c make -C nrf -f makefile.win32 $(MEX) -I$(NRFDIR) cgf_sc.c nrf/libnrfopt.a -output cgf_sc2 文件中的这几句话是什么意思呢? 好像是用到了matlab和c的混合编程 运行程序报错说找不到cgf_sc2函数 我应该怎么让程序运行起来呢 希望懂的大神指点一下_(:з」∠)_
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。 补充 有不少读者留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!!!那我在这里只能说:因为你没用,所以你没用!!! 这里主要介绍的是思路,不是天气预报!不是天气预报!!不是天气预报!!!天气预报只是用于举例。请各位不要再刚了!!! 下面是我会用到的两个场景: 每日下
面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题?
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
MyBatis研习录(01)——MyBatis概述与入门
C语言自学完备手册(33篇) Android多分辨率适配框架 JavaWeb核心技术系列教程 HTML5前端开发实战系列教程 MySQL数据库实操教程(35篇图文版) 推翻自己和过往——自定义View系列教程(10篇) 走出思维困境,踏上精进之路——Android开发进阶精华录 讲给Android程序员看的前端系列教程(40集免费视频教程+源码) 版权声明 本文原创作者:谷哥的小弟 作者博客
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。 前前言 为啥今天有个前前言呢? 因为你们的丙丙啊,昨天有牌面了哟,直接被微信官方推荐,知乎推荐,也就仅仅是还行吧(心里乐开花)
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
Python爬虫精简步骤1 获取数据
爬虫的工作分为四步: 1.获取数据。爬虫程序会根据我们提供的网址,向服务器发起请求,然后返回数据。 2.解析数据。爬虫程序会把服务器返回的数据解析成我们能读懂的格式。 3.提取数据。爬虫程序再从中提取出我们需要的数据。 4.储存数据。爬虫程序把这些有用的数据保存起来,便于你日后的使用和分析。 这一篇的内容就是:获取数据。 首先,我们将会利用一个强大的库——requests来获取数据。 在电脑上安装
Python绘图,圣诞树,花,爱心 | Turtle篇
1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle() circle.shape('circle') circle.color('red') circle.speed('fastest') circle.up() square = turtle.Turtle()
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 更多有趣分析教程,扫描下方二维码关注vx公号「裸睡的猪」 即可查看! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布
web前端javascript+jquery知识点总结
Javascript javascript 在前端网页中占有非常重要的地位,可以用于验证表单,制作特效等功能,它是一种描述语言,也是一种基于对象(Object)和事件驱动并具有安全性的脚本语言 ,语法同java类似,是一种解释性语言,边执行边解释。 JavaScript的组成: ECMAScipt 用于描述: 语法,变量和数据类型,运算符,逻辑控制语句,关键字保留字,对象。 浏览器对象模型(Br
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
文章目录1. 前言2. 数据下载3. 数据处理4. 数据可视化 1. 前言 今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。 2月6日追记:本文发布后,腾讯的数据源多次变更u
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
渗透测试-灰鸽子远控木马
木马概述 灰鸽子( Huigezi),原本该软件适用于公司和家庭管理,其功能十分强大,不但能监视摄像头、键盘记录、监控桌面、文件操作等。还提供了黑客专用功能,如:伪装系统图标、随意更换启动项名称和表述、随意更换端口、运行后自删除、毫无提示安装等,并采用反弹链接这种缺陷设计,使得使用者拥有最高权限,一经破解即无法控制。最终导致被黑客恶意使用。原作者的灰鸽子被定义为是一款集多种控制方式于一体的木马程序
Python:爬取疫情每日数据
前言 有部分同学留言说为什么412,这是因为我代码里全国的cookies需要你自己打开浏览器更新好后替换,而且这个cookies大概只能持续20秒左右! 另外全国卫健委的数据格式一直在变,也有可能会导致爬取失败! 我现在已根据2月14日最新通报稿的格式修正了! 目前每天各大平台,如腾讯、今日头条都会更新疫情每日数据,他们的数据源都是一样的,主要都是通过各地的卫健委官网通报。 为什么已经有大量平台做
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。   再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。   下文是原回答,希望能对你能有所启发。   如果我说,这个世界上人真的分三六九等,
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计
Python新型冠状病毒疫情数据自动爬取+统计+发送报告+数据屏幕(三)发送篇
今天介绍的项目是使用 Itchat 发送统计报告 项目功能设计: 定时爬取疫情数据存入Mysql 进行数据分析制作疫情报告 使用itchat给亲人朋友发送分析报告(本文) 基于Django做数据屏幕 使用Tableau做数据分析 来看看最终效果 目前已经完成,预计2月12日前更新 使用 itchat 发送数据统计报告 itchat 是一个基于 web微信的一个框架,但微信官方并不允
作为程序员的我,大学四年一直自学,全靠这些实用工具和学习网站!
我本人因为高中沉迷于爱情,导致学业荒废,后来高考,毫无疑问进入了一所普普通通的大学,实在惭愧...... 我又是那么好强,现在学历不行,没办法改变的事情了,所以,进入大学开始,我就下定决心,一定要让自己掌握更多的技能,尤其选择了计算机这个行业,一定要多学习技术。 在进入大学学习不久后,我就认清了一个现实:我这个大学的整体教学质量和学习风气,真的一言难尽,懂的人自然知道怎么回事? 怎么办?我该如何更好的提升
粒子群算法求解物流配送路线问题(python)
粒子群算法求解物流配送路线问题(python) 1.查找论文文献 找一篇物流配送路径优化+粒子群算法求解的论文 参考文献:基于混沌粒子群算法的物流配送路径优化 2.了解粒子群算法的原理 讲解通俗易懂,有数学实例的博文:https://blog.csdn.net/daaikuaichuan/article/details/81382794 3.确定编码方式和解码策略 3.1编码方式 物流配送路线的
教你如何编写第一个简单的爬虫
很多人知道爬虫,也很想利用爬虫去爬取自己想要的数据,那么爬虫到底怎么用呢?今天就教大家编写一个简单的爬虫。 下面以爬取笔者的个人博客网站为例获取第一篇文章的标题名称,教大家学会一个简单的爬虫。 第一步:获取页面 #!/usr/bin/python # coding: utf-8 import requests #引入包requests link = "http://www.santostang.
前端JS初级面试题二 (。•ˇ‸ˇ•。)老铁们!快来瞧瞧自己都会了么
1. 传统事件绑定和符合W3C标准的事件绑定有什么区别? 传统事件绑定 &lt;div onclick=""&gt;123&lt;/div&gt; div1.onclick = function(){}; &lt;button onmouseover=""&gt;&lt;/button&gt; 注意: 如果给同一个元素绑定了两次或多次相同类型的事件,那么后面的绑定会覆盖前面的绑定 (不支持DOM事...
情人节来了,教你个用 Python 表白的技巧
作者:@明哥 公众号:Python编程时光 2020年,这个看起来如此浪漫的年份,你还是一个人吗? 难不成我还能是一条狗? 18年的时候,写过一篇介绍如何使用 Python 来表白的文章。 虽然创意和使用效果都不错,但有一缺点,这是那个exe文件,女神需要打开电脑,才有可能参与进来,进而被你成功"调戏”。 由于是很早期的文章了,应该有很多人没有看过。 没有看过的,你可以点击这里查看:用Pyt...
用Python开发实用程序 – 计算器
作者:隋顺意 一段时间前,自己制作了一个库 “sui-math”。这其实是math的翻版。做完后,python既然可以轻易的完成任何的数学计算,何不用python开发一个小程序专门用以计算呢? 现在我们越来越依赖于计算器,很多复杂的计算都离不开它。我们使用过各式各样的计算器,无论是电脑自带的,还是网也上的计算器,却都没有自己动手编写属于自己计算器。今天就让我们走进计算器的世界,用python来编写...
经典算法(19)教你两分钟学会【选择排序】
这篇博客使用图文并茂的方式讲解选择排序算法,并有完整的算法逻辑以及代码实现。
Python学习笔记(语法篇)
本篇博客大部分内容摘自埃里克·马瑟斯所著的《Python编程:从入门到实战》(入门类书籍),采用举例的方式进行知识点提要 关于Python学习书籍推荐文章 《学习Python必备的8本书》 Python语法特点: 通过缩进进行语句组织 不需要变量或参数的声明 冒号 1 变量和简单数据结构 1.1 变量命名 只能包含字母、数字和下划线,且不能以数字打头。 1.2 字符串 在Python中,用引号...
用Python打造你的专属情人节贺卡,赶快发给TA浪漫一下吧
明天就是情人节了。这个情人节,注定是一个不能约会的情人节,但不能约会不代表不能浪漫。古人比我们出生早,那些浪漫的诗词早都被他们挖掘一空,比诗词我们肯定没有机会了。好在我们还有Python,不然都不知道该如何表达浪漫。接下来,浪导教你制作一个浪漫的情人节专属贺卡。
Python绘图与可视化
文章目录使用的库Matplotlib程序包绘图命令的扩展及其属性设置 使用的库 Python有很多可视化工具,如:Matplotlib。 Matplotlib是一种2D的绘图库,它可以支持硬拷贝和跨系统的交互,它可以在Python脚本、IPython的交互环境下、Web应用程序中使用。如果结合使用一种GUI工具包(如IPython),Matplotlib还具有诸如缩放和平移等交互功能。它不仅支持各...
计算机考研经验总结
计算机考研指导建议背景开始备考时间学校选择复习计划学科复习考研资料和平台心得杂杂答疑 背景     我是广东双非本科计算机类专业,大一高数没学好,英语在大四最后一次考试里过了6级,专业课掌握情况尚好。选择报考暨南大学,因为它的专业课那年只考一门数据结构,而我数据结构学的还不错,不用在专业课上花很多的时间。暨南大学和华师是广东省内仅有的两所211高校,而听说华师学校稍老,环境没有暨大好。 开始备考时...
MySQL表的增删查改(提高篇)
MySQL表的增删查改(基本篇) 接上一篇MySQL表基本的增删查改,下面看一下提高篇: 一、数据库约束 1、约束类型 NOT NULL:不为空约束。创建表时,可以指定某列不为空 UNIQUE :唯一约束。指定某列为唯一的、不重复的 DEFAULT :默认值约束。指定插入数据时,某列为空,设置默认值 PRIMARY KEY : 主键约束。NOT NULL 和 UNIQUE 的结合。确保某列(或两个...
Java实现 LeetCode 35 搜索插入位置
35. 搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1: 输入: [1,3,5,6], 5 输出: 2 示例 2: 输入: [1,3,5,6], 2 输出: 1 示例 3: 输入: [1,3,5,6], 7 输出: 4 示例 4: 输入: [1,3,5,6], 0 输出:...
整理一波国外前端学习网站
国内的普通开发者对于掌握一门新的技术不知道从哪里下手,看哪些书。为了获得相关知识会关注各种公众号、购买各种视频课程来学习,但由于这些内容本身有碎片化的特点,效果往往不太理想。以至于付出了大量的时间到最后不能够形成系统化的知识。 我同样也遇到过类似的问题,不是说公众号与视频课程不好,这些也有自身的优势,但是往往都是别人经过实践沉淀下来的,我们读过之后往往仅限于了解而已。如果要掌握还需要大量的实践、探...
相关热词 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数 c#日期精确到分钟 c#自定义异常必须继承 c#查表并返回值 c# 动态 表达式树 c# 监控方法耗时 c# listbox c#chart显示滚动条
立即提问