基础细节知识
1在c#语言中 如何将int 类型转化为byte 类型 Convert.ToByte 方法 (Int32) BitConverter.GetBytes 方法 (Int32)
2.SQL中varchar和nvarchar区别
1、各自的定义:
nvarchar(n) : 包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。
字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。
varchar[(n)]: 长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和
8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。
2、区别:
从存储方式上,nvarchar是按字符存储的,而 varchar是按字节存储的;
从存储量上考虑, varchar比较节省空间,因为存储大小为字节的实际长度,而 nvarchar是双字节存储;
在使用上,如果存储内容都是英文字符而没有汉字等其他语言符号,建议使用varchar;含有汉字的使用nvarchar,因为
nvarchar是使用Unicode编码,即统一的字符编码标准,会减少乱码的出现几率;
如果你做的项目可能涉及不同语言之间的转换,建议用nvarchar。
使用nvarchar的另一个非常好处就是在判断字符串的时候可以不需要考虑中英文两种字符的差别. 当然,使用nvarchar存储英文字符会增大一倍的存储空间.但是在存储代价已经很低廉的情况下,优先考虑兼容性会给你带来更
多好处的. 所以在Design的时候应该尽量使用nvarchar来存储数据.只有在你确保该字段不会保存中文的时候,才采用varchar来存储.
1. 分析代码 输出结果 static void Main(string[] args) { string str1 = "mh马航123"; int i = System.Text.Encoding.Default.GetBytes(str1).Length; int j = str1.Length; Console.WriteLine(i); Console.WriteLine(j); } //输出 i j 的结果是 i=9;j=7 2 SQL Server提供了sys.dm_tran_locks这个DMV来查看当前数据库中的锁, select * from sys.dm_tran_locks 3.oracle数据库,想统计一个用户下,所有表的记录的总条数,用什么语句可以实现? 用select count(*) from table_name,太慢了 select count(*) from dba_tables where owner = 用户名' --如果有DBA权限 or select count(*) from all_tables where owner = '用户名' --普通权限 速度大概在10S左右 select sum(num_rows) from user_all_tables; 4.在创建Oracle数据库时,有哪两个用户会被自动创建 system sys scott 5查询一个表中某字段重复记录 一个表1 中有 a b两个字段 查询b字段的重复记录 select b,count(*) from 表1 group by b having count(*)>1 如果 还有一张表 表2 表2 有B字段信息 如何让筛选 那就是 select * from 表2 where b=(select b from 表1 group by b having count(*)>1) 6用一条sql语句获取一天内每隔5分钟的数据 create table tb(时间cartime datetime , 金额amount int) insert into tb values('2014-3-1 14:00:23' , 5 ) insert into tb values('2014-3-1 14:05:24' , 2 ) insert into tb values('2014-3-1 14:10:00' , 4 ) insert into tb values('2014-3-1 14:15:12' , 7 ) insert into tb values('2014-3-1 14:20:00' , 3 ) insert into tb values('2014-3-1 14:25:11' , 1 ) go --时间段>=10:00:00 and 时间段<10:05:00 select dateadd(mi,(datediff(mi,convert(varchar(10),dateadd(ss,-1,cartime),120),dateadd(ss,-1,cartime))/5)*5,convert(varchar(10),cartime,120)) as 时间段, count(*) as 行数, sum(amount) as 总金额 from tb group by dateadd(mi,(datediff(mi,convert(varchar(10),dateadd(ss,-1,cartime),120),dateadd(ss,-1,cartime))/5)*5,convert(varchar(10),cartime,120))
1.一个标准的 lock() 编码方法,以及 “双重检查”代码
lock 关键字可确保当一个线程位于代码的临界区时,另一个线程不会进入该临界区。 如果其他线程试图进入锁定的代码,则它将一直等待(即被阻止),直到该对象被释放。
public class MySingleton {
private static object myLock = new object();
private static volatile MySingleton mySingleton = null;
private MySingleton() {
}
public static MySingleton GetInstance() {
if (mySingleton == null) { //第一次检查
lock (myLock) {
if (mySingleton == null) { // 第二次检查
mySingleton = new MySingleton();
}
}
}
return mySingleton;
}
}
2.在用到mouseover和mouseout事件来作为事件触发的条件,但是如果我们用做触发的元素内部有其他的元素的时候当鼠标移上的时候会反复的触发mouseover和mouseout事件。因为内部元素在鼠标移上的时候会向它的父对象派发事件,所以外面元素相当于也触发了mouseover 事件。
onblur 事件会在对象失去焦点时发生 onFocus事件就是当光标落在文本框中时发生的事件。
3.ASP.NET中有配置数据库连接代码的方式
<connectionStrings>
<add name="conn" connectionString="Dserver=服务器名;database=数据库名;uid=用户名;password=密码" providerName="System.Data.SqlClient" />
</connectionStrings>
查询根据生日年龄大于30的人数
select * , datediff(year,birthday,getdate()) as 年龄
from dbo.Custerms where datediff(year,birthday,getdate()) >='30'