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

建设跳转公积金网站/优化网站标题名词解释

建设跳转公积金网站,优化网站标题名词解释,网站自建,成都网站建设推广这几天初步了解了百度云的后台架构部分,当然了,自己了解的仅限于后台java相关的部分,先说一下客户端这边使用的技术:1、spring boot : 与前端进行直接交互的服务是用spring来实现的(后台服务还需要调用其他…

这几天初步了解了百度云的后台架构部分,当然了,自己了解的仅限于后台java相关的部分,先说一下客户端这边使用的技术:
1、spring boot : 与前端进行直接交互的服务是用spring来实现的(后台服务还需要调用其他的基础服务,如redis 数据库服务 订单服务 cdn服务 openstack服务等)
2、jackson : 从代码层面看,后台的数据处理以及数据格式化基本上是使用jackson来实现的,服务之间的交互使用http协议,数据格式基本上使用json格式。
3、swagger : 代码中也涉及到了部分的第三方控件如 swagger、StopWatch等

从代码中可以看出,并没有十分复杂的技术,复杂的只是其中涉及到的业务,且业务之间的耦合基本上都是以服务接口的形式呈现的,所以完全可以通过代码去熟悉业务。(注:本文仅限于本人的代码学习,吻合公司的代码风格,了解一些编码技巧

所以下面是从代码层面去介绍项目中用到的一些小技巧
小小知识点:


常遇到的一些标签

spring部分

1、controller层 接受请求使用@RestController,由于后台服务只提供数据接口给前台,也就不需要视图解析以及跳转
2、@Value标签常用于获取环境变量,“:”后面的为默认值

@Value("${userlog.isAsync:false}")

log部分
log部分分为两个部分:
1、使用了大家常用的log4j组件如下

static Logger log = LoggerFactory.getLogger(ClassDemo.class);
log.debug("debug info .", e);

2、通过spring AOP的切面编程实现各个模块的日志记录
通过注解@Aspect来表明这个类是个切面

@Aspect           
@Component  //和sping整合的时候必须要这个注解,否则sping容器解析不到该切面导致切面不能工作
public class UserLogAspect {
@Pointcut("execution(* com.baidu.bce..*(..)) "
@Around("userLogMethodPointcut()")public Object userLogInterceptor(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
//通过proceedingJoinPoint对象获取Signature对象,该对象封装了连接点的信息。比如通过getDeclaringType获取连接点所在类的  class对象}
}
//@Before是在所拦截方法执行之前执行一段逻辑
//@After 是在所拦截方法执行之后执行一段逻辑
//@Around是可以同时在所拦截方法的前后执行一段逻辑

集合、字符、数组处理部分
集合主要使用了org.apache.commons.collections 包中的CollectionUtils类来对集合进行操作

CollectionUtils.isEmpty(objectDemo) //判断集合是否为空

工具类
StopWatch是org.springframework.util包中的一个简单工具类,当我们需要纪录一部分代码中执行时间的时候,往往需要在任务前后的两个时间点去获取当前时间,并作减法,往往不够优雅,这时候StopWatch就派上用场了,如下:

StopWatch first = new StopWatch("unitid");  //实例话一个StopWatch对象first.start("A");                   //纪录时间开始execute......                       //你的执行代码first.stop();                       //执行结束 first.start("B");  execute...... first.stop(); log.debug(first.prettyPrint());    //打印执行结果

jackson部分

1、@JsonProperty 此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为name,@JsonProperty(value="name")。

@JsonProperty(value = "real_name")
private String realName;new ObjectMapper().writeValueAsString(student)  //序列化
结果 {"real_name":""}String jsonStr = "{\"real_name\":\"zhangsan\"}";
Student student = new ObjectMapper().readValue(jsonStr.getBytes(), Student.class); //反序列化
结果 Student{realName='zhangsan'}

2、@JsonPropertyOrder
作用在类上,被用来指明当序列化时需要对属性做排序,它有2个属性一个是alphabetic:布尔类型,表示是否采用字母拼音顺序排序,默认是为false,即不排序

3、@JsonInclude
@JsonInclude(value=Include.NON_NULL) 是用在实体类的方法类的头上 作用是实体类的参数查询到的为null的不显示,比如说你想传一些json数据到前台,但是不想传值为null的数据,就可以使用该标签

4、@JsonIgnoreProperties
可以注明是想要忽略的属性列表如@JsonIgnoreProperties({"name","age","title"}),也可以注明过滤掉未知的属性如@JsonIgnoreProperties(ignoreUnknown=true)

5、@JsonUnwrapped
当实体类中成员属性是一个类的对象时候,忽略包装。。

public class User {  private String name;  private String password;  @JsonIgnore  private List<String> strs ;  @JsonUnwrapped  private Person p;  //setter,getter省略  
}  public class Person {    private String pName;    private int age;    private boolean sex;   @JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")  private Date birthday;    private String word;    private double salary;    //setter,getter省略  
}  public void testJsonUnWrapped() throws IOException{  User u = new User("guofeipeng","123");  List<String> ls = new ArrayList<String>();  ls.add("123");  ls.add("234");  ls.add("345");  u.setStrs(ls);  Person person = new Person("nomouse", 25, true, new  Date(),"程序员",2500.0);  u.setP(person);  ObjectMapper mapper = new ObjectMapper();  String json = mapper.writeValueAsString(u);  //java 2 json  System.out.println(json);  User user = mapper.readValue(json, User.class);//json 2 java  System.out.println(user);  
}  

注:
1.User类中Person属性不加@JsonUnwarpped,转化后的json为:{"name":"guofeipeng","password":"123","p":{"age":25,"sex":true,"birthday":"2014-12-22 07-15-29","word":"程序员","pname":"nomouse","salary":"2500.00"}}
2.加了@JsonUnwarpped注解,则去掉了p的键(包装),转化后的json为{"name":"guofeipeng","password":"123","age":25,"sex":true,"birthday":"2014-12-22 07-16-38","word":"程序员","pname":"nomouse","salary":"2500.00"}
转自 http://blog.csdn.net/mooner_g...

6、@JsonFormat

 @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = BceConstant.DATETIME_FORMAT, timezone = "UTC")

通常日期格式都是以时间戳的形式存放在数据库里,当前端页面通过接口查询时,我们会将一个对象的某些属性查出来返回给页面。一般在存当前含有当前时间的实体时,只需要配置好数据库的存储字段即可。

基本代码部分
for循环的写法

for(Object obj: List<Object> lobj){obj.get("");
}
http://www.lbrq.cn/news/1396999.html

相关文章:

  • 网站开发的人/国内免费b2b网站大全
  • 贵州省建设厅官网站首页/宣传推广方式有哪些
  • windows 安装 wordpress/甘肃新站优化
  • 华为软件开发工程师待遇/整站优化seo公司哪家好
  • 建筑工程网 装修/网络优化的意义
  • 深圳网站制作建设/企业网站推广方法
  • 用xmind做网站架构/青岛seo排名扣费
  • 湘潭网站建设 w磐石网络/磁力搜索器
  • 建设银行 商户网站打不开/手机百度网盘登录入口
  • bc网站怎么做支付/百度搜索风云榜
  • 网站图片翻页怎么做/网络文章发布平台
  • 域名过期的网站怎么看/北京seo培训
  • wordpress单位内网做网站/营销活动有哪些
  • 越烽建设集团有限公司网站/深圳网站建设 手机网站建设
  • 网站设计)/手游推广代理平台有哪些
  • 阿里云域名注册及备案/搜索引擎优化策略有哪些
  • 一汽大众网站谁做的/百度推广优化师培训
  • 网站编写软件/优化大师怎么删除学生
  • 北京企迪网站建设公司/郑州搜索引擎优化
  • 北京网站建设工作室/深圳网站建设
  • 用bootstrap做的网站有哪些/seo优化技巧有哪些
  • 台州哪里做网站/seo外链工具源码
  • php手机网站开发/产品推广网站哪个好
  • 无锡哪里做网站好/一级消防工程师考试
  • 数字营销seo/南昌seo快速排名
  • 海口网站制作推广/软文广告发布平台
  • 网站计算器代码/windows优化大师要会员
  • 网站建设注意事项/关键词seo排名优化
  • 张家港做网站广告公司/百度有专做优化的没
  • 制作网页时通常用表格进行页面布局/优化系统软件
  • 微服务-06.微服务拆分-拆分原则
  • Dubbo 的SPI
  • Spring Boot 实用小技巧:多级缓存(Caffeine + Redis)- 第545篇
  • 1. Docker的介绍和安装
  • 机器学习--数据清洗
  • 《Python学习之文件操作:从入门到精通》