SSH初體驗系列--Hibernate--1--環境配置及demo

最近在學hibernate,常見的教程都是搭配mysql,因為公司本地電腦用的是pg,所以就嘗試著做個pg的小demo. 自己也是邊學邊寫,只當是加深印象.話不多說,直接開始;

一) 準備工作;

  1) 本地安裝postgresql ,這個不多說,自己去網上下載;

    注: 本次使用的為pg 9.4

  2)下載pg的jdbc Driver;

    網址: 可FQ的點此下載?,不能FQ的自己百度吧。

    說明一下,支持pg9.4的有4個版本,根據自己的jdk做選擇:

      ?JDBC3 Postgresql Driver, Version 9.3-1103?( < jdk1.6)

      ?JDBC4 Postgresql Driver, Version 9.4.1212?( = jdk1.6)

      ?JDBC41 Postgresql Driver, Version 9.4.1212?(= jdk1.7)

      ?JDBC42 Postgresql Driver, Version 9.4.1212?(= jdk1.8)

  3) 下載hibernate的jar包;

    網址:FQ下載?(文件還挺大,248M);既然是學習,那就直接上最新版本: 5.2.4.Final(2016-10-26)

    解壓后目錄:

        

    required目錄下的jar包是必須添加的( 比3.x版本的多了好多呀):

        

    意外發現在spatial目錄下已經包含有pg的驅動文件了,哈哈,考慮的果然周到:

        

二) 啟程;

  1) pg 創建一個用戶反饋表(feedback);

    orm框架連接數據庫都有兩種方式:code first和db first; db first 指提前建好數據庫表格,在code中寫好匹配的model類進行mapping,而code first指在代碼中配置好表格的相關字段信息,項目運行時,再由框架根據你的model類及配置,自動在數據庫執行表格的創建及修改操作;

    如果你用db first的方式,可以用類似如下的sql語句在pg提前創建表格:

create table feedback
(id serial not null primary key,//serial 相當于mysql中的int auto_increment,實現的是自增長效果username varchar(45) not null,content varchar(200) not null,sendtime timestamp not null
)

?  2)創建數據表Feedback對應的持久化類Feedback, 及持久化類Feedback對應的映射文件Feedback.hbm.xml。需要注意的是,該映射文件與對應的持久化類應該在同一目錄下。關鍵代碼如下:

/*** Created by c-yangx on 11/16/2016.*/
public class Feedback {private Integer id;private String username;private String content;private Timestamp sendTime;public Integer getId() { return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public Timestamp getSendTime() {return sendTime;}public void setSendTime(Timestamp sendTime) {this.sendTime = sendTime;}}
Feedback.java
<?xml version="1.0"?>
<!--~ Hibernate, Relational Persistence for Idiomatic Java~~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.-->
<!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="models"><class name="models.Feedback" table="feedback" catalog="hbstudy"><id name="id" column="id" type="java.lang.Integer"><generator class="increment"></generator></id><property name="username" type="java.lang.String"><column name="username" length="45" not-null="true"><comment>反饋人</comment></column></property><property name="content" type="java.lang.String"><column name="content" length="200" not-null="true"><comment>反饋內容</comment></column></property><property name="sendTime" type="java.sql.Timestamp"><column name="sendTime" length="19" not-null="false"><comment>反饋時間</comment></column></property></class>
</hibernate-mapping>
Feedback.hbm.xml

  3) 創建Hibernate的主配置文件src/hibernate.cfg.xml,該文件中存放著 數據庫連接驅動程序類、登陸數據庫的用戶名/密碼、映射實體類配置文件的位置...etc.

    Hibernate在初始化時,會自動在classes路徑下尋找該主配置文件,并且讀取配置信息,用于后期的數據庫操作;

    那么問題就來了,hinernate.cfg.xml的格式是什么呢?不要怕,你能想到的,官方也都考慮到了,直接在文件路徑下搜索,ctrl+C=>ctrl+V ?就是這么簡單;

    

    打開文件如下,自己修改配置:

<?xml version='1.0' encoding='UTF-8'?>
<!--
~ Hibernate, Relational Persistence for Idiomatic Java
~
~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
-->
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property><property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property><property name="hibernate.connection.username">sa</property><property name="hibernate.connection.password"></property><property name="hibernate.connection.url">jdbc:hsqldb:.</property><property name="hibernate.cache.use_query_cache">true</property><property name="hibernate.cache.region_prefix">hibernate.test</property><property name="hibernate.jdbc.use_streams_for_binary">true</property><property name="hibernate.jdbc.batch_size">0</property><property name="hibernate.max_fetch_depth">3</property><!-- 是否自動創建數據庫表  他主要有一下幾個值:validate:當sessionFactory創建時,自動驗證或者schema定義導入數據庫。  create:每次啟動都drop掉原來的schema,創建新的。  create-drop:當sessionFactory明確關閉時,drop掉schema。update(常用):如果沒有schema就創建,有就更新。 --><!--此處配置來實現code first--><property name="hibernate.hbm2ddl.auto">create-drop</property><property name="hibernate.generate_statistics">true</property><property name="hibernate.cache.region.factory_class">org.hibernate.testing.cache.CachingRegionFactory</property><mapping class="org.hibernate.jpa.test.Item"/><mapping class="org.hibernate.jpa.test.Cat"/><mapping class="org.hibernate.jpa.test.Kitten"/><mapping class="org.hibernate.jpa.test.Distributor"/><class-cache class="org.hibernate.jpa.test.Item" usage="read-write"/><collection-cache collection="org.hibernate.jpa.test.Item.distributors" usage="read-write" region="RegionName"/></session-factory>
</hibernate-configuration>

?  4)編寫HibernateUtil.java,用于構建SessionFactory

package utils;import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;/*** Created by c-yangx on 11/16/2016.*/
public class HibernateUtil {static SessionFactory sessionFactory;//Init Hibernatestatic{try{Configuration config=new Configuration().configure();sessionFactory=config.buildSessionFactory();}catch(Exception e){String msg=e.getMessage();e.printStackTrace();System.out.println(msg);}}//Start Sessionpublic static Session openSession(){return sessionFactory.openSession();}
}
HibernateUtil.java

    數據庫Feedback表的操作類FeedbackDaoImpl及接口IFeedbackDao定義:

package IDao;import models.Feedback;/*** Created by c-yangx on 11/16/2016.*/
public interface IFeedbackDao {void save(Feedback item);
}
IFeedbackDao
package dao;import IDao.IFeedbackDao;
import models.Feedback;
import org.hibernate.Session;
import org.hibernate.Transaction;
import utils.HibernateUtil;/*** Created by c-yangx on 11/16/2016.*/
public class FeedbackDaoImpl implements IFeedbackDao {@Overridepublic void save(Feedback item) {Session session=null;Transaction tx=null;try{session= HibernateUtil.openSession();tx=session.beginTransaction();session.save(item);tx.commit();}catch(Exception e){tx.rollback();e.printStackTrace();throw new RuntimeException(e);}finally {session.close();}}
}
FeedbackDaoImpl.java

  5)最后寫一個測試類Test

import dao.FeedbackDaoImpl;
import models.Feedback;
import java.sql.Timestamp;/*** Created by c-yangx on 11/16/2016.*/
public class Test {@org.junit.Testpublic void testSave(){Feedback newItem=new Feedback();newItem.setUsername("Andrew");newItem.setContent("test content one");newItem.setSendTime(new Timestamp(System.currentTimeMillis()));FeedbackDaoImpl feedbackDao=new FeedbackDaoImpl();feedbackDao.save(newItem);}
}
Test

三)路途坎坷;

  項目啟動運行,遇到一些bug,一起做個記錄:

  a)Error msg如下; ?是配置的密碼有誤,干脆給數據庫加了一個新的role和密碼

org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:267)at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:231)at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210)at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:51)at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94)at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:240)at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210)at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes(MetadataBuildingProcess.java:352)at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:111)at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:83)at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:418)at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87)at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:691)at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:726)at utils.HibernateUtil.<clinit>(HibernateUtil.java:17)at dao.FeedbackDaoImpl.save(FeedbackDaoImpl.java:18)at Test.testSave(Test.java:19)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)at org.junit.runners.ParentRunner.run(ParentRunner.java:309)at org.junit.runner.JUnitCore.run(JUnitCore.java:160)at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:117)at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42)at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:262)at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:84)
Caused by: org.hibernate.exception.JDBCConnectionException: Error calling Driver#connectat org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator$1$1.convert(BasicConnectionCreator.java:105)at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.convertSqlException(BasicConnectionCreator.java:123)at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:41)at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:58)at org.hibernate.engine.jdbc.connections.internal.PooledConnections.addConnections(PooledConnections.java:123)at org.hibernate.engine.jdbc.connections.internal.PooledConnections.<init>(PooledConnections.java:42)at org.hibernate.engine.jdbc.connections.internal.PooledConnections.<init>(PooledConnections.java:20)at org.hibernate.engine.jdbc.connections.internal.PooledConnections$Builder.build(PooledConnections.java:161)at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildPool(DriverManagerConnectionProviderImpl.java:109)at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:72)at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94)at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:240)at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210)at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.buildJdbcConnectionAccess(JdbcEnvironmentInitiator.java:145)at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:66)at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35)at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:88)at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:257)... 38 more
Caused by: org.postgresql.util.PSQLException: FATAL: password authentication failed for user "postgres"at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:443)at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:217)at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:52)at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:216)at org.postgresql.Driver.makeConnection(Driver.java:404)at org.postgresql.Driver.connect(Driver.java:272)at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:38)... 53 more

   b)添加賬號之后,又遇到新的Bug,原來是忘了給賬號配置數據庫權限了,在pg端配置一下就ok了

org.hibernate.exception.SQLGrammarException: could not extract ResultSetat org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:106)at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:111)at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:97)at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:79)at org.hibernate.id.IncrementGenerator.initializePreviousValueHolder(IncrementGenerator.java:113)at org.hibernate.id.IncrementGenerator.generate(IncrementGenerator.java:52)at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:105)at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:192)at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:38)at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:177)at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:32)at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:73)at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:674)at org.hibernate.internal.SessionImpl.save(SessionImpl.java:666)at org.hibernate.internal.SessionImpl.save(SessionImpl.java:661)at dao.FeedbackDaoImpl.save(FeedbackDaoImpl.java:20)at Test.testSave(Test.java:18)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42)at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:262)at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:84)
Caused by: org.postgresql.util.PSQLException: ERROR: permission denied for relation feedback... 35 more

四) 抵達;

  運行Test.java中的testSave方法,執行成功,再查看下數據庫,數據也已成功插入;

  最后放一個項目結構圖:(說明一下,因為后續打算學習全部的ssh,所以用了個web項目)

    

?

后言:

  樓主也是剛開始學習java中的ssh框架,所以后面也會繼續寫一些hibernate的crud,Spring及struct2的文章記錄自己的學習過程,并在最后整理成一個小系列.如果感興趣,歡迎大家關注;

 大家有覺得可以優化的地方,也歡迎指正.

?

      

(...未完待續)

?

?本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利;

本文出自:博客園--別問是誰

轉載于:https://www.cnblogs.com/Andrew-XinFei/p/6066881.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253975.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253975.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253975.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Qt學習:QAction系列詳解

一、QAction類詳解 【詳細描述】 QAction類提供了抽象的用戶界面action&#xff0c;這些action可以被放置在窗口部件中。 應用程序可以通過菜單&#xff0c;工具欄按鈕以及鍵盤快捷鍵來調用通用的命令。由于用戶期望每個命令都能以相同的方式執行&#xff0c;而不管命令所使用的…

H.264優秀特征

一、主要特性 1、H.264/AVC相對以前的編碼方法&#xff0c;以MPEG-2為例&#xff0c;在圖像內容預測方面提高編碼效率&#xff0c;改善圖像質量的主要特點如下&#xff1a; ● 可變塊大小運動補償&#xff1a; 選擇運動補償大小和形狀比以前的標準更靈活&#xff0c;最小的…

Linux 文件系統 EXT4 的前世今生

在先前關于Linux文件系統的文章中&#xff0c;我寫了一份說明書去介紹Linux文件系統&#xff0c;里面有一些高級的概念&#xff0c;比如說&#xff0c;一切都是文件。我很想去深入地討論更多EXT文件系統的特性的信息。所以&#xff0c;首先讓我們來回答這個問題&#xff1a;什么…

windows 添加開始菜單

C:\Users\用戶名&#xff08;為你設置的電腦名稱&#xff09;\AppData\Roaming\Microsoft\Windows\Start Menu C:\ProgramData\Microsoft\Windows\Start Menu 注&#xff1a;默認狀態下AppData和ProgramData文件夾為隱藏狀態&#xff0c;所以要查看需要先顯示隱藏的文件。 具體…

awesome-go:很全的go語言資源合集

awesome-go:一個很全的go語言框架&#xff0c;庫&#xff0c;軟件合集 前面發過關于awsone-python, awsone django&#xff0c; flask。最近在學習golang&#xff0c;所以找到awsone-go 非常贊的go語言 Audio & 音樂類安全認證 & OAuthCUI數據庫數據庫驅動日期時間Emai…

zabbix監控系列(5)之通過trap模式監控網絡設備

轉載于:https://www.cnblogs.com/liaojiafa/p/7216749.html

struts2框架下的一個簡單的ajax例子

舉個例子 jsp頁面&#xff1a; <% page language"java" import"java.util.*" pageEncoding"utf-8"%> <% String path request.getContextPath(); String basePath request.getScheme()"://"request.getServerName()":…

C語言的指針初始化特別注意一點

void func2(int *value) { *value 2; /// value為空指針&#xff0c;不能被取值&#xff0c;所以*value是錯誤的 } void func1() { int *p 0;//此處相當于PNULL func2(p); } / void func2(int *value) { *value 2; /// 正確} void func1() { int a0; int *p &…

小程序—九宮格心形拼圖

說明 前幾天在朋友圈看到好幾次這種圖片。 這種圖片&#xff0c;是用九張圖片拼成的一個心形。 感覺很有趣&#xff0c;就上網查了查怎么做&#xff0c;大部分的說法就是用美圖秀秀的拼圖功能來做&#xff0c; 在微信小程序中也有專門做心形拼圖的小程序&#xff0c;我都試了試…

第二部分:志愿錄取標準

第二部分&#xff1a;志愿錄取標準 零、概況一、傳統志愿錄取過程二、平行志愿錄取過程三、17年志愿錄取過程 零、概況自1977年&#xff0c;恢復高考以來&#xff0c;高考錄取標準&#xff0c;作為公平線&#xff0c;都是相當透明的。這部分分享&#xff0c;以錄取標準&#xf…

100. Same Tree

Given two binary trees, write a function to check if they are equal or not. Two binary trees are considered equal if they are structurally identical and the nodes have the same value. 遞歸遍歷左子樹和右子樹 /*** Definition for a binary tree node.* struct T…

關于RTP時間戳及多媒體通信同步的問題/H264關于RTP協議的實現

http://www.rosoo.net/a/201101/10776.html http://hi.baidu.com/fairygardenjoy/blog/item/e56c5cca95829e37b600c88e.html H264關于RTP協議的實現:http://www.rosoo.net/a/201108/14896.html RTP協議包頭的格式&#xff1a; 10~16 Bit為PT域&#xff0c;指的就是負載類型…

程序員懂點經濟學-股票投資

2019獨角獸企業重金招聘Python工程師標準>>> ▍寫在前面 前面有文章 關于程序員如何賺點小錢 講過 合理的投資理財&#xff0c;可以了解一下. 再次建議&#xff0c;不要將全身家當投入股市&#xff0c;建議投入10~30%就好了. (不要拿輸不起的錢來炒股&#xff0c;比…

徹底弄懂響應式設計中的em和rem

前一陣子在響應式開發中遇到了em和rem的問題&#xff0c;也上網搜過一些文章&#xff0c;篇幅很長&#xff0c;也沒有仔細看&#xff0c;今天來總結一下。 rem是指&#xff1a;根元素&#xff08;root element&#xff0c;html&#xff09;的字體大小&#xff0c; em是指&#…

JAVA字符串

字符串 1. 字符串 1.1 字符串概述和特點 java.lang.String類代表字符串。 API當中說&#xff1a;Java 程序中的所有字符串字面值&#xff08;如 "abc" &#xff09;都作為此類的實例實現。 其實就是說&#xff1a;程序當中所有的雙引號字符串&#xff0c;都是String類…

21分鐘 MySQL 入門教程

轉自 21分鐘 MySQL 入門教程 一、MySQL的相關概念介紹二、Windows下MySQL的配置配置步驟MySQL服務的啟動、停止與卸載三、MySQL腳本的基本組成四、MySQL中的數據類型五、使用MySQL數據庫登錄到MySQL創建一個數據庫選擇所要操作的數據庫創建數據庫表六、操作MySQL數據庫向表中插…

node-sass報錯解決方法

node-sass報錯解決方法 node-sass報錯解決方法 在Vue.js中&#xff0c;每一個vue文件都是一個組件&#xff0c;在.vue文件中可以將模板&#xff0c;腳本&#xff0c;樣式寫在一起&#xff0c;便于組織整個組件。在使用template&#xff0c;script時&#xff0c;編寫css樣式時&a…

微軟人工智能愿景:根植于研發 寄望于“對話”

過去25年來&#xff0c;微軟公司持續投入人工智能的發展愿景。現在&#xff0c;借助全新發布的聊天機器人Zo、Cortana Decices SDK和智能套件、以及擴展智能工具&#xff0c;這一愿景即將成為現實。12月13日&#xff0c;在舊金山的一次小聚會上&#xff0c;微軟全球執行副總裁、…

H264 TS/ES

http://blog.csdn.net/heanyu/article/details/6229724