- 博客(41)
- 资源 (2)
- 收藏
- 关注
原创 C/C++——Tchisla求解器(多线程高性能版本)
之前一篇文章中介绍的使用Python写的Tchisla求解器Python——Tchisla求解器(暴力搜索法)在我实际使用中有比较大的缺陷,首先是太慢了,对于每日一题中四位数的目标数字,往往搜索数个小时都找不完1~9的全部最优解,尤其是5和7这两最慢。其次是内存占用太多,跑一些大数字的搜索,能用掉上百G的内存。使用Python编写不好控制内存使用,因为GIL也没办法做多线程性能加速,所以后面我又用C++重写了一个版本,思路还是一样的暴力搜索,但是优化了内存使用并加上了多线程并发搜索能力。
2024-03-12 11:02:39
534
原创 Python——Tchisla求解器(暴力搜索法)
最近玩到一个挺有意思的数字解密小游戏《Tchisla》,其规则类似算24点,也是利用一些数学运算和初始数字计算出目标数字,与算24点不同的是,Tchisla允许不限次数地使用一种初始数字(1~9),运算操作除了加减乘除外还包括了幂、平方根和阶乘,以及重复这个数字形成多位数(比如初始数字为7,那么777也可以使用)。
2024-02-28 19:03:26
1090
原创 Impala4.x源码阅读笔记(三)——Impala如何管理Iceberg表元数据
本文为笔者个人阅读源码时的笔记,仅代表我个人对代码的理解,个人水平有限,文章可能存在理解错误、遗漏或者过时之处。如果有任何错误或者有更好的见解,欢迎指正。上一篇文章Impala4.x源码阅读笔记(二)——Impala如何高效读取Iceberg表简单介绍了Iceberg表的基本情况和Impala是如何对其进行扫描的。
2023-12-29 17:14:13
1143
原创 Impala4.x源码阅读笔记(二)——Impala如何高效读取Iceberg表
本文为笔者个人阅读源码时的笔记,仅代表我个人对代码的理解,个人水平有限,文章可能存在理解错误、遗漏或者过时之处。如果有任何错误或者有更好的见解,欢迎指正。Iceberg表是一种用于存储大规模结构化数据的开源表格式,旨在提供高效的数据存储和丰富的查询能力。不同于Parquet,Orc等文件格式定义了数据如何在文件中存储和索引,Iceberg作为一种表格式定义的是数据文件如何组织,换句话说就是一系列的数据文件如何构成一张表以及我们如何从大量数据文件中找到我们需要的。
2023-12-13 16:00:18
1275
原创 Impala4.x源码阅读笔记(一)——HdfsTextScanner解析
本文为笔者个人阅读源码时的笔记,仅代表我个人对代码的理解,个人水平有限,文章可能存在理解错误、遗漏或者过时之处。如果有任何错误或者有更好的见解,欢迎指正。在文章Impala3.4源码阅读笔记(七)——解析ScanNode(上)及其后续文章中,我们分析了ScanNode制定单节点执行计划,将SQL转换为一颗包含若干不同计划结点PlanNode的计划树PlanTree;制定分布式执行计划,将单节点计划树拆分为若干片段Fragment,以便在分布式集群上分配调度;分配与调度执行计划片段到执行节点;
2023-12-12 15:27:58
200
原创 Impala3.4源码阅读笔记(九)解析ScanNode(下)
本文为笔者个人阅读源码时的笔记,仅代表我个人对代码的理解,个人水平有限,文章可能存在理解错误、遗漏或者过时之处。如果有任何错误或者有更好的见解,欢迎指正。
2023-07-06 11:44:43
339
原创 Impala3.4源码阅读笔记(八)解析ScanNode(中)
本文为笔者个人阅读源码时的笔记,仅代表我个人对代码的理解,个人水平有限,文章可能存在理解错误、遗漏或者过时之处。如果有任何错误或者有更好的见解,欢迎指正。
2023-07-06 11:44:30
339
原创 Impala3.4源码阅读笔记(七)解析ScanNode(上)
本文为笔者个人阅读源码时的笔记,仅代表我个人对代码的理解,个人水平有限,文章可能存在理解错误、遗漏或者过时之处。如果有任何错误或者有更好的见解,欢迎指正。
2023-07-06 10:29:52
461
1
原创 Impala3.4源码阅读笔记(六)ScanRange分配
本文为笔者个人阅读源码时的笔记,仅代表我个人对代码的理解,个人水平有限,文章可能存在理解错误、遗漏或者过时之处。如果有任何错误或者有更好的见解,欢迎指正。
2023-07-05 14:21:17
204
1
原创 Impala3.4源码阅读笔记(五)统计信息
本文为笔者个人阅读源码时的笔记,仅代表我个人对代码的理解,个人水平有限,文章可能存在理解错误或者遗漏之处。如果有任何错误或者有更好的见解,欢迎指正。
2023-07-05 14:09:57
530
原创 Impala3.4源码阅读笔记(四)file-handle-cache功能
本文为笔者个人阅读源码时的笔记,仅代表我个人对代码的理解,个人水平有限,文章可能存在理解错误或者遗漏之处。如果有任何错误或者有更好的见解,欢迎指正。
2023-07-05 11:46:39
196
原创 Impala3.4源码阅读笔记(三)data-cache的Store实现
本文为笔者个人阅读源码时的笔记,仅代表我个人对代码的理解,个人水平有限,文章可能存在理解错误或者遗漏之处。如果有任何错误或者有更好的见解,欢迎指正。
2023-07-05 11:35:03
168
原创 Impala3.4源码阅读笔记(二)data-cache的Lookup实现
本文为笔者个人阅读源码时的笔记,仅代表我个人对代码的理解,个人水平有限,文章可能存在理解错误或者遗漏之处。如果有任何错误或者有更好的见解,欢迎指正。
2023-07-05 11:19:37
178
原创 Impala3.4源码阅读笔记(一)data-cache功能
本文为笔者个人阅读源码时的笔记,仅代表我个人对代码的理解,个人水平有限,文章可能存在理解错误、遗漏或者过时之处。如果有任何错误或者有更好的见解,欢迎指正。基本信息data-cache是impala在本地的数据缓存,采用LRU策略存储频繁使用的表数据,避免每次使用都要从HDFS再次读取,从而加快数据读取速度。data-cache可以包括多个缓存分区,分区大小配额和存放路径通过参数配置,可参考。模块结构data-cache功能由DataCache。
2023-07-05 10:23:13
564
1
原创 Python——简陋的n阶魔方模拟
简介终于整完了毕业论文,忙里偷闲半小时摸了个魔方模拟程序,支持模拟任意阶魔方,自动打乱,输入指令旋转。显示方面不会弄3D的,用opencv整了个展开图。效果五阶魔方打乱20步震撼人心50阶,打乱100步代码import cv2import numpy as npfrom random import randintclass Cube: def __init__(self, order=3, size=50): # 魔方阶数、显示尺寸 self.img =
2021-04-14 17:02:03
818
2
原创 Y语言v2.0、Python——设计一门更复杂的解释型编程语言并实现解释器
背景最近又玩了遍《人力资源机器》和《70亿人》(都是编程游戏,用一种类似汇编的简陋语言解决谜题,后者相当于前者的多线程版本),考虑自己设计开发一个编程游戏。游戏玩法大概是玩家管理一个机器人编队(包括近战型、远程型和支援型)与敌方机器人编队作战,每台机器人包括一个可编程CPU和一些可选模块(比如移动、撞击、射击、炮火打击和雷达模块等等),核心玩法为机器人的改装(模块装配)、编队(队伍构成、站位和对地形的利用)和编程(编写机器人CPU运行的核心代码,从模块中获取战场信息并控制模块行动)。最后打算以Unity开
2020-12-01 17:17:09
921
3
原创 C/C++——支持括号和自定义运算符的表达式计算器
简介简单的表达式计算器,输入一个字符串给出计算结果,数字支持小数,符号支持括号“()”和自定义双目运算符(单字符),预定义了+,-,*,/,%,^六种运算符。原理就是中缀表达式string→后缀表达式vector→利用stack计算。效果1.测试代码// 文件名:main.cpp#include <iostream>#include "Calculator.h"using namespace std;double difference_of_square(double a,
2020-10-25 11:34:05
875
原创 C/C++、Python——迪杰斯特拉(Dijkstra)和弗洛伊德(Floyd)算法求最短路径及途经结点
效果1. C++int main() { vector<tuple<unsigned, unsigned, double>> es{ // 起点, 终点, 权重 {0, 3, 1}, {0, 4, 9}, {0, 6, 1}, {1, 3, 5}, {1, 5, 3}, {1, 6, 2}, {2, 5, 4}, {2, 6, 2},
2020-09-15 11:02:21
240
原创 Python——利用协程实现视频的拖影效果
效果代码import cv2import numpy as npdef smear(lengh): # lengh: 拖影长度(帧数) imgs = [] img = yield simg = np.zeros_like(img, dtype=np.uint) while img is not None: if len(imgs) < lengh: imgs.append(img) simg
2020-09-09 19:27:05
508
原创 数据结构、C/C++——实现一个STL风格的简单二叉树类模板,支持先中后层序遍历以及根据遍历重建二叉树方法
简介简单的二叉数类,支持结构化字符串和中序遍历+任意一种其他遍历方式来建立一颗STL风格的二叉树。所谓结构化字符串,即以ROOT[(LEFT[,RIGHT])]来表示一个节点和其左右子树结构,无右子树可省略逗号,无子树可省略括号,如0(1(,2),3(4,5(6(7,8),9)))中根节点为0,左子树为1(,2),右子树为3(4,5(6(7,8),9))。结构如下:测试代码int main(){ BinTree<string> bts("0(1(3,4),2(5,6))", vec
2020-09-08 21:23:29
518
原创 数据结构、Python——实现一个Python风格的简单二叉树类,支持先中后层序遍历以及根据遍历重建二叉树方法
简介简单的二叉数类,支持结构化字符串和中序遍历+任意一种其他遍历方式来建立一颗Python风格的二叉树。所谓结构化字符串,即以ROOT[(LEFT[,RIGHT])]来表示一个节点和其左右子树结构,无右子树可省略逗号,无子树可省略括号,如0(1(,2),3(4,5(6(7,8),9)))中根节点为0,左子树为1(,2),右子树为3(4,5(6(7,8),9))。结构如下:代码测试代码测试效果...
2020-09-04 21:38:42
195
原创 娱乐向、Y语言、Python——设计一门简单的解释型编程语言并实现解释器
简介突发奇想地想设计一门编程语言,但又没学过编译原理只能整个解释型语言了,又一想符号计算也很麻烦,干脆整个汇编一样的语言算了。由于语言设计的核心思想是能简单的实现解释器(确实简单,用Python半个小时就写了个简易解释器出来),所以实用性就别指望了,娱乐向娱乐向~语法和关键字...
2020-07-12 17:20:29
722
1
原创 项目框架、Python——生产者/消费者+流水线模式的多进程工作框架
简介开发智能截图系统的时候将系统设计为取帧模块、分析模块、评估模块、截图模块和显示模块的线性串联。每个模块都是独立的进程或进程池,像流水线一样处理画面并转交下一模块,模块之间以队列连接。将这种多个生产者/消费者串联起来协同工作的思想进一步扩展便成了一个项目框架。代码头部import multiprocessing as mpfrom threading import Threadfro...
2020-04-29 17:59:04
1542
2
原创 C/C++、MFC——陈年老项目之简易网络爬虫
程序功能实现一个简单的网络爬虫:输入一个网址,遍历下载该页面和其子页面,包括html文件、图片。程序有简单的图形界面,能够随时结束页面爬取。爬取过程中有爬取信息输出。效果代码Githubps:这只是一个简陋的爬虫,仅能爬取一些简单的页面。面对结构复杂的页面和登录验证等无能为力。相关资料HTML教程HTTP教程正则表达式教程...
2020-04-29 00:03:46
869
原创 Python——任意正数任意进制转换(支持2~36进制和小数)
效果代码1.字母和数字转换A↔10,B↔11,...,Z↔35A↔10,B↔11,...,Z↔35A↔10,B↔11,...,Z↔35def trans(num): # 输入数字换为字母或输入字母转换为数字 if type(num) == int: if num < 10: return str(num) else:...
2019-07-06 21:28:57
7430
3
原创 算法、Python——寻路算法(最小代价路径、最短时间路径)
如何花费最短的时间到达目的地?如何在一个不规则的迷宫中找到出路?如何在一片起伏不平的地形中找出出发点到目的点的最佳路径?
2019-05-06 16:45:22
5961
原创 Python——numpy实现简单BP神经网络识别手写数字
直接上代码:1.核心代码:神经网络以及BP算法import numpy as npfrom tqdm import trange # 替换range()可实现动态进度条,可忽略def sigmoid(x): # 激活函数采用Sigmoid return 1 / (1 + np.exp(-x))def sigmoid_derivative(x): # Sigmoid的导数...
2019-04-23 21:57:20
12069
86
原创 Python——计算序列相似度的算法(包括求最少交换步骤,最小交换距离)
程序功能计算如何衡量两个数字序列之间的相似度中提及的相似度指标;求两个序列转换的最少交换步骤和最小交换距离。代码位方差(location square deviation, LSD)def location_square_deviation(lst_1, lst_2=None): n = len(lst_1) lst = lst_1.copy() if lst_...
2019-04-22 21:45:41
4841
2
原创 算法——如何衡量两个数字序列之间的相似度
背景给定两个等长的数字序列,如何衡量他们之间的相似程度?如[2,1,0,3][2, 1, 0, 3][2,1,0,3]、[2,0,3,1][2, 0, 3, 1][2,0,3,1]与[1,3,2,0][1, 3, 2, 0][1,3,2,0]三个序列之间哪两个最相似?为了解决上述问题,本文提出了两类共六种衡量指标用来衡量序列相似度。指标符号约定nnn:序列长度PPP:数字序列[0,1...
2019-04-22 21:00:48
21300
12
原创 算法、Python——如何将数字序列映射为整数
背景如何只调用一次rand()就实现洗牌算法(将一个列表随机打乱顺序)?考虑一串长度为n的数字序列[0,1,2,3,…,n-1],其的不同排列顺序共有n!种,其包含的信息量为I=log(n!),也就是说存在一种方法能将所有排序的序列一一映射到[0,n!-1]上的整数。那num2order(rand()%n)就能实现洗牌算法了!原理1.阶乘进制首先介绍一下阶乘进制。就如同2进制、10进制、...
2019-04-20 14:16:47
2881
原创 Python——pygame游戏:外星人入侵(打飞机)
游戏附件&代码审核画面音乐背景音乐:《MEGALOBOX》音效:网络收集操作方向键:控制移动空格键:发射激光Z、X、C:左、中、右发射导弹S:发射冲击波...
2019-04-19 20:21:14
2695
18
原创 Python——迷宫生成和迷宫破解算法
迷宫生成1.随机PRIM思路:先让迷宫中全都是墙,不断从列表(最初只含有一个启始单元格)中选取一个单元格标记为通路,将其周围(上下左右)未访问过的单元格放入列表并标记为已访问,再随机选取该单元格与周围通路单元格(若有的话)之间的一面墙打通。重复以上步骤直到列表为空,迷宫生成完毕。这种方式生成的迷宫难度高,岔口多。效果:代码:import randomimport numpy as np...
2019-04-19 19:53:53
7982
5
原创 C/C++——元胞自动机&万花筒
程序功能实现一个简单的元胞自动机,可以自定义初始状态、运行规则。以此基础实现一个能自动绘制大量万花筒图像的程序。效果生命游戏中的“滑翔机(gliders)”:万花筒:代码#include <windows.h>#include <stdlib.h>#include <conio.h>#include <string>#inclu...
2019-04-19 15:29:57
2307
原创 C/C++——如何使用PlaySound同时播放两个声音
PlaySound是Windows用于播放音乐的API函数。在vs2010以上版本需要加入#pragma comment(lib, “winmm.lib”)才能使用PlaySound(或者在构建选项的连接中添加winmm)。PlaySound函数原型为 BOOL PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound)。参数pszSoun...
2019-04-19 13:59:59
9375
7
原创 C/C++——如何在控制台中绘制进度条
函数功能:输入一个0~1的double p,在控制台中当前光标位置开始使用当前字符颜色绘制对应长度的进度条。void gotoxy(int x,int y){ COORD pos; pos.X=x; pos.Y=y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}void dra...
2019-04-19 12:53:28
2092
1
原创 C/C++——文字RPG游戏:MINERPG
游戏附件:链接: https://pan.baidu.com/s/1KaCPDDZoBacDDvDeprvNxw提取码: cecr状态:新职业数值平衡中,背景音乐调整,新职业技能音效更新
2019-04-18 21:56:41
15044
18
原创 C/C++——控制台俄罗斯方块的实现以及自动操作
游戏附件:待审核头文件、全局变量以及函数声明#include <windows.h>#include <stdlib.h>#include <stdio.h>#include <conio.h>#include <time.h>#include <process.h>#include <math.h>...
2019-04-18 21:27:31
4610
2
原创 C/C++——控制台贪吃蛇的实现以及自动操作
头文件、全局变量以及函数声明#include <windows.h>#include <stdlib.h>#include <stdio.h>#include <conio.h>#include <time.h>#define INC(x) ((x)%30+1)#define DEC(x) (((x)+28)%30+1)C...
2019-04-18 21:09:36
2218
1
原创 算法——音乐播发器中考虑已听次数的随机播放算法
背景绝大多数音乐播放器的随机播放算法都采用洗牌算法(Shuffle),即将歌单中所有歌随机打乱顺序播放。但是考虑到用户在软件的使用过程中会不断往歌单中添加新的歌曲,在洗牌算法中无论新歌旧歌都会无差别地随机打乱,如此生成的随机列表没有照顾到用户想更多听新歌的想法。本文旨在提出能够在随机播放过程中考虑不同歌曲已听次数的随机播放算法。该算法应该有如下几条原则:已听次数越低的歌应有越高的几率被播放;...
2019-04-18 20:31:44
1422
原创 C/C++——超简陋钢琴的实现
#include<conio.h>#include<windows.h>#define M1 Beep(523,200);#define M2 Beep(587,200);#define M3 Beep(659,200);#define M4 Beep(698,200);#define M5 Beep(784,200);#define M6 Beep(880,...
2019-04-18 12:50:08
2934
1
C/C++——控制台俄罗斯方块的实现以及自动操作
2019-04-18
C/C++——控制台贪吃蛇的实现以及自动操作
2019-04-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人