- 博客(35)
- 收藏
- 关注
原创 java中的SPI
时间记录:2020-05-06之前在看dubbo的源码的的时候收获颇丰,其中有个很神奇的东西那就是SPI,这个东西解决了我们在使用第三方的框架的东西的时候的扩展问题,也就是接口实现在使用者手上,这就是SPI的基本概念和接口编程是相反的,主要看实现者就可以了。jdk中最早出现是在1.6中出现的,它是通过服务发现的方式来实现的,也就是将对应的接口实现标记到一个配置文件中,然后加载的时候通过策略的方式来实现。最常碰到的就是数据库驱动加载就是有spi的身影,spi只是一种思想具体的实现可以自己定制操作的,dubb
2020-05-16 16:31:29 229
原创 浅谈垃圾收集机制与垃圾收集器(二)
时间记录:2020-05-05了解了垃圾收集的一些机制和方法了,但是回收最大的问题就是如何保证原有的线程的运行,也就是stop the world,垃圾收集算法在不同的虚拟机上的实现还是有点区别的,由于平台的不同,而垃圾回收都是内存上的操作,所以实现上不同。垃圾回收最主要的就是对内存的操作,当对应的内存区域内的内存不存在连续的内存块供使用的时候就会进行垃圾回收了,主要的就是将没有用的内存回收以...
2020-05-05 12:59:42 198
原创 浅谈垃圾收集机制与垃圾收集器(一)
时间记录:2020-05-03最近在重温垃圾回收机制,然后能够更好的理解垃圾收集机制以及垃圾收集器的差异,不同的收集器之间的组合搭配和使用上。这次系统的学习了垃圾收集器和垃圾收集机制,以及触发条件等,收益良多。...
2020-05-04 12:01:55 193
原创 Thrift中Tserverclinet的异步调用问题
project.gradle.buildFinished {/*生成的SvcBaseOriginal.java 需要将TServerClient修改为自己的,不然多线程有问题/def clientFile = new File(‘src/main/gen/kl/hsm/server/svc/base/SvcBaseOriginal.java’)def list = []if(clientF...
2020-04-18 17:36:47 1964
原创 Ingress双向认证
时间记录:2020-4-5ingress作为k8s中的一种访问权限控制,其中可以支持的ngnix的负载,支持https,支持它的双向认证和单向认证,这里记录下使用情况。一:制作证书### 制作根证书openssl req -newkey rsa:2048 -passout pass:123456 -keyout ca_rsa_private.pem -x509 -days 365 -out...
2020-04-05 16:58:21 1207
原创 线程安全与锁优化(二)
时间记录:2020-3-4我们之前了解到了线程的安全方面的内容,知道了关于保持线程安全的手段,最常用的就是同步,而同步会对性能有一定的损耗,而jdk在内部的开发中也对此进行了一定的优化,我们不免思考,线程同步指令是否一定必须要执行的,也就是说在不需要进行线程同步操作的地方执行了同步的指令是不合理的,那么如何去避免这样的问题,虚拟机就提出了一些的优化方案,比如适应性自旋、锁消除、锁粗化、轻量级锁、...
2020-03-07 14:09:49 128
原创 线程安全与锁优化(一)
时间记录:2020-2-5之前学习到了java的线程与内存模型一例,其中最为关键的是在多线程下的操作如何保证线程安全,而其中最常用的手段就是加锁一保证数据一致性,但是锁的使用不合理会导致性能问题,所以我继续了解线程和锁的优化地方。锁在单独的机器上面是挺好用的,但是在分布式的系统中,如何保持数据的一致性,这里就衍生出了一个新的名词分布式锁。线程安全当多个线程访问一个对象的时候,如果不用考虑这些...
2020-02-07 15:24:40 160
原创 Java内存模型与线程(四)
时间记录:2020-2-3上章节主要学习到了java内存模型的一些特性和long以及double的特殊规则,这次主要学习了java内存模型中的有序性支持的另一个规则【先行发生原则】,以及线程的实现和线程的状态,结合java线程的内容先行发生原则java中的特性包含了有序性,但是有序性的发生有volatile和synchronized,这个是之前学习到的部分,但是在java中如果完全靠这个来进...
2020-02-03 11:28:02 140
原创 Java内存模型与线程(三)
时间记录:202-2-2上章节主要了解volatile的使用和一些细节部分操作,下面主要为long和double变量的一些特殊规则,还有就是java内存模型的一些特性吧。long和double变量的一些特殊操作long和double都是64位的,在java虚拟机中有一条宽松的规定:允许虚拟机将没有被volatile修饰的64位数据的读写操作划分为两次32位操作来进行。之前说到对变量的操作的原...
2020-02-02 12:44:35 138
原创 Java内存模型与线程(二)
时间记录:2020-2-1上章节了解到了关于内存的一些操作和简单的规则,在其中volatile属于一个比较特殊的内容的操作,而也存在一些特殊的变量的内存操作的特殊性,long,double的操作的特殊性,但是其表现没有什么差异。Volatile型变量的特殊规则在java中volatile为一个关键字,是一种轻量级的同步机制,但是其在一些的特定场景下的操作比较合适,不是完全的同步,其只是对所有...
2020-02-02 11:34:48 141
原创 Java内存模型与线程(一)
时间记录:2019-1-23此标题内容为学习java虚拟机做的笔记和小总结汇总。java内存模型我们知道java为了实现跨平台(指的是相同的代码在不同的平台的java环境下可以正常运行),专门的对物理机的内存进行分配了规则,比我我们常说的,主内存,工作内存等,为的是可以消磨在不同的环境下的差异性,约定内存的数据访问的规则等。主内存与工作内存我们了解java定义的内存模型主要是定义程序中各...
2020-01-31 16:44:36 119
原创 字节数组的大端序和小端序
时间记录:2020-1-22问题描述:在接受别人传递过来的字节数组的时候,然后发现数据和其的测试程序表现的不一致,通过打印16进制的数据来看发现,数据的顺序是颠倒的,想到了字节的顺序问题,也就是大端序和小端序。字义解释:数据存储在内容中,是以什么样的字节顺序,也就是指是从高位还是地位开始存储的,一般情况相下都是以小段序的来存储,也就是从低位开始存储的,但是在网络传输过程中,都是默认的以大端序...
2020-01-31 16:07:56 1020
原创 tcpdump抓包工具使用记录
时间记录:2019-11-24TcpDump帮助文档tcpdump是linux下一款很好用的网络抓包工具,方便实用。记录下其使用的方式及注意事项。其支持的命令参数繁多,包含了执行网卡参数,执行输出内容,指定抓取的次数等,功能比较强大,且安装起来十分的方便命令参数: tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ]...
2019-12-22 15:46:29 703
原创 NetSh 端口转发使用记录
时间记录:2019-11-24问题描述:我们在资源有限的情况下,想要将一台机器当成几台来使用,就需要使用代理的方式进行,这样就能看到多个机器的使用,进行端口转发,将本地机器的端口映射到本地机器的其他端口或者到远程机器的地址和端口,这样就好像是看到了多台机器.windows在xp开始添加了netsh的网络工具,具有代理转发的功能。NetWork Shell (NetSh)netsh inte...
2019-11-24 17:09:28 357
原创 java反射与内部类
时间记录:2019-11-19问题描述: 今天在使用 quartz 开始定时任务的时候,我当时考虑到实现 job 不会给外部使用的情况下,使用了内部的私有类,然后发现其不能够进行实例化操作,然后看了下源码,发现其实通过反射的方式将类进行实例化的,然后我当时写的任务类的问题,导致了其通过反射的方式不能够实例化。下面探索下反射的方式进行的实例化操作,为什么不行第一部分: 私有类且没用进行无参构造...
2019-11-20 00:10:44 265
原创 Ingress-Control中的Path问题记录
时间记录:2019-10-22问题描述:在使用IngressControl的方式进行服务的暴露的时候发现在Ingress中配置了Path这一项后发现服务无法被访问。Nginx中的配置在nginx的配置文件中有location项配置和proxy_pass,而我们通常在配置proxy_pass的时候为了动态的使用源都会配置upstream,然后在proxy_pass中会不注意以 / 结尾和不以其...
2019-10-22 22:45:19 3145 2
原创 SNTP获取时间源统一时间
时间记录:2019-9-30最近在进行时间戳的服务的阅读的时候发现了我们通常会使用一个公用的时间源作为一个标准的时间,我们知道在windows中有一个网络时间同步的功能那里使用的同步的时间源就是基于一种协议的网络的时间的请求。通常在作为网络的时间机器的时间的依据是一个量子时间钟,这个时间的误差在2000万年的误差很小。我们不做研究在这里,我们这里主要了解下时间的网络的协议的格式以及数据的传输的方...
2019-10-15 09:14:14 787
转载 Spark-Java 8的小型Web框架
Spark - a tiny web framework for Java 8Spark 2.9.0 is out. Please try it out and report any bugs.<dependency> <groupId>com.sparkjava</groupId> <artifactId>spark-core&...
2019-09-29 10:13:56 542
原创 浅论java文件处理
浅论java文件处理时间记录:2019-8-22我们在一开始学习Java的时候相信大部分在使用java的文件处理的时候是十分的抱怨的,总觉得很慢。我们来比较下java处理文件的几种方式,来进行对比下。java文件处理方式在最开始的时候出现的文件处理方式为流的方式处理,然后是带缓冲的流处理方式,最后是文件映射的方式来进行处理的。普通的流成为文件流,带缓冲的成为缓冲流,然后就是文件映射,这里还...
2019-08-23 11:55:33 621 1
原创 Docker&k8s离线安装步骤
时间记录:2019-8-12在使用docker和k8s时,在实际的生成环境中,可能是没有外网环境的,在安装的时候如果需要下载依赖项的话,此时就会完蛋的。在安装docker和k8s的时候会找不到依赖包,这里介绍下怎么发现自己安装的版本有哪些依赖包,以及如何将依赖包下载然后再安装【官方文档上没有找到对应版本的依赖项,可采用此方式】我这里对应的版本为:docker-ce-18.09.6-3.el7....
2019-08-12 16:59:43 876
原创 浅论bitset与位图算法bitmap
时间记录:2019-8-11我们知道在数据结构中有一种数据叫做位图的方式,在图像中就有一种叫做位图的东西。那么位图到底是一个怎样的数据结构呢。首先我们来了解下位图的数据结构的形式和其优势以及其不足之处在哪里。位图的概念我们在说long型数据占多少个字节,多少位。在java中long占8个字节每个字节占用8个bit,也就是占用8位,所以long占用64个bit,也就是64位。位图就是按照位来制...
2019-08-11 23:40:55 1765
原创 java中的https双向认证实例
时间记录:2019-8-9我们知道在https的双向认证中,客户端需要出示证书到服务器端,我们在浏览器中会出现证书的选择,那么在java的httpsurlConnection中怎么样将证书带过去呢?这个证书在请求的时候是放在那里的?证书在哪里证书由他人签发的【服务器自签发,或者自己生成,保证服务器端证书和客户端证书】,我们在使用证书的时候会将证书导入到浏览器中。导出证书浏览器设置 — 管...
2019-08-09 10:48:10 523
原创 浅论java中的rpc框架
时间记录:2019-7-24在分布式系统中有很多的子系统,而子系统之间进行数据的交互会通过远程过程调用**(RPC)**来进行数据的交互的,那么在远程过程调用中需要注意到什么呢?其实最主要的就是传输的速度和使用的速度。我们传输的数据的过程和拿到数据进行使用的过程。既然是远程调用那么离不开远程的对象,那我们的客户机是怎么知道远程的对象呢?远程的对象怎么进行调用呢?客户机怎么知道这个远程对象在内存中...
2019-08-08 15:19:27 332
原创 kuberbetes的服务暴露Ingress及负载均衡
时间记录:2019-7-24我们在使用k8s的时候发现我们部署的应用需要通过服务的方式来将服务保留到外网,常用的方式有NodePort,LoadBalancer,Ingress之前使用的是NodePort的方式来进行服务的暴露的(探索阶段)。但是这种方式在将所有的节点上都打开一个端口,然后所有的流量的都从这个端口到对应的服务上,然后对应的服务再请求分配到挂载到应用上的某一个(分配的依据未研究)。...
2019-07-24 15:30:47 310
原创 浅论ReentrantLock的实现
时间记录:2019-7-6在之前的aqs的总结中有看到ReentrantLock的身影,故去看了下ReentrantLock的源码,我在这里进行一下的总结自己整理的内容。以下【】的定义内容,均是从jdk1.8版本的源码翻译过来的,翻译内容不一定准确,结合自己的理解总结下。1:ReentrantLock的定义A reentrant mutual exclusion {@link Lock} ...
2019-07-17 14:34:48 104
原创 浅论aqs的实现
时间记录:2019-4-22一:什么是抽象队列同步器提供用于实现阻塞锁和相关依赖先进先出(FIFO)等待队列的同步器(信号量、事件等)。此类被设计为大多数类型的同步器的有用基础,这些同步器依赖单个原子int值来表示状态。子类必须定义更改此状态的受保护方法,以及定义此状态对于正在获取或释放的对象意味着什么。考虑到这些,这个类中的其他方法执行所有排队和阻塞机制。子类可以维护其他状态字段,但只有使用...
2019-07-07 22:37:12 356
原创 JAVA内存泄漏问题出现原因及解决分析方案整理
时间记录:2019-6-13java的内存泄漏问题是十分常见的,一般情况下的内存泄漏都是在堆内的,还有部分情况下是堆外的内存泄漏,这部分的内存泄漏并不好勘察,当然了也是有方法进行勘察的。笔者在进行压力测试的时候发现了内存泄漏的情况,并进行了问题的查找,属于堆外部分的内存泄漏,主要是在malloc分配内存的时候没有free,导致内存泄漏。堆内内存堆内内存通常指的是jvm 虚拟机指定的内存,可以...
2019-07-05 12:01:44 994
原创 Kubernetes部署及Dashboard部署
时间记录:2019-7-2Kubernetes(K8s) 是一个开源系统,用于自动化容器化应用程序的部署,扩展和管理。官方文档笔者安装部署遇到了一些问题在这里记录下。安装参考安装环境准备:虚拟机三台:192.168.141.129、192.168.141.130、192.168.131系统:centos7,每个处理器分配至少2个设置主机名hostnamectl set-hostn...
2019-07-02 16:39:37 311
原创 nginx开源安装以及常用操作配置
时间记录:2019-6-27nginx [engine x]是一个HTTP和反向代理服务器,一个邮件代理服务器和一个通用的TCP/UDP代理服务器。使用的最多的最常见的就是反向代理服务器,首先我们需要知道nginx的基本安装和基本操作,其次了解其如何配置反向代理。nginx分为nginx开源和nginx plus(收费),部分我们需要学习它,从开源版就可以了。nginx文档(个人找到的比较清楚...
2019-06-27 15:30:39 246
原创 Kong安装以及Nginx配置优化调整
时间记录:2019-6-25kong是一款微服务API网关平台,内部集成了nginx但是其默认配置不够好,在做负载均衡的时候不能发挥最大性能,kong支持自定义的nginx的配置,最近在了解kong的启动优化和相关配置文件的加载过程,在此做个记录。此文做一下几点概述:kong的安装,kong的启动1:kong的安装kong官方安装教程链接这里我选择centos安装,kong的启动可以使用...
2019-06-25 16:19:55 5875
原创 双亲委派模型和线程上下文类加载器
时间记录:2019-5-22学习类加载器-ClassLoader最近在阅读tomcat源码的时候发现在启动service的时候定义了自己的classloader,故做下子总结。1.在tomcat的service.bat中可以看出启动类为Bootstrap启动参数为start关闭参数为stop [思考下jdk的启动函数在哪,怎么启动这个类的] --StartClass org.apac...
2019-06-12 22:13:27 294
原创 TCP握手协议过程及相关细节参数
时间记录:2019-6-2问题描述:笔者在进行压力测试的时候遇到了奇怪的问题,压力机的环境是win7的环境,在进行压力测试的时候发现了系统的端口一直被占用,无法释放开来,进行了接口的查找发现了大量的端口处于time_wait的状态,处于未被释放的状态,在这里进行总结下,以后续出现相关问题的查找。从如下的几个问题下进行总结:握手协议的状态,握手协议的链接过程,相关系统参数的调整以适应要求。1...
2019-06-04 09:59:47 9988 2
原创 浅论java中的代理
时间记录:2019-4-13学习代理proxy首先同样的什么是代理?代理怎么用?代理在什么样子的情况下使用?代理怎么实现呢?代理的优势在哪里呢?一:什么是代理代理从字面上看去就是代替处理的意思,就是代替某种东西去做某事。比如说:...
2019-04-21 22:10:26 163
原创 开篇的个人感想和想法
时间记录2019-4-1 笔者是2018年毕业的,从学校离开步入社会的,工作也将近了2年了,当然也经历了很多的事,工作是工作学习是学习。工作是为了养活自己的,而学习完全是出自自己的喜欢,但是在这里有一个比较现实的问题,如果连自己都养活不了还谈什么学习。很多人都是为了自己的爱好而去干什么,在这里我想说你不是某二代就不要折腾了,当然当自己变得足够强大的时候当然是可以折腾的,毕竟人的一生也就那么几个春...
2019-04-13 14:22:56 440 1
原创 浅论java中的注解
时间记录2019-4-1学习注解 Annotation 首先注解是什么呢,注解有什么用呢,为什么需要注解,如何去使用注解呢,注解是怎么运行的呢?我们围绕这个问题开展学习。一提到注解详细很多人都会提到spring等框架中常用的,在这里我不讨论这些,搞懂了什么是注解再去学习相关的框架才是根本,不要一知半解。一:注解的概念 说道注解很多人会想到一开始学习编程java编程时看到的最多的事注释,那...
2019-04-13 14:22:26 272 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人