精华内容
下载资源
问答
  • 初始化Ubuntu工作环境

    千次阅读 2016-05-19 17:52:16
    去年6月份开始使用Ubuntu 14.04 LTS,当时是在公司电脑上装的,因为是第一次搭建工作环境,很多东西不是很随心意。终于等到16.04 LTS版发布,就重装系统,公司的那个老爷本也不用了。 ubuntu desktop是一个很简单的...

    博文:初始化Ubuntu工作环境
    主页:http://www.howardliu.cn/

    去年6月份开始使用Ubuntu 14.04 LTS,当时是在公司电脑上装的,因为是第一次搭建工作环境,很多东西不是很随心意。终于等到16.04 LTS版发布,就重装系统,公司的那个老爷本也不用了。
    ubuntu desktop是一个很简单的桌面系统,比较适合菜鸟级的使用,学习曲线比较平缓。本文主要是记录一下这次搭建工作环境的经过,留作备份,下一次再需要重装的时候可以有个依据。
    ubuntu-cloud

    1 系统语言

    作为英语的半吊子,没办法直接使用英文环境,所以系统安装的是简体中文环境,但是系统创建的home路径中的文件夹都是中文的:桌面、文档、下载。。。作为一个懒人,不想在终端输命令的时候还要切换输入法,所以把这几个路径全部改为英文。

    $ export LANG=en_US
    $ xdg-user-dirs-gtk-update

    会弹出一个对话框,问是否修改home下的文件夹名字,直接点击”Update Names”,问题解决,然后把系统语言改回简体中文。

    $ export LANG=zh_CN.UTF-8
    $ xdg-user-dirs-gtk-update

    这次又弹出的对话框是询问是否把文件夹名字改为简体中文的,直接点否就行。为了以后不再询问,选中不要再次询问,以后就不会弹出了。

    2 软件源

    大家都知道,国内的网络环境不是很好,ubuntu的镜像服务器在地球另一端,所以装完系统通常需要修改软件源,国内比较可靠的是阿里云的镜像,为阿里赞一个。需要使用root权限修改/etc/apt/sources.list文件:sudo vi /etc/apt/sources.list,我这里是需要把”cn.archive.ubuntu.com”和”security.ubuntu.com”改为”mirrors.aliyun.com”,根据自己的情况修改。这样ubuntu的系统更新、安全更新、软件更新都是走阿里云的镜像了,速度还是很快的。
    下面是我的软件源文件(精简过的,原文件很多注释):

    deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
    deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
    deb http://mirrors.aliyun.com/ubuntu/ xenial universe
    deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
    deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
    deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
    deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse

    3 快捷初始化

    ubuntu使用可能会用到一些解码器之类的组件、插件、字体,一个个找实在麻烦,好在有一个ubuntu-restricted-extras,可以直接帮忙安装这一堆繁琐的东西。命令行输入:sudo apt install ubuntu-restricted-extras,然后等待安装完成即可。

    4 常用软件

    基础环境简单配置完成,接下来就开始安装常用的软件。

    4.1 vim

    因为开发使用的是IDE,vi工具只是用来编辑一些简单的文件,所以没装太多插件。作为一个vi的菜鸟,只会一些简单的快捷键,所以还是装上vim吧:

    $ sudo apt install vim

    4.2 Chromium & Chrome

    ubuntu自带的浏览器是Firefox,一款非常优秀的浏览器,Chrome中也有部分是firefox的代码,奈何已经熟悉Chrome,还是装上Chrome浏览器。这里的Chromium相当于Chrome的先行军,开源项目,全球优秀的开发人员进行维护,增加功能,然后Google再把这些新功能加到Chrome中,ubuntu的软件库中自带Chromium,想装Chrome还得翻墙出去下,为了快(tou)捷(lan),直接装Chromium:

    $ sudo apt-get install chromium-browser unity-chromium-extension chromium-codecs-ffmpeg-extra

    Chromium和Firefox一样,有很多扩展扩展程序(依赖浏览器)和应用(可以不启动浏览器独立运行):

    • The QR Code Extension: 把地址栏地址转为二维码
    • 有道云笔记网页剪报: 用过有道云笔记的比较熟悉,抓取网页内容,保存到有道云笔记中
    • cVim: 一个摆脱鼠标的扩展程序,键盘流的福音,好像还有很多类似的扩展,大同小异
    • JSON Formatter: 可以把json响应内容格式化
    • JSON Editor: 应用,用于编辑json数据
    • Postman: 应用,http的客户端

    4.3 JDK

    作为Java开发,最需要安装的就是jdk了,ubuntu库中只有Open JDK,但是工作环境中还是使用Oracle JDK,其实可以在Oracle官网下载tar.gz包,解压,然后配置环境变量,但是安装ant、maven的时候还是会再次引入open jdk,烦不胜烦,直接使用webupd8的源,省去乱七八糟的烦恼。

    $ sudo add-apt-repository ppa:webupd8team/java
    $ sudo apt-get update
    $ sudo apt-get install oracle-java6-installer oracle-java7-installer oracle-java8-installer

    这里把jdk 6\7\8几个版本都装上了,虽然自己的项目中使用JDK 8,但是有时候需要把一个公共组件提供给其他组,就需要jdk 6来开发编译打包,这个时候需要切换下默认jdk的版本:

    $ sudo apt-get install oracle-java6-set-default # 切换为jdk6
    $ sudo apt-get install oracle-java7-set-default # 切换为jdk7
    $ sudo apt-get install oracle-java8-set-default # 切换为jdk8

    修改jdk的环境变量,为了各用户统一,直接在系统环境变量中增加配置:

    cd /etc/profile.d
    sudo touch set_classpath.sh
    sudo chmod +x set_classpath.sh

    set_classpath.sh文件的内容如下:

    #!/bin/bash
    export JRE_HOME=$JAVA_HOME/jre
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

    可以通过source set_classpath.sh使环境变量立即生效,也可以等下次重启之后生效。

    4.4 Ant

    工作中基本不用Ant了,一般maven就够用了。先装上,用不用再说:sudo apt-get install ant,安装完之后配置环境变量:

    $ cd /etc/profile.d
    $ sudo touch ant_env.sh
    $ sudo chmod +x ant_env.sh

    ant_env.sh内容如下:

    #!/bin/bash
    export ANT_HOME=/usr/share/ant
    export PATH=$PATH:$ANT_HOME/bin

    4.5 Maven

    构建工具最常用maven了,基本不需要关心jar包之间的依赖,而且在IDE中,maven的插件也比较完善了。

    $ sudo apt-get install maven
    
    # 安装完成后通过mvn -n查看maven版本
    $ mvn -v
    Apache Maven 3.3.3
    Maven home: /usr/share/maven
    Java version: 1.8.0_66, vendor: Oracle Corporation
    Java home: /usr/lib/jvm/java-8-oracle/jre
    Default locale: zh_CN, platform encoding: UTF-8
    OS name: "linux", version: "4.2.0-22-generic", arch: "amd64", family: "unix"

    4.6 SVN

    公司喜欢用svn,不过也马上要换成Git了,还是把svn安装记录下,万一以后需要呢。

    $ sudo apt-get install subversion
    $ sudo apt-get install libsvn-java # 如果要用Eclipse SVN插件还得装下libsvn-java
    
    # 使用ln建立链接,不然插件还是会报错:
    $ sudo mkdir -P /usr/java/packages/lib/amd64/
    $ sudo ln -s /usr/lib/x86_64-linux-gnu/jni/libsvnjavahl-1.so.0.0.0 /usr/java/packages/lib/amd64/libsvnjavahl-1
    $ sudo ln -s /usr/lib/x86_64-linux-gnu/jni/libsvnjavahl-1.so.0.0.0 /usr/java/packages/lib/amd64/libsvnjavahl-1.so

    在Linux中可用的svn的GUI工具只有一个rapidsvn,已经很久没有更新过了,不过也还凑合用,复杂操作可以使用命令,

    $ sudo apt-get install rapidsvn

    4.7 Git

    直接安装

    sudo apt-get install liberror-perl git-man git git-doc

    git的GUI工具就不装了,毕竟git的命令很简单,而且IDE中的插件效果也挺不错的。

    4.8 其他工具

    • unison: 一个同步工具,可以比较文件夹之间是否有修改,可以很直观的操作同步数据,相当于有GUI的sync,sudo apt-get install unison unison-gtk
    • ssh: 这个不多说,sudo apt-get install openssh-client openssh-server openssh-sftp-server
    • openvpn: 在家办公的时候,需要通过VPN连接公司内网,sudo apt-get install network-manager-openvpn
    • FileZilla: 连接服务器的文件管理器,sudo apt-get install filezilla
    • Meld: 文件\文件夹对比工具,相当于带GUI的diff,sudo apt-get install meld
    • mysql: 不多说,sudo apt-get install mysql-client mysql-workbench
    • nethogs: 各应用实时网速检查,需要sudo权限,sudo apt-get install nethogs
    • indicator-multiload: 综合负载指示器,可实时显示CPU使用率、内存占用、网速、负载、磁盘IO、交换空间等,sudo apt-get install indicator-multiload
    • GIMP: 图像编辑,sudo apt-get install gimp gimp-data-extras
    • GParted: 分区管理器,需要root权限,sudo apt-get install gparted

    5 基本配置

    5.1 ubuntu终端

    ubuntu终端会显示当前位置的全路径,当目录比较深的时候,占用空间太大,所以直接进行优化:

    export PS1='\[\e]0;\u@\h: \w\a\]\[\033[01;32m\]\u\[\033[01;33m\]@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]$ '

    5.2 本地打开文件数限制解除

    echo "fs.file-max = 819200" | sudo tee /etc/sysctl.d/60-fs-file-max.conf
    echo "fs.inotify.max_user_watches = 524288" | sudo tee /etc/sysctl.d/60-fs-max-user-watches.conf

    6 结束

    到这里,这个ubuntu环境就基本配置完成了。
    话说自从把系统换成ubuntu了,好像很久没有玩游戏了。舍友的系统是windows,前一段时间,想玩了,就玩他的,后来媳妇抱怨说我总是跟他们混在一起,也就不怎么玩了,最近好像就想不起来玩。算是把游戏戒了。
    然后使用linux,为了图省事,经常会用到终端,几条简单命令就成,慢慢向键盘党靠拢,虽然不说能够提高效率,至少不会因为找鼠标打断思路。

    展开全文
  • 首先了解一下com组件,这样我们才能明白初始化com库的作用,用到两个API:CoInitialize,CoInitializEX 一、什么是COM组件 1、COM是Component Object Model (组件对象模型)的缩写 2、COM组件是以WIN32动态链接库(DLL...

    首先了解一下com组件,这样我们才能明白初始化com库的作用,用到两个API:CoInitialize,CoInitializEX

    一、什么是COM组件

    1、COM是Component Object Model (组件对象模型)的缩写
    2、COM组件是以WIN32动态链接库(DLL)或可执行文件(EXE)形式发布的可执行代码组成。
    3、COM组件是遵循COM规范编写的
    4、COM组件必须是动态链接的
    5、COM组件不是一种计算机语言
    6、COM组件不是DLL,只是利用DLL来给组件提供动态链接的能力
    7、COM组件不是一个API函数集。
    8、COM组件不是类,COM 就是一套接口规范,就好象交通规则一样
    9、可以供多种语言调用,跨语言的调用
    10、COM中的接口是一组由组件实现的提供给客户使用的函数。基于二进制接口
    《Inside C++ Object Model》
    《COM本质论》
    《COM+技术内幕》

    视频教程:

    511遇见易语言模块API教程

    二、认识大漠插件

    Dm.dll插件目前是用COM架构设计的,属于第三方COM对象,要想在我们自己的程序里引用(同进程内调用),需要注册,或免注册直接调用。
    大漠综合插件(dm.dll)采用vc6.0编写,是一款集前后台,文字识别,图色,键鼠,窗口,内存,DX,Call等功能于一身的综合插件。主要用于按键精灵、简单游、易语言等辅助制作工具,具有识别速度超级快的特点! 采用COM接口编写,适用于所有语言调用。

    三、初始化COM

    1、CoInitialize

    CoInitialize是Windows提供的API函数,用来告诉 Windows以单线程的方式创建com对象。
    应用程序调用com库函数(除CoGetMalloc(获取对默认的OLE任务内存分配器指针)和内存分配函数)之前必须初始化com库。

    CoInitialize(0)

    多线程里创建COM对象前先初始化,一个线程只调用一次,

    CoInitialize(0)
    dm.创建 ()

    2、CoInitializeEx

    是 Windows提供的API函数,为当前线程初始化COM库并设置并发模式 。应用程序调用com库中的函数(除CoGetMalloc和内存分配函数)之前必须初始化com库。

    CoInitializeEx(0,0)

    函数原型

    HRESULT CoInitializeEx(
    void * pvReserved,
    DWORD dwCoInit
    );
    <strong class="text-danger"> 参数介绍:</strong>
    pvReserved
    系统 保留的参数,必须传入 NULL.
    dwCoInit

    该标示指明基于当前线程的并发模式和初始化选项。该参数是 COINIT 枚举类型,传入参数时候,除了
    COINIT_APARTMENTTHREADED 和COINIT_MULTITHREADED标记外,其余的标记可以组合使用。
    在应用程序中使用COM库,至少要调用一次CoInitializeEx函数(通常也就调用一次)。如果传入参数的并发标志相同,单个线程也可以多次调用该函数

    3、CoUninitialize

    关闭当前线程的COM库,卸载线程加载的所有dll,释放任何其他的资源,关闭在线程上维护所有的连接。
    CoInitialize、CoInitializeEx都是windows的API,主要是告诉windows以什么方式为程序创建COM对象。
    有哪些方式呢?单线程和多线程。
    CoInitialize指明以单线程方式创建。
    CoInitializeEx可以指定以多线程方式创建。
    创建单线程方式的COM服务器时不用考虑串行化问题,多线程COM服务器就要考虑。
    在使用中,使用CoInitialize创建可使对象直接与线程连接,得到最高的性能。
    创建多线程对象可以直接接收所有线程的调用,不必像单线程那样需要消息排队,但却需要COM创建线程间汇集代理,这样访问效率高。
    CoInitialize对windows来说可能只是设置一个标志
    CoUninitialize可能只是清除标志。

    CoInitialize和CoUninitialize最好在应用程序初始化以及退出时调用,样例中在构造以及析构中调用是不提倡的做法。

    当调用CoUninitialize这个函数的时候,会关掉其所做的线程。那么如果你的应用在运行的时候只有一个进程,而且该进程也仅有一个线程的话,那么调用该函数自然会导致整个应用的退出。

    根据线程模型划分,进程内COM组件分为四类:Single,Apartment,Free,Both

    COM套间类型为两类:STA和MTA,STA是单线程套间,只能运行一个线程,但是一个进程内可以创建多个STA,STA总是与一个线程相关联,其中第一次创建的STA通常成为主STA(Main STA);MTA是多线程套间,一个进程内只能有一个MTA,但是MTA允许运行多个线程。
    一个线程要进入到STA中还是MTA中,是由线程内调用CoInitializeEx函数的第二个参数决定的。
    CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);进入到STA(相当于调用CoInitialize(NULL);)
    CoInitializeEx(NULL, COINIT_MULTITHREADED);进入到MTA

    注意:在不再需要的时候,调用CoUninitialize();退出套间,一般CoInitializeEx与CoUninitialize都需要成对调用,以释放COM占用的资源。

    四、CoInitializeEx 与CoInitialize的区别

    1、多线程崩溃和使用CoInitialize或CoInitializeEX没有关系
    这里也不能说CoInitializeEX(0,0)更适合易语言,而是更适合高并发。
    因为CoInitializeEX内部有锁机制,效率更慢,而需要用内存换效率。
    2、多线程和高并发不是一回事极端高并发下崩溃
    3、所以,在某种环境下,两者是一致的。 而高并发可能让CoInitialize堵塞了
    4、后来的应使用CoInitializeEX,但是调用大量早期的历史Com库,是使用的CoInitialize
    5、有的时候,高并发崩溃了,真的没有办法,因为那超过了机器的处理能力,只能限制。
    虽然我们动不动就多线程的说法,但是,实际上我们的CPU常见的也就是4核心。那么真正在运行的也就是4条线程
    所以,线程数量,不是越多越好的。切换时间片的时间,都够执行很多的代码了。线程多了反而造成了资源的浪费
    如果真的需要1400条线程去运行,那你的确需要CoInitializeEX(0,8)确保安全和使用更多的内存
    但是,如果只是几条线程,或者几十条线程,用CoInitialize可以运行的更快,和少占用资源
    MSDN也是推荐CoInitializeEX的,那为啥,还是有人选择CoInitialize呢,存在即合理的
    为什么CoInitialize效率快的,高并发下反而卡死了,占用资源更多呢?
    那是因为,他运行的快,无锁,使用了更多的CPU资源
    所以,2个都是可以的,看自己的应用场景取舍。更倾向CoInitialize
    但是,如果需要高并发,而客户机器配置也很强大,也会选择CoInitializeEX
    1、问题的重点是,同一套代码,用CoInitialize(0)或者CoInitializeEX(0,2)高并发下程序会崩溃,而用CoInitializeEX(0,0)就不会,测试程序的代码只有几行,是易语言开发者常用的计算js的方式,是精易模块里大量使用的方式,不管您认为是代码问题还是易语言本身问题,用CoInitializeEX(0,0)不崩溃是事实,如果一定要说有错,那么是否可以说CoInitializeEX(0,0)更适合易语言,更适合易语言开发者?
    2、多并发和多线程不是一回事,线程安全跟是否支持高并发也不是一回事
    3、汇编那个我之前就看了,他实际上说的是 CoInitializeEX(0,2) 等效于 CoInitialize(0)
    4、其它国际化的语言并没有默认使用CoInitialize(0),恰恰相反的是CoInitializeEX在其他编程语言中运用还是比较广泛的,CoInitializeEX默认的参数就是CoInitializeEX(0,0),而CoInitialize(0)相当于 CoInitializeEX(0,2)
    5、只要windows系统没有崩溃,黑屏或者蓝屏,而程序崩溃了,那必然是有原因的,有冲突的,这个冲突的地方并不难找到,任何崩溃的问题是应该并且可以得到解决的
    CoInitialize、CoInitializeEx都是windows的API,主要是告诉windows以什么方式为程序创建COM对象,原因是程序调用com库函数(除CoGetMalloc和内存分配函数)之前必须初始化com库。

    有哪些方式呢?单线程和多线程。
    CoInitialize指明以单线程方式创建。
    CoInitializeEx可以指定COINIT_MULTITHREADED以多线程方式创建。
    创建单线程方式的COM服务器时不用考虑串行化问题,多线程COM服务器就要考虑。
    在使用中,使用CoInitialize创建可使对象直接与线程连接,得到最高的性能。创建多线程对象可以直接接收所有线程的调用,不必像单线程那样需要消息排队,但却需要COM创建线程间汇集代理,这样访问效率不高。

    参考:易语言模块API制作系列视频教程

               易语言模块API视频教程线程初始化com库(CoInitialize)

    展开全文
  • 本文将通过docker安装SonarQube,并进行相关初始化配置(如中文配置)和安全性配置(禁止游客访问项目和禁止游客提交代码质量评估等) 一 安装 安装之前请注意SonarQube的要求,具体请见:...

    本文将通过docker安装SonarQube,并进行相关初始化配置(如中文配置)和安全性配置(禁止游客访问项目和禁止游客提交代码质量评估等)

    一 安装

    安装之前请注意SonarQube的要求,具体请见:https://docs.sonarqube.org/display/SONAR/Requirements
    个人或小团队使用时硬件要求内存至少在2GB以上并预留1GB供系统使用

    SonarQube默认使用端口为9092的内存数据库,实际生产开发中建议配置数据库(如MySQL,Oracle,SQL Server等),但需注意其版本兼容性和字符集配置等

    如果要将其作为服务器(跟随Windows/Linux主机启动,使用Apache/Nginx反向代理,配置集群等),请参考:https://docs.sonarqube.org/display/SONAR/Installing+the+Server

    0 文件结构

    到官网( https://www.sonarqube.org/downloads/ )下载最新版本zip包 (截至2018.10月最新版为 7.3 ),可见文件结构如下
    文件结构
    各个目录作用如下:

    • bin
      该目录存放了各个系统的 SonarQube 的启动脚本,目前支持的系统有 Linux(32位/64位),Mac(32位),Windows(32/64位),这些脚本都使用了 Java Service Wrapper (jsw:可用于将Java后台程序包装成一个后台服务运行。除此以外,JSW还可以在你的Java程序挂掉以后,自动帮你把服务再次拉起,相当于提供了一个守护进程的功能。)技术
    • conf :该目录用于存放配置文件(主要是 sonar.properties ),最常用的是数据库连接配置
    • data : 该目录用于存放数据,如 H2内存数据库数据,已部署的插件jar包,ES5数据等
    • elasticsearch : 该目录用于存放 elasticsearch 相关服务,包括不同系统的脚本
    • extensions : 该目录用于存放下载文件、jdbc驱动、已下载的插件等
    • lib : 该目录用于存放依赖库
    • logs : 存放各类日志信息
    • temp : 存放临时文件
    • web : 用来提供 SonarQube 网页服务

    1 常规安装

    到官网( https://www.sonarqube.org/downloads/ )下载最新版本zip包 (截至2018.10月最新版为 7.3 ),解压即可
    假设解压目录为:“C:\sonarqube”(Windows)或“/etc/sonarqube”(其他),则对应的启动指令为:

    • Windows:C:\sonarqube\bin\windows-x86-xx\StartSonar.bat
    • 其他:/etc/sonarqube/bin/[OS]/sonar.sh console

    2 docker安装

    进入dockerhub项目主页:https://hub.docker.com/_/sonarqube ,最新版本是 7.1
    使用如下指令启动(也可开放9092端口使得H2数据库开放)

    docker run -d --name sonarqube -p 9000:9000 sonarqube
    

    也可以通过环境变量配置数据库连接

    二 初始化配置

    1 登录

    输入 IP:9000 即可访问主页,如下
    主页
    可以看到这个时候虽然没有登录,但sonarqube并没有拒绝访问,换句话说,如果这个时候有项目在分析的有,游客是可以访问到的,这个后面会进行配置
    现在先要用 admin/admin 登录,刚进入的时候会提示创建一个 token,这个可以先不管,点击右上角的 Skip this tutorial跳过

    2 修改语言为中文

    如下,选择中文包插件进行安装,安装完成后安装上方提示点击重启即可生效
    安装中文包

    三 安全性配置

    0 修改默认密码

    如下,注意令牌也是在这里生成的
    修改密码

    1 禁止游客访问

    如下,强制要求用户认证,禁止未登录用户访问 SonarQube
    禁止游客访问

    2 禁止游客提交代码质量评估

    注意,要点一下执行分析和置备项目(可以在第一次分析项目之前初始化项目结构)下的小勾,将其取消掉
    禁止任意提交代码
    再刷新一下当前页就会发现 Anyone 的配置项消失了

    3 新建授权用户

    新建用户如下,注意登录时使用的是 lin 而非 LinShen ,注意新用户默认是分配到 sonar-users 组下的
    新建用户

    4 分配新用户权限

    需要到 配置-权限-全局权限下配置 新用户,一开始没有显示新用户就在搜索栏输入用户名搜索
    然后分配其 执行分析 和 备置项目 的权限
    配置新用户权限
    如此,即可注销,使用新用户登录了
    如下,可以看到少了配置栏,而且,如果涉及到超越权限的操作,SonarQube还会提醒用户以更高权限用户登录访问
    lin登录

    四 其他

    参考资料

    SonarQube官网:https://www.sonarqube.org/
    SonarQube 官方文档:https://docs.sonarqube.org/display/SONAR/Documentation
    DockerHub 地址:https://hub.docker.com/_/sonarqube/

    相关文章

    SonarQube学习系列1:安装和初始化、安全配置:https://blog.csdn.net/alinyua/article/details/83244983
    SonarQube学习系列2:Maven+SonarQube 最佳实践:https://blog.csdn.net/alinyua/article/details/83267934

    展开全文
  • 在本章节中,你将学习FortiManager的基础知识。这包括FortiManager如何适应你现有的网络架构。  FortiManager为各种Fortinet安全设备(如FortiGate、FortiWiFi、FortiCarrier和FortiSwitch设备... 初始配置  我们...

     在本章节中,你将学习FortiManager的基础知识。这包括FortiManager如何适应你现有的网络架构。

      FortiManager为各种Fortinet安全设备(如FortiGate、FortiWiFi、FortiCarrier和FortiSwitch设备)提供集中策略设置、配置和更新管理。

     在本章节中,我们将探讨以下主题:

    • 核心功能
    • 关键概念
    • 初始配置

      我们先看看核心功能。

     完成本节后,你应该能够:

    • 描述FortiManager的用途
    • 描述FortiManager的关键特性
    • 描述FortiMeter
    • 描述管理域(ADOM)的用途以及何时可以使用它们
    • 确定FortiManager支持哪些设备

      通过演示使用FortiManager的关键功能,你将能够在自己的网络中有效地使用设备。

     什么时候应该在你的网络中使用FortiManager?

      在大型企业和托管安全服务提供商(MSSP)中,网络规模带来了小型网络所没有的挑战:批量部署、计划配置更改及下发、并对许多变化进行维护、跟踪和审计。

      通过FortiManager集中管理可以帮助你更轻松地管理多种设备的不同部署类型,并降低操作成本。

      FortiManager能做什么?

    • 在你的网络中配置防火墙策略
    • 充当配置版本控制和安全审计的中央资料库
    • 部署和管理复杂的网状和星型IPsec VPN
    • 充当受管设备和FortiClient安装的专用FortiGuard分发服务器(FDS)
    • 使用JSON API脚本和自动化设备配置、策略更改等等

     FortiManager可以帮助你更好地组织和管理你的网络。FortiManager的主要功能包括:

      集中管理:你可以使用FortiManager从单个控制台管理所有FortiGate,而不是单独登录数百个FortiGate。

      管理域(ADOM):FortiManager可以将设备分为地理或功能ADOM,如果你拥有大型网络安全管理员团队,则更加适应ADOM。

      配置修订控制:你的FortiManager保存所有配置更改的历史记录。你可以安排FortiManager部署新的配置或将受管设备恢复到之前的配置。

      本地FortiGuard服务供应:为了减少网络延迟并尽量减少互联网带宽使用,你的受管设备可以使用 FortiManager作为专用的FortiGuard分布式网络(FDN)服务器。

      固件管理:FortiManager可以为受管设备安排固件升级。

      脚本:FortiManager支持基于CLI和基于TCL语言的脚本。

      扁平化管理窗口(包含:VPN、FortiAP和FortiClient):FortiManager管理界面简化了VPN、FortiAP和FortiClient的部署和管理。

      记录和报告:托管设备可以在FortiManager上存储日志。从该日志数据中,你可以生成基于SQL的报告,因为FortiManager具有与FortiAnalyzer相同的日志记录和报告功能。

      支持Pay-as-you-go授权模式:Fortinet VM现在可以按需获得。

     Fortinet VM按需授权是一个新的授权方式,旨在为大型MSSP提供管理客户安全需求的经济高效的方法。该计划还有助于MSSP避免永久许可证所需的额外开销。

      FortiManager中的计量模块用于注册Fortinet VM按需程序。FortiOS-VM是一个单独的独立FortiGate VM,设计用于FortiManager计量模块。FortiManager计量模块将特殊FortiOS-VM处理的流量报告给FortiGuard或 FortiCare,它们用来管理计费(计费点数,是Fortinet VM流量计费的计算单位)。

     管理域(ADOM)使管理员可以创建设备分组,供管理员监视和管理。例如,管理员可以管理特定于其地理位置或业务部门的设备。

      ADOM的目的是通过ADOM划分设备管理并控制(限制)管理员访问。如果使用虚拟域(VDOM),则ADOM可以进一步限制仅访问来自特定设备的VDOM的数据。

     FortiManager支持哪些设备?你可以将FortiManager配置为与FortiGate、FortiAnalyzerFortiMailFortinet设备配合使用。

      虽然FortiManager可以支持多种Fortinet安全产品以及这些产品的不同固件版本,但最好检查版本发行说明以获取产品集成和支持的具体细节。

      在下面链接查看版本发行说明:http://docs.fortinet.com/

     你现在已经了解FortiManager的主要功能。

      现在,我们来探讨一下FortiManager的关键概念。

     完成本节后,你应该能够:

    • 确定FortiManager和FortiAnalyzer之间的共同点
    • 了解管理模块框架
    • 描述管理任务周期

      通过展示FortiManager关键概念的能力,你将能够更有效地在你的网络中使用FortiManager。

     FortiManager和FortiAnalyzer具有相同的硬件和软件平台。和FortiAnalyzer一样,FortiManager也可以作为日志和报告设备,但是有日志记录速率的限制。

      FortiManager可以作为一个在少量的日志场景中使用的日志和报告设备,需要了解的是,它需要将其系统资源的一部分用于其他功能,例如配置管理等。

      如果你的日志量很大,你应该使用专用的FortiAnalyzer。

     查看FortiManager内部架构,在GUI中,一些管理层用窗格面板来表示。例如,设备管理模块由设备管理器窗格表示,你可以使用它来执行修订历史记录和脚本。

      接下来让我们更详细地看看这些管理层。

     为了组织和有效管理大型网络,FortiManager有多个管理层:

      全局ADOM层有两个关键部分:全局对象数据库和所有页眉和页脚策略包。页眉和页脚策略包包含每个ADOM的策略。例如,在运营商环境中,运营商允许客户流量通过其网络,但不允许客户访问运营商的网络基础设施。

      ADOM层是在受管设备或设备组上创建、管理和安装策略包的位置。多个策略包可以在这里创建。ADOM层为每个ADOM都有一个公共对象数据库。这些数据库包含诸如地址、服务和安全配置文件之类的信息。

      设备管理器层记录由FortiManager设备集中管理的设备的信息,例如设备的名称和类型、型号、IP地址、当前安装的固件,修订历史记录和实时状态。

      我们来看看这些管理层是如何关联的。

     理解FortiManager设备管理的架构很重要。

      在全局ADOM层中,你可以创建页眉和页脚策略规则。这些策略规则可以分配给多个ADOM。如果多个ADOM策略包需要相同的策略和对象,则可以在此层创建它们,这样就不必在每个ADOM中维护副本。

      在ADOM层中,每个ADOM中的对象和策略包共享一个公共对象数据库。可以创建策略包,也可以一次导入并安装在许多受管设备上。

      在设备管理器图层中,可以为每个设备配置和安装设备设置。如果检测到配置更改(无论是在本地还是在FortiManager上进行更改)那么FortiManager会将当前配置修订版本与更改后的配置进行比较,并在FortiManager上创建新的配置修订版本。无论配置更改是大还是小,FortiManager都会记录它并保存新的配置 。这可以帮助管理员审核配置更改,并在需要时恢复到之前的修订版本。

     当你使用FortiManager集中管理你的Fortinet设备时,工作流程通常遵循以下模式:

      部署:管理员在初始化网络安装后配置Fortinet设备。

      监视:管理员监视安全基础结构中设备的状态和运行状况,包括资源监视和网络使用情况。针对你的网络基础架构的外部威胁可以受到监控,并生成警报以提供建议。

      维护:管理员根据需要执行配置更新,以使设备保持最新状态。

      升级:病毒定义、攻击和数据泄漏防护签名,网页和电子邮件过滤服务以及设备固件均保持最新状态,以提供持续保护。

      FortiManager可以帮助减少每个阶段的工作量。

     你现在已经了解FortiManager的关键概念。

      现在,我们来看看如何初始配置FortiManager。

     完成本节后,你应该能够:

    • 了解FortiManager使用的TCP和UDP端口
    • 访问你的FortiManager
    • 确定可用于配置FortiManager的工具
    • 为你的网络配置FortiManager
    • 启用FortiManager上的FortiAnalyzer功能
    • 识别FortiManager功能窗格以实现关键功能

      通过FortiManager初始配置的能力,你将能够将FortiManager添加到你的网络并执行基本的管理任务。

     通常,你的首要考虑是“我应该在哪里部署FortiManager?”

      通常,你应该将FortiManager部署在防火墙后面,如FortiGate。在外围防火墙上,仅允许FortiManager的防火墙策略中的相关端口作为安全考虑因素。如果管理员或远程FortiGate将从管理子网外(例如从Internet)到FortiManager的入站连接,则创建一个虚拟IP

      为防止在网络中断时丢失访问权限,请将管理计算机直接连接到FortiManager或通过交换机直连。

     FortiManager使用了许多TCP和UDP端口。此表中列出了FortiManager使用的最常见的默认端口。另外,FortiManager使用标准管理端口,例如:

      HTTP Port 80 (TCP)

      HTTPS Port 443 (TCP)

      SSH Port 22 (TCP)

      TELNET Port 23 (TCP)

      特别是如果你的FortiManager部署在防火墙后面,那么你需要FortiManager使用什么端口进行相关的通讯。 这可以帮助你分析、诊断和解决常见的网络问题。

     在配置设备之前,有必要讨论安全性的重要性。你的FortiManager管理你所有的Fortinet网络安全设备,因此数据正确保护至关重要。

      以下是一些安全建议:

      将你的FortiManager部署在受保护和可信的专用网络中。它不应该直接在互联网上部署。

      始终使用安全连接方法来执行管理:HTTPS用于基于Web的管理或SSH基于命令行的管理。不安全的方法(如HTTP或telnet)是明文,因此攻击者可以使用数据包嗅探工具来获取这些明文信息,以用于破坏网络的信息。

      在你的用户上使用可信主机,并且只允许来自特定位置的登录。如果你确实需要打开对设备的外部访问,以便远程FortiGate或其他设备可以连接,则只需打开必要的端口即可。其他开放端口会增加你的安全风险。如果你需要从外部打开直接登录访问权限,请确保为此设置特殊用户帐户,并且只有安全的开放协议。

      还应该使用安全密码,因为如果你开始通过任何人可能正在监听的连接(即Internet)传输流量,它们就非常重要。

     了解出厂默认设置很重要,例如默认用户名和密码、PORT1的IP地址、网络掩码和默认支持的管理访问协议,以便你可以初始连接到管理计算机并为你的网络配置FortiManager。

      你可以在特定于型号的“快速入门指南”中找到默认设置。不同的FortiManager型号有不同数量的端口,但PORT1是管理端口,并且始终具有此默认IP。

      要首次登录FortiManager GUI,请打开浏览器,输入https://的URL,然后输入<出厂默认IP地址>。 出现登录屏幕后,使用出厂默认管理员凭据登录,即admin(小写)和空密码。

     就像FortiGate一样,图形用户界面(GUI)和命令行界面(CLI)是你可以用来配置和管理FortiManager的两种配置工具。你可以在本地使用这两种工具,直接连接到FortiManager,并根据你的配置设置远程连接。(你可以根据IP地址来配置拒绝或允许访问)。使用CLI时,可以通过仪表板中的CLI Console微件以及终端仿真应用程序(例如PuTTY)来连接并执行命令。

      GUI和CLI中提供的FortiManager功能取决于登录的管理员配置文件以及是否启用FortiAnalyzer功能。当禁用FortiAnalyzer功能时,GUI不包括FortiView、日志视图、事件监视器或报告。另外,如果你使用Standard_User或Restricted_User管理员配置文件登录,则不会拥有完全访问权限(如授予Super_User的权限)。CLI还包括一些通过GUI不可用的设置。

      使用GUI和CLI进行的任何配置更改都会立即生效。

     在系统设置 > 仪表板下,你可以看到系统资源和其他小部件,其中包括:

      “系统信息”显示关于FortiManager系统的基本信息,例如正常运行时间和固件版本。你也可以启用或禁用管理域和FortiAnalyzer功能。

      “系统资源”显示CPU,内存和硬盘的实时和历史使用状态。

      “许可证信息”显示FortiManager管理的设备数量和允许的最大设备数量。你还可以手动上传FortiManager VM系统的许可证。

      “单元操作”显示FortiGate设备端口的状态和连接信息。它还使你可以关闭并重新启动FortiManager,或重新格式化硬盘。

      “CLI控制台”打开一个终端窗口,使你可以直接从GUI使用CLI命令配置FortiManager。

      “告警信息控制台”显示FortiManager和连接设备的基于日志的警报消息。

     请记住,默认登录信息是公开且可用的信息。 开始配置后,切勿将默认密码留空!你的网络与FortiManager的管理员帐户一样安全。

      在将FortiManager连接到网络之前,你应该设置一个复杂的密码。 你还应限制访问权限,以便FortiManager只允许来自本地控制台或管理子网的管理连接。

     FortiManager的初始配置与FortiGate非常相似。为了为你的网络配置FortiManager,你必须设置IP地址和网络掩码,选择支持的管理访问协议并指定用于路由数据包的默认网关。你可以从网络页面执行所有操作。

      管理接口Port1具有默认IP地址和网络掩码:192.168.1.99/24。如果你的管理子网使用不同的子网或使用IPv6,请更改这些设置。IP地址必须是唯一的静态IP地址。相关的,在默认网关中输入下一跳路由器的IP,并指定你的DNS服务器。默认情况下,FortiGuard DNS服务器在DNS服务器设置中配置,以帮助保证FortiGuard下载和查询的连接。但是,你可以改为指定本地DNS服务器。

      通过服务访问,你可以在此接口上启用FortiManager对托管设备对FortiGuard服务请求的响应。这包括FortiGate更新和网页过滤。默认情况下,所有到托管设备的服务都在端口1上启用,并在其他端口上禁用。

     根据你的网络,你可以配置并使用其他接口。

      并且可以配置静态路由(IPv4或IPv6)到不同的网络,以便通过不同的路由传送数据包。

     FortiManager功能窗格包括:

      设备管理器:你可以在其中添加、配置和管理设备。

      策略和对象:包含适用于每个ADOM的所有策略包和对象。

      AP管理器:你可以在其中集中管理FortiAP。

      FortiClient管理器:你可以集中管理多个FortiGate设备的FortiClient配置文件,并监视连接到这些FortiGate设备的FortiClient端点。

      VPN 管理器:你可以在其中启用和使用中央VPN管理。

      FortiGuard:你可以在其中将FortiManager设置为专用的FortiGuard分布式服务器(FDS)。FortiManager与Fortinet的全球FortiGuard分布式网络(FDN)同步其本地软件包副本,然后为你的受管设备提供FortiGuard更新。使用私人FDS可以更快地连接到你的安全基础设施。

      系统设置:你可以在其中配置FortiManager系统相关配置,如网络设置、ADOM、管理员等。

      当在FortiManager上启用FortiAnalyzer功能集时,你也将拥有这些窗格:

      FortiView:提供了日志数据的摘要。例如,你可以查看网络的主要威胁,网络流量的主要来源和目的地等等。

      日志查看:它提供来自受管设备的日志消息。你可以查看流量日志,事件日志或安全日志信息。

      事件管理:你可以在其中根据日志类型和日志记录筛选器配置事件处理程序,并指定是否通知电子邮件地址,SNMP服务器或Syslog服务器。

      报告:提供基于设备日志的报告。

     如果你希望启用FortiManager作为日志记录和报告设备,你可以在FortiManager仪表板上执行该操作,或使用 CLI。 请记住,FortiManager有日志记录的速率限制。 因为FortiManager将需要额外的资源(CPU、内存、磁盘)来处理日志和报告。

      在启用此功能前确定网络的最大日志记录速率,以验证没有日志将被丢弃。

      你的FortiManager将重新启动以应用这些更改。 然后,将出现以下选项卡:

    • FortiView
    • 日志查看
    • 事件管理
    • 报告

     与FortiOS类似,你可以使用此幻灯片中显示的CLI命令来检查或排除FortiManager上的常见问题。例如,你可以查看FortiManager的一般状态、界面和DNS设置。

     你可以使用此命令获取基本的FortiManager系统信息,这对于故障排除很有帮助,例如:

      版本:确保FortiManager固件版本与你正在注册的设备兼容(请参阅FortiManager发行说明了解支持的固件版本)

      管理域配置:如果尝试注册非FortiGate设备,请确保已启用ADOM。 此外,它还显示了FortiManager模型支持多少个ADOM。

      当前时间:确保你的日期和时间根据你的需要进行设置。 对于许多功能的工作,包括调度、FortiManager-FortiGate隧道协商和日志功能、FortiManager系统时间必须准确。 虽然你可以手动设置日期和时间,但你应该与网络时间协议(NTP)服务器同步。

      许可证状态:确保你拥有有效的许可证。

     你现在了解如何初始配置FortiManager。现在,我们来看看基于不同组织的FortiManager的一些用例。

     完成本节后,你应该能够:

      根据不同的需求设计FortiManager用例。

      通过了解FortiManager的使用案例,你将能够看到FortiManager在其他组织中常用的不同方式,并且如果有必要的话,可以使用其中的一些策略。

     一个常见的FortiManager使用案例涉及大型零售客户或分布式企业,因为他们的分支机构往往有许多较小的客户端(CPE)设备,以及远程站点和几个主要站点。 这些客户受益于集中式防火墙配置和监控。

      在大规模企业部署中,管理员通常更喜欢安装技术人员通过USB加载的基本初始配置,或者复制并粘贴到控制台中。 这个基本配置允许FortiGate联系FortiManager,管理员可以将FortiGate添加到适当的设备组或 ADOM,然后将完整的配置发送到该FortiGate。

     另一个常见用例涉及托管安全服务提供商(MSSP)。

      运营商通常可能有许多高性能的防火墙,并且需要严格的配置控制,这可以通过限制FortiManager的配置来实现。MSSP可以将他们的防火墙细分为虚拟防火墙,提供给客户使用,或者他们可以管理客户自有的设备。在这两种情况下,他们都需要维护客户的配置修订,并且可以提供一个管理门户,客户可以在其中查看或编辑某些设置。

      MSSP的另一个重要用例是能够确定(或报告)哪些防火墙或配置对象正在使用中或未使用。防火墙策略随时间而改变,并且关联的对象被替换为其他新的对象。但是,管理员通常需要暂时保留旧对象,以防需要恢复更改。最终,过多未使用的对象使得FortiGate的配置变得混乱,使其更难理解和排除故障。因此,定期清理这些无用配置对象是很有用的。

      现在能够满足对Pay-as-you-go授权模式的需求,FortiManager允许MSSP通过使用Fortinet VM按需授权来避免永久许可的开销。

     如你所见,不同的组织可能会使用不同的FortiManager ADOM和策略包。在一个零售组织中,你可能只有一个包含许多FortiGate的ADOM,或者多个带有一个FortiGate的ADOM。在MSSP中,每个客户的FortiGate设备都放置在他们的ADOM中。

      我们将详细介绍这些主题,以便你掌握管理不同组织设备所需的实用技能。

     MSSP也需要使用API。FortiManager上有三个可用的API。

      SDK API - 此API最初设计用于创建Web门户,或将Web门户集成到现有系统中。 JSON API - FortiManager 5.0中的新增功能,该API允许你执行许多与FortiManager GUI相同的任务。它允许 MSSP和大型企业为策略和对象管理创建自定义的Web门户。
      XML API - 通过此API,你可以检索有关受管设备的信息,执行脚本以修改设备配置,并在设备上安装修改后的配置。它旨在允许在FortiManager上快速配置ADOM、设备和脚本。

      当你配置API时,Fortinet开发者网络(FNDN)提供访问工具、示例代码、文档和Fortinet开发者社区。

     本章节包含以下这些内容:

    • FortiManager的关键特性
    • 描述ADOM的目的
    • 描述FortiMeter
    • FortiManager支持的设备类型
    • 了解FortiManager和FortiAnalyzer之间的共同点
    • 描述管理模块框架 
    • 首次访问你的FortiManager
    • 确定可用于配置FortiManager的工具
    • 将FortiManager添加到你的网络
    • 启用FortiAnalyzer功能
    • FortiManager应用场景
    • FortiManager API接口

      恭喜! 你已完成本课程。

    展开全文
  • AntDesign 第一章(2) --------初始化项目

    千次阅读 2019-03-14 14:32:17
    初始化项目 现在你已经了解了前端开发的基本概念,开始要进入实际项目了。这一节将教会大家如何初始化一个项目,开发出一个可以展示hello world的项目。 这堂课程中的相关代码你都可以在...
  • 网页恶意代码检测

    万次阅读 2011-12-15 10:28:42
    网页恶意代码逐渐成为危害面最广泛、传播效果最佳的恶意代码形式之一,对信息安全构成了严重的威胁。 网页恶意代码的检测方式包括:传统方法有人工检测、基于特征码的检测、启发式检测、基于行为的检测等,这些方法...
  • VSCode和VUE环境初始安装配置

    千次阅读 2019-05-16 17:30:05
    文章目录vscode和vue初始安装vue-cli初始化一个vue项目常见问题整理vue init卡住,缓慢问题vscode字体放大vscode 如何快速定位到某文件、全局搜索、修改快捷键vue init webpack 与vue create 创建项目有什么区别vue-...
  • 网页常用特效整理

    千次阅读 2012-08-09 14:18:31
     笔者日积月累了许多精彩、实用的Web特效的制作,这些特效几乎都是比较常用网页特效。现在我就把这些经过整理和修改过的特效分三个级别分别介绍给大家。   初级篇  1.让文字不停地滚动  滚动...
  • ASP.NET程序中常用的三十三种代码

    千次阅读 2011-01-24 15:02:00
    ASP.NET程序中常用的三十三种代码 1. 打开新的窗口并传送参数:  传送参数: response.write("<script>window.open(’*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"’)</script>")...
  • ASP.NET程序中常用的三十三种代码 1. 打开新的窗口并传送参数:  传送参数: response.write("<script>window.open(’*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"’)</script>")  接收参数...
  • 应用程序正常初始化(0xc0000135)失败解决方法 这是由于没有安装.NET framework 所造成的,请安装.NET framework。下载地址:微软官方地址:...
  • JavaScript 常用功能总结

    千次阅读 2016-01-21 15:59:10
    本文主要总结了JavaScript 常用功能总结,如一些常用的额JS 对象,基本数据结构,功能函数等,还有一些常用的设计模式。 目录:众所周知,JavaScript是动态的面向对象的编程语言,能够实现以下效果:1. 丰富Web ...
  • 当时想把整个学期所学内容联系起来,所以有了这个数据库+ZigBee+Qt的小型环境监测系统,存档并分享源代码。 文章目录 00-设计篇 01-硬件篇 02-软件篇 03-测试篇 网盘链接 00-设计篇   该系统用于测试环境中的一些...
  • 在ASP.Net中两种利用CSS实现多界面的方法通过使页面动态加载不同CSS实现多界面方法一: public void page_... //指定的标记"LINK"初始化此类的新实例. HtmlGenericControl objLink=new HtmlGenericControl("LINK"); o
  • 这是作者网络安全自学教程...这篇文章将详细总结恶意代码检测技术,包括恶意代码检测的对象和策略、特征值检测技术、校验和检测技术、启发式扫描技术、虚拟机检测技术和主动防御技术。基础性文章,希望对您有所帮助~
  • Android的编译环境作为深入学习Android的基础,不可或缺,能够完整下载Android源代码并编译成功,对深入学习Android是非常关键和重要的一步。
  • 编写可读性代码的艺术

    千次阅读 2016-07-16 10:30:42
    原文地址: ... PDF文件下载地址: ... 译者序 在做IT的公司里,尤其是软件开发部门,一般不会要求工程师衣着正式。在我工作过的一些环境相对宽松的公司里,很多程序员的衣着连得
  • Flex常用组件

    千次阅读 2017-03-11 07:43:21
    Flex常用组件(上)学习内容Ø Flex组件的分类Ø Flex常用组件的使用。Ø 使用组件处理数据和交互Ø ActionScript3.0和JavaScript交互能力目标Ø 掌握使用各种常用组件搭建用户界面Ø 掌握ActionScript3.0和...
  • 云编排式物联APP开发平台可通过云端可视编排开发,边端远程自动部署,云边协同管理运维的方式,实现物联网APP快速开发,海量边端应用管理。
  • Android中Repo 常用命令参考

    千次阅读 2018-01-24 07:44:29
    例如,下面的命令产生一个描述和repo 的 init 参数选项列表,它初始化当前目录中的repo: repo help init init repo init -u [] 当前目录中安装Repo.将会创建一个.repo目录,其中主要包含...
  • gulp构建前端自动开发环境

    千次阅读 2017-05-08 15:28:02
    gulp是前端开发过程中对代码进行构建的工具,是自动项目的构建利器;gulp不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成;类似的工具还有grunt,webpack,它们各有利弊。 ...
  • 利用freemarker 静态化网页

    万次阅读 多人点赞 2011-11-03 16:09:48
    1、介绍-FreeMarker是什么  模板引擎:一种基于模板的、用来生成输出文本的通用工具  基于Java的开发包和类库 ... 代码生成工具  CMS模板引擎  页面栏目动态定制 3、介绍-为什么要用FreeMa
  • 常用开源控件

    千次阅读 2015-01-05 14:36:38
    Android开源项目第一篇——个性控件(View)篇 包括ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、ProgressBar、TextView、其他Android开源项目第二篇——工具库篇 包括依赖注入、图片...
  • 计算机常用算法对照表整理

    千次阅读 2017-07-26 10:58:01
    常用对照:NLP CRF算法: 中文名称条件随机场算法,外文名称conditional random field algorithm,是一种数学算法,是2001年提出的,基于遵循马尔可夫性的概率图模型。 全部对照第一部分、计算机算法常用术语中英...
  • 快速梳理23种常用的设计模式

    千次阅读 2018-11-17 22:54:34
    本文旨在快速梳理常用的设计模式,了解每个模式主要针对的是哪些情况以及其基础特征,每个模式前都有列举出一个或多个可以深入阅读的参考网页,以供读者详细了解其实现。 快速回忆 一、创建型 单例(Singleton...
  • 本篇文章主要介绍讲述部署阿里云服务器Django网站环境,并通过IP地址访问网页的过程。写代码过程中往往第一步需要解决的就是配置开发环境,对于新手来说,这是非常头疼的事情,而当配置好之后或者对于老手来说,我们...
  • java+selenum实现网页自动总结

    千次阅读 2018-07-10 15:11:54
    //初始化URL变量为百度首页  @Test  public void f() throws Exception {  driver.navigate().to(URL); //打开URL中指定的网站  Thread.sleep(5000); //等待5秒  }  @BeforeMethod  public void ...
  • Gulp在前端的常用操作实例

    千次阅读 2017-02-17 19:16:19
    以前在做代码优化的时候,一般都用一些网上的在线工具来完成,写LESS的时候,一般用Koala来编译,感觉用起来也挺不错的。但是现在构建工具的出现,让以前做的那些繁琐操作变的更方便一些了,我在这里也用构建工具来...
  • Web.xml常用标签详解

    千次阅读 2013-06-10 11:13:12
    针对环境参数(Context)做初始化工作 .Servlet的名称和映射 .Session的设定 .Tag library的对映 .JSP网页设定 .Mime Type处理 .错误处理 .利用JDNI取得站台资源 要了解web.xml的设定值,必须了解它的s
  •  Visual Studio Code (简称 VS Code / VSC) 是一款免费开源的现代轻量级代码编辑器,支持语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比 Diff、GIT 等特性,并针对网页开发和云端应用开发做...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,091
精华内容 14,836
关键字:

常用网页环境初始化代码