CAS (10) —— JBoss EAP 6.4下部署CAS时出现错误exception.message=Error decoding flow execution的解决办法


jboss版本: jboss-eap-6.4-CVE-2015-7501

jdk版本: 1.7.0_79

cas版本: cas 4.1.3

参考来源:

Nabble: exception.message=Error+decoding+flow+execution

Nabble: Caused by: java.lang.ClassNotFoundException: org.slf4j.impl.Slf4jLogger from [Module "deployment.cas.war:main" from Service Module Loader]

JBoss7.1.1版本和CAS3的集成(未完)

CAS 4.1.1 - JDBC authentication, failed to deploy

Securing JBoss EAP 6 - Implementing SSL

JBoss eap 6.4 mutual (two way) ssl configuration

Tomcat (1) —— Mac下配置Tomcat Https/SSL

问题描述

在CAS部署到jboss后台启动时会出现下面错误1,如果忽略此问题,在登录成功并且尝试重定会应用的页面时,会在重定向url后面加上&exception.message=Error+decoding+flow+execution字样,下面所描述的错误2。

1. Slf4jLogger

	15:28:30,587 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/cas].[cas]] (http-/0.0.0.0:8443-3) JBWEB000236:
Servlet.service() for servlet cas threw exception: java.lang.ClassNotFoundException:
org.slf4j.impl.Slf4jLogger from [Module "deployment.cas.war:main" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:213) [jboss-modules.jar:1.3.6.Final-redhat-1]
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:459) [jboss-modules.jar:1.3.6.Final-redhat-1]
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:408) [jboss-modules.jar:1.3.6.Final-redhat-1]
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:389) [jboss-modules.jar:1.3.6.Final-redhat-1]
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:134) [jboss-modules.jar:1.3.6.Final-redhat-1]
at java.lang.Class.forName0(Native Method) [rt.jar:1.7.0_79]
at java.lang.Class.forName(Class.java:274) [rt.jar:1.7.0_79]
at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:625) [rt.jar:1.7.0_79]
at org.hibernate.internal.util.SerializationHelper$CustomObjectInputStream.resolveClass(SerializationHelper.java:369) [hibernate-core-4.3.10.Final.jar:4.3.10.Final]
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1612) [rt.jar:1.7.0_79]
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517) [rt.jar:1.7.0_79]
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771) [rt.jar:1.7.0_79]
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) [rt.jar:1.7.0_79]

2. exception.message=

https://proxy.sso.hoau.com/cas/login?service=https%3A%2F%2Fapp1.hoau.com%3A8413%2Fcas1&exception.message=Error+decoding+flow+execution

解决方案

在应用中去掉jboss容器自带的slf4j的依赖

1. 在路径<your_cas_server_webapp>/../webapp/WEB-INF/下

新建文件"jboss-deployment-structure.xml"

2. 文件配置如下

	<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="org.slf4j" />
<module name="org.slf4j.impl" />
<module name="org.slf4j.jcl-over-slf4j" />
<module name="org.slf4j.ext" />
</exclusions>
</deployment>
</jboss-deployment-structure>

3. 重新发布

扩展

依照以上方法就可以解决本文主要关注的两个问题,但是这种方案会使我们引入一个新的问题。在jboss启动的时候服务器仍然会报slf4j的错误SLF4J: Class path contains multiple SLF4J bindings.

	14:09:52,144 ERROR [stderr] (ServerService Thread Pool -- 158)
SLF4J: Class path contains multiple SLF4J bindings.
14:09:52,145 ERROR [stderr] (ServerService Thread Pool -- 158)
SLF4J: Found binding in [vfs:/content/cas.war/WEB-INF/lib/cas-server-core-4.1.3.jar/org/slf4j/impl/StaticLoggerBinder.class]
14:09:52,145 ERROR [stderr] (ServerService Thread Pool -- 158)
SLF4J: Found binding in [vfs:/content/cas.war/WEB-INF/lib/log4j-slf4j-impl-2.3.jar/org/slf4j/impl/StaticLoggerBinder.class]
14:09:52,145 ERROR [stderr] (ServerService Thread Pool -- 158)
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
14:09:52,221 ERROR [stderr] (ServerService Thread Pool -- 158)
SLF4J: ILoggerFactory to be used for logging is: org.apache.logging.slf4j.Log4jLoggerFactory
14:09:52,221 ERROR [stderr] (ServerService Thread Pool -- 158)
SLF4J: Actual binding is of type [org.slf4j.impl.CasLoggerFactory]
14:09:52,221 ERROR [stderr] (ServerService Thread Pool -- 158)
SLF4J: The following set of substitute loggers may have been accessed
14:09:52,221 ERROR [stderr] (ServerService Thread Pool -- 158)
SLF4J: during the initialization phase. Logging calls during this
14:09:52,221 ERROR [stderr] (ServerService Thread Pool -- 158)
SLF4J: phase were not honored. However, subsequent logging calls to these
14:09:52,221 ERROR [stderr] (ServerService Thread Pool -- 158)
SLF4J: loggers will work as normally expected.
14:09:52,222 ERROR [stderr] (ServerService Thread Pool -- 158)
SLF4J: See also http://www.slf4j.org/codes.html#substituteLogger
14:09:52,627 ERROR [stderr] (ServerService Thread Pool -- 158)
SLF4J: org.reflections.Reflections

尝试解决此问题

首先我们在<your_cas_server_webapp>的根目录下,从命令行运行,查看依赖树

/cas-server-webapp$mvn dependency:tree

输出结果:

	[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Apereo CAS Web Application 4.1.3
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ cas-server-webapp ---
[INFO] org.jasig.cas:cas-server-webapp:war:4.1.3
[INFO] +- org.jasig.cas:cas-server-webapp-support:jar:4.1.3:compile
[INFO] | +- org.jasig.inspektr:inspektr-support-spring:jar:1.3.GA:runtime
[INFO] | | +- org.jasig.inspektr:inspektr-audit:jar:1.3.GA:compile
[INFO] | | +- org.jasig.inspektr:inspektr-error:jar:1.3.GA:runtime
[INFO] | | +- org.jasig.inspektr:inspektr-common:jar:1.3.GA:compile
[INFO] | | +- org.springframework:spring-web:jar:4.1.8.RELEASE:compile
[INFO] | | +- org.springframework:spring-webmvc:jar:4.1.8.RELEASE:compile
[INFO] | | \- org.springframework:spring-tx:jar:4.1.8.RELEASE:compile
[INFO] | +- org.springframework.security:spring-security-core:jar:4.0.1.RELEASE:compile
[INFO] | | +- aopalliance:aopalliance:jar:1.0:compile
[INFO] | | \- org.springframework:spring-context:jar:4.1.8.RELEASE:compile
[INFO] | +- org.springframework.security:spring-security-web:jar:4.0.1.RELEASE:compile
[INFO] | +- org.springframework.security:spring-security-config:jar:4.0.1.RELEASE:runtime
[INFO] | +- org.springframework:spring-aop:jar:4.1.8.RELEASE:compile
[INFO] | +- org.jasig.cas:cas-server-core:jar:4.1.3:compile
[INFO] | | +- org.jasig.cas:cas-server-core-api:jar:4.1.3:compile
[INFO] | | +- org.jasig.service.persondir:person-directory-impl:jar:1.7.0:compile
[INFO] | | | +- org.ldaptive:ldaptive:jar:1.0.7:compile
[INFO] | | | +- com.sun.xml.bind:jaxb-impl:jar:2.2.7:compile
[INFO] | | | | +- com.sun.xml.bind:jaxb-core:jar:2.2.7:compile
[INFO] | | | | | +- javax.xml.bind:jaxb-api:jar:2.2.7:compile
[INFO] | | | | | \- com.sun.istack:istack-commons-runtime:jar:2.16:compile
[INFO] | | | | \- com.sun.xml.fastinfoset:FastInfoset:jar:1.2.12:compile
[INFO] | | | | \- javax.xml.bind:jsr173_api:jar:1.0:compile
[INFO] | | | \- org.jasig.service.persondir:person-directory-api:jar:1.7.0:compile
[INFO] | | +- commons-codec:commons-codec:jar:1.10:compile
[INFO] | | +- org.springframework.webflow:spring-webflow:jar:2.4.1.RELEASE:compile
[INFO] | | | +- opensymphony:ognl:jar:2.6.11:compile
[INFO] | | | +- org.springframework.webflow:spring-binding:jar:2.4.1.RELEASE:compile
[INFO] | | | \- org.springframework.webflow:spring-js:jar:2.4.1.RELEASE:compile
[INFO] | | | \- org.springframework.webflow:spring-js-resources:jar:2.4.1.RELEASE:compile
[INFO] | | +- commons-jexl:commons-jexl:jar:1.1:runtime
[INFO] | | +- commons-io:commons-io:jar:2.4:compile
[INFO] | | +- joda-time:joda-time:jar:2.8.1:compile
[INFO] | | +- org.reflections:reflections:jar:0.9.10:compile
[INFO] | | | +- org.javassist:javassist:jar:3.19.0-GA:compile
[INFO] | | | \- com.google.code.findbugs:annotations:jar:2.0.1:compile
[INFO] | | +- org.apache.httpcomponents:httpclient:jar:4.4.1:compile
[INFO] | | | \- org.apache.httpcomponents:httpcore:jar:4.4.1:compile
[INFO] | | +- javax.cache:cache-api:jar:1.0.0:compile
[INFO] | | +- org.jsr107.ri:cache-ri-impl:jar:1.0.0:runtime
[INFO] | | | \- javax.enterprise:cdi-api:jar:1.0-SP4:runtime
[INFO] | | | +- org.jboss.spec.javax.interceptor:jboss-interceptors-api_1.1_spec:jar:1.0.0.Beta1:runtime
[INFO] | | | +- javax.annotation:jsr250-api:jar:1.0:runtime
[INFO] | | | \- javax.inject:javax.inject:jar:1:runtime
[INFO] | | +- com.google.guava:guava:jar:18.0:compile
[INFO] | | +- org.bitbucket.b_c:jose4j:jar:0.4.1:compile
[INFO] | | \- org.apache.commons:commons-collections4:jar:4.0:compile
[INFO] | +- org.jasig.cas:cas-server-support-generic:jar:4.1.3:runtime
[INFO] | +- org.springframework:spring-context-support:jar:4.1.8.RELEASE:compile
[INFO] | +- org.codehaus.woodstox:woodstox-core-asl:jar:4.4.1:runtime
[INFO] | | +- javax.xml.stream:stax-api:jar:1.0-2:runtime
[INFO] | | \- org.codehaus.woodstox:stax2-api:jar:3.1.4:runtime
[INFO] | +- org.quartz-scheduler:quartz:jar:2.2.1:runtime
[INFO] | +- org.jasig:spring-webflow-client-repo:jar:1.0.0:runtime
[INFO] | | +- org.slf4j:jcl-over-slf4j:jar:1.7.7:runtime
[INFO] | | \- org.cryptacular:cryptacular:jar:1.0:runtime
[INFO] | | \- org.bouncycastle:bcprov-jdk15on:jar:1.50:runtime
[INFO] | +- com.sun.jersey:jersey-core:jar:1.19:compile
[INFO] | | \- javax.ws.rs:jsr311-api:jar:1.1.1:compile
[INFO] | +- com.sun.jersey:jersey-server:jar:1.19:compile
[INFO] | +- com.sun.jersey:jersey-servlet:jar:1.19:compile
[INFO] | +- com.sun.jersey.contribs:jersey-spring:jar:1.19:runtime
[INFO] | \- org.apache.logging.log4j:log4j-web:jar:2.3:runtime
[INFO] +- org.jasig.cas:cas-server-support-jdbc:jar:4.1.3:compile
[INFO] | +- org.apache.commons:commons-lang3:jar:3.4:compile
[INFO] | +- org.springframework:spring-jdbc:jar:4.1.8.RELEASE:compile
[INFO] | +- org.springframework:spring-orm:jar:4.1.8.RELEASE:compile
[INFO] | \- org.apache.shiro:shiro-core:jar:1.2.3:compile
[INFO] | \- commons-beanutils:commons-beanutils:jar:1.8.3:compile
[INFO] +- mysql:mysql-connector-java:jar:5.1.37:compile
[INFO] +- com.mchange:c3p0:jar:0.9.5.1:compile
[INFO] +- com.mchange:mchange-commons-java:jar:0.2.10:compile
[INFO] +- org.hibernate:hibernate-core:jar:4.3.10.Final:compile
[INFO] | +- org.jboss.logging:jboss-logging:jar:3.1.3.GA:compile
[INFO] | +- org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:jar:1.0.0.Final:compile
[INFO] | +- dom4j:dom4j:jar:1.6.1:compile
[INFO] | | \- xml-apis:xml-apis:jar:1.4.01:compile
[INFO] | +- org.hibernate.common:hibernate-commons-annotations:jar:4.0.5.Final:compile
[INFO] | +- antlr:antlr:jar:2.7.7:compile
[INFO] | \- org.jboss:jandex:jar:1.1.0.Final:compile
[INFO] +- org.hibernate:hibernate-entitymanager:jar:4.3.10.Final:compile
[INFO] | \- org.jboss.logging:jboss-logging-annotations:jar:1.2.0.Beta1:compile
[INFO] +- org.hibernate:hibernate-validator:jar:5.1.3.Final:compile
[INFO] | \- com.fasterxml:classmate:jar:1.0.0:compile
[INFO] +- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile
[INFO] +- org.springframework:spring-expression:jar:4.1.8.RELEASE:runtime
[INFO] | \- org.springframework:spring-core:jar:4.1.8.RELEASE:compile
[INFO] +- javax.servlet:jstl:jar:1.2:runtime
[INFO] +- taglibs:standard:jar:1.1.2:runtime
[INFO] +- org.jasig.cas:cas-server-security-filter:jar:2.0.4:runtime
[INFO] +- com.ryantenney.metrics:metrics-spring:jar:3.1.0:runtime
[INFO] | +- io.dropwizard.metrics:metrics-core:jar:3.1.2:compile
[INFO] | +- io.dropwizard.metrics:metrics-healthchecks:jar:3.1.2:runtime
[INFO] | +- io.dropwizard.metrics:metrics-annotation:jar:3.1.2:compile
[INFO] | \- org.springframework:spring-beans:jar:4.1.8.RELEASE:compile
[INFO] +- io.dropwizard.metrics:metrics-jvm:jar:3.1.2:runtime
[INFO] +- io.dropwizard.metrics:metrics-servlets:jar:3.1.2:runtime
[INFO] | +- io.dropwizard.metrics:metrics-json:jar:3.1.2:runtime
[INFO] | \- com.fasterxml.jackson.core:jackson-databind:jar:2.5.3:compile
[INFO] | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.5.0:compile
[INFO] | \- com.fasterxml.jackson.core:jackson-core:jar:2.5.3:compile
[INFO] +- junit:junit:jar:4.12:test
[INFO] | \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] +- org.mockito:mockito-core:jar:1.10.19:test
[INFO] | \- org.objenesis:objenesis:jar:2.1:test
[INFO] +- org.springframework:spring-test:jar:4.1.8.RELEASE:test
[INFO] +- javax.servlet:javax.servlet-api:jar:3.0.1:provided
[INFO] +- org.aspectj:aspectjrt:jar:1.8.6:compile
[INFO] +- org.aspectj:aspectjweaver:jar:1.8.6:compile
[INFO] +- javax.validation:validation-api:jar:1.1.0.Final:compile
[INFO] +- javax.el:javax.el-api:jar:3.0.0:provided
[INFO] +- org.glassfish.web:javax.el:jar:2.2.6:runtime
[INFO] +- org.slf4j:slf4j-api:jar:1.7.12:compile
[INFO] +- org.slf4j:jul-to-slf4j:jar:1.7.12:runtime
[INFO] +- org.apache.logging.log4j:log4j-api:jar:2.3:runtime
[INFO] +- org.apache.logging.log4j:log4j-core:jar:2.3:runtime
[INFO] +- org.apache.logging.log4j:log4j-slf4j-impl:jar:2.3:runtime
[INFO] +- org.apache.logging.log4j:log4j-jcl:jar:2.3:runtime
[INFO] | \- commons-logging:commons-logging:jar:1.2:runtime
[INFO] \- org.jasig.inspektr:inspektr-aspects:jar:1.3.GA:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.934 s
[INFO] Finished at: 2016-01-12T14:14:58+08:00
[INFO] Final Memory: 21M/439M

经查看发现org.slf4j.impl.StaticLoggerBinder被打入了cas-server-core中,暂时不知道cas的核心开发何故为此,由于cas-server-core是核心jar,我们是否能够直接移除org.apache.logging.log4j:log4j-slf4j-impl:jar:2.3:runtime这个依赖?

	/*
* Licensed to Apereo under one or more contributor license
* agreements. See the NOTICE file distributed with this work
* for additional information regarding copyright ownership.
* Apereo licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a
* copy of the License at the following location:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.slf4j.impl; import org.slf4j.ILoggerFactory;
import org.slf4j.spi.LoggerFactoryBinder; /**
* The static binder for slf4j logging, which allows CAS
* to select its own {@link org.slf4j.ILoggerFactory} instance at runtime.
* Note that this class MUST reside in the <code>org.slf4j.impl</code>
* package so it can be loaded by the runtime dynamic lookup.
* @author Misagh Moayyed
* @since 4.1.0
*/
public final class StaticLoggerBinder implements LoggerFactoryBinder { /**
* The unique instance of this class.
*/
private static final StaticLoggerBinder SINGLETON = new StaticLoggerBinder(); /**
* The {@link ILoggerFactory} instance returned by the
* {@link #getLoggerFactory} method should always be the same
* object.
*/
private final ILoggerFactory loggerFactory; /**
* Instantiates a new Static logger binder.
*/
private StaticLoggerBinder() {
this.loggerFactory = new CasLoggerFactory();
} /**
* Return the singleton of this class.
*
* @return the StaticLoggerBinder singleton
*/
public static StaticLoggerBinder getSingleton() {
return SINGLETON;
} public ILoggerFactory getLoggerFactory() {
return this.loggerFactory;
} public String getLoggerFactoryClassStr() {
return CasLoggerFactory.class.getName();
}
}

修改pom.xml

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warName>cas</warName>
<webResources>
<resource>
<directory>${basedir}/src/main/webapp/WEB-INF</directory>
<filtering>true</filtering>
<targetPath>WEB-INF</targetPath>
<includes>
<include>**/web.xml</include>
</includes>
</resource>
</webResources>
<!--Richard Customized-->
<!--<packagingExcludes>-->
<!--WEB-INF/lib/log4j-slf4j-impl-*.jar-->
<!--</packagingExcludes>-->
</configuration>
</plugin>

如果去掉org.apache.logging.log4j:log4j-slf4j-impl:jar:2.3:runtime这个依赖在部署时会出错,可是目前的实现方式是显示的在slf4j中override掉原来的实现,实例化CAS自己的LogFactory

// Line:
private StaticLoggerBinder() {
this.loggerFactory = new CasLoggerFactory();
}

此问题待解

目前状态

网上很多文章介绍关于jaxb和jersey在jboss下使用方法,但是此处的警告消息warn并不会消除,这是当前6.4版本的一个bug,请参考JBEAP-69

结束

CAS (10) —— JBoss EAP 6.4下部署CAS时出现错误exception.message=Error decoding flow execution的解决办法的更多相关文章

  1. kali下更新软件时,总是报错,说下列签名无效 解决办法

    解决办法就是重新获取下签名key wget -q -O - https://archive.kali.org/archive-key.asc | apt-key add

  2. win10下Import caffe时出现“ImportError: No module named google.protobuf.internal”的解决办法

    解决方法:只要出现和protobuf相关的错误,只要在cmd中输入pip install protobuf,然后等待安装完成即可. ps:这时,可能会出现"pip 不是内部命令"之 ...

  3. CAS (8) —— Mac下配置CAS到JBoss EAP 6.4(6.x)的Standalone模式(服务端)

    CAS (8) -- Mac下配置CAS到JBoss EAP 6.4(6.x)的Standalone模式(服务端) jboss版本: jboss-eap-6.4-CVE-2015-7501 jdk版本 ...

  4. 单点登录CAS使用记(二):部署CAS服务器以及客户端

    CAS-Server下载地址:https://www.apereo.org/projects/cas/download-cas CAS-Client下载地址:http://developer.jasi ...

  5. 部署网站时的错误“one of its dependencies.试图加载格式不正确的程序。”解决方案。

    Sever Error in '/' Application.Could not load file or assembly 'SresBase' or one of its dependencies ...

  6. 在debug模式下运行不报错,换到release模式下报找不到某某库或文件的错。。解决办法

    我遇到的问题是:把edit secheme调到debug模式运行没有问题,然后调到release模式的时候报目录下没有libTuyoo.a 解决办法 把断开真机设备,用IOS device下relea ...

  7. 部署Web API后Delete请求总是报 405(Method Not Allowed)解决办法

    WebDAV                   安装IIS的时候如果选择了WebDAV(Web Distribution Authorization Versioning) Publish,则所有的 ...

  8. [CentOS]CentOS下编译CPP文件时报错[undefined reference to `__gxx_personality_v0' collect2: ld]的解决办法

    在CentOS环境下编译CPP时报出 undefined reference to `__gxx_personality_v0' collect2: ld 以上错误,调查了一下,加上参数[-lstdc ...

  9. windows下运行命令行mysql,提示mysql不是内部命令,解决办法

    1. 打开CMD命令行,连接本地mysql数据库:mysql -u root -p 提示‘mysql’不是本地命令,解决办法如下: 找到你安装的mysql的目录,打开当前目录下的bin文件夹,你可以看 ...

随机推荐

  1. Android开发之AsyncTask的使用

    Android API 3时引进了AsyncTask,也叫异步任务.使用它可以很方便的更新主线程中的UI,使用它比Handler.Thread更简单.由于AsyncTask是抽象类,要使用它首先要创建 ...

  2. C#基础第七天-作业-利用面向对象的思想去实现名片-动态添加

    1.利用面向对象的思想去实现: (增加,修改,删除,查询,查询全部)需求:根据人名去(删除/查询).指定列:姓名,年龄,性别,爱好,电话. 多条添加 , 动态添加 名片 本系列教程: C#基础总结之八 ...

  3. Linux 下的hiredis的简单安装、测试*(转)

    上一章介绍的是如何安装Redis以及在Redis客户端上进行简单测试,但是我们一般安装完Redis之后,都是要结合编程语言对其进行应用的,hiredis是redis开源库对外发布的客户端API包,这一 ...

  4. django -- 用包来组织数据库模型

    默认情况下一个django app的所有模型都保存在一个叫models.py的文件中.这样事实是不方便管理的: 通过包来组织模型是比较方便的. 一.第一步:删除models.py: rm -rf mo ...

  5. Vue(一):简介和安装

    概况 Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架. Vue 只关注视图层, 采用自底向上增量开发的设计. Vue 的目标是通过尽可能简单的 API 实现响应 ...

  6. linux分区详解

    点评:如果你想了解linux分区,请务必认真阅读本文.对于初学者来说,linux分区不像windows下那么一目了解.    Linux 分区的规定      1. 设备管理 在 Linux 中,每一 ...

  7. Darwin Streaming Server for Windows 安装

    最近搞流媒体相关的项目,于是打算在局域网搭建一个流媒体服务器.本以为很快搞定的,但是,在安装过程中还是折腾了一番. 现把安装流程记下来: 一.下载 Darwin Streaming Server fo ...

  8. JS验证邮箱格式是否正确 实例代码

    如何用js验证邮箱格式是否正确?分享一个例子.代码: /* *验证邮箱格式是否正确 *参数strEmail,需要验证的邮箱 */ function chkEmail(strEmail) { if (! ...

  9. apache做转发

    一台WIN服务器,上面主要装了WAMP程序来运行PHP 的相关东西,现在在机子里的IIS建立了一个ASP.NET站点,访问端口88,服务器上可以:http://127.0.0.1:88来访问.NET网 ...

  10. Atitti cto的日常流程与职责attilax总结

    Atitti cto的日常流程与职责attilax总结 1. (最重要)技术战略制定 规划,预测趋势1 1.1. 关键词 Throught技术雷达 趋势 没落  已死  辉煌 未来1 1.2. (比较 ...