首页 文章 精选 留言 我的

精选列表

搜索[子流程],共10007篇文章
优秀的个人博客,低调大师

Android渠道包打包流程

1.环境要求 Windows、JDK1.7.0以上、WinRAR 2.打包步骤 (1)从Jenkins打包平台取得最终作为发版外卖apk (2)apk重命名为src.zip(没错,就是改成一个压缩包) (3)打包工具解压,将src.zip解压到打包工具目录,如图 (4)先看一下打包工具目录,build.bat为我们最终执行打包任务的批处理文件,foodfinder.keystore就是我们打包使用的签名,sources.txt中保存着我们要打包使用的渠道号(以及产物apk文件名),最终产物会保存到release文件夹中,至于sources.txt中渠道号与产物文件名填写方式可直接通过后面提供的渠道号Excel表格复制后粘贴进TXT中即可 (5)build.bat文件中需注意的点: path后面winRAR的路径要填写好,其次是保证jdk、Java等环境变量配置OK,否则会报错,双击.bat文件,弹出命令框,等待至提示“按任意键结束”即可 (6)产物构建完之后,记得要及时将release文件夹中产物取出,否则下次构建会直接被当前构建产物覆盖 3.打包渠道号以及注意事项 (1)渠道号列表,左侧为全部应用商店渠道号,右侧为地推用渠道号(目前暂不需要,只需应用商店渠道即可,若PM要求另论) (2)不同应用商店使用的副标题 电子表格 副标题apk需要由RD提供,QA依据不同副标题母包进行渠道包打包操作

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

Hadoop核心-HDFS读写流程

HDFS写数据步骤: 1. client发起文件上传请求,通过RPC与NameNode建立连接,NameNode检查目标文件是否已经存在,父目录是否存在,并检查用户是否有相应的权限,若检查通过, 会为该文件创建一个新的记录,否则的话文件创建失败,客户端得到异常信息, 2. client通过请求NameNode,第一个block应该传输到哪些DataNode服务器上; 3. NameNode根据配置文件中指定的备份(replica)数量及机架感知原理进行文件分配,返回可用的DataNode的地址 以三台DataNode为例:A B C 注: Hadoop在设计时考虑到数据的安全与高效,数据文件默认在HDFS上存放三份,存储策略为:第一个备份放在客户端相同的datanode上(若客户端在集群外运行, 就随机选取一个datanode来存放第一个replica),第二个replica放在与第一个replica不同机架的一个随机datanode上,第三个replica放在与第二个repli ca相同机架的随机datanode上,如果replica数大于三,则随后的replica在集群中随机存放,Hadoop会尽量避免过多的replica存放在同一个机架上.选取repl ica存放在同一个机架上.(Hadoop 1.x以后允许replica是可插拔的,意思是说可以定制自己需要的replica分配策略) 4. client请求3台的DataNode的一台A上传数据,(本质是一个RPC调用,建立pipeline),A收到请求会继续调用B,然后B调用C,将整个pipeline建立完成后,逐 级返回client; 5. client开始往A上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位(默认 64K),A收到一个packet就会传给B,B传递给C;A每传一 个packet会放入一个应答队列等待应答. 注: 如果某个datanode在写数据的时候宕掉了下面这些对用户透明的步骤会被执行: 1) 管道线关闭,所有确认队列上的数据会被挪到数据队列的首部重新发送,这样也就确保管道线中宕掉的datanode下流的datanode不会因为宕掉的datanode而丢 失数据包 2) 在还在正常运行datanode上的当前block上做一个标志,这样当宕掉的datanode重新启动以后namenode就会知道该datanode上哪个block是刚才宕机残留下 的局部损坏block,从而把他删除掉 3) 已经宕掉的datanode从管道线中被移除,未写完的block的其他数据继续呗写入到其他两个还在正常运行的datanode中,namenode知道这个block还处在und er-replicated状态(即备份数不足的状态)下,然后它会安排一个新的replica从而达到要求的备份数,后续的block写入方法同前面正常时候一样 4) 有可能管道线中的多个datanode宕掉(一般这种情况很少),但只要dfs.relication.min(默认值为1)个replica被创建,我么就认为该创建成功了,剩余的re lica会在以后异步创建以达到指定的replica数. 6. 数据被分割成一个个packet数据包在pipeline上一次传输,在pipeline反方向上,逐个发送ack(命令正确应答),最终由pipeline中第一个DataNode节点A 将pipeline ack发送给client 7. 当一个block传输完成后,client再次发送请求NameNode上传第二个block到服务器 HDFS读数据步骤: 1. Client向NameNode发起RPC请求,来确定请求文件block所在的位置; 2. NameNode会视情况返回文件的部分或者全部block列表,对于每个block,NameNode都会返回含有该block副本的DataNode地址 3. 这些返回的DN地址,会按照集群拓扑结构得出DataNode与客户端的距离,然后进行排序,排序两个规则:网络拓扑结构中距离Client的排在前;心跳机制中超时汇 报的DN状态为STALE,这样的排在后 4. Clietn选取排序靠前的DataNode来读取block,如果客户端本身就是DataNode,那么将从本地直接获取数据 5. 底层本质是建立Socket Stream(FSDataInputStream) ,重复调用父类DataInputStream的read方法,知道这个块上的数据读取完毕; 6. 当读完列表的block后,若文件读取还没有结束,客户端会继续想NameNode获取下一批的block列表 7. 读取完一个Block都会进行checksum验证,如果读取DataNode时出现错误,客户端会通知NameNode,然后再从下一个拥有该block副本的DataNode继续读取 注: 如果在读取过程中DFSInputStream检测到block错误,DFSInputStream也会检查从datanode读取来的数据的校验和,如果发现有数据损坏,它会把坏掉的bl ock报告给namenode同时重新读取其他datanode上的其他block备份 8. read方法是并行的读取block信息,不是一块一块的读取,NameNode只是返回Client请求包含块的DataNode地址,并不是返回请求块的数据; 9. 最终读取哎所有的block会合并成一个完整的最终文件

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

主从DNS配置流程示例

实验环境:主服务器A:10.1.1.6 从服务器B:10.1.1.5 1.安装DNS域名解析服务 #yum install bind-* -y 2.主服务器A配置: #vim /var/named/chroot/etc/named.conf options { directory "/var/named"; allow-recursion {10.1.1.5/24; }; }; #zone "." IN { # type hint; # file "named.ca"; #}; #zone "localost" IN { # type master; # file "named.localhost"; # allow-transfer {none; }; #}; #zone "0.0.127.in-addr.arpa" IN { # type master; # file "named.loopback"; # allow-transfer {none; }; #}; zone "swht.com" IN { type master; file "swht.com.zone"; # masters {10.1.1.6; }; allow-transfer {10.1.1.5; }; }; zone "1.1.10.in-addr.arpa" IN { type master; file "10.1.1.zone"; allow-transfer {10.1.1.5; }; }; #chmod 640 /var/named/chroot/etc/named.conf 修改文件的权限 #chown root:named /var/named/chroot/etc/named.conf 修改文件的属组 #vim /var/named/chroot/var/named/swht.com.zone $TTL 600 @ IN SOA master.swht.com. root ( 2014091901 1H 5M 2D 6H) IN NS master IN MX 10 mail master IN A 10.1.1.6 mail IN A 10.1.1.6 www IN A 10.1.1.6 ftp IN CNAME www #chmod 640 /var/named/chroot/var/named/swht.com.zone #chown root:named /var/named/chroot/var/named/swht.com.zone #vim /var/named/chroot/var/named/10.1.1.zone $TTL 600 @ IN SOA master.swht.com. root ( 2014091901 1H 5M 2D 6H) IN NS master 6 IN PTR master 6 IN PTR mail 6 IN PTR www 6 IN PTR ftp #chmod 640 /var/named/chroot/var/named/10.1.1.zone #chown root:named /var/named/chroot/var/named/10.1.1.zone #service named restart 3.从服务器B配置: #vim /var/named/chroot/etc/named.conf options { directory "/var/named"; allow-recursion {10.1.1.6/26; }; notify yes; }; #zone "." IN { # type hint; # file "named.ca"; #}; #zone "localost" IN { # type master; # file "named.localhost"; # allow-transfer {none; }; #}; #zone "0.0.127.in-addr.arpa" IN { # type master; # file "named.loopback"; # allow-transfer {none; }; #}; zone "swht.com" IN { type slave; file "slaves/swht.com.zone"; masters {10.1.1.6; }; }; zone "1.1.10.in-addr.arpa" IN { type slave; file "slaves/10.1.1.zone"; masters {10.1.1.6; }; }; #chmod 640 /var/named/chroot/etc/named.conf #chown root:named /var/named/chroot/etc/named.conf #service named restart 4.验证: #dig -t NS www.swht.com #host 10.1.1.6 #cd /var/named/chroot/var/named/slaves #ls 10.1.1.zone swht.com.zone #vim 10.1.1.zone $ORIGIN . $TTL 600 ; 10 minutes 1.1.10.in-addr.arpa IN SOA master.swht.com. root.1.1.10.in-addr.arpa. ( 2014091901 ; serial 3600 ; refresh (1 hour) 300 ; retry (5 minutes) 172800 ; expire (2 days) 21600 ; minimum (6 hours) ) NS master.1.1.10.in-addr.arpa. $ORIGIN 1.1.10.in-addr.arpa. 6 PTR ftp PTR www PTR mail PTR master #vim swht.com.zone $ORIGIN . $TTL 600 ; 10 minutes swht.com IN SOA master.swht.com. root.swht.com. ( 2014091901 ; serial 3600 ; refresh (1 hour) 300 ; retry (5 minutes) 172800 ; expire (2 days) 21600 ; minimum (6 hours) ) NS master.swht.com. MX 10 mail.swht.com. $ORIGIN swht.com. ftp CNAME www mail A 10.1.1.6 master A 10.1.1.6 www A 10.1.1.6 波波整理~^_^ 本文转自 南非波波 51CTO博客,原文链接:http://blog.51cto.com/nanfeibobo/1556316,如需转载请自行联系原作者

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

iOS:上线的基本流程

1、创建唯一标书符App ID 首先打开开发者网站,进入证书页面,我们点击Identifiers下边App IDs选项,然后点击右上角加号,如图: 2、申请发布证书 我们点击Certificates下边的Production,然后我们点击右上角的加号按钮如图: 然后填写App ID描述信息,然后下边选择Explict App ID,然后填写你将要发布到AppStore的工程里边的Bundle ID。如图: 填写完成之后选择需要的App Service,我只选择了推送服务,然后点击Continue,如图: 然后确认一下你的提交信息,然后点击Submit,如图: 然后会提示Registration complete注册完成,然后点Done就创建成功了,如图: 点击加号按钮之后弹出如下界面,然后我们需要选择Production下边的第一项App Store and Ad Hoc选项,如图: 然后我们点击Continue按钮,然后弹出来的页面提示我们需要CSR文件(CSR上一篇真机测试文章里有,这里就不在过多说明),如图: 我们点击Continue,然后去选择我们的CSR文件,选择完成后如图: 点击Generate,然后你会看到Your Certificate is ready,如图: 3、申请发布描述文件 点击Provisioning Profiles下边的Distribution,然后点击右上角加号,如图: 然后选择Distribution下边的App Store选项,然后点击Continue,如图: 然后选择我们刚才创建的App ID,然后点击Continue,如图: 然后我们需要选择刚才创建好的发布证书,然后点击Continue,如图: 然后我们需要给发布的描述文件添加一个名字,然后点Generte完成注册,如图: 发布证书和描述文件都创建好之后,如果是自己的电脑创建的直接Download下来安装就可以了,如果其他人想用,你需要从钥匙串中导出,详细的导出请看上篇真机测试文章。导出之后发给别人安装。 4、iTunes Connect创建App并填写信息: 我们重新打开https://developer.apple.com苹果的开发网站,选择Member Center,登录进去之后这次我们选择iTunes Connect选项,打开后如图: 进入之后我们选择左上角的加号按钮,然后我们选择创建iOS App,如图: 然后会弹出一个框,让我们填写 名称:App 的名字,如果已经有了同名软件,他会提示“您输入的App名称已被使用” 主要语言:我们选择Simplified Chinese简体中文、 套装ID: 选我们刚才创建的App ID 版本:版本号只要跟Xcode的TARGET - General - Version保持一致即可 SKU:我这里填写的是Bundle ID。 然后我们点击创建,如果没问题会跳转到我们刚创建的App详情页面,需要我们填写更多的信息,下边看一下整个App详情页面: 首先我们填写最上边的信息我们需要填写App的定价信息,如图: 点击完跳转到下个界面,如图: 我们需要设置App的价格等级,也就是我们App是免费还是收费的,如果收费的,收多少钱。选择完之后点击保存,保存完成之后返回我的App,继续填写其他信息。 下边需要上传我们的屏幕快照,也就是我们软件运行的截图。iphone现在已经有了4个尺寸的屏幕:iPhone6 plus 5.5寸屏幕、iPhone6 4.7寸屏幕、iPhone5s 4寸屏幕、iPhone4s 3.5寸屏幕。苹果现在的审核要求必须要适配各种屏幕,如果不适配程序会被拒,所以我们开发的时候需要针对每个屏幕做适配。适配完之后上传我们每个屏幕的截图,如果没有真机的化,在模拟器上也可以截图,快捷键是command + S,系统会自动把屏幕截图保存在桌面上。上传完成之后如图: 我已经把4个屏幕的图片都截图上传上去了,在这就不一一截图了。 上传完成截图之后我们接着需要填写 App名称:我们App的名字 描述:关于App的文字描述 关键词:就是用于搜索我们app的关键字 技术支持网址:这个是必填项,需要写一个网址 营销网址:非必填,可以让公司给提供 隐私政策网址:非必填,到时候可以让公司提供 填写好的例子如图: 由于我们程序没做Apple Watch支持,所以Apple Watch这个选项可以忽略。 下边填写我们的App综合信息: App图标:这是应用程序的图标,1024*1024像素的png图片 版本:软件当前的版本号 类别:这款软件属于那种类型的软件,比如:新闻、音乐、教育等等 评级:软件评级有一个大的选项让你选择软件中包含的内容,苹果会根据你的选择确定你的软件属于哪个年龄段适应的。一会都选择17+比较保险 版权:版权信息一般把公司名字写上去 联系人详细信息:这个按提示把自己或者公司信息写上去就可以了。 这个时候我们就可以保存信息,去上传app了。 先打开Xcode点击右键选择 - Open Develop Tool - Application Loader,如图: 打开之后需要登录开发者账号,登录成功后如图所示: 然后选择交付您的应用程序,会填出一个对话框让你选择已经打好的ipa包,如图: 选择完成之后如图: 然后选择下一步,这个时候会读条显示当前上传的进度: 上传完成之后如下图所示: 点击下一步会看到:谢谢您。 ipa包上传之后这个时候还要回到iTunes connect完善信息,回到填写信息的页面,下边有一个构建版本的选项,旁边有一个加号按钮,点击一下: 如果刚才上传没有问题,会出现下图所示的图片: 选择“完成”以后回到上边选择提交以共审核按钮,会提出如下页面,三项都选NO即可,点击提交: 提交完成之后刷新页面你会看到你上传的应用程序会出现一个黄色的原点,后边写着:Waiting for Review。 程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式! 本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/5632201.html ,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

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

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册