-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcontent.json
1 lines (1 loc) · 64.4 KB
/
content.json
1
[{"title":"健康与运动","date":"2019-09-18T11:38:29.470Z","path":"2019/09/18/健康与运动/","text":"那些年,走过的路##2017年 2月份 1、02月12日 25.00KM 牛木外线 3月份 暂无数据。 4月份 1、04月09日 16.00KM 火凤线 5月份 1、05月06日 20.00KM 渔帽线(第一机耕路) 6月份 1.06月11日 11.40KM 龙洞总站到大源森源居农庄(腐败游水线) 7月份 1、07月01日 2.00KM 火炉山(后山开炉 - 腐败线) 8月份 1、08月19日 11.45KM 白云山(白云山环线) — —同步更新博客园","updated":"2019-09-18T11:38:29.470Z","categories":[{"name":"生活","slug":"生活","permalink":"http://www.liuyuchuan.com/categories/生活/"}],"category":"生活","tags":[{"name":"sport","slug":"sport","permalink":"http://www.liuyuchuan.com/tags/sport/"},{"name":"healthy","slug":"healthy","permalink":"http://www.liuyuchuan.com/tags/healthy/"},{"name":"hill","slug":"hill","permalink":"http://www.liuyuchuan.com/tags/hill/"}]},{"title":"【原创】Android 7.1.2 WIFI多出了X号消除方法","date":"2019-09-18T11:37:04.153Z","path":"2019/09/18/nexus6p_sign/","text":"最近将手机操作系统升级到了 Android 7.1.2,连接网络的时WIFI出现了小叉号,移动流量也是出现这种情况。无论是什么原因引起的,是不是始终看着不爽。那我们就来手动干掉这个小叉号。 首先将手机连接电脑,安装电脑所需要的手机驱动以及打开手机的调试模式像上图我这样子,只是安装好了 ADB Interface,如果这个也安装不好,那就不好整了。 如果安装不好,你可以按照下面的网址下载并手动安装,如果已经安装,点击后它还会给于提示。 下载地址(包含驱动、adb & fastboot包):adbshell DownLoad 如果打不开,你也可以在这里下载,百度网盘: https://pan.baidu.com/s/1mhZrcSS 密码: xbg7 如果已经安装,则有已安装提示 拷贝文件将已经下载的文件 adb.exe、AdbWinApi.dll、AdbWinUsbApi.dll 拷贝到当前电脑的 C:\\Windows\\system\\ 和 C:\\Windows\\system32\\ 文件包下面去 执行命令然后使用快捷方式 win + R 打开命令窗口,依次输入以下命令: 其次,手动操作命令 [#] 关闭网络验证1adb shell \"settings put global captive_portal_detection_enabled 0\" 或者 [#] 更改网络验证服务器 用v2ex模式 1adb shell \"settings put global captive_portal_https_url https://captive.v2ex.co/generate_204\" google.cn模式 1adb shell \"settings put global captive_portal_server https://www.google.cn/generate_204\" 现在看看自己手机的网络小叉号是不是消失了呢? 有问题请及时在下面回复或者联系本文作者","updated":"2019-09-18T11:37:04.153Z","categories":[{"name":"生活","slug":"生活","permalink":"http://www.liuyuchuan.com/categories/生活/"}],"category":"生活","tags":[{"name":"Android","slug":"Android","permalink":"http://www.liuyuchuan.com/tags/Android/"},{"name":"WIFI","slug":"WIFI","permalink":"http://www.liuyuchuan.com/tags/WIFI/"}]},{"title":"【翻译】Maven 的长枪配置 pom.xml","date":"2019-09-18T11:36:27.322Z","path":"2019/09/18/maven_pom/","text":"– 导读 最近一直在使用 pom.xml ,但是不知道这里面的一些配置如何使用,便有了从官方翻译一下这个文件的冲动,也便有了这篇文章的雏形,就当做是记录一下最近的状态,提升一下自己。 这篇翻译的源文来至这里:http://maven.apache.org/pom.html ,下面便开始翻译之路,有不明白之处或者翻译错误之处,请提出指正,共同进步,多谢!~ POM 目录引用POM 4.0.0 XSD 文件和 描述符参考文档 介绍说明POM 是什么?POM定位于“ 项目对象模型 ”,在Maven的项目中,它使用XML语言来描述,并被用pom.xml来命名来实现。在Maven的人面前,说一个项目是在哲学的意义上讲,超出了单纯的文件集合包含代码。项目包含配置文件,以及所涉及的开发人员和他们所扮演的角色,缺陷跟踪系统,组织和许可证,项目所在地的URL,项目的依赖,以及所有其他的小片段,这些代码都可以发挥代码的作用。这是一个一站式商店的所有项目有关的东西。实际上,在Maven的世界里,一个项目不包含任何代码,仅仅一个 pom.xml 。 快速浏览下面是直接在POM项目元素下的元素列表。注意 modelVersion 包含4.0.0。这是目前唯一支持Maven 2 & 3 POM版。 123456789101112131415161718192021222324252627282930313233343536373839404142<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\"> <modelVersion>4.0.0</modelVersion> <!-- 基础信息 --> <groupId>...</groupId> <artifactId>...</artifactId> <version>...</version> <packaging>...</packaging> <dependencies>...</dependencies> <parent>...</parent> <dependencyManagement>...</dependencyManagement> <modules>...</modules> <properties>...</properties> <!-- 构建配置 --> <build>...</build> <reporting>...</reporting> <!-- 更多项目信息 --> <name>...</name> <description>...</description> <url>...</url> <inceptionYear>...</inceptionYear> <licenses>...</licenses> <organization>...</organization> <developers>...</developers> <contributors>...</contributors> <!-- 环境设置 --> <issueManagement>...</issueManagement> <ciManagement>...</ciManagement> <mailingLists>...</mailingLists> <scm>...</scm> <prerequisites>...</prerequisites> <repositories>...</repositories> <pluginRepositories>...</pluginRepositories> <distributionManagement>...</distributionManagement> <profiles>...</profiles></project> 基础信息POM包含关于项目的所有必要信息,以及构建过程中要使用的插件的配置。实际上,它是“谁”、“什么”和“在哪里”的声明性表示,而构建生命周期是“何时”和“如何”。这并不是说POM不能影响整个生命周期的流动。例如,通过配置 maven-antrun-plugin 可以嵌入的Ant任务里面的POM。然而,这终究是一种基础声明。如果作为一个 build.xml 告诉Ant当它运行(程序)时正做什么,POM的配置(声明)。如果一些外部力量导致生命周期跳过Ant插件执行,它不会停止执行他们的魔术的插件。这不像一个build.xml文件,任务几乎都是队列执行。 12345678910<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\"> <modelVersion>4.0.0</modelVersion> <groupId>org.codehaus.mojo</groupId> <artifactId>my-project</artifactId> <version>1.0</version></project> Maven 协调坐标上面定义的POM是Maven 2和3允许的最低版本。 groupId : artifactId : version 版本所需的所有领域(显然,如果他们继承了父类更多的明确定义,groupId 和 version 不需要明确定义)。三个字段很像一个地址和一个时间戳。这标志着在仓库里的一个特定的地方,像一个Maven项目的坐标系统。 groupId: 项目组织的唯一标识。例如, org.apache.maven 存在于 Maven 下面的核心分组编号。分组的 ID 不需要符号标记, 例如, junit项目。注意, 该项目包含打点 GroupID 表示没有对应的封装结构。然而,这是一个很好的实践。在一个操作系统,存储在仓库内,该 group 的行为很像java的封装结构。 这些点由OS特定的目录分隔符(如UNIX中的 “/” )替换,它从基础存储库变成相对目录结构。在例子中, 这个 org.codehaus.mojo 存在于目录 $M2_REPO/org/codehaus/mojo. artifactId: 项目名称的唯一标识. 即使 groupId 很重要, 组内的人很少会在讨论中提到的GroupID(他们往往都是ID,如 Codehaus Mojo项目组织标识:org.codehaus.mojo)。它随着 groupId 一起创建一个密钥,使得这个月项目与其他项目有区分(至少,应该是这样:) )。在仓库中,与 groupId 一起, artifactId 充分定义了生存区域. 在上面描述的项目下面,my-project 放在 $M2_REPO/org/codehaus/mojo/my-project。 version:这是命名最伤脑筋的部分。groupId:artifactId 表示一个项目却无法具体描绘我们所谈论的项目。 我们希望 junit:junit 今天版本 (version 4), 或者四年前的版本 (version 2)? 总之:代码的变化,这些变化应该被记录版本,而且应该保持线上可用版本。它也在工件的存储库中使用,以分离彼此的版本。my-project version 1.0 文件保存在目录结构中 $M2_REPO/org/codehaus/mojo/my-project/1.0。 我们希望他们,在软件生命周期内,上面三个元素在一个项目中定义了一个特殊版本让Maven知道我们在处理。 packaging: 现在我们有了地址结构 groupId : artifactId : version, 还有一个标准标签可以给我们一个真正完整的地址。 这是项目的 artifact 类型。在我们的 POM 例子中,org.codehaus.mojo: my-project: 1.0 上面定义的将被打包为 jar 包。我们可以将打包 war 包用来声明不用的包: 12345678<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\"> ... <packaging>war</packaging> ...</project> 当 packaging 没有被声明时, Maven 假定 artifact 为默认: jar。有效的类型是丛角色提示(更多相关的角色说明请参照阅读)org.apache.maven.lifecycle.mapping.LifecycleMapping。 当前的核心值是: pom, jar, maven-plugin, ejb, war, ear, rar, par。 这些定义了针对特定包结构的每个相应的构建生命周期阶段执行的缺省目标列表。 有时候你会看到 Maven 协调打印项目 groupId : artifactId : packaging : version。 classifier: 有时您可以在坐标上找到第五个元素,这就是classifier。我们将参观分类器后,但现在只要知道这些项目显示为 groupId : artifactId : packaging : classifier : version. POM 关系Maven的一个强大的方面是其项目的关系处理;包括依赖(和过渡依赖),继承和聚合(多模块项目)。依赖管理有一个长期的传统,它是一个复杂的混乱,除了最微不足道的项目。“jarmageddon”迅速随之而来的依存树变得大而复杂。接下来,一个系统的依赖版本不等同于开发的版本,或者由错误版本给出,或者类似命名JAR之间的冲突版本。Maven的解决了两个问题通过一个共同的本地存储库的链接项目的正确、版本和所有。 依赖性POM的基石是它的依赖列表。大多数项目取决于他人建立和运行正确,如果所有的专家为你做的是为你管理这个列表,你已经获得了很多。Maven下载为你编译和其他目标需要的依赖关系链接。作为额外的奖励,Maven带来依赖的依赖(依靠),让你的列表仅集中在依赖你的项目需要。 123456789101112131415161718<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd\"> ... <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.0</version> <type>jar</type> <scope>test</scope> <optional>true</optional> </dependency> ... </dependencies> ...</project> 依赖版本需求说明 1.0: “Soft” requirement on 1.0 (just a recommendation, if it matches all other ranges for the dependency) [1.0]: “Hard” requirement on 1.0(,1.0]: x <= 1.0 [1.2,1.3]: 1.2 <= x <= 1.3 [1.0,2.0): 1.0 <= x < 2.0 [1.5,): x >= 1.5 (,1.0],[1.2,): x <= 1.0 or x >= 1.2; multiple sets are comma-separated (,1.1),(1.1,): this excludes 1.1 (for example if it is known not to work in combination with this library) 不包含123456789101112131415161718192021<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd\"> ... <dependencies> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-embedder</artifactId> <version>2.0</version> <exclusions> <exclusion> <groupId>org.apache.maven</groupId> <artifactId>maven-core</artifactId> </exclusion> </exclusions> </dependency> ... </dependencies> ...</project> 123456789101112131415161718192021<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd\"> ... <dependencies> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-embedder</artifactId> <version>3.1.0</version> <exclusions> <exclusion> <groupId>*</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency> ... </dependencies> ...</project> 继承1234567891011<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd\"> <modelVersion>4.0.0</modelVersion> <groupId>org.codehaus.mojo</groupId> <artifactId>my-parent</artifactId> <version>2.0</version> <packaging>pom</packaging></project> groupId version description url inceptionYear organization licenses developers contributors mailingLists scm issueManagement ciManagement properties dependencyManagement dependencies repositories pluginRepositories build plugin executions with matching ids plugin configuration etc. reporting profiles 不继承的元素: artifactId name prerequisites 123456789101112131415<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd\"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.codehaus.mojo</groupId> <artifactId>my-parent</artifactId> <version>2.0</version> <relativePath>../my-parent</relativePath> </parent> <artifactId>my-project</artifactId></project> 超级POM123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127<project> <modelVersion>4.0.0</modelVersion> <repositories> <repository> <id>central</id> <name>Central Repository</name> <url>http://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <name>Central Repository</name> <url>http://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> <releases> <updatePolicy>never</updatePolicy> </releases> </pluginRepository> </pluginRepositories> <build> <directory>${project.basedir}/target</directory> <outputDirectory>${project.build.directory}/classes</outputDirectory> <finalName>${project.artifactId}-${project.version}</finalName> <testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory> <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory> <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory> <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory> <resources> <resource> <directory>${project.basedir}/src/main/resources</directory> </resource> </resources> <testResources> <testResource> <directory>${project.basedir}/src/test/resources</directory> </testResource> </testResources> <pluginManagement> <!-- NOTE: These plugins will be removed from future versions of the super POM --> <!-- They are kept for the moment as they are very unlikely to conflict with lifecycle mappings (MNG-4453) --> <plugins> <plugin> <artifactId>maven-antrun-plugin</artifactId> <version>1.3</version> </plugin> <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.2-beta-5</version> </plugin> <plugin> <artifactId>maven-dependency-plugin</artifactId> <version>2.1</version> </plugin> <plugin> <artifactId>maven-release-plugin</artifactId> <version>2.0</version> </plugin> </plugins> </pluginManagement> </build> <reporting> <outputDirectory>${project.build.directory}/site</outputDirectory> </reporting> <profiles> <!-- NOTE: The release profile will be removed from future versions of the super POM --> <profile> <id>release-profile</id> <activation> <property> <name>performRelease</name> <value>true</value> </property> </activation> <build> <plugins> <plugin> <inherited>true</inherited> <artifactId>maven-source-plugin</artifactId> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <plugin> <inherited>true</inherited> <artifactId>maven-javadoc-plugin</artifactId> <executions> <execution> <id>attach-javadocs</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <plugin> <inherited>true</inherited> <artifactId>maven-deploy-plugin</artifactId> <configuration> <updateReleaseInfo>true</updateReleaseInfo> </configuration> </plugin> </plugins> </build> </profile> </profiles> </project> 依赖管理聚合(或者多模块)12345678910111213141516<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd\"> <modelVersion>4.0.0</modelVersion> <groupId>org.codehaus.mojo</groupId> <artifactId>my-parent</artifactId> <version>2.0</version> <packaging>pom</packaging> <modules> <module>my-project</module> <module>another-project</module> </modules></project> 特性12345678910<project> ... <properties> <maven.compiler.source>1.7<maven.compiler.source> <maven.compiler.target>1.7<maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties> ...</project> 构建设置构建123456789101112131415<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd\"> ... <!-- \"Project Build\" contains more elements than just the BaseBuild set --> <build>...</build> <profiles> <profile> <!-- \"Profile Build\" contains a subset of \"Project Build\"s elements --> <build>...</build> </profile> </profiles></project> 基础构建设置123456789<build> <defaultGoal>install</defaultGoal> <directory>${basedir}/target</directory> <finalName>${artifactId}-${version}</finalName> <filters> <filter>filters/filter1.properties</filter> </filters> ...</build> 资源12345678910111213141516171819202122232425<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd\"> <build> ... <resources> <resource> <targetPath>META-INF/plexus</targetPath> <filtering>false</filtering> <directory>${basedir}/src/main/plexus</directory> <includes> <include>configuration.xml</include> </includes> <excludes> <exclude>**/*.properties</exclude> </excludes> </resource> </resources> <testResources> ... </testResources> ... </build></project> resources: is a list of resource elements that each describe what and where to include files associated with this project. targetPath: Specifies the directory structure to place the set of resources from a build. Target path defaults to the base directory. A commonly specified target path for resources that will be packaged in a JAR is META-INF. filtering: is true or false, denoting if filtering is to be enabled for this resource. Note, that filter *.properties files do not have to be defined for filtering to occur - resources can also use properties that are by default defined in the POM (such as ${project.version}), passed into the command line using the “-D” flag (for example, “-Dname=value”) or are explicitly defined by the properties element. Filter files were covered above. directory: This element’s value defines where the resources are to be found. The default directory for a build is ${basedir}/src/main/resources. includes: A set of files patterns which specify the files to include as resources under that specified directory, using * as a wildcard. excludes: The same structure as includes, but specifies which files to ignore. In conflicts between include and exclude, exclude wins. testResources: The testResources element block contains testResource elements. Their definitions are similar to resource elements, but are naturally used during test phases. The one difference is that the default (Super POM defined) test resource directory for a project is ${basedir}/src/test/resources. Test resources are not deployed. 插件12345678910111213141516171819202122<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd\"> <build> ... <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.6</version> <extensions>false</extensions> <inherited>true</inherited> <configuration> <classifier>test</classifier> </configuration> <dependencies>...</dependencies> <executions>...</executions> </plugin> </plugins> </build></project> 结束语The Maven POM is big. However, its size is also a testament to its versatility. The ability to abstract all of the aspects of a project into a single artifact is powerful, to say the least. Gone are the days of dozens of disparate build scripts and scattered documentation concerning each individual project. Along with Maven’s other stars that make up the Maven galaxy - a well defined build lifecycle, easy to write and maintain plugins, centralized repositories, system-wide and user-based configurations, as well as the increasing number of tools to make developers’ jobs easier to maintain complex projects - the POM is the large, but bright, center. Maven POM很大。然而,它的大小也证明了它的多功能性。至少可以说,将项目的所有方面抽象成单个工件的能力是强大的。几十个不同的构建脚本和分散的文档涉及各个项目的日子已经一去不复返了。随着Maven的其他恒星组成的星系的一个定义良好的Maven构建生命周期,易于编写和维护插件,集中库,全系统和基于用户的配置,以及越来越多的工具使开发人员的工作更容易维护的复杂项目的POM是大而明亮,中心。","updated":"2019-09-18T11:36:27.322Z","categories":[{"name":"技术","slug":"技术","permalink":"http://www.liuyuchuan.com/categories/技术/"}],"category":"技术","tags":[{"name":"mavne","slug":"mavne","permalink":"http://www.liuyuchuan.com/tags/mavne/"},{"name":"pom","slug":"pom","permalink":"http://www.liuyuchuan.com/tags/pom/"}]},{"title":"【转载】Ajax 方法以及参数的参考","date":"2019-09-18T11:36:07.302Z","path":"2019/09/18/jquery_ajax/","text":"jQuery ajax - ajax() 方法定义和用法ajax()方法通过HTTP请求加载远程数据。该方法是jQuery底层AJAX实现。简单易用的高层实现见 $.get , $.post 等。 $.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性。最简单的情况下,$.ajax() 可以不带任何参数直接使用。注意:所有的选项都可以通过 $.ajaxSetup() 函数来全局设置。 语法jQuery.ajax([settings]) 参数 描述 settings 可选。用于配置 Ajax 请求的键值对集合。可以通过 $.ajaxSetup() 设置任何选项的默认值。 参数options类型:Object说明:可选。AJAX 请求设置。所有选项都是可选的。 async类型:Boolean说明:默认值: true。默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。 beforeSend(XHR)类型:Function说明:发送请求前可修改 XMLHttpRequest 对象的函数,如添加自定义 HTTP 头。XMLHttpRequest 对象是唯一的参数。这是一个 Ajax 事件。如果返回 false 可以取消本次 ajax 请求。 cache类型:Boolean说明:默认值: true,dataType 为 script 和 jsonp 时默认为 false。设置为 false 将不缓存此页面。jQuery 1.2 新功能。 complete(XHR, TS)类型:Function说明:请求完成后回调函数 (请求成功或失败之后均调用)。参数: XMLHttpRequest 对象和一个描述请求类型的字符串。这是一个 Ajax 事件。 contentType类型:String说明:默认值: “application/x-www-form-urlencoded”。发送信息至服务器时内容编码类型。默认值适合大多数情况。如果你明确地传递了一个 content-type 给 $.ajax() 那么它必定会发送给服务器(即使没有数据要发送)。 context类型:Object说明:这个对象用于设置 Ajax 相关回调函数的上下文。也就是说,让回调函数内 this 指向这个对象(如果不设定这个参数,那么 this 就指向调用本次 AJAX 请求时传递的 options 参数)。比如指定一个 DOM 元素作为 context 参数,这样就设置了 success 回调函数的上下文为这个 DOM 元素。就像这样:123456$.ajax({ url: \"test.html\", context: document.body, success: function(){truetrue$(this).addClass(\"done\"); }}); data类型:String说明:发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。查看 processData 选项说明以禁止此自动转换。必须为 Key/Value 格式。如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:[“bar1”, “bar2”]} 转换为 ‘&foo=bar1&foo=bar2’。 dataFilter类型:Function说明:给 Ajax 返回的原始数据的进行预处理的函数。提供 data 和 type 两个参数:data 是 Ajax 返回的原始数据,type 是调用 jQuery.ajax 时提供的 dataType 参数。函数返回的值将由 jQuery 进一步处理。 dataType类型:String说明:预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如 XML MIME 类型就被识别为 XML。在 1.4 中,JSON 就会生成一个 JavaScript 对象,而 script 则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值: “xml”: 返回 XML 文档,可用 jQuery 处理。 “html”: 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。 “script”: 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 “cache” 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载) “json”: 返回 JSON 数据 。 “jsonp”: JSONP 格式。使用 JSONP 形式调用函数时,如 “myurl?callback=?” jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。 “text”: 返回纯文本字符串 error类型:Function说明:默认值: 自动判断 (xml 或 html)。请求失败时调用此函数。有以下三个参数:XMLHttpRequest 对象、错误信息、(可选)捕获的异常对象。如果发生了错误,错误信息(第二个参数)除了得到 null 之外,还可能是 “timeout”, “error”, “notmodified” 和 “parsererror”。这是一个 Ajax 事件。 global类型:Boolean说明:是否触发全局 AJAX 事件。默认值: true。设置为 false 将不会触发全局 AJAX 事件,如 ajaxStart 或 ajaxStop 可用于控制不同的 Ajax 事件。 ifModified类型:Boolean说明:仅在服务器数据改变时获取新数据。默认值: false。使用 HTTP 包 Last-Modified 头信息判断。在 jQuery 1.4 中,它也会检查服务器指定的 ‘etag’ 来确定数据没有被修改过。 jsonp类型:String说明:在一个 jsonp 请求中重写回调函数的名字。这个值用来替代在 “callback=?” 这种 GET 或 POST 请求中 URL 参数里的 “callback” 部分,比如 {jsonp:’onJsonPLoad’} 会导致将 “onJsonPLoad=?” 传给服务器。 jsonpCallback类型:String说明:为 jsonp 请求指定一个回调函数名。这个值将用来取代 jQuery 自动生成的随机函数名。这主要用来让 jQuery 生成度独特的函数名,这样管理请求更容易,也能方便地提供回调函数和错误处理。你也可以在想让浏览器缓存 GET 请求的时候,指定这个回调函数名。 password类型:String说明:用于响应 HTTP 访问认证请求的密码 processData类型:Boolean说明:默认值: true。默认情况下,通过data选项传递进来的数据,如果是一个对象(技术上讲只要不是字符串),都会处理转化成一个查询字符串,以配合默认内容类型 “application/x-www-form-urlencoded”。如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。 scriptCharset类型:String说明:只有当请求时 dataType 为 “jsonp” 或 “script”,并且 type 是 “GET” 才会用于强制修改 charset。通常只在本地和远程的内容编码不同时使用。 success类型:Function说明:请求成功后的回调函数。参数:由服务器返回,并根据 dataType 参数进行处理后的数据;描述状态的字符串。这是一个 Ajax 事件。 traditional类型:Boolean说明:如果你想要用传统的方式来序列化数据,那么就设置为 true。请参考工具分类下面的 jQuery.param 方法。 timeout类型:Number说明:设置请求超时时间(毫秒)。此设置将覆盖全局设置。 type类型:String说明:默认值: “GET”)。请求方式 (“POST” 或 “GET”), 默认为 “GET”。注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分浏览器支持。 url类型:String说明:默认值: 当前页地址。发送请求的地址。 username类型:String说明:用于响应 HTTP 访问认证请求的用户名。 xhr类型:Function说明:需要返回一个 XMLHttpRequest 对象。默认在 IE 下是 ActiveXObject 而其他情况下是 XMLHttpRequest 。用于重写或者提供一个增强的 XMLHttpRequest 对象。这个参数在 jQuery 1.3 以前不可用。 如果要处理 $.ajax() 得到的数据,则需要使用回调函数:beforeSend、error、dataFilter、success、complete。 beforeSend在发送请求之前调用,并且传入一个 XMLHttpRequest 作为参数。 error在请求出错时调用。传入 XMLHttpRequest 对象,描述错误类型的字符串以及一个异常对象(如果有的话) dataFilter在请求成功之后调用。传入返回的数据以及 “dataType” 参数的值。并且必须返回新的数据(可能是处理过的)传递给 success 回调函数。 success当请求之后调用。传入返回后的数据,以及包含成功代码的字符串。 complete当请求完成之后调用这个函数,无论成功或失败。传入 XMLHttpRequest 对象,以及一个包含成功或错误代码的字符串。 数据类型$.ajax() 函数依赖服务器提供的信息来处理返回的数据。如果服务器报告说返回的数据是 XML,那么返回的结果就可以用普通的 XML 方法或者 jQuery 的选择器来遍历。如果见得到其他类型,比如 HTML,则数据就以文本形式来对待。 通过 dataType 选项还可以指定其他不同数据处理方式。除了单纯的 XML,还可以指定 html、json、jsonp、script 或者 text。 其中,text 和 xml 类型返回的数据不会经过处理。数据仅仅简单的将 XMLHttpRequest 的 responseText 或 responseHTML 属性传递给 success 回调函数。 注意:我们必须确保网页服务器报告的 MIME 类型与我们选择的 dataType 所匹配。比如说,XML的话,服务器端就必须声明 text/xml 或者 application/xml 来获得一致的结果。 如果指定为 html 类型,任何内嵌的 JavaScript 都会在 HTML 作为一个字符串返回之前执行。类似地,指定 script 类型的话,也会先执行服务器端生成 JavaScript,然后再把脚本作为一个文本数据返回。 如果指定为 json 类型,则会把获取到的数据作为一个 JavaScript 对象来解析,并且把构建好的对象作为结 如果返回。为了实现这个目的,它首先尝试使用 JSON.parse()。如果浏览器不支持,则使用一个函数来构建。 JSON 数据是一种能很方便通过 JavaScript 解析的结构化数据。如果获取的数据文件存放在远程服务器上(域名不同,也就是跨域获取数据),则需要使用 jsonp 类型。使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的 URL 后面。服务器端应当在 JSON 数据前加上回调函数名,以便完成一个有效的 JSONP 请求。如果要指定回调函数的参数名来取代默认的 callback,可以通过设置 $.ajax() 的 jsonp 参数。 注意:JSONP 是 JSON 格式的扩展。它要求一些服务器端的代码来检测并处理查询字符串参数。如果指定了 script 或者 jsonp 类型,那么当从服务器接收到数据时,实际上是用了 标签而不是 XMLHttpRequest 对象。这种情况下,$.ajax() 不再返回一个 XMLHttpRequest 对象,并且也不会传递事件处理函数,比如 beforeSend。 发送数据到服务器默认情况下,Ajax 请求使用 GET 方法。如果要使用 POST 方法,可以设定 type 参数值。这个选项也会影响 data 选项中的内容如何发送到服务器。 data 选项既可以包含一个查询字符串,比如 key1=value1&key2=value2 ,也可以是一个映射,比如 {key1: ‘value1’, key2: ‘value2’} 。如果使用了后者的形式,则数据再发送器会被转换成查询字符串。这个处理过程也可以通过设置 processData 选项为 false 来回避。如果我们希望发送一个 XML 对象给服务器时,这种处理可能并不合适。并且在这种情况下,我们也应当改变 contentType 选项的值,用其他合适的 MIME 类型来取代默认的 application/x-www-form-urlencoded 。 高级选项global 选项用于阻止响应注册的回调函数,比如 .ajaxSend,或者 ajaxError,以及类似的方法。这在有些时候很有用,比如发送的请求非常频繁且简短的时候,就可以在 ajaxSend 里禁用这个。 如果服务器需要 HTTP 认证,可以使用用户名和密码可以通过 username 和 password 选项来设置。 Ajax 请求是限时的,所以错误警告被捕获并处理后,可以用来提升用户体验。请求超时这个参数通常就保留其默认值,要不就通过 jQuery.ajaxSetup 来全局设定,很少为特定的请求重新设置 timeout 选项。 默认情况下,请求总会被发出去,但浏览器有可能从它的缓存中调取数据。要禁止使用缓存的结果,可以设置 cache 参数为 false。如果希望判断数据自从上次请求后没有更改过就报告出错的话,可以设置 ifModified 为 true。 scriptCharset 允许给 标签的请求设定一个特定的字符集,用于 script 或者 jsonp 类似的数据。当脚本和页面字符集不同时,这特别好用。 Ajax 的第一个字母是 asynchronous 的开头字母,这意味着所有的操作都是并行的,完成的顺序没有前后关系。$.ajax() 的 async 参数总是设置成true,这标志着在请求开始后,其他代码依然能够执行。强烈不建议把这个选项设置成 false,这意味着所有的请求都不再是异步的了,这也会导致浏览器被锁死。 $.ajax 函数返回它创建的 XMLHttpRequest 对象。通常 jQuery 只在内部处理并创建这个对象,但用户也可以通过 xhr 选项来传递一个自己创建的 xhr 对象。返回的对象通常已经被丢弃了,但依然提供一个底层接口来观察和操控请求。比如说,调用对象上的 .abort() 可以在请求完成前挂起请求。 参考文献:w3school","updated":"2019-09-18T11:36:07.302Z","categories":[{"name":"技术","slug":"技术","permalink":"http://www.liuyuchuan.com/categories/技术/"}],"category":"技术","tags":[{"name":"JQuery","slug":"JQuery","permalink":"http://www.liuyuchuan.com/tags/JQuery/"},{"name":"ajax","slug":"ajax","permalink":"http://www.liuyuchuan.com/tags/ajax/"}]},{"title":"Hello World","date":"2019-09-18T11:35:37.522Z","path":"2019/09/18/hello_world/","text":"Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick StartCreate a new post1$ hexo new \"My New Post\" More info: Writing Run server1$ hexo server More info: Server Generate static files1$ hexo generate More info: Generating Deploy to remote sites1$ hexo deploy More info: Deployment","updated":"2019-09-18T11:35:37.522Z","categories":[],"tags":[]},{"title":"【原创】Git SSH密钥对生成以及多个SSH存在情况配置","date":"2019-09-18T11:34:41.518Z","path":"2019/09/18/git_ssh/","text":"一、使用Git Bash 生成一个新的SSH密钥1、 打开 Git Bash.2、 邮箱设置粘贴下面的文字,替换成为你自己的邮箱。Github SSH1$ ssh-keygen -t rsa -b 4096 -C \"[email protected]\" Git SSH1$ ssh-keygen -t rsa -b -C \"[email protected]\" 这将使用所提供的电子邮件作为标签创建一个新的SSH密钥。 下面展示创建中:1Generating public/private rsa key pair. 等会你将看到下面步骤所示 3、文件存放位置以及文件名当你被提示“输入一个文件保存的关键,“按回车。 这种接受默认文件位置。1Enter a file in which to save the key (/c/Users/you/.ssh/id_rsa): 如果想已经存在,则需要新建一个另外的名字的文件即可,这也会出现多个SSH存在的情况,请参考 三 4、密码以及确认密码在提示符下,键入一个安全的密码。更多信息,见“使用SSH密钥的口令”。1Enter passphrase (empty for no passphrase): 看到上面输入一个密码,当然,你输入的密码是看不到任何效果的,确定密码后回车1Enter same passphrase again: 上面是确认密码 5、进入你的本地磁盘地址(由于默认,你可以按照下面的地址找到公钥、私钥)1/c/Users/你的登录账户名/.ssh/id_rsa 二、关于多个SSH密钥对存在的情况 场景:例如,我使用了Github的时候使用自己的邮箱,在自己公司使用公司邮箱,那么这种情况就是一种很常见的情况,那么遇到这种情况我们要如何处理呢?别着急,我们这里有方法 首先:Windows 进入密钥默认的路径下面,然后新建一个没有后缀名的 config 文件其次:在文件内部输入以下代码123456789Host github.com HostName github.com User [email protected] IdentityFile /c/Users/you/.ssh/id_rsa Host 服务域名或者IP HostName 服务域名或者IP User [email protected] IdentityFile /c/Users/you/.ssh/id_rsa_别名 配置完成后,删除kown_host即可,在使用过程中,会自动根据配置文件来访问 注意:1、如果有github,那么github的一定要使用 github.com2、每次连接的时候会有一个提示框弹出,这个时候直接输入 yes 就可以了","updated":"2019-09-18T11:34:41.518Z","categories":[{"name":"原创","slug":"原创","permalink":"http://www.liuyuchuan.com/categories/原创/"},{"name":"技术","slug":"原创/技术","permalink":"http://www.liuyuchuan.com/categories/原创/技术/"},{"name":"Windows","slug":"原创/技术/Windows","permalink":"http://www.liuyuchuan.com/categories/原创/技术/Windows/"}],"category":"原创","tags":[{"name":"git","slug":"git","permalink":"http://www.liuyuchuan.com/tags/git/"},{"name":"ssh","slug":"ssh","permalink":"http://www.liuyuchuan.com/tags/ssh/"}]},{"title":"【原创】未来,闪闪发光","date":"2019-09-18T11:34:18.044Z","path":"2019/09/18/future_glitters/","text":"导读我们,未来,闪闪发光 外面世界,好奇这世界。唯独美食与美景才是此生所需要追求。 美景阳光正好,青山碧水,听着树上的鸟鸣声,望着远方青山,心情瞬间美美的。 其实,田园生活也是一种向往,看着这些无忧无虑的鸡鸭,真是羡煞了众人。 美食来到这里,吃到不少美食 火宫殿:长沙臭豆腐火宫殿:糖油粑粑火宫殿:葱油粑粑火宫殿:脑髓卷额外还有 三角豆腐,等。烧烤哪里都有,但是这种貌似还是第一次见到。 建筑建筑,想去溜达溜达一下大学,寺院。","updated":"2019-09-18T11:34:18.044Z","categories":[{"name":"生活","slug":"生活","permalink":"http://www.liuyuchuan.com/categories/生活/"}],"category":null,"tags":[{"name":"travel","slug":"travel","permalink":"http://www.liuyuchuan.com/tags/travel/"},{"name":"life","slug":"life","permalink":"http://www.liuyuchuan.com/tags/life/"}]},{"title":"【原创】埋点整理","date":"2019-09-18T11:33:20.169Z","path":"2019/09/18/burying_point/","text":"一、 主要功能点 埋点 二、 说明文档1、 手工埋点样例 – 有道2、 官方 – 文档 三、 操作 1、 载入12345678910111213141516<head>... <!-- start sugoio --> <script type='text/javascript'> // var SUGOIO_CUSTOM_LIB_URL = \"http://astro.sugo.io/_bc/sugo-sdk-js/libs/sugoio-latest.min.js\"; (function(e,a){if(!a.__SV){var b=window;try{var c,n,k,l=b.location,g=l.hash;c=function(a,b){return(n=a.match(new RegExp(b+\"=([^&]*)\")))?n[1]:null};g&&c(g,\"state\")&&(k=JSON.parse(decodeURIComponent(c(g,\"state\"))),\"mpeditor\"===k.action&&(b.sessionStorage.setItem(\"_mpcehash\",g),history.replaceState(k.desiredHash||\"\",e.title,l.pathname+l.search)))}catch(p){}var m,h;window.sugoio=a;a._i=[];a.init=function(b,c,f){function e(b,a){var c=a.split(\".\");2==c.length&&(b=b[c[0]],a=c[1]);b[a]=function(){b.push([a].concat(Array.prototype.slice.call(arguments, 0)))}}var d=a;\"undefined\"!==typeof f?d=a[f]=[]:f=\"sugoio\";d.people=d.people||[];d.toString=function(b){var a=\"sugoio\";\"sugoio\"!==f&&(a+=\".\"+f);b||(a+=\" (stub)\");return a};d.people.toString=function(){return d.toString(1)+\".people (stub)\"};m=\"disable time_event track track_pageview track_links track_forms register register_once alias unregister identify name_tag set_config reset people.set people.set_once people.increment people.append people.union people.track_charge people.clear_charges people.delete_user\".split(\" \"); for(h=0;h<m.length;h++)e(d,m[h]);a._i.push([b,c,f])};a.__SV=1.2;b=e.createElement(\"script\");b.type=\"text/javascript\";b.async=!0;\"undefined\"!==typeof SUGOIO_CUSTOM_LIB_URL?b.src=SUGOIO_CUSTOM_LIB_URL:b.src=\"file:\"===e.location.protocol&&\"//astro.sugo.io/_bc/sugo-sdk-js/libs/sugoio-latest.min.js\".match(/^\\/\\//)?\"https://astro.sugo.io/_bc/sugo-sdk-js/libs/sugoio-latest.min.js\":\"//astro.sugo.io/_bc/sugo-sdk-js/libs/sugoio-latest.min.js\";c=e.getElementsByTagName(\"script\")[0];c.parentNode.insertBefore(b, c)}})(document,window.sugoio||[]); sugoio.init('YOUR_TOKEN', {'project_id': 'YOUR_PROJECT_ID'}); </script> <!-- end sugoio -->...</head> 2、 初始化 12345678sugoio.init('YOUR_TOKEN', { // 项目TOKEN project_id: 'YOUR_PROJECT_ID', // 项目ID api_host: '', // sugoio-latest.min.js文件以及数据上报的地址 app_host: '', // 可视化配置时服务端地址 decide_host: '', // 加载已埋点配置地址 loaded: function(lib) { }, // **sugoio** **sdk** 加载完成回调函数= DEBUG: false // 是否启用debug}); 3、 埋点 1sugoio : 全局变量函数 四、 常用属性12345678['page_name', '页面名称'], //页面名称或屏幕名称['path_name', '页面路径'], //页面路径['event_id', '事件ID'], //事件ID['event_name', '事件名称'], //事件名称['event_type', '事件类型'], //事件类型click、focus、submit、change['event_label', '事件源文本'], //事件源文本['sugo_lib', 'sdk类型'], //sdk类型 web、ios、android['token', '应用ID'], //应用ID 12345678if(typeof(sugoio)!= 'undefined'){ console.log($(this).text()); sugoio.track(\"考试类别\", { 'page_name': '考试类别', 'event_type': 'click', 'event_name': $(this).text() });}","updated":"2019-09-18T11:33:20.169Z","categories":[{"name":"原创","slug":"原创","permalink":"http://www.liuyuchuan.com/categories/原创/"}],"category":"essay","tags":[{"name":"cat","slug":"cat","permalink":"http://www.liuyuchuan.com/tags/cat/"},{"name":"sugoio","slug":"sugoio","permalink":"http://www.liuyuchuan.com/tags/sugoio/"}]},{"title":"【翻译】Freemarker - 过时的内置对象列表","date":"2017-08-28T09:57:07.000Z","path":"2017/08/28/freemarker-deprecated_built-ins,/","text":"过时的内置列表下面的内置对象已经过时,但是它们仍然可以使用: default:这个是过时的 默认值操作。 exp1?default(exp2) 对象操作接近于 exp1!exp2,(exp1)?default(exp2) 对象操作接近于 (exp1)!exp2。唯一的区别是 FreeMarker 2.4,default 对象等价于 exp2, 默认值运算符只在真正需要默认值时计算它。无论怎么样,从FreeMarker 2.4开始,默认内置已被改进,其行为与默认值运算符完全相同。 exists:这是默过时的默认对象,缺失值测试操作符。exp1?exists 等价于 exp1??,同样 (exp1)?exists 等价于 (exp1)??。 if_exists:这是默过时的默认对象,缺失值测试操作符。exp1?if_exists 类似于 exp1!, (exp1)?if_exists 类似于 (exp1)!。不同之处在于,用 if_exists 的默认值不仅仅同时是空字符串,空序列和空哈希表,而且布尔值 false 和不做任何事情的变换,还有忽略所有参数。 web_safe: 同 html 翻译参考: http://freemarker.org/docs/ref_depr_builtin.html参考: http://freemarker.org/docs/ref_directives.html","updated":"2019-09-18T11:29:57.461Z","categories":[{"name":"翻译","slug":"翻译","permalink":"http://www.liuyuchuan.com/categories/翻译/"}],"category":"翻译","tags":[{"name":"Freemarker","slug":"Freemarker","permalink":"http://www.liuyuchuan.com/tags/Freemarker/"}]},{"title":"【翻译】Freemarker - if, else, elseif 标签使用","date":"2017-08-24T01:47:33.000Z","path":"2017/08/24/freemarker-if_elseif_else/","text":"目录 摘要 描述 摘要 12345678910<#if 条件1> ...<#elseif 条件2> ...<#elseif 条件3> ... ...<#else> ...</#if> 备注: 条件, 条件2, …等。: 表达式的计算结果为布尔值。elseif-s 和 else 是条件选项。 驼峰命名法: elseIf 描述你可以使用 if, elseif 和 else 有条件地跳过一段模板指令。选项表达式计算结果必须是不二类型, 否则,一个错误将中止处理模板。标签 elseif-s and else-s 必须在 if 之后 (意味着 if 标签开始,#if 标签结束)。标签 if 可以有任意数量的 elseif-s (也可以没有),最后也要使用 if 标签结束。例如: if 语句(只有 if 标签开始,if 标签结束) 123<#if x == 1> x is 1</#if> if else 语句 12345<#if x == 1> x is 1<#else> x is not 1</#if> if elseif 语句 1234567<#if x == 1> x is 1<#elseif x == 2> x is 2<#elseif x == 3> x is 3</#if> if elseif else 语句 1234567891011<#if x == 1> x is 1<#elseif x == 2> x is 2<#elseif x == 3> x is 3<#elseif x == 4> x is 4<#else> x is not 1 nor 2 nor 3 nor 4</#if> 更多资料请参考这里:Template Author’s Guide/The Template/Expressions。 你也可以使用嵌套 if 语句(这也是可以): 12345678910111213<#if x == 1> x is 1 <#if y == 1> and y is 1 too <#else> but y is not </#if><#else> x is not 1 <#if y < 0> and y is less than 0 </#if></#if> 注意:当你想要 if x > 0 或者 x >= 0, 写 <#if x > 0> 或者 <#if x >= 0> 是错误的, 第一个 > 将会关闭 #if 标签。如果想要指令工作,就要这样 <#if x gt 0> 或者 <#if gte 0> 。注意,如果计算表达式比较发生在括号中,你就不会有这样的问题, 像 <#if foo.bar(x > 0)> 。 翻译参考: http://freemarker.org/docs/ref_directive_if.html参考: http://freemarker.org/docs/ref_directives.html","updated":"2019-09-18T11:33:56.781Z","categories":[{"name":"翻译","slug":"翻译","permalink":"http://www.liuyuchuan.com/categories/翻译/"}],"category":null,"tags":[{"name":"Freemarker","slug":"Freemarker","permalink":"http://www.liuyuchuan.com/tags/Freemarker/"}]},{"title":"【原创】Git相关学习","date":"2017-07-24T08:20:28.000Z","path":"2017/07/24/git_tortoisegit_egit/","text":"导读部分最近一直在学习Git的使用,下面做一下笔记记录。 一、 Git 安装Git官方下载地址:https://git-scm.com/downloads或者https://git-for-windows.github.io/ Git 界面工具 Git UI下载安装地址:https://git-scm.com/downloads/guis 注意:上述Git UI 不推荐,因为我这里很少使用 二、 TortoiseGit 安装TortoiseGit 磁盘界面工具下载安装地址:https://tortoisegit.org/download/ 当前页面中有语言包,可以根据需要下载语言包 三、 开发环境Eclipse 的GIT插件EGit下载和安装EGit官方网址:http://www.eclipse.org/egit/ EGit官方下载地址:http://www.eclipse.org/egit/download/","updated":"2019-09-18T11:25:24.716Z","categories":[{"name":"原创","slug":"原创","permalink":"http://www.liuyuchuan.com/categories/原创/"},{"name":"技术","slug":"原创/技术","permalink":"http://www.liuyuchuan.com/categories/原创/技术/"}],"category":"技术","tags":[{"name":"Git","slug":"Git","permalink":"http://www.liuyuchuan.com/tags/Git/"}]},{"title":"【转载】Bootstrap Modal 的使用","date":"2017-07-05T16:00:00.000Z","path":"2017/07/06/bootstrap-modal/","text":"Bootstrap 模态框(Modal)插件模态框(Modal)是覆盖在父窗体上的子窗体。通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动。子窗体可提供信息、交互等。 如果您想要单独引用该插件的功能,那么您需要引用 modal.js。或者,正如 Bootstrap 插件概览 一章中所提到,您可以引用 bootstrap.js 或压缩版的 bootstrap.min.js。 用法您可以切换模态框(Modal)插件的隐藏内容: 通过 data 属性:在控制器元素(比如按钮或者链接)上设置属性 data-toggle=”modal”,同时设置 data-target=”#identifier” 或 href=”#identifier” 来指定要切换的特定的模态框(带有 id=”identifier”)。 通过 JavaScript:使用这种技术,您可以通过简单的一行 JavaScript 来调用带有 id=”identifier” 的模态框:1$('#identifier').modal(options) 实例一个静态的模态窗口实例,如下面的实例所示: 12345678910111213141516171819<h2>创建模态框(Modal)</h2><!-- 按钮触发模态框 --><button class=\"btn btn-primary btn-lg\" data-toggle=\"modal\" data-target=\"#myModal\">开始演示模态框</button><!-- 模态框(Modal) --><div class=\"modal fade\" id=\"myModal\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"myModalLabel\" aria-hidden=\"true\"> <div class=\"modal-dialog\"> <div class=\"modal-content\"> <div class=\"modal-header\"> <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">&times;</button> <h4 class=\"modal-title\" id=\"myModalLabel\">模态框(Modal)标题</h4> </div> <div class=\"modal-body\">在这里添加一些文本</div> <div class=\"modal-footer\"> <button type=\"button\" class=\"btn btn-default\" data-dismiss=\"modal\">关闭</button> <button type=\"button\" class=\"btn btn-primary\">提交更改</button> </div> </div><!-- /.modal-content --> </div><!-- /.modal --></div> 进入演示>>代码讲解: 定义和用法 使用模态窗口,您需要有某种触发器。您可以使用按钮或链接。这里我们使用的是按钮。 如果您仔细查看上面的代码,您会发现在 <button> 标签中,data-target=”#myModal” 是您想要在页面上加载的模态框的目标。您可以在页面上创建多个模态框,然后为每个模态框创建不同的触发器。现在,很明显,您不能在同一时间加载多个模块,但您可以在页面上创建多个在不同时间进行加载。 在模态框中需要注意两点: 第一是 .modal,用来把 <div> 的内容识别为模态框。 第二是 .fade class。当模态框被切换时,它会引起内容淡入淡出。 aria-labelledby=”myModalLabel”,该属性引用模态框的标题。 属性 aria-hidden=”true” 用于保持模态窗口不可见,直到触发器被触发为止(比如点击在相关的按钮上)。 <div class=”modal-header”>,modal-header 是为模态窗口的头部定义样式的类。 class=”close”,close 是一个 CSS class,用于为模态窗口的关闭按钮设置样式。 data-dismiss=”modal”,是一个自定义的 HTML5 data 属性。在这里它被用于关闭模态窗口。 class=”modal-body”,是 Bootstrap CSS 的一个 CSS class,用于为模态窗口的主体设置样式。 class=”modal-footer”,是 Bootstrap CSS 的一个 CSS class,用于为模态窗口的底部设置样式。 data-toggle=”modal”,HTML5 自定义的 data 属性 data-toggle 用于打开模态窗口。 选项有一些选项可以用来定制模态窗口(Modal Window)的外观和感观,它们是通过 data 属性或 JavaScript 来传递的。下表列出了这些选项: 选项名称 类型/默认值 Data 属性名称 描述 backdrop boolean 或 string ‘static’默认值:true data-backdrop 指定一个静态的背景,当用户点击模态框外部时不会关闭模态框。 keyboard boolean 默认值:true data-keyboard 当按下 escape 键时关闭模态框,设置为 false 时则按键无效。 show boolean 默认值:true data-show 当初始化时显示模态框。 remote path 默认值:false data-remote 使用 jQuery .load 方法,为模态框的主体注入内容。如果添加了一个带有有效 URL 的 href,则会加载其中的内容。 remote: 如下面的实例所示: 1<a data-toggle=\"modal\" href=\"remote.html\" data-target=\"#modal\">请点击我</a> 方法下面是一些可与 modal() 一起使用的有用的方法。 方法 操作 描述 实例 Options .modal(options) 把内容作为模态框激活。接受一个可选的选项对象。 参考下面 Toggle .modal(‘toggle’) 手动切换模态框。 参考下面 Show .modal(‘show’) 手动打开模态框。 参考下面 Hide .modal(‘hide’) 手动隐藏模态框。 参考下面 详细实例Options :1$('#identifier').modal({ keyboard: false}) Toggle :1$('#identifier').modal('toggle') Show :1$('#identifier').modal('show') Hide :1$('#identifier').modal('hide') 实例下面的实例演示了方法的用法: 123456789101112131415161718192021222324<!-- 模态框(Modal) --><div class=\"modal fade\" id=\"myModal\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"myModalLabel\" aria-hidden=\"true\"> <div class=\"modal-dialog\"> <div class=\"modal-content\"> <div class=\"modal-header\"> <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">×</button> <h4 class=\"modal-title\" id=\"myModalLabel\">模态框(Modal)标题</h4> </div> <div class=\"modal-body\">按下 ESC 按钮退出。</div> <div class=\"modal-footer\"> <button type=\"button\" class=\"btn btn-default\" data-dismiss=\"modal\">关闭</button> <button type=\"button\" class=\"btn btn-primary\">提交更改</button> </div> </div><!-- /.modal-content --> </div><!-- /.modal-dialog --></div><!-- /.modal --><script>$(function() { $('#myModal').modal({ keyboard: true })});</script> 进入演示>> 只需要点击 ESC 键,模态窗口即会退出。 事件 注意 : 我也是在这里踩了坑,当时想监听右上角关闭的事件,写了但是没有效果,最后在这里发现了以下的 hide.bs.modal 这个方法来触发,所以才打算来记录,整理一下这个笔记。 下表列出了模态框中要用到事件。这些事件可在函数中当钩子使用。 事件 描述 实例 show.bs.modal 在调用 show 方法后触发。 $(‘#identifier’).on(‘show.bs.modal’, function () { // 执行一些动作…}) shown.bs.modal 当模态框对用户可见时触发(将等待 CSS 过渡效果完成)。 $(‘#identifier’).on(‘shown.bs.modal’, function () { // 执行一些动作… }) hide.bs.modal 当调用 hide 实例方法时触发。 $(‘#identifier’).on(‘hide.bs.modal’, function () { // 执行一些动作… }) hidden.bs.modal 当模态框完全对用户隐藏时触发。 $(‘#identifier’).on(‘hidden.bs.modal’, function () { // 执行一些动作… }) 实例下面的实例演示了事件的用法: 12345678910111213141516171819202122232425262728293031323334<!-- 模态框(Modal) --><h2>模态框(Modal)插件事件</h2><!-- 按钮触发模态框 --><button class=\"btn btn-primary btn-lg\" data-toggle=\"modal\" data-target=\"#myModal\">开始演示模态框</button><!-- 模态框(Modal) --><div class=\"modal fade\" id=\"myModal\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"myModalLabel\" aria-hidden=\"true\"> <div class=\"modal-dialog\"> <div class=\"modal-content\"> <div class=\"modal-header\"> <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">×</button> <h4 class=\"modal-title\" id=\"myModalLabel\">模态框(Modal)标题</h4> </div> <div class=\"modal-body\">点击关闭按钮检查事件功能。</div> <div class=\"modal-footer\"> <button type=\"button\" class=\"btn btn-default\" data-dismiss=\"modal\">关闭</button> <button type=\"button\" class=\"btn btn-primary\">提交更改</button> </div> </div><!-- /.modal-content --> </div><!-- /.modal-dialog --></div><!-- /.modal --><script>$(function() { $('#myModal').modal('hide')});</script><script>$(function() { $('#myModal').on('hide.bs.modal', function() { alert('嘿,我听说您喜欢模态框...'); })});</script> 进入演示>>参考文档:Bootstrap 模态框(Modal)插件","updated":"2019-09-18T11:31:55.610Z","categories":[{"name":"转载","slug":"转载","permalink":"http://www.liuyuchuan.com/categories/转载/"}],"category":"转载","tags":[{"name":"bootstrap","slug":"bootstrap","permalink":"http://www.liuyuchuan.com/tags/bootstrap/"},{"name":"modal","slug":"modal","permalink":"http://www.liuyuchuan.com/tags/modal/"}]},{"title":"诗与远方","date":"2017-07-03T16:47:53.000Z","path":"2017/07/04/诗与远方/","text":"导读 “生命不只是苟且,还有诗和远方。” —— 高晓松 诗不知道怎么想起来了这句话,然后就想写点什么东西,让自己在这忙碌的世界里面有一丝丝的安慰。 曾经梦想,要给自己作一首诗,用来描绘属于自己的那一首;曾经梦想,要给每一个人写一首诗,赋予一个时代意义的符号;曾经梦想,要给每一个生灵幻想一首诗,用来表达对这个世界的敬畏之情。 诗,是一种情怀。 生活生活像是一摸红,耀眼,但只属于自己的耀眼,跟旁人无关。 有些时候,不经意的把种子撒在花盆,经历雨水的洗礼,发芽,生叶,开花,结果,凋落。它这一生,我都在默默的看着。 有些时候,路边捡到一只流浪猫,经过不知道多少个夜晚,它学会了猫砂盆拉屎,不在随意撒尿,偶尔还会吃掉你那争艳的花儿与绿叶。 有些时候,结束了单身汪的生活,所谓无缝结合也便是一种一个人忍让另一个人的所谓包容。 生活,是一种经历。 工作工种的不同,告诉我们,每一个人的责任不同。无论是哪一种或者哪一类的工作,都有烦心事。当我们遇到烦心的事情的时候,在心里默默数着: 123,开始干有事情,就应该有一种符合当前情况的最佳解决方案,所以,无须担心,无需纠结,果断的处理一下。 工作,是一种抉择。 遭遇这不一定是一个贬义词,它偶尔像 “塞翁失马,焉知非福” ,偶尔像 “亡羊补牢,为时不晚”。遭遇,略带一些伤感,冷静后我们发现,它让我们知道下一步的计划应该如何走。 遭遇,是一个方向灯。 远方站在山的这一头,却希冀山的另一头。这是一种向往,一种激励我们前进的催化剂。 没有了远方的理想,怎么才有前进的动力,当动力与压力接踵而至,催化剂生效了。没有一个人是随随便便就可以成功,只因为他们有远方,只不过,他们在去远方的道路上认真些罢了。 远方,是一种向往。 真谛后来,我才发现,“生命不只是苟且,还有诗和远方”这一句话的真正的意义。","updated":"2019-09-18T11:38:55.432Z","categories":[{"name":"生活","slug":"生活","permalink":"http://www.liuyuchuan.com/categories/生活/"}],"category":"生活","tags":[{"name":"poetry","slug":"poetry","permalink":"http://www.liuyuchuan.com/tags/poetry/"},{"name":"w ord","slug":"w-ord","permalink":"http://www.liuyuchuan.com/tags/w-ord/"},{"name":"writing","slug":"writing","permalink":"http://www.liuyuchuan.com/tags/writing/"}]}]