备注: 以下内容均整理自[java高级交流群], 若有不对之处, 请留言或群里指出, 感谢.
- work,excel转pdf: openoffice, itext.
- 中文分词器: IK(ES, SOLR) jiaba.
- 动态代理效率:
AOP的静态代理主要是在虚拟机启动时通过改变目标对象字节码来完成对对象的增强, 它与动态代理相比有更高的效率, 因为动态代理调用过程中, 还需要一个动态创建代理类并代理目标对象的步骤, 而静态代理则是在启动时便完成了对字节码增强, 当系统再次调用目标类时与调用正常的类并无差别, 所以效率上会相对高些. [jdk的代理,和javasssit 的应该差别不大, 都是生成字节码, 然后classload] - 前后端分离,后端一般用什么权限控制: http basic.
- mybatis的分页面插件pagehelper 是物理分页.
物理分页: 就是在库里就分页了,拿出你想要的10条数据. 逻辑分页: 逻辑分页是指,你把全部的数据拿出来,在应用内存里拿出你想要的10条记录. - 如果让你当负责人,把项目做成微服务,你是选spring cloud那套,还是dubbo/mtran那套呢?
spring cloud. dubbo/motan/grpc/. spring cloud 的迭代速度相当强盛,投入的开发资源是其他框架不能比的.服务化组件也细分的,注册中心,断路器,负债均衡等。就注册中心这块,Eureka真没consul强,不管是团队背景,还是集成度. - 现在消息队列 一般用啥?
redis1, kafka2, rocket mq1 [rock 是集大成者,kafka是开拓者](1.2.1 为回答数) - 编程模型: 请求响应、事件驱动、批处理.
- 服务器 突然关机了。redis会自动备份吗? 不会。除非你设置了自动备份策略.
- 专业压力测试工具: Siege,Jmeter.
- 为啥银行转账要等时间,短的几个小时,长的一两天,是因为要手工审核?
就是为了提供时间差 可以追回. - 自动嗅探是怎么做的? 指定集群名字,启动后会自动加入集群, multicast.
- eurka 的注册中心建好后,消费端发起请求其实是发给了eurka,然后eurka来判断应该转向哪个服务,最后拿到结果再返给消费端?
eurka 就是个注册中心相当于一个dns服务器, 恩,比如我请求http://abc. 这个请求道了eruka,他会自动识别abc这个是哪个服务,在请求前会从eureka查询abc这个服务所有的提供者列表,然后从中间选择(负载均衡算法所在)一个调用. - rabbit mq里面的信道是怎么个概念?
Channel: 消息通道, 用于连接生存者和消费者的逻辑结构. 在客户端的每个连接里,可建立多个Channel, 每个Channel代表一个会员任务, 通过Channel可以隔离同一个连接中的不同交互内容. - 现在做监控用zabbix还是用prometheus呢?
prometheus好像更厉害,不过zabbix资料多用的人也多. - kafka的consumer也是定时任来着的~
consumer.poll(mills), mills设置为0实时监听, consumer.poll(10000) 10s拿不到数据就返回. - 修改过的字节码文件是怎么重新被加载的,过程怎么样的?
建一个新的类加载器对象,用这个加载器加载修改后的类. - redis分布式锁存在问题:
1.单点问题
2.失效时间不好掌控,掌控不好,小了会造成并发问题,大了会造成性能问题. - zookeeper集群特性 半数存活,为什么要这么设计,谁能解释一下?
防止脑裂, 脑裂就是防止多个ldader. - 分片和分区的概念:
Sharding 的思想是从分区的思想而来,但数据库分区基本上是数据对象级别的处理,比如表和索引的分区,每个子数据集上能够有不同的物理存储属性,还是单个数据库范围内的操作,而 Sharding 是能够跨数据库,甚至跨越物理机器的. - where语句 索引列+非索引列 是不是走表锁?
只要走索引,就不会表锁(不走索引 会导致锁表). - 线上修改一张表的某个字段名,会锁表吗?会, Mongodb不会.
- 默认的隔离级别 读事务不会阻塞写事务?不会。读只会read老版本.
- redis maxclients 这个值设置多少合适? 有多少客户端,乘以2.
- redis停顿 会有那些影响?停止对外服务.
- 处理工作流用到哪些框架啊?
jbpm,activiti,flowable. jbpm的leader跳出来搞了activiti 然后activiti的leader又出来搞了个flowable. - 用的什么 日志框架? slf4j、logback.
- 对象之间的属性拷贝工具类,是用什么的?
Spring和Apache 的BeanUtils、cglib、Dozer、MapStruct(效率高)、ptotobuf java(效率高).spring beanutils会对反射过的类缓存. - spring cloud完全基于http?嗯,是的.
- mvcc和间隙锁:
MVCC实现了最基本的可重复读,但是如果没有间隙锁,那么别的事务往这个范围内插入数据了,因为MVCC的关系,我看不到这个数据,但这时想插入数据就会失败. 幻读的重点在于新增或者删除:同样的条件的select读出来的记录数不一样。 - 密码加密:
1,md5(passwd+random_salt)
2,md5(md5(account) + passwd) - 彩虹表:
彩虹表是一个用于加密散列函数逆运算的预先计算好的表, 为破解密码的散列值(或称哈希值、微缩图、摘要、指纹、哈希密文)而准备. - 烧一根不均匀的绳子,从头烧到尾总共需要1个小时,现在有若干条材质相同的绳子,问如何用烧绳子的方法来计时45分钟?
第一根绳子一头烧,第二根两头烧,等第二个绳子烧完,第一根再点另一头,烧完就是45分钟了. - TCC概念, 事务补偿的概念:
推荐高性能mysql、姜承尧的 mysql技术内幕,然后,想把基础打得更牢点,可以看 数据库系统概念 第6版的第10-14章. - 分布式系统的要点:
不要join,不要强一致,不要acid,不要存储过程,要因果一致,业务模型与技术特性解耦。 - 补偿机制:
是指查询一个一定不存在的数据, 由于是不命中时需要从数据库查询, 查询不到则不写入缓存, 这将导致这个不存在的数据每次请求都要到数据库去查询, 造成缓存穿透. - 缓存穿透[穿透的解法是空数据也放缓存], 雪崩是指缓存挂了,大量请求全部去db.
- 服务降级:
降级是指砍掉没必要的运算服务, 保证主运算服务正常. [降级是指当外部接口挂掉之后使用代替方案, 防止外部接口挂掉之后导致主流程不可用,降级的目的是用另一种方式替代依赖的服务,保证自己的主流程可用, 不能因为依赖的服务挂掉,自己的服务也挂掉了,排除一些强依赖的情况] - 分表就别分页, 分表后的查询,说实话,如果只是简单的组装还好,但是涉及到分页就很麻烦.
- spring social:
Spring Social 提供了处理第三方网站用户登录和注册的 Spring MVC 控制器 (Controller) 的实现,可以自动完成使用社交网络账号登录和注册的功能。 - java 探针:
jvm启动有一个参数,可以启动探针, 探针一般是一个jar包,里面有一个重要的方法,premain, 意思就是在main之前执行. - packt的书是分等级的, learning,cookbook系列就是入门,pratical实践,mastering大师.
- spring公司有elas 开源库,调用三方库很简单的. spring data elasticsearch.
- 百度有个免费的语音识别ai, 可以把说的话转化为字符串.
- 你们分布式系统,收集日志,和链路跟踪,怎么实现呢?
zipkin, google dapper, jaeger - dump文件太大,一般怎么弄?
1, 不用dump就看jmap就行了,装个命令行绘图工具jhat.jhat DUMP_FILE.hprof分析完成可使用浏览器访问http://ip:7000查看分析结果.
2, 最好是MAT看,不行再用jhat看
3, 开源分析工具jvm-mon - LockSupport.park() 方法会释放cpu资源吗?
park不就是挂起么,当然释放,不深入的说,应该就是彻底放弃cpu了. - 并发问题 最忌讳 瞎猜 .
- 堆排算法(讨论PriorityBlockingQueue扩容,堆排时间复杂度是nlgn,和深度有关,为了不让他的深度加深,所以加上 oldCap >> 1这玩意,每次加 oldCap >> 1 只会使得二叉树节点更多,但深度加深得慢).
- SUN的一位大神说: 如果你要学习一个J2EE容器 最快的捷径是 学习它所有的测试用例.
网友评论