-
Netty Run
netty 运行分析分析一:serverBootstrap.group(parentGroup, childGroup)AbstractBootstrap 维护了一个group (parentGroup)ServerBootstrap 维护了一个childGroup NioEventLoopGroup 继承了MultithreadEventExecutorGroup 内部维护了一个EventExecutor[] children 就是ExecutorEventExecutor[] chi...…
-
centos7 docker使用
docker 构建将项目:https://gitee.com/ninuxGithub/tomcat-nginx-balance.git克隆到centos安装好环境: 直接采用命令 mvn package docker:build会报错不知道为什么?Cannot retry request with a non-repeatable request entity:xxxxxxxxxx那么分开命令构建吧首先mvn package查看到target地下是有jar生成了到target/docke...…
-
aop执行的分析
aop 执行的过程分析aop使用的时候需要定义一个切入点, 然后围绕切入定编写5种通知的类型@Before , @Around , @After, @AfterReturning, @AfterThrowing那么这5中通知是如何运行的呢 ? 测试一把/** 作用在方法上面 */@Target(ElementType.METHOD)/** 保留到运行时 */@Retention(RetentionPolicy.RUNTIME)public @interface TimeCounter {...…
-
mina启动
目的分析mina客户端服务器启动的时候是如何运行的;服务端启动服务端典型的代表: NioSocketAcceptornew NioSocketAcceptor()对象创建的时候会调用一系列的super构造器public NioSocketAcceptor(int processorCount) { super(new DefaultSocketSessionConfig(), NioProcessor.class, processorCount); ((DefaultSocke...…
-
spring boot redis sentinel
redis sentinel 哨兵在项目中使用reids的时候考虑过没有如果我们的redis由于意外的情况下线了,可能导致项目的瘫痪;redis集群的模式 主从复制: master拥有多个slave然后, 从服务器想主服务器发起sync命令, 然后主开始bgsave形成快照并且将上层执行的命令写到 缓冲区, 然后是想从服务器发送快照 ,从载入快照,执行主服务器缓冲区的命令; 哨兵模式: 对主从的优化 对每个节点加入了一个哨兵 监控节点的状态 ; 每个哨兵...…
-
ReentrantLock
ReentrantLock分析要了解ReentrantLock必须要首先理解一下AQS(AbstractQueuedSynchronizer)的大概的内部结构aqs 内部维护了一个Node 类型的head,tail ; head: 等待获取锁的首节点 tail: 等待获取锁的尾节点Node是一个内部类;构造函数 Node(Thread thread, Node mode) 创建Node的时候需要一个当前的线程和线程等待的模式等待模式有2种: Share,Exclusive 模...…
-
spring boot redisTemplate execute
目的分析redisTemplate.executeredisTemplate.executePipelined(RedisCallback<?> action)redisTemplate.executePipelined(SessionCallback<?> session)@RunWith(SpringRunner.class)@SpringBootTest(classes = Application.class)public class TestRedisTem...…
-
spring boot JAP Ehcache
目的ehcache 的使用在spring boot jap 的repository 中加入缓存, 查询的时候会将我们查询的对象缓存到对应的key中,第二次查询的时候如果sql命中了,那么jap不会发起查询,而是查询ehcach缓存中的数据sql命中: 可以理解为相同的sql条件;Ehcache 的注解:@Cacheable : 将方法的返回值放入到缓存中, 检查缓存中是否存在key , 如果不存在那么将值加入缓存@Cacheput : 将方法的返回值放入到缓存中, 不检查缓存中是否有对应...…
-
spring boot JAP事物分析
目的分析jap在开启事物后是如何运行的我们的目的方法@RestControllerpublic class TestController { @Autowired UserNewService userNewService; @RequestMapping("/save/user")//--->① public String save() { UserNew userNew = new UserNew(); userNew.setA...…
-
项目远程debug
目的项目有时候在上线的情况下会出现一些和本地运行的不一样的结果,让人很诧异,本篇介绍远程debug准备工作虚拟机,安装好tomcat,构建一个spring boot 项目打好war包,包名称为: tomcatNginxBalance.war修改我们的tomcat 的catalina.sh加入一行命令:CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=6666"address=666...…
-
spring boot 双数据源配置 + 使用demo
spring boot 双数据源配置配置2个数据源 一个mysql ,一个sqlSqlver , 更加业务的不同,去不同的库获取数据;数据配置@Configurationpublic class DBConfig { @Bean(name = "mysqlDataSource") @Qualifier("mysqlDataSource") @Primary //重要 @ConfigurationProperties(prefix = "spring.datasour...…
-
spring boot mybatis 运行分析
spring boot mybatis 运行过程MyBatisAutoConfiguration -->sqlSessionFactory(dataSource)方法会去创建一个SqlSessoinFactoryBeanSqlSessionFactoryBean -->afterPropertiesSet -->buildSqlSessionFactory --...…
-
jacob word 转html
jacob word转html步骤其实很简单,word 可用通过jacob直接转为html为了方便, 我们要将图片转为base64而已需要注意的是 linux 系统好像不支持jacob ,所以只有windows 才支持1.在项目中build path 加入jacob.jar2.在jdk的bin目录加入对应系统的dll 文件 , 例如jacob-1.18-x64.dll <dependency> <groupId>com.hynnet</groupId&g...…
-
htmlutil爬数据
目的前端项目通过js调用公共接口获取数据,然后经过一系列的规则进行数据的过滤,形成一个最终的结果需求: 对股票一键选进行历史数据的保存解决方案: 采用htmlutil进行数据的爬取, 模仿鼠标点击页面, 等待js执行接口完毕,渲染到页面后, 获取页面dom元素的值demo 代码package com.example.api.crawler;import com.gargoylesoftware.htmlunit.BrowserVersion;import com.gargoylesoftw...…
-
公共aip方法签名
目的建立一个demo 测试公共aip客户端参数请求的时候加入签名, 后端服务器验证签名;代码寄托在github: https://github.com/ninuxGithub/spring-boot-dubbo-zookeeper.git实现思路1.首先分析 客户端请求的时候携带的参数是否符合目标方法入参(是否参数名称正确, 是否参数列表顺序一致, 是否个数一致)解决方案: 启动项目的时候扫描公共的api接口, 提取出接口的信息包括方法名称, 入参列表等待2.服务器签名的验证服务端通过过滤...…
-
spring boot + dubbo
目的采用spring boot 整合dubbo, 配置采用yaml, bean 采用java config 废话不多说,直接上代码 重要的地方会有注释项目寄托在github : https://github.com/ninuxGithub/spring-boot-dubbo-zookeeper.git实现的思路和dubbo xml config 差不多 都是采用api提供接口, provider实现接口 , consumer调用接口在provider 里面 需要对api接口的实现,实现的d...…
-
logstash 项目日志的收集
目的使用logstash 进行项目的日志的收集; logstash 好比是一个io的读写 , 需要一个源 和目的地 当然还需要一个过滤器;思路: 第一步,logstash 使用项目产生的日志就是我们要读取的源 然后采用redis作为我们的目的地 第二步,logstash redis作为源 , 然后 目的地是我们的elasticsearch 的内存 思考一个问题: 为什么不直接采用 项目日志作为源, elasticsearch 内存作为目的地直接将我们的日志生保存到e...…
-
Spring boot + Elasticsearch
目的为了在spring boot 项目中使用elasticsearch进行增删改查,个人感觉elasticsearch 查询是最重要的部分;1.采用ElasticsearchRepository进行对象的插入,查询,修改,删除2.采用QueryBuilders 构建查询dsl(domain specific language);javaBean es CURDjavaBean 通过ElasticsearchRepository 持久化到elasticsearch 内存, 然后支持查询,修改...…
-
Transaction 事物笔记
事物事物遵循ACID原则原子性(atomicity): 事物要么成功提交, 要么全部不提交,是一个整体。一致性(consistency): 事物的执行从一种正确的状态转换为另一种状态隔离性(isolation): 在事物正确提交之前, 不允许将该事物对数据的改变提供给其他的事物;持久性(durability): 事物正确提交后 , 数据将被持久化到数据库数据库的事物read uncommited: 读未提交, 那么可能产生脏读, 读到其他事物没有提交的数据read commited: 度已...…
-
spring boot + activemq
消费端配置因为项目使用了dubbo ,所以配置比较多<!--activemq依赖--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId></dependency><dependency> <groupId...…