数据库存储空间查询(数据库的大小及数据库中各个表的数据量和每行记录大小)

  1. IF NOT EXISTS (SELECT *
  2. FROM dbo.sysobjects
  3. WHERE id = Object_id(N'[dbo].[tablespaceinfo]')
  4. AND Objectproperty(id, N'IsUserTable') = 1)
  5. CREATE TABLE tablespaceinfo --创建结果存储表
  6. (
  7. nameinfo VARCHAR(50),
  8. rowsinfo INT,
  9. reserved VARCHAR(20),
  10. datainfo VARCHAR(20),
  11. index_size VARCHAR(20),
  12. unused VARCHAR(20)
  13. )
  14.  
  15. DELETE FROM tablespaceinfo --清空数据表
  16. DECLARE @tablename VARCHAR(255) --表名称
  17. DECLARE @cmdsql VARCHAR(500)
  18. DECLARE Info_cursor CURSOR FOR
  19. SELECT o.name
  20. FROM dbo.sysobjects o
  21. WHERE Objectproperty(o.id, N'IsTable') = 1
  22. AND o.name NOT LIKE N'#%%'
  23. ORDER BY o.name
  24.  
  25. OPEN Info_cursor
  26.  
  27. FETCH NEXT FROM Info_cursor INTO @tablename
  28.  
  29. WHILE @@FETCH_STATUS = 0
  30. BEGIN
  31. IF EXISTS (SELECT *
  32. FROM dbo.sysobjects
  33. WHERE id = Object_id(@tablename)
  34. AND Objectproperty(id, N'IsUserTable') = 1)
  35. EXECUTE Sp_executesql
  36. N'insert into tablespaceinfo exec sp_spaceused @tbname',
  37. N'@tbname varchar(255)',
  38. @tbname = @tablename
  39.  
  40. FETCH NEXT FROM Info_cursor INTO @tablename
  41. END
  42.  
  43. CLOSE Info_cursor
  44.  
  45. DEALLOCATE Info_cursor
  46.  
  47. GO
  48.  
  49. --itlearner注:显示数据库信息
  50. Sp_spaceused @updateusage = 'TRUE'
  51.  
  52. --itlearner注:显示表信息
  53. SELECT *
  54. FROM tablespaceinfo
  55. ORDER BY Cast(LEFT(Ltrim(Rtrim(reserved)), Len(Ltrim(Rtrim(reserved))) - 2) AS INT) DESC

数据库中各个表的数据量和每行记录所占用空间

  1. CREATE TABLE #tablespaceinfo
  2. (
  3. nameinfo VARCHAR(500),
  4. rowsinfo BIGINT,
  5. reserved VARCHAR(20),
  6. datainfo VARCHAR(20),
  7. index_size VARCHAR(20),
  8. unused VARCHAR(20)
  9. )
  10.  
  11. DECLARE @tablename VARCHAR(255);
  12. DECLARE Info_cursor CURSOR FOR
  13. SELECT '[' + [name] + ']'
  14. FROM sys.tables
  15. WHERE type = 'U';
  16.  
  17. OPEN Info_cursor
  18.  
  19. FETCH NEXT FROM Info_cursor INTO @tablename
  20.  
  21. WHILE @@FETCH_STATUS = 0
  22. BEGIN
  23. INSERT INTO #tablespaceinfo
  24. EXEC Sp_spaceused @tablename
  25.  
  26. FETCH NEXT FROM Info_cursor INTO @tablename
  27. END
  28.  
  29. CLOSE Info_cursor
  30.  
  31. DEALLOCATE Info_cursor
  32.  
  33. --创建临时表
  34. CREATE TABLE [#tmptb]
  35. (
  36. TableName VARCHAR(50),
  37. DataInfo BIGINT,
  38. RowsInfo BIGINT,
  39. Spaceperrow AS ( CASE RowsInfo
  40. WHEN 0 THEN 0
  41. ELSE DataInfo / RowsInfo
  42. END ) PERSISTED
  43. )
  44.  
  45. --插入数据到临时表
  46. INSERT INTO [#tmptb]
  47. ([TableName],
  48. [DataInfo],
  49. [RowsInfo])
  50. SELECT [nameinfo],
  51. Cast(Replace([datainfo], 'KB', '') AS BIGINT) AS 'datainfo',
  52. [rowsinfo]
  53. FROM #tablespaceinfo
  54. ORDER BY Cast(Replace(reserved, 'KB', '') AS INT) DESC
  55.  
  56. --汇总记录
  57. SELECT [tbspinfo].*,
  58. [tmptb].[Spaceperrow] AS '每行记录大概占用空间(KB)'
  59. FROM [#tablespaceinfo] AS tbspinfo,
  60. [#tmptb] AS tmptb
  61. WHERE [tbspinfo].[nameinfo] = [tmptb].[TableName]
  62. ORDER BY Cast(Replace([tbspinfo].[reserved], 'KB', '') AS INT) DESC
  63.  
  64. DROP TABLE [#tablespaceinfo]
  65.  
  66. DROP TABLE [#tmptb]

数据库死锁与阻塞语句查询

  1. /*
  2. 功能说明: 数据库死锁与阻塞语句查询
  3. 修改说明:Modfiy BY LY 2013-11-22
  4. */
  5. DECLARE @spid INT
  6. DECLARE @blk INT
  7. DECLARE @count INT
  8. DECLARE @index INT
  9. DECLARE @lock TINYINT
  10.  
  11. SET @lock=0
  12.  
  13. CREATE TABLE #temp_who_lock
  14. (
  15. id INT IDENTITY(1, 1),
  16. spid INT,
  17. blk INT
  18. )
  19.  
  20. --if @@error<>0 return @@error
  21. INSERT INTO #temp_who_lock
  22. (spid,
  23. blk)
  24. SELECT 0,
  25. blocked
  26. FROM (SELECT *
  27. FROM master..sysprocesses
  28. WHERE blocked > 0)a
  29. WHERE NOT EXISTS(SELECT *
  30. FROM master..sysprocesses
  31. WHERE a.blocked = spid
  32. AND blocked > 0)
  33. UNION
  34. SELECT spid,
  35. blocked
  36. FROM master..sysprocesses
  37. WHERE blocked > 0
  38.  
  39. --if @@error<>0 return @@error
  40. SELECT @count = Count(*),
  41. @index = 1
  42. FROM #temp_who_lock
  43.  
  44. --select @count,@index
  45.  
  46. --if @@error<>0 return @@error
  47. IF @count = 0
  48. BEGIN
  49. SELECT '没有阻塞和死锁信息'
  50. --return 0
  51. END
  52.  
  53. WHILE @index <= @count
  54. BEGIN
  55. IF EXISTS(SELECT 1
  56. FROM #temp_who_lock a
  57. WHERE id > @index
  58. AND EXISTS(SELECT 1
  59. FROM #temp_who_lock
  60. WHERE id <= @index
  61. AND a.blk = spid))
  62. BEGIN
  63. SET @lock=1
  64.  
  65. SELECT @spid = spid,
  66. @blk = blk
  67. FROM #temp_who_lock
  68. WHERE id = @index
  69.  
  70. SELECT '引起数据库死锁的是: ' + Cast(@spid AS VARCHAR(10)) + '进程号,其执行的SQL语法如下' ;
  71.  
  72. SELECT @spid,
  73. @blk
  74.  
  75. DBCC inputbuffer(@spid)
  76.  
  77. DBCC inputbuffer(@blk)
  78. END
  79.  
  80. SET @index=@index + 1
  81. END
  82.  
  83. IF @lock = 0
  84. BEGIN
  85. SET @index=1
  86.  
  87. WHILE @index <= @count
  88. BEGIN
  89. SELECT @spid = spid,
  90. @blk = blk
  91. FROM #temp_who_lock
  92. WHERE id = @index
  93.  
  94. IF @spid = 0
  95. SELECT '引起阻塞的是:' + Cast(@blk AS VARCHAR(10)) + '进程号,其执行的SQL语法如下'
  96. ELSE
  97. SELECT '进程号SPID:' + Cast(@spid AS VARCHAR(10)) + '被' + '进程号SPID:' + Cast(@blk AS VARCHAR(10)) + '阻塞,其当前进程执行的SQL语法如下'
  98.  
  99. PRINT ( LTRIM(@spid) + ''+ LTRIM(@blk));
  100. if(@spid <> 0)
  101. BEGIN
  102. DBCC inputbuffer(@spid) --
  103. END
  104.  
  105. DBCC inputbuffer(@blk) --引起阻塞语句
  106.  
  107. SET @index=@index + 1
  108. END
  109. END
  110.  
  111. DROP TABLE #temp_who_lock
  112.  
  113. --return 0
  114. --KILL 54

收缩当前的数据库,并清除对应的日志文件

  1. /*
  2. 功能说明:收缩当前的数据库,并清除对应的日志文件
  3. 逻辑说明:首先收缩数据库,其次设置数据库为简单模式,然后在截取日志文件,
  4. 设置它为固定大小,最后设置数据库为它当前的模式
  5. SHRINKFILE 可以指定收缩日志的大小
  6. TRUNCATEONLY 只适用于数据文件的收缩。
  7. 清除日志说明:当系统的日志文件异常增大或者备份LOG时间太长可能影响生产的情况下使用。
  8. 修改说明:Create by LY on 2011-12-06
  9. */
  10. DECLARE @DB_Name VARCHAR(50), --当前数据库名称
  11. @DBLog_Name VARCHAR(50), --日志文件
  12. @DBRecovery_Model VARCHAR(50); --恢复模型
  13. SELECT @DBLog_Name = s.name
  14. FROM sys.master_files AS s
  15. WHERE ( s.type = 1
  16. AND s.database_id = DB_ID())
  17. SELECT @DB_Name = DB_NAME();
  18. SELECT @DBRecovery_Model = recovery_model_desc
  19. FROM master.sys.databases
  20. WHERE name = DB_NAME();
  21. DBCC SHRINKDATABASE(@DB_Name); -----收缩主数据库
  22. EXEC('ALTER DATABASE '+@DB_Name+' SET RECOVERY SIMPLE;'); --Truncate the log by changing the database recovery model to SIMPLE.
  23. DBCC SHRINKFILE (@DBLog_Name); -- Shrink the truncated log file to 50 MB.
  24. EXEC('ALTER DATABASE '+@DB_Name+' SET RECOVERY '+@DBRecovery_Model+';'); --Reset the database recovery model.
  25. GO
  26. /*
  27. 功能说明:查看数据库的恢复模型
  28. 修改说明:Create by LY on 2011-12-06
  29. */
  30. --SELECT name,recovery_model_desc
  31. --FROM master.sys.databases
  32.  
  33. --select * from sysfiles

一个完整的表分区案例

  1. USE CubeDemo
  2. GO
  3.  
  4. /*
  5. 功能说明: 创建表分区测试表
  6. 修改说明: Create by LY on 2011-09-11
  7. */
  8. IF EXISTS (SELECT 1
  9. FROM SYSOBJECTS
  10. WHERE id = OBJECT_ID('Fact_SaleCar')
  11. AND type = 'U')
  12. BEGIN
  13. DROP TABLE Fact_SaleCar
  14. END
  15. GO
  16. CREATE TABLE [dbo].Fact_SaleCar
  17. (
  18. SaleCarId VARCHAR(20) NOT NULL,
  19. SaleName VARCHAR(50) NULL,
  20. CheckOutDate DATETIME NULL,
  21. Attribute1 VARCHAR(50) NULL,
  22. Attribute2 VARCHAR(50) NULL,
  23. Attribute3 VARCHAR(50) NULL,
  24. Attribute4 VARCHAR(50) NULL,
  25. Attribute5 VARCHAR(50) NULL,
  26. Attribute6 VARCHAR(50) NULL,
  27. Attribute7 VARCHAR(50) NULL,
  28. Attribute8 VARCHAR(50) NULL,
  29. Attribute9 VARCHAR(50) NULL,
  30. Attribute10 VARCHAR(50) NULL,
  31. Attribute11 VARCHAR(50) NULL,
  32. Attribute12 VARCHAR(50) NULL,
  33. CONSTRAINT PK_Fact_SaleCar PRIMARY key (SaleCarId)
  34. );
  35. GO
  36.  
  37. /*
  38. 功能说明: 用循环加入测试数据
  39. 修改说明: Create by LY on 2011-09-11
  40. */
  41. BEGIN
  42. BEGIN TRAN ---开始事务
  43. DECLARE @NUM INT;
  44. SET @NUM=1;
  45.  
  46. /*-------2009年的时间导入 【800万条】---- */
  47. WHILE @NUM <= 8000000
  48. BEGIN
  49. INSERT INTO dbo.Fact_SaleCar
  50. SELECT RTRIM(YEAR(DATEADD(YEAR,-2,GETDATE())))+RTRIM(@NUM),'商店'+RTRIM(YEAR(DATEADD(YEAR,-2,GETDATE())))+RTRIM(@NUM),DATEADD(YEAR,-2,GETDATE()),
  51. RTRIM(YEAR(DATEADD(YEAR,-2,GETDATE())))+'01',RTRIM(YEAR(DATEADD(YEAR,-2,GETDATE())))+'02',
  52. RTRIM(YEAR(DATEADD(YEAR,-2,GETDATE())))+'03',RTRIM(YEAR(DATEADD(YEAR,-2,GETDATE())))+'04',
  53. RTRIM(YEAR(DATEADD(YEAR,-2,GETDATE())))+'05',RTRIM(YEAR(DATEADD(YEAR,-2,GETDATE())))+'06',
  54. RTRIM(YEAR(DATEADD(YEAR,-2,GETDATE())))+'07',RTRIM(YEAR(DATEADD(YEAR,-2,GETDATE())))+'08',
  55. RTRIM(YEAR(DATEADD(YEAR,-2,GETDATE())))+'09',RTRIM(YEAR(DATEADD(YEAR,-2,GETDATE())))+'10',
  56. RTRIM(YEAR(DATEADD(YEAR,-2,GETDATE())))+'11',RTRIM(YEAR(DATEADD(YEAR,-2,GETDATE())))+'12';
  57. SET @NUM=@NUM+1;
  58. IF @@error<>0
  59. BEGIN
  60. ROLLBACK TRAN
  61. RETURN;
  62. END
  63. END;
  64.  
  65. SET @NUM=1
  66. /*-------2010年的时间导入 【500万】---- */
  67. WHILE @NUM <= 5000000
  68. BEGIN
  69. INSERT INTO dbo.Fact_SaleCar
  70. SELECT RTRIM(YEAR(DATEADD(YEAR,-1,GETDATE())))+RTRIM(@NUM),'商店'+RTRIM(YEAR(DATEADD(YEAR,-1,GETDATE())))+RTRIM(@NUM),DATEADD(YEAR,-1,GETDATE()),
  71. RTRIM(YEAR(DATEADD(YEAR,-1,GETDATE())))+'01',RTRIM(YEAR(DATEADD(YEAR,-1,GETDATE())))+'02',
  72. RTRIM(YEAR(DATEADD(YEAR,-1,GETDATE())))+'03',RTRIM(YEAR(DATEADD(YEAR,-1,GETDATE())))+'04',
  73. RTRIM(YEAR(DATEADD(YEAR,-1,GETDATE())))+'05',RTRIM(YEAR(DATEADD(YEAR,-1,GETDATE())))+'06',
  74. RTRIM(YEAR(DATEADD(YEAR,-1,GETDATE())))+'07',RTRIM(YEAR(DATEADD(YEAR,-1,GETDATE())))+'08',
  75. RTRIM(YEAR(DATEADD(YEAR,-1,GETDATE())))+'09',RTRIM(YEAR(DATEADD(YEAR,-1,GETDATE())))+'10',
  76. RTRIM(YEAR(DATEADD(YEAR,-1,GETDATE())))+'11',RTRIM(YEAR(DATEADD(YEAR,-1,GETDATE())))+'12';
  77. SET @NUM=@NUM+1;
  78. IF @@error<>0
  79. BEGIN
  80. ROLLBACK TRAN
  81. RETURN;
  82. END
  83. END;
  84.  
  85. SET @NUM=1
  86. /*-------2011年的时间导入 【1000万】---- */
  87. WHILE @NUM <= 10000000
  88. BEGIN
  89. INSERT INTO dbo.Fact_SaleCar
  90. SELECT RTRIM(YEAR(DATEADD(YEAR,0,GETDATE())))+RTRIM(@NUM),'商店'+RTRIM(YEAR(DATEADD(YEAR,0,GETDATE())))+RTRIM(@NUM),DATEADD(YEAR,0,GETDATE()),
  91. RTRIM(YEAR(DATEADD(YEAR,0,GETDATE())))+'01',RTRIM(YEAR(DATEADD(YEAR,0,GETDATE())))+'02',
  92. RTRIM(YEAR(DATEADD(YEAR,0,GETDATE())))+'03',RTRIM(YEAR(DATEADD(YEAR,0,GETDATE())))+'04',
  93. RTRIM(YEAR(DATEADD(YEAR,0,GETDATE())))+'05',RTRIM(YEAR(DATEADD(YEAR,0,GETDATE())))+'06',
  94. RTRIM(YEAR(DATEADD(YEAR,0,GETDATE())))+'07',RTRIM(YEAR(DATEADD(YEAR,0,GETDATE())))+'08',
  95. RTRIM(YEAR(DATEADD(YEAR,0,GETDATE())))+'09',RTRIM(YEAR(DATEADD(YEAR,0,GETDATE())))+'10',
  96. RTRIM(YEAR(DATEADD(YEAR,0,GETDATE())))+'11',RTRIM(YEAR(DATEADD(YEAR,0,GETDATE())))+'12';
  97. SET @NUM=@NUM+1;
  98. IF @@error<>0
  99. BEGIN
  100. ROLLBACK TRAN
  101. RETURN;
  102. END
  103. END;
  104. COMMIT TRAN
  105. END;
  106. --SELECT * FROM Fact_SaleCar
  107.  
  108. /*
  109. 功能说明:创建分区表
  110. */
  111. USE PFCube
  112. GO
  113. /*
  114.  
  115. 功能说明:将普通表转换成分区表 .
  116.  
  117. 介绍: 在以上代码中,我们可以看出,这个表拥有一般普通表的特性——有主键,同时这个主键还是聚集索引。
  118. 前面说过,分区表是以某个字段为分区条件,所以,除了这个字段以外的其他字段,是不能创建聚集
  119. 索引的。因此,要想将普通表转换成分区表,就必须要先删除聚集索引,然后再创建一个新的聚集索
  120. 引,在该聚集索引中使用分区方案。
  121.  
  122. 可惜的是,在SQL Server中,如果一个字段既是主键又是聚集索引时,并不能仅仅删除聚集索引。因此,
  123. 我们只能将整个主键删除,然后重新创建一个主键,只是在创建主键时,不将其设为聚集索引,如以下
  124. 代码所示:
  125.  
  126. */
  127.  
  128. /*
  129. 功能说明:创建文件组
  130. */
  131.  
  132. ALTER DATABASE PFCube
  133. ADD FILEGROUP [FG_PFCube_01]
  134.  
  135. ALTER DATABASE PFCube
  136. ADD FILEGROUP [FG_PFCube_02]
  137.  
  138. ALTER DATABASE PFCube
  139. ADD FILEGROUP [FG_PFCube_03]
  140.  
  141. GO
  142.  
  143. /*
  144.  
  145. */
  146.  
  147. /*
  148. 功能说明:创建文件
  149. */
  150.  
  151. ALTER DATABASE PFCube
  152. ADD FILE
  153. (
  154. NAME = N'FG_PFCube_01_data',
  155. FILENAME = N'D:\DB\PT\FG_PFCube_01_data.ndf',
  156. SIZE = 30MB,
  157. FILEGROWTH = 10%
  158. )
  159. TO FILEGROUP [FG_PFCube_01];
  160.  
  161. ALTER DATABASE PFCube
  162. ADD FILE
  163. (
  164. NAME=N'FG_PFCube_02_date',
  165. FILENAME=N'D:\DB\PT\FG_PFCube_02_data.ndf',
  166. SIZE=30MB,
  167. FILEGROWTH=10%
  168. )
  169. TO FILEGROUP [FG_PFCube_02];
  170.  
  171. ALTER DATABASE PFCube
  172. ADD FILE
  173. (
  174. NAME=N'FG_PFCube_03_date',
  175. FILENAME=N'D:\DB\PT\FG_PFCube_03_data.ndf',
  176. SIZE=30MB,
  177. FILEGROWTH=10%
  178. )
  179. TO FILEGROUP [FG_PFCube_03];
  180.  
  181. GO
  182.  
  183. /*
  184. 功能说明:创建分区函数
  185. */
  186. CREATE PARTITION FUNCTION
  187. PT_Fun_Fact_SaleCar_CheckOutDate(DATETIME) AS
  188. RANGE LEFT
  189. FOR VALUES('2010-1-1','2011-1-1')
  190. GO
  191.  
  192. /*
  193. 功能说明:创建分区方案
  194. */
  195.  
  196. CREATE PARTITION SCHEME
  197. PT_Sch_Fact_SaleCar_CheckOutDate AS
  198. PARTITION PT_Fun_Fact_SaleCar_CheckOutDate
  199. TO([FG_PFCube_01],[FG_PFCube_02],[FG_PFCube_03])
  200. GO
  201.  
  202. /*-------------------创建分区表------------------------
  203. 功能说明:将普通表转换成分区表
  204.  
  205. 首先:删掉主键,创建主键,但不设为聚集索引
  206. -------------------------------------------------------*/
  207. ALTER TABLE Fact_SaleCar DROP constraint PK_Fact_SaleCar
  208.  
  209. ALTER TABLE Fact_SaleCar ADD CONSTRAINT PK_Fact_SaleCar PRIMARY KEY NONCLUSTERED
  210. (
  211. SaleCarId ASC
  212. ) ON [PRIMARY]
  213. GO
  214.  
  215. /*
  216. 功能说明: 在重新非聚集主键之后,就可以为表创建一个新的聚集索引,
  217. 并且在这个聚集索引中使用分区方案,如以下代码所示:
  218. 其次:创建一个新的聚集索引,在该聚集索引中使用分区方案
  219.  
  220. */
  221. CREATE CLUSTERED INDEX CT_Fact_SaleCar ON Fact_SaleCar(CheckOutDate)
  222. ON PT_Sch_Fact_SaleCar_CheckOutDate(CheckOutDate)
  223. GO
  224.  
  225. /*
  226. 功能说明:写查询,根据分区来查效果果然快多了。好处。。
  227. */
  228. SELECT * FROM Fact_SaleCar
  229. WHERE
  230. YEAR(CheckOutDate)=2010
  231. --$PARTITION.PT_Fun_Fact_SaleCar_CheckOutDate(CheckOutDate) = 2

SQLSERVER常用脚本整理的更多相关文章

  1. SqlServer常用语句整理

    先记录下来 以后整理 1.常用语句 1.1update连表更新 update a set a.YCaseNo = a.WordName + '['+ convert(varchar,a.CaseYea ...

  2. Linux Shell常用脚本整理

    轮询检测Apache状态并启用钉钉报警◆ #!/bin/bash shell_user="root" shell_domain="apache" shell_l ...

  3. 【原创】SQL Server常用脚本整理

    --1.禁用启用账号账号 set nocount on SELECT 'ALTER LOGIN ' + name + ' ENABLE' FROM master.sys.server_principa ...

  4. 【原创】MySQL常用脚本整理

    #1.查看表容量空间 ) ) ) AS 'free_size(G)' FROM information_schema.tables WHERE TABLE_SCHEMA='test' AND TABL ...

  5. Linux运维常用脚本整理

    .查找当前目录下占用为0字节的文件并删除 find ./ -type f -size -exec rm -rf {}\;    #此命令不要用于对根目录0字节文件的操作 .将系统进程按内存占用大小排列 ...

  6. PostgreSQL常用脚本整理

    1.序列 以自增serial类型主键的序列: alter sequence s_seq restart with 1; #重置序列select currval('tablename_pid_seq') ...

  7. Inno Setup的常用脚本

    Inno Setup的常用脚本 分类: VC++神奇理论 2012-12-06 10:07 3234人阅读 评论(2) 收藏 举报 安装不同的目录: [Files] Source: "我的程 ...

  8. MS SQL 日常维护管理常用脚本(二)

    监控数据库运行 下面是整理.收集监控数据库运行的一些常用脚本,也是MS SQL 日常维护管理常用脚本(一)的续集,欢迎大家补充.提意见. 查看数据库登录名信息   Code Snippet SELEC ...

  9. NSIS常用代码整理

    原文 NSIS常用代码整理 这是一些常用的NSIS代码,少轻狂特意整理出来,方便大家随时查看使用.不定期更新哦~~~ 1 ;获取操作系统盘符 2 ReadEnvStr $R0 SYSTEMDRIVE ...

随机推荐

  1. BuildSigar

    https://support.hyperic.com/display/SIGAR/Home;jsessionid=7436F86CA13B66BCE1A827043E159F34#Home-down ...

  2. java的深复制与浅复制

    今天座右铭-----浪费时间就等于慢性自杀 ⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原 来的对象.换言之,浅复制仅仅复制所考虑的对象,而不复 ...

  3. cdoj 秋实大哥带我飞 最短路走法 含0权边

    //做完这题以后终于理解白书上的边为什么要那样定义了 可以很方便的在o(1) 时间内找到反向边 解法:先跑一边最短路,然后检查最短路上有没有0权边(dfs就好,但是每条边只能走一次,这里就需要用异或找 ...

  4. Android UI ActionBar功能-自定义 Action Bar 样式

    ActionBar的样式官方提供了三种: Theme.Holo Theme.Holo.Light Theme.Holo.Light.DarkActionBar 但不仅仅是这三种,我们还可以自己定义Ac ...

  5. SSH登陆服务器的简单命令

    SSh 用户名@目标Ip: 回车输入密码:

  6. ios 后台模式

    1.在后台可以继续播放音频 To play sound in the background, make sure to add the following to the Info.plist file ...

  7. [置顶] java 通过classloader加载类再通过classforname实例化

    自己写一个web服务器,发现class.forName用不了,找不到类,原因是找不到类路径, 可以过加载需要的类的文件路径,然后再通过ClassLoader来加载所需要的类.其中的原 理就不多说了,下 ...

  8. oj 小黑华丽的逆袭机会

    Problem H: 小黑华丽的逆袭机会 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 79  Solved: 7 [Submit][Status][ ...

  9. PHP自学1——简单表单提交

    最近自学PHP,顺便做个笔记记录一下自己的学习进度.选用的教程是<PHP and MySQL Web Development 4th Edition>,建议阅读英文教材(我能说英文网上免费 ...

  10. OC中对象元素的引用计数 自动释放池的相关概念

    OC中数组对象在是如何处理对象元素的引用计数问题的,同时介绍一下自动释放池的相关概念 一.数组对象是如何处理对象元素的引用计数问题[objc]  view plaincopy 1. //   2. / ...