精华内容
下载资源
问答
  • 简介 主要包含个人后端开发项目 项目 基于Spark和Spring的电影推荐系统 基于SringBoot和Vue的个人健康管理平台
  • 后端商务 利用Javascript,服务器,MySQL Workbench和Insomnia进行后端开发项目
  • 用HBuilder X开发微信程序,java后端开发工具idea,mysql数据库,主要功能有:用户管理、分类列表、分类金额、众筹列表、订单列表、系统设置、权限分配
  • 第一个web项目-微信程序后端开发

    千次阅读 多人点赞 2021-02-28 18:44:42
    第一个web项目-微信程序后端开发 前言 去年暑假一个偶然的机会我和几位同学加入了学院一位老师主持的教改项目,需求是开发一个基于SPOC与翻转课堂的计算机组成原理课程的学习app(类似慕课、知到),后来经过讨论...

    第一个web项目-微信小程序后端开发

    前言

    去年暑假一个偶然的机会我和几位同学加入了学院一位老师主持的教改项目,需求是开发一个基于SPOC与翻转课堂的计算机组成原理课程的学习app(类似慕课、知到),后来经过讨论决定降低难度,先做一个微信小程序,附带一个后台管理系统,于是我的第一个web项目就开始了~

    需求分析

    这里简单介绍下SPOC和翻转课堂的意思

    • 翻转课堂

    “翻转课堂”(Flipping Classroom)是一种颠覆传统教学由“课堂授课听讲 + 课后作业练习”转变为“课前自主学习 + 课堂协作探究”的新型教学模式。

    • SPOC

    SPOC(Small Private Online Course)一般被译为小规模限制性在线课程或者小规模私有型网络课程,音译为“私播课”。
    这次项目的需求是开发一个学习类型的小程序,用户分为学生和教师,其中学生可以观看视频、课件、动画,完成作业、考试以及发布评论、点赞、回复,而教师可以上传教学视频、课件、动画和发布作业、考试、通知,以及查看学生的学习情况,也可以查看评论回复,及时解答学生的疑惑。

    团队分工

    团队一共有四个人,总体工作分为产品设计、前端开发、后端开发三部分,然后每部分由两人负责。其中我是负责后端开发的,同时兼任项目负责人(其实也没有听上去那么高大上,只是需要承担更多决策、协调、沟通的角色)。

    总体设计

    这里分为小程序和管理系统
    首先是小程序,放几张使用墨刀制作的原型图,这里多说两句,市面上的小程序基本都是微信授权直接登录,最多绑定手机号,我们这个由于要统计学生的学习情况才设置了注册和登录功能



    至于管理系统,由于是10月份才开始做的,而且是我和另一位做后端的同学负责的,时间比较紧,我们作为前端小白没有十分系统的方法去做开发,只是大概确定了需要做哪些模块,每个模块对哪些表的增删改查,这里原型图就不放了(较简陋)

    开发工具及编码实现

    小程序前端

    据我了解,做前端的同学先去微信公众平台注册账号,然后做一些开发设置,具体步骤自行百度。前端用的是微信开发者工具,有不会的基本上在微信开放文档都可以找到,包括许多实用的API。

    后端

    这里分为数据库、接口代码两部分

    数据库

    用的是mysql数据库,之前是跟着学堂在线的一个小程序入门教程做的,它推荐的本地开发环境是phpstudy,里面集成了php、mysql、apache、FTP、Nginx以及数据库管理工具phpMyAdmin,关于phpMyAdmin使用请看https://blog.csdn.net/u012767761/article/details/78238487
    原本的数据库设计得不好,存在较多冗余数据,后来学习了数据库系统这门课,我进行了大改,先确定有哪些实体以及实体之间的联系,然后画er图,最后再建模,通过外码约束大量减少了冗余,也减少了表的数量。

    接口代码

    教程使用的是php语言,框架是thinkphp5,开发手册看https://www.kancloud.cn/manual/thinkphp5/118003,我当时是去b站找视频学了下php基础语法,然后就去学原生php以及框架如何操作数据库。然后根据业务逻辑开始编码,其实每个接口(或者叫类里面的一个函数)结构都差不多,主要是三部分:接收前端传来的数据、增/删/改/查、返回结果给前端。
    顺便说下代码编辑用的是sublime text3,教程看https://blog.csdn.net/sam976/article/details/75333079/,这个不是ide,没有那么多的功能比如调试、运行,单纯是只有编辑、加注释、格式化等等,这里吐槽下自带的格式化代码功能(先选择代码,再Edit -> Line -> Reindent),有点辣鸡。而且如果有语法错误不会像eclipse那样自动检测出来,之前被坑了几次,肉眼找不到的话只能用postman去测试了。

    管理系统前端1.0

    一开始我们是不知道还要做个管理系统的,以为所有功能都放在小程序,后来老师跟我们讨论聊到这个问题,我们才知道原来还有这回事,其实就是管理系统应该具有一切功能,即对数据库所有表的增删改查,而小程序只需要有些轻量的功能即可,至于上传大容量文件、查看学习情况这些不够轻量的功能全部放在管理系统。好吧,凡事总有第一次,我们就开始学习基本的前端三件套html,css,javascript。
    开始做的时候我们希望先实现功能,界面难看点没有太多关系,于是学了部分三件套的基础后又学了ajax技术(因为要与后端通信),这里最开始用的是创建XMLHttpRequest 对象,用open()方法设置请求类型和url,用send()方法发送数据到后端,直到遇到了jquery,后面的请求统一都用$.ajax()了。
    接下来又遇到了一个难点,因为基本都用表格来展示数据,那获取数据后如何动态地加入表格呢?查找资料后用每一条数据拼接成由tr标签包含的字符串,然后用jquery获取表格标签后调用append()方法加入表格中。
    除此之外,我们想在每行末尾设置按钮进行事件处理,于是我们append数据的同时也把button标签放入刚才的字符串中,然后给每个button设置id属性,比如用于修改数据的就叫fixi,最后这个i是代表表格第几行,然后添加事件监听,点击button时获取id,然后查看最后一位是多少从而确定是第几行。
    这些做法实现起来是挺繁琐的,而且感觉在重复造轮子,我们也做得有点郁闷,因为每个页面基本都要这样做,但是当时没有那么多的时间精力去学习框架,只是想先实现功能(u1s1,上学期的课多到我快吐了)。
    放两张界面图

    管理系统前端2.0

    之前放假,总算有较多空余时间了,我们决定要改下界面,但毕竟自身水平不高,因此需要用一点第三方的东西了。
    在跟小程序前端测试了部分功能后,有一天后端同学找到了一个开源的框架然后我们一起看了下说明文档,最后决定:就用它了。
    有请layui登场,经典模块化前端框架、低门槛开箱即用。
    真正使用之前可以先看看文档https://www.layui.com/doc/,个人感觉上手还是挺快的。layui提供了许多实用的组件包括弹出层、表格、表单、文件上传、流加载等等。
    就拿表格来说,之前我们用append动态添加数据,现在直接table.render(),设置好参数就行了;之前我们给button设置id进行事件处理,现在绑定工具条,直接table.on()就行了;而且之前我们没实现的分页,现在设置分页参数就行了,然后查询数据库时分页读取。
    另外,layui提供了一个页面布局的模板,包括logo、用户名、退出按钮、导航栏以及一些css动画。我们要做的就是按照它的模板来,页面元素的样式也参考它提供的。
    有了layui的助攻,我们可以将更多注意力放在业务逻辑上,更多关注用户体验。

    测试

    后端本地测试

    工具:postman
    使用:打开一个新窗口,选择请求类型,输入url,设置参数,点击send
    这种测试我认为是模拟前端发送数据然后运行后端代码,看结果是否正确,属于白盒测试,但是我们不是专业测试人员,目前这样测试不是做得很规范,只能尽可能想到不同的测试用例。

    前后端联合测试

    由于放假回家了没办法面对面,只能借助腾讯会议线上测了。
    在部署工作完成之后,一般是我们写好接口代码,然后把url和需要的参数告诉前端同学(这里注意下,微信小程序的请求api只允许https开头的url,而且前端必须在微信公众平台配置好合法域名,不然会报错),前端把这些东西填入那个wx.request的api然后运行,他们会查看返回的数据是否正确,我们会查看数据库的情况,如果没问题会测试多几个数据,都可以的话就到下一个功能,这种方式应该是属于软工讲到的V模型的单元测试。

    部署

    用的是新浪云,实名认证、学生认证后会送一些云豆(新浪云的计费单位,1RMB=100云豆)
    跟着之前说的教程把整个thinkphp项目部署到新浪云,具体步骤看https://www.kancloud.cn/cnzxo/sae_thinkphp/1423806

    • 代码

    在代码管理那里可上传压缩包,或者在线编辑(跟记事本差不多),改动大的最好在本地写好再贴上去

    • 数据库

    开启共享型mysql服务,目前用了phpmyadmin4.9版本,然后建表或导入sql文件

    • 缓存

    开启memcached服务,设置容量16MB(省点钱),其实这个服务我不是很清楚干什么的,但如果不打开访问接口时会报致命错误?

    • 文件存储

    我们需要保存许多类型的文件包括视频、课件、动画、作业、考试、头像,因此需要存放在服务端。这里开启storage服务,使用方法看https://www.sinacloud.com/doc/sae/php/storage.html#cyberduck,普通用户配额5个bucket,每个容量10G,然后直接当作本地磁盘那样用就行了,控制台或写代码都可上传文件,上传后获得url,然后就可以通过网络访问,关于新浪云环境下php如何操作看官方文档http://apidoc.sinaapp.com/source-class-sinacloud.sae.Storage.html#。

    • 域名

    应用信息可查看二级域名,独立域名需要购买且备案

    • 日志

    日志中心可查看每次请求的接口、时间、请求方设备等信息

    • 其它

    控制台还可以实时查看流量统计、资源使用情况,以及消费情况

    总结

    这个项目我也算前后端都做了一遍,感觉前端不太适合自己,可能是对页面元素样式、用户体验不够敏感,不过必须承认前端是挺有意思的。至于后端是更加注重逻辑,目前我对后端的了解只停留在数据库、网络、部署层面,其实如果用户数量非常多还要考虑高并发的问题,也就要使用多线程、负载均衡、消息队列等技术了,所以还有很多技术需要学习。
    最后感谢老师的支持和几位队友的帮助。第一次写博客,若有描述不当之处欢迎指出。

    展开全文
  • 本文来源:http://r6d.cn/Jz79整理出一套公共性的项目模板,旨在尽量多地包含日常开发所需,减少开发者的重复性工作以及提供一些最佳实践。1. 从写好README开始一个好的R...

    本文来源:http://r6d.cn/Jz79

    整理出一套公共性的项目模板,旨在尽量多地包含日常开发所需,减少开发者的重复性工作以及提供一些最佳实践。

    1. 从写好README开始

    一个好的README给人以项目概览,可以使新人快速上手项目,并降低沟通成本,建议包括:

    • 项目简介

      • 一两句话描述该项目实现的业务功能

    • 技术选型

      • 项目的技术栈,包括语言,框架,中间件等

    • 本地构建

      • 列出本地开发过程中所用到的工具命令

    • 领域模型

      • 核心的领域概念,针对于当前系统所在的领域

    • 测试策略

      • 自动化测试如何分类

    • 技术架构

      • 技术架构图

    • 部署架构

      • 部署架构图

    • 外部依赖

      • 项目运行时所以来的外部集成方

    • 环境信息

      • 各个环境的访问方式,数据库连接

    • 编码实践

      • 统一的编码实践,比如异常处理原则,分页封装等

    • FAQ

      • 开发过程中常见问题的解答

    注意保持README的持续更新,一些重要的架构决定可以通过示例代码的形式记录在代码块当中,新开发者可以通过直接阅读这些示例代码快速了解项目的通用实践方式以及架构选择

    2. 一键式本地构建

    写一个必需的script,自动化完成本地构建的过程

    • run.sh 进行本地调试或者必要的手动测试

    • local-build.sh,完成本地构建

    3. 日志处理

    • 在日志中加入请求标识,便于链路追踪。在处理一个请求的过程中有时会输出多条日志,如果每条日志都共享统一的请求ID,那么在日志追踪时会更加方便。此时,可以使用Logback原生提供的MDC(Mapped Diagnostic Context)功能,创建一个RequestIdMdcFilter

        protected void doFilterInternal(HttpServletRequest request,
                                    HttpServletResponse response,
                                    FilterChain filterChain)
            throws ServletException, IOException {
        //request id in header may come from Gateway, eg. Nginx
        String headerRequestId = request.getHeader(HEADER_X_REQUEST_ID);
        MDC.put(REQUEST_ID, isNullOrEmpty(headerRequestId) ? newUuid() : headerRequestId);
        try {
            filterChain.doFilter(request, response);
        } finally {
            clearMdc();
        }
    }123456789101112
    
    • 集中式日志管理,在多节点部署的场景下,各个节点的日志是分散的,为此可以引入诸如ELK之类的工具将日志统一输出到ElasticSearch中。

    <appender name="REDIS" class="com.cwbase.logback.RedisAppender">
    <tags>ecommerce-order-backend-${ACTIVE_PROFILE}</tags>
    <host>elk.yourdomain.com</host>
    <port>6379</port>
    <password>whatever</password>
    <key>ecommerce-ordder-log</key>
    <mdc>true</mdc>
    <type>redis</type>
    </appender>12345678
    

    4. 异常处理

    在设计异常处理的框架的时候,需要考虑到:

    • 向客户端提供格式统一的异常返回

    • 异常信息中应该包含足够多的上下文信息,最好是结构化的数据以便于客户端解析

    • 不同类型的异常应该包含唯一标识,以便客户端精确识别

    异常处理有两种处理形式,一种是层级式,即每种具体的异常都对应了一个异常类,这些类最终继承自某个父异常;另外一种是单一式,即整个程序中只有一个异常类,再以一个字段来区分不同的异常场景。层级式异常的好处能够显化异常的含义,但是如果设计不好可能会导致程序中大量的异常类。

    使用层级式异常的范例:

    public abstract class AppException extends RuntimeException {
        private final ErrorCode code;
        private final Map<String, Object> data = newHashMap();
    }123
    

    这里,ErrorCode枚举中包含了异常的唯一标识、HTTP状态码以及错误信息;而data字段表示各个异常的上下文信息。

    public class OrderNotFoundException extends AppException {
        public OrderNotFoundException(OrderId orderId) {
            super(ErrorCode.ORDER_NOT_FOUND, ImmutableMap.of("orderId", orderId.toString()));
        }
    }1234
    

    在返回给客户端的时候,通过一个ErrorDetail类来统一异常格式:

    public final class ErrorDetail {
        private final ErrorCode code;
        private final int status;
        private final String message;
        private final String path;
        private final Instant timestamp;
        private final Map<String, Object> data = newHashMap();
    }1234567
    

    最终返回给客户端的数据为:

    {
      requestId: "d008ef46bb4f4cf19c9081ad50df33bd",
      error: {
        code: "ORDER_NOT_FOUND",
        status: 404,
        message: "没有找到订单",
        path: "/order",
        timestamp: 1555031270087,
        data: {
          orderId: "123456789"
        }
      }
    }123456789101112
    

    5. 统一代码风格

    除了Checkstyle以外,项目中有些通用的公共编码实践方式也需要进行统一。

    • 客户端的请求数据类统一使用相同后缀,比如Command

    • 返回给客户端的数据统一使用相同后缀,比如Represetation

    • 统一对请求处理的流程框架,比如采用传统的3层架构或者DDD战术模式

    • 提供一致的异常返回(请参考“异常处理”小节)

    • 提供统一的分页结构类

    • 明确测试分类以及统一的测试基础类(请参考“自动化测试分类”小节)

      Reference

    https://insights.thoughtworks.cn/backend-development-iteration0/

    END

    推荐好文

    强大,10k+点赞的 SpringBoot 后台管理系统竟然出了详细教程!

    为什么MySQL不推荐使用uuid或者雪花id作为主键?

    为什么建议大家使用 Linux 开发?爽(外加七个感叹号)

    IntelliJ IDEA 15款 神级超级牛逼插件推荐(自用,真的超级牛逼)

    炫酷,SpringBoot+Echarts实现用户访问地图可视化(附源码)

    记一次由Redis分布式锁造成的重大事故,避免以后踩坑!

    十分钟学会使用 Elasticsearch 优雅搭建自己的搜索系统(附源码)

    
    
    展开全文
  • 企业项目后端开发常用技术栈

    千次阅读 2018-11-30 00:39:46
    IT企业项目后端开发常用技术栈 使用技术的目的是解决项目中实际遇到的问题,不以解决实际问题引入的技术都是耍流氓 三层架构框架       表现层框架 业务逻辑层框架 三层架构框架集成方案 CSS框架 JS框架...

    IT企业项目后端开发常用技术栈

    使用技术的目的是解决项目中实际遇到的问题,不以解决实际问题引入的技术都是耍流氓

    1. 三层架构框架

     

     

          

    表现层框架

    业务逻辑层框架

    三层架构框架集成方案

    CSS框架

    JS框架

    JS插件

     


    目录

    IT企业项目后端开发常用技术栈

    使用技术的目的是解决项目中实际遇到的问题,不以解决实际问题引入的技术都是耍流氓

    表现层框架

    业务逻辑层框架

    三层架构框架集成方案

    CSS框架

    JS框架

    JS插件

     

     


     

     

     

          

     

     

     

     

    展开全文
  • Java后端开发框架

    万次阅读 多人点赞 2019-09-09 15:31:22
    Java web开发框架了解 ...后端–对外提供(类)RESTful风格的API—数据库交互-- web应用服务器(tomcat)-- Spring 技术栈开发 交互–HTTP协议通信-- JSON格式–RESTful 风格 java web开发框架的变迁 ...

    Java web开发框架了解

    web开发

    • 前端–页面的设计、路由、展示—静态资源(HTML、CSS、JS)–web服务器(nginx)-- Vue 技术栈开发

    • 后端–对外提供(类)RESTful风格的API—数据库交互-- web应用服务器(tomcat)-- Spring 技术栈开发

    • 交互–HTTP协议通信-- JSON格式–RESTful 风格

    java web开发框架的变迁

    1. SSH ——Struts、Spring、Hibernate
    2. Spring +SpringMVC + Hibernate/ibatis
    3. SSM —— Spring+SpringMVC+Mybatis—— 主流
    4. Springboot+Mybatis——兴起
    5. 微服务框架——springboot+dubbo、springcloud—— 前沿

    后端服务器的主要功能

    接收外界的API请求,解析后去执行数据库操作,最后将数据包装好返回给调用者(当然,中间还包含其他业务逻辑)

    和数据操作有关的

    这类框架一般负责和数据库进行连接,负责SQL的处理,以及将查询到的数据映射成指定的java对象。

    1. mybatis:易学,SQL手动编写,移植性差,支持动态SQL,数据量大、高并发、表关联复杂度高、要求对数据库可控性好可深度调优的项目,半智能效率快些

    2. hibernate:难学,SQL封装好,移植性好,不支持动态SQL,中小企业变化不多的项目,全智能效率慢

    和API请求响应有关的

    这类框架一般负责根据不同的API请求来调用程序中不同的处理方法,负责将调用者传入的数据映射成java对象,也负责处理程序返回给客户端的响应数据格式等。

    1. struts2: 类级别的拦截,每次发一次请求都会实例一个action,每个action都会被注入属性。
    2. springmvc: 方法级别的拦截,是单例的,一个方法对应一个request上下文,而方法同时又跟一个url对应,性能好开发效率高零配置。

    和业务逻辑有关的

    这类框架主要用到了两个特性,以此来简化程序的复杂性:控制反转(IOC)和依赖注入(DI)。在程序中结合这类框架,写出来的程序具有更好的维护性扩展性,也更加清晰简洁。

    1. spring: 非侵入性的方式,以一种完全外部化的方式来对待对象依赖关系。在 Spring 里,你可以使用 XML、SpringJavaConfig 或者 Groovy-Spring DSL 来连接对象依赖关系,也可以使用其它的方案。一站式解决方案,能够解决绝大部分框架类问题。
    2. guice:代码将和容器紧密耦合在一起。

    常用的框架

    • 数据层:mybatis
    • API层:spring mvc
    • 业务层:spring
    • 外加重要的:spring boot——进一步简化基于 spring 框架的项目的构建工具

    web后端开发框架

    企业最常用

    1. Spring:是 Java 后端框架家族里面最强大的一个框架,其拥有 IOC(控制反转) 和 AOP(面向切面) 两大利器,大大简化了软件开发复杂性。并且,Spring 现在能与所有主流开发框架集成,可谓是一个万能框架,Spring 让 JAVA 开发变得更多简单。
    2. SpringMVC:API层,处理|响应请求,获取表单参数,表单校验等。HTTP协议中的请求/响应特性,在该框架中,用户的每一个请求都声明了一个需要执行的动作。而这主要是通过将每个请求URI映射到一个可执行的方法来实现。同时,也将请求参数映射到对应方法的参数。
    3. SpringBoot:Spring 组件一站式解决方案,简化使用 Spring 框架的难度,简省繁重的配置。
    4. SpringCloud:微服务框架首选,它利用Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等
    5. Mybatis:一种轻量级的对象关系映射持久层(ORM)框架,数据层,数据库相关,连接、处理、映射。
    6. Swagger-UI:前后端协作的利器,解析代码里的注解生成JSON文件,通过Swagger UI生成网页版的接口文档,可以在上面做简单的接口调试 。
    7. ApachePOI:POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

    关系型数据库

    1. MySQL:中小型数据库
    2. Oracle:大型数据库,大并发,大访问量

    NoSQL

    1. Redis:内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件,配合关系型数据库做高速缓存,一个key-value型的数据库,解决应用服务器的cpu和内存压力、减少io的读操作、减轻io的压力,适用于数据高并发的读写、海量数据的读写、对扩展性要求高的数据等场景。
    2. MongoDB:更类似 MySQL,支持字段索引、游标操作,其优势在于查询功能比较强大,擅长查询 JSON 数据,能存储海量数据,但是不支持事务。

    消息中间件

    解决分布式系统之间消息的传递,异步处理(放入消息队列,提高吞吐量)、应用解耦(写入-订阅)、流量削峰(秒数或者团抢活动),大型电子商务类网站消除高并发访问高峰,加快网站的响应速度

    1. ActiveMQ:中小型公司,万级,非常成熟,功能强大,在早些年业内大量的公司以及项目中都有应用,主要是基于解耦和异步来用的,较少在大规模吞吐的场景中使用。
    2. RabbitMQ:万级,延时很低,是erlang语言本身带来的问题。很难读源码,很难定制和掌控。
    3. RocketMQ:大型公司,十万级,阿里,接口简单易用,可以做到大规模吞吐,性能也非常好,分布式扩展也很方便,社区维护还可以,可靠性和可用性都是ok的,还可以支撑大规模的topic数量,支持复杂MQ业务场景。
    4. Kafka:十万级,大数据领域的实时计算、日志采集,超高的吞吐量,ms级的延迟,极高的可用性以及可靠性,而且分布式可以任意扩展。

    SOA(面向服务)相关

    系统集成—有序,系统的服务化—复用,业务的服务化—高效

    1. SpringCloud.Dubbo:阿里,分布式、高性能、透明化的 RPC 服务框架,提供服务自动注册、自动发现等高效服务治理方案。RPC 指的是远程调用协议,也就是说两个服务器交互数据。透明化的远程方法调用,像调用本地方法一样调用远程方法,配置简单,无API侵入;软负载均衡以及容错机制,可在内网替代F5等硬件负载均衡器,降低成本;服务的自动注册与发现,不需要写死服务提供方的地址,注册中心基于接口名查询服务提供着的IP地址,并且可以平滑的添加或者删除服务提供者;采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需要Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。

    2. Zookeeper: 分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。zookeeper=文件系统+监听通知机制,客户端注册监听它关心的文件目录节点,当目录节点发生变化(数据改变、被删除、子目录节点增加删除)时,zookeeper会通知客户端。

      假设我们的程序是分布式部署在多台机器上,如果我们要改变程序的配置文件,需要逐台机器去修改,非常麻烦,现在把这些配置全部放到zookeeper上去,保存在zookeeper 的某个目录节点中,然后所有相关应用程序对这个目录节点进行监听,一旦配置信息发生变化,每个应用程序就会收到zookeeper 的通知,然后从zookeeper 获取新的配置信息应用到系统中。

    搜索相关

    全文搜索搜索引擎,计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。

    1. Elasticsearch: 一个基于Lucene的搜索服务器,它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。分布式、多租户、某些节点出现故障时会自动分配其他节点代替其进行工作、接近实时的搜索。自身带有分布式协调管理功能、仅支持json文件格式、在处理实时搜索应用时效率明显高于Solr、适用于新兴的实时搜索应用。
    2. Solr: 基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面。成熟、稳定;不考虑建索引的同时进行搜索,速度更快;建立索引时,搜索效率下降,实时索引搜索效率不高。用 Zookeeper 进行分布式管理、支持更多格式的数据、传统的搜索应用中表现好于 Elasticsearch、传统搜索应用的有力解决方案。互联网巨头,如Netflix,eBay,Instagram和亚马逊(CloudSearch)都使用Solr,因为它能够索引和搜索多个站点。
    3. Lucene:一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。一个Java全文搜索引擎,完全用Java编写。Lucene不是一个完整的应用程序,而是一个代码库和API,可以很容易地用于向应用程序添加搜索功能。

    通讯相关

    1. Netty: 异步高性能的通信框架,往往作为基础通信组件被 RPC 框架使用。典型的应用有:阿里分布式服务框架 Dubbo 的 RPC 框架使用 Dubbo 协议进行节点间通信,Dubbo 协议默认使用 Netty 作为基础通信组件,用于实现各进程节点之间的内部通信。淘宝的消息中间件 RocketMQ 的消息生产者和消息消费者之间,也采用 Netty 进行高性能、异步通信。大数据领域,经典的 Hadoop 的高性能通信和序列化组件 Avro 的 RPC 框架,默认采用 Netty 进行跨节点通信,它的 Netty Service 基于 Netty 框架二次封装实现。

    文件存储

    1. FastDFS: 一个轻量级分布式文件系统,对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)。

    项目构建类

    1. Maven:主要功能主要分为5点,分别是依赖管理系统、多模块构建、一致的项目结构、一致的构建模型和插件机制。

    1. Gradle:构建包括编译主代码、处理资源、编译测试代码、执行测试、上传归档等,基于灵活的任务模型,因此很多事情包括覆盖现有任务,跳过任务都非常易于实现。

    Gradle作为一款基于Groovy语言的构建工具,已经吸引众多的ant,maven使用者转投gradle的怀抱,和Gradle相比,ant显得冗余复杂,maven显得有些死板落后,而gradle基于DSL语法,特点明显:简洁、灵活、可读性强。Gradle和maven有很多相似点,gradle充分考虑到maven库的价值,在jar包管理上完全支持mavenRepository,很多属性乍眼一看就能反应过来maven中对应的是什么标签,大大降低maven到gradle的迁移难度,并在构建方面改善了很多maven的不足,,同时,gradle对比maven更好的面向ant用户,使用maven时,虽然能通过plugin来跑ant的命令,但是maven在任务实现主要靠的是插件以及自身的固定框架,Gradle在定义任务方面思想与ant非常相似,做了很好的集成。

    IDE

    1. IntellijIDEA: 更好的调试、更高的开发效率、更智能的重构、目录分层少而清。
    2. Ecplise: 最大化控制台、项目结构支持更强大、插件编写更容易、免费。
    展开全文
  • PlatziVideo Platzi视频平台项目后端开发课程)
  • 第二章将前端页面的框架基本搭建好了,第三章,我们来做登录功能,登录功能需要在后端获取到用户信息,返回到前端。所以先来搭建后端开发环境 1、后端开发环境介绍 ...我们开发项目过程中,如果se...
  • 后端开发入门

    千次阅读 2019-03-27 21:57:05
    因为课程需要我们做一个项目,没有要求是什么程序,我们小组暂定商议为一个安卓程序,又鉴于我没有学过安卓开发,又感受到后台开发的内容自己基本没有接触到过,所以自告奋勇来写后端的内容,这个教程主要参考了b站...
  • 开发项目 学习后端开发
  • 前面刚刚整理过了「Java后端开发学习路线」,很多伙伴也说让推荐一些对应的书籍瞧瞧。 推荐是没问题,但是有些话还是想聊聊看。 首先毫无疑问的是,对于 「编程基础」 部分,有大量经典的书籍值得阅读,每一本都是...
  • javaweb后端开发要用到的各种c3p0.jar包javaweb后端开发要用到的各种c3p0.jar包
  • Holberton School Web后端
  • 后端开发实践系列

    2019-08-29 11:16:38
    后端开发实践系列之一 —— Spring Boot项目模板 后端开发实践系列之二——领域驱动设计(DDD)编码实践 后端开发实践系列之三——事件驱动架构(EDA)编码实践 ...
  • 编程之JAVA后端开发与python后端开发的区别及类的方法技巧[图] 今天总算闲了一会,趁着这个闲暇来写篇文章。 今天我想以个人观点来简单说说Java后端开发和Python后端开发的区别。 Java&PythonBackEnd 公众号老粉...
  • 泛微ecology 9的java、react开发的demo,前端后端这个项目全包括 让大家知道怎么通过react编辑后生成html,后端通过java编辑后生成api 通过怎样逻辑让前后端关联起来的。
  • 一文看懂Web后端开发

    千次阅读 多人点赞 2021-03-20 23:53:34
    一文看懂Web后端开发 前言 由于网络上系统地介绍后端开发的文章实在太少,而最近有恰巧有许多同学问我“什么是后端开发?”、“你为什么喜欢后端开发?”、“做后端都需要学什么?”,那么我们就来讲一讲,到底什么...
  • 前端和后端开发人员比例 Natalie Kozlowski是CodeGuard的前端Web开发人员。 她是一位自学成才的编码人员,使用开放源代码,并且将在今年的Raleigh All Things Open会议上发表有关如何与前端开发人员进行交互的演讲 ...
  • 微信程序开发【前端+后端(java)】

    万次阅读 多人点赞 2018-07-13 22:19:46
    前言 现在微信程序越来越火了,相信不少人都通过各种途径学习过微信程序或者尝试开发,作者就是曾经...程序项目构建 程序组件讲解 程序api调用 后台resetful接口编写 程序调用后台接口 ...
  • 后端开发发展学习路线

    千次阅读 2020-03-09 18:14:58
    ## 1、什么是后端开发 后端开发是一种不涉及创建生成用户界面的开发。这可能包括后端Web开发,可能也涉及编写API,创建库或和没有用户界面或甚至科学编程系统的系统组件一起工作。 ...
  • NC65项目开发-应用集成后端开发技术(2-2)(WebService),主要集成开发文档webservice,java
  • 前端和后端开发人员比例Websites and applications are complex! Buttons and images are just the tip of the iceberg. With this kind of complexity, you need people to manage it, but which parts are the ...
  • 该文档为后端开发个人简历模板,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
  • 后端开发之路

    2019-05-11 18:04:41
    在纠结了很久的发展道路之后(也曾考虑过Android开发),最终选择了Java后端开发,现在已经大二下学期过半,但为时不晚,从现在开始,一切都是有机会的 先来看一下一些公司对后端开发的要求: 这是腾讯的后台...
  • 开发项目的目的是向更多人宣布团结活动。 团结项目-后端 技术:NodeJS-Express-MongoDB 测试工具:摩卡-柴-柴-http-法克 Heroku服务器: : 样本json文档: : (不需要令牌) 项目管理委员会: :
  • Linux后端开发

    千次阅读 2017-09-09 09:29:13
    做实际项目或者公司实习 libevent moduo Nginx 9.学习方法 对于学习编程没有诀窍,道路三条很明确。 抄-改-写。 抄的时候尽量多多思考,理解这里别人为什么需要这样写,多多在别人程序上面注释。 改的时候就...
  • 漫谈Go语言后端开发

    万次阅读 2019-02-14 21:47:08
    为什么使用Go语言做后端开发? 简单高效:几乎所有主流的编程语言如Java、C++、PHP、Python、JavaScript等等都是可以用于服务端开发的,Go语言作为后起之秀,在语言层面具有语法简洁、执行效率高(底层语言)的...
  • 这是一个使用JSP+Servlet+JavaBean开发模式实现的Wev后端开发课程作业,网站实现了用户注册,用户登录(记住密码、自动登录),编辑资料(换头像、换昵称),账号管理(改密码、注销账号),加入书架(类似购物车)...
  • 结合Java实现easyui中各个功能的具体实现,其中代码包括数据库代码(功能主要有:可编辑列表,树形图,下拉框,弹出层都是动态的后端实现等功能)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 238,999
精华内容 95,599
关键字:

后端开发小项目