自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (6)
  • 收藏
  • 关注

原创 Python语言特性:如何自定义dict

如何自定义容器类型,那么我们就需要考虑类似于标准容器类型是如何实现的?我们可通过继承标准字典类型的基类来实现重载。官方文档有描述(见https://docs.python.org/3/reference/datamodel.html?emulating-container-types#object.__delitem__), 比如字典类型就是继承了MutableMapping基类,我们自定义字典类...

2019-10-20 08:44:23 424

原创 自制ORM

model里面的成员都是全局变量model里面为全局变量,以便于再未初始化时可以获取该类的成员,将query、filter方法里面的参数设置为model.field,这样就可以获取该对象的表达式。如:session.query(TestTable).filter(TestTable.number == item. number)通过查找TestTable类获取该类的所有字段,可以重载T...

2019-10-16 14:07:29 161

原创 Python 打包说明

cxfreeze打包过程中最好通过setup.py来进行打包,打包的python程序需由模块+单个文件方式进行组织,否则会出现导入错误(ImportError),打包的setup.py配置如下:# coding=utf-8from cx_Freeze import setup, Executable# python setup.py buildincludefiles = ['RE...

2019-08-05 12:02:26 235

原创 Python语言特性:迭代器

List列表Python中如:List、Set、dict等容器都支持元素遍历操作,这些遍历操作中都会采用for x in list类似访问形式。这些访问形式的实现就采用了迭代器,实现迭代器可以显示使用yield关键字产生,也可以采用类重载默认方法__iter__函数的形式来实现,如未实现该方法则判断是否重载__getitem__方法。__iter__与__next__Iterable接...

2019-02-17 18:21:14 626

原创 C++ 11学习笔记之右值引用

l  左值与右值的区别C++中左右值的区分标准为:是否能够取地址,如果能取地址则为左值,否则为右值。左值:具名变量、对象;右值:C++11中将右值分为:将亡值(xvalue,expiring value)和纯右值(prvalue,pure value),纯右值:非引用返回的临时变量、原始字面量、运算表达式产生的临时变量和lambda表达式;将亡值:与右值引用相关联的表达式,如将被移动的对象,T&a...

2018-07-02 11:46:37 179

原创 Moonsharp学习笔记

类共享访问机制Moonsharp为C#版本的lua运行库,通过该库可实现lua在C#上的个性化,共享类实现如下: class MyClass { public int value; public MyClass(int i) { value = i; } public int add(int num) { return...

2018-06-29 22:48:48 1265 2

原创 解析C#中reference与out关键字

C#中数据类型分为两种:值类型和引用类型,值类型为:基本类型(枚举、数值、布尔)、String、Struct类型,而其他均为引用类型。在引用类型中,reference标注是否对该类型无影响呢?测试程序如下: class A { public A() { Console.WriteLine("A::A()"); }

2018-01-14 19:05:46 2510

原创 python 爬虫总结

最近写了一些爬虫,中间前前后后遇到不少坑,部分总结如下:1.      请求数据头的设置:User-Agent,如不进行主动设置,服务器可能就拒绝服务。2.      Http字段Referer:该字段表明本次请求的上一次请求页面,有些链接过来的请求需要填充该字段。3.      Cookie:每次请求的服务器状态保存。4.      Host:服务器跳转过程中会修改该字段,我们需

2018-01-09 17:16:25 856

原创 Sqlalchemy 乱码解决方法

这几天遇到一个问题:通过Sqlalchemy将数据存入mysql时出现了乱码,结合网上的解决方案,汇总如下:1. 设置引擎编码方式为utf8。engine = create_engine("mysql+pymysql://root:[email protected]:3306/test?charset=utf8",echo=True,encoding='utf-8',convert_un

2017-12-11 13:03:45 8046 1

原创 学习yield关键字

当使用yield关键字时,这就意味着该函数返回的是一个迭代器(iterator),不用自己维护一个迭代器内部的状态管理(比如C++中的itereator,或实现C#中实现的接口IEmuerator),其使用模式如下:yield return ;yield break;其中第二种用于for循环终止。这样的模式也就实现了Linq的查询,但注意yield使用要求如下:1.      迭代

2017-10-01 09:59:57 196

原创 C#调用C++函数

C#主要通过命名空间System.Runtime.InteropSerivces中的关键字DllImport关键字来实现调用C++函数,参数的引用传递则通过序列化来实现(ref/out关键字及IntPtr指针类型),结构体的序列化采用StructLayout标签。1. 使用DllImport关键字来调用C++函数,所声明的函数必须为static exten类型:[DllImport("us

2017-09-27 12:29:01 789

原创 Windows交互服务

在Windows中服务与桌面分别位于不同的会话中,服务与桌面交互主要有以下方法:1.  在用户会话中创建进程,服务与该进程交互,实现服务与桌面交互。这种方法可以实现复杂的交互,但首先需要解决的是获取当前用户的会话,利用CreateProcessAsUser函数来创建进程。2.  通过函数WTSSendMessage实现弹窗提醒。这里将展示第一种方法,在创建服务函数CreateServi

2017-05-17 23:15:02 486

原创 sharepoint 2013 安装问题记录

独立安装SharePoint2013碰到的"SDDL"问题及解决方法参考 http://www.cnblogs.com/huaen/p/3770297.htmlException: System.ArgumentException: TheSDDL string contains an invalid sid or a sid that cannot be translated.

2017-04-12 14:32:59 1030

原创 标签与模板的应用

C#支持标签操作,当与模板及类型反射结合时,具有很大的实用价值。这里介绍一个典型的数据库操作应用,编写一个通用的数据库操作ORM,方法如下:1.      通过反射获取模型类中的成员信息,使用Type类实现;2.      通过标签获取该模型类与数据库之间的关系,使用AttributeUsage实现;3.      通过模板实现数据库表之间的操作,利用数据库操作基类DbDataRead

2017-02-11 14:25:11 281

原创 API函数拦截

在Windows中,我们有时需要拦截系统提供的API来实现某些特殊的功能,如针对不同的进程实现API权限控制或者监听用户输入输出,而API函数拦截就是实现这些功能的基础。其通过将系统函数替换为我们提供的函数,当进程内调用该函数时,系统自动调用我们替换后的函数,这样我们就可以实现不同的返回结果,但注意的是需要与系统函数相同的参数签名,否则会引起进程崩溃。关键技术点如下:1)      根据MSD

2016-12-26 11:18:44 831

原创 远端线程注入

在编写进程注入程序中最常见的部分就是远端线程注入:将本地的程序(一般为动态链接库)注入目的进程,以实现本地程序在目的进程空间执行。这里面有两个关键点:1)  远端进程中创建远端线程在Windows中提供对应的API(CreateRemoteThread)来创建远端线程,远端线程执行的函数必须为目的进程空间,但进程地址空间独立,一般选择为系统默认函数以此函数为基点运行我们的程序,这里选择加载

2016-12-26 11:16:04 298

原创 JSP中的内容布局

在开发前端网页过程中,网站一般都有一个模板页,用来保存整个网站最基本的风格,而其它网页都在这个风格上进行修改。在JSP中可通过tag来实现此项功能。在WEB-INF/tags/目录下新建一个base.tag的模板页面用来保存新创建的模板:${num}在这个模板中我们定义了两个可替换的部分:header,footer;一个变量num。子页面

2016-09-04 10:17:50 12929 1

原创 前端联想下拉框的实现

当用户输入字符时,前端可自动联想出用户输入的字符,下拉框可以增加界面的友好性,这种提示功能可通过开源框架typeahead来实现。首先该功能需要包含以下JS文件:假设前端的下拉框html代码如下:Suggestion JS初始化代码如下:var bestPictures = new Bloodhound({ datumTokenizer: Bloodhound

2016-07-30 15:13:51 5543

原创 C# 中的泛型与重载

C#中如泛型与重载有相同类型(类型等价),普通函数会优先调用,而且在决议过程中,泛型函数中的where条件未计入考虑。测试程序如下:class A{ public override string ToString() { return "Class A"; } } interface ITest {

2016-07-28 17:20:34 1971

原创 C# 反射功能

C#中的反射使用主要集中在System.Reflection命名空间中,通过获取对象的属性和方法并创建对象来调用对应的函数等功能,方法主要集中在如下类:MethodInfo:获取类的方法Type:获取类的类型ConstructInfo:获取该类的构造方法用于创建对象。完整的示例如下:class A { public void TestMethod1(st

2016-04-16 12:21:10 306

原创 VS2010 Coredump文件生成

在VS2010中系统通过调试产生的exe文件,通过项目属性->调试->启用非托管代码调试功能来调试程序。生成exe后,如出现异常终止,通过任务管理器创建转储文件:然后通过VS2010打开该转储文件,点击调试就会看到异常的代码了。

2016-04-14 09:08:02 1437

原创 MVC连接SQL Server2008遇到的问题

登录报错:异常错误:无法打开登录所请求的数据库 "db_test"。登录失败。用户 'CCB-PC\CCB'登录失败。创建一个用户,Integerated Security:Yes:Windows当前用户登陆认证;No:用户名密码认证设置用户名、密码中注意取消密码设置策略,选择用户SQL身份验证登录。设置连接字符串

2016-03-10 14:48:13 826

原创 C#中的域与属性

C#中类成员变量的定义分为两种:域(field)与属性(property),属性为公有变量,以get,set访问器进行访问,域多为私有变量,非get、set访问器进行访问,如以下类的的域为成员name,而属性为val. class Customer { #region fields public string name; #endregion #

2015-11-09 08:30:32 458

原创 EC2 上部署Django应用

在amazon EC2上创建一个Ubuntu 14.04实例后,配置网络安全访问规则后,通过命令:ssh –i xxx.pem [email protected]登录主机。1. 安装django登录完成后,开始安装pip,通过pip来安装Django应用:sudo apt-get install python-pip 安装Django 时,需要检查下载的

2015-10-27 22:04:07 2351

原创 C#与IronScheme交互

IronScheme为C#版本的Scheme编译器,通过它可以实现scheme与C#之间的相互调用,scheme编写为库,C#直接调用scheme库函数,这样就可以动态加载scheme代码,完成调用。Scheme也可以调用C#中的库函数或自定义类,具体方法可见官方文档。下面讨论的是C#调用scheme函数。1.      编写scheme库函数;Define a function wr

2015-10-20 12:54:44 826

原创 添加Linq支持

C#中添加Linq支持,只需添加一个迭代器就完成支持。迭代器模式是面向对象语言一个常见设计模式,C#中无需像C++那样维护一个内部状态,通过关键字yield模式来实现,编译器通过自动生成一个内部类来维护迭代器中的状态。测试程序如下:public class EYield : IEnumerable { public IEnumerator GetEnumerator()

2015-09-09 10:07:14 609

原创 协变(Covariance)与逆变(Contravariance)

协变与逆变是类型系统中一个常见的问题,基类与子类之间类型变换时的定义要求。协变:模板参数实例化中的子类赋值给基类,保留类型的顺序,从具体类型到抽象类型。IEnumerable base =IEnumerable         逆变:与协变相反,基类赋值给子类,从抽象类型到具体类型。          IEnumerable derived =IEnumerable      

2015-09-02 18:20:48 537

原创 Linq 延迟执行

使用Linq时,其中一个重要概念就是延迟执行,所有的谓词求值需要等到触发时才会被调用。在声明时,它们是不执行的,除非调用Lambda表达式,造成其中的代码开始执行,否则不会被执行。如果Lambda表达式执行的代价比较高(如调用数据库,密集计算等),那么为了优化代码,通过使用”ToXXX”方法来转换为集合方式,减少Lambda表达式的执行。但转换后会造成整个结果都加载到内存(在此之前可能驻留在一个数

2015-08-29 13:51:32 391

原创 模板约束

与C++模板不同,C#模板增加了对于泛化类的约束问题,泛化类约束共计4中类型:基类约束:要求泛化类必须继承至某个基类。接口约束:要求泛化类必须实现某个接口。构造函数约束:要求泛化类必须提供默认的构造函数。值/引用数据类型约束:要求泛化类只能为值类型或引用类型。1. 基类约束,当出现多个约束时,基类约束必须放在最前面,基类约束中的基类不能是sealed class(密封类)和非值

2015-08-20 09:40:09 1192

原创 C#中的装箱与拆箱

C#中数据类型分为两种:数值类型和引用类型,两种类型相互转换过程中就涉及到装箱与拆箱操作,当数值类型转换为引用类型就称之为装箱,相反过程为拆箱。装箱操作为:1.       在堆上分配一块内存,用于保存数值类型中的数据。2.       将数值类型中的数据复制到目的内存中。3.       引用变量指向该内存位置。装箱操作是一个隐式操作,拆箱操作为一个显示操作,需要进行类型的强制转

2015-08-14 10:23:54 425

原创 C#判断对象相等

C#语言中,由于内存为系统自动管理,且重载Equals方法形参为Object基类,加上C#建议实现GetHashCode方法来加快判断,这样在判断相等方面就多了几步:1.       判断两个对象是否对象相等;2.       判断两个对象类型是否相等;3.       判断两个对象GetHashCode方法是否相等;4.       判断基类对象是否相等;5.       判

2015-08-13 20:59:08 1132

原创 CSS学习笔记

列表样式list-stye:控制列表中图形样式,对齐方式背景颜色中有一个渐变指示:rgba()padding属性:元素离边框的距离 块(可定位)元素:段落、表格、div;盒子模型:边框与边框之间的距离margin:两个相邻的外边距连接一起时,两者之间的距离最大为边距非两者之和 定位:进行位置定位时,不考虑盒子中的边距问题。普通流:浮动流:绝对定位:

2015-08-03 11:22:50 243

原创 C#中的多态特性

C#中的多态特征与C++类似也存在相同的隐藏与运行时多态,但在C#中,隐藏特征需要通过关键字显示指明。在C#中,多态关键字有三个:virtual: 如基类方法增加该关键字,则表明子类可重写此方法,重写分为两种:隐藏和多态。new: 隐藏此方法,当进行类型赋值”slice”特征时,不进行多态调用,默认方式。override: 重载(扩展)此方法,实现虚表多态性。

2015-07-19 11:34:31 896

原创 CC2530 事件轮询流程

CC2530芯片中的操作系统抽象层(OSAL)是一个多任务操作系统,在开发时首先需要将任务静态添加至系统进行编译,当任务执行后会产生对应的事件,当系统初始化时,需要初始化新添加的任务:void osalInitTasks( void ){ uint8 taskID = 0;//这里可以看出系统最多有256个任务 tasksEvents = (uint16 *)osal_mem_

2015-07-11 09:09:24 1148

原创 Android 触屏画图

Android系统中触屏画图中主要需要解决以下问题:1.      画图的视图,在哪上面画?2.      怎么画?3.      画的位置?Android官方文档描述画图需要自定义视图(Custom View),通过重载OnDraw解决画的内容,OnMeasure处理画图的布局位置。自定义视图后,加入main.xml文件布局中,但加入布局需要在自定义视图中实现带有两个参数的构造函

2015-06-30 11:44:00 841

原创 C++ 中[]操作符重载

在实际程序中遇到一操作符问题,记录下来方便以后查询。在写HashTable数据结构中,遇到操作符[]重载问题,具体需求如下:1.      a[x] = b; //如果a[x]为空,则添加记录2.      b = a[x]; //如果a[x]为空,则提示出错对[]操作符重载之后发现根本不能解决问题,查找一些资料后发现该问题为重载后的读写问题,一个重载解决不了问题。上面两点展开如下:

2015-05-06 15:45:28 355

原创 CC2530中断处理方法

在CC2530手册中2.5小节总结了中断处理的一般步骤,其中涉及的名称如下:1.  清除中断标志位2.  全局中断标志EA,用于开启所有中断3.  设置特殊功能寄存器(SFR)中中断标志位4.  设置IEN0、IEN1、IEN2寄存器中对应的中断标志位,如睡眠定时器STIE。5.  编写中断向量及中断处理程序。在中断处理程序中,首先清除中断悬挂(pend

2015-04-21 12:50:51 5846

原创 COM学习笔记三--聚合

在开发过程中,当一个COM B需要调用另一个COM A时,这时有两种方法来实现该操作:包含,聚合。前一种直接保存A的对象指针,所有的操作均在B中进行封装,涉及到A操作方法,利用A对象指针完成调用;而聚合在初始化期间保存对象A的指针,在运行过程中,所有涉及到A操作的方法无需封装,直接调用A的方法,将对象A的指针直接暴露给用户,让用户自己调用。包含则只暴露给用户B对象的指针,聚合同时暴露给用户对象

2014-07-03 15:26:46 646

原创 基于VC++的Solidworks 插件开发

Solidworks插件开发中,通过VC++自动生成所有的模板文件后,主要添加一些逻辑代码及菜单,就可以进行直接的开发:1.      添加符号表,处理函数

2014-05-13 18:39:08 6173 1

原创 线程消息通信

线程间的消息通信主要采用PostThreadMessage函数来实现,主线程通过该函数来实现消息的发送,副线程则采用消息循环机制来驱动程序,当副线程无GUI时,就不能调用TranslateMessage,DispatchMessage之类的函数,因为该函数无法将消息派发至对应的窗口,这样的话,对于副线程中的MessageBox等有关窗口的消息就不能捕获,转而必须通过线程级别的钩子来实现消息处理。另

2014-03-30 20:08:19 564

Windows交互服务

Windows交互服务博客文章

2017-05-17

Winwdos 系统API 拦截

WIndows API 拦截测试程序

2016-12-26

Windows远程进程注入

Windows远程进程注入测试程序

2016-12-26

COM 组件聚合小示例

COM原理与应用中COM聚合小示例,具体解释说明详见博客.

2014-07-03

Solidworks 插件程序

Solidworks 插件程序,参考SolidWorks 二次开发实例解析,Solidworks官网

2014-05-13

COM原理与应用中的简单实例

博客中的例子,具体说明详见 http://blog.csdn.net/u014291956

2014-03-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除