Eigen库笔记整理(一)
首先熟悉Eigen库的用途,自行百度。
引入头文件:
// Eigen 部分 #include <Eigen/Core> // 稠密矩阵的代数运算(逆,特征值等) #include <Eigen/Dense>
定义变量:
Eigen 中所有向量和矩阵都是Eigen::Matrix,它是一个模板类。
它的前三个参数为:数据类型,行,列
Eigen 通过 typedef 提供了许多内置类型,不过底层仍是Eigen::Matrix
例如:
Eigen::Matrix<, > matrix_23; // 声明一个2*3的float矩阵 Eigen::Vector3d v_3d; //Vector3d 实质上是 Eigen::Matrix<double, 3, 1>Eigen::Matrix3d matrix_33 ;//Matrix3d 实质上是 Eigen::Matrix<double, 3, 3>
初始化:
matrix_33 = Eigen::Matrix3d::Zero(); //初始化为零 matrix_23 << , , , , , ; //输入数据(初始化)matrix_33 = Eigen::Matrix3d::Random(); // 随机数矩阵
访问数据:
cout <<matrix_23 << endl; // 输出 // 用()访问矩阵中的元素 ; i<; i++) { ; j<; j++) cout<<matrix_23(i,j)<<"\t"; cout<<endl; }
矩阵的乘法:
注意:
1、在Eigen里不能混合两种不同类型的矩阵,Eigen不会帮我们自动类型转换。我们需要自己进行显示转换。
如果我们不显式的进行类型转换,
Eigen::Matrix<, > result_wrong_type = matrix_23 * v_3d;
则报错如下:(有时候编译器就是这么不友好的提示一堆错误,也不直接告诉你是因为类型不对,摊手┑( ̄Д  ̄)┍)
/home/wy/workdir/slambook/ch3/useEigen/build> make -j2 Scanning dependencies of target eigenMatrix [ %] Building CXX object CMakeFiles/eigenMatrix.dir/eigenMatrix.cpp.o In file included :, : /usr/include/eigen3/Eigen/src/Core/Product.h: In instantiation of ‘, >, Eigen::Matrix<, >, Eigen::DenseShape, Eigen::DenseShape>’: /usr/include/eigen3/Eigen/src/Core/Product.h::: required , >, Eigen::Matrix<, >, > >’ /usr/include/eigen3/Eigen/src/Core/Product.h::: required , >, Eigen::Matrix<, >, , >’ /usr/include/eigen3/Eigen/src/Core/Product.h::: required , >, Eigen::Matrix<, >, , Eigen::Dense>’ /usr/include/eigen3/Eigen/src/Core/Product.h::: required , >, Eigen::Matrix<, >, >’ /home/wy/workdir/slambook/ch3/useEigen/eigenMatrix.cpp::: required from here /usr/include/eigen3/Eigen/src/Core/Product.h::: error: no type named ‘ReturnType’ in ‘struct Eigen::internal::scalar_product_traits<float, double>’ typedef typename scalar_product_traits<typename Lhs::Scalar, typename Rhs::Scalar>::ReturnType Scalar; ^ In file included :, : /usr/include/eigen3/Eigen/src/Core/DenseBase.h: In instantiation of ‘, >, Eigen::Matrix<, >, > >’: /usr/include/eigen3/Eigen/src/Core/MatrixBase.h::: required , >, Eigen::Matrix<, >, > >’ /usr/include/eigen3/Eigen/src/Core/Product.h::: required , >, Eigen::Matrix<, >, , >’ /usr/include/eigen3/Eigen/src/Core/Product.h::: required , >, Eigen::Matrix<, >, , Eigen::Dense>’ /usr/include/eigen3/Eigen/src/Core/Product.h::: required , >, Eigen::Matrix<, >, >’ /home/wy/workdir/slambook/ch3/useEigen/eigenMatrix.cpp::: required from here /usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope using Base::operator*; ^ /usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope using Base::operator/; ^ /usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope using Base::derived; ^ /usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope using Base::const_cast_derived; ^ /usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope using Base::rows; ^ /usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope using Base::cols; ^ /usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope using Base::size; ^ /usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope using Base::rowIndexByOuterInner; ^ /usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope using Base::colIndexByOuterInner; ^ /usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope using Base::coeff; ^ /usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope using Base::coeffByOuterInner; ^ /usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope using Base::operator(); ^ /usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope using Base::operator[]; ^ /usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope using Base::x; ^ /usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope using Base::y; ^ /usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope using Base::z; ^ /usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope using Base::w; ^ /usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope using Base::stride; ^ /usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope using Base::innerStride; ^ /usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope using Base::outerStride; ^ /usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope using Base::rowStride; ^ /usr/include/eigen3/Eigen/src/Core/DenseBase.h::: error: using-declaration for non-member at class scope using Base::colStride; ^ In file included :, : /usr/include/eigen3/Eigen/src/Core/MatrixBase.h: In instantiation of ‘, >, Eigen::Matrix<, >, > >’: /usr/include/eigen3/Eigen/src/Core/Product.h::: required , >, Eigen::Matrix<, >, , >’ /usr/include/eigen3/Eigen/src/Core/Product.h::: required , >, Eigen::Matrix<, >, , Eigen::Dense>’ /usr/include/eigen3/Eigen/src/Core/Product.h::: required , >, Eigen::Matrix<, >, >’ /home/wy/workdir/slambook/ch3/useEigen/eigenMatrix.cpp::: required from here /usr/include/eigen3/Eigen/src/Core/MatrixBase.h::: error: no members matching ‘Eigen::MatrixBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >::Base {aka Eigen::DenseBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >}::derived’ , >, Eigen::Matrix<, >, > >::Base {aka , >, Eigen::Matrix<, >, > >}’ using Base::derived; ^ /usr/include/eigen3/Eigen/src/Core/MatrixBase.h::: error: no members matching ‘Eigen::MatrixBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >::Base {aka Eigen::DenseBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >}::const_cast_derived’ , >, Eigen::Matrix<, >, > >::Base {aka , >, Eigen::Matrix<, >, > >}’ using Base::const_cast_derived; ^ /usr/include/eigen3/Eigen/src/Core/MatrixBase.h::: error: no members matching ‘Eigen::MatrixBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >::Base {aka Eigen::DenseBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >}::rows’ , >, Eigen::Matrix<, >, > >::Base {aka , >, Eigen::Matrix<, >, > >}’ using Base::rows; ^ /usr/include/eigen3/Eigen/src/Core/MatrixBase.h::: error: no members matching ‘Eigen::MatrixBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >::Base {aka Eigen::DenseBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >}::cols’ , >, Eigen::Matrix<, >, > >::Base {aka , >, Eigen::Matrix<, >, > >}’ using Base::cols; ^ /usr/include/eigen3/Eigen/src/Core/MatrixBase.h::: error: no members matching ‘Eigen::MatrixBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >::Base {aka Eigen::DenseBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >}::size’ , >, Eigen::Matrix<, >, > >::Base {aka , >, Eigen::Matrix<, >, > >}’ using Base::size; ^ /usr/include/eigen3/Eigen/src/Core/MatrixBase.h::: error: no members matching ‘Eigen::MatrixBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >::Base {aka Eigen::DenseBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >}::coeff’ , >, Eigen::Matrix<, >, > >::Base {aka , >, Eigen::Matrix<, >, > >}’ using Base::coeff; ^ /usr/include/eigen3/Eigen/src/Core/MatrixBase.h::: error: no members matching ‘Eigen::MatrixBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >::Base {aka Eigen::DenseBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >}::coeffRef’ , >, Eigen::Matrix<, >, > >::Base {aka , >, Eigen::Matrix<, >, > >}’ using Base::coeffRef; ^ /usr/include/eigen3/Eigen/src/Core/MatrixBase.h::: error: no members matching ‘Eigen::MatrixBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >::Base {aka Eigen::DenseBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >}::eval’ , >, Eigen::Matrix<, >, > >::Base {aka , >, Eigen::Matrix<, >, > >}’ using Base::eval; ^ /usr/include/eigen3/Eigen/src/Core/MatrixBase.h::: error: no members matching ‘Eigen::MatrixBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >::Base {aka Eigen::DenseBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >}::, >, Eigen::Matrix<, >, > >::Base {aka , >, Eigen::Matrix<, >, > >}’ using Base::operator*=; ^ /usr/include/eigen3/Eigen/src/Core/MatrixBase.h::: error: no members matching ‘Eigen::MatrixBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >::Base {aka Eigen::DenseBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >}::, >, Eigen::Matrix<, >, > >::Base {aka , >, Eigen::Matrix<, >, > >}’ using Base::operator/=; ^ /usr/include/eigen3/Eigen/src/Core/MatrixBase.h::: error: no members matching ‘Eigen::MatrixBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >::Base {aka Eigen::DenseBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >}::, >, Eigen::Matrix<, >, > >::Base {aka , >, Eigen::Matrix<, >, > >}’ using Base::operator*; ^ /usr/include/eigen3/Eigen/src/Core/MatrixBase.h::: error: no members matching ‘Eigen::MatrixBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >::Base {aka Eigen::DenseBase<Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, > >}::, >, Eigen::Matrix<, >, > >::Base {aka , >, Eigen::Matrix<, >, > >}’ using Base::operator/; ^ In file included :, : /usr/include/eigen3/Eigen/src/Core/Product.h: In instantiation of ‘, >, Eigen::Matrix<, >, , Eigen::Dense>’: /usr/include/eigen3/Eigen/src/Core/Product.h::: required , >, Eigen::Matrix<, >, >’ /home/wy/workdir/slambook/ch3/useEigen/eigenMatrix.cpp::: required from here /usr/include/eigen3/Eigen/src/Core/util/Macros.h::: error: no members matching ‘Eigen::ProductImpl<Eigen::Matrix<, >, Eigen::Matrix<, >, , Eigen::Dense>::Base {aka Eigen::, >, Eigen::Matrix<, >, , >}::derived’ , >, Eigen::Matrix<, >, , Eigen::Dense>::Base {aka , >, Eigen::Matrix<, >, , >}’ using Base::derived; \ ^ /usr/include/eigen3/Eigen/src/Core/util/Macros.h::: note: in expansion of macro ‘EIGEN_GENERIC_PUBLIC_INTERFACE’ EIGEN_GENERIC_PUBLIC_INTERFACE(Derived) \ ^ /usr/include/eigen3/Eigen/src/Core/Product.h::: note: in expansion of macro ‘EIGEN_DENSE_PUBLIC_INTERFACE’ EIGEN_DENSE_PUBLIC_INTERFACE(Derived) ^ /usr/include/eigen3/Eigen/src/Core/util/Macros.h::: error: no members matching ‘Eigen::ProductImpl<Eigen::Matrix<, >, Eigen::Matrix<, >, , Eigen::Dense>::Base {aka Eigen::, >, Eigen::Matrix<, >, , >}::const_cast_derived’ , >, Eigen::Matrix<, >, , Eigen::Dense>::Base {aka , >, Eigen::Matrix<, >, , >}’ using Base::const_cast_derived; ^ /usr/include/eigen3/Eigen/src/Core/util/Macros.h::: note: in expansion of macro ‘EIGEN_GENERIC_PUBLIC_INTERFACE’ EIGEN_GENERIC_PUBLIC_INTERFACE(Derived) \ ^ /usr/include/eigen3/Eigen/src/Core/Product.h::: note: in expansion of macro ‘EIGEN_DENSE_PUBLIC_INTERFACE’ EIGEN_DENSE_PUBLIC_INTERFACE(Derived) ^ /usr/include/eigen3/Eigen/src/Core/Product.h: In instantiation of ‘, >, Eigen::Matrix<, >, >’: /home/wy/workdir/slambook/ch3/useEigen/eigenMatrix.cpp::: required from here /usr/include/eigen3/Eigen/src/Core/util/Macros.h::: error: no members matching ‘Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, >::Base {aka Eigen::, >, Eigen::Matrix<, >, , >}::derived’ , >, Eigen::Matrix<, >, >::Base {aka , >, Eigen::Matrix<, >, , >}’ using Base::derived; \ ^ /usr/include/eigen3/Eigen/src/Core/Product.h::: note: in expansion of macro ‘EIGEN_GENERIC_PUBLIC_INTERFACE’ EIGEN_GENERIC_PUBLIC_INTERFACE(Product) ^ /usr/include/eigen3/Eigen/src/Core/util/Macros.h::: error: no members matching ‘Eigen::Product<Eigen::Matrix<, >, Eigen::Matrix<, >, >::Base {aka Eigen::, >, Eigen::Matrix<, >, , >}::const_cast_derived’ , >, Eigen::Matrix<, >, >::Base {aka , >, Eigen::Matrix<, >, , >}’ using Base::const_cast_derived; ^ /usr/include/eigen3/Eigen/src/Core/Product.h::: note: in expansion of macro ‘EIGEN_GENERIC_PUBLIC_INTERFACE’ EIGEN_GENERIC_PUBLIC_INTERFACE(Product) ^ /home/wy/workdir/slambook/ch3/useEigen/eigenMatrix.cpp: In function ‘int main(int, char**)’: /home/wy/workdir/slambook/ch3/useEigen/eigenMatrix.cpp::: error: conversion , >, Eigen::Matrix<, >, >’ to non-scalar type ‘Eigen::Matrix<, >’ requested Eigen::Matrix<, > result_wrong_type = matrix_23 * v_3d; ^ CMakeFiles/eigenMatrix.dir/build.make:: recipe for target 'CMakeFiles/eigenMatrix.dir/eigenMatrix.cpp.o' failed make[]: *** [CMakeFiles/eigenMatrix.dir/eigenMatrix.cpp.o] Error CMakeFiles/Makefile2:: recipe for target 'CMakeFiles/eigenMatrix.dir/all' failed make[]: *** [CMakeFiles/eigenMatrix.dir/all] Error Makefile:: recipe for target 'all' failed make: *** [all] Error *** Failure: Exit code ***
我们应该显式转换,代码如下:
Eigen::Matrix<, > result = matrix_23.cast<double>() * v_3d;
2、在Eigen中,不能搞错矩阵的维度。(这是线性代数中矩阵相乘的基本前提要求)
Eigen::Matrix<, > result_wrong_dimension = matrix_23.cast<double>() * v_3d;
维度不对的时候,报错如下:
/home/wy/workdir/slambook/ch3/useEigen/build> make -j2 Scanning dependencies of target eigenMatrix [ %] Building CXX object CMakeFiles/eigenMatrix.dir/eigenMatrix.cpp.o In file included :, : /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h: In instantiation of ‘, , , , >; Src = Eigen::Product<Eigen::CwiseUnaryOp<Eigen::, > >, Eigen::Matrix<, >, >; Func = Eigen::internal::assign_op<double>]’: /usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h::: required , > >, Eigen::Matrix<, >, >; Derived = Eigen::Matrix<, , , , >]’ /usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h::: required , > >, Eigen::Matrix<, >, >; Derived = Eigen::Matrix<, , , , >]’ /usr/include/eigen3/Eigen/src/Core/Matrix.h::: required , > >, Eigen::Matrix<, >, >; _Scalar = ; ; ; ; ]’ /home/wy/workdir/slambook/ch3/useEigen/eigenMatrix.cpp::: required from here /usr/include/eigen3/Eigen/src/Core/util/StaticAssert.h::: error: ‘YOU_MIXED_MATRICES_OF_DIFFERENT_SIZES’ is not a member of ‘Eigen::internal::static_assertion<false>’ if (Eigen::internal::static_assertion<static_cast<bool>(CONDITION)>::MSG) {} ^ /usr/include/eigen3/Eigen/src/Core/util/StaticAssert.h::: note: in expansion of macro ‘EIGEN_STATIC_ASSERT’ EIGEN_STATIC_ASSERT( \ ^ /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h::: note: in expansion of macro ‘EIGEN_STATIC_ASSERT_SAME_MATRIX_SIZE’ EIGEN_STATIC_ASSERT_SAME_MATRIX_SIZE(ActualDstTypeCleaned,Src) ^ CMakeFiles/eigenMatrix.dir/build.make:: recipe for target 'CMakeFiles/eigenMatrix.dir/eigenMatrix.cpp.o' failed make[]: *** [CMakeFiles/eigenMatrix.dir/eigenMatrix.cpp.o] Error CMakeFiles/Makefile2:: recipe for target 'CMakeFiles/eigenMatrix.dir/all' failed make[]: *** [CMakeFiles/eigenMatrix.dir/all] Error Makefile:: recipe for target 'all' failed make: *** [all] Error *** Failure: Exit code ***
四则运算:
matrix_33.transpose() // 转置 matrix_33.sum() // 各元素和 matrix_33.trace() // 迹 *matrix_33 // 数乘 matrix_33.inverse() // 逆 matrix_33.determinant() // 行列式
求解方程:
cout<<"我们求解 matrix_NN * x = v_Nd 这个方程"<<endl; // N的大小在前边的宏里定义(N=50),它由随机数生成 // 直接求逆自然是最直接的,但是求逆运算量大 x = matrix_NN.inverse()*v_Nd; Eigen::Matrix< double, MATRIX_SIZE, MATRIX_SIZE > matrix_NN; matrix_NN = Eigen::MatrixXd::Random( MATRIX_SIZE, MATRIX_SIZE ); Eigen::Matrix< > v_Nd; v_Nd = Eigen::MatrixXd::Random( MATRIX_SIZE, ); clock_t time_stt = clock(); // 计时 // 直接求逆 Eigen::Matrix<> x = matrix_NN.inverse()*v_Nd; cout <<* (clock() - time_stt)/(double)CLOCKS_PER_SEC << "ms"<< endl; // 通常用矩阵分解来求,例如QR分解,速度会快很多 time_stt = clock(); x = matrix_NN.colPivHouseholderQr().solve(v_Nd); cout <<* (clock() - time_stt)/(double)CLOCKS_PER_SEC <<"ms" << endl;
运行如下:
我们求解 matrix_NN * x = v_Nd 这个方程 time use .65ms time use .102ms
Eigen库笔记整理(一)的更多相关文章
- Eigen库笔记整理(二)
Eigen/Geometry 模块提供了各种旋转和平移的表示 旋转矩阵直接使用 Matrix3d 或 Matrix3f Eigen::Matrix3d rotation_matrix = Eigen: ...
- java笔记整理
Java 笔记整理 包含内容 Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, E ...
- JS第一周学习笔记整理
目录 JS正式课第一周笔记整理 JS正式课第一周笔记整理 webstorm : 代码编辑器 浏览器: 代码解析器: Git : 是一个工具;用于团队协作开发项目管理代码的工具:在工作中用git.svn ...
- 【mysql学习笔记整理】
/*mysql学习笔记整理*/ /*常用的数据库操作对象*/ #库的操作#创建#数据库的创建USE mysql;CREATE DATABASE db_x;#删除#删除数据库DROP DATABASE ...
- NPM 学习笔记整理
NPM 学习笔记整理 阅读 550,2017年06月04日 发布,来源:blog.ihoey.com 什么是 NPM npm 之于 Node ,就像 pip 之于 Python , gem 之于 Ru ...
- Three入门学习笔记整理
一.官方网站:https://threejs.org 二.关于Three.js 三.开始 四.实例 基本结构 结果 五.概念 坐标系 场景 相机 灯光 3D模型 六.简单动画 七.交互控制 结束 # ...
- 最全mysql笔记整理
mysql笔记整理 作者:python技术人 博客:https://www.cnblogs.com/lpdeboke Windows服务 -- 启动MySQL net start mysql -- 创 ...
- 布客·ApacheCN 翻译/校对/笔记整理活动进度公告 2020.1
注意 请贡献者查看参与方式,然后直接在 ISSUE 中认领. 翻译/校对三个文档就可以申请当负责人,我们会把你拉进合伙人群.翻译/校对五个文档的贡献者,可以申请实习证明. 请私聊片刻(52981514 ...
- 开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发
[原][开源框架]Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位... 时间 2015-01-05 10:08:18 我是程序猿,我为自己代言 原文 http: ...
随机推荐
- ps图片怎样实现渐变
首先我先将一副图片展示给大家: 我所做的效果是想把图片做成渐变.而不改变中间图片的颜色效果. 接下来我来说明一下我的所做思路. 首先将图片中间部分选择出来.然后复制成一个图层. 详细操作是用魔棒进行反 ...
- WEB安全实战(四)关于 Cookie
前言 这几天中,一直再跟漏洞打交道,而在这些漏洞中,出现的最多的就是 Cookie 和 Session 了.这篇文章就简单的介绍一些 Cookie 中最经常使用的四个属性.也算是为兴许的文章做一个铺垫 ...
- easyUI的getChanges中的inserted
easyUI中的datagrid.treegrid编辑了数据,可以用getChanges命令来获取更新情况.按道理,有"inserted"."updated". ...
- Java生成带logo 的二维码
这个工具类主要实现了两点功能: 1. 生成任意文链接的二维码. 2. 在二维码的中间加入图像. 主要实现步骤: 第一步: 导入QR二维码3.0 版本的core包和一张jpg图片(logo). core ...
- 关于ExecuteNonQuery执行存储过程的返回值 、、实例讲解存储过程的返回值与传出参数、、、C#获取存储过程的 Return返回值和Output输出参数值
关于ExecuteNonQuery执行存储过程的返回值 用到过ExecuteNonQuery()函数的朋友们在开发的时候肯定这么用过. if(cmd.ExecuteNonQuery("xxx ...
- 【HDU 4547】 CD操作
[题目链接] 点击打开链接 [算法] 分四种情况讨论 : 1. 当前目录和目标目录是同一目录,不需要变换,答案为0 2. 当前目录是目标目录的祖先,答案为当前目录的深度 - 目标目录的深度 3. 当前 ...
- linux驱动编写(Kconfig文件和Makefile文件)
在Linux编写驱动的过程中,有两个文件是我们必须要了解和知晓的.这其中,一个是Kconfig文件,另外一个是Makefile文件.如果大家比较熟悉的话,那么肯定对内核编译需要的.config文件不陌 ...
- ubuntu 16.04 Eclipse 图标显示为 ?(已解决)
这个问题挺好解决: sudo gedit /usr/share/applications/eclipse.desktop在这个文件中将Icon=/home/soyo/eclipse/icon.xpm, ...
- E20170531-hm
passage n. 通路; 通道 discrete adj. 分离的,不相关联的; 分立式; 非连续; alternative 替代的; 另类的; 备选的; 其他的; intent ...
- 栗染-Myeclispe连接SQL Server数据库
第一步,在SQL server方面 这里是以身份验证登录. 这里我是建了一个hw的数据库,其他没啥说的. 第二步,最主要的一部分 因为第一次连接SQL Server数据库,所以就不知道还有这一步.不然 ...