- 博客(22)
- 资源 (3)
- 收藏
- 关注
原创 libevent中event_base_loopbreak与BEV_OPT_DEFER_CALLBACKS
最近用C++和libevent改写了一个多线程网络服务器应用,大体框架是前端一个tcp连接监听线程,接收到连接后将socket随机交给一个后台工作线程做进一步处理。所有的线程均使用event_base_loop事件循环。其中有这样一个需求,我们可能会通过某种通知,让这个服务器程序重新初始化(不是重启),包括结束和重新创建后台线程。结束后台线程我这里用了event_base_loopbreak,并在event_loop退出前及时的bufferevent_free了所有bufferevent,事件循环退出
2020-07-09 13:39:02 1616
原创 CentOS8 搭建海思 Hi3518E 开发环境
最近入了一块ARM开发板,海思Hi3518E芯片,带摄像头和WIFI模块,后期打算把4G和GPS模块也加上,初步看好EC20,可能需要自己编译驱动,此贴记录一路踩坑的情况……CentOS8 x64是采用光盘镜像安装的,在进行环境搭建前,需要额外安装一些组件系统包安装dnf --enablerepo=PowerTools yum install glibc-staticyum instal...
2020-04-24 15:04:44 1979 3
原创 CentOS8 安装docker环境
CentOS8 的官方源里不带docker先安装docker源curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo在 https://download.docker.com/linux/centos/7/x86_64/stable/Packages/ 找...
2020-04-16 12:02:40 855 1
原创 发布验证码图片识别服务
继上一篇:记一次 基于 卷积神经网络(CNN)的 验证码图片识别没想到验证码图片识别服务正确率轻松达到80%,接下来继续研究以服务的方式部署验证码识别服务。因为识别程序是python3写的,简单起见,web服务框架首选flask。在已经装好tensorflow的虚拟环境中继续安装flaskpip install flask导入flask,来一小段web代码web.py,完成以下功能:...
2020-04-15 01:30:03 473
原创 记一次 基于 卷积神经网络(CNN)的 验证码图片识别
前几天搭建好了tensorflow2的环境,今天来试验一下神奇的机器学习。先简单编写一个java程序,收集了10000多个验证码图片,全部进行人工标注(训练素材点击下载),其中600多个用来检验预测结果。使用以下代码进行训练,开始运行时要加载所有图片,时间有点长,大概1、2分钟,要耐心等待# coding:utf-8import numpy as npimport tensorflow...
2020-04-14 10:16:26 1232
原创 windows10 tensorflow2 环境搭建
首先下载 python3安装时带上pip,自动添加PATH环境变量,一开始想把python装在E盘,但在后续步骤中一直报权限错误,只好选择了默认安装……官方的源更新要慢死,先更换taobao源,在自己的HOME目录(C:\Users\mycti)中新建一个pip目录,进入后新建pip.ini文件,将下列内容复制到文件。[global] index-url = https://mirrors...
2020-04-12 12:32:15 700
原创 Java SM2实现 与 OpenSSL SM2 实现的对接
所里有个项目客户端是Java开发的,服务端是C开发的,之间使用了SM2算法进行密钥交换。Java端是在网上找的一个比较流行的基于BC的SM2实现(https://github.com/PopezLotado/SM2Java),依赖的bcprov-jdk15on,版本1.56。C端是用的OpenSSL。服务端和客户端联调时发现了很多问题,SM2算法的公钥加解密一直没法调通,签名验签也不通,但Ja...
2020-04-11 16:23:11 6666 5
原创 让小Yi摄像头启用RTSP
因为项目原因需要使用RTSP源,想了起几年前购买目前闲置在家的小Yi摄像头。折腾一番终于成功,现将步骤记录如下:这个摄像头原生是不支持RTSP服务的,需要下载一个hack过的固件。固件在这里下载: https://github.com/fritz-smh/yi-hackSD卡格式化成FAT32下载下来的固件压缩包解开,将其中的sd目录下的所有内容复制到SD卡根目录修改tes...
2020-04-01 17:38:16 7411 2
原创 撸一个基于VUE的WEB管理后台(五)
api server已经有一个最基本的框架了,我们回到前端,开始制作一个用户管理界面吧。路由管理与Layout从main.js可以看到渲染的入口是App.vueimport App from './App'new Vue({ el: '#app', router, store, i18n, render: h => h(App)})App.vue里的模板很简...
2020-03-13 14:55:10 455
原创 撸一个基于VUE的WEB管理后台(四)
继续撸后台,之前用户的身份验证和用户信息都是写死在代码里了,现在我们把他搬到数据库里。数据库访问,我使用了Spring Data JPA。使用数据库验证用户登录使用JPA访问数据库是一件轻松愉快的事,至少针对目前的需求是这样。先定义好Entity类型,如UserEntity,RoleEntity等等。@Entity@Data@NoArgsConstructor@AllArgsCo...
2020-03-12 22:06:15 461
原创 撸一个基于VUE的WEB管理后台(三)
通过上一片文章的分析,我们大致可以了解到前端项目是采用token机制来实现用户认证的。关于token认证的相关机制已经有很多资料进行论述,就实现机制来看,可以分为几大类:类似我们熟悉的session机制,服务端在缓存中保留token的所有状态,每次请求都去缓存中检查token状态。这个方案中服务端和前端使用的token只需一个ID(用于标识服务端缓存中token的索引)即可refresh t...
2020-03-12 18:14:40 264
原创 撸一个基于VUE的WEB管理后台(二)
目前我们已经拥有了一个前端登录界面,也了解了前端对于用户识别的相关机制,现在开始撸后端api server,完成用户登录功能。和语言本身无关,Javascript和Java的生态比C++简直好了不要太多,社区力量超级活跃,而C++生态就像一个资历颇高的垂暮老人,一个17标准直到现在都没有让各类主流编译器全部实现,开发人员要为了在不同平台实现一些基本功能重复造轮子。Javascript和Java太...
2020-03-12 02:48:26 290
原创 撸一个基于VUE的WEB管理后台(一)
最近需要撸一个BS架构的管理后台,对工作过程中产生的调研资料进行登记、查询和导出。我们的调研资料都是人工收集,每年的产生量大概也就是万级,用户人数也不过百,从需求上来看并没有什么架构压力,正好适合我这样的新手来练练手。初步设计:使用MySQL来存储结构化数据,调研资料通过WEB上传直接存放在服务器。前后端分离,后端使用Spring全家桶,SpringBoot + Spring Data JP...
2020-03-11 23:12:37 1189
原创 记一次CLTQ指令引起的函数返回值异常
问题如下:同一套代码分别编译出32位和64位程序;32位程序在运行正常,但是64位程序运行出现coredump。问题分析:对64位程序的coredump文件进行分析。发现函数函数返回的指针被截断了。64位程序返回指针有两种情况,第一种,指针高32位全部填充0;第二种,指针高32位全部填充1,第二种情况很容易迷惑人,指针的地址怎么指向内核地址。1. 对二进制文件进行反汇编,发现函数返回的指针...
2020-03-11 03:51:36 948 1
原创 一次OPENSSL指针错误的排查
同事在arm下使用了我们封装好的openssl库,应用程序在调用EC_KEY_new_by_curve_name接口时发生了错误。以下是分析定位过程。通过gdb很容易就能定位到,#0 BN_POOL_finish (p=0x26f44 <BN_STACK_finish+52>) at bn_ctx.c:368#1 0x00026ad8 in BN_CTX_free (ctx=...
2020-03-11 03:28:33 1354
原创 在V8引擎中包装C++类
Javascript中不像C++有类的概念,其本质只是一个带有构造功能的函数,因此,关于C++类的注册主要是围绕着构造函数展开。先给一个C++类MyObject,这是我们即将封装到Javascript中的类。class MyObject {public: void doSomeThing(); static void JSRegister(Local<Object> exp...
2020-03-06 22:36:56 943
原创 VS2017链接V8引擎库遇到的一些问题
前几天用VS2017编译好了V8库,今天尝试编译Demo程序的时候遇到了一个问题:std::unique_ptr<v8::Platform> platform = v8::platform::NewDefaultPlatform();v8::V8::InitializePlatform(platform.get());v8::V8::Initialize();v8::Isola...
2020-03-05 18:20:01 2122 2
原创 Win10 VS2017 编译libuv
其实整个编译过程很简单,这里记录编译过程踩的一个小坑安装python2,设置好环境变量安装Git解压代码到任意目录PS D:\projects\libuv-v1.34.2> .\vcbuild.bat debug vs2017 x64 staticLooking for Visual Studio 2017calling: "C:\Program Files (x86)\Mi...
2020-03-04 22:43:15 529
原创 Win10 VS2017 编译V8引擎
有个系统将来可能会要用到Javascript支持,于是今天尝试编译了一下V8引擎,一路还是很顺利的,特将步骤记录如下:首先准备梯子,我的梯子是装在路由器上的,此步骤就省了安装Git,这个我已经有了安装Python2.7,官网上下下来安装就好了,并把安装目录配置到Path环境变量里。这里有个小插曲是,只要我在powershell里输入python,系统就会启动windowsstore,让...
2020-03-04 21:04:34 1881 8
原创 实现SSL网关多服务端证书支持的思路
所内国密SSL VPN网关的项目面临一个这样的问题,用户希望该网关同时支持使用国密SSL证书和标准的RSA证书的VPN客户端,即意味着服务端有多个服务端证书,同时要求客户端在使用国密SSL证书时启用国密SSL协议,在客户端使用RSA证书时使用标准的TLS1.2协议。先定位范围,我们知道,根据SSL握手协议,在客户端向服务端发起ClientHello之后,服务端就要向客户端返回服务端证书。可知握手...
2020-03-03 14:52:52 941
原创 记一次隐藏动态库符号的探索过程
今天遇到一个需要隐藏动态库符号的需求,记录一下。因为某些原因需要将定制的OPENSSL库进行封装成一个新的动态库,提供给其他用户使用。并且我们用到的这个OpenSSL库是经过改造的,与系统库里自带的OpenSSL是不相同的。先贴出Makefileall:libsgcccrypto.a libsgcccrypto.so testcrypto.o:crypto.h crypto.h ...
2020-03-02 00:56:59 3416 1
原创 关于SM2签名算法的实现
国密标准的SM2签名算法,并不是简单的将明文通过SM3算法Hash,再将Hash结果通过SM2算法使用私钥进行签名。Hash这块比较复杂,要经过两次SM3算法进行Hash。中间还有Za参与运算。第一次Hash其实只是对Za的Hash,Za里面甚至包含了公钥信息(Xa,Ya),一些预定义的值(即曲线参数),详见附件A.2。得到Za的Hash结果后,与明文进行拼接,拼接之后的数据再进行一次Ha...
2020-02-29 11:50:06 8261
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人