分类:编程

计算机(网络)的文章分为了三部分:

  • 计算机科学,收集所有计算机科学理论相关的文章,包括算法、复杂性等。更偏重于理论基础。
  • 编程相关,收集了所有与写代码相关的文章,更偏重于工程实践。
  • IT 技术,其他相关文章,更偏重于产品。

此为第二部分。

常用标签:

C++ 55 Matlab 26 Python 21 Excel 20 VBA 14 数据库 12 办公自动化 10 folly 9 编程和算法效率 9 Linux 7

  1. 安装 selenium ,使用 requestium 来调用 selenium 程序更为简单,因此可一起安装:
  2. 编程 » C++, log
    先编译 libfmt.a :
  3. 编程 » Linux, rsync
    在一个rsync命令同步文件夹时:
  4. 编程 » Python
    在 Python 里,我们可以直接用 os.system 来执行系统命令(假设下面的 strip 是一个可以处理多个文件的第三者程序):
  5. 编程 » Python
    今天写一段程序时遇到一个问题,查了好一会才搞清楚。代码可以简化为下面这个小代码:
  6. 编程 » javascript
    Javascript 在很多地方会出现字符串隐私转换,需要特别留意。
  7. 编程 » python, requests, django
    在 Python 里,我们可以用request.post提交json数据:
  8. 编程 » pandas, python
    一个最直接的方法如下,最后得到的s2就是一个普通的pandas.DataFrame,可以继续处理:
  9. 编程 » django, html, http, axios
    我们用访问网页动态数据时,经常会提交一些参数,比如用axios.get
  10. 最近写一个 vue 的写法:
  11. 在写代码过程中,会定义一些变量但没有用,比如为了保持函数参数原型:
  12. 编程 » Python, numpy
    今天写 Python 代码时遇到一个恶心的 bug ,花了好一会才定位和搞清楚。我的目标是寻找第一个非 NAN 的数的位置(其中 array 是一个 numpy 向量),很自然有下面实现:
  13. 编程 » Python库
    Python 的官方自带库json库处理 JSON 很方便,但它只支持标准的 JSON 格式。rapidjson 库来自于 json 的 C++库,速度比json库快五倍,而且支持一些非标准的 JSON 字符串。
  14. 编程 » Python
    在 Python 中,有时候为了获取当前运行的脚本的同目录下的另外一个文件,会这么写:
  15. 命令行参数的初步说明,请参考argparse 模块用法实例详解,写的很清晰而详细。
  16. 编程 » pandas, numpy, Python, C++
    首先任意定义一个结构,注意不要用 std::string 非平凡布局的变量,用 char[] 代替:
  17. 编程 » vim
    vim 有一个注释相关的插件 nerdcommenter ,特别好用。可以使用<leader>c快速切换注释状态(不是注释就改成注释,已经是注释则取消注释):
  18. C++对一个有序序列[first, last)firstlast都是iterator,可简单理解为位置指针),以及指定值v,标准库直接提供二分查找的函数std::lower_boundstd::upper_bould
  19. 编程 » xml, python
    在升级 django-wiki 后, Python 的 markdown 库里爆出来一个错误:
  20. 编程 » C++, fmt
    最近遇到一个诡异的问题,一个程序经常卡死。最后定位到 fmt 和下面简单的例子:
  21. 编程 » django, requests, python
    这里的 requests 是指 Python 的 requests 包。
  22. 编程 » C++
    在实现C++中非阻塞式的用户输入中发现,在没有设置in.sync_with_stdio(false)时,in.rdbuf()里面总是空的。
  23. 编程 » Bash
    BASH 的一些笔记。
  24. 编程 » C++
    如果我们用std::getline或者简单的std::cin >>获取用户输入,有一个问题是,它会阻塞掉整个程序,用户必须有输入后才能继续执行。如果这个输入是单独的线程,它还会阻止整个程序的退出。
  25. 编程 » C++, C++标准库
    std::vector有两个大小:
  26. 在 Python 中操作文件或字符串时,有时候会碰到 UnicodeDecodeError 异常:
  27. 主要形式是下面三种。后面两种实际指向同一个位置(如果path是一个已存在的文件夹),但处理结果会有所差异。
  28. 其实moment.js 官方主页已经很详细和清晰了,这里做一下笔记加强记忆。
  29. datetime 是 Python 的标准库:
  30. 编程 » Python
    在 Python3 以上,通常说的字符串是指unicode字符串,以下将不再重复强调。
  31. 编程 » Python, 并行计算
    核心就是threading.Thread
  32. Pyhon 的抽象基类( abstruct base class )库abc定义了类似于 C++的纯虚函数的功能:
  33. 编程 » C++, popen
    popen函数可以获取比std::system函数更详细的程序输出。只是正常调用 popen 只能获取 stdout 的输出,而 stderr 的输出被忽略。
  34. 编程 » Python
    imp.load_source在动态载入 python 模块时非常有用,但需要注意其特性。
  35. 编程 » C++, 编译链接
    最近升级系统,出现好多莫名其妙的问题。其中一个便是 G++编译后,发现其中一个动态链接库引用了绝对地址。正常情况下运行ldd bin/auto应该是下面的结果:
  36. 编程 » pytorch, C++
    目前 pytorch 已经升级到了 1.7.0 ,但在 ubuntu 20.04 下有一个非常诡异的 bug。为此,我们只能自己编译。
  37. 编程 » C++
    现在一般不能用 sprintf 和 strcpy ,推荐使用 snprintf 和 strncpy ,以防止缓冲区溢出:
  38. 编程 » C++, fmt
    C++的fmt::format格式化库,由于效率高,功能强大,相关的 API 已经进入C++20,但其文档和 API 细节无法恭维。
  39. 编程 » C++, 编译
    一个典型的 GCC C++编译过程为:
  40. 编程 » C++, GCC, 编译链接
    C++的链接分为两部分,一个是编译时,一个是运行时。但运行时的行为也收到编译参数的影响。
  41. 编程 » C++, assert, 异常处理
    1)在函数开始处检验传入参数的合法性
  42. 编程 » popen, C++
    我们在 C++里可以这么查看popen是否正常执行:
  43. Python的命令行包argparse内置了-h, --help命令。但它没有分组,和其它的命令混在一起,并且显示在最前面。我更喜欢把它放在单独的「LOG 和帮助」分组:
  44. 编程 » Python, numpy
    numpy 的一维向量:
  45. 编程 » C++
    有两种方法,一种在线程的调用函数内部设置,还有一种是在外部对指定线程变量做设置。
  46. 编程 » Python
    Python 在搜索模块时,依次搜索sys.path里的位置,直到找到模块为止。下面命令可以查看当前的搜索路径:
  47. 编程 » C++
    假设在 C++里有一个数据结构:
  48. 编程 » NaN, Python, Javascript, JSON
    一般而言,在 Python 里:
  49. 编程 » C++, boost, 命令行
    我们用boost的命令行库program_options解析命令行,在解释布尔命令行时使用下面代码:
  50. Python 提供很多语法糖,用起来非常方便。@dataclass 就是其中之一。
  51. 编程 » C++,
    C++的多行宏有标准定义方式,boostfolly库都采用了这种方式:
  52. 编程 » C++, 异步
    C++11 的标准异步库至少包含下面内容:
  53. 编程 » C++, 智能指针
    前面已经提到std::shared_ptr有三个缺陷:
  54. 编程 » C++, Boost, 智能指针
    如果理解了侵入式容器,侵入式智能指针也很容易理解。传统的智能指针std::shared_ptr使用了和数据无关的引用计数,这带来两个问题:
  55. 编程 » C++, Boost, 数据容器
    Boost.Intrusive 是一个很有意思的实现,里面实现了很多侵入式容器,在特定环境下,可以大大提升性能。
  56. 智能指针在现代 C++里用得越多。以前只知道它大致的原理,比如使用引用计数。但很多实现细节并不清楚,最直接的,它是如何实现多线程安全的?今天找了 gnu c++ library 的实现好好看了一下。
  57. 看到网上有片段,提到没有必要自己实现自旋锁,因为标准库的 std::mutex 和现在的自旋锁的实现没有两样。比较好奇,翻了一些资料,试图找到答案。
  58. 编程 » C++, 代码片段
    主要函数是timespec_get,可参考https://zh.cppreference.com/w/c/chrono/timespec_get
  59. 编程 » C++
    要在C++中运行系统命令,可以直接使用std::system函数:
  60. 由 Facebook 开发和维护的 C++库 Folly 提供了自旋锁的实现folly::MicroSpinLock,代码文件地址:https://github.com/facebook/folly/blob/master/folly/synchronization/MicroSpinLock.h
  61. 编程 » folly, C++, 数据容器
    由 Facebook 开发和维护的 C++库 Folly 提供folly::small_vector,代码文件地址:https://github.com/facebook/folly/blob/master/folly/small_vector.h
  62. std::thread是 C++ 11 新引入的标准线程库。在同样是 C++ 11 新引入的 lambda 函数的辅助下,std::thread用起来特别方便:
  63. follyLikely.h文件提供了 LIKELY 和 UNLIKELY 宏,提示编译器在分支预测时选择分支。其实现很简单
  64. 编程 » C++, folly
    高效程序总是尽量避免频繁触碰在堆上分配和释放内存,所以无论是std::string还是folly:fbstring都做了SSO( small string optimization )。而folly::FixedString是一个很有意思的实现,它可以把任意长度的字符串都放在堆上。代码可见https://github.com/facebook/folly/blob/master/folly/FixedString.h
  65. 由 Facebook 开发和维护的 C++库 Folly 提供了锁folly::MicroLock,代码文件地址:https://github.com/facebook/folly/blob/master/folly/MicroLock.h
  66. 编程 » C++, C++标准库
    std::tuple的原理并不复杂,但有些细节非常有意思。其中有一个是至少在gnu C++ std的实现中,std::tuple是倒序存储的:
  67. 编程 » C++, 智能指针
    理论上而言,当 C++提供了std::unique_ptr, C++的程序就不应该出现普通指针了。所有普通指针都可以用std::unique_ptr代替,避免手动删除对象。
  68. 编程 » C++, folly
    folly::fbstring是一个完全兼容std::string的类,可以做到无缝替换,而且性能更高。其代码参见https://github.com/facebook/folly/blob/master/folly/FBString.h
  69. 编程 » C++, 数据容器, folly
    folly::dynamic提供类似于C++的动态类型。和std::any可以容纳任意类型不一样,folly::dynamic只支持保存以下几种类型:
  70. 编程 » C++, 数据容器
    我们知道在javascript以及Python 3.6+中,所有的dict都保留了插入顺序。但在 C++中,无论是std::map还是std::unordered_map,都没有保留插入顺序。当遍历时,std::map得到的是一个根据键值排序的有序序列,而std::unordered_map则基本是乱序。
  71. 编程 » C++, 数据容器
    我们知道在javascript以及Python 3.6+中,所有的dict都保留了插入顺序。但在 C++中,无论是std::map还是std::unordered_map,都没有保留插入顺序。当遍历时,std::map得到的是一个根据键值排序的有序序列,而std::unordered_map则基本是乱序。
  72. 编程 » folly, C++, 数据容器
    由 Facebook 开发和维护的 C++库 Folly 提供folly::sorted_vector_setfolly::sorted_vector_map,是std::mapstd::set在小数据集上的优化版。代码见: https://github.com/facebook/folly/blob/master/folly/sorted_vector_types.h
  73. 编程 » folly, C++
    Folly 官方地址:https://github.com/facebook/folly
  74. 获取程序占用的内存量,是一个诡异的需求。但程序写多了,有时候还真需要,尤其是代码运行出现问题的时候。
  75. 编程 » Linux, rsync
    在同步一个超大文件时,发现 rsync 并没有按照预期的同步一个文件。而使用md5sum检验文件内容时,原始文件和目标文件的内容并不一样。
  76. http://senlinzhan.github.io/2017/12/04/cpp-memory-order/ 写得最浅显易懂。记录一下以备查询。
  77. 出现的一个场景是将函数指针用 void
  78. armadillo是一个线性代数 C++库,封装了blaslapack,提供更直观的接口。
  79. 编程 » Linux, Vim, 字符编码
    由于 UNICODE 的优势,目前推荐都用 UTF-8 进行编码。
  80. 编程 » GIT
    有时候不小心把一些大文件 commit 到了本地版本库,但往网络版本库同步时,因为文件过大被拒绝。如果在上传前,本地有多次提交,此时再在当前版本里删除这些大文件还不够,还需要把历史记录全删掉。效果要跟从来没提交过这些文件一样。
  81. 编程 » GIT
    git经常出现类似于HEAD detached at origin/development的错误提示。这是因为当前的 HEAD 没有位于任何一个分支上的缘故。
  82. 一定要先座这一几步,否则直接用pypyodbc会爆下面错误:
  83. boost是除std外最常用的 C++库,覆盖很多常用操作。目前最新的版本是1.59.0http://boost.org/上可以查看最新版本号,将下面的 59 换成最新的即可)。
  84. 编程 » C++, 算法, 代码片段
    一个短小、高效的 C++函数,用来判断指定日期是星期几:
  85. 编程 » C++, C++11
    花括号初始化是C++11引入的一种初始化方法。
  86. 编程 » C++, GCC, 编译链接
    LD 在链接生成目标文件时,会从左到有扫描输入的依赖库,当依赖库之间也有依赖关系时,必须将「依赖别人的库」放在「被别人依赖的库」的前面。否则会链接失败!失败的症状有:
  87. 最近老遇到一个奇怪的问题。在 VS 2013 编译时,爆出很多警告:
  88. 编程 » C++, 编译错误
    在 gcc 中,存在继承关系的模版类,子类无法直接访问父类的成员,即使该成员是protectedpublic
  89. 编程 » C++
    C++的浮点数转整数有四种方法,直接类型转换、round、floor、ceil。其效果如下表:
  90. C++内存检查和性能分析工具 valgrind里介绍了 valgrind 的安装,以及用于效率分析 profiler 工具。valgrind 最本来的功能是内存检查。这篇文章做简单的介绍。
  91. 一个好用的 C++性能分析工具需满足几个条件:
  92. Python 数据分析工具 pandas 中以 DataFrame 和 Series 作为主要的数据结构。
  93. 由于 instantclick 不会重新运行位于 head 部分的 JavaScript 代码,而很多工具性软件,比如 MathJax、百度统计、Google Analytics、Google Code Prettify 等软件都是直接将 JS 文件插入到 head 区域。这导致这些工具在 instantclick 点击后失效,需要重新配置。
  94. 以前总是被教育说注释写得越详细越好,我自己写代码的时候也恨不得将每一步都用自然语言给它翻译一遍,如果没写注释就觉得不专业。后来看到健硕写的 notes ,再加上最近做一个东西,也有一些感受。
  95. 编程 » SQL
    现在 Access 用的人应该不多了,本来我以为我也不可能用这玩意儿,但最近在用 VBA 通过 SQL 处理数据时,发现它的语法是 Access 的语法。平时对 SQL Server 语法相对熟悉一些。下文总结了 Access 和 SQL Server 语法的差异。
  96. 编程 » Matlab, 并行计算
    我们知道 Matlab 不支持多重 parfor 循环。下面代码会出错:
  97. 编程 » Matlab
    在写 Matlab 程序时,函数的命名方式让人头疼,很难保证刚写的一个函数名在很久以前被用过,成为隐藏的一颗炸弹。
  98. 编程 » Matlab, 并行计算
    parfor适用于
  99. 编程 » Matlab
    Matlab 在启动时会自动运行脚本startup.m。在这个脚本里可以自动修改当前目录,修改显示方式等等。比如
  100. 编程 » Excel, lotus, VBA
    公司使用 Lotus ,我每天都通过 Excel 编写 VBA 代码自动调用 Lotus 发送邮件,发现一个奇怪的现象。一般我们通过下面的 VBA 代码指定邮件收件人:
  101. 编程 » Matlab
    第一步,which函数可用来获取 Matlab 函数的全路径(包含路径和文件名)。
  102. 更新一下之前写的Excel 的数据库类,将其改成函数的形式,调用更简单(省却了生成类实例的步骤)。现在这个代码在工作中用了一年多,已经比较健壮。若有问题,请留言指出或与我联系。
  103. 编程 » Excel, 数据库
    在前面的文章里,我已经提到Excel 数据本身可以当做一张 SQL 查询的数据表,并在 Excel 内进行数据库运算操作。数据库查询函数可以用我之前写的Excel 数据库操作函数类。我们可以用以下方式
  104. 之前对普通 Excel 文件,我都保存为默认的 xlsx 格式,带 vba 的保存为 xlsm 格式。最近从同事那里见到一个高大上的 excel 文件格式: xlsb。我学习了一下,觉得甚为强大,在此推荐一下。
  105. 编程 » Excel
    在编辑 Excel 文件时经常遇到的一个问题是,我这边用得好好地,换台机器就变了个样,或者根本用不了。下面是我在日常工作中总结的一些避免这些情况的小技巧。
  106. 编程 » PowerPoint, 输入法
    最近 PowerPoint 打字速度慢就困扰着我。打字以后出现文字很慢,基本上我在键盘上狂敲十几个字,过了几秒钟才会慢慢的出来。长一点的段落我还需要先在别的地方写好,然后复制粘贴到 PPT。
  107. 键盘流(指尽量使用键盘,少动用鼠标,尤其不要在鼠标和键盘之间来回切换)是我追求的目标。我工作中用的最多的软件是 Excel ,写代码写的最多的是 Excel/VBA。用得多了自然比较关注工作效率,所以我在 Excel 键盘流上略有心得,这里给大家分享一下。网上有很全的快捷键列表,但那不是我想写的,因为太多记不下来不实用。这里只列举一下我在实际工作中的的确确总是在用的,为自己方便,也共享给大伙们。
  108. 编程 » Matlab, 字体
    Matlab 默认字体为 Monospaced ,这是种逻辑字体,它在不同语言和操作系统上映射为不同的物理字体。一般在中文系统下, Monospaced 字体被映射到宋体。它很丑,我想换掉它。
  109. 编程 » VBA, Excel
    如果不提供错误处理方法,VBA在出错时会停留在出错之处。Excel/VBA 提供On Error关键词来处理程序运行过程中的错误,具体有下面两种用法:
  110. 编程 » Excel
    Excel 中可设置每个单元格显示数字和文本的格式:
  111. 编程 » Java, Matlab
    Matlab 2008b 才开始引入 containers.Map ,这是 Matlab 唯一的数据结构(这里的数据结构是指自带一定逻辑性的数据结构,不包括普通数据类型)。如果要有其它,比如 Queue、Set 等数据结构,只能自己编写一个。File Exchange 上有不少人做过这个工作,我也写过Queue、List、Vector 的 Matlab 对象。不过 Matlad 的面向对象编程效率极低,这种方法只能用于不太注重效率的场合。解决这个问题的另外一个方法是使用 Java 对象。
  112. 平时电视看得极少。有时候看看电影或电视剧,都是从网上下载或者看在线视频。俺家里的歌华有线电视欠费快两个月,一直没有续费,但没觉得生活中少了些什么,可见电视对我来说没什么用处。
  113. 2014-03-25 更新:我已经将该类修改成函数形式,并增加新功能,参见更新 Excel 的数据库查询函数库
  114. 以前发过一个编辑和发送 Outlook 邮件的 Excel/VBA 脚本。最近公司不让用 Outlook ,强制使用 IBM Lotus Notes ,我又写了一个编辑和发送 Lotus 邮件的 VBA 脚本。
  115. Excel 多表合并和查询是一个应用很广泛的问题。下面是一个简单的例子,我们需要从两张数据表里,得出每个行业的股票波动率平均值。第一个数据表保存了股票和行业的对应关系,有两列,第一列为股票名,第二列为每只股票对应的行业。第二张表保存了各个股票在各个交易日的收盘价和前收盘价,有四列,第一列是股票名,第二列为交易日,第三列和第四列分别为股票在这个交易日的前收盘价和收盘价。
  116. 编程 » Excel
    此篇为学习笔记。
  117. 编程 » Excel
    最近看到一个比较有趣的问题, Excel 中以下表达式代表什么含义:
  118. 编程 » Shell, VBA
    某些时候,我们需要在 Excel 中调用命令行或者 Bash 脚本, VBA 可以通过 Shell 函数很方便地做到这一点。以下用ipconfig /all来举例,这条命令行语句用来获得机器的网路配置信息,包括 IP、网关等信息。它可以替换成任何一个 bash 脚本和命令行代码。
  119. 我写了一个期权到期收益结构的 Excel 模板。欢迎大家无聊的时候使用。
  120. 编程 » Matlab, 编译器
    现在比较新的电脑基本上都是 64 位的 CPU , Matlab 也是 64 位的版本,但 64 位的 Matlab 没有自带编译器,需另行安装编译器。下面是方法之一:
  121. 编程 » Excel, VBA
    无意中发现一个 Excel VBA 对待参数的一个"不正常"现象。这种处理方式可能无意中导致程序结果错误,而且你很难发现你的错误所在:
  122. 编程 » Excel
    香港这边没有 WIND ,部门的彭博也不在我的机器上,为了取个股票价格数据都得跑来跑去。一怒之下,我写了一个 Excel 的函数,用来获取行情数据。
  123. 编程 » Excel, VBA
    Excel VBA 出错时给出的错误信息极少,需要充分利用各种工具来进行调试。
  124. 编程 » Matlab
    读者来信:
  125. 编程 » bug, Matlab
    Matlab 内置的 runstoredprocedure 函数,用来运行同时有输入和输出参数的存储过程:
  126. 编程 » Matlab, 代码准则
    我所在部门也不是 IT 部门,职位也不是开发职位,但平时工作还是需要大量处理和分析数据、计算和开发各种指标等,还是需要写很多程序,语言以 VBA 和 Matlab。但同时,部门里像着我这种写程序的人并不多,别人并不看我的代码而只关心我提交的结果(说实话,大多数时候即便我写错了也不会有人知道),工作环境也不像专业的 IT 公司或部门,有严格的流程控制和工作平台。我这里没有版本控制、没有自动测试环境、没有代码格式和注释要求,也不需要去 Linux 下干活。我相信国内金融行业有不少人与我处于同样的状态。
  127. 编程 » Matlab
    写了一个统计代码量的函数,函数已上传到 Matlab Central File Exchange下载地址,使用方法:
  128. Excel 的数据透视表是一个很好用的功能,我写了一个 Matlab 版本,在处理上和 Excel 的透视表差不多,还差一个 filter 而已。
  129. 没有人敢说 Matlab 的帮助文件不够详细和全面,但 Matlab 里面的确存在一些功能和函数,你很难找到它的帮助文档。下面列举一些,以后碰到其它的也会放到这里来:
  130. 上次说起遇到两个 Matlab 的效率问题,还剩下 save , load 没说。不过这个问题的结论挺简单的,就是在 save 的时候尽量指定使用-v6 选项。
  131. 编程 » vbs, 办公自动化
    工作中或多或少有些琐碎的事情,比如每天要发送和接受数据,很多是通过邮件的方式传递的。之前写过如何在 Outlook 里自动保存附件,这里再发一个如何更方便地发送带附件的邮件。
  132. 以下对并行计算的个人理解受到较多质疑,删除之。
  133. 最近用 Matlab 写了个东西,运行效率不如我意。用 Profiler 跟踪了一下,结果让我大吃一惊。其中三分之一的时间花费在 datestr 这个函数上,六分之一的时间花费在 save 和 load 数据上。这里先谈前一个问题,关于 save 和 load 的效率以后再谈。
  134. 基于将工作文件在家里电脑和公司电脑上的转移、Kindle 上电子书的管理的需求,我用 Matlab 写了几个函数,用来实现这些需求。
  135. 编程 » dll, Matlab, VB
    这里放两个在实际工作中遇到的问题,还没找到解决的方法,向广大网友求助。
  136. Matlab 的 database 工具箱只支持 ODBC 数据库连接,在使用之前需要先设置 ODBC 数据源。之前在 Excel 里用的是 ADODB ,使用 ADODB 的好处是无需设置 ODBC 源,似乎效率也要高一些(但我一直没弄懂 ADODB 是什么东西,所以效率这东西我也说不清)。
  137. 如果一个日期(或者时间),如果用字符串,比如"2010-10-04"的形式,各个系统都没有什么区别。在某些时候,将日期用数字表示,将大大增加对日期查找、比较的效率。而如果用数字来表示日期,在不同的系统之间差别就大了。
  138. Excel、Matlab 在与数据库交互数据时,通常需要事先配置好 ODBC 数据源,这导致一个文件换到另一台机器还需要重新配置 ODBC。手工配置太麻烦,从国外一个网站看到一种解决方案:
  139. 现在相机的像素实在是太高了,上次去泰山玩,朋友的 1200 万像素的 D90 照出来的照片分辨率高达 4288×2848 ,即使转为 jpg 格式,每张都在 5M 以上。而现在电脑屏幕的分辨率最高也在 1920 以下吧,超高分辨率的照片除了打印大照片之外没什么用处,反而不方便传输、流通、保存。
  140. 最近做一些优化问题,找到了 YALMIP 工具包。在其帮助文件里看到如何使用该工具包求解 sudoku,整个思路是将问题转化为整数规划问题。这样的思路以前也想到过,但总觉得整数规划问题的求解会更复杂。但是下面的 Matlab 代码,显示它可以非常简洁,思路见程序的注释(程序运行需要安装 YALMIP 工具包):
  141. 上次大规模使用 Matlab 还是本科的时候,当时还是 5.3 版,现在重新尝试它,已经是 7.8 ( R2009a ),而且 R2010b 版都已经发售。而这些版本引入的一个新玩意儿便是面向对象化编程( object-oriented programming , OOP )。
  142. 编程 » Matlab, 优化
    最近做了些东西,用到了 Matlab 的优化工具箱, optimization toolbox。因为以前没用过这东西,今天把这个工具箱的帮助文档基本上翻了一遍。