- 博客(259)
- 问答 (1)
- 收藏
- 关注
原创 openssl编程-算法整合
#include <stdio.h>#include <stdlib.h>#include <getopt.h>#include <string.h>#include <fcntl.h>#include <unistd.h>#include <openssl/evp.h>static void print_help(void){ printf("COMPILE\n"); printf(" gcc.
2022-03-05 22:46:33 1426
原创 python_高级用法(闭包,装饰器,迭代器,生成器)
一、闭包闭包概念:在一个内部函数中,对外部作用域的变量进行引用,(并且一般外部函数的返回值为内部函数),那么内部函数就被认为是闭包。# test1:简单闭包def outer(a): def inner(b): return a + b return innerf = outer(1)print("f.name is:", f.__name__)print(f(2))print(f(3))f.name is: inner34# test
2022-02-28 21:26:56 420
原创 python_内置函数(lambda,filter,map,reduce)
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。python2.x:返回列表python3.x:返回迭代器该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。def is_odd(n): return n % 2 == 1ret_filter = filter(is_odd, [1, 2, 3, 4])print(ret_
2022-02-27 22:11:29 369
原创 Linux内核list_head使用示例
#include<linux/init.h>#include<linux/slab.h>#include<linux/module.h>#include<linux/kernel.h>#include<linux/list.h>struct student{ int id; char *name; struct list_head list;};static void testlist_exit(void){ .
2022-02-26 17:46:25 563
原创 LeetCode-【LRU算法】解题技巧
146. LRU 缓存请你设计并实现一个满足LRU (最近最少使用) 缓存约束的数据结构。正常解法,设计字典+双向链表实现,具体细节参考:力扣下面解法:利用python3中的字典本身就具有的性质:字典已经按照键添加的顺序进行排列,即字典按照添加key的顺序排列,实现如下:class LRUCache: def __init__(self, capacity: int): self.dict_ = {} self.cap = capacity...
2022-02-19 22:17:08 450
原创 LeetCode-【随机算法】解题技巧
384. 打乱数组class Solution: def __init__(self, nums: List[int]): self.data = nums[:] self.curr = nums self.len = len(nums) def reset(self) -> List[int]: self.curr = self.data[:] return self.curr def
2022-02-19 20:52:36 7150
原创 LeetCode-【topK】解题技巧
剑指 Offer II 059. 数据流的第 K 大数值class KthLargest: def __init__(self, k: int, nums: List[int]): self.k = k self.k_arr = [] for i in nums: heapq.heappush(self.k_arr,i) if len(self.k_arr) > self.k:
2021-12-26 21:08:11 3314
原创 LeetCode-【字符串】解题技巧
821. 字符的最短距离暴力解法:class Solution: def shortestToChar(self, s: str, c: str) -> List[int]: arr = [] for i,v in enumerate(s): if v == c: arr.append(i) ret = [] for i,v in enumerate(s):
2021-11-22 22:48:24 193
原创 LeetCode-【单调栈】解题技巧
402. 移掉 K 位数字正常算法思路:从左到右,找第一个比后面大的字符,删除,去掉前导清零,需要k次扫描,每扫描一次,得到移除一个数字后的解。贪心+k次扫描:class Solution: def removeKdigits(self, num: str, k: int) -> str: if len(num) == k: return "0" for i in range(k): t = ""
2021-10-03 14:56:41 194
原创 python_排序技巧
1.根据身高,体重,编号从小到大排序eg:编号:[1,2,3,4]身高:[100,90,110,100]体重:[30,35,50,30]输出:2 1 4 3def sort_student(h,w): dict_ = {} l = len(h) for i in range(l): t = (h[i],w[i]) dict_[t]=dict_.get(t,[])+[i] ret = [] for k in so
2021-09-30 23:25:30 440
原创 LeetCode-【双指针】解题技巧
986. 区间列表的交集https://leetcode-cn.com/problems/interval-list-intersections/class Solution: def intervalIntersection(self, firstList: List[List[int]], secondList: List[List[int]]) -> List[List[int]]: i,j=0,0 ans = [] while i&
2021-09-25 15:12:07 130
原创 LeetCode-【滑动窗口】解题技巧
1876. 长度为三且各字符不同的子字符串class Solution: def countGoodSubstrings(self, s: str) -> int: l = len(s) if l<=2: return 0 ans = 0 for i in range(2,l): if s[i-2] != s[i-1] and s[i-1] != s[i] and s[i
2021-09-20 17:13:23 383
原创 Linux编程之epoll测试
测试epoll能否监听普通文件。epoll是Linux系统中常用的多路复用I/O组件,可以用来监听socket的I/O操作,但是监听的都是fd,那么打开的普通文件fd可以被监听吗?测试代码://gcc epoll_file.c -o epoll_file#include<stdio.h>#include<sys/epoll.h>#include<fcntl.h>int main(){ struct epoll_event ev, event
2021-08-07 22:23:46 470
原创 Linux编程之epoll示例
基础原理理解请参考这篇:IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)select主要解决的问题:(详细请参考:select用法&原理详解(源码剖析))select/epoll区别:如果这篇文章说不清epoll的本质,那就过来掐死我吧!逻辑框架...
2021-08-07 21:22:31 913
原创 openssl编程-aead
openssl aead算法接口使用示例://gcc -g -lssl aead_test.c -lcrypto -L /usr/local/lib/#include <string.h>#include <openssl/evp.h>#define IV_SIZE 8#define KEY_SIZE 24#define INPUT_SIZE 100void print_hexdata(unsigned char *b, int len, char *title
2021-07-25 14:07:24 1230
原创 openssl编程-cipher
openssl cipher算法接口使用示例://gcc -g -lssl cipher_test.c -lcrypto -L /usr/local/lib/#include <string.h>#include <openssl/evp.h>#define IV_SIZE 8#define KEY_SIZE 24#define INPUT_SIZE 100void print_hexdata(unsigned char *b, int len, char *t
2021-07-24 23:46:07 636
原创 openssl编程-DH
openssl DH算法接口使用示例://gcc -g -lssl dh_test.c -lcrypto -L /usr/local/lib/#include<openssl/dh.h>#include<memory.h>void print_bigdata(const BIGNUM *b, char *title) { unsigned char a[2048] = {0}; int len = BN_bn2bin(b, a); int i = 0, c = 0
2021-07-18 00:09:43 2100
原创 Linux编程之mmap示例
一、Linux下,针对we传统的读写文件一般来说,修改一个文件的内容需要如下3个步骤:把文件内容读入到内存中。修改内存中的内容。把内存的数据写入到文件中。过程如图 1 所示:如果使用代码来实现上面的过程,代码如下:...
2021-06-19 19:58:55 1755
原创 Linux文件操作函数open/read/write/lseek
此类函数定义在头文件:#include <unistd.h>read使用示例:#include <stdio.h>#include <unistd.h>#include <fcntl.h>#include <sys/types.h>#include <sys/stat.h>int main(){ int read_fd, size; char buffer[1024] = "\0"; .
2021-06-19 18:05:26 375
原创 LeetCode-【差分解决区间问题】解题技巧
1094. 拼车此题关键在于:上车下车先后是固定的, 那么可以用差分法,在特定车站上车就+人数, 下车就-人数,那么计算, 如果出现 > capacity 就是false;1.所有车站人数初始化为0;2.遍历trips,依次维护上下车各车站人数变化;3.遍历所有车站,累加各个车站人数,出现> > capacity 就是false,否则返回true;class Solution(object): def carPooling(self, trips, capac
2021-06-13 21:14:43 2116
原创 Linux进程间通信--共享内存示例(信号量保证同步)
在Linux系统中,每个进程都有独立的虚拟内存空间,也就是说不同的进程访问同一段虚拟内存地址所得到的数据是不一样的,这是因为不同进程相同的虚拟内存地址会映射到不同的物理内存地址上。\n但有时候为了让不同进程之间进行通信,需要让不同进程共享相同的物理内存,Linux通过 共享内存 来实现这个功能。下面先来介绍一下Linux系统的共享内存的使用。...
2021-06-06 22:56:06 3450
原创 Linux内核导出符号及引用示例
引用参考:Linux内核中导出符号及其引用代码目录如下:Makefileobj-m +=calculate_lib.oobj-m +=test_demo.oobj-m += com_lib.oKDIR :=/lib/modules/$(shell uname -r)/buildPWD=$(shell pwd)modules: $(MAKE) -C $(KDIR) M=$(PWD) modulesclean: $(MAKE) -C $(KDIR) M=$(PW
2021-05-01 14:56:43 842
原创 Linux编程之select示例
基础原理理解请参考这篇:IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)select主要解决的问题:(详细请参考:select用法&原理详解(源码剖析))select需要使用两个system call (select 和 recvfrom),而blocking IO只调用了一个system call (recvfrom)。但是,用select的优势在于它可以同时处理多个connection(使用select以后最大的优势是用户可以在一个线程内同时处理多个socket的IO请求),在网络
2021-04-24 18:51:35 1177
原创 file_operations使用示例(实现read/write/ioctl)
Makefileobj-m:=test_tools.oKDIR:=/lib/modules/$(shell uname -r)/buildPWD:=$(shell pwd)default: $(MAKE) -C $(KDIR) M=$(PWD) modulesclean: rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions *.order *symvers *Module.markerstest.ko/************
2021-04-05 18:40:02 5495
原创 LeetCode-【前缀和】解题技巧
560. 和为K的子数组1248. 统计「优美子数组」974. 和可被 K 整除的子数组523. 连续的子数组和
2021-02-16 20:59:07 402
转载 Python标准库模块之heapq
该模块提供了堆排序算法的实现。堆是二叉树,最大堆中父节点大于或等于两个子节点,最小堆父节点小于或等于两个子节点。创建堆heapq有两种方式创建堆, 一种是使用一个空列表,然后使用heapq.heappush()函数把值加入堆中,另外一种就是使用heap.heapify(list)转换列表成为堆结构import heapq# 第一种"""函数定义:heapq.heappush(heap, item) - Push the value item onto the heap,.
2020-08-30 21:33:07 201
原创 LeetCode-【二分查找】解题技巧
5489. 两球之间的磁力分析:题意求最大化最小,类似这样的求最大化最小值、最小化最大值等都可以用二分搜索解决.1.找到所有position的最大距离和最小距离;2.通过二分法,分别判断满足条件的距离(a.mid=(最大距离+最小距离)/2;b.满足条件的点是否>=m);下面是实现示例:class Solution(object): def check(self,p,mid,m): c = 0 i,j=0,1 while
2020-08-16 18:00:18 437
原创 LeetCode-【DFS】解题技巧
LeetCode题目:面试题 08.10. 颜色填充 def floodFill(self, image, sr, sc, newColor): """ :type image: List[List[int]] :type sr: int :type sc: int :type newColor: int...
2020-04-25 21:30:55 520
原创 LeetCode-【BFS】解题技巧
LeetCode题目:地图分析题目分析(分析转自sweetiee):这是一道典型的BFS基础应用,为什么这么说呢?因为我们只要先把所有的陆地都入队,然后从各个陆地同时开始一层一层的向海洋扩散,那么最后扩散到的海洋就是最远的海洋!并且这个海洋肯定是被离他最近的陆地给扩散到的!下面是扩散的图示,1表示陆地,0表示海洋。每次扩散的时候会标记相邻的4个位置的海洋:你可以想象成你从每个陆.........
2020-03-29 14:55:25 2006
原创 LeetCode-【链表】解题技巧
删除链表的节点 ListNode* deleteNode(ListNode* head, int val) { ListNode* dummy = new ListNode(0); //构建虚拟头节点 dummy->next = head; ListNode *t=dummy; while(t&&t-...
2020-03-15 18:35:45 434 1
原创 LeetCode-【数学】数学在解题中的技巧
1. 不使用变量交换两个数交换两个数# 异或a ^ b = cc ^ b = aa ^ c = bnumbers[0] ^= numbers[1];numbers[1] ^= numbers[0];numbers[0] ^= numbers[1];# 加减A = A+BB = A-BA = A-Bnumbers[1]=numbers[0]+numbers[1];...
2020-02-23 13:59:31 258
原创 LeetCode-【数学】判断素数
leetcode 204题目链接:计算质数厄拉多塞筛法def countPrimes(self, n): """ :type n: int :rtype: int """ if n < 2: return 0 res = 0 arr = [0] *...
2020-02-11 22:05:24 874
原创 【知识整理】makefile gtest gcov(lcov)
1.基础安装(安装网上有很多教程,根据机器自行安装即可)1)安装gtest工具2)安装lcov工具2.使用示例1)目录结构main:程序入口ut_test:对branches,calc,function文件夹中的代码行进行单元测试(ut),测试框架为gtest2)示例代码(源代码和编译执行过程都在github上)https://github.com/zhlan/...
2019-01-12 22:58:37 3254
原创 LeetCode-【数学】解答技巧总结
leetcode 7题目链接:LeetCode7_反转整数int reverse(int x) { int r=0; while(x) { int t=r; r=r*10+x%10;//r从低位加到高位 if((x<10)&&(t!=(r-x%10)/10))//回退到加当前循环数之前,即t,看是否溢出 { return 0; } ...
2018-07-25 20:19:45 929
原创 leetcode mysql-汇总(中等)
626. 换座位小美是一所中学的信息科技老师,她有一张 seat 座位表,平时用来储存学生名字和与他们相对应的座位 id。其中纵列的 id 是连续递增的小美想改变相邻俩学生的座位。你能不能帮她写一个 SQL query 来输出小美想要的结果呢?示例:+---------+---------+| id | student |+---------+---------+| 1 ...
2018-06-27 21:20:01 989
原创 leetcode mysql-汇总(简单)
182. 查找重复的电子邮箱编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。示例:+----+---------+| Id | Email |+----+---------+| 1 | a@b.com || 2 | c@d.com || 3 | a@b.com |+----+---------+根据以上输入,你的查询应返回以下结果:+---------+...
2018-06-23 20:50:42 4866
原创 python_Qtimer学习
from PyQt5.QtWidgets import *from PyQt5.QtCore import *import sysfrom datetime import datetimeclass WinTimer(QWidget): def __init__(self,parent=None): super(WinTimer,self).__init__(pa...
2018-05-27 17:45:58 7024
原创 python_多线程
学习python多线程,参考了别人的博客,完成了以下简单的示例:1.使用多线程“同时”去做两件事:#coding=utf-8import threadingfrom time import ctime,sleepdef music(func): for i in range(2): print("I was listening to %s. %s" %(func,c...
2018-05-16 21:25:34 294
原创 python_安居客区域房源均价工具(matplotlib)
让数据更有价值,就需要对抓取的信息进行适当的处理,然后展现出来。0.打开源码,修改源码该位置选择城市:1.抓取的安居客不团区域房价,然后计算该区域均价,然后通过matploylib绘图:2.python源码:#-*- encoding=UTF-8 -*-from urllib.request import urlopenfrom bs4 import BeautifulSoupimport ...
2018-05-01 22:41:23 895
原创 python_数据库(增删查改)
使用python对数据库进行操作的总结:import randomfrom pymysql import cursors,connectconn=connect(host='127.0.0.1', user='root', password='admin', db='test', ch
2018-04-29 15:42:40 1098
空空如也
使用C++利用POST模拟登录某个网站后,如何获取Cookie?
2014-12-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人