- 博客(66)
- 资源 (1)
- 收藏
- 关注
原创 【每天8题】JVM高频面试题
一、哪些是GC Roots ?在虚拟机栈(栈帧中的本地变量表)中引用的对象,譬如各个线程被调用的方法堆栈中使用到的参数、局部变量、临时变量 在方法区中常量引用的对象,譬如字符串常量池(String Table)里的引用 在方法区中类静态属性引用的对象,譬如java类的引用类型静态变量 在本地方法栈中JNI(即通常所说的的native方法)引用的对象 Java虚拟机内部的引用,如基本数据对应的Class对象,一些常驻的异常对象(比如NullpointException、outofMemoryErr
2021-12-28 15:50:23
580
原创 【每天8题】JVM高频面试题
1、对象在哪块内存分配?数组和对象在堆内存分配,某些对象没有逃逸出方法,可能被优化为在栈上分配2、谈谈JVM中的常量池a.字符串常量池:存放在堆中,包括String对象执行intern()方法后存的地方,双引号直接引用的字符串b.运行时常量池:constant_pool,JVM定义的概念3、谈动态年龄判断a.这里涉及到-XX:TargetSurvivorRatio参数,Survivor区的目标使用率默认为50,即survivor区对象目标使用率为50%b.surv...
2021-12-27 15:11:40
552
转载 oracle 数据库优化
1、I/O优化降低HWM:尽量用TRUNCATE代替DELETE、重构表 减少因内存不足导致的等待:减少union、distinct、减少orderby,这些占内存 减少网络传输等待:减少dblink,将要访问的远程的表接过来一次,以后直接访问这个表2、执行计划(数据库访问数据的路径)执行计划简单的讲就是数据库如何访问数据的路径,从数据库访问到一条数据的方法有多种,执行计划会从众多方案中通过各种比较选出开销最小(CBO模式)一个访问路径,它会因很多因素的改变受到影响。oracle访问数据的
2020-07-20 13:21:17
398
转载 hibernate经典问题
一、hibernate 中对象的三种状态瞬时态(临时态、自由态):不存在持久化标识OID,尚未与 Hibernate Session 关联对象, 被认为处于瞬时态,失去引用将被 JVM 回收持久态:存在持久化标识 OID,与当前 session 有关联,并且相关联的 session 没有关闭 , 并且事务未提交脱管态(离线态、游离态):存在持久化标识 OID,但没有与当前 session 关联,脱管状态 改变 hibernate 不能检测到二、hibernate 的缓存机制Hi...
2020-07-20 12:51:26
227
转载 kafka相关
转载:https://blog.youkuaiyun.com/qq_28900249/article/details/90346599
2020-07-20 12:36:31
144
转载 MQ相关
转载https://blog.youkuaiyun.com/ThinkWon/article/details/104588612?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.none
2020-07-20 12:33:34
127
转载 dubbo入门
由于篇幅过长,软链接转载:https://baijiahao.baidu.com/s?id=1651785365950094625&wfr=spider&for=pc1、概念:Dubbo 是一款高性能 Java RPC 架构。它实现了面向接口代理的 RPC 调用,服务注册和发现,负载均衡,容错,扩展性等等功能。2、结构:Dubbo 大致上分为三层,分别是:业务层RPC 层Remoting 层3、dubbo调用工作流工作流涉及到服务提供者(Provider)
2020-07-20 12:26:12
157
原创 详解抽象类和接口的区别
1、抽象类要被子类继承,接口要被类实现2、接口只能做方法声明,抽象类既能做方法声明,也可以做方法实现3、接口里的定义的变量只能是公共的静态常量,而抽象类是中的变量是普通变量4、接口是设计的结果,抽象类是重构的结果。5、抽象类和接口都是用来抽象具体对象的,但是接口的抽象级别最高。6、抽象类可以有具体的方法和属性,接口只能有抽象方法和不可变常量7、抽象类主要用来抽象类别,接口主要用来抽象功能...
2020-07-20 11:24:35
185
原创 数据库的存储过程了解一下
存储过程:就是一些编译好了的 sql 语句,这些 SQL 语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了。 优点: 1、存储过程因为 SQL 语句已经预编译过了,因此运行的速度比较快。 2、存储过程在服务器端运行,减少客户端的压力。 3、允许模块化程序设计,就是说只需要创建一次过程,以后在程序中就可以调用该过程任意次,类似方法的复用。 4、减少网络流量,客户端调用存储过程只需要传存储过程名和相关参数即可,与传输
2020-07-20 11:12:30
564
原创 elasticsearch的分布式架构基本原理
首先,es 的设计理念就是分布式搜索引擎,底层还是基于lucene的核心思想就是在多台机器上启动多个es进程实列,组成一个es集群。es中存储数据的基本单位是索引,假设你要在es中存储数据,首先就要在es中创建一个索引,所有的数据都写到这个索引里面去,一个索引差不多相当于mysql里面的一张表。index->type->mapping->document->filed1、index 相当于mysql里的一张表2、type:一个index里面可以有很多type,每个
2020-07-14 11:54:55
363
原创 详谈Mybatis和Hibernate 的区别
Mybatis是一个不完全的ORM(对象关系映射)框架,因为它需要程序员自己编写sql语句,而Hibernate是一个完全的ORM框架。Mybatis学习门槛低,简单易学,而Hibernate较为复杂,不易精通。Mybatis可以直接编写原生态的sql,可以严格控制sql执行性能,进行更细致的sql优化,灵活度高,非常适合对关系型数据模型不高的软件开发,例如互联网软件,企业运营类软件,而Hibernate不能编写sql语句,灵活度不高,但对于关系模型要求高的软件,可以节省很多代码的开发,提高..
2020-06-03 13:04:18
230
原创 你不知道的缓存穿透、缓存雪崩、缓存击穿及解决方案
缓存雪崩首先,作为一个缓存系统,查询都是通过key去查询,如果查到不存在的value,那么,将会去后台系统db中查询,一些恶意的请求会故意查询不存在的value,并且请求量很大,这样就对后台系统造成很大的压力,这就是所谓的缓存雪崩。解决方案:方案一:对不存在的key也要进行缓存,设置较短的存活时间或者对key对应的数据insert后进行缓存清理方案二:对一定不存在的key进行过滤,对可能存在的key hash到一个bitmap中,然后,查询的时候通过这个bitmap过滤...
2020-06-03 12:51:20
155
转载 FreeSwitch如何实现会话保持
场景介绍该篇文章主要用于介绍如何使用FreeSWITCH实现通讯系统中常见的多人来电功能。具体场景如下:A与B正在通话中,此时C拨打A/B,FreeSWITCH发送消息给A/B提示有新电话进来,A/B收到提示后,可以选择不予理睬或者保持当前通话接通C。在与C通话完毕后,在还没挂断的情况下,可以继续返回与B/A继续通话。设置拨号方案在文件/usr/local/freeswitch/conf/dialplan/default.xml中增加如下语句:<!-- 用于将来电转入队列中 ..
2020-05-22 09:56:28
1472
原创 Freeswitch
概念:开源的、电话交互平台优势:跨平台 伸缩性 开源的 支持SIP等多种协议 是一个B2BUA,背靠背的用户代理大规模呼叫中心的应用可以提供HA(双击热备方案) 和Cluster(集群)方案解决高可用性和大容量呼叫中心的需求Freeswitch 中实现排队功能的的模块:mod_fifo 先进先出mod_callcenter...
2020-05-22 09:51:40
454
原创 Freeswitch总体架构
由一个稳定的核心core及一些外围模块组成,这些外围模块又根据功能的不同分为Endpoint、codec、Dialplan、ApplicationFS 内部使用线程模型来处理并发请求,每个连接都是在单独的线程中进行处理,不同线程之间通过Metux互斥访问共享资源,并通过消息异步事件进行通信,这种架构能够很高的并发,并且多核环境中运算能均匀的分布到多CPU和单CPU的核心上,fs的绝大部分的功能都在外围的模块中实现,外围模块是可以动态加载的,外围模块通过核心提供的public API 与核心通信,而核心通
2020-05-22 09:51:20
485
原创 FS 呼叫是怎么工作的?
假设主叫号码是1000.被叫号码是10011000的SIP话机作为UAC会发送INVITE 请求到FS的5060端口,该UAS收到正确的INVITE后返回100相应码,注意,这边UAS收到的请求后都要进行鉴权,默认是ACL,但是它默认是不通过的,所以一般会使用密码鉴权,安全性较好,如果鉴权通过,FS就取到了用户信息,接下来电话进入路由阶段,开始查找Diaplan,由于该用户的Content是默认的,路由会首先去default这个dialplan查起,然后找到1001这个用户,执行bridge user/
2020-05-21 01:05:27
672
原创 Freeswitch常见问题
FreeSwitch下配置DID的方法首先介绍下什么是DID? 翻译为中文为“直接向内拨号”,该服务是由电话公司提供的,它使用户能够直接拨打PBX或VOIP系统中的分机号码,而无需求助于总机或自动话务系统。现在要实现这样一个功能 - 通过手机或座机拨打一个号码(例如:01088888888),可以直接联系到VOIP系统(FreeSwitch系统)的1008这个用户。如下图所示:手机/座机 -------------------> 01088888888 --------------->
2020-05-21 00:39:09
1569
转载 sip响应状态码
sip状态码 类型 状态说明临时应答 100 Trying 正在处理中180 Ringing 振铃181 call being forwarder 呼叫正在前向182 queue 排队181* session progress 会话进行会话成功(2XX) 200 OK 会话成功重定向(3XX) 300 multiple 多重选择301 move...
2020-05-21 00:36:29
3636
原创 Freeswitch挂断原因汇总
CAlL_REJECTED: 用户拒绝 USER_BUSY: 用户忙 NO_ANSWER: 用户无应答 NO_USER_RESPONSE: 用户无响应 NORMAL_TEMPORARY_FAILURE: 正常临时失败 TIMEOUT: 超时 NO_ROUTE_DESTINATION: 没有渠道 ORIGINATOR_CANCEL: 取消呼叫 NORMAL_CLEARING: 正常挂断 INCOMPATIBLE_DESTINATION:地址不兼容 UNALLOCATED_NUMBER...
2020-05-21 00:35:15
13255
3
转载 freeswitch callcenter
编译安装freeswitch时需要开启mod_callcenter、mod_fifo的编译,之后在安装完成之后在conf/autoload_configs/modules.conf.xml中去掉该模块相关行的注释。配置方法,编辑conf/autoload_configs/callcenter.conf.xml<configuration name="callcenter.conf" description="CallCenter"> <settings> <...
2020-05-21 00:33:23
811
转载 freeswitch 之ESL开发
一般来说,其他客户端都是通过ESL与fs进行连接的,连接方式分为内联:inbond 以及外联outbond 2种方式。Inbound内联:简单说就是客户端主动通过socket的连接方式向FS进行连接,开启了一个“通道”,通过这个通道客户端不仅可以订阅监听一些时间,也可以通过这个通道进行命令的发送。fs_cli 其实就是一个fs的客户端。Outbond外联:外联是FS主动朝外发送连接请求,每一个通话进入在拨号计划设置后都可以进行外联,这个外连接的存活周期就是这通通话的session存活周期,当然有时.
2020-05-21 00:26:50
2343
转载 freeswitch 与TTS asr对接
TTS对接TTS的对接分为两种方式,因为阿里的TTS只能通过sdk的方式来调用,没有公网URL的方式调用。如果有URL的方式交换机是可以直接调用的。1、URL调用方式,这种方式不需要通过MRCP中间件中转,直接交换机调用URL的方式,这种实现方式需要调用阿里的TTS SDK 做一个HTTP 代理,由于阿里提供的SDK 是生成语音文件的方式,在文件写入的时候直接写到HTTP流中即可;这样通过HTTP传文本就能够获取合成的TTS语音流,在交换机中做一定的缓存,就能减少调用;2、通过...
2020-05-21 00:22:49
2176
原创 FreeSwitch 之SIP
SIP:1、会话初始协议(Session Initiation Protocol)是一个控制发起、修改和终结交互式多媒体会话的信令协议 2、SIP 是一个基于文本的协议 INVITE sip:seven@freeswitch.org.cn SIP/2.0 请求的地址+版本号 -------协议:名称@主机 SIP 中,INVITE 表示发起一次请求,seven@freeswitch.org.cn 为请求的地址,称为 SIP URI,最后...
2020-05-21 00:19:29
432
转载 Freeswitch配置SIP网关拨打外部电话
一、对接方式FreeSWITCH里Gateway(网关)的概念。网关又称协议转换器,通常都是进行协议转换。这里说的网关指的是语音网关,如常用的SIP网关,负责SIP协议和七号信令或ISDN PRI(模拟信号)之间的转换。FreeSWITCH中的网关可以理解成一个SIP代理。通过SIP代理连接语音网关设备或系统,将SIP转换成模拟信号。简化一下过程, FreeSWITCH完成号码的落地工作其简化后的过程大致如下:OPenSIPS —-> FreeSWICTCH —-> 语音网关 —-&
2020-05-21 00:09:51
14065
原创 fs的负载均衡 opensip+keeplive-fs
一、 Keeplive服务介绍KeepLive起初是为了lvs设计的,专门用来监控LVS集群中各个服务节点的状态,后来又加入VRRP的功能,因此除了配合LVS服务以外,也可以作为其他服务(nginx,haroxy)的高可用软件,VRRP是Virtual Router Redundancy Protocol(虚拟路由冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由出现的单点故障问题,它能够保证网络的不间断,稳定的运行。所以keepalive一方面具有LVS cluster nodes health
2020-05-20 23:48:11
571
转载 关于Java 中的反射机制
1、什么是反射机制?在程序运行状态中,对于任意一个类或者对象,都能获取到这个类的属性和方法,这种动态获取信息和动态调用方法的功能就是反射。2、反射的优点:可以在程序运行过程中,控制这些类;可以解耦,提升程序的扩展性;转载:https://blog.youkuaiyun.com/Mr_wxc/article/details/105812627?utm_medium=distribute.pc_feed.none-task-blog-alirecmd-12.nonecase&depth_1-ut
2020-05-19 15:17:15
87
原创 总结:sleep和wait的区别
1、这两个方法来自不同的类,sleep来自于Thread,wait来自于Object;2、sleep方法没有释放锁,而wait方法释放锁,使得其他线程可以使用同步控制块和方法3、wait只能在同步控制块中或者同步控制方法中使用,sleep可以在任何地方使用4、sleep必须捕获异常,wait不需要捕获异常5、sleep方法不依赖于同步器synchronized,但是wait需要依赖synchronized关键字。6、sleep不需要被唤醒(休眠之后推出阻塞),但是wait需要(不指定时间
2020-05-19 14:50:25
353
原创 aop的底层实现,动态代理是如何动态,假如有100个对象,如何动态的为这100个对象代理
AOP:面向切面编程(也叫面向方面),可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术AOP应用范围日志记录,跟踪,优化和监控,事务的处理,持久化,如数据库连接池的管理,系统统一的认证、权限管理等.AOP的实现AOP实现可以分为两种:1.静态织入(AspectJ)在代码的编译阶段植入Pointcut的内容 ,优点是性能好2.动态代理(Spring)在代码执行阶段,在内存中截获对象,动态的插入Pointcut的内容,优点是不需要额外的
2020-05-19 14:36:40
919
原创 你知道线程的阻塞方式吗?
1、joinjoin —— 让一个线程等待另一个线程完成才继续执行。如A线程执行体中调用B线程的join()方法,则A线程被阻塞,直到B线程执行完为止,A才能得以继续执行 2、sleepsleep —— 让当前的正在执行的线程暂停指定的时间,并进入阻塞状态。在其睡眠的时间段内,该线程由于不是处于就绪状态,因此不会得到执行的机会。即使此时系统中没有任何其他可执行的线程,出于sleep()中的线程也不会执行。因此sleep()方法常用来暂停线程执行。前面有讲到,当调用了新建的线...
2020-05-19 10:38:17
4280
转载 线程有哪几种状态?
如上图:状态:新建状态;就绪状态;运行状态;死亡状态;阻塞状态新建状态: 使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程对象就处于新建状态。它保持这个状态直到程序 start() 这个线程。 就绪状态: 当线程对象调用了start()方法之后,该线程就进入就绪状态。就绪状态的线程处于就绪队列中,要等待JVM里线程调度器的调度。 运行状态: 如果就绪状态的线程获取 CPU 资源,就可以执行 run(),此时线程便处于运行状态。处于运行状态的线程最为复杂,它可以..
2020-05-19 10:30:54
954
转载 用hashmap实现redis有什么问题
1.容量问题 hashmap是有最大容量的2.时效问题 redis可以持久化,也可以定时时间 hashmap不可以持久化3.线程并发问题 hashmap不是线程安全的(并且:多线程同时调用hashMap的resize方法后,后续调用get方法时,可能进入死循环)4.功能 redis 有集群,自动保存,自动恢复,还有消息队列,还有跨语言调用。...
2020-05-19 10:26:56
352
原创 你知道nginx的请求转发算法,如何配置根据权重转发
nginx的负载均衡调度算法方式如下:轮询(默认算法):每个请求按时间顺序分配到不同后端服务器,如果某个后端服务器宕机,能自动剔除掉。weight轮询:nginx反向代理接受到客户端收到的请求后,可以给不同的后端服务器设置一个权重值(weight),用于调整不同服务器上请求的分配率,权重数据越大,被分配到请求的几率越大;该权重值,主要是针对实际工作环境中不同的后端服务器配置进行配置的。比如说有些服务器的硬件配置高,比重就会比较大一点。ip_hash:每个请求按照发起客户端ip的hash结果进行匹
2020-05-19 10:23:17
659
原创 整理 分布式锁
锁:Java中的锁可以简单的理解为多线程情况下访问临界资源的一种线程同步机制公平锁、非公平锁、自旋锁、可重入锁、偏向锁、轻量级锁、重量级锁、读写锁、互斥锁为什么要使用分布式锁?(单机)在开发过程中,如果需要对某一个共享变量进行多线程同步访问的时候,使用多线程的相关技术可以完美解决。单机模式----所有的请求都会分配到当前服务器的JVM内部,然后映射为操作系统的线程进行处理!而这个共享变量只是在这个JVM内部的一块内存空间!集群模式---随着业务发展,需要用到集群模式,一个应用部署到.
2020-05-19 10:12:33
167
原创 junit用法,before,beforeClass,after, afterClass的执行顺序
JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation:@Before:初始化方法,对每一个测试方法都执行一次(BeforeClass对多有的方法执行一次)@After:释放资源 对于每一个测试方法都要执行一次(AfterClass对于所有方法执行一次)@Test:测试方法,在这里可以测试期望异常和超时时间@Test(expected=ArithmeticException.class)检查被测方法是否抛出ArithmeticExce..
2020-05-18 10:16:35
1140
转载 谈谈BIO、NIO、AIO
首先来说一下什么是I/O?在计算机系统中I/O就是输入(Input)和输出(Output)的意思,针对不同的操作对象,可以划分为磁盘I/O模型,网络I/O模型,内存映射I/O, Direct I/O、数据库I/O等,只要具有输入输出类型的交互系统都可以认为是I/O系统,也可以说I/O是整个操作系统数据交换与人机交互的通道,这个概念与选用的开发语言没有关系,是一个通用的概念。在如今的系统中I/O却拥有很重要的位置,现在系统都有可能处理大量文件,大量数据库操作,而这些操作都依赖于系统的I/O性能,也就造
2020-05-14 17:40:06
182
转载 讲讲CAP
CAP定理又称布鲁尔定理,是计算机科学家 Eric brewer 提出的,是分布式系统领域的一个定理。若想设计一个分布式架构的系统,掌握这项定理不可或缺。C是Consistency,也就是一致性,在CAP中的是强一致性。A是Availability ,可用性。P是Partition tolerance,分区容错性。在分布式系统中三者不可兼得,只能选两个。这就是CAP定理。Consistency这里的一致性是强一致性,强一致性的意思就是例如节点A更新了数据,节点B能同时更新,这
2020-05-14 17:27:20
214
转载 怎么解决Eureka某一个服务挂掉的问题?
同一个服务部署了多个实例,在通过网关调用时会随机调用其中一个。但是,当某个服务挂掉之后,依然在注册中心中,依然会随机被调用到,调用时便会超时报错。则:1、需要在注册中心,将eureka.server.eviction-interval-timer-in-ms改小,默认60秒,配置文件中单位是毫秒。eureka: instance: hostname: localhost # 过期时间,默认90s, 可不配置 lease-expiration-durati...
2020-05-14 17:20:03
10129
1
基于FS的外呼架构.jpg
2020-05-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人