基于哈夫曼树的原理用java写的一个用来压缩解压图片的控制台小程序。
程序压缩思路大致如下:
1.读取文件字节,转换成int类型数据就是0-255范围内的整型,然后统计出现次数即权重
2.根据权重构造出哈夫曼树,然后生成哈夫曼编码
3.将主要的编码长度,哈夫曼编码表和文件转译成的哈夫曼编码串写入文件即压缩文件。
解压的思路大致如下:
1.读取压缩文件,先读出各编码长度,计算出总长度,然后根据总长度读出哈夫曼编码表。
2.哈夫曼编码的特性编码前缀不重复,然后循环遍历查找哈夫曼编码表转译成字节然后写入文件即解压文件








阅读全文 »

暑假的时候买了几本盗版书,一手抱着手机下载的juicessh远程连接云linux服务器一手抱着linux系统命令及shell脚本实践指南学怎么用linux,还买了深入浅出mysql,学mysql优化,讲道理这两本书都蛮不错的。开学就直接实操linux,把手上所有的站都换成了lamp环境。真的是跌跌撞撞的学,每天一点点的进步,然后现在能流畅操作linux感觉棒棒的。

值得庆幸的是自己从原先的嵌入式专业成功转专业到了网络工程,然后转成功第一周吧,就去上了一节课,第二周吧就去上了两节课,因为自己目标很明确,想学的不是学校教的那些东西,以后能用的也不是学校教的那些东西。最近花了200在慕课网买了thinkphp5的教程,这份教程至少够我学一个月了。慢慢成长,虽然起步慢了别人不止一点是吧,做到对得起自己就好。觉得自己在js,ajax方面还十分生疏,最近就会去深入学习下这方面,然后把tp5掌握下来。这就是暂时的一个小目标。

前几天和班导大人聊了很久,因为毕业想去深圳打代码,于是就看了看深圳IT的一些招聘,大多数就是招java工程师,于是内心的尴尬癌迷茫症又犯了。但是吧,真真学好一门语言,肯定不会差。
最后感谢岸哥这段时间帮助我过上了一段相比以前健康很多的生活!
最后看到这个php技能树,值得学习借鉴!
1442098137-56fd4f4c7ff17_articlex.png

多说乃各种建站系统评论框神器。你说吧,支持反垃圾(虽然效果好像不太好),支持各种第三方登录评论分享等等功能,就这样倒闭了?我欠多说一笔赞助吧= =、然后多说你倒闭了我博客之前的评论(虽然不多吧)怎么办吧,虽然支持json格式导出吧,可是我没导回到博客数据库的思路啊(男默女泪).不过更多的还是感谢吧,起码“曾经我们快乐过”。
QQ截图20170322155035.jpg
没了多说,以后评论啥的都得手动填写昵称啊邮箱啊网址啊,本来我这个人就懒。
然后博客现在换回了typecho自带的评论框,支持markdown语法,觉得还行吧。
最后还是期待有新的插件啥的出来,付费都可以吧,现在越来越觉得付费的才是真的好。

利用网易邮箱的smtp功能。(大多数邮件服务商都提供有smtp功能的,如果不知道怎么使用这个功能可以联系我)。
然后先上phpmailer的github下载这个类库文件:https://github.com/PHPMailer/PHPMailer

下面是我刚刚测试发送用的一个sendmail.php文件代码

<?php
//引入类
$rootPath = dirname(__FILE__);
require $rootPath.'/phpmailer/PHPMailerAutoload.php';//加载在github下载下的类库下的PHPMailerAutoload.php

//Create a new PHPMailer instance
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host='smtp.163.com';
$mail->SMTPAuth=true;//需要认证吗
$mail->CharSet='UTF-8';//设置编码
$mail->Username='niubilitymail@163.com';
$mail->Password='xxxxxxxxx';
//$mail->SMTPSecure = 'tls'; //tls协议或者ssl协议
$mail->Port = 25; //smtp服务器端口

$mail->setFrom('niubilitymail@163.com','洪学林');//发件人邮箱和称呼
$mail->addAddress('774756759@qq.com','洪学林QQ邮箱');//收件人邮箱和称呼
$mail->addReplyTo('niubilitymail@163.com', '洪学林');//回复给谁
//$mail->addCC($address);//抄送
//$mail->addBCC($address);//抄送
//$mail->addAttachment('/var/tmp/file.tar.gz');//添加附件
////$mail->addAttachment('/var/tmp/file.tar.gz','new.jpg');//添加附件,附件名字
$mail->isHTML(true);//邮件内容有没有html内容
$mail->Subject = 'PHPMailer sendmail test';//邮件主题
//Read an HTML message body from an external file, convert referenced images to embedded,
//convert HTML into a basic plain-text alternative body
$mail->msgHTML(file_get_contents('content.html'), dirname(__FILE__));//将一个html页面填充到邮件正文
//Replace the plain text body with one created manually
$mail->AltBody = 'This is a plain-text message body';//我不知道干嘛用的哈哈哈
//Attach an image file
//$mail->addAttachment('images/phpmailer_mini.png');

//send the message, check for errors
if (!$mail->send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
} else {
    echo "Message sent!";
}

这个php文件内容都是写死的,只是做测试学习用。

字母数字都比较简单。对于汉字需要搞到字体库,电脑控制面板->外观和个性化->字体 里有很多字体文件可以拿来用。然后汉字需要转码utf8

<?php
session_start();

$image = imagecreatetruecolor(100,30);
$bgcolor = imagecolorallocate($image,255,255,255);
imagefill($image,0,0,$bgcolor);

/*/生成全数字验证内容
for($i=0;$i<4;$i++){
    $fontsize=6;
    $fontcolor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));//0-120是深色区间
    $fontcontent=rand(0,9);//数字内容
    $x=($i*100/4)+rand(5,10);
    $y=rand(5,10);
    imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
}*/

$captcha_data='';
/*/生成全数字+字母验证内容
for($i=0;$i<4;$i++){
    $fontsize=6;
    $fontcolor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));//0-120是深色区间
    $data='abcdefghijkmnpqrstuvwxyABCDEFGHIJKLMNPQRSTUVWXY3456789';
    $fontcontent=substr($data,rand(0, strlen($data)),1);//数字或者字母
    $captcha_data.=$fontcontent;
    $x=($i*100/4)+rand(5,10);
    $y=rand(5,10);
    imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
}
$_SESSION['captcha']=$captcha_data;
*/

/*
$str = "生成汉字验证内容汉字验证就是准备一个汉字库就好了对于这个汉字库里的汉字要求是编码然后还得是常用字体哦";
$str=iconv("GB2312","UTF-8",$str);
//生成汉字验证内容 汉字验证就是准备一个汉字库就好了 对于这个汉字库里的汉字要求是utf-8编码 然后还得是常用字体哦 汉字字体较大  然后需要将图层改为200*60合适
$strdb = str_split($str,3);//一个汉字占3个长度,把str里的汉字一个个的拆分保存为数组    
for($i=0;$i<4;$i++){
    $fontcolor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));//0-120是深色区间
    $index = rand(0,count($strdb)-1);
    $fontcontent=$strdb[$index];
    $captcha_data.=$fontcontent;
    imagettftext($image,rand(20, 24), rand(-60, 60), (40*$i+20), rand(30, 35),$fontcolor,'./msyh.ttf',$fontcontent);
}
//var_dump($captcha_data);
*/


//点-干扰元素
for($i=0;$i<200;$i++){
    $pointcolor = imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200));
    imagesetpixel($image,rand(1,99),rand(1,29),$pointcolor);
}

//线-干扰元素
for($i=0;$i<3;$i++){
    $linecolor = imagecolorallocate($image,rand(80,220),rand(80,220),rand(80,220));
    imageline($image,rand(1,99),rand(1,29),rand(1,99),rand(1,29),$linecolor);
    
    
}
header('content-type:image/png');
imagepng($image);

//end
imagedestroy($image);