
阿里
文章平均质量分 86
技术僧
喜欢自由,
展开
-
阿里专家答疑 | Object Mapping in Java
我们在Java代码编写中经常会遇到DO 、DTO之间的对象隐射转换,我们在设计DO、DTO的时候一般会尽量让对象名称、对象属性保持一致,利于属性拷贝,但是现实场景中可能存在一些对象名称不一致、对象类型不一致的情况,不同的拷贝方案,性能与使用场景也可能存在不一样,那么在众多的对象拷贝框架中如何选择合适的使用呢? 常用对象属性拷贝方法:commons-beanutils 框架中的 BeanUtils...原创 2018-06-11 14:15:45 · 848 阅读 · 0 评论 -
HTTP学习笔记(一)之初探
1http概念HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。2http特征http是应用层协议,由请求和响应构成,支持客户/服务器模式。http是一个无...原创 2018-07-03 10:48:41 · 333 阅读 · 0 评论 -
阿里干货课程 丨怎么编写用户注册/登录服务
看似简单的注册登录功能,如果想考虑完善,并且做到极致体验和良好的安全性,并不是一件容易的事情。本篇文章就结合我们公司的登录体系来分析一下怎么去做好一个用户注册与登录功能。密码设置与传输用户在注册的时候最好对密码的强度做验证,防止弱密码。其次切记不能将密码明文传输,一般的做法是前对对密码做一次Md5加密,后端再做一次Md5加密然后出到DB中。请求参数签名与验签现在主流的开发模式是前后端分离,那么前端...原创 2018-07-16 14:50:39 · 504 阅读 · 0 评论 -
Java基础 之 集合
Java 中的广义集合分两大类:Collection 和 Map。Set : 成员不能重复HashSet: 外部无序地遍历成员;覆盖了equals方法,注意修改hashCode方法。 TreeSet:外部有序地遍历成员;成员要求实现caparable接口,或者使用 Comparator构造TreeSet。 LinkedHashSet:外部按成员的插入顺序遍历成员。List:提供基于索引对成员随机访...原创 2018-07-16 14:59:05 · 423 阅读 · 0 评论 -
Java基础 之 序列化与反序列化
为什么需要对象序列化解决Java对象在网络上传输和Java对象持久化的问题。序列化将对象转换为二进制流,然后在网络上传输,当抵打目的后在反序列化为Java对象。什么是Java对象序列化Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长。但在现实应用中,就可能要求在JVM停止运行之后能够保存...原创 2018-07-16 15:01:07 · 559 阅读 · 0 评论 -
阿里干货课堂丨Websocket 探究
WebSocket: 基于 HTML5 的一种浏览器与服务器之间的即时通讯解决方案(基于 TCP 连接的双向通道);Java容器支持:目前只支持 jetty 和 tomcat。应用场景:即时通讯(网页游戏[双向异步消息模式],网页聊天,微博等)一、概念区分:HTTP 协议 与 TCP 协议区别:HTTP协议是应用层协议,是用于www浏览的一个协,应用层协议包括HTTP协议,TELNET协议,Web...原创 2018-07-16 15:03:06 · 673 阅读 · 0 评论 -
Java基础 之 类的加载与对象初始化
类的加载基本原理:所有类都由类装载器载入,载入内存中的类对应一个 java.lang.Class 实例。 已被加载的类由该类的类加载器实例与该类的全路径名的组合标识。设有 packagename.A Class ,分别被类加载器 CL1 和 CL2 加载,则系统中有两个不同的 java.lang.Class 实例: <CL1, packagename.A> 和 <CL2, pac...原创 2018-06-28 10:33:26 · 673 阅读 · 0 评论 -
Angularjs的$apply及其优化使用
今天,我们要聊得是Angularjs中的小明星$apply。当我们数据更新了,但是view层却没反应时,总能听到有人说,用apply吧,然后,懵懂无知的我们,在赋值代码后面加了$scope.$apply(),然后就惊喜的发现。噢,真的更新了。然而,有些时候,编译器会无情的给你返回Error: $digest already in progress那么,导致这些现象的原因时什么的呢?$apply究竟...原创 2018-07-11 16:58:42 · 938 阅读 · 0 评论 -
Lock wait timeout exceeded; try restarting transaction
排查过程:查看数据库 INNODB_LOCKS,未发现有死锁的记录。 查看 SHOW PROCESSLIST; 也未见异常进程; 通过Mysql的控制台,查询慢日志,也未找到有关此表的Mysql慢日志信息。 查询Mysql默认的所等待超时时间: show variables like ‘innodb_lock_wait_timeout’; Variable_name Value innodb_lo...原创 2018-07-11 17:02:09 · 1589 阅读 · 0 评论 -
Java基础 之 枚举类型
枚举类型的常见使用场景:枚举类型 作为 错误码集合:定义的枚举 属性都是 枚举类型,这个枚举类型每一个错误会对应一个错误信息;使用 枚举类型enum 构建一个状态机:利用enum可以为枚举实例添加方法的特性,可以构造状态机。packageenumeration;publicclassPerson{ //自己有一个状态 privateState s; publicPerson(State s)...原创 2018-06-27 15:47:34 · 376 阅读 · 0 评论 -
Java架构师必看 | 应用架构设计原则
软件系统架构设计原则就是把我们在各种场景下的架构设计进行抽选化提取公共特征形成过一定的方法论,这些方法论是经过严格推敲并具备移植性的,我们在设计系统时遵从这些设计规则可以为我们的体统提供更高的扩展性、稳定性。抽象原则各平台(含基础设施、中间件技术服务、各层业务服务等)需要通过合理地抽象,将内部信息、处理与扩展能力聚合成标准的服务于扩展接口,并通过统一的形式提供给使用者,屏蔽内部的实现与运行细节。以...原创 2018-06-12 09:48:46 · 1299 阅读 · 1 评论 -
阿里专家答疑分享 | GIT本地仓库与远程仓库
很多初学GIT的同学对GIT的本地仓库和远程仓库无法做到很好的区分,我就画了一张图,来阐明他们之间的关系:Git stash 的使用:我们在多分支操作时,暂存工作区中未提交的代码的功能非常有用。一般我们要求commit的代码都是功能完善的,可测试的,但是很多时候,我们的代码片段还未写完,需要临时切出一个分支来解决线上问题,此时就应该使用git stash功能;git stash 是全局储藏区,不同...原创 2018-06-13 14:00:09 · 420 阅读 · 0 评论 -
阿里干货课堂丨Task混用ThreadPool导致无限等待
现象生产环境商品打标异步任务提交任务后,任务没有被执行;查看日志,没有异常日志抛出。初步判断可能是队列出现了饱和或者死锁,但是如果出现了饱和,我们设置的线程池设置的饱和策略是通过主线程去执行,为什么主线程也没有执行呢?具体分析我定义了一个线程池Pool-Z,core_size=5,max_size=20,queue_size=1000,第一个任务A提交后,占用一个线程,那么这个任务A又会被分解成多...原创 2018-06-22 10:14:10 · 536 阅读 · 0 评论 -
阿里干货课堂丨Android 高效的 Layout
我们知道随着我们业务越来越负责,UI布局也会越来越复杂,大量的布局信息必定会带来一定的性能损耗,那么我们怎么才能写出高效的布局呢?1.使用<include> <merge><viewStub>标签。 2.LinearLayout中减少使用layout_weight参数,因为使用此属性会导致子元素被测量两次。3.学会测量Layout的层次结构,优化布局 。4.使得...原创 2018-06-22 10:28:16 · 493 阅读 · 0 评论 -
阿里工作中常见问题答疑丨记一次系统Dubbo调用超时的故障
现象:生产环境用户无法使用下单,订单无法交易。异常日志:分析:发现订单调用商品的API超时了,登陆商品系统并没有发现任何的异常调用,感觉订单的系统调用并没有抵达商品系统,后来陆续发现订单访问其他系统的Dubbo调用都超时了,由此可断定可能是订单系统的问题。首先想到的是数据库的链接数,查看RDS的连接数:可以看到,15点开始,总连接数开始飙升,并且临近最大值480(但是一直没到最大值480),但是活...原创 2018-06-15 10:49:35 · 2536 阅读 · 0 评论 -
Java 数据库连接(dataSource)的演进
原生方法加载JDBC 驱动:Class.forName(driver);// mysql 数据库:“com.mysql.jdbc.Driver”建立数据库连接:Connection conn=DriverManager.getConnection(url,userName,password);创建 statement,用来执行SQL 语句:Statement statement =conn.cre...原创 2018-06-29 13:46:09 · 7807 阅读 · 0 评论 -
阿里干货课堂丨Android 之 Listview
LisView显示的三要素1: ListView,用来展示列表 2:Adapter,用来存在数据&将数据与视图进行绑定3:数据,将被映射的字符串、图片url等等。关于Adapter ,请参考 Android 之 Adapter。ListView的工作原理Adapter的作用就是ListView界面与数据交互的桥梁,当列表里面每一项显示到页面上时,都会调用Adapter的getView...原创 2018-06-25 13:35:50 · 405 阅读 · 0 评论 -
3分钟课堂丨Java基础 之 final 和 static
finalfinal的变量当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变。其初始化可以在两个地方:一是其定义处,也就是说在final变量定义时直接给其赋值。二是在构造函数中。这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数...原创 2018-06-25 13:49:28 · 325 阅读 · 0 评论 -
Java基础 之 super 和 this
super的定义:The super keyword enables a subclass to call the methods and fields of its superclass. It is not an instance of the superclass object but a way to tell the compiler which methods or fields to...原创 2018-06-27 15:40:31 · 387 阅读 · 0 评论 -
阿里干货课堂丨Redis连接池的相关问题分析与总结
问题表象:服务端连接未释放问题背景:商品系统在运行过程中发生过一次Redis服务端连接数超限的问题。截图未保存,表现是:商品服务停掉,但RedisServer端看到的TCP连接任然存在,而且是 ESTABLISHED状态,导致的直接结果就是每次商品重启都会创建400个(minIdle=400)新的redis连接,而且停止的时候还不释放,重启几次之后RedisServer的连接就超过上限1...原创 2018-07-24 11:06:26 · 1326 阅读 · 0 评论