植物大战僵尸

2020 年 4 月全国程序员工资出炉!

為{幸葍}努か 提交于 2021-02-20 13:48:45
点击上方 Java后端 ,选择 设为星标 优质文章,及时送达 看到脉脉上一网友分享程序员4月份工资,平均工资竟达到14120! 网友:“这头发掉的值” 工资趋势 工资分布: 2020年中国一线城市程序员的平均工资为 16285 元,工资中位数为 14583 元,其中95%的人的工资位于 5000 到 20000 元之间。 和往年数据比较: 其中 北京的平均工资为 18048 ,中位数为 15000 。 上海的平均工资为 16653 ,中位数为 15000 。 广州的平均工资为 13831 ,中位数为 12500 。 深圳的平均工资为 16488 ,中位数为 15000 。 工作经验 数据显示,工资会随着工作经验的增长而增长。 职位 和2019年相比,算法工程师的比例从8%提高到了10%。 公司性质 公司很重要,选择一个什么样的公司,决定了工资高低。 由上数据可知,欧美外企的工资显著高于其他企业。所以,童鞋们要努力学好英语呀! 公司规模 公司越大,工资会越高。 行业 金融业果然名不虚传,有钱! 话说你拖后腿了吗? *数据来源:有数可据 https://blog.csdn.net/juwikuang/article/details/103840385 https://blog.csdn.net/juwikuang/article/details/104643366 -END-

网络架构及其演变过程

瘦欲@ 提交于 2020-12-30 06:51:00
一、单机架构 应用领域: 植物大战僵尸 office 二、CS架构 应用领域: QQ 大型网络游戏 计算机发展初期用户去取数据,直接就去主机拿,从这里开始就分出了客户端和服务端。 客户端:用户安装的软件; 服务端:统一管理数据库的主机中的软件就叫做服务端,再后来服务端不只是管理数据,外加处理业务逻辑。 2.1 CS架构要求 用户操作系统安装客户端;产商操作系统部署服务端 每个用户需要独立安装软件、服务端升级也要每个用户升级 2.2 面试题:数据放在服务端和客户端的利与弊? 答: 服务端统一处理有更好的安全性和稳定性而且升级比较容易,不过服务器负担就增加了。 客户端将负担分配到每个用户,从而可以节约服务器资源,安全性和稳定性可能会有一定的问题,但是升级比较麻烦,每个安装的客户端程序都需要升级,另外为了节省网络资源,通过网络传输的数据应该尽量减少! 三、BS架构 应用领域: 淘宝 京东 统一客户端即默认安装用户电脑中的浏览器,访问同种类的网站,具体业务的处理根据相应协议和标准提供通用的服务器程序,在不同的服务器处理。 3.1 两种BS架构 OSI主要用于教学(万恶的大学、绿本的计算机书),我们在编程的时候用的都是TCP/IP。 TCP/IP的对应关系,就像我们在淘宝购物,所在位置有的快递(网络接入层),告诉卖家地址(网络互联层)、快递送货(运输层)、收到货物拆包使用(应用层)。 注意:

[系统安全] 五.OllyDbg和Cheat Engine工具逆向分析植物大战僵尸游戏

假装没事ソ 提交于 2020-12-24 07:49:16
您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更加聚焦,更加系统,更加深入,也是作者的慢慢成长史。换专业确实挺难的,逆向分析也是块硬骨头,但我也试试,看看自己未来四年究竟能将它学到什么程度,漫漫长征路,偏向虎山行。享受过程,一起加油~ 系统安全系列作者将深入研究恶意样本分析、逆向分析、攻防实战和Windows漏洞利用等,通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步。前文普及了OllyDbg的基础用法和CrakeMe案例;这篇文章将详细讲解OllyDbg和Cheat Engine工具逆向分析用法,完成植物大战僵尸的游戏辅助器,包括修改阳光值和自动拾取阳光两个功能,希望对入门的同学有帮助。 话不多说,让我们开始新的征程吧!您的点赞、评论、收藏将是对我最大的支持,感恩安全路上一路前行,如果有写得不好的地方,可以联系我修改。基础性文章,希望对您有所帮助,作者的目的是与安全人共同进步,加油~ 文章目录 一.VS内存地址查看 二.Cheat Engine逆向修改阳光值 三.OllyDbg逆向自动拾取阳光 四.总结及学习推荐 作者的github资源: 系统安全: https:/

植物大战僵尸辅助

心不动则不痛 提交于 2020-12-04 19:19:33
以前的记录,发到这里吧。 孩子一直迷恋植物大战僵尸这款游戏,从一开始的水平不行,到后来经常看植物大战僵尸的过关视频来提升自己的游戏水平,到现在游戏是玩的越来越好了,至少感觉植物大战僵尸这个游戏水平比我强很多。 后来为了能让孩子在游戏里学到些知识,拿出 CE 教孩子改阳光,他不但学会了改阳光,还自己修改了金币(关键是学会用百度了),玩的更 High 了。 为了希望他能进一步的在游戏中能够学习到知识,我为他写了一个简单的修改阳光和种植植物后免冷却时间的辅助工具。 修改阳光 阳光可以通过 CE 逐步的查找基址,首先通过 ReadProcessMemory 函数将 CE 获取到的阳光地址找到,然后通过 WriteProcessMemory 函数将修改的阳光值写入即可。 #define SUN_VALUE_ADDRESS 0x007794f8 // 阳光基址 // 通过窗口名查找句柄 HWND hGameWnd = NULL; hGameWnd = FindWindow(NULL, _T("Plants vs. Zombies GOTY "))->GetSafeHwnd(); // 根据窗口句柄获得进程ID DWORD dwPid = 0; DWORD dwTid = 0; dwTid = GetWindowThreadProcessId(hGameWnd, &dwPid); // 打开进程

Python开发《植物大战僵尸》我在Github上找到开源的

|▌冷眼眸甩不掉的悲伤 提交于 2020-12-02 06:01:06
来自:开源最前线(ID:OpenSourceTop) 项目地址:https://github.com/marblexu/PythonPlantsVsZombies “歪比歪比?歪比巴卜!” 《植物大战僵尸》这个音效不知道是多少人的童年,这款游戏诞生已经十几年了,《植物大战僵尸》这款游戏还是频频出现在各路主播的屏幕上,不厌其烦。 最近,猿妹在Github上看到有人用Python实现了《植物大战僵尸》游戏,并开源了,这个项目使用 Python 将这个塔防游戏重新复现了一遍,尽管暂时没有把所有要素都复现出来——目前只实现了部分植物和僵尸以及白天黑夜关卡而已,但足够勾起一波回忆杀。 PythonPlantsVsZombies功能实现如下: 支持的植物类型: 太阳花,豌豆射手,寒冰射手,坚果,樱桃炸弹。新增加植物:双重豌豆射手,三重豌豆射手,食人花 ,小喷菇,土豆地雷,倭瓜。 支持的僵尸类型: 普通僵尸,旗子僵尸,路障僵尸,铁桶僵尸。新增加读报僵尸。 使用json文件保存关卡信息 ,设置僵尸出现的时间和位置。 如果想尝试一下这个游戏,你首先需要安装Python 3.7,然后克隆项目源代码,最后启动项目,就可以愉快的玩耍了~~ 游戏演示界面如下: 除了玩游戏,如果你是一个Python初学者,并且对小游戏编程感兴趣,通过这个项目你可以学到许多面向对象程序设计知识。 目前

c语言----实战植物大战僵尸

帅比萌擦擦* 提交于 2020-11-22 04:03:55
1. 原理   通过指针先找到阳光的地址,然后修改地址对应的值即修改阳光值。 2. 工具   CheatEngine --- 查询进程中变量的地址   Dll注入工具 ----- 注入   VS2017 3. 实战   (1) 现在阳光地址为50,收集一个阳光后变为75   (2) 打开CheatEngine 点击file -> open process -> 找到植物大战僵尸 Plant vsZombies     (3) 将现在的阳光值75(你的可以是其他的数字)输入进去 ->点击first scan (or new scan)        (4) 消耗一次阳光,现在我的阳光值为25     (5)将现在的阳光值25再次输入进去,点击next scan,现在找到了一个唯一的变量地址 --- 阳光  也就是说对于数据地址的查找,基本两次就可以确定其地址(如果还是有多个地址,多次改变阳光的值,直到只有一个地址)     (6) 打开VS2017,创建一个新项目,并且将项目的类型设为dll _declspec(dllexport) void go(){ int *p = 0x20EEE160 ; //刚刚查询到的变量地址 if (*p< 100 ){ *p += 99 ; //如果阳光值小于100 加99个阳光 } }     (7) 生成解决方案     (8)打开dll注入工具

计蒜客 程序设计:植物大战僵尸

强颜欢笑 提交于 2020-10-07 09:55:18
1000ms 262144K 植物大战僵尸为近来很火的一款游戏。而这一次我们不一样,我们要提前养成植物然后来抵抗僵尸。 你的 nn 个植物已经从左到右排成了一排,编号从 11 到 nn,起始的时候,他们的防御都是 00,而你的任务就是来提高他们的防御。 你一共有 mm 天的时间进行备战,起始你在整个植物的最左边,每天你 必须 向左或向右移动一格,到达第 ii 棵植物的时候,你给这个植物增加 a_iai​ 点的防御。 众所周知,根据木桶原理,整排植物的防御取决于最低防御的一棵植物,你想让 mm 天以后的整排植物的防御力最高,请问最高能是多少呢? 输入格式 输入数据第一行包含以空格隔开的两个整数 n,mn,m,分别表示植物总数和你的备战天数。 第二行包含以空格隔开的 nn 个整数 a_1.a_2,\cdots,a_na1​.a2​,⋯,an​,表示每次一个植物可以增加的防御力。 输出格式 输出文件共一行包括一个整数,表示整排植物可以达到的最大防御力。 数据范围 # nn mm a_iai​ 1\sim31∼3 2\leq n \leq 102≤n≤10 0 \leq m \leq 200≤m≤20 1\leq a_i \leq 10^51≤ai​≤105 4\sim64∼6 2 \leq n \leq 1002≤n≤100 0 \leq m \leq 1,0000≤m≤1,000 1

Scratch编程技巧之「停止脚本执行」积木用法

…衆ロ難τιáo~ 提交于 2020-08-15 14:02:23
一、说明 Scratch在[控制]类积木下有一种积木称为[停止脚本执行],如图所示: 如上图所示,共有三种应用情形。 (1)停止(全部脚本):终止整个程序执行,彻底退出程序; (2)停止(这个脚本):终止这个角色对应的当前代码组(本积木所在代码组)的执行,而不影响当前角色其他代码组的执行; (3)停止(该角色的其他脚本):终止执行这个角色其他代码组的执行,而不影响当前代码组(本积木所在代码组)的执行。 在实际应用中,我们不仅要关注这个积木各个命令本身,还要观察此积木的形状。细心的小程序员会注意到,在情形(1)和(2)时,这个积木底部是平面的,意即此时后面不能再接续其他积木代码了! 但是,在情形(3)时,这个积木底部变成凹形,意即此时后面可以再接续其他积木代码!这是基于实际程序开发中的需求,Scratch开发人员作出的明智决定,参考下图。 下面例子给出了此积木的典型应用: 上面两组代码是应用于某一个程序的舞台角色上。左边代码的含义是在通常情况下,开始运行程序后,连续地播放舞台背景音效。 右边的含义:当舞台收到“end”消息时会通过调用上面的积木块(情形3)硬性结束舞台背景音效的播放(可能很长),然后开始播放另一段指定音效。 二、有关使用技巧 在情形(2)时,简单情况下,此功能意思是结束当前代码组的执行。但是,在有些复杂的开发中(实际应用软件开发需求是各种各样的)

用Java写一个植物大战僵尸简易版!

谁说胖子不能爱 提交于 2020-08-11 03:28:07
Python实战社群 Java实战社群 长按识别下方二维码, 按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群 ▲ 作者丨林Lychee 来源丨 https://blog.csdn.net/weixin_43776741/article/details/88924146 有谁没玩过植物大战僵尸吗?用Java语言开发了自己的植物大战僵尸游戏。虽然系统相对简单,但是麻雀虽小五脏俱全,对游戏开发感兴趣的小伙伴可以学习一下。 游戏设计 植物大战僵尸中有一个小游戏关卡,屏幕的正上方有一个滚轮机,会随机生成植物,玩家可以选中植物后自由选择草坪来进行安放。基于此游戏模式,我将该关卡抽取出来,单独做成了一个简易版的植物大战僵尸。游戏的画面大概如下: 屏幕左侧会自动生成植物的卡牌,单击选中后可以放置在草坪上。右侧会自动生成僵尸,不同的僵尸移动速度不同,血量不同,还有的僵尸有隐藏奖励,比如:全屏僵尸静止、全屏僵尸死亡等。当时竟然没有做游戏的暂停的功能,导致现在截图的时机很难把控,那这里就先说一下游戏暂停的功能应该怎么做吧。 最简单的一种暂停方式是鼠标移出屏幕,游戏暂停。所以这里需要引入一个鼠标监听器事件。 public void mouseMoved(MouseEvent e) { // 当游戏处于运行状态时 if (status == start) { //

java创建多线程&创建进程

梦想的初衷 提交于 2020-08-04 17:51:52
概述 并发和并行 是即相似又有区别: 并行:指两个或多个事件在同一时刻发生; 并发:指两个或多个事件在同一时间段内发生。 进程 是指一个内存中运行中的应用程序。每个进程都有自己独立的一块内存空间,一个应用程序可以同时启动多个进程。比如在Windows系统中,一个运行的abc.exe就是一个进程。 那么我们此时就可以处理同时玩游戏和听音乐的问题了,我们可以设计成两个程序,一个专门负责玩游戏,一个专门负责听音乐。 但是问题来了,要是要设计一个植物大战僵尸游戏,我得开N个进程才能完成多个功能,这样的设计显然是不合理的。 更何况大多数操作系统都不需要一个进程访问其他进程的内存空间,也就是说进程之间的通信很不方便。 此时我们得引入“线程”这门技术,来解决这个问题。 线程 是指进程中的一个执行任务(控制单元),一个进程可以同时并发运行多个线程,如:多线程下载软件。 一个进程至少有一个线程,为了提高效率,可以在一个进程中开启多个执行任务,即多线程。 多进程:操作系统中同时运行的多个程序。 多线程:在同一个进程中同时运行的多个任务。 我们查看Windows环境下的任务管理器: 在操作系统中允许多个任务,每一个任务就是一个进程,每一个进程也可以同时执行多个任务,每一个任务就是线程。 多线程 作为一种多任务、并发的工作方式,当然有其存在优势: 进程之前不能共享内存,而线程之间共享内存(堆内存)则很简单