本文介绍在Windows下安装使用GSL库,涉及GSL两个版本(官方最新版及GSL1.8 VC版)、msys shell、GCC、G++等内容,最终实现对GSL安装及示例基于MinGW64在Sublime Text3下的编译运行,并实现GSL在Visual Studio下的使用及部分示例测试。还介绍了GSL1.8 VC版本的编译使用过程。

目录

一、GSL简介

二、在WINDOWS下安装介绍

三、安装使用GSL (GNU)

1. 安装过程(32bit & 64bit)

2. 使用过程(基于MinGW-w64命令行及Sublime Text3和Visual Studio)

四、安装使用Gsl1.8(GnuWin32)

总结


一、GSL简介

(官方介绍,不做累述)

GSL简介及下载地址:GSL - GNU Scientific Library

l  Introduction

The GNU Scientific Library (GSL) is a numerical library for C and C++ programmers. It is free software under the GNU General Public License.

The library provides a wide range of mathematical routines such as random number generators, special functions and least-squares fitting. There are over 1000 functions in total with an extensive test suite.

The complete range of subject areas covered by the library includes,

Complex Numbers

Roots of Polynomials

Special Functions

Vectors and Matrices

Permutations

Sorting

BLAS Support

Linear Algebra

Eigensystems

Fast Fourier Transforms

Quadrature

Random Numbers

Quasi-Random Sequences

Random Distributions

Statistics

Histograms

N-Tuples

Monte Carlo Integration

Simulated Annealing

Differential Equations

Interpolation

Numerical Differentiation

Chebyshev Approximation

Series Acceleration

Discrete Hankel Transforms

Root-Finding

Minimization

Least-Squares Fitting

Physical Constants

IEEE Floating-Point

Discrete Wavelet Transforms

Basis splines

Running Statistics

Sparse Matrices and Linear Algebra

Unlike the licenses of proprietary numerical libraries the license of GSL does not restrict scientific cooperation. It allows you to share your programs freely with others.

l  Downloading GSL

The current stable version is GSL-2.4. It was released on 19 June 2017. Details of recent changes can be found in the NEWS file.

GSL can be found in the gsl subdirectory on your nearest GNU mirror http://ftpmirror.gnu.org/gsl/.

For other ways to obtain GSL, please read How to get GNU Software

Installation instructions can be found in the included README and INSTALL files.

Precompiled binary packages are included in most GNU/Linux distributions.

A compiled version of GSL is available as part of Cygwin on Windows.

l  Documentation

GSL includes a reference manual in reStructuredText format. You can view the manual in HTML and PDF, or read it on your system using the shell command info gsl-ref (if the library is installed).

The GSL Reference Manual is available online,


二、在WINDOWS下安装介绍

GSL在Windows下,可通过安装Cygwin使用,因其自带GSL库;本文主要介绍在MinGW下用msys生成GSL最新版的静态库、导入库及动态库过程,并通过命令行、Sublime Text3或Visual Studio编译使用GSL库;另外介绍了GSL1.8 VC版在Visual Studio2015下的编译使用。

三、安装使用GSL (GNU)

官方建议的最简单编译安装方式:

1. `cd' to the directory containing the package's source code and type  `./configure' to configure the package for your system. Running `configure' might take a while.  While running, it prints  some messages telling which features it is checking for.

2. Type `make' to compile the package.

3. Type `make install' to install the programs and any data files and documentation.  When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular  user, and only the `make install' phase executed with root privileges. OR  For example, `make install prefix=/alternate/directory'。

GSL最新版源码解压后目录内容如下:

1.  安装过程(32bit & 64bit)

要执行上面的三个步骤,首先需要一个UNIX环境,在Windows下,可以使用msys来模拟,MSYS是一个小型的GNU环境,是一个通过将Linux源代码在Win32上编译而成的UNIX工作环境;MSYS类似于Cygwin,但是由于工作原理的不同,速度更快、体积更小、功能强大、便于携带;使用MSYS可以取代商业的VC环境,同样开发出商业版权的程序而不受任何版权限制;可从MinGW32官方下载,在此推荐一个集成版下载,其集成了多个实用工具,本文采用集成版msys。将下载的msys集成版压缩包解压后,将msys文件夹直接复制到自己喜欢的地方,建议放在MinGW目录下,便于明确归属。然后将<msys install dir>/bin目录加到系统PATH中。

另外,还需要准备MinGW编译工具,在此就MinGW做一下简单介绍,MinGW 的全称是:Minimalist GNU on Windows 。它提供了一套简单方便的Windows下的基于GCC 程序开发环境,是从Cygwin里fork出来的。当初只考虑32位,和Cygwin相比,不强调POSIX兼容性而相对强调性能和减小依赖。目前还存在的版本有MinGW-w64, MinGW-w64 与 MinGW 的区别在于 MinGW 只能编译生成32位可执行程序,而 MinGW-w64 则可以编译生成 64位 或 32位 可执行程序。(据说,MinGW-W64的主要维护者Kai Tietz因为工作需要,他想让MinGW提供扩充x64支持,但对方态度很不友好,于是愤而fork出来,这就是MinGW-W64的由来:)。现在推荐使用MinGW-w64,因GSL的按照会根据本地系统平台自动生成,也就是说在64位系统下会自动匹配64位的GCC,这样生成的库文件无法在x86的项目中编译通过,因此,需要在本地下载配置32位和64位的MinGW-w64。

先进入MinGW-w64下载地址:https://sourceforge.net/projects/mingw-w64/files/,在此页面根据平台需要链接64位<Toolchains targetting Win64//Personal Builds/mingw-builds/版本号/threads-posix/seh/>或32位<Toolchains targetting Win32/Personal Builds/mingw-builds/版本号/threads-posix/dwarf/>,本示例使用的版本是:x86_64-7.1.0-release-posix-seh-rt_v5-rev2.7z和i686-7.1.0-release-posix-dwarf-rt_v5-rev2.7z,解压后,将bin目录添加到系统路径中(系统路径中应仅存在一个版本的bin目录),在命令行提示符下输入"gcc -v"或"g++ -v"来查看版本信息。

对应关系:

32bit g++.exe —> i686-w64-mingw32-g++

32bit gcc.exe —> i686-w64-mingw32-gcc

64bit g++.exe —> x86_64-w64-mingw32-g++

64bit gcc.exe —> x86_64-w64-mingw32-gcc

根据拟编译GSL的平台环境,配置好MinGW-w64后,进入msys目录,在此目录中执行msys.bat(直接双击运行或以超级管理员身份运行),在$提示符下输入help的界面如下图:

在$提示符下输入:

cd空格/盘符/gsl源码目录/——如:cd /c/gnu/gslmsys_code

进入该目录后,进行GSL安装的三个步骤,先后执行:

1)     ./configure    ——  此过程较慢,耐心等待即可(针对32位编译,执行CFLAGS="-m32" CXXFLAGS="-m32" ./configure

2)     make  ——  编译生成过程

3)     make install  ——  将编译好的库和头文件等安装在<msys install dir>\local目录中。

安装后的GSL目录中含有bin、lib、include、share四个文件夹

至此,GSL最新版安装完成,GSL库目录结构如下:

\bin (libgsl-23.dll、libgslcblas-0.dll)

\include  (\gsl\gsl_*.h)

\lib  (libgsl.a、libgsl.la、libgsl.dll.a、libgslcblas.a、libgslcblas.la、libgslcblas.dll.a)

\share

2.  使用过程(基于MinGW-w64命令行及Sublime Text3和Visual Studio)

  • 示例代码

在自己的示例代码目录下新建一个C或CPP文件,复制示例代码并保存。

C示例代码:(gsldemo.c)

  1. #include <stdio.h>
  2. #include <gsl/gsl_sf_bessel.h>
  3. int main ()
  4. {
  5. double x = 5.0;
  6. double y = gsl_sf_bessel_J0 (x);
  7. printf ("J0(%g) = %.18e\n", x, y);
  8. return ;
  9. // Expected output: J0(5) = -1.775967713143382600e-001
  10. }

CPP示例代码:(gsldemo.cpp)

  1. //#include <stdio.h>
  2. #include <iostream>
  3. #include <iomanip> //for use std::setprecision()
  4. #include <gsl/gsl_sf_bessel.h>
  5.  
  6. using namespace std;
  7. int main ()
  8. {
  9. double x = 5.0;
  10. double y = gsl_sf_bessel_J0 (x);
  11. //printf ("J0(%g) = %.18e\n", x, y);
  12. cout << "J0(" << x <<") = " << std::setprecision() << std::scientific << y << endl;
  13. return ;
  14. // Expected output: J0(5) = -1.775967713143382642e-001
  15. }
  • Visual Studio

    • 使用此库,在Dubug和Release配置下设置方式一样,根据不同编译平台(x86或x64)选择对应库目录即可。
    • 在项目的属性页,选择VC++目录的的常规选项页,在包含目录添加"<GSL install dir>\<GSLxXX>\include",在库目录添加"<GSL install dir>\<GSLxXX>\lib",可在源目录添加"<GSL install dir>\src\gsl-2.4";
    • 选择C/C++目录的预处理器选项页,在预处理器定义中添加"GSL_DLL;";
    • 选择链接器目录的输入选项页,在附加依赖项中添加"libgsl.dll.a;libgslcblas.dll.a;";
    • 此时可编译生成,成功后,将<GSL install
      dir>\<GSLxXX>\bin目录下的libgsl-23.dll和libgslcblas-0.dll复制到项目执行文件生成同目录下,或直接将该bin目录添加到系统路径中。
  • MinGW-w64命令行

在Windows命令行提示符下,进入示例目录,执行gcc编译示例:

  1. gcc -o gsldemo gsldemo.c -IC:/gnu/gsl/include -LC:/gnu/gsl/lib -lgsl -lgslcblas lm
  • Sublime Text3

      附:使用Sublime Text3编译使用了GSL库的C或CPP源程序,可以在ST3新建一个编译环境文件,复制粘贴下面内容,并对其中引用的路径修改为正确路径,即可在ST3中进行编译使用了。

  1. // Put this file ([Your Build Name].sublime-build) here:
  2. // "C:\Users\[User Name]\AppData\Roaming\Sublime Text 3\Packages\User"
  3. // OR use "Tools -> Build System -> New Build System..." and put the code there and save.
  4. // Use "Ctrl+B" to Build and "Crtl+Shift+B" to Build or Run the project.
  5. {
  6. //根据使用GCC或G++需要取消或添加注释即可
  7. //用G++编译调用了GSL库的CPP程序,可命名为G++_GSL.sublime-build
  8. "shell_cmd": "g++ -o \"${file}\" \"${file_path}/${file_base_name}\" -I\"<GSL install dir>/include/\" -L\"<GSL install dir>/lib\" -lgsl -lgslcblas –lm ",
  9. "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
  10. "working_dir": "${file_path}",
  11. "selector": "source.c, source.c++",
  12. "variants":
  13. [
  14. {
  15. "name": "Run",
  16. "shell_cmd": " g++ -o \"${file}\" \"${file_path}/${file_base_name}\" -I\"<GSL install dir>/include/\" -L\"<GSL install dir>/lib\" -lgsl -lgslcblas –lm && start cmd /c \"\"${file_path}/${file_base_name}\" & pause\""
  17. }
  18. ]
  19. //命令行G++命令示例
  20. // g++ -o gsldemo gsldemo.cpp -IC:/gnu/gsl/include -LC:/gnu/gsl/lib -lgsl -lgslcblas -lm
  21.  
  22. //=========================================================
  23.  
  24. //用GCC编译调用了GSL库的C程序,可命名为GCC_GSL.sublime-build
  25. //"shell_cmd": "gcc -o \"${file}\" \"${file_path}/${file_base_name}\" -I\"<GSL install dir>/include/\" -L\"<GSL install dir>/lib\" -lgsl -lgslcblas –lm ",
  26. //"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
  27. //"working_dir": "${file_path}",
  28. //"selector": "source.c",
  29. //"shell": true,
  30. //"variants":
  31. //[
  32. //{
  33. //"name": "Run",
  34. //"shell_cmd": " gcc -o \"${file}\" \"${file_path}/${file_base_name}\" -I\"<GSL install dir>/include/\" -L\"<GSL install dir>/lib\" -lgsl -lgslcblas –lm && start cmd /c \"\"${file_path}/${file_base_name}\" & pause\""
  35. //}
  36. //]
  37. //命令行GCC命令示例
  38. // gcc -o gsldemo gsldemo.c -IC:/gnu/gsl/include -LC:/gnu/gsl/lib -lgsl -lgslcblas –lm
  39. }

四、安装使用Gsl1.8(GnuWin32)

参考:GSL for Windows

          源码压缩包中/VC8/Readme_VC8.htm

下载地址:https://sourceforge.net/projects/gnuwin32/files/gsl/1.8/

  • Download

Description

 

Download

 

Size

 

Last change

 

Md5sum

• Complete package, except sources

Setup

6476814

11 July 2006

d0c114f842933622a156bfa757ee14c2

• Sources

Setup

2145579

11 July 2006

71ee925eb86d7772fa8b4904dc755508

               

• Binaries

Zip

982270

11 July 2006

94635ae687c4f39d5f4e5985e31c1360

• Developer files

Zip

1202181

11 July 2006

ff1be5ca621f2e7849b6405c132f4d59

• Documentation

Zip

5077599

11 July 2006

8c97d5a31f179b066c6db885fd42ca22

• Sources

Zip

4361954

11 July 2006

5c0df6ca6798ef666b6f89af161b76ba

You can also download the files from the GnuWin32 files page.

以上下载链接分别对应如下文件:

1)     gsl-1.8.exe      2006-07-11      6.5 MB

2)     gsl-1.8-src.exe 2006-07-11      2.1 MB

3)     gsl-1.8-bin.zip 2006-07-11      982.3 kB

4)     gsl-1.8-lib.zip   2006-07-11      1.2 MB

5)     gsl-1.8-doc.zip 2006-07-11      5.1 MB

6)     gsl-1.8-src.zip   2006-07-11      4.4 MB

先不急于马上安装,分析一下这些文件的作用,1)项执行后将建立一个GSL目录,并可选择性安装3、4、5项的内容,分别建立bin、lib、include目录;2)项执行后将GSL全部源文件复制到GSL目录的/src/gsl-1.8下而已,1、2完整安装后的文件结构如下:

\contrib\gsl-1.8

AUTHORS                original gsl-1.7 contributors

BUGS                   original gsl-1.7 bug list

ChangeLog              gsl-1.7 ChangeLog modified for GnuWin32

COPYING                original gsl-1.7 license

INSTALL                original gsl-1.7 install instructions

NEWS                   original gsl-1.7 news

README                 original gsl-1.7 Readme

Readme_GnuWin32.txt    GnuWin32-specific Readme

SUPPORT                original gsl-1.7 support notice

THANKS                 original gsl-1.7 acknowledgements

TODO                   original gsl-1.7 to-do list

\bin

libgsl.dll             gsl-1.7 dynamic link library (release version)

libgsl_d.dll           gsl-1.7 dynamic link library (gcc debug) (*)

libgslcblas.dll        cblas dynamic link library (release version)

libgslcblas_d.dll      cblas dynamic link library (gcc debug) (*)

gsl-histogram.exe      program for calculating histograms for data

gsl-randist.exe        program for generating data conforming to a specified distribution

\lib

libgsl.a                gsl static library (gcc)

libgsl_d.a              gsl static library (gcc debug) (*)

libgslcblas.a           cblas static library (gcc)

libgslcblas_d.a         cblas static library (gcc debug) (*)

libgsl_dll.a            gcc import library for libgsl.dll

libgsl_d_dll.a          gcc import library for libgsl_d.dll (*)

libgslcblas_dll.a       gcc import library for libgslcblas.dll

libgslcblas_d_dll.a     gcc import library for libgslcblas_d.dll (*)

libgsl.def              export definitions for libgsl.dll

libgslcblas.def         export definitions for libgslcblas.dll

\doc (**)

\info

\man1

\man3     gsl help in various formats

\include\gsl     gsl include files

在此,仅依靠第6项下载文件:gsl-1.8-src.zip来完成此工作,建议就不要解压或安装其它包了,避免文件混乱。

具体步骤如下:

  • 用VS2015打开解压后的目录中的VC8下的libgsl.sln工程文件;
  • 对主项目按四种编译配置在x86平台选项下进行生成;【Release-StaticLib  Multi-Threaded (/MT)、Release-DLL  Multi-Threaded DLL (/MD)、Debug-StaticLib  Multi-Threaded Debug (/MTd)、Debug-DLL  Multi-Threaded Debug DLL (/MDd)】
  • 生成成功后,在VC8项目目录下可找到如下文件:

libgsl

Configuration

Build Targets

Release-StaticLib

libgsl.lib

Release-DLL

libgsl.dll

libgsl_dll.lib (import library)

Debug-StaticLib

libgsl_d.lib

Debug-DLL

libgsl_d.dll

libgsl_dll_d.lib (import library)

libgslcblas

Configuration

Build Targets

Release-StaticLib

libgslcblas.lib

Release-DLL

libgslcblas.dll

libgslcblas_dll.lib (import library)

Debug-StaticLib

libgslcblas_d.lib

Debug-DLL

libgslcblas_d.dll

libgslcblas_dll_d.lib (import library)

  • 在VS和MinGW下使用libgsl及libgslcblas,均以Release-DLL和Debug-DLL文件夹下的.lib及.dll进行调用编译即可。

总结

1、 在64bit系统下,强行编译32bit的GSL库,需在msys shell中使用“CFLAGS="-m32" CXXFLAGS="-m32"”参数进行配置。

2、 利用msys环境下make生成的*.dll.a(import library)同样可以在VS下进行调用编译,等同于VS编译生成的*_dll.lib(import library)。

3、关于Static libraries、import library、Dynamic libraries 【原文

  • Static libraries on Linux have the .a file extension. Static libraries on Windows have the .lib file extension.
  • Dynamic libraries on Windows have the .dll extension; on Linux have the .so extension.
  • The import library is a static library. It contains the code required to load the DLL. in order to link against a DLL, an import library is required. Now you're using GCC (not cl.exe) to compile on Windows. GCC has another file extension convention for import libraries, it "should be called *.dll.a or *.a", as explained in the doc for the --out-implib you referred to. Import libraries (.lib with MSVC or .dll.a with GCC) are static libraries: they contain the code to load the DLL. I had the same question the other day.
  • A DLL may have functions that are exported and functions that are not exported. An import library has to know which functions are exported and which aren't. One of the means of telling it is a DEF file. When building the DLL, the linker uses the .def file to create an export (.exp) file and an import library (.lib) file. The linker then uses the export file to build the DLL file. Executables that implicitly link to the DLL link to the import library when they are built. -- MSDN: Exporting from a DLL Using DEF Files
  • Also see MSDN: Exporting Functions from a DLL by Ordinal Rather Than by Name, together that should answer your last question on export by index, or ordinal number.

4、 关于“ -l ”【原文

How do I specify the libraries to be searched by the linker?

  • MinGW supports libraries named according to the "<name>.lib" and "<name>.dll" conventions, in addition to the normal "lib<name>.a" convention common on *nix systems. To include libraries named according to any of these conventions, simply add an associated "-l<name>" specification to the compiler command, ensuring it is placed after the name of the module in which the reference appears.
  • Note that, if the library is not found in any of the default library search paths, you may also need to insert an appropriate "-L<dir>"switch to specify its location; (it is recommended that you place the "-L<dir>" switch before the "-l<name>" specification which requires it).
  • Also note that the library names "lib<name>.a" and "lib<name>.lib" are not equivalent; if you have a library named according to the aberrant "lib<name>.lib" convention, it will not be found by an "-l<name>" specification -- if you cannot rename the library, you must use the form "-llib<name>" instead.
  • Finally, please do not fall into the all-too-common trap of placing any "-l<name>" specification before the name of any source or object module which requires it. Where the source file bar.c has dependencies on the library archive libfoo.a, the command:
  1. $ gcc -lfoo bar.c

is incorrect, and will surely lead to "undefined reference" errors. The correct form for this command is:

  1. $ gcc bar.c -lfoo

5、 相关参考及扩展阅读

(文中部分内容来源于网络,感谢原作者分享)

在WINDOWS中安装使用GSL(MinGW64+Sublime Text3 & Visual Studio)的更多相关文章

  1. 在WINDOWS中安装使用SIGPACK(MinGW64+Sublime Text3 &Visual Studio)

    本文介绍在Windows下安装使用SigPack库,涉及Armadillo.OpenBLAS安装使用说明,最终实现对SigPack示例CPP基于MinGW64在Sublime Text3下的编译运行, ...

  2. 在Windows中安装MinGW-w64(有图,一步一步)

    在Windows中安装MinGW-w64 发表回复 如需配合Sublime Text 3编译C程序, 请参考本站文章: 使用Sublime Text 3与MinGW-w64编译C语言程序 MinGW, ...

  3. 怎样把windows中安装的程序列出来?

    症状/问题我怎样把windows中安装的程序信息输出到一个文本文件中?解决方法使用 windows 操作系统中的命令:wmic就可以做到.下面的命令就可以把系统中安装的程序都输出到文件ProgramL ...

  4. windows中安装python

    windows中安装python 在windows中安装python的步骤如下. 1.下载python的安装包 python的安装包地址为: https://www.python.org/ftp/py ...

  5. 在Windows中安装PostgreSQL

    在Windows中安装PostgreSQL 虽然PostgreSQL是为类UNIX平台开发的,但它却是可以移植的.从7.1版本开始,PostgreSQL可以编译安装和作为一个PostgreSQL服务器 ...

  6. Windows中安装Scrapy

    在linux中安装Scrapy只需要导入一些非python的支持包,在windows中安装Scrapy则是一波三折. 总之来说,主要分为以下几个步骤,可能由于系统问题(国内个人机子,甚至是小企业的机子 ...

  7. 下载文件时-修改文件名字 Redis在Windows中安装方法 SVN安装和使用(简单版) WinForm-SQL查询避免UI卡死 Asp.Net MVC Https设置

    下载文件时-修改文件名字   1后台代码 /// <summary> /// 文件下载2 /// </summary> /// <param name="Fil ...

  8. Python原来这么好学-1.1节: 在windows中安装Python

    这是一本教同学们彻底学通Python的高质量学习教程,认真地学习每一章节的内容,每天只需学好一节,帮助你成为一名卓越的Python程序员: 本教程面向的是零编程基础的同学,非科班人士,以及有一定编程水 ...

  9. 在Windows中安装PySpark环境

    在Windows中安装PySpark环境 安装Python 可以选择安装官方版本的Python,或是Anaconda,对应的地址如下. 下载地址 Python:https://www.python.o ...

随机推荐

  1. [源码分析]StringBuffer

    [源码分析]StringBuffer StringBuffer是继承自AbstractStringBuilder的. 这里附上另外两篇文章的连接: AbstractStringBuilder : ht ...

  2. 探究ElasticSearch中的线程池实现

    探究ElasticSearch中的线程池实现 ElasticSearch里面各种操作都是基于线程池+回调实现的,所以这篇文章记录一下java.util.concurrent涉及线程池实现和Elasti ...

  3. 五十九、linux 编程—— I/O 多路复用 fcntl

    59.1 介绍 前面介绍的函数如,recv.send.read 和 write 等函数都是阻塞性函数,若资源没有准备好,则调用该函数的进程将进入阻塞状态.我们可以使用 I/O 多路复用来解决此问题(即 ...

  4. 五十七、linux 编程——UDP 编程 域名解析

    57.1 介绍 57.1.1 域名解析 57.1.2 域名解析函数 gethostent 可以获取多组,gethostbyname 只可以获取一组 /etc/hosts 文件设置了域名和 IP 的绑定 ...

  5. Aras简单报表

    1.编辑Report对象类的窗体Report_Tab_Report,将xsl_stylesheet放到窗体上 2.新建报表 3.将编辑好的XSLT复制到xsl_stylesheet中. <xsl ...

  6. 【ShaderToy】抗锯齿相关函数

    *示例代码可以直接在ShaderToy中运行. *我放在这里咯ShaderToy基础学习中~欢迎交流(ノ>ω<)ノ 先上未抗锯齿的两个圆形图案,可以清楚看清图案边缘像素块,即“锯齿”. 附 ...

  7. python3抓图学习-百度贴吧

    # coding=utf-8 from bs4 import BeautifulSoup import urllib.request import os import time def downlao ...

  8. Ubuntu18.04格式化U盘为NTFS的方法

    1.先安装工具ntfs-3g sudo apt-get install ntfs-3g 2.找到需要格式化的U盘在系统中的序号 df -h 找到U盘的序列号后记下来,例如“/dev/sdd1” 3.解 ...

  9. ubuntu16.04 安装vscode

    1.通过官方PPA安装Ubuntu make sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make sudo apt-get update su ...

  10. pythonのdjango 缓存

    由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中,5 ...