Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2840|回复: 7
打印 上一主题 下一主题

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

[复制链接]

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
跳转到指定楼层
楼主
发表于 2019-1-3 15:16:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 java 于 2019-2-19 14:43 编辑

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



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





回复

使用道具 举报

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
沙发
 楼主| 发表于 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》


回复 支持 反对

使用道具 举报

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
板凳
 楼主| 发表于 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中添加参数能传来传去就行了






回复 支持 反对

使用道具 举报

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
地板
 楼主| 发表于 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
}




回复 支持 反对

使用道具 举报

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
5#
 楼主| 发表于 2019-1-11 09:24:36 | 只看该作者
青山_20190110_MySQL事务与锁详解
链接:https://pan.baidu.com/s/1nTmvQddXwbGsWp4_wr6Xgg
提取码:rki8  
回复 支持 反对

使用道具 举报

30

主题

102

帖子

372

积分

认证用户组

Rank: 5Rank: 5

积分
372
6#
发表于 2019-1-12 22:04:51 | 只看该作者
一般是来一个用户就创建一个线程
bio堵塞



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


select 放线程中  reacte模型





回复 支持 反对

使用道具 举报

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
7#
 楼主| 发表于 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)







回复 支持 反对

使用道具 举报

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
8#
 楼主| 发表于 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, 2024-4-20 02:04 , Processed in 0.070359 second(s), 21 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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