前言

《Java程序员日常积累-向大神学习》系列是本人根据日常工作中碰到的问题写的一个问题记录,比较琐碎零散。
主要用于记录和忘记时可以有个地方查询。现分享给大家,这是这个系列的第三篇。
另外两篇请查阅《[Java程序员日常积累-向大神学习(一)](https://blog.csdn.net/LookForDream_/article/details/100928646)》和《[Java程序员日常积累-向大神学习(二)](https://blog.csdn.net/LookForDream_/article/details/104772882)》

Vue和LayUI的区别:

我们都知道前端框架都是基于DOM对元素进行操作的。
Vue和LayUI最大的区别就是Vue操作的是虚拟DOM,而layUI操作的是真实的DOM。
也就是说,Vue和LayUI天生就不合。
1、Vue是MVVM工作模式,负责数据和视图的绑定,数据变了,视图自动更新,视图发生事件也会更新数据。目前和Vue吻合的UI框架比较知名的是element-ui和i-view。
2、LayUI只负责提供外观和行为,不提供和数据的绑定,数据变了,自己负责刷新;视图变了,自己获取数据。与LayUI相似的产品有:Bootstrap4、EasyUI,ZUI等。

各种文件形式的上传和预览

项目地址:https://github.com/kekingcn/kkFileView.git

Vert.x是啥?

Vert.x是一个多语言Web框架,它支持Java,Kotlin,Scala,Ruby和Javascript支持的语言之间的共同功能。无论语言如何,Vert.x都在Java虚拟机(JVM)上运行。模块化和轻量级,它面向微服务开发。
简单说,Vert.x就是一堆的jar包,提供了一系列的编程API接口。通过这些API,可以实现异步编程。
Vert.x最大的特点就在于异步(底层基于Netty),通过事件循环(EventLoop)来调起存储在异步任务队列(CallBackQueue)中的任务,大大降低了传统阻塞模型中线程对于操作系统的开销。因此相比较传统的阻塞模型,异步模型能够很大层度的提高系统的并发量。
Vert.x(vertx) 简明介绍:https://blog.csdn.net/king_kgh/article/details/80772657

同源策略

浏览器自带的一种安全策略,他是指协议、域名、 端口 三个都相同的才能互相访问,即若协议、域名、端口有一个不相同时,浏览器禁止页面加载或执行与自身不同域的脚本。实现不同域的脚本文件访问通过html几个特殊的标签进行访问通过jsonp来实现跨域请求通过CORS(跨域资源共享)实现跨域请求通过代理实现跨域请求(例如nginx 、node中间件)

MySQL底层MVCC原理:

当执行查询SQL时会生成一致性视图read-view,它由执行查询时所有未提交事务ID数据(数组里最小的ID为min_id)和已创建的最大事务ID(max_id)组成,查询的数据结果需要跟read-view做比对从而得到快照结果。
版本链比对规则:
1、如果落在绿色部分(trx_id<min_id),表示这个版本是已提交的事务生成的,这个数据可见的。
2、如果落在红色部分(trx_id>max_id),表示这个版本是由将来启动的事务生成的,是肯定不可见的。
3、如果落在黄色部分(min_id<=trx_id<=max_id),那就包括两种情况:a、若row的trx_id在数组中,表示这个版本是由还没提交的事务生成的,不可见,当前自己的事务是可见的。b、若row的trx_id不在数组中,表示这个版本是已经提交了的事务生成的,可见。
对于删除的情况可以认为是update的特殊情况,会将版本链上最新的数据复制一份,然后将trx_id修改成删除操作的trx_id,同时在该条记录的头信息(record lieader)里的(deteled_flag)标deteled_flag标记位为true,意味着记录已被删除,则不返回数据。

索引:是帮助MySQL高效的获取数据的排好序的数据结构

联合索引:按照联合索引的顺序排序

面向对象和面向过程思想的总结

都是解决问题的思维方式,都是代码组织的方式
面向过程是一种“执行者思维“,解决简单问题可以使用面向过程
面向对象是一种“设计者思维”,解决复杂、需要协作的问题可以使用面向对象
面向对象离不开面向过程宏观上:通过面向对象进行整体设计微观上:执行和处理数据,仍然是面向过程。

什么是JWT

用户发送按照约定,向服务端发送 Header、Payload 和 Signature,并包含认证信息(密码),验证通过后服务端返回一个token,之后用户使用该token作为登录凭证,适合于移动端和api
JWT 的三个部分,Header(头部), Payload(负载),Signature(签名)。

你如何理解 Spring Boot 中的 Starters?

Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成 Spring 及其他技术,而不需要到处找示例代码和依赖包。如你想使用 Spring JPA 访问数据库,只要加入 spring-boot-starter-data-jpa 启动器依赖就能使用了。
Starters包含了许多项目中需要用到的依赖,它们能快速持续的运行,都是一系列得到支持的管理传递性依赖。

MySQL的事务的ACID

原子性(Atomicity):一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性
一致性(Consistency): 数据库总是从一个一致性的状态转换到另一个一致性的状态。
隔离性(Isolation):一个事务所做的修改在最终提交以前,对其他事务是不可见的。
持久性(Durability):一旦事务提交,则其所做的修改不会永久保存到数据库。

MySQL中隔离性有4种级别

isolation-default:默认值,使用数据库的设置隔离级别,数据库设置什么就用什么
read-uncommitted 读未提交
read-committed 读提交
repeatable-read 可重读
serializable 可串行化脏读:表示一个事务能够读取另一个事务中还未提交的数据。比如,某个事物尝试插入记录A,此时该事物还未提交,然后另一个事物尝试读取到了记录A.
不可重复读:是指在一个事务内,多次读同一数据。幻读:指同一个事务内多次查询返回的结果集不一样。比如同一个事物第一次查询时候有n条数据,但第二次同等条件下查询却是n+1条数据记录。这就好像产生了幻觉。发生幻读的原因也是另外一个事务新增或者删除或者修改了第一个事务结果集里面的数据,同一个记录的数据内容被修改了,所有数据行的记录就变多或者变少了。

nacos做配置中心:内部是客户端使用长轮询的方法拉去配置数据的。

  1. 原因在于如果用推的方式,服务端需要维持与客户端的长连接,这样的话需要耗费大量的资源,并且还需要考虑连接的有效性,例如需要通过心跳来维持两者之间的连接。而用拉的方式,客户端只需要通过一个无状态的 http 请求即可获取到服务端的数据。

  2. 总结实现原理:客户端是通过一个定时任务来检查自己监听的配置项的数据的,一旦服务端的数据发生变化时,客户端将会获取到最新的数据,并将最新的数据保存在一个 CacheData 对象中,然后会重新计算 CacheData 的 md5 属性的值,此时就会对该 CacheData 所绑定的 Listener 触发 receiveConfigInfo 回调。

Navicat for MySQL破解,以及连接数据库出现错误:1045-Access denied for user ‘root’@'localhost’或者@“ip”解决方法

步骤:
1、登录mysql数据库:mysql -uroot -p 登录mysql数据库
2、给登录数据的IP设置权限(以下两个语句设置一个就行):①、grant all privileges on *.* to 'root'@'IP' identified by '123456'; 允许在IP下使用root用户名登录②、grant all privileges on *.* to 'root'@'%' identified by '123456'; 允许所有IP下使用root用户名登录
3、刷新授权:flush privileges;

将自己的jar包安装到maven本地仓库

mvn install:install-file -DgroupId=my -DartifactId=my-ssh2 -Dversion=1.0.0 -Dpackaging=jar -Dfile=my-ssh2.jar
<dependency><groupId>com.szkingdom.frame</groupId><artifactId>kjdp-core</artifactId><version>1.0.0</version>
</dependency>

GateWay组件:

三大概念:Route(路由):路由是构建网关的基本模块,它由ID,目标URI,一系列的断言和过滤器组成,如断言为true则匹配该路由。Predicate(断言):参考的是Java8的java.util.function.Predicate开发人员可以匹配HTTP请求中的所有内容(例如请求头或请求参数),如果请求与断言相匹配则进行路由。Filter(过滤):指的是Spring框架中GatewayFilter的实例,使用过滤器,可以在请求被路由前或者之后对请求进行修改。
核心逻辑:路由转发和执行过滤链

Hystrix组件:

服务降级:程序运行异常、超时、服务熔断触发服务降级、线程池/信号量打满也会导致服务降级
服务熔断(保险丝):请求达到最大访问量(应对雪崩效应)以后,为了防止系统瘫痪。
服务限流:秒杀高并发等操作,有序进行

在选择缓存时,什么时候选择 redis,什么时候选择 memcached?

选择 redis 的情况:复杂数据结构/需要进行数据的持久化功能/高可用/存储的内容比较大
选择 memcache 的场景:纯 KV,数据量非常大的业务

微服务模块

建module
改POM
写YML
主启动
业务类

轮询算法:取余

CAP定律:一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。

Java程序员日常积累-向大神学习(三)相关推荐

  1. 为什么很多Java程序员都转行做大数据了?

    如今大数据发展的越来越成熟.各大企业纷纷成立大数据部门.尤其BAT等一线互联网公司每天处理的数据量都是TB级别.大数据部门已成为这些企业的核心部门,数据已成为企业最核心的资产. 但是大数据人才缺口巨大 ...

  2. python代码少的作品_原创 8行python代码展示程序员从入门到大神(或跑路)的全部状态...

    一行python代码可以做什么? 人生苦短,我用python.python的世界里无处不在的简洁和短小,往往一行代码可以实现很多有意思功能. 你敢想象你从入门python代码.网络达人.反重力怪才.爱 ...

  3. 8行python代码展示程序员从入门到大神(或跑路)的全部状态

    一行python代码可以做什么? 人生苦短,我用python.python的世界里无处不在的简洁和短小,往往一行代码可以实现很多有意思功能. 你敢想象你从入门python代码.网络达人.反重力怪才.爱 ...

  4. Java程序员-日常工作技能清单

    区别于找工作时的各种八股文整理,自己整理了一些工作半年来觉得一个Java后端程序员在实际工作中需要用到的技能,希望能给刚刚要工作的Java程序员们一点帮助吧. 1.计算机基础 Linux命令:cat. ...

  5. 奉劝那些想涨工资的程序员,这些 IT 大神们都在用的网站,你越早知道越好(建议收藏)!!...

    点击关注公众号,回复"1024"获取2TB学习资源! 作为一个程序员.码农.新时代的农民工来说,一些必备的网站(如:搜索引擎.代码管理.技术学习.工具查找.技术博客等)是非常必要的 ...

  6. 腾讯java程序设计师_腾讯大神耗时三年巅峰之作,立足实际开发,详解高并发程序设计...

    写在前面 毫无疑问,Java是目前服务端程序最常用的编程语言之一.大量的服务端应用基于这个看似简单的开发语言,然而容易入门并不代表容易精通.其中高并发程序设计就是一个重点,也是一个难点. ps:下面小 ...

  7. Java程序员在用的大数据工具,MongoDB稳居第一

    据日前的一则大数据工具使用情况调查,我们知道了Java程序猿最喜欢用的大数据工具. 问题:他们最近一年最喜欢用什么工具或者是框架? 受访者可以选择列表中的选项或者列出自己的,本文主要关心的是大数据工具 ...

  8. Java程序员在用的大数据工具,MongoDB稳居第一!

    据日前的一则大数据工具使用情况调查,我们知道了Java程序猿最喜欢用的大数据工具. 问题:他们最近一年最喜欢用什么工具或者是框架? 受访者可以选择列表中的选项或者列出自己的,本文主要关心的是大数据工具 ...

  9. Java程序员在用的大数据工具

    问题:他们最近一年最喜欢用什么工具或者是框架? 受访者可以选择列表中的选项或者列出自己的,本文主要关心的是大数据工具.上一篇Java调查包括下列内容: 开发语言 Web框架 应用服务器 数据库工具 S ...

最新文章

  1. UART_SEND详细设计方案
  2. 数据可视化|实验四 分析1996-2015年人口数据特征间的关系
  3. 都是做嵌入式凭什么高薪offer归别人
  4. 大众点评订单系统分库分表实践
  5. 2016年第12本:成功就靠专注一件事
  6. 【转】ASIHTTPRequest开源类库进行http请求
  7. tf.transpose()函数(转)
  8. 106. 数据库增删改的封装
  9. office提示 Excel 4.0函数以定义名称保存
  10. 根据地理坐标查询地标 城市名称 街道名称 地标建筑
  11. 案例|工业物联网解决方案•污水处理厂智能监控运维云平台
  12. python、java、ruby、node等如何提取office文档中的内容?
  13. 《千与千寻》与《天空之城》配色分享
  14. 13年android手机top,2013年1月安卓热门机型Top20
  15. Office 2008 for Mac试用印象
  16. 详解浏览器缓存 前端开发必会
  17. 嵌入式linux汽车仪表,基于ARM和嵌入式Linux的汽车仪表盘研制
  18. 【Android】用Android写个自己发短信的APP
  19. 慎入!超详细240页PPT!史上最强大的计算机网络导论!
  20. ORACLE XML Publisher

热门文章

  1. Keil5 典型烧录错误问题 : Error:Flash Download failed - “Cortex-M4“
  2. 一分钟告诉你视频字幕翻译软件有哪些
  3. 10英文图片网站 值得你收藏
  4. fatal: not in a git directory Error: Command failed with exit 128: git
  5. 中国银行成都网点地址,电话,成都银行分布,位置(总是找不到银行的支行名字,火大!干脆来个全收录)
  6. 电力监控系统在变电站供配电的监测与管理的应用于功能
  7. AI翻译正流行 哪些行业将来会被人工智能所取代?
  8. java击鼓传花游戏list_经典游戏之击鼓传花玩法
  9. 【CTF】图片马制作
  10. 俞敏洪老师有担任,不像有的培训机构老板,公司一倒闭就卷钱跑路