- 博客(67)
- 资源 (10)
- 问答 (2)
- 收藏
- 关注
原创 外部访问C++类的私有方法和私有变量
我们知道,C++类私有方法和变量是不允许通过类实例直接访问的,这样子的操作会导致编译报错。但有没有方法访问到呢?有的。首先,我们需要知道C++和C语言本质上是没有什么区别的,C++只是语法层面上对C语言的封装。所有C函数,只要有声明和定义,那就可以使用,不存在public和private的区分。C++的public, private和protected限定的作用只在于编译期,当我们进入到运行期的时候,就无所谓public/private/protected了。然后我们知道,函数都是保存在代码段的,那么C
2021-03-11 14:55:01
1743
原创 win10右键卡死
win10文件夹卡死解决方案现象当右键点击文件夹时,就开始转圈圈,转很久之后才能把右键菜单弹出来。原因右键菜单中某个条目对应软件设计不合理,导致打开右键菜单要花费很长时间。理论上只需要卸载掉该软件或者右键菜单禁止该条目功能就可以解决问题。解决步骤下载shexview访问http://www.nirsoft.net/utils/shexview.html,点击"Download ShellExView for x64",下载并解压即可。管理员权限打开shexview.exeOpti
2020-10-16 15:20:00
1136
1
原创 将金额使用汉字表示
将金额使用汉字表示#include <iostream>#include <sstream>int main(){ double money = 0; char* chnNums[] = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; char* chnUnits[] = {"亿", ...
2020-01-10 18:17:15
509
原创 计算正整数中1的数目
这是从编程之美上看到的一道题,简述题目内容如下:给定正整数N,计算出从1到N的所有数字的十进制表示中出现1的次数,并找出能够满足f(N)==N的最大的N值。比如f(12) = 5, 因为存在的数字有:1,10,11,12,总共五个1。1. 寻找1出现的次数暴力方法最简单的方法是将N个数全部遍历一遍,对每个数计算出其中1的个数,然后累加。具体代码如下:func f(N uint) uint...
2019-10-22 14:49:15
500
原创 GO bufio解读
Reader// Reader implements buffering for an io.Reader object.type Reader struct { buf []byte rd io.Reader // reader provided by the client r, w int // buf read and write posi...
2019-09-12 11:16:44
457
原创 Go语言 strings包
Go标准库中strings包的methods如下,加*的函数会描述用法func Count(s, substr string) intfunc Contains(s, substr string) bool func ContainsAny(s, chars string) bool ...
2019-09-10 17:02:40
714
原创 Pyinstaller使用笔记
首先需要使用以下命令生成spec文件:pyi-makespec main.py ## 生成main.spec打开生成main.spec文件,详解如下:# -*- mode: python ; coding: utf-8 -*-block_cipher = Nonea = Analysis(['src\\main.py'], ### 工程入口文件 ...
2019-09-03 16:09:02
1129
原创 C++11 std::bind
#include <functional>std::bind的作用是为已经存在的一个函数绑定参数,并返回一个新的函数对象。对于一个普通函数,如下:int add(int a, int b){ return a + b;}假设有一种场景,我们需要计算任意一个数与12相加的和,要求调用这个函数。我们可以做如下处理:std::function<int(int)...
2019-08-29 21:43:48
415
原创 段页式存储管理
分段存储管理在分段存储管理方式中,每个进程的地址空间被分为若干个地址连续的段。每个段是一个完整的逻辑信息单元,故而分段式存储管理能更加轻易实现共享。操作系统将每个段离散地加载到各个分区中。如图:分段存储方式地逻辑地址表示如下:段页式存储管理分页系统能更加高效地利用主存,分段系统能更轻易实现共享,通过将二者结合,系统就能兼具二者优点。段页式系统是先将进程地址空间分为若干段,然后在段内...
2019-08-22 13:53:16
1716
原创 分页存储管理
在使用分区存储管理时,如果系统不能为进程找到一块连续的足够大的分区,就需要进行分区靠拢操作,非常耗费系统时间。分页存储管理是指,将系统内存物理地址空间分为若干大小固定的块(页框或物理块),将进程的逻辑地址空间也分为相同大小的若干页,系统通过为每一个进程维护一张页表来寻找对应的物理地址。采用分页存储管理后,进程的逻辑地址组成如下:而页表的内容则是页号与物理块的映射,如图:如果进程中的逻辑地...
2019-08-21 13:42:11
574
原创 分区存储管理
分区存储管理是一种很早期的内存管理方案,其基本思想是将内存区域划分为多个区,给每个作业分配一个区使用,并且每个作业只能在被分配的区中运行。按照划分方式不同,主要有三种不同的分区方式:固定分区,可变分区,重定位分区固定分区固定分区是指当程序载入时,系统为程序选择一个大小最接近作业大小的分区。如上图所示,新作业大小与分区3接近,故而新作业将被加载到分区3中。由于每个作业大小不一定能恰好等于...
2019-08-20 14:26:42
4515
原创 Python实现状态机
对于一个状态机,最基本的要素就是状态和事件,所以根据这个思路,我们可以设计一个具备基本功能的状态机。以看碟片为例,DVD的状态包含:已开机,正在播放,正在暂停,已关机。而触发这些状态的事件有:遥控开机,遥控播放,遥控暂停,遥控关机。所以画一个状态转换表如下:首先,设计状态基类。class FsmState: def enter(self, event, fsm): ## 参数ev...
2019-08-13 16:14:20
6487
5
原创 Cocos creator 发布android应用
cocos creator v2.1.1NDK 20.0.5594570android sdk API level 29gradle-4.10.3环境变量设置GRADLE_USER_HOME(这个是必须的,路径一般是C:\Users<username>.gradle), ANDROID_SDK_ROOT, GRADLE_ROOT设置原生开发环境项目发布这一步时,由...
2019-07-11 14:23:56
386
原创 生成器与协程
操作系统会为每个函数分配一个栈帧,但是对于python中生成器所在函数,其栈帧是分配在堆上面的,所以其函数运行状态能够一值保存。此即生成器实现原理。做个实验,打印生成器函数地址和普通函数地址def yieldFunc(): for i in range(5): yield idef normalFunc1(): for i in range(4, 5): ...
2019-06-05 16:28:53
551
原创 使用python调用高德地图的web服务
在使用高德地图的web 服务之前,需要先注册为高德开发者 https://lbs.amap.com/api/webservice/summary/注册完毕后,进入控制台可以看到如下界面:点击“应用管理–>我的应用–>创建新应用”创建完毕之后,点击加号(添加key)有了key之后,就可以使用高德提供的web服务了以高德提供的“行政区查询”功能为例,首先我们访问 https:...
2019-05-06 02:52:21
2329
原创 C++ mutable关键字
对于一个类而言,类的成员发生变化,并不意味着这个类在语义上发生变化。比如:class Website{public: void readPage() const { // show this page ++visitorNum; // 改变访问者数量,并不意味着这个网站发生了变化 }private: m...
2019-05-05 12:52:52
321
原创 C++利用虚表指针访问类私有函数
一、C++虚表指针编译器在编译时为每一个含有虚函数的类都会创建一个一维虚函数表,不同编译器实现细节可能不同类中虚函数的地址在虚函数表中按照顺序排列类的虚表指针就指向类的虚函数表,一般情况下,虚表指针存放在类实例的头部类的虚函数表可以继承类对象的虚表指针是在类初始化时初始化的,这也就是多态实现的原理二、使用虚函数表获得类的私有函数#include <iostream>#i...
2019-04-26 12:43:50
682
原创 cmake+mingw构建java工程
这里使用最简单的HelloWorld工程来介绍怎么使用cmake和mingw来创建JAVA工程PRECONDITIONJDK已经配置好cmake已经安装mingw已经安装工程文件结构HelloWorld|–build|–CMakeLists.txt|–src|----HelloWorld.javaWrite CMakeLists.txt具体代码如下:cmake_m...
2019-01-17 23:52:42
1220
原创 顺时针打印矩阵
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
2016-10-05 17:52:10
456
原创 调整数组顺序使奇数位于偶数前面
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
2016-10-05 17:31:48
346
原创 变态跳台阶
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。好的吧,实际上我并没有看出这道题和上一道跳台阶有什么本质上的差别,对我们而言,这就是一个加强版的斐波那契,原理上没有一丝不同。贴码如下:int jumpFloorII(int number) { if(number < 0) return 0; if(number ==
2016-10-05 17:21:25
367
原创 根据先序遍历序列和中序遍历序列重建二叉树
其实这个题是很有趣的,我在学习二叉树的时候,先序遍历、中序遍历、后续遍历,歘歘歘几行代码就递归完了,但是却没考虑过如果得到了遍历序列后通过遍历序列将二叉树还原。后来就做各种笔试题,然后就碰到了这个问题:根据先序遍历序列和中序遍历序列重建二叉树,yeah,不错,《剑指offer》上面的题。
2016-10-05 15:44:00
999
原创 区间重合判断问题
区间重合判断问题问题描述:给定一个区间[x,y]和N个无序的目标区间[x1,y1][x2,y2]…[xn,yn],判断源区间[x,y]是不是在目标区间内(即判断[x,y]属于目标区间的并集是否成立)。详细题目:《编程之美》章节2.19
2016-09-07 22:40:00
889
原创 中国象棋将帅问题
在《编程之美》中,作者给出了三种解法,我的解法与那三种解法相比没有性能优点,唯一的优点在于利用了十六进制的特殊性,使结果打印不需要进行转换,可以直接对应棋盘上的位置。/* * 棋盘参见《编程之美》1.2节,将帅和将的所有可能出现的位置打印出来 * 要求: 只用一个字节存储变量 * StoryMonster 2016/7/15 */
2016-07-16 12:36:03
585
原创 使程序占用CPU稳定在一个输入值(linux系统)
《编程之美》是基于windows系统的,而我使用的是ubuntu,所以在完成这道题的时候使用的是linux系统 1. top–>查询当前cpu运行状态 2. cat /proc/cpuinfo –>主机的cpu信息/* * 编程改变cpu占用率 * StoryMonster 2016/7/15 */
2016-07-16 12:27:30
488
原创 孪生素数
/* * 求1000以内的孪生素数。孪生素数:若a为素数,且a+2也是素数,则素数a和a+2称为孪生素数 * StoryMonster 2016/7/12 */
2016-07-16 12:20:40
1143
python写的小型搜索引擎
2016-12-29
python 搜索引擎
2016-12-29
教务管理系统(Python)
2016-10-17
Window操作系统为进程分配堆内存的问题
2016-10-21
C++使用pthread_create创建线程报错
2016-07-04
TA创建的收藏夹 TA关注的收藏夹
TA关注的人