自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 synchronized的简介

自旋和自适应自旋自旋等待其他占用锁的线程释放.自适应的自旋,由前一次在同一个锁上的自旋时间和锁的拥有者状态来判断.是否进行自旋,以及自旋的次数锁消除在JIT中,如果检测到不可能存在数据竞争,则会直接消除锁,例如在一个方法内部定义StringBuffer并操作,会被替换为StringBuilder.锁粗化在一系列的连续操作中都对同一个对象反复加锁和解锁,会把锁同步的范围扩展.以避免频繁的...

2020-05-04 18:14:54 213

原创 并查集笔记

并查集并查集是一个child指向parent的树可以解决连接问题(Connectivity Problem)连接问题:任意两个点之间是否可以通过某个路径连接起来并查集可以快速的判定节点间的连接状态网络是个抽象的概念: 用户之间形成的网络(eg.好友推荐)集合类实现(求并集)连接问题和路径问题连接问题的答案比路径问题的答案更少,也就是说可以使用更小的代价实现.例如堆能够解...

2020-04-20 23:58:45 221

原创 线程上下文加载器

线程上下文加载器(ThreadContextLoad)任意一个继承了ClassLoader的类都可以被设置为线程上下文加载器.通过以下函数Thread.currentThread().setContextClassLoader(myThreadLoader);作用这是最好玩的地方如果一个类无法被系统加载器加载,那么就会尝试使用线程上下文加载器进行加载.通过反射可以很容易的加载到一个...

2020-04-15 23:28:55 168

原创 通用的单进程执行

通用的单进程执行之前写过一个基于文件锁的单进程执行,但由于JDK8中存在bug,因此又设计了一种通用的单进程执行实现方法.流程如下,这个文件名可以是固定的,也可以根据执行文件名来则则否则否则获取当前进程的pid如果pid文件存在获取pid文件内容,应当是一个pid若pid对应的进程存在,并且进程名字包含执行文件名退出当前进程继续启动进程shell的单进程实现如下function che...

2020-04-02 11:31:26 152

原创 只启动一个进程,以及java的文件锁问题

保证只启动一个应用,通常可以使用两种方法获取 一个 文件锁,并且在应用 运行期间都不进行 释放绑定一个端口,并且在运行期间都不进行释放绑定端口要浪费一个端口,因此不推荐.下面是java获取一个文件锁的操作.@SneakyThrowspublic static boolean lock(String file) { Path path = Paths.get(file); ...

2020-03-26 16:49:38 388

原创 api安全笔记

api安全什么是api?application program interface为客户端提供服务的一种方式.当我们讨论api安全时,包括信息安全: 保证信息在整个生命周期中是受到保护的网络安全:传输过程中的安全,防止第三方访问应用安全:应用设计时保证安全api安全的目标:CIA机密性(Confientiality): 保证信息只被预期的用户访问.完整性(Integrit...

2020-02-22 10:40:53 746

原创 spring-cloud-stream的手动消息确认

对于kafka-binder来说,设置autoCommitOffset为false.然后在listen中手动确认@StreamListener(Sink.INPUT)void listen(@Header(KafkaHeaders.ACKNOWLEDGMENT) Acknowledgment acknowledgment){ //...业务代码 acknowledgment...

2020-02-17 12:42:06 6079 1

原创 使用JDK动态代理实现装饰器

使用JDK动态代理实现装饰器众所周知,装饰器模式和代理模式非常类似,只不过一个是为了增强功能,一个是访问控制。最近在做一个项目,中间遇到了这么一个需求,在运行时动态的给一个类新增接口。假设现有的类A是接口 IA 的实现,期望其能够增加接口 IB 的实现,为了使用 IB 的方法,首先需要先实现这个方法,可以使用接口默认实现,然后声明一个匿名类实现,不过为了简单起见,创建了一个类 B,其实现了接...

2019-12-26 21:54:09 173

原创 ActiveMQ连接不释放问题

ActiveMQ连接不释放问题实际问题为:大量失效连接处于ESTABLISHED状态.检查问题的过程线上出现了activemq连接不上的报错The JMS Connection has failed到mq所在的服务查看,连接数已经占满了,使用命令netstat -antp | grep 61615| grep ESTABLISHED| wc -l获取tcp端口为61615的ESTAB...

2019-12-09 17:35:08 5954 1

转载 数据库原理

该文档来源于https://github.com/CyC2018/CS-Notes/blob/master/notes/%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F%E5%8E%9F%E7%90%86.md#%E4%BA%94%E5%A4%9A%E7%89%88%E6%9C%AC%E5%B9%B6%E5%8F%91%E6%8E%A7%E5%88%B6...

2019-12-04 23:40:44 194

原创 Aware接口的一些看法

关于 spring 中的 xxaware接口,aware 的意思是意识到,对。。。有兴趣也就是说实现了 aware 接口意味着对这些内容有兴趣。比如ApplicationEventPublisherAware意味着对``ApplicationEventPublisher有兴趣,BeanNameAware则表明对BeanName`有兴趣在 spring 中存在一个标记接口,就叫Aware...

2019-11-26 22:59:45 552 1

原创 netty 客户端接入源码分析

​netty 客户端接入源码分析netty 线程选择为NioEventLoop其实际运行的线程函数为@Overrideprotected void run() { for (;;) { try { try { switch (selectStrategy.calculateStrategy(selectNowS...

2019-11-13 22:03:12 98

原创 netty服务端启动过程分析

netty 服务端启动创建ServerBootstrap,该类是Netty服务端的启动类绑定Reactor线程池,EventLoopGroup,实际上就是EventLoop的数组.除了处理IO操作外,用户提交的task和定时任务也是由EventLoop执行.避免了多线程竞争的情况设置并绑定服务端Channel,对于Nio服务端,使用的是NioServerSocketChannel...

2019-11-13 21:02:05 156

原创 两年的数据库优化过程

业务系统存在有大约26亿条数据,前期采用了mysql数据库集群来存储.后续计划修改为opentsbd,结果流产了.业务类型为采集系统,因此存在大量的写入,仅有少量页面访问.数据模型及系统架构数据模型如下设备->指标->实际采集对象(网卡,路径等)现网的设备五花八门,甚至有2-3000千张网卡的设备存在.因此每增加一个采集设备,所采集到的数据量其实是不固定的增长,增长量和设备...

2019-10-16 20:15:34 153

原创 junit--输入相关的测试

一般使用输入时都使用Scanner类Scanner scanner=new Scanner(System.in);while(scanner.hasNext()){ String next=scanner.next();}为了在单元测试中无需人的参与,可以使用如下的方式System.setIn(new ByteArrayInputStream("what".getBytes()...

2019-10-11 20:01:58 141

原创 表达式计算引擎-JEP

最近调整了原先的一个中间件的功能,把之前被产品去掉的规则表达式计算又重新添了回去.这个中间件的基本功能是使用预定义的关键字和数值比对进行判断,从大量的数据中生成告警,主要是用于服务器监控.这里的表达式计算仅使用了与逻辑相关的一些运算符.原本是自己写了一个基于stack的表达式计算,后来被产品去掉了这个功能,说是用不到这种…然而这次的需求需要进行复杂的多规则计算,因此需要在现有的基础上重新添加...

2019-10-10 13:08:30 1063

原创 mybatis执行原理

创建SqlSessionFactoryBuilder对象,通过外部配置创建SqlSessionFactory对象使用SqlSessionFactory创建SqlSession对象,此处创建的是DefaultSqlSession使用SqlSession进行查询初始化工作解析外部配置读取外部配置的是SqlSessionFactoryBuilderpublic class SqlSess...

2019-09-29 19:57:26 94

原创 RestTemplate和web的一些坑

使用RestTemplate进行get请求时不能直接使用路径访问,需要使用类似于这种的url/user/login?username={username}&password={password}使用原始类型作为Controller的参数时,在发现没有这个参数时,将会抛出一个错误,如下Optional int parameter 'resTypeId' is presen...

2019-08-12 21:48:29 683

原创 记一次rsyslog的转发问题

rsyslog是可以配置tcp的转发模式的,使用两个@符号作为标记,一个的话就是udp模式在/etc/rsyslog.conf中发现配置了三条转发规则*.* @@aaa:514 *.* @@bbb:514 *.* @ccc:514其中ccc是我们的业务地址,aaa和bbb是服务器管理配置的其他地址由于aaa和bbb处于阻塞状态(也可能是防火墙拦截了ack).导致日志没有转发到我们...

2019-06-09 14:12:07 874

原创 ZeroCopy

操作系统的ZeroCopy简单操作byte[] buf=new byte[1024];InputStream inputStream=new FileInputStream("in.txt");OutputStream outputStream = new FileOutputStream("out.txt");int read;while ((read=inputStream.rea...

2019-05-05 00:06:02 304

原创 最简单使用promethus+spring boot admin搭建spring boot应用监控系统

最简单使用promethus+spring boot admin搭建spring boot应用监控系统promethus的安装使用下载官网地址 https://prometheus.io/打开download页面,选择操作系统(Operating system),cpu架构(Architecture)后选择对应的软件下载即可prometheus是监控系统,和一个内嵌的时间序列数据库a...

2019-03-21 15:47:26 5556 5

原创 java.lang.IllegalStateException: Calling [asyncError()] is not valid for a request with Async state

这个问题是在搭建spring-admin监控的时候发现的,版本如下spring-boot: 2.1.2.RELEASEspring-boot-admin:2.1.2问题的相关描述看这里https://github.com/spring-projects/spring-boot/issues/15057里面有建议的暂行解决方案是降级tomcat也可以使用jetty替换...

2019-01-21 10:20:11 12500 3

原创 AbstractAnnotationConfigDispatcherServletInitializer 无效的解决方案 spring in action 4th 5的补充说明

根因    tomcat没有加载spring的依赖导致的404解决过程网上搜索了错误,没有找到能够解决的方案,只有一个配置文件存在的问题--和一些其他的配置提供一下配置文件存在的问题http://stackoverflow.com/questions/33002129/spring-mvc-java-config-via-abstractannotationconfigdisp...

2018-12-15 18:46:02 2305 2

原创 HashMap源代码.by 1.8

大概要先看一下这个https://blog.csdn.net/pipisorry/article/details/70318778public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { private ...

2018-11-28 13:11:37 112

原创 svn+maven+远程tomcat持续集成

svn+maven+远程tomcat持续集成 安装jenkins https://jenkins.io/download/ 选择合适的进行下载 安装插件 路径为:系统管理->插件管理->可选插件(已经安装的插件在这里是搜索不到的) 需要安装以下几款插件 全部完成后需要重启一下jenkins,也可以直接勾选安装后重启 Subversion P...

2018-11-27 15:13:25 168

原创 mysql数据库集群的故障恢复

问题:服务器宕机之后数据库无法启动(数据库文件损坏,非正常重启导致的文件损坏)描述:数据库是mycat+mysql的读写分离集群解决方式寻找问题的过程服务器宕机了之后,重启全部的mysql,mycat,keepalived,haproxy。然后通过虚拟ip访问数据库,可用正常连接,但是查询数据的时候报错:Lost connection to MySQL server durin...

2018-10-19 13:51:04 1386

原创 关于nohup启动程序后,nohup.out过大的解决方法

一般百度到都会说:cp /dev/null nohup.outcat /dev/null nohup.out不能简单的删除那个文件,因为linux的文件管理是引用计数法。可以清空nohup日志,其实关键在于启动时的流输入方式。如果使用>方式,使用上述方法操作后,再次写入时,文件会重新变成原来的大小,而使用>>追加方式,确实可以消除文件的大小。原因基本描述如下:linux的文件管理...

2018-03-21 11:52:06 15635 7

原创 一直碰到虚拟机连接不上网络的问题,如今做个笔录

虚拟机是redhat6.7虚拟机软件是VMware12公司用的静态网络,每个工位一个ip,然后每个工位都间隔一个ip,即偶数使用,奇数保留。按照如下配置gedit /etc/sysconfig/network-scripts/ifcfg-eth0以上,使用eth0网卡添加配置如下DEVICE=eth0ONBOOT=yesBOOTPROTO=sta

2017-08-14 14:17:09 1474

原创 eclipse启动的java程序使用的jvm参数

eclipse.ini中设置的jvm参数是对于eclipse程序生效的,在/运行/运行配置/自变量中的VM自变量才是对使用eclipse运行的程序的jvm设置,jvm的启动目录是main方法所在类的当前目录,可以用while生成不同的字符串来迅速获得内存增长以此测试。程序自变量则是使用命令行启动时的后续参数,如“java -jar test.jar 123”在程序中可以获取到args[0]

2017-07-04 15:36:25 378

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除