Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 443|回复: 7

Java学习资料(架构技术视频,面试,就业指导,java书籍,工具&软件等)

[复制链接]

695

主题

1139

帖子

4064

积分

认证用户组

Rank: 5Rank: 5

积分
4064
发表于 2019-1-3 15:16:18 | 显示全部楼层 |阅读模式
本帖最后由 java 于 2019-2-19 14:43 编辑

Java学习资料(架构技术视频,面试,就业指导,java书籍,工具&软件等)
链接:https://pan.baidu.com/s/1y6giMKF-P83LpV5mW5yXPQ 密码:ej4o

java架构师图谱.jpg

Mic_20190116_分布式架构下的服务集群及负载均衡实战
链接:https://pan.baidu.com/s/1CmTk91rj6IeJEttaIEHNHw 提取码:1qhn

青山_20190117_分布式架构核心组件之消息队列
链接:https://pan.baidu.com/s/1Lq8DqyLu5PW0QnyOT6D_aQ
提取码:0vos

想进阿里P6?你必须掌握这些技能
链接:https://pan.baidu.com/s/1q1vvcsEJgDE7VR_yvHOsiw
提取码:bp6g

分库分表理论与实践
链接:https://pan.baidu.com/s/1gQ1fA4VcsVaIslMfEiF4GQ
提取码:3vl7

分布式事务的解决方案链接: https://pan.baidu.com/s/1IM_TxctJO_-UPlY37xb7fA
提取码: k3k4

分布式架构核心组件之消息队列
链接:https://pan.baidu.com/s/1Lq8DqyLu5PW0QnyOT6D_aQ
提取码:0vos

分布式架构下的服务集群及负载均衡实战
链接:https://pan.baidu.com/s/1CmTk91rj6IeJEttaIEHNHw
提取码:1qhn

手撕Spring,看设计模式是如何优雅落地到源码中的?
链接:https://pan.baidu.com/s/1-NeGWQEkW5qcrnW_EXak2Q
提取码:ovws



青山_20190123_分布式任务调度系统的实现
链接:https://pan.baidu.com/s/1mqh01rdyvWfpRQrcp3OnAQ 提取码: s3xm

程序猿,你为什么这么累?30岁不一定就是槛
链接:https://pan.baidu.com/s/16hMOyMKqN6eMkm--3aOP-Q 提取码: ve7g

Mic_20190126_zookeeper实战之服务动态上下线感知实战
链接:https://pan.baidu.com/s/18qx2nyoKH6BKLTwtzUE4yQ 提取码: 5agn

不会JVM的人还好意思过情人节?
链接:https://pan.baidu.com/s/1HU0QS4Al3diOvj81RKAQhg 提取码:nef7

分布式任务调度系统的实现
链接:https://pan.baidu.com/s/1MZZM3Rs3GsrXM5l-nYDWoQ 提取码:0hjw

亿级量数据库性能优化之分库分表
链接:https://pan.baidu.com/s/1WoMFzcz0WQke6oyvsZoJAA 提取码:bzca









不要 来了就抢占CPU创建线程,把socket放map中(登记),即jsk中的NIO,后续有IO操作时再分配线程 (即 connect变为Readabel/Writable)  ----> NIO(non-block) Selector 选择器
连接后要保存建立的Channel 通道 即 多路复用

流管道本身还是阻塞的
非阻塞表现在Selector


面试: BIO阻塞改成非阻塞 多线程 伪非阻塞

IO要实现非阻塞 要能够同时读写就好咯

用 Buffer 缓冲区,记录相关读写位置


NIO代码量大,麻烦

使用 Netty

原来NIO中的select方法是单线程的 accept 都是在main单线程中


在Netty中 select转移到线程池中的一个线程


Reactor Netty主从线程模型中

select也变成多线程了,那么select原来是阻塞的 现在 能同时处理多个客户端的连接请求

NIO是一个同步非阻塞的IO

Netty是 asynchronous
对NIO的封装  即select改成多线程

Netty给你呈现的一个点 只需要关注Handler的编写就ok了

类似
SpringBoot SpringMVC  前端控制器  处理映射器  视图解析器  springmvc-servlet.xml  Handler 称作为 Controller  Servlet

nio1.png nio2.png nio3.png nio4.png nio5.png



回复

使用道具 举报

695

主题

1139

帖子

4064

积分

认证用户组

Rank: 5Rank: 5

积分
4064
 楼主| 发表于 2019-1-8 15:51:46 | 显示全部楼层
本帖最后由 java 于 2019-1-8 16:46 编辑

链接:https://pan.baidu.com/s/1BNqYrfa0BomN55VVWdvlmg
提取码:v55q

分布式任务调度系统的实现

Quartz运行原理
做什么事情(任务):Job JobDetail
任务以什么样的规律运行:Trigger触发器
谁来指挥:Scheduler 调度器API

对象怎么存储 JobStore RAM JDBC
任务执行状态 Listener

如何实现动态管理 db增删改查
怎么从界面上管理任务 Scheduler接口
非配置文件方式 任务怎么随Spring启动 实现CommandLineRunner接口 或 ApplicationRunner
Service 如何注入Quartz?  JobFactory


Cron 表达式  http://cron.qqe2.com/


MQ
基于事件
逐条处理
Cron表达式
对Quartz的优化和改造
layUI


为什么要集群
1.单点故障
2.实现负载均衡
集群面对的问题,协调
1.任务重复 
2.任务没有任何一个节点执行
上面两个问题都能解决(集群管理器)
通信\共享数据
数据库
ZK(zookeeper)---Elastic-Job
Redis

集群的配置
org.quartz.jobStore.isClustered=true



集群实现原理(集群管理器)

数据库 for update  --------qrtz_locks表相应行被锁  节点随机拿到这个锁(排他锁)


如果获取到锁的节点挂掉了,别的节点怎么知道?
这把锁会不会被释放
kill 进程
----------测试 会释放


euraka-server ?
quartz和xxl-job对比一下

Quartz的不足 (xxl-job Elastic-Job 基于Quartz,解决它的不足)
不支持任务分片策略  一个任务多个节点执行
没有可视化管理(操作 监控 日志 报表)
没有重试/恢复机制



http://www.xuxueli.com/xxl-job/#/  《分布式任务调度平台XXL-JOB》


回复 支持 反对

使用道具 举报

695

主题

1139

帖子

4064

积分

认证用户组

Rank: 5Rank: 5

积分
4064
 楼主| 发表于 2019-1-9 17:00:37 | 显示全部楼层
本帖最后由 java 于 2019-1-9 18:48 编辑

跨域单点登录原理分析及项目实战
Jack_(下午)20190109_跨域单点登录原理分析及项目实战
链接:https://pan.baidu.com/s/1eIqrV4VhoiZEhY7CWT5fqQ   提取码:1rb4  

http无状态 没有记忆 自己记 引入 cookies session
即cookies.session内的信息是服务端反过来的标志,即为已经登录过的标志,下次再来时,才放行


第一次 发起请求  创建SessionId
       返回sessionId

第二次 发起请求带上SessionId
      ...

SessionId根据不同的域名SessionId是不同的


一般 每台机器上部署的都是相同的完整服务 通过 nginx 进行负载均衡

微服务  把完整的服务分模块 如:登录模块(L) 浏览商品模块(B) 和 支付模块(P)

这样 B可以多部署一些, L和P小部署一些

这三个域名是不同的,但Session只有L模块有返回
如:
blog.csdn.com  这里登录一次,下面两个都不用登录
tech.csdn.com
list.csdn.com

共享顶级域名

同属一个父域名,Session会被传过去,服务端,加如下代码
Cookie cookie;
cookie.path(/)   

也有不是同一顶级域名的情况

user.com
order.com

两个只登录一次
引入一个
sso.com   Single Sign On

跨域 实现免登录-->跨域单点登录

要不要登录 取决于有没有带session过来

没有session是都转到 sso.com
sso.com 创建session给浏览器,同时创建令牌 token="123456" [JWT Json Web Token] 给user.com order.com

以后有token的都可以登录上面三个域名
发送到user.com的token再发送到sso.com对token进行校验
通过后返回user.com 并放行 并创建session返回给客户端

相关代码打一个jar包,直接使用,不用模块都写
如:
CAS+JWT实现
CAS提供一个服务端
CAS还提供客户端的jar包
CAS必须要https协议


shiro ? spring secret ?


禁用cookies ?
在head中添加参数能传来传去就行了



sso3.png sso2.png sso1.png


回复 支持 反对

使用道具 举报

695

主题

1139

帖子

4064

积分

认证用户组

Rank: 5Rank: 5

积分
4064
 楼主| 发表于 2019-1-10 17:01:44 | 显示全部楼层
Spring framework是怎么来的?

Spring 之前
1.JSP + Servlet
2.Servlet + Struts
3.EJB

J2EE Struts + EJB  vs  Spring

JavaEE企业级应用 互联网架构应用 很重量级 很多坑

Spring 集成  消息中间件 RPC(kafka,activemq)

EJB组件  vs. Spring RPC service
SessionBean VS. RPC service
有状态的 Service
无状态的 Service     无状态的 Service

做架构或设计时 怎么转化为无状态的服务

状态在业务逻辑里 => 业务逻辑层 => 序列化到磁盘 Passivate => 激活Activate回来  vs 状态持久化到数据库





1. Spring 1.x 2.x 3.x 配置文件 ApplicationContext.xml  bean <xml schema> spring 集成的这些中间件的依赖 Spring MVC, JMS, RPC,及 业务逻辑实现
元数据: ApplicationContext.xml  
<xml version="1.0" encoding="UTF-8"><bean></bean><transaction></transaction></xml>  DTD/XML Scheama (里面定义bean等标签) namespace/ XSD
2.Spring读取上面的配置文件 DOM4j/SAX解析XML,拿到依赖关系,初始化,验证配置依赖关系正确性?[XML Scheama namespace验证xml语法 标签 元素] 实例化 bean及依赖关系
深入一层  反射 CLASS reference, class.newInstance(); Spring DI 依赖注入
..<property name="xx" ref="">setter注入

3.AOP Aspect Oriented Programming
AOP 配置文件 lazy loading
     Proxy JDK dynamic proxy/ CGlib
Boy  Father Girl
Boy Father(认证你是合法人员,经济水平都达到) Girl
@transactional  Proxy
service Implementation {
    getUserById();
    //transaction process
}

EJBSpring.png EJBSPring1.png EJB Arch.png EJBSPring2.png


回复 支持 反对

使用道具 举报

695

主题

1139

帖子

4064

积分

认证用户组

Rank: 5Rank: 5

积分
4064
 楼主| 发表于 2019-1-11 09:24:36 | 显示全部楼层
青山_20190110_MySQL事务与锁详解
链接:https://pan.baidu.com/s/1nTmvQddXwbGsWp4_wr6Xgg
提取码:rki8  
回复 支持 反对

使用道具 举报

27

主题

45

帖子

211

积分

认证用户组

Rank: 5Rank: 5

积分
211
发表于 2019-1-12 22:04:51 | 显示全部楼层
一般是来一个用户就创建一个线程
bio堵塞



select 堵塞 异步(select  来用户不马上开线程处理。而是有业务 即 状态位有变化时才创建)


select 放线程中  reacte模型

QQ截图20190112212907.png

QQ图片20190112201655.jpg QQ图片20190112202539.png

回复 支持 反对

使用道具 举报

695

主题

1139

帖子

4064

积分

认证用户组

Rank: 5Rank: 5

积分
4064
 楼主| 发表于 2019-1-18 11:01:55 | 显示全部楼层
咕泡学院 - Reactor Streams 并发编程之 Reactor

理解Reactive Streams 编程


了解Reactor基本使用


帮助理解 WebFlux(Spring Framework 5)



Reactive Streams规范
https://github.com/reactive-streams/reactive-streams-jvm

Reactive Streams框架 - Reactor



Java 1.4 NIO = Non-Blocking I/O


https://en.wikipedia.org/wiki/Reactor_pattern    同步
Proactor pattern   异步
https://projectreactor.io/docs

CPU Processor = 8
Tomcat/Netty Thread numbers=16
1 Processor = 2 Threads
1 Processor = N Threads,轮询执行/时间分片系统

如果是CPU密集型, Reactive都无济于事

1 Thread CPU 占满了,其它线程不得不等待


Reactive是一种观察者模式的扩展

Streams流式
观察者模式 责任链模式  迭代器模式  发布-订阅模式
A->B->C->D-E

List<Integer> values = Arrays.asList(1,2,3,4,5);


四种角色:
Publisher 发布者
Subscriber 订阅者
Subscription 订阅的控制器
Processor 发布者|订阅者

Reactive Streams的规范实现
Java 9 Flow API
RxJava: Reactive Extension Java
Reactor: Reactor Framework
 Future 异步
Reactor API
Mono: 异步 0-1元素序列, Future<Optional<?>>
Flux: 异步 0-N元素序列, Future<Collection<?>>

Callback/Future代表
ListenableFuture
ListenableFutureCallback

Future不足:
1.不知道什么时候结束 ListenableFutureCallback 帮助增加成功的调用
2.Future之间没有相互管理的方式


Supplier 只出(返回)不进(参数)
consumer 只进不出
Function 又进又出
BiFunction 二元操作 func(a,b)


Reactor1.png Reactor2.png Reactor3.png Reactor4.png Reactor5.png




回复 支持 反对

使用道具 举报

695

主题

1139

帖子

4064

积分

认证用户组

Rank: 5Rank: 5

积分
4064
 楼主| 发表于 2019-1-22 15:22:20 | 显示全部楼层
同样的工作、同样的做需求,为什么他们能进阿里


点评cat
zipkin
pinpoint
APM
上面 遵循google Dapper论文

ELK

grafana + influxdb


开源授权协议
license

Apache License ,Version 2.0 百度看看有哪些软件在用?


纯粹性

AOP-----service层不放ctroller层
拦截器Interceptor
过滤器Filter     servlet -> J2EE


Filter是基于函数回调(doFilter()方法)的,而Interceptor则是基于Java反射的(AOP思想)。


1.过滤器:

  依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据.

  比如:在过滤器中修改字符编码;在过滤器中修改         HttpServletRequest的一些参数,包括:过滤低俗文字、危险字符等


2.拦截器:

  依赖于web框架,在SpringMVC中就是依赖于SpringMVC框架。在实现上基于Java的反射机制,属于面向切面编程(AOP)的一种运用。由于拦截器是基于web框架的调用.

  因此可以使用spring的依赖注入(DI)进行一些业务操作,同时一个拦截器实例在一个controller生命周期之内可以多次调用。但是缺点是只能对controller请求进行拦截,对其他的一些比如直接访问静态资源的请求则没办法进行拦截处理。



3.执行顺序

  过滤器的运行是依赖于servlet容器的,跟springmvc等框架并没有关系。并且多个过滤器的执行顺序跟web.xml文件中定义的先后关系有关。

  拦截器的执行顺序跟在SpringMVC的配置文件中定义的先后顺序有关。



回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2020-6-6 20:26 , Processed in 1.317243 second(s), 22 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表