自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 用AI实现狼人杀的游戏(有完整代码)

说实话,我不太会玩狼人杀,这些规则请教了好几个人,因此采用了最简单的9人局,三个狼人,一个猎人,一个女巫,一个预言家,三个平民,最简单的一种组队方式。角色的分配是程序随机进行分配的。狼人杀相比麻将,三国杀等游戏,具有更多维的随机性,涉及到人的心理,动作,语言,甚至一个表情等等,因此它不像麻将,三国杀那样,依靠传统的计算机程序就可以很好的模拟。值得一提的是,这个游戏还可以用作模型的推理能力的测评,不一定能定量的给出结果,但是可以通过变换大模型,然后各自玩上几把,就对不同的模型的推理能力有一个比较结果。

2024-09-20 10:46:43 228

原创 如何写一段AI创作短视频的程序

当前的AI擅长做什么,能做到什么程度,适合在什么地方应用,如果亲自实现一遍,还是可以带来更深刻的理解的。总起来讲,AI在程序中的应用带来了很多的可能性。一方面,它可以提升程序的效率,比如,在传统程序中,为了提高程序的适用范围和应用场景,往往是以增加代码量,降低效率为代价的,而AI的引入可能打破这种状况,比如,它可以针对特定场景动态生成代码,而不是将代码提前准备好。另一方面,它可以完成一些传统程序很难完成的任务。但是,拥有这些潜在好处的同时,必须要面对程序中被引入的“不确定性”。

2024-09-16 15:29:12 1294 4

原创 Python中做笛卡尔积,最好用生成器表达式进行遍历,而不要一下子强转成list

这样,在每次用到笛卡尔积结果中的一个元素时,才会运算得到这个结果,内存的问题得到解决。这是因为如果参与运算的入参数据量比较大(其实看起来也并不是很大,就像上面说的),你得到的list将可能是一个天文数字,即使是服务器几百个G的内存,也将瞬间被占满,程序将卡死在这里。第二点是,在对笛卡尔积进行运算得到结果以后,要找到合适的逻辑,避免遍历结果中的每一个元素,否则你的程序可能会跑上几个月也并不夸张。同样的道理,在其他语言中进行笛卡尔积时,也要注意,在数据量大的时候,不能一下子将结果全部生成出来存到内存中。

2023-08-22 17:42:23 442 1

原创 实现redis服务端的单步调试

由于采用的redis版本不同,里面的文件也有一些变化,所以需要大致了解cmake的基本语法,通过对工程的调试,找出相对于你的redis源码,多余的文件和缺失的文件,该删除的删除,该补充的补充进去就行了。比如,通过观察这个cmake文件,就能看出来,redis将所有的业务相关的文件都放到了src下面,并且没有将头文件和实现文件分开放。当调试的时候,找到main函数,它在server.cpp(keydb里面有一部分是C++代码,所以这里是CPP文件,在纯的redis中,应该是server.c)的最下面。

2023-08-15 16:16:35 314 1

原创 机器学习的数学-分类

文中来自立石贤吾《白话机器学习的数学》的学习总结。

2022-12-22 13:16:56 383 1

原创 在C++中使用SCIP求解器

在C/C++中调用SCIP接口

2022-12-21 17:40:35 2845

原创 windows下安装scip和pyscipopt

windows下安装scip和pyscipopt

2022-12-21 15:34:04 3566

原创 机器学习的数学-回归

对机器学习中回归的一些概念及用到的数学知识的讲解

2022-12-11 10:14:45 278

原创 SQL语句快速学习

​本文来自本·福达的《SQL必知必会(第5版)》的学习总结。如果之前学习过SQL相关知识,这篇文档将很有用。

2022-07-10 13:04:00 2232

原创 里氏替换原则

在决定是否需要用继承的方法来解决一个问题的时候,里氏替换原则可能会给出一些指导。

2022-05-23 12:29:49 252

原创 Java调用Python

Java调用Python的一种实现方式

2022-04-21 15:28:21 3787 10

原创 JNI实现Java调用C/C++代码及对C/C++动态库的单步调试

JNI标准作为Java平台的一部分,提供了与编译型语言进行交互的手段,尤其是对C/C++的交互。如果你有一段现成的C/C++代码想在java中调用,就可以通过JNI来完成。假如有一段C代码,这段代码如下:int say_hello(){ printf("Hello world!\n"); return 0;}如果想在java中实现这段代码的调用,打印出“Hello world!“,该如何做呢?如何实现对C/C++代码实现单步调试呢?一、新建一个java工程我使用

2022-03-19 18:09:03 3919

原创 一个理解python执行过程的新视角

我曾经人云亦云的学到一句话:“程序员不应该局限于某种编程语言”,并奉为圭臬,现在想来惭愧。这句话在某些时候的确有一定的道理,但绝对不应该被不分情况的肆意宣扬。这句话最常在需要忽悠人的场合被提及,以展示自己已经厉害到看山不是山,一览众山小的境界。而对一位需要亲自敲代码的一线程序员说这句话,相当不负责任。如果有人在做一个互联网前端的项目时打算用C语言实现,去问他的项目经理,他可能首先会疑惑为什么会有这么蠢的想法。而这位项目经理很可能曾经在某次给大家的培训或演讲中提到:优秀的程序员不应该局限于某种特定语言

2022-03-03 11:32:23 852

原创 Python的运行加速:C究竟比python快在哪

最近在做Python语言运行的加速,python的加速过程绕不开Python与C/C++的交互问题。但方式各式各样,我先后接触了ctypes,pybind11,cython等各种方式,各有千秋,适用于不同场合。但cython的使用最能领略到C到底会比python快在哪。用cython加速python的原因大致可以归结为两个:将运行时解释变为提前编译; 将动态类型变为静态类型。运行时解释与提前编译的差异这一步的优化从网上搜集的资料和我实际的操作看,都是能够提高10%到30%的速度。这其实跟

2022-02-28 09:15:51 2290

原创 通过C++实现对python的加速一定会遇到的几个问题

一、Pybind11,将数据从python传递到C++的两种方式:加“壳”,能在C++中进行操作,但是不发生数据拷贝,底层的存储方式还是按照python的方式; 数据类型转换,从python中的存储方式,直接转换成C++中的数据类型,发生数据拷贝,效率较低,尤其是在数据量比较大的情况下,这种转换的代价很高。这一点非常值得关注,当Python中考虑调用C++接口时,大多情况下都是为了提高程序的运行速率(有时候可能是为了能够调用C++的库)。因此,通过以上哪一种方式传递数据需要衡量。如果你有现成的C

2022-02-11 15:26:33 2513

原创 pybind11的应用

Pybind实现了python对C++接口的调用,在一些处理上,C++的速度会比python更有优势,并且一些C++的库如果想在python中调用,也可以通过这种方式进行封装来实现,比如pybind就很好的实现了对矩阵处理库eigen的支持。一、获取、安装pybind11是一个开源项目,在github上你可以找到它。拿到这个代码后,下面是代码的结构。它是轻量级的库,只包含头文件,你可以在include文件夹中找到所有的正式代码,在应用的时候只要包含编译这里面的所有文件既可。其他文件包括一些工具、

2022-01-26 22:33:07 3257

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除