你可能以为电脑永远不会坏,或者认为即使会坏,也没这么快。
但是连续两次的突发事故,彻底改变了我的想法。
一旦它损坏了,就会带来不可预测的损失。
一个公司的数据如果丢了,破产是有可能的,对一个个人来说,数据丢了,这个人也彻底废了。
第一次电脑损坏,导致了一年的低迷期,
刚过半年,又发生事故损坏了。
这一次,学精了,果断配置两台电脑,手机都配上两台,服务器备份什么的,必须。只有亲身经历过,才能懂的感受。
要毁掉一个程序员很简单:就是把它的电脑搞坏。
你可能以为电脑永远不会坏,或者认为即使会坏,也没这么快。
但是连续两次的突发事故,彻底改变了我的想法。
一旦它损坏了,就会带来不可预测的损失。
一个公司的数据如果丢了,破产是有可能的,对一个个人来说,数据丢了,这个人也彻底废了。
第一次电脑损坏,导致了一年的低迷期,
刚过半年,又发生事故损坏了。
这一次,学精了,果断配置两台电脑,手机都配上两台,服务器备份什么的,必须。只有亲身经历过,才能懂的感受。
要毁掉一个程序员很简单:就是把它的电脑搞坏。
正常来说,程序员离开了电脑,专业知识大部分都没用了。
制造和使用生产工具,是人区别于其他动物的标志。
弗里德里希·恩格斯
多部手机,多台电脑,服务器,是程序员必备。
方法一:利用CHAR()函数
方法二:CONVERT(数值,CHAR)
方法三:空字符串 + 加数字 (反过来也行,但是字符串内容能有非数字值)
方法四:字符串拼接函数,比如:CONCAT(‘字符串a’, 10, ‘字符b’, …)
影响三种内容。
这里的方法,是指类外的方法。
把数组中的元素按随机顺序重新排序:
语法:
shuffle( & array)
shuffle() 函数把数组中的元素按随机顺序重新排列。
该函数为数组中的元素分配新的键名。已有键名将被删除。
如果要保留 key ,可以手动写一个函数:
function shuffle_assoc($my_array)
{
$keys = array_keys($my_array);
shuffle($keys);
foreach($keys as $key) {
$new[$key] = $my_array[$key];
}
$my_array = $new;
return $my_array;
}
$colors = array("color1"=>"Red", "color2"=>"Green", "color3"=>"Yellow");
echo '<pre>';
print_r(shuffle_assoc($colors));
聊一聊常见的“过期”业务。
有一篇文章,我们可以设定它什么时候过期。
此时,只需要一个字段 ,比如指定 valid :假设为0时,则永不过期,否则为具体的过期时间。
筛选没过期的:valid=0 || valid > $now
筛选过期的:valid!=0 && $valid<$now
有一张优惠券,我们可以设定它的过期模式:
此时,需要两个字段,expire_type 记录过期类型,expire_value ,永不过期时value无效,指定时间时value是具体时间,购买后n天过期则value就是n。
中医认为人的身体有经络。
经络不同,则产生疾病,头和脚之间实际是有很多经络的(或者说经络是全身贯通的)。
但是今天突然感觉这个说法太模糊。
简单点来说,我认为:距离头越近的部位,越敏感!!!
虽然经络有些不通,但是脚的感觉很不敏感,能感觉到的通常只有头痛。
前面解释了,经络不同时为什么是头痛。
第二个,为什么医脚?怎么理解?
人的身体是靠脚来支撑的,脚上的肌肉更加发达,越接近脚的部位,越发达。
从脚入手,更容易治。(你可能要问了,掉头发,医脚有用吗?有!)
http 是无状态的,无法感知用户在线状态
登录增加在线人数、推出减少在线人数,这是非常不准确的做法(比如用户直接关闭浏览器,而不是点击退出系统,此时就无法正确的统计)
第一个办法:session 的个数
比如监听 session 创建,每创建一个session则增加一个在线人数,每销毁一个session就减少一个在线人数。在java里实现很简单。
package com.demo.listener;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class PeopleListener implements HttpSessionListener {
/**
* 监听session创建
* @param se
*/
@Override
public void sessionCreated(HttpSessionEvent se) {
ServletContext context = se.getSession().getServletContext();
Integer num = (Integer) context.getAttribute("online_num");
if(num == null)
num = 0;
++num;
context.setAttribute("online_num",num);
System.out.println("新增一位用户...");
}
/**
* 监听session销毁
* @param se
*/
@Override
public void sessionDestroyed(HttpSessionEvent se) {
ServletContext context = se.getSession().getServletContext();
Integer num = (Integer) context.getAttribute("online_num");
if(num == null)
num = 0;
else
--num;
context.setAttribute("online_num",num);
System.out.println("减少一位用户...");
}
}
对于 php 等没有 application 的语言,是无法获取session的个数的,此时可以通过把 session 存入数据库实现,比如在 session 创建时,记录(session_id())到数据库中,并记录添加的时间,每次点击都记录最新活动时间,并把5分钟外的session全部删掉,那么当前表中的记录数,就是当前在线人数。(尽管不那么精确,但是很接近了)
websocket方案
WebSocket技术实现了什么
在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。
则每次创建 websocket,则增加一个在线人数,websocket断开则减少一个在线人数。
服务器可以检测到 websocket 的活动,并进行广播,当前在线记录数考虑记录在 application 中,php等语言可以记录在数据库或redis。
最直接、成本最低且收效很高的回馈,就是说话
如果只是说谢谢你,辛苦你了,等等词语,虽然你可能是真心的,但对方却感觉不怎么样。
在说感谢的话,一定要加原因:
教大家两个公式:感谢+事件+感受,感谢+事件+效果。
“领导,谢谢您的肯定,我没想到您观察的这么仔细,我很感动。”这是说感受。
“领导啊,谢谢您。听您这么一说,我豁然开朗,以后就按您说的办。”豁然开朗,说的是感受。
“领导,感谢您对我工作的严要求,让我提升很快,这都是您的功劳。”提升快,是说效果。
“领导,以前我不会写材料,是您手把手教我,现在他们都夸我材料写得好,是您这个师傅教得好,我敬您。”他们夸我,说的也是效果。
“领导,上次那个事,多亏了您开导我,拉了我一把,您是我的及时雨。”
别人帮了你,要第一时间回馈,表达感谢。
一可以让对方心里舒服,觉得没白忙活;二能趁热打铁,促进关系升温;三为下次做铺垫、打基础,这次你表现好,对方才愿意帮你第二次。
我见过一些人,求人办事时,非常积极,一天好几个电话,恨不得每天黏在你身上。
事情一办完,马上冷下来,来往明显减少。当初说的付出什么代价都可以,事成之后,各种拖延,甚至躲着不见,典型的用人朝前不用人朝后。
这样的人很势利,目的性强,短期内确实能获利,但是走不远。
话说到位,心意到位,领导受用了,比送多少礼都有用。