Full Stack • Lux Sun - V1.0

产 品


技术栈:TAPD

思想栈:敏捷开发

 

 

前 端


技术栈:Uni-App、Vue.js、小程序、H5、WebApp、Stylus、npm、Webpack、Easy Mock

思想栈:MVVM、响应式、兼容、模板化 & 模块化 & 组件化

 

工具栈:

1、Vue Devtools。

2、FE。

3、Restlet Client。

4、F12。

5、Resolution Test。

6、HBuilderX。

 

插件栈:

1、border.css。

2、fastClick.js。

3、iconfont。

4、ellipsis()。

5、stylus:变量 + scoped + 缩排。

6、BetterScroll。

7、vue-awesome-swiper(版本3)。

8、Normalize.css。

9、BetterScroll。

10、Velocity.js。

11、Vuex

 

优化栈:

1、函数节流。

2、全局事件解绑。

3、JQ one,只能触发一次事件。

 

Tips栈:

1、先静后动,先样式再数据。

2、模态框:Web上确定按钮一般在左边,手机上确定按钮一般在右边。

3、JSP改成H5规格。

 

 

后 端


技术栈:Maven、SpringMVC、Spring、MyBatis、Redis、Junit、Easy Mock

思想栈:设计模式 & 原则、直接 & 辅助切面业务分离、Restful API、DTO/VO

 

工具栈:

1、IDEA。

2、DHC Client。

3、Restlet Client。

4、CDSpace。

 

插件栈:

1、JSON + GSON。

2、Shiro。

3、MyBatis 三剑客。

4、UUID 类。

5、MD5(Salt,提高破解复杂度)。

6、commons-collections.jar。

7、Spring Schedule 定时任务。

8、Log:slf4j + logback。

9、StringUtils。

10、Joda-Time。

11、Github - PageHelper。

12、util - BigDecimalUtil。

13、util - DateTimeUtil(Joda-Time)。

14、util - PropertiesUtil。

15、util - MD5Util。

16、util - FTPUtil。

17、common - ServerResponse。

18、common - const(含常量、interface、enum)。

19、common - ResponseCode。

20、common - TokenCache(Guava)。

 

优化栈:

1、MyBatis 只读方式设置。

2、Threadlocal。

3、Nginx + Tomcat。

 

Tips栈:

1、API粒度适当细分,重整功能更灵活。

2、项目IDE编码方式统一。

3、过滤器、拦截器:乱码处理、登录处理。

4、常量:杜绝使用常量("name")直接在业务逻辑里,应该使用 static final 来修饰,用常量(NAME)。

5、设计模式:简单工厂、工厂方法(构建工厂)、单例。
Ps:有时候不可能完全符合设计模式的一个思想,但是有这么一个趋势在也是可以的,因为有些业务逻辑很复杂,灵活套用设计模式,也许你设计出来的就是一个新的设计模式思想。

6、设计原则:开闭原则、单一职责原则、迪米特原则。

7、反射、多态、封装、继承。

8、AOP:AspectJ(推荐注解方式)。

9、XML + Annotation

10、参数当中匿名内部类,可以在该类中 private class ... 这样可读性更高。

11、事务控制由Java来,数据库不需要。

12、事务大部分推荐用注解来配置。
使用注解控制事务方法的优点:
(1)开发团队达成一致约定,明确标注事务方法的编程风格。
(2)保证事务方法的执行时间尽可能短,不要穿插其他网络操作RPC/HTP请求或者剥离到事务方法外部.
(3)不是所有的方法都需要事务,如只有一条修改操作,只读操作不需要事务控制。

13、日志系统(切面处理)。

14、WEB-INF 安全性。

15、Web => global包:全局控制器,比如:乱码处理,404,500。

16、Java实体类时间用Date类型;所有属性一律用对象类型,比如:id用Integer对象类型。
为什么实体类的属性(本可设置为基本数据类型)设置为对象类,而不是基本数据类型?
答:因为ORM框架中,有时判断都以null为基准,用基本数据类型的话,就可能默认为一个具体的值。

17、接口方法,可以省略public abstract关键字。

18、在Java代码中,可以返回并在返回后执行JS代码。

response.getWriter().print("");

19、MyBatis 别名,注解方式。

20、web.xml 3.1版。

21、JavaWeb - Action + Service + Dao 三层功能划分

22、HttpSession API:removeAttribute。

23、RedisTemplate。

24、Ajax跨域。

25、XML_SQL + Mapper接口实现类。

26、dao-cache-RedisDao。

27、Maven:项目编码 UTF-8。

28、CDATA,不需要每个都这样,只要让它的结构不成立即可,比如:改动"<"的符号即可。

29、logback 日志路径在xml中设置。

30、属于service内部使用的函数,注意使用private。

31、后台返回前台一律用 json。

32、注释待写代码:// todo 习惯。

33、IUserService -> UserServiceImpl。

34、Set自定义类排重,要重写 hash 和 equals,注意判断因子要一致。

35、判断为空等情况时,一定要注意是否为NULL的判断技巧。

36、mybatis 驼峰命名法 + 列别替换 搭配组合。(看习惯,有时候可少些点代码,但是格式的耦合度很高)。

37、用Java类导入到JSP页面头文件的方式来比较一些需要常量对比的场景。

38、枚举包:用枚举类表示常量数据,避免在代码中穿插中文。

39、必要时,将需要的编译器异常转化为运行时异常,因为Spring只针对运行时异常才会回滚。

40、InternalResourceViewResolver 中 viewClass 先不加,还没搞清楚状况!!!

41、先写实现再写接口函数是因为在实际开发中经常可能会需要修改参数,避免回到接口改来改去。

42、bean/entity 作用在dao层与数据库之间的信息表;dto 作用在controller层与页面之间的信息表(因为有时候不一定页面显示/提交数据与bean一 一对应)。

43、货币精度处理:JavaWeb - 解决浮点型商业运算中丢失精度的问题

44、properties。

45、Maven:多处使用相同的版本号,用自定义变量方式。

46、IDEA:
(1)java文件夹设置源代码文件夹。
(2)父(普通模板)module + web(web模板)、service(普通模板)两个module。
(3)点击类名自动创建Test。
(4)IDEA - 开启Problem窗口,实时编译的配置及作用。
(5)IDEA - Autowiring for Bean Class设置为Warning。

47、Maven 插件 lib。

48、安全签名:任何CRUD都先进行签名,预防蜘蛛入侵等行为。为了提高性能,可以用缓存来签名验证。

 

 

数据库


技术栈:MySQL

思想栈:逻辑外键

 

工具栈:

1、Navicat

 

Tips栈:

1、外键:但无物理外键约束而有逻辑外键约束,顺便省了关联关系的分析。
2、SQL语句记得写 COMMENT。
3、用户状态:0-正常,1-锁定,2-删除。
4、多个独立数据源配置:environments。
5、常量信息配置文件:properties。
6、img 一般不会放在数据库里,而放在第三方的服务器里。
Ps:放在数据库的话类型用mediumblob,服务器里面用路径来表示,类型为varchar。
7、时间不要用timestamp ,用datetime,因为...
8、datetime 类型取值范围:1000-01-01 00:00:00 到 9999-12-31 23:59:59
timestamp 类型取值范围:1970-01-01 00:00:00 到 2037-12-31 23:59:59(经过测试得出范围为1970-01-01 08:00:01 到2038-01-19 11:14:07)
9、代码创建表的时候,字段名最好用单引号括起来,避免出现关键字不能用,否则就可以使用,一般也不建议使用关键字。
10、URL地址记得字符集。
11、若要创建外键约束,推荐放在所有表创建完毕后,再创建,否则在创建表的时候创建时,就必须要按照约束的顺序来(与哪个表外键约束,那个表要先创建),比较麻烦。
12、字段名:表名_字段名。
13、手写DDL。
14、IGNORE 插入去重技巧,省了逻辑代码查重步骤。
15、连接池选择:http://www.cnblogs.com/JavaSubin/p/5294721.html【待写】
16、每张表建议都创建createTime & updateTime字段,而且 createTime & updateTime 时间一律改成 now(),因为这两个字段我们是方便来debug用的。
17、杜绝 select *;要什么查什么。
18、敏感数据存取数据库时候需要加解密。
19、无限层分类数据表设计:id,parent_id在同一个表中。
20、count(1)。
21、在mysql中sum函数查出的最终结果为0的时候会显示null,这时候就需要将null转为0。使用IFNULL(expr1,expr2)函数。

 

 

运 维


技术栈:Git、Linux、Tomcat、Nginx

 

 

附:其它


 

  1. 资源参考:
    1、Spring+MyBatis整合开发人员信息管理系统源码。
  2. 未完成:
    1、搭建邮件服务器。
    2、Redis + 权限控制。
    3、SSM -> Spring Boot -> Spring Cloud。
  3. 流程式(自上而下)编程。(面向流程编程)。
  4. 微信授权登录(详情:慕课网视频)。
  5. 开发完成后习惯写 wikis,项目使用接口说明。
  6. 文档是拿来查阅用的,不是拿来学习用的。
  7. Emmet 代码插件。
  8. 待更新...

你可能感兴趣的:(#,Fsls)