暂无个人介绍
2020年02月
首先要业务上决定开放什么内容,原则上开放内容的不同决定了开放模式的不同。如果是前台页面组件,则类似一个组件库的方式,或者叫做sdk,如果是后台服务,则是openapi。无论前后台,首要考虑的就是授权,调用你的开放内容需要有身份认证,同时调用接口需要防止伪造,通常需要一定程度的加密或者验签。然后就是开放的具体实现了。前台通常是封装为sdk给其他人调用,而后台通常是提供基于http的web服务。除了代码实现,需要有具体的文档描述告诉用户如何使用。需要有测试套件和沙箱环境,供用户验证。大约就是这些内容了。
目前暂时没开放这种能力,需要看淘宝后续的策略
目前没有直接绑定的方式,但是支付宝小程序内一般和淘系做了免登,你是可以直接打开淘宝页面的。
没有最主流,只有最合适,如果是企业级开发,oracle是主要场景,如果是互联网开发,特别是云上的开发,多半以mysql为主。实际数据库的知识是多半相通的,作为一个后端开发,先深入了解一个数据库,再学习其他就是事半功倍了。
可以但是不推荐,如果系统是无状态的,并且没有复杂的依赖关系,是可以替换运行的类实例的。但是实际情况比这复杂得多。如果你要替换的类正在使用外部资源怎么办?如果他开启了线程怎么办?如果他在读文件或者访问网络怎么办?要解决这些问题付出的精力,很多时候还不如简单的替换jar包-重启来得快
反射是系统给你的一个特殊机制,用于解决系统动态化的能力,但是不应该滥用这种能力,正常情况下的private更多的是一个编程的声明,告诉合作的开发者我这里是私有的,不要去访问和修改他。除非要有一些框架性的操作需要,正常情况下不应该去用反射绕过java的访问控制。
首先要看是多线程还是多进程,java一般常见的场景是多线程,线程安全的编写方法可以参照“java并发编程实战”这本书。如果说多进程的话,java启动的多个进程之间本身就是隔离的,除非要访问操作系统的资源(文件,网络等等),如果要保证这部分的安全,需要在操作系统层面调用api保证。
预编译就是首先生成sql语句,再用变量填空,所以对于恶意的字符串还是按变量处理,不会改变语句
因为wait和notify本质上都要获取这个对象上的锁,所以为了防止冲突要把他放到同步块里
线程安全指的是你的代码在多线程的情况下也能完成工作。主要是指的代码在处理共享数据的时候的行为正确。理解线程安全就需要理解java在多线程下的行为特性,推荐阅读java并发编程实战
1.一定要有一个好的服务管理框架,服务的寻址,服务的错误排查,服务的隔离,等等需求都需要依靠框架
2.微服务化是一个渐进的过程,从现有系统中一块一块拆分出来比较容易,不要一次性所有系统全部微服务化
3.服务和服务之间做好隔离,一旦决定某个功能微服务化,所有的请求都必须走微服务接口,不要再提供db或者其他方式的访问。
final对性能的影响可以忽略不计,但是对代码实现影响很大,很多类和方法是希望别人继承和覆盖的,定义成final就把后面的扩展可能堵死了
当你需要修改对外暴露的属性的逻辑的时候,就会体会到封装的好处了,如果直接暴露变量,那么要修改就需要修改所有的引用者,如果有属性封装,只需要修改自己
不在多线程中间share资源就不会导致死锁,线程操作的数据在一开始传入,在执行完之后放入公用区,中间不从其他地方获取数据就很难会死锁。当然实际情况没这么理想,那么在读写share资源的时候,就需要加锁保护。这里要注意所有线程必须按照同一个顺序操作share的资源,这样才不会形成互相持有对方需要的锁。
不用假设自己管理内存会比虚拟机更智能,大部分小对象和临时创建对象本身就没有很长的生存周期,纠结这一点内存释放的性能没有意义,需要的是更多的关注java整体垃圾回收算法的原理和参数调整对垃圾回收的影响。建议去学习一下现代jvm的垃圾回收机制,看一下分代垃圾回收的原理
先做profile,打点看时间消耗在哪里,然后看使用是否合理,hql解析出的sql执行性能是否有问题,是否主从lazy加载没有开启等。如果本身不需要复杂的对象-数据库映射,sql也简单,可以考虑ibatis或者直接写sql
不用执着于表结构,表是一种数据结构,view也是,甚至cache,nosql都是,do只是指的数据层返回的对象结构,数据层定义是什么就返回什么
可以参照 effective java里面的建议
1.尽量用runtime异常而不用checked异常,防止污染接口
2.异常是错误分支,catch返回null说明走的是正常返回,错误需要有专门的错误码返回给客户
3.底层异常可以在上层封装,作为调用者不需要关心所有异常,主要关心被调用者返回的异常即可
4.catch异常是处理20%的异常情况,但是并不意味着不重要,如果觉得catch里面的内容太多影响阅读,可以考虑函数抽取,保持try,catch结构里面的内容简单
protobuf是做的打包解包的工作,要做rpc,接口定义,服务寻址,通信协议等等工作都是需要的,对象的序列化(打包解包)只是其中很小一部分,常见的rpc框架有hessian,阿里也有开源框架dubbo可以参考
如果热度已经冗余到数据库中,那么按热度排序的需求,只需要建一个联合索引,包含评论人,热度即可