自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

贝贝的博客

主要记录C,C++,Java,数据结构和算法的学习经验和总结

  • 博客(49)
  • 收藏
  • 关注

原创 python3.9+wxPython设计的一个简单的计算器

键盘布局与逻辑分离,添加删除功能一般功能或修改键盘布局只需要更改词典的顺序即可。添加特殊功能时则需要将队对应的逻辑也写一下。运行环境:python3.9+wxPython4.2.1。按下R键,保留两位小数。

2024-08-14 22:00:45 419

原创 魔兽世界(WOW)诺莫瑞根卡片任务链ASCII码解码(python)

彩色穿孔卡片上的编码: Message to Castpipe: your laundy’s ready for pickup.红色穿孔卡片上的编码: Help!白色卡片上的编码: Thrall and Jaina sitting in a tree, K-I-S-S-I-N-G。C机器上的编码: Recipe: Mechanical Chicken Soup。B机器完成后的编码: The Lich King lives!B机器上的编码: Gnomercy!

2023-06-08 19:19:31 1018

原创 基于有限状态机的身份证合法性检测程序(C语言)

这里的状态是当前字符的位置,读入后续字符©便是触发事件,F1-F5是五种出错状态,S是检测通过的状态。最后一位可以是字符X。

2023-04-01 16:12:59 312

原创 win10 环境变量及其作用大全

PROCESSOR_ARCHITECTURE: AMD64processor architecture解释: PROCESSOR_ARCHITECTURE 是一个 Windows 系统环境变量,它指示当前系统中运行的处理器的体系结构。如果该变量的值是 AMD64,则说明当前系统中的处理器是基于 x86-64 或 AMD64 体系结构的。 x86-64 是一种 64 位处理器架构,它是向后兼容的 x86 架构的一种扩展。AMD64 是 AMD 公司首先实现的 x86-64 架构,因此在一

2023-02-20 17:53:12 6508

原创 Mixing Heavyweight and Lightweight Components(Java awt 重量级组件与轻量级组件)

Mixing Heavyweight and Lightweight Components

2023-02-15 15:25:28 163

原创 快速排序的递归实现和非递归实现

一、快速排序的递归实现快速排序的思想是每次找到一个元素的位置,再在以这个元素分隔的两个子范围中分别再各自确定一个元素的位置,子子范围也是如此操作,当某个子范围只有一个元素或者没有元素时,便不再做任何操作。这是一个递归过程,递归退出的边界就是子范围中不存在元素或者只存在一个元素。基于这个思想,很容易便得到递归处理的代码:#include <cstdio>using namespace std;static void quickSort(int array[],int low,int

2021-02-19 22:34:30 2185

原创 SSM开发笔记-尚硅谷-佟刚-Spring4.0.0

1.Spring1.1 IOC控制反转,在Spring中的实现形式是依赖注入DI。例如,最直接的好处就是,假设一个人类对象有一个父亲对象,最初的话需要人类对象主动初始化父亲对象,而当父亲对象的构造方法发生变化后,人类对象也要做出改变,但是如果有了依赖注入,那么父亲类无论怎么该构造方法,都不需要人类做出修改,仅仅是在需要的时候注入即可。1.1.1 Spring核心包Spring的四个核心包:core、beans、context、expression日志包:commons-loggingappli

2021-01-13 18:15:12 576 1

原创 ISP结构图,根据计算机网络自顶向下画出

网络结构1网络结构2网络结构3网络结构4网络结构5

2021-01-09 21:39:26 425

原创 java多线程小例子——龟兔赛跑

一只兔子和一直乌龟进行赛跑,看谁先跑到100步。使用Thread.currentThread().isInterrupted()来判断当前线程是否被中断了。线程安全退出的代码范例为://如果当前线程没有被中断,则执行下面代码,当然也可以判断其他已存在的线程。if(!Thread.currentThread().isInterrupted()){ //自己可以使用Thread.currentThread().interrupt();方法来中断自己,当然也可以中断其他已存在的线程。 if(..

2020-12-30 00:57:42 446

原创 glibc2.32源码浅析 -- string.h(memcpy - 内存拷贝)

鉴于博主我是个汇编渣渣(底层逻辑是大佬们用汇编写的,淦),本文不是要深入探析memcpy的细节,而仅仅是在宏观层面上搞清楚这个函数的逻辑。如果有想搞清楚具体细节的友友们,我会在文章最下面贴上我写本文参考的文章,如果还想深入探究,最好是参阅书籍。函数原型:void *memcpy (void *dstpp, const void *srcpp, size_t len)函数作用:将srcpp指向内存的后面len个字节拷贝 到 以dstpp指向内存的后面len个字节中。既然是以字节为操作单位

2020-12-22 20:03:33 583

原创 glibc2.9源码分析 -- string.h(strncpy - 将一个字符串的前n个字符复制到另一个字符数组中)

这个函数的实现就是从头扫描源串,然后将前n个字符放入目标字符数组中。总体给人感觉是经过了深度优化的代码,主要有以下几点值得我们去学习:1.使用寄存器中间变量,提高运行效率。2.使用位移运算代替2的倍数的乘除运算,进一步提高运行效率。3.复制时循环体以4个字符为单位操作一次,减少小循环次数,又进一步提高运行效率。从源码的分析结果来看,这个函数在复制字符串的时候会做出以下几种行为:(设n代表要复制的字符数量。)1.源串的定义不是整个原始输入字符序列,而是原始输入字符序列中出现的第一个’\0’以及其

2020-12-21 01:07:53 1176

原创 glibc2.9源码分析 -- string.h(strcat - 连接两个字符串)

程序很短,程序的思路和我们平常写的是一样的,但是有些地方是经过了优化的,值得我们去学习。优化点1:中间变量使用寄存器变量,提高了程序运行效率。优化点2:最后一个循环巧妙地将最后地’\0’赋值给了目标串地尾部,不需要额外地语句再去管理最后的’\0’了。下面是加入了我思考的代码(英文部分是原作者的注释):#include <string.h>#include <memcopy.h>#undef strcat/* Append SRC on the end of DEST

2020-12-20 01:26:42 399 2

原创 PAT A1149 Dangerous Goods Packaging (25分)(C++)

实话实说,这个题目本身并不算是太难,主要考察散列表,题目的目标是获得更快的查找速度。下面博主就来说说我做这个题目的过程: 审完题,第一反应就是建立一个散列表来进行危险列表的存储,然后再逐个构建运输物品列表来进行判断。刚开始没有考虑到一个物品可以与多个物品发生反应,因此使用了一对一模式,结果错了一片,不过想想也是,于是就将对应模式改为了一对多,为了提高效率,map被我换成了一个大型数组,然后每个数组的元素是一个set。 列表建好了,就是核对每个运输列表是否合规了,首先使...

2020-11-22 00:58:45 342 1

原创 PAT A1104 Sum of Number Segments (20分)(果然20分的题目最可怕了-C++)

这个题目根本就不是一个编程题,硬说的话,当公务员考试的规律题还挺不错的。首先,我是把它当编程题做的,暴力求解,结果后两个点超时。然后,稍微优化了一下,修改成了二重循环,结果还是后面两个点超时。我陷入了沉思,这个题果然有坑,我想肯定有规律。于是我在草纸上列举了几个情况(为了方便就用1 2 3 4 5...代替了,题目中是不超过1的小数)。第一个例子输入41 2 3 4计算过程需要加的数字11 21 2 31 2 3 4 2 2 3 2 3 4 ...

2020-10-16 00:53:23 214 2

原创 PAT A1106 Lowest Price in Supply Chain (25分)(DFS另类解法)

首先说明一下,这个题目其实使用树的层序遍历或者图广度优先遍历是更好的解法。当然DFS加剪枝也是可以的。而下面这个是原始的DFS。它真的会不遗余力地遍历所有的分支。 但是,可能是由于PAT测试点的条件过于宽松,导致这种代码也全通了。 下面上代码(注意DFS过程中不能使用价格来进行判断,因为如果将经手利率设置为0,会导致输出所有的零售商,我第一次测试点4没过就是这么被坑了。)#define _CRT_SECURE_NO_WARNINGS#include &l...

2020-10-03 00:25:22 169

原创 C程序设计语言(第二版)习题5-9-使用指针访问二维数组

我们知道,二维数组是一维数组的数组的数组,因此如果我们想要使用指针访问二维数组中的某个元素,就需要首先找到这个元素属于二维数组中的哪一个一维数组,然后再确定这个元素在这个一维数组中的哪个位置即可,即如下形式: *(*(二维数组指针+行偏移)+列偏移)上面这个形式是和...

2020-09-23 21:57:33 479

原创 输出具有n个结点的所有不同的二叉树-增强前序遍历形式输出-C++

我们知道具有n个结点的不同的二叉树的数量是个(这是一个卡塔兰数),那么如何确定这些二叉树是什么样子的呢?下面是博主的思路: 我们还知道一个入栈序列的不同出栈序列的数量也是个,于是博主就想:这不是巧了么,既然他们的数量是一样的,而且均不相同,那么是不是可以构建一个映射,使得不同的出栈序列和不同的二叉树进行一一对应呢。 于是,在博主的做了深入的观察和思考后,发现对于其中一个出栈序列,其实和某个二叉树的中序遍历结果是相对应的,而经过进一步探索,发现入栈序列是所有...

2020-09-19 23:42:10 1068 1

原创 C程序设计语言(第二版)习题5-5-strncpy,strncat,strncmp-纯指针实现

GCC版本:gcc version 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)void strncpy(register char *s,register char *t,register size_t n){ register char *st=t; //从t头部数到t+n的位置 while(t!=st+n){ //如果t的长度小于n,则提前结束了 if(!(*s++=*t)){ return; } t++; } *s='\0'

2020-09-13 23:47:31 167

原创 C程序设计语言(第二版)习题5-4-strend-纯指针实现

编译gcc版本:4.4.6 20120305 (Red Hat 4.4.6-4) (GCC)int strend(char *s,char *t){ //获取s的长度 char *ss=s; while(*s++!='\0'); size_t s_len=s-ss-1; //获取t的长度 char *st=t; while(*t++!='\0'); size_t t_len=t-st-1; //如果t的长度大于s的长度,则直接返回0 if(t_len>s_len){

2020-09-13 18:33:19 311

原创 寻找 有向图/无向图 所有环路的DFS暴力求解法(ps:C++代码,复杂度爆炸警告,生产环境慎用)

思路:1、DFS算法可以求解图中从一点到另一点的全部路径。2、通过枚举所有顶点的邻接点,然后通过DFS寻找枚举点到的所有路径来寻找环路。3、思路很简单,但是算法复杂度确实是太高了。下面上代码:#include <iostream>#include <vector>#include <algorithm>using namespace std;const int M = 100;int n, e, G[M][M];bool vis[M]

2020-09-08 17:27:13 1742 2

原创 PAT A1087 All Roads Lead to Rome (30分)(迪杰斯特拉变体应用,梅开二度)

这里只说明关键部分。有三个优先级,由高到低分别是:距离、高兴值、平均高兴值。距离即是最普通的Dijkstra所求的目标。高兴值是点权变体之一。平均高兴值可化为求最短路径中的最少结点路径,也属于点权变体之一。在更新结果的代码中,优先级高的更新的结果要更多。所有优先级低的更新时必须保证比它更高优先级的结果是一致的。下面放代码:(PS,怎么感觉最近这么多Dijkstra。。。)#define _CRT_SECURE_NO_WARNINGS#include<iostre

2020-09-03 18:22:37 136

原创 PAT A1111 Online Map(迪杰斯特拉变体应用) (30分)

首先感谢柳神(她的题解)根据柳神的思路,我自己写了一遍,分了不同的模块。显得更加条理一些第一步,建图。第二步,使用加边权变体迪杰斯特拉算法求解最短路中的花费时间最少的路径。第三步,使用加点权变体迪杰斯特拉算法求解最快路中的经由结点最少的路径。第四步,递归方式找出路径。第五步,根据路径的结果以不同的形式输出。代码:#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<sstream>u

2020-08-29 15:17:32 161

原创 PAT A1099 Build A Binary Search Tree(二叉树遍历方式的考查) (30分)

思路:第一步:建树第二步:将输入的结点升序排序第三步:中序遍历树,依次填入排好序的结点第四步:层序遍历树,输出结果#include<algorithm>#include<iostream>#include<queue>using namespace std;const int M = 110;int n, nodes[M][3], v[M];void initTree() { cin >> n; for (int i =

2020-08-27 15:54:02 140

原创 idea中创建并使用自定义maven模板

1.为什么要进行自定义骨架?在使用idea进行maven开发项目时,发现每次新建一个maven项目之后,自带的骨架中都缺少目录和配置文件,每次都需要自己建包,修改文件夹状态。(很麻烦)2.自定义一个骨架1.前提:我们要新建一个maven项目,(建maven项目可参考上一篇)并添加目录,修改文件夹状态。pom.xml中导入所依赖的jar包。导入每次所需的配置文件,工具类。(看自己需求)...

2020-04-18 22:57:13 2685

原创 java-图的广度优先遍历(邻接矩阵和邻接表两种存储方式)

自从步入码农的行列,这种基础性的东西就敲得少了,今天和经理讨论算法的时候发现自己有些忘得差不多了,今天特地回来复习复习。于是费了自己一个小时时间,从度娘复习了原理,然后自己摸索着重新实现了一下这个算法。邻接矩阵:package com.zhangyanujie.graph.adjacency_matrix;import java.util.Arrays;import java.ut...

2020-03-27 23:38:05 819

原创 Spring MVC的ModelAndView、Model、ModelMap、RedirectAttributes的范围及关系分析

废话不多说,在Spring MVC中。1、ModelAndView类中有个类型为ModelMap的对象。2、ModelMap继承了LinkedHashMap<String,Object>,因此理论上可以保存任何类型的值。3、有一个类ExtendedModelMap继承了ModelMap并且实现了Model接口。4、还有一个类BindingAwareModelMap继承了...

2020-02-01 13:32:09 1728

原创 Java的函数式接口及使用示例

Java 1.8加入了lambda表达式,可以进行函数式编程了,这几天也一直在研究这个东西,从Java核心技术中得知java.util.function包中已经定义了许多常用的函数式接口。书中也列举了这个包下所有的接口,一共43个,有9个是通用接口,其余34个均为有关boolean、断言、提供int、long、double三者的值以及处理int、long、double三者之间值相互转换的一些接...

2019-11-03 10:51:11 2302

原创 GB2312编码表(全)-Java程序打印

不多说,需要了解GB2312编码表的组织方式的友友请转百度,下面直接上代码:package com.zhangyanjie;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io...

2019-08-21 16:14:33 1039

原创 16位DOS下的HelloWorld程序(带注释)

应广大喜欢的编程友友们对于helloworld程序的期盼,在这里给出DOS下16位汇编的helloworld代码,该代码可以在16位DOS实模式,32位下的虚拟8086模式下运行我知道有好多友友们想入门一门编程语言,第一个程序便是helloworld,可是我在网上却发现关于汇编的helloworld程序不是没有,而是太长,以及解释太少。下面,让我们看一看16位下helloworld汇编代码...

2019-03-09 14:23:50 1642

原创 Java之映射(map)

集是一个集合,它可以快速地查找现有的元素。但是,要查看一个元素,需要有要查找元素的精确副本。这不是一种非常通用的查找方式,因为在集合中查找元素总是要遍历集合。通常,我们知道某些键的信息,并想要查找与之对应的元素。映射(map)数据结构就是为此而设计的。映射用来存放键/值对。如果提供了键,就能够查找到值。它们之间是一一对应关系。1.基本映射操作:Java类库为映射提供了两个通用的实现:Has...

2018-06-06 21:23:48 50347 6

原创 Java之具体的集合

在Java类库的集合中,集合可以分为四个大种类,分别是列表(list),无重复元素列表(集合set),队列(queue),映射(map)。其中,前三种集合都实现了Collection接口,而映射实现了Map接口下面是这些集合的具体类以及他们之间的继承层次ArrayList:一种可以动态增长和缩减的索引序列LinkedList:一种可以在任何位置高效的插入的删除操作的有序序列ArrayDeque:一...

2018-05-26 21:29:43 237

原创 Java的集合框架

这篇博文主要介绍Java中集合是如何组织的(也就是Java集合在类库中的层次结构)Java集合框架概述:Java最初的版本只为最常用的数据结构提供了很少一组类:Vector,Stack,Hashtable,BitSet与Enumeration接口,其中Enumeration接口提供了一种用于访问任意容器中各个元素的抽象机制。后来Java1.2推出,类库设计人员推出了一组功能完善的数据结构,他们希望...

2018-05-21 16:59:08 249

原创 Java泛型程序设计之定义简单泛型类、泛型方法、以及类型变量的限定

1

2018-05-17 19:07:15 11113

原创 Java之异常

Java使用一种叫做“异常处理”的错误捕获机制处理程序可能出现的异常。这种处理机制的其实就是你抛我接,即当程序执行某个可能抛出异常的语句块时正好触发了异常,此时程序会把捕获到的异常“抛”出去并终止当前程序的执行,这个时候就会有专门的语句块“接”住这个异常,然后进行相应的处理。首先,先介绍一下异常到底是什么。通常来说,一个程序需要关注的异常可能包括以下几个方面:1)用户输入错误2)设备错误3)物理限...

2018-05-01 22:00:52 365

原创 java之内部类

内部类就是定义在另一个类中的类,使用内部类的理由主要有以下三点:1)内部类方法可以访问该类定义在作用域中的数据,包括私有数据。2)内部类可以对同一个包中的其他类隐藏起来。3)当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷。内部类根据定义的位置不同,可以分为四种,第一种就是普通的内部类,第二种是局部内部类,第三种是匿名内部类,第四种是静态内部类。这里只需强调一点即可,就是为了运行...

2018-04-29 11:33:38 208

原创 java的接口使用示例

下面给出接口使用的两个示例分别是:1)接口与回调2)Comparator接口首先是接口与回调:回调是一种常见的程序设计模式。在这种模式中,可以指出某个特定事件发生时应该采取的动作。在java.swing包中有一个Timer类,可以使用它在到达给定时间间隔时发出通告,调用传入到这个类中的另一个类的actionPerformed方法,当然,这个方法是接口ActionLisener中声明的,所以要想使用...

2018-04-27 13:38:49 2083

原创 java继承之枚举类型

有时候,变量的取值只在一个有限的集合内。这个时候就可以使用自定义枚举类型,枚举类型包括有限个命名的值。定义语法:访问修饰符 enum 名字 {列表}。实例化方法:枚举类名 变量名=枚举类名.列表中某一元素。例如:public enum Size {SMALL,MEDIUM,LARGE,EXTRA_LARGE};其实,这个声明定义的类型是一个类,它刚好有4个实例,在比较两个枚举对象的值时,可以使用"...

2018-04-25 12:14:09 10212

原创 java继承之对象包装器与自动装箱

有时候,我们需要将基本类型的数据转换为一个类来使用,例如ArrayList&lt;int&gt;是不被允许的,因为&lt;&gt;中必须使用类名作为参数,这个时候就需要对象包装器,可以将ArrayList&lt;int&gt;定义为ArrayList&lt;Integer&gt;。这些包装器都具有明显的名字:Integer,Long,Float,Double,Short,Byte,Characte...

2018-04-24 20:47:36 189

原创 java继承之Object类

Object类是Java中所有类的始祖,Java中的每一个类都是由它扩展而来,但是并不需要明确写出要继承它。根据前面讲的多态,这就意味着所有的类都可以使用Object类去引用。这里说明一下Object类中的方法Object类总共包括11个方法分别是:protected Object clone();boolean equals(Object obj);protected void finalize...

2018-04-24 20:02:50 1689

原创 java继承之类、超类和子类

继承其实在生活中到处都是例子,比如哪个富豪去世了,然后他的子女继承了他的财产啊,或者是有人说你跟你爸或者你妈长得像等等,,都是继承,而在java中的继承,其实是为了减少代码的数量,而重复使用了其上一个类的域(其实就是代码)。所以说继承可以提高代码的重用性,使代码的编码效率得到提高。说了这么多,相信大家已经知道了继承是什么意思了,于是下面就来演示如何定义和使用继承。呃。。。首先给个博文的主要内容吧首...

2018-04-23 22:54:24 5109

Ubuntu下的x86-64汇编(x86-64 Assembly Language with Ubuntu)

《x86-64汇编与系统编程:Ubuntu实战指南》 你是否对计算机的内部世界充满好奇,想要一窥处理器如何执行命令、操作系统如何运作?那么,这本书将是你的钥匙,带你进入这神秘而迷人的领域! 《x86-64汇编与系统编程:Ubuntu实战指南》是一本专为大学级别的汇编语言和系统编程课程设计的实用教材。通过深度剖析x86-64指令集,本书让读者了解并掌握这一主流处理器架构的核心原理。更重要的是,所有示例和代码都是在Ubuntu 64位操作系统上进行的,确保你所学即所用,无需担心理论与实践的脱节。 本书不仅仅是一本教材,更是一本实战指南。你将跟随作者的步伐,从零开始,逐步掌握汇编语言编程和系统编程的精髓。无论你是计算机专业的学生,还是对底层技术充满热情的开发者,这本书都将为你提供宝贵的指导和启示。 走进《x86-64汇编与系统编程:Ubuntu实战指南》,你将开启一段精彩绝伦的编程之旅,探索计算机世界的无限可能!

2024-02-07

Java基础课件和作业合集(有答案)+一个小型资产管理项目

一、基础巩固,无忧启程 你是否为Java的入门感到困惑?我们的Java基础作业合集,就是你步入编程世界的最佳引路人。这份合集精心挑选了一系列基础题目,旨在帮助初学者逐步掌握Java的核心概念和编程技巧。更重要的是,每道题目都配备了详尽的答案解析,让你在学习的道路上不再迷茫。 二、实战演练,技能进阶 想要检验自己的学习成果,并在实战中锻炼自己的编程技能吗?我们为你准备了一个小型资产管理项目。这个项目将让你在实际开发中,应用所学知识,实现功能完备的资产管理系统。通过这个项目,你将深刻体会到Java编程的魅力和实用性。 三、双重身份,满足多重需求 无论你是刚入门的小白,渴望通过练习巩固基础、提升技能;还是作为老师,需要一份合适的教学素材来辅导学生,这份资料都能满足你的需求。它既可以作为你的自学指南,也可以作为课堂上的教学辅助,让Java编程的学习变得更加轻松有趣。 现在,就让我们一起踏上这趟精彩绝伦的Java编程之旅吧!!!

2024-02-07

macOS内核darwin的开源项目

macOS内核darwin的开源项目。基于UNIX开发。最新源码参考:https://github.com/apple/darwin-xnu,如需传播,请注意开源协议规定。

2022-10-30

空空如也

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

TA关注的人

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