- 博客(45)
- 资源 (1)
- 收藏
- 关注
转载 UDP通信类,监听本机指定端口,发送消息给指定电脑
using System;using System.Collections.Generic;using System.Text;//添加的命名空间引用using System.Net;using System.Net.Sockets;using System.Threading;using System.Text.RegularExpressions;namespa
2017-07-03 17:22:00
3898
转载 Func和Action委托的区别和简单使用
前言:下面几条都是根据自己开发经验和网上资料整理总结的,初学者可适当入门学习,加深印象,高手请54.Func和Action委托的区别和简单使用1、两种委托的常见形式和区别(1)、Func委托有5个重载形式,区别仅在于它所指向的方法的签名的参数个数,分别如下:FuncFuncFuncuncFunc 其中T,T1,..T4是委托指向的方法的参数的
2017-06-27 11:48:59
803
转载 itextSharp研究心得
最近在工作中遇到一个问题,客户要求将系统中的表格全部导出成PDF格式。经过搜索,基本是三种思路:直接用byte写PDF文件。(算你狠,霸王硬上弓)通过Com组件转换。以Adobe Acrobat为典型代表,先转换为PS文件再通过虚拟打印机生成PDF。通过现有的组件,其中以iTextSharp为代表(不过我也没有找到其他的组件,汗一个……)。基本上第一个方法是行不通的,不
2017-06-27 11:00:24
1457
转载 C#使用读写锁三行代码简单解决多线程并发写入文件时线程同步的问题
(补充:初始化FileStream时使用包含文件共享属性(System.IO.FileShare)的构造函数比使用自定义线程锁更为安全和高效,更多内容可点击参阅) 在开发程序的过程中,难免少不了写入错误日志这个关键功能。实现这个功能,可以选择使用第三方日志插件,也可以选择使用数据库,还可以自己写个简单的方法把错误信息记录到日志文件。选择最后一种方法实现的时候,若对文件操作与
2017-06-27 10:41:22
1410
转载 C#中的lock关键字
前几天与同事激烈讨论了一下,有一点收获,记录起来。首先给出MSDN的定义:lock 关键字可以用来确保代码块完成运行,而不会被其他线程中断。这是通过在代码块运行期间为给定对象获取互斥锁来实现的。 先来看看执行过程,代码示例如下:假设线程A先执行,线程B稍微慢一点。线程A执行到lock语句,判断obj是否已申请了互斥锁,判断依据是逐个与已存在的
2017-06-27 10:18:54
319
转载 互斥锁、同步锁、读写锁的区别
相交进程之间的关系主要有两种,同步与互斥。所谓互斥,是指散步在不同进程之间的若干程序片断,当某个进程运行其中一个程序片段时,其它进程就不能运行它 们之中的任一程序片段,只能等到该进程运行完这个程序片段后才可以运行。所谓同步,是指散步在不同进程之间的若干程序片断,它们的运行必须严格按照规定的 某种先后次序来运行,这种先后次序依赖于要完成的特定的任务。 显然,同步是一种更为复杂的互斥,而互斥是一种
2017-06-27 10:12:03
6211
原创 AES加密算法(加密字符串):Rijndael
public static byte[] Encrypt(byte[] toEncryptArray) { byte[] key = { 24, 55, 102, 24, 98, 26, 67, 29, 84, 19, 37, 118, 104, 85, 121, 27, 93, 86, 24, 55, 102, 24, 98, 26, 67, 29,
2017-06-24 21:29:16
868
原创 AES加密算法(加密文件):Rijndael
本实例实现对计算机中的一些机密的文本文件进行加密与解密操作。运行程序,单击“选择文件”按钮,选择要进行加密或解密的文本文件(.txt格式的文件),单击“加密”或“解密”按钮,即可完成对文本文件的加密或解密操作。技术要点实现本实例功能主要用到了System.Security.Cryptography命名空间下的RijndaelManaged类的CreateDecryptor方法、Create
2017-06-24 21:27:29
5719
转载 SQL、LINQ和Lambda表达式
首先说说这三者完全是三种不同的东西,SQL是结构化查询语言(Structured Query Language)简称,这大家再熟悉不过了,下面主要介绍LINQ和Lambda表达式的基本概念以及同一查询这三者的不同实现。简单介绍LINQ(Language Integrate Query)是语言集成查询他在对象和数据之间建立一种对应的关系,可以使用访问内存对象的方式查询数据集合。LIN
2017-06-23 17:52:33
332
转载 代码重构的必要性
一、什么是重构 重构就是通过调整程序代码,但并不改变程序的功能特征,达到改善软件的质量、性能,使程序的设计模式和架构更趋合理,更容易被理解,提高软件的扩展性和维护性。 二、为什么要代码重构 需求的不断变更是重构的最根本原因,而且重构是每一个开发人员都要面对的功课。 代码架构最初的设计也是经过精心的设计,具有良好架构的。但是随
2017-06-06 15:15:07
852
原创 如何获取微信用户的Openid详解(微信网页授权)
如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。关于网页授权回调域名的说明1、在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 h
2017-05-31 17:08:50
3546
转载 微信公众号接入指南
第一步:申请消息接口登录https://mp.weixin.qq.com/ 后,在公众平台后台管理页面 – 开发者中心页,点击“修改配置”按钮,填写URL、Token和EncodingAESKey,其中URL是开发者用来接收微信服务器数据的接口URL。Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。EncodingAE
2017-05-31 15:38:45
1357
转载 如何获取微信用户的Openid简介
怎获取微信openid工具/原料微信公众平台服务号电脑方法/步骤1、要获取openid,必须要通过OAuth2.0来完成网页授权才能完成的,通过OAuth2.0来完成网页授权后,在经过用户许可后,就可以通过授权页面,获得用户的openid2、如何通过OAuth2.0网页授权呢?要先通过申请高级接口功能3、申请通过后,还要做一个授权页面,引导用户授
2017-05-31 14:24:34
625
转载 微信公共号url地址出错,调用上次设置地址.
开发微信公共号时总是会遇到要修改公共号里自定义菜单的地址,修改过后有些手机会重新请求错误(上次)的地址。针对这个问题,我采用重新关注公共号、清楚公共号内容、清楚浏览器缓存的方式,前两种均不得解决,第三种不能推广使用。经过研究发现微信浏览器确实是在webvIEw的上层做的缓存:就是如果请求过了这个地址,就会存在本地,之后不取线上了。解决方案是 在调试阶段或者频繁更新的页
2017-05-31 13:18:53
13352
原创 C#中WerServer接口参数规范、访问地址的简单阐述,以及出现的问题
WebServer接口:1、通常用.asmx文件编写;2、客户端访问该接口地址为:http://localhost:55769/WebService1.asmx/HelloWorld样式,其中HelloWorld为该接口中的函数名称。3、若接口函数形参有两个以上,则客户端Post请求的参数应注意: a、每个参数以key-value的形式书写 b、参数名称(key)必
2017-05-27 10:27:58
893
转载 一个简单的Httpserver以及获取post提交的参数
以下代码是我从网上找来的,但是一直获取不到post提交的参数,最后经过我的修改,终于可以得到post提交的数据。因为本人在网上找了很久都没有找到相关的资料,特意发出来希望能帮到大家,有什么不足的地方还请大神们指正,小弟不胜感激。Httpserver代码 1 public void StartListen() 2 { 3 usi
2017-05-26 15:04:39
7234
转载 cross apply 和 outer apply的区别
SQL 关于apply的两种形式cross apply 和 outer applyapply有两种形式: cross apply 和 outer apply先看看语法: {cross|outer} apply 再让我们了解一下apply运算涉及的两个步骤:A1:把右表表达式()应用到左表()输入的行;A2:添加外部行; 使用apply就像是先
2017-05-25 10:44:41
450
转载 C#中POST数据和接收的几种方式(抛砖引玉)
POST方式提交数据,一种众所周知的方式:html页面中使用form表单提交,接收方式,使用Request.Form[""]或Request.QueryString[""]来获取。 这里介绍另外一种POST方式和接收方式,就是将整个数据作为加入到数据流中提交和接收接收方式:Stream s = System.Web.HttpContext.Current.R
2017-05-23 09:22:39
4651
转载 .ascx和.ashx的作用和使用
解释中各元素含义Page 是一个指令,language,Codebehind,AutoEventWireup,Inherits分别是这个指令的属性; language="c#" 表示该页面所使用的语言是C#; Codebehind="PreDeliver.aspx.cs" 表示该页的后置代码在当前目录下的PreDeliver.aspx.cs文件中;
2017-05-22 17:57:31
1498
转载 js中的eval 函数作用
简单解释:其功能就是把对应的字符串解析成JS代码并运行如果,比如,你现在要运行一个可变的方法function sayhello(){……}function saygoodbye(){……}var f="sayhello";eval(f+'()');//运行sayhello();f='saygoodbye';eval(f+'()');//运行saygoodbye();其他解释
2017-05-22 16:54:23
844
原创 封装GET、POST请求
/// /// HTTP请求方式枚举 /// public enum HttpMethod { POST, GET }; /// /// 建立HTTP请求,返回请求结果 /// /// 请求Url /// 请求方式 ///
2017-05-22 15:55:47
479
转载 WebForm Repeater: 重复器
Repeater控件,可以用来一次显示一组数据项。比如,可以用它们显示一个数据表中的所有行。 Repeater控件完全由模板驱动,提供了最大的灵活性,可以任意设置它的输出格式。 Repeater支持以下5种模板 ● ItemTemplate : 对每一个数据项进行格式设置 【Formats each item from the data sou
2017-05-22 14:22:21
434
转载 一次上传多张图片
"C#" AutoEventWireup="true" CodeFile="FileUp.aspx.cs" Inherits="FileUp" %>"http://www.w3.org/1999/xhtml">"server">"Content-Type" content="text/html; charset=utf-8"/> "text/javascript">
2017-05-22 14:11:59
617
转载 Webform--LinQ 分页组合查询
一、linq高级查1.模糊查(字符串包含) public List Select(string name) { return con.User.Where(r =>r.UserName.Contains(name)).ToList(); }2.查开头(StartsWith,以XX开头) public List
2017-05-22 13:53:22
272
转载 a href=#与 a href=javascript:void(0) 的区别
javascript:void(0)的意思就是什么也不做!他不是页面URL,而是一个javascript语句void(0),void是一个操作符,该操作符指定要计算一个表达式但是不返回值,这个要计算的表达式是“0”,所以,这个基本是坑爹的写法,完全是糊弄浏览器的。如果你鼠标悬停于一个链接上,在浏览器底部状态栏上显示该链接的目标地址是这个的话,说明这个网页的编写者希望这个链接被点击时不是直接跳转
2017-05-22 13:23:24
351
转载 C#设置系统时间的方法实例详解
获取网络时间:12345678910111213141516171819202122232425262728293031
2017-05-22 11:39:01
1149
转载 身份证号检验详解与更正
(一)18身份证号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。1、地址码 表示编码对象常住户口所在县(市、旗、区)的行政区域划分代码,按GB/T2260的规定执行。2、出生日期码 表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、
2017-05-22 10:41:48
405
原创 GET请求
1、创建请求对象,并设置请求方式WebRequestresponse = WebRequest.Create(url);response.Method = "GET";2、创建响应对象WebResponse wrse = response.GetResponse();3、创建存储流,并读取Stream dataStream = wrse.GetRespon
2017-05-19 13:21:54
196
原创 POST请求
1、设置请求对象(并设置请求地址、方式、类型、长度。) 注:地址中包含所请求的方法名称,该请求如果该请求是无参数请求,则长度设置为 02、(本步骤为有参请求设置)设置参数写入流3、设置响应对象4、响应数据存入读取流中,并读取。
2017-05-19 11:05:43
223
原创 Web.config的读取和修改实例
using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Net.Mime; using System.Text; using System.Threading.Tasks; using System
2017-05-18 10:36:57
1568
原创 RabbitMQ发布/订阅注意事项
发送端:1、创建链接(IConnection、CreateConnection、IModel、CreateModel)2、创建交换器(ExchangeDeclare)3、发送信息(basicPublish)接收端(订阅):1、创建链接(IConnection、CreateConnection、IModel、CreateModel)2、创建交换器(ExchangeDe
2017-05-09 20:48:42
349
转载 C#中的线程(三) 使用多线程
1. 单元模式和Windows Forms 单元模式线程是一个自动线程安全机制, 非常贴近于COM——Microsoft的遗留下的组件对象模型。尽管.NET最大地放弃摆脱了遗留下的模型,但很多时候它也会突然出现,这是因为有必要与旧的API 进行通信。单元模式线程与Windows Forms最相关,因为大多Windows Forms使用或包装了长期存在的Win32 API——连
2017-05-07 23:03:39
260
转载 C#中的线程(二) 线程同步基础
1.同步要领 下面的表格列展了.NET对协调或同步线程动作的可用的工具: 简易阻止方法构成目的Sleep阻止给定的时间周期Join等待另一个线程完成
2017-05-07 23:02:04
230
转载 C#中的线程(一)入门(理解锁)
1. 概述与概念 C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行。一个C#程序开始于一个单线程,这个单线程是被CLR和操作系统(也称为“主线程”)自动创建的,并具有多线程创建额外的线程。这里的一个简单的例子及其输出: 除非被指定,否则所有的例子都假定以下命名空间被引用了: using System;
2017-05-07 22:57:44
1023
转载 c#使用多线程的几种方式示例详解
(1)不需要传递参数,也不需要返回参数ThreadStart是一个委托,这个委托的定义为void ThreadStart(),没有参数与返回值。复制代码代码如下:class Program{static void Main(string[] args){for (int i = 0; i {ThreadStar
2017-05-07 22:43:20
348
转载 C#委托使用详解(Delegates)
摘要委托是C#编程一个非常重要的概念,也是一个难点。本文将系统详细讲解委托。 1. 委托是什么?其实,我一直思考如何讲解委托,才能把委托说得更透彻。说实话,每个人都委托都有不同的见解,因为看问题的角度不同。个人认为,可以从以下2点来理解: (1) 从数据结构来讲,委托是和类一样是一种用户自定义类型。 (2) 从设计模式来讲,委托(类)提供了方法(对象
2017-05-07 22:37:58
269
转载 详解C#中的反射
两个现实中的例子:1、B超:大家体检的时候大概都做过B超吧,B超可以透过肚皮探测到你内脏的生理情况。这是如何做到的呢?B超是B型超声波,它可以透过肚皮通过向你体内发射B型超声波,当超声波遇到内脏壁的时候就会产生一定的“回音”反射,然后把“回音”进行处理就可以显示出内脏的情况了(我不是医生也不是声学专家,不知说得是否准确^_^)。2、地球内部结构:地球的内部结构大体可以分为三层:地壳、地幔和
2017-05-07 22:30:02
174
转载 .Net下RabbitMQ的使用(7) -- 远程过程调用RPC
RPC是在计算中是一种常见的模式,是通常我要用消息队列来实现RPC有3个关键点:1. 服务的寻址2. 消息的接收3. 消息的关联在RabbitMQ的.net客户端里,提供了2个类:SimpleRpcClient 和 SimpleRpcServer 来让我们方便的开发RPC应用。因为RabbitMQ的RPC一定是基于队列的,所以在客户端和服务端都需要要一个各自
2017-05-07 21:31:37
230
转载 .Net下RabbitMQ的使用(6) -- 消息的传输控制
前文中也多次提到消息传输的一些概念,这一篇比较全面的介绍一下,然后补充一些内容。消息的应答RabbitMQ有两种应答模式,自动和手动。这也是AMQP协议所推荐的。这在point-to-point和broadcast都是一样的。自动应答-当RabbitMQ把消息发送到接收端,接收端把消息出队列的时候就自动帮你发应答消息给服务。手动应答-需要我们开发人员手动去调用ack
2017-05-07 21:30:14
688
转载 .Net下RabbitMQ的使用(5) -- 持久化
消息的持久化是消息队列必备的功能之一。在这篇文章中,就介绍一下RabbitMQ的持久化机制,和它的使用。队列的持久化在前几篇的例子中,我们常常看到如下定义queue的方法:channel.QueueDeclare("Q1", false, false, false, null);方法的第四的参数autoDelete,一般都会输入false。文档描述这个参数如果是true
2017-05-07 21:28:53
269
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人