自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(95)
  • 资源 (4)
  • 收藏
  • 关注

原创 什么是ORM?为啥要是用ORM?

了解orm,先了解以下概念:什么是“持久化”持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。什么是“持久层”持久层(Persistence Layer),即专注于实现数据持久化应用领域的某个特定系统的一个逻辑层面,将数据使用者...

2018-08-01 15:22:06 41940 2

原创 Zookeeper Watcher机制--数据变更通知

watcher event异步发送watcher的通知事件从server发送到client是异步的,这就存在一个问题,不同的客户端和服务器之间通过socket进行通信,由于网络延迟或者其它因素导致客户端在不同的时刻监听到事件,由于zookeeper本身提供了ordering guarantee,即客户监听事件后,才会感知它监视的znode发生了变化,所以我们只用zookeeper不能期望能够监控到节点每次的变化。而当client重新连接时,如果需要的话,所有先前注册过的watch,都会被重新注册。

2023-10-26 20:42:23 538

原创 四种类型的数据节点Znode

临时节点的生命周期与客户端会话绑定,一旦客户端会话失效(客户端与zookeeper连接断开不一定会话失效),那么这个客户端创建的所有临时节点都会被移除。基本特性同持久性节点,只是增加了顺序属性,节点名后边会追加一个由父节点维护的自增整形数字。基本特性同临时节点,增加了顺序属性,节点名后会增加一个由父节点维护的自增整形数字。3、PERSISTENT_SEQUENTIAL-持久顺序节点。4、EPHEMERAL_SEQUENTIAL-临时顺序节点。2、EPHEMERAL-临时节点。

2023-10-26 20:20:55 131

原创 ZAB协议

当整个zookeeper集群刚刚启动活鹅Leader服务器宕机、重启或者网络故障导致不存在过半的服务器与Leader服务器保持正常通信时,所有进程(服务器)进入崩溃恢复模式,首先选举产生新的Leader服务器,然后集群中的Folloler服务器开始与新的Leader服务器进行数据同步,当集群中超过过半机器与该Leader服务完成数据同步之后,退出恢复模式进入消息广播模式,Leader服务器开始接收客户端的事务请求生成事务提案进行事务请求处理。ZAB协议包括两种基本的模式:崩溃恢复和消息广播。

2023-10-26 20:14:11 103

原创 简述Mybatis的插件运行原理,以及如何编写一个插件

Mybatis仅可以编写针对ParameterHandler、ResultSetHabdler、StatementHandler、Executor这4种接口的插件,Mybatis使用JDK的动态代理,为需要拦截的接口生产代理对象以实现接口方法拦截功能,每当执行这4种接口对象的方法时,就会进入拦截方法,具体就是InvocationHandler的invoke()方法,当然,只会拦截那些你指定需要拦截的方法。

2023-10-26 19:53:31 81

原创 Zookeeper面试题(一)

Zookeeper面试题

2023-06-30 10:25:46 59

原创 MyBatis面试题 (二)

MyBatis面试题 - 简述Mybatis的插件运行原理,以及如何编写一个插件

2023-06-25 21:22:56 406

原创 MyBatis面试题

2、对性能的要求很高,或者需求变化较多的项目,如互联网项目。Mybatis将是不错的选择。1、Mybatis专注于sql本身,是一个足够灵活的DAO层解决方案。5、MyBatis与Habernate有些些不同。一 MyBatis面试题。

2023-06-19 20:29:21 231

原创 Ribbon-负载均衡

简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起,Ribbon的客户端组件提供一系列完整的配置项,如:连接超时、重试等等。简单的说,就是在配置文件中列出LoadBalancer(简称LB:负载均衡)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询、随机连接等等)去连接这些机器,我们也很容易使用Ribbon实现自定义的负载均衡。ribbon是什么?ribbon能干嘛?

2023-06-19 14:24:10 500

原创 作为服务注册中心,Eureka比Zookeeper好在哪里

问题在于,选举leader的时间太长,30-120s,且选举期间整个zk集群都是不可用的,这就导致在选举期间注册服务瘫痪。在云部署的环境下,因为网络问题始终使得zk集群失去master节点是较大概率会发生的时间,虽然服务最终能够恢复,但是漫长的选举时间导致的注册长期不可用是不能容忍的。Eureka各个节点都是平等的,几个节点挂掉不会影响正常节点的工作,剩余的几点依然可以提供注册和查询服务。著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性),A(可用性),P(分区容错性)。

2023-06-17 18:49:06 727

原创 Synchronize与Lock的对比

1、Lock是显示锁(手动开启和关闭,别忘记关闭),synchronize是隐式锁,出了所用域自动释放。2、Lock只有代码块锁,synchronize有代码块锁和方法锁。3、使用Lock锁,JVM将花费较少的时间来调度线程,性能更好。并且具有更好的扩展性(提供更多的子类,比如:ReentrantLock)4、优先使用顺序:Lock>同步代码块(方法体中的代码块,分配了相应的资源)>同步方法(在方法体之外)...

2021-11-30 20:27:42 511

原创 产生死锁的四个必要条件

1、互斥条件:一个资源每次只能被一个进程使用。2、请求与保持条件:一个进程因请求资源而阻塞时,对已获得资源保持不放。3、不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺。4、循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。...

2021-11-30 20:00:48 855

原创 column下划线命名&&返回java实体是驼峰命名

#配置返回数据库(column下划线命名&&返回java实体是驼峰命名),自动匹配无需as(没开启这个,SQL需要写as: select user_id as userId)map-underscore-to-camel-case: true

2021-11-03 09:42:59 239

原创 ElasticSearch-ik分词器

一、ik_smart 最少切分,一个词二、ik_max_word 最细粒度切分,一个词的所有分词。

2021-10-13 15:57:40 106

原创 ES的bool查询 (must、should)

ElasticSearch之bool1、must (must字段对应的是个列表,也就是说可以有多个并列的查询条件,一个文档满足各个子条件后才最终返回)2、should (只要符合其中一个条件就返回)3、must_not (与must相反,也就是说可以有多个并列的查询条件,一个文档各个子条件后才最终的结果都不满足)4、filter(条件过滤查询,过滤条件的范围用range表示gt表示大于、lt表示小于、gte表示大于等于、lte表示小于等于)bool查询总结must:与关系,.

2021-10-09 20:18:45 24077

原创 ES学习-match

ElasticSearch-match 查询相关总结1、match:返回所有匹配的分词。2、match_all:查询全部。3、match_phrase:短语查询,在match的基础上进一步查询词组,可以指定slop分词间隔。4、match_phrase_prefix:前缀查询,根据短语中最后一个词组做前缀匹配,可以应用于搜索提示,但注意和max_expanions搭配。其实默认是50.......5、multi_match:多字段查询,使用相当的灵活,可以完成match_phrase和m

2021-10-09 20:01:29 2000

原创 线程优先级

线程的优先级用数字表示,范围1-10。Thread.MIN_PRIORITY = 1 ;Thread.MAX_PRIORITY= 10;Thread.NORM_PRIORITY = 5;获取优先级getPriority();设置优先级setPriority(int a);注意:1、优先级的设定在线程启动start()调度前set;2、优先级低只是意味这个获得调度的概率低,并不是优先级低就不会被调用了,以CPU的调度为准...

2021-09-11 10:34:47 254

原创 java.lang.Thread.State 线程的状态

1、NEW尚未启动的线程处于此状态2、RUNNABLE在Java虚拟机中执行的线程处于此状态3、BLOCKED被阻塞等待监视器锁定的线程处于此状态4、TIMED_WAITING正在等待另一个线程执行动作到达指定等待时间的线程处于此状态5、TERMINATED已退出的线程处于此状态...

2021-09-11 09:26:34 396

原创 Thread--run()与start()区别

1、调用 run方法时,只有主线程一条路径,先执行run,后执行main2、调用start方法时,多条路径,并行交替执行代码示例1:结果1:代码示例2:结果2:

2021-09-08 18:26:40 107

原创 AtomicLong 原子操作

AtomicLong是作用是对长整形进行原子操作。在32位操作系统中,64位的long 和 double 变量由于会被JVM当作两个分离的32位来进行操作,所以不具有原子性。而使用AtomicLong能让long的操作保持原子型。创建具有初始值 0 的新 AtomicLongprivate AtomicLong sendCount = new AtomicLong(0);创建具有给定初始值10的新 AtomicLongprivate AtomicLong sendCount10 = .

2021-08-30 10:24:55 517

原创 Linux常用命令记录

-- redis中没有版本号 上下5行cat bme-platform-2021-03-04-0.log | grep -C 5 'redis中没有版本号'-- 查询实时日志tail -f bme-platform.log-- 查询筛选过滤条件cat -n bme-yf-gateway.log|grep 'HC602020051012' |more-- 按页翻找less bme-yf-gateway.log就可以用less命令第一步:打开日志文件 less sig...

2021-08-24 11:05:08 94

原创 自定义注解--

一、@Inherited:说明子类可以继承父类中的该注解二、@Retention:注解的保留位置@Retention(RetentionPolicy.SOURCE)这种类型的Annotations只在源代码级别保留,编译时就会被忽略,在class字节码文件中不包含。@Retention(RetentionPolicy.CLASS)这种类型的Annotations编译时被保留,默认的保留策略,在class文件中存在,但JVM将会忽略,运行时无法获得。@Retention(

2021-08-18 10:10:37 89

原创 自定义注解之----@Target

自定义注解之----@Target 注解的作用目标@Target(ElementType.TYPE)——接口、类、枚举、注解@Target(ElementType.FIELD)——字段、枚举的常量@Target(ElementType.METHOD)——方法@Target(ElementType.PARAMETER)——方法参数@Target(ElementType.CONSTRUCTOR) ——构造函数@Target(ElementType.LOCAL_VARIABLE)——局部变量@Ta

2021-08-18 10:02:58 1027

转载 SQLServer新建用户授权

二、操作步骤1.首先进入数据库级别的【安全性】-【登录名】-【新建登录名】(图1:新建登录名)2.在【常规】选项卡中,如下图所示,创建登陆名,并设置默认的数据库(图2:设置选项)3.在【用户映射】选项卡中,如下图所示,勾选需要设置的数据库,并设置【架构】,点击【确认】按钮,完成创建用户的操作(图3:选择对应数据库)4.现在我们就可以对TestLog数据库中的User表进行权限的设置了,【表】-【 属性】...

2021-08-04 14:54:17 4031

原创 Git学习——从无到有

目录Git 基本介绍 Git 介绍 Git 与 SVN 区别 Git 参考文档 Git 安装配置 Git 安装 Git 环境配置 Git 免密登录 Git 创建仓库 方式一 Git clone 方式二 Git init Git 分支管理 Git 原理分析 Git 基本结构 Git 工作流程。 Git 常用命令 基本命令 Git cherry-pick 命令 Git fetch 命令 git rebase 命令 git mer

2021-05-26 14:11:16 146

转载 10w行级别数据的Excel导入优化记录

需求说明项目中有一个 Excel 导入的需求:缴费记录导入由实施 / 用户 将别的系统的数据填入我们系统中的 Excel 模板,应用将文件内容读取、校对、转换之后产生欠费数据、票据、票据详情并存储到数据库中。在我接手之前可能由于之前导入的数据量并不多没有对效率有过高的追求。但是到了 4.0 版本,我预估导入时Excel 行数会是 10w+ 级别,而往数据库插入的数据量是大于 3n 的,也就是说 10w 行的 Excel,则至少向数据库插入 30w 行数据。因此优化原来的导入代码是势在必行的。

2021-04-15 11:17:02 220

转载 消息队列——如何保证消息的可靠性传输?

面试题如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题?面试官心理分析这个是肯定的,用 MQ 有个基本原则,就是数据不能多一条,也不能少一条,不能多,就是前面说的重复消费和幂等性问题。不能少,就是说这数据别搞丢了。那这个问题你必须得考虑一下。如果说你这个是用 MQ 来传递非常核心的消息,比如说计费、扣费的一些消息,那必须确保这个 MQ 传递过程中绝对不会把计费消息给弄丢。面试题剖析数据的丢失问题,可能出现在生产者、MQ、消费者中,咱们从 RabbitMQ 和 Kafka 分别

2021-04-15 11:15:24 502

转载 消息队列——如何保证消息不被重复消费?

面试题如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性?面试官心理分析其实这是很常见的一个问题,这俩问题基本可以连起来问。既然是消费消息,那肯定要考虑会不会重复消费?能不能避免重复消费?或者重复消费了也别造成系统异常可以吗?这个是 MQ 领域的基本问题,其实本质上还是问你使用消息队列如何保证幂等性,这个是你架构里要考虑的一个问题。面试题剖析回答这个问题,首先你别听到重复消息这个事儿,就一无所知吧,你先大概说一说可能会有哪些重复消费的问题。首先,比如 RabbitMQ、Roc

2021-04-15 11:07:21 359

转载 消息队列——2、如何保证消息队列的高可用

面试题如何保证消息队列的高可用?面试官心理分析如果有人问到你 MQ 的知识,高可用是必问的。上一讲提到,MQ 会导致系统可用性降低。所以只要你用了 MQ,接下来问的一些要点肯定就是围绕着 MQ 的那些缺点怎么来解决了。要是你傻乎乎的就干用了一个 MQ,各种问题从来没考虑过,那你就杯具了,面试官对你的感觉就是,只会简单使用一些技术,没任何思考,马上对你的印象就不太好了。这样的同学招进来要是做个 20k 薪资以内的普通小弟还凑合,要是做薪资 20k+ 的高工,那就惨了,让你设计个系统,里面肯定一

2021-04-14 16:28:28 99

转载 消息队列——1、为什么使用消息队列

面试官心理分析其实面试官主要是想看看:第一,你知不知道你们系统里为什么要用消息队列这个东西?不少候选人,说自己项目里用了 Redis、MQ,但是其实他并不知道自己为什么要用这个东西。其实说白了,就是为了用而用,或者是别人设计的架构,他从头到尾都没思考过。没有对自己的架构问过为什么的人,一定是平时没有思考的人,面试官对这类候选人印象通常很不好。因为面试官担心你进了团队之后只会木头木脑的干呆活儿,不会自己思考。第二,你既然用了消息队列这个东西,你知不知道用了有什么好处&坏处?你要是没考

2021-04-14 16:10:43 165

原创 Linux下如何查看版本信息, 包括位数、版本信息以及CPU内核信息、CPU具体型号

1.uname -a (Linux查看版本当前操作系统内核信息)2.cat /proc/version (Linux查看当前操作系统版本信息)3.cat /etc/issue 或cat /etc/redhat-release(Linux查看版本当前操作系统发行版信息)4.cat /proc/cpuinfolscpu(Linux查看cpu相关信息,包括型号、主频、内核信息等)5.getconf LONG_BIT (Linux查看版本说明当前CPU运行在32bit模...

2020-11-24 16:24:24 2458

原创 Linux yum时报错 14: PYCURL ERROR 6 - “Couldn‘t resolve host ‘mirrorlist.centos.org‘“

今天在linux环境通过yum安装软件报了以下错误: [root@localhost ~]#yum -y install gcc Loadedplugins:fastestmirror,security Loadingmirrorspeedsfromcachedhostfile Couldnotretrievemirrorlisthttp://mirrorlist.centos.org/?release=6&arch=x86_64&...

2020-08-14 22:01:55 707

原创 ZK初时——Zookeeper急速入门与集群环境搭建

进行Zookeeper集群的环境搭建; Zookeeper基础知识、体系结构、数据模型 Zookeeper是一个类似linux、hdfs的树形文件结构,zookeeper可以用来保证数据在(Zookeeper)集群之间的数据的事务性一致性,zookeeper也是我们常说的CAP理论中的CP(强一致性); Zookeeper有一个概念叫watch(也称之为事件),是一次性触发的,当watch监视的数据发生变化时,通知设置了该watch的client端,即watcher实例对象(用于改变节点的变化

2020-05-16 12:22:01 186

原创 ZK初时——Zookeeper的工作原理

通俗来讲,Zookeeper 的核心是原子广播,这个机制保证了各个 server 之间的同步。实现这个机制的协议叫做 Zab 协议。Zab 协议有两种模式,它们分别是恢复模式和广播模式。当服务启动或者在领导者崩溃后,Zab 就进入了恢复模式,当领导者被选举出来,且大多数 server 的完成了和 leader 的状态同步以后,恢复模式就结束了。状态同步保证了 leader 和 server 具有相同的系统状态。一旦 leader 已经和多数的 follower 进行了状态同步后,他就可以开始广播

2020-05-16 12:19:29 239

原创 使用SecureCRT连接VM中的Linux

使用SecureCRT连接步骤:1.首先打开虚拟机,点击左上角的编辑,再点击虚拟网络编辑器(已经进行虚拟网络编辑的忽略此步骤,直接进行第二步)点击VMnet8网络,点击更改设置,此步骤需要管理员权限点击NAT模式,然后将下面两个勾选项都勾选上去,子网ip设置为192.168.0.0,子网ip最后一个字段必须填为0,填写子网掩码:255.255.255.0点击NAT设置,将网关设置为192.168.0.1,点击确定,再点击应用然后打开网络适配器,选择VMnet8,点击属性,再双击协议

2020-05-13 22:09:58 495

转载 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构

1、说一说Servlet生命周期(非常重要)Servlet生命周期包括三部分:初始化:Web容器加载servlet,调用init()方法 只执行一次处理请求:当请求到达时,运行其service()方法。service()自动调用与请求相对应的doXXX(doGet或者doPost)方法。 可执行多次销毁:服务结束,web容器会调用servlet的distroy()方法销毁servl...

2018-12-13 16:03:50 2041

原创 简单的谈一下SpringMVC的工作流程

       1.从第一点开始,请求的开始当然来源的用户访问的url,之后SpringMVC的工作正式开始,就好比一个人进城,必须要先经过城门才能进去,请求也是一样,他必须先经过一个叫做Dispatcher Servlet的前端控制器,   2.之后,你总要有工作地点吧(请求需要工作),可是不认路啊(请求需要在哪里被分析),所以你需要先去找到地图,然后在地图上找到地点,在SpringMVC中,...

2018-12-13 14:42:24 1798

原创 面试题——MVC简介

       MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中...

2018-12-10 20:16:54 677

原创 面试题——sql的left join 、right join 、inner join之间的区别

 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 。 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录。 inner join(等值连接) 只返回两个表中联结字段相等的行。...

2018-12-10 20:15:23 3792

原创 面试题——Java多线程实现方式

 Java多线程实现方式主要有四种:继承Thread类、实现Runnable接口、实现Callable接口通过FutureTask包装器来创建Thread线程、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,后两种是带返回值的。...

2018-12-10 20:13:55 275

maven:modbus.jar modbus4j

maven:modbus.jar modbus4j

2023-08-10

SecureCRT_FX_8.1.7z

SecureCRT和SecureFx的安装以及注册8.1版本 SecureCRT和SecureFx安装包

2020-05-16

《Thinking in Java》Java编程思想第四版 pdf格式

适合初学者与专业人员的经典的面向对象叙述方式。 覆盖了所有基础知识,同时论述了高级特性。 详细地阐述了面向对象原理。

2018-08-01

jsontools-core-1.7-sources.jar

jsontools实现java对象与json值之间互相转换,java对象转json的jar包 jsontools实现java对象与json值之间互相转换,java对象转json的jar包 v

2018-08-01

jackson-mapper-asl-1.9.12.jar

jackson插件用于操作json数据,性能比其他json插件效率更高,可以用于将任何对象转换成json字符串。更高效,更容易,再也不用拼字符串了!

2018-08-01

空空如也

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

TA关注的人

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