sql镜像备份 转 浪客 博客
总结了一些SQL Server常用的备份还原T-SQL 语句,代码基本是支持2005/2008的,不过部分功能需要企业版数据库:
/*
Author:Terry.Sai.M.J 浪客
Location:BeiJing
DateTime:GETDATE()
Description:使用镜像备份
*/
IF DB_ID('db') IS NOT NULL
DROP DATABASE db;
GO
CREATE DATABASE db;
GO
CREATE TABLE db.dbo.T(ID INT);
INSERT INTO db.dbo.T SELECT 1;
BACKUP DATABASE db TO DISK='c:"1.bak' MIRROR TO DISK='c:"2.bak'
WITH FORMAT,MEDIANAME='MydbMedia';
RESTORE DATABASE db FROM DISK='c:"2.bak' WITH RECOVERY,REPLACE
SELECT COUNT(*) FROM db.dbo.T
RESTORE DATABASE db FROM DISK='c:"1.bak' WITH RECOVERY,REPLACE
SELECT COUNT(*) FROM db.dbo.T
DROP DATABASE db;
GO
/*
Author:Terry.Sai.M.J 浪客
Location:BeiJing
DateTime:GETDATE()
Description:使用多备份设备组成媒体集进行备份还原
*/
--删除已经存在的db数据库
IF DB_ID('db') IS NOT NULL
DROP DATABASE db;
GO
--创建数据库db
CREATE DATABASE db;
GO
--创建T表
CREATE TABLE db.dbo.T(ID INT PRIMARY KEY IDENTITY(1,1));
--插入一条记录
INSERT INTO db.dbo.T DEFAULT VALUES
--首先使用FORMAT启用一个新的媒体标头,然后分别放到3个磁盘中,形成一个备份集,同时命名一个媒体名
BACKUP DATABASE db TO DISK='c:"1.bak',DISK='d:"1.bak',DISK='e:"1.bak'
WITH FORMAT,MEDIANAME='MydbMedia'
--插入一条记录
INSERT INTO db.dbo.T DEFAULT VALUES
--创建一个差异备份,必须强制的与主备份一样的路径(3个磁盘),使用相同的路径的话,可以通过媒体标头区分上文的主备份与现在的差异备份,因为我们使用了NOFORMAT关键字,就是不重新初始化媒体(这也叫追加媒体集).还有加上DIFFERENTIAL以表示是差异备份.还要指定媒体名称
BACKUP DATABASE db TO DISK='c:"1.bak',DISK='d:"1.bak',DISK='e:"1.bak'
WITH NOFORMAT/*或者使用NOINIT,效果一样的哈*/,MEDIANAME='MydbMedia',DIFFERENTIAL;
GO
--还原主备份
RESTORE DATABASE db FROM DISK='c:"1.bak',DISK='d:"1.bak',DISK='e:"1.bak'
WITH MEDIANAME='MydbMedia',FILE=1,NORECOVERY,REPLACE;
--还原差异备份(注意FILE=2,因为他标头的备份是属于2顺序的.第一个备份的就是1,依次类推)
RESTORE DATABASE db FROM DISK='c:"1.bak',DISK='d:"1.bak',DISK='e:"1.bak'
WITH MEDIANAME='MydbMedia',FILE=2,NORECOVERY;
--数据库在线
RESTORE DATABASE db WITH RECOVERY
--测试记录
SELECT * FROM db.dbo.T
GO
/*
Author:Terry.Sai.M.J 浪客
Location:BeiJing
DateTime:GETDATE()
Description:数据库的在线还原(读写文件组完整恢复模式)
*/
IF DB_ID('db') IS NOT NULL
DROP DATABASE db;
GO
CREATE DATABASE db
ON PRIMARY
(
NAME=db_data,
FILENAME='c:"1.mdf'
),
FILEGROUP FG
(
NAME=db_data_fg,
FILENAME='c:"2.ndf'
)
LOG ON
(
NAME=db_log,
FILENAME='c:"1.ldf'
)
GO
--在主文件组下创建表T
CREATE TABLE db.dbo.T(ID INT PRIMARY KEY) ON [PRIMARY];
--插入记录
INSERT INTO db.dbo.T SELECT 1
GO
--主文件组在线,那么就视为数据库在线
--创建文件db_data_fg备份
BACKUP DATABASE db FILE='db_data_fg' TO DISK='c:"1.bak' WITH FORMAT
--进行在先还原,指定NORECOVERY 以后,就只能按顺序进行前滚,同时文件离线还原状态.
RESTORE DATABASE db FILE='db_data_fg' FROM DISK='c:"1.bak' WITH NORECOVERY
--创建表失败,因为离线
CREATE TABLE db.dbo.T1(ID INT PRIMARY KEY) ON fg;
--主文件组不受影响,因为只是FG离线还原,只有企业版才支持哈.这种情况下 生产环境中,不至于数据库全部挂了.
SELECT * FROM db.dbo.T
--备份日志,使用COPY_ONLY,因为是要获取的日志是离线状态时候的,COPY_ONLY仅复制备份是在 SQL Server 2005 中引入的,用于在执行特殊目的的备份(例如在联机文件还原前备份日志)时使用
--如果是只读文件的话,明显不会出现差异数据,所以不需要日志备份了
--简单恢复模式的话,日志都不能备份,所以也是一样
--顺便提一句,如果数据库是文件损坏,而且损坏时候都在线,要使用NO_TRUNCATE获取日志
BACKUP LOG db TO DISK='c:"2.bak' WITH FORMAT,COPY_ONLY;
--恢复LOG
RESTORE LOG db FROM DISK='c:"2.bak' WITH RECOVERY
--FG终于在线了,恭喜下,创建一个T1表
CREATE TABLE db.dbo.T1(ID INT PRIMARY KEY) ON fg;
GO
DROP DATABASE db;
/*
Author:Terry.Sai.M.J 浪客
Location:BeiJing
DateTime:GETDATE()
Description:数据库的段落还原(完整恢复模式)
*/
IF DB_ID('db') IS NOT NULL
DROP DATABASE db
GO
--创建包含多个文件组的数据库db
CREATE DATABASE db
ON PRIMARY
(
NAME=db_data,
FILENAME='c:"db_data.mdf'
),
FILEGROUP A
(
NAME=db_data_a,
FILENAME='c:"db_data_a.ndf'
),
FILEGROUP B
(
NAME=db_data_b,
FILENAME='c:"db_data_b.ndf'
),
FILEGROUP C
(
NAME=db_data_c,
FILENAME='c:"db_data_c.ndf'
)
LOG ON
(
NAME=db_log,
FILENAME='c:"db_log.ldf'
)
GO
--在主文件组下创建表
CREATE TABLE db.dbo.T(ID INT PRIMARY KEY IDENTITY(1,1)) ON [PRIMARY];
--备份主文件组PRIMARY
BACKUP DATABASE db FILEGROUP='PRIMARY' TO DISK='c:"db_data.bak' WITH FORMAT;
INSERT INTO db.dbo.T DEFAULT VALUES
--备份当前日志
BACKUP LOG db TO DISK='c:"db_data_1.bak' WITH FORMAT;
GO
--在B文件组下面创建表
CREATE TABLE db.dbo.T1(ID INT PRIMARY KEY IDENTITY(1,1)) ON [B];
--备份文件组B
BACKUP DATABASE db FILEGROUP='B' TO DISK='c:"db_data_b_1.bak' WITH FORMAT;
INSERT INTO db.dbo.T1 DEFAULT VALUES
--备份当前日志
BACKUP LOG db TO DISK='c:"db_data_2.bak' WITH FORMAT;
GO
--备份C
BACKUP DATABASE db FILEGROUP='C' TO DISK='c:"db_data_c.bak' WITH FORMAT;
--备份A
BACKUP DATABASE db FILEGROUP='A' TO DISK='c:"db_data_a.bak' WITH FORMAT;
INSERT INTO db.dbo.T1 DEFAULT VALUES
--备份当前日志
BACKUP LOG db TO DISK='c:"db_data_b.bak' WITH FORMAT;
GO
--模拟破坏,删除其中一个ndf,然后制定NORECOVERY关键字,使数据库处于RESTOING状态,NO_TRUNCATE表示损坏还能备份
BACKUP LOG db TO DISK='c:"db_log.bak' WITH NORECOVERY, NO_TRUNCATE,FORMAT
GO
--首先恢复主文件组,注意现在是段落还原,所以要制定PARTIAL,而且只能出现一次该关键字.
RESTORE DATABASE db FILEGROUP='PRIMARY' FROM DISK='c:"db_data.bak' WITH PARTIAL,NORECOVERY;
--恢复所有日志,注意先后顺序,日志是不区分文件组,所以全部都要恢复
RESTORE LOG db FROM DISK='c:"db_data_1.bak' WITH NORECOVERY;
RESTORE LOG db FROM DISK='c:"db_data_2.bak' WITH NORECOVERY;
RESTORE LOG db FROM DISK='c:"db_data_b.bak' WITH NORECOVERY
RESTORE LOG db FROM DISK='c:"db_log.bak' WITH RECOVERY
--结果正确 ,返回1行记录
SELECT * FROM db.dbo.T
--出错,因为段落未还原的文件组,都处于离线状态
SELECT * FROM db.dbo.T1
GO
--恢复A文件组,还原日志,注意顺序,因为LOG的LSN肯定要晚于文件组A的备份
RESTORE DATABASE db FILEGROUP='A' FROM DISK='c:"db_data_a.bak' WITH NORECOVERY
RESTORE LOG db FROM DISK='c:"db_data_b.bak' WITH NORECOVERY
RESTORE LOG db FROM DISK='c:"db_log.bak' WITH RECOVERY
GO
--恢复B文件组,还原日志,注意顺序,因为LOG的LSN肯定要晚于文件组B的备份
RESTORE DATABASE db FILEGROUP='B' FROM DISK='c:"db_data_b_1.bak' WITH NORECOVERY
RESTORE LOG db FROM DISK='c:"db_data_2.bak' WITH NORECOVERY;
RESTORE LOG db FROM DISK='c:"db_data_b.bak' WITH NORECOVERY
RESTORE LOG db FROM DISK='c:"db_log.bak' WITH RECOVERY
SELECT * FROM db.dbo.T1
GO
--恢复C文件组,还原日志,注意顺序,因为LOG的LSN肯定要晚于文件组C的备份
RESTORE DATABASE db FILEGROUP='C' FROM DISK='c:"db_data_c.bak' WITH NORECOVERY
RESTORE LOG db FROM DISK='c:"db_data_b.bak' WITH NORECOVERY
RESTORE LOG db FROM DISK='c:"db_log.bak' WITH RECOVERY
GO
--删除测试数据库
DROP DATABASE db
GO
/*
Author:Terry.Sai.M.J 浪客
Location:BeiJing
DateTime:GETDATE()
Description:恢复到特定的备份日期
*/
IF DB_ID('db') IS NOT NULL
DROP DATABASE db;
GO
CREATE DATABASE db;
GO
CREATE TABLE db.dbo.T(ID INT PRIMARY KEY IDENTITY(1,1));
GO
BACKUP DATABASE db TO DISK='c:"1.bak' WITH FORMAT;
GO
INSERT INTO db.dbo.T DEFAULT VALUES;
GO
WAITFOR DELAY '00:00:01';
DECLARE @Datetime BINARY(128);
SET @Datetime=CAST(GETDATE() AS BINARY(128));
SET CONTEXT_INFO @Datetime
GO
INSERT INTO db.dbo.T DEFAULT VALUES;
GO
BACKUP LOG db TO DISK='c:"2.bak' WITH FORMAT;
GO
RESTORE DATABASE db FROM DISK='c:"1.bak' WITH NORECOVERY,REPLACE;
GO
DECLARE @Now DATETIME;
SET @Now=DATEADD(SECOND,-1,(SELECT CAST(CONTEXT_INFO() AS DATETIME)));
--SET @Now=DATEADD(MS,-20,(SELECT CAST(CONTEXT_INFO() AS DATETIME)));
RESTORE LOG db FROM DISK='c:"2.bak' WITH RECOVERY,STOPAT=@Now;
GO
SELECT * FROM db.dbo.T
DROP DATABASE db;
GO
/*
Author:Terry.Sai.M.J 浪客
Location:BeiJing
DateTime:GETDATE()
Description:使用日志恢复数据库
*/
IF DB_ID('db') IS NOT NULL
DROP DATABASE db;
GO
CREATE DATABASE db;
GO
CREATE TABLE db.dbo.T(ID INT PRIMARY KEY IDENTITY(1,1));
GO
BACKUP DATABASE db TO DISK='c:"1.bak' WITH FORMAT;
GO
INSERT INTO db.dbo.T DEFAULT VALUES;
GO
BACKUP LOG db TO DISK='c:"2.bak' WITH FORMAT;
GO
INSERT INTO db.dbo.T DEFAULT VALUES;
GO
BACKUP LOG db TO DISK='c:"3.bak' WITH FORMAT;
GO
RESTORE DATABASE db FROM DISK='c:"1.bak' WITH RECOVERY,REPLACE;
GO
SELECT * FROM db.dbo.T
GO
RESTORE DATABASE db FROM DISK='c:"1.bak' WITH NORECOVERY,REPLACE;
GO
RESTORE LOG db FROM DISK='c:"2.bak' WITH RECOVERY;
GO
SELECT * FROM db.dbo.T
GO
RESTORE DATABASE db FROM DISK='c:"1.bak' WITH NORECOVERY,REPLACE;
GO
RESTORE LOG db FROM DISK='c:"2.bak' WITH NORECOVERY;
GO
RESTORE LOG db FROM DISK='c:"3.bak' WITH RECOVERY;
GO
SELECT * FROM db.dbo.T
GO
DROP DATABASE db;
/*
Author:Terry.Sai.M.J 浪客
Location:BeiJing
DateTime:GETDATE()
Description:使用NO_TRUNCATE 备份损坏的DB
*/
IF DB_ID('db') IS NOT NULL
DROP DATABASE db;
GO
CREATE DATABASE db
ON PRIMARY
(
NAME=db_data,
FILENAME='c:"db_data.mdf'
),
(
NAME=db_data1,
FILENAME='c:"db_data1.ndf'
)
LOG ON
(
NAME=db_log,
FILENAME='c:"db_log.log'
);
GO
CREATE TABLE db.dbo.T(ID INT PRIMARY KEY IDENTITY(1,1));
GO
BACKUP DATABASE db TO DISK='c:"1.bak' WITH FORMAT;
GO
INSERT INTO db.dbo.T DEFAULT VALUES;
GO
--CMD-> net stop mssqlserver
--删除c:"db_data1.ndf 模拟破坏
--CMD-> net start mssqlserver
BACKUP LOG db TO DISK='c:"2.bak' WITH FORMAT,NO_TRUNCATE
GO
RESTORE DATABASE db FROM DISK='c:"1.bak' WITH NORECOVERY;
GO
RESTORE LOG db FROM DISK='c:"2.bak' WITH RECOVERY;
GO
SELECT * FROM db.dbo.T
DROP DATABASE db;
GO
/*
Author:Terry.Sai.M.J 浪客
Location:BeiJing
DateTime:GETDATE()
Description:差异备份,日志备份还原
*/
IF DB_ID('db') IS NOT NULL
DROP DATABASE db
GO
CREATE DATABASE db
GO
CREATE TABLE db.dbo.T(ID INT PRIMARY KEY IDENTITY(1,1));
GO
BACKUP DATABASE db TO DISK='c:"1.bak' WITH FORMAT
GO
INSERT INTO db.dbo.T DEFAULT VALUES
GO
BACKUP DATABASE db TO DISK='c:"2.bak' WITH FORMAT,DIFFERENTIAL
GO
INSERT INTO db.dbo.T DEFAULT VALUES
GO
BACKUP LOG db TO DISK='c:"3.bak' WITH FORMAT
GO
DROP DATABASE db;
RESTORE DATABASE db FROM DISK='c:"1.bak' WITH RECOVERY,REPLACE;
GO
SELECT COUNT(*) FROM db.dbo.T;
GO
DROP DATABASE db;
GO
RESTORE DATABASE db FROM DISK='c:"1.bak' WITH NORECOVERY,REPLACE;
GO
RESTORE DATABASE db FROM DISK='c:"2.bak' WITH RECOVERY;
GO
SELECT COUNT(*) FROM db.dbo.T;
DROP DATABASE db;
RESTORE DATABASE db FROM DISK='c:"1.bak' WITH NORECOVERY,REPLACE;
GO
RESTORE DATABASE db FROM DISK='c:"2.bak' WITH NORECOVERY;
GO
RESTORE LOG db FROM DISK='c:"3.bak' WITH RECOVERY;
GO
SELECT COUNT(*) FROM db.dbo.T;
DROP DATABASE db;
/*
Author:Terry.Sai.M.J 浪客
Location:BeiJing
DateTime:GETDATE()
Description:还原master数据库
*/
--Bakup master database
BACKUP DATABASE [master] TO DISK='F:"Documents and Settings"Administrator"桌面"master.bak' WITH FORMAT
--Test for creating database
CREATE DATABASE db
ON PRIMARY
(
NAME=db_data,
FILENAME='F:"Documents and Settings"Administrator"桌面"db_data.mdf'
)
LOG ON
(
NAME=db_log,
FILENAME='F:"Documents and Settings"Administrator"桌面"db_log.ldf'
);
--开始菜单->运行->services.msc->找到sqlserver服务以及对应的实例->找到对应服务的路径(F:"Program Files"Microsoft SQL Server"MSSQL10.MSSQLSERVER"MSSQL"Binn")->在运行中输入cmd->cd 刚才的目录->输入sqlservr.exe -m(单用户模式登录)->然后打开SSMS->新建一个查询(注意只有一个连接,不要连接SSMS数据库引擎了)->然后运行下面的sql
RESTORE DATABASE master FROM DISK='F:"Documents and Settings"Administrator"桌面"master.bak'
--还原db,
CREATE DATABASE db
ON PRIMARY
(
NAME=db_data,
FILENAME='F:"Documents and Settings"Administrator"桌面"db_data.mdf'
)
LOG ON
(
NAME=db_log,
FILENAME='F:"Documents and Settings"Administrator"桌面"db_log.ldf'
)
FOR ATTACH
DROP DATABASE db
--Create test database
CREATE DATABASE db
GO
--Create test table on database named db
CREATE TABLE db.dbo.T (ID INT PRIMARY KEY);
GO
--Create full backup to disk 'F:"Documents and Settings"Administrator"桌面"1.bak'
BACKUP DATABASE db TO DISK='F:"Documents and Settings"Administrator"桌面"1.bak' WITH FORMAT;
GO
--Begin a marked transaction "Tran1"
BEGIN TRAN Tran1 WITH MARK
INSERT INTO db.dbo.T SELECT 1
COMMIT TRAN Tran1
--Backup the transaction log to disk 'F:"Documents and Settings"Administrator"桌面"2.bak'
BACKUP LOG db TO DISK='F:"Documents and Settings"Administrator"桌面"2.bak' WITH FORMAT
GO
DROP DATABASE db;
GO
RESTORE DATABASE db FROM DISK='F:"Documents and Settings"Administrator"桌面"1.bak' WITH NORECOVERY;
GO
RESTORE LOG db FROM DISK='F:"Documents and Settings"Administrator"桌面"2.bak' WITH STOPBEFOREMARK='Tran1';
GO
SELECT COUNT(*) FROM db.dbo.T
DROP DATABASE db;
GO
RESTORE DATABASE db FROM DISK='F:"Documents and Settings"Administrator"桌面"1.bak' WITH NORECOVERY;
GO
RESTORE LOG db FROM DISK='F:"Documents and Settings"Administrator"桌面"2.bak' WITH STOPATMARK='Tran1';
GO
SELECT COUNT(*) FROM db.dbo.T
DROP DATABASE db
/*
Author:Terry.Sai.M.J 浪客
Location:BeiJing
DateTime:GETDATE()
Description:使用同一个媒体簇来保存不同数据库的备份
*/
CREATE DATABASE db;
GO
CREATE DATABASE db1;
GO
CREATE TABLE db.dbo.T(ID INT PRIMARY KEY IDENTITY(1,1));
INSERT INTO db.dbo.T DEFAULT VALUES
CREATE TABLE db1.dbo.T(ID INT PRIMARY KEY IDENTITY(1,1));
INSERT INTO db1.dbo.T DEFAULT VALUES
--备份db,先清空媒体标头等其他媒体信息
BACKUP DATABASE db TO DISK='c:"1.bak' WITH FORMAT;
--备份数据库db1,使用NOFORMAT,保存现在备份1.bak的媒体信息.
BACKUP DATABASE db1 TO DISK='c:"1.bak' WITH NOFORMAT;
--指定FILE=1还原,因为db先备份
RESTORE DATABASE db FROM DISK='c:"1.bak' WITH RECOVERY,REPLACE,FILE=1;
--指定FILE=2还原,因为db1后备份
RESTORE DATABASE db1 FROM DISK='c:"1.bak' WITH RECOVERY,REPLACE,FILE=2;
--测试
SELECT * FROM db.dbo.T
UNION ALL
SELECT * FROM db1.dbo.T
GO
--删除实例数据库
DROP DATABASE db,db1
GO
/*
Description:快照备份还原
*/
IF DB_ID('db_snapshot') IS NOT NULL
DROP DATABASE db_snapshot
GO
IF DB_ID('db') IS NOT NULL
DROP DATABASE db
GO
CREATE DATABASE db;
GO
SELECT 1 col INTO db.dbo.T
CREATE DATABASE db_snapshot ON
(
NAME='db',--原数据库文件名
FILENAME='c:"db_data.mdf'
)
AS SNAPSHOT OF db
--Backup From Snapshot
--GO
RESTORE DATABASE db FROM DATABASE_SNAPSHOT = 'db_snapshot' WITH REPLACE,RECOVERY
GO
SELECT COUNT(*) FROM db.dbo.T
DROP DATABASE db_snapshot,db
/*
Description:2008 压缩备份
*/
--查询数据库配置
SELECT * FROM sys.configurations order by name
--设置
EXEC sp_configure 'backup compression default',1
RECONFIGURE
GO
IF DB_ID('db') IS NOT NULL
DROP DATABASE db;
GO
CREATE DATABASE db;
GO
BACKUP DATABASE db TO DISK='c:"1.bak' WITH NO_COMPRESSION
GO
BACKUP DATABASE db TO DISK='c:"2.bak' WITH COMPRESSION
GO
--比较下大小1.bak,2.bak 分别是:1,491kb 148kb
DROP DATABASE db;
转载于:https://www.cnblogs.com/yinyao/archive/2009/09/16/1567687.html
sql镜像备份 转 浪客 博客相关推荐
- 编写字符串反转函数 - 小小外星人的技术博客 - 博客频道 - CSDN.NET
编写字符串反转函数 - 小小外星人的技术博客 - 博客频道 - CSDN.NET 编写字符串反转函数 分类: 笔试面试题 2010-11-07 20:47 863人阅读 评论(0) 收藏 举报 首先用 ...
- 让 QtWebkit 支持跨域CROS - nowboy的CSDN博客 - 博客频道 - CSDN.NET
让 QtWebkit 支持跨域CROS - nowboy的CSDN博客 - 博客频道 - CSDN.NET 让 QtWebkit 支持跨域CROS 2013-05-23 22:05 450人阅读 评论 ...
- Linux系统内存管理之伙伴系统分析 - 旭东的博客 - 博客园
Linux系统内存管理之伙伴系统分析 - 旭东的博客 - 博客园 Linux系统内存管理之伙伴系统分析 今天去面试,一位面试官提到了内存管理的伙伴系统,当时就懵了,因为根本就没有听说过.晚上回来在实验 ...
- redis源码笔记 - 刘浩de技术博客 - 博客园
redis源码笔记 - 刘浩de技术博客 - 博客园 redis源码笔记 - 刘浩de技术博客 - 博客园 redis源码笔记 记录发现的一个hiredis的bug 摘要: hiredis是redis ...
- redis源码笔记 - initServer - 刘浩de技术博客 - 博客园
redis源码笔记 - initServer - 刘浩de技术博客 - 博客园 redis源码笔记 - initServer - 刘浩de技术博客 - 博客园 redis源码笔记 - initServ ...
- 分享制作精良的知识管理系统 配置SQL Server文档数据库 完美实现博客文章的的下载,存储和浏览...
前一篇文章<分享制作精良的知识管理系统 博客备份程序 Site Rebuild>已经提到如何使用Site Rebuild来下载您所喜欢的博客文章,但是还不能实现把下载的文件导入进数据库中, ...
- 新浪手机博客﹐问题还很多
刚刚发现新浪博客添加了wap录入功能﹐这是我的试验. 总体感觉﹐项目团队需要再培训一下﹐问题很多. 一是密码输入竟然是明文﹐ 二是似乎不支持cookie﹐ 三是刚才的输入框竟然只有一行!输入极其不方便 ...
- 中国计算机发展史 博客,“博客”(Blog)在中国的发展历程
在网络上发表Blog的构想始于1998年,但到了2000年才开始真正流行.而2000年博客开始进入中国,并迅速发展,但都业绩平平.直到2004年木子美事件,才让中国民众了解到了博客,并运用博客.200 ...
- GitHub 优秀的 Android 开源项目 - 让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) - 博客频道 - CSDN.NET
原文地址为http://www.trinea.cn/android/android-open-source-projects-view/,作者Trinea http://www.cnblogs.com ...
- 我的博客博客之路....
我是一个程序员,虽然学技术已经有很多3年多了,但一直没有写过博客... 本着学习总结的目的,也本着把别人的东西,变成自己的东西,我开始了我的博客之路... 路漫漫其修远兮,吾将上下而求索.... 转载 ...
最新文章
- 32岁程序员面试被拒:比又穷又忙更可怕的,是2020年你还不懂...
- R语言Box-Cox变换实战(Box-Cox Transformation):将非正态分布数据转换为正态分布数据、计算最佳λ、变换后构建模型
- php获取mysql数据菜鸟_PHP 连接 MySQL | 菜鸟教程
- 我爱Java系列---【 maven依赖版本冲突的解决方法】
- js监听select值变化_网络编程——C++实现socket通信(TCP)高并发之select模式
- 连环清洁工之特殊任务--java资源如何关闭?
- java用递归的方式写n_java-使用递归将其元素加起来为n的子集的列表
- resultmap的写法_mybatis的mapper.xml中resultMap标签的使用详解
- 电子书下载:Pro Drupal 7 for Windows Developers
- 附加作业:源自刘乾老师的问题
- php把时间戳改为时间格式,php怎么把时间格式转换为时间戳?
- linux java 1.6 下载地址_linux 安装配置java环境 jdk1.6 jdk-6u45-linux-x64.bin
- 计算机大学英语融合的课题有什么,【计算机信息论文】计算机信息管理学科交叉融合研究(共3910字)...
- 机器学习的数学基础(一)—— 期望、方差、协方差与相关系数
- 刷题总结——蜥蜴(ssoj网络流)
- 倍福PLC TwinCAT 3 基础——编程基础
- Android Studio实现中华字典APP
- RandomForest中的包外误差估计out-of-bag (oob) error estimate
- JZOJ 5539 psy
- 【ASP.NET】Global.asax与Web.config
热门文章
- GeneXus笔记Excel导入
- idea提示java.sql.SQLException: Access denied for user ‘‘@‘localhost‘ (using password: NO)
- 杂谈:用 Sublime Text 2 写 ActionScript3
- hihocoder王胖浩与三角形【海伦公式+分类讨论】
- 数据分析案例--2012美国总统竞选赞助数据分析
- 51单片机——串行通信
- 斐讯(Phicomm)空气检测仪(悟空 M1)通过 EasyLink 安卓客户端同步时间方法
- Word2010 下划线字体距离的调整方法
- Apache Doris技术实践
- AndroidQ SettingsProvider和Settings原理