-
mybatis对象多对一双向绑定
mybatis 如何实现对象的相互关联多端采用collection来描述“一端”;一端采用association来描述“多端”建立javaBean如下/** * @author shenzm * @date 2019-10-22 11:08 * @since 1.0 */public class Depart { private Long did; private String departName; private List<Employee> employ...…
-
netty对selectedKeys进行优化
分析netty NioEventLoop 里面的selectedKeys优化处理在阅读netty源码的时候对selectedKeys一直有个疑问? select(boolean b); 方法选择的时候是如何将key放到集合selectedKeys里面去的经过debug发现在WindowsSelectorImpl.processFDSet方法里面有selectedKeys.add(sk);为什么调用了io.netty.channel.nio.SelectedSelectionKeySet#a...…
-
spring boot mybatis 运行分析2
mybatis 自动配置执行MybatisAutoConfiguration进行了mybatis的自动配置SqlSessionFactoryBean 对象的创建设置数据源设置Configuration, 通过ConfigurationCustomizer接口可以进行configuration对象的自定义(配置属性的值)通过getObject()获取到SqlSessionFactory创建SqlSessionTemplate对象将SqlSessionFactory注入到该类中去进行mappe...…
-
绕过https安全验证发送post请求
https请求最近对接客户的需求,要求通过post发送数据给客户端的后台; 特别的地方就是客户的服务器是https://ip:port/xxxxx 自己弄的https; 没有绑定域名如果是https绑定了域名就不存在请求的时候安全验证一说了, 但是正式可能是自己弄的时候后, 在发送post数据的时候就需要绕过https的安全验证了;这个工能弄了大半天, 借鉴了和多博客的方法, 但是不是很理想;走过的坑太多了控制权的请求接口@RestControllerpublic class Https...…
-
Reflection
ReflectionsReflections 为java 提供了反射的封装好的业务逻辑github地址:https://github.com/ronmamo/reflections扫描指定路径包下的方法上是否包含注解, 方法 等等;加入我们通过自定义的注解来描述一下信息, 那么我们如何来获取到这些注解的信息呢? 简单的方法可以使用spring自带的一些方法例如: applicationContext.getBeansWithAnnotation(RestController.class);...…
-
spring boot mybatis 缓存
mybatis 是如何开启一级, 二级缓存的使用过mybatis的都知道可以开启一级, 二级缓存来加快业务的查询的速度;mybatis一级缓存默认是开启的, 二级缓存是默认关闭的;查阅了一下资料一级缓存: 基于sqlSession的缓存, 可以跨多个mapper的, 因为一个sqlSession可以用来查询多个mapper的sql二级缓存: 基于mapper ,缓存的key对应的该mapper的namespace(命名空间)那么一级缓存是默认开启的在org.apache.ibatis.se...…
-
简单的算法问题
算法有一个数组a,有一个变量n,大于变量n的放到数组的前面,小于变量n的放到数组的后面(不需要排序)?刚开始有和和简单的思想, 如果采用list来处理就很简单了判断当前的数据是否小于目标, 然后分类, 最后将集合的数还原到数字里面去;class Q{ private static void simpleCategory(int[] arr, int n) { List<Integer> left = new ArrayList<>(); ...…
-
Flume 推送日志到Kafka
目的为了记录正确的方式来进行flume日志推送到kafka;#开始实践 需要 centos7.x 准备下载 apache-flume-1.8.0-bin.tar.gz, kafka_2.12-2.3.0.tgz, 安装zookeeper-3.5.5;安装步骤忽略;第一步:zookeeper配置zoo.cfg文件的配置tickTime=2000initLimit=10syncLimit=5dataDir=/tmp/zookeeperclientPort=...…
-
SpringCloud Gateway使用
spring cloud gatewaygateway的作用是可以来作为服务的一个代理, 请求的转发,中间的一个路由的功能, 这就好比是nginx的功能;相比较zuul, zuul是将请求结果代理转发到了当前eureka注册中心的其他的服务上去的, 局限在了本服务集群体系里面的服务调用了;gateway有跟好的一个路由的功能;本章的目的是为了记录gateway一些简单的使用, 内容参考了其他的博客, 自己实践一下;@SpringBootApplication@RestController@...…
-
SpringCloud Zuul 原理分析
目的分析zuul运行的过程源码分析现象到本质的分析从第一次请求的那个提示开始分析, 对DynamicServerListLoadBalancer 进行分析debug 找到入口2019-08-02 15:40:26.655 INFO 5964 --- [nio-8769-exec-1] s.c.a.AnnotationConfigApplicationContext : Refreshing SpringClientFactory-service-feign: startup date [...…
-
SpringCloud Feign 原理分析
目的分析feign 调用的过程源码分析FeignAutoConfiguration承担了feign业务的自动配置的功能从这个类中类中大致可以观察到加载的类FeignContext: feign的上下文环境 依赖的FeignClientsConfiguration我们可以进一步的进入这个类来看看有fegin的编码,解码, 转换器service, 依赖的hystrix 等等... OkHttpClient 提供http发送的底层工具然后就是自动配置了一个Targeter的bean, 这是...…
-
SpringCloud Ribbon 原理分析
目的分析ribbon启动的过程是如何的;源代码分析从服务的控制器调用service层里面的服务的时候, 我们会通过restTemplate来调用注册到eureka中心的服务,试着想想我们为什么在启用了ribbon之后就可以自动的做负载均衡了,我们什么额外的动作都没有去做; 我们只是引入了ribbon的依赖启动了ribbon的注解那么下面从现象到本质的分析;我们的项目通过配置负载均衡的规则和HystrixCommandAspect来进行了ribbon的自定义的一些配置并且在main方法入口加...…
-
SpringCloud Eureka Server 原理分析
目的分析Eureka Server 运行的原理,源代码分析思路如下 简单介绍一下spring boot 的原理;spring boot auto configuration 的原理建立xxxx-start, 然后在MATE-INF会配置一个spring.factories, 启动spring boot 的时候这些spring.factories里面配置的自动启动的类都会被spring加载,进行初始化,创建实例对象为后续的业务代码做准备工作;spring cloud Eureka Serve...…
-
schedule job 特定时间区间执行
场景当需要在一天的特定的时间段内推送不同类型的内容到远程的服务器;我们一版的schedule可以通过cron表达是使用特定的频率来实现我们的任务的执行调度,但是如何控制我们的任务只在特定的时间区间里面执行呢?思路: 还是通过schdule进行一个特定频率的执行, 在schdule内部加入一个schduleJob, 我们可以控制job的开始时间和job的结束时间来控制该job执行的时间控制到某个具体的范围[startTime, endTime]之间, 并且以适当的频率执行;步骤spring ...…
-
mysql索引
数据库索引普通索引index唯一索引 主键索引:primary key 唯一索引:unique联合索引 primary key (key1,key2) unique(key1,key2) index(key1,key2) 全文索引 fulltextindex: 长篇的文字进行快速的查找索引的类型:hash: 单条查询快,范围查询慢btree:层数越多,数据量越大;引擎&索引的类型InnoDB 支持事务,支持行级别锁定,支持 B-tree、...…
-
jvm gc
jvm 内存的分配方法区: 类加载到jvm中开辟的内存保存类的结构信息,类字段初始化的变量的值;方法区的实现: jdk1.7 永久代 jdk1.8 metaspace元数据空间 -->permanent space堆内存:创建对象保存的地方; 堆内存的实现: old generation + eden + surviver0 + survivo1线程独占的内存: 虚拟机栈;程序计数器: 程序执行的指令执行到的位置;虚拟机栈: 局部变量列表, 操作数栈,动态...…
-
java lambda 接口的使用
目的有一种场景 比如我们需要根据特定的条件 从集合里面 获取符合特定条件的记录 过滤记录 ; lambda 为我们提供了更好的机制当然我们可以采用filter , 但是这个地方更多的是想要使用一些接口函数;Consumer Function Predicate Supplier;名称 参数 返回值 实例Consumer 有 无 Iterable上的forEach方法Function 有 有 Optional的map方法Predicate 有 有(bool) Optional的filter...…
-
es query DSL
kibana 启动故障Another Kibana instance appears to be migrating the index curl -XDELETE 'http://localhost:9200/.kibana_1' --header "content-type: application/JSON" -u elastic -p在linux 里面执行这个命令将.kibana_1文件删除在启动kibana就好了启动headerdos切换到elasticsearch-he...…
-
dubbo run
dubbo 运行分析AbstractApplication.refresh()的时候 try { // Allows post-processing of the bean factory in context subclasses. postProcessBeanFactory(beanFactory); // Invoke factory processors registered as beans in the context. ...…
-
ByteBuf vs ByteBuffer 简单的对比
ByteBufferjdk nio 提供了ByteBuffer 来处理io流中的数据,将数据读到或者写入到缓冲区,该类扮演了重要的角色简单的理解: ByteBuffer 的父类Buffer 有三个重要的属性 position , limit , capacity buffer 可以理解为一个有限的容量的格子容器 , 每个格子都装了一个byte position: 当前读到或写到了那个格子 limit: 读/写时候意义不同 capacity:整个容量的大小 ...…