农历(十一月廿二)
关于
友情链接
Toggle navigation
Harries Blog™
追心中的海,逐世界的梦
首页
编程技术
Java
软件架构
移动开发
后端
前端
大数据
数据库
算法
人工智能
测试
代码管理
IT教程
springboot-demo
Java入门教程
bootstrap3
CSS
Apache基础教程
php
ionic 教程
Python
mysql教程
eclipse
Ubuntu VPS系统配置
AngularJS 教程
MongoDB教程
Struts2教程
Redis教程
Spring教程
Git教程
Jenkins进阶系列
openfire参考指南
Java设计模式
HBase教程
java-demo
Maven教程
springcloud-demo
hibernate教程
Docker 教程
memcached教程
Quartz指南
Hive教程
ANTLR教程
SpringCloud
Ant教程
java实例教程
Hazelcast教程
XStream教程
Elastic-Job-Lite
深入浅出MyBatis
ibaties教程
SVN教程
rabittmq教程
Hadoop教程
solr教程
WebService CXF学习
JPA教程
ActiveMQ中文指南
Java内存模型
dubbo教程
python3-demo
Linux入门视频教程
生活感悟
默认分类
博主自留地
一周一本书
一月一个人
互联网
互联网.出海
互联网.IPO
运维
Linux
docker
nginx
windows
操作系统
监控软件
vmware
虚拟化
tomcat
自动化
留言板
转载
发表于 2019年09月03日
浏览 (
710
)
评论 (0)
总结一下最近的面试问题
spring原理:Spring的两个核心概念是IOC(控制反转)和AOP(面向切面编程)。IOC(控制翻转)是一种编程范式,可以在一定程度上解决复杂系统对象耦合度太高的问题,并不是Spring的专利。IOC最常见的方式是DI(依赖注入),可以通过一个容器,将Bean维护起来,方便在其他地方直接使用,而不是重新new。可以说,IOC是Spring最基本的概念,没有IOC就没有Spring。AOP简单来说,它可以让编程人员在不修改对象代码的情况下,为这个对象添加额外的功能或者限制。这就是代理模式。Spring AOP之所以能够为动态生成的Bean提供代理,得益于PostProcessor接口。AOP流程图如下:
redis应用场景:1、
缓存
:合理的利用缓存不仅能够提升网站访问速度,还能大大降低数据库的压力。Redis提供了键过期功能(超过指定时间的键会自动被删除),也提供了灵活的键淘汰策略(Redis支持6种策略)。
2、
排行榜
:很多网站都有排行榜应用的,如京东的月度销量榜单、商品按时间的上新排行榜等。Redis提供的有序集合数据类构能实现各种复杂的排行榜应用。
3、计数器:什么是计数器,如电商网站商品的浏览量、视频网站视频的播放数等。为了保证数据实时效,每次浏览都得给+1,并发量高时如果每次都请求数据库操作无疑是种挑战和压力。Redis提供的incr命令来实现计数器功能,内存操作,性能非常好,非常适用于这些计数场景。incr命令为键key储存的数字值加上一。如果键key不存在,那么它的值会先被初始化为0,然后再执行INCR 命令。如果键 key储存的值不能被解释为数字,那么 INCR 命令将返回一个错误。本操作的值限制在 64 位(bit)有符号数字表示之内。INCR 命令会返回键 key在执行加一操作之后的值。
4、
分布式会话
:集群模式下,在应用不多的情况下一般使用容器自带的session复制功能就能满足,当应用增多相对复杂的系统中,一般都会搭建以Redis等内存数据库为中心的session服务,session不再由容器管理,而是由session服务及内存数据库管理。5、
分布式锁
:在很多互联网公司中都使用了分布式技术,分布式技术带来的技术挑战是对同一个资源的并发访问,如全局ID、减库存、秒杀等场景,并发量不大的场景可以使用数据库的悲观锁、乐观锁来实现,但在并发量高的场合中,利用数据库锁来控制资源的并发访问是不太理想的,大大影响了数据库的性能。可以利用Redis的setnx功能来编写分布式的锁,如果设置返回1说明获取锁成功,否则获取锁失败,实际应用中要考虑的细节要更多。setnx命令只在键 key 不存在的情况下,将键key的值设置为value。若键key已经存在,则 SETNX 命令不做任何动作。SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写。
6、
社交网络
:点赞、踩、关注/被关注、共同好友等是社交网站的基本功能,社交网站的访问量通常来说比较大,而且传统的关系数据库类型不适合存储这种类型的数据,Redis提供的哈希、集合等数据结构能很方便的的实现这些功能。7、
最新列表
:Redis列表结构,LPUSH可以在列表头部插入一个内容ID作为关键字,LTRIM可用来限制列表的数量,就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。这样列表永远为N个ID,无需查询最新的列表,直接根据ID去到对应的内容页即可。8、
消息系统
:消息队列是大型网站必用中间件,如ActiveMQ、RabbitMQ、Kafka等流行的消息队列中间件,主要用于业务解耦、流量削峰及异步处理实时性低的业务。Redis提供了发布/订阅及阻塞队列功能,能实现一个简单的消息队列系统。另外,这个不能和专业的消息中间件相比。
mysql查询索引:SHOW INDEX FROM table_name;
消息队列应用场景:异步处理,应用解耦,流量削锋,日志处理和消息通讯。具体可见 https://segmentfault.com/a/11...
tcp udp区别:
泛型的好处:1,类型安全。 泛型的主要目标是提高 Java 程序的类型安全。通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设。没有泛型,这些假设就只存在于程序员的头脑中(或者如果幸运的话,还存在于代码注释中)。2,消除强制类型转换。 泛型的一个附带好处是,消除源代码中的许多强制类型转换。这使得代码更加可读,并且减少了出错机会。3,潜在的性能收益。 泛型为较大的优化带来可能。在泛型的初始实现中,编译器将强制类型转换(没有泛型的话,程序员会指定这些强制类型转换)插入生成的字节码中。但是更多类型信息可用于编译器这一事实,为未来版本的 JVM 的优化带来可能。由于泛型的实现方式,支持泛型(几乎)不需要 JVM 或类文件更改。所有工作都在编译器中完成,编译器生成类似于没有泛型(和强制类型转换)时所写的代码,只是更能确保类型安全而已。
感谢以下几篇文章: https://m.php.cn/redis/422103... https://crazyfzw.github.io/20... https://www.jianshu.com/p/c40...
原文
https://segmentfault.com/a/1190000020268176
正文到此结束
赞
0
赏
分享
本文标签:
京东
时间
value
ActiveMQ
分布式
并发
git
集群
代码
key
文章
id
缓存
tab
GitHub
消息队列
删除
MQ
字节码
编译
网站
管理
代码注释
http
AOP
JVM
PHP
互联网
redis
程序员
src
IO
索引
java
压力
数据
UDP
电商网站
ioc
session
spring
数据库
sql
TCP
总结
bean
分布式锁
浏览量
安全
注释
锁
社交网络
rabbitmq
mysql
https
版权声明:
本文为互联网转载文章,出处已在文章中说明(部分除外)。如果侵权,请
联系本站长
删除,谢谢。
本文海报:
生成海报一
生成海报二
上一篇
Java Builder 模式,你搞明白了么?
下一篇
日志排查问题困难?分布式日志链路跟踪来帮你
热门推荐
openfire数据库安装指南
浏览(14,001)
评论(0)
Caffe 深度学习框架上手教程
浏览(10,664)
评论(0)
ReactiveCocoa入门教程:第一部分
浏览(11,495)
评论(0)
开源HIDS-OSSEC使用实例:监测CC攻击
浏览(11,409)
评论(0)
Decorators in ES7
浏览(15,948)
评论(4)
用Electron(Atom编辑器的兄弟项目)开发桌面应用
浏览(28,964)
评论(0)
Windows下JetBrains CLion中文输出乱码的解决方法
浏览(12,420)
评论(1)
同步-@synchronized, NSLock, pthread, OSSpinLock性能比较
浏览(11,368)
评论(0)
Seaweedfs之Volume读请求重定向
浏览(25,666)
评论(3)
HTML、CSS及JavaScript : 有Promise,不会搞大肚子
浏览(13,504)
评论(0)
相关文章
《跟我学Spring3 》【第七章】 对JDBC的支持 之 7.1 概述
漏洞追踪:最新IE UXSS漏洞技术分析
Convert a List to Binary Search Tree
限制Apache日志access.log文件大小
如何学习掌握一个分布式系统?
[iOS] EPSignature:通过手触或 Apple Pencil 签名的组件
StorageOS致力于改进有状态的容器存储
JAVA动态字节码
类加载器 - 类的加载、连接与初始化
Java使用代理多线程爬取51job计算机岗位数据
说给你听
本文目录
随机标签
插件开发
灵魂
医生
Amazon Auror
License
Lars George
mysql
filter
二套房
端到端原则
WebService CXF学习
springcloud
redis
银行,磁条卡,芯片卡
IT技术
产品气质
组建团队
JPA架构
DigitalOcean
Uber
FileZip
qqlist
国务院
学生
ESB研究
公司制度
Collection
需求
Node.js
PostAuthorize
混叠
SyntaxError
销项税额
properties
套壳
schema.xml
JPA JPQL/持久化查询语言
电子眼
聊天机器人
邀请码
磁盘的机制
二进制数据索引
全国政协
cgilib
资金
chunk
从库
jvisualvm
参数处理
teamAgent
物业态度嚣张
书籍教程
springboot-demo
Java入门教程
bootstrap3
CSS
Apache基础教程
php
ionic 教程
Python
mysql教程
eclipse
Ubuntu VPS系统配置
AngularJS 教程
MongoDB教程
Struts2教程
Redis教程
Spring教程
Git教程
Jenkins进阶系列
openfire参考指南
Java设计模式
HBase教程
java-demo
Maven教程
springcloud-demo
hibernate教程
Docker 教程
memcached教程
Quartz指南
Hive教程
ANTLR教程
SpringCloud
Ant教程
java实例教程
Hazelcast教程
XStream教程
Elastic-Job-Lite
深入浅出MyBatis
ibaties教程
SVN教程
rabittmq教程
Hadoop教程
solr教程
WebService CXF学习
JPA教程
ActiveMQ中文指南
Java内存模型
dubbo教程
python3-demo
Linux入门视频教程
近期评论
admin
文章和留言都翻到11页了 没有OOM
admin
我试一下
匿名
朋友,翻页到11页,及以后,会出现OOM,无法访问
可以
搞个gitee的项目
匿名
666
admin
版本号是多少,你可以下载哪个代码仓库,jdk选1.8 直接跑就行
极客青年
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'demo.et.mysql.MysqlTests': Unsatisfied dependency expressed through field 'userMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'demo.et.mysql.mapper.UserMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:643) at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:130) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1422) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBeanProperties(AbstractAutowireCapableBeanFactory.java:393) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:119) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83) at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:43) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:244) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'demo.et.mysql.mapper.UserMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1695) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1253) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1207) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640) ... 30 more
极客青年
原封不动的代码报错如下:
极客青年
一股清流,敬佩
随机文章
站长推荐
近期文章
1
Bootstrap开发漂亮的前端界面之实现原理
2
触控高级技术总监张晓龙:Cocos崩溃率已经降到千分之二|Cocos 2015
3
云计算的乐高积木Docker如何重构应用程序开发
4
用Chrome开发者工具调试一切
5
一名合格的IT项目经理 这八项核心技能不能缺
6
PhpMyAdmin 4.4.0 发布, MySQL 管理工具
7
专访阿里巴巴研究员赵海平:从Facebook到阿里巴巴
8
Emmabuntüs 3 1.01 发布,桌面 Linux 发行版
9
Gson在 Android开发中可能存在的陷阱
10
如何摆脱令人头疼的架构依赖?
1
VPS 自我监控
2
springboot接入多个ES启动时候自检报错
3
配置虚拟站点
4
openfire协议支持指南
5
修改上传文件权限
6
OpenVZ VPS 额外支持
7
2015年北京下第一场雪留念
8
openfire定制指南
9
mysql存储过程实例一:游标的使用
10
Linux删除或者新增SWAP分区
1
使用 Docker 打包和运行 Vue 应用
2
Dependency Check命令行方式扫描jar包的安全漏洞
3
maven使用Dependency-Check来扫描安全漏洞
4
使用sonarqube分析代码质量
5
使用screw来对比数据库表和字段差异
6
Spring Boot 实现防盗链功能
7
在Spring Boot中的实现国际化(i18n)
8
一个用于 SMB/CIFS 网络的 Java 库-JCIFS
9
Spring Boot 3.x嵌入MongoDB 进行测试
10
java如何解析和生成yaml文件?
网站信息
文章总数:82,737 篇
文件总数:284,312 个
标签总数:2,416 个
分类总数:85 个
留言数量:2,558 条
在线人数:603 人
运行天数:4,439天
最后更新:2024年12月22日09点
×
输入密码查看文章详情
×
搜索文章
搜索
热门搜索:
Java
Springboot
Linux
Maven
Bootstrap
阿里云
×
评论信息框
可以通过QQ号实时获取昵称和头像
QQ
昵称
邮箱
网址
提交评论
×
山无棱江水为竭,冬雷震震夏雨雪,才敢请君舍
支付宝
微信
转账时请备注“
博客赞助
”
Loading...