自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 资源 (18)
  • 收藏
  • 关注

原创 Python CRC8 实现

python语言的CRC-8实现

2023-02-03 14:34:20 2092 2

原创 Java使用BouncyCastle进行基于ECDSA算法的椭圆曲线secp256r1证书自签名

Java使用BouncyCastle库,基于secp256r1曲线椭圆曲线,根据ECDSA密钥算法生成密钥对,并使用SHA256签名算法进行自签名。构建适用于ISO15118等要求密钥套件。

2022-09-02 13:43:12 2994

原创 C++程序设计语言学习笔记:运行时类型信息

1、运算符dynamic_cast接受两个对象:被<和>包围的一个类型和被(和)包围的一个指针或引用。dynamic_cast<T*>(p)如果p是T*类型,或者是D*类型且T是D的基类,则得到的结果就如同我们简单地将p赋予一个T*一样。2、当用dynamic_cast转换指针类型时,nullptr表示转换错误。如果dynamic_cast转换的引用对象不是所期望的类型,它会抛出一个bad_cast异常。3、static_cast不检查要转换的对象,而对于void*所

2022-05-10 20:58:03 211

原创 C++程序设计语言学习笔记:派生类

1、派生类继承了来自基类的属性,因此这种关系称为继承。有时基类也称为超类,派生类也成称为子类。//基类Employeestruct Employee{ string first_name, family_name; char middle_initial; Date hiring_date; short department; //...};//派生类Managerstruct Manager: public Employee{ list<

2022-04-26 22:59:42 1155

原创 C++程序设计语言学习笔记:特殊运算符

1、运算符[],作为取下标运算符。我们可以用operator[]函数为类对象的下标赋予某种新的含义。operator[]函数的第2个参数(下标)可以是任意类型的,因此,它常被用于定义vector、关联数组等类型。2、运算符(),作为函数调用运算符。operator()函数的参数列表按照常规的参数传递规则进行求值和检查。3、运算符->,作为解引用运算符。4、运算符++和--,作为递增和递减运算符。5、运算符new和delete,作为分配和释放运算符。6、运算符"",作为用户自定义字面

2022-04-24 22:25:44 966

原创 C++程序设计语言学习笔记:运算符重载

1、程序员用complex::operator+()和complex::operator*()分别表示+和*的含义。当b和c的类型是complex时,b+c等价于b.operator+(c)。2、对于任意一种二元运算符@,aa@bb可以理解成aa.operator@(bb)或者operator@(aa,bb)。对于任意一元后置运算符@,aa@可以理解成aa.operator@(int)或者operator@(aa,int)。3、考虑二元运算符@的情况。假设x的类型是X,y的类型是Y,则x@y的解析过

2022-04-23 22:37:20 797

原创 C++程序设计语言学习笔记:构造、清理、拷贝和移动

1、移动和拷贝的区别在于,拷贝操作后两个对象具有相同的值,而移动操作后移动源不一定具有其原始值。如果源对象在操作后不再使用,我们就可以使用移动操作。2、与类同名的成员称为构造函数,构造函数的声明指出其参数列表,但未指出返回类型。构造函数的任务时初始化该类的一个对象。class Vector{public: Vector(int s); //...};3、析构函数保证在对象销毁时会被调用,它的名字是~后接类名,例如:~Vector()。析构函数一般进行清理工作并释放资源。

2022-04-16 17:01:55 1263

原创 C++程序设计语言学习笔记:类

1、类的简要概括如下:一个类就是一个用户自定义类型。 一个类由一组成员构成。最常见的成员类别是数据成员和成员函数。 成员函数可定义初始化(创建)、拷贝、移动和清理(析构)等语义。 对对象使用.(点)访问成员,对指针使用->(箭头)访问成员。 可以为类定义运算符,如+、!和[]。 一个类就是一个包含其成员的名字空间。 public成员提供类的接口,private成员提供实现细节。 struct是成员默认为public的类。class X{private:

2022-04-13 23:27:00 277

原创 C++程序设计语言学习笔记:源文件与程序

1、除非已显式声明为局部名字,否则函数名、类名、模板名、变量名、名字空间名、枚举名以及枚举值名的使用必须跨所有编译单元保持一致。2、如果全局作用域中或名字空间中的变量定义不带初始值,则该变量会使用默认初始值。非static局部变量或创建在自由存储上的对象则不会使用默认初始值。3、关键字static及关键字const、constexpr暗示默认使用内部链接,如果希望具有外部链接,就需要在其定义前加上extern。4、inline函数在其应用的所有编译单元中都必须有完全等价的定义。为了确保一致性,应

2022-04-10 23:33:45 750

原创 C++程序设计语言学习笔记:名字空间

1、名字空间(namespace)的概念用来直接表示本属一体的一组特性,例如库代码。名字空间的成员都位于相同的作用域中,无需特殊符号即可相互访问,而从名字空间外访问它们就需要显式符号。2、显式限定:我们可以在名字空间的定义中声明一个成员,稍后用“名字空间名::成员名”的语法定义它。namespace Parser{ double expr(bool); //声明 double term(bool); double prim(bool);}double v

2022-04-07 22:52:01 674

原创 C++程序设计语言学习笔记:异常处理

1、异常(exception)的概念可以帮助我们将信息从检测到错误的地方传递到处理该错误的地方。如果函数无法处理某个问题,则抛出(throw)异常。并且寄希望于函数的调用者能直接或者间接地处理该问题。函数如果希望处理某个问题,可以捕获(catch)相应的异常。2、一个结构完整的异常处理机制范例:void taskmaster(){ try{ auto result = do_task(); //使用result } catch(Some_e

2022-04-01 21:34:00 728

原创 C++程序设计语言学习笔记:函数

1、函数声明负责指定函数的名字、返回值(如果有的话)的类型以及调用该函数所需的参数数量和类型。2、函数声明包含多种限定及修饰符,如下:函数的名字,必选。 参数列表,可以为空(),必选。 返回类型,可以是void,可以是前置或者后置形式(使用auto),必选。 inline,表示内联函数体实现函数调用。 constexpr,表示当给定常量表达式作为实参时,应该可以在编译时对函数求值。 noexcept,表示该函数不允许抛出异常。 链接说明,例如static。 [[noreturn]],表

2022-03-28 00:26:52 362

原创 C++程序设计语言学习笔记:选择适当的操作

1、逻辑运算符与(&&)、或(||)、非(!)接受算术类型以及指针类型的运算对象,将其转换为bool类型,最后返回一个bool类型的结果。只有当逻辑上确实需要时,&&和||才会对其第二个实参求值。2、位逻辑运算符与(&)、或(|)、非(~)、右移(>>)和左移(<<)作用于整形对象。位逻辑运算符常用于实现一个小集合的概念。二元运算符&表示求交操作,|表示求并操作,^表示异或操作,~表示求补操作。3、在条件表达式c?e1:e2中使

2022-03-22 22:51:22 1261

原创 C++程序设计语言学习笔记:表达式

1、程序就是以分号隔开的一段表达式序列。表达式的基本单元是数字、名字以及运算符等。2、C++规定赋值运算符可以与下面的二元运算符一起使用:+ - * / % & | ^ << >>.3、默认情况下,>>会跳过空白(即,空格、制表符、换行等),当输入操作失败时不更改ch的值。因此,ch==0代表输入过程结束。4、默认情况下,get()不会像>>那样跳过空白符。5、程序通过main()启动,之后main()被传入两个实参,分别是:argc指

2022-03-21 00:12:00 1012

原创 C++程序设计语言学习笔记:语句

1、使用延迟局部变量定义可以将变量的作用域限定在一个较小的范围内。有个简洁的例子,我们在条件中声明变量:if(double d = prim(true)){ left /= d; break;}这里d的作用域从声明处开始,到条件控制的语句结束为止。假设还有else分支,与上面的if分支对应,则d在两个分支中都有效。2、范围for语句,它使得程序员可以依次访问指定范围内的每个元素。int sum(vector<int>& v){ ...

2022-03-18 22:50:25 840

原创 C++程序设计语言学习笔记:结构、联合与枚举

1、struct是任意类型元素构成的序列。struct Address{ const char* name; //"Jim Dandy" int number; //61 const char* street; //"South St" const char* town; //"New Providence" char state[2]; //'N''J' const char* zip; //"079

2022-03-15 22:57:13 922

原创 C++程序设计语言学习笔记:指针、数组与引用

1、在C++语言中存放及使用内存地址是通过指针和引用完成的。对于类型T来说,T*是表示“指向T的指针”的类型。2、void* 的含义是“指向未知类型对象的指针”。除了函数指针和指向类成员的指针,指向其他任意类型对象的指针都能被赋给一个void*类型的变量。3、字面值常量nullptr表示空指针,即不指向任何对象的指针。4、T[size]的含义是“包含size个T类型元素的数组”。元素的索引范围是0到size-1。数组名会隐式的转换成指向数组首元素的指针。如果在自由存储上分配数组,一定要在最后一次

2022-03-11 23:42:43 1420

原创 C++程序设计语言学习笔记:类型与声明

1、ISO C++标准,C++语言和标准库对应的ISO标准是ISO/IEC 14882:2011。在C++标准之下,很多重要的功能是依赖于实现的。还有一种行为是不确定的。2、C++的一个具体实现可以有两种形式:宿主式(包含了C++标准和本书描述的所有标准库功能)、独立式(包含的标准库功能会少一些)。3、C++标准用到的是基于基本源程序字符集,即ASCII字符集。4、C++程序中的每个名字都对应一种数据类型。该类型决定了这个名字能执行哪些运算以及如何执行这些运算。5、C++包含一套基本类型:布

2022-03-06 23:25:22 362

原创 C++程序设计:原理与实践读书笔记(第十六章)

函数对象,一种能够实现函数行为的对象。举例来说:class Larger_than{ int v;public: Larger_than(int vv):v(vv){} //保存参数 bool operator()(int x) const {return x>v;} //比较}通常,我们在程序中定义一个函数对象,然后在其他地方使用它,这有些令人生厌。这种情况下,我们可以用Lambda表达式。//...sort

2022-02-18 23:04:42 332

原创 C++程序设计:原理与实践读书笔记(第十五章)

C++标准库为处理数据序列提供了一个专门的框架,称为STL。STL是(Standard Template Library)标准模板库的简称。STL是ISO C++标准库的部分,它提供了容器(例如vector、list和map)和通用算法(例如sort、find和accumulate)。因此,我们可以称vector这类对象为STL或标准库的一部分。有时候我们需要对“大量数据”进行一些简单操作。为了达到此目的,首先用更加抽象的方式来看待我们要对数据进行的处理工作:收集数据并装入容器。(例如vector、

2022-02-15 23:20:40 367

原创 C++程序设计:原理与实践读书笔记(第十四章)

类型作为模板参数,我们用T代替——T是一个参数,能被赋予double、int、string、vector<Record>和Window*之类的“值”。在C++中引入类型参数T的语法为template<typename T>前缀,其含义是“对所有类型T”。例如:template<typename T>class vector{ int sz; //大小 T* elem; //指向元素的指针

2022-02-12 21:37:28 231

原创 C++程序设计:原理与实践读书笔记(第十三章)

我们可以编写接受初始化器列表参数的构造函数:class vector{ int sz; //大小 double* elem; //指向元素的指针public: vector(int s) //构造函数 :sz{s}, elem{new double[sz]} //为元素分配未初始化的内存 { for(int i=0;

2022-02-09 22:41:39 575

原创 C++程序设计:原理与实践读书笔记(第十二章)

C++语言用称为new的运算符将“自由空间”(又称为“堆”)变为可用状态。例如:double *p = new double[4]; //在自由空间中分配4个double这段代码要求C++运行时系统在自由空间中分配四个double,并将指向第一个double的指针返回。我们使用运算符new来请求系统从自由空间中分配内存:运算符new返回一个指向分配的内存的指针。 指针的值是分配的内存的首字节地址。 一个指针指向一个特定类型的对象。 一个指针并不知道它指向多少个元素。一如以往,

2022-02-06 23:58:23 475

原创 C++程序设计:原理与实践读书笔记(第十一章)

我们可以指定(十进制)数1234以十进制、十六进制(通常简称为“hex”)或八进制输出:cout<<1234<<"\t(decimal)\n" <<hex<<1234<<"\t(hexadecimal)\n" <<oct<<1234<<"\t(octal)\n";符号<<hex和<<oct并不输出任何内容,然而<<hex通知流应该以十六进制输出人和后来

2022-02-03 00:53:17 726

原创 C++程序设计:原理与实践读书笔记(第十章)

为了读取一个文件,我们需要:知道文件名。 (以读模式)打开文件。 读出字符。 关闭文件(虽然通常文件会被隐式地关闭)。为了写一个文件,我们需要:指定文件名。 按照指定的文件名,(以写模式)打开文件或创建一个新文件。 写入我们的对象。 关闭文件(虽然通常文件会被隐式地关闭)。ifstream是用于读取文件的istream流,ofstream是用于写文件的ostream流,fstream是用于对文件进行读写的iostream流,文件流必须与某个文件相关联,才可使用。例如:cout

2022-01-30 00:44:21 629

原创 C++程序设计:原理与实践读书笔记(第九章)

一、类和成员一个类就是一个用户自定义类型,由一些内置类型、其他用户自定义类型以及一些函数组成。这些用来定义类的组成部分称为成员。一个类可以有零个或多个成员,例如:class X{public: int m; //数据成员 int mf(int v){int old = m; m=v; return old;} //函数成员}类成员的访问使用符号object.member。例如:

2022-01-27 00:01:38 531

原创 C++程序设计:原理与实践读书笔记(第八章)

如果一个声明(还)给出了声明的实体的完整描述的话,我们称之为定义。下面是一个定义的例子:int a=7;vector<double> v;double sqrt(double d){/*...*/}对比定义,我们按惯例用“声明”表示“不是定义的声明”。如:int x = 7; //定义extern int x; //声明extern int x; //另一个声明double sqrt(double); ...

2022-01-22 22:27:03 403

原创 C++程序设计:原理与实践读书笔记(第五章)

C++提供了一种错误处理机制:异常。异常的基本思想是:如果一个函数发现一个自己不能处理的错误,它不是正常返回,而是抛出(throw)一个异常来表示错误的发生。任一个直接或间接的函数调用者都可以捕捉到这一异常,并确定应该如何处理。函数可以用try语句来处理异常:把所要处理的异常情况罗列在catch语句后。如果出现一个没有被任何调用函数处理的异常,程序终止运行。1.参数错误class Bad_area{}; //一个专门报告area()错误的类//...

2022-01-20 22:31:21 421

原创 C++程序设计:原理与实践读书笔记(第四章)

C++程序设计:原理与实践第四章读书笔记

2022-01-15 23:52:14 264

原创 C++程序设计:原理与实践读书笔记(第三章)

C++程序设计:原理与实践第三章读书笔记

2022-01-14 22:47:20 128

原创 Java8手记

Java8手记一、Lambda表达式1.1 Lambda表达式是什么?Lambda表达式是Java8的最大特色。简单的Lambda表达式可以清晰的表达很多复杂的编程目的。Lambda表达式类似于如下表示格式:x-&gt;x+1。其中x是一个没有参数类型的参数名,x+1为表达式,这里也可以用大括号括起来的代码块代替。他们之间使用-&gt;右箭头连接。1.2 Lambda表达式可以...

2018-09-28 14:30:58 159

原创 JavaEE实现WebSocket(二)使用SpringMvc和AngularJS

这篇文章展现了如何使用SpringMVC与AngularJS搭建一个基于WebSocket技术即时交互的简单聊天室。尤其对SpringMVC方面进行了详细阐述。

2017-08-16 09:25:02 469 1

原创 JavaEE实现WebSocket(一)入门

基于JavaEE的WebSocket技术的最简单实现实例--聊天室

2017-08-11 16:32:21 2440

原创 HTML5 新元素列表

本文仅针对HTML5的新元素做一个归纳总结。1.较成型的shuru

2014-07-30 02:11:53 873

原创 WPF教程:MVVM模式的理解与应用

因为MVVM模式解决了在日常开发中Model与View之间相互通信之间存在的问题,如转换类型等额外操作。记得几年前,本人接触MVC设计模式的时候,那时候感觉前台后台之间工作与呈现是如此的井然有序。开发扩展的时候需要的只是添加新的View,新的Model和相应的Controller代码。后期开发维护实在是容易。时间回溯到几个月前,本人用WPF开发了一个软件系统。这个系统算是使用WPF各种技术的总结。但是没有引入任何模式。在开发完成以后,xaml以及xaml后的cs代码里堆积了大量的内容。导致维护的时候需要

2014-07-21 23:12:09 14556 6

原创 [WPF]DataGridTemplateColumn使用ComboBox绑定Dictionary细节记录

这段时间一直在进行WPF的开发,研究了ComboBox这个控件2天,发现了很多细节,这里分享给大家,也做一个自己的备忘。这里主要对ComboBox这个控件对于绑定dictionary所用到的属性的设置问题。先上Xaml代码:

2014-03-16 02:45:44 10080 2

原创 jQueryUI1.10.0新版本学习(widget-Autocomplete)

本篇文章记录了新版jQueryUI中自动完成控件的用法,更多的可以参见官网。1.基本用法为HTML的input标签加入自动完成功能。所需要编写的HTML格式如下: jQueryUI学习 标签索引: 然后在js中为input使用自动完成控件Autocomplete$(document).ready(

2013-02-20 10:59:13 1297 1

原创 jQueryUI1.10.0新版本学习(widget-Accordion)

本次学习的主要内容是关于新版jQueryUI的可折叠面板控件Accordion1.默认功能的可折叠面板默认功能的可折叠面板提供了通过鼠标点击标题栏来展开或者收起面板内容的功能。如图:构建这个可折叠面板十分简单。HTML如下: jQueryUI学习 折叠面板1 面板内容A 折叠面板2 面板内容

2013-02-06 09:49:50 1892

原创 jQueryUI1.10.0新版本学习(widget-Tabs)

本来打算学习jQueryUI的,然后去买了一本书,《jQueryUI开发指南》。结果那天一跑例子,各种跑不通。后来一看官网,原来从jQueryUI从1.10.0开始对之前很多控件的方法都进行了一定程度的调整,删除了大量原1.9.2以下的方法。所以,没办法,本人这就直接从官网上去学习新的jQuery1.10.0吧。widget-Tabs(选项卡)本小节学习选项卡Tabs的各种使用方法:先

2013-02-03 19:42:47 5585 2

原创 《jQuery基础教程》-- AJAX篇

jQuery的Ajax带来了无需刷新的web页面革命。这里就详细介绍一下jQuery所涉及到的Ajax操作。(无需特殊说明,均需要有服务器配置,这里本人用的是Tomcat 7)1.基于请求加载文件数据这里的请求通常都是网页的某些操作,如点击等。而其加载数据的类型归类为以下四种:a.加载HTML文件;b.加载JSON文件;c.加载Javascript文件;d.加载XML文件。其对应的

2013-01-09 16:54:38 24232 6

Java平台BouncyCastleUtility工具包

依赖:bcprov-jdk15to18-171.jar, bcpkix-jdk15to18-171.jar 内容:封装了基于BouncyCastle库的签名工具类。用于处理Java平台上,使用ECDSA秘钥生成算法,指定secp256r1作为ECC曲线生成密钥对。并提供了使用SHA256进行私钥签名,及生成X.509v3格式的签名证书。 适用于:ISO15118-2中描述的证书及签名要求。

2022-09-02

LabWindows/CVI读取并操作Excel示例代码

LabWindows/CVI调用自带Excel库,路径在LabWindows/CVI的安装路径下National Instruments\CVI2013\toolslib\activex\excel 注意:在打开前,一定记得在Instrument中LoadInstrument,然后将两个库excel2000.fp和excelreport.fp载入.之后再编译。切记!否则找不到库会报错!

2021-06-17

ISO15118资料整理.docx

本文对ISO15118文档进行解析,用通俗易懂的话描述了ISO15118的各个技术要点以及实现策略。

2020-01-14

Java8新特性示例代码

Java8已经发布多年了,对于从Java5或者6开始接触Java8的同学,这部分代码主要是Java8的Lambda表达式的用法汇总。也是Java8改变最大的部分。

2018-09-28

SpringWebSocket

集合SpringMVC以及AngularJS打造WebSocket交互聊天室

2017-08-16

WebSocketSample

WebSocket的简单JavaEE实现实例,一个简单的Web聊天室。

2017-08-11

MVVM模式实例

以实例的形式,打造了MVVM的架构,简单的例子程序却能阐述MVVM模式很多精髓的地方。并附有较多注释,方便大家学习。

2014-07-21

jsTree1.0开发技术指南

新版本的的jsTree开发指南,有别于jsTree0.9 在API上有了很大的变化

2013-05-20

PHP5设计模式-单例模式

最简单的PHP设计模式,单例模式。大家可以参考下。

2010-07-14

PHP5设计模式-装饰者模式

使用PHP实现的设计模式之装饰者模式,希望对您的开发有所启发。

2010-07-14

PHP5设计模式-适配器模式实现

适配器模式的PHP实现。大家可以参考一下。

2010-07-14

PHP5设计模式-抽象工厂模式实现

PHP实现的抽象工厂模式,大家可以下载来参考学习下。

2010-07-14

PHP5设计模式-工厂模式实现

使用PHP实现的面向对象的工厂方法模式。大家可以参考下。

2010-07-14

php搜索引擎之分词算法

本人写的搜索引擎部分抓词,里面含有数据库配置文件,以及本人开发心得。需要的可以下载来看看。采用的是正向最大匹配算法。目前只是分词部分结束。前台是简单的页面。使用了smarty模版分离代码。

2010-07-14

操作系统虚拟机管理 C++程序

就是页面的调入调出的先来先服务算法,输入需要引用的页面,然后按先来先服务算法进行演示。

2009-06-10

操作系统主存分配C++程序

操作系统的主存分配简单c++程序,具体就是模拟作业的调入调出,主存的申请等

2009-06-10

操作系统处理机调度C++程序

本人写的处理机调度c++小程序,有3个,分别是先来先服务,优先级和时间片轮转这三个算法

2009-06-10

魔王语言解释简单C++实现

数据结构魔王语言解释的简单实现.固定的B和A规则,大家可以参考下。

2009-04-28

约瑟夫环C++简易实现

数据结构约瑟夫环的构成,使用单循环链表法。

2009-03-30

空空如也

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

TA关注的人

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