在C#中生成唯一的字符串和数字
当我们想要获得一个唯一的key的时候,通常会想到GUID。这个key非常的长,虽然我们在很多情况下这并不是个问题。但是当我们需要将这个36个字符的字符串放在URL中时,会使的URL非常的丑陋。
想要缩短GUID的长度而不牺牲它的唯一性是不可能的,但是如果我们能够接受一个16位的字符串的话是可以做出这个牺牲的。
我们可以将一个标准的GUID 21726045-e8f7-4b09-abd8-4bcc926e9e28 转换成短的字符串 3c4ebc5f5f2c4edc
下面的方法会生成一个短的字符串,并且这个字符串是唯一的。重复1亿次都不会出现重复的,它也是依照GUID的唯一性来生成这个字符串的。
private string GenerateStringID()
{
long i = 1;
foreach (byte b in Guid.NewGuid().ToByteArray())
{
i *= ((int)b + 1);
}
return string.Format("{0:x}", i - DateTime.Now.Ticks);
}
如果你想生成一个数字序列而不是字符串,你将会获得一个19位长的序列。下面的方法会把GUID转换为Int64的数字序列。
private long GenerateIntID()
{
byte[] buffer = Guid.NewGuid().ToByteArray();
return BitConverter.ToInt64(buffer, 0);
}
1)假设数据库是这个样子的:
2)运行以下控制台代码:
static void Main(string[] args)
{
//测试bigint的读取:
using (SqlConnection con = new SqlConnection(@"server=.\sqlexpress;database=MyTest;integrated security=true"))
{
SqlCommand cmd = new SqlCommand("select top 1 number from tb_dbo", con);
con.Open();
IDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection | CommandBehavior.SingleRow);
dr.Read();
long n = Convert.ToInt64(dr["number"]);
Console.WriteLine(n);
dr.Close();
}
}
3)结果如下:
是否可以无损耗的压缩GUID为12位呢?
{
byte[] buffer = Guid.NewGuid().ToByteArray();
long long_guid=BitConverter.ToInt64(buffer, 0);
string _Value = System.Math.Abs(long_guid).ToString();
byte[] buf=new byte[_Value.Length];
int p=0;
for (int i = 0; i < _Value.Length;)
{
byte ph=System.Convert.ToByte(_Value[i]);
int fix=1;
if ((i+1)<_Value.Length)
{
byte pl=System.Convert.ToByte(_Value[i+1]);
buf[p]=(byte)((ph<<4)+pl);
fix=2;
}else{
buf[p]=(byte)(ph);
}
if ((i+3)<_Value.Length)
{
if (System.Convert.ToInt16(_Value.Substring(i,3))<256)
{
buf[p]=System.Convert.ToByte(_Value.Substring(i,3));
fix=3;
}
}
p++;
i=i+fix;
}
byte[] buf2=new byte[p];
for (int i=0;i<p;i++)
{
buf2[i]=buf[i];
}
string cRtn=System.Convert.ToBase64String(buf2);
if (cRtn==null)
{
cRtn="";
}
cRtn=cRtn.ToLower();
cRtn=cRtn.Replace("/","");
cRtn=cRtn.Replace("+","");
cRtn=cRtn.Replace("=","");
if (cRtn.Length==12)
{
return cRtn;
}else{
return UUID();
}
参考
http://www.congci/ .com/item/mac,os,fenbianlv
去掉上面的空格再访问
系统盘 Extra / com.apple.Boot.plist 文件 右键 “显示简介” -- >“共享与权限”
添加当前用户读写权限
在
<key>Timeout</key>
<string>10</string>
的下面添加如下两行:
<key>Graphics Mode</key>
<string>1280*800*32@60</string>
然后保存,退出,
笔记本是14.1寸的液晶,所以分辨率是1280*800,色深32位,刷新率为60,可以根据需要更改为相应的值。
参照方法
由于是黑苹果,使用的变色龙启动器,直接修改启动器下的boot文件即可,所以跟下面的方法相同,但是文件不同。
第一种方法:终端修改:
1、打开终端,输入 sudo -s,取得root权限;
2、输入 vi /Library/Preferences/SystemConfiguration/com.apple.Boot.plist,打开该文件;
3、在<key>Timeout</key>
<string>10</string>
的下面添加如下两行:
<key>Graphics Mode</key>
<string>1680*1050*32@60</string>
然后保存,退出,
我是22寸的液晶,所以刷新率为60,你可以更改为需要的值。
4、重起。
默认使用的配置文件是在:
[我的文档]/IISExpress\config\
applicationhost.config 是核心的配置文件,它用于承载站点的定义、应用程序和应用程序池以及整个WEB服务器的配置。
由于是放在我的文档中的,所以修改它不需要管理员权限,意味着可以直接修改。
在修改后,下次启动应用程序就会起效。
在applicationhost.config内容中,<system.applicationHost> 用于定义网站和应用程序池。
默认情况下,其内容如下:
<applicationPools>
<add name="Clr4IntegratedAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
<add name="Clr4ClassicAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
<add name="Clr2IntegratedAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
<add name="Clr2ClassicAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
<add name="UnmanagedClassicAppPool" managedRuntimeVersion="" managedPipelineMode="Classic" autoStart="true" />
<applicationPoolDefaults managedRuntimeLoader="v4.0">
<processModel />
</applicationPoolDefaults>
</applicationPools>
IIS Express 内建了五个应用程序池,分别对应.Net 2.0/4.0的集成/经典模式、以及一个非托管程序池。
默认的程序池版本有 <spplicationPoolDefaults> 节来配置。
<sites> 节用于配置网站。
网站的默认应用程序池和虚拟目录默认配置由 <applicationDefaults> 和 <virtualDirectoryDefaults> 节点配置。
①.每个 <site> 就是一个网站。
这和IIS中的网站是一样的概念。
serverAutoStart 设置了是否随着 IIS Express的启动而自动启动。
如果设置为true,那么每次 IIS Express 启动都会自动加载(如果没有指定网站的话),否则只有以指定特定网站的模式运行时才会加载。
使用IIS Express加载特定网站的语法是: IISExpress.exe /site:<站点名>
②.<site> 下的<bindings>设置了这个站点的绑定信息。
节点下的每个<binding>都是一个端口绑定信息。
典型的绑定配置如下:<binding protocol="http" bindingInformation="*:8080:localhost" />
protocol 指定了绑定的协议类型(IIS Express内建了 HTTP 和 HTTPS两种协议支持),
而“*:8080:localhost”则指定的绑定的具体信息,
它有三个部分组成:“绑定的IP:端口:主机名”。
默认情况下,绑定到任何本地IP、非保留端口、绑定到localhost。
③.<application> 这个节设置了网站的应用程序
每个网站都需要至少一个映射路径为“/”应用程序(它映射到根目录)。
除此之外,你可以继续添加并行的不同路径的 <application> ,这就类似于IIS中的网站里配置的应用程序。
例如,
在FishSite这个网站中,我需要添加一个单独的应用程序,映射到根目录下的fish目录,那么我就可以这样配置:
在<site>中,只有 path="/" 这个应用程序是必须的(不能缺少),其它都是可以任意添加的。
④.<virtualDirectory> 设置了目录的映射信息
在每个<application>节下,必须至少存在一个 path="/" 的 virtualDirectory,它代表了这个目录映射的位置。
除此之外,可以手动添加多个映射的路径不同的虚拟目录。
好处
1. ASP.NET Development Server 只能本机访问,IIS 7.5 Express可以通过修改配置文件允许远程访问
2. 文件比较小 12M,简练并且易于安装
3. 支持创建虚拟目录,支持运行多个 Web Application ,提供了完整的Web服务器功能—包括SSL, URL重写,多媒体支持和所有其他的IIS 7.x模块。
4. 可以跟VS集成,在Visual Studio中不需要管理员权限即可启动和调试程序。
5. 它的可扩展模型和web.config配置结构和IIS 7.x是一样的。
6.它可以和IIS Web服务器还有ASP.NET开发服务器同时运行在同一台机器上(他们不会相互冲突)
7.它支持Windows XP及更高版本的操作系统—在所有操作系统平台上提供了完整的IIS 7.x功能集。
8.性能上可以满足至少几十人并发要求
9.可以命令行方式运行,便于打包部署测试程序。
1. 安装
安装后程序路径
C:\Program Files (x86)\IIS Express
配置文件路径
[我的文档]/IISExpress\config\
2. 跟程序一起打包发布
命令行介绍
iisexpress [/config:config-file] [/site:site-name] [/systray:boolean]
配置文件可直接基于默认的配置文件修改, 默认使用的配置文件是在:
[我的文档]/IISExpress\config\applicationhost.config
配置文件随应用程序发布,然后分别创建两个批处理文件,
用以启动和停止IIS Express服务,非常方便,
批处理内容大概就像这样:
启动:start F:/Projects/IIS Express/iisexpress.exe /config:F:/Projects/XXX/applicationhost.config /systray:true /site:MTLOralDemo
停止:TASKKILL /F /IM iisexpress.exe /T
启动一个临时的网站
iisexpress /path:<网站目录> /port:<端口> /clr:<CLR版本,V2.0|V4.0>
iis express会复制一份配置文件到临时目录,并变更其中的站点信息后再启动,因此不会影响到本机已经配置的网站。
3. 跟VS集成
可以这样运行

修改新项目永久使用IIS Express运行,可以如下设置
在VS 2010中,选择菜单 工具 --> 选项 --> 项目和解决方案 --> Web项目 ,选中 将IIS Express用于新的基于文件的网站和项目

3.远程访问设置
默认配置文件位于:[我的文档]\IISExpress\config\applicationhost.config。记事本打开找到:
找到配置文件中 sites/site/bindings
增加自己要设置的节点,格式如下:
<binding protocol="http" bindingInformation="*:[端口]:[计算机名或外部IP地址、绑定域名]" />
例如:
<site name="程序站点名" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="程序路径" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:8085:localhost" />
增加<binding protocol="http" bindingInformation="*:8085:192.168.1.1" />
增加<binding protocol="http" bindingInformation="*:80:demo.mysite.com" />
</bindings>
</site>
增加了两个访问:
a. 基于IP局域网带端口8085(注意打开本地防火墙设置)局域网访问
b. 设置了http://demo.mysite.com/ 域名解析访问
上面设置好了以后再用管理员身份打开cmd ,运行如下命令:
netsh http add urlacl url=http://192.168.1.1:8085/ user=everyone
netsh http add urlacl url=http://demo.mysite.com:80/ user=everyone
提示
已成功添加 URL 保留项
说明增加成功,可以启动IIS Express直接用 http://192.168.1.1:8085/ 局域网访问网站了,也可以用http://demo.mysite.com/ 域名解析方式访问(配置本地host或者修改域名真实解析)。
4.虚拟目录设置
类似于下面这样:
<site name="程序站点名" id="1280170558">
<application path="/" applicationPool="Clr2IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:/IISExpress/DemoApp/empty" />
</application>
<application path="/AppService" applicationPool="Clr2IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:/IISExpress/DemoApp/AppService" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:8088:192.168.79.166" />
</bindings>
</site>
我尝试过多个virtualDirectory节点,但发现Web Application不能正常工作,而且多个虚拟目录也不是使用独立的 Web.config,后来通过配置application 解决。
如果站点有Spring之类的东西,运行时会出现错误,请将 applicationPool 配置成 Clr2ClassicAppPool。
5. 配置多个站点
多个站点只要配置多个 site 节点就可以了,具体配置都差不多,但多个站点需要使用不同的端口。
如果需要同时运行多个站点,打开cmd 中再增加几条修改相应的参数就行了,相当于同时运行多个 iis express 实例,具体见3。
6. 性能测试结果
分别做了以下测试,测试结果性能满足要求:
1. 写了个简单测试页面,使用Load Runner 进行200路并发压力测试,进行了2小时。
2. 正式产品部署,我们的产品总共运行了9个 iis express进程,分别侦听在8080~8089端口,我们整个部门几十个人同时模拟用户访问站点并实际使用。
转改于
http://blog.csdn.net/jh_zzz/article/details/5821241
http://apps.hi.baidu.com/share/detail/325443012 复制 “/User/Librery/” 下的 “Keyboard” 文件夹到 “/var/root/Librery/”
2 复制 “/User/Librery/” 下的 “Keyboard” 文件夹到 “/var/root/Librery/”
3 点 “/var/root/Librery/Keyboard” 文件夹右边的那个右箭头,所有权改为:
所有者:Root 组:Wheel,并选择“应用到所有层级”
1. 超级用户
这台光猫的本质是一台迷你型的电脑,有自己的CPU,存储器之类,当然也有自己的系统,精简版的linux。
知道了这个接下来就好做了。
第一步把你的电脑用网线接到光猫的任意LAN口上。
点击开始菜单,在运行框中输入cmd
第二步,在打开的界面中(DOS中)输入
telnet 192.168.1.1 (win7用户请先开启telnet服务:开始菜单-》控制面板-》程序界面-》“打开或关闭Windows功能”-》选择上Telnet客户端)
会出现以下界面
Welcome Visiting Huawei Home Gateway
Copyright by Huawei Technologies Co., Ltd.
输入用户名/密码:root/admin
Login:root 回车
Password:admin 回车
登陆成功显示提示符
WAP〉shell 回车
输入shell 后回车
输入 grep telecomadmin /mnt/jffs2/hw_ctree.xml 回车
获得
<X_HW_WebUserInfoInstance InstanceID="2" UserName="telecomadmin" Password="telecomadmin1234565" UserLevel="0" Enable="1"/>
其中的username/pssword等号后的内容即为超级用户的帐号密码
如图

2. 破解连接数量限制(未测试)
输入 vi /mnt/jffs2/hw_ctree.xml 回车
修改其中TotalTerminalNumber=5 中的5 为你要的数字比如说100之类的
改好后 按下Esc键
然后输入:wq 保存退出

3. 路由桥接模式
DMZ主机设置,端口映射,DDNS等设置,可以利用桥接路由-路由器桥接到HG8240R光纤猫,协同完成。解除了电信的诸多限制。
具体下载(解压密码和excel密码均为:attagain.com):
http://download.csdn.net/detail/attagain/3937529
没有密码的版本下载:
/Files/anan/华为光纤猫HG8240R设置.zip
