当前位置: 首页 > news >正文

电子商务网站建设读书报告品牌高端网站制作官网

电子商务网站建设读书报告,品牌高端网站制作官网,宁波高端品牌网站建设,网站建设中网站需求分析报告作用您好,我是掘金者说,最近有点累主要是没有休息好,直接请年假一天在家睡了一天一夜补眠。然后,假期回老家挖笋顺便和姚总监再聊工作上的事情。上回写的是业务功能的对账,现在来讲下在做业务功能“门面”,系统…

您好,我是掘金者说,最近有点累主要是没有休息好,直接请年假一天在家睡了一天一夜补眠。然后,假期回老家挖笋顺便和姚总监再聊工作上的事情。上回写的是业务功能的对账,现在来讲下在做业务功能“门面”,系统平台的登录后的首页展示,几乎都是报表、统计、圆饼图、柱状图。采用微服务前后端分离,后端spring cloud,前端使用vue+element ui+echart,前后端都是一个人进行弄。原型图改了第一版,后来又改了一版本,功能又确认了…里面不弄不知道,细碎的东西可真多。前端页面绘制,后端接口编写,数据库语句编写,单元调试…

什么是业务

通俗的讲,业务就是需要处理的各种事务,但是通常偏向指客户实际作业涉及的事务,业务最终的目的是完成工作所做的所有事务。

业务和技术的关系

软件是用来解决现实世界中的业务给人们的工作带来便利的。技术是为了解决业务的问题,只有在实现业务给人们带来便利的前提下,技术的存在才有意义。所以,多数时候是业务决定技术,业务统领技术。没有技术,业务就无法被虚拟化,生产效率就很难有效提升,业务和技术具有相互促进、相互依赖、相互共存的关系。我们都看过周星驰的电影《喜剧之王》有一句台词这么说的:其实,我是一个演员。作为我们来说:其实,我是一个程序员。 一个道理。我们回到开发者身上来看,写业务代码多一些,还是所谓的技术代码多一些,没有高低之分,只有个人取向和组织分工的不同。

业务和因解决业务而衍生的

很多开发者会用不同的眼光来看待业务和技术,比如把增删改查(CRUD)看作是无意义的业务代码(其实,可以使用代码生成器,来实现前端+后端+数据库脚本生成,具体可以参考pig4cloud,把实现 MQ 或 Redis 这样的框架看作是有技术含量的事情。实际上,所谓的业务代码和技术代码只是距离远近,业务代码距离业务更近,技术代码离业务稍远,他们最终都是指向业务实现的。每一层技术实现都是服务于上一层的需求为业务。现实中,业务在被我们虚拟化的过程中,会在技术实现角度引发分层,产生组件模块化。这样让开发者觉得技术实现越来越业务没有技术含金量?面试的时候被问道多线程、高可用、高并发、高性能、某实现原理和机制、遇到难点和解决方法思路等等,导致概括能力和实战运用退化,这个需要平时多训练和琢磨。 当我们越是接近用户业务,会发现里面的细节越多,繁琐度越高,越不容易做的好,越容易遐思而被否定,让人觉得自己的劳动没有价值。遐思性越强,变化几率越高,来来回回频繁的修改代码,正所谓:牵一发,动全身。让人觉得自己的掌控能力低,实现的代码可迁移性越差,个人的劳动成果被能力复用的概率越低。

好了,这些话不是我想多说的,我摊牌了,具体想看直接知乎对开发来讲,业务重要还是技术重要 。现在,讲述一个首页“门面”代码实现记录。

数据统计补全机制

Java核心逻辑,数据统计根据按时/天/周/月/年补全某一段时间的数据。情况是这样的,数据库查询的数据统计,使用sql语句查询group by create_time之后有部分时间的数据没有,希望通过补充0提供给前端展示。

按年补全数据-具体逻辑

	/*** 按年补全数据-具体逻辑** @param oldList* @param start* @param end* @return*/public static List<Map<String, String>> addYearForNullMap(List<Map<String, String>> oldList, String start, String end) {int n = getYearSub(start, end) + 1;ArrayList<Map<String, String>> newList = new ArrayList<>();int num = oldList.size();int temp = 0;Date startDate = DateUtil.parse(start, "yyyy");Date endDate = DateUtil.parse(end, "yyyy");Date tmpDate = null;if (startDate == null || endDate == null) {return newList;}for (int i = 0; i < n; i++) {if (temp < num) {String orderTime = ObjectUtil.toString(oldList.get(temp).get("orderTime"));tmpDate = DateUtil.parse(orderTime, "yyyy");//如果开始日期小于当前记录日期则增加空白数据if (startDate.compareTo(tmpDate) < 0) {Map<String, String> result = getNewStatisticResultMap(start);newList.add(result);}if (startDate.compareTo(tmpDate) == 0) {//原数据加入newList.add(oldList.get(temp));temp++;}} else if (temp >= num && startDate.compareTo(endDate) <= 0) {//加入空数据直到结束时间Map<String, String> result = getNewStatisticResultMap(start);newList.add(result);}//开始时间向前加一年startDate = addDateOneYear(startDate);start = DateUtil.format(startDate, "yyyy");}return newList;}

按日补全数据-具体逻辑

	/*** 按日补全数据-具体逻辑** @param oldList* @param start* @param end* @return*/public static List<Map<String, String>> addDayForNullMap(List<Map<String, String>> oldList, String start, String end) {long n = getDaySub(start, end) + 1;ArrayList<Map<String, String>> newList = new ArrayList<>();int num = oldList.size();int temp = 0;Date startDate = DateUtil.parse(start, "yyyy-MM-dd");Date endDate = DateUtil.parse(end, "yyyy-MM-dd");Date tmpDate = null;if (startDate == null || endDate == null) {return newList;}for (int i = 0; i < n; i++) {if (temp < num) {tmpDate = stringToDate(ObjectUtil.toString(oldList.get(temp).get("orderTime")), "yyyy-MM-dd");//如果开始日期小于当前记录日期则增加空白数据if (startDate.compareTo(tmpDate) < 0) {Map<String, String> result = getNewStatisticResultMap(start);newList.add(result);}if (startDate.compareTo(tmpDate) == 0) {//原数据加入newList.add(oldList.get(temp));temp++;}} else if (temp >= num && startDate.compareTo(endDate) <= 0) {//加入空数据直到结束时间Map<String, String> result = getNewStatisticResultMap(start);newList.add(result);}//开始时间向前加一天startDate = addDateOneDay(startDate);start = DateUtil.format(startDate, "yyyy-MM-dd");}return newList;}

或者

	/*** 按日补全数据-具体逻辑** @param oldList* @param start* @param end* @return*/public static List<StatisticResult> addDayForNull(List<StatisticResult> oldList, String start, String end) {long n = getDaySub(start, end) + 1;ArrayList<StatisticResult> newList = new ArrayList<>();int num = oldList.size();int temp = 0;Date startDate = DateUtil.parse(start, "yyyy-MM-dd");Date endDate = DateUtil.parse(end, "yyyy-MM-dd");Date tmpDate = null;if (startDate == null || endDate == null) {return newList;}StatisticResult dog = null;SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");for (int i = 0; i < n; i++) {if (temp < num) {tmpDate = DateUtil.parse(ObjectUtil.toString(oldList.get(temp).getTime()), "yyyy-MM-dd");//如果开始日期小于当前记录日期则增加空白数据if (startDate.compareTo(tmpDate) < 0) {StatisticResult result = getNewStatisticResult(start);newList.add(result);}if (startDate.compareTo(tmpDate) == 0) {//原数据加入newList.add(oldList.get(temp));temp++;}} else if (temp >= num && startDate.compareTo(endDate) <= 0) {//加入空数据直到结束时间StatisticResult result = getNewStatisticResult(start);newList.add(result);}//开始时间向前加一天startDate = addDateOneDay(startDate);start = DateUtil.format(startDate, "yyyy-MM-dd");}return newList;}

根据开始与结束日期获取相减得到的天数

	/*** 根据开始与结束日期获取相减得到的天数** @param beginDateStr* @param endDateStr* @return*/public static long getDaySub(String beginDateStr, String endDateStr) {long day = 0;SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");Date beginDate;Date endDate;try {beginDate = format.parse(beginDateStr);endDate = format.parse(endDateStr);day = (endDate.getTime() - beginDate.getTime()) / (24 * 60 * 60 * 1000);} catch (ParseException e) {e.printStackTrace();}return day;}

根据开始与结束日期获取相减得到的年数

	/*** 根据开始与结束日期获取相减得到的年数** @param beginDateStr* @param endDateStr* @return*/public static int getYearSub(String beginDateStr, String endDateStr) {int year = 0;SimpleDateFormat format = new SimpleDateFormat("yyyy");Date beginDate, endDate;try {beginDate = format.parse(beginDateStr);endDate = format.parse(endDateStr);Calendar calendarBegin = new GregorianCalendar();Calendar calendarEnd = new GregorianCalendar();calendarBegin.setTime(beginDate);calendarEnd.setTime(endDate);int yearBegin = calendarBegin.get(Calendar.YEAR);int yearEnd = calendarEnd.get(Calendar.YEAR);year = (yearEnd - yearBegin) ;} catch (ParseException e) {e.printStackTrace();}return year;}

单元测试

        @Testpublic void addMonthsForNull() {List<StatisticResult> oldList = new ArrayList<>();StatisticResult st1 = new StatisticResult();StatisticResult st2 = new StatisticResult();st1.setAction("55");st1.setTime("2020-01-02");st2.setAction("66");st2.setTime("2020-01-03");oldList.add(st1);oldList.add(st2);String start = "2020-01-01";String end = "2020-01-05";TheFirstStatisticsUtil tt = new TheFirstStatisticsUtil();List<StatisticResult> list = tt.addDayForNull(oldList, start, end);for (StatisticResult sr : list) {System.out.println(sr.toString());}}

效果展示

StatisticResult(time=2020-01-01, action=0)
StatisticResult(time=2020-01-02, action=55)
StatisticResult(time=2020-01-03, action=66)
StatisticResult(time=2020-01-04, action=0)
StatisticResult(time=2020-01-05, action=0)

下一篇,介绍前端vue编写的技巧方式,现在就写到这吧。

http://www.yayakq.cn/news/92948/

相关文章:

  • 运城手机网站建设网站程序 wordpress 织梦 discuz
  • 网站建设前期策划wordpress配置七牛云cdn
  • 中国工商注册网企业年报系统做seo网站的公司
  • 吴江开发区建设局网站网站制作什么做
  • 网站仿做软件系统维护一般要多长时间
  • 办公家具网站建设费用网站流量推广
  • 花都做网站公司方又圆网站建设
  • 做网站找谁廊坊安次区网站建设公司
  • 青海企业网站制作哈尔滨建设公司网站
  • 网站前期设计新媒体运营岗位职责
  • 营销型网站.一般使用的分辨率的显示密度是
  • 网站维护提示页面模板一个企业为什么要建设网站
  • 网站功能模块清单wordpress自动保存图片
  • 印尼做网站的教学 中文营销网络信息化的作用有哪些
  • 合肥网站建设sina排版设计欣赏
  • 厦门网站建设westcy广州定制网站设计
  • 如何看网站几级域名富顺网站建设
  • 赣州网站优化家里电脑做网站服务器
  • 代申请可信网站公司软文推广
  • 天津河西做网站贵吗一个ip上绑多个网站
  • 网站流量50g泰州网络科技有限公司
  • 郴州网站建设企业流量最大的网站
  • 天水模板型网站建设广州网站seo地址
  • 免费自媒体网站做网站其实不贵
  • 网站404做多大企业产品展示型网站案例
  • 怎样申请免费网站专门做护肤品网站
  • 合肥企业建站系统模板官网建站合作模版
  • 福建省建设人才与科技发展中心网站首页网站开发需要哪些部门
  • 如何做好网站推广软件下载类型网站怎么做
  • 巩义网站建设模板建网站要花费多少钱