一切福田,不離方寸,從心而覓,感無不通。

Category Archives: Backend

C# 理解lock

一. 为什么要lock,lock了什么? 当我们使用线程的时候,效率最高的方式当然是异步,即各个线程同时运行,其间不相互依赖和等待。但当不同的线程都需要访问某个资源的时候,就需要同步机制了,也就是说当对同一个资源进行读写的时候,我们要使该资源在同一时刻只能被一个线程操作,以确保每个操作都是有效即时的,也即保证其操作的原子性。lock是C#中最常用的同步方式,格式为lock(objectA){codeB} 。 lock(objectA){codeB} 看似简单,实际上有三个意思,这对于适当地使用它至关重要: 1. objectA被lock了吗?没有则由我来lock,否则一直等待,直至objectA被释放。 2. lock以后在执行codeB的期间其他线程不能调用codeB,也不能使用objectA。 3. 执行完codeB之后释放objectA,并且codeB可以被其他线程访问。 二. lock(this)怎么了? 我们看一个例子: using System; using System.Threading; namespace Namespace1 {     class C1     {         private bool deadlocked = true;         //这个方法用到了lock,我们希望lock的代码在同一时刻只能由一个线程访问         public void LockMe(object o)         {             lock (this)             {                 while(deadlocked)                 […]

龙生   28 Jun 2017
View Details

PostgreSQL

PostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES,现在已经更名为PostgreSQL,版本 4.2为基础的对象关系型数据库管理系统(ORDBMS)。PostgreSQL支持大部分 SQL标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。同样,PostgreSQL 可以用许多方法扩展,比如, 通过增加新的数据类型、函数、操作符、聚集函数、索引。免费使用、修改、和分发 PostgreSQL,不管是私用、商用、还是学术研究使用。 PostgreSQL 是一个自由的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行。它提供了相对其他开放源代码数据库系统(比如 MySQL 和 Firebird),和专有系统(比如 Oracle、Sybase、IBM 的 DB2 和 Microsoft SQL Server)之外的另一种选择。 PostgreSQL 不寻常的名字导致一些读者停下来尝试拼读它,特别是那些把SQL拼读为"sequel"的人。PostgreSQL 开发者把它拼读为 "post-gress-Q-L"。它也经常被简略念为 "postgres"。[1] 事实上, PostgreSQL 的特性覆盖了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以说是目前世界上最丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备, 比如 IP 类型和几何类型等;其次,PostgreSQL 是全功能的自由软件数据库,很长时间以来,PostgreSQL 是唯一支持事务、子查询、多版本并行控制系统(MVCC)、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统。 Inprise 的 InterBase 以及SAP等厂商将其原先专有软件开放为自由软件之后才打破了这个唯一。最后,PostgreSQL拥有一支非常活跃的开发队伍,而且在许多黑客的努力下,PostgreSQL 的质量日益提高。 从技术角度来讲,PostgreSQL 采用的是比较经典的C/S(client/server)结构,也就是一个客户端对应一个服务器端守护进程的模式,这个守护进程分析客户端来的查询请求,生成规划树,进行数据检索并最终把结果格式化输出后返回给客户端。为了便于客户端的程序的编写,由数据库服务器提供了统一的客户端 C 接口。而不同的客户端接口都是源自这个 C 接口,比如ODBC,JDBC,Python,Perl,Tcl,C/C++,ESQL等, 同时也要指出的是,PostgreSQL 对接口的支持也是非常丰富的,几乎支持所有类型的数据库客户端接口。这一点也可以说是 PostgreSQL 一大优点。 PostgreSQL强壮的一个原因源于它的架构。和商业数据库一样,PostgreSQL可以用于C/S(客户/服务器)环境。这对于用户和开发人员有很多好处。 PostgreSQL安装核心是数据库服务端进程。它允许在一个独立服务器上。需要访问存储在数据库中的数据的应用程序必须通过数据库进程。这些客户端程序无法直接访问数据,即使它们和服务程序在同一台机器上。

龙生   24 Jun 2017
View Details

Windows Server 2008远程桌面多个用户同时登陆的配置方法

开启远程桌面后,Windows Vista(或Windows 2008)下默认只支持一个administrator用户登陆,一个登录后另一个就被踢掉了,下面提供允许同一个用户名同时多个用户登录的配置方法(是pcbeta论坛的skyskai的方法): 首先要启用远程桌面这一功能:右击“我的电脑”→ 属性 → 远程配置 → 远程桌面,就可以配置相应的远程桌面功能了。下面是配置多用户登陆的方法: 打开 控制面板 → 管理工具 → 终端服务(Terminal Services) → 终端服务配置(Terminal Services Configuration) 1、 (修改可以同时登陆的人数,包括自己,默认为2个,如果只需要另外一个人远程登陆你的电脑的话,比如mm或gg,那么这一步就不用做了,直接跳到第二步) 连接(Connections):RDP-tcp 点右键 → 属性 → 网络适配器(Network Adapter) → 最大连接数 → 自己修改数目。 2、配置(Edit settings):终端服务器授权模式(Terminal Services licensing mode) → 点右键 → 属性 → 常规 → 限制每个用户只能使用一个会话(Restrict each user to a single session),去掉前面的勾 → 确定。到这里就可以多用户登录了。如果设置没有生效,重启一下(试过了,生效d)。 3、为防止恶搞, 阻止远程用户终止控制台管理员。开始 → 运行 → gpedit.msc → 计算机配置 → 管理模板 → Windows组件(Windows Components) → 终端服务(Terminal Services) → 终端服务器(Terminal Server) → 连接(Connections) → 拒绝将已经登录到控制台会话的管理员注销(Deny logoff of an administrator logged in to the console session),右击 → […]

龙生   19 Jun 2017
View Details

C#如何把文件夹压缩打包然后下载

public partial class _Default2 : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { string Path = "c:\\de"; string resultPath = string.Empty; bool rel =false; TimeSpan nowTimeSpan=new TimeSpan(); resultPath=YaSuo(out rel, out nowTimeSpan); ResponseFile(resultPath); } /// <summary> /// 压缩文件 /// </summary> /// <returns>返回压缩后的路径</returns> public string YaSuo(out bool bo, out TimeSpan times) { string rarurlPath = string.Empty; bo = false; //压缩文件 string yasuoPathSave = "c:\\de\\TZ.rar"; string yasuoPath = "c:\\de\\temp"; System.Diagnostics.Process pro = new System.Diagnostics.Process(); pro.StartInfo.FileName = @"C:\Program Files\WinRAR\WinRAR.exe";//WinRAR所在路径 //pro.StartInfo.Arguments = "a " + […]

龙生   15 Jun 2017
View Details

Windows10中的IIS10安装php manager和IIS URL Rewrite 2.0组件的方法

Windows10中自带的Server:Microsoft-IIS/10.0,然后这个10却让原本支持组件无法安装了,php manager组件安装时提示“必须安装IIS7以上才可以安装”。那是不是真的就没法在新的IIS上安装了呢?显然不是的。自IIS7以来,微软的IIS更改并不大,架构一致,几乎所有IIS7能用的组件都能够在IIS7.7/8/8.5/10上安装。微软脑子秀逗,跳过了9,以为能解决版本识别的问题,没想到弄成10,还是出现了版本识别的问题,真是自己打自己的脸啊! 那么怎么办呢?改注册表! 打开regedit,找到: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters 右侧的 MajorVersion 是DWORD值,它的值十进制是10,把它改成9。然后运行php manager安装程序即可顺利安装上了!记得装完之后改回来。 php manager的最新下载地址是:http://phpmanager.codeplex.com/releases/view/69115 而IIS URL Rewrite 2.0更是奇怪,简体中文版的这个组件无法安装,同样也是检测版本不正常,而英文版却能正常安装。 64位英文版下载地址是:http://go.microsoft.com/fwlink/?LinkID=615137 简体中文版下载地址是:http://download.microsoft.com/download/4/E/7/4E7ECE9A-DF55-4F90-A354-B497072BDE0A/rewrite_x64_zh-CN.msi 但是面对一堆英文,有些人肯定也会头疼了,那么简体中文版到底能不能装上。 也能!还是改注册表,我通过分析MSI发现它会检测 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetStp 也是 MajorVersion 项,这个也是 dword 值 10(注意是十进制),把它改成9,结果顺利安装上了! 这不得不吐槽微软一句:Win10真尼玛坑爹! http://http://it.oyksoft.com/post/6880/

龙生   06 Jun 2017
View Details

C# Unicode与中文互转

中文转Unicode:HttpUtility.UrlEncodeUnicode(string str); 转换后中文格式:"%uxxxx"  举例:"柳_abc123"  转换结果是:"%u67f3_abc123" Unicode转中文1:HttpUtility.UrlDecode(string str); str格式:"%uxxxx" ,举例:"%u67f3_abc123" Unicode转中文2:Regex.Unescape(string str); str格式:"\uxxxx" ,举例:"\u67f3_abc123"   ================================ 符合js规则的转换         /// <summary>         /// 中文转unicode(符合js规则的)         /// </summary>         /// <returns></returns>         public static string unicode_js_0(string str)         {             string outStr = "";             string a = "";             if (!string.IsNullOrEmpty(str))             {   […]

龙生   05 Jun 2017
View Details

用winsw让任何Windows程序都能运行为服务

winsw介绍 有时候我们需要在Windows下开机运行某些程序,这对于有图形界面的程序来说一般不是什么事,在选项中选中开机启动,然后它们就可以自动运行了。但是如果我们想运行一些命令行程序的话就没这么方便了。 原来我的做法是写一个bat脚本,然后将它的快捷方式复制到C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp,这样就可以开机自启了。不过这种方式有一个非常大的缺点,就是开机之后会显示一个命令行窗口!而且这个窗口还不能关,一关程序就停了。 其实Windows自带了一个后台程序管理的功能,就是我们经常用到的服务。但是Windows的服务只有程序的开发者在写程序的时候引用到这个功能,我们才能利用服务来控制程序的启动和关闭。对于一般的命令行程序来说,没办法利用服务。所以今天我们就来使用一下标题的这个winsw。它可以将Windows上的任何一个程序注册为服务,如果不需要,也可以方便的卸载服务。 使用winsw 下载 首先要下载winsw。它是一个单个的可执行文件,我们到Github release这里就可以下载winsw了。一般来说当然是下载最新的。winsw可以运行在.NET2和.NET4两个版本上,当然如果使用Win10等比较新的系统,最好下载更新版本的.NET。 下载完之后最好把文件改成一个比较短小的名字,例如winsw.exe这样的,方便后面输入命令。 编写配置文件 我们需要编写一个和程序同名的XML文件作为winsw的配置文件。文件大体上长这样,这是官网的例子。

 

  注册服务 编写好配置文件之后,记得把配置文件和可执行文件放在一起,这样winsw才能正确识别配置文件。然后我们打开一个管理员权限的命令提示符或Powershell窗口,然后输入下面的命令,如果返回值为0,说明已将程序注册为服务。

  然后打开Windows的服务,我们可以看到这下已经出现了注册的服务,我们可以像一般服务那样开启、关闭它。   如果不再需要这个服务,使用winsw uninstall即可卸载服务。当然还有诸如start、stop这样的命令启动和关闭服务。更重要的是,没有那个既不美观又烦人的命令提示符窗口。 from:http://www.cnblogs.com/qianzf/p/6807167.html

龙生   26 May 2017
View Details

EF的开发模式到底有几种

Entity Framework(EF)的开发模式有多少种呢?有的说是三种,有的说是四种,到底哪个对呢? 先看下图: 再看这张: 那么明显开发模式是三种。 即:DateBase First(数据库优先)、Model First(模型优先)和Code First(代码优先)。 当然,如果把Code First模式的两种具体方式独立出来,那就是四种了。 Code First(New DataBase) :在代码中定义类和映射关系并通过model生成数据库,使用迁移技术更新数据库。 Code First(Existing DataBase):在代码中定义类和映射关系,给逆向工程提供工具。 Model First:在设计器中创建Model,并用Model生成数据库。所有的类由Model自动生成。 DateBase First:在设计器中逆向生成Model,并有Model自动生成所有的类。   from:http://www.cnblogs.com/jihua/archive/2013/05/23/efmoshi.html

龙生   16 May 2017
View Details

Astrill终于可以和vs2015共存了

前段买了astrill的服务,速度快,也稳定,一切都挺好。可是,有一天,vs2015调试iis时却无缘无故的崩溃了,用了那么久vs还没见过这种情况。 于是开始找原因,先卸载新状的补丁,不行。 把vs2015重装安装一遍,还不行。 想了想,vs内置的调试是可以的,而调试iis时就崩溃,应该和网络有关吧…… 最近和网络有关的软件也只安装了astrill,果断卸载,重启,竟然可以了……百思不得其解啊。 找度娘啊,狂搜一阵,没有对症的结果啊…… 过了两天,换了个关键词,搜到了个对症的结果,但没解决我的问题,他自己也没有完美解决,这可怎么办啊~ 又过了几天,忽然想到给astrill官方发邮件,都说老美敬业,确实很快回了邮件,第一封没看懂,我又发了一遍,终于得到了个完美的解决: 安装Astrill客户端,并登录账号。 按住Ctrl键,点HELP(万恶的资本主义啊, 这还有隐藏菜单啊) 点击“LSP Uninstall” 然后重启,运行astrill,会有个提示,确定。 如果这时你不能上网,那就退出astrill,再运行一次,如果有提示,还点确定。 如果你还不能上网,再重启一下~~

龙生   16 May 2017
View Details

iWshop完整安装指南

本文档仅介绍如何安装iWshop并且完成微信公众号对接,其他微信认证、微信支付等申请可以参考: 百度经验 微信认证申请、微信支付申请 iWshop 交流群:470442221 iWshop 类文档:http://docs.ycchen.cc/iwshop/index.html 一、准备工作 服务器环境要求 PHP5.3+ MySQL 5.5.3+ (utf8mb4编码用于保存带有emoji表情的微信用户昵称) PHP扩展:php_mysql php_curl php_pdo_mysql php_mcrypt php_gd2 请确保您的php.ini配置中magic_quotes_gpc为Off,否则某些功能可能无法使用 如果需要redis,请加载php_redis扩展 iWshop是以UrlQuery的形式组合参数的,所以不需要伪静态模块。 开始安装iWshop http://git.oschina.net/koodo/iWshop/releases 现在以安装目录F:\dev_project\test_iwshop为例进行安装,我的httpd-vhosts.conf其中的一个设置是这样的。关于如何使用apache的vhosts可以参考:Apache官方示例 1 2 3 4 5 6 7 8 9 10 &lt;VirtualHost *:80&gt;     DocumentRoot "F:\dev_project\test_iwshop"     ServerName test.iw.com     &lt;Directory "F:\dev_project\test_iwshop"&gt;         AllowOverride All         Options FollowSymLinks         Order allow,deny         Allow from all     &lt;/Directory&gt; &lt;/VirtualHost&gt; 当然你也可以直接放服务器根目录。 然后在浏览器中打开localhost,或者vhosts指向的域名。 填写微店名称(可以在后台修改),数据库密码,后台管理员账号密码(可以在后台修改),然后点击下一步。 这里特别说明一下系统根目录,如果是在DocumentRoot的根目录下安装,那么就是 / ,如果是在某个子目录比如/iw/,那么这里就要填写 /iw/ ,一般情况下都会自动获取,无需填写,如果遇到css或者js等静态文件无法加载页面错乱的问题,请检查config.php里面的docroot选项。 点击马上安装,如果数据库版本和php环境没有什么配置问题的话,就安装成功了。 假设服务器域名是:www.iwshop.cn,那么你的: 后台地址:http://www.iwshop.cn/?/Wdmin/login/ 微信消息接口地址:http://www.iwshop.cn/wechat/ 二、微信对接 // todo 三、bug反馈 http://git.oschina.net/koodo/iWshop/issues iWshop 交流群:470442221 作者邮箱 koodo@qq.com from:http://git.oschina.net/koodo/iWshop/blob/dev/html/docs/install.md

龙生   16 May 2017
View Details
1 181 182 183 280