1. 程式人生 > >Cas5.2之儲存Service資訊到資料庫-yellowcong

Cas5.2之儲存Service資訊到資料庫-yellowcong

剛剛開始的時候,我們儲存service是通過json的方式,後來發現,這種方式不方便管理,每次需要新增後,重啟伺服器,這種做法不咋好,所以需要有一個有效的方式,通過將資訊儲存到資料庫中,這樣就就可以搞定這個問題了。1、在pom.xml中,新增cas-server-support-jpa-service-registry的依賴。2、配置application.properties ,新增資料庫配置,3、啟動伺服器,驗證。

客戶端搭建

1、新增驅動到pom.xml

<!-- 資料庫驅動 -->
   <dependency>
    <groupId
>
mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.21</version> </dependency> <!--jdbc認證需要新增的,這個是cas的依賴包--> <dependency> <groupId>org.apereo.cas</groupId> <artifactId>cas-server-support-jdbc</artifactId
>
<version>${cas.version}</version> </dependency> <!-- 新增將service儲存到資料庫中 --> <dependency> <groupId>org.apereo.cas</groupId> <artifactId>cas-server-support-jpa-service-registry</artifactId> <version>${cas.version}</version
>
<scope>system</scope> <optional>true</optional> <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/cas-server-support-jpa-service-registry-5.2.2.jar</systemPath> </dependency>

2、配置application.properties

cas.serviceRegistry.initFromJson=true 這一段表示從json檔案裡面初始化服務,如果我們配置了這個,就會將這寫json裡面的資料,都會自動匯入到資料庫中。

################################################
cas.serviceRegistry.watcherEnabled=true
cas.serviceRegistry.repeatInterval=120000
cas.serviceRegistry.startDelay=15000
#開啟識別json檔案,預設false
cas.serviceRegistry.initFromJson=true
#設定配置的服務,一直都有,不會給清除掉 , 第一次使用,需要配置為 create-drop
#create-drop 重啟cas服務的時候,就會給幹掉
#create  沒有表就建立,有就不建立
#none 一直都有
#update 更新
cas.serviceRegistry.jpa.ddlAuto=update

#配置將service配置到資料庫中
cas.authn.jdbc.query[0].healthQuery=SELECT 1
cas.serviceRegistry.jpa.isolateInternalQueries=false
cas.serviceRegistry.jpa.url=${cas.authn.jdbc.query[0].url}
cas.serviceRegistry.jpa.user=${cas.authn.jdbc.query[0].user}
cas.serviceRegistry.jpa.password=${cas.authn.jdbc.query[0].password}
#這個必須是org.hibernate.dialect.MySQL5Dialect ,我就是這個問題導致表建立失敗
cas.serviceRegistry.jpa.dialect=org.hibernate.dialect.MySQL5Dialect
cas.serviceRegistry.jpa.driverClass=${cas.authn.jdbc.query[0].driverClass}
cas.serviceRegistry.jpa.leakThreshold=${cas.authn.jdbc.query[0].leakThreshold}
cas.serviceRegistry.jpa.batchSize=1
cas.serviceRegistry.jpa.failFast=true
# cas.serviceRegistry.jpa.defaultCatalog=
# cas.serviceRegistry.jpa.defaultSchema=

cas.serviceRegistry.jpa.autocommit=true
cas.serviceRegistry.jpa.idleTimeout=5000

# cas.serviceRegistry.jpa.pool.suspension=false
# cas.serviceRegistry.jpa.pool.minSize=6
# cas.serviceRegistry.jpa.pool.maxSize=18
# cas.serviceRegistry.jpa.pool.maxIdleTime=1000
# cas.serviceRegistry.jpa.pool.maxWait=2000

#配置結束
################################################

這裡寫圖片描述

完整配置

##
# CAS Server Context Configuration
#
server.context-path=/
server.port=80

#SSL配置 開啟https
server.ssl.enabled=false

cas.tgc.secure=false
cas.warningCookie.secure=false

#配置oauth2.0授權服務的資訊
#配置授權,需要配置 server name的資訊,不然就會跑到
cas.server.name=http://yellowcong.com:${server.port}
cas.server.prefix=${cas.server.name}

server.max-http-header-size=2097152
server.use-forward-headers=true
server.connection-timeout=20000
server.error.include-stacktrace=ALWAYS

server.compression.enabled=true
server.compression.mime-types=application/javascript,application/json,application/xml,text/html,text/xml,text/plain

server.tomcat.max-http-post-size=2097152
server.tomcat.basedir=build/tomcat
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%t %a "%r" %s (%D ms)
server.tomcat.accesslog.suffix=.log
server.tomcat.max-threads=10
server.tomcat.port-header=X-Forwarded-Port
server.tomcat.protocol-header=X-Forwarded-Proto
server.tomcat.protocol-header-https-value=https
server.tomcat.remote-ip-header=X-FORWARDED-FOR
server.tomcat.uri-encoding=UTF-8

spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true

##
# CAS Cloud Bus Configuration
#
spring.cloud.bus.enabled=false
# spring.cloud.bus.refresh.enabled=true
# spring.cloud.bus.env.enabled=true
# spring.cloud.bus.destination=CasCloudBus
# spring.cloud.bus.ack.enabled=true

endpoints.enabled=false
endpoints.sensitive=true

endpoints.restart.enabled=false
endpoints.shutdown.enabled=false

management.security.enabled=true
management.security.roles=ACTUATOR,ADMIN
management.security.sessions=if_required
management.context-path=/status
management.add-application-context-header=false

security.basic.authorize-mode=role
security.basic.enabled=false
security.basic.path=/cas/status/**

##
# CAS Web Application Session Configuration
#
server.session.timeout=300
server.session.cookie.http-only=true
server.session.tracking-modes=COOKIE

##
# CAS Thymeleaf View Configuration
#
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.cache=true
spring.thymeleaf.mode=HTML
##
# CAS Log4j Configuration
#
# logging.config=file:/etc/cas/log4j2.xml
server.context-parameters.isLog4jAutoInitializationDisabled=true

##
# CAS AspectJ Configuration
#
spring.aop.auto=true
spring.aop.proxy-target-class=true


##
# CAS Authentication Credentials
#
#記住我
cas.ticket.tgt.rememberMe.enabled=true
cas.ticket.tgt.rememberMe.timeToKillInSeconds=3600

#退出後轉發到對應的service
cas.logout.followServiceRedirects=true

#-----------------------------資料庫認證--------------------------------
#SELECT * FROM cas_auth_user;
cas.authn.jdbc.query[0].sql=SELECT * FROM cas_auth_user WHERE user_name = ?   
#select * from cms_auth_user where user_name=?
cas.authn.jdbc.query[0].healthQuery=SELECT 1
cas.authn.jdbc.query[0].isolateInternalQueries=false
#cas.authn.jdbc.query[0].url=jdbc:mysql://192.168.156.43:3306/cas?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
cas.authn.jdbc.query[0].url=jdbc:mysql://127.0.0.1:3306/cas?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
cas.authn.jdbc.query[0].failFast=true
cas.authn.jdbc.query[0].isolationLevelName=ISOLATION_READ_COMMITTED
cas.authn.jdbc.query[0].dialect=org.hibernate.dialect.MySQLDialect
cas.authn.jdbc.query[0].leakThreshold=10
cas.authn.jdbc.query[0].propagationBehaviorName=PROPAGATION_REQUIRED
cas.authn.jdbc.query[0].batchSize=1
cas.authn.jdbc.query[0].user=cas
#cas.authn.jdbc.query[0].ddlAuto=create-drop
cas.authn.jdbc.query[0].maxAgeDays=180
cas.authn.jdbc.query[0].password=cas
cas.authn.jdbc.query[0].autocommit=false
cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver
cas.authn.jdbc.query[0].idleTimeout=5000
# cas.authn.jdbc.query[0].credentialCriteria=
# cas.authn.jdbc.query[0].name=
# cas.authn.jdbc.query[0].order=0
# cas.authn.jdbc.query[0].dataSourceName=
# cas.authn.jdbc.query[0].dataSourceProxy=false
#密碼欄位的資訊
cas.authn.jdbc.query[0].fieldPassword=PASSWORD
#加密策略
cas.authn.jdbc.query[0].passwordEncoder.type=DEFAULT
cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8
#MD5加密策略
cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5

#####################################
#密碼管理開始
cas.authn.pm.enabled=true

#傳送郵件
spring.mail.host=smtp.exmail.qq.com
spring.mail.port=465
#郵箱使用者名稱(需要修改)
[email protected]
#郵箱授權碼(需要修改)dd
spring.mail.password=yellowcongejk01
spring.mail.testConnection=false
spring.mail.properties.mail.smtp.auth=true

#必須ssl
spring.mail.properties.mail.smtp.ssl.enable=true

cas.authn.pm.reset.from=${spring.mail.username}
#傳送郵件標題
cas.authn.pm.reset.subject=yellowcong mobbile 重置密碼
#郵件內容,必須要有%s,因為會生成一個連線並且帶了token,否則無法開啟連結,當然這個連結也和cas.server.prefix有關係
cas.authn.pm.reset.text=開啟以下連結重置您的密碼(yellowcong mobbile): %s
#token失效分鐘數
cas.authn.pm.reset.expirationMinutes=10
cas.authn.pm.reset.emailAttribute=mail

#新密碼必須匹配表示式
cas.authn.pm.policyPattern=\\w{6,24}


#郵箱查詢
#根據使用者名稱查詢郵箱
cas.authn.pm.jdbc.sqlFindEmail=SELECT email FROM cas_auth_user WHERE user_name = ?
#修改密碼
cas.authn.pm.jdbc.sqlChangePassword=update cas_auth_user set password=? where user_name=?
cas.authn.pm.jdbc.url=${cas.authn.jdbc.query[0].url}
cas.authn.pm.jdbc.user=${cas.authn.jdbc.query[0].user}
cas.authn.pm.jdbc.password=${cas.authn.jdbc.query[0].password}
cas.authn.pm.jdbc.dialect=${cas.authn.jdbc.query[0].dialect}
cas.authn.pm.jdbc.driverClass=${cas.authn.jdbc.query[0].driverClass}
#密碼修改加密規則,這個必須要和原始密碼加密規則一致
cas.authn.pm.jdbc.passwordEncoder.type=${cas.authn.jdbc.query[0].passwordEncoder.type}
cas.authn.pm.jdbc.passwordEncoder.characterEncoding=${cas.authn.jdbc.query[0].passwordEncoder.characterEncoding}
cas.authn.pm.jdbc.passwordEncoder.encodingAlgorithm=${cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm}
cas.authn.pm.jdbc.passwordEncoder.secret=${cas.authn.jdbc.query[0].passwordEncoder.secret}
#預設是false,不會提交update語句
cas.authn.pm.jdbc.autocommit=true

#是否開啟問題回答
cas.authn.pm.reset.securityQuestionsEnabled=false
#密碼管理 結束

################################################
cas.serviceRegistry.watcherEnabled=true
cas.serviceRegistry.repeatInterval=120000
cas.serviceRegistry.startDelay=15000
#開啟識別json檔案,預設false
cas.serviceRegistry.initFromJson=true
#設定配置的服務,一直都有,不會給清除掉 , 第一次使用,需要配置為 create-drop
#create-drop 重啟cas服務的時候,就會給幹掉
#create  沒有表就建立,有就不建立
#none 一直都有
#update 更新
cas.serviceRegistry.jpa.ddlAuto=update

#配置將service配置到資料庫中
cas.authn.jdbc.query[0].healthQuery=SELECT 1
cas.serviceRegistry.jpa.isolateInternalQueries=false
cas.serviceRegistry.jpa.url=${cas.authn.jdbc.query[0].url}
cas.serviceRegistry.jpa.user=${cas.authn.jdbc.query[0].user}
cas.serviceRegistry.jpa.password=${cas.authn.jdbc.query[0].password}
#這個必須是org.hibernate.dialect.MySQL5Dialect ,我就是這個問題導致表建立失敗
cas.serviceRegistry.jpa.dialect=org.hibernate.dialect.MySQL5Dialect
cas.serviceRegistry.jpa.driverClass=${cas.authn.jdbc.query[0].driverClass}
cas.serviceRegistry.jpa.leakThreshold=${cas.authn.jdbc.query[0].leakThreshold}
cas.serviceRegistry.jpa.batchSize=1
cas.serviceRegistry.jpa.failFast=true
# cas.serviceRegistry.jpa.defaultCatalog=
# cas.serviceRegistry.jpa.defaultSchema=

cas.serviceRegistry.jpa.autocommit=true
cas.serviceRegistry.jpa.idleTimeout=5000

# cas.serviceRegistry.jpa.pool.suspension=false
# cas.serviceRegistry.jpa.pool.minSize=6
# cas.serviceRegistry.jpa.pool.maxSize=18
# cas.serviceRegistry.jpa.pool.maxIdleTime=1000
# cas.serviceRegistry.jpa.pool.maxWait=2000

#配置結束
################################################

pom.xml完整依賴

<?xml version="1.0" encoding="UTF-8"?>
<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.apereo.cas</groupId>
    <artifactId>cas-server</artifactId>
    <packaging>war</packaging>
    <version>1.0</version>

    <build>
        <plugins>
            <plugin>
                <groupId>com.rimerosolutions.maven.plugins</groupId>
                <artifactId>wrapper-maven-plugin</artifactId>
                <version>0.0.4</version>
                <configuration>
                    <verifyDownload>true</verifyDownload>
                    <checksumAlgorithm>MD5</checksumAlgorithm>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${springboot.version}</version>
                <configuration>
                    <mainClass>${mainClassName}</mainClass>
                    <addResources>true</addResources>
                    <executable>${isExecutable}</executable>
                    <layout>WAR</layout>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <!-- package application to ROOT.war -->
                    <warName>ROOT</warName>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                    <recompressZippedFiles>false</recompressZippedFiles>
                    <archive>
                        <compress>false</compress>
                        <manifestFile>${manifestFileToUse}</manifestFile>
                    </archive>
                    <overlays>
                        <overlay>
                            <groupId>org.apereo.cas</groupId>
                            <artifactId>cas-server-webapp${app.server}</artifactId>
                        </overlay>
                    </overlays>
                    <!-- 去掉預設的json配置檔案 -->
                    <dependentWarExcludes>
                        **/services/*.json
                    </dependentWarExcludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
            </plugin>
        </plugins>
        <finalName>cas</finalName>
    </build>

    <dependencies>
      <dependency>
            <groupId>org.apereo.cas</groupId>
            <artifactId>cas-server-webapp${app.server}</artifactId>
            <version>${cas.version}</version>
            <type>war</type>
            <scope>system</scope>
            <optional>true</optional>
            <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/cas-server-webapp-tomcat-${cas.version}.war</systemPath>
        </dependency>

        <!-- 資料庫驅動 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.21</version>
        </dependency> 

        <!--jdbc認證需要新增的,這個是cas的依賴包-->
        <dependency>
            <groupId>org.apereo.cas</groupId>
            <artifactId>cas-server-support-jdbc</artifactId>
            <version>${cas.version}</version>
        </dependency>

        <!--開啟cas server的rest支援-->
         <dependency>
             <groupId>org.apereo.cas</groupId>
             <artifactId>cas-server-support-rest</artifactId>
             <version>${cas.version}</version>
         </dependency>

        <!-- 開啟oauth支援 -->
        <dependency>
          <groupId>org.apereo.cas</groupId>
          <artifactId>cas-server-support-oauth-webflow</artifactId>
          <version>${cas.version}</version>
        </dependency>
        <!-- 新增將service儲存到資料庫中 -->  
        <dependency>
            <groupId>org.apereo.cas</groupId>
            <artifactId>cas-server-support-jpa-service-registry</artifactId>
            <version>${cas.version}</version>
            <scope>system</scope>
          <optional>true</optional>
          <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/cas-server-support-jpa-service-registry-5.2.2.jar</systemPath>
        </dependency>

        <!-- 新增郵箱的支援 -->
        <dependency>
          <groupId>org.apereo.cas</groupId>
          <artifactId>cas-server-support-pm-jdbc-5.2.2</artifactId>
          <version>${cas.version}</version>
          <scope>system</scope>
          <optional>true</optional>
          <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/cas-server-support-pm-jdbc-5.2.2.jar</systemPath>
        </dependency> 
    </dependencies>

    <properties>
        <cas.version>5.2.2</cas.version>
        <springboot.version>1.5.8.RELEASE</springboot.version>
        <!-- app.server could be -jetty, -undertow, -tomcat, or blank if you plan to provide appserver -->
        <app.server>-tomcat</app.server> 

        <mainClassName>org.springframework.boot.loader.WarLauncher</mainClassName>
        <isExecutable>false</isExecutable>
        <manifestFileToUse>${project.build.directory}/war/work/org.apereo.cas/cas-server-webapp${app.server}/META-INF/MANIFEST.MF</manifestFileToUse>

        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <repositories>
        <repository>
          <id>aliyunmaven</id>
          <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        </repository>

        <repository>
            <id>sonatype-releases</id>
            <url>http://oss.sonatype.org/content/repositories/releases/</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
        <repository>
            <id>sonatype-snapshots</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <releases>
                <enabled>false</enabled>
            </releases>
        </repository>
        <repository>
            <id>shibboleth-releases</id>
            <url>https://build.shibboleth.net/nexus/content/repositories/releases</url>
        </repository>
    </repositories>

    <profiles>
        <profile>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <id>exec</id>
            <properties>
                <mainClassName>org.apereo.cas.web.CasWebApplication</mainClassName>
                <isExecutable>true</isExecutable>
                <manifestFileToUse></manifestFileToUse>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>com.soebes.maven.plugins</groupId>
                        <artifactId>echo-maven-plugin</artifactId>
                        <version>0.3.0</version>
                        <executions>
                            <execution>
                                <phase>prepare-package</phase>
                                <goals>
                                    <goal>echo</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <echos>
                            <echo>Executable profile to make the generated CAS web application executable.</echo></echos>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <id>pgp</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>com.github.s4u.plugins</groupId>
                        <artifactId>pgpverify-maven-plugin</artifactId>
                        <version>1.1.0</version>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <pgpKeyServer>hkp://pool.sks-keyservers.net</pgpKeyServer>
                            <pgpKeysCachePath>${settings.localRepository}/pgpkeys-cache</pgpKeysCachePath>
                            <scope>test</scope>
                            <verifyPomFiles>true</verifyPomFiles>
                            <failNoSignature>false</failNoSignature>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>

常見問題

1、Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table ‘cas.regexregisteredservice’ doesn’t exist

這裡寫圖片描述

我後來發現,我的這個我問題,是由於這個配置,導致的,我之前配置的是org.hibernate.dialect.MySQLDialect ,需要改成org.hibernate.dialect.MySQL5Dialect,才可以自動生成表資料。

#這個必須是org.hibernate.dialect.MySQL5Dialect ,我就是這個問題導致表建立失敗
cas.serviceRegistry.jpa.dialect=org.hibernate.dialect.MySQL5Dialect

2、重啟服務 ,service丟失

導致這個問題的原因是,cas.serviceRegistry.jpa.ddlAuto的配置中,配置成了create-drop,重啟服務後,就導致資料庫配置的服務全部丟失了。

#設定配置的服務,一直都有,不會給清除掉 , 第一次使用,需要配置為 create-drop
#create-drop 重啟cas服務的時候,就會給幹掉
#create  沒有表就建立,有就不建立
#none 一直都有
#update 更新
cas.serviceRegistry.jpa.ddlAuto=update

參考文章

相關推薦

Cas5.2儲存Service資訊資料庫-yellowcong

剛剛開始的時候,我們儲存service是通過json的方式,後來發現,這種方式不方便管理,每次需要新增後,重啟伺服器,這種做法不咋好,所以需要有一個有效的方式,通過將資訊儲存到資料庫中,這樣就就可以搞定這個問題了。1、在pom.xml中,新增cas-ser

android儲存篇_SQLite資料庫_讓你徹底學會SQLite的使用

SQLite最大的特點是你可以把各種型別的資料儲存到任何欄位中,而不用關心欄位宣告的資料型別是什麼。例如:可以在Integer型別的欄位中存放字串,或者在布林型欄位中存放浮點數,或者在字元型欄位中存放日期型值。 但有一種情況例外:定義為INTEGER PRIMARY KEY的

【跟我學oracle18c】第四十九天:Database 2 Day + Performance Tuning Guide: 2.1使用自動工作負載儲存庫收集資料庫統計資訊(AWR,ASH)

2.1 Gathering Database Statistics Using the Automatic Workload Repository 資料庫統計資訊提供關於資料庫上的負載型別以及資料庫使用的內部和外部資源的資訊。要使用ADDM準確診斷資料庫的效能問題,必須提供統計資訊。

資料庫2——庫的操作

1.資料庫的建立 語法: create database [if no exists] db_name [create_specitification[, create_specification] create_specification: [default]character set c

Spring Cloud Gateway 資料庫儲存路由資訊的擴充套件方案

動態路由背景 ​ 無論你在使用Zuul還是Spring Cloud Gateway 的時候,官方文件提供的方案總是基於配置檔案配置的方式 例如: # zuul 的配置形式 routes: pig-auth: path: /auth/** serviceId: pi

Android四大元件(2)(Service)

一、Service是android的四大元件,於activity最相似,於activity的區別在於,service一直執行在後臺,它沒有介面,所以絕不可能跑到前臺,一旦service被啟動起來,它就有它自己的額生命週期。service是四大元件,也是需要到androidManifest.xml檔案

Learning-MySQL【2】:MySQL儲存引擎及資料庫的操作管理

一、儲存引擎 儲存引擎實際上就是如何儲存資料、如何為儲存的資料建立索引和如何更新、查詢資料。儲存引擎也可以稱為表型別。 MySQL提供了外掛式(pluggable)的儲存引擎,儲存引擎是基於表的。同一個資料庫,不同的表,儲存引擎可以不同。甚至,同一個資料庫表在不同的場合可以應用不同的儲存引擎。 檢視當前

Linux錯誤記錄 Failed to establish a new connection: [Errno -2] Name or service not known',))

當你在linux下呼叫介面時,遇到如下問題時: 不要緊張 因為這個可能是你的電腦沒連上網導致的 所以,你可以先ping一下,檢測你的電腦是否可以上網: ping qq.com 如果出現這個: ping: qq.com: Name or service not known

用python寫:完成一個員工管理系統 要求儲存員工的工號、姓名、年齡、性別、工資 1、員工錄入 2、查詢員工資訊 3、修改員工資訊 4、刪除 5、根據工號檢視 6、退出

   完成一個員工管理系統    要求儲存員工的工號、姓名、年齡、性別、工資    1、員工錄入    2、查詢員工資訊    3、修改員工資訊    4、刪除  &nb

Linux知識點總結磁碟儲存 1.2 磁碟儲存結構和分割槽

磁碟儲存結構和分割槽 ①主引導扇區的結構 ②磁碟引導基本過程 ③為什麼Linux作業系統只有四個分割槽 ④為什麼一個擴充套件分割槽可以劃分成多個邏輯分割槽 ⑤如何對磁碟分割槽 ⑥新增硬碟步驟 ⑦生產壞境分割槽建議 ⑧Linux為什麼要分割槽和格式化

MySQL資料庫儲存過程

儲存過程(Stored Procedure):一組可程式設計的函式,是為了完成特定功能的SQL語句集,經編譯建立並儲存在資料庫中,使用者可通過指定儲存過程的名字並給定引數(需要時)來呼叫執行。 為什麼

《springsecurity原始碼分析》3.springsecurity原始碼分析如何儲存認證資訊Authentication並在請求之間共享。

通過身份認證之後,是如何儲存認證結果,並將認證結果在多個請求中共享的呢?   我猜肯定是放入session。  UsernamePasswordAuthenticationFilter 繼承AbstractAuthenticationProcessingFilter,

MySQL資料庫儲存過程與儲存函式

1 引言         儲存過程和儲存函式類似於面向物件程式設計語言中的方法,可以簡化程式碼,提高程式碼的重用性。本文主要介紹如何建立儲存過程和儲存函式,以及儲存過程與函式的使用、修改、刪除等操作。 2 儲存過程與儲存函式     MySQL中提供儲存過程與儲存

Android學習基礎知識九 — 資料儲存(持久化技術)使用LitePal操作資料庫

  上一節學習了使用SQLiteDatabase來操作SQLite資料庫的方法,接下來我們開始接觸第一個開源庫:LitePal。LitePal是一款開源的Android資料庫框架,它採用了物件關係對映(ORM)的模式,並將我們平時開發最常用到的一些資料庫功能進行了封裝,使得不用編寫一行SQL語句就可以完成各種

技術實現(2)資料庫備份恢復的設計與實現

APDPlat提供了web介面的資料庫備份與恢復,支援手工操作和定時排程,可下載備份檔案到本地,也可把備份檔案傳送到異地容錯,極大地簡化了資料庫的維護工作。 設計目標: 1、多資料庫支援 2、橫切關注點隔離 3、異地容錯 下面闡述具體的設計及實現: 1、為了支援多資料

MYSQL資料庫儲存引擎

與其他資料庫軟體不同,MYSQL資料庫軟體提供了一個名為儲存引擎的概念。儲存引擎是MYSQL資料庫管理系統的一個重要特徵,在具體開發時,為提高MYSQL資料庫管理系統的使用效率和靈活性,可以根據實際需要來選擇儲存引擎。儲存引擎指定了表的型別,即如何儲存和索引資料、是否支援事務

資料預處理抽取文字資訊2

摘要:大資料技術與我們日常生活越來越緊密,要做大資料,首要解決資料問題。原始資料存在大量不完整、不一致、有異常的資料,嚴重影響到資料建模的執行效率,甚至可能導致模型結果的偏差,因此要資料預處。資料預處理主要是將原始資料經過文字抽取、資料清理、資料整合、資料處理、資料變換、資料降維等處理後,不

【MYSQL筆記3】MYSQL過程式資料庫物件儲存過程的呼叫、刪除和修改

mysql從5.0版本開始支援儲存過程、儲存函式、觸發器和事件功能的實現。 我們以一本書中的例題為例:建立xscj資料庫的儲存過程,判斷兩個輸入的引數哪個更大。並呼叫該儲存過程。 (1)呼叫 首先,建立儲存過程(procedure),名為xscj.compar delimiter $$ crea

使用plsql操作oracle資料庫小技巧儲存使用者名稱和密碼

每次plsql連線資料庫,輸入使用者名稱密碼很煩,直接點選儲存好的使用者名稱密碼: 步驟: 1、點選plsql的preferneces首選項,進入首選項視窗, 2、找到oracle項,下面有logon history,登入歷史, 3、點選登入歷史項,找到fixed U

Python爬取網頁資訊並且儲存到MySQL資料庫

今天在執行一小Python爬取某網頁的資訊的時候,結果,報錯了,根據錯誤,應該是資料庫連線失敗,密碼有錯誤 檢查程式密碼應該沒錯呀,然後直接訪問資料庫,我的天,試了好多次,都快放棄自己了,昨晚明明成功的呀 然後開啟Navicat,檢視昨晚設定的連線屬性,沒錯呀,密碼就是