搭建的目标平台系统版本: Ubuntu 16.04.2 LTS  .

本方法对其它ubuntu版本同样适用。

准备以下Tools:

  1. apache-tomcat-9.0.8(https://tomcat.apache.org/download-90.cgi)
  2. java-8-openjdk-amd64
  3. opengrok-1.1-rc36(https://github.com/oracle/opengrok/releases)

PS:rc35后脚本开始从shell切换到python, 我用的:https://github.com/OpenGrok/OpenGrok/releases/download/1.1-rc3/opengrok-1.1-rc3.tar.gz

4.    ctags(https://github.com/universal-ctags/ctags )

写在前面: 听说用python脚本搭建简便快捷,我搭建前期也是用Python脚本的方法摸索了一些时间,脚本执行出一些语法错误。果断放弃。转而摸索手动搭建。所以本文对不会python的朋友更加适用。 会python大拿可以查阅用python脚本搭建opengrok的方法(可参阅https://blog.csdn.net/lookfuyao/article/details/84991756?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param)。

1. 安装Java

我的电脑之前已经安装。安装过程此处略过。 没有安装可以参考一下链接的安装部分:

https://blog.csdn.net/yzx_zjut/article/details/81951869  :

1)通过 sudo yum install java 或者 sudo apt-get install java安装java 1.8.x版本(已有java1.8版本可跳过该步骤)
2)查看设备Java版本号,确保$ java -version 为 java version “1.8.x”及以上版本
3)在 .bash_prifile中配置JAVA_HOME为安装目录

########--java environment setting--#######export JAVA_HOME="/opt/yaozhongxiao/java" 

2.安装ctags

获取universal ctags软件: git clone https://github.com/universal-ctags/ctags.git

查看安装指导(https://gitee.com/neo532/universal-ctags (How to build and install)):

To build with Autotools, see docs/autotools.rst for more information. (To build on GNU/Linux, Autotools is your choice.) To build on Windows, see docs/windows.rst for more information. To build on OSX, see docs/osx.rst for more information.

根据上述 docs/autotools.rst 指导执行:

ator@ator-hp-prodesk-680-g4-mt:/opt/ctags-master$ sudo apt install \
        gcc make \
        pkg-config autoconf automake \
        python3-docutils \
        libseccomp-dev \
        libjansson-dev \
        libyaml-dev \
        libxml2-dev

ator@ator-hp-prodesk-680-g4-mt:/opt/ctags-master$ sudo  ./autogen.sh

PS :执行此步骤一定sudo,不然会报如下错误:
+ type autoreconf
+ type pkg-config
+ [ -z  ]
......
+ autoreconf -vfi
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force
autom4te: cannot create autom4te.cache: No such file or directory
aclocal: error: echo failed with exit status: 1
autoreconf: aclocal failed with exit status: 1
+ echo failed in running autoreconf
failed in running autoreconf
+ exit 1

ator@ator-hp-prodesk-680-g4-mt:/opt/ctags-master$ sudo ./configure

ator@ator-hp-prodesk-680-g4-mt:/opt/ctags-master$ sudo make -j8

ator@ator-hp-prodesk-680-g4-mt:/opt/ctags-master$ sudo make install

ator@ator-hp-prodesk-680-g4-mt:/opt/ctags-master$ ctags --version
Universal Ctags 5.9.0, Copyright (C) 2015 Universal Ctags Team
Universal Ctags is derived from Exuberant Ctags.
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
  Compiled: Nov 17 2020, 19:30:57
  URL: https://ctags.io/
  Optional compiled features: +wildcards, +regex, +iconv, +option-directory, +xpath, +json, +interactive, +sandbox, +yaml, +packcc

3. 部署opengrok 到 Tomcat :

解压下载的opengrok和Tomcat包到任意路径下并解压 ,我的在/opt/路径。

部署/opt/opengrok-1.1-rc3/lib/source.war/opt/apache-tomcat-9.0.39/webapps/ :

ator@ator-hp-prodesk-680-g4-mt:/~/workspace/opengrok_created$ sudo OPENGROK_TOMCAT_BASE=/home/ator/workspace/opengrok_created/apache-tomcat-9.0.39 /home/ator/workspace/opengrok_created/opengrok-1.1-rc3/bin/OpenGrok deploy
[sudo] password for ator:
Loading the default instance configuration ...
Installing/home/ator/workspace/opengrok_created/opengrok-1.1-rc3/bin/../lib/source.war to /home/ator/workspace/opengrok_created/apache-tomcat-9.0.39/webapps ...

Start your application server (Tomcat),  if it is not already
running, or wait until it loads the just installed web  application.

OpenGrok should be available on <HOST>:<PORT>/source
  where HOST and PORT are configured in Tomcat.

ator@ator-hp-prodesk-680-g4-mt:/opt$

访问 http://Server_IP:8080/source 应该已经可以看到opengrok页面了,但是没有项目的数据信息。

在/home/ator/workspace/opengrok_created/apache-tomcat-9.0.39/webapps目录下面可以看到一个source目录和source.war,就是刚刚部属的产物。

ator@ator-hp-prodesk-680-g4-mt:/opt/apache-tomcat-9.0.39/bin$ ls
bootstrap.jar                 configtest.sh     shutdown.sh
catalina.bat                  daemon.sh         startup.bat
catalina.sh                   digest.bat        startup.sh
catalina-tasks.xml            digest.sh         tomcat-juli.jar
ciphers.bat                   makebase.bat      tomcat-native.tar.gz
ciphers.sh                    makebase.sh       tool-wrapper.bat
commons-daemon.jar            setclasspath.bat  tool-wrapper.sh
commons-daemon-native.tar.gz  setclasspath.sh   version.bat
configtest.bat                shutdown.bat      version.sh

启动Tomcat测试:
ator@ator-hp-prodesk-680-g4-mt:/opt/apache-tomcat-9.0.39/bin$ ./startup.sh
bash: ./startup.sh: Permission denied
ator@ator-hp-prodesk-680-g4-mt:/opt/apache-tomcat-9.0.39/bin$ sudo ./startup.sh
[sudo] password for ator:
sudo: ./startup.sh: command not found

1).查阅 opengrok 使用指导 README.md(https://mp.csdn.net/editor/html/109804644)得知需要配置/apache-tomcat-9.0.39/bin环境变量 :

ator@ator-hp-prodesk-680-g4-mt:/opt/apache-tomcat-9.0.39/bin$ CATALINA_HOME=/opt/apache-tomcat-9.0.39/bin

2)也可以找到该文件,鼠标右键-> properties ->permissions-->勾选Execute

ator@ator-hp-prodesk-680-g4-mt:/opt/apache-tomcat-9.0.39/bin$ sudo ./catalina.sh start
[sudo] password for ator:
Using CATALINA_BASE:   /opt/apache-tomcat-9.0.39
Using CATALINA_HOME:   /opt/apache-tomcat-9.0.39
Using CATALINA_TMPDIR: /opt/apache-tomcat-9.0.39/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /opt/apache-tomcat-9.0.39/bin/bootstrap.jar:/opt/apache-tomcat-9.0.39/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

打开浏览器输入本机Tomcat IP(Server_IP)查看: 

http://Server_IP:8080/source

此时并没有可以选择的 project 可以查阅。

关闭tomcat :

ator@ator-hp-prodesk-680-g4-mt:/opt/apache-tomcat-9.0.39/bin$ sudo ./catalina.sh stop

4.  建立 opengrok 项目文件:

4.1配置 opengrok:

  • 配置 data root。
    data root 用于放置生成的索引文件和配置信息,比如我在 OpenGrok 目录下创建了一个 data 目录用作 data root,即 /opt/opengrok-1.1-rc3/data 。

  • 修改/opt/apache-tomcat-9.0.39/webapps/source/WEB-INF/web.xml 文件的 CONFIGURATION 为上一步 data 目录下的 configureation.xml,如果没有则可从web.xml 文件中 CONFIGURATION param-value描述的路径中找。

ator@ator-hp-prodesk-680-g4-mt:/opt/apache-tomcat-9.0.39/webapps/source/WEB-INF$ ls
lib  web.xml
ator@ator-hp-prodesk-680-g4-mt:/opt/apache-tomcat-9.0.39/webapps/source/WEB-INF$ cat web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name>OpenGrok</display-name>
  <description>A wicked fast source browser</description>
  <context-param>
    <description>Full path to the configuration file where OpenGrok can read its configuration</description>
    <param-name>CONFIGURATION</param-name>
    <param-value>/var/opengrok/etc/configuration.xml</param-value>
  </context-param>

比如我的配置好如下:

<display-name>OpenGrok</display-name><description>A wicked fast source browser</description><context-param><description>Full path to the configuration file where OpenGrok can read its configuration</description><param-name>CONFIGURATION</param-name><param-value>/opt/opengrok-1.1-rc3/data/configuration.xml</param-value></context-param>

4.2  为opengrok建立索引:

4.2.1  为需要建立索引的文件目录添加软连接:

ator@ator-hp-prodesk-680-g4-mt:/home/ator/workspace/opengrok_created/opengrok-1.1-rc3/source$ sudo ln -s  /home/ator/workspace/project_test ./p_test

ator@ator-hp-prodesk-680-g4-mt:/opt/opengrok-1.1-rc3/code$ ls
p_test  software_projects
ator@ator-hp-prodesk-680-g4-mt:/opt/opengrok-1.1-rc3/code$ ll
total 8
drwxr-xr-x 2 root root 4096 11月 20 13:38 ./
drwxr-xr-x 9 root root 4096 11月 19 21:01 ../
lrwxrwxrwx 1 root root   33 11月 19 21:04 p_test -> /home/ator/workspace/project_test/
lrwxrwxrwx 1 root root   29 11月 20 13:38 software_projects -> /home/ator/workspace/projects/
ator@ator-hp-prodesk-680-g4-mt:/home/ator/workspace/opengrok_created/opengrok-1.1-rc3/source$

4.2.2  为文件建立索引

ator@ator-hp-prodesk-680-g4-mt:/opt$ java -jar opengrok.jar -P -S -v -s /var/opengrok/src/p_test -d /var/opengrok/data/ -W /var/opengrok/data/configuration.xml
Error: Unable to access jarfile opengrok.jar
ator@ator-hp-prodesk-680-g4-mt:/opt$

.....需要cd 到包含 opengrok.jar的路径:

ator@ator-hp-prodesk-680-g4-mt:/opt/opengrok-1.1-rc3/lib$ sudo java -jar opengrok.jar -P -S -v -s /home/ator/workspace/opengrok_created/opengrok-1.1-rc3/source/p_test -d /home/ator/workspace/opengrok_created/opengrok-1.1-rc3/data/ -W /home/ator/workspace/opengrok_created/opengrok-1.1-rc3/data/configuration.xml

-s 后面的路径是建立软连接的路径,连接到需要建立索引的文件目录( path/to/source code),比如上例中p_test,是个软连接,链接到包含源码项目的跟文件夹目录:


ator@ator-hp-prodesk-680-g4-mt:~/workspace/opengrok_created/opengrok-1.1-rc3/lib$ sudo java -jar opengrok.jar -P -S -v -s /home/ator/workspace/opengrok_created/opengrok-1.1-rc3/source/test -d /home/ator/workspace/opengrok_created/opengrok-1.1-rc3/data/ -W /home/ator/workspace/opengrok_created/opengrok-1.1-rc3/data/configuration.xml
Logging filehandler pattern: %h/java%u.log
Dec 23, 2020 6:39:23 PM org.opensolaris.opengrok.index.Indexer prepareIndexer
INFO: Scanning for repositories...
Dec 23, 2020 6:39:23 PM org.opensolaris.opengrok.index.Indexer prepareIndexer
INFO: Done scanning for repositories (0s)
Dec 23, 2020 6:39:23 PM org.opensolaris.opengrok.index.Indexer prepareIndexer
INFO: Writing configuration to /home/ator/workspace/opengrok_created/opengrok-1.1-rc3/data/configuration.xml
Dec 23, 2020 6:39:23 PM org.opensolaris.opengrok.index.Indexer prepareIndexer
INFO: Done...
Dec 23, 2020 6:39:23 PM org.opensolaris.opengrok.index.Indexer doIndexerExecution
INFO: Starting indexing
Dec 23, 2020 6:39:23 PM org.opensolaris.opengrok.index.DefaultIndexChangedListener fileAdd
INFO: Add: /folder1/file1 (PlainAnalyzer)
Dec 23, 2020 6:39:23 PM org.opensolaris.opengrok.index.DefaultIndexChangedListener fileAdd
INFO: Add: /folder2/file2 (PlainAnalyzer)
Dec 23, 2020 6:39:23 PM org.opensolaris.opengrok.analysis.Ctags readTags
WARNING: Unexpected end of file!
Dec 23, 2020 6:39:23 PM org.opensolaris.opengrok.analysis.Ctags readTags
WARNING: Unexpected end of file!
Dec 23, 2020 6:39:23 PM org.opensolaris.opengrok.analysis.Ctags$1 run
WARNING: Error from ctags: ctags: Warning: "--file-scope" option is obsolete; use "--extras=+F" instead
ctags: Non-alphanumeric char is used in kind name: 'case classes' in "--regex-scala" optionDec 23, 2020 6:39:23 PM org.opensolaris.opengrok.analysis.Ctags$1 run
WARNING: Error from ctags: ctags: Warning: "--file-scope" option is obsolete; use "--extras=+F" instead
ctags: Non-alphanumeric char is used in kind name: 'case classes' in "--regex-scala" optionDec 23, 2020 6:39:23 PM org.opensolaris.opengrok.analysis.Ctags readTags
WARNING: ctags exited with code: 1
Dec 23, 2020 6:39:23 PM org.opensolaris.opengrok.analysis.Ctags readTags
WARNING: ctags exited with code: 1
Dec 23, 2020 6:39:23 PM org.opensolaris.opengrok.index.IndexDatabase optimize
INFO: Optimizing the index ...
Dec 23, 2020 6:39:23 PM org.opensolaris.opengrok.index.IndexDatabase optimize
INFO: Optimizing the index ...
Dec 23, 2020 6:39:24 PM org.opensolaris.opengrok.index.IndexDatabase optimize
INFO: done
Dec 23, 2020 6:39:24 PM org.opensolaris.opengrok.index.IndexDatabase optimize
INFO: done
Dec 23, 2020 6:39:24 PM org.opensolaris.opengrok.util.Statistics report
INFO: Done indexing data of all repositories (took 1.415 seconds)
Dec 23, 2020 6:39:24 PM org.opensolaris.opengrok.util.Statistics report
INFO: Total time: 1.579 seconds
Dec 23, 2020 6:39:24 PM org.opensolaris.opengrok.util.Statistics report
INFO: Final Memory: 66M/479M

更多opengrok.jar 参数可以使用以下命令查看:

$ java -jar opengrok.jar

ator@ator-hp-prodesk-680-g4-mt:~/workspace/opengrok_created/opengrok-1.1-rc3/lib$ java -jar opengrok.jar
Usage: opengrok.jar [options] [subDir1 ..]
-?
    Help
-A .ext|prefix.:analyzer
    Files with the named prefix/extension should be analyzed with the specified class
-a on/off
    Allow or disallow leading wildcards in a search
-B url
    Base URL of the user Information provider. Default: "http://www.myserver.org/viewProfile.jspa?username="
-C
    Print per project percentage progress information(I/O extensive, since one read through dir structure is made before indexing, needs -v, otherwise it just goes to the log)
-c /path/to/ctags
    Path to Exuberant Ctags from http://ctags.sf.net by default takes the Exuberant Ctags in PATH.
-d /path/to/data/root
    The directory where OpenGrok stores the generated data
-D
    Disable generating history for renamed files. Makes indexing faster for repositories with lots of renamed files.
-e
    Economical - consumes less disk space. It does not generate hyper text cross reference files offline, but will do so on demand - which could be sightly slow.
-G
    Assign commit tags to all entries in history for all repositories.
-H
    Generate history cache for all repositories
-h /path/to/repository
    just generate history cache for the specified repos (absolute path from source root)
-I pattern
    Only files matching this pattern will be examined (supports wildcards, example: -I *.java -I *.c)
-i pattern
    Ignore the named files (prefix with 'f:') or directories (prefix with 'd:') (supports wildcards, example: -i *.so -i *.dll)

-k /path/to/repository
    Kill the history cache for the given repository and exit. Use '*' to delete the cache for all repositories.

-K
    List all repository pathes and exit.
-L path
    Path to the subdirectory in the web-application containing the requested stylesheet. The following factory-defaults exist: "default", "offwhite" and "polished"
-l on/off
    Turn on/off locking of the Lucene database during index generation
-m number
    Amount of memory that may be used for buffering added documents and deletions before they are flushed to the Directory(default 16.0MB). Please increase JVM heap accordingly, too.
-N /path/to/symlink
    Allow this symlink to be followed. Option may be repeated. By default only symlinks directly under source root directory are allowed.
-n
    Do not generate indexes, but process all other command line options
-O on/off
    Turn on/off the optimization of the index database as part of the indexing step
-o path
    File with extra command line options for ctags
-P
    Generate a project for each of the top-level directories in source root
-p /path/to/default/project
    This is the path to the project that should be selected by default in the web application (when no other project set either in cookie or in parameter). May be used multiple times for several projects. Use "__all__" for all projects. You should strip off the source root.
-Q on/off
    Turn on/off quick context scan. By default only the first 1024k of a file is scanned, and a '[..all..]' link is inserted if the file is bigger. Activating this may slow the server down (Note: this is setting only affects the web application)
-q
    Run as quietly as possible
-R /path/to/configuration
    Read configuration from the specified file
-r on/off
    Turn on/off support for remote SCM systems
-S
    Search for "external" source repositories and add them
-s /path/to/source/root
    The root directory of the source tree
-T number
    The number of threads to use for index generation. By default the number of threads will be set to the number of available CPUs
-t number
    Default tabsize to use (number of spaces per tab character)
-U host:port
    Send the current configuration to the specified address (This is most likely the web-app configured with ConfigAddress)
-V
    Print version and quit
-v
    Print progress information as we go along
-W /path/to/configuration
    Write the current configuration to the specified file (so that the web application can use the same configuration
-w webapp-context
    Context of webapp. Default is /source. If you specify a different name, make sure to rename source.war to that name. Also FULL reindex is needed if this is changed.
-X url:suffix
    URL Suffix for the user Information provider. Default: ""
-z number
    depth of scanning for repositories in directory structure relative to source root. Default is 3 .

索引建立后需要关闭tomcat ,然后重新启动,浏览器中opengrok才内同步显示最新内容:

ator@ator-hp-prodesk-680-g4-mt:/opt/apache-tomcat-9.0.39/bin$ sudo ./catalina.sh  stop
Using CATALINA_BASE:   /opt/apache-tomcat-9.0.39
Using CATALINA_HOME:   /opt/apache-tomcat-9.0.39
Using CATALINA_TMPDIR: /opt/apache-tomcat-9.0.39/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /opt/apache-tomcat-9.0.39/bin/bootstrap.jar:/opt/apache-tomcat-9.0.39/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
ator@ator-hp-prodesk-680-g4-mt:/opt/apache-tomcat-9.0.39/bin$ sudo ./catalina.sh  start
Using CATALINA_BASE:   /opt/apache-tomcat-9.0.39
Using CATALINA_HOME:   /opt/apache-tomcat-9.0.39
Using CATALINA_TMPDIR: /opt/apache-tomcat-9.0.39/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /opt/apache-tomcat-9.0.39/bin/bootstrap.jar:/opt/apache-tomcat-9.0.39/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

然后打开浏览器,输入URL:  http://Server_IP:8080/source 如下图:

愉快的搜索你所需要的文件内容吧 l^^l ...

PS:  建立opengrok-1.1-rc3/code/software_projects 后,之前建立的索引 opengrok-1.1-rc3/code/p_test  文件项目不见了。如果需要建立多套项目文件索引,可以添加项目文件到opengrok-1.1-rc3/code/software_projects链接的路径下。 或者还有其它方法,有时间了再研究整理更新 Loading......

参阅:

1. https://www.jianshu.com/p/b5665121e136 (感觉参考这一篇足够)

2.https://blog.csdn.net/lookfuyao/article/details/84991756?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param

3.https://blog.csdn.net/yzx_zjut/article/details/81951869

4.https://www.jianshu.com/p/c553fe58bb4f

5.https://ox0spy.github.io/post/install/setup-opengrok/

6.https://blog.csdn.net/dgj8300/article/details/81630171?utm_medium=distribute.pc_relevant.none-task-blog-title-3&spm=1001.2101.3001.4242

7.https://www.cnblogs.com/zjutzz/p/9393397.html

8. 建立文件链接 : https://www.linuxprobe.com/ln-command-linux.html

Ubuntu16.04搭建OpenGrok环境相关推荐

  1. Ubuntu16.04 搭建mujoco环境+强化学习gym

    (2022)Ubuntu16.04 搭建mujoco环境+强化学习gym 前言 一.Ubuntu16.04系统安装 二.mujoco安装 1.安装教程 2.程序验证 三.mujoco-py 安装 1. ...

  2. Ubuntu16.04搭建caffe环境(cpu-only)与Python调用

    2019独角兽企业重金招聘Python工程师标准>>> 本文参考caffe官网教程以及网上的两篇教程:Ubuntu14.04+CPU+Python的Caffe安装教程.Caffe学习 ...

  3. Ubuntu16.04深度学习环境搭建

    Ubuntu16.04深度学习环境搭建(anaconda3+cuda10.0+cudnn7.6+pytorch1.2) 文章目录 Ubuntu16.04深度学习环境搭建(anaconda3+cuda1 ...

  4. 群晖python套件包_利用群晖Docker安装ubuntu16.04搭建python网站服务器(部署篇)

    在帖子<利用群晖Docker安装ubuntu16.04搭建python网站服务器(安装篇)(地址:http://www.cirdown.com:81/thread-185-1-1.html)&g ...

  5. ubuntu18.04搭建SLAM环境 转 高翔 十四讲匹配环境

    ubuntu18.04搭建SLAM环境_stjuliet的博客-CSDN博客_ubuntu安装slam

  6. Ubuntu16.04 搭建SVN服务器(建立版本仓及import和checkout代码)

    Ubuntu16.04 搭建SVN服务器(建立版本仓及import和checkout代码) 1.    安装subversion sudo apt-get install subversion 2.  ...

  7. Ubuntu16.04配置orb_slam2环境,orb_slam的单目数据集,单目实时运行,RGB-D数据集的运行

    Ubuntu16.04配置orb_slam2环境,orb_slam的单目数据集,单目实时运行,RGB-D数据集的运行 1.运行配置过程中参考链接如下: 1.配置orb_slam2环境 参考链接http ...

  8. 群晖 python_利用群晖Docker安装ubuntu16.04搭建python网站服务器(安装篇)

    折腾的原因:我目前有两个网站需要挂载,因为为了玩,并不是为了大流量,所以就挂在家里的群晖中.一个是小圈子(www.cirdown.com:81),因为用的是discuz论坛,php的,所以直接用我的黑 ...

  9. Ubuntu16.04搭建GitLab服务器教程

    GitLab官方搭建教程地址: https://about.gitlab.com/install/#ubuntu 1.安装包下载 Ubuntu16.04下载地址:http://releases.ubu ...

最新文章

  1. 无线多操作系统启动之uInitrd阶段NFS挂载篇
  2. SSL,SSH,OpenSSL,OpenSSH,HTTPS的区别
  3. linux sublime 输入中文,Linux中Sublime Text无法输入中文怎么办
  4. Spring - Java/J2EE Application Framework 应用框架 第 8 章 源代码级的元数据支持
  5. 鸟哥的Linux私房菜(基础篇)-第零章、计算机概论(零.4)
  6. WebBrowser加载完毕后再往下执行
  7. Java设计模式分为创建模式, 结构模式, 行为模式 3种类型
  8. rstudio的数据集怎么建立和保存_这个40M的小工具助你在windows下处理数据如虎添翼...
  9. 文件摆渡是什么意思_小白学炒股:除权、填权、贴权是个什么东东?
  10. python实现反向传播_如何反向链接列表? (C和Python实现)
  11. 微软BI 之SSIS 系列 - 通过设置 CheckPoints 检查点来增强 SSIS Package 流程的重用性...
  12. 15套前端经典实战项目大合集,小白练手必备实战项目
  13. 《Java设计模式》刘伟 超清晰版本 下载链接
  14. Flutter diff: /../Podfile.lock: No such file or directory AndroidStudio上的解决
  15. Mathpix Snip他们都说好用!我也试一试尝试下载-安装-使用
  16. sin_cos_tan_cot_sec_cosec 三角函数计算器
  17. 一些linux和OpenGL的笔记
  18. 面试笔记:面经-网易考拉
  19. 特殊矩阵(对称矩阵)的压缩存储和解压缩
  20. 记一次zookeeper连接慢的问题和解决方法

热门文章

  1. vue中threejs报错记录:Class constructor Object3D cannot be invoked without ‘new‘
  2. 蒙特卡洛抽样电动汽车充电负荷
  3. 《计算机应用基础》在线作业一
  4. 十级龙王间的决斗(四刷) kkmd66
  5. 父子进程之间的共享资源
  6. Python简易图片文字识别
  7. css中单位px、pt、em和rem的区别
  8. TIOBE 9 月编程语言排行榜:Python 直逼第一,仅差 0.16%!
  9. Matlab基本函数-fix函数
  10. RAR Extractor - The Unarchiver Pro for mac(简单小巧的压缩软件)