[转]母亲的舍得

【编按】微信朋友圈传的文章,题目是自拟的,有人说可比语文课的《父亲的背影》,微言大义,是为推荐。

父亲去世10年后,在我的“软硬兼施”下,母亲终于同意来郑州跟着我——她最小的女儿一起生活。这一年,母亲70岁,我40岁。70岁的母亲瘦瘦的,原本只有一米五的身高,被岁月又缩减了几厘米,看起来更加瘦小,面容却仍然光洁,不见太多沧桑的痕迹,头发亦未全白,些许黑发倔强地生长着。 

我们借了一辆车回去接她,她早把居住了几十年的老屋收拾妥当,整理好了自己的行李。那些行李中有两袋面,是她用家里的麦子专门为我们磨的,这种面有麦香。但那天,那两袋面我决定不带了,因为车的后备箱太小,我们要带的东西太多。母亲却坚持把面带着,一定要带,她说。 

她这样说的时候,我忽然愣了一下,看着她,便想明白了什么,示意先生把面搬到里屋,我伸手在外面试探着去摸。果然,在底部,软软的面里有一小团硬硬的东西。如果我没猜错,里面是母亲要给我们的钱。 

把钱放在粮食里,是母亲很多年的秘密。十几年前,我刚刚结婚,在郑州租了很小的房子住,正是生活最拮据的时候。那时,我最想要的不是房子,不是一份更有前途的工作,只是一个像样的衣柜。就是那年冬天,母亲托人捎来半袋小米。后来先生将小米倒入米桶时,发现里面藏着500块钱,还有一张小字条,是父亲的笔迹:给梅买个衣柜。出嫁时,母亲给我的嫁妆中已有买衣柜的钱。后来她知道我将这笔钱挪做他用,便又补了过来。那天晚上,我拿着10元一张厚厚的一沓钱,哭了。那些年,母亲就是一次次把她节省下来的钱放在粮食里,让人带给我,带给大姐二姐,在我们都出嫁多年后,仍贴补着我们的生活。但那些钱,她是如何从那几亩田里攒出来的,我们都不得而知。这一次,即使她随我们同行,也还是将钱放到了面袋里,在她看来,那是最安全的。

面被带回来后,我把钱取出来交还母亲,母亲说,这是我给童童买车用的。童童是她的外孙,这段时间他一直想要辆赛车,因为贵,我没有给他买,上次回老家,他许是说给母亲听了,母亲便记下这件事。2000块,是她几亩地里一年的收成吧,我们都不舍得,但她舍得。记忆中,母亲一直是个舍得的人,对我们,对亲戚,对左邻右舍,爱舍得付出, 东西舍得给,钱舍得借,力气也舍得花。有时不知道她一个瘦小的农村妇人,为什么会这样舍得。母亲住下来,每天清晨,她早早起来做饭,小米粥、小包子、鸡蛋饼……变着花样儿。中午下班我们再也不用急赶着去买菜,所有家务母亲全部包揽。阳台上还新添了两盆绿莹莹的蒜苗,有了母亲的家,多了种说不出的安逸。 

母亲带来的两袋面,一袋倒入桶里,另外一袋被先生放到了阳台上。过了几天,我却发现阳台地板上的那袋面被移到了高处的平台上晾晒。先生是个粗心的人,应该不会是他放的,我疑惑地问母亲,她说,啊,我放上去的,晒晒,别坏了。我一听就跟她急了,那平台, 一米多高 ,那袋面,六七十斤,身高不足 一米五,体重不足90斤的母亲,竟然自己把它搬了上去。我冲她大喊,你怎么弄上去的?那么沉,闪着腰怎么办?砸着你怎么办?出点儿什么事怎么办……一连串地凶她。她却只是笑,围着围裙站在那里,等我发完脾气,小声说,这不没事吗?有事就晚了!我还是后怕,但更多的是心疼。直到母亲向我保证,以后不再干任何重活,我才慢慢消了气。 

母亲来后不久,有天对先生说,星期天你喊你那些同学回家来吃饭吧,我都来了大半个月了,没见他们来过呢。先生是在郑州读的大学,本市同学的确很多,关系也都不错,起初还会在各家之间串门,但现在,大家都已习惯了在饭店里聚会。城市生活就是这样繁华而淡漠,不是非常亲近的,一般不会在家里待客了。我便替先生解释,妈,他们经常在外面聚呢。母亲摇头,外面哪儿有家里好,外面饭菜贵不说,也不卫生。再说了,哪儿能不来家呢?来家才显得亲。然后,母亲态度坚决地让先生在周末把同学们带回家来聚一聚。我们拗不过她,答应了。 

先生分别给同学中几个关系最亲近的老乡打了电话,邀请他们周末来我们家。周末一整天,母亲都在厨房忙碌。下午,先生的同学陆续过来了,象征性地提了些礼品。我将母亲做好的饭菜一一端出,那几个事业有成、几乎天天在饭店应酬的男人,立刻被几盘小菜和几样面食小点吸引过去。其中一个忍不住伸手捏起一个菜饺,喃喃说,小时候最爱吃母亲做的菜饺,很多年没吃过了。母亲便把整盘菜饺端到他面前,说,喜欢就多吃,以后常来家里吃,我给你们做。那个男人点着头,眼圈忽然就红了,他的母亲已经去世多年,他也已经很久没回过家乡了。 

那天晚上,大家酒喝得少,饭却吃得足,话也说得多。那话的内容,也不是平日在饭店里说的生意场或单位里、社会上的事。很少提及的家事,被慢慢聊起来,说到家乡,说到父母……竟是久违的亲近。那以后,家里空前热闹起来。母亲说,这样才好,人活在世上,总要相互亲近的。 

母亲来后的第三个月,一个周末的下午,有人敲门,是住在对面的女人,端着一盆洗干净的大樱桃。女人有点儿不好意思地说,送给大娘尝尝。我诧异不已,当初搬过来时,因为装修走线的问题,我们和她家闹了点儿矛盾。原本就不熟络,这样一来,关系更冷了下来,住了3年多,没有任何往来。连门前的楼道,都是各扫各的那一小块儿地方。她冷不丁送来刚刚上市的新鲜樱桃,我因摸不着头脑,一时竟不知该说什么好。她的脸就那样红着,有点儿语无伦次,大娘做的点心,孩子可爱吃呢……我才恍然明白过来,是母亲。母亲并不知道我们有点儿过节儿,其实即使知道了,她还是会那么做,在母亲看来,”远亲不如近邻”是句最有道理的话。所以她先敲了人家的门,给人家送小点心,送自己包的粽子,还送自己种的新鲜小蒜苗……诚恳地帮我们打开了邻居家的门。后来,我和那女人成了朋友,她的孩子也经常来我们家,奶奶长奶奶短地跟在母亲身后,亲好得犹如一家人。 

邻居们,不仅仅是对门,前后左右,同一个社区住着的许多人,母亲都照应着。她常在社区的花园和先生同事的父母聊天,帮他们照顾孙子。不仅如此,还有物质上的往来,母亲常常会自制一些风味小点,热情地送给街坊四邻,这也是母亲在农村生活时养成的习惯。小点心虽然并不贵重,却因有着外面买不到的醇香味道,充满了浓浓的人情味。 

有一次,得知先生一个同事的孩子患了白血病,母亲要我们送些钱过去。因为是来往并不亲密的同事,我们只想象征性地表示一下,母亲却坚决不答应,说,人这辈子,谁都可能会碰到难事,你舍得帮人家,等你有事了,人家才会舍得帮你。孩子生病对人家是天大的难事,咱们碰上了,能帮的就得帮。我们听了母亲的。 

在母亲过来半年后,先生竟然意外升职,在单位的推荐选举上,他的票数明显占了优势。先生回来笑着说,这次是妈的功劳呢,我这票是妈给拉来的。我们才发现,最近我们的人际关系竟然空前好起来,那种好,明显地少了客套多了真诚。一个字都不识的母亲,只是因为舍得,竟不动声色地为我们赢得了那么多,是我们曾经一直想要赢来却一直得不到的。再想她说过的话,你舍得对人家好,人家才会舍得对你好。于她,这是一个农村妇人最朴实本真的话;于我们,无疑是一个太过深刻的道理。 

温煦的日子里,我很想带母亲到处走走。可母亲因为天生晕车,坐次车如生场大病,于是常拒绝出门。那个周末,我决定带她去动物园。母亲说,没有见过大象呢。动物园离家不远,几站路的样子。母亲说,走着去吧。我不同意,几站路,对一个70岁的老人,还是太远了。可她又坚决不坐车,我灵机一动,妈,我骑车带你去。母亲笑着同意了。我推出车子,小心地将她抱到前面的横梁上,一只胳膊刚好揽住她。抱的时候,心里一疼,她竟然那么轻,蜷在我身前,像个孩子。 

途中要经过两个路口,其中一个正好在闹市区。小心地骑到路口,是红灯,我轻轻下车,还未站稳,却有警察从人流中穿过来,走到我面前说,不许带人你不知道吗?还在前面带。说完,低头便开罚单。母亲愣了一下,攥着我的胳膊要下来,我赶忙扶稳她,跟那个年轻的警察说了声对不起,解释说,我母亲晕车,年纪大了,不能坐车,我想带她去动物园看看…… 

警察也愣了一下,这才看清我带的是一位老人,还不等他说什么,母亲责备我,你怎么不告诉我城里骑车不让带人呢?然后坚持要下来。我正不知所措,那个警察伸手一把搀住了母亲,大娘,对不起,是我没有看清楚, 城里只是不让骑车带孩子,您坐好。然后他忽然抬起手,向我认认真真地敬了个礼。接着,他转身让前面的人给我腾出一个空间,打着手势,阻止了四面车辆的前行,招手示意我通过。我带着母亲,缓缓地穿过那个宽阔的路口,四面的车辆静止行人停步,只有我带着母亲在众人的目光里骄傲前行。 

那是我有生以来第一次受到如此厚重的礼遇。因为母亲,因为舍得给予她一次小小的爱,一个萍水相逢的年轻警察,便舍得为我破例,舍得给我这样高的尊敬。这礼遇,是母亲送给我的。 

母亲是在跟着我第三年时查出肺癌的。 结果出来以后,有个做医生的朋友诚恳地对我说,如果为老太太好,不要做手术了,听天命尽人事吧。这是一个医生不该对患者家属说的话,却是真心话。和先生商议过后,决定听从医生的安排,把母亲带回了家。又决定不向母亲隐瞒,于是对她讲了实情。母亲很平静地听我们说完,点头,说,这就对了。然后,母亲提出要回老家。 
母亲在世的最后一段时间,我陪在她身边。药物只是用来止疼,抵挡不了癌症的肆虐。她的身体飞快地憔悴下去,已经不能站立,天好的时候,我会抱她出来,小心地放在躺椅上,陪着她晒晒太阳。她渐渐吃不下饭去,喝口水都会吐出来,却从来没有流露过任何痛苦的神情,那些许黑发依旧倔强地蓬勃着,面容消瘦却光洁,只要醒着,脸上便漾着微微的笑容。那天,母亲对我说,你爸他想我了。妈,可是我舍不得。我握着她的手,握在掌心里,想握牢,又不敢用力,只能轻轻地。梅,这次,你得舍得。她笑起来,轻轻将手抽回,拍着我的手。但是这一次,母亲,我舍不得。我说不出来,心就那么疼啊疼得碎掉了。母亲走的那天,送葬的队伍浩浩荡荡,从村头排到村尾,除了亲戚,还有我和先生的同学、朋友、同事,我们社区前后左右的邻居们……很多很多人,里面不仅有大人,还有孩子,是农村罕见的大场面。 
队伍缓缓穿行,出了村,依稀听见围观的路人中有人议论,是个当官的吧?或者是孩子在外面当大官的……母亲这一生,育有一子三女,都是最普通的老百姓,不官不商。母亲本人,更是平凡如草芥,未见过大的世面,亦没有读过书,没有受过任何正规教育,她只是有一颗舍得爱人的心。而她人生最后的盛大场面,便是用她一生的舍得之心,无意间为自己赢得的。 

发表在 社会生活 | 标签为 | 留下评论

UfqiWork有福工坊UfqiNews有福常在Google Books亮月亮科技

apache tomcat: mod_jk missing uri map

接续此前的 “嘗試 Apache + Apache Tomcat (簡稱 Tomcat)融合” , -R/H2SL , 出现异常,在 https 下tomcat可以接管解析jsp页面,但在http却不行,于是使劲检查如下。

apache tomcat: mod_jk missing uri map

首先排除了所有因为url格式不匹配的情况下,在 conf/extra/httpd-jk.conf  打开日志为 trace :

# Our JK log level (trace,debug,info,warn,error)
JkLogLevel trace

需要检查,URI的匹配的写法,在 

conf/extra/uriworkermap.properties

中进行修正:

# java ??
/*\.jsp=balancer 

如果仍有问题,需要进行下面的配置命令的检查。

JkMountCopy On 

的设置,这一语句通常需要在所有 VirtualHost 和 SSL 的 VirtualHost 里面,

涉及到的Apache Httpd的配置文件有

conf/extra/httpd-vhosts.conf 
conf/extra/httpd-ssl.conf 

 

发表在 服务器运维, 编程技术, 计算机技术 | 标签为 , , | 留下评论

UfqiFina有福金融UfqiWork有福工坊UfqiNews有福常在Google Books

-gMIS 中操作同时并发操作和管理多个数据库multiple databases

如前所述,我们实现了 -gMIS 中可以同时并列/并行/并发管理多个数据库的目标数据表,
“-gMIS 更新多库连接及工作流workflow” , -R/b2SI ,

新近部署了一个 -gMIS 的应用实例,也涉及到跨数据库的信息管理系统,于是归集整理了在 -gMIS 中操作多个数据库的使用步骤,列如下,备忘。

  1.  inc/config.class 中添加数据库配置信息
    ….
    # db slave info
    $conf[‘dbhost_slave’] = ‘127.0.0.1’; 
    $conf[‘dbport_slave’] = ‘3306’;
    $conf[‘dbuser_slave’] = ‘dbuser’;
    $conf[‘dbpassword_slave’] = ‘dbpassword’;
    $conf[‘dbname_slave’] = ‘dbname’; 
    ….
  2.  inc/conn.class 中创建数据库连接所需的对象
    ….

    class Db_Slave{

        var $mDbHost = “”;

        var $mDbUser = “”;

        var $mDbPassword = “”;

        var $mDbPort = “”;

        var $mDbDatabase = “”;

        function __construct(){

            $db_suffix = ‘_slave’;

            $gconf = new Gconf();

            $this->mDbHost = $gconf->get(‘dbhost’.$db_suffix);

            $this->mDbPort = $gconf->get(‘dbport’.$db_suffix);

            $this->mDbUser = $gconf->get(‘dbuser’.$db_suffix);

            $this->mDbPassword = $gconf->get(‘dbpassword’.$db_suffix);

            $this->mDbDatabase = $gconf->get(‘dbname’.$db_suffix);

        }

    }
    ….

     

  3.  class/gtbl.class 中添加所需指定数据的连接对象

    在类的 __construct 方法中,在调用父类的 __construct 之前,
    ….

    if($args[‘dbconf’] == ‘default’){

        $args[‘dbconf’] = ‘Db_Master’;

    }

    else if($args[‘dbconf’] == ‘slavedb’){

        $args[‘dbconf’] = ‘Db_Slave’;

    }

    ….

  4.  在管理界面设置数据表所需连接的数据库名称(别名)
    在 Π 首页  桌面 & 系统配置 → 菜单调整 | 菜单调整 路径中增加针对某个被管理对象表时,指定所需连接的数据库.


    在 菜单管理中,增加对被管理对象时,设置所需链接的数据库.

 

-gMIS 是一种基于 -GWA2 的通用管理信息系统软件,具有可配置的输入和输出接口。
可以在其上构建各种管理应用软件系统,如
内容管理系统(CMS),客户资源管理(CRM), 企业资源计划管理(ERP),
办公自动化系统(OA)等, 以及各种行业应用管理系统软件,如
人力资源管理系统(HR),学生管理,档案管理,旅游管理,图书管理,
商品管理及业务运营支撑系统等等。
实现零代码开发、搭建各种管理信息系统(MIS).

Lower Costs, 降低成本; Better Productivity, 提高效率.

发表在 -gMIS, 编程技术, 计算机技术 | 标签为 , , , | 2条评论

UfqiFina有福金融UfqiWork有福工坊UfqiNews有福常在Google Books

信息加解密与摘要Encryption and Message Digest

这篇短文最早写在 -Maimai 上,后来转发到 -Linkedin 上,再后来备份到 -Wordpress-wadelau 上,现在再复制到 -Ufqi-Blog 上。

关于账号密码的保存,昨天回复的仓促,重理一下。

先区分是加密和信息摘要,两者区别是内容是否可逆。能从密文恢复到原文的是加密,不能的是消息摘要,或信息摘要。加密又可分为算法加密和使用秘钥加密,区别是在加解密过程中是否使用“秘钥”。置换、交换、取模异或等可看做无秘钥加密,仅依靠某种算法实现加密。

使用“秘钥”加密又分为对称加密和非对称加密。区别是对称加密收发两方用同一个密钥,非对称基于一对密钥: 公钥和私钥。发方用收方的公钥加密,收方用自己的私钥解密密文;或者发方用自己的私钥加密,收方用发方的公钥解密。

回到密码保存这个话题,明文存储不是人干的事。密文存储是业界标准做法。至于密文是加密后内容,还是明文的消息摘要,一般从形式上可以判断,消息摘要多会生成一个由0-9, a-f的字符串。密文则各种字符串形态均有,如 -base62x 的输出。

消息摘要一般能满足账号密码保护需求,但自从md5被碰撞算法找回原型后,md5就不安全用在密码上了。这方面可以选升级的md6, sha1, sha256, sha512, sha1024等。

至于加密的对称算法,有很多。加密的非对称算法,也有不少,多用rsa。

加解密,矛和盾。哪个锐利,哪个坚厚?

%e5%8a%a0%e5%af%86encrypt%0a%e6%b6%88%e6%81%af%e6%91%98%e8%a6%81digest%0a%e7%bc%96%e7%a0%81coding%0abyxenxin-201608

发表在 Base62x, 编程技术, 计算机技术 | 标签为 , , , , , , | 留下评论

医用外科口罩一次性医疗专用口罩防尘透气成人三层防护透气医生床上电脑桌大学生宿舍上铺懒人可折叠小桌子家用寝室简约学习书桌京东制作护发素发膜正品修复干枯免洗家用护发补水顺滑女士发热焗油膏

擰巴 Apache Httpd 和 Tomcat 到一起

此前Apache HTTPD (簡稱Apache) + Caucho Resin作爲 Java 容器,

現在嘗試 Apache + Apache Tomcat (簡稱 Tomcat)融合在一起愉快地工作。

爲何不是 Ningx + Resin 融合在一起工作?

  1. 安裝 Apache Httpd
    配置站點根目錄 /path/to/apache/document_root
  2. 檢視Apache是否成功安裝
    查看 apxs目錄, /path/to/apache/bin/apxs
  3. 安裝mod_j
    下載 tomcat-connectors
    按手冊配置,./configure –with-apxs=/path/to/apache/bin/apxs
    編譯出 mod_jk.so
    複製 mod_jk.so 到 /path/to/apache/modules/mod_jk.so
    複製  tomcat-connectors/conf下的 httpd-jk.conf 到 /path/to/apache/conf/extra 下
    複製 tomcat-connectors/conf下的 uriworkermap.properties  , workers.properties 到 /path/to/apache/conf/extra 下
    修改 apache/conf/httpd.conf 增加: 
        # java
        Include conf/extra/httpd-jk.conf
    修改 apache/conf/extra/httpd-jk.conf :
         JkWorkersFile conf/extra/workers.properties
         JkMountFile conf/extra/uriworkermap.properties
        JkLogLevel trace 
        info –> trace 跟進觀察所有流程
    修改 apache/conf/extra/workers.properties :
          worker.node1.port=8009
          worker.node2.port=8009 
          如果衹有一個node的話,將loadbalancer的兩個端口改爲一樣,
         具體端口數字需要與Tomcat的實際保持一樣
    修改 apache/onf/extra/uriworkermap.properties :
          /*.jsp=balancer
          攔截所有 .jsp 的程序給 Tomcat 來處理
    如果Apache 啓用了SSL,則需要修改 apache/conf/extra/httpd-ssl.conf:
           在 <VirtualHost _default_:443> 項下,增加:
            # java?
            JkMountCopy On
  4. 檢視mod_jk是否安裝成功
    如果 訪問 /a.jsp 被映射到 tomcat ,則測試成功
  5. 安裝Apache Tomcat
    配置 tomcat/webapps/ROOT 為 apache的document_root :
          shell> ln -s /path/to/apache/document_root /path/to/tomcat/webapps/ROOT
  6. 檢視Tomcat是否安裝成功
  7. 融合在一起
  8. 檢視融合在一起
发表在 服务器运维, 编程技术, 计算机技术 | 标签为 , , , , , | 3条评论

UfqiWork有福工坊UfqiNews有福常在Google Books亮月亮科技

Base62x比Base64的编码速度更快吗?

Base62x与Base64的编码速度测评

现在几乎所有企事业单位、政府机构、军工系统等的IT生产系统都会用到Base64编码,从RSA安全密钥到管理信息系统登录入口回跳,目前越来越多的IT系统研发者开始使用 Base62x 替换 Base64.

Base62x 提供了一种无符号输出的Base64的编码方案,在许多应用场合其纯字母和数字的输出形式,可以有效的规避因为符号带来的各种负面影响,并能够有效削减或兼容各种Base64的变种形式。

借着 Base62x 在 -GitHub 上获得几个赞之后,我们探讨另外一个问题,Base62x 的编码在输出文本形式上略胜一筹,是值得推荐的替代方案,但其编码速度和效率如何?

为此我们设计一个评测任务,分别使用Base62x 和 Base64进行20万次编码操作,其中Base62x 使用 PHP的ext module方式实现的 base62x_encode , Base64 也是 PHP内置的 base64_encode , 两种均是使用C语言实现,并通过扩展方式集成在 PHP中,相对而言,可比性较好. 运行主机是在 Windows下虚拟主机运行 OpenSuSE 42,Nginx 1.12, PHP 7.0.
通过脚本Command Line调用方式进行20万次编码任务,对比测试数据:

base62x 200000 timestart:1513077337.6748 timecost:0.30399990081787
base64 200000 timestart:1513077337.9788 timecost:0.16817998886108

base62x 200000 timestart:1513077401.2177 timecost:0.29567098617554
base64 200000 timestart:1513077401.5134 timecost:0.17081189155579

base62x 200000 timestart:1513077424.234 timecost:0.30112099647522
base64 200000 timestart:1513077424.5351 timecost:0.1718909740448

base62x 200000 timestart:1513077447.9861 timecost:0.29450607299805
base64 200000 timestart:1513077448.2806 timecost:0.16546702384949

base62x 200000 timestart:1513077470.7367 timecost:0.45493698120117
base64 200000 timestart:1513077471.1917 timecost:0.24029588699341

运行5次之后,Base62x 和 Base64 其均值分别为,0.330047 和 0.183329 . 由此可见,Base62x 比 Base64 在编码速度上稍慢,20万次操作耗时比值为 1:0.555 , 尽管每次操作其耗时差(7.33589E-07)可以忽略不计,但考察比值,Base62x 慢了大约 44.5%,大致是 Base64 完成两个编码操作, 目前版本的 Base62x 完成一个多一点的编码操作。

如果加上在应用层的各种判断,使用 Base62x 替代 Base64 可能是有优势的,比如判断是否包括+,进而转化为空格,是否包括等号等,因为任何一步额外的判断或替换操作,其耗时将可能远超过 Base62x 与 Base64 操作耗时的差值。

比如其中一个 URLEncode 的应用场景,在 -github/wadelau/gMIS/comm/ido.js 中( -R/J2SI ):

var actx = unescape(tObj.action);
actx = actx.replace(+, );  

取代的改进使用Base62x的方案是:

var actx = Base62x.decode(tObj.action);
 /* no more action needed */

从代码层分析耗时差值原因,尽管两者都使用了位操作进行计算,但 Base62x 在单位编码长度上多了数值判断,由此导致其速度下降。Base62x 还是新事物,其代码应该还有可以再改进优化的空间。

如果进一步改进优化,Base62x 有可能与 Base64 相同的编码速度吗?

有没有可能存在另外一种不需要数值判断,也能够满足与 Base62x 一样无符号输出的64进制编码方案?

小结,单就编码速度而言, Base64 方案快,如果加上其他判断与替换操作, Base62x 方案胜出,未来可能会有鱼(无符号输出)和熊掌(速度)兼得的新编码方案出现。

发表在 Base62x, 编程技术, 计算机技术 | 标签为 , , , | 2条评论

床上电脑桌大学生宿舍上铺懒人可折叠小桌子家用寝室简约学习书桌京东制作护发素发膜正品修复干枯免洗家用护发补水顺滑女士发热焗油膏捐助乌克兰Help Ukraine