
算法
文章平均质量分 69
hacker_lpy
学的通信工程专业,做过一年的java J2EE开发,现在从事C++开发,熟悉windows程序设计及linx后端服务器开发
展开
-
基于 gmssl实现的sm2加密(C++)
项目中需要用到sm2加密,在网上搜索了一下相关的库,发现只有openssl和gmssl这两个库可以用,于是基于gmssl库做了封装,gmssl的版本是:GmSSL 2.5.4 - OpenSSL 1.1.0d 19 Jun 2019搞这个库的确要费不少功夫,现在分享出来给需要的人。目前我是用在linux环境中,因此编译成linux动态库,并且屏蔽相关库的头文件和符号,只暴露sm2加解密相关的接口符号,gmssl库通过静态库的方式引用。...原创 2022-04-16 11:47:55 · 10171 阅读 · 17 评论 -
关于goroutine调度器是否是抢占式的问题
最近在看协程的实现,想弄明白go的调度器是不是抢占式,如果某个goroutine运行的时间太久,并且没有主动让出cpu,go调度器是否会切换到其他goroutine运行。看了一些其他的文章,总结了一下,go的调度器勉强算的上是抢占式的,但是不是在所有情况下都能抢占。按照go调度器的设计,最终还是让长时间运行的goroutine自己放弃cpu的,以主动放弃达到抢占的目的。go调度器会起一个守护线程去监控各个协程的运行时间,一旦某个协程运行超时,就给这个协程的栈空间设置一个超时的标志位,协程在运行...原创 2021-01-27 17:03:06 · 1006 阅读 · 0 评论 -
基础背包问题动态规划解法详细解答【转】
最近在刷大厂的编程题,发现很多题目都需要用到动态规划去求解,自己都是只知道用穷举的方式去解,实在是low。学习动态规划,看了别人说的背包问题九讲.pdf,依然是云里雾里。对我这样的小白来说,感觉描述的不是很清楚。然后找到了下面的博文,终于搞清楚实现过程。特意分享出来,给和我一样小白的童鞋。01背包问题 图解+详细解析 (转载)...转载 2020-07-20 14:38:34 · 200 阅读 · 0 评论 -
排列组合 c++实现
首先说排列,可以根据递归定义,从n个元素里面选m个进行排列,第一步先从n个元素里面选任意一个元素,然后再在剩下的n-1个元素里面选m-1个元素进行排列。这个就是递归定义。因为是任意一个元素,因此必须进行一个从第0个元素到n-1个元素的循环。比如从集合[1,2,3]中取2个数进行排列(1)第一个循环,取出元素1作为集合的第一个排列数;然后再利用递归从剩下的元素[2,3]中取1个元素进行...原创 2020-03-21 22:39:46 · 1795 阅读 · 0 评论 -
求一个集合的所有子集(c++实现)
求一个集合的所有子集就是很简单的一道关于组合的题目,是一个集合内的元素的任意组合。一接触这类的题目,感觉头都大,让我找出三个数的任意组合我都担心找不全,更别提更多的数的组合了。在网上查了解决方法,发现他们的想法真的很神奇,顿时有种豁然开朗的感觉。首先如果一个n个元素的的集合,子集的个数一共有多少个呢,是2^n个,为什么是2^n个呢,转换一下思路,我们就把有n个元素的集合看作是一个有n位的整型数...原创 2020-01-12 15:14:48 · 7224 阅读 · 2 评论