暂无个人介绍
Kubernetes Service 定义了这样一种抽象:一个 Pod 的逻辑分组,一种可以访问它们的策略——通常称为微服务。这一组 Pod 能够被 Service 访问到,通常是通过 Label Selector 实现的。
Apache ShardingSphere 默认的 XA 事务管理器为 Atomikos。
ribbon
副本集介绍 mongodb的集群大体分为两种模式,副本集模式和分片模式。副本集模式包括无仲裁者和有仲裁者的副本集。 副本集中包含一个Primary节点和多个Secondary节点,primary负责数据的写入,secondary从Primary同步写入的数据,保证副本集内数据的同步,提供数据的高可用。
使用oracle时可能遇到无法通过8192在表空间中扩展错误,原因是数据库的表空间不足。 oralce默认数据块大小为8k,这种情况下,单文件最大为32G,但是默认块大小不能更改,如需更改需要重建数据库。
1. 确认待回收对象 垃圾收集器回收对象时,第一件事就是确认哪些对象需要被回收,确认算法有引用计数法和可达性分析。 1.1 引用计数法 在这中算法下,每个对象实例都会被分配一个引用计数器,每当一个地方引用它,则计数器值加1;当引用失效时,计数器值就减一;任何时刻计数器为0的对象都表示没有任何引用。
1. 对象的创建 对象的创建过程: 1.1 类加载检查 虚拟机遇到一条new指令时,先检查这个指令的参数能否在常量池中定位到一个类的符号引用,并检查这个符号引用代表的类是否已被加载、解析和初始化过。
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。
1. HttpServer HttpServer作为http服务器的server端: public final class HttpServer { private static final String IP = "127.
1. NioEventLoopGroup MultithreadEventExecutorGroup内部维护一个类型为EventExecutor的children数组, 其大小是 nThreads, 这样就构成了一个线程池: public abstract class MultithreadEv...
ChannelHandler netty中的ChannelHandler用于处理Channel对应的事件,每一个ChannelHandler都会和一个channel绑定,ChannelHandler体系如下: ChannelHandler接口里面只定义了三个生命周期方法: void ha...
netty是一个nio客户机-服务器框架,它简化了tcp和udp网络编程,相对于java传统nio,netty还屏蔽了操作系统的差异性,并且兼顾了性能。 Channel channel封装了对socket的原子操作,实质是对socket的封装和扩展。
今天kafka-manager监控到异常: Brokers Leader Skew指标不正常,指标有偏离说明分区分配有问题,发现broker列表中少了一台机器,将服务器kafka重启后恢复正常。 kafka-manager指标 Brokers Spread 看作broker使用率,如kafka集群9个broker,某topic有7个partition,则broker spread: 7 / 9 = 77%。
操作系统为了限制程序的数据访问,来防止获取其他进程或外围设备数据,将CPU划分为用户态和内核态: 内核态(Kernel Mode):cpu可以访问内存的所有数据,包括外围设备,例如硬盘,网卡,cpu也可以将自己从一个程序切换到另一个程序。
ThreadLocal对象是线程的局部变量,每个线程都能在其中保存只属于自己的内容。对于同一个static ThreadLocal,不同线程只能从中get,set,remove自己的变量,而不会影响其他线程的变量。
Executor体系 java中,new一个线程对象是耗费资源的操作,对于需要大量线程创建的场景可以使用线程池来解决。 使用线程池不仅能够降低创建和销毁线程的性能开销,如果合理的设置线程池还能够避免无限制的创建线程资源,保持系统稳定。
synchronized synchronized的作用是实现线程间的同步,一般称为重量级锁,经过jdk6对synchronized优化后,其性能有所提高,与ReentrantLock基本持平。 synchronized关键字经过编译之后,会在同步块的前后分别形成monitorenter和monitorexit这两个字节码指令,这两个字节码都需要一个reference类型的参数来指明要锁定和解锁的对象。
锁优化思路 最好的方式不加锁,如果必须加锁,可以从如下几个方面入手进行锁优化: 1. 减少锁持有时间 2. 减小锁粒度 3. 锁分离 4. 锁粗化 减少锁的持有时间 减少锁的持有时间,即减少锁内代码执行时间,可以通过减少锁内代码量实现,例如避免给整个方法加锁、将不需要加锁的代码移出去,例如: p.
注:本文大部分内容取自:《深入理解java虚拟机》 java之前,主流程序语言(如C/C++等)直接使用物理硬件和操作系统的内存模型,因此,会由于不同平台上内存模型的差异,有可能导致程序在一套平台上并发完全正常,而在另外一套平台上并发访问却经常出错,因此在某些场景就必须针对不同的平台来编写程序。
需要了解的概念 并发和并行 并发侧重于任务的交替执行,同一时间只能执行一个任务;而并行是任务的同时执行,统一时间可以有多个任务被执行。 单核CPU与多核CPU下任务表现分别为并发与并行。 临界区 临界区用于表示一种公共资源或是共享数据,可以被多个线程使用,但是同一时间内,只能有一个线程在使用它。
部署项目时A服务启动失败,报错: 14-Aug-2019 12:52:49.860 SEVERE [main] org.springframework.web.context.ContextLoader.
servlet相关类包括Servlet、ServletConfig、ServletContext、GenericServlet、HttpServlet等。 Servlet Servlet定义了所有servlet必须实现的功能,每一个Servlet都是运行在web服务中的一个小的java程序,用于接收并响应来自web客户端的请求。
RestTemplate是Spring提供的访问Rest服务的客户端,它简化了和http服务器的交互。 HTTP 协议特点是纯文本协议,其媒体类型MediaType可以为text/html、text/xml、application/json等,HTTP消息必须使用content-type进行自我描述,否则不能区分媒体类型。
springcloud的git配置中可以使用@RefreshScope + POST [/actuator/refresh]调用actuator的refresh来实现配置的热更新。 @RefreshScope springcloud描述: A Spring @Bean that is marked.
DispatcherServlet处理request DispatcherServlet是前端控制器, Spring MVC遵循前端控制器模式,前端控制器是MVC 模式中C的一部分, 除此之外,C还包括我们定义的Controller等应用控制器类。
Redis简介 remote dictionary server,以字典结构存储数据。数据结构如下Redis的安装 数据类型 字符串类型 字符串类型是二进制安全的,能存储包括二进制数据等任何形式的字符串,一个字符类型键允许存储的最大容量是512M。
AMQP协议 Advanced Message Queuing Protocol,应用层高级消息队列协议,基于此协议的客户端与消息中间件可传递消息,不受客户端/中间件同产品、不同的开发语言等条件的限制。
前端页面的实时刷新一般两种思路,即拉和推的思路: 拉:前端每隔一段时间到后台请求数据; 推:后端需要推送数据时,向前端推送数据。 没有特殊需求的话,一般使用推的方式。websocket是基于TCP的协议,能够实现客户端与服务端全双工通信。
定义 Java 消息服务(Java Message Service)是 java 平台中关于面向消息中间件的 API,用于在两个应用程序之间,或者分布式系统中使用消息进行异步通信。 JMS 是一个与具体平台无关的 API,绝大多数 MOM(面向消息中间件)提供商都对 JMS 提供了支持。
kafka架构 Kafka是分布式、分区的、多副本的、多订阅者,高吞吐率,支持水平扩展,基于zookeeper协调的分布式消息系统。常见用于web/nginx日志、访问日志,消息服务等。主要应用场景是:日志收集系统和消息系统。
libawt_xawt.so java应用添加了对图片水印和缩略图处理后,部署在ubuntu服务器,报错: java.lang.UnsatisfiedLinkError: /mnt/jdk1.8/jre/lib/amd64/libawt_xawt.
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于模拟http请求对软件进行压力测试。下载地址: https://jmeter.apache.org/download_jmeter.
maven类型web项目 maven类型打war包只需将生命周期执行到package即可。 普通web类型项目 普通web项目就稍微繁琐一些,我们使用idea运行web项目时首先会配置一个exploded类型的Web Application,例如: 如果我们想打出war包,可以新建Archive类型的Web Application,如下: 新建的Archive是基于bf-file的,如果选择Empty,配置要稍微繁琐一些。
Mixed Content https网页中,如果请求的内容属于http协议,则称为 Mixed Content,W3C 将 Mixed Content 分为 Optionally-blockable 和 Blockable,Optionally-blockable定义为: 请求的资源风险较小,即使被中间人拦截并篡改也不会造成很大影响。
windows下FTP服务器可以使用3CDaemon,下载后点击FTP服务器设置进行相关设置: 使用jar包坐标如下: <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.6</version> </dependency> 使用java连接服务器并进行操作,登录FTP后默认在FTP根目录下,如果操作文件需要切换到待操作目录。
java中使用AES对称加密后,请求报错: Caused by: java.lang.RuntimeException: java.security.InvalidKeyException: Illegal key size or default parameters at com.
zookeeper主要用于解决分布式环境下的服务协调问题,通常应用场景为: 注册中心: dubbo、motan等 配置中心:disconf 负载均衡:节点值可以为多个服务地址,根据不同负载策略选取服务地址 分布式锁 集群管理工具:根据节点排序用来选举master等 znode zookeeper结构 zookeeper可以理解为一个文件树结构,每一个节点称为一个znode,每个znode上都能存储自己的信息。
HTTPS HTTP协议是基于tcp、ip协议之上的,但是HTTP协议有天然的缺陷: 信息拦截:通信过程中使用明文,可能被中间人劫持信息; 身份验证:没有验证通信方的身份,对方可能是其他人冒充的; 数据完整性:没有检验数据的完整性,数据可能被中间人篡改。
配置文件所在位置 查看配置文件的位置和加载顺序: mysql --help 查看: Default options are read from the following files in the given order: C:\Windows\my.
mvcc标准机制 多版本并发控制(Multiversion concurrency control)。 当对数据进行写操作时,不允许对被操作数据进行读操作,这样会导致数据库并发性能低下。于是用mvcc在并发访问(读或写)数据库时,对正在事务内处理的数据做多版本的管理,以降低写操作的堵塞而引发读操作的并发问题。
事务概念 数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作,经典的事务场景是转账,A(id为3)给B(id为1)转账: update user_account set balance = balance - 1000 where user_id = 3; update user_account set balance = balance + 1000 where user_id = 1; 这两个sql要保证必须同时成功或同时失败,否则数据将出现不一致的情况。
查看慢查询状态 show variables like 'slow_query%' 主要变量: slow_query_log:表示是否开启; slow_query_log_file:表示保存慢查询信息的文件; 开启慢查询 set global slow_query_log = on 或直接在配...