旺财2018的618小福利

今天端午节,我的旺财C#.NET代码生成器发布了V20180618版本,同时即日起公开DTcms4.旺财代码生成器免费版.20170926,有需要的朋友加我微信获取。

DTcms5版本可在淘宝购买:https://item.taobao.com/item.htm?spm=a230r.1.14.13.51f476cb2Kotft&id=545213785654&ns=1&abbucket=14#detail

能找到那份为之奋斗一生的事业,是一个人一生最大的幸福!

端午临近,上一个五一小长假回老家看望爷爷奶奶,一直想写一些文字,今天特把发在我们家庭微信群里的一段话公开到个人博客:

半小时前跟大姐通完微信视频,远程申请好了新幼儿园的公众号,请大家多多支持和关注。
——————————————–
微信公众号名称:山东水发实验附属幼儿园
微信公众号:sdsfsyfsyey
——————————————–
看到她这一年真得很忙,再次感谢她和涛哥五一不休息,带我们兄弟姐妹们参观、聚餐、摘菜,既花时间又花钱,不辞辛苦,更感恩所有参加活动的家人们,时隔多年,再次相聚,虽然只有短暂一天,但所留下的美好回忆、照片和视频足够未来几十年来享用。

最后我想和大家分享一段感悟,愿大家一起砥砺前行:能找到那份为之奋斗一生的事业,是一个人一生最大的幸福!

人生最精彩的,不只是成功的那一瞬间,而是站在有所小成的今天,回头回望:那段漆黑、看似没有尽头、苦苦摸索地奋斗过程。

嫁人的两个标准

表妹谈得男朋友到了该见父母,要谈婚论嫁的阶段了,闲聊时说让我把把关,其实我懂得她心里早就想好了,无非是希望找更多人支持她的想法。一切常见的身高、长相、性格、工作、家庭背景等其实就可以放在一旁了,这些应该都已经过关了。所以我也比较简单的问了以下2个问题:

1、他愿意花时间陪你吗?
2、他愿意为你花钱吗?

看似简单的两个问题,其实这背后有很多信息,需要多角度的验证,但看着表妹自信的回答,调侃中就结束了所谓的把关,花了更多精力催促她赶紧结婚。

今天有空就解析一下这两个问题:

第一个问题:首先得有时间,然后得愿意跟你相处,并且是以你为主的陪伴。很多时候,男人是不愿意花时间在一个不喜欢的人身上的,如果讨厌的话,连见都不想,还得躲着。如果男人成熟了,离开自己的原生家庭,愿意构建自己的家,那么他肯定需要花时间陪家人,第一个家人就是老婆,一开始都不愿陪伴,还能盼着婚后陪孩子?就算陪孩子,也未必能再陪你呀。

第二个问题:首先得有钱,或者能赚钱,想赚钱。然后愿意将自己的劳动收入、物质分享于你。重者不惜为你欠下债务(贷款买房这种),为你们共同的目标低下身段向周围求助。如果他很有钱,但很抠,连十分之一都不愿意为你付出,那你就得掂量一下你在他心中的分量。

这世上很多东西都可以用钱来测验的,友情、亲情、爱情也不例外。

不要怕测验,无非两种结果,但对善良的一方总是有益的。

双方都奔着善良的本意,那就是双赢。

无中生有

周末到老朋友家里做客,饭后在小朋友的强烈呼声下,去了多年未去的KTV唱了几首老歌。

这些老歌,被创作出来,就是一种无中生有。

于是传唱至今,跟古代的诗词书画一样,还将继续流传下去。原作者可能已经不在,其本人或后人虽未能继续享受物质收益(利),但创作者的名气依旧在扩大或持续。

我理解的创作不仅包含了文字、音乐、建筑、器具、影像、电影、设计作品等,应该还有软件。

尽管软件行业日新月异,但在很多企业还能看到10多年前的软件依然在被使用,在给创造者持续带来收益。我这位朋友也是其中一位受益者,10多年前开发一套会员管理系统,后在此基础上针对不同的行业做了扩展,增加了店务管理、库存、客户营销等,但核心的还是10年前的一次性付出的积累。

都说做IT是吃青春饭,一点也不假,总不能全部靠出卖自己的时间赚钱,所以积累出一定的可重用产品,等同于将自己一次性投入的时间,重复的出售,从而完成从劳动收入到被动收入的转换。

做一款好产品,被足够多人使用,顺便完成了物质的财富积累,而终获财务自由,应是我们很多IT从业者的梦想。

蒲公英VPN不错:旁路模式不影响目前网络架构实现异地组网

前一阵要做一个异地组网测试:因为有现有网络在日常使用,不能影响现有网络拓扑结构,咨询了小赵老师,推荐了开源的软件防火墙路由器pfsense,可惜需要动到现有网络架构,发现了蒲公英VPN路由器,这个Cloud VPN方案,一看来头,原来绑定在很多国产品牌路由器中的花生壳就是他家的,经过短暂的了解和学习,下单、安装配置、测试,很快用蒲公英的旁路模式实现了快速异地组网。

感觉这真是新零售店铺、分公司的刚需,比方说来伊份,连接POS系统到总部,用这个路由器就搞定了,关键是便宜呀。传统的点对点或者走Internet公网的异地组网需要两端的一级路由器有一定级别,思科、华为的怎么好的几万块,差的也得万把块,如果全国有个几百家店,这个组网可是不得了的花费。现在只需要一个路由器的硬件费,对于来伊份来说,本来每个店接入网络,路由器都是必要的,不增加费用的情况下,轻松完成组网。

越来越觉得国人做产品的,如果都能不惧国外大牌的压力,勇于创新,针对国内市场的地域优势,打造出实用、方便、实惠的产品和服务,成长为一家规模不小的企业,打造出一个不错的品牌,应该都不是问题,国内的需求在这里,并且市场足够大。

扯远了,转2张图,更多关于旁路模式的工作原理及配置请看:https://pgy.oray.com/case/bypass.html

发一个月薪2万左右的Java职位:软件开发工程师

我曾经在自己的博客发发布过职位机会,记得没错的话Tony DengSiko Chen都是通过这个桥梁认识的。时隔多年,再次发一个职位机会,公司位于上海,办公地点在浦东,委托人或者背书人是我第一家外企的直线经理,要求2年以上工作经验,能给到2万左右的工资真得很诱人。但是如果前后端都熟悉,作为全栈去搞定一个个模块,这个要求还是比较严的,做过类似的开发,换成餐饮行业,这块应该不在话下。

以下是针对职位的补充:

小崔,我们悍码希望在上海(工作地点在上海)招几个资深一些的、前后端都懂的开发高手,能沟通、懂业务、可以独挡一面的人。我们开发的产品是面向餐饮零售的移动POS系统,跟二维火、哗啦啦类似。现在想找几个人,开发排队、预定、外卖、会员等功能的人,最好前后端一条线搞定(每个人负责一个功能模块,前后端);若没有,希望能找到前后端都懂,但偏向于后端的。工资在2万左右。你人脉广,不知道能帮忙推荐吗?

现阶段,我们需要自己能干活(coding)的人,暂时不需要项目经理之类的管理人员。

Java,前端React JS或Vue JS

能单独开发每个服务的,从后端到前端,如排队、预定、外卖等,移动POS系统

职位的描述如下:

岗位名称:软件开发工程师
汇报上级:总经理
上班地点:建工大唐国际广场

岗位职责:
1、关键技术突破
2、与组员共同完成产品开发
3、平台类产品、应用类产品开发
4、技术栈:ReactJs、SpringBoot、Mybatis、Redis、WebSocket、MongoDB、Spark、Hadoop生态

岗位要求:
1、2年以上的 J2EE 应用开发经验,对主流开发框架,如 Spring、SpringMVC、Mybatis、SpringBoot等有全面的了解和掌握。
2、熟悉前端流行框架,如JavaScript、Freemarker、VUE、jquery、HTML+CSS、AJAX等。
3、精通MySQL、Oracle等常用关系数据库开发,能针对项目特性设计性能较优的数据库结构;
4、具有RESTful、Netty、Mina、RPC、node.js、微服务等的使用及开发经验;
5、 熟悉前后端分离开发模式,能独立完成功能模块的研发和编码,具有良好的代码风格、安全意识、代码洁癖。
6、熟悉常用的分布式缓存及消息队列技术,如Memcached、Redis、分布式任务调度平台XXL-JOB等,并运用于实际环境的优先考虑。
7、熟悉相关负载代理软件,如Nginx、HAproxy、F5等,了解集群高可用HA等技术优先考虑。
8、熟悉大型电商企业Web优化方案、调优、问题跟踪定位、监控等优先考虑。
9、有电商系统开发经验、有CRM会员系统、商品系统、订单系统开发经验优先。
10、熟练使用maven\git\svn\ jenkins,优先考虑。
11、熟练使用Dubbo以及阿里云等优先考虑。

想换工作的朋友,请不要错过这个好机会。

直接扫码加我微信,备注Java,直接对接我的老领导。

设置DHCP中的缺省域名,支持Windows域环境下的特定DNS后缀

标题很绕,不如我放几张图看看,大家就懂了。

下图是英文环境下的截图

当我们在域环境下ipconfig后显示在Connection-Specific DNS Suffix的域名非常重要,本地访问服务器或电脑名的时候,就会有线读取此域下的IP。

如果有传统的点对点的思科路由器做VPN连接,这个一点都不难设置。但如果一个新的分支机构用了普通的路由器,如TPLINK,当此分支机构下的电脑访问域里的服务器或电脑名时,就得考虑如何设置默认DNS,如何设置这里的默认域名了。

以下截图为我测试过的设置,配合蒲公英VPN双旁路异地组网方案,分部接入到总部互访互通效果杠杠的!

在Global.asax中获取Session的注意事项

几年前给朋友珠宝公司开发过一套旺财珠宝库存管理系统,用得还是web Form老技术,但是更多的走Ashx+Ajax,但前端可是HTML5+jQuery+BootStrap等新技术,所以不论功能还是用户体验,都能很完美的满足用户要求(用户才不管你用的是什么技术,先进的和古老的都必须解决他的问题,然后还需要好用)。近期特别反馈说有些页面比较慢,我觉得用了几年了,数据库就近2个G了,可能是数据库查询的问题,也可能是程序执行的问题,也可能用户网络问题。数据库可以在服务器上用Sql Server Profiler进行查询分析,但页面上还得做点跟踪。于是就用Global.asax来实现,本来很方便的,但为了获取当前登录用户,需要在Global.asax中获取Session,花了点时间才搞定,记录下来分享一下。

本来想在Application_BeginRequest或者Session_Start里面获取的,可怎么也获取不到,于是翻看MSDN了解Global.asax的事件及执行顺序,在Application_AcquireRequestState中才获取到。

    protected DateTime StartDateTime;

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        //开始执行时间
        StartDateTime = DateTime.Now;
    }
    protected BaseUserInfo CurrentUserInfo;
    protected void Application_AcquireRequestState(object sender, EventArgs e)
    {
        if (Utilities.UserIsLogOn())
        {
            CurrentUserInfo = Utilities.GetUserInfo();
        }
    }

    protected void Application_EndRequest(object sender, EventArgs e)
    {
        DateTime endDateTime = DateTime.Now;
        TimeSpan ts = endDateTime - StartDateTime;
        //5秒以上的慢页面进行记录
        if (ts.TotalMilliseconds >= 5000)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("时间:" + endDateTime.ToString("yyyy-MM-dd hh:mm:ss fff") + ",当前请求URL:" + HttpContext.Current.Request.Url + ",请求的参数为:" + HttpContext.Current.Request.QueryString + ",页面加载的时间:" + ts.TotalMilliseconds + " 毫秒");
            if (CurrentUserInfo != null)
            {
                sb.Append(",用户:" + CurrentUserInfo.UserName);
            }
            FileUtil.WriteMessage(sb.ToString(), BaseSystemInfo.StartupPath + "//Log//Slow/" + DateTime.Now.ToString(BaseSystemInfo.DateFormat) + ".txt");
        }

    }

通过上述代码就可方便的获取哪些页面比较慢,何时、何人、何参数、何地(IP)发生的。

2018-05-11 03:33:18 947:[当前请求URL:Modules/WMS/ItemMaster/ItemMasterPlan.aspx;请求的参数为:;页面加载的时间:8151.3672 毫秒]
2018-05-11 04:09:25 181:[当前请求URL:Modules/WholesaleWMS/tools/WholesaleBPStatement.ashx?action=RefreshStatement;请求的参数为:action=RefreshStatement;页面加载的时间:19720.7031 毫秒]
2018-05-11 05:18:10 486:[当前请求URL:Modules/WMS/OutboundOrderLine/OutboundOrderLineListSummary.aspx;请求的参数为:;页面加载的时间:16742.1875 毫秒]

2018-05-12 10:33:59 305:[当前请求URL:Modules/WMS/PurchaseDemand/PurchaseDemandAdmin.aspx;请求的参数为:;页面加载的时间:9375.9765 毫秒]
2018-05-12 10:49:19 497:[当前请求URL:Modules/WMS/ItemMaster/ItemMasterPlan.aspx;请求的参数为:;页面加载的时间:5278.3203 毫秒]
2018-05-12 01:24:36 673:[当前请求URL:Modules/WMS/InboundOrderLine/InboundOrderLineListReport.aspx;请求的参数为:;页面加载的时间:11416.0156 毫秒]
2018-05-12 01:24:42 045:[当前请求URL:Modules/WMS/InboundOrderLine/InboundOrderLineListReport.aspx;请求的参数为:;页面加载的时间:6209.9609 毫秒]
2018-05-12 01:24:42 611:[当前请求URL:Modules/WMS/InboundOrderLine/InboundOrderLineListReport.aspx;请求的参数为:;页面加载的时间:10142.5781 毫秒]
2018-05-12 04:39:35 251:[当前请求URL:Modules/WMS/OutboundOrderLine/OutboundOrderLineListSummary.aspx;请求的参数为:;页面加载的时间:16623.0469 毫秒]
2018-05-12 04:51:31 401:[当前请求URL:Modules/WMS/OutboundOrderLine/OutboundOrderLineListSummary.aspx;请求的参数为:;页面加载的时间:16648.4375 毫秒]
2018-05-12 04:57:15 362:[当前请求URL:Modules/WMS/OutboundOrderLine/OutboundOrderLineListSummary.aspx;请求的参数为:;页面加载的时间:16552.7343 毫秒]

最后附上MSDN上对Global.asax的解释:

按执行顺序来解释一下Global.asax.cs中相应的事件处理方法的含义

  1. Application_BeginRequest:BeginRequest是在收到Request时第一个触发的事件,这个方法自然就是第一个执行的了。
  2. Application_AuthenticateRequest:当安全模块已经建立了当前用户的标识后执行。
  3. Application_AuthorizeRequest:当安全模块已经验证了当前用户的授权时执行。
  4. Application_ResolveRequestCache:当ASP.NET完成授权事件以使缓存模块从缓存中为请求提供服务时发生,从而跳过处理程序(页面或者是WebService)的执行。这样做可以改善网站的性能,这个事件还可以用来判断正文是不是从Cache中得到的。
  5. Application_AcquireRequestState:当ASP.NET获取当前请求所关联的当前状态(如Session)时执行(真是拗口啊,msdn上就这样写的,我自己想不出什么好句子了)。
  6. Application_PreRequestHandlerExecute:当ASP.Net即将把请求发送到处理程序对象(页面或者是WebService)之前执行。这个时候,Session就可以用了。
  7. Application_PostRequestHandlerExecute:当处理程序对象(页面或者是WebService)工作完成之后执行。
  8. Application_ReleaseRequestState:在ASP.NET执行完所有请求处理程序后执行。ReleaseRequestState事件将使当前状态数据被保存。
  9. Application_UpdateRequestCache:在ASP.NET执行完处理程序后,为了后续的请求而更新响应缓存时执行。
  10. Application_EndRequest:同上,EndRequest是在响应Request时最后一个触发的事件,这个方法自然就是最后一个执行的了。

再附上两个无顺序的,随时都可能执行的

  1. Application_PreSendRequestHeaders:向客户端发送Http标头之前执行。
  2. Application_PreSendRequestContent:向客户端发送Http正文之前执行。

开了个区块链的新分类

五一前开始休假,揩政府的油,免费高速回了趟老家。好几天时间远离了电脑,连看手机的时间都很少,看到很多大城市之外的东西,引发了不少思考,对于IT之外的新老事物除了要接触、研究之外,还要真正实践和体验。

加上节后跟好友聚会较多,话题开放。发现很多人都在谈区块链,索性开个新分类,蹭蹭热点,为未来的转型做准备。

好友陈斌是区块链技术和理论的研究和实践者,他开了一个知识星球,目前免费加入,感兴趣的一起加入。

另外,作为实践的第一步,我开始去接触目前区块链最热门的应用:电子货币。已在目前比较知名的火币网平台注册,你有兴趣也一起加入。