SQL Server使用geography数据类型对空间坐标周边搜索进行优化

首先,现有系统上有现成的坐标存储(节选)

Id          Name                             Longitude                               Latitude
----------- -------------------------------- --------------------------------------- ---------------------------------------
1           梧州南站                             111.215417                              23.397750
2           龙腾金院                             111.216583                              23.400806
3           中团变电站                            111.224861                              23.404806
4           龙圩大转盘西                           111.234417                              23.406611
5           龙圩大转盘北                           111.236500                              23.407444
6           龙城龙兴路口                           111.237917                              23.413500
7           龙城银兴路口                           111.240389                              23.416861
8           政贤路广场                            111.242611                              23.418167
9           苍梧大道东                            111.247167                              23.418611
10          恩义小学                             111.257139                              23.428861

现在需要查找给定坐标最近的站点

这里采用SQL2008以上版本提供的geography解法

1、在表中添加一个geography类型的列,名为 [GeoLocation]

ALTER TABLE [dbo].T_L_Station
ADD [GeoLocation] GEOGRAPHY
GO

2、把 [Latitude] 和 [Longitude] 的数字类型保存的经纬度坐标点,转换并更新到 [GeoLocation] 列中

UPDATE [dbo].T_L_Station
SET [GeoLocation] = geography::Point([Latitude], [Longitude], 4326)
GO

3、Select * 一下,便可以睇到数据库中存储的空间结果

4、采用 geography 类型内置的 STDistance 函数便可以求出,与已知坐标的距离了,在where order by一下就可以得到想要的结果喇,参考代码

SELECT  [Id]
      ,[Name]
      ,[ByStartDistance]
      ,[Longitude]
      ,[Latitude]
      ,[GeoLocation]
	  ,[GeoLocation].STDistance(geography::Point(23.47303, 111.32033, 4326)) as 距离
  FROM [dbo].[T_L_Station]
  --where [GeoLocation].STDistance(geography::Point(23.47303, 111.32033, 4326))<=200
  order by 距离

PS:23.47303, 111.32033 为已知坐标的经纬度。

这样是不是很简单:)

从技术角度解释为什么微软没有使用Windows 9

  众所周知,微软对 Windows 的命名规则一直很诡异,从 XP,Vista,7 到 8 和 8.1 一直到最新的 Windows 10。那么从技术角度考虑,为什么微软跳过了 9 而直接使用 10 呢?据微软内部开发人员流传,是为前操作系统的版本号考虑。

实例代码如下

if ( version.StartsWith ("Windows 9") )

  { /*Windows 95, Windows 98 */

  } else{

  }

  当软件开发人员使用:“ 如果版本号开始于 xxx,就执行 yyy" 时,会出现两种情况的正确判断

  Windows 9

  Windows 9* ( Windows 95 Windows 98 )   95 和 98 也是开头包含 Windows 9 的

  综上所述,在早期测试时,微软发现很多第三方软件开发商使用了如上的方法去判断操作系统,这样会造成对当在 Windows 95 和 Windows 98 上运行使用上述代码的程序时,程序会误判为 WIndows "9"。

  所以微软开发者为了避免出现这种不稳定因素,只好命名为 Windows 10 。

  觉得怎么还会这么写代码的?甲骨文还真的在 openJDK 里这么写了。

  第 602 行

  同样的写法竟然还有大名鼎鼎的 jEdit 编辑器!‍

https://searchcode.com/codesearch/view/1393856/

  第 48 行

Windows Phone 8.1 远程桌面使用教程

微软刚刚发布了 Windows Phone 8.1 版远程桌面(Remote Desktop)应用,可以在这里下载。可以说这是一款和 Windows 8 版远程桌面应用体验一致的应用,可以用来连接局域网中的电脑,或是互联网中的电脑。

本文介绍如何远程连接局域网中的 Windows 8.1 电脑。

Windows Phone 8.1 版远程桌面使用教程

首先在 Windows Phone 8.1 手机中安装 Remote Desktop 预览版(只有英文版),免费下载(也可以扫描上面的二维码下载)。

手机端添加远程连接步骤

Windows Phone 8.1 版远程桌面使用教程

运行 Remote Desktop 之后,我们需要按底部的加号按钮添加远程连接的配置:

  • PC name:填写连接到的设备 IP 地址或域名,如果不是默认端口连接,末尾冒号加上端口
    举例:xxx.cloudapp.net:61301(互联网)或 192.168.1.147 (局域网,具体远程端设置方法看后文)
  • Credentials:填写登录账号,默认是“每次输入”(Enter every time)
  • 但如果想保存账号和密码,下拉菜单中点击“添加账号”(Add credentials)
  • 输入用户名和密码,点击保存

Windows Phone 8.1 版远程桌面使用教程

  • 说明 1:Windows 8.1 若使用 Microsoft 账户登录,直接输入 Microsoft 账户和密码;若使用本地账户,则用本地账户
  • 说明 2:Advanced 中有其他设置,但都是可选项,比如友好名称、声音设置,设置完之后保存

保存之后就会回到 Remote Desktop 的主屏幕,点击刚添加的远程桌面,就开始尝试连接。连接过程中会出现证书认证(下中图),点击“连接”(Connect),若没有错误就可以连接到远程桌面。

Windows Phone 8.1 版远程桌面使用教程

  • 技巧 1:连续按两下返回键退出当前远程桌面
  • 技巧 2:屏幕顶部有键盘按钮,点击显示屏幕键盘,可以方便实现快捷键:比如 Ctrl + Alt + Del、Alt + Tab 或者是 Win + D 等组合
  • 技巧 3:点击顶部远程桌面名称(放大镜和键盘之间),显示可以显示鼠标指针的选项
如何远程连接局域网 Windows PC?

首先要确认将远程连接到的 PC 运行的是:Windows 8 专业版/企业版、Windows 8.1 专业版/企业版、Windows 7 专业版/企业版/旗舰版、Windows Vista 商业版/企业版/旗舰版、Windows XP 专业版。不是这些版本不支持作为远程端。

Windows Phone 8.1 版远程桌面使用教程

以 Windows 8.1 PC 为例,按照步骤设置远程端:

  • 这台电脑 > 右键属性 > 高级系统设置(左侧)> 远程 > 选择“允许远程连接至这台电脑”
  • 勾上下面的推荐选项“仅允许运行使用网络级别身份验证的远程桌面的计算机连接”,确定
  • 打开控制面板 > Windows 防火墙 > 允许应用或功能通过 Windows 防火墙(左侧)
  • 找到远程桌面(Remote Desktop)项,勾上专用和共用,确定

Windows Phone 8.1 版远程桌面使用教程

接下来,找到这台 PC 的局域网 IP 地址:

  • 可以在路由器管理界面查看当前设备的局域网 IP 地址,比如 192.168.1.147
  • 开始屏幕直接输入“CMD”,打开命令提示符,输入 ipconfig 回车
  • 找到联网所用的网卡,IPv4 地址就是局域网 IP 地址,比如 192.168.1.147
  • 记录下这个 IP 地址

接下来根据文章开始的步骤,在手机端一步步连接远程桌面,PC name 就填这台 PC 的 IP 地址。连接后,这台 PC 会自动锁定,由手机端控制。

  • 说明 1:如果遇到 0×204 错误,可能是由于防火墙没有打开远程桌面

使用Python 3.x脚本创建cocos2d-x项目

从cocos2d-x v2.1.4 以来,cocos2d官方要求通过Python来建立项目。具体可以参考文章

http://www.cnblogs.com/tangchong/p/3439410.html

但官方提供的create_project.py是基于Python 2.7的,我修改了一下令其可以在Python 3.x下运行

覆盖到cocos2d-x\tools\project-creator下面即可

create_project.py For Python 3.x 下载地址:

http://pan.baidu.com/s/1xNhyG

企业软件开发者继续使用.NET 4.0

  每次一有新版本的 CLR 发布,例如 .NET 2.0 和 4.0,开发者更新时都显得颇为无奈。CLR 的更新为运行时的表现带来了各种微妙的变化,这有可能破坏现有代码的运行。例如 DateTime.Kind 属性的变化就是一个灾难,另一个例子就是当后台运行线程抛出未捕获的异常时,会将整个进程中止这一变化。

  与之相反,纯类库改变的升级更容易被使用者所接受。当 .NET 3.0 与 3.5 推出后,许多开发者并未选择第一时间就切换至新版本,但他们也不担心接受升级带来的变化。一旦开发者需要某些新版本的特性时,他们可以从容地选择升级。

  但对于 .NET 4.5 的接受情况,我们却看到了不太一样的情形。根据一次非官方调查的结果,选择继续使用 .NET 的最主要原因是对 Windows XP 和 Windows Server 2003 的支持。虽然这些颇有年头的老产品已经差不多快要退出历史舞台了,许多公司还是不情愿地选择继续使用它们,以下是人们的一些评论:

出于对 XP 支持的考虑,在可见的未来内,基本上所有企业软件开发者都会继续使用 4.0。

由于客户不愿意升级他们陈旧的硬件设施,今后数年我们还是必须支持 XP,因此我们无法升级至 4.5。当年 Vista 发布之后,我们依然有客户坚持使用 NT 整整一年时间。

唉,为了 Windows 2003 server,我不得不继续使用 4.0。

他们总是这样告诉我:“如果旧机器能满足我们的需求,那何必花钱购买新操作系统的许可呢?”

我对此不敢苟同,但在小企业内,要想说服老板为什么不要继续使用 .NET 4.0 也是件困难的事,因为它本身并没有什么大缺陷。很遗憾,我想我对此无能为力,我不得不继续按照老方式编写代码。

  某个开发团队对此的临时方案是,将对客户端操作系统的依赖从他们的架构中移除出去。

我们对此的应对方式,是将更多的实际工作放到服务端,尽量保持一个瘦客户端。最终的目标是完全放弃使用需要部署的客户端,而让浏览器完成所有的工作。

  另一个我们所听到的继续使用 .NET 4.0 的原因,是开发者不愿接受 Visual Studio 界面的变化,下一条评论所代表的观点并不少见:

我继续使用 .NET 4.0 的原因,是 4.5 必须使用 Visual Studio 2012 进行开发。我和我的同事们对 VS 2012 的界面实在不感冒。不过看起来 VS 2013 似乎有所改善(不像 VS 2012 那么扁平和色彩单调了),我们大概会很快升级到这一版本吧。

淘宝宝贝详情导航使用说明

“描述导航”功能说明:在发布商品时,卖家可以对宝贝描述中的内容进行区块标识,且在商品详情头部以导航列表的形式出现(详见图一)。买家在浏览宝贝页面时,可以选择想到直达的区块,直接定位到相应区块,提升买家浏览体验。13年也会在筛选框增加导航分区的内容,方便买家直接定位有提供区块信息的商品。

视频教程:

Windows 8.1中使用“滑动关机”

据BAV0上一个小贴士称,其实上周泄出的Windows 8.1 RTM中仍然存有Slidetoshutdown.exe。遗憾的是,我们到现在都还没见过它的实际演示。

这说明什么?微软显然在Windows帮助文件(按F1键)里掩藏了一些有关该功能的细节。

据Windows Help文件,如果你买了一台Windows 8.1预览版或Windows 8.1预览版的PC、并且该设备支持Connect Standby,那么"Slide to Shutdown"就会是一个更快的关机方法。

这涉及到"按住电源键大约4秒钟",直到屏幕上出现了"滑动以关机"的选项。然后,你只需向下拖动锁屏(活动用鼠标拖拽)画面,就能执行关机操作了——与Windows Phone上的操作类似。

那需要如何操作才能启用"滑动关机"呢?步骤如下:

运行CMD

②执行powercfg /availablesleepstates命令来确定你的机器是否支持Connect Standby。

不过,当我们在自己电脑上执行该命令时,会得到一个错误提示:"该系统固件并不支持Standby状态"(The system firmware does not support this standby state.)。

那么,究竟什么是Connect Standby?微软的解释是:

"Connect Standby将智能手机上的电源模型带到了PC上,为用户带来了像手机一样即时开/关机的体验。此外,正如手机上的一样,当有合适的网络可用时,Connected Standby将是系统stay fresh、up-to-date & 触手可及——这需要满足特定的Windows认证要求的低功耗PC平台"。

微软未提及将于何时推出这个酷功能,或者该公司已经剔除了这个项目,只是忘了在Windows帮助文件里把它删除掉。更也许,我们会很快在运行了Windows 8.1的配套设备上看到该功能。

如果你也想捣鼓捣鼓,Slidetoshutdown.exe文件就位于System32文件夹中。

设置Access数据库的使用期限

1、新建一个 窗体1

2、在 窗体1 的设计视图中,点击 查看Visual Basic代码

3、输入以下代码:

Private Sub Form_Load()
    '在2013-08-28到期
    If Now > "2013-08-28" Then
        MsgBox "系统已经超过使用期限,请联系作者"
        '关闭数据库
        Application.CloseCurrentDatabase
    End If
End Sub

 

4、在 文件 - 选项 - 当前数据库 - 显示窗体中 选择 窗体1

PS:此方法只能防君子,不能防小人

SQL2005/SQL2008中使用SQL语句导入Excel的方法

注意此方法只能在SQL05以上版本才能使用,2000的请无视

格式如下:

insert into tableA
SELECT * FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 8.0;IMEX=1;HDR=YES;DATABASE=D:\算神.xls',[sheet1$])

如果遇到下面的错误:

SQL Server blocked access to STATEMENT 'OpenRowset/OpenDatasource' of component 'Ad Hoc Distributed Queries' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Ad Hoc Distributed Queries' by using sp_configure. For more information about enabling 'Ad Hoc Distributed Queries', see "Surface Area Configuration" in SQL Server Books Online.

 

请执行以下脚本:

exec sp_configure 'show advanced options',1 
reconfigure 
exec sp_configure 'Ad Hoc Distributed Queries',1 
reconfigure

PS:可以用VB/C#等编程语言拼凑此方法的SQL语句,然后使用SqlCommand执行,即可实现Excel的导入。不必像原来那样,先把Excel的值取出来,再循环插入SQL

《暗黑破坏神3》现金拍卖行使用详解

暴雪发布了现金拍卖行上线指南,请注意浏览相关信息。目前现金拍卖行只限于北美服务器及北美地区注册账号使用,同时专家模式角色无法使用现金拍卖行!《暗黑破坏神3》现金拍卖行已在美洲地区上线,支持币种有美元,澳元和墨西哥比索。通过现金拍卖行,玩家可以购买和出售在游戏中找到的战利品,并在通过认证的第三方支付手段服务或战网余额账户来进行现金买卖。

欧洲地区的现金拍卖行和美洲地区其他币种(智力比索,阿根廷比索和巴西亚雷尔)将会在稍后开放。我们分开拓展现金拍卖行以确保所有玩家都能有最顺畅和良好的体验。我们将会在欧洲地区和美洲其他币种拍卖行上线时进行公告。

要访问现金拍卖行,点击角色选择画面左侧的“拍卖行”按钮,然后拍卖行界面右上角的按钮显示的是你所在的地区的币种。这个按钮可以让玩家切换与金币和现金拍卖行之间。拉丁美洲的玩家将可以选择通过美元,澳元和墨西哥比索进行交易。

在你使用之前,有几点重要提示请铭记:

地区拍卖行和全球畅玩

玩家只能访问他们本国区域(美洲和欧洲限定)的现金拍卖行,玩家在本国地区之外建立的角色将无法购买,出售或使用任何来自于现金拍卖行的物品。你的本国地区以及哪种你可以访问的现金拍卖行,是由战网通行证注册地区决定的。默认情况下,战网将会自动选择最适合你的现金拍卖行,但该地区的玩家也可访问他 们地区所支持的其他币种的现金拍卖行。

账户安全需求

我们希望提醒玩家关于账户安全的几点重要信息,如果要访问现金拍卖行你需要做到以下几点:

玩家如果想用战网余额购买和出售物品,将会需要为战网通行证绑定一个实体战网安全令,或战网手机认证应用(可通过 Google Play,iTunes和Blackberry下载)。特别提示,安全令是你通过战网账户管理为战网通行证充值时,或选择战网余额账户获取收入时的必要安全认证手段。

如若要使用PayPal(在部分地区可用)购买物品或获取收入,玩家必须注册战网短信提示保护服务。通过战网短信提示保护,你将会在通过PayPal进行相关转账行为时收到手机短信提示,这个信息包括了你要获取收入时必要的安全码。

即便你不打算使用现金拍卖行,我们仍然建议每位玩家为战网通行证绑定额外的安全保护措施。

商品

现金拍卖行目前只支持装备类交易(例如,武器,护甲和其他装备) —— 我们将会尽快支持商品买卖。如之前所说,我们想要确保商品买卖过程可以快捷,稳定而可靠。相关小组正在加紧工作中,我们将会在商品买卖功能上线时放出公告。

物品派送和购买“处理中”

某些情况,玩家可能需要等待一定时间才能在“完成”标签页看到他们之前在现金拍卖行中购买的物品或商品。尽管我们预计大部分的现金拍卖行购买都是瞬间送达买家之手,某些情况下,我们可能需要管理转账而使物品派送推延。推延送递的商品将会显示为“处理中”直到审核结束。