WEB-INF目录

1.cas.properties文件(打开关闭SSL,主题,定制页面设置)

#默认端口配置

#server.name=http://localhost:8080
server.name=http://localhost:8080
#默认地址
#server.prefix=${server.name}/cas
server.prefix=${server.name}/zzcas
# IP address or CIDR subnet allowed to access the /status URI of CAS that exposes health check information
cas.securityContext.status.allowedSubnet=127.0.0.1

#CSS+JS设置
#默认设置
#cas.themeResolver.defaultThemeName=cas-theme-default

#皮肤主题
cas.themeResolver.defaultThemeName=cas-theme-zzmetro

#首页默认设置
#cas.viewResolver.basename=default_views
#相关页面定制
cas.viewResolver.basename=zzmetro_views

2.spring-configuration/ticketGrantingTicketCookieGenerator.xml(打开关闭SSL)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<description>
This Spring Configuration file describes the cookie used to store the WARN parameter so that a user is warned whenever the CAS service
is used. You would modify this if you wanted to change the cookie path or the name.
</description> <!--默认配置:开启SSL
-->
<bean id="warnCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="true"
p:cookieMaxAge="-1"
p:cookieName="CASPRIVACY"
p:cookiePath="/zzcas" />
<!--x新配置:关闭SSL
<bean id="warnCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="false"
p:cookieMaxAge="-1"
p:cookieName="CASPRIVACY"
p:cookiePath="/cas"
p:p:cookieSecure="false" />
-->
</beans>

  3.spring-configuration/warnCookieGenerator.xml(打开关闭SSL)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<description>
This Spring Configuration file describes the cookie used to store the WARN parameter so that a user is warned whenever the CAS service
is used. You would modify this if you wanted to change the cookie path or the name.
</description> <!--默认配置:开启SSL
-->
<bean id="warnCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="true"
p:cookieMaxAge="-1"
p:cookieName="CASPRIVACY"
p:cookiePath="/zzcas" />
<!--x新配置:关闭SSL
<bean id="warnCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="false"
p:cookieMaxAge="-1"
p:cookieName="CASPRIVACY"
p:cookiePath="/cas"
p:p:cookieSecure="false" />
-->
</beans>

4.字符编码设置

spring-configuration/applicationContext.xml

  <bean id="messageSource" class="org.jasig.cas.web.view.CasReloadableMessageBundle"
p:basenames-ref="basenames" p:fallbackToSystemLocale="false" p:defaultEncoding="UTF-8"
p:cacheSeconds="180" p:useCodeAsDefaultMessage="true" />

spring-configuration/filters.xml

  <bean id="characterEncodingFilter" class="org.springframework.web.filter.CharacterEncodingFilter"
p:encoding="UTF-8"
p:forceEncoding="true" />

5.单点登录过期策略配置

    <!--st的过期策略-->
<bean id="serviceTicketExpirationPolicy" class="org.jasig.cas.ticket.support.MultiTimeUseOrTimeoutExpirationPolicy"
c:numberOfUses="1" c:timeToKill="${st.timeToKillInSeconds:}" c:timeUnit-ref="SECONDS"/> <!-- TicketGrantingTicketExpirationPolicy: Default as of 3.5 -->
<!-- Provides both idle and hard timeouts, for instance 2 hour sliding window with an 8 hour max lifetime -->
<!--tgt的过期策略-->
<!--当用户在2个小时(7200秒)之内不动移动鼠标或者进行系统超过8个小时(28800秒),则tgt过期-->
<bean id="grantingTicketExpirationPolicy" class="org.jasig.cas.ticket.support.TicketGrantingTicketExpirationPolicy"
p:maxTimeToLiveInSeconds="${tgt.maxTimeToLiveInSeconds:28800}"
p:timeToKillInSeconds="${tgt.timeToKillInSeconds:}"/>

6.cas-servlet.xml配置

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:sec="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.2.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">

<bean id="authenticationManager" class="org.jasig.cas.authentication.PolicyBasedAuthenticationManager">
<constructor-arg>
<map>
<!--新配置.接入数据库-->
<entry key-ref="dbAuthenticationHandler" value-ref="primaryPrincipalResolver" />
</map>
</constructor-arg>
<property name="authenticationPolicy">
<bean class="org.jasig.cas.authentication.AnyAuthenticationPolicy" />
</property>
</bean>

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

<!--MySql数据库认证-->
<!--
<property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
<property name="url"><value>jdbc:mysql://192.168.0.58:3306/cassso</value></property>
<property name="username"><value>metro_monitor</value></property>
<property name="password"><value>123456</value></property>
-->

<!--MsSql数据库认证-->
<property name="driverClassName"><value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value></property>
<!-- <property name="url"><value>jdbc:sqlserver://192.168.0.58:1433;DatabaseName=CasSso</value></property>-->
<property name="url"><value>jdbc:sqlserver://192.168.0.3:1433;DatabaseName=ZhengZhouSso</value></property>
<property name="username"><value>sa</value></property>
<property name="password"><value>szhweb2010</value></property>

</bean>

<!--Mysql密码加密-->
<bean id="passwordEncoder"
class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"
c:encodingAlgorithm="MD5"
p:characterEncoding="UTF-8" />

<!--验证处理-->
<bean id="dbAuthenticationHandler"
class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="dataSource" ref="dataSource"></property>
<property name="sql" value="select LoginPassword as password from ssoaccount where LoginAccount=? "></property>
<property name="passwordEncoder" ref="passwordEncoder"></property>
</bean>

<bean id="primaryPrincipalResolver"
class="org.jasig.cas.authentication.principal.PersonDirectoryPrincipalResolver" >
<property name="attributeRepository" ref="attributeRepository" />
</bean>

<!-- 此处为增加部分 start -->
<bean id="attributeRepository" class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao" >
<constructor-arg index="0" ref="dataSource"/>
<constructor-arg index="1" value="SELECT * FROM ssoaccount WHERE {0}"/>
<property name="queryAttributeMapping">
<map>
<!-- key对应登录信息, vlaue对应数据库字段 -->
<entry key="username" value="LoginAccount"/>
</map>
</property>
<property name="resultAttributeMapping">
<map>
<!-- key对应数据库字段 value对应attribute中的key -->
<entry key="Sex" value="Sex"/>
<entry key="Address" value="Address"/>
</map>
</property>
</bean>
<!-- 此处为增加部分 end -->

<bean id="serviceRegistryDao" class="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl"
p:registeredServices-ref="registeredServicesList" />

<util:list id="registeredServicesList">
<bean class="org.jasig.cas.services.RegexRegisteredService"
p:id="0" p:name="HTTP and IMAP" p:description="Allows HTTP(S) and IMAP(S) protocols"
p:serviceId="^(https?|http?|imaps?)://.*" p:evaluationOrder="10000001"
p:enabled="true" p:allowedToProxy="true" />
</util:list>

<!--日志默认配置到文件-->
<!--
<bean id="auditTrailManager" class="com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager" />
-->
<bean id="healthCheckMonitor" class="org.jasig.cas.monitor.HealthCheckMonitor" p:monitors-ref="monitorsList" />
</beans>

7.WEB-INF下新增文件inspektrThrottledSubmissionContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <aop:aspectj-autoproxy/> <bean id="inspektrThrottle"
class="org.jasig.cas.web.support.InspektrThrottledSubmissionByIpAddressAndUsernameHandlerInterceptorAdapter"> <constructor-arg index="0" ref="auditTrailManager" />
<constructor-arg index="1" ref="dataSource" /> </bean> <bean id="auditTrailManagementAspect" class="com.github.inspektr.audit.AuditTrailManagementAspect">
<!-- String applicationCode -->
<constructor-arg index="0" value="CAS" /> <!-- PrincipalResolver auditablePrincipalResolver -->
<constructor-arg index="1" ref="auditablePrincipalResolver" /> <!-- List<AuditTrailManager> auditTrailManagers -->
<constructor-arg index="2">
<list>
<ref bean="auditTrailManager" />
</list>
</constructor-arg> <!-- Map<String,AuditActionResolver> auditActionResolverMap -->
<constructor-arg index="3">
<map>
<entry key="AUTHENTICATION_RESOLVER">
<ref local="authenticationActionResolver" />
</entry>
<entry key="CREATE_TICKET_GRANTING_TICKET_RESOLVER">
<ref local="ticketCreationActionResolver" />
</entry>
<entry key="DESTROY_TICKET_GRANTING_TICKET_RESOLVER">
<bean class="com.github.inspektr.audit.spi.support.DefaultAuditActionResolver" />
</entry>
<entry key="GRANT_SERVICE_TICKET_RESOLVER">
<ref local="ticketCreationActionResolver" />
</entry>
<entry key="GRANT_PROXY_GRANTING_TICKET_RESOLVER">
<ref local="ticketCreationActionResolver" />
</entry>
<entry key="VALIDATE_SERVICE_TICKET_RESOLVER">
<ref local="ticketValidationActionResolver" />
</entry>
<entry key="DELETE_SERVICE_ACTION_RESOLVER">
<ref local="deleteServiceActionResolver" />
</entry>
<entry key="SAVE_SERVICE_ACTION_RESOLVER">
<ref local="saveServiceActionResolver" />
</entry>
</map>
</constructor-arg> <!-- Map<String,AuditResourceResolver> auditResourceResolverMap -->
<constructor-arg index="4">
<map>
<entry key="AUTHENTICATION_RESOURCE_RESOLVER">
<bean class="org.jasig.cas.audit.spi.CredentialsAsFirstParameterResourceResolver" />
</entry>
<entry key="CREATE_TICKET_GRANTING_TICKET_RESOURCE_RESOLVER">
<ref local="returnValueResourceResolver" />
</entry>
<entry key="DESTROY_TICKET_GRANTING_TICKET_RESOURCE_RESOLVER">
<ref local="ticketResourceResolver" />
</entry>
<entry key="GRANT_SERVICE_TICKET_RESOURCE_RESOLVER">
<bean class="org.jasig.cas.audit.spi.ServiceResourceResolver" />
</entry>
<entry key="GRANT_PROXY_GRANTING_TICKET_RESOURCE_RESOLVER">
<ref local="returnValueResourceResolver" />
</entry>
<entry key="VALIDATE_SERVICE_TICKET_RESOURCE_RESOLVER">
<ref local="ticketResourceResolver" />
</entry>
<entry key="DELETE_SERVICE_RESOURCE_RESOLVER">
<ref local="deleteServiceResourceResolver" />
</entry>
<entry key="SAVE_SERVICE_RESOURCE_RESOLVER">
<ref local="saveServiceResourceResolver" />
</entry>
</map>
</constructor-arg>
</bean> <bean id="saveServiceResourceResolver" class="com.github.inspektr.audit.spi.support.ParametersAsStringResourceResolver" /> <bean id="deleteServiceResourceResolver" class="org.jasig.cas.audit.spi.ServiceManagementResourceResolver" /> <bean id="saveServiceActionResolver" class="com.github.inspektr.audit.spi.support.DefaultAuditActionResolver">
<constructor-arg index="0" value="_SUCCEEDED" />
<constructor-arg index="1" value="_FAILED" />
</bean> <bean id="deleteServiceActionResolver" class="com.github.inspektr.audit.spi.support.ObjectCreationAuditActionResolver">
<constructor-arg index="0" value="_SUCCEEDED" />
<constructor-arg index="1" value="_FAILED" />
</bean> <bean id="auditablePrincipalResolver" class="org.jasig.cas.audit.spi.TicketOrCredentialPrincipalResolver">
<constructor-arg index="0" ref="ticketRegistry" />
</bean> <bean id="authenticationActionResolver"
class="com.github.inspektr.audit.spi.support.DefaultAuditActionResolver">
<!-- String successSuffix -->
<constructor-arg index="0" value="_SUCCESS" /> <!-- String failureSuffix -->
<constructor-arg index="1" value="_FAILED" />
</bean> <bean id="ticketCreationActionResolver"
class="com.github.inspektr.audit.spi.support.DefaultAuditActionResolver">
<!-- String successSuffix -->
<constructor-arg index="0" value="_CREATED" /> <!-- String failureSuffix -->
<constructor-arg index="1" value="_NOT_CREATED" />
</bean> <bean id="ticketValidationActionResolver"
class="com.github.inspektr.audit.spi.support.DefaultAuditActionResolver">
<!-- String successSuffix -->
<constructor-arg index="0" value="D" /> <!-- String failureSuffix -->
<constructor-arg index="1" value="_FAILED" />
</bean> <bean id="returnValueResourceResolver"
class="com.github.inspektr.audit.spi.support.ReturnValueAsStringResourceResolver" /> <bean id="ticketResourceResolver"
class="org.jasig.cas.audit.spi.TicketAsFirstParameterResourceResolver" /> <!--日志配置到数据库-->
<bean id="auditTrailManager" class="com.github.inspektr.audit.support.JdbcAuditTrailManager">
<constructor-arg index="0" ref="inspektrTransactionTemplate" />
<property name="dataSource" ref="dataSource" />
</bean> <bean id="inspektrTransactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref="dataSource"
/> <bean id="inspektrTransactionTemplate"
class="org.springframework.transaction.support.TransactionTemplate"
p:transactionManager-ref="inspektrTransactionManager"
p:isolationLevelName="ISOLATION_READ_COMMITTED"
p:propagationBehaviorName="PROPAGATION_REQUIRED"
/>
</beans>

8.View页面,Css,Js等文件参考原默认文件拷贝进行修改,拷贝出来的文件夹或者文件名,参照前面cas.properties配置

9.添加Jar包

cas-server-support-jdbc-4.0.0.jar

hibernate-entitymanager-4.1.4.Final.jar

mysql-connector-java-5.1.40-bin.jar

sqljdbc4.jar

上述JAR包添加至WEB-INF/lib/目录下面

10.部分数据表脚本

/****** Object:  Table [dbo].[com_audit_trail]    Script Date: 04/10/2017 13:19:17 ******/
SET ANSI_NULLS ON
GO SET QUOTED_IDENTIFIER ON
GO CREATE TABLE [dbo].[com_audit_trail](
[Id] [int] IDENTITY(1,1) NOT NULL,
[AUD_USER] [nvarchar](100) NULL,
[AUD_CLIENT_IP] [nvarchar](15) NULL,
[AUD_SERVER_IP] [nvarchar](15) NULL,
[AUD_RESOURCE] [nvarchar](100) NULL,
[AUD_ACTION] [nvarchar](100) NULL,
[APPLIC_CD] [nvarchar](15) NULL,
[AUD_DATE] [datetime] NULL
) ON [PRIMARY] GO

注意:用户表返回的密码字段,经SQL查询后,返回的必须是password,比如:select LoginPassword as password from ssoaccount where LoginAccount=? ,本SQL脚本会随着数据库不同而不同

11.登录成功,票据验证返回其他信息

配置文件修改

 <!-- 此处为增加部分 start -->
<bean id="attributeRepository" class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao" >
<constructor-arg index="0" ref="dataSource"/>
<constructor-arg index="1" value="SELECT * FROM ssoaccount WHERE {0}"/>
<property name="queryAttributeMapping">
<map>
<!-- key对应登录信息, vlaue对应数据库字段 -->
<entry key="username" value="LoginAccount"/>

</map>
</property>
<property name="resultAttributeMapping">
<map>
<!-- key对应数据库字段 value对应attribute中的key -->
<entry key="Sex" value="Sex"/>
<entry key="Address" value="Address"/>

</map>
</property>
</bean>
<!-- 此处为增加部分 end -->

修正casServiceValidationSuccess.jsp文件修正:

<%@ page session="false" contentType="application/xml; charset=UTF-8" %>
<%@ page import="java.util.Map.Entry" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
<cas:authenticationSuccess>
<cas:user>${fn:escapeXml(assertion.primaryAuthentication.principal.id)}</cas:user>
<c:if test="${not empty pgtIou}">
<cas:proxyGrantingTicket>${pgtIou}</cas:proxyGrantingTicket>
</c:if>
<c:if test="${fn:length(assertion.chainedAuthentications) > 1}">
<cas:proxies>
<c:forEach var="proxy" items="${assertion.chainedAuthentications}" varStatus="loopStatus" begin="0"
end="${fn:length(assertion.chainedAuthentications)-2}" step="1">
<cas:proxy>${fn:escapeXml(proxy.principal.id)}</cas:proxy>
</c:forEach>
</cas:proxies>
</c:if>
<c:if test="${fn:length(assertion.primaryAuthentication.principal.attributes) > 0}">
<cas:attributes>
<c:forEach var="attr"
items="${assertion.primaryAuthentication.principal.attributes}"
varStatus="loopStatus" begin="0"
end="${fn:length(assertion.primaryAuthentication.principal.attributes)}"
step="1">
<%-- ${attr.value['class'].simpleName} fails for List: use scriptlet instead --%>
<%
Entry entry = (Entry) pageContext.getAttribute("attr");
Object value = entry.getValue();
pageContext.setAttribute("isAString", value instanceof String);
%>
<c:choose>
<%-- it's a String, output it once --%>
<c:when test="${isAString}">
<cas:${fn:escapeXml(attr.key)}>${fn:escapeXml(attr.value)}</cas:${fn:escapeXml(attr.key)}>
</c:when>
<%-- if attribute is multi-valued, list each value under the same attribute name --%>
<c:otherwise>
<c:forEach var="attrval" items="${attr.value}">
<cas:${fn:escapeXml(attr.key)}>${fn:escapeXml(attrval)}</cas:${fn:escapeXml(attr.key)}>
</c:forEach>
</c:otherwise>
</c:choose>
</c:forEach>
</cas:attributes>
</c:if> </cas:authenticationSuccess>
</cas:serviceResponse>

 

至此:Cas的主要的配置基本完成

CAS配置(2)之主配置的更多相关文章

  1. MySQL的双主配置

    配置MySQL双主配置,需要先配置MySQL的主从复制,传送门: 0.集群规划 hadoop105 hadoop106 hadoop107 MySQL(master,slave) MySQL(slav ...

  2. Nginx主配置参数详解,Nginx配置网站

    1.Niginx主配置文件参数详解 a.上面博客说了在Linux中安装nginx.博文地址为:http://www.cnblogs.com/hanyinglong/p/5102141.html b.当 ...

  3. Centos6 yum安装openldap+phpldapadmin+TLS+双主配置

    原文地址:http://54im.com/openldap/centos-6-yum-install-openldap-phpldapadmin-tls-%E5%8F%8C%E4%B8%BB%E9%8 ...

  4. mongoDB Replica集群配置(1主+1从+1仲裁)

    1.mongoDB节点介绍 主节点(Primary) 在复制集中,主节点是唯一能够接收写请求的节点.MongoDB在主节点进行写操作,并将这些操作记录到主节点的oplog中.而从节点将会从oplog复 ...

  5. mysql的主从配置以及主主配置

    基础环境 系统:linuxmysql版本:5.5主服务器IP:192.168.1.101从服务器IP:192.168.1.102 1.主服务器(master)要打开二进制日志2.从服务器(slave) ...

  6. CDbConnectionExt.php 23.2实现数据库的主从分离,该类会维护多个数据库的配置:一个主数据库配置,多个从数据库的配置

      <?php   /** * 实现数据库的主从分离,该类会维护多个数据库的配置:一个主数据库配置,多个从数据库的配置. * 具体使用主数据库还是从数据库,使用如下规则: * 1.CDbComm ...

  7. MySQL双主配置

    MySQL双主配置 准备环境:服务器操作系统为RHEL6.4 x86_64,为最小化安装.主机A和主机B均关闭防火墙和SELINUX ,IP地址分别为192.168.131.129和192.168.1 ...

  8. php配置虚拟主机的配置步骤(hosts、httpd.conf、vhosts.conf)1.配置本地的dns文件2.配置apache的主配置文件3.配置Apache的虚拟主机

    1.域名解析(DNS) 找到C:\Windows\System32\drivers\etc目录下的hosts文件,在里面进行添加对应的内容

  9. MySQL Replication, 主从和双主配置

    MySQL Replication, 主从和双主配置 MySQL的Replication是一种多个MySQL的数据库做主从同步的方案,特点是异步,广泛用在各种对MySQL有更高性能,更高可靠性要求的场 ...

随机推荐

  1. modelsim 仿真软件 百度云分享 modelsim se 10.7 10.6d 10.6c 10.5 10.4

    modelsim se 10.7 链接:https://pan.baidu.com/s/1NDC2yMCZmA4bIRSk2dUiTg 提取码:4l1d 复制这段内容后打开百度网盘手机App,操作更方 ...

  2. stress工具使用指南和结果分析

    stress介绍 #stress `stress' imposes certain types of compute stress on your system Usage: stress [OPTI ...

  3. How To:配置Openfiler磁盘

    目录 1.系统登陆 2.启用iSCSI Target服务 3.初始化卷组 4.映射LUN 5.查看状态 1.系统登陆 Openfiler系统安装完毕之后,使用提示的地址登陆:https://172.1 ...

  4. 21.使用rescoring机制优化近似匹配搜索性能

        一.match和phrase match(proximity match)区别   1.match:只要简单的匹配到了一个term,就会将term对应的doc作为 结果返回. 2.phrase ...

  5. nlogn求LIS(树状数组)

    之前一直是用二分 但是因为比较难理解,写的时候也容易忘记怎么写. 今天比赛讲评的时候讲了一种用树状数组求LIS的方法 (1)好理解,自然也好写(但代码量比二分的大) (2)扩展性强.这个解法顺带求出以 ...

  6. 清北学堂模拟赛d3t3 c

    分析:一开始拿到这道题真的是无从下手,暴力都很难打出来.但是基本的方向还是要有的,题目问的是方案数,dp不行就考虑数学方法.接下来比较难想.其实对于每一行或者每一列,我们任意打乱顺序其实对答案是没有影 ...

  7. hdu_2046_骨牌铺方格_201311251403

    骨牌铺方格 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  8. SSM(spring mvc+spring+mybatis)学习路径——2-1、spring MVC入门

    目录 2-1 Spring MVC起步 一.回顾Servlet 二.SpringMVC简介 三.搭建SpringMVC第一个案例 四.简单流程及配置 五.使用注解开发Controller 六.参数绑定 ...

  9. RDS MySQL 表上 Metadata lock 的产生和处理

    https://help.aliyun.com/knowledge_detail/41723.html?spm=5176.7841698.2.18.vNfPM3

  10. [转]wcf系列学习——服务托管

    今天是系列的终结篇,当然要分享一下wcf的托管方面的知识. wcf中托管服务一般有一下四种: Console寄宿:             利于开发调试,但不是生产环境中的最佳实践. winform寄 ...