关于淘淘商城教学视频的总结
2018-02-09 11:42
288 查看
最近在网上下了份淘淘商城的教学视频,做下总结
先放上总体结构
后台管理系统:管理商品、订单、类目、商品规格属性、用户管理以及内容发布等功能。
前台系统:用户可以在前台系统中进行注册、登录、浏览商品、首页、下单等操作。
会员系统:用户可以在该系统中查询已下的订单、收藏的商品、我的优惠券、团购等信息。
订单系统:提供下单、查询订单、修改订单状态、定时处理订单。
搜索系统:提供商品的搜索功能。
单点登录系统:为多个系统之间提供用户登录凭证以及查询登录用户的信息。
使用软件的版本
Tomcat 7.0.53(Maven Tomcat Plugin)
JDK 1.7
Mysql 5.6
Nginx 1.8.0
Redis 3.0.0
1.首先先创建maven的pom工程(taotao-parent)
把所需jar写入pom.xml
2.创建一个 jar工程(taotao-common)
继承parent ,主要写工具类,所有工程依赖
3.创建一个聚合工程(taotao-manager)
继承parent 为后台管理系统
4.创建taotao-manager的子模块(maven module –> taotao-manager-pojo(jar) )
5.继续创建manager的子模块(taotao-manager-mapper(jar))
依赖pojo
6.继续创建manager的子模块(taotao-manager-serveice(jar))
依赖mapper
7.继续创建manager的子模块(taotao-manager-web(war))
依赖service
8.managerde pom下添加插件
运行manager
9.使用 generatorSqlmapCustom 逆向工程生成 Mybatis 代码
10.在manager-web下创建SqlMapConfig.xml(添加了PageHelper)
和 applicationContext-dao.xml (配置了数据源,管理mybatis配置文件)
applicationContext-service(添加扫描包)
applicationContext-trans(事务管理)
springmvc(扫描包,静态资源映射,上传解析器)
web.xml添加 CharacterEncodingFilter 解决乱码
11easyUI tree结构
12图片服务器,vsftpd提供ftp服务,nginxhttp服务
13 kindeditor 富文本编辑器
14 创建服务层taotao-rest(war)) 依赖mapper
taotao-portal (war)
15 ajax跨域请求 jsonp
浏览器在js请求中,是允许通过script标签的src跨域请求,可以在请求的结果中添加回调方法名,在请求页面中定义方法,既可获取到跨域请求的数据。
16 httpclient 调用服务
17 redis (单机)
常用类型 String,Hash,List,Set,SortedSet
18redis集群
redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护
Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点
创建6个redis实例,端口号从7001~7006
修改redis的配置文件 port 7001 cluster-enabled yest
src下 redis-trib.rb
启动6个redis实例
replicas 表示备份1个
3主3备
集群和单机配置
一个统一接口,一个单机实现类(JedisPool ),一个集群实现类(jedisCluster)
修改逻辑先查缓存,没有再查数据库,再放入缓存
19 solr全文检索
Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。
Solr是一个全文检索服务器,只需要进行配置就可以实现全文检索服务
20solr安装
1)\dist下的solr.war 拷贝到tomcat的webAPP下,启动tomcat,停止tomcat
删除solr.war,保留解压后的war,\example\lib\ext下的jar包拷贝到工程中
2)新建solrhome,将example下的solr文件夹的内容拷贝到solrhome,
3)修改solr工程的web.xml文件
21 使用
analysis下
在solr中默认是中文分析器,需要手工配置。配置一个FieldType,在FieldType中指定中文分析器。
2、Solr中的字段必须是先定义后使用。
中文分析器
使用IK-Analyzer.
ext_stopword.dic 停用词词典
mydict.dic 扩展词典
IKAnalyzer2012FF_u1.jar 拷贝到webapp下
第三步:需要把IKAnalyzer需要的扩展词典及停用词词典、配置文件复制到solr工程的classpath。(solr\WEB-INF下新建classes)
扩展词典及停用词词典的字符集必须是utf-8
第四步:配置fieldType。需要在solrhome/collection1/conf/schema.xml中配置。
添加(TextField 分词和索引)
在搜索时是否在此字段进行搜索。例如名称,卖点,描述
后续的业务是否需要此字段 商品id
对应字段创建对应业务域
其他的对应字段创建solr字段
stored=”false” 不存储(需不需要展示)item_keywords(复制域,把其他的搜索都复制到一个域上)
q:查询条件 : 查询所有
fq:过滤条件 f1 返回域中的列表(比如写id 返回只有id)
df默认搜索域 hl.f1 高亮
添加
添加一个json格式的文件
修改
添加一个新的文档,要求id和需要修改的id一致
删除
使用xml格式
第一种
根据id删除
提交
第二种
:
22遇到个mybatis的xml不加载的问题
解决
24整合
使用solrj
创建搜索web服务(taotao-search)
与sping 整合
25创建单点登录(taotao-sso)
注意是每次使用token登录后更新redis中的有效时间
26cookie共享
置domain为:.taotao.com
设置path:/
如果是localhost不要设置domain。直接设置path就可以了。
27 拦截器
实现 HandlerInterceptor
preHandler 在 handler执行前执行
postHandler 在handler执行后,返回modelAndView之前
afterCompletion 返回modelandView之后,响应用户之后
springmvc添加配置文件
28 购物车保存到cookie中,或者redis中
29 订单系统(taotao-order)
30 nginx
可以实现在同一台服务运行多个网站,而且网站之间互相不干扰。
同一个服务器可能有一个ip,网站需要使用80端口。网站的域名不同。
区分不同的网站有三种方式:
1、ip区分
2、端口区分
3、域名区分
需要一台服务器绑定多个ip地址。
方法一:
使用标准的网络配置工具(比如ifconfig和route命令)添加lP别名:
反向代理
Nginx只做请求的转发,后台有多个http服务器提供服务,nginx的功能就是把请求转发给后面的服务器,决定把请求转发给谁。
ip–>nginx
定义2个服务
转发
server {
listen 80;
server_name 8081.xxx.com;
location / {
proxy_pass http://tomcatserver1;
index index.html index.htm;
}
nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至 tomcat服务器。
nginx负载均衡服务器:192.168.25.141
tomcat1服务器:192.168.25.141:8080
tomcat2服务器:192.168.25.141:8081
31 SolrCloud和zookeeper
SolrCloud是基于Solr和Z
b4eb
ookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作为集群的配置信息中心。
在/usr/local/目录下创建一个solrcloud目录。把zookeeper解压后的文件夹复制到此目录下三份。分别命名为zookeeper1、2、3
把zookeeper1下conf目录下的zoo_sample.cfg文件复制一份改名为zoo.cfg
修改zoo.cfg的配置
2881选举 3881投票
启动zookeeper。进入zookeeper1/bin目录下。
启动zookeeper:./zkServer.sh start
关闭:./zkServer.sh stop
查看状态:./zkServer.sh status
solr实例
第一步:创建4个tomcat实例,修改其端口。8080-8083
第二步:解压solr-4.10.3.tar.gz压缩包。从压缩包中复制solr.war到tomcat。
第三步:启动tomcat解压war包。把solr-4.10.3目录下example目录下的关于日志相关的jar包添加到solr工程中。
第四步:创建solrhome。修改web.xml指定solrhome的位置。
把solrhome中的配置文件上传到zookeeper集群。使用zookeeper的客户端上传。
客户端命令位置:/root/solr-4.10.3/example/scripts/cloud-scripts
./zkcli.sh -zkhost 192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183 -cmd upconfig -confdir /usr/local/solrcloud/solrhome1/collection1/conf -confname myconf
修改每一台solr的tomcat 的 bin目录下catalina.sh文件中加入DzkHost指定zookeeper服务器地址:
JAVA_OPTS=”-DzkHost=192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183”
创建一个两片的collection,每片是一主一备。
使用以下命令创建:
浏览器执行
http://192.168.25.154:8080/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
动作 action 创建
名字 name collection2
分几片 numShards
有几个备份 replicationFactor
删除collection1.
http://192.168.25.154:8080/solr/admin/collections?action=DELETE&name=collection1
32 查看安装
whereis mysql
查看装了哪些mysql的包 rpm -qa|grep mysql
33maven热部署
maven热部署
Maven的配置
修改项目的pom.xml文件,在 节点下面增加如下配置:tomcat7的配置
org.apache.tomcat.maven
tomcat7-maven-plugin
8081
/
http://192.168.25.136:8080/manager/text
tomcat
tomcat
热部署之前,修改配置文件中的数据库配置、调用服务的配置为生产环境需要的ip及端口。
执行以下命令:
初次部署可以使用 “tomcat7:deploy” 命令
如果已经部署过使用 “tomcat7:redeploy” 命令
部署跳过测试:
tomcat7:redeploy -DskipTests
先放上总体结构
后台管理系统:管理商品、订单、类目、商品规格属性、用户管理以及内容发布等功能。
前台系统:用户可以在前台系统中进行注册、登录、浏览商品、首页、下单等操作。
会员系统:用户可以在该系统中查询已下的订单、收藏的商品、我的优惠券、团购等信息。
订单系统:提供下单、查询订单、修改订单状态、定时处理订单。
搜索系统:提供商品的搜索功能。
单点登录系统:为多个系统之间提供用户登录凭证以及查询登录用户的信息。
使用软件的版本
Tomcat 7.0.53(Maven Tomcat Plugin)
JDK 1.7
Mysql 5.6
Nginx 1.8.0
Redis 3.0.0
1.首先先创建maven的pom工程(taotao-parent)
把所需jar写入pom.xml
2.创建一个 jar工程(taotao-common)
继承parent ,主要写工具类,所有工程依赖
3.创建一个聚合工程(taotao-manager)
继承parent 为后台管理系统
4.创建taotao-manager的子模块(maven module –> taotao-manager-pojo(jar) )
5.继续创建manager的子模块(taotao-manager-mapper(jar))
依赖pojo
6.继续创建manager的子模块(taotao-manager-serveice(jar))
依赖mapper
7.继续创建manager的子模块(taotao-manager-web(war))
依赖service
8.managerde pom下添加插件
</build> <!-- 配置插件 --> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <configuration> <port>8080</port> <path>/</path> </configuration> </plugin> </plugins> </build>
运行manager
9.使用 generatorSqlmapCustom 逆向工程生成 Mybatis 代码
10.在manager-web下创建SqlMapConfig.xml(添加了PageHelper)
和 applicationContext-dao.xml (配置了数据源,管理mybatis配置文件)
applicationContext-service(添加扫描包)
applicationContext-trans(事务管理)
springmvc(扫描包,静态资源映射,上传解析器)
web.xml添加 CharacterEncodingFilter 解决乱码
11easyUI tree结构
12图片服务器,vsftpd提供ftp服务,nginxhttp服务
13 kindeditor 富文本编辑器
14 创建服务层taotao-rest(war)) 依赖mapper
taotao-portal (war)
15 ajax跨域请求 jsonp
浏览器在js请求中,是允许通过script标签的src跨域请求,可以在请求的结果中添加回调方法名,在请求页面中定义方法,既可获取到跨域请求的数据。
16 httpclient 调用服务
17 redis (单机)
常用类型 String,Hash,List,Set,SortedSet
18redis集群
redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护
Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点
创建6个redis实例,端口号从7001~7006
修改redis的配置文件 port 7001 cluster-enabled yest
src下 redis-trib.rb
启动6个redis实例
./redis-trib.rb create --replicas 1 192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003 192.168.25.153:7004 192.168.25.153:7005 192.168.25.153:7006
replicas 表示备份1个
3主3备
集群和单机配置
<!-- jedis客户端单机版 --> <bean id="redisClient" class="redis.clients.jedis.JedisPool"> <constructor-arg name="host" value="127.0.0.1"></constructor-arg> <constructor-arg name="port" value="6379"></constructor-arg> <constructor-arg name="poolConfig" ref="jedisPoolConfig"></constructor-arg> </bean> <!-- 集群版 <bean id="redisClient" class="redis.clients.jedis.JedisCluster"> <constructor-arg name="nodes"> <set> <bean class="redis.clients 4000 .jedis.HostAndPort"> <constructor-arg name="host" value="192.168.25.153"></constructor-arg> <constructor-arg name="port" value="7001"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.25.153"></constructor-arg> <constructor-arg name="port" value="7002"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.25.153"></constructor-arg> <constructor-arg name="port" value="7003"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.25.153"></constructor-arg> <constructor-arg name="port" value="7004"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.25.153"></constructor-arg> <constructor-arg name="port" value="7005"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.25.153"></constructor-arg> <constructor-arg name="port" value="7006"></constructor-arg> </bean> </set> </constructor-arg> <constructor-arg name="poolConfig" ref="jedisPoolConfig"></constructor-arg> </bean> --> <!-- 连接池配置 --> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <!-- 最大连接数 --> <property name="maxTotal" value="30" /> <!-- 最大空闲连接数 --> <property name="maxIdle" value="10" /> <!-- 每次释放连接的最大数目 --> <property name="numTestsPerEvictionRun" value="1024" /> <!-- 释放连接的扫描间隔(毫秒) --> <property name="timeBetweenEvictionRunsMillis" value="30000" /> <!-- 连接最小空闲时间 --> <property name="minEvictableIdleTimeMillis" value="1800000" /> <!-- 连接空闲多久后释放, 当空闲时间>该值 且 空闲连接>最大空闲连接数 时直接释放 --> <property name="softMinEvictableIdleTimeMillis" value="10000" /> <!-- 获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1 --> <property name="maxWaitMillis" value="1500" /> <!-- 在获取连接的时候检查有效性, 默认false --> <property name="testOnBorrow" value="true" /> <!-- 在空闲时检查有效性, 默认false --> <property name="testWhileIdle" value="true" /> <!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true --> <property name="blockWhenExhausted" value="false" /> </bean> <!-- <bean id="jedisClientCluster" class="com.taotao.rest.dao.impl.JedisClientCluster"></bean> --> <bean id="JedisClientSingle" class="com.taotao.rest.dao.impl.JedisClientSingle"></bean> </beans>
一个统一接口,一个单机实现类(JedisPool ),一个集群实现类(jedisCluster)
修改逻辑先查缓存,没有再查数据库,再放入缓存
19 solr全文检索
Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。
Solr是一个全文检索服务器,只需要进行配置就可以实现全文检索服务
20solr安装
1)\dist下的solr.war 拷贝到tomcat的webAPP下,启动tomcat,停止tomcat
删除solr.war,保留解压后的war,\example\lib\ext下的jar包拷贝到工程中
2)新建solrhome,将example下的solr文件夹的内容拷贝到solrhome,
3)修改solr工程的web.xml文件
21 使用
analysis下
在solr中默认是中文分析器,需要手工配置。配置一个FieldType,在FieldType中指定中文分析器。
2、Solr中的字段必须是先定义后使用。
中文分析器
使用IK-Analyzer.
ext_stopword.dic 停用词词典
mydict.dic 扩展词典
IKAnalyzer2012FF_u1.jar 拷贝到webapp下
第三步:需要把IKAnalyzer需要的扩展词典及停用词词典、配置文件复制到solr工程的classpath。(solr\WEB-INF下新建classes)
扩展词典及停用词词典的字符集必须是utf-8
第四步:配置fieldType。需要在solrhome/collection1/conf/schema.xml中配置。
添加(TextField 分词和索引)
1. 业务字段配置
在搜索时是否在此字段进行搜索。例如名称,卖点,描述
后续的业务是否需要此字段 商品id
对应字段创建对应业务域
其他的对应字段创建solr字段
stored=”false” 不存储(需不需要展示)item_keywords(复制域,把其他的搜索都复制到一个域上)
q:查询条件 : 查询所有
fq:过滤条件 f1 返回域中的列表(比如写id 返回只有id)
df默认搜索域 hl.f1 高亮
添加
添加一个json格式的文件
修改
添加一个新的文档,要求id和需要修改的id一致
删除
使用xml格式
第一种
根据id删除
提交
第二种
:
22遇到个mybatis的xml不加载的问题
解决
<!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 --> <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
24整合
使用solrj
创建搜索web服务(taotao-search)
与sping 整合
<!-- 配置SolrServer对象 --> <!-- 单机版 --> <bean id="httpSolrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer"> <constructor-arg name="baseURL" value="${SOLR.SERVER.URL}"></constructor-arg> </bean>
25创建单点登录(taotao-sso)
注意是每次使用token登录后更新redis中的有效时间
26cookie共享
置domain为:.taotao.com
设置path:/
如果是localhost不要设置domain。直接设置path就可以了。
27 拦截器
实现 HandlerInterceptor
preHandler 在 handler执行前执行
postHandler 在handler执行后,返回modelAndView之前
afterCompletion 返回modelandView之后,响应用户之后
springmvc添加配置文件
<mvc:interceptors> <mvc:interceptor> <!-- 拦截订单类请求 --> <mvc:mapping path="/item/**"/> <bean class="com.taotao.portal.interceptor.LoginInterceptor"/> </mvc:interceptor> </mvc:interceptors>
28 购物车保存到cookie中,或者redis中
29 订单系统(taotao-order)
30 nginx
可以实现在同一台服务运行多个网站,而且网站之间互相不干扰。
同一个服务器可能有一个ip,网站需要使用80端口。网站的域名不同。
区分不同的网站有三种方式:
1、ip区分
2、端口区分
3、域名区分
需要一台服务器绑定多个ip地址。
方法一:
使用标准的网络配置工具(比如ifconfig和route命令)添加lP别名:
反向代理
Nginx只做请求的转发,后台有多个http服务器提供服务,nginx的功能就是把请求转发给后面的服务器,决定把请求转发给谁。
ip–>nginx
定义2个服务
upstream tomcatserver1{ server 192.168.25.141:8080 } upstream tomcatserver2{ server 192.168.25.141:8081 }
转发
server {
listen 80;
server_name 8081.xxx.com;
location / {
proxy_pass http://tomcatserver1;
index index.html index.htm;
}
} server { listen 80; server_name 8082.xxx.com; location / { proxy_pass http://tomcatserver2; index index.html index.htm; } }
nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至 tomcat服务器。
nginx负载均衡服务器:192.168.25.141
tomcat1服务器:192.168.25.141:8080
tomcat2服务器:192.168.25.141:8081
31 SolrCloud和zookeeper
SolrCloud是基于Solr和Z
b4eb
ookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作为集群的配置信息中心。
在/usr/local/目录下创建一个solrcloud目录。把zookeeper解压后的文件夹复制到此目录下三份。分别命名为zookeeper1、2、3
1. 在每个zookeeper文件夹下创建一个data目录。 2. 在data文件夹下创建一个文件名称为myid,文件的内容就是此zookeeper的编号1、2、3
[root@bogon solrcloud]# mkdir zookeeper2/data [root@bogon solrcloud]# echo 2 >> zookeeper2/data/myid [root@bogon solrcloud]# ll zookeeper2/data total 4 -rw-r--r--. 1 root root 2 Sep 17 23:44 myid [root@bogon solrcloud]# cat zookeeper2/data/myid 2 [root@bogon solrcloud]# mkdir zookeeper3/data [root@bogon solrcloud]# echo 3 >> zookeeper3/data/myid
把zookeeper1下conf目录下的zoo_sample.cfg文件复制一份改名为zoo.cfg
修改zoo.cfg的配置
2881选举 3881投票
启动zookeeper。进入zookeeper1/bin目录下。
启动zookeeper:./zkServer.sh start
关闭:./zkServer.sh stop
查看状态:./zkServer.sh status
solr实例
第一步:创建4个tomcat实例,修改其端口。8080-8083
第二步:解压solr-4.10.3.tar.gz压缩包。从压缩包中复制solr.war到tomcat。
第三步:启动tomcat解压war包。把solr-4.10.3目录下example目录下的关于日志相关的jar包添加到solr工程中。
第四步:创建solrhome。修改web.xml指定solrhome的位置。
把solrhome中的配置文件上传到zookeeper集群。使用zookeeper的客户端上传。
客户端命令位置:/root/solr-4.10.3/example/scripts/cloud-scripts
./zkcli.sh -zkhost 192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183 -cmd upconfig -confdir /usr/local/solrcloud/solrhome1/collection1/conf -confname myconf
修改每一台solr的tomcat 的 bin目录下catalina.sh文件中加入DzkHost指定zookeeper服务器地址:
JAVA_OPTS=”-DzkHost=192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183”
创建一个两片的collection,每片是一主一备。
使用以下命令创建:
浏览器执行
http://192.168.25.154:8080/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
动作 action 创建
名字 name collection2
分几片 numShards
有几个备份 replicationFactor
删除collection1.
http://192.168.25.154:8080/solr/admin/collections?action=DELETE&name=collection1
32 查看安装
whereis mysql
查看装了哪些mysql的包 rpm -qa|grep mysql
33maven热部署
maven热部署
Maven的配置
修改项目的pom.xml文件,在 节点下面增加如下配置:tomcat7的配置
org.apache.tomcat.maven
tomcat7-maven-plugin
8081
/
http://192.168.25.136:8080/manager/text
tomcat
tomcat
热部署之前,修改配置文件中的数据库配置、调用服务的配置为生产环境需要的ip及端口。
执行以下命令:
初次部署可以使用 “tomcat7:deploy” 命令
如果已经部署过使用 “tomcat7:redeploy” 命令
部署跳过测试:
tomcat7:redeploy -DskipTests
相关文章推荐
- 关于js作用域总结,对妙味视频学习的总结
- 关于ffmpeg 的总结(一个linux 下 集 屏幕录像录音,音频视频转换,合并音频视频文件,格式转换于一身的命令)
- 关于马士兵的java教学视频
- 关于SCCM视频分享的总结
- [转]关于ffmpeg 的总结(一个linux 下 集 屏幕录像录音,音频视频转换,合并音频视频文件,格式转换于一身的命令)
- 关于ffmpeg 的总结(一个linux 下 集 屏幕录像录音,音频视频转换,合并音频视频文件,格式转换于一身的命令)
- 工作笔记(三)--关于文件、图片、视频的总结
- 看黑马安卓基础教学视频总结(通知栏&反编译&Fragment)
- 关于unity中支持的音频的格式和视频的格式的总结
- 关于视频相关的播放、转换技术总结
- 关于ffmpeg 的总结(一个linux 下 集 屏幕录像录音,音频视频转换,合并音频视频文件,格式转换于一身的命令)
- 看黑马安卓基础教学视频总结(广播)
- [转]关于ffmpeg 的总结(一个linux 下 集 屏幕录像录音,音频视频转换,合并音频视频文件,格式转换于一身的命令)
- 黑马程序员--关于视频中总结和不懂的查阅总结
- 关于VideoQA(视频问答)的基本思路总结
- 关于视频播放VideoView的一些总结
- 关于Android 支持 4K 视频显示的问题总结
- 关于ffmpeg 的总结(一个linux下集屏幕录像录音,音频视频转换,合并音频视频文件,格式转换于一身的命令)
- vb6.0陈伟教学视频总结
- 关于网页在线视频播放器ckplay的部分总结!