跳转到帖子

搜索论坛

显示结果为标签'PHP'或'Java'。

  • 用标签来搜索

    用逗号分隔标签类型
  • 用作者来搜索

内容类型


论坛

  • 漏洞与黑客攻击防御安全领域
    • 黑客攻防业务合作
    • 世界黑客新闻动态
    • WEB和服务器安全漏洞
    • CHT漏洞数据库
    • Linux Kali高级学习教程
    • CTF&密码学与社会工程
    • 木马病毒分析
    • 黑客世界会员中心
  • 问题讨论中心
    • 问答中心
    • 交流中心
  • 编程开发
    • 各种编程技术
    • ios /安卓开发
  • CHT官方团队介绍及比赛制度
    • CTF攻防系统[供会员使用]
    • 积分商场
    • 积分跳马系统
    • 积分统计系统

产品组

  • Hacker attack and defense security hardware series
  • Internet Security Book Recommendations

博客

没有结果。

没有结果。

类别

  • Hacker Attack and Defense & Network Security Videos

查找结果在…

查找包含的结果…


创建日期

  • 开始

    结束


最后更新

  • 开始

    结束


按数量过滤…

注册日期

  • 开始

    结束


用户组


About Me

找到20个结果

  1. 代码:<!doctype html> <html> <head> <meta charset="utf-8"> <title>表格输出</title> </head> <body> <div style="text-align: center;color: brown"> <?php $b="while表格"; $c="#ff0004"; echo "<h1 color=".$c.">".$b."</h1>"?> </div> <table border="1" bordercolor="#FF0004" align="center" > <?php $out=0; while($out<10){ $bg=$out%2==0 ? "#fffddd" :"#dddddd";#设置第一行颜色和第二行颜色 echo "<tr bgcolor=".$bg.">"; $in=0; while($in<10){ echo "<td>".($out*10+$in)."</td>"; $in++; } echo "</tr>"; $out++; } ?> </table> </body> </html>显示结果 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/117.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  2. 代码:<!doctype html> <html> <head> <meta charset="utf-8"> <title>表格输出</title> </head> <body> <div style="text-align: center;color: brown"> <?php $b="while表格"; $c="#ff0004"; echo "<h1 color=".$c.">".$b."</h1>"?> </div> <table border="1" bordercolor="#FF0004" align="center" > <?php $out=0; while($out<10){ $bg=$out%2==0 ? "#fffddd" :"#dddddd";#设置第一行颜色和第二行颜色 echo "<tr bgcolor=".$bg.">"; $in=0; while($in<10){ echo "<td>".($out*10+$in)."</td>"; $in++; } echo "</tr>"; $out++; } ?> </table> </body> </html>显示结果 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/117.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  3. 简要描述ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企 业应用开发而诞生的。ThinkPHP从诞生的12年间一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码 的同时,也注重易用性。目前ThinkPHP框架是国内使用量最大的框架之一,国内用户量众多。近日,360企业安全 集团代码卫士团队安全研究人员发现该框架V5.1.7-V5.1.8 版本在底层数据处理驱动解析数据的时候存在缺陷,一 定场景下,攻击者可以通过构造恶意数据包利用SQL注入的方式获取用户数据库内容。360企业安全集团代码卫士 团队已第一时间和ThinkPHP团队进行沟通修复,建议相关用户及时更新官方发布的新版本。 漏洞分析:注:改漏洞ThinkPHP官方团队在报送当天(2018-04-06)紧急进行了修复处理,详细请参考: https://github.com/top-think/framework/commit/39bb0fe6d50ee77e0779f646b10bce08c442a5e3以下漏洞分析基于ThinkPHP V5.1.8(2018-04-05未更新版) 这里我们主要跟进分析执行update操作的过程。为了方便理解,先直接放出函数的调用栈。 Mysql.php:200, think\db\builder\Mysql->parseArrayData() Builder.php:147, think\db\Builder->parseData() Builder.php:1139, think\db\Builder->update() Connection.php:1149, think\db\Connection->update() Query.php:2571, think\db\Query->update() Index.php:18, app\index\controller\Index->testsql() Container.php:285, ReflectionMethod->invokeArgs() Container.php:285, think\Container->invokeReflectMethod() Module.php:139, think\route\dispatch\Module->run() Url.php:31, think\route\dispatch\Url->run() App.php:378, think\App->think\{closure}() Middleware.php:119, call_user_func_array: {C:\wamp64\www\think518\thinkphp\library\think\Middleware.php:119}() Middleware.php:119, think\Middleware->think\{closure}() Middleware.php:74, call_user_func: {C:\wamp64\www\think518\thinkphp\library\think\Middleware.php:74}() Middleware.php:74, think\Middleware->dispatch() App.php:399, think\App->run() index.php:21, {main}()缺陷关键点为thinkphp解析用户传递过来的Data可控,且可以绕过安全检查。 根据文件 Connection.php:1149, think\db\Connection->update() 第1102行update函数分析,这个函数的主要功 能是用于执行update SQL语句。 //Connection.php:1149, think\db\Connection->update() public function update(Query $query) { $options = $query->getOptions(); if (isset($options['cache']) && is_string($options['cache']['key'])) { $key = $options['cache']['key']; } $pk = $query->getPk($options); $data = $options['data']; if (empty($options['where'])) { // 如果存在主键数据 则自动作为更新条件 if (is_string($pk) && isset($data[$pk])) { $where[$pk] = [$pk, '=', $data[$pk]]; if (!isset($key)) { $key = $this->getCacheKey($query, $data[$pk]); } unset($data[$pk]); } elseif (is_array($pk)) { // 增加复合主键支持 foreach ($pk as $field) { if (isset($data[$field])) { $where[$field] = [$field, '=', $data[$field]]; } else { // 如果缺少复合主键数据则不执行 throw new Exception('miss complex primary data'); } unset($data[$field]); } } if (!isset($where)) { // 如果没有任何更新条件则不执行 throw new Exception('miss update condition'); } else { $options['where']['AND'] = $where; $query->setOption('where', ['AND' => $where]); } } elseif (!isset($key) && is_string($pk) && isset($options['where']['AND'][$pk])) { $key = $this->getCacheKey($query, $options['where']['AND'][$pk]); } // 更新数据 $query->setOption('data', $data); // 生成UPDATE SQL语句 $sql = $this->builder->update($query); $bind = $query->getBind(); if (!empty($options['fetch_sql'])) { // 获取实际执行的SQL语句 return $this->getRealSql($sql, $bind); } // 检测缓存 $cache = Container::get('cache'); if (isset($key) && $cache->get($key)) { // 删除缓存 $cache->rm($key); } elseif (!empty($options['cache']['tag'])) { $cache->clear($options['cache']['tag']); } // 执行操作 $result = '' == $sql ? 0 : $this->execute($sql, $bind); if ($result) { if (is_string($pk) && isset($where[$pk])) { $data[$pk] = $where[$pk]; } elseif (is_string($pk) && isset($key) && strpos($key, '|')) { list($a, $val) = explode('|', $key); $data[$pk] = $val; } $query->setOption('data', $data); $query->trigger('after_update'); }return $result; 刚刚我们将用户可控的 $data set到 $query['options'] 中,这里我们先获取 $query['options'] 内容到 $options 中,然后对Data进行解析 $data = $this->parseData($query, $options['data']); 第1146行, $query->setOption(‘data’, $data); 这里将用户传递的 $data set到 $query 变量中,为下一步的生 成 UPDATE SQL语句做准备,执行 $sql = $this->builder->update($query); 语句,重点马上要来了,跟进 Builder.php:1139, think\db\Builder->update() 函数 //Builder.php:1139, think\db\Builder->update() public function update(Query $query) { $options = $query->getOptions(); $table = $this->parseTable($query, $options['table']); $data = $this->parseData($query, $options['data']); if (empty($data)) { return ''; } foreach ($data as $key => $val) { $set[] = $key . ' = ' . $val; } return str_replace( ['%TABLE%', '%SET%', '%JOIN%', '%WHERE%', '%ORDER%', '%LIMIT%', '%LOCK%', '%COMMENT%'], } [ $this->parseTable($query, $options['table']), implode(' , ', $set), $this->parseJoin($query, $options['join']), $this->parseWhere($query, $options['where']), $this->parseOrder($query, $options['order']), $this->parseLimit($query, $options['limit']), $this->parseLock($query, $options['lock']), $this->parseComment($query, $options['comment']), ], $this->updateSql);刚刚我们将用户可控的 $data set到 $query['options'] 中,这里我们先获取 $query['options'] 内容到 $options 中,然后对Data进行解析 $data = $this->parseData($query, $options['data']); //Builder.php:147, think\db\Builder->parseData() protected function parseData(Query $query, $data = [], $fields = [], $bind = [], $suffix = '') { if (empty($data)) { return []; } $options = $query->getOptions(); // 获取绑定信息 if (empty($bind)) { $bind = $this->connection->getFieldsBind($options['table']); } if (empty($fields)) { if ('*' == $options['field']) { $fields = array_keys($bind); } else { $fields = $options['field']; } } $result = []; foreach ($data as $key => $val) { $item = $this->parseKey($query, $key); if ($val instanceof Expression) { $result[$item] = $val->getValue(); continue; } elseif (!is_scalar($val) && (in_array($key, (array) $query->getOptions('json')) || 'json' == $this->connection->getFieldsType($options['table'], $key))) { $val = json_encode($val); } elseif (is_object($val) && method_exists($val, '__toString')) { // 对象数据写入 $val = $val->__toString(); } if (false !== strpos($key, '->')) { list($key, $name) = explode('->', $key); $item = $this->parseKey($query, $key); $result[$item] = 'json_set(' . $item . ', \'$.' . $name . '\', ' . $this- >parseDataBind($query, $key, $val, $bind, $suffix) . ')'; } elseif (false === strpos($key, '.') && !in_array($key, $fields, true)) { if ($options['strict']) { throw new Exception('fields not exists:[' . $key . ']'); } } elseif (is_null($val)) { $result[$item] = 'NULL'; } elseif (is_array($val) && !empty($val)) { switch ($val[0]) { case 'INC': $result[$item] = $item . ' + ' . floatval($val[1]); break; case 'DEC': $result[$item] = $item . ' - ' . floatval($val[1]); break; default: $value = $this->parseArrayData($query, $val); if ($value) { $result[$item] = $value; } } } elseif (is_scalar($val)) { // 过滤非标量数据 $result[$item] = $this->parseDataBind($query, $key, $val, $bind, $suffix); } } return $result; } //Mysql.php:200, think\db\builder\Mysql->parseArrayData() protected function parseArrayData(Query $query, $data) { list($type, $value) = $data; switch (strtolower($type)) { case 'point': $fun = isset($data[2]) ? $data[2] : 'GeomFromText'; $point = isset($data[3]) ? $data[3] : 'POINT'; //在第115行,通过 foreach ($data as $key => $val) 处理 $data ,然后解析 $key 保存到 $item 变量中去,之后 执行下面的判断逻辑,想要合理地进入各个判断分支,就要巧妙的构造 $key 和 $value 也就是 $data 的值。紧接 着我们进入漏洞触发点 $value = $this->parseArrayData($query, $val); ,跟进函数 $value = $this- >parseArrayData($query, $val); //Mysql.php:200, think\db\builder\Mysql->parseArrayData() protected function parseArrayData(Query $query, $data) { list($type, $value) = $data; switch (strtolower($type)) { case 'point': $fun = isset($data[2]) ? $data[2] : 'GeomFromText'; $point = isset($data[3]) ? $data[3] : 'POINT'; if (is_array($value)) { $value = implode(' ', $value); } $result = $fun . '(\'' . $point . '(' . $value . ')\')';//需要简单的构造一下sql语 break; default: }这里 $type 、 $value 和 $data 均为可控值,那么函数返回的 $result 也就是可控的。回到上一个 Builder.php 文件中,将返回的结果赋值到 $result[$item] = $value; 中,之后的生成SQL语句和常见的流程没有任何差别不在 展开具体分析。 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/129.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  4. 简要描述ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企 业应用开发而诞生的。ThinkPHP从诞生的12年间一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码 的同时,也注重易用性。目前ThinkPHP框架是国内使用量最大的框架之一,国内用户量众多。近日,360企业安全 集团代码卫士团队安全研究人员发现该框架V5.1.7-V5.1.8 版本在底层数据处理驱动解析数据的时候存在缺陷,一 定场景下,攻击者可以通过构造恶意数据包利用SQL注入的方式获取用户数据库内容。360企业安全集团代码卫士 团队已第一时间和ThinkPHP团队进行沟通修复,建议相关用户及时更新官方发布的新版本。 漏洞分析:注:改漏洞ThinkPHP官方团队在报送当天(2018-04-06)紧急进行了修复处理,详细请参考: https://github.com/top-think/framework/commit/39bb0fe6d50ee77e0779f646b10bce08c442a5e3以下漏洞分析基于ThinkPHP V5.1.8(2018-04-05未更新版) 这里我们主要跟进分析执行update操作的过程。为了方便理解,先直接放出函数的调用栈。 Mysql.php:200, think\db\builder\Mysql->parseArrayData() Builder.php:147, think\db\Builder->parseData() Builder.php:1139, think\db\Builder->update() Connection.php:1149, think\db\Connection->update() Query.php:2571, think\db\Query->update() Index.php:18, app\index\controller\Index->testsql() Container.php:285, ReflectionMethod->invokeArgs() Container.php:285, think\Container->invokeReflectMethod() Module.php:139, think\route\dispatch\Module->run() Url.php:31, think\route\dispatch\Url->run() App.php:378, think\App->think\{closure}() Middleware.php:119, call_user_func_array: {C:\wamp64\www\think518\thinkphp\library\think\Middleware.php:119}() Middleware.php:119, think\Middleware->think\{closure}() Middleware.php:74, call_user_func: {C:\wamp64\www\think518\thinkphp\library\think\Middleware.php:74}() Middleware.php:74, think\Middleware->dispatch() App.php:399, think\App->run() index.php:21, {main}()缺陷关键点为thinkphp解析用户传递过来的Data可控,且可以绕过安全检查。 根据文件 Connection.php:1149, think\db\Connection->update() 第1102行update函数分析,这个函数的主要功 能是用于执行update SQL语句。 //Connection.php:1149, think\db\Connection->update() public function update(Query $query) { $options = $query->getOptions(); if (isset($options['cache']) && is_string($options['cache']['key'])) { $key = $options['cache']['key']; } $pk = $query->getPk($options); $data = $options['data']; if (empty($options['where'])) { // 如果存在主键数据 则自动作为更新条件 if (is_string($pk) && isset($data[$pk])) { $where[$pk] = [$pk, '=', $data[$pk]]; if (!isset($key)) { $key = $this->getCacheKey($query, $data[$pk]); } unset($data[$pk]); } elseif (is_array($pk)) { // 增加复合主键支持 foreach ($pk as $field) { if (isset($data[$field])) { $where[$field] = [$field, '=', $data[$field]]; } else { // 如果缺少复合主键数据则不执行 throw new Exception('miss complex primary data'); } unset($data[$field]); } } if (!isset($where)) { // 如果没有任何更新条件则不执行 throw new Exception('miss update condition'); } else { $options['where']['AND'] = $where; $query->setOption('where', ['AND' => $where]); } } elseif (!isset($key) && is_string($pk) && isset($options['where']['AND'][$pk])) { $key = $this->getCacheKey($query, $options['where']['AND'][$pk]); } // 更新数据 $query->setOption('data', $data); // 生成UPDATE SQL语句 $sql = $this->builder->update($query); $bind = $query->getBind(); if (!empty($options['fetch_sql'])) { // 获取实际执行的SQL语句 return $this->getRealSql($sql, $bind); } // 检测缓存 $cache = Container::get('cache'); if (isset($key) && $cache->get($key)) { // 删除缓存 $cache->rm($key); } elseif (!empty($options['cache']['tag'])) { $cache->clear($options['cache']['tag']); } // 执行操作 $result = '' == $sql ? 0 : $this->execute($sql, $bind); if ($result) { if (is_string($pk) && isset($where[$pk])) { $data[$pk] = $where[$pk]; } elseif (is_string($pk) && isset($key) && strpos($key, '|')) { list($a, $val) = explode('|', $key); $data[$pk] = $val; } $query->setOption('data', $data); $query->trigger('after_update'); }return $result; 刚刚我们将用户可控的 $data set到 $query['options'] 中,这里我们先获取 $query['options'] 内容到 $options 中,然后对Data进行解析 $data = $this->parseData($query, $options['data']); 第1146行, $query->setOption(‘data’, $data); 这里将用户传递的 $data set到 $query 变量中,为下一步的生 成 UPDATE SQL语句做准备,执行 $sql = $this->builder->update($query); 语句,重点马上要来了,跟进 Builder.php:1139, think\db\Builder->update() 函数 //Builder.php:1139, think\db\Builder->update() public function update(Query $query) { $options = $query->getOptions(); $table = $this->parseTable($query, $options['table']); $data = $this->parseData($query, $options['data']); if (empty($data)) { return ''; } foreach ($data as $key => $val) { $set[] = $key . ' = ' . $val; } return str_replace( ['%TABLE%', '%SET%', '%JOIN%', '%WHERE%', '%ORDER%', '%LIMIT%', '%LOCK%', '%COMMENT%'], } [ $this->parseTable($query, $options['table']), implode(' , ', $set), $this->parseJoin($query, $options['join']), $this->parseWhere($query, $options['where']), $this->parseOrder($query, $options['order']), $this->parseLimit($query, $options['limit']), $this->parseLock($query, $options['lock']), $this->parseComment($query, $options['comment']), ], $this->updateSql);刚刚我们将用户可控的 $data set到 $query['options'] 中,这里我们先获取 $query['options'] 内容到 $options 中,然后对Data进行解析 $data = $this->parseData($query, $options['data']); //Builder.php:147, think\db\Builder->parseData() protected function parseData(Query $query, $data = [], $fields = [], $bind = [], $suffix = '') { if (empty($data)) { return []; } $options = $query->getOptions(); // 获取绑定信息 if (empty($bind)) { $bind = $this->connection->getFieldsBind($options['table']); } if (empty($fields)) { if ('*' == $options['field']) { $fields = array_keys($bind); } else { $fields = $options['field']; } } $result = []; foreach ($data as $key => $val) { $item = $this->parseKey($query, $key); if ($val instanceof Expression) { $result[$item] = $val->getValue(); continue; } elseif (!is_scalar($val) && (in_array($key, (array) $query->getOptions('json')) || 'json' == $this->connection->getFieldsType($options['table'], $key))) { $val = json_encode($val); } elseif (is_object($val) && method_exists($val, '__toString')) { // 对象数据写入 $val = $val->__toString(); } if (false !== strpos($key, '->')) { list($key, $name) = explode('->', $key); $item = $this->parseKey($query, $key); $result[$item] = 'json_set(' . $item . ', \'$.' . $name . '\', ' . $this- >parseDataBind($query, $key, $val, $bind, $suffix) . ')'; } elseif (false === strpos($key, '.') && !in_array($key, $fields, true)) { if ($options['strict']) { throw new Exception('fields not exists:[' . $key . ']'); } } elseif (is_null($val)) { $result[$item] = 'NULL'; } elseif (is_array($val) && !empty($val)) { switch ($val[0]) { case 'INC': $result[$item] = $item . ' + ' . floatval($val[1]); break; case 'DEC': $result[$item] = $item . ' - ' . floatval($val[1]); break; default: $value = $this->parseArrayData($query, $val); if ($value) { $result[$item] = $value; } } } elseif (is_scalar($val)) { // 过滤非标量数据 $result[$item] = $this->parseDataBind($query, $key, $val, $bind, $suffix); } } return $result; } //Mysql.php:200, think\db\builder\Mysql->parseArrayData() protected function parseArrayData(Query $query, $data) { list($type, $value) = $data; switch (strtolower($type)) { case 'point': $fun = isset($data[2]) ? $data[2] : 'GeomFromText'; $point = isset($data[3]) ? $data[3] : 'POINT'; //在第115行,通过 foreach ($data as $key => $val) 处理 $data ,然后解析 $key 保存到 $item 变量中去,之后 执行下面的判断逻辑,想要合理地进入各个判断分支,就要巧妙的构造 $key 和 $value 也就是 $data 的值。紧接 着我们进入漏洞触发点 $value = $this->parseArrayData($query, $val); ,跟进函数 $value = $this- >parseArrayData($query, $val); //Mysql.php:200, think\db\builder\Mysql->parseArrayData() protected function parseArrayData(Query $query, $data) { list($type, $value) = $data; switch (strtolower($type)) { case 'point': $fun = isset($data[2]) ? $data[2] : 'GeomFromText'; $point = isset($data[3]) ? $data[3] : 'POINT'; if (is_array($value)) { $value = implode(' ', $value); } $result = $fun . '(\'' . $point . '(' . $value . ')\')';//需要简单的构造一下sql语 break; default: }这里 $type 、 $value 和 $data 均为可控值,那么函数返回的 $result 也就是可控的。回到上一个 Builder.php 文件中,将返回的结果赋值到 $result[$item] = $value; 中,之后的生成SQL语句和常见的流程没有任何差别不在 展开具体分析。 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/129.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  5. 局部变量对于局部变量,只能在引用的函数中使用。而结束函数后,该变量也失去了意义。 全局变量顾名思义,全局变量就是在整个项目中都可以进行调用。但需要注意的是,在函数中是不能直接进行调用的,我们需要关键词globla进行声明就就可以了。 静态变量静态变量,其值是不会发生变化。通常用关键词static定义静态变量。 实例代码<?php /** 全局变量 、局部变量、静态变量。 **/ $c=6; $d=9; function bbs($a,$b){ echo "局部变量结果:" .$a*$b."</br>"; } ?> <?php function kali(){ global $c,$d; echo "全局变量结果:".$c*$d."</br>"; } ?> <?php function cn(){ static $f=1; echo "静态变量:".$f."</br>"; $f++; } ?> <?php bbs(7,7); kali(); cn(); cn(); ?> 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/195.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  6. kali linux是默认安装java环境的,那么他该怎么样运行其他平台下的java软件呢?一:我们先在windows下编写一个小小的java程序。 附上源码: package kali; import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JTextField; import javax.swing.JPasswordField; import javax.swing.JButton; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class Kinux extends JFrame { private JPanel contentPane; private JTextField textField; private JPasswordField passwordField; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { Kinux frame = new Kinux(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public Kinux() { setTitle("bbskali"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); textField = new JTextField(); textField.setText("用户名"); textField.setBounds(117, 47, 196, 30); contentPane.add(textField); textField.setColumns(10); passwordField = new JPasswordField(); passwordField.setToolTipText("密码"); passwordField.setBounds(117, 94, 196, 30); contentPane.add(passwordField); JButton btnNewButton = new JButton("登录"); btnNewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { Object[] options = { "OK", "CANCEL" }; JOptionPane.showOptionDialog(null, "请输入用户名", "错误提示", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); } }); btnNewButton.setBounds(117, 150, 93, 23); contentPane.add(btnNewButton); JButton btnNewButton_1 = new JButton("退出"); btnNewButton_1.setBounds(220, 150, 93, 23); contentPane.add(btnNewButton_1); } }二:生成可运行的jar程序。如图,在windows下我们运行java程序,效果如下: 一个简单的登录窗口。 那么,我们如何在linux下运行我们的java程序呢? 三:kali 下运行jar 我们只需要执行命令: java -jar xxx.jar这样,我们的java程序也就在kali下运行 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/197.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  7. 局部变量对于局部变量,只能在引用的函数中使用。而结束函数后,该变量也失去了意义。 全局变量顾名思义,全局变量就是在整个项目中都可以进行调用。但需要注意的是,在函数中是不能直接进行调用的,我们需要关键词globla进行声明就就可以了。 静态变量静态变量,其值是不会发生变化。通常用关键词static定义静态变量。 实例代码<?php /** 全局变量 、局部变量、静态变量。 **/ $c=6; $d=9; function bbs($a,$b){ echo "局部变量结果:" .$a*$b."</br>"; } ?> <?php function kali(){ global $c,$d; echo "全局变量结果:".$c*$d."</br>"; } ?> <?php function cn(){ static $f=1; echo "静态变量:".$f."</br>"; $f++; } ?> <?php bbs(7,7); kali(); cn(); cn(); ?> 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/195.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  8. kali linux是默认安装java环境的,那么他该怎么样运行其他平台下的java软件呢?一:我们先在windows下编写一个小小的java程序。 附上源码: package kali; import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JTextField; import javax.swing.JPasswordField; import javax.swing.JButton; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class Kinux extends JFrame { private JPanel contentPane; private JTextField textField; private JPasswordField passwordField; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { Kinux frame = new Kinux(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public Kinux() { setTitle("bbskali"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); textField = new JTextField(); textField.setText("用户名"); textField.setBounds(117, 47, 196, 30); contentPane.add(textField); textField.setColumns(10); passwordField = new JPasswordField(); passwordField.setToolTipText("密码"); passwordField.setBounds(117, 94, 196, 30); contentPane.add(passwordField); JButton btnNewButton = new JButton("登录"); btnNewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { Object[] options = { "OK", "CANCEL" }; JOptionPane.showOptionDialog(null, "请输入用户名", "错误提示", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); } }); btnNewButton.setBounds(117, 150, 93, 23); contentPane.add(btnNewButton); JButton btnNewButton_1 = new JButton("退出"); btnNewButton_1.setBounds(220, 150, 93, 23); contentPane.add(btnNewButton_1); } }二:生成可运行的jar程序。如图,在windows下我们运行java程序,效果如下: 一个简单的登录窗口。 那么,我们如何在linux下运行我们的java程序呢? 三:kali 下运行jar 我们只需要执行命令: java -jar xxx.jar这样,我们的java程序也就在kali下运行 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/197.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  9. 题记一次在开发PHP时,需要参考一段代码。然后从伟大的度娘哪里百度了一段。可以实现我们想要的功能,但是当我在修改代码的过程中,遇到了下面情况。<?php // Copyright(C) 2008-2012 www.axphp.com, All rights reserved. $OOO0O0O00=__FILE__;$OOO000000=urldecode('%74%68%36%73%62%65%68%71%6c%61%34%63%6f%5f%73%61%64%66%70%6e%72');$OO00O0000=1300;$OOO0000O0=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5};$OOO0000O0.=$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16};$OOO0000O0.=$OOO0000O0{3}.$OOO000000{11}.$OOO000000{12}.$OOO0000O0{7}.$OOO000000{5};$O0O0000O0='OOO0000O0';eval(($$O0O0000O0('JE9PME9PMDAwMD0kT09PMDAwMDAwezE3fS4kT09PMDAwMDAwezEyfS4kT09PMDAwMDAwezE4fS4kT09PMDAwMDAwezV9LiRPT08wMDAwMDB7MTl9O2lmKCEwKSRPMDAwTzBPMDA9JE9PME9PMDAwMCgkT09PME8wTzAwLCdyYicpOyRPTzBPTzAwME89JE9PTzAwMDAwMHsxN30uJE9PTzAwMDAwMHsyMH0uJE9PTzAwMDAwMHs1fS4kT09PMDAwMDAwezl9LiRPT08wMDAwMDB7MTZ9OyRPTzBPTzAwTzA9JE9PTzAwMDAwMHsxNH0uJE9PTzAwMDAwMHswfS4kT09PMDAwMDAwezIwfS4kT09PMDAwMDAwezB9LiRPT08wMDAwMDB7MjB9OyRPTzBPTzAwME8oJE8wMDBPME8wMCwxMTk1KTskT08wME8wME8wPSgkT09PMDAwME8wKCRPTzBPTzAwTzAoJE9PME9PMDAwTygkTzAwME8wTzAwLDM4MCksJ21OcnVKaGxGSWZaSGFpNTlldEdQblFNQ1lUeStiQXczelgvMEJzZ1ZXZDY3TzJTVTFvanZEYzRScXBFTDhLeGs9JywnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLycpKSk7ZXZhbCgkT08wME8wME8wKTs=')));return;?> fJK9auN9auN9aucvAFf3bgQ1+lh0TGzVCcKlGnohCc8VHrIVI/qBPDK9aJ81Pvm1H/IVI/1WfJK9Pvm1auN9arzBPD81PD81aJ81Zrt9PvN9Pvm1aJ8WfJ81auN9aJ81ar1BPD81aJ81aum1ZG1V+npjAndW+JTfTsdIYMBc5MQDtcNSnncuMQtpZ4fNAviEMr81eViVQsABi0A9asiQaMK6ABt0ihfobJQa5J2qyvDVHrANeBiJtnTFGJsZGDoiPBKenQfPQhQMQcXTMgh/Y4tsTgAWyMd7+lcS+RNobViDACTRwFsEauJjaveci0bq5GOUfjBdZGBLTgiO+RisZrt9aum1PvN9aumd54Q4YM1WfJK9auN9auN9arBLuedjTChcyCfsIrbSH/K2YMsOC4iU+gTdTjp1yFmV51DZbgQoAMsjTGmVYCX1yFN3TMcXyM1SblX1fvOir/tDyCtOTPDBCcN9nct+fRtdAlosfcDLueWBY4KSAlQSAuDBCcN9nct+f4iU+Vts+VeVCPOir/tvTMpBTlKs+Mhd+0DBCcN9nct+fRis+gtB+4Q2YMsSfcDLueWBb4cDbFisbVTsb/mKIrtXwFNWbhOVb4QjAgQjfcDLueWBb4cDbFisbVTsbVNUbVez9GtXwFNWbhOVblKjArAA51DZfFi2AFNcb4Qj+Mhd+rmKIrtXwFNWbhOVTMcXyM1VCPOir/tv+Ct1ACisb/mKIrtXwFNWbhOV+Mhd+FQvTCIVCPOir/tv+Ct1blhvbjmKIrtXwFNWbhOV+Mhd+FNXbRaVCPOir/t2YMsObRQ/ygQ0ArmKIrtDyCtOTPOir/t2YMsOYgKBwGmKIrt0+4pDTMpD51DZflcXyMoDwCNsIuDzIBXnPn1/51DZfFi/9PmLueWBb4QSTlhjbghp9MQqbloUTlnWI/1/HrtvTMpBTlKs+Mhd+/BLueWBTMcXyMoSAMDKY4Kc+VeWfFis+gtXbVfXwGBLuedg+RfsYMiWZrtvTMpBYCfjYCBzYCazflQ2YMsOTlKB+4tUZeDZw1DZfFi2AFNs+Mhd+FtUIuDzflQ2YMsOTlKB+4tU51DZfFi2AFmz9GNSTCbzb4cDbrzBb4cDbFisbVTsb/1Bb4cDbFisbVTsbVNUbVeOAFfcTG1Bb4cDbFQvTCIOfFi2AFN1YCivZPOir/tv+Ct1HPpBTMfcTjmKIlTX+Fis51DZfFi2AFm29Vis+gt2YMsOZrtv+Ct1TMcXyMoD+j1Bb4cDbFQvTCf2YMsOHrt2YMsObRQ/ygQ0Ar1B+Mhd+lfUTFBOflcXyMoDwCNsZPOirVDir02sY4XUIrbir0ovYRfdbFezAFs1TPD/AlQqArK6YCTXb4ijyCNDI0qirghOTCfDZh1Vo97aq+4LD868kO7KS+Izfv2sY4XUIrts+Mhd+lpc+POLTMiW+jmVIH04HH9fSyyRWOUiIrbLTMiW+jmBTMcXyMoSAMDL54Q0yl8zfjrqK/jRWOUij6w1RrmV54Q0yl8zfFi/5v2sY4XUIrbzS9TbClpbClERWOUiO8gpdOHZ5/moaumsChoSChoSSiueS86pD851WOLRci79RK9ZU9LIS7w/vLCiOE5XCrbd54oUY4hDyMKSHgXjTMYKCrAXTlcd+/p1yFNbfvO8HRi0bgs1AuqV51==恩恩,这是什么鬼! 查了下 $OOO0O0O00=__FILE__;$OOO000000是用来加密的,那么我们该如何处理这个问题呢? 借助伟大的google粑粑。我找到了一个解密网站。 微盾解密:https://yoursunny.com/p/PHP-decode/ 我们打开网站,复制上面的代码,然后点解解密即可。 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/212.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  10. 题记一次在开发PHP时,需要参考一段代码。然后从伟大的度娘哪里百度了一段。可以实现我们想要的功能,但是当我在修改代码的过程中,遇到了下面情况。<?php // Copyright(C) 2008-2012 www.axphp.com, All rights reserved. $OOO0O0O00=__FILE__;$OOO000000=urldecode('%74%68%36%73%62%65%68%71%6c%61%34%63%6f%5f%73%61%64%66%70%6e%72');$OO00O0000=1300;$OOO0000O0=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5};$OOO0000O0.=$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16};$OOO0000O0.=$OOO0000O0{3}.$OOO000000{11}.$OOO000000{12}.$OOO0000O0{7}.$OOO000000{5};$O0O0000O0='OOO0000O0';eval(($$O0O0000O0('JE9PME9PMDAwMD0kT09PMDAwMDAwezE3fS4kT09PMDAwMDAwezEyfS4kT09PMDAwMDAwezE4fS4kT09PMDAwMDAwezV9LiRPT08wMDAwMDB7MTl9O2lmKCEwKSRPMDAwTzBPMDA9JE9PME9PMDAwMCgkT09PME8wTzAwLCdyYicpOyRPTzBPTzAwME89JE9PTzAwMDAwMHsxN30uJE9PTzAwMDAwMHsyMH0uJE9PTzAwMDAwMHs1fS4kT09PMDAwMDAwezl9LiRPT08wMDAwMDB7MTZ9OyRPTzBPTzAwTzA9JE9PTzAwMDAwMHsxNH0uJE9PTzAwMDAwMHswfS4kT09PMDAwMDAwezIwfS4kT09PMDAwMDAwezB9LiRPT08wMDAwMDB7MjB9OyRPTzBPTzAwME8oJE8wMDBPME8wMCwxMTk1KTskT08wME8wME8wPSgkT09PMDAwME8wKCRPTzBPTzAwTzAoJE9PME9PMDAwTygkTzAwME8wTzAwLDM4MCksJ21OcnVKaGxGSWZaSGFpNTlldEdQblFNQ1lUeStiQXczelgvMEJzZ1ZXZDY3TzJTVTFvanZEYzRScXBFTDhLeGs9JywnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLycpKSk7ZXZhbCgkT08wME8wME8wKTs=')));return;?> fJK9auN9auN9aucvAFf3bgQ1+lh0TGzVCcKlGnohCc8VHrIVI/qBPDK9aJ81Pvm1H/IVI/1WfJK9Pvm1auN9arzBPD81PD81aJ81Zrt9PvN9Pvm1aJ8WfJ81auN9aJ81ar1BPD81aJ81aum1ZG1V+npjAndW+JTfTsdIYMBc5MQDtcNSnncuMQtpZ4fNAviEMr81eViVQsABi0A9asiQaMK6ABt0ihfobJQa5J2qyvDVHrANeBiJtnTFGJsZGDoiPBKenQfPQhQMQcXTMgh/Y4tsTgAWyMd7+lcS+RNobViDACTRwFsEauJjaveci0bq5GOUfjBdZGBLTgiO+RisZrt9aum1PvN9aumd54Q4YM1WfJK9auN9auN9arBLuedjTChcyCfsIrbSH/K2YMsOC4iU+gTdTjp1yFmV51DZbgQoAMsjTGmVYCX1yFN3TMcXyM1SblX1fvOir/tDyCtOTPDBCcN9nct+fRtdAlosfcDLueWBY4KSAlQSAuDBCcN9nct+f4iU+Vts+VeVCPOir/tvTMpBTlKs+Mhd+0DBCcN9nct+fRis+gtB+4Q2YMsSfcDLueWBb4cDbFisbVTsb/mKIrtXwFNWbhOVb4QjAgQjfcDLueWBb4cDbFisbVTsbVNUbVez9GtXwFNWbhOVblKjArAA51DZfFi2AFNcb4Qj+Mhd+rmKIrtXwFNWbhOVTMcXyM1VCPOir/tv+Ct1ACisb/mKIrtXwFNWbhOV+Mhd+FQvTCIVCPOir/tv+Ct1blhvbjmKIrtXwFNWbhOV+Mhd+FNXbRaVCPOir/t2YMsObRQ/ygQ0ArmKIrtDyCtOTPOir/t2YMsOYgKBwGmKIrt0+4pDTMpD51DZflcXyMoDwCNsIuDzIBXnPn1/51DZfFi/9PmLueWBb4QSTlhjbghp9MQqbloUTlnWI/1/HrtvTMpBTlKs+Mhd+/BLueWBTMcXyMoSAMDKY4Kc+VeWfFis+gtXbVfXwGBLuedg+RfsYMiWZrtvTMpBYCfjYCBzYCazflQ2YMsOTlKB+4tUZeDZw1DZfFi2AFNs+Mhd+FtUIuDzflQ2YMsOTlKB+4tU51DZfFi2AFmz9GNSTCbzb4cDbrzBb4cDbFisbVTsb/1Bb4cDbFisbVTsbVNUbVeOAFfcTG1Bb4cDbFQvTCIOfFi2AFN1YCivZPOir/tv+Ct1HPpBTMfcTjmKIlTX+Fis51DZfFi2AFm29Vis+gt2YMsOZrtv+Ct1TMcXyMoD+j1Bb4cDbFQvTCf2YMsOHrt2YMsObRQ/ygQ0Ar1B+Mhd+lfUTFBOflcXyMoDwCNsZPOirVDir02sY4XUIrbir0ovYRfdbFezAFs1TPD/AlQqArK6YCTXb4ijyCNDI0qirghOTCfDZh1Vo97aq+4LD868kO7KS+Izfv2sY4XUIrts+Mhd+lpc+POLTMiW+jmVIH04HH9fSyyRWOUiIrbLTMiW+jmBTMcXyMoSAMDL54Q0yl8zfjrqK/jRWOUij6w1RrmV54Q0yl8zfFi/5v2sY4XUIrbzS9TbClpbClERWOUiO8gpdOHZ5/moaumsChoSChoSSiueS86pD851WOLRci79RK9ZU9LIS7w/vLCiOE5XCrbd54oUY4hDyMKSHgXjTMYKCrAXTlcd+/p1yFNbfvO8HRi0bgs1AuqV51==恩恩,这是什么鬼! 查了下 $OOO0O0O00=__FILE__;$OOO000000是用来加密的,那么我们该如何处理这个问题呢? 借助伟大的google粑粑。我找到了一个解密网站。 微盾解密:https://yoursunny.com/p/PHP-decode/ 我们打开网站,复制上面的代码,然后点解解密即可。 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/212.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  11. jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class Lcy { public static void main(String[] args) { String html = "<a href=\"http://bbskali.cn">kali论坛</a>"; Document doc = Jsoup.parse(html); Elements link = doc.getElementsByTag("a"); Element a = link.get(0); System.out.println(a.attr("href")); } } 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/235.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  12. jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class Lcy { public static void main(String[] args) { String html = "<a href=\"http://bbskali.cn">kali论坛</a>"; Document doc = Jsoup.parse(html); Elements link = doc.getElementsByTag("a"); Element a = link.get(0); System.out.println(a.attr("href")); } } 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/235.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  13. 一:坦克大战源码 import java.util.ArrayList; import java.awt.*; import java.awt.event.*; import java.util.List; import javax.swing.JOptionPane; public class TankClient extends Frame implements ActionListener { /** * */ private static final long serialVersionUID = 1L; public static final int Fram_width = 800; // public static final int Fram_length = 600; public static boolean printable = true; MenuBar jmb = null; Menu jm1 = null, jm2 = null, jm3 = null, jm4 = null; MenuItem jmi1 = null, jmi2 = null, jmi3 = null, jmi4 = null, jmi5 = null, jmi6 = null, jmi7 = null, jmi8 = null, jmi9 = null; Image screenImage = null; Tank homeTank = new Tank(300, 560, true, Direction.STOP, this);// GetBlood blood = new GetBlood(); Home home = new Home(373, 545, this); List<River> theRiver = new ArrayList<River>(); List<Tank> tanks = new ArrayList<Tank>(); List<BombTank> bombTanks = new ArrayList<BombTank>(); List<Bullets> bullets = new ArrayList<Bullets>(); List<Tree> trees = new ArrayList<Tree>(); List<CommonWall> homeWall = new ArrayList<CommonWall>(); List<CommonWall> otherWall = new ArrayList<CommonWall>(); List<MetalWall> metalWall = new ArrayList<MetalWall>(); public void update(Graphics g) { screenImage = this.createImage(Fram_width, Fram_length); Graphics gps = screenImage.getGraphics(); Color c = gps.getColor(); gps.setColor(Color.GRAY); gps.fillRect(0, 0, Fram_width, Fram_length); gps.setColor(c); framPaint(gps); g.drawImage(screenImage, 0, 0, null); } public void framPaint(Graphics g) { Color c = g.getColor(); g.setColor(Color.green); Font f1 = g.getFont(); g.setFont(new Font("TimesRoman", Font.BOLD, 20)); g.drawString("最高分: ", 200, 70); g.setFont(new Font("TimesRoman", Font.ITALIC, 30)); g.drawString("" + tanks.size(), 400, 70); g.setFont(new Font("TimesRoman", Font.BOLD, 20)); g.drawString("得分ֵ: ", 500, 70); g.setFont(new Font("TimesRoman", Font.ITALIC, 30)); g.drawString("" + homeTank.getLife(), 650, 70); g.setFont(f1); if (tanks.size() == 0 && home.isLive() && homeTank.isLive()) { Font f = g.getFont(); g.setFont(new Font("TimesRoman", Font.BOLD, 60)); this.otherWall.clear(); g.drawString(" ", 310, 300); g.setFont(f); } if (homeTank.isLive() == false) { Font f = g.getFont(); g.setFont(new Font("TimesRoman", Font.BOLD, 40)); tanks.clear(); bullets.clear(); g.setFont(f); } g.setColor(c); for (int i = 0; i < theRiver.size(); i++) { River r = theRiver.get(i); r.draw(g); } for (int i = 0; i < theRiver.size(); i++) { River r = theRiver.get(i); homeTank.collideRiver(r); r.draw(g); } home.draw(g); homeTank.draw(g); homeTank.eat(blood); for (int i = 0; i < bullets.size(); i++) { Bullets m = bullets.get(i); m.hitTanks(tanks); m.hitTank(homeTank); 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/237.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  14. 一:坦克大战源码 import java.util.ArrayList; import java.awt.*; import java.awt.event.*; import java.util.List; import javax.swing.JOptionPane; public class TankClient extends Frame implements ActionListener { /** * */ private static final long serialVersionUID = 1L; public static final int Fram_width = 800; // public static final int Fram_length = 600; public static boolean printable = true; MenuBar jmb = null; Menu jm1 = null, jm2 = null, jm3 = null, jm4 = null; MenuItem jmi1 = null, jmi2 = null, jmi3 = null, jmi4 = null, jmi5 = null, jmi6 = null, jmi7 = null, jmi8 = null, jmi9 = null; Image screenImage = null; Tank homeTank = new Tank(300, 560, true, Direction.STOP, this);// GetBlood blood = new GetBlood(); Home home = new Home(373, 545, this); List<River> theRiver = new ArrayList<River>(); List<Tank> tanks = new ArrayList<Tank>(); List<BombTank> bombTanks = new ArrayList<BombTank>(); List<Bullets> bullets = new ArrayList<Bullets>(); List<Tree> trees = new ArrayList<Tree>(); List<CommonWall> homeWall = new ArrayList<CommonWall>(); List<CommonWall> otherWall = new ArrayList<CommonWall>(); List<MetalWall> metalWall = new ArrayList<MetalWall>(); public void update(Graphics g) { screenImage = this.createImage(Fram_width, Fram_length); Graphics gps = screenImage.getGraphics(); Color c = gps.getColor(); gps.setColor(Color.GRAY); gps.fillRect(0, 0, Fram_width, Fram_length); gps.setColor(c); framPaint(gps); g.drawImage(screenImage, 0, 0, null); } public void framPaint(Graphics g) { Color c = g.getColor(); g.setColor(Color.green); Font f1 = g.getFont(); g.setFont(new Font("TimesRoman", Font.BOLD, 20)); g.drawString("最高分: ", 200, 70); g.setFont(new Font("TimesRoman", Font.ITALIC, 30)); g.drawString("" + tanks.size(), 400, 70); g.setFont(new Font("TimesRoman", Font.BOLD, 20)); g.drawString("得分ֵ: ", 500, 70); g.setFont(new Font("TimesRoman", Font.ITALIC, 30)); g.drawString("" + homeTank.getLife(), 650, 70); g.setFont(f1); if (tanks.size() == 0 && home.isLive() && homeTank.isLive()) { Font f = g.getFont(); g.setFont(new Font("TimesRoman", Font.BOLD, 60)); this.otherWall.clear(); g.drawString(" ", 310, 300); g.setFont(f); } if (homeTank.isLive() == false) { Font f = g.getFont(); g.setFont(new Font("TimesRoman", Font.BOLD, 40)); tanks.clear(); bullets.clear(); g.setFont(f); } g.setColor(c); for (int i = 0; i < theRiver.size(); i++) { River r = theRiver.get(i); r.draw(g); } for (int i = 0; i < theRiver.size(); i++) { River r = theRiver.get(i); homeTank.collideRiver(r); r.draw(g); } home.draw(g); homeTank.draw(g); homeTank.eat(blood); for (int i = 0; i < bullets.size(); i++) { Bullets m = bullets.get(i); m.hitTanks(tanks); m.hitTank(homeTank); 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/237.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  15. 文件读取代码如下: package priess; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; public class Mytxt { public static String txt2String(File file){ StringBuilder result = new StringBuilder(); try{ BufferedReader br = new BufferedReader(new FileReader(file));//构造一个BufferedReader类来读取文件 String s = null; while((s = br.readLine())!=null){//使用readLine方法,一次读一行 result.append(System.lineSeparator()+s); } br.close(); }catch(Exception e){ e.printStackTrace(); } return result.toString(); } public static void main(String[] args){ File file = new File("D:/errlog.txt"); System.out.println(txt2String(file)); } }文件写操作代码: package priess; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; public class MYtxtxie { static String b="hello world"; static int a=123; public static void main(String args[]){ contentToTxt("D:\\java.txt",a+b); } public static void contentToTxt(String filePath, String content) { try{ BufferedWriter writer = new BufferedWriter(new FileWriter(new File(filePath),true)); writer.write("\n"+content); writer.close(); }catch(Exception e){ e.printStackTrace(); } } } 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/325.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  16. 文件读取代码如下: package priess; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; public class Mytxt { public static String txt2String(File file){ StringBuilder result = new StringBuilder(); try{ BufferedReader br = new BufferedReader(new FileReader(file));//构造一个BufferedReader类来读取文件 String s = null; while((s = br.readLine())!=null){//使用readLine方法,一次读一行 result.append(System.lineSeparator()+s); } br.close(); }catch(Exception e){ e.printStackTrace(); } return result.toString(); } public static void main(String[] args){ File file = new File("D:/errlog.txt"); System.out.println(txt2String(file)); } }文件写操作代码: package priess; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; public class MYtxtxie { static String b="hello world"; static int a=123; public static void main(String args[]){ contentToTxt("D:\\java.txt",a+b); } public static void contentToTxt(String filePath, String content) { try{ BufferedWriter writer = new BufferedWriter(new FileWriter(new File(filePath),true)); writer.write("\n"+content); writer.close(); }catch(Exception e){ e.printStackTrace(); } } } 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/325.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  17. 效果 java代码import java.awt.BorderLayout; import java.awt.Component; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JLabel; import javax.swing.JOptionPane; import java.awt.Font; import javax.swing.JButton; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.Color; import javax.swing.JTabbedPane; import javax.swing.ImageIcon; public class love extends JFrame { /** * */ private static final long serialVersionUID = 5430219520645185275L; private JPanel contentPane; protected Component frame; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { love frame = new love(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public love() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); JLabel label = new JLabel("小姐姐处对象吗?"); label.setFont(new Font("幼圆", Font.PLAIN, 18)); label.setBounds(147, 20, 211, 41); contentPane.add(label); JButton button = new JButton("好的"); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { JOptionPane.showMessageDialog(null, "恭喜!成功拿下!", "表白幺~",JOptionPane.PLAIN_MESSAGE); } }); button.setBounds(98, 179, 93, 23); contentPane.add(button); JButton button_1 = new JButton("不行"); button_1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showConfirmDialog(null, "房子写你名", "表白~",JOptionPane.YES_NO_OPTION); JOptionPane.showConfirmDialog(null, "我会做饭", "表白~",JOptionPane.YES_NO_OPTION); JOptionPane.showConfirmDialog(null, "我会洗衣服", "表白~",JOptionPane.YES_NO_OPTION); JOptionPane.showMessageDialog(null, "现在可以成为我女票吗?", "表白幺~",JOptionPane.PLAIN_MESSAGE); JOptionPane.showMessageDialog(null, "恭喜!成功拿下!", "表白幺~",JOptionPane.PLAIN_MESSAGE); } }); button_1.setBounds(251, 179, 93, 23); contentPane.add(button_1); JLabel lblNewLabel = new JLabel(""); lblNewLabel.setIcon(new ImageIcon("love.png")); lblNewLabel.setBounds(157, 57, 114, 98); contentPane.add(lblNewLabel); } } 附件下载表白器.zip 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/338.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  18. 效果 java代码import java.awt.BorderLayout; import java.awt.Component; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JLabel; import javax.swing.JOptionPane; import java.awt.Font; import javax.swing.JButton; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.Color; import javax.swing.JTabbedPane; import javax.swing.ImageIcon; public class love extends JFrame { /** * */ private static final long serialVersionUID = 5430219520645185275L; private JPanel contentPane; protected Component frame; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { love frame = new love(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public love() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); JLabel label = new JLabel("小姐姐处对象吗?"); label.setFont(new Font("幼圆", Font.PLAIN, 18)); label.setBounds(147, 20, 211, 41); contentPane.add(label); JButton button = new JButton("好的"); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { JOptionPane.showMessageDialog(null, "恭喜!成功拿下!", "表白幺~",JOptionPane.PLAIN_MESSAGE); } }); button.setBounds(98, 179, 93, 23); contentPane.add(button); JButton button_1 = new JButton("不行"); button_1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showConfirmDialog(null, "房子写你名", "表白~",JOptionPane.YES_NO_OPTION); JOptionPane.showConfirmDialog(null, "我会做饭", "表白~",JOptionPane.YES_NO_OPTION); JOptionPane.showConfirmDialog(null, "我会洗衣服", "表白~",JOptionPane.YES_NO_OPTION); JOptionPane.showMessageDialog(null, "现在可以成为我女票吗?", "表白幺~",JOptionPane.PLAIN_MESSAGE); JOptionPane.showMessageDialog(null, "恭喜!成功拿下!", "表白幺~",JOptionPane.PLAIN_MESSAGE); } }); button_1.setBounds(251, 179, 93, 23); contentPane.add(button_1); JLabel lblNewLabel = new JLabel(""); lblNewLabel.setIcon(new ImageIcon("love.png")); lblNewLabel.setBounds(157, 57, 114, 98); contentPane.add(lblNewLabel); } } 附件下载表白器.zip 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/338.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  19. 前言生成excel 当然使用的是 phpExcel这个类库了,可是它太麻烦了,对于只要简单生成来说有点不值得什么叫简单,把数据库的数据导入到excel就行了, 这个就是简单了 代码如下:<?php header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:filename=test.xls"); echo "test1\t"; echo "test2\t\n"; echo "test1\t"; echo "test2\t\n"; echo "test1\t"; echo "test2\t\n"; echo "test1\t"; echo "test2\t\n"; echo "test1\t"; echo "test2\t\n"; echo "test1\t"; echo "test2\t\n"; ?> 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/523.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
  20. 前言生成excel 当然使用的是 phpExcel这个类库了,可是它太麻烦了,对于只要简单生成来说有点不值得什么叫简单,把数据库的数据导入到excel就行了, 这个就是简单了 代码如下:<?php header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:filename=test.xls"); echo "test1\t"; echo "test2\t\n"; echo "test1\t"; echo "test2\t\n"; echo "test1\t"; echo "test2\t\n"; echo "test1\t"; echo "test2\t\n"; echo "test1\t"; echo "test2\t\n"; echo "test1\t"; echo "test2\t\n"; ?> 版权属于:逍遥子大表哥 本文链接:https://blog.bbskali.cn/523.html 按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    ×
    ×
    • 创建新的...