- 博客(62)
- 资源 (5)
- 问答 (1)
- 收藏
- 关注
原创 基于github.com/emmansun/gmsm库编写的SM2对C 开放的库
基于github.com/emmansun/gmsm库编写的SM2对C开放的库特性:非对称加密、不支持跨平台编译git地址:https://gitee.com/state-secret-series/go-gmsm.git。
2024-07-04 18:38:08
519
原创 go-ext-sm2国密PHP扩展 密文指定排序、识别ans1编码等功能
基于go-gmsm静态库编写的SM2椭圆曲线公钥密码算法PHP扩展相较于openssl-ext-sm2编译更方便增加了密文指定排序、识别ans1编码等功能特性:非对称加密git地址:https://gitee.com/state-secret-series/go-ext-sm2.git。
2024-07-04 18:34:07
663
原创 GO 语言核心编程-全文版
努力做到通俗易懂注重Go语言体系,同时也兼顾技术细节3)在实际工作中,如何快速的掌握一个技术的分享,同时也是我们授课的思路(怎么讲解或者学习一个技术)。(很多学员反馈非常受用)第 2 章程序:就是完成某个功能的指令的集合。Golang的概述Go语言保证了既能到达静态编译语言的安全和性能,又达到了动态语言开发维护的高效率,使用一个表达式来形容Go语言:Go=C+Python,说明Go语言既有C静态语言程序的运行速度,又能达到Python动态语言的快速开发。
2023-05-27 17:47:35
1712
原创 cdsn markdown图片转存失败后实现本地资源上传cdsn
在使用cdsn导入大量md文档内容时无法导入本地文件,导致文档格式、和编写体验极差,经过大量查找文档,大部分人都是使用图床,免费的图床有使用giee(不知道是不是运气不好,等我用的时候已经加上图片防盗机制了)、sm.sm(看着比较麻烦,不知道效果如何)、自建服务(还是会出现转存失败问题),也有直接使用 不过会引起格式混乱。于是我不得不打起cdsn的主意,看了看cdsn的代码上传图片,然后。使用的是lavavel(什么框架都行),依赖是使用的guzzlehttp/guzzle。
2023-05-27 15:17:57
236
原创 Go语言核心编程-函数、包和错误处理
一个函数在函数体内又调用了本身,我们称为递归调用执行一个函数时,就创建一个新的受保护的独立空间(新函数栈)函数的局部变量是独立的,不会相互影响递归必须向退出递归的条件逼近,否则就是无限递归,死龟了:)当一个函数执行完毕,或者遇到 return,就会返回,遵守谁调用,就将结果返回给谁,同时当函数执行完毕或者返回时,该函数本身也会被系统销毁每一个源文件都可以包含一个 init 函数,该函数会在 main 函数执行前,被 Go 运行框架调用,也就是说 init 会在 main 函数前被调用。
2023-05-22 14:58:20
668
1
原创 Go语言核心编程-流程控制
在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句。顺序控制分支控制循环控制分支控制就是让程序有选择执行。有下面三种形式单分支双分支多分支switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上到下逐一测试,直到匹配为止。匹配项后面也不需要再加 break听其名而知其意。就是让我们的一段代码循环的执行。将一个循环放在另一个循环体内,就形成了嵌套循环。在外边的 for 称为外层循环在里面的 for。
2023-05-22 11:31:15
564
原创 Go语言核心编程-运算符和进制转换
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等算术运算符赋值运算符比较运算符/关系运算符逻辑运算符位运算符其它运算符关系运算符的结果都是 bool 型,也就是要么是 true,要么是 false关系表达式 经常用在 if 结构的条件中或循环结构的条件中用于连接多个条件(一般来讲就是关系表达式),最终的结果也是一个 bool 值赋值运算符就是将某个运算后的值,赋给指定的变量。
2023-05-19 17:11:25
772
1
原创 Go语言核心编程-基本数据类型篇
变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,同样的道理,通过变量名可以访问到变量(值)。简单的说,就是用于存放整数值的,比如 0, -1, 2345 等等。小数类型就是用于存放小数的,比如 1.2 0.23 -1.911Golang 中没有专门的字符类型,如果要存储单个字符(字母),一般使用 byte 来保存。字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。也。
2023-05-19 16:09:26
766
原创 Go 语言核心编程-环境入门篇
努力做到通俗易懂注重 Go 语言体系,同时也兼顾技术细节在实际工作中,如何快速的掌握一个技术的分享,同时也是我们授课的思路(怎么讲解或者学习一个技术)。(很多学员反馈非常受用)第 2 章 Golang 的概述程序:就是完成某个功能的指令的集合。如何选择开发工具我们先选择用 visual studio code 或者 vim 文本编辑器本,到大家对 Go 语言有一定了解后,我们再使用 Eclipse 等 IDE 开发工具。这是为什么呢?
2023-05-19 14:22:26
1009
原创 PHP sm3 国密扩展
基于密码库编写的SM3密码杂凑算法PHP扩展特性:非对称加密git地址:https://gitee.com/state-secret-series/ext-sm3.git。
2022-12-26 14:54:11
1362
原创 PHP sm2 国密扩展
基于openssl密码库编写的SM2椭圆曲线公钥密码算法PHP扩展特性:非对称加密git地址:https://gitee.com/state-secret-series/openssl-ext-sm2.git。
2022-08-09 09:19:55
8759
2
转载 CHN-15-压缩
如果Drogon在asset旁边找到对应的brotli压缩资源,则它支持现成的brotli静态压缩文件例如,Drogon将搜索 用于请求 .它通过在中默认将设置为来实现。如果要使用brotli动态压缩,必须在中将设置为。Users who don’t intend to use brotli static, might want to get rid of brotli extra ‘sibling check’by setting to in .不打算使用brotli static的用户可能不设
2022-06-09 10:00:51
269
转载 CHN-14-Coz分析
使用coz你可以分析两件事:如果你想分析你的应用程序的吞吐量,你应该打开’ COZ_PROFILING ’ cmake选项,并在cmake中使用’ debug ‘或’ RelWithDebInfo '发布模式在可执行文件中包含调试信息。这样做将包括服务请求时的coz进度点。目前在整个应用程序范围内不支持分析延迟,但仍然可以在用户代码中完成。编译完包含进度点的应用程序后。您需要使用coz分析器运行可执行文件,例如 .最后,需要对应用程序进行强调,为了获得最佳效果,您需要对所有代码路径进行强调,并运行概要文件大
2022-06-09 09:50:10
308
转载 CHN-08-0-数据库-概述
Drogon内置了数据库读写引擎,对数据库连接的操作基于non-blocking I/O技术实现,因此,从底层到上层接口,都是高效率的非阻塞异步方式,保证了Drogon对高并发性能的追求。目前,Drogon支持PostgreSQL和MySQL数据库,如果要使用数据库,开发系统必须先安装相应数据库的开发环境,Drogon会自动探测这些库的头文件和库文件,编译相应的部分。数据库开发环境的准备,参见安装数据库环境。Drogon为了支持轻量级应用,也支持sqlite3数据库,通过线程池实现异步接口,与前述数据库的接
2022-06-09 09:25:41
462
转载 CHN-07-会话
是web应用的重要概念,用于在服务端保存客户端的状态,一般和浏览器的配合,drogon提供了对会话的支持。drogon默认关闭会话选择,你也可以通过如下接口关闭或打开:都是通过单例调用,timeout参数代表了会话失效的时间,单位是秒,框架默认值是1200,即如果用户20分钟以上没有访问应用,则他对应的会话就失效了。timeout设置为0表示drogon将在整个生存期保留用户的会话;打开会话特性前请确定你的客户端支持cookie,否则,drogon会为每次不含SessionID的请求创建新的会话,这会白白
2022-06-09 09:25:08
868
转载 CHN-06-视图
虽然目前前端渲染技术大行其道,使后端应用服务只需要返回相应数据给前端即可,不过,一个好的web框架还是应该提供后端渲染技术,使服务端程序可以动态生成HTML页面。视图(View)可以帮助使用者生成这些页面,顾名思义,它只负责做跟展示相关的工作,而复杂的业务逻辑都应该交给控制器完成。最早的web应用程序都是把HTML嵌入到程序编码里,达到动态生成HTML页面的目的,不过这样做有效率低、不直观等诸多缺点,于是出现了诸如JSP等语言,反其道而行之,把程序代码嵌入到HTML页面里。drogon采用的当然是后一种方案
2022-06-09 09:24:25
484
原创 从安装vagrant 到PHP+nginx+Mysql+Orcal安装
从安装vagrant 到PHP+nginx+Mysql+Orcal安装题) 自从去年进入新公司之后公司要求使用**vagrant**安装liunx环境开发,这是我这几个月 亲身试验总结的教程。记录下来与大家分享vagrant安装安装环境 :windows7 64 Windows PowerShell 版本要求3及3以上;vagrant:https://pan.baidu.com/......
2022-06-09 09:23:24
316
转载 CHN-08-1-数据库-Dbclient
构造DbClient对象有两种途径,一个是通过DbClient类的静态方法,在DbClient.h头文件可以看到定义,如下:得到DbClient实现对象的智能指针,参数connInfo是个连接字符串,采用key=value的形式设置一系列连接参数,具体说明见头文件的注释。参数connNum是DbClient的连接数,即该对象管理的数据库连接个数,对并发有关键影响,请根据实际情况设置。通过这种方法得到的对象,用户要想办法持久化,比如放在某些全局容器内,创建临时对象,使用完再释放是非常不推荐的方案,理由如下:
2022-06-09 09:22:46
996
转载 CHN-05-过滤器
过滤器(filter)可以帮助用户提高编程效率,在HttpController的例子中,getInfo方法在返回用户信息之前应该先校验用户是否登录,我们把这个逻辑写在getInfo方法里当然是可以的,但是,很显然,校验用户登录属于通用逻辑,很多接口都将用到,应该把它单独提取出来,再配置到调用handler之前,这就是filter的作用。drogon框架做完URL路径匹配后,会先依次调用注册到该路径上的过滤器,只有当所有过滤器都允许"通过"时,对应的handler才会被调用;drogon内置了如下常用过滤器:
2022-06-09 09:21:34
689
转载 CHN-04-3-控制器-WebSocketController
顾名思义,用于处理websocket逻辑。websocket是基于HTTP的一种长连接方案,在websocket建立之初,有一次HTTP格式的请求和应答交换,建立完成后,所有的消息在websocket上传输,消息由固定的格式包装,但消息的内容和收发次序没有任何要求,完全由用户定义。可以由工具快速生成的源文件,命令格式如下:假设我们要通过websocket实现一个简单的回声功能,即服务端只是简单的把客户端发来的消息再发回去,通过创建的实现类EchoWebsock,如下:该命令会生成EchoWebsock.
2022-06-09 09:20:55
771
转载 CHN-04-1-控制器-HttpSimpleController
可以由命令行工具快速生成基于的自定义类的源文件,命令格式如下:我们创建一个名称为的控制器:可以看到,目录下新增加了两个文件,TestCtrl.h和TestCtrl.cc,下面阐述一下这两个文件。TestCtrl.h如下:TestCtrl.cc如下:每个HttpSimpleController类只能定义一个Http请求处理函数(handler),而且通过虚函数重载定义。从URL路径到处理函数的路由(或称映射)由宏完成,可以用宏添加多重路径映射,所有语句应夹在和宏语句之间。第一个参数是映射的路径,路径后
2022-06-09 09:19:44
554
转载 CHN-08-2-数据库-事务
事务是关系型数据库的重要特性,Drogon通过类提供了对事务的支持。类的对象由创建,事务有关的操作很多是自动进行的:事务创建接口由提供,如下:这个接口很简单,它返回一个对象的智能指针,显然,这个智能指针失去所有持有者而析构事务对象时,事务也就结束了。参数用于返回事务提交是否成功,需要注意的是,这个回调只用来指示命令是否成功,如果,事务在执行过程中自动或手动回滚了,这个回调就不会执行了。通常,命令都会成功,这个回调的bool类型参数为true,只有某些特殊情况,比如执行过程中连接断了,才会导致通知用户失败,
2022-06-08 17:49:53
352
转载 CHN-08-3-数据库-ORM
使用Drogon的ORM支持,首先要创建Model类,Drogon的命令行程序提供了生成Model类的功能,它从用户指定的数据库读取表信息,根据这些信息自动生成多个Model类的源文件。用户使用Model时include对应的头文件即可。显而易见,每一个Model类,对应一个特定的数据库表,每个Model类的实例,对应表的一行记录。model类的创建命令如下:最后一个参数是model存放的路径,该路径内必须有一个配置文件model.json,用以配置drogon_ctl到数据库的连接参数。它是JSON格式
2022-06-08 17:48:19
647
转载 CHN-08-4-数据库-FastDbclient
顾名思义,FastDbClient会提供比普通的DbClient更高的性能。与DbClient拥有自己的EventLoop不同,它和Web应用的网络IO线程和主线程共用EventLoop,这使得FastDbClient的内部实现可以采用无锁的方式进行,因而会更高效。经测试,极限高负载条件下,FastDbClient比DbClient有10%到20%的性能提升。FastDbClient必须由框架使用框架的接口或通过配置文件创建,使用框架的createDbClient接口,当最后一个参数为true时,即可创建一
2022-06-08 17:45:10
404
转载 CHN-08-5-数据库-自动批处理
自动批处理模式只对postgresql 14+版本的客户端库有效,其他情况下会被忽略,讲自动批处理之前,先了解一下pipeline模式。从postgresql 14之后,它的客户端库提供了pipelining模式接口,在pipelining模式下,新sql请求可以直接发送到服务端而不必等到上一个请求的结果返回(这和HTTP的pipelining的概念一致),详情请参考Pipeline mode。该模式对性能有很大的帮助,可以使较少的数据库连接就支持较大的并发请求。drogon在1.7.6版本之后开始支持,
2022-06-08 17:44:02
234
转载 CHN-09-插件
插件可以帮助用户构建复杂的应用,在Drogon中,所有的插件都由框架根据配置文件统一构建并安装到应用程序中。Drogon中的插件都是单实例的,用户可以用插件实现任何他们想要的功能。Drogon在运行run()接口的时候,会根据配置文件,逐一实例化每个插件,并调用其接口。插件配置都在配置文件中完成,例如:可见,每个插件的配置共有三项:用户定义的插件必须继承自drogon::Plugin类模板,模板参数就是该插件类型,比如下面的定义:当然,命令行程序drogon_ctl提供了创建插件的命令,如下:用户可以
2022-06-08 17:42:50
369
转载 CHN-10-配置文件
你可以通过DrogonAppFramework实例的多个接口配置各种参数来控制Http服务端的某些行为。不过,使用配置文件是更好的方式,原因如下:所有的配置接口都有对应的配置文件选项支持,基于上面这些额外的好处,建议应用开发者使用配置文件配置应用的各种参数。配置文件的加载很简单,在DrogonAppFramework实例调用run接口之前,调用loadConfigFile接口即可,参数是配置文件的路径和文件名,比如:这段程序,加载配置文件,然后运行。具体的监听端口、日志输出、数据库配置等等行为都可以由配置
2022-06-08 17:36:41
674
1
转载 CHN-11-drogon_ctl命令
Drogon框架编译安装后,一个命令行程序drogon_ctl也同时被安装于系统,为了方便,还安装了一个完全一样的副本dg_ctl。用户可以按喜好自行选用。该程序目前的主要功能是为了方便用户创建各种drogon工程文件,使用命令可以看到它支持的功能,如下:version子命令version子命令用于打印目前安装于系统的drogon版本,如下:create子命令create子命令用于创建各种对象,目前是drogon_ctl的主要功能,使用命令可以打印该命令的详细帮助,如下:视图创建命令用于从csp
2022-06-08 17:35:11
757
转载 CHN-12-AOP面向切面编程
AOP(面向切面编程)是实现程序功能的统一维护的一种技术。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。限于C++语言的特性,Drogon没有提供像Spring那样灵活的AOP方案,而是一种简单的AOP,所有插入点都是内建于框架中的,用户可以通过框架的AOP系列接口注册特定的处理程序到插入点上。Drogon提供了7个插入点供用户使用,当应用程序运行至插入点的时候,会依次调用用户注册的处理程序(Advice)。关于插入点的说明如下
2022-06-08 17:33:29
328
转载 CHN-13-性能测试
作为C++的Http应用框架,性能应该是关注的重点之一,本节介绍Drogon的简单测试和成绩;我们只是为了测试drogon框架的性能,因而要尽量简化controller的处理,我们只做了一个HttpSimpleController,注册到路径上。controller对任何请求都返回。设置drogon线程数为16。handler函数的代码如下, 你可以在目录找到这些源码:作为对比,我选取了nginx来做对比测试,使用nginx+module源码编译的方式,写了一个hello_world_module,测试时
2022-06-08 17:31:38
721
转载 CHN-16-协程
Drogon从1.4版本开始支持C++ coroutines(协程)。 它提供了扁平化异步执行控制流的方法, 比如,避免著名的. 通过协程, 异步编程将像同步编程一样简单(同时保持了异步程序的高性能)。本文无意于解释什么是协程或它是如何工作的,而是向大家介绍如何在Drogon中使用协程。有很多术语,普通的例程也使用,但是在协程里,意义稍有不同,为了避免引起不必要的混淆,我们列举了一些常用术语。协程(Coroutine) 是能暂停执行以在之后恢复的函数.Return 对普通函数来说意味着结束执行并返回一个值
2022-06-08 17:28:23
547
转载 CHN-17-Redis
Drogon 支持 Redis,Redis是一种非常快速的内存数据存储。 可以用作数据库缓存或消息代理。 与 Drogon 中其他组件一樣,Redis的操作是异步的。 这确保了 Drogon 即使在重负载下也能以非常高的并发性运行。Redis 支持依赖于hiredis 库。 如果在构建 Drogon 时hiredis 不可用,则Redis支持将不可用。Redis 客户端可以通过以下方式以方式创建:另外,与Database客户端一样,Redis客户端也支持config文件配置,也支持配置成Fast模式,具体
2022-06-08 17:27:10
390
转载 CHN-18-测试框架
DrogonTest 是一个内置在 Drogon 中的最小测试框架,可实现简单的异步测试和同步测试。 它用于 Drogon 自己的单元测试和集成测试。 但也可用于测试使用 Drogon 构建的应用程序。 DrogonTest 的语法受到 GTest 和 Catch2 的启发。您不必为应用程序使用 DrgonTest。您可以使用喜欢的任何东西。但它是一个选择。让我们从一个简单的例子开始。有一个函数,可以计算至某数为止之自然数之和,并想测试它的正确性。编译并运行…好吧,它通过了,但有一个明显的错误。 应该是
2022-06-08 17:25:49
346
转载 19-CHN-FAQ-1-线程模型
drogon 是一个快速的 C++ Web 应用程序框架,部分原因是没有抽象化底层线程模型并把它们包裹起来。 然而这也常引发一些用户的疑惑。 社群中经常会看到一些问题和讨论,为什么响应只在一些阻塞调用之后发送、为什么在同一个事件循环块上调用阻塞网络函数会导致死锁等等。本文的目的在解释导致它们的确切条件和如何避免它们。Drogon 在线程池上运行,其中每个线程都有自己的事件循环。事件循环是 Drogon 的核心。且每个 drogon 应用至少有 2 个事件循环。一个主循环和一个工作循环。一般来说, 主循环总是
2022-06-08 17:24:26
525
转载 20-CHN-FAQ
这是常见问题和答案的列表,与一展说明。Drgon 在线程池上运行,当调用 时,会在该线程池中创建 HTTP 服务器线程和数据库线程。 它是一个基于顺序任务的系统。 因此,建议在可能的情况下始终使用异步 API 或协程。 详见理解drogon的线程模型。......
2022-06-08 17:21:36
218
转载 CHN-04-2-控制器-HttpController
可以由命令行工具快速生成基于的自定义类的源文件,命令格式如下:我们创建一个位于名称空间内且名称为的控制器:可以看到,目录下新增加了两个文件,demo_v1_User.h和demo_v1_User.cc:demo_v1_User.h如下:demo_v1_User.cc如下:使用我们编辑一下这两个文件,然后再阐述它们。demo_v1_User.h如下:demo_v1_User.cc如下:每个类可以定义多个Http请求处理函数(handler),由于函数数目可以任意多,所以通过虚函数重载是不现实的,
2022-06-08 17:12:56
906
转载 CHN-04-1-控制器-HttpSimpleController
可以由命令行工具快速生成基于的自定义类的源文件,命令格式如下:我们创建一个名称为的控制器:可以看到,目录下新增加了两个文件,TestCtrl.h和TestCtrl.cc,下面阐述一下这两个文件。TestCtrl.h如下:TestCtrl.cc如下:每个HttpSimpleController类只能定义一个Http请求处理函数(handler),而且通过虚函数重载定义。从URL路径到处理函数的路由(或称映射)由宏完成,可以用宏添加多重路径映射,所有语句应夹在和宏语句之间。第一个参数是映射的路径,路径后
2022-06-08 17:11:43
173
转载 CHN-04-0-控制器-简介
控制器(controller)在web应用开发中处于相当重要的地位,它处理浏览器发来的请求,然后生成响应发送给浏览器;drogon框架已经帮我们处理好网络传输、Http协议的解析等等细节,我们只需要关注控制器的逻辑即可;每一个控制器对象可以有一个或者多个处理函数(一般称为handler),函数的接口,一般定义成如下形式:其中,是Http请求的对象(被智能指针包裹),是框架传给控制器的回调函数对象,控制器生成应答对象(也通过智能指针包裹)后,通过callback把该对象传给drogon,然后框架会帮你把响应
2022-06-08 17:10:31
578
RXThinkCMF-EVL8-PRO旗舰版v3.0.0
2023-01-04
2018整理 省,市,县/区 包含简写 ,全称,拼音,首字母,区号,邮编。
2018-11-13
最新PHPword整合,优化添加导出表格,表格内部换行,合并单元格
2018-09-04
支付宝最新SDK整合(包含APP,PC,WAP) PHP
2018-09-04
PHP微信支付服务端 (含APP,公众号,H5,扫码支付)
2018-09-03
使用csdn谷歌助手后百度搜索页无法下拉加载
2021-10-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人