- 博客(136)
- 资源 (2)
- 收藏
- 关注
原创 事务和锁--查看数据库中的锁
数据库加锁是修改哪一条加锁,还是在页上加锁,还是在表上加锁,数据库来决定如果你更改的是两条记录,就在两条记录上加锁,如果你更改的是很多条,这个时候数据库一看一条一条加锁太麻烦,给整个页加锁更省事,或者给整个表加锁更加省事加锁的级别越大,数据库越省事,数据库越省事,并发性越差,修改一条记录如果给表加上独占锁,那么想查询别的记录都查询不了了加锁的对象越小,并发性越好加的锁对象越大,并发...
2019-11-13 11:40:45 213
原创 通过js看类似C#中的回掉
我认为并行有两种形式,第一种是异步,第二种是多线程,目的都是为了实现并行,只不过异步和多线程都是手段而已 - 第一种异步 异步,执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程 - 第二种异步 多线程,由于同步函数在请求API数据的时候,由于网络等原因,不能很快的完成,因此会发生进
2016-04-27 22:50:24 498
原创 C#新开一个线程取到数据,如何更新到主线程UI上面
之前有被面试官问过,在WinForm中,要去网络上获取数据,由于网络环境等原因,不能很快的完成,因此会发生进程阻塞,造成主进程假死的现象,需要怎么解决?因此,往往是新建一个线程,让他执行耗时的操作,主线程管理用户界面,不会出现UI假死的情况,但是通过线程获取到的数据如何更新回主进程的UI上呢?这是另外一个问题如下例子我们发现如果直接在线程里更新UI会报错,报“从不是创建控件lable1的线程访
2016-04-13 11:44:47 10940
原创 ASP.NET温故而知新学习系列之加密解密技术—对称算法加密(一)
一:什么是对称算法? 对称算法也被称作单密钥算法,也就是加密密钥能从解密密钥中推算出来,同样解密密钥也能从加密密钥中推算出来,说白了,就是加密密钥和解密密钥是同一个密钥,对称算法的安全性依赖于密钥,密钥被人知道了,都能对消息进行加密和解密二:对称算法的加密和解密表示法 M表示明文,E表示加密,k表示密钥,D表示解密,C表示密文 Ek (M) = C /
2015-08-31 10:29:49 444
原创 ASP.NET温故而知新学习系列之网站安全技术—加强页面间传值的安全性Convert.ToBase64String(三)
阅读目录 一:加强页面间传值的安全性 二:Convert.ToBase64String 三:运行效果 一:加强页面间传值的安全性 使用查询字符串进行页面间传值的过程中,一定要把查询字符串要传递的值进行加密,以下是未对查询字符串加密的URL:http://localhost:3337/ProductView.aspx?ID=12,用户可以修改查询字符
2015-08-31 10:23:45 675
原创 ASP.NET温故而知新学习系列之网站安全技术—Web.config加密和解密(一)
阅读目录 一:我们为什么要对web.config配置文件中的配置节加密? 二:怎么样加密和解密? 三:实例 四:运行效果 一:我们为什么要对web.config配置文件中的配置节加密? 因为在我们的项目中,有的配置节可能包含敏感信息,我们看下面的配置节中包含了我们连接数据库的用户名和密码以及IP地址,这要是暴露出去是很危险的,还有配置节中
2015-08-31 10:17:43 605
原创 ASP.NET温故而知新学习系列之网站安全技术—预防脚本攻击(二)
阅读目录 一:脚本攻击 二:模拟脚本攻击 三:运行效果 四:预防脚本攻击的主要方法 一:脚本攻击 脚本攻击是指将恶意的字符插入到网页中来,浏览器无法验证这些插入的字符,并且会将它们作为网页的一部分进行处理 从浏览器的角度来看,网页只是一个长的字符串,浏览器会按照顺序处理这个字符串,在此过程中,会显示某些字符,同时按照某些规则解释
2015-08-31 10:15:48 466
原创 把代码写成艺术,真正体会面向对象编程思想
我们学的是面向对象编程的语言比如:java,c#,我们打着面向对象编程的旗号,却做着面向过程编程的工作 现在我们基本上去一个公司,上去就写代码,老板让我们新增功能,我们就开始写新的方法,做着面向过程编程,每个人都不断地向最初的净地里添自己的代码,最初的代码块就像一个公共厕所一样,每个人都自顾自的在里面拉屎,而没有人去维护清理打扫,最后臭气熏天,试想我们有没有真正用到面向对象语言的三大特性,封
2012-02-19 00:57:59 617
转载 巧妙地帮你的手机节省流量,担心流量超出的机友们看过(转)
一、关闭自动同步和更新1.关闭自动同步。安卓系统自动同步可能是流量偷跑的其中一个原因,安卓手机系统默认在联网的情况下,会自动访问谷歌的服务器,查询系统更新情况,而在大多数情况下,手机用户并不需要通过这种方式更新系统,完全可以把这一功能关闭,节约流量。2.我们可以通过关闭自动同步解决这一问题,在需要同步时进行手动同步即可。进入设置——账户与同步——将“自动同步和背景数据”关闭。安卓手机系
2012-02-19 00:57:26 1102
原创 Android深入浅出系列之Android开发环境搭建—Android开发环境搭建Eclipse(二)
Eclipse IDE for Java Developers 精简版 Eclipse Classic 3.5.0 谷歌推荐版本 下载Eclipse 我们输入Eclipse的官方网址:http://www.eclipse.org/,我们点击Downloads,在左侧会列出Eclipse的各个版本,在安卓的文档上推荐使用的是Eclipse Galileo版本的,最后我们到达这个网址
2012-02-19 00:56:14 519
原创 Android深入浅出系列之Android开发环境搭建—Android开发环境搭建JDK(一)
前言 Android开发语言使用的是Java,所以我们要安装JDK(Java Development Kit)Java 开发工具包,Android开发使用的是JDK1.5版本的,所以我们的电脑要安装JDK1.5以上版本的 安装JDK 一:安装JDK 安装好了JDK后,,在dos下输入java -version,如图显示,表示我们安装正确,大家可以看到我装的是JDK1.7版本
2012-02-19 00:55:26 558
原创 迈向架构设计师之路系列—1-简单对象访问模式
假设场景 现在假如公司要你做一个公司内部的薪资管理系统,根据职位的不同,每月的工资自然不一样,经理一月10000加上分红1000,技术人员一月5000加上200的餐补,客服一月3000,现在要是由你来做,你会怎么设计?代码无错便是优已经不适用了 大部分人的写法v1.0 这样的写法会带来一个问题?什么问题呢?复用性的问题 假如现在你接了个私活,别的公司让你也写个公司内部的薪资
2012-02-19 00:54:19 513
原创 C#温故而知新学习系列之.NET运行机制—3-.NET中托管代码是指什么?
托管代码 托管代码就是基于.NET元数据格式的代码,运行于.NET平台之上,所有的与操作系统的交换由.NET平台来完成,就像是把这些功能委托给.NET,所以称之为托管代码 由公共语言运行库环境执行的代码,而不是直接由操作系统执行的代码,托管代码应用程序可以获得公共语言运行库CLR的服务,例如自动垃圾回收,运行库类型检查,安全支持等服务,这些服务帮助提供独立于平台和语言的,统一的托管代码
2012-02-19 00:52:58 955
原创 C#温故而知新学习系列之.NET运行机制—2-.NET中非托管代码是指什么?
在讲非托管代码这个概念的时候,我们先提几个涉及到的概念 我们“在解释执行和编译执行的区别?” 一文中讲到机器码的概念,机器码是指机器语言(machine language)是一种指令集的体系,这种指令集,称机器码(machine code),是电脑的CPU可直接解读的 CLR是.NET中的公共语言运行库,也就是说.aspx页面是通过CLR进行编译成dll文件的,因为aspx页面可以用C
2012-02-19 00:51:45 735
原创 C#温故而知新学习系列之.NET运行机制—1-.NET Framework概述及其组成
NET Framework .NET Framework简称.NET框架,该框架是微软公司推出的面向对象的软件开发与运行平台,.NET Framework具有两个组件,公共语言运行库(Common Language Runtime CLR)和.NET Framework类库(Class Library) 一:公共语言运行库(Common Language Runtime CLR
2012-02-19 00:50:32 1623
原创 C#温故而知新学习系列之面向对象编程—16-析构函数
析构函数 析构函数是在类的破坏时自动执行的操作,析构函数在碎片收集时会自动调用,程序员无法控制何时调用析构函数,因为这是由垃圾回收器决定的 垃圾回收器 与运行时不进行垃圾回收的开发语言相比,C#无需太多的内存管理,这是因为.NETFramework垃圾回收器会隐式的管理对象的分配和释放,垃圾回收器检查是否存在应用程序不在使用的对象,如果垃圾回收器认为某个对象符合析构,则调用析构函
2012-02-19 00:48:30 565
原创 C#温故而知新学习系列之面向对象编程—15-对象初始化器
对象初始化器 对象初始化器,就是简化代码,让本来几行写完的代码,一行就写完了 使用对象初始值设定项,可以在创建对象时向对象的任何可访问的字段或属性分配值,而无须显示调用构造函数,其实对象初始化器最大的作用就是减少代码的书写量,把原本一些人做的事情交给了框架 举例 using System; using System.Collections.Generic; us
2012-02-19 00:47:22 575
原创 C#温故而知新学习系列之面向对象编程—14-分布类是什么?
分布类 为了将在某种意义上讲比其他细节更重要的代码分离出来,可以将一个类的实现划分到多个C#文件中,这就是分布类,比如:有个Pesoon类的源文件叫 Pesoon.cs,有时候为了区分不同开发人员的维护范围,避免定义在同一个文件中造成互相干扰,C#通过分布类的做法,将一个类拆分为多个文件 partial class 类名称 { //类成员 } 如果使用这
2012-02-19 00:46:28 742
原创 C#温故而知新学习系列之面向对象编程—13-类和结构的区别是什么?
类和结构的区别是什么? 结构和类的初始化都用new关键字,但是它们之间的差别很大,主要体现在三个方面 三点区别 1:结构是值类型,类是引用类型 2:结构不支持继承,类可以继承其他类,其自身也能被继承 3:结构没有构造函数和析构函数,类具有构造函数和析构函数每天学习一点点,每天进步一点点 用文字记录工作,用文字记录人生
2012-02-19 00:43:35 549
原创 C#温故而知新学习系列之面向对象编程—12-属性
字段 字段是存储类要满足其设计所需要的数据,字段是与类相关的变量 比如以前讲的Cat类中的private string _name;_name其实就是一个字段,它通常是类的私有变量 属性 属性是一个方法或者一对方法,但在调用它的代码来看,它是一个字段,即属性适合以字段的方式使用方法调用的场合 通常字段都是private,即私有变量,而属性是public,即公有变量,那
2012-02-19 00:39:51 569
原创 C#温故而知新学习系列之面向对象编程—11-自动属性
自动属性 当属性访问器中不需要其他逻辑时,自动实现的属性可时属性的声明变得更加简洁 创建自动属性 一旦在类中声明了自动属性,那么编译器将创建一个私有的匿名后备字段,但是这个私有字段只能通过属性的get和set访问器进行访问 自动属性必须同时声明get和set访问器,假如要创建只读的自动属性,必须在set访问器前加上privvate关键字 实例 using Sys
2012-02-19 00:37:51 530
原创 C#温故而知新学习系列之面向对象编程—10-扩展方法
扩展方法 扩展方法是你能够向现有类型和自定义类型添加方法,而无需创建新的派生类型或者以其他方式修改原始类型 扩展方法是一个特殊的静态方法,它定义在一个静态类中,但是可以在其他类型(我们要扩展的那个类)的对象上像调用实例方法那样调用,因此通过扩展方法可以在不修改一个类的前提下对一个类进行功能上的补充 创建扩展方法 扩展方法和一般静态方法定义类似,惟一的区别是在第一个参数的前面
2012-02-19 00:35:52 494
原创 C#温故而知新学习系列之面向对象编程—9-静态方法
静态方法 定义静态方法和定义非静态方法类似,只是在定义静态方法时,需要在返回值类型前加static关键字,静态方法在程序启动的时候,系统就会为静态方法在内存中创建一个实例,不需要再手动去实例静态方法,通过类名可以直接调用静态方法,静态方法在内存中占有一定的内存空间。 在类中一旦定义了静态方法,那么就可以直接通过类名调用静态方法,并不需要实例化对象访问静态方法 实例 usin
2012-01-18 14:42:03 613
原创 C#温故而知新学习系列之面向对象编程—8-方法的重载
前言探讨 我们说过构造函数是对类进行初始化的,我们希望刚出生的小猫有个姓名叫“咪咪”,当它叫的时候,能说“我的名字叫咪咪”,此时就要用到构造函数了,如下代码没有加绿色代码的部分,但是问题来了?如果我们事先没有给小猫起好名字,那么就创建不了实例了,这种现象很正常,有些父母刚生下孩子的时候,姓名没有起好是很正常的事情,就以下的代码没有加绿色代码的部分,你如果写Cat cat = new Cat(
2012-01-18 14:14:45 530
原创 C#温故而知新学习系列之面向对象编程—7-构造函数
构造函数 构造函数又叫构造方法,其实就是对类进行初始化,构造函数与类同名,无返回值,也不需要void,在new时候调用 所有的类都有构造函数,如果你不写构造函数的话,系统默认生成空的构造函数,若你有自定义的构造函数,那么默认的构造函数就失效了,也就是说,由于你没有在Cat类中定义过构造函数,C#会生成一个空的构造函数Cat(),当然这个空的函数什么也不做,只是为了让能顺利的实例化而已
2012-01-18 14:14:00 553
原创 C#温故而知新学习系列之面向对象编程—6-out参数
out参数 out关键字与ref关键字很相似,out关键字也会导致参数通过引用来传递,与ref关键字不同,ref关键字要求变量必须在传递之前进行初始化,out关键字不要求变量在传递之前必须进行初始化,但是必须在方法中为变量赋值,如果使用out关键字,方法定义和调用方法都必须显示的使用out关键字 注意 1:如果在方法体中没有为out参数赋值,那么将无法编译 什么时候使用ou
2012-01-18 14:13:01 621
原创 C#温故而知新学习系列之面向对象编程—5-ref参数
ref参数 不仅可以通过值为方法传递参数,还可以通过引用为方法传递参数,若通过引用为方法传递参数,需要使用ref关键字 如果把一个参数传递给方法,且这个方法的输入参数前带有ref关键字,那么这个方法对参数所作的任何改变都会影响原来对象的值 注意 1:通过ref传递的引用参数,在函数成员调用之前,必须已赋值,如果没有明确赋值会报错 实例 using System;
2012-01-18 14:12:20 540
原创 C#温故而知新学习系列之面向对象编程—4-方法
方法 在C#中通过创建函数实现方法,方法是一个执行可以由对象和类完成计算或者行为的成员,方法通过指定访问级别,返回值,方法名称,方法参数,在类或者结构中声明的,这些部分统称为方法的“签名”,访问修饰符默认为private 方法格式 如果为方法传递参数,必须声明数据类型,如果方法有返回值,return必须与返回值一起使用以指明出口点 访问修饰符 返回值类型 方法名称 方法参数
2012-01-18 14:11:23 480
原创 C#温故而知新学习系列之面向对象编程—3-类的数据成员
类的数据结构 类是一种包括数据成员,函数成员,嵌套类型进行封装的数据结构 类包含的数据成员 构造函数,析构函数,常数,字段,属性,方法,事件,委托,类,结构,接口,索引器 数据成员可以是静态成员,即与整个类相关,也可以是实例成员,即与对象相关 字段是与类相关的变量,与声明变量的方式相同,字段在类中声明,变量则在主函数和方法中声明 实例 using Syst
2012-01-18 14:10:28 483
原创 C#温故而知新学习系列之面向对象编程—2-定义结构
定义结构 结构与类相似,主要区别在于,类是存储在堆上的引用类型,而结构是存储在堆栈上的值类型,以及访问方式和一些特征(结构不支持继承)。 在C#中使用struct关键字,一个名称,一对大括号来定义一个结构,也是使用new关键字声明实例。 结构的语法格式 struct MyStruct { //结构主体 } 实例 u
2012-01-12 15:50:59 513
原创 C#温故而知新学习系列之面向对象编程—1-定义类与创建类的对象
定义类 在C#中使用class关键字,一个名称,一对大括号来定义一个新类,类的数据成员和方法位于类的主体内(一对大括号之间) 类的语法格式 class MyClass { //类的主体 } 类修饰符 在定义类的时候可以在类的前面加上访问修饰符,类的修饰符用于控制被访问的范围,默认情况下,类的修饰符为internal 我们可以看到我们在类前面
2012-01-12 15:50:28 677
原创 ASP.NET温故而知新学习系列之ASP.NET中的多线程编程—.NET下的多线程编程2.2-Thread中利用构造函数传递参数
前言 前一节说了我们创建线程的参数是一个函数,当新的线程启动的时候,它就会执行这个函数,这个函数是没有任何参数的,且没有返回值的,那么新的需求来了,如何调用一个有参数的函数呢? 利用构造函数传递参数 using System; using System.Collections.Generic; using System.Linq; using System.Te
2012-01-12 15:49:05 2499
原创 ASP.NET温故而知新学习系列之ASP.NET中的多线程编程—.NET下的多线程编程2.1-Thread类的使用
前言 多线程编程是跨语言的,跨环境的,所以我们得学好它,对应用程序的性能提高是有帮助的。 Thread类的使用 1.1 启动新的线程 Thread thread = new Thread(new ThreadStart(Count));Count是要被新的线程执行的函数,这个函数默认情况下是没有参数的。 1.2 杀死线程 在杀死一个线程前,先判断这个线程是否
2012-01-12 15:48:04 2891
原创 ASP.NET温故而知新学习系列之ASP.NET中的多线程编程—1-线程机制
线程概念 线程是程序执行的基本原子单位,我们上学的时候学过一个分子包括无数个原子,而原子是不能在分割的,原子是最小的单位,一个进程可以由多个线程来组成,解放战争中有好多战役比如淮海战役,淮海战役中有很多小的战斗组成的,我们可以把战役看做进程,而战役中很多小的战斗看做线程,从这个角度来看,为什么会提高效率呢,把一个进程分成好多线程,把一个战役分成好多小的战斗来组成,让它们并发异步执行来提高运行
2012-01-09 17:08:00 936
原创 ASP.NET温故而知新学习系列之深度剖析ASP.NET架构—HttpHandler(三)
前言 我们在上节讲了使用ISAPI是一种重要的技术,可以让我们扩展服务器的功能,有两个手段实现,一个是ISAPI扩展,一个是ISAPI过滤器,我们下面就来说说其中的这个ISAPI扩展。 一:HttpHandler HttpHandler实现了ISAPI Extention的功能,HttpHandler它处理请求(Request)和发送响应(Response),HttpHandle
2012-01-09 17:06:17 504
原创 ASP.NET温故而知新学习系列之深度剖析ASP.NET架构—HttpModule(二)
前言 我们在上节讲了使用ISAPI是一种重要的技术,可以让我们扩展服务器的功能,有两个手段实现,一个是ISAPI扩展,一个是ISAPI过滤器,我们下面就来说说其中的这个ISAPI过滤器。 一:ISAPI筛选器 IIS本身是不支持动态页面的,也就是仅仅支持静态.html页面的内容,对于.asp,.aspx,.php,.java,IIS并不会处理这些标记,IIS会把这些文件当做文本
2012-01-04 18:22:20 466
原创 ASP.NET温故而知新学习系列之深度剖析ASP.NET架构—ASP.NET请求的处理过程(一)
前言 我为什么要写这一系列呢,因为只有了解运行机制,学好底层,对我们更深入的理解一定的问题有帮助。 一:ASP.NET的工作原理 我们根据下面这张图来说明ASP.NET是如何来工作的 1.1 客户请求Web页 我们知道ASP.NET是B/S结构,也就是服务器和浏览器这样一个结构,服务器可以有一台或者多台,对于浏览器可以有无数个,每个客户是通过浏览器来访问服务器的,所以
2012-01-02 14:58:06 733 1
原创 C#温故而知新学习系列之XML编程—8-XMLSerializer类把XML文档反序列化为对象
前言 之前我在一家电子商务公司做接口对接工作,同步快递公司给我们网站的订单数据,在这里我先给出快递公司给我的接口文档(见下图),我当时的做法是通过XmlDocument以及XmlElement,XmlNodeList等类去解析这个文档的,然后找到我要的数据更新至我们的数据库的,其实在这里有个更简单的做法,就是反序列化,把XML文档反序列化为对象。 实现步骤 一:X
2012-01-01 11:00:33 985 1
转载 Android实现开机自动运行程序(转)
有些时候,应用需要在开机时就自动运行,例如某个自动从网上更新内容的后台service。怎样实现开机自动运行的应用?在撰写本文时,联想到高焕堂先生以“Don''t call me, I''ll call you back!”总结Android框架,真是说到点子上了。理解这句话的含义,许多有关Android平台上实现某种功能的问题,都能迎刃而解。使用场景:手机开机后,自动运行程序,在屏幕上显示"H
2011-12-30 17:00:40 508
异步Socket
2016-04-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人