首页 文章 精选 留言 我的

精选列表

搜索[基础搭建],共10000篇文章
优秀的个人博客,低调大师

【读书笔记《Android游戏编程之从零开始》】9.游戏开发基础(如何快速的进入 Android 游戏开发)

1.不可盲目看API文档 很多人在接触学习一门新的平台语言时,总喜欢先去探究一番API文档。先不说成效如何,至少编者认为这种方式不适合大部分人来效仿,主要原因在于 API 领域广泛,牵涉到的知识点太多,而对于刚刚接触平台开发语言的大部分人来说,遗忘速度远远大于记忆!这种做法是大量消耗精力、小量吸取知识的方法,只会事倍功半。2.前人栽树,后人乘凉 对于初学者来说,任何想要学习与掌握的知识点,之前都会有高人总结过;所以建议大家每学习一个知识点,都尽可能的先动手去网上搜索和学习别人总结出来的相关知识点的文章,毕竟前任总结的知识会让你减少学习的弯路。最后再根据每个知识点去详细翻阅相关的 API 文档,有针对性、有目的性的去看 API 文档才会是事半功倍。3.好记性不如烂笔头 这句谚语,几乎无人不知无人不晓,但是总被许多初学者抛在脑后。在学习的时候,总是看代码多,而动手练习代码少!身为一个程序员都应该很清楚,代码如果不多动手敲它,它永远不会自己跑进脑中,所以多动手才是成功的关键。4.养成自学的习惯 学习新的知识如果总是抱着依赖和期望别人手把手教授,那就不太现实了。因为没有任何一个人能时时刻刻的陪在身边给予帮助,但是使用 Baidu 和 Google 可以做到!它们拥有着最全的资源库,使用它们可以查找到最强的技术,不过,它们永远都只在那里等待你去使用它们,如果你不动手去搜索,那么对于你来说它们毫无用处。5.利用小项目实战进步快 在学习游戏开发时,一定要多做小项目,比如今天学会了一个新的知识点,那么首先就要尽可能发散思维,多思考这个知识点会应用到什么类型的游戏中,并在游戏中起到什么样的作用等等。然后拿出时间一定要去写一个小项目联系新知识点。 写小项目有两点好处:一是巩固新知识点;二是通过小项目发现知识点实际应用到游戏中会出现的问题,有些问题不亲自动手编写是根本无法发现的。6.进步来源于问题 好程序不是写出来的,是改出来的!这句话没有人能反驳,因为谁写代码都不可能是一遍成功,不用修改不用完善的。 学习中遇到问题时,不应该烦躁而是应该庆幸,因为解决掉问题就意味着进步。千万不要出到问题不假思索就去请教他人,这样解决掉的问题没有任何意义。 当然不推荐大家遇到问题一定就铁下心的自己去几天几夜的钻研,应该自我把握问题的难易度,如果问题确实超出自己能力的,那么请教他人反而对自己更有帮助,有效率,前提是自己考虑过如何解决此问题。 其实,游戏开发的学习过程应该是一个拼图的过程.首先要分模块来学习,积累了一定的模块知识后,再通过这些模块就可以拼出各种类型\各种风格的游戏。 在游戏开发中,一般很少使用系统提供的组件进行开发,其主要原因在于游戏的多样性.比如一款"连连看"游戏,它就可以有N种玩法、N种场景、N种风格、N种元素.所以,如果还期望从系统中找到对应组件的话,结果会令人失望,不是系统不想提供,而是它永远无法知道将要制作的游戏类型、风格等等。总结一句话: 开发一款游戏,请用自己的双手为这款游戏创建专属它的组件!换言之,就是要自己去实现游戏中的组件,不要再一味的幻想系统能为你带来什么。系统只提供“一支笔”、“一张画布”,仅此而已。至于能创造出多么精彩的游戏世界,那完全取决于游戏开发者。 本文转自叶超Luka博客园博客,原文链接:http://www.cnblogs.com/yc-755909659/p/4134758.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

Linux基础之文本处理工具grep及正则表达式(附带egrep与grep的不同)

文本处理工具grep,正则表达式在Linux学习过程中很容易出现困惑与障碍的地方,这里分享下学习这方面内容的一些感受。 grep Global search REgular expression and Print out the line 作用:文本搜索工具,根据用户指定的‘模式(过滤条件)’对目标文本逐行进行匹配检查;打印匹配到的行; ‘模式’:由正则表达式的元字符及文本字符所编写出的过滤条件。 grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...] 常用选项: -i:忽略字符大小写 -o:仅显示匹配到的字符串本身 -v:显示不能被模式匹配到的行 -E:支持扩展正则表达式元字符 -q:静默模式,匹配不显示 -A#:after,显示匹配条件所在行的后#行 -B#:before,显示匹配条件所在行的前#行 -C#:context,显示匹配条件所在行的前后#行 -n:显示匹配的行号(用的较少) -c: 统计匹配的行数(用的较少) 下面以几个小实验对grep的用法及选项做下具体的演示 实验目录/test 文本/test/head [root@localhosttest]#cathead 12345Sdabcsaber Berarbserac 12cds 67890 12 345 123 6 正则表达式:Regual Expression,REGEXP 它由一类特殊字符及文本字符所编写的模式,其中有些字符不表示其字面意义,而是用于表示控制或通配的功能。 它分两类:基本正则表达式BRE、扩展正则表达式ERE 基本正则表达式元字符: 包括:字符匹配、匹配次数、位置锚定、分组 字符匹配: . :匹配任意单个字符; [] :匹配指定范围内的任意单个字符 [^] :匹配指定范围外的任意单个字符 常用集合:[:digit:]、[:lower:]、[:upper:]、[:alpha:]、[:alnum:]、[:punct:]、[:space:] 匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数 *:匹配前面的字符任意次,包括0次;贪婪模式:尽可能长的匹配 .*:任意长度的任意字符 \?:匹配其前面的字符0或1次 \+:匹配其前面的字符至少1次 \{m\}:匹配前面的字符m次 \{m,n\}:匹配前面的字符至少m次,至多n次 \{,n\}:匹配前面的字符至多n次 \{m,\}:匹配前面的字符至少m次 位置锚定:定位出现的位置 ^:行首锚定,用于模式的最左侧 $:行尾锚定,用于模式的最右侧 ^PATTERN$: 用于模式匹配整行 ^$: 空行 ^[[:space:]]*$ :空白行 单词:非特殊字符组成的连续字符在Linux看来都称单词 \< 或\b:词首锚定,用于单词模式的左侧 \> 或\b:词尾锚定;用于单词模式的右侧 \<PATTERN\>:匹配完整的单词 1、查找以for开头的行 2、检索只含有for的字符串;检索含有for的内容 3、检索以for结尾的行;检索以for结尾的字符串 分组:\(\):将一个或多个字符捆绑在一起,当作一个整体进行处理,如:\(root\)\+ 分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为: \1, \2, \3, ... \1: 从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到的字符; 实例:\(string1\+\(string2\)*\) \1: string1\+\(string2\)* \2: string2 后向引用:引用前面的分组括号中的模式所匹配字符(而非模式本身) 上述命令意思是检索包含有for字符串后跟任意字符且出现一次,连续出现上述情况两次截取结果。后面的\1是重复第一个括号内的检索对象。 egrep= grep -E egrep[OPTIONS] PATTERN [FILE...] 扩展正则表达式的元字符: 字符匹配:同基本正则表达式 次数匹配: *:匹配前面字符任意次 ?: 0或1次 +:1次或多次 {m}:匹配m次 {m,n}:至少m,至多n次 位置锚定:同基本正则表达式 分组: () 后向引用:\1, \2, ... 或者: a|b C|cat: C或cat (C|c)at:Cat或cat 最后我们通过9个例子来感受grep与正则表达式结合所能实现的功能 1、显示/proc/meminfo文件中以大小s开头的行 这个只需要知道grep的选项i就能轻松解决。 2、显示/etc/passwd文件中不以/bin/bash结尾的行 先使用grep检索出包含有以“/bin/bash”结尾的行,再使用grep的-v取不以上面结果的行。类似数学中的补集效果。 3、找出ifconfig命令结果中本机的所有IPv4地址 这个分为三步: 1)通过grep锁定包含有IPV4的行,这个通过分析ifconfig列出的信息可以看出规律,只要包含有IPv4的开头都有inet这个字母,所以我们只需要检索它就行了 2)接下来使用tr将所有空替换为“:”并压缩 3)使用cut实现结果。 4、查出分区空间使用率的最大百分比值 这个大致分6步: 1)过滤汉字 2)使用tr替换所有空为":"并压缩 3)使用cut剪切出含有使用率百分比的数值 4)再次使用tr剔除% 5)使用sort按数值大小写排序 6)使用tail取出最大值 5、显示用户rpc默认的shell程序 上面的检索条件是以rpc为行首且以它为字符结尾的行 6、找出/etc/passwd中的两位或三位数 这里使用的是扩展正则表达式因为可以是表达式更简洁 这里需要注意的是要以两位或三位数为字符串,这需要对其进行开头与结尾的字符锚定 7、找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行 当我们想好要过滤的条件后,要对其进行行首及字符的锚定,否则会导致条件范围不严谨 这里要注意的是.*\>\(\),如果这里改写为.*\(\)\>则会失败,具体可以自己想想。其实.*已经包括了"()",所以后面的是重复的,这样就容易出错。 8、使用egrep取出/etc/rc.d/init.d/functions中其基名 上面是两种方法,一种利用grep直接检索出来,另一种的思想是分割。各有特点 9、利用扩展正则表达式分别表示0-9、10-99、100-199、200-249、250-255 \<[0-9]\>:0-9 \<[1-9][0-9]|>:10-99 \<1[0-9][0-9]\> | \<1[0-9]{2}\>:100-199 \<2[0-4][0-9]\> :200-249 \<25[0-5]\>:250-255 上面只是对grep及正则表达式的简要总结,不过只要掌握好这基本的内容自己也就可以进行更深入的学习了。

优秀的个人博客,低调大师

ETH geth私链搭建linux安装(以太坊是一个用于分散式应用程序的全球性开源平台)

一.下载对应系统的geth包 https://ethereum.github.io/go-ethereum/downloads/ 二.下载安装包 https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.9.18-f5382591.tar.gz 三.解压安装包 tar -zxvf geth-linux-amd64-1.9.18-f5382591.tar.gz 四.进入文件夹 cd geth-linux-amd64-1.9.18-f5382591 五.启动参数详细介绍 以太坊客户端Geth命令用法-参数详解 命令用法 geth [选项] 命令 [命令选项] [参数…] 命令: account 管理账户 attach 启动交互式JavaScript环境(连接到节点) bug 上报bug Issues console 启动交互式JavaScript环境 copydb 从文件夹创建本地链 dump Dump(分析)一个特定的块存储 dumpconfig 显示配置值 export 导出区块链到文件 import 导入一个区块链文件 init 启动并初始化一个新的创世纪块 js 执行指定的JavaScript文件(多个) license 显示许可信息 makecache 生成ethash验证缓存(用于测试) makedag 生成ethash 挖矿DAG(用于测试) monitor 监控和可视化节点指标 removedb 删除区块链和状态数据库 version 打印版本号 wallet 管理Ethereum预售钱包 help,h 显示一个命令或帮助一个命令列表 ETHEREUM 配置选项: --config value TOML 配置文件 --datadir “xxx” 数据库和keystore密钥的数据目录 --keystore keystore存放目录(默认在datadir内) --nousb 禁用监控和管理USB硬件钱包 --networkid value 网络标识符(整型, 1=Frontier, 2=Morden (弃用), 3=Ropsten, 4=Rinkeby) (默认: 1) --testnet Ropsten网络:预先配置的POW(proof-of-work)测试网络 --rinkeby Rinkeby网络: 预先配置的POA(proof-of-authority)测试网络 --syncmode "fast" 同步模式 ("fast", "full", or "light") --ethstats value 上报ethstats service URL (nodename:secret@host:port) --identity value 自定义节点名 --lightserv value 允许LES请求时间最大百分比(0 – 90)(默认值:0) --lightpeers value 最大LES client peers数量(默认值:20) --lightkdf 在KDF强度消费时降低key-derivation RAM&CPU使用 开发者(模式)选项: --dev 使用POA共识网络,默认预分配一个开发者账户并且会自动开启挖矿。 --dev.period value 开发者模式下挖矿周期 (0 = 仅在交易时) (默认: 0) 交易池选项: --txpool.nolocals 为本地提交交易禁用价格豁免 --txpool.journal value 本地交易的磁盘日志:用于节点重启 (默认: "transactions.rlp") --txpool.rejournal value 重新生成本地交易日志的时间间隔 (默认: 1小时) --txpool.pricelimit value 加入交易池的最小的[gas](https://learnblockchain.cn/2019/06/11/gas-mean/)价格限制(默认: 1) --txpool.pricebump value 价格波动百分比(相对之前已有交易) (默认: 10) --txpool.accountslots value 每个帐户保证可执行的最少交易槽数量 (默认: 16) --txpool.globalslots value 所有帐户可执行的最大交易槽数量 (默认: 4096) --txpool.accountqueue value 每个帐户允许的最多非可执行交易槽数量 (默认: 64) --txpool.globalqueue value 所有帐户非可执行交易最大槽数量 (默认: 1024) --txpool.lifetime value 非可执行交易最大入队时间(默认: 3小时) 性能调优的选项: --cache value 分配给内部缓存的内存MB数量,缓存值(最低16 mb /数据库强制要求)(默认:128) --trie-cache-gens value 保持在内存中产生的trie node数量(默认:120) 帐户选项: --unlock value 需解锁账户用逗号分隔 --password value 用于非交互式密码输入的密码文件 API 和控制台选项: --rpc 启用HTTP-RPC服务器 --rpcaddr value HTTP-RPC服务器接口地址(默认值:“localhost”) --rpcport value HTTP-RPC服务器监听端口(默认值:8545) --rpcapi value 基于HTTP-RPC接口提供的API --ws 启用WS-RPC服务器 --wsaddr value WS-RPC服务器监听接口地址(默认值:“localhost”) --wsport value WS-RPC服务器监听端口(默认值:8546) --wsapi value 基于WS-RPC的接口提供的API --wsorigins value websockets请求允许的源 --ipcdisable 禁用IPC-RPC服务器 --ipcpath 包含在datadir里的IPC socket/pipe文件名(转义过的显式路径) --rpccorsdomain value 允许跨域请求的域名列表(逗号分隔)(浏览器强制) --jspath loadScript JavaScript加载脚本的根路径(默认值:“.”) --exec value 执行JavaScript语句(只能结合console/attach使用) --preload value 预加载到控制台的JavaScript文件列表(逗号分隔) 网络选项: --bootnodes value 用于P2P发现引导的enode urls(逗号分隔)(对于light servers用v4+v5代替) --bootnodesv4 value 用于P2P v4发现引导的enode urls(逗号分隔) (light server, 全节点) --bootnodesv5 value 用于P2P v5发现引导的enode urls(逗号分隔) (light server, 轻节点) --port value 网卡监听端口(默认值:30303) --maxpeers value 最大的网络节点数量(如果设置为0,网络将被禁用)(默认值:25) --maxpendpeers value 最大尝试连接的数量(如果设置为0,则将使用默认值)(默认值:0) --nat value NAT端口映射机制 (any|none|upnp|pmp|extip:<IP>) (默认: “any”) --nodiscover 禁用节点发现机制(手动添加节点) --v5disc 启用实验性的RLPx V5(Topic发现)机制 --nodekey value P2P节点密钥文件 --nodekeyhex value 十六进制的P2P节点密钥(用于测试) 矿工选项: --mine 打开挖矿 --minerthreads value 挖矿使用的CPU线程数量(默认值:8) --etherbase value 挖矿奖励地址(默认=第一个创建的帐户)(默认值:“0”) --targetgaslimit value 目标gas限制:设置最低gas限制(低于这个不会被挖?) (默认值:“4712388”) --gasprice value 挖矿接受交易的最低gas价格 --extradata value 矿工设置的额外块数据(默认=client version) GAS 价格选项: --gpoblocks value 用于检查gas价格的最近块的个数 (默认: 10) --gpopercentile value 建议gas价参考最近交易的gas价的百分位数,(默认: 50) 虚拟机的选项: --vmdebug 记录VM及合约调试信息 日志和调试选项: --metrics 启用metrics收集和报告 --fakepow 禁用proof-of-work验证 --verbosity value 日志详细度:0=silent, 1=error, 2=warn, 3=info, 4=debug, 5=detail (default: 3) --vmodule value 每个模块详细度:以 <pattern>=<level>的逗号分隔列表 (比如 eth/*=6,p2p=5) --backtrace value 请求特定日志记录堆栈跟踪 (比如 “block.go:271”) --debug 突出显示调用位置日志(文件名及行号) --pprof 启用pprof HTTP服务器 --pprofaddr value pprof HTTP服务器监听接口(默认值:127.0.0.1) --pprofport value pprof HTTP服务器监听端口(默认值:6060) --memprofilerate value 按指定频率打开memory profiling (默认:524288) --blockprofilerate value 按指定频率打开block profiling (默认值:0) --cpuprofile value 将CPU profile写入指定文件 --trace value 将execution trace写入指定文件 WHISPER 实验选项: --shh 启用Whisper --shh.maxmessagesize value 可接受的最大的消息大小 (默认值: 1048576) --shh.pow value 可接受的最小的POW (默认值: 0.2) 弃用选项: --fast 开启快速同步 --light 启用轻客户端模式 其他选项: –help, -h 显示帮助 六.下载火星节点配置文件由于国内以太坊节点非常稀少,并且国内外网络不通畅等原因导致国内服务器同步区块数据非常缓慢还容易丢包,由EthFans发起的星火节点计划可以帮助我们加快同步速度。 下载节点列表:https://upyun-assets.ethfans.org/uploads/doc/file/b0c5266be42f43f1baf7207c432bede6.json?_upd=static-nodes.json 下载后将static-nodes.json文件放在区块存储目录下即可。 7.创建初始账户 geth --datadir /ethereum account new 8.创建创世文件 { "config": { "chainId": 100, "homesteadBlock": 0, "eip150Block": 0, "eip155Block": 0, "eip158Block": 0, "byzantiumBlock": 0, "constantinopleBlock": 0, "petersburgBlock": 0, "ethash": {} }, "nonce": "0x42", "timestamp": "0x0", "extraData": "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa", "gasLimit": "0x1388", "difficulty": "0x1", "alloc": { "0xDFeDb94Ab496d6b68795dB890AcbbBdc2557860A": { "balance": "100000000000000000000000000000000" } } } 其中的 alloc 属性是给账户分配余额 。切记,余额是以wei为单位的,就是balance值要除以10的18次方才等于eth的数量。9.初始化创世区块 geth --datadir /ethereum init /ethereum/genesis.json 10.生成配置文件夹 geth --datadir '/ethereum' --networkid 100 --cache 512 --rpc --rpcaddr '0.0.0.0' --rpcport 8545 --rpcapi 'db,eth,net,web3,personal' --rpccorsdomain '*' --allow-insecure-unlock dumpconfig > /ethereum/geth_config --networkid指定网络ID 1代表主网络 2代表测试网络 没有提供则默认测试网络,乱写代表创建私有链11.后台运行 nohup geth --config /ethereum/geth_config >> /var/log/geth.log 2>&1 & 12.监控区块同步日志 tail -f /var/log/geth.log 13.进入控制台 geth attach /ethereum/geth.ipc 14.使用命令查看当前同步情况 eth.syncing 如果返回的是false,证明同步完成了,可以使用当前节点。 否则会返回同步状态 currentBlock为当前下载到的区块高度,请注意,下载块不等于同步数据了,下载块是一个简单快速的过程,只验证相关的工作量证明,在下载块的同时geth也在一直下载所有的区块数据,当数据下载完成后届时才会处理曾经发生过的所有交易,重新组装整个链。 15.api调用推荐地址 各编程语言现成类库 Java:https://github.com/web3j/web3j Python:https://github.com/ethereum/web3.py PHP:https://github.com/sc0Vu/web3.php NodeJs:https://github.com/ethereum/web3.js 16.后期推出各大主流币交易所钱包处理代码

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册