![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
javHao
这个作者很懒,什么都没留下…
展开
-
阿里canal
用于mysql数据库异构数据的同步增量日志数据的订阅 消费和解析 可以订阅到mysql二进制日志的变化 然后可以拿到数据进行消费 ,历史数据无效 只能通过其他方式进行全量同步io 和 thread线程间隔一下执行一次 主从同步有时间的延迟 不是立刻马上的canal原理工作场景数据库实时备份对业务缓存进行刷新!索引构建 例如插入es中可以通过对binlog日志的监控实现数据库中的商品降价后发送通知跨数据库的数据备份/异构数据同步 mysql->oracle ->mo原创 2021-02-19 17:53:13 · 216 阅读 · 0 评论 -
MQ总结归纳
首先为什么要用mq1应用系统服务接耦合 通过mq把同步调用改成异步调用2实现缓存流量消峰RocketMq原创 2021-02-04 00:22:36 · 255 阅读 · 0 评论 -
Spring Security OAuth2.0
RBAC权限模型:1 基于角色2 基于资源 ---- 用得比较多加载spring容器:spring security封装了认证的过程原创 2021-01-18 23:12:04 · 94 阅读 · 0 评论 -
并发编程
Tsequential是算法串行版的执行时间,而Tconcurrent是算法并行版的执行时,P是可以进行并行化处理的代码的百分比,而N 是你准备用于执行该算法的计算机的核数。基本并发类Thread类:该类描述了执行并发Java应用程序的所有线程。Runnable接口:这是Java中创建并发应用程序的另一种方式。ThreadLocal类:该类用于存放从属于某一线程的变量。ThreadFactory接口:这是实现Factory设计模式的基类,你可以用它来创建定制线程。同步机制:原创 2021-01-18 23:09:20 · 99 阅读 · 0 评论 -
代码模块设计模式实践以及idea操作
idea1idea支持模块化操作 可以节省代码编写时间2idea可以对命令集成整合javap 编译与汇编的命令代码块1等待线程代码全部执行完毕后才继续走main方法 ,默认两个线程 gc和main线程原创 2021-01-18 12:23:48 · 158 阅读 · 0 评论 -
java面试题2021 - 1- 9总结
volatile1轻量级(因为不保证原子性)同步机制 保证可见行 不保证原子性 禁止指令重排序!2JMM(java内存模型): 规则要求 关于同步的规定 1线程解锁之前,必须吧共享变量的值刷新回驻内存 因为 速度 :硬盘《内存(主内存 硬件8g 16g...)《cpu(缓存 : 各自线程的工作线程) 可见性 : 某个线程修改了值并且写到主内存后 另外一个线程必须马上知道 马上被通知到! 2线程枷锁之前,必须读取主内存的最新值到自己的原创 2021-01-11 21:00:41 · 801 阅读 · 2 评论 -
mqtt协议
发布订阅模式的轻量级协议构建在tcp ip协议之上可以用 少代码 有限带宽 为连接远程设备提供实时可靠的消息服务,在物联网小型设备 移动应用方面有广泛的应用特点1发布订阅模式 可以同时发布信息 也可以同时订阅信息 全双工...原创 2021-01-08 13:25:32 · 100 阅读 · 0 评论 -
dubbo 总结
分布式 rpc框架(远程过程调用)用来维护治理分布式系统中复杂的调用关系!archiitect注册中心 消费者 生产者 container 监控中心**消费者同步调用服务提供者!zookeeper树型目录服务 超时精确设置的优先:方法优先 接口次之 全局再次之消费者设置的优先(级别一样的情况下) 无论是time-out retries(重试 默认轮训) loadblanace actives等都是一样的规则配置多版本可以用version进行配置 实现灰度发布本地存原创 2021-01-08 10:06:08 · 87 阅读 · 0 评论 -
istio
service mresh 使运维更方便(1)治理能力独立 专注于业务 服务治理交给istio 应用程序无感知 服务通信的基础设施层(2)负载均衡 动态路由 灰度发布 故障注入 调用脸 访问日志 监控 限流 ACL 认证 鉴权 k8s eureka cloudfoundry consual k8a(部署 运维 扩所容) + istio(服务治理 负载均衡 服务发现)pilot获取用户自定义规则,和k8s本身的service 部署的时候作为一个pod部署在k8s的集群里 会原创 2020-07-04 20:47:20 · 214 阅读 · 0 评论 -
常用算法和思维归纳
是啥原创 2020-03-31 09:59:14 · 646 阅读 · 0 评论 -
设计模式之我的归纳总结
算法和设计模式在大厂面试比较重要 所以归纳一下 只讲述一些比较有意义的点 其他的很多基础性知识网络上都有可维护性:修改添加代码不引入新BUG 不必花很长的时间 维护代码的工作一般会占很多 所以很重要可读性:代码可读性 评价代码质量最重要的指标之一 也会影响代码可维护性 编码规范、命名是否达意、注释是否详尽、函数是否长短合适、模块划分是否清晰、是否符合高内聚低耦合等等可扩展...原创 2020-03-14 23:15:51 · 327 阅读 · 0 评论 -
JVM面试知识归纳(持续更新)
JVM主要分三块:类加载子系统执行引擎java运行时数据区本地方法栈服务的对象是JVM执行的native方法,而虚拟机栈服务的是JVM执行的java方法栈(虚拟机栈和本地方法栈)、程序计数器是线程私有的很好理解:每个线程执行都需要记录代码执行的位置和所需要的变量已经方法调用(主要是代码的开始地址) 这样当然需要为每一个线程维护自己的栈和计数器了虚拟机栈的每个方法栈桢都包括: java...原创 2020-03-07 20:00:19 · 142 阅读 · 0 评论 -
springboot源码分析之--自动配置
看springboot的pom依赖的parent是spring boot starter parent(1)首先是资源过滤 过滤application配置文件 推荐使用yml(2)其次是pluginsmanagement 插件管理 配置了依赖环境dependency 所以在写自己的dependency的时候不用写版本**springbootapplication**元注解...原创 2020-03-01 14:13:22 · 136 阅读 · 0 评论 -
JUC编程归纳
主要关注concurrent atomic locks function包并发和并行是不一样的 并发主要目的是为了充分地利用单核CPU的资源 而并行是在多核CPU下的概念java线程状态 :new runnable blocked waiting(等待) time_waiting(延迟等待) terminatedwaiting:不占有锁 不占有cpu资源sleep:占有锁 不占有cpu...原创 2020-02-10 14:27:08 · 183 阅读 · 0 评论 -
rpc和http
rpc:1处在会话层 可以用http协议 也可以用tcp2使用自定义的tcp协议 二进制传输 可以让请求报文体积小 提高传输效率3高校二进制传输4自带负载均衡5服务治理可以自动进行通知6主要用于公司内部的网络 性能消耗比较少http:1性能消耗相对大一点(字节大小和序列化消耗) 一般通过json 实现2需要配合nginx来实现负载均衡!3主要用于外界的网络环境...原创 2020-02-04 10:26:25 · 113 阅读 · 0 评论 -
负载均衡算法简单归纳
1简单轮询2随机算法3源地址哈希法4加权轮询法:在简单轮训的基础上加上权重(返回一个由此算法得来的列表进行轮训)5加权随机法:6最小连接法:轮询服务器列表,返回连接数量最少的Ribbon 客户端负载均衡:客户端会有一个服务器地址列表,在发送请求前通过负载均衡选择一个服务器(所有客户端节点都有一份从注册中心获得的负载均衡后的服务器列表) 微服务中RPC远程调用实现本地服务负载均衡 例如d...原创 2020-02-04 10:08:55 · 92 阅读 · 0 评论 -
mysql语句执行顺序
from 确定你锁筛选的表 ----笛卡尔积on 过滤掉不符合条件的 外连接 补充被on消除掉的某些数据 用null表示where过滤 group by分组having 过滤select 选择出我们所要的内容DISTINCT 增加唯一索引去除重复数据ORDER BY 排序LIMIT分页注意的是 每一步都会在上一步的基础上生成一个临时表 再往下进行(...原创 2020-01-31 16:49:02 · 138 阅读 · 0 评论 -
mysql for update
在对mysql 进行for update加锁的时候:有索引 例如主键id ------ 行锁没有索引 例如 like <> 或者根本没枷锁-----------表锁没有查到数据当然不加锁原创 2020-01-30 15:00:48 · 171 阅读 · 0 评论 -
java设计模式简单大白话归纳
1工厂模式:用来创建单一产品( 生产产品的接口只有一个方法 通过不用的实现生产不同的产品)用统一接口来完成生产类的方法 具体对象通过具体实现类来产生类对象的方法也可以用接口定义 具体功能也是通过具体实现类产生2抽象工厂模式:和工厂模式的区别就是用来创建多个产品(生产产品的接口可以有很多方法 每一个来生产不同的产品 不同的实现类区别在于各个产品又有不同分类)3单利模式:懒汉:原始标准版 ...原创 2020-01-25 11:15:51 · 425 阅读 · 0 评论 -
Lock和syncronized
ReentrantLock是可重入锁(获取多少次锁就要释放多少锁) 公平/非公平都可以synchronized 可重入 非公平:配合常量池中的ACC_SYNCHRONIZED标识位 通过竞争监视器或者说管程monitor(两个原语monitorenter monitorexit 同一个时刻,只有一个 进程/线程能进入monitor中定义的临界区——》 monitor 能够达到互斥的效果)来实...原创 2020-01-22 14:44:52 · 305 阅读 · 0 评论 -
linux内核参数配置(持续更新)
我们可以在sysctl.conf中看到linux的配置 这里可以修改内核参数来达到功能优化的目的**关闭ipv6:**首先可以通过ifconfig查看是否开启了ipv6(ifconfig route netstat 命令不多说)运行netstat会发现没有相关的ipv6了net.ipv6.conf.all.disable_ipv6 = 1net.ipv6.conf.default.d...原创 2020-01-18 11:40:45 · 793 阅读 · 0 评论 -
spring和springMVC容器初始化过程
spring初始化过程:入口点是<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>在这个监听器中创建容器 放到ServletContext中,key是ROOT...原创 2020-01-18 11:16:41 · 766 阅读 · 2 评论 -
dom4j解析xml
1利用SaxReader对象读取xml文件 创建Document对象2document.getRootElement(); 返回根元素对象 root3 root 的elements(标签名)获取子元素 返回一个Element的LIst4遍历每一个Element...原创 2019-04-21 11:39:25 · 89 阅读 · 0 评论 -
java石英调度Quartz
可以在固定的时间执行指定的任务1.基本格式 用空格分开的7个部分 ①秒:0~59 ②分钟:0~59 ③小时:0~23 ④日期:0~31 ⑤月:0~11 ⑥星期:1~7(1为星期日) ⑦年份:1970~2099可选2.设置方式 ①指定具体值:5 ②连续区间:9-12 ③有间隔的区间:8-18/4 斜杠后面为间隔跨度 ④具体值的列表:1,3,5 ⑤通配符 [1]*...原创 2019-06-24 14:13:47 · 391 阅读 · 0 评论 -
二进制权限码验证方案
假设给你用户的权限码数组:[xxxx,aaaa,cccc]每一个资源都有权限码 权限位当访问该资源的时候 获取资源的权限位 作为下标提取用户权限码数组中的权限码将此权限码与上资源的权限码 如果结果非零 用户就有权限访问该资源~...原创 2019-06-24 13:47:51 · 460 阅读 · 0 评论 -
图表生成之JFreeChart
简单的demopublic class JFreeChart { public static void main(String[] args) throws IOException { DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue("字段1", 2500); dataset.setVa...原创 2019-06-24 13:35:32 · 176 阅读 · 0 评论 -
EXCEL文件操作之POI demo
可以帮助我们读取外部excel文件 或者把java程序中的数据写入到excel文件中 基本上在excel中可以使用的操作在POI中都可以操作public class POIdemo { public static void main(String[] args) throws FileNotFoundException, IOException { HSSFWorkbook workb...原创 2019-06-24 13:26:31 · 183 阅读 · 0 评论 -
MD5基本算法
手动实现MD5 跟官方的MD5加密结果一致package com.atguigu.survey.md5;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;public class Md5Test { public static void main(String[] ar...原创 2019-06-24 12:10:23 · 136 阅读 · 0 评论 -
FreeMarker使用归纳
一般用来做界面 配置文件 还可以生成源代码(xml jsp也可以)比jsp运行效率高(因为不需要转换成java到class 是直接对模版进行解析 解析差值 把值插入然后返回页面数据)springMVC使用时候需要的两个配置 将FreeMarkerViewResolver 放在InteralResourceViewResolver前面(order是0优先级最高 InteralResourceVie...原创 2019-07-09 11:30:57 · 130 阅读 · 0 评论 -
Memached的session共享使用
在tomcat1和2中的context配置 使得他们链接同一个Memached服务器还需要在tomcat lib目录下放相应jar包原创 2019-07-09 11:48:26 · 198 阅读 · 0 评论 -
BeanUtils的使用
在我们接收请求参数的时候 可以直接使用BeanUtils来一次性封装好你要的pojo对象(1)创造一个你要的新的bean对象(2)调用BeanUtils.populate(1中的对象,request.getParameterMap());(3)就会通过map键中对应的key的set方法进行注入(跟你的pojo的属性名并无关系)我们可以自己封装成自己的utils 使用范型方法来简化开发...原创 2019-06-28 11:01:48 · 102 阅读 · 0 评论 -
spring和springMVC的关系
spring是监听器创建的 相对于springMVC是父容器springMVC是核心控制器dispartcherServlet创建的web.xml在初始化的时候的顺序 :1监听器 2filter过滤器 3servlet所以spring父容器先初始化好 所以spring容器中的servie就创建好 相应的dao也被注入然后才初始化springMVC容器 在controller中将ser...原创 2019-07-04 11:28:40 · 172 阅读 · 0 评论 -
Activity流程框架
主要的六个概念:流程定义 流程实例 流程变量 任务 起始结束 网关ProcessEngine 线程安全 是Activiti5的核心,所有的服务都需要通过ProcessEngine来创建Activiti5的持久化层采用的是Mybatis通过ProcessEngine创建的7个service:repositoryService(持久化服务) 与数据库进行交互的runtimeService(...原创 2019-07-12 12:47:37 · 3181 阅读 · 0 评论 -
tymeleaf基础使用归纳
1 th:text="{域}" 当作标签的属性 进行 取值 2 th:each="mingcheng:${域}" th:text="mingcheng.属性名" 当作标签的属性 进行循环取值 3 th:if="${mingcheng=='...'}" 判断结果进行显示 4 th:include="页面1::页面1内的fragment" 引入页面(引...原创 2019-07-23 17:55:56 · 269 阅读 · 0 评论 -
通用mapper归纳
不再需要写mapper文件 替我们生成常用的增删改查的sql语句注意:是根据pojo类生成的sql语句 默认规则是pojo类首字母小写作为表名(可以用@Table(name = )注解改名)使用前的配置:需要配置tk包下定义的MapperScannerConfigurer 写一个mapper接口 继承 Mapper 范型是你的pojo 即可!~@column注解: 默认规则是驼...原创 2019-06-24 11:57:22 · 378 阅读 · 0 评论 -
ThreadLocal总结
基本使用:1可以像map一样存取数据 key是当前的线程对象2一般情况Threadlocal类实例都是static类型3在ThreadLocal对象实例中保存的数据 只要线程销毁了,虚拟机JVM就会自动释放对应的数据1set方法 2get方法都不需要参数 参数就是当前线程...原创 2019-04-27 20:08:12 · 116 阅读 · 0 评论 -
listener监听器归纳
**监听器**1 ServletContextListener:监听ServletContext对象的创建和销毁 编写一个类实现ServletContext接口 实现监听器的回调方法contextInitialized 和 contextDestroyed方法 web.xml中配置这个监听器 <listener><listener-class><...原创 2019-04-26 19:40:56 · 185 阅读 · 0 评论 -
Filter过滤器归纳
Filter过滤器**filter可以对请求进行拦截,对响应进行过滤:虽然jsp可以使用代码验证用户是否登录,但是像一些html页面以及图片的访问权限只能通过filter进行控制1创建一个类实现Filter接口2实现doFilter方法进行请求的拦截3web.xml中配置拦截地址(配置的标签跟Servlet的一样 /*表示工程名下的所有资源) 注意 filter里面成功了话要调用 ...原创 2019-04-26 19:38:31 · 348 阅读 · 0 评论 -
表单重复提交问题解决以及谷歌kaptcha验证码的实现
一般造成表单多次重复提交的原因可以归纳成一下三个:1如果使用转发的话 用户可以多次刷新页面导致多次的重复请求–使用重定向解决2因为网络延迟 用户点击完后没反应 导致多次重复点击 网络通畅后会收到很多次请求~3用户成功提交后 回退浏览器记录 重新提交~为了解决这几个重复提交的问题 可以用验证码解决 我们使用谷歌kaptcha验证码来讲解具体实现过程1导入kaptcha jar包 使...原创 2019-04-26 14:52:00 · 469 阅读 · 0 评论 -
JDBC总结
首先介绍下JDBC是java写的,跟数据库建立Socket连接,采用具体网络协议把JDBC转换为直接的网络调用最基本的JDBC使用1获取驱动 Driver driver = new OracleDriver();2获取连接 Connection conn = driver.connect(url,info) url是连接地址 info用户名密码是properties类型...原创 2019-04-16 23:28:34 · 185 阅读 · 0 评论