-
Embed Tomcat
引言使用tomcat 遇到的问题分享, -->分析问题-->引入话题借鉴EmbeddedTomcat 来实现SupplierTomcatServertomcat组件的概览Server--> -->Services -->Connector -->processHandler(构造器 ProtocolHandler.create)-->org.apache.coyote.http11.Http11NioProtocol ...…
-
常用的命令
常用的一些命令git 工作命令使用 git tag : 查看tags git tag 1.0.20 : 发布前建立一个tag git push origin 1.0.20 : 推送到远程 git checkout 1.0.20 获取tag分支 git创建分支: git checkout -b name : 创建新的分支 git tag删除: git tag -d xxx :删除本地的tag git push origin :refs/tags/1.1.6.6 删除远程的tag git检出...…
-
Arthas Guide
Quick StartMarkDown 语法 链接地址Arthas Guide 链接地址Spring Boot 集成Arthas集成的方法:spring boot 模块通过引入依赖 + 配置的方式来实现 <dependency> <groupId>com.taobao.arthas</groupId> <artifactId>arthas-spring-boot-starter</artifactId> <...…
-
Github 项目发布到Maven仓库形成dependency
创建Token-->github 右上角自己的头像悬浮-->点击Settings-->滑到最低下点击Developer settings-->Personal access tokens-->选择Tokens (classic) 创建一个token(最好将所有的权限都勾选上) , 假设为: My_Github_Token我自己的github 账号为: ninuxGithub创建一个github一个公共的仓库创建一个仓库, 建立项目,构建自己的项目, clone...…
-
Jxls export excel
Jxls export excel直接上一个demotemplate 是需要编辑的, 有特定的语法,请参考: https://jxls.sourceforge.net/getting_started.html模板github地址:https://github.com/ninuxGithub/ninuxGithub.github.io/blob/master/images/posts/product-template.xlsx@RestControllerpublic class TestC...…
-
Spring Cloud + @LoadBalanced how to work?
Ribbon 如何实现负载均衡的?代码里面会在RestTemplate bean上面添加了@LoadBalance 就能实现负载均衡, 怎么实现的?首先spring 会在LoadBalancerAutoConfiguration 里面将我们自己定义的RestTemplate 注入到这个类的内部,那么需要做一下手脚主要是通过RestTemplate.addIntercepor() 方法来添加一些自定义的拦截器, 在执行请求的时候, 通过调用这的目标serviceId ,Url 等信息, 选择...…
-
Tomcat Request Flow Analysis
tomcat 的结构是怎样的?spring boot 在onRefresh 的时候通过webServerFactory 创建了容器, 然后启动, 其实没有真正启动容器, 只是进行了protocolHandler 的初始化当执行finishRefresh 的时候通过调用lifeCycle 来完成 protocolHandler的start, 启动NioEndpoint 对tocmcat 结构的描述: https://blog.csdn.net/weixin_40599109/article/...…
-
docker 使用
1.安装docker卸载已安装的docker: yum remove docker docker-common docker-selinux docker-engine安装: yum install docker修改host提供给docker插件连接: cat /etc/docker/daemon.json{"registry-mirrors": ["https://hgnrkfvy.mirror.aliyuncs.com"],"hosts": ["tcp://0.0.0.0:2375"...…
-
ThreadLocal hash碰撞分析
问题分析ThreadLocalMap 在set value 的时候有一个for 循环 eg:什么时候会执行: e = tab[i = nextIndex(i, len)]public class ThreadLocal{ private void set(ThreadLocal<?> key, Object value) { Entry[] tab = table; int len = tab.length; int i = ke...…
-
多线程有序执行
examplepackage com.example.study.test;import lombok.SneakyThrows;import java.io.IOException;import java.util.concurrent.atomic.AtomicInteger;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock;/** * 打乱线程的顺序,...…
-
CountDownLatch 运行分析
examplepublic class CountDownLatchTest { @Test public void test() throws InterruptedException { int num = 2; CountDownLatch latch = new CountDownLatch(num); for (int i = 0; i < num; i++) { new Thread(() -&g...…
-
Hibernate Criteria Left Join vs subQuery
example@Entity@Data@Table@ToStringpublic class Product { @Id private Long id; private String name; @OneToMany(mappedBy = "pid", cascade = CascadeType.ALL) private List<Attribute> attributes;}@Entity@Data@Table@ToStringpublic c...…
-
最近的感悟
学习的感悟最近很少写博客了, 但是每天还是坚持着下班后充电1~2个小时,每天坚持着,学习自己感兴趣的知识点,认真的深入的了解一下。很久之前有人和人聊过java 的学习是先广度 还是 先着重深度。 我感觉我选择了先广度,在是深度的学习知识点。广度,我也不敢说自己有多广,试试逛的博客,学习的知识,写的分享,对于java 而言自我感觉还是挺全的了,所以最近开始每天坚持着,努力继续提高。和同事有时候聊天,问, 你过来5年槛了么有? 我在想我自己过了5年槛了吗?也许只有自己才知道, 也许我对知识的...…
-
Netty 源码阅读理解
Netty源码阅读的感悟1。首先要理解刀netty 是采用了Reactor 多线程 mainReactor, 和subReactor的一个基于事件的Nio 框架。内部高度的封装好了java nio 的逻辑,不在需要开发者自己去大量的开发,管理channel建立连接, 管理线程任务的处理, 以及监听selector 是否有时间发生,然后根据特定的事件来做特定的额业务, Netty 都以及高度集成的封装好了, 那么是怎么玩转的呢?Reactor 线程模型netty 使用的是reactor 线程...…
-
rabbitmq dead letter
死信队列1.队列nack, reject, 并且requeue = false2.消息队列的长度达到了饱和, 已满了3.消息的ttl 时间到了被接受的队列拒绝了public class Consumer { public static void main(String[] args) throws IOException { Connection connection = ConnectionFactory.getConnection(); Channel...…
-
Spring Bean 循环依赖
spring bean循环依赖的探索创建类进行测试在spring 里面通常会遇到bean 在创建的时候需要了循环依赖的情况, 例如a 类里面依赖的bb类里面依赖的a这样循环依赖的场景首先我们来创建2个非常简单的类用来后续的debug探索.@Componentpublic class A { @Autowired private B b;}@Componentpublic class B { @Autowired private A a;}debug 分析解决循环的方...…
-
Spring Cloud + Nacos 服务的注册和发现
nacos 入门参考文档spring nacos 官网https://spring-cloud-alibaba-group.github.io/github-pages/hoxton/en-us/index.html#_spring_cloud_alibaba_nacos_discoverynacos 官网https://nacos.io/zh-cn/docs/quick-start.html注册细节在 Nacos Spring Cloud 中,dataId 的完整格式如下:${prefi...…
-
Hibernate Cannot open session
1.前段请求spring mvc controller 接口提示cannot open session解决方法配置一个视图的拦截器,访问页面的时候被filter拦截开启session<filter> <filter-name>openEntityManagerInView</filter-name> <filter-class>org.springframework.orm.hibernate4.support.OpenSessi...…
-
guava学习
guava介绍guava是google推出的一个java集合框架,对java.util.collection包进行了再次的封装, 提供了更加便捷的结合工具例如Lists,Maps,multiset, multimap, bimap,table等等multiset可以理解为在set的基础上对相同的元素进行了统计(count), 有elementSet方法列出不同的key的set集合multilist就是Map<Object>,List<Object>> 相同的k...…
-
java 1.8 lambda 用法心得
lambda usagePredicate 在对集合的筛选的时候是非常有用的ToDoubleFunction 可以动态的获取我们的javabean 里面的属性的值package com.example.study.lambda;import java.util.ArrayList;import java.util.List;import java.util.Optional;import java.util.function.*;/** * @author shenzm * @ate 20...…