活动参与人数大概150人左右,然后设计在公众号回复抽奖会随机获得一个一定范围内抽奖码,然后活动现场会在箱子里提前准备好一定范围的抽奖码纸条进行现场抽奖。基于这个需求,第一版代码只是简单的一个循环不断rand取值,回查数据库抽奖码是否产生过,如果是,重新随机rand取值。但这个思路写完就被我否决了= =,因为假设抽奖码产生了一大半了情况下,这样去随机到产生过抽奖码概率是很大的,增加了服务器数据库负担(虽然数据量很小,影响微乎其微),但是假设在数据量巨大上亿的情况下,这个问题如何解决。
于是在百度上一番查找,据random.org资料,将所有的数想象成一个表格?然后随机产生一个数,如果被使用过,那么随机选择上,下,左,右,移动一定的距离决定下一个数字。但是这貌似还是没解决如果范围内数据被用了一大半了,这效率还是很低啊。
在这个活动数据量很小的情况下,先给出解决方案,设计两张表,一张luck表存抽奖码和对应用户信息,一张status表存范围内所有的抽奖码,flag字段标记使用和未使用。每次用户发送抽奖指令,先判断是否抽过,是,则返回属于他的抽奖码,否则进入随机产生抽奖码流程->取出status表中flag为0未使用过的抽奖码,加入到数组,然后在数组中随机抽取一个,然后发送给用户,更新luck和status表最后exit。
但是这个思路在上亿数据面前,肯定不能取出来存数组吧,所以我觉得有必要看看大数据方面的知识?如果看官有好的思路,请指导我或者和我交流!
下面上代码,因为功能简单,直接一个php文件全写了。





阅读全文 »

基于哈夫曼树的原理用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文件内容都是写死的,只是做测试学习用。