知识点1--认识SSM框架并准备项目

SSM框架,分为Spring、Spring-MVC、Mybatis,是一个比较老的Web开发框架,不过现在基本不用了,都是spring boot,之前还有很少一部分用,但是2021年低开始基本上绝大部分厂商都更新换代不用SSM了,此外它没有当下流行框架使用方便,不过它也有一点好处,也是作为一个开发要记住的点,所有封装的框架使用越方便,所能实现的业务就越浅显,SSM同样遵循这个道理,不过spring boot开展的已经很健壮了,在配置上如果你真的有需要也是可以搞的。

言归正传,我们开始学习SSM,本篇先准备项目。

第一步:在idea中创建一个maven项目

在这里插入图片描述
知识点1--认识SSM框架并准备项目_第1张图片
知识点1--认识SSM框架并准备项目_第2张图片
修改完项目的名字和组织信息后就ok

第二步:在maven中添加web开发环境,点击File–>Project Structure…–>modules

知识点1--认识SSM框架并准备项目_第3张图片
点击 “+” 号添加web

知识点1--认识SSM框架并准备项目_第4张图片
在弹出的页面中,你要注意你的web虚拟路径的物理路径映射,就是webapp的文件夹在哪里创建,一般改成项目主路径下,比如我的是D:\developtool\IntelliJ IDEA 2021.2.2\iedaobj\cms\src\main\webapp\WEB-INF\web.xml,最好是改一下直接输入选择的话选不到
知识点1--认识SSM框架并准备项目_第5张图片
随后下面的Web Resource也要改,就是前端静态资源存放路径,也是和上面的一样改到主路径下,也就是webapp这一层路径

知识点1--认识SSM框架并准备项目_第6张图片
点击create
知识点1--认识SSM框架并准备项目_第7张图片
在跳转后的页面点击OK
知识点1--认识SSM框架并准备项目_第8张图片
此时原来的maven项目就可以变成一个普通的web项目
知识点1--认识SSM框架并准备项目_第9张图片
第三步:配置tomcat服务器,如果你已经有了就可以跳过,点击RUN–>Edit …
知识点1--认识SSM框架并准备项目_第10张图片
知识点1--认识SSM框架并准备项目_第11张图片
知识点1--认识SSM框架并准备项目_第12张图片
知识点1--认识SSM框架并准备项目_第13张图片
知识点1--认识SSM框架并准备项目_第14张图片
选择你的tomcat路径,之后点击OK
知识点1--认识SSM框架并准备项目_第15张图片
点击OK后,回到tomcat配置主界面,点击Deployment
知识点1--认识SSM框架并准备项目_第16张图片
点击“+”选择Artifact
知识点1--认识SSM框架并准备项目_第17张图片
会自动添加一个默认的web热启动,把下面的comtext改成 “/ “,这个就是你的虚拟根路径,后面运行项目访问的时候的请求头
知识点1--认识SSM框架并准备项目_第18张图片
点击最下面的OK保存退出tomcat的配置界面,后面使用的时候点击右上角的启动就行
知识点1--认识SSM框架并准备项目_第19张图片
接下来我们要看一下项目当前的字符集
知识点1--认识SSM框架并准备项目_第20张图片
知识点1--认识SSM框架并准备项目_第21张图片
你要确保上面几个都是UTF-8,随后打开tomcat安装路径下的conf文件夹下的配置文件
知识点1--认识SSM框架并准备项目_第22张图片
在这个文件里面,把下面两行注释掉
知识点1--认识SSM框架并准备项目_第23张图片
到此tomcat就配置完了

第四步:添加pom依赖,这里声明一下我这个配置包含的东西比较多,大家按照需要拷贝就好,有注释的,也可以全部添加毕竟后面会用,依赖下载的时候maven最好用3.3.9的


<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.0modelVersion>

    <groupId>com.wygroupId>
    <artifactId>cmsartifactId>
    <version>1.0version>
    <packaging>warpackaging>

    
    
    <properties>
        <maven.compiler.source>8maven.compiler.source>
        <maven.compiler.target>8maven.compiler.target>
        <spring.version>5.1.5.RELEASEspring.version>
        <mybatis.version>3.4.2mybatis.version>
        <log4j.version>1.2.17log4j.version>
        <druid.version>1.0.9druid.version>
        <mysql.version>5.1.6mysql.version>
        <mybatis.spring.version>1.3.0mybatis.spring.version>
        <jackson.version>2.9.1jackson.version>
        <validator.version>5.1.0.Finalvalidator.version>
        <poi.version>3.9poi.version>
        <jstl.version>1.2jstl.version>
        <servlet-api.version>2.5servlet-api.version>
        <jsp-api.version>2.0jsp-api.version>
        <commons-lang3.version>3.3.2commons-lang3.version>
        <commons-io.version>1.3.1commons-io.version>
        <commons-net.version>3.3commons-net.version>
        <commons-fileupload.version>1.3.1commons-fileupload.version>
        <junit-version>4.12junit-version>
        
        <aspectj-version>1.8.0aspectj-version>
        
        <pagehelper-version>5.1.2pagehelper-version>
    properties>


    
    <dependencies>

        
        <dependency>
            <groupId>javax.validationgroupId>
            <artifactId>validation-apiartifactId>
            <version>1.1.0.Finalversion>
        dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-coreartifactId>
            <version>2.8.3version>
        dependency>

        
        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-databindartifactId>
            <version>2.9.4version>
        dependency>

        
        <dependency>
            <groupId>org.apache.lucenegroupId>
            <artifactId>lucene-coreartifactId>
            <version>6.6.1version>
        dependency>
        <dependency>
            <groupId>com.janeluogroupId>
            <artifactId>ikanalyzerartifactId>
            <version>2012_u6version> 
            <exclusions>
                <exclusion>
                    <groupId>org.apache.lucenegroupId>
                    <artifactId>lucene-queriesartifactId>
                exclusion>
                <exclusion>
                    <groupId>org.apache.lucenegroupId>
                    <artifactId>lucene-queryparserartifactId>
                exclusion>
            exclusions>
        dependency>
        <dependency>
            <groupId>org.elasticsearchgroupId>
            <artifactId>elasticsearchartifactId>
            <version>5.6.8version>
        dependency>
        <dependency>
            <groupId>org.elasticsearch.clientgroupId>
            <artifactId>transportartifactId>
            <version>5.6.8version>
        dependency>
        <dependency>
            <groupId>org.springframework.datagroupId>
            <artifactId>spring-data-elasticsearchartifactId>
            <version>3.0.5.RELEASEversion>
        dependency>

        
        <dependency>
            <groupId>redis.clientsgroupId>
            <artifactId>jedisartifactId>
            <version>2.9.0version>
        dependency>
        <dependency>
            <groupId>org.springframework.datagroupId>
            <artifactId>spring-data-redisartifactId>
            <version>1.8.7.RELEASEversion>
            <exclusions>
                <exclusion>
                    <groupId>org.springframeworkgroupId>
                    <artifactId>spring-aopartifactId>
                exclusion>
            exclusions>
        dependency>

        
        <dependency>
            <groupId>org.springframework.kafkagroupId>
            <artifactId>spring-kafkaartifactId>
            <version>2.2.0.RELEASEversion>
        dependency>
        <dependency>
            <groupId>org.apache.kafkagroupId>
            <artifactId>kafka_2.10artifactId>
            <version>0.8.2.1version>
            <exclusions>
                <exclusion>
                    <artifactId>jmxriartifactId>
                    <groupId>com.sun.jmxgroupId>
                exclusion>
                <exclusion>
                    <artifactId>jmsartifactId>
                    <groupId>javax.jmsgroupId>
                exclusion>
                <exclusion>
                    <artifactId>jmxtoolsartifactId>
                    <groupId>com.sun.jdmkgroupId>
                exclusion>
            exclusions>
        dependency>
        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>fastjsonartifactId>
            <version>1.2.7version>
        dependency>

        
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-coreartifactId>
            <version>${spring.version}version>
            
            <scope>compilescope>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-contextartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-beansartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webmvcartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-jdbcartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-txartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-context-supportartifactId>
            <version>${spring.version}version>
        dependency>
        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatisartifactId>
            <version>${mybatis.version}version>
        dependency>
        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatis-springartifactId>
            <version>${mybatis.spring.version}version>
        dependency>
        
        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>druidartifactId>
            <version>${druid.version}version>
        dependency>
        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>${mysql.version}version>
            
            <scope>runtimescope>
        dependency>
        
        
        <dependency>
            <groupId>log4jgroupId>
            <artifactId>log4jartifactId>
            <version>${log4j.version}version>

        dependency>


        
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>${junit-version}version>
            
            <scope>testscope>
        dependency>
        
        <dependency>
            <groupId>commons-fileuploadgroupId>
            <artifactId>commons-fileuploadartifactId>
            <version>${commons-fileupload.version}version>
        dependency>
        <dependency>
            <groupId>commons-iogroupId>
            <artifactId>commons-ioartifactId>
            <version>${commons-io.version}version>
        dependency>
        <dependency>
            <groupId>org.apache.poigroupId>
            <artifactId>poiartifactId>
            <version>${poi.version}version>
        dependency>
        
        <dependency>
            <groupId>jstlgroupId>
            <artifactId>jstlartifactId>
            <version>${jstl.version}version>
        dependency>
        <dependency>
            <groupId>javax.servlet.jspgroupId>
            <artifactId>jsp-apiartifactId>
            <version>2.2version>
            <scope>providedscope>
        dependency>
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>servlet-apiartifactId>
            <version>${servlet-api.version}version>
            
            <scope>providedscope>
        dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.coregroupId>
            <artifactId>jackson-databindartifactId>
            <version>${jackson.version}version>
        dependency>


        
        <dependency>
            <groupId>org.apache.commonsgroupId>
            <artifactId>commons-lang3artifactId>
            <version>${commons-lang3.version}version>
        dependency>

        <dependency>
            <groupId>org.aspectjgroupId>
            <artifactId>aspectjweaverartifactId>
            <version>${aspectj-version}version>
        dependency>
        <dependency>
            <groupId>org.aspectjgroupId>
            <artifactId>aspectjrtartifactId>
            <version>${aspectj-version}version>
        dependency>
        <dependency>
            <groupId>org.hibernategroupId>
            <artifactId>hibernate-validatorartifactId>
            <version>${validator.version}version>
        dependency>

        
        <dependency>
            <groupId>com.github.pagehelpergroupId>
            <artifactId>pagehelperartifactId>
            <version>${pagehelper-version}version>
        dependency>

        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-testartifactId>
            <version>${spring.version}version>
        dependency>

        
        <dependency>
            <groupId>com.googlecode.json-simplegroupId>
            <artifactId>json-simpleartifactId>
            <version>1.1.1version>
        dependency>
        
        
        <dependency>
            <groupId>log4jgroupId>
            <artifactId>log4jartifactId>
            <version>${log4j.version}version>
        dependency>

        <dependency>
            <groupId>commons-logginggroupId>
            <artifactId>commons-loggingartifactId>
            <version>1.2version>
        dependency>

        <dependency>
            <groupId>com.google.code.gsongroupId>
            <artifactId>gsonartifactId>
            <version>2.8.5version>
        dependency>
    dependencies>

    
    <build>
        <plugins>
            
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-compiler-pluginartifactId>
                <version>3.5.1version>
                <configuration>
                    <source>1.8source>
                    <target>1.8target>
                    <encoding>UTF-8encoding>
                configuration>
            plugin>
        plugins>

		<resources>
            <resource>
                <directory>src/main/javadirectory>
                <includes>
                    <include>**/*.propertiesinclude>
                    <include>**/*.xmlinclude>
                includes>
                <filtering>falsefiltering>
            resource>

            <resource>
                <directory>src/main/resourcesdirectory>
                <includes>
                    <include>**/*.xmlinclude>
                    <include>**/*.propertiesinclude>
                includes>
                <filtering>falsefiltering>
            resource>
        resources>
        
    build>

project>

第五步:修改web.xml,我们要在其中加载Spring-MVC的配置文件,使得Web服务器加载Spring的框架内部的前段控制器–>DispatcherServlet,它的本质就是个原生的被Servlet注解的一个Controller,同时我们还要加载Spring的配置文件,用来启动Spring容器


<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <welcome-file-list>
        <welcome-file>index.htmlwelcome-file>
        <welcome-file>index.htmwelcome-file>
        <welcome-file>index.jspwelcome-file>
        <welcome-file>default.htmlwelcome-file>
        <welcome-file>default.htmwelcome-file>
        <welcome-file>default.jspwelcome-file>
    welcome-file-list>

    
    <servlet>
        <servlet-name>springMVCservlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
        
        <init-param>
            <param-name>contextConfigLocationparam-name>
            <param-value>classpath:springMVC.xmlparam-value>
        init-param>
    servlet>
    
    <servlet-mapping>
        <servlet-name>springMVCservlet-name>
        <url-pattern>*.dourl-pattern>
    servlet-mapping>

    
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
    listener>
    
    <context-param>
        <param-name>contextConfigLocationparam-name>
        <param-value>classpath:spring.xmlparam-value>
    context-param>
    
web-app>

第六步:在resource下准备springMVC.xml的配置文件,文件名要和web.xml里面的一样

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="
		http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context.xsd
		http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/mvc
	    http://www.springframework.org/schema/mvc/spring-mvc.xsd"
>
    <!-- 扫描controller -->
    <context:component-scan base-package="com.wy.controller"></context:component-scan>

    <!-- 启动前端注解驱动 -->
    <mvc:annotation-driven />

    <!-- 禁止拦截静态资源 -->
    <mvc:default-servlet-handler/>

    <!-- 视图解析图 ,这个可以先注释,它的作用就是自动拼接请求的公共部分,是的开发中可以只写不同的地方-->
    <bean
            class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 配置前缀 -->
        <property name="prefix" value="/WEB-INF/view/"></property>
        <!-- 配置后缀 -->
        <property name="suffix" value=".jsp"></property>
    </bean>

    <!-- 上传支持,如果你的开发中涉及到上传那么可以使用这个,这是spring框架提供的上传接收类,不过用的时候注意id和class是框架内部定死的 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 文件名的编码格式 -->
        <property name="defaultEncoding" value="UTF-8"/>
        <!--  上传文件的大小  10兆-->
        <property name="maxUploadSize" value="10485760"/>
        <!-- 单个文件上传的大小 -->
        <property name="maxUploadSizePerFile" value="1048576"/>
    </bean>

</beans>

之后是Spring的配置文件


<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:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">

    <context:component-scan base-package="com.wy">context:component-scan>


    
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql:///cms"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
    bean>

    
    <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
        
        <property name="dataSource" ref="dataSource"/>
        
        <property name="configLocation" value="classpath:mybatis.xml"/>
        
    bean>


    
    <bean class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactoryBean"/>
    bean>

    
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.wy.dao"/>
    bean>

    
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource">property>
    bean>

    
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        
        <tx:attributes>
            
            <tx:method name="find*" read-only="true" />
            <tx:method name="select*" read-only="true" />
            <tx:method name="get*" read-only="true" />
            <tx:method name="load*" read-only="true" />
            <tx:method name="list*" read-only="true" />
            
            <tx:method name="*" propagation="REQUIRED" />
        tx:attributes>
    tx:advice>

    
    <aop:config>
        
        <aop:pointcut
                expression="execution(* com.wy.service.*.*(..))" id="pointcut" />
        
        <aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut" />
    aop:config>

beans>

最后是准备Mybatis的配置文件


DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	
	<settings>
		<setting name="mapUnderscoreToCamelCase" value="true"/>
	settings>
	
	<plugins>
		<plugin interceptor="com.github.pagehelper.PageInterceptor">plugin>
	plugins>
configuration>

mybatis的配置文件相当简单,这是因为原本在其中配置的数据源和sql文件在spring中配置了。上面的配置项中,包名和数据库连接改成你自己的,其他的先不要动。

第七步:在spring的配置文件里面对应的数据库中运行如下sql脚本,初始化一些样例数据

/*
 Navicat Premium Data Transfer

 Source Server         : localhost
 Source Server Type    : MySQL
 Source Server Version : 50520
 Source Host           : localhost:3306
 Source Schema         : cms

 Target Server Type    : MySQL
 Target Server Version : 50520
 File Encoding         : 65001

 Date: 12/09/2022 21:33:33
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for cms_article
-- ----------------------------
DROP TABLE IF EXISTS `cms_article`;
CREATE TABLE `cms_article`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '标题',
  `content` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '文章内容',
  `picture` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '标题图片',
  `channel_id` int(11) NULL DEFAULT NULL COMMENT '所属栏目',
  `category_id` int(11) NULL DEFAULT NULL COMMENT '所属分类',
  `user_id` int(11) NULL DEFAULT NULL COMMENT '文章发布人',
  `hits` int(11) NULL DEFAULT 0,
  `hot` int(11) NULL DEFAULT 0,
  `status` int(11) NULL DEFAULT NULL COMMENT '0,刚发布,1审核通过,-1 审核未通过',
  `deleted` int(11) NULL DEFAULT NULL COMMENT '0:正常,1:删除',
  `created` datetime NULL DEFAULT NULL,
  `updated` datetime NULL DEFAULT NULL,
  `summary` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL,
  `content_type` int(11) NULL DEFAULT 0 COMMENT '文章类型: 1:html 2:image',
  `keywords` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `original` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `comment_num` int(11) NULL DEFAULT 0 COMMENT '评论数量',
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `FK_CMS_ARTI_REFERENCE_CMS_USER`(`user_id`) USING BTREE,
  INDEX `FK_CMS_ARTI_REFERENCE_CMS_CHAN`(`channel_id`) USING BTREE,
  INDEX `FK_CMS_ARTI_REFERENCE_CMS_CATE`(`category_id`) USING BTREE,
  CONSTRAINT `cms_article_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `cms_category` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `cms_article_ibfk_2` FOREIGN KEY (`channel_id`) REFERENCES `cms_channel` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `cms_article_ibfk_3` FOREIGN KEY (`user_id`) REFERENCES `cms_user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 197 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of cms_article
-- ----------------------------
INSERT INTO `cms_article` VALUES (16, '硅谷著名预言家表示,2045年人类将实现永生,50年内能实现复活', '

\n 人类一直以来都想实现长生,目前,硅谷有数十个公司在做事人类未来永生技术的研究,而谷歌首席科学家雷·库兹韦尔预言说:到了2029年,人类将开始正式走上永生之旅;到2045年,人类将正式实现永生!\n

\n

\n 雷·库兹韦尔是美国硅谷知名的未来学研究者,发明家,作家,谷歌的首席工程师。\n

\n
\n \"硅谷著名预言家表示,2045年人类将实现永生,50年内能实现复活\"\n
\n

\n 他曾发明了盲人阅读机、音乐合成器和语音识别系统。1988年,麻省理工学院提名他为“当年杰出发明家“。他曾获9项名誉博士学位,2次总统荣誉奖。同时也是一名成功的企业家,他用他的发明创办了自己的企业,开发出多项造福人类的高科技产品。\n

\n

\n 雷·库兹韦尔被比尔盖茨称为“我所知道的人工智能预测领域最牛的人”,据说他的预测准确率高达86%。\n

\n
\n \"硅谷著名预言家表示,2045年人类将实现永生,50年内能实现复活\"\n
\n

\n 他成功预测了苏联的解体、电脑战胜冠军棋手、数字助理(如Siri)的出现,虚拟和增强现实系统等,其中最为知名的是他曾预测到了上世纪90年代,全球互联网使用率会暴增,到了21世纪初,无线网络会被大范围使用。\n

\n

\n 还有就是他曾预言90年末电脑的发展将战胜棋王,1997年,“深蓝”战胜了棋王加里·卡斯帕罗夫。\n

\n

\n 库兹韦尔之所以作出这样的预言,是基于这样的判断:\n

\n
    \n
  • \n 人体即将可以植入纳米机器人,纳米机器人开始接管人类的免疫系统,把病原体,肿瘤等一系列的病变错误进行修复。\n
  • \n
  • \n 人体开始启动程序化,植入纳米程序芯片后开始由机器人编程,实现一系列的组织器官的修复,比如癌症还有心血管疾病的修复。\n
  • \n
  • \n 当肉体再也支撑不了现实的“摧残”,渐渐老化不能用的时候,只需要将记忆芯片取出来,借助人工智能技术,合成一个新的“大脑”。\n
  • \n
'
, '5be50724-5d1f-4670-9622-4cb889ffd832.jpg', 1, 1, 1, 0, 0, 0, 0, '2020-03-05 11:42:47', NULL, NULL, 0, NULL, NULL, 0); INSERT INTO `cms_article` VALUES (17, '硅谷著名预言家表示,2045年人类将实现永生,50年内能实现复活', '

\n 人类一直以来都想实现长生,目前,硅谷有数十个公司在做事人类未来永生技术的研究,而谷歌首席科学家雷·库兹韦尔预言说:到了2029年,人类将开始正式走上永生之旅;到2045年,人类将正式实现永生!\n

\n

\n 雷·库兹韦尔是美国硅谷知名的未来学研究者,发明家,作家,谷歌的首席工程师。\n

\n
\n \"硅谷著名预言家表示,2045年人类将实现永生,50年内能实现复活\"\n
\n

\n 他曾发明了盲人阅读机、音乐合成器和语音识别系统。1988年,麻省理工学院提名他为“当年杰出发明家“。他曾获9项名誉博士学位,2次总统荣誉奖。同时也是一名成功的企业家,他用他的发明创办了自己的企业,开发出多项造福人类的高科技产品。\n

\n

\n 雷·库兹韦尔被比尔盖茨称为“我所知道的人工智能预测领域最牛的人”,据说他的预测准确率高达86%。\n

\n
\n \"硅谷著名预言家表示,2045年人类将实现永生,50年内能实现复活\"\n
\n

\n 他成功预测了苏联的解体、电脑战胜冠军棋手、数字助理(如Siri)的出现,虚拟和增强现实系统等,其中最为知名的是他曾预测到了上世纪90年代,全球互联网使用率会暴增,到了21世纪初,无线网络会被大范围使用。\n

\n

\n 还有就是他曾预言90年末电脑的发展将战胜棋王,1997年,“深蓝”战胜了棋王加里·卡斯帕罗夫。\n

\n

\n 库兹韦尔之所以作出这样的预言,是基于这样的判断:\n

\n
    \n
  • \n 人体即将可以植入纳米机器人,纳米机器人开始接管人类的免疫系统,把病原体,肿瘤等一系列的病变错误进行修复。\n
  • \n
  • \n 人体开始启动程序化,植入纳米程序芯片后开始由机器人编程,实现一系列的组织器官的修复,比如癌症还有心血管疾病的修复。\n
  • \n
  • \n 当肉体再也支撑不了现实的“摧残”,渐渐老化不能用的时候,只需要将记忆芯片取出来,借助人工智能技术,合成一个新的“大脑”。\n
  • \n
'
, 'edf39005-61c4-44a8-8174-ea74ef0ce49b.jpg', 1, 2, 1, 0, 1, 0, 0, '2020-03-05 11:43:38', NULL, NULL, 0, NULL, NULL, 0); INSERT INTO `cms_article` VALUES (18, '硅谷著名预言家表示,2045年人类将实现永生,50年内能实现复活', '

\n 人类一直以来都想实现长生,目前,硅谷有数十个公司在做事人类未来永生技术的研究,而谷歌首席科学家雷·库兹韦尔预言说:到了2029年,人类将开始正式走上永生之旅;到2045年,人类将正式实现永生!\n

\n

\n 雷·库兹韦尔是美国硅谷知名的未来学研究者,发明家,作家,谷歌的首席工程师。\n

\n
\n \"硅谷著名预言家表示,2045年人类将实现永生,50年内能实现复活\"\n
\n

\n 他曾发明了盲人阅读机、音乐合成器和语音识别系统。1988年,麻省理工学院提名他为“当年杰出发明家“。他曾获9项名誉博士学位,2次总统荣誉奖。同时也是一名成功的企业家,他用他的发明创办了自己的企业,开发出多项造福人类的高科技产品。\n

\n

\n 雷·库兹韦尔被比尔盖茨称为“我所知道的人工智能预测领域最牛的人”,据说他的预测准确率高达86%。\n

\n
\n \"硅谷著名预言家表示,2045年人类将实现永生,50年内能实现复活\"\n
\n

\n 他成功预测了苏联的解体、电脑战胜冠军棋手、数字助理(如Siri)的出现,虚拟和增强现实系统等,其中最为知名的是他曾预测到了上世纪90年代,全球互联网使用率会暴增,到了21世纪初,无线网络会被大范围使用。\n

\n

\n 还有就是他曾预言90年末电脑的发展将战胜棋王,1997年,“深蓝”战胜了棋王加里·卡斯帕罗夫。\n

\n

\n 库兹韦尔之所以作出这样的预言,是基于这样的判断:\n

\n
    \n
  • \n 人体即将可以植入纳米机器人,纳米机器人开始接管人类的免疫系统,把病原体,肿瘤等一系列的病变错误进行修复。\n
  • \n
  • \n 人体开始启动程序化,植入纳米程序芯片后开始由机器人编程,实现一系列的组织器官的修复,比如癌症还有心血管疾病的修复。\n
  • \n
  • \n 当肉体再也支撑不了现实的“摧残”,渐渐老化不能用的时候,只需要将记忆芯片取出来,借助人工智能技术,合成一个新的“大脑”。\n
  • \n
'
, '643a762e-f4c7-491f-ba7a-463097747757.jpg', 1, 2, 1, 0, 1, 0, 0, '2020-03-05 11:43:40', NULL, NULL, 0, NULL, NULL, 0); INSERT INTO `cms_article` VALUES (19, '硅谷著名预言家表示,2045年人类将实现永生,50年内能实现复活', '

\n 人类一直以来都想实现长生,目前,硅谷有数十个公司在做事人类未来永生技术的研究,而谷歌首席科学家雷·库兹韦尔预言说:到了2029年,人类将开始正式走上永生之旅;到2045年,人类将正式实现永生!\n

\n

\n 雷·库兹韦尔是美国硅谷知名的未来学研究者,发明家,作家,谷歌的首席工程师。\n

\n
\n \"硅谷著名预言家表示,2045年人类将实现永生,50年内能实现复活\"\n
\n

\n 他曾发明了盲人阅读机、音乐合成器和语音识别系统。1988年,麻省理工学院提名他为“当年杰出发明家“。他曾获9项名誉博士学位,2次总统荣誉奖。同时也是一名成功的企业家,他用他的发明创办了自己的企业,开发出多项造福人类的高科技产品。\n

\n

\n 雷·库兹韦尔被比尔盖茨称为“我所知道的人工智能预测领域最牛的人”,据说他的预测准确率高达86%。\n

\n
\n \"硅谷著名预言家表示,2045年人类将实现永生,50年内能实现复活\"\n
\n

\n 他成功预测了苏联的解体、电脑战胜冠军棋手、数字助理(如Siri)的出现,虚拟和增强现实系统等,其中最为知名的是他曾预测到了上世纪90年代,全球互联网使用率会暴增,到了21世纪初,无线网络会被大范围使用。\n

\n

\n 还有就是他曾预言90年末电脑的发展将战胜棋王,1997年,“深蓝”战胜了棋王加里·卡斯帕罗夫。\n

\n

\n 库兹韦尔之所以作出这样的预言,是基于这样的判断:\n

\n
    \n
  • \n 人体即将可以植入纳米机器人,纳米机器人开始接管人类的免疫系统,把病原体,肿瘤等一系列的病变错误进行修复。\n
  • \n
  • \n 人体开始启动程序化,植入纳米程序芯片后开始由机器人编程,实现一系列的组织器官的修复,比如癌症还有心血管疾病的修复。\n
  • \n
  • \n 当肉体再也支撑不了现实的“摧残”,渐渐老化不能用的时候,只需要将记忆芯片取出来,借助人工智能技术,合成一个新的“大脑”。\n
  • \n
'
, '9461fed4-5960-4174-bec7-edf2a37b1df7.jpg', 1, 2, 1, 0, 0, 1, 0, '2020-03-05 11:43:41', NULL, NULL, 0, NULL, NULL, 0); INSERT INTO `cms_article` VALUES (20, '硅谷著名预言家表示,2045年人类将实现永生,50年内能实现复活', '

\n 人类一直以来都想实现长生,目前,硅谷有数十个公司在做事人类未来永生技术的研究,而谷歌首席科学家雷·库兹韦尔预言说:到了2029年,人类将开始正式走上永生之旅;到2045年,人类将正式实现永生!\n

\n

\n 雷·库兹韦尔是美国硅谷知名的未来学研究者,发明家,作家,谷歌的首席工程师。\n

\n
\n \"硅谷著名预言家表示,2045年人类将实现永生,50年内能实现复活\"\n
\n

\n 他曾发明了盲人阅读机、音乐合成器和语音识别系统。1988年,麻省理工学院提名他为“当年杰出发明家“。他曾获9项名誉博士学位,2次总统荣誉奖。同时也是一名成功的企业家,他用他的发明创办了自己的企业,开发出多项造福人类的高科技产品。\n

\n

\n 雷·库兹韦尔被比尔盖茨称为“我所知道的人工智能预测领域最牛的人”,据说他的预测准确率高达86%。\n

\n
\n \"硅谷著名预言家表示,2045年人类将实现永生,50年内能实现复活\"\n
\n

\n 他成功预测了苏联的解体、电脑战胜冠军棋手、数字助理(如Siri)的出现,虚拟和增强现实系统等,其中最为知名的是他曾预测到了上世纪90年代,全球互联网使用率会暴增,到了21世纪初,无线网络会被大范围使用。\n

\n

\n 还有就是他曾预言90年末电脑的发展将战胜棋王,1997年,“深蓝”战胜了棋王加里·卡斯帕罗夫。\n

\n

\n 库兹韦尔之所以作出这样的预言,是基于这样的判断:\n

\n
    \n
  • \n 人体即将可以植入纳米机器人,纳米机器人开始接管人类的免疫系统,把病原体,肿瘤等一系列的病变错误进行修复。\n
  • \n
  • \n 人体开始启动程序化,植入纳米程序芯片后开始由机器人编程,实现一系列的组织器官的修复,比如癌症还有心血管疾病的修复。\n
  • \n
  • \n 当肉体再也支撑不了现实的“摧残”,渐渐老化不能用的时候,只需要将记忆芯片取出来,借助人工智能技术,合成一个新的“大脑”。\n
  • \n
'
, 'e5ffc83c-0520-417d-90f1-2d8c8b9409e2.jpg', 1, 2, 1, 1, 0, 0, 0, '2020-03-05 11:43:43', NULL, NULL, 0, NULL, NULL, 0); INSERT INTO `cms_article` VALUES (21, ' 华为鸿蒙确认更名!网民:新名称更令人惊艳', '

\n 最近有报道称,华为的鸿蒙系统将余八月份与大家见面。余承东以前说过,但现在看来是真的。据悉,华为全球开发者大会也将在同一天举行。那时,可以看到全球软件开发人员聚集在一起解决鸿蒙面临的生态问题,并努力开发软件生态系统。\n

\n
\n \"华为鸿蒙确认更名!网民:新名称更令人惊艳\"\n
\n

\n 可以看出华为这次将再次放大招了,自鸿蒙宣布以来,每个人的期望都不小。虽然这个名字乍一看听起来很奇怪,但实际上是取自\"混沌初开\"。目前,鸿盟还在欧洲注册了商标,名为\"方舟\",意为诺亚方舟。\n

\n
\n \"华为鸿蒙确认更名!网民:新名称更令人惊艳\"\n
\n

\n 但是,鸿蒙的新名字又来了,被称为\"Harmony\"!它的意思是\"和谐\"。尽管它不如\"方舟\"强大,但它更加宏伟。此外,新名称的发音与鸿蒙类似,鸿蒙即将显示其真正的实力。\n

\n
\n \"华为鸿蒙确认更名!网民:新名称更令人惊艳\"\n
'
, 'cfeb4e75-fcbb-4801-a997-e312fbdda0fd.jpg', 1, 2, 1, 0, 1, 1, 0, '2020-03-05 11:49:26', NULL, NULL, 0, '华为中国', '今天头条', 4); INSERT INTO `cms_article` VALUES (22, 'test ', 'aaaa', 'deacb52a-9598-46a7-9343-fa2c2692192e.jpg', 2, 5, 1, 1, 0, -1, 0, '2020-03-05 19:39:30', NULL, NULL, 0, NULL, NULL, 0); INSERT INTO `cms_article` VALUES (23, '苹果发力中端市场,从6188跌到2999,128GB+iOS13', '

\n 在众多智能手机厂商中,苹果是最会赚钱的一个,凭借iPhone手机,苹果获得了丰厚的利润。比如苹果史上卖的最火的iPhone6系列,据说它的出货量已经高达2.5亿。iPhone6系列因为亲民售价,其占据的市场正是那些中端市场,也就是3000元左右的市场。现在,虽然iPhone6系列已经停产,但苹果依然在这个市场发力,用的是iPhone6系列的继任者——iPhone7。\n

\n
\n \"苹果发力中端市场,从6188跌到2999,128GB+iOS13\"\n
\n

\n 最新消息显示,iPhone7现在依然有售,同时售价很低,仅2999元。简单说说iPhone7的情况,就是苹果发力中端市场,从6188跌到2999,拥有128GB+iOS13系统。\n

\n
\n \"苹果发力中端市场,从6188跌到2999,128GB+iOS13\"\n
\n

\n 作为继任者,iPhone7延续iPhone6系列的优点,4.7英寸小屏,圆形HOME键,IP67级别防水防尘,还有强劲性能。在这里要仔细说说这个防水防尘功能,目前3000元左右的机型,基本不支持这些,唯独iPhone7,支持防水和防尘,这在平时的使用中,会让用户非常放心,能够随意使用。\n

\n
\n \"苹果发力中端市场,从6188跌到2999,128GB+iOS13\"\n
\n

\n 相比iPhone6,iPhone7还有一个亮点,就是机身背部的天线放置方式更好看,配合一体化机身设计风格,看起来非常不错。\n

\n
\n \"苹果发力中端市场,从6188跌到2999,128GB+iOS13\"\n
\n

\n iPhone7的HOME键,也是全新风格,添加振动反馈,是全新力度感应键,可以感知压力,能够提供触感反馈,响应度更高,同时不易被按坏。核心硬件上,iPhone7带来苹果A10处理器,可以升级到最新iOS13系统,再加上128GB机身存储,用起来也是非常流畅。\n

\n
\n \"苹果发力中端市场,从6188跌到2999,128GB+iOS13\"\n
\n

\n 如果说iPhone7的缺点,那就是拍照了,到了现在,安卓阵营手机的拍照都在全面提升,对比来看,iPhone7的拍照功能就显得有些少了。\n

\n

\n 屏幕前的朋友,你们觉得iPhone7如何,可以在评论区聊聊,说说你们的看法\n

'
, '055ab5e4-b901-4201-be77-f1f590f07268.jpg', 1, 2, 3, 0, 0, 0, 0, '2020-03-13 10:27:25', NULL, NULL, 0, NULL, NULL, 0); INSERT INTO `cms_article` VALUES (24, '《花木兰》全面撤档,万达负债融资20亿,全球影业的“黑暗时刻”', '

\n 疫情爆发两个月,国内电影产业在回温的天气与降低的确诊数量下得到喘息,复工准备提上日程,而海外市场上疫情才开始真正显现破坏力。\n

\n

\n 今天(3月13日),迪士尼正式对外宣布,受疫情影响,原本预计3月27日上映的真人版《花木兰》全球撤档,皮克斯新动画电影《1/2的魔法》延期,同时此前宣布4月上映的电影《新变种人》《鹿角》(福斯发行)宣布延期,《尚气与十诫传奇》停止拍摄,计划5月上映的电影《黑寡妇》也传出延期消息,而拍摄中的漫威剧集《猎鹰与冬兵》已经停止拍摄。——原本携着重磅IP气势汹汹前行的帝国迪士尼,踩了一个急刹车。\n

\n
\n \"《花木兰》全面撤档,万达负债融资20亿,全球影业的“黑暗时刻”\"\n
\n

\n
\n

\n

\n 同样被动刹车的还有其他好莱坞制片厂,派拉蒙宣布电影《寂静之地2》全球撤档、爱情喜剧片《爱情鸟》撤档,环球影业原计划将于5月22日上映的《速度与激情9》延期一年,索尼影业此前3月开始公映的《比得兔2》推迟到8月,更早之前,米高梅宣布《007:无暇赴死》推迟上映。\n

\n

\n 至此,好莱坞市场3月到4月的大体量电影基本撤档。同时,原定于3月30日-4月2日举行的好莱坞业界推介大会Cinemacon宣布取消,历年好莱坞制片厂齐都要在此进行新片推介,盛会取消,海外电影市场受到的冲击进一步外延。\n

\n

\n 而国内电影产业的情况也没有更好一些。虽然国内内容市场已经渐渐缓过了电影大规模撤档、影院关闭的打击,但是院线的处境并没有更好。\n

\n

\n 3月10日万达电影对外发布公告,拟发行不超过20亿的债务类融资工具,这无疑显示出院线受疫情影响出现了资金危机,而2019年万达业绩快报透露公司净利润亏损47亿,也预示着2020年万达处境的越发艰难。\n

'
, 'a2658f1a-ed2c-4fdb-b00d-8f0f7433e075.png', 6, 21, 1, 0, 0, 1, 0, '2020-03-14 08:37:48', NULL, NULL, 0, NULL, NULL, 1); INSERT INTO `cms_article` VALUES (25, '垃圾分类', '{\"A\":\"干垃圾\",\"B\":\"湿垃圾\"}', NULL, NULL, NULL, 1, 0, 0, 1, 0, '2020-03-15 10:58:50', NULL, NULL, 1, NULL, NULL, 0); INSERT INTO `cms_article` VALUES (26, '疫情什么时候结束', '{\"A\":\"明天\",\"B\":\"后天\",\"C\":\"1个月后\"}', NULL, NULL, NULL, 1, 0, 0, 1, 0, '2020-03-15 14:22:20', NULL, NULL, 1, NULL, NULL, 0); INSERT INTO `cms_article` VALUES (27, '你想升班吗?', '{\"A\":\"想升班\",\"B\":\"不想升班\",\"C\":\"十分想升班\",\"D\":\"我想末班\"}', NULL, NULL, NULL, 3, 2, 0, 1, 0, '2020-03-15 15:06:41', NULL, NULL, 1, NULL, NULL, 0); INSERT INTO `cms_article` VALUES (28, 'test316', 'test316test316test316test316test316test316test316test316test316', '1c9d94fb-bfae-42e8-96a1-cf5f9ce28d99.png', 4, 14, 5, 0, 0, 0, 0, '2020-03-16 08:42:10', NULL, NULL, NULL, NULL, NULL, 0); INSERT INTO `cms_article` VALUES (29, 'test315', 'test315test315test315test315test315test315', 'd801ebdd-0e4b-4693-99e0-0912d5aee078.png', 5, 17, 5, 0, 0, 1, 0, '2020-03-16 08:47:18', NULL, NULL, 0, NULL, NULL, 0); INSERT INTO `cms_article` VALUES (30, 'iPhone9 Plus基本确认,5.5寸+A13芯片+经典Home键,老用户首选?', '

\n 用了一段时间iPhoneX,然后换了iPhone11,我明白了一个道理。手机只是一个工具,简单、耐用、靠谱才是王道。不管是Oled材质,还是LCD材质,用起来其实没有太大区别。自从iPhoneX开始,苹果手机的定价就开始飘了。以前能买旗舰的价格,现在只能买得起「青春版」。然而,电影的画幅依然是16:9,手机依然只是拿来聊天打游戏。「全面屏」什么都没有改变,只是进一步压榨了我们的钱包。\n

\n
\n \"iPhone9\n
\n

\n 对手机屏占比不感冒的,我相信肯定不止我一个。到现在依然有许多人认为,iPhone8的设计比iPhoneXR、iPhone11耐看多了。众所周知,苹果将在今年发布新机iPhone9,它将采用iPhone8的外观,以及最新的A13芯片,定价3000元档。iPhone9是专门给老用户换机升级的性价比之选,毕竟不是每个人都愿意花大代价去购买全面屏iPhone。\n

\n
\n \"iPhone9\n
\n

\n 其实不止iPhone9,根据外媒报道,在iOS14的测试代码中,发现了「iPhone9 Plus」的存在。iPhone8分为4.7寸版和5.5寸版,相应的,iPhone9存在5.5寸这个大屏版本也并不奇怪。大尺寸机身拥有更强的散热,更持久的续航,更宽阔的视野范围。在当年,iPhone8 Plus可是游戏主播人手一台的存在。尤其是打游戏的时候,大边框反而避免了误触。搭载A13芯片的iPhone9 Plus,也许会再一次被封为游戏神机。\n

\n
\n \"iPhone9\n
\n

\n iPhone9 Plus基本确认,5.5寸+A13芯片+经典Home键,老用户升级首选。目前,消息没有指出iPhone9 Plus的定价。考虑到iPhoneXR已经跌到4000元价位了,很可能iPhone9 Plus的价格会在4000元以内。此外,iPhone9 依然保留了经典Home键,相对手势操作更为高效。并且还沿用了类似iPhone11的扫描NFC标签功能,整体功能性上没有任何落后。\n

\n
\n \"iPhone9\n
\n

\n 这段时间以来,大家基本上出门都会戴上口罩,作为果粉,最大的困扰应该就是频繁的人脸识别。我深刻地认识到,人脸解锁并不能完美适用所有场景,因为人脸作为一种生物特征太容易被外界干扰了。屏下指纹+3D人脸才是最佳方案,哪怕是单纯的屏下指纹,也比人脸识别的适应能力强。迟早苹果必须得适应这个世界的变化,而不是一意孤行,妄图教育整个市场。\n

'
, '435fa595-3165-48af-9057-053798b07baf.png', 1, 2, 1, 2, 1, 1, 0, '2020-03-19 09:06:33', NULL, NULL, 0, NULL, NULL, 2); INSERT INTO `cms_article` VALUES (31, 'test ', 'fsdfsadfsdfsadfsadfsad', '098b4b9a-3653-40c3-a0c5-1b21421f067b.jpg', 2, 4, 1, 0, 0, 1, 0, '2020-03-19 09:13:22', NULL, NULL, 0, NULL, NULL, 0); INSERT INTO `cms_article` VALUES (32, '2020年五大颠覆性科技趋势', '

\n 编者按:人们为什么喜欢预测未来?因为每个人都想把握先机,早做准备,尤其是日新月异的科技领域。下面的预测观点并非来自大公司的市场宣传,而出自硅谷本地第三方服务商公司的视角。本文译自Medium,作者 Thomas Smith,原标题为“Five Disruptive Tech Trends We’re Tracking in 2020”。\n

\n\"2020年五大颠覆性科技趋势\"\n

\n All images credit Gado Images\n

\n

\n 硅谷一直是引领全球科技界蓬勃发展的中心。\n

\n

\n 我们的公司是做基于人工智能的摄影业务,就位于硅谷的边缘。我们的业务可以涵盖和观察到硅谷科技、创新和生活领域的方方面面。\n

\n

\n 这让我们对未来的发展具备了独特的视角。以下是我们正在追踪的2020年五大科技趋势,它们有可能带来重大的改变和颠覆——既有显而易见的,也有悄无声息的。\n

\n

\n 零工经济和共享经济蓬勃发展\n

\n\"2020年五大颠覆性科技趋势\"\n

\n 零工经济(比如像Uber、Lyft和Doordash这样的公司)和分享经济(比如AirBNB,以及现在那些到处停放的、把城里的人行道堵得水泄不通的微型共享滑板车)曾经有过一段非常随心所欲、野蛮生长的时期。\n

\n

\n 2018年,我曾为Doordash拍摄一套系列图片,需要测试体验他们的物流服务。我只花了一个小时接受培训,然后做了一个非常初级的背景调查,还在一个办公园区的快闪空间里看了几个安全视频,就成为了一名Doordash送货员。在我决定注册的几小时内,我就已经从餐馆拿到了顾客的订餐出发去送货了,而Doordash随即就把钱存入了我的银行账户。\n

\n

\n 人们对这些服务的接受也是蛮快的,一瞬间,无证出租车,可廉价使用的电动共享滑板车,没有信用担保的AirBNB等等就普及开来了。\n

\n

\n 但是时不再来。由于零工经济和共享经济的扩张范围和影响力不断扩大,它们已经引起了监管机构和立法者的注意。比如加州出台的AB5法案,试图将零工经济的从业者重新归类为正式雇员(这将会让该产业受到很大的影响),城市管理者也在不断地扣押影响市容的共享滑板车,而发生在加州奥琳达的一家AirBNB民宿里的枪击事件等悲剧,也使得人们对短期租赁的宽松许可产生了怀疑。\n

\n

\n 简而言之,零工和共享经济正在经历重大的成长之烦恼。我们预计这种情况将在2020年持续存在。以AB5法案为中心,关于这个行业存在的合理性问题的争论仍将继续。\n

\n

\n 但与此同时,零工经济和共享经济公司继续在扩张。秘密泄露了——没人会把那些该死的滑板车拿回去。在廉价风投(以及现在的公共资金)的支持下,零工经济和共享经济公司将继续主导行业,继续主宰世界——一次堵住一条人行道。\n

\n

\n 植物肉成为主流\n

\n\"2020年五大颠覆性科技趋势\"\n

\n 植物肉刚出现时是很新奇的,现在,它即将成为主流。\n

\n

\n 这个行业的两家最主要的企业是Beyond Meat和Impossible,人们期待它们能够成为该行业的“百事可乐”和“可口可乐”公司,在争夺市场份额的持续竞争中互相促进,并最终推动整个行业的发展。\n

\n

\n 2019年 Impossible 曾尝试与汉堡王合作,将植物肉产品推向大众,取得了极大的成功。与 Beyond Meat 同样,Impossible 也通过寻找这些合作伙伴进行扩张,寻求进入商店销售的渠道。\n

\n

\n 反对这些公司的声音固然有之,但是可以忽略。一些顽固派对Impossible与BK这样的巨头合作颇感不爽,Impossible并不在乎——他们的目标人群是广大主流消费者,而不是少数顽固分子,能触达主流消费者才是最关键的,将对行业整体环境产生积极的影响。\n

\n

\n 我们认为,目前植物肉这个行业就像十年前有机食品刚兴起时一样。最初,有机食品只是一个小众市场,当像Stonyfield这样的公司开始通过沃尔玛销售有机食品的时候,市场逐渐壮大,这同样使得顽固派很生气。但是今天,你在全国每一家餐馆和折扣超市都能够买到有机食品。\n

\n

\n 我们预计,植物肉也会遵循类似的发展轨迹——从一个小众市场逐渐发展壮大(尽管顽固分子抵触),发展成又一个新的产品门类。\n

\n

\n 人工智能占据主导地位——但没有人注意到\n

\n\"2020年五大颠覆性科技趋势\"\n

\n 自从2013年至2014年的“深度学习革命”以来,人工智能就一直在重塑行业,但过程是悄无声息的。\n

\n

\n 人工智能技术已经悄然兴起,但并不是幻想中那种机器人入侵某一个行业,导致每个人失业的可怕场景:比如有用的语音助手,非常精准的垃圾邮件拦截器,能够看懂照片的计算机,OCR驱动技术,比如通过手机自动银行存款,更好的针对性广告……类似的还可以列出更多。\n

\n

\n 当然,人工智能也有一些很炫目的应用(比如自动驾驶汽车,有人知道吗?)但总体上,人工智能已经是一种非常普遍的无形的存在了——嗯,无处不在。\n

\n

\n 我们预计这种情况在2020年也会持续,AI即服务(来自微软、IBM Watson等)类似技术的发展,更多的用于模型训练的数据,以及像英特尔设备上的人工智能芯片这样的硬件,将确保人工智能继续扩大其主导地位。\n

\n

\n 但同样,这将是潜移默化的,许多行业甚至不会意识到它们正在被颠覆。\n

\n

\n 不过,我们也将越来越多地看到人工智能的影响,已经有更多的风投在为人工智能公司提供资金,以便不断改进数据分析、机器视觉和预测分析功能,以及帮助改善让政府觉得棘手的宏观经济指标——比如在没有就业或工资增长的情况下提高生产率。\n

\n

\n 科技主导政治\n

\n\"2020年五大颠覆性科技趋势\"\n

\n 从历史上看,高尚的、自由主义倾向的科技界与混乱的、没有尊严的政治界一向是泾渭分明的,但如今情况正在迅速改变。\n

'
, '0efe973f-6ea3-4088-9cdc-6815ebffb891.jpg', 1, 2, 6, 0, 0, 1, 0, '2020-03-31 08:40:52', NULL, NULL, 0, NULL, NULL, 0); INSERT INTO `cms_article` VALUES (44, '最终测试', '

\r\n 4月9日,国务院联防联控机制举行新闻发布会。商务部新闻发言人高峰介绍,目前已有7省20多个地市组织发放了多种形式的消费券,激发消费潜力,带动消费回补,在短期内取得了积极成效。比如,杭州发放的消费券已核销2.2亿元,带动消费23.7亿元,乘数效应达10.7倍;郑州首期发放5000万元消费券,发放两日核销1152.4万元,带动消费1.28亿元,乘数效应达11倍。\r\n

\r\n

\r\n 4月3日上午10点整,郑州市政府发放的第一期100万份共5000万元的消费券150秒被抢光。发放两日核销1152.4万元,带动消费1.28亿元,乘数效应达11倍。大家抢到的消费券包总价值为50元,包括购物满28元减5元券2张、满38元减10元券2张、满78元减20元券1张。领到消费券的用户,可通过手机支付宝APP,在开通支付宝支付功能的线下实体店结账使用。\r\n

\r\n

\r\n 记者走访中了解到,消费券不仅仅可以在正道思达、世纪联华、永辉、沃尔玛等大超市使用,街边小超市、饭店、药店、洗车行、五金店等线下实体店也均可使用。\r\n

\r\n

\r\n 根据支付宝官方统计,55.3%的人选择了在快消零售行业使用消费券,26%的人用在了餐饮业,还有18.2%的人选择用消费券去小店或者菜市场消费。\r\n

\r\n

\r\n ————————————————\r\n

\r\n

\r\n 来源:大河报·大河客户端\r\n

\r\n

\r\n 记者:孙煊哲\r\n

\r\n

\r\n 编辑:裴申申\r\n

\r\n

\r\n 校对:张红\r\n

\r\n

\r\n 审核:王站营\r\n

\r\n
\r\n \r\n
'
, '9ffea015-2881-4c44-ad24-26c92508f2ef.jpg', 1, 1, 13, 0, 0, 1, 0, '2020-04-10 17:52:45', NULL, NULL, 0, NULL, NULL, 0); INSERT INTO `cms_article` VALUES (45, '添加测试', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0); INSERT INTO `cms_article` VALUES (46, '添加测试', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0); INSERT INTO `cms_article` VALUES (189, '1588元起!微软四大新品登陆官网:苹果危险了.txt', '原标题:1588元起!微软四大新品登陆官网:苹果危险了 5月7日讯,昨天晚上,微软在官网上一次性更新了四款新品,其中包括新品电脑Surface Go 2以及Surface Book 2,还有第二代降噪耳机Surface Headphones 2以及全新推出的微软真无线耳机Surface Earbuds。目前这四款产品均已上架微软中国官网,其中两款耳机即日起可正式购买,而两款电脑目前还在预告阶段,有兴趣的朋友需要耐心等待。 Surface Go 2是微软Surface品牌下最便宜的电脑产品,海外售价为399美元,预计国内售价为2998元起。对比初代,Surface Go 2收窄了边框,屏幕升级为10.5英寸1280P显示屏,整机厚度依然维持在8.3毫米,重量略有提升,基本不会影响其便携性。配置方面,微软提供了奔腾4425Y处理器以及酷睿m3-8100Y处理器作为选择,对比上代在性能上并不会有多少提升。 Surface Book 3是Surface Book笔记本系列的第三代,有13.5英寸和15英寸两种选择。配置方面,两者均标配10nm的十代酷睿CPU,13.5英寸版为i5-1035G7,而15英寸版为i7-1065G7,可选择配备GTX 1650 Max-Q/GTX 1660 Ti Max-Q/Quadro RTX 3000显卡,可谓是目前微软至今为止最强的笔记本电脑。 当然,论价格,Surface Book 3或许就不那么美丽了。13.5英寸 i5-1035G7核显版的起步价为1599美元(折合人民币1.1万元)。参考前代国内的售价,Surface Book 3国行版起步价可能达到1.5万以上。 Surface Headphones 2是微软第二代头戴式降噪耳机。该产品配备40毫米 Free Edge 驱动单元,最大声压级输出可达115 dB;主动降噪可达30dB,被动可达40dB;电量充满需要不到2小时的时间,续航20小时。 目前该商品国行版售价为1998元起,有钛白灰、典雅黑两种配色供顾客选择。即日起下单,将于6月18日起陆续发货。 Surface Earbuds是微软旗下首款真无线耳机,有关于它的传言早从去年年中就已经开始流传,但直到今天才正式亮相。该产品配备13.6毫米驱动单元;没有主动降噪功能;支持IPX4级防水,单次充电最长续航可达8小时。 目前该商品国行版售价为1588元起,只有冰川白一种配色可供选择。即日起下单,将于5月20日起陆续发货。返回搜狐,查看更多 责任编辑:', NULL, 1, 1, 10, 0, 0, 1, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0); INSERT INTO `cms_article` VALUES (190, '500亿“大项目”你贡献多少?旅游业彻底复苏了吗.txt', '原标题:500亿“大项目”你贡献多少?旅游业彻底复苏了吗 中国经济周刊-金台资本组 记者 李慧敏 五一假期,“报复性”旅游汹涌而至,多个热门景点又现人从众景象。 据国家文化和旅游部最新数据,5月1日—5日,全国共计接待国内游客1.15人次,实现国内旅游收入475.6亿元。 近500亿旅游消费你贡献了多少? 文化和旅游部数据显示,仅5月1日,全国接待国内游客总人数2319.7万人,实现国内旅游收入约97.7亿元。由于疫情,在家“憋坏了”的人们纷纷选择趁长假出门旅游。 摄影:《中国经济周刊》孟凡婷 据文化和旅游部介绍,五一假期,全国A级景区开放8498家,约占总数的70%。 多个景点假期游客达到最大限流量。五一期间,故宫门票全部售罄,假期后的第一个休息日,5月10日的门票也已售罄。 泰山景区5月1日晚发布通告称,截至当天22时05分,泰山景区游客量已经达到最大防控要求(景区最大承载量的25%,2.9万人),景区已经暂停售票,恢复售票时间另行通告。紧接着,泰山景区当晚又连发两条通告,宣布该景区自2日起实行分时预约制度和分时下山措施。 据《四川日报》5月2日消息,截至5月2日上午9点,九寨沟、峨嵋山、四川泸沽湖等景区当日游客预约已满,乐山大佛、青城山后山、剑门关景区等门票也即将告罄。 去哪儿网数据显示,“五一”期间去哪儿网景区门票业务已经恢复至去年的4成水平。此外,全国入住酒店的游客较清明假期增长2.1倍。 去哪儿网副总裁兰翔对《中国经济周刊》记者表示,4月30日是“五一”出行量最高的一天,当日国内民航客运量已经恢复至2019年的一半水平。 《中国经济周刊》记者5日还从国铁集团获悉,五一小长假期间(4月30日至5月5日),全国铁路发送旅客3386万人次,日均发送旅客564万人次。其中5月1日,全国铁路发送旅客737万人次,创2020年春节后单日旅客发送量新高。 五一小长假大家都去了哪里?去哪儿网数据显示,成都、杭州、上海、广州、深圳成为最受欢迎的休闲度假目的地,而以往排名前列的北京则排名第十位。另外,生态度假型景区、山岳型景区和野生动物园成为人们出行的首选去处,如成都大熊猫基地、青城山、杭州西溪湿地、广州长隆野生动物园、上海野生动物园、重庆洪崖洞等景区五一假期最为热门。 旅游上市公司纷纷加大业务投放。凯撒旅业(00796.SZ)相关人士告诉《中国经济周刊》记者,五一期间,公司组织了一系列主题精品线路、连锁酒店及特色民宿产品,覆盖全国15个省市约24个城市及地区,包括北京、上海、广州、福建、广西、海南、四川、云南、江苏等。五一期间线路产品预订情况火爆,北京、天津、上海等地团组上线基本在1-2日内满团。 值得注意的是,据央视报道,五一假期,湖北共接待游客735.86万人次,实现旅游综合收入24.53亿元。5月1日至5日,湖北省22个已开放的重点景区共接待游客83.47万人次,占核定承载游客304.2万人次的27.4%。 旅游业恢复还有多远? 假日利好下,旅游信心逐步恢复。上海迪士尼度假区5日重磅宣布,上海迪士尼乐园将于5月11日起实行限流重新开放。从闭园到开园,上海迪士尼共经历了3个多月的时间。 然而,旅游业整体复苏并非一朝一夕之事。 受疫情影响,旅游板块收入业绩全面承压。 一季报显示,黄山旅游(600054.SH)一季度实现营收6979.2万元,同比下滑73.59%;实现归属于上市公司股东的净利润为亏损7724.1万元,上年同期为2356.97万元。 公司表示,受新冠肺炎疫情的影响,黄山旅游主营业务受到重大影响。鉴于本次疫情尚存在不确定性,预计年初至下一报告期的累计净利润与上年同期相比有很大程度下滑并有可能发生亏损。 而当地时间5月5日,华特迪士尼公布的2020财年第二财季(即2020年第一季度,截至3月28日)财报显示,公司今年一季度总营收为180.1亿美元,同比增长20.7%。一季度净利润为4.6亿美元,同比下降91.56%。迪士尼表示,受新冠肺炎疫情影响,迪士尼公园、游轮和商店被迫关闭,导致其主题公园等一季度遭受损失。 据文化和旅游部《2019年旅游市场基本情况》,初步测算,2019年全国旅游业对GDP的综合贡献为10.94万亿元,占GDP总量的11.05%,与18年持平。旅游直接就业2825万人,旅游直接和间接就业7987万人,占全国就业总人口的10.31%。 疫情以来,旅游从业人员工作受到了直接影响。近日中国旅行社协会导游专业委员会与携程旅游发布的《疫情下导游生存状态与职业发展需求》调查显示,10614位受访旅游从业者中,81%的导游表示目前无业务;70.2%的受访者表示,预计2020年收入降幅将达50%以上。 当前,旅行社虽然已复工但业务仍受限,北京、天津、黑龙江等地禁止经营跨地市游;成都旅行社不得接待省外旅行社组织团队,因此旅行社业务仍以周边游为主,周边游率先复苏。而国内游替代出境游将成全年趋势。 五一期间,乡村游、周边游等近郊旅游成为热点。一位在五一期间联系北京近郊游玩的人士也告诉《中国经济周刊》记者,这几日,其联系的郊区酒店住宿全满,连附近的餐厅也爆满。 上述凯撒旅游相关人士也对《中国经济周刊》记者表示,公司推出的近郊游,如北京的密云云蒙山、平谷丫髻山、怀柔青龙峡风景区+生态园采摘等一日游线路,以及上海崇明生态休闲游一日游、天津杨柳青文化体验之旅一日游等线路都受到当地民众的欢迎。 另据广州市文化广电旅游局统计,五一假期,全市共接待乡村游游客249.14万人次,占全市游客接待量的47.22%,比2019年全年乡村游占游客比重约四成的数据还有一定幅度的提升。 责编 | 吕江涛返回搜狐,查看更多 责任编辑:', NULL, 1, 1, 10, 0, 0, 1, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0); INSERT INTO `cms_article` VALUES (191, 'AI芯片创企燧原科技完成7亿元B轮融资!武岳峰资本领投腾讯跟投.txt', '原标题:AI芯片创企燧原科技完成7亿元B轮融资!武岳峰资本领投腾讯跟投 智东西(公众号:zhidxcom) 编 | 韦世玮 智东西5月7日消息,今日,上海AI芯片创企燧原科技宣布完成B轮融资,融资金额为7亿元人民币,由半导体产业基金武岳峰资本领投,腾讯、上海双创、海松资本、万物资本、达泰资本、红点创投中国基金跟投。其中,万物资本、达泰资本自该公司种子轮起已连续跟投。 据悉,燧原科技的这笔融资将用于芯片量产、业务规模化、技术支持团队扩充、高端专家人才引进,以及第二代云端训练及推理芯片的开发。 “AI训练芯片及软硬件平台处于该领域技术链的最高端,燧原正在努力成为国内第一家可靠供应商,打破国外垄断,实现国产替代。”燧原科技CEO赵立东谈到。 成立于2018年的燧原科技,在去年12月发布了基于“邃思”芯片的AI训练加速卡“云燧T10”。现阶段,该芯片正在针对各类AI应用场景与客户进行深度合作,以实现产品的落地和规模化。 简单地说,云燧T10具有以下三个特点: 1、基于完全自研可重构计算架构DTU,单精度算力为20TFLOPS,支持BF16数据格式; 2、采用自研ESL高速互联技术,200GB带宽,可满足E级数据中心大规模AI训练需求; 3、支持业内主流深度学习框架,提供完整的编译、调试、调优工具链,为开发者提供SDK、算子库、自定义算子接口、以及细粒度开放定制的能力。 燧原科技COO张亚林也谈到,邃思芯片集成了具有完全自主知识产权的神经元处理架构和数据处理引擎,采用自主设计带有Interposer的2.5D高级封装,以及用于构建大规模分布式集群的高速ESL互联。 与此同时,邃思芯片在成功流片并实现产品化之外,还完成了软件全栈“驭算”的搭建和基础优化。“目前第二代训练芯片以及推理芯片的软硬件协同研发已全面展开,未来将进一步提供从训练到推理的完整解决方案。”张亚林说。 实际上,随着近年来我国新基建的建设发展,燧原科技也进行了相应的战略布局。赵立东透露,针对新基建智能数据中心的广阔前景,目前公司也正与政府、上下游商业伙伴合作,以提供解决方案。 针对本轮融资,腾讯投资董事总经理姚磊文谈到,燧原科技的邃思芯片在落地过程中,与腾讯的技术团队展开了全面合作,以加速研发过程。 此外,武岳峰资本创始合伙人、展讯通信创始人武平提到,在燧原科技的B轮融资中还引入了全国领先的百亿级市场化母基金及大资管平台——上海双创(SHIVC),希望进一步推动新兴产业集群和集成电路产业的发展。 文章来源:燧原科技Enflame返回搜狐,查看更多 责任编辑:', NULL, 1, 1, 10, 0, 0, 1, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0); INSERT INTO `cms_article` VALUES (192, 'A股5月开门红,市场迎来新机遇?.txt', '原标题:A股5月开门红,市场迎来新机遇? 文/ 宗意 导语: 您是否还在为看不清市场真相而发愁?是否还在为找不准市场行情而烦恼?《远见有良策》,每天更新A股最前沿策略研究报告,为您沙里淘真金。 言而总之:5月开门红 A股今日迎来五月首个交易日,三大指数低开,开盘后迅速拉升集体收涨。其中创业板指表现较强,收盘上涨近2%。行业板块多数收涨,科技类股票强势领涨,北向资金今日净流入逾30亿元。总体上,市场氛围较为活跃,个股涨多跌少,但跌停家数不少,赚钱效应提升。 先见之明:调整可能一步到位 买股票就是买预期,有了先见之明才能把握良机。5月开启,申万宏源证券策略周报认为节后A股调整可能“一步到位”,而后资本市场稳预期可能主导A股震荡磨底。 重点关注电气设备、通信和环保(新基建);建筑装饰、建筑材料和工程机械龙头、汽车(传统逆周期调节受益)。高ROE、高稳定性,长期有复利效应的核心资产“茅台们”仍是重要的底仓资产。 开源证券策略月报建议投资者在5月调整布局为未来做好准备。震荡格局,“不确定”的性价比反而开始显现。从目前配置思路来看,境外投资者都处于从前期确定性板块中逐步退出的趋势,但是配置方向分布于金融、TMT、部分周期和可选消费,这种极度离散的配置也指示市场短期可能并未有明显合力。 开源证券推荐三条主线:前期的线下“消费复苏”,包括:食品饮料(白酒、啤酒),家电、农林牧渔;低估值+确定增长的建筑、建材;基本面明显见底,后续逐级改善:交通运输,石化。对于成长板块,认为全局性的机会可能尚未来临,但是内需主导的成长板块可能相对占优。 远见淘金:旅游板块将迎估值修复 行情捉摸不定,精选行业才能淘到真金白银。5 月 1 日起全国所有省份应急响应级别均为二级或以下。华泰证券在旅游行业策略报告中认为,疫情防范拐点,旅游板块将迎估值修复,认为伴随旅游市场回暖,龙头业绩有望逐季改善。人群流动性有望重新加速,有利于全国客运量增长、旅游板块复苏。 伴随全国各地防疫风险等级下降,人群流动性有望加速,有利于客运增长、旅游市场修复,跨市跨省的中远途游有望逐步复苏,免税/酒店/景区等龙头有望受益。 编辑 返回搜狐,查看更多 责任编辑:', NULL, 1, 1, 10, 0, 0, 1, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0); INSERT INTO `cms_article` VALUES (193, 'A股最牛关系户!证监会都敬它三分股价却半死不活!.txt', '原标题:A股 最牛关系户!证监会都敬它三分 股价却半死不活! 文/晓太阳 《天龙八部》书中讲,当年在少林藏经阁,慕容复他爹为难萧峰他爹,两个老爹互相看不顺眼,进而演化成两对父子的打架斗殴。 眼看事态升级,半路冒出来个打扫卫生的老和尚,在两边眼皮子底下专心扫地,嘴里说着稀里糊涂的话,一抬手,结果两边都不敢动,高深莫测。 由于这位保洁老和尚过于低调,直到小说结尾,他的名号、来历依然只有三个字“扫地僧”。 在那个争名逐利的武林,这显得格外讽刺,真正顶尖的高手,看着那群雄逐鹿,只当是一群菜鸡互啄,人家根本不稀的进去搅和。 艺术来源于生活,生活里有着无数的伤春悲秋,比如这场疫情。 有人说,时代的尘埃,落在每一个人头上都是一座大山。放到个人来看,这确实是一种极好的比喻。但对于公司来说,这座大山实实在在。 疫情造成的停滞,使得不少公司本来就贫困的现金流,更加雪上加霜。 尤其是房地产行业,去年融资渠道全面收紧,日子本来就紧紧巴巴,今年开头,又来一“下马威”,还能不能活? 不过,一众房企哭爹喊娘找钱续命的档口,行业里还真的蹦出几个“扫地僧”式的角色,比如下面这位。 4月20日,金融街控股公告称,公司成功发行一笔25亿的超短债,为期267天,票面利率仅1.74%。 什么水平?答:不痛不痒,但狠狠抽了同行一个嘴巴。 据CRIC数据,2019年房企融资利率,最高值15.5%,平均利率6.90%,平均最低出现在8月,那也得5.99%。 形象点比喻,房企们穷困潦倒,借钱度日,只能扣扣搜搜喝稀饭。金融街控股也喝稀饭,不过人家喝的,是正经的海鲜粥。 论业绩,2019年,金融街控股营收235.7亿,同比增长20.3%,操盘共248.8亿,销售331.2亿,似乎平平无奇,没有亮点。 据克尔瑞房企榜单,金融街控股排名50开外,若是眼花,兴许一不小心,就看漏了这个房企,凭啥喝海鲜粥? 但深扒企业背景,以及年报数据之后,就能发现这位“扫地僧”,藏的究竟有多深。 而且有意思的是,凡是内力深厚但行事低调的高人,一般从前都受过刺激,同样的,金融街控股在4年前,也差点把自己玩儿脱。 “扫地僧”的身世 贵为“央妈”的房东,钱的事,都是小事。 金融街控股,最早成型于1996年6月,后经资产置换,变更主营业务,成为了现在模样。 公司旗下的最得意之作,名为“北京金融街”,三个大字金灿灿,可了不得。 金融街,长两公里不到,却是北京市第一个,大规模定向开发的金融产业功能区,什么意思? 其中汇聚了“中国人民银行”、“中国银保监会”、“中国证监会”等等,中国金融中枢,还包括一众大型金融机构总部,与重量级国企的总部。 而且,离故宫仅一步之遥,说句寸土寸金,并不为过。 能占到这等区位的开发商,本身能量就不是凡夫俗子可以相比的。 拿官方术语来说,此开发商有较强的的区域资源优势。背靠北京西城区国资委,又有一众“神仙”持股加持,融资利率1.74%,轻易击穿行业下限,简直跟玩儿似的。 点击查看大图 金融街控股于2000年登陆深交所,如今20年发展,股票圈子里尊称一声“金姐”。 “金姐”旗下,商业地产占比高达70%左右,少量涉及住宅开发。 不过从年报中看,似乎“金姐”的住宅开发之路,走得不太顺? 据年报数据,金融街控股19年营收261.84亿元,同比增加18.41%,住宅收入155.9亿,仅同比增长1.0%。 此外,地产开发毛利率出现了不小的下滑: 有句话这么讲,毛利率就是没拔过毛的利润率,毛利要经过两次脱毛,才是净利,这代表“金姐”一年忙到头,留在嘴里的东西越来越少了,这意义非同小可。 从年报数据可见,“金姐”各主力区域的毛利率,几乎全线下降。北京,广州,上海,重庆,天津项目,毛利率波动分别为-16.97%,+0.07%,-9.97%,-2.29%,-8.02%。 这十分不寻常,之前的文章我们讲过,无论是市场影响较大,还是结转周期不均,都不足以引发所有区域的全线下跌,百密还有一疏,如何死的透透? 答案只有一个,2019年“金姐”主动自废武功。究竟为什么? 结合近两年的政策形势,与4年前的那场“玩脱儿”来看,“金姐”必须慢下来。 否则,走火入魔。 狂飙突进后的反思 6年前开始“狂奔”,扫地僧一度“走火入魔”。 上文提到, “北京金融街”在中国商业地产史上,已经登峰造极,好处不必多讲,但坏处也十分明显——“高处不胜寒”。 由于区位资源的稀缺性,此类项目,几乎不可复制,无法在全国一一铺开,由此便限制了企业规模上升的天花板。 于是,2014年开始,“金姐”在住宅业务上大举扩张,版图铺向全国。 然而,时值2016,“金姐”突然陷入股权纷争,反腐风暴也紧随其后,以此引发管理层动荡,如此好比跑步途中大汗淋漓,却突遭一盆冰水泼下。 于是当年,“金姐”走出了一波让人看不懂的业绩,据2016年半年报,金融街控股上半年销售增长107%,盈利却同比下跌20%。相关机构评述这样的表现:金融街控股出现“排异反应”,休克了。 此后,经过近一年的“恢复适应期”,“金姐”再度出山,一时风头凶猛至极。 凶到什么程度?凶到一个打七个。 据报道,17年6月,北京土地市场,“保利、首开、龙湖、中海、平安”等7家企业,组成联合体拿地,仅举牌一次,便开始保持沉默。 最终,金融街控股以28.6亿,竞得北京丰台区一处旧改地块,溢价率24.35%,楼面价4.8万元/平米。 而在19年之前,其经营活动产生的现金流量净额,只有2016年为正,其余均为负值,19年上半年,公司总负债已破千亿,达到1122.83亿元,财务状况不容乐观,几近“走火入魔”。 资金岌岌可危之下,金融界控股于2019年中期开始收缩战线。 19年6月20日,金融街控股公告称,将作价10.54亿,出售位于上海的金融街(海伦)中心D栋、E栋,交易对象为长城人寿。 据悉,此项目17年投入运营,出租率上升明显,18年租金收入为上年的38倍。项目收益处于上升通道,金融街控股急着卖掉,此举回笼资金的意图非常明显。 事实上,进入2019之后,高层对地产行业的融资监管趋严,即便是背书强硬的金融街控股,也不得不加入“去杠杆”的大潮之中。 这种对安全性的渴求,同样可以在年报中找到支撑。 据年报数据,2019年金融界控股的公允价值变动收益同比,达到了惊人的2786.94%,近28倍的增长,官方解释可以为8个字:地价涨了,项目卖了。 另外值得注意的是,由于金融界控股手中拥有大量具有稀缺价值商业项目,所以深度受公募 REITs 推进的利好与追捧。 可以预见的是,金融界控股,在找钱这桩麻烦事上的想象空间,还十分巨大。 截止2019年底,其业务布局京津冀、 长三角、 珠三角、 成渝、 长江中游五大城市群的15个城市及区域。 值得注意的是,即便19年毛利率全线下跌,其现存的毛利率数字依然可怕,北京、广州、上海、重庆,天津5个主要城市分别达到49.4%,39.03%,31.89%,43.7%,30.72%。 以上,受益于前6年的突飞猛进,金融街控股正处于上升通道之中,可以预见的是6年狂奔,至少能换来3年滑翔。 最后,从不抛头露脸的“金姐”更像是一支政策风向标,其深厚内力积攒,多方力量加持,使得其成为一支不容忽视的市场力量。返回搜狐,查看更多 责任编辑:', NULL, 1, 1, 10, 0, 0, 1, 0, NULL, NULL, NULL, NULL, NULL, NULL, 0); INSERT INTO `cms_article` VALUES (194, '添加测试', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0); INSERT INTO `cms_article` VALUES (195, '添加测试', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0); INSERT INTO `cms_article` VALUES (196, '添加测试', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0); -- ---------------------------- -- Table structure for cms_category -- ---------------------------- DROP TABLE IF EXISTS `cms_category`; CREATE TABLE `cms_category` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `channel_id` int(11) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, INDEX `FK_CMS_CATE_REFERENCE_CMS_CHAN`(`channel_id`) USING BTREE, CONSTRAINT `cms_category_ibfk_1` FOREIGN KEY (`channel_id`) REFERENCES `cms_channel` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB AUTO_INCREMENT = 33 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of cms_category -- ---------------------------- INSERT INTO `cms_category` VALUES (1, '互联网', 1); INSERT INTO `cms_category` VALUES (2, '软件', 1); INSERT INTO `cms_category` VALUES (3, '智能家居', 1); INSERT INTO `cms_category` VALUES (4, '虚拟货币', 2); INSERT INTO `cms_category` VALUES (5, '股票', 2); INSERT INTO `cms_category` VALUES (6, '外汇', 2); INSERT INTO `cms_category` VALUES (7, '黄金', 2); INSERT INTO `cms_category` VALUES (8, '宏观经济', 2); INSERT INTO `cms_category` VALUES (9, '美国', 3); INSERT INTO `cms_category` VALUES (10, '亚洲', 3); INSERT INTO `cms_category` VALUES (11, '欧洲', 3); INSERT INTO `cms_category` VALUES (12, '非洲', 3); INSERT INTO `cms_category` VALUES (13, '新车', 4); INSERT INTO `cms_category` VALUES (14, 'SUV', 4); INSERT INTO `cms_category` VALUES (15, '汽车导购', 4); INSERT INTO `cms_category` VALUES (16, '用车', 4); INSERT INTO `cms_category` VALUES (17, 'NBA', 5); INSERT INTO `cms_category` VALUES (18, 'CBA', 5); INSERT INTO `cms_category` VALUES (19, '中超', 5); INSERT INTO `cms_category` VALUES (20, '意甲', 5); INSERT INTO `cms_category` VALUES (21, '电影', 6); INSERT INTO `cms_category` VALUES (22, '电视剧', 6); INSERT INTO `cms_category` VALUES (23, '综艺', 6); INSERT INTO `cms_category` VALUES (24, '明星八卦', 6); INSERT INTO `cms_category` VALUES (25, '段子', 7); INSERT INTO `cms_category` VALUES (26, '爆笑节目', 7); INSERT INTO `cms_category` VALUES (27, '童趣萌宠', 7); INSERT INTO `cms_category` VALUES (28, '雷人囧事', 7); INSERT INTO `cms_category` VALUES (29, '老图片', 9); INSERT INTO `cms_category` VALUES (30, '图片故事', 9); INSERT INTO `cms_category` VALUES (31, '摄影集', 9); INSERT INTO `cms_category` VALUES (32, '王者荣耀', 8); -- ---------------------------- -- Table structure for cms_channel -- ---------------------------- DROP TABLE IF EXISTS `cms_channel`; CREATE TABLE `cms_channel` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `description` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `icon` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `sorted` int(11) NULL DEFAULT NULL COMMENT '排序', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of cms_channel -- ---------------------------- INSERT INTO `cms_channel` VALUES (1, '科技', NULL, NULL, NULL); INSERT INTO `cms_channel` VALUES (2, '财经', NULL, NULL, NULL); INSERT INTO `cms_channel` VALUES (3, '国际', NULL, NULL, NULL); INSERT INTO `cms_channel` VALUES (4, '汽车', NULL, NULL, NULL); INSERT INTO `cms_channel` VALUES (5, '体育', NULL, NULL, NULL); INSERT INTO `cms_channel` VALUES (6, '娱乐', NULL, NULL, NULL); INSERT INTO `cms_channel` VALUES (7, '搞笑', NULL, NULL, NULL); INSERT INTO `cms_channel` VALUES (8, '游戏', '游戏游戏游戏游戏', NULL, NULL); INSERT INTO `cms_channel` VALUES (9, '图片', NULL, NULL, NULL); -- ---------------------------- -- Table structure for cms_collect -- ---------------------------- DROP TABLE IF EXISTS `cms_collect`; CREATE TABLE `cms_collect` ( `id` int(11) NOT NULL AUTO_INCREMENT, `text` varchar(300) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `url` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `user_id` int(11) NULL DEFAULT NULL, `created` datetime NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of cms_collect -- ---------------------------- INSERT INTO `cms_collect` VALUES (6, '2020年五大颠覆性科技趋势', 'http://127.0.0.1/detail?id=32', 21, '2020-04-11 10:44:53'); INSERT INTO `cms_collect` VALUES (7, 'iPhone9 Plus基本确认,5.5寸+A13芯片+经典Home键,老用户首选?', 'http://127.0.0.1/detail?id=30', 21, '2020-04-11 10:44:59'); INSERT INTO `cms_collect` VALUES (8, '中兴通讯:董事会已收到鲍毓明辞去独立非执行董事职务的申请', 'http://127.0.0.1/detail?id=40', 21, '2020-04-11 10:47:32'); INSERT INTO `cms_collect` VALUES (9, '2020年五大颠覆性科技趋势', 'http://127.0.0.1/detail.do?id=32', 10, '2020-04-11 14:00:58'); -- ---------------------------- -- Table structure for cms_comment -- ---------------------------- DROP TABLE IF EXISTS `cms_comment`; CREATE TABLE `cms_comment` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NULL DEFAULT NULL, `article_id` int(11) NULL DEFAULT NULL, `content` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL, `created` datetime NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, INDEX `user_id`(`user_id`) USING BTREE, INDEX `article_id`(`article_id`) USING BTREE, CONSTRAINT `cms_comment_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `cms_user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT `cms_comment_ibfk_2` FOREIGN KEY (`article_id`) REFERENCES `cms_article` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of cms_comment -- ---------------------------- INSERT INTO `cms_comment` VALUES (1, 21, 40, '今天星期六', '2020-04-11 11:47:33'); INSERT INTO `cms_comment` VALUES (2, 20, 40, '明天星期天', '2020-04-11 11:51:37'); INSERT INTO `cms_comment` VALUES (3, 20, 40, '有一条评论\n', '2020-04-11 11:54:04'); INSERT INTO `cms_comment` VALUES (5, 21, 40, '再次评论', '2020-04-11 12:02:21'); INSERT INTO `cms_comment` VALUES (6, 21, 40, '违法维尔', '2020-04-11 12:02:38'); INSERT INTO `cms_comment` VALUES (7, 13, 30, '最终评论', '2020-04-11 14:59:43'); INSERT INTO `cms_comment` VALUES (8, 13, 21, '最终测试评论', '2020-04-11 15:02:22'); -- ---------------------------- -- Table structure for cms_settings -- ---------------------------- DROP TABLE IF EXISTS `cms_settings`; CREATE TABLE `cms_settings` ( `id` int(11) NOT NULL AUTO_INCREMENT, `site_domain` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `site_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `article_list_size` int(11) NULL DEFAULT NULL, `slide_size` int(11) NULL DEFAULT NULL, `admin_username` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `admin_password` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of cms_settings -- ---------------------------- -- ---------------------------- -- Table structure for cms_slide -- ---------------------------- DROP TABLE IF EXISTS `cms_slide`; CREATE TABLE `cms_slide` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `picture` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `url` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of cms_slide -- ---------------------------- INSERT INTO `cms_slide` VALUES (1, '广告一', '322546.jpg', ''); INSERT INTO `cms_slide` VALUES (2, '广告一', '323090.jpg', ''); INSERT INTO `cms_slide` VALUES (3, '广告三', '王洋.jpg', ''); INSERT INTO `cms_slide` VALUES (4, '广告四', '40d0c3bf-6585-4eb1-809f-10ab4e6f8e29.jpg', ''); INSERT INTO `cms_slide` VALUES (5, '开发步骤', '王洋.jpg', ''); -- ---------------------------- -- Table structure for cms_user -- ---------------------------- DROP TABLE IF EXISTS `cms_user`; CREATE TABLE `cms_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `password` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `nickname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `birthday` date NULL DEFAULT NULL, `gender` int(11) NULL DEFAULT NULL, `locked` int(11) NULL DEFAULT 0 COMMENT '0:正常,1:禁用', `created` datetime NULL DEFAULT NULL, `updated` datetime NULL DEFAULT NULL, `role` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '0:普通用户,1:管理员', `url` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '个人博客网址', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of cms_user -- ---------------------------- INSERT INTO `cms_user` VALUES (1, 'lucy', '16140a5af212b82efb8a2ca2918a0762', 'lucy', NULL, 0, 1, '2020-03-11 11:51:36', '2020-03-05 11:51:51', '0', NULL); INSERT INTO `cms_user` VALUES (2, 'admin', '16140a5af212b82efb8a2ca2918a0762', 'admin', NULL, 1, 0, NULL, NULL, '1', NULL); INSERT INTO `cms_user` VALUES (3, 'jack', '16140a5af212b82efb8a2ca2918a0762', 'jack', NULL, 1, 0, '2020-03-13 10:12:55', NULL, '0', NULL); INSERT INTO `cms_user` VALUES (4, 'test', '16140a5af212b82efb8a2ca2918a0762', 'test', NULL, 1, 1, '2020-03-15 15:00:31', NULL, '0', NULL); INSERT INTO `cms_user` VALUES (5, '316', '123456', '316', NULL, 1, 1, '2020-03-16 08:41:17', NULL, '0', NULL); INSERT INTO `cms_user` VALUES (6, '1712d', '16140a5af212b82efb8a2ca2918a0762', '1712d', NULL, 1, 0, '2020-03-31 08:38:38', NULL, '0', NULL); INSERT INTO `cms_user` VALUES (8, '张三', '123456', NULL, NULL, 1, 0, NULL, NULL, '0', NULL); INSERT INTO `cms_user` VALUES (10, '王洋', '16140a5af212b82efb8a2ca2918a0762', NULL, NULL, 1, 0, NULL, NULL, '1', NULL); INSERT INTO `cms_user` VALUES (13, '最终测试', '16140a5af212b82efb8a2ca2918a0762', NULL, NULL, 1, 0, NULL, NULL, '0', NULL); -- ---------------------------- -- Table structure for section -- ---------------------------- DROP TABLE IF EXISTS `section`; CREATE TABLE `section` ( `id` int(11) NOT NULL AUTO_INCREMENT, `article_id` int(11) NULL DEFAULT NULL, `section_num` int(11) NULL DEFAULT NULL, `section_type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `section_content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, INDEX `aId`(`article_id`) USING BTREE, CONSTRAINT `aId` FOREIGN KEY (`article_id`) REFERENCES `cms_article` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of section -- ---------------------------- INSERT INTO `section` VALUES (1, 16, 0, '0', ' 人体开始启动程序化,植入纳米程序芯片后开始由机器人编程,实现一系列的组织器官的修复,比如癌症还有心血管疾病的修复。\n \n
  • \n 当肉体再也支撑不了现实的“摧残”,渐渐老化不能用的时候,只需要将记忆芯片取出来,借助人工智能技术,合成一个新的“大脑”。\n
  • \n'
    ); INSERT INTO `section` VALUES (2, 16, NULL, NULL, '123'); INSERT INTO `section` VALUES (3, 16, NULL, NULL, '123456'); INSERT INTO `section` VALUES (4, 16, NULL, 'html', '12345'); INSERT INTO `section` VALUES (5, 16, NULL, 'html', '1234567890'); INSERT INTO `section` VALUES (6, 16, NULL, 'html', '123478个如果如果'); INSERT INTO `section` VALUES (7, 16, NULL, 'html', '田佳佳'); SET FOREIGN_KEY_CHECKS = 1;

    第八步:我们开始对项目做最后的完善

    1、首先在spring.xml中有如下配置,它就和spring boot的启动类一样,需要通过配置的方式指定spring初始化容器中bean实例的来源,一般指定到最后一层公共包路径,因此我们需要准备一个com.wy

    <context:component-scan base-package="com.wy">context:component-scan>
    

    2、spring.xml中,如下配置是dao层包路径,因此我们需要准备一个com.wy.dao

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    	<property name="basePackage" value="com.wy.dao"/>
    bean>
    

    3、spring.xml中,如下配置是aop的后面,发生在业务层,因此我们需要准备一个com.wy.service

    <aop:config>
        
        <aop:pointcut
               expression="execution(* com.wy.service.*.*(..))" id="pointcut" />
            
        <aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut" />
    aop:config>
    

    4、springMVC.xml中,如下配置是Controller层,因此我们需要准备一个com.wy.controller

    <context:component-scan base-package="com.wy.controller">context:component-scan>
    

    5、我们需要准备数据Bean和工具包,因此我们需要准备一个com.wy.bean包和com.wy.util

    最后的项目结构如下
    知识点1--认识SSM框架并准备项目_第24张图片


    最后我们做一个测试看一下项目的配置是否成功,是否可以运行,我们在Controller层准备一个测试用的Controller

    package com.wy.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    @Controller
    public class TestController {
    
        @RequestMapping(value="/mes.do" , produces = "text/html; charset=UTF-8")
        @ResponseBody
        public String getMes(){
            return "测试成功123test";
        }
    
    }
    

    点击启动Tomcat
    知识点1--认识SSM框架并准备项目_第25张图片
    此时大概率你会报一个错,在service中会告诉你由于一个或多个监听器实例化失败导致启动项目错误,tomcat localhost log中会告诉你 ContextLoaderListener这个类找不到

    这个是由于,项目运行时的Jar没有传递到tomcat中去,此时你需要经历下面的设置,点击file–>project structure–>Artifacts,右键单击右面的ele…那一栏的项目名,再点击put into output root随后点击保存退出设置
    知识点1--认识SSM框架并准备项目_第26张图片
    这个时候在你项目的lclass路径同级会出现一个lib路径下面会存放所有运行时的jar,使得tomcat直接加载

    知识点1--认识SSM框架并准备项目_第27张图片
    现在正常启动项目并求情测试Controller
    知识点1--认识SSM框架并准备项目_第28张图片
    正常启动时如果跳出浏览器找不到的提示框,这个关掉就行,原因是你在Tomcat配置页面设置的默认浏览器你本地没安装,它找不到相应的程序而已

    到此项目准备完成,说语句题外话,有web基础的朋友如果你看到produces = "text/html; charset=UTF-8"觉得别扭,你可以删掉,但是你会发现测试页面返回的数据中中文全部变成问号或者乱码,这个是由于SSM太老了,基本没啥人用了,所以对它的维护官方肯定没有Spring boot积极,这就导致现在学习SSM要面临一个尴尬的选择,如果你返回前台的内容中存在中文就必须添加produces注解值,不然不识别,但是反之如果你添加了produces注解值那这个Controller将无法正常给ajax响应

    本项目目前以上传github :https://github.com/wangyang159/cmsdemo

    你可能感兴趣的:(SSM,web)